§
    (¶ÕiJl  ã                   óf  — d Z dZdZdZdZdZdZdZdZdd	l	Z	dd	l
Z
dd	lZdd	lZdd
lT g d¢Zd„ Z	 ddlmZmZmZ d„ Zn# e$ r d„ ZY nw xY wd„ Zd„ Zd„ Zd„ Zd„ Zej        j         e_         d„ Zd„ Zd„ Z d„ Z!	 ddl"m#Z# n# e$ r d	Z#Y nw xY wd„ Z$d„ Z%dZ&d	a'd	a(d„ Z)	 ddl"m*Z* d„ Z+n# e$ r d „ Z+Y nw xY wd!„ Z,	 dd"l"m-Z- d#„ Z.n# e$ r e,Z.Y nw xY w	 dd$l"m/Z/m0Z1 d%„ Z2d&„ Z3d'd(œd)„Z4n# e$ r e.Z4Y nw xY w e5e
d*¦  «        o e
j6        ¦   «         d+         d,k    Z7d0d-„Z8d.„ Z9	 dd/l"m:Z; d	S # e$ r Y d	S w xY w)1z�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ÚsplitÚsplitextÚbasenameÚdirnameÚcommonprefixÚgetsizeÚgetmtimeÚgetatimeÚgetctimeÚislinkÚexistsÚlexistsÚisdirÚisfileÚismountÚ
expanduserÚ
expandvarsÚnormpathÚabspathÚcurdirÚpardirÚsepÚpathsepÚdefpathÚaltsepÚextsepÚdevnullÚrealpathÚsupports_unicode_filenamesÚrelpathÚsamefileÚsameopenfileÚsamestatÚ
commonpathc                 ó4   — t          | t          ¦  «        rdS dS )Nó   \/ú\/)Ú
isinstanceÚbytes©Úpaths    ú/usr/lib/python3.11/ntpath.pyÚ_get_bothsepsr8   #   s   € Ý�$�ÑÔð Øˆvàˆuó    )ÚLCMapStringExÚLOCALE_NAME_INVARIANTÚLCMAP_LOWERCASEc                 ó–  — t          j        | ¦  «        } | s| S t          | t          ¦  «        rnt	          j        ¦   «         }|                      |d¦  «                             dd¦  «        } t          t          t          | ¦  «        } |                      |d¦  «        S t          t          t          |                      dd¦  «        ¦  «        S )únNormalize case of pathname.

        Makes all characters lowercase and all slashes into backslashes.
        Úsurrogateescaper   r   )ÚosÚfspathr3   r4   ÚsysÚgetfilesystemencodingÚdecodeÚreplaceÚ_LCMapStringExÚ_LOCALE_NAME_INVARIANTÚ_LCMAP_LOWERCASEÚencode)ÚsÚencodings     r7   r
   r
   3   s·   € õ
 ŒI�a‰LŒLˆØð 	ØˆHÝ�a�ÑÔð 		8ÝÔ0Ñ2Ô2ˆHØ—’˜Ð#4Ñ5Ô5×=Ò=¸cÀ4ÑHÔHˆAÝÕ5Ý/°ñ4ô 4ˆAà—8’8˜HÐ&7Ñ8Ô8Ð8å!Õ"8Ý"2Ø"#§)¢)¨C°Ñ"6Ô"6ñ8ô 8ð 8r9   c                 ó<  — t          j        | ¦  «        } t          | t          ¦  «        rLt          j        t          j        | ¦  «                             dd¦  «                             ¦   «         ¦  «        S |                      dd¦  «                             ¦   «         S )r>   r   r   )r@   rA   r3   r4   ÚfsencodeÚfsdecoderE   Úlower)rJ   s    r7   r
   r
   F   sx   € õ
 ŒI�a‰LŒLˆÝ�a�ÑÔð 	JÝ”;�rœ{¨1™~œ~×5Ò5°c¸4Ñ@Ô@×FÒFÑHÔHÑIÔIÐIØ�yŠy˜˜dÑ#Ô#×)Ò)Ñ+Ô+Ð+r9   c                 ó  — t          j        | ¦  «        } t          | t          ¦  «        rd}d}d}nd}d}d}| dd…                              ||¦  «        } |                      |¦  «        s|                      |d	¦  «        rd
S dS )zTest whether a path is absoluteó   \ó   /s   :\r   r   z:\Né   é   TF)r@   rA   r3   r4   rE   Ú
startswith)rJ   r#   r&   Ú	colon_seps       r7   r   r   W   s‘   € å
Œ	�!‰Œ€AÝ�!•UÑÔð ØˆØˆØˆ	ˆ	àˆØˆØˆ	Ø	ˆ"ˆ1ˆ"Œ�Š�f˜cÑ"Ô"€Að 	‡|‚|�CÑÔð ˜AŸLšL¨°AÑ6Ô6ð ØˆtØˆ5r9   c                 óˆ  — t          j        | ¦  «        } t          | t          ¦  «        rd}d}d}nd}d}d}	 |s| d d…         |z    t	          | ¦  «        \  }}t          t           j        |¦  «        D ]x}t	          |¦  «        \  }}	|	r|	d         |v r	|s|s|}|	}Œ)|r7||k    r1|                     ¦   «         |                     ¦   «         k    r|}|	}Œ`|}|r|d         |vr||z   }||	z   }Œy|r"|d         |vr|r|dd …         |k    r||z   |z   S ||z   S # t          t          t          f$ r t          j        d	| g|¢R Ž  ‚ w xY w)
NrQ   r1   ó   :r   r2   ú:r   éÿÿÿÿr   )r@   rA   r3   r4   r   ÚmaprO   Ú	TypeErrorÚAttributeErrorÚBytesWarningÚgenericpathÚ_check_arg_types)
r6   Úpathsr#   ÚsepsÚcolonÚresult_driveÚresult_pathÚpÚp_driveÚp_paths
             r7   r   r   k   sÉ  € ÝŒ9�T‰?Œ?€DÝ�$�ÑÔð ØˆØˆØˆˆàˆØˆØˆðØð 	Ø��!�ŒH�s‰NˆNÝ$.¨tÑ$4Ô$4Ñ!ˆ�kÝ•R”Y Ñ&Ô&ð 	/ð 	/ˆAÝ(¨™mœm‰OˆG�VØð '˜& œ) tÐ+Ð+àð + ,ð +Ø#*�LØ$�ØØð '˜W¨Ò4Ð4Ø—=’=‘?”? l×&8Ò&8Ñ&:Ô&:Ò:Ð:à#*�LØ"(�KØà&�àð 0˜{¨2œ°dÐ:Ð:Ø)¨CÑ/�Ø%¨Ñ.ˆKˆKàð 	4˜K¨œN°$Ð6Ð6Øð 7Ø)¨"¨#¨#Ô.°%Ò7Ð7Ø #Ñ%¨Ñ3Ð3Ø˜kÑ)Ð)øÝ•~¥|Ð4ð ð ð ÝÔ$ V¨TÐ:°EÐ:Ð:Ð:Ð:Øðøøøs   ¸CD ÄD Ä,Ec                 ó\  — t          j        | ¦  «        } t          | ¦  «        dk    rút          | t          ¦  «        r	d}d}d}d}nd}d}d}d	}|                      ||¦  «        }|d
d…         |dz  k    r‹|dd…                              ¦   «         |k    rdnd}|                     ||¦  «        }|dk    r| | dd
…         fS |                     ||dz   ¦  «        }|dk    r| | dd
…         fS | d|…         | |d…         fS |dd…         |k    r| dd…         | dd…         fS | dd
…         | fS )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.

    é   rQ   rR   rX   ó   \\?\UNC\r   r   rY   ú\\?\UNC\r   Né   rZ   rT   )r@   rA   Úlenr3   r4   rE   ÚupperÚfind)	rf   r#   r&   rc   Ú
unc_prefixÚnormpÚstartÚindexÚindex2s	            r7   r   r   š   sd  € õ& 	Œ	�!‰Œ€AÝ
ˆ1�v„v�‚{€{Ý�a�ÑÔð 		(ØˆCØˆFØˆEØ(ˆJˆJàˆCØˆFØˆEØ'ˆJØ—	’	˜& #Ñ&Ô&ˆØ��1�Œ:˜˜q™Ò Ð ð ˜r ˜rœŸšÑ*Ô*¨jÒ8Ð8�A�A¸aˆEØ—J’J˜s EÑ*Ô*ˆEØ˜Š{ˆ{Ø˜!˜B˜Q˜Bœ%�x�Ø—Z’Z  U¨Q¡YÑ/Ô/ˆFØ˜Š|ˆ|Ø˜!˜B˜Q˜Bœ%�x�Ø�W�f�W”:˜q   œzÐ)Ð)Ø��1�Œ:˜ÒÐà�R�a�R”5˜!˜A˜B˜Bœ%�<ÐØˆRˆaˆRŒ5�!ˆ8€Or9   c                 ó4  — t          j        | ¦  «        } t          | ¦  «        }t          | ¦  «        \  }} t	          | ¦  «        }|r!| |dz
           |vr|dz  }|r| |dz
           |v°| d|…         | |d…         }}|                     |¦  «        p|}||z   |fS )z~Split a pathname.

    Return tuple (head, tail) where tail is everything after the final slash.
    Either part may be empty.rT   N)r@   rA   r8   r   rn   Úrstrip)rf   rb   ÚdÚiÚheadÚtails         r7   r   r   Ð   s´   € õ
 	Œ	�!‰Œ€AÝ˜ÑÔ€DÝ�a‰=Œ=�D€A€qåˆA‰Œ€AØ
ð ��!�A‘#”˜dÐ"Ð"Ø	ˆQ‰ˆð ð ��!�A‘#”˜dÐ"Ð"à�2�A�2”˜˜!˜"˜"œˆ$€Dà�;Š;�tÑÔÐ$ €DØˆt‰8�Tˆ>Ðr9   c                 ó°   — t          j        | ¦  «        } t          | t          ¦  «        rt	          j        | ddd¦  «        S t	          j        | ddd¦  «        S )NrQ   rR   ó   .r   r   r   )r@   rA   r3   r4   r_   Ú	_splitext©rf   s    r7   r   r   ç   sO   € Ý
Œ	�!‰Œ€AÝ�!•UÑÔð 8ÝÔ$ Q¨¨t°TÑ:Ô:Ð:åÔ$ Q¨¨c°3Ñ7Ô7Ð7r9   c                 ó,   — t          | ¦  «        d         S )z)Returns the final component of a pathnamerT   ©r   r   s    r7   r   r   ò   ó   € å�‰8Œ8�AŒ;Ðr9   c                 ó,   — t          | ¦  «        d         S )z-Returns the directory component of a pathnamer   r�   r   s    r7   r   r   ù   r‚   r9   c                 óœ   — 	 t          j        | ¦  «        }n# t          t          t          f$ r Y dS w xY wt          j        |j        ¦  «        S )zhTest whether a path is a symbolic link.
    This will always return false for Windows prior to 6.0.
    F)r@   ÚlstatÚOSErrorÚ
ValueErrorr]   ÚstatÚS_ISLNKÚst_mode©r6   Ústs     r7   r   r      sQ   € ðÝŒX�d‰^Œ^ˆˆøÝ•Z¥Ð0ð ð ð ØˆuˆuðøøøåŒ<˜œ
Ñ#Ô#Ð#s   ‚ —2±2c                 ób   — 	 t          j        | ¦  «        }n# t          t          f$ r Y dS w xY wdS )zCTest whether a path exists.  Returns True for broken symbolic linksFT)r@   r…   r†   r‡   r‹   s     r7   r   r     sB   € ðÝŒX�d‰^Œ^ˆˆøÝ•ZÐ ð ð ð Øˆuˆuðøøøàˆ4s   ‚ —,«,)Ú_getvolumepathnamec                 ó”  — t          j        | ¦  «        } t          | ¦  «        }t          | ¦  «        } t	          | ¦  «        \  }}|r|d         |v r| p||v S |r||v rdS t
          ra|                      |¦  «        }t          | ¦  «                             |¦  «        }|                     ¦   «         |                     ¦   «         k    S dS )zaTest whether a path is a mount point (a drive root, the root of a
    share, or a mounted volume)r   TF)r@   rA   r8   r    r   rŽ   rw   Úcasefold)r6   rb   ÚrootÚrestÚxÚys         r7   r   r   "  sÈ   € õ Œ9�T‰?Œ?€DÝ˜ÑÔ€DÝ�4‰=Œ=€DÝ˜DÑ!Ô!�J€Dˆ$Øð ,��Q”˜4��Ø�Ð+˜d d˜lÐ+Øð �˜��Øˆtåð Ø�KŠK˜ÑÔˆÝ˜dÑ#Ô#×*Ò*¨4Ñ0Ô0ˆØ�zŠz‰|Œ|˜qŸzšz™|œ|Ò+Ð+àˆur9   c                 ó¦  — t          j        | ¦  «        } t          | t          ¦  «        rd}nd}|                      |¦  «        s| S dt          | ¦  «        }}||k     r9| |         t          | ¦  «        vr"|dz  }||k     r| |         t          | ¦  «        v°"dt           j        v rt           j        d         }nVdt           j        vr| S 	 t           j        d         }n# t          $ r d}Y nw xY wt          |t           j        d         ¦  «        }|dk    rŠ| d|…         }t          |t          ¦  «        rt          j
        |¦  «        }t           j                             d¦  «        }||k    r2|t          |¦  «        k    r| S t          t          |¦  «        |¦  «        }t          | t          ¦  «        rt          j        |¦  «        }|| |d	…         z   S )
zLExpand ~ and ~user constructs.

    If user or $HOME is unknown, do nothing.ó   ~ú~rT   ÚUSERPROFILEÚHOMEPATHÚ	HOMEDRIVEÚ ÚUSERNAMEN)r@   rA   r3   r4   rU   rn   r8   ÚenvironÚKeyErrorr   rN   Úgetr   r   rM   )r6   Útildery   ÚnÚuserhomeÚdriveÚtarget_userÚcurrent_users           r7   r   r   ?  sÖ  € õ Œ9�T‰?Œ?€DÝ�$�ÑÔð ØˆˆàˆØ�?Š?˜5Ñ!Ô!ð ØˆØ�c�$‰iŒi€q€AØ
ˆaŠ%ˆ%�D˜”G¥=°Ñ#6Ô#6Ð6Ð6Ø	ˆQ‰ˆð ˆaŠ%ˆ%�D˜”G¥=°Ñ#6Ô#6Ð6Ð6ð �œ
Ð"Ð"Ý”:˜mÔ,ˆˆØ�2œ:Ð%Ð%Øˆð	Ý”J˜{Ô+ˆEˆEøÝð 	ð 	ð 	ØˆEˆEˆEð	øøøå˜�rœz¨*Ô5Ñ6Ô6ˆàˆA‚v€vØ˜1˜Q˜3”iˆÝ�k¥5Ñ)Ô)ð 	3Ýœ+ kÑ2Ô2ˆKÝ”z—~’~ jÑ1Ô1ˆà˜,Ò&Ð&ð �x¨Ñ1Ô1Ò1Ð1Ø�Ý�G HÑ-Ô-¨{Ñ;Ô;ˆHå�$�ÑÔð )Ý”;˜xÑ(Ô(ˆà�d˜1˜2˜2”hÑÐs   ÃC ÃC*Ã)C*z.'[^']*'?|%(%|[^%]*%?)|\$(\$|[-\w]+|\{[^}]*\}?)c                 ó  ‡‡‡‡‡— t          j        | ¦  «        } t          | t          ¦  «        rrd| vrd| vr| S t          s;ddl}|                     t                               ¦   «         |j	        ¦  «        j
        at          }dŠdŠdŠdŠt          t           dd¦  «        ŠnUd| vrd	| vr| S t          s)ddl}|                     t          |j	        ¦  «        j
        at          }d	Šd
ŠdŠdŠt           j        Šˆˆˆˆˆfd„} ||| ¦  «        S )zfExpand shell variables of the forms $var, ${var} and %var%.

    Unknown variables are left unchanged.ó   $ó   %r   Nó   {ó   }Úenvironbú$ú%ú{ú}c                 óÜ  •— | j         }|€| d         S | |         }|dk    r0|‰k    r|S |                     ‰¦  «        s| d         S |d d…         }nD|‰k    r|S |                     ‰¦  «        r'|                     ‰¦  «        s| d         S |dd…         }	 ‰€6t          j        t          j        t          j        |¦  «                 ¦  «        S ‰|         S # t          $ r | d         cY S w xY w)Nr   rT   rZ   )Ú	lastindexÚendswithrU   r@   rM   r�   rN   rž   )Úmr±   ÚnameÚbraceÚdollarr�   ÚpercentÚrbraces      €€€€€r7   Úreplzexpandvars.<locals>.replŸ  s  ø€ Ø”Kˆ	ØÐØ�Q”4ˆKØ�Œ|ˆØ˜Š>ˆ>Ø�wŠˆØ�Ø—=’= Ñ)Ô)ð Ø˜”t�Ø˜˜˜”9ˆDˆDà�vŠ~ˆ~Ø�Ø�Š˜uÑ%Ô%ð "Ø—}’} VÑ,Ô,ð  Ø˜Qœ4�KØ˜A˜b˜D”z�ð	ØˆÝ”{¥2¤:­b¬k¸$Ñ.?Ô.?Ô#@ÑAÔAÐAà˜t”}Ð$øÝð 	ð 	ð 	Ø�Q”4ˆKˆKˆKð	øøøs   Â7C ÃC ÃC+Ã*C+)r@   rA   r3   r4   Ú_varsubbÚreÚcompileÚ_varpatternrI   ÚASCIIÚsubÚgetattrÚ_varsubr�   )	r6   r»   r¿   r¹   rµ   r¶   r�   r·   r¸   s	       @@@@@r7   r   r   €  sB  øøøøø€ õ Œ9�T‰?Œ?€Då�$�ÑÔð Ø�tÐÐ ¨DÐ 0Ð 0ØˆKÝð 	FØˆIˆIˆIØ—z’z¥+×"4Ò"4Ñ"6Ô"6¸¼ÑAÔAÔEˆHÝˆØˆØˆØˆØˆÝ�"˜j¨$Ñ/Ô/ˆˆà�dˆ?ˆ?˜s¨$˜˜ØˆKÝð 	<ØˆIˆIˆIØ—j’j¥¨b¬hÑ7Ô7Ô;ˆGÝˆØˆØˆØˆØˆÝ”*ˆðð ð ð ð ð ð ð ð ð6 ˆ3ˆt�T‰?Œ?Ðr9   )Ú_path_normpathc                 óà   — t          j        | ¦  «        } t          | t          ¦  «        r5t          j        t          t          j        | ¦  «        ¦  «        ¦  «        pdS t          | ¦  «        pdS )ú0Normalize path, eliminating double slashes, etc.r}   r   )r@   rA   r3   r4   rM   rÂ   rN   r5   s    r7   r   r   î  s\   € åŒy˜‰ŒˆÝ�d�EÑ"Ô"ð 	JÝ”;�~­b¬k¸$Ñ.?Ô.?Ñ@Ô@ÑAÔAÐIÀTÐIÝ˜dÑ#Ô#Ð* sÐ*r9   c                 óè  — t          j        | ¦  «        } t          | t          ¦  «        r	d}d}d}d}nd}d}d}d}|                      ||¦  «        } t          | ¦  «        \  }} |                      |¦  «        r||z  }|                      |¦  «        } |                      |¦  «        }d	}|t          |¦  «        k     r‡||         r||         |k    r||= n\||         |k    rK|d	k    r ||d
z
           |k    r||d
z
  |d
z   …= |d
z  }n*|d	k    r| 
                    |¦  «        r||= n|d
z  }n|d
z  }|t          |¦  «        k     °‡|s|s|                     |¦  «         ||                     |¦  «        z   S )rÄ   rQ   rR   r}   ó   ..r   r   r   r   r   rT   )r@   rA   r3   r4   rE   r   rU   Úlstripr   rn   r²   Úappendr   )r6   r#   r&   r!   r"   ÚprefixÚcompsry   s           r7   r   r   Ä  s¬  € åŒy˜‰ŒˆÝ�d�EÑ"Ô"ð 		ØˆCØˆFØˆFØˆFˆFàˆCØˆFØˆFØˆFØ�|Š|˜F CÑ(Ô(ˆÝ! $Ñ'Ô'‰ˆ�ð �?Š?˜3ÑÔð 	$Ø�c‰MˆFØ—;’;˜sÑ#Ô#ˆDà—
’
˜3‘”ˆØˆØ•#�e‘*”*ŠnˆnØ˜”8ð ˜u Qœx¨6Ò1Ð1Ø˜!�H�HØ�q”˜VÒ#Ð#Ø�q’5�5˜U 1 Q¡3œZ¨6Ò1Ð1Ø˜a ™c ! A¡#˜g˜Ø˜‘F�A�AØ˜!’V�V §¢°Ñ 4Ô 4�VØ˜a˜˜à˜‘F�A�Aà�Q‘�ð •#�e‘*”*Šnˆnð ð 	!˜eð 	!Ø�LŠL˜Ñ Ô Ð Ø˜Ÿš ™œÑ'Ð'r9   c                 óþ   — t          j        | ¦  «        } t          | ¦  «        sLt          | t          ¦  «        rt          j        ¦   «         }nt          j        ¦   «         }t          || ¦  «        } t          | ¦  «        S )z¤Return the absolute version of a path as a fallback function in case
    `nt._getfullpathname` is not available or raises OSError. See bpo-31047 for
    more.

    )	r@   rA   r   r3   r4   ÚgetcwdbÚgetcwdr   r   )r6   Úcwds     r7   Ú_abspath_fallbackrÏ   ö  sb   € õ Œ9�T‰?Œ?€DÝ�‰;Œ;ð Ý�d�EÑ"Ô"ð 	Ý”*‘,”,ˆCˆCå”)‘+”+ˆCÝ�C˜‰ŒˆÝ�D‰>Œ>Ðr9   )Ú_getfullpathnamec                 óˆ   — 	 t          t          | ¦  «        ¦  «        S # t          t          f$ r t	          | ¦  «        cY S w xY w)z&Return the absolute version of a path.)rÐ   r   r†   r‡   rÏ   r5   s    r7   r    r      sO   € ð	+Ý#¥H¨T¡N¤NÑ3Ô3Ð3øÝ�Ð$ð 	+ð 	+ð 	+Ý$ TÑ*Ô*Ð*Ð*Ð*ð	+øøøs   ‚ ž AÁ A)Ú_getfinalpathnameÚreadlinkc                 óÂ  — d}t          ¦   «         }t          | ¦  «        |vr½|                     t          | ¦  «        ¦  «         	 | }t          | ¦  «        } t	          | ¦  «        s<t          |¦  «        s|} nht          t          t          |¦  «        | ¦  «        ¦  «        } n,# t          $ r}|j
        |v rY d }~n%‚ d }~wt          $ r Y nw xY wt          | ¦  «        |v°½| S )N)rT   rj   rS   é   é   é    é2   éC   éW   i&  i(  i)  )Úsetr
   ÚaddÚ_nt_readlinkr   r   r   r   r   r†   Úwinerrorr‡   )r6   Úallowed_winerrorÚseenÚold_pathÚexs        r7   Ú_readlink_deeprã     s  € ð LÐå‰uŒuˆÝ�t‰nŒn DÐ(Ð(Ø�HŠH•X˜d‘^”^Ñ$Ô$Ð$ðØ�Ý# DÑ)Ô)�õ ˜T‘{”{ð Cõ " (Ñ+Ô+ð Ø'˜ØÝ#¥D­°Ñ):Ô):¸DÑ$AÔ$AÑBÔB�DøøÝð ð ð Ø”;Ð"2Ð2Ð2Ø�E�E�E�EØøøøøÝð ð ð à�ðøøøõ' �t‰nŒn DÐ(Ð(ð, ˆs*   Á1B" Á7*B" Â"
CÂ,	B;Â:B;Â;CÃ
Cc                 óˆ  — d}d}| r»	 t          | ¦  «        } |rt          | |¦  «        n| S # t          $ rˆ}|j        |vr‚ 	 t	          | ¦  «        }|| k    r|rt          ||¦  «        n|cY d }~S n# t          $ r Y nw xY wt          | ¦  «        \  } }| r|s
| |z   cY d }~S |rt          ||¦  «        n|}Y d }~nd }~ww xY w| °»|S )N)rT   rj   rS   rÕ   rÖ   r×   rØ   é5   éA   rÙ   rÚ   é{   é¡   i€  i�  r›   )rÒ   r   r†   rÞ   rã   r   )r6   rß   r{   râ   Únew_pathr´   s         r7   Ú_getfinalpathname_nonstrictrê   E  sR  € ð$ XÐð ˆØð 	:ð:Ý(¨Ñ.Ô.�Ø+/Ð9•t˜D $Ñ'Ô'Ð'°TÐ9øÝð :ð :ð :Ø”;Ð&6Ð6Ð6Øð	õ  .¨dÑ3Ô3�HØ 4Ò'Ð'Ø7;ÐI�t H¨dÑ3Ô3Ð3ÀÐIÐIÐIÐIÐIÐIð (øåð ð ð à�Dðøøøõ # 4™[œ[‘
��dð ð ' ð 'Ø $™;Ð&Ð&Ð&Ð&Ð&Ð&Ø+/Ð9•t˜D $Ñ'Ô'Ð'°T������øøøøð':øøøð	 ð 	:ð0 ˆsJ   ˆ"+ «
B=µ
B8Á (A/Á(B=Á.B8Á/
A<Á9B8Á;A<Á<B8ÂB=ÂB8Â8B=F)Ústrictc                ó˜  — t          | ¦  «        } t          | t          ¦  «        rSd}d}d}t          j        ¦   «         }t          | ¦  «        t          t          j        t          ¦  «        ¦  «        k    rdS n@d}d}d}t          j        ¦   «         }t          | ¦  «        t          t          ¦  «        k    rdS |  	                    |¦  «        }|st          | ¦  «        st          || ¦  «        } 	 t          | ¦  «        } d	}n0# t          $ r#}|r‚ |j        }t          | ¦  «        } Y d }~nd }~ww xY w|s—|  	                    |¦  «        r‚|  	                    |¦  «        r|| t!          |¦  «        d …         z   }	n| t!          |¦  «        d …         }		 t          |	¦  «        | k    r|	} n$# t          $ r}|j        |k    r|	} Y d }~nd }~ww xY w| S )
Ns   \\?\rk   s   \\s   \\.\NULz\\?\rl   z\\z\\.\NULr   )r   r3   r4   r@   rÌ   r
   rM   r(   rÍ   rU   r   r   rÒ   r†   rÞ   rê   rn   )
r6   rë   rÉ   rq   Únew_unc_prefixrÎ   Ú
had_prefixÚinitial_winerrorrâ   Úspaths
             r7   r)   r)   v  sú  € Ý˜‰~Œ~ˆÝ�d�EÑ"Ô"ð 	$ØˆFØ(ˆJØ$ˆNÝ”*‘,”,ˆCå˜‰~Œ~¥­"¬+µgÑ*>Ô*>Ñ!?Ô!?Ò?Ð?Ø$�}ð @ð ˆFØ'ˆJØ#ˆNÝ”)‘+”+ˆCå˜‰~Œ~¥­'Ñ!2Ô!2Ò2Ð2Ø#�|Ø—_’_ VÑ,Ô,ˆ
Øð 	#¥%¨¡+¤+ð 	#Ý˜˜T‘?”?ˆDð	5Ý$ TÑ*Ô*ˆDØ ÐÐøÝð 	5ð 	5ð 	5Øð ØØ!œ{ÐÝ.¨tÑ4Ô4ˆDˆDˆDˆDˆDˆDøøøøð		5øøøð ð 	!˜dŸošo¨fÑ5Ô5ð 	!ð �Š˜zÑ*Ô*ð +Ø&¨­c°*©o¬oÐ.>Ð.>Ô)?Ñ?��à�S ™[œ[˜\˜\Ô*�ð!Ý$ UÑ+Ô+¨tÒ3Ð3Ø �DøøÝð !ð !ð !ð ”;Ð"2Ò2Ð2Ø �Døøøøøøøøøð	!øøøð
 ˆs0   Ã/D Ä
D.ÄD)Ä)D.ÆF& Æ&
GÆ0GÇGÚgetwindowsversionrS   rj   c                 ó¶  — t          j        | ¦  «        } t          | t          ¦  «        rd}d}d}nd}d}d}|€|}| st	          d¦  «        ‚t          j        |¦  «        }	 t          t          |¦  «        ¦  «        }t          t          | ¦  «        ¦  «        }t          |¦  «        \  }}t          |¦  «        \  }	}
t          |¦  «        t          |	¦  «        k    rt	          d	|	›d
|›�¦  «        ‚d„ | 	                    |¦  «        D ¦   «         }d„ |
 	                    |¦  «        D ¦   «         }d}t          ||¦  «        D ],\  }}t          |¦  «        t          |¦  «        k    r n|dz  }Œ-|gt          |¦  «        |z
  z  ||d…         z   }|s|S t          |Ž S # t          t          t          t          t           f$ r t#          j        d| |¦  «         ‚ w xY w)z#Return a relative version of a pathrQ   r}   rÆ   r   r   r   Nzno path specifiedzpath is on mount z, start on mount c                 ó   — g | ]}|¯|‘ŒS © rô   ©Ú.0r“   s     r7   ú
<listcomp>zrelpath.<locals>.<listcomp>É  s   € Ð<Ð<Ð<˜A¸!Ð<�aÐ<Ð<Ð<r9   c                 ó   — g | ]}|¯|‘ŒS rô   rô   rõ   s     r7   r÷   zrelpath.<locals>.<listcomp>Ê  s   € Ð:Ð:Ð:˜1¸Ð:�QÐ:Ð:Ð:r9   r   rT   r+   )r@   rA   r3   r4   r‡   r    r   r   r
   r   Úziprn   r   r\   r]   r^   ÚDeprecationWarningr_   r`   )r6   rs   r#   r!   r"   Ú	start_absÚpath_absÚstart_driveÚ
start_restÚ
path_driveÚ	path_restÚ
start_listÚ	path_listry   Úe1Úe2Úrel_lists                    r7   r+   r+   ­  s  € åŒ9�T‰?Œ?€DÝ�$�ÑÔð ØˆØˆØˆˆàˆØˆØˆà€}Øˆàð .ÝÐ,Ñ-Ô-Ð-åŒI�eÑÔ€EðÝ�H U™OœOÑ,Ô,ˆ	Ý�8 D™>œ>Ñ*Ô*ˆÝ",¨YÑ"7Ô"7Ñˆ�ZÝ *¨8Ñ 4Ô 4Ñˆ
�IÝ�KÑ Ô ¥H¨ZÑ$8Ô$8Ò8Ð8Ý�*Ø�
�
˜K˜Kð)ñ *ô *ð *ð =Ð< ×!1Ò!1°#Ñ!6Ô!6Ð<Ñ<Ô<ˆ
Ø:Ð: 	§¢°Ñ 4Ô 4Ð:Ñ:Ô:ˆ	àˆÝ˜* iÑ0Ô0ð 	ð 	‰FˆB�Ý˜‰|Œ|�x¨™|œ|Ò+Ð+Ø�Ø�‰FˆAˆAà�8�s :™œ¨qÑ0Ñ1°I¸a¸b¸b´MÑAˆØð 	ØˆMÝ�XˆÐøÝ•z¥>µ<ÕASÐTð ð ð ÝÔ$ Y°°eÑ<Ô<Ð<Øðøøøs   Á!D2F ÆF Æ;Gc                 ó   ‡‡‡— | st          d¦  «        ‚t          t          t          j        | ¦  «        ¦  «        } t          | d         t          ¦  «        rdŠdŠdŠndŠdŠdŠ	 ˆˆfd	„| D ¦   «         }ˆfd
„|D ¦   «         }	 t          ˆfd„|D ¦   «         ¦  «        \  }n# t           $ r t          d¦  «        d‚w xY wt          t          d„ |D ¦   «         ¦  «        ¦  «        dk    rt          d¦  «        ‚t          | d          
                    ‰‰¦  «        ¦  «        \  }}|                     ‰¦  «        }ˆfd„|D ¦   «         }ˆfd„|D ¦   «         }t          |¦  «        }t          |¦  «        }t          |¦  «        D ]\  }	}
|
||	         k    r|d|	…         } nŒ|dt          |¦  «        …         }|r|‰z   n|}|‰                     |¦  «        z   S # t           t"          f$ r t%          j        dg| ¢R Ž  ‚ w xY w)zDGiven a sequence of path names, returns the longest common sub-path.z%commonpath() arg is an empty sequencer   rQ   rR   r}   r   r   r   c                 óz   •— g | ]7}t          |                     ‰‰¦  «                             ¦   «         ¦  «        ‘Œ8S rô   )r   rE   rO   )rö   rf   r&   r#   s     €€r7   r÷   zcommonpath.<locals>.<listcomp>ö  s;   ø€ ÐQÐQÐQÀa•z !§)¢)¨F°CÑ"8Ô"8×">Ò">Ñ"@Ô"@ÑAÔAÐQÐQÐQr9   c                 ó@   •— g | ]\  }}|                      ‰¦  «        ‘ŒS rô   r�   ©rö   rx   rf   r#   s      €r7   r÷   zcommonpath.<locals>.<listcomp>÷  s'   ø€ Ð<Ð<Ð<©¨¨1�q—w’w˜s‘|”|Ð<Ð<Ð<r9   c              3   ó:   •K  — | ]\  }}|d d…         ‰k    V — Œd S )NrT   rô   r	  s      €r7   ú	<genexpr>zcommonpath.<locals>.<genexpr>ú  s3   øè è € Ð>Ð>©$¨!¨Q˜˜2˜A˜2œ #šÐ>Ð>Ð>Ð>Ð>Ð>r9   z%Can't mix absolute and relative pathsNc              3   ó    K  — | ]	\  }}|V — Œ
d S ©Nrô   )rö   rx   rf   s      r7   r  zcommonpath.<locals>.<genexpr>  s&   è è € Ð-Ð-™˜˜A�1Ð-Ð-Ð-Ð-Ð-Ð-r9   rT   zPaths don't have the same drivec                 ó$   •— g | ]}|¯|‰k    ¯
|‘ŒS rô   rô   ©rö   Úcr!   s     €r7   r÷   zcommonpath.<locals>.<listcomp>  s#   ø€ Ð9Ð9Ð9˜ qÐ9¨Q°&ª[¨[�!¨[¨[¨[r9   c                 ó,   •— g | ]}ˆfd „|D ¦   «         ‘ŒS )c                 ó$   •— g | ]}|¯|‰k    ¯
|‘ŒS rô   rô   r  s     €r7   r÷   z)commonpath.<locals>.<listcomp>.<listcomp>  s#   ø€ Ð:Ð:Ð:˜a¨Ð:¨a°6ªk¨k˜¨k¨k¨kr9   rô   )rö   rJ   r!   s     €r7   r÷   zcommonpath.<locals>.<listcomp>  s.   ø€ ÐPÐPÐP¸qÐ:Ð:Ð:Ð: 1Ð:Ñ:Ô:ÐPÐPÐPr9   r/   )r‡   Útupler[   r@   rA   r3   r4   rÛ   rn   r   rE   r   ÚminÚmaxÚ	enumerater   r\   r]   r_   r`   )ra   ÚdrivesplitsÚsplit_pathsr   r£   r6   ÚcommonÚs1Ús2ry   r  rÉ   r&   r!   r#   s               @@@r7   r/   r/   å  sw  øøø€ ð ð BÝÐ@ÑAÔAÐAå•#•b”i Ñ'Ô'Ñ(Ô(€EÝ�%˜”(�EÑ"Ô"ð ØˆØˆØˆˆàˆØˆØˆð!ØQÐQÐQÐQÐQÈ5ÐQÑQÔQˆØ<Ð<Ð<Ð<°Ð<Ñ<Ô<ˆð	PÝÐ>Ð>Ð>Ð>°+Ð>Ñ>Ô>Ñ>Ô>‰FˆEˆEøÝð 	Pð 	Pð 	PÝÐDÑEÔEÈ4ÐOð	Pøøøõ �sÐ-Ð- Ð-Ñ-Ô-Ñ-Ô-Ñ.Ô.°!Ò3Ð3ÝÐ>Ñ?Ô?Ð?å   q¤×!1Ò!1°&¸#Ñ!>Ô!>Ñ?Ô?‰ˆˆtØ—’˜C‘”ˆØ9Ð9Ð9Ð9˜VÐ9Ñ9Ô9ˆàPÐPÐPÐPÀKÐPÑPÔPˆÝ�ÑÔˆÝ�ÑÔˆÝ˜b‘M”Mð 	&ð 	&‰DˆAˆqØ�B�q”EŠzˆzØ   œ�Ø�ð ð ˜H�S ™WœW˜HÔ%ˆFà %Ð0�˜‘�¨5ˆØ˜Ÿš Ñ(Ô(Ñ(Ð(øÝ•~Ð&ð ð ð ÝÔ$ \Ð:°EÐ:Ð:Ð:Ð:Øðøøøs%   Á%G ÂB! Â G Â!B<Â<DG Ç%G=)Ú_isdirr  )<Ú__doc__r!   r"   r'   r#   r$   r&   r%   r(   r@   rB   rˆ   r_   Ú__all__r8   Ú_winapir:   rF   r;   rG   r<   rH   r
   ÚImportErrorr   r   r   r   r   r~   r   r   r   r   ÚntrŽ   r   r   r½   rÁ   rº   r   rÂ   r   rÏ   rÐ   r    rÒ   rÓ   rÝ   rã   rê   r)   Úhasattrrñ   r*   r+   r/   r  r   rô   r9   r7   ú<module>r#     s  ððð ð 
€Ø	€Ø	€Ø
€Ø
€Ø	€Ø
€Ø
€à 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð ðAð Að A€ðð ð ð!,ð-ð -ð -ð -ð -ð -ð -ð -ð -ð -ð
8ð 8ð 8ð 8øð$ ð 	,ð 	,ð 	,ð,ð ,ð ,ð ,ð ,ð	,øøøð$ð ð ð()ð )ð )ð^.ð .ð .ðlð ð ð.8ð 8ð 8ð Ô(Ô0€Ô ð
ð ð ðð ð ð$ð $ð $ðð ð ð$Ø%Ð%Ð%Ð%Ð%Ð%Ð%øØð ð ð ØÐÐÐðøøøðð ð ð:-ð -ð -ðz @€Ø
€Ø€ð:ð :ð :ð@3+Ø!Ð!Ð!Ð!Ð!Ð!ðZ+ð +ð +ð +øðW ð ((ð ((ð ((ð'(ð '(ð '(ð '(ð '(ð((øøøðfð ð ð"+Ø#Ð#Ð#Ð#Ð#Ð#ð+ð +ð +ð +øð	 ð  ð  ð  Ø€G€G€Gð øøøðQØ>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð
(ð (ð (ðT/ð /ð /ðb "'ð 0ð 0ð 0ð 0ð 0ð 0øð ð ð ð à€H€H€Hðøøøðf &˜g cÐ+>Ñ?Ô?ð >Ø3˜cÔ3Ñ5Ô5°aÔ8¸AÒ=ð ð+ð +ð +ð +ðp1ð 1ð 1ðh	ð
 #Ð"Ð"Ð"Ð"Ð"Ð"Ð"øØð 	ð 	ð 	à€D€Dð	øøøsi   ¯= ½AÁAÁ8A? Á?B	ÂB	ÂB& Â&B1Â0B1Â8C ÃCÃCÃC% Ã%C/Ã.C/ÄD' Ä'D0Ä/D0