+
    ®¾jš[  ã                   ó   € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHtHt ^ RIHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+ ^ R	I,H-t- ^ R
I.H/t/ ^ RI0H1t1 ^ RI2H3t3H4t4 ^ RI5H6t6 ^ RI7H8t8 ^ RI9H:t: ^ RI;H<t< . R{Ot=]P|                  ! ]?4      t@])! R4      tA]'](]B,          ]B]3,          tC]']D]D]D3,          tE]']F]']$]F,          ]$]F,          3,          3,          tG]]]]B.]3,          tH]]]]C.]3,          tIR|tJR R ltKR R ltLR R ltMR R ltN]:! ^RR7      R}R R ll4       tOR R  ltPR! R" ltQR#]Q/R$ R% lltRR& R' ltSR~R( R) lltTR* R+ ltUR, R- ltVR. R/ ltWR0 R1 ltXR2 R3 ltYR4 R5 ltZR6 R7 lt[R8 R9 lt\R: R; lt]]J3R< R= llt^RR? R@ llt_RA RB lt`RC RD ltaRE RF ltbRG RH ltc ! RI RJ]4      tdRK RL lteRM RN ltfR€RO RP lltgRQ RR lthRS RT ltiRU RV ltjRW RX ltkRY RZ ltlR[ R\ ltmR] R^ ltnR_ R` ltoRa Rb ltpRc Rd ltq]! R>Re7       ! Rf Rg4      4       trRh Ri ltsRj Rk lttRl Rm ltuRn Ro ltvRp Rq ltwR�Rr Rs lltxRt Ru ltyRv Rw ltz ! Rx R]/4      t{Ry Rz lt|R# )‚é    N)Ú	dataclass)Úpartial)ÚStringIO)ÚfilterfalseÚteeÚzip_longest)ÚPath)ÚFunctionTypeÚTracebackType)ÚAnyÚBinaryIOÚCallableÚ	GeneratorÚIterableÚIteratorÚListÚMappingÚOptionalÚSequenceÚTextIOÚTupleÚTypeÚTypeVarÚUnionÚcast)ÚRequirement)ÚBuildBackendHookCaller)Ú__version__)ÚCommandErrorÚExternallyManagedEnvironment)Úget_major_minor_version)ÚWINDOWS)Úretry)Úrunning_under_virtualenvÚ ConfiguredBuildBackendHookCallerÚTc                ó$   € V ^8„  d   QhR\         /# ©é   Úreturn©Ústr)Úformats   "ÚW/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_internal/utils/misc.pyÚ__annotate__r/   L   s   € ÷ Xñ Xœñ Xó    c                  óô   € \         P                  P                  \         P                  P                  \        4      R R 4      p \         P                  P                  V 4      p R\         RV  R\        4        R2# )z..zpip z from z	 (python Ú))ÚosÚpathÚjoinÚdirnameÚ__file__Úabspathr   r!   )Úpip_pkg_dirs    r.   Úget_pip_versionr:   L   sX   € Ü—'‘'—,‘,œrŸw™wŸ™¬xÓ8¸$ÀÓE€KÜ—'‘'—/‘/ +Ó.€Kà”+�˜f [ M°Ô;RÓ;TÐ:UÐUVÐWÐWr0   c                óv   € V ^8„  d   QhR\         \        R3,          R\         \        \        \        3,          /# )r)   Úpy_version_info.r*   )r   Úint)r-   s   "r.   r/   r/   S   s.   € ÷ 0ñ 0¬E´#°s°(­Oð 0ÄÄcÌ3ÔPSÀmÕ@Tñ 0r0   c                ó®   € \        V 4      ^8  d"   V ^\        V 4      ,
          R,          ,          p M\        V 4      ^8”  d
   V R,          p \        RV 4      # )a\  
Convert a tuple of ints representing a Python version to one of length
three.

:param py_version_info: a tuple of ints representing a Python version,
    or None to specify no version. The tuple can have any length.

:return: a tuple of length three if `py_version_info` is non-None.
    Otherwise, return `py_version_info` unchanged (i.e. None).
:Né   NÚVersionInfo)r   )Úlenr   )r<   s   &r.   Únormalize_version_inforB   S   sN   € ô ˆ?Ó˜aÔØ˜A¤ OÓ 4Õ4¸Õ<Õ<‰Ü	ˆ_Ó	 Ô	!Ø)¨"Õ-ˆä�˜Ó/Ð/r0   c                ó(   € V ^8„  d   QhR\         RR/# )r)   r4   r*   Nr+   )r-   s   "r.   r/   r/   f   s   € ÷ ñ ”Sð ˜Tñ r0   c                óð   €  \         P                  ! V 4       R#   \         dQ   pTP                  \        P                  8w  d'   TP                  \        P
                  8w  d   h  Rp?R#  Rp?R# Rp?ii ; i)z os.path.makedirs without EEXIST.N)r3   ÚmakedirsÚOSErrorÚerrnoÚEEXISTÚ	ENOTEMPTY)r4   Úes   & r.   Ú
ensure_dirrK   f   sN   € ðÜ
�Š�DÖøÜô à�7‰7”e—l‘lÔ" q§w¡w´%·/±/Ô'AØõ (BÕ"ûðús   ‚ šA5¥?A0Á0A5c                ó$   € V ^8„  d   QhR\         /# r(   r+   )r-   s   "r.   r/   r/   p   s   € ÷ 	ñ 	”#ñ 	r0   c                  óÞ   €  \         P                  P                  \        P                  ^ ,          4      p V R9   d   \        P
                   R2# V #   \        \        \        3 d     R# i ; i)r   z -m pipÚpip)z__main__.pyz-c)	r3   r4   ÚbasenameÚsysÚargvÚ
executableÚAttributeErrorÚ	TypeErrorÚ
IndexError)Úprogs    r.   Úget_progrW   p   s_   € ðÜ�w‰w×Ñ¤§¡¨¥Ó,ˆØÐ(Ô(Ü—n‘nÐ% WÐ-Ð-àˆKøÜœI¤zÐ2ô ØÙðús   ‚AA ÁA ÁA,Á+A,g      à?)Ústop_after_delayÚwaitc                óV   € V ^8„  d   QhR\         R\        R\        \        ,          RR/# )r)   ÚdirÚignore_errorsÚonexcr*   N)r,   Úboolr   ÚOnExc)r-   s   "r.   r/   r/   ~   s0   € ÷ ,ñ ,Ü	ð,Ü!ð,Ü2:¼5µ/ð,à	ñ,r0   c                 óâ   € V'       d   \         pVf   \        p\        \        VR7      p\        P
                  R8¼  d   \        P                  ! WR7       R # \        P                  ! WR7       R # )N)r]   )Úonerror)r?   é   )Ú_onerror_ignoreÚ_onerror_reraiser   Úrmtree_errorhandlerrP   Úversion_infoÚshutilÚrmtree)r[   r\   r]   Úhandlers   &&& r.   rh   rh   }   sI   € ÷ ÜˆØ‚}Ü ˆÜÔ0¸Ô>€GÜ
×Ñ˜7Ô"ä�Š�c×)ä�Š�c×+r0   c                ó(   € V ^8„  d   QhR\         RR/# ©r)   Ú_argsr*   N©r   )r-   s   "r.   r/   r/   �   s   € ÷ 	ñ 	œCð 	 Dñ 	r0   c                  ó   € R # ©N© ©rl   s   *r.   rc   rc   �   s   € Ùr0   c                ó(   € V ^8„  d   QhR\         RR/# rk   rm   )r-   s   "r.   r/   r/   ‘   s   € ÷ 
ñ 
œSð 
 Tñ 
r0   c                  ó   € h ro   rp   rq   s   *r.   rd   rd   ‘   s   € Ø	r0   r]   c          
      ón   € V ^8„  d   QhR\         R\        R\        \        \        3,          R\
        RR/# )r)   Úfuncr4   Úexc_infor]   r*   N)r
   r	   r   ÚExcInfoÚBaseExceptionr_   )r-   s   "r.   r/   r/   •   sD   € ÷ & ñ & Ü
ð& ä
ð& ô ”Gœ]Ð*Õ+ð& ô
 ð& ð 
ñ& r0   c               ó   €  \         P                  ! V4      P                  pT\        P                  ,          '       g8    \         P
                  ! Y\        P                  ,          4        T ! T4       R# \        T\        4      '       g   Tw  rRpT! YT4       R#   \         d     R# i ; i  \         d     LEi ; i  \         d     LVi ; i)a  
`rmtree` error handler to 'force' a file remove (i.e. like `rm -f`).

* If a file is readonly then it's write flag is set and operation is
  retried.

* `onerror` is the original callback from `rmtree(... onerror=onerror)`
  that is chained at the end if the "rm -f" still fails.
N)r3   ÚstatÚst_moderF   ÚS_IWRITEÚchmodÚ
isinstancerx   )ru   r4   rv   r]   r{   Ú_s   &&&$  r.   re   re   •   s°   € ð Ü—'’'˜$“-×'Ñ'ˆð
 ”T—]‘]×"Ô"ð
	Ü�HŠH�T¤T§]¡]Õ2Ô3ð
Ù�T”
Ùô �h¤×.Ò.Ø!‰ˆ�QÙ	ˆ$�hÖøô) ô âðûô ô Ùðûô ô 	Ùð	ús5   ‚ B Á +B? Á,B. ÂB+Â*B+Â.B<Â;B<Â?CÃCc                ó0   € V ^8„  d   QhR\         R\         /# ©r)   r4   r*   r+   )r-   s   "r.   r/   r/   ¾   s   € ÷ ñ ”sð œsñ r0   c                ó`  € \         P                  P                  \         P                  P                  V 4      4      p V P	                  \         P
                  ! 4       \         P                  P                  ,           4      '       d)   RV \        \         P
                  ! 4       4      R ,           p V # )zPGives the display value for a given path, making it relative to cwd
if possible.Ú.N)r3   r4   Únormcaser8   Ú
startswithÚgetcwdÚseprA   ©r4   s   &r.   Údisplay_pathr‰   ¾   si   € ô �7‰7×ÑœBŸG™GŸO™O¨DÓ1Ó2€DØ‡�”r—y’y“{¤R§W¡W§[¡[Õ0×1Ò1Ø�Tœ#œbŸiši›kÓ*Ð,Ð-Õ-ˆØ€Kr0   c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r)   r[   Úextr*   r+   )r-   s   "r.   r/   r/   Ç   s!   € ÷ ñ ”Cð œcð ¬sñ r0   c                óª   € ^pTp\         P                  P                  W,           4      '       d   V^,          pV\        V4      ,           pKH  W,           # )zXFigure out the name of a directory to back up the given dir to
(adding .bak, .bak2, etc))r3   r4   Úexistsr,   )r[   r‹   ÚnÚ	extensions   &&  r.   Ú
backup_dirr�   Ç   sA   € ð 	
€AØ€IÜ
�'‰'�.‰.˜�×
)Ò
)Ø	ˆQ�ˆØœ#˜a›&•LŠ	Ø�?Ðr0   c                óR   € V ^8„  d   QhR\         R\        \         ,          R\         /# ©r)   ÚmessageÚoptionsr*   ©r,   r   )r-   s   "r.   r/   r/   Ò   s%   € ÷ !ñ !œSð !¬8´C­=ð !¼Sñ !r0   c                 ó–   € \         P                  P                  R R4      P                  4        F  pW!9   g   K  Vu # 	  \	        W4      # )ÚPIP_EXISTS_ACTIONÚ )r3   ÚenvironÚgetÚsplitÚask)r“   r”   Úactions   && r.   Úask_path_existsrž   Ò   s>   € Ü—*‘*—.‘.Ð!4°bÓ9×?Ñ?ÖAˆØÖØŠMñ Bô ˆwÓ Ð r0   c                ó(   € V ^8„  d   QhR\         RR/# )r)   r“   r*   Nr+   )r-   s   "r.   r/   r/   Ù   s   € ÷ 
ñ 
œSð 
 Tñ 
r0   c                ól   € \         P                  P                  R4      '       d   \        RV  24      hR# )z&Raise an error if no input is allowed.ÚPIP_NO_INPUTz5No input was expected ($PIP_NO_INPUT set); question: N)r3   r™   rš   Ú	Exception©r“   s   &r.   Ú_check_no_inputr¤   Ù   s1   € ä	‡z�z‡~�~�n×%Ò%ÜØCÀGÀ9ÐMó
ð 	
ñ &r0   c                óR   € V ^8„  d   QhR\         R\        \         ,          R\         /# r’   r•   )r-   s   "r.   r/   r/   á   s%   € ÷ ñ ”ð œx¬�}ð ´ñ r0   c                óÔ   €  \        V 4       \        V 4      pVP                  4       P                  4       pW!9  d-   \	        RP                  VRP                  V4      4      4       Kg  V# )z@Ask the message interactively, with the given possible responsesz>Your response ({!r}) was not one of the expected responses: {}z, )r¤   ÚinputÚstripÚlowerÚprintr-   r5   )r“   r”   Úresponses   && r.   rœ   rœ   á   sZ   € à
Ü˜Ô Ü˜“>ˆØ—>‘>Ó#×)Ñ)Ó+ˆØÔ"Üðß‘V˜H d§i¡i°Ó&8Ó9öð
 ˆOr0   c                ó0   € V ^8„  d   QhR\         R\         /# ©r)   r“   r*   r+   )r-   s   "r.   r/   r/   ð   s   € ÷ ñ ”sð œsñ r0   c                ó.   € \        V 4       \        V 4      # )zAsk for input interactively.)r¤   r§   r£   s   &r.   Ú	ask_inputr¯   ð   s   € ä�GÔÜ�‹>Ðr0   c                ó0   € V ^8„  d   QhR\         R\         /# r­   r+   )r-   s   "r.   r/   r/   ö   s   € ÷ $ñ $œ#ð $¤#ñ $r0   c                óD   € \        V 4       \        P                  ! V 4      # )z!Ask for a password interactively.)r¤   Úgetpassr£   s   &r.   Úask_passwordr³   ö   s   € ä�GÔÜ�?Š?˜7Ó#Ð#r0   c                ó0   € V ^8„  d   QhR\         R\        /# )r)   Úvalr*   )r,   r=   )r-   s   "r.   r/   r/   ü   s   € ÷ 9ñ 9”3ð 9œ3ñ 9r0   c                ód   € V P                  4       p V R9   d   ^# V R9   d   ^ # \        RV : 24      h)zäConvert a string representation of truth to true (1) or false (0).

True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if
'val' is anything else.
zinvalid truth value )ÚyÚyesÚtÚtrueÚonÚ1)rŽ   ÚnoÚfÚfalseÚoffÚ0)r©   Ú
ValueError)rµ   s   &r.   Ú	strtoboolrÃ   ü   s:   € ð �)‰)‹+€CØ
Ð2Ô2ÙØ	Ð5Ô	5ÙäÐ/°©wÐ7Ó8Ð8r0   c                ó0   € V ^8„  d   QhR\         R\        /# )r)   Úbytesr*   )Úfloatr,   )r-   s   "r.   r/   r/     s   € ÷ %ñ %”uð %¤ñ %r0   c                 ó´   € V R8”  d   V R,          R ,          R R2# V R8”  d   \        V R ,          4       R2# V R 8”  d   V R,          R R2# \        V 4       R2# )iè  g     @�@z.1fz MBz kBz bytesi@B i'  )r=   )rÅ   s   &r.   Úformat_sizerÈ     sn   € Øˆ{ÔØ˜&•. 4Õ'¨Ð,¨CÐ0Ð0Ø	�Ô	Ü�e˜d•lÓ#Ð$ CÐ(Ð(Ø	�ŒØ˜&•. Ð% SÐ)Ð)ä�e“*�˜VÐ$Ð$r0   c                óª   € V ^8„  d   QhR\         \         \        ,          ,          R\        \        \        ,          \        \
        ,          3,          /# )r)   Úrowsr*   )r   r   r   r   r,   r=   )r-   s   "r.   r/   r/     s5   € ÷ ñ ”8œH¤S�MÕ*ð ¬u´T¼#µYÄÄSÅ	Ð5IÕ/Jñ r0   c           
     ód  € V  Uu. uF  p\        \        \        V4      4      NK  	  p p\        V RR/  Uu. uF  p\	        \        \
        V4      4      NK  	  ppV  Uu. uF:  pRP                  \        \        P                  W4      4      P                  4       NK<  	  ppWC3# u upi u upi u upi )z¨Return a list of formatted rows and a list of column sizes.

For example::

>>> tabulate([['foobar', 2000], [0xdeadbeef]])
(['foobar     2000', '3735928559'], [10, 4])
Ú	fillvaluer˜   Ú )	ÚtupleÚmapr,   r   ÚmaxrA   r5   ÚljustÚrstrip)rÊ   ÚrowÚcolÚsizesÚtables   &    r.   Útabulater×     s’   € ñ -1Ó1©D SŒE”#”c˜3“-Ö ©D€DÐ1Ü+6¸Ð+KÈÒ+KÓLÑ+K CŒS””S˜#“ÖÑ+K€EÐLÙFJÓKÁd¸sˆS�X‰X”cœ#Ÿ)™) SÓ0Ó1×8Ñ8Ö:Ád€EÐKØˆ<Ðùò 2ùÚLùÚKs   …"B#¶"B(ÁA B-c                ó0   € V ^8„  d   QhR\         R\        /# r�   ©r,   r^   )r-   s   "r.   r/   r/   %  s   € ÷ ñ œSð ¤Tñ r0   c                óh  € \         P                  P                  V 4      '       g   R# \         P                  P                  \         P                  P	                  V R4      4      '       d   R# \         P                  P                  \         P                  P	                  V R4      4      '       d   R# R# )a`  Is path is a directory containing pyproject.toml or setup.py?

If pyproject.toml exists, this is a PEP 517 project. Otherwise we look for
a legacy setuptools layout by identifying setup.py. We don't check for the
setup.cfg because using it without setup.py is only available for PEP 517
projects, which are already covered by the pyproject.toml check.
Fzpyproject.tomlTzsetup.py)r3   r4   ÚisdirÚisfiler5   rˆ   s   &r.   Úis_installable_dirrÝ   %  sh   € ô �7‰7�=‰=˜×ÒÙÜ	‡w�w‡~�~”b—g‘g—l‘l 4Ð)9Ó:×;Ò;ÙÜ	‡w�w‡~�~”b—g‘g—l‘l 4¨Ó4×5Ò5ÙÙr0   c          	      óX   € V ^8„  d   QhR\         R\        R\        \        RR3,          /# )r)   ÚfileÚsizer*   N)r   r=   r   rÅ   )r-   s   "r.   r/   r/   6  s0   € ÷ ñ Ü
ðÜðäŒu�d˜DÐ Õ!ñr0   c              #  óN   "  €  V P                  V4      pV'       g   R# Vx € K"  5i)z7Yield pieces of data from a file-like object until EOF.N)Úread)rß   rà   Úchunks   && r.   Úread_chunksrä   6  s"   é € ð Ø—	‘	˜$“ˆßÙØŒùs   ‚%�%Tc                ó<   € V ^8„  d   QhR\         R\        R\         /# )r)   r4   Úresolve_symlinksr*   rÙ   )r-   s   "r.   r/   r/   A  s!   € ÷ 
"ñ 
"œð 
"´ð 
"Äñ 
"r0   c                ó  € \         P                  P                  V 4      p V'       d!   \         P                  P                  V 4      p M\         P                  P	                  V 4      p \         P                  P                  V 4      # )zF
Convert a path to its canonical, case-normalized, absolute version.

)r3   r4   Ú
expanduserÚrealpathr8   r„   )r4   ræ   s   &&r.   Únormalize_pathrê   A  sV   € ô
 �7‰7×Ñ˜dÓ#€DßÜ�w‰w×Ñ Ó%‰ä�w‰w�‰˜tÓ$ˆÜ�7‰7×Ñ˜DÓ!Ð!r0   c                óR   € V ^8„  d   QhR\         R\        \         \         3,          /# r�   ©r,   r   )r-   s   "r.   r/   r/   N  s"   € ÷ ñ ”3ð œ5¤¤c �?ñ r0   c                ó¤   € \         P                  ! V 4      w  rVP                  4       P                  R4      '       d   VRR V,           pVRR pW3# )z,Like os.path.splitext, but take off .tar tooz.tarNéüÿÿÿ)Ú	posixpathÚsplitextr©   Úendswith)r4   Úbaser‹   s   &  r.   rð   rð   N  sM   € ä×"Ò" 4Ó(�I€DØ‡z�zƒ|×Ñ˜V×$Ò$Ø�2�3ˆi˜#�oˆØ�C�RˆyˆØˆ9Ðr0   c                ó4   € V ^8„  d   QhR\         R\         RR/# )r)   ÚoldÚnewr*   Nr+   )r-   s   "r.   r/   r/   W  s!   € ÷ ñ ”ð œ3ð  4ñ r0   c                óÆ  € \         P                  P                  V4      w  r#V'       dD   V'       d<   \         P                  P                  V4      '       g   \         P                  ! V4       \
        P                  ! W4       \         P                  P                  V 4      w  r#V'       d$   V'       d    \         P                  ! V4       R# R# R#   \         d     R# i ; i)z7Like os.renames(), but handles renaming across devices.N)	r3   r4   r›   r�   rE   rg   ÚmoveÚ
removedirsrF   )rô   rõ   ÚheadÚtails   &&  r.   Úrenamesrû   W  sŒ   € ô —‘—‘˜sÓ#�J€Dß—œRŸW™WŸ^™^¨D×1Ò1Ü
�Š�DÔä
‡K‚K�Ôä—‘—‘˜sÓ#�J€Dß—ð	Ü�MŠM˜$Öñ �tøô ô 	Úð	ús   Â5C ÃC ÃC c                ó0   € V ^8„  d   QhR\         R\        /# r�   rÙ   )r-   s   "r.   r/   r/   h  s   € ÷ 7ñ 7”3ð 7œ4ñ 7r0   c                óv   € \        4       '       g   R# V P                  \        \        P                  4      4      # )zè
Return True if path is within sys.prefix, if we're running in a virtualenv.

If we're not in a virtualenv, all paths are considered "local."

Caution: this function assumes the head of path has been normalized
with normalize_path.
T)r$   r…   rê   rP   Úprefixrˆ   s   &r.   Úis_localrÿ   h  s(   € ô $×%Ò%ÙØ�?‰?œ>¬#¯*©*Ó5Ó6Ð6r0   c                ó4   € V ^8„  d   QhR\         R\         RR/# )r)   ÚmsgÚargsr*   Nrm   )r-   s   "r.   r/   r/   v  s!   € ÷ ñ ”cð ¤#ð ¨$ñ r0   c                 ó6   € \         P                  ! V .VO5!   R # ro   )ÚloggerÚinfo)r  r  s   &*r.   Úwrite_outputr  v  s   € Ü
‡K‚K�Ð�dÖr0   c                   ód   a € ] tR tRt o ]V 3R lR l4       t]V 3R lR l4       tV 3R ltRt	V t
R# )	ÚStreamWrapperiz  c                ó$   <€ V ^8„  d   QhRS[ RR/# )r)   Úorig_streamr*   r  ©r   )r-   Ú__classdict__s   "€r.   r/   ÚStreamWrapper.__annotate__~  s   ø€ ÷ ñ ¡fð °ñ r0   c                ó    € V ! 4       pWn         V# ro   )r
  )Úclsr
  Úrets   && r.   Úfrom_streamÚStreamWrapper.from_stream}  s   € á‹eˆØ%ŒØˆ
r0   c                ó    <€ V ^8„  d   QhRS[ /# r(   r+   )r-   r  s   "€r.   r/   r  †  s   ø€ ÷ )ñ )™#ñ )r0   c                ó.   € V P                   P                  # ro   )r
  Úencoding©Úselfs   &r.   r  ÚStreamWrapper.encoding…  s   € à×Ñ×(Ñ(Ð(r0   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r)   r
  r  )r-   r  s   "€r.   r/   r  z  s   ø‡ ‚ ÙÑò r0   rp   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úclassmethodr  Úpropertyr  Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r  s   @r.   r  r  z  s4   ø‡ € ð ÷ó ðð ÷)ó ð)÷ ƒ r0   r  c                óR   € V ^8„  d   QhR\         R\         R\        \         ,          /# )r)   Ú
sequentialÚnamedr*   )r   r   )r-   s   "r.   r/   r/   ‹  s%   € ÷ #ñ #”cð #¤Cð #¬D´­Iñ #r0   c            
      óÆ   € \        \        V \        \        V 4      4      4      3/ VB pVP	                  4        UUu/ uF  w  r4WCbK	  	  pppWRR &   \        RRV4      # u uppi )Úreverse_mappingÚEnumrp   )ÚdictÚzipÚrangerA   ÚitemsÚtype)r%  r&  ÚenumsÚkeyÚvalueÚreverses   *,    r.   Úenumr3  ‹  s\   € Ü”�Z¤¤s¨:£Ó!7Ó8ÑB¸EÑB€EØ,1¯K©K¬MÔ:©M™j˜cˆuŠz©M€GÑ:Ø&Ð
ÑÜ�˜˜EÓ"Ð"ùó ;s   ¼Ac                óR   € V ^8„  d   QhR\         R\        \        ,          R\         /# )r)   ÚhostÚportr*   )r,   r   r=   )r-   s   "r.   r/   r/   ’  s%   € ÷ 	ñ 	”sð 	¤(¬3¥-ð 	´Cñ 	r0   c                ó6   € Vf   V # RV 9   d   RV  R2p V  RV 2# )z&
Build a netloc from a host-port pair
Ú:Ú[Ú]rp   )r5  r6  s   &&r.   Úbuild_netlocr;  ’  s3   € ð ‚|ØˆØ
ˆd„{à�4�&˜ˆ{ˆØˆV�1�T�FÐÐr0   c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r)   ÚnetlocÚschemer*   r+   )r-   s   "r.   r/   r/   ž  s!   € ÷ "ñ "¤#ð "¬sð "Äñ "r0   c                ód   € V P                  R4      ^8¼  d   RV 9  d   RV 9  d   RV  R2p V RV  2# )z!
Build a full URL from a netloc.
r8  Ú@r9  r:  z://)Úcount)r=  r>  s   &&r.   Úbuild_url_from_netlocrB  ž  sA   € ð ‡|�|�CÓ˜AÔ #¨VÔ"3¸À6Ô8Ià�V�H˜A�ˆØˆX�S˜˜Ð!Ð!r0   c                ó~   € V ^8„  d   QhR\         R\        \        \         ,          \        \        ,          3,          /# ©r)   r=  r*   )r,   r   r   r=   )r-   s   "r.   r/   r/   ¨  s,   € ÷ (ñ (œð (¤¤x´¥}´h¼sµmÐ'CÕ!Dñ (r0   c                ó†   € \        V 4      p\        P                  P                  V4      pVP                  VP
                  3# )z*
Return the host-port pair from a netloc.
)rB  ÚurllibÚparseÚurlparseÚhostnamer6  )r=  ÚurlÚparseds   &  r.   Úparse_netlocrL  ¨  s5   € ô   Ó
'€CÜ�\‰\×"Ñ" 3Ó'€FØ�?‰?˜FŸK™KÐ'Ð'r0   c                ó0   € V ^8„  d   QhR\         R\        /# rD  ©r,   ÚNetlocTuple)r-   s   "r.   r/   r/   ±  s   € ÷ ñ ¤3ð ¬;ñ r0   c                ó  € RV 9  d   V R3# V P                  R^4      w  rRpRV9   d   VP                  R^4      w  r2MTRr#\        P                  P	                  V4      pVe    \        P                  P	                  V4      pWV33# )zd
Parse out and remove the auth information from a netloc.

Returns: (netloc, (username, password)).
r@  Nr8  ©NN)Úrsplitr›   rF  rG  Úunquote)r=  ÚauthÚpwÚusers   &   r.   Úsplit_auth_from_netlocrW  ±  sŽ   € ð �&ÔØ�|Ð#Ð#ð
 —=‘=  aÓ(�L€DØ€BØ
ˆd„{ð —:‘:˜c 1Ó%‰ˆˆbà˜ˆbä�<‰<×Ñ Ó%€DØ	‚~Ü�\‰\×!Ñ! "Ó%ˆà˜"�:ÐÐr0   c                ó0   € V ^8„  d   QhR\         R\         /# rD  r+   )r-   s   "r.   r/   r/   Î  s   € ÷ (ñ (œ#ð (¤#ñ (r0   c                ó”   € \        V 4      w  p w  rVf   V # Vf   RpRpM!\        P                  P                  V4      pRpV V RV  2# )zÊ
Replace the sensitive data in a netloc with "****", if it exists.

For example:
    - "user:pass@example.com" returns "user:****@example.com"
    - "accesstoken@example.com" returns "****@example.com"
ú****r˜   z:****r@  )rW  rF  rG  Úquote)r=  rV  Úpasswords   &  r.   Úredact_netlocr]  Î  s^   € ô  6°fÓ=Ñ€FÑˆTØ‚|ØˆØÒØˆØ‰ä�|‰|×!Ñ! $Ó'ˆØˆØˆV�H�:˜Q˜v˜hÐ'Ð'r0   c                óœ   € V ^8„  d   QhR\         R\        \         .\        \        R3,          3,          R\        \         \        3,          /# )r)   rJ  Útransform_netloc.r*   )r,   r   r   r   rO  )r-   s   "r.   r/   r/   â  sB   € ÷ 3ñ 3Ü	ð3Ü (¬#¨´´c¸3°hµÐ)?Õ @ð3ä
Œ3”ÐÕñ3r0   c                ó*  € \         P                  P                  V 4      pV! VP                  4      pVP                  V^ ,          VP
                  VP                  VP                  3p\         P                  P                  V4      pV\        RV4      3# )a:  Transform and replace netloc in a url.

transform_netloc is a function taking the netloc and returning a
tuple. The first element of this tuple is the new netloc. The
entire tuple is returned.

Returns a tuple containing the transformed url as item 0 and the
original tuple returned by transform_netloc as item 1.
rO  )
rF  rG  Úurlsplitr=  r>  r4   ÚqueryÚfragmentÚ
urlunsplitr   )rJ  r_  ÚpurlÚnetloc_tupleÚ
url_piecesÚsurls   &&    r.   Ú_transform_urlri  â  sp   € ô �<‰<× Ñ  Ó%€DÙ# D§K¡KÓ0€Là—+‘+˜|¨A�°·	±	¸4¿:¹:ÀtÇ}Á}ÐU€JÜ�<‰<×"Ñ" :Ó.€DØ”�m \Ó2Ð2Ð2r0   c                ó0   € V ^8„  d   QhR\         R\        /# rD  rN  )r-   s   "r.   r/   r/   ö  s   € ÷ *ñ *œð *¤ñ *r0   c                 ó   € \        V 4      # ro   )rW  ©r=  s   &r.   Ú_get_netlocrm  ö  s   € Ü! &Ó)Ð)r0   c                óF   € V ^8„  d   QhR\         R\        \         ,          /# rD  rì   )r-   s   "r.   r/   r/   ú  s   € ÷ $ñ $œ3ð $¤5¬¥:ñ $r0   c                 ó   € \        V 4      3# ro   )r]  rl  s   &r.   Ú_redact_netlocrp  ú  s   € Ü˜&Ó!Ð#Ð#r0   c          
      óª   € V ^8„  d   QhR\         R\        \         \         \        \        \         ,          \        \         ,          3,          3,          /# ©r)   rJ  r*   )r,   r   r   )r-   s   "r.   r/   r/   þ  s:   € ÷ 	*ñ 	*Ü	ð	*ä
Œ3””Uœ8¤C�=¬(´3­-Ð7Õ8Ð8Õ9ñ	*r0   c                ó4   € \        V \        4      w  pw  r#WV3# )zz
Parse a url into separate netloc, auth, and url with no auth.

Returns: (url_without_auth, netloc, (username, password))
©ri  rm  )rJ  Úurl_without_authr=  rT  s   &   r.   Úsplit_auth_netloc_from_urlrv  þ  s#   € ô (6°c¼;Ó'GÑ$Ð‘n�vØ TÐ)Ð)r0   c                ó0   € V ^8„  d   QhR\         R\         /# rr  r+   )r-   s   "r.   r/   r/   
  s   € ÷ /ñ /œcð /¤cñ /r0   c                ó0   € \        V \        4      ^ ,          # )z7Return a copy of url with 'username:password@' removed.rt  ©rJ  s   &r.   Úremove_auth_from_urlrz  
  s   € ô ˜#œ{Ó+¨AÕ.Ð.r0   c                ó0   € V ^8„  d   QhR\         R\         /# rr  r+   )r-   s   "r.   r/   r/     s   € ÷ 2ñ 2œcð 2¤cñ 2r0   c                ó0   € \        V \        4      ^ ,          # )z.Replace the password in a given url with ****.)ri  rp  ry  s   &r.   Úredact_auth_from_urlr}    s   € ä˜#œ~Ó.¨qÕ1Ð1r0   c                ó0   € V ^8„  d   QhR\         R\        /# )r)   Úreqr*   )r   r,   )r-   s   "r.   r/   r/     s   € ÷ Dñ D¤kð D´cñ Dr0   c                ó¬   € V P                   '       g   \        V 4      # \        V 4      P                  V P                   \        V P                   4      4      # )z:Replace the password in a given requirement url with ****.)rJ  r,   Úreplacer}  )r  s   &r.   Úredact_auth_from_requirementr‚    s9   € à�7�7ˆ7Ü�3‹xˆÜˆs‹8×Ñ˜CŸG™GÔ%9¸#¿'¹'Ó%BÓCÐCr0   )Úfrozenc                   ób   a € ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR ltV 3R ltR	tV t	R
# )Ú
HiddenTexti  c                ó    <€ V ^8„  d   QhRS[ /# r(   r+   )r-   r  s   "€r.   r/   ÚHiddenText.__annotate__"  s   ø€ ÷ -ñ -™#ñ -r0   c                ó"   € R \        V 4      : R2# )z<HiddenText Ú>r+   r  s   &r.   Ú__repr__ÚHiddenText.__repr__"  s   € Øœc $›i™]¨!Ð,Ð,r0   c                ó    <€ V ^8„  d   QhRS[ /# r(   r+   )r-   r  s   "€r.   r/   r‡  %  s   ø€ ÷ ñ ™ñ r0   c                ó   € V P                   # ro   ©Úredactedr  s   &r.   Ú__str__ÚHiddenText.__str__%  s   € Ø�}‰}Ðr0   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r)   Úotherr*   )r   r^   )r-   r  s   "€r.   r/   r‡  )  s   ø€ ÷ +ñ +™Cð +¡Dñ +r0   c                óh   € \        V 4      \        V4      Jd   R # V P                  VP                  8H  # )F)r.  Úsecret)r  r“  s   &&r.   Ú__eq__ÚHiddenText.__eq__)  s*   € Ü�‹:œT %›[Ó(Ùð �{‰{˜eŸl™lÑ*Ð*r0   c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   # )r)   r•  r�  r+   )r-   r  s   "€r.   r/   r‡    s   ø‡ ‚ á�Kñ ñ �Mò r0   rp   N)
r  r  r  r  rŠ  r�  r–  r   r!  r"  r#  s   @r.   r…  r…    s*   ø‡ € ÷
-ð -÷ð ÷+ð +÷ ƒ r0   r…  c                ó0   € V ^8„  d   QhR\         R\        /# )r)   r1  r*   ©r,   r…  )r-   s   "r.   r/   r/   2  s   € ÷ .ñ .”cð .œjñ .r0   c                 ó   € \        V R R7      # )rZ  rŽ  )r…  )r1  s   &r.   Ú
hide_valuerœ  2  s   € Ü�e fÔ-Ð-r0   c                ó0   € V ^8„  d   QhR\         R\        /# rr  rš  )r-   s   "r.   r/   r/   6  s   € ÷ .ñ .”#ð .œ*ñ .r0   c                 ó0   € \        V 4      p\        WR 7      # )rŽ  )r}  r…  )rJ  r�  s   & r.   Úhide_urlrŸ  6  s   € Ü# CÓ(€HÜ�cÔ-Ð-r0   c                ó(   € V ^8„  d   QhR\         RR/# )r)   Úmodifying_pipr*   N©r^   )r-   s   "r.   r/   r/   ;  s   € ÷ 
ñ 
¼Dð 
ÀTñ 
r0   c                ó  € RR\         P                  P                   2R\         P                  P                   R\         P                  P                   2.pT ;'       dF    \        ;'       d8    \
        P                  P                  \         P                  ^ ,          4      V9   pV'       dY   \         P                  RR.\         P                  R,          ,           p\        RP                  RP                  V4      4      4      hR# )z„Protection of pip.exe from modification on Windows

On Windows, any operation modifying pip should be run as:
    python -m pip ...
rN   rƒ   z-m:é   NNz3To modify pip, please run the following command:
{}rÍ   N)rP   rf   ÚmajorÚminorr"   r3   r4   rO   rQ   rR   r   r-   r5   )r¡  Ú	pip_namesÚshould_show_use_python_msgÚnew_commands   &   r.   Ú(protect_pip_from_modification_on_windowsrª  ;  sÓ   € ð 	Ø
Œc×Ñ×$Ñ$Ð%Ð&Ø
Œc×Ñ×$Ñ$Ð% Q¤s×'7Ñ'7×'=Ñ'=Ð&>Ð?ð€Ið 	×PÐPœ'×PÐP¤b§g¡g×&6Ñ&6´s·x±xÀµ{Ó&CÀyÑ&Pð ÷ "Ü—~‘~ t¨UÐ3´c·h±h¸rµlÕBˆÜØB×IÑIØ—‘˜Ó%óó
ð 	
ñ "r0   c                ó   € V ^8„  d   QhRR/# ©r)   r*   Nrp   )r-   s   "r.   r/   r/   U  s   € ÷ ;ñ ; $ñ ;r0   c                 ó  € \        4       '       d   R# \        P                  P                  \        P
                  ! R4      R4      p \        P                  P                  V 4      '       g   R# \        P                  ! V 4      h)zÛCheck whether the current environment is externally managed.

If the ``EXTERNALLY-MANAGED`` config file is found, the current environment
is considered externally managed, and an ExternallyManagedEnvironment is
raised.
NÚstdlibzEXTERNALLY-MANAGED)	r$   r3   r4   r5   Ú	sysconfigÚget_pathrÜ   r    Úfrom_config)Úmarkers    r.   Úcheck_externally_managedr³  U  sW   € ô  ×!Ò!ÙÜ�W‰W�\‰\œ)×,Ò,¨XÓ6Ð8LÓM€FÜ�7‰7�>‰>˜&×!Ò!ÙÜ
&×
2Ò
2°6Ó
:Ð:r0   c                ó$   € V ^8„  d   QhR\         /# r(   r¢  )r-   s   "r.   r/   r/   d  s   € ÷ 8ñ 8¤ñ 8r0   c                 ór   € \         P                  RJ;'       d    \         P                  P                  4       # )zIs this console interactive?N)rP   ÚstdinÚisattyrp   r0   r.   Úis_console_interactiver¸  d  s&   € ä�9‰9˜DÐ ×7Ð7¤S§Y¡Y×%5Ñ%5Ó%7Ð7r0   c                ó^   € V ^8„  d   QhR\         R\        R\        \        \        3,          /# )r)   r4   Ú	blocksizer*   )r,   r=   r   r   )r-   s   "r.   r/   r/   i  s)   € ÷ 	ñ 	”Cð 	¤Cð 	´e¼CÄ¸Hµoñ 	r0   c                ó  € \         P                  ! 4       p^ p\        V R4      ;_uu_ 4       p\        WAR7       F&  pV\	        V4      ,          pVP                  V4       K(  	  RRR4       W#3#   + '       g   i     Y#3# ; i)z5Return (hash, length) for path using hashlib.sha256()Úrb)rà   N)ÚhashlibÚsha256Úopenrä   rA   Úupdate)r4   rº  ÚhÚlengthr¾   Úblocks   &&    r.   Ú	hash_filerÄ  i  sn   € ô 	�ŠÓ€AØ€FÜ	ˆd�D×	Ô	˜QÜ  ×3ˆEØ”c˜%“jÕ ˆFØ�H‰H�UŽOñ 4÷ 
ð ˆ9Ð÷	 
Ö	ð ˆ9Ðús   ¬7A.Á.B 	c                ó~   € V ^8„  d   QhR\         \        ,          R\        \        \        \        3,          ,          /# )r)   Úiterabler*   )r   r   r   r   )r-   s   "r.   r/   r/   u  s+   € ÷ +ñ +”x¤•}ð +¬´%¼¼S¸µ/Õ)Bñ +r0   c                ó.   € \        V 4      p \        W 4      # )zR
Return paired elements.

For example:
    s -> (s0, s1), (s2, s3), (s4, s5), ...
)Úiterr   )rÆ  s   &r.   ÚpairwiserÉ  u  s   € ô �H‹~€HÜ�xÓ*Ð*r0   c          	      óÄ   € V ^8„  d   QhR\         \        .\        3,          R\        \        ,          R\        \        \        ,          \        \        ,          3,          /# )r)   ÚpredrÆ  r*   )r   r&   r^   r   r   )r-   s   "r.   r/   r/   €  sE   € ÷ 
3ñ 
3Ü
”A�3œ�9Õ
ð
3Ü)1´!­ð
3ä
Œ8”A�;œ¤�Ð#Õ$ñ
3r0   c                óH   € \        V4      w  r#\        W4      \        W4      3# )z‘
Use a predicate to partition entries into false entries and true entries,
like

    partition(is_odd, range(10)) --> 0 2 4 6 8   and  1 3 5 7 9
)r   r   Úfilter)rË  rÆ  Út1Út2s   &&  r.   Ú	partitionrÐ  €  s$   € ô �‹]�F€BÜ�tÓ ¤&¨Ó"2Ð2Ð2r0   c                   ó"  a a€ ] tR tRt oRV3R lV 3R llltRV3R lV 3R llltRV3R lV 3R llltRV3R lV 3R	 llltRV3R
 lV 3R llltRV3R lV 3R lllt	RV3R lV 3R lllt
RV3R lV 3R llltRV3R lV 3R llltRtVtV ;t# )r%   i�  c                ó|   <€ V ^8„  d   QhRS[ RS[RS[RS[S[,          RS[S[R,          ,          RS[S[,          /# )r)   Úconfig_holderÚ
source_dirÚbuild_backendÚbackend_pathÚrunnerÚpython_executable).N)r   r,   r   r   )r-   r  s   "€r.   r/   Ú-ConfiguredBuildBackendHookCaller.__annotate__Ž  sY   ø€ ÷ +ñ +áð+ñ ð+ñ ð	+ñ
 ™s•mð+ñ ™ )Õ,Õ-ð+ñ $¡C�=ñ+r0   c                ó6   <€ \         SV `  W#WEV4       Wn        R # ro   )ÚsuperÚ__init__rÓ  )r  rÓ  rÔ  rÕ  rÖ  r×  rØ  Ú	__class__s   &&&&&&&€r.   rÜ  Ú)ConfiguredBuildBackendHookCaller.__init__Ž  s"   ø€ ô 	‰ÑØ |Ð=Nô	
ð +Ör0   c                óh   <€ V ^8„  d   QhRS[ RS[S[S[ S[3,          ,          RS[S[ ,          RS[ /# ©r)   Úwheel_directoryÚconfig_settingsÚmetadata_directoryr*   ©r,   r   r   r   )r-   r  s   "€r.   r/   rÙ  œ  óE   ø€ ÷ 	
ñ 	
áð	
ñ "¡'©#©s¨(Õ"3Õ4ð	
ñ %¡S�Mð		
ñ
 
ñ	
r0   c                óR   <€ V P                   P                  p\        SV `  WVR 7      # ©)râ  rã  )rÓ  râ  rÛ  Úbuild_wheel©r  rá  râ  rã  ÚcsrÝ  s   &&&& €r.   rè  Ú,ConfiguredBuildBackendHookCaller.build_wheelœ  s3   ø€ ð ×Ñ×/Ñ/ˆÜ‰wÑ"ØÐDVð #ó 
ð 	
r0   c                óR   <€ V ^8„  d   QhRS[ RS[S[S[ S[3,          ,          RS[ /# )r)   Úsdist_directoryrâ  r*   rä  )r-   r  s   "€r.   r/   rÙ  §  s<   ø€ ÷ Hñ HáðHñ "¡'©#©s¨(Õ"3Õ4ðHñ 
ñ	Hr0   c                óP   <€ V P                   P                  p\        SV `  WR 7      # ©)râ  )rÓ  râ  rÛ  Úbuild_sdist)r  rí  râ  rê  rÝ  s   &&& €r.   rð  Ú,ConfiguredBuildBackendHookCaller.build_sdist§  s)   ø€ ð
 ×Ñ×/Ñ/ˆÜ‰wÑ" ?Ð"ÓGÐGr0   c                óh   <€ V ^8„  d   QhRS[ RS[S[S[ S[3,          ,          RS[S[ ,          RS[ /# rà  rä  )r-   r  s   "€r.   r/   rÙ  ¯  rå  r0   c                óR   <€ V P                   P                  p\        SV `  WVR 7      # rç  )rÓ  râ  rÛ  Úbuild_editableré  s   &&&& €r.   rô  Ú/ConfiguredBuildBackendHookCaller.build_editable¯  s3   ø€ ð ×Ñ×/Ñ/ˆÜ‰wÑ%ØÐDVð &ó 
ð 	
r0   c                ó\   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[S[,          /# ©r)   râ  r*   ©r   r   r,   r   r   )r-   r  s   "€r.   r/   rÙ  º  ó3   ø€ ÷ Hñ HÙ'©±±S°Õ(9Õ:ðHá	‘#�ñHr0   c                óP   <€ V P                   P                  p\        SV `  VR 7      # rï  )rÓ  râ  rÛ  Úget_requires_for_build_wheel©r  râ  rê  rÝ  s   && €r.   rû  Ú=ConfiguredBuildBackendHookCaller.get_requires_for_build_wheelº  ó)   ø€ ð ×Ñ×/Ñ/ˆÜ‰wÑ3ÀBÐ3ÓGÐGr0   c                ó\   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[S[,          /# r÷  rø  )r-   r  s   "€r.   r/   rÙ  À  rù  r0   c                óP   <€ V P                   P                  p\        SV `  VR 7      # rï  )rÓ  râ  rÛ  Úget_requires_for_build_sdistrü  s   && €r.   r  Ú=ConfiguredBuildBackendHookCaller.get_requires_for_build_sdistÀ  rþ  r0   c                ó\   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[S[,          /# r÷  rø  )r-   r  s   "€r.   r/   rÙ  Æ  s3   ø€ ÷ Kñ KÙ'©±±S°Õ(9Õ:ðKá	‘#�ñKr0   c                óP   <€ V P                   P                  p\        SV `  VR 7      # rï  )rÓ  râ  rÛ  Úget_requires_for_build_editablerü  s   && €r.   r  Ú@ConfiguredBuildBackendHookCaller.get_requires_for_build_editableÆ  s)   ø€ ð ×Ñ×/Ñ/ˆÜ‰wÑ6ÀrÐ6ÓJÐJr0   c                óX   <€ V ^8„  d   QhRS[ RS[S[S[ S[3,          ,          RS[RS[ /# ©r)   rã  râ  Ú_allow_fallbackr*   ©r,   r   r   r   r^   )r-   r  s   "€r.   r/   rÙ  Ì  sA   ø€ ÷ 
ñ 
áð
ñ "¡'©#©s¨(Õ"3Õ4ð
ñ ð	
ñ
 
ñ
r0   c                óT   <€ V P                   P                  p\        SV `  VVVR 7      # ©)rã  râ  r	  )rÓ  râ  rÛ  Ú prepare_metadata_for_build_wheel©r  rã  râ  r	  rê  rÝ  s   &&&& €r.   r  ÚAConfiguredBuildBackendHookCaller.prepare_metadata_for_build_wheelÌ  s6   ø€ ð ×Ñ×/Ñ/ˆÜ‰wÑ7Ø1ØØ+ð 8ó 
ð 	
r0   c          	      óh   <€ V ^8„  d   QhRS[ RS[S[S[ S[3,          ,          RS[RS[S[ ,          /# r  r
  )r-   r  s   "€r.   r/   rÙ  Ù  sE   ø€ ÷ 
ñ 
áð
ñ "¡'©#©s¨(Õ"3Õ4ð
ñ ð	
ñ
 
‘#�ñ
r0   c                óT   <€ V P                   P                  p\        SV `  VVVR 7      # r  )rÓ  râ  rÛ  Ú#prepare_metadata_for_build_editabler  s   &&&& €r.   r  ÚDConfiguredBuildBackendHookCaller.prepare_metadata_for_build_editableÙ  s6   ø€ ð ×Ñ×/Ñ/ˆÜ‰wÑ:Ø1ØØ+ð ;ó 
ð 	
r0   )rÓ  )NNNrQ  ro   )NT)r  r  r  r  rÜ  rè  rð  rô  rû  r  r  r  r  r!  r"  Ú__classcell__)rÝ  r  s   @@r.   r%   r%   �  sl   ù‡ € ÷+õ +÷	
õ 	
÷Hõ H÷	
õ 	
÷Hõ H÷Hõ H÷Kõ K÷
õ 
÷
÷ 
õ 
r0   c                ó   € V ^8„  d   QhRR/# r¬  rp   )r-   s   "r.   r/   r/   ç  s   € ÷ ñ ˜Tñ r0   c                 ó  € \        4       '       d   R# \        \        R4      '       g   R# \        P                  R8X  g   \        P                  R8X  d   R# \        P
                  ! 4       ^ 8w  d   R# \        P                  R4       R# )zìOutput a warning for sudo users on Unix.

In a virtual environment, sudo pip still writes to virtualenv.
On Windows, users may run pip as Administrator without issues.
This warning only applies to Unix root users outside of virtualenv.
NÚgetuidÚwin32Úcygwinab  Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.)r$   Úhasattrr3   rP   Úplatformr  r  Úwarningrp   r0   r.   Úwarn_if_run_as_rootr  ç  s^   € ô  ×!Ò!ÙÜ”2�x× Ò Ùô ‡|�|�wÔ¤#§,¡,°(Ô":Ùä	‡y‚yƒ{�aÔÙä
‡N�Nð	)ör0   )rh   r‰   r�   rœ   rð   rÈ   rÝ   rê   rû   rW   rK   rz  r³  r%   é   )FN)z.bak)T)Úhttps)r  )}rG   r²   r½  Úloggingr3   rï   rg   rz   rP   r¯  Úurllib.parserF  Údataclassesr   Ú	functoolsr   Úior   Ú	itertoolsr   r   r   Úpathlibr	   Útypesr
   r   Útypingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú"pip._vendor.packaging.requirementsr   Úpip._vendor.pyproject_hooksr   rN   r   Úpip._internal.exceptionsr   r    Úpip._internal.locationsr!   Úpip._internal.utils.compatr"   Úpip._internal.utils.retryr#   Úpip._internal.utils.virtualenvr$   Ú__all__Ú	getLoggerr  r  r&   rx   rw   r=   r@   r,   rO  r_   ÚOnErrÚFILE_CHUNK_SIZEr:   rB   rK   rW   rh   rc   rd   re   r‰   r�   rž   r¤   rœ   r¯   r³   rÃ   rÈ   r×   rÝ   rä   rê   rð   rû   rÿ   r  r  r3  r;  rB  rL  rW  r]  ri  rm  rp  rv  rz  r}  r‚  r…  rœ  rŸ  rª  r³  r¸  rÄ  rÉ  rÐ  r%   r  rp   r0   r.   Ú<module>r4     sU  ðÛ Û Û Û Û 	Û Û Û Û 
Û Û Ý !Ý Ý ß 3Ñ 3Ý ß -÷÷ ÷ ÷ ó õ& ;Ý >å ß OÝ ;Ý .Ý +Ý Cò€ð" 
×	Ò	˜8Ó	$€áˆCƒL€Ø
��]Õ# ]°MÐAÕ
B€Ø�C˜˜c�MÕ"€Ø�C˜˜x¨�}¨h°s­mÐ;Õ<Ð<Õ=€Ø�,  mÐ4°cÐ9Õ:€Ø�,  gÐ.°Ð3Õ4€à€õXõ0õ&õ	ñ ˜ Ô$ö,ó %ð,õ	õ
ð& ð
 $÷& õR÷õ!õ
õõõ$õ9õ %õõð$ !0÷÷
"õõõ"7õô)�Hô )õ"#õ	÷"õ(õõ:(õ(3õ(*õ$õ	*õ/õ2õ
Dñ �$Ô÷+ð +ó ð+õ(.õ.õ

õ4;õ8÷
	õ+õ
3ôW
Ð'=ô W
÷tr0   