ó
    F\h&€  ã                   ó°  • 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S%KJ-r.   SS'KJ/r/  S( r0 SS*KJ1r1J2r2J3r4  \54S+ jr6\54S, jr7S-S..S/ jr8S1r9S<S2 jr:S3 r; SS4KJ<r=  SS5KJ>r?  SS6KJ@rA  SS7KJBrC  SS8KJDrE  SS9KJFrG   SS:KJHrH  S; rIg	! \ 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& r. N«f = f! \ a    S) r0 N°f = f! \ a
    S-S..S0 jr8 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>   c                 ó&  • [         R                  " U 5      n [        U [        5      (       aT  SU ;  a  SU ;  a  U $ SSKn[        UR
                  UR                  -   S-   S5      nSnSnSnS	nSn[        [         S
S5      nOHSU ;  a  SU ;  a  U $ SSKnUR
                  UR                  -   S-   nSnSnSnSnSn[         R                  nU SS n	Sn
[        U 5      nX«:  Ga  X
U
S-    nXÃ:X  a3  X
S-   S n [        U 5      n U R                  U5      n
XœU SU
S-    -   -  n	GOÇXÄ:X  a�  X
S-   U
S-    U:X  a  Xœ-  n	U
S-  n
GO©X
S-   S n [        U 5      n U R                  U5      n
U SU
 n Uc<  [         R                  " [         R                  [         R                  " U5         5      nOX�   n Xž-  n	GO5XÇ:X  Ga+  X
S-   U
S-    U:X  a  Xœ-  n	U
S-  n
GOX
S-   U
S-    U:X  as  X
S-   S n [        U 5      n U R                  U5      n
U SU
 n Uc<  [         R                  " [         R                  [         R                  " U5         5      nOX�   n Xž-  n	O•U SS nU
S-  n
X
U
S-    nU(       a#  XÂ;   a  XÜ-  nU
S-  n
X
U
S-    nU(       a  XÂ;   a  M   Uc<  [         R                  " [         R                  [         R                  " U5         5      nOX�   n Xž-  n	U(       a  U
S-  n
OXœ-  n	U
S-  n
X«:  a  GM  U	$ ! [         a    XœU -   -  n	US-
  n
 N'f = f! [         a    XM-   U-   n GNzf = f! [         a    X”U -   -  n	US-
  n
 N[f = f! [         a    Xu-   U-   U-   n GNf = f! [         a    X—U-   U -   -  n	US-
  n
 N•f = f! [         a    X}-   n N¾f = f)zbExpand shell variables of the forms $var, ${var} and %var%.

Unknown variables are left unchanged.ó   $ó   %r   Nz_-Úasciió   'ó   {ó   }ÚenvironbÚ$Ú%Ú'Ú{Ú}r[   r{   )rE   rF   r8   r9   ÚstringÚascii_lettersÚdigitsÚgetattrrÀ   r‡   r„   Ú
ValueErrorrR   rS   ÚKeyError)r;   rÔ   ÚvarcharsÚquoteÚpercentÚbraceÚrbraceÚdollarrÀ   Úresr„   ÚpathlenÚcÚvarÚvalues                  r<   r    r    “  s
  € ô �9Š9�T‹?€DÜ�$œ×ÑØ�tÓ ¨DÓ 0ØˆKÛÜ˜×-Ñ-°·±Ñ=ÀÑDÀgÓNˆØˆØˆØˆØˆØˆÜœ"˜j¨$Ó/‰à�d‹?˜s¨$›ØˆKÛØ×'Ñ'¨&¯-©-Ñ7¸$Ñ>ˆØˆØˆØˆØˆØˆÜ—*‘*ˆØ
ˆr�ˆ(€CØ€EÜ�$‹i€GØ
Œ/Ø�u˜Q‘wÐˆØ‹:Ø ™	˜
Ð#ˆDÜ˜$“iˆGð$ØŸ
™
 1›�Ø˜4 
 ¨¡Ð+Ñ+Ñ+’ð ‹\Ø˜A‘I˜e a™iÐ(¨GÓ3Ø‘�Ø˜‘
’à !™G˜H�~�Ü˜d›)�ð!Ø ŸJ™J wÓ/�Eð
 ˜v ˜,�Cð8Ø"™?Ü$&§K¢K´·
±
¼2¿;º;ÀsÓ;KÑ0LÓ$M™Eà$+¡L™Eð ‘L’CØŒ[Ø˜A‘I˜e a™iÐ(¨FÓ2Ø‘�Ø˜‘
’Ø˜a‘i ¨¡	Ð*¨eÓ3Ø !™G˜H�~�Ü˜d›)�ð!Ø ŸJ™J vÓ.�Eð
 ˜v ˜,�Cð>Ø"™?Ü$&§K¢K´·
±
¼2¿;º;ÀsÓ;KÑ0LÓ$M™Eà$+¡L™Eð ‘L‘Cà˜2˜A�h�Ø˜‘
�Ø˜u q™yÐ)�Þ˜A›MØ‘H�CØ˜Q‘J�EØ 5¨1¡9Ð-�Aö ˜A�Mð)Ø‘Ü "§¢¬B¯J©J´r·{²{À3Ó7GÑ,HÓ I™à '¡™ð ‘�ÞØ˜Q‘J�Eøà‰HˆCØ�‰
ˆðW Ž/ðX €JøôI ó $Ø˜4‘x‘�Ø !™’ð$ûô, $ó 8Ø '¡°Ñ 7›ð8ûô "ó (Ø T™>Ñ)�CØ# a™K’Eð(ûô@ $ó >Ø &¡°Ñ 4°vÑ =›ð>ûô "ó (Ø E™>¨DÑ0Ñ0�CØ# a™K’Eð(ûô4  ó )Ø"™L’Eð)ús~   Ã?K5 ÅL) Å'>L Æ&L Ç1M  È>M ÉM Ê>M? ËM? Ë5LÌLÌL&Ì%L&Ì)MÍMÍMÍMÍ M<Í;M<Í?NÎN)Ú_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!   ÚOSErrorrØ   rE   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"   1  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  _  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+   \  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;   Úcommonrâ   rO   Ús1Ús2r‹   s                     r<   r1   r1   F  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«   )JÚ__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-   r1   r4  r   r5  r   r6  r   r7  r2   r8  r   r9  r   r:  r3   )r‹   râ   s   00r<   Ú<module>rD     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jð`&(Ý-ðR)Ý#òð6oßNÑNð ,3ô (ðT 9@ô 6ðp "'õ FðT "Ð ô,òr0ðf	õ (Ý)Ý)Ý1Ý)Ý+ð
	Ý#óøðM ó 	,õ,ð	,ûðN ó +#õ*#ð+#ûðV ó ØÓðüò.  ùò 1ùÚ0øðd ó #(ô"(ð#(ûðT ó 
ô	ð
ûðT ó à!&÷ ðûðR	 ó 	áð	ûð ó 	áð	ús¡   ¬E ÁE! Á1E1 ÂF Â-F
ÃF

Ã)F Ã0F Ã:
F- Ä"$G  Å	G Å	EÅEÅ!	E.Å-E.Å1E=Å<E=Æ	FÆFÆ	F*Æ)F*Æ-F=Æ<F=Ç G	ÇG	ÇGÇG