ó
    ã¾yj¦x  ã                   ó¼  • S r SrSrSrSrSrSrSrSrSS	K	r	SS	K
r
SS	KrSS
K7  / SQrS r SSKJrJrJr  S rS rS rS r SSKJr  S rS r\R>                  R                   \l         S r S r! SSKJ"r"  S r#\$" \%" S5       V s1 s H  n \&" U 5      iM     sn 1 Sk-  5      r'\$" 1 SkS Vs1 s H  nSU 3iM
     sn-  S Vs1 s H  nS U 3iM
     sn-  5      r(S! r)S" r*S# r+S$r,S	q-S	q.S% r/ SS&KJ0r1   SS(KJ2r2  S) r3 SS+KJ4r4J5r5J6r7  \84S, jr9\84S- jr:S.S/.S0 jr;S2r<S=S3 jr=S4 r> SS5KJ?r@  SS6KJArB  SS7KJCrD  SS8KJErF  SS9KJGrH  SS:KJIrJ   SS;KJKrK  S< rLg	! \ a    S r GN*f = f! \ a    S r GN*f = f! \ a    S	r" GNf = fs  sn f s  snf s  snf ! \ a    S' r1 N«f = f! \ a    S* r3 N°f = f! \ a
    S.S/.S1 jr; N¥f = f! \ a     N‚f = f! \ a     g	f = f)>z�Common pathname manipulations, WindowsNT/95 version.

Instead of importing this module directly, import os and refer to this
module as os.path.
Ú.ú..Ú\Ú;Ú/z.;C:\binÚnulé    N)Ú*)+ÚnormcaseÚisabsÚjoinÚ
splitdriveÚ	splitrootÚsplitÚsplitextÚbasenameÚdirnameÚcommonprefixÚgetsizeÚgetmtimeÚgetatimeÚgetctimeÚislinkÚexistsÚlexistsÚisdirÚisfileÚismountÚ
isreservedÚ
expanduserÚ
expandvarsÚnormpathÚabspathÚcurdirÚpardirÚsepÚpathsepÚdefpathÚaltsepÚextsepÚdevnullÚrealpathÚsupports_unicode_filenamesÚrelpathÚsamefileÚsameopenfileÚsamestatÚ
commonpathÚ
isjunctionÚ
isdevdriveÚALLOW_MISSINGc                 ó0   • [        U [        5      (       a  gg)Nó   \/ú\/)Ú
isinstanceÚbytes©Úpaths    Ú/usr/lib/python3.13/ntpath.pyÚ_get_bothsepsr=   "   s   € Ü�$œ×ÑØàó    )ÚLCMapStringExÚLOCALE_NAME_INVARIANTÚLCMAP_LOWERCASEc                 óp  • [         R                  " U 5      n U (       d  U $ [        U [        5      (       a^  [        R
                  " 5       nU R                  US5      R                  SS5      n [        [        [        U 5      n U R                  US5      $ [        [        [        U R                  SS5      5      $ )ú^Normalize case of pathname.

Makes all characters lowercase and all slashes into backslashes.
Úsurrogateescaper   r   )ÚosÚfspathr8   r9   ÚsysÚgetfilesystemencodingÚdecodeÚreplaceÚ_LCMapStringExÚ_LOCALE_NAME_INVARIANTÚ_LCMAP_LOWERCASEÚencode)ÚsÚencodings     r<   r
   r
   2   s—   € ô
 �IŠI�a‹LˆÞØˆHÜ�aœ×ÑÜ×0Ò0Ó2ˆHØ—‘˜Ð#4Ó5×=Ñ=¸cÀ4ÓHˆAÜÔ5Ü/°ó4ˆAà—8‘8˜HÐ&7Ó8Ð8ä!Ô"8Ü"2Ø"#§)¡)¨C°Ó"6ó8ð 8r>   c                 ó(  • [         R                  " U 5      n [        U [        5      (       aH  [         R                  " [         R
                  " U 5      R                  SS5      R                  5       5      $ U R                  SS5      R                  5       $ )rC   r   r   )rE   rF   r8   r9   ÚfsencodeÚfsdecoderJ   Úlower)rO   s    r<   r
   r
   E   se   € ô
 �IŠI�a‹LˆÜ�aœ×ÑÜ—;’;œrŸ{š{¨1›~×5Ñ5°c¸4Ó@×FÑFÓHÓIÐIØ�y‰y˜˜dÓ#×)Ñ)Ó+Ð+r>   c                 óö   • [         R                  " U 5      n [        U [        5      (       a	  SnSnSnSnOSnSnSnSnU S	S
 R	                  X!5      n U R                  US5      =(       d    U R                  U5      $ )zTest whether a path is absoluteó   \ó   /s   :\ó   \\r   r   z:\ú\\Né   é   )rE   rF   r8   r9   rJ   Ú
startswith)rO   r%   r(   Ú	colon_sepÚ
double_seps        r<   r   r   P   sw   € ä
�	Š	�!‹€AÜ�!”U×ÑØˆØˆØˆ	Ø‰
àˆØˆØˆ	Øˆ
Ø	ˆ"ˆ1ˆ�‰�fÓ"€Aà�<‰<˜	 1Ó%×A¨¯©°jÓ)AÐAr>   c                 óT  • [         R                  " U 5      n [        U [        5      (       a  SnSnSnOSnSnSn [	        U 5      u  pVnU H~  n[	        U5      u  pšnU
(       a  U	(       d  U(       d  U	nU
nUnM.  U	(       a1  X•:w  a,  U	R                  5       UR                  5       :w  a  U	nU
nUnMd  U	nU(       a  US   U;  a  Xr-   nX{-   nM€     U(       a  U(       d  U(       a  US   U;  a  XR-   U-   $ XV-   U-   $ ! [        [        [        4 a    [        R                  " SU /UQ76   e f = f)	NrV   r6   s   :\/r   r7   z:\/éÿÿÿÿr   )rE   rF   r8   r9   r   rT   Ú	TypeErrorÚAttributeErrorÚBytesWarningÚgenericpathÚ_check_arg_types)r;   Úpathsr%   ÚsepsÚ
colon_sepsÚresult_driveÚresult_rootÚresult_pathÚpÚp_driveÚp_rootÚp_paths               r<   r   r   c   s3  € Ü�9Š9�T‹?€DÜ�$œ×ÑØˆØˆØ‰
àˆØˆØˆ
ðÜ1:¸4³Ñ.ˆ ;ÛˆAÜ&/°£lÑ#ˆG˜VÞæ¦,Ø#*�LØ$�Ø$�ÙÞ˜WÓ4Ø—=‘=“? l×&8Ñ&8Ó&:Ó:à#*�LØ"(�KØ"(�KÙà&�æ˜{¨2™°dÓ:Ø)Ñ/�Ø%Ñ.ŠKñ+ ö. ¦Þ˜\¨"Ñ-°ZÓ?ØÑ%¨Ñ3Ð3ØÑ)¨KÑ7Ð7øÜ”~¤|Ð4ó Ü×$Ò$ V¨TÐ:°EÓ:Øðús   ºB6C8 Ã1C8 Ã8/D'c                 ó*   • [        U 5      u  pnXU-   4$ )aª  Split a pathname into drive/UNC sharepoint and relative path specifiers.
Returns a 2-tuple (drive_or_unc, path); either part may be empty.

If you assign
    result = splitdrive(p)
It is always true that:
    result[0] + result[1] == p

If the path contained a drive letter, drive_or_unc will contain everything
up to and including the colon.  e.g. splitdrive("c:/dir") returns ("c:", "/dir")

If the path contained a UNC path, the drive_or_unc will contain the host name
and share up to but not including the fourth directory separator character.
e.g. splitdrive("//host/computer/dir") returns ("//host/computer", "/dir")

Paths cannot contain both a drive letter and a UNC path.

)r   )rl   ÚdriveÚrootÚtails       r<   r   r   ’   s   € ô& " !›Ñ€E�Ø˜‘+ÐÐr>   )Ú_path_splitroot_exc                 ó  • [         R                  " U 5      n [        U [        5      (       a  SnSnSnSnSnO
SnSnSnS	nS
nU R	                  X!5      nUSS U:X  ay  USS U:X  af  USS R                  5       U:X  a  SOSnUR                  X5      nUS:X  a  XU4$ UR                  XS-   5      n	U	S:X  a  XU4$ U SU	 X	U	S-    X	S-   S 4$ XPSS U SS 4$ USS U:X  a!  USS U:X  a  U SS U SS U SS 4$ U SS XPSS 4$ XUU 4$ )zWSplit a pathname into drive, root and tail.

The tail contains anything after the root.rV   rW   ó   :ó   \\?\UNC\r>   r   r   Ú:ú\\?\UNC\Ú Nr[   é   é   r`   rZ   )rE   rF   r8   r9   rJ   ÚupperÚfind)
rl   r%   r(   ÚcolonÚ
unc_prefixÚemptyÚnormpÚstartÚindexÚindex2s
             r<   r   r   ¬   sv  € ô �IŠI�a‹LˆÜ�aœ×ÑØˆCØˆFØˆEØ(ˆJØ‰EàˆCØˆFØˆEØ'ˆJØˆEØ—	‘	˜&Ó&ˆØ��!ˆ9˜ÓØ�Q�qˆz˜SÓ ð # 2 A˜YŸ_™_Ó.°*Ó<™À!�ØŸ
™
 3Ó.�Ø˜B“;Ø U˜?Ð*ØŸ™ C°©Ó3�Ø˜R“<Ø U˜?Ð*Ø˜˜&�z 1¨F°Q©JÐ#7¸ÀA¹:¸;¸ÐGÐGð   ˜e Q q r UÐ*Ð*Ø�1�QˆZ˜5Ó Ø�Q�qˆz˜SÓ à˜˜!�u˜a  !˜f a¨¨ eÐ+Ð+ð ˜˜!�u˜e q r UÐ*Ð*ð  �?Ð"r>   c                 ó  • [         R                  " U 5      n [        U 5      n[        U 5      u  p#n [	        U 5      nU(       a$  XS-
     U;  a  US-  nU(       a  XS-
     U;  a  M  U SU XS peX#-   UR                  U5      -   U4$ )zvSplit a pathname.

Return tuple (head, tail) where tail is everything after the final slash.
Either part may be empty.r[   N)rE   rF   r=   r   ÚlenÚrstrip)rl   rg   ÚdÚrÚiÚheadrs   s          r<   r   r   Þ   sˆ   € ô
 	�	Š	�!‹€AÜ˜Ó€DÜ˜‹l�G€Aˆ!äˆA‹€AÞ
��A‘#‘˜dÓ"Ø	ˆQ‰ˆö ��A‘#‘˜dÕ"à�2�A�˜˜"˜ˆ$Ø‰5�4—;‘;˜tÓ$Ñ$ dÐ*Ð*r>   c                 ó¼   • [         R                  " U 5      n [        U [        5      (       a  [        R
                  " U SSS5      $ [        R
                  " U SSS5      $ )NrV   rW   ó   .r   r   r   )rE   rF   r8   r9   rd   Ú	_splitext©rl   s    r<   r   r   ó   sJ   € Ü
�	Š	�!‹€AÜ�!”U×ÑÜ×$Ò$ Q¨¨t°TÓ:Ð:ä×$Ò$ Q¨¨c°3Ó7Ð7r>   c                 ó   • [        U 5      S   $ )z)Returns the final component of a pathnamer[   ©r   r�   s    r<   r   r   þ   ó   € ä�‹8�A‰;Ðr>   c                 ó   • [        U 5      S   $ )z-Returns the directory component of a pathnamer   r’   r�   s    r<   r   r     r“   r>   )Ú_getvolumepathnamec                 ór  • [         R                  " U 5      n [        U 5      n[        U 5      n [	        U 5      u  p#nU(       a  US   U;   a  U(       + $ U(       a  U(       d  g[
        (       aL  U R                  U5      n[        U 5      R                  U5      nUR                  5       UR                  5       :H  $ g)z]Test whether a path is a mount point (a drive root, the root of a
share, or a mounted volume)r   TF)rE   rF   r=   r"   r   r•   rˆ   Úcasefold)r;   rg   rq   rr   ÚrestÚxÚys          r<   r   r     s’   € ô �9Š9�T‹?€DÜ˜Ó€DÜ�4‹=€DÜ! $›Ñ€E�Þ��q‘˜TÓ!ØŒxˆÞ–DØçÒØ�K‰K˜ÓˆÜ˜dÓ#×*Ñ*¨4Ó0ˆØ�z‰z‹|˜qŸz™z›|Ñ+Ð+àr>   é    >	   Ú"r	   r   rx   Ú<Ú>Ú?r   Ú|>   ÚAUXÚCONÚNULÚPRNúCONIN$úCONOUT$u   123456789Â¹Â²Â³ÚCOMÚLPTc                 óÒ   • [         R                  " [        U 5      S   5      R                  [        [
        5      n [        S [        U R                  [
        5      5       5       5      $ )z6Return true if the pathname is reserved by the system.r{   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)Ú_isreservedname)Ú.0Únames     r<   Ú	<genexpr>Úisreserved.<locals>.<genexpr><  s   é € ÐKÒ1J¨Œ˜t×$Ð$Ò1Jùs   ‚)	rE   rS   r   rJ   r(   r%   ÚanyÚreversedr   r:   s    r<   r   r   7  sF   € ô �;Š;”y “ qÑ)Ó*×2Ñ2´6¼3Ó?€DÜÑK´¸$¿*¹*ÄS»/Ô1JÓKÓKÐKr>   c                 óÄ   • U SS S;   a  U S;  $ [         R                  U 5      (       a  gU R                  S5      S   R                  S5      R	                  5       [
        ;   $ )	z6Return true if the filename is reserved by the system.r`   N)r   Ú )r   r   Tr   r   r´   )Ú_reserved_charsÚintersectionÚ	partitionrˆ   r}   Ú_reserved_names)r®   s    r<   r¬   r¬   >  sb   € ð ˆBˆC€y�JÓØ˜;Ñ&Ð&ô ×#Ñ# D×)Ñ)Øð �>‰>˜#Ó˜qÑ!×(Ñ(¨Ó-×3Ñ3Ó5¼ÑHÐHr>   c                 óN  • [         R                  " U 5      n [        U [        5      (       a  SnSnOSnSnU R	                  U5      (       d  U $ S[        U 5      pCX4:  a  X   U;  a  US-  nX4:  a
  X   U;  a  M  S[         R                  ;   a  [         R                  S   nOSS[         R                  ;  a  U $ [         R                  R                  SS	5      n[        U[         R                  S   5      nUS:w  az  U SU n[        U[        5      (       a  [         R                  " U5      n[         R                  R                  S
5      nXx:w  a&  U[        U5      :w  a  U $ [        [        U5      U5      n[        U [        5      (       a  [         R                  " U5      nXPUS -   $ )zHExpand ~ and ~user constructs.

If user or $HOME is unknown, do nothing.r6   ó   ~r7   Ú~r[   ÚUSERPROFILEÚHOMEPATHÚ	HOMEDRIVErz   ÚUSERNAMEN)rE   rF   r8   r9   r\   r‡   ÚenvironÚgetr   rS   r   r   rR   )	r;   rg   Útilder‹   ÚnÚuserhomerq   Útarget_userÚcurrent_users	            r<   r   r   W  sb  € ô �9Š9�T‹?€DÜ�$œ×ÑØˆØ‰àˆØˆØ�?‰?˜5×!Ñ!ØˆØŒc�$‹i€qØ
‹%�D‘G 4Ó'Ø	ˆQ‰ˆð ‹%�D‘G 4Õ'ð œŸ
™
Ó"Ü—:‘:˜mÑ,‰Ø	œ2Ÿ:™:Ó	%Øˆä—
‘
—‘˜{¨BÓ/ˆÜ˜œrŸz™z¨*Ñ5Ó6ˆàˆAƒvØ˜1˜Q�iˆÜ�k¤5×)Ñ)ÜŸ+š+ kÓ2ˆKÜ—z‘z—~‘~ jÓ1ˆàÓ&ð œx¨Ó1Ó1Ø�ÜœG HÓ-¨{Ó;ˆHä�$œ×ÑÜ—;’;˜xÓ(ˆà˜1˜2�hÑÐr>   z.'[^']*'?|%(%|[^%]*%?)|\$(\$|[-\w]+|\{[^}]*\}?)c                 ó:  ^^^^^• [         R                  " U 5      n [        U [        5      (       au  SU ;  a  SU ;  a  U $ [        (       d<  SSKnUR                  [        R                  5       UR                  5      R                  q[        nSmSmSmSm[        [         SS5      mOeSU ;  a  S	U ;  a  U $ [        (       d.  SSKnUR                  [        UR                  5      R                  q[        nS	mS
mSmSm[         R                  mUUUUU4S jnU" X05      $ )zbExpand shell variables of the forms $var, ${var} and %var%.

Unknown variables are left unchanged.ó   $ó   %r   Nó   {ó   }ÚenvironbÚ$Ú%Ú{Ú}c                 óÀ  >• U R                   nUc  U S   $ X   nUS:X  a)  UT:X  a  U$ UR                  T5      (       d  U S   $ US S nO>UT:X  a  U$ UR                  T5      (       a   UR                  T5      (       d  U S   $ USS n Tc;  [        R                  " [        R
                  [        R                  " U5         5      $ TU   $ ! [         a    U S   s $ f = f)Nr   r[   r`   )Ú	lastindexÚendswithr\   rE   rR   rÀ   rS   ÚKeyError)ÚmrÒ   r®   ÚbraceÚdollarrÀ   ÚpercentÚrbraces      €€€€€r<   ÚreplÚexpandvars.<locals>.repl¶  sã   ø€ Ø—K‘Kˆ	ØÑØ�Q‘4ˆKØ‰|ˆØ˜‹>Ø�w‹Ø�Ø—=‘= ×)Ñ)Ø˜‘t�Ø˜˜�9‰Dà�v‹~Ø�Ø�‰˜u×%Ñ%Ø—}‘} V×,Ñ,Ø˜Q™4�KØ˜A˜b�z�ð	Ø‰Ü—{’{¤2§:¡:¬b¯kªk¸$Ó.?Ñ#@ÓAÐAà˜t‘}Ð$øÜó 	Ø�Q‘4ŠKð	ús   Â=C ÃC ÃCÃC)rE   rF   r8   r9   Ú_varsubbÚreÚcompileÚ_varpatternrN   ÚASCIIÚsubÚgetattrÚ_varsubrÀ   )	r;   rÝ   rá   rÚ   rÖ   r×   rÀ   rØ   rÙ   s	       @@@@@r<   r    r    —  sñ   ü€ ô �9Š9�T‹?€Dä�$œ×ÑØ�tÓ ¨DÓ 0ØˆKßŠxÛØ—z‘z¤+×"4Ñ"4Ó"6¸¿¹ÓA×EÑEˆHÜˆØˆØˆØˆØˆÜœ"˜j¨$Ó/‰à�d‹?˜s¨$›ØˆKßŠwÛØ—j‘j¤¨b¯h©hÓ7×;Ñ;ˆGÜˆØˆØˆØˆØˆÜ—*‘*ˆ÷ñ ñ6 ˆt‹?Ðr>   )Ú_path_normpathc                 ó:  • [         R                  " U 5      n [        U [        5      (       a	  SnSnSnSnOSnSnSnSnU R	                  X!5      n [        U 5      u  pVn XV-   nU R                  U5      nS	n	U	[        U5      :  ai  X‰   (       a  X‰   U:X  a  X‰	 ODX‰   U:X  a7  U	S	:”  a  X‰S
-
     U:w  a  X‰S
-
  U	S
-   2	 U	S
-  n	OU	S	:X  a
  U(       a  X‰	 OU	S
-  n	OU	S
-  n	U	[        U5      :  a  Mi  U(       d  U(       d  UR                  U5        XqR                  U5      -   $ )z0Normalize path, eliminating double slashes, etc.rV   rW   rŽ   ó   ..r   r   r   r   r   r[   )
rE   rF   r8   r9   rJ   r   r   r‡   Úappendr   )
r;   r%   r(   r#   r$   rq   rr   ÚprefixÚcompsr‹   s
             r<   r!   r!   Û  s   € ä�yŠy˜‹ˆÜ�dœE×"Ñ"ØˆCØˆFØˆFØ‰FàˆCØˆFØˆFØˆFØ�|‰|˜FÓ(ˆÜ% d›OÑˆ�TØ‘ˆØ—
‘
˜3“ˆØˆØ”#�e“*‹nØ—8˜u™x¨6Ó1Ø‘HØ‘˜VÓ#Ø�q“5˜U Q¡3™Z¨6Ó1Ø ™c ! A¡#˜g˜Ø˜‘F‘AØ˜!“V¦Ø™à˜‘F‘Aà�Q‘�ð ”#�e“*�nö žeØ�L‰L˜Ô ØŸ™ ›Ñ'Ð'r>   )Ú_getfullpathnamec                 óô  •  [        [        U 5      5      $ ! [        [        4 a     Of = f[        R
                  " U 5      n [        U 5      (       d�  [        U [        5      (       a  Sn[        R                  nOSn[        R                  n[        U 5      u  p4n U(       d  U(       a6   [        [        X4-   5      U 5      n O.! [        [        4 a
    X1-   U -   n  Of = f[        U" 5       U 5      n [        U 5      $ )ú&Return the absolute version of a path.rV   r   )rê   r!   ÚOSErrorÚ
ValueErrorrE   rF   r   r8   r9   ÚgetcwdbÚgetcwdr   r   )r;   r%   rð   rq   rr   s        r<   r"   r"     sÔ   € ð	Ü#¤H¨T£NÓ3Ð3øÜœÐ$ó 	áð	úô �yŠy˜‹ˆÜ�T�{‰{Ü˜$¤×&Ñ&Ø�ÜŸ™‘à�ÜŸ™�Ü )¨$£ÑˆE˜æžð.ÜÔ 0°±Ó >ÀÓE‘DøÜ¤Ð,ó .à ™;¨Ñ-’Dð.úô ™F›H dÓ+�Ü˜‹~Ðs   ‚ –)¨)Â)C ÃCÃCc                 óú   • [         R                  " U 5      n [        U 5      (       dK  [        U [        5      (       a  [         R
                  " 5       nO[         R                  " 5       n[        X5      n [        U 5      $ )rì   )	rE   rF   r   r8   r9   rï   rð   r   r!   )r;   Úcwds     r<   r"   r"     sN   € ä�yŠy˜‹ˆÜ�T�{‰{Ü˜$¤×&Ñ&Ü—j’j“l‘ä—i’i“k�Ü˜“?ˆDÜ˜‹~Ðr>   )Ú_findfirstfileÚ_getfinalpathnameÚreadlinkc                 ó–  • Sn[        5       n[        U 5      U;  a|  UR                  [        U 5      5         U n[        U 5      n [	        U 5      (       d3  [        U5      (       d  Un  U $ [        [        [        U5      U 5      5      n [        U 5      U;  a  M|  U $ ! U a  nUR                  U;   a   S nAU $ e S nAf[         a     U $ f = f)N)r[   r{   rZ   é   é   r›   é2   éC   éW   i&  i(  i)  )Úsetr
   ÚaddÚ_nt_readlinkr   r   r!   r   r   Úwinerrorrî   )r;   Úignored_errorÚallowed_winerrorÚseenÚold_pathÚexs         r<   Ú_readlink_deepr  3  sÔ   € ð LÐä‹uˆÜ�t‹n DÓ(Ø�H‰H”X˜d“^Ô$ðØ�Ü# DÓ)�ô ˜T—{‘{ô " (×+Ñ+Ø'˜Øð ˆô $¤D¬°Ó):¸DÓ$AÓB�Dô �t‹n DÕ(ð, ˆøð !ó Ø—;‘;Ð"2Ó2Ûð
 ˆð	 ûÜó àØˆðús)   ·/B Á)B ÂCÂ B7Â6B7Â7CÃCc                 ó"  • SnU S S nU (       a    [        U 5      n U(       a  [        X5      $ U $ U$ ! U aÌ  nUR                  U;  a  e  [        U US9nXP:w  a  U(       a  [        XS5      OUs S nA$ O! U a     Of = fUR                  S;   a3   [	        U 5      n[        U 5      u  pO&! U a    [        U 5      u  p Of = f[        U 5      u  pU (       a  U(       d	  X-   s S nA$ U(       a  [        Xc5      OUn S nAOS nAff = fU (       a  GM  Nâ)N)r[   r{   rZ   r÷   rø   r›   rù   é5   éA   rú   rû   é{   é¡   ií  é€  é�  r   ©r   )r[   r÷   r›   rù   rû   r  r  )rô   r   rÿ   r  ró   r   )r;   r   r  rs   r  Únew_pathr®   Ú_s           r<   Ú_getfinalpathname_nonstrictr  ]  s  € ð& ^Ðð �B�QˆxˆÞð:Ü(¨Ó.�Þ+/”t˜DÓ'Ð9°TÐ9ð6 ˆøð5 !ó :Ø—;‘;Ð&6Ó6Øð
ô  .¨dØ<Iñ K�HàÓ'Þ7;œt HÔ3ÀÕIð (øà$ó áðúð —;‘;Ð"@Ó@ð1Ü-¨dÓ3˜Ü"'¨£+™˜˜aøØ(ó 1Ü%*¨4£[™
˜™dð1úô "' t£‘J�DÞ¦Ø™;Õ&Þ+/”t˜DÔ'°T•ûð3:ú÷	 Šdsr   �1 ­1 ±D·C>Á	"A2Á+DÁ1C>Á2A;Á8C>Á:A;Á;C>ÂB(Â'C>Â(B>Â;C>Â=B>Â>!C>ÃDÃ%C>Ã>DF)Ústrictc                óÌ  • [        U 5      n [        U [        5      (       a.  SnSnSn[        R                  " 5       nSn[        U 5      U:X  a  gO-SnSnSn[        R                  " 5       nS	n[        U 5      U:X  a  g
U R                  U5      nU[        L a	  [        nSnOU(       a  SnO[        nU(       d  [        U 5      (       d  [        XP5      n  [        U 5      n Sn	U(       d_  U R                  U5      (       aI  U R                  U5      (       a  X@[%        U5      S  -   nOU [%        U5      S  n [        U5      U :X  a  Un U $ U $ ! [         a1  n
U(       a  [        [        U
5      5      S e[        U 5      n  S n
A
NžS n
A
fU a   n
U
R                   n	[#        U US9n  S n
A
NÂS n
A
ff = f! [         a  n
 S n
A
U $ S n
A
f[         a  n
U
R                   W	:X  a  Un  S n
A
U $ S n
A
ff = f)Ns   \\?\rw   rX   s   nuls   \\.\NULz\\?\ry   rY   r   z\\.\NULT© r   r  )r!   r8   r9   rE   rï   r
   rð   r\   r4   ÚFileNotFoundErrorrí   r   r   rô   rî   Ústrrÿ   r  r‡   )r;   r  rè   r€   Únew_unc_prefixrò   r*   Ú
had_prefixr   Úinitial_winerrorr  Úspaths               r<   r+   r+   •  sÕ  € Ü˜‹~ˆÜ�dœE×"Ñ"ØˆFØ(ˆJØ$ˆNÜ—*’*“,ˆCàˆGÜ˜‹~ Ó(Ø$ð )ð ˆFØ'ˆJØ#ˆNÜ—)’)“+ˆCàˆGÜ˜‹~ Ó(Ø#Ø—_‘_ VÓ,ˆ
à”]Ò"Ü-ˆMØ‰FÞØ‰Mä#ˆMæ¤%¨§+¡+Ü˜“?ˆDð	LÜ$ TÓ*ˆDØ Ðö  ˜dŸo™o¨f×5Ñ5ð �‰˜z×*Ñ*Ø&¬c°*«oÐ.>Ð)?Ñ?‘àœS ›[˜\Ð*�ð!Ü$ UÓ+¨tÓ3Ø �Dð ˆˆtˆøôG ó 	"ö
 Üœc "›gÓ&¨DÐ0Ü˜D“>�DûØó 	LØ!Ÿ{™{ÐÜ.¨tØ=JñL�Dûð	Lûô$ ó ó ð ˆûô ó !ð —;‘;Ð"2Ó2Ø �DûØˆûð!úsB   ÃE Ä2F) Å
F&Å'E=Å=	F&ÆF!Æ!F&Æ)
G#Æ9G#ÇGÇG#c                ó   • [        U 5      $ r«   )r"   )r;   r  s     r<   r+   r+   0  s   € Ü�t‹}Ðr>   Tc                 ó6  • [         R                  " U 5      n U (       d  [        S5      e[        U [        5      (       a  SnSnSnOSnSnSnUc  UnO[         R                  " U5      n [        U5      n[        U 5      n[        U5      u  pxn	[        U5      u  p¨n[        U5      [        U
5      :w  a  [        S	U
< S
U< 35      eU	(       a  U	R                  U5      O/ nU(       a  UR                  U5      O/ nSn[        XÍ5       H%  u  nn[        U5      [        U5      :w  a    O	US-  nM'     U/[        U5      U-
  -  XÞS -   nU(       d  U$ UR                  U5      $ ! [        [        [        [        [        4 a    [         R"                  " SX5        e f = f)z#Return a relative version of a pathzno path specifiedrV   rŽ   ræ   r   r   r   Nzpath is on mount z, start on mount r   r[   r-   )rE   rF   rî   r8   r9   r"   r   r
   r   Úzipr‡   r   ra   rb   rc   ÚDeprecationWarningrd   re   )r;   rƒ   r%   r#   r$   Ú	start_absÚpath_absÚstart_driver  Ú
start_restÚ
path_driveÚ	path_restÚ
start_listÚ	path_listr‹   Úe1Úe2Úrel_lists                     r<   r-   r-   á  s€  € ä�9Š9�T‹?€DÞÜÐ,Ó-Ð-ä�$œ×ÑØˆØˆØ‰àˆØˆØˆà�}Ø‰ä—	’	˜%Ó ˆðÜ˜E“Nˆ	Ü˜4“=ˆÜ%.¨yÓ%9Ñ"ˆ˜
Ü#,¨XÓ#6Ñ ˆ
�yÜ�KÓ ¤H¨ZÓ$8Ó8ÝÛšKð)ó *ð *ö /9�Z×%Ñ% cÔ*¸bˆ
Þ,5�I—O‘O CÔ(¸2ˆ	àˆÜ˜*Ö0‰FˆB�Ü˜‹|œx¨›|Ó+ÙØ�‰FŠAñ 1ð
 �8œs :›¨qÑ0Ñ1°I¸b°MÑAˆÞØˆMØ�x‰x˜Ó!Ð!øÜ”z¤>´<ÔASÐTó Ü×$Ò$ Y°Ô<Øðús   Á(C&E  ÅE  Å 8Fc           
      óÒ  • [        [        [        R                  U 5      5      n U (       d  [	        S5      e[        U S   [        5      (       a  SnSnSnOSnSnSn U  Vs/ s H+  n[        UR                  X!5      R                  5       5      PM-     nnU VVVs/ s H  u  pgoDR                  U5      PM     nnnn[        U VVVs1 s H  u  pgoFiM	     snnn5      S	:w  a  [	        S
5      e[        U S   R                  X!5      5      u  pšn[        U VVVs1 s H  u  pgoGiM	     snnn5      S	:w  a  U	(       a  [	        S5      e[	        S5      eUR                  U5      nU Vs/ s H  oÝ(       d  M  XÓ:w  d  M  UPM     nnU VVs/ s H$  oî Vs/ s H  oÝ(       d  M  XÓ:w  d  M  UPM     snPM&     nnn[        U5      n[        U5      n[        U5       H  u  nnUUU   :w  d  M  USU n  O   US[        U5       nXš-   UR                  U5      -   $ s  snf s  snnnf s  snnnf s  snnnf s  snf s  snf s  snnf ! [         ["        4 a    [$        R&                  " S/U Q76   e f = f)zEGiven an iterable of path names, returns the longest common sub-path.z%commonpath() arg is an empty iterabler   rV   rW   rŽ   r   r   r   r[   zPaths don't have the same drivez%Can't mix absolute and relative pathsz%Can't mix rooted and not-rooted pathsNr1   )ÚtupleÚmaprE   rF   rî   r8   r9   r   rJ   rT   r   r‡   ÚminÚmaxÚ	enumerater   ra   rb   rd   re   )rf   r%   r(   r#   rl   Údrivesplitsr‰   rŠ   Úsplit_pathsrq   rr   r;   ÚcommonÚcrO   Ús1Ús2r‹   s                     r<   r1   r1     s/  € ä”#”b—i‘i Ó'Ó(€EÞÜÐ@ÓAÐAä�%˜‘(œE×"Ñ"ØˆØˆØ‰àˆØˆØˆð!ÙJOÓPÊ%ÀQ”y §¡¨6Ó!7×!=Ñ!=Ó!?Ö@É%ˆÐPÙ3>Õ?²;©¨¨a—w‘w˜s–|±;ˆÒ?ô
 ¡Õ-¢‘g�a˜A’¡Ó-Ó.°!Ó3ÜÐ>Ó?Ð?ä% e¨A¡h×&6Ñ&6°vÓ&CÓDÑˆ�TÜ¡Õ-¢‘g�a˜A’¡Ó-Ó.°!Ó3ÞÜ Ð!HÓIÐIä Ð!HÓIÐIà—‘˜C“ˆÙ#Ó9šV˜£q“!¨Q©[—!™VˆÐ9áDOÔPÂK¸q 1Ó:¢1˜a«›¨a©kŸ¡1Ô:ÁKˆÑPÜ�ÓˆÜ�ÓˆÜ˜b–M‰DˆAˆqØ�B�q‘E�zØ  ˜�Ùñ "ð
 ˜HœS ›WÐ%ˆFà‰|˜cŸh™h vÓ.Ñ.Ð.ùò; QùÜ?ùô
 .ùô .ùò :ùâ:ùÓPøô ”~Ð&ó Ü×$Ò$ \Ð:°EÓ:Øðús‘   ÁH= Á 2HÂH= ÂHÂ7H= ÃHÃAH= ÄH&Ä%?H= Å$
H-Å2H-Å9H-Å?H= Æ	H7Æ
H2ÆH2Æ$H2Æ*H7Æ11H= Ç&,H= ÈH= È2H7È7H= È=)I&)Ú_path_isdir)Ú_path_isfile)Ú_path_islink)Ú_path_isjunction)Ú_path_exists)Ú_path_lexists)Ú_path_isdevdrivec                 óL   •  [        [        U 5      5      $ ! [         a     gf = f)z@Determines whether the specified path is on a Windows Dev Drive.F)r;  r"   rí   r:   s    r<   r3   r3   ^  s(   € ð	Ü#¤G¨D£MÓ2Ð2øÜó 	Ùð	ús   ‚ –
#¢#r«   )MÚ__doc__r#   r$   r)   r%   r&   r(   r'   r*   rE   rG   rd   Ú__all__r=   Ú_winapir?   rK   r@   rL   rA   rM   r
   ÚImportErrorr   r   r   Úntrt   r   r   r   r�   r   r   r•   r   Ú	frozensetÚrangeÚchrrµ   r¸   r   r¬   r   rß   rã   rÜ   r    rä   r!   rê   r"   ró   rô   rõ   rþ   rí   r  r  r+   r,   r-   r1   r5  r   r6  r   r7  r   r8  r2   r9  r   r:  r   r;  r3   )r‹   r2  s   00r<   Ú<module>rE     s’  ðñð 
€Ø	€Ø	€Ø
€Ø
€Ø	€Ø
€Ø
€ã 	Û 
Û Ü ò*€òð!,÷-ñ -ò
8ò<Bò&)ò^ð.-#Ý2òh+ò*8ð ×(Ñ(×0Ñ0€Ô ò
òðÝ%òñ( Ù˜2”YÓ’Y��Sˆ†V‘YÑÚ2ñ3ó€ñ
 Ú5Ù/Ó0Ò/�1€sˆ1ˆ#ƒYÑ/Ñ0ñ1á/Ó0Ò/�1€sˆ1ˆ#ƒYÑ/Ñ0ñ1ó€òLòIò2,ðx @€Ø
€Ø€ò:ð@&(Ý-ðR)Ý#òð6oßNÑNð ,3ô (ðT 9@ô 6ðp "'õ FðT "Ð ô,òr0ðf	õ (Ý)Ý)Ý1Ý)Ý+ð
	Ý#óøðu ó 	,õ,ð	,ûðN ó +#õ*#ð+#ûðV ó ØÓðüò.  ùò 1ùÚ0øðL ó #(ô"(ð#(ûðT ó 
ô	ð
ûðT ó à!&÷ ðûðR	 ó 	áð	ûð ó 	áð	ús¡   ¬E ÁE' Á1E7 ÂFÂ-F
ÃF
Ã/F Ã6F$ Ä 
F3 Ä($G Å	G Å	E$Å#E$Å'	E4Å3E4Å7FÆFÆ	F!Æ F!Æ$	F0Æ/F0Æ3GÇGÇGÇGÇGÇG