JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў fOc%@sdZddlZddlZddlZddlZddlTdddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(g%Zd)Zd*Zd)Zd+Z d,Z d-Z d.Z d/ej krd0Z nd1ej krd-Z nd2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdZdBdZdCdZdDdZdEdZdFdZdGd Zejje_dHd ZdId ZdJdZ dKdZ!dLdZ"dMdZ#dNdZ$dOdZ%yddPl&m'Z'Wne(k r`dQdZ)Yn XdRdZ)e)Z*e+edSoej,dTdUkZ-edVd&Z.y9ej,ddUdakrddXl&m/Z/ne(Wn$e0e(fk rdYdZZ/YnXd[d'Z1ydd\l&m2Z2Wne(k rGd]d^Z2YnXd_d(Z3ydd`l&m4Z5Wne(k r|YnXdS(buCommon pathname manipulations, WindowsNT/95 version. Instead of importing this module directly, import os and refer to this module as os.path. iN(u*unormcaseuisabsujoinu splitdriveusplitusplitextubasenameudirnameu commonprefixugetsizeugetmtimeugetatimeugetctimeuislinkuexistsulexistsuisdiruisfileuismountu expanduseru expandvarsunormpathuabspathusplituncucurdirupardirusepupathsepudefpathualtsepuextsepudevnullurealpathusupports_unicode_filenamesurelpathusamefileu sameopenfileu.u..u\u;u/u.;C:\binuceu\Windowsuos2unulcCst|trdSdSdS(Nsu(u isinstanceubytes(upath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu _get_empty&su _get_emptycCst|trdSdSdS(Ns\u\(u isinstanceubytes(upath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu_get_sep,su_get_sepcCst|trdSdSdS(Ns/u/(u isinstanceubytes(upath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu _get_altsep2su _get_altsepcCst|trdSdSdS(Ns\/u\/(u isinstanceubytes(upath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu _get_bothseps8su _get_bothsepscCst|trdSdSdS(Ns.u.(u isinstanceubytes(upath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu_get_dot>su_get_dotcCst|trdSdSdS(Ns:u:(u isinstanceubytes(upath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu _get_colonDsu _get_coloncCst|trdSdSdS(Ns\\.\s\\?\u\\.\u\\?\(s\\.\s\\?\(u\\.\u\\?\(u isinstanceubytes(upath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu _get_specialJsu _get_specialcCsUt|ttfs3tdj|jjn|jt|t |j S(uaNormalize case of pathname. Makes all characters lowercase and all slashes into backslashes.u2normcase() argument must be str or bytes, not '{}'( u isinstanceubytesustru TypeErroruformatu __class__u__name__ureplaceu _get_altsepu_get_sepulower(us((u+/opt/alt/python33/lib64/python3.3/ntpath.pyunormcaseTs cCs<t|d}t|dko;|ddt|kS(uTest whether a path is absoluteiiN(u splitdriveulenu _get_bothseps(us((u+/opt/alt/python33/lib64/python3.3/ntpath.pyuisabsdsc GsIt|}t|}t|}t|\}}x|D]}t|\}} | r| d|kr|sx| r|}n| }q=nE|r||kr|j|jkr|}| }q=n|}n|r|d|kr||}n|| }q=W|rA|d|krA|rA|dd|krA|||S||S(Niiii(u_get_sepu _get_bothsepsu _get_colonu splitdriveulower( upathupathsusepusepsucolonu result_driveu result_pathupup_driveup_path((u+/opt/alt/python33/lib64/python3.3/ntpath.pyujoinks0         cCsJt|}t|dkr@t|}|jt||}|dd|dkr|dd|kr|j|d}|dkr||fS|j||d}||dkr||fS|dkrt|}n|d|||dfS|ddt|kr@|dd|ddfSn||fS(uSplit 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. iiiiNii(u _get_emptyulenu_get_sepureplaceu _get_altsepufindu _get_colon(upuemptyusepunormpuindexuindex2((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu splitdrives"  0    !cCsaddl}|jdtdt|\}}t|dkrW|dd|fS||fS(uDeprecated since Python 3.1. Please use splitdrive() instead; it now handles UNC paths. Split a pathname into UNC mount point and relative path specifiers. Return a 2-tuple (unc, rest); either part may be empty. If unc is not empty, it has the form '//host/mount' (or similar using backslashes). unc+rest is always the input path. Paths containing drive letters never have an UNC part. iNu<ntpath.splitunc is deprecated, use ntpath.splitdrive insteadi(uwarningsuwarnuDeprecationWarningu splitdriveulen(upuwarningsudriveupath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyusplituncs   cCst|}t|\}}t|}x(|rT||d|krT|d8}q-W|d|||d}}|}x0|r|dd|kr|dd}qW|p|}|||fS(u~Split a pathname. Return tuple (head, tail) where tail is everything after the final slash. Either part may be empty.iNii(u _get_bothsepsu splitdriveulen(upusepsuduiuheadutailuhead2((u+/opt/alt/python33/lib64/python3.3/ntpath.pyusplits  ! cCs(tj|t|t|t|S(N(u genericpathu _splitextu_get_sepu _get_altsepu_get_dot(up((u+/opt/alt/python33/lib64/python3.3/ntpath.pyusplitextscCst|dS(u)Returns the final component of a pathnamei(usplit(up((u+/opt/alt/python33/lib64/python3.3/ntpath.pyubasenamescCst|dS(u-Returns the directory component of a pathnamei(usplit(up((u+/opt/alt/python33/lib64/python3.3/ntpath.pyudirnamesc CsEytj|}Wntjtfk r4dSYnXtj|jS(uyTest whether a path is a symbolic link. This will always return false for Windows prior to 6.0 and for OS/2. F(uosulstatuerroruAttributeErroruFalseustatuS_ISLNKust_mode(upathust((u+/opt/alt/python33/lib64/python3.3/ntpath.pyuislinks  c Cs9ytj|}Wntjtfk r4dSYnXdS(uCTest whether a path exists. Returns True for broken symbolic linksFT(uosulstatuerroru WindowsErroruFalseuTrue(upathust((u+/opt/alt/python33/lib64/python3.3/ntpath.pyulexistss  cCsOt|}t|\}}|rE|d|krE| pD||kS||kS(u?Test whether a path is a mount point (defined as root of drive)i(u _get_bothsepsu splitdrive(upathusepsurooturest((u+/opt/alt/python33/lib64/python3.3/ntpath.pyuismounts  cCsqt|trd}nd}|j|s1|Sdt|}}x0||krv||t|krv|d7}qGWdtjkrtjd}ntdtjkrtjd}nUdtjkr|Sytjd}Wntk rd}YnXt|tjd}t|tr1|j t j }n|dkr_tt ||d|}n|||d S( uLExpand ~ and ~user constructs. If user or $HOME is unknown, do nothing.s~u~iuHOMEu USERPROFILEuHOMEPATHu HOMEDRIVEuN( u isinstanceubytesu startswithulenu _get_bothsepsuosuenvironuKeyErrorujoinuencodeusysugetfilesystemencodingudirname(upathutildeuiunuuserhomeudrive((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu expanduser/s0 %   "cCsut|trtd|kr7td|kr7|Sddl}t|j|jdd}d}d}d }d }ttd d}n]d|krd|kr|Sddl}|j|jd}d }d}d }d}tj }|dd}d} t |} xb| | krp|| | d} | |kr|| dd}t |} y/|j | } || |d| d7}Wqct k r||7}| d} YqcXn| |kr|| d| d|kr|| 7}| d7} qc|| dd}t |} y|j |} Wn*t k rV|||7}| d} YqcX|d| } y<|dkrtj tj tj| } n || } Wn tk r|| |} YnX|| 7}n| |krY|| d| d|kr|| 7}| d7} qc|| d| d|kro|| dd}t |} y4t|trv|j d} n|j d} WnJt k rt|tr|d|7}n|d|7}| d} YqVX|d| } y<|dkrtj tj tj| } n || } Wn@tk rat|trOd| d} nd| d} YnX|| 7}qc|dd} | d7} || | d} x>| r| |kr| | 7} | d7} || | d} qWy<|dkrtj tj tj| } n || } Wntk r8|| } YnX|| 7}| rc| d8} qcn || 7}| d7} qW|S(ufExpand shell variables of the forms $var, ${var} and %var%. Unknown variables are left unchanged.u$u%iNu_-uasciis's%s{s$uenvironbu'u{iis}u}s${u${(u isinstanceubytesuordustringu ascii_lettersudigitsugetattruosuNoneuenvironulenuindexu ValueErrorufsencodeufsdecodeuKeyError(upathustringuvarcharsuquoteupercentubraceudollaruenvironuresuindexupathlenucuvaruvalue((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu expandvars`s$               "        "      "   cCst|}t|d}t|}|j|r;|S|jt||}t|\}}|j|r||7}|j|}n|j|}d}x|t |kr||| s||t|kr||=q|||kro|dkr7||d|kr7||d|d=|d8}qy|dkrb|j t|rb||=qy|d7}q|d7}qW| r| r|j t|n||j |S(u0Normalize path, eliminating double slashes, etc.iii( u_get_sepu_get_dotu _get_specialu startswithureplaceu _get_altsepu splitdriveulstripusplitulenuendswithuappendujoin(upathusepudotdotuspecial_prefixesuprefixucompsui((u+/opt/alt/python33/lib64/python3.3/ntpath.pyunormpaths4   !   !  (u_getfullpathnamecCsRt|sHt|tr*tj}n tj}t||}nt|S(u&Return the absolute version of a path.(uisabsu isinstanceubytesuosugetcwdbugetcwdujoinunormpath(upathucwd((u+/opt/alt/python33/lib64/python3.3/ntpath.pyuabspaths   c Csb|r.yt|}WqXtk r*YqXXn*t|trLtj}n tj}t|S(u&Return the absolute version of a path.(u_getfullpathnameu WindowsErroru isinstanceubytesuosugetcwdbugetcwdunormpath(upath((u+/opt/alt/python33/lib64/python3.3/ntpath.pyuabspaths  ugetwindowsversioniicCst|}|tkr't|}n|s<tdntt|}tt|}t|\}}t|\}}t|t|krdj||} t| ndd|j |D} dd|j |D} d} xCt | | D]2\} }t| t|kr3Pn| d7} q Wt |t rYd}nd }|gt | | | | d }|st|St|S( u#Return a relative version of a pathuno path specifiedu,path is on mount '{0}', start on mount '{1}'cSsg|]}|r|qS(((u.0ux((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu 6s urelpath..cSsg|]}|r|qS(((u.0ux((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu 7s iis..u..N(u_get_sepucurdiru_get_dotu ValueErroruabspathunormpathu splitdriveunormcaseuformatusplituzipu isinstanceubytesulenujoin(upathustartusepu start_absupath_absu start_driveu start_restu path_driveu path_restuerroru start_listu path_listuiue1ue2upardirurel_list((u+/opt/alt/python33/lib64/python3.3/ntpath.pyurelpath#s6    % i(u_getfinalpathnamecCstt|S(N(unormcaseuabspath(uf((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu_getfinalpathnameVsu_getfinalpathnamecCst|t|kS(u9Test whether two pathnames reference the same actual file(u_getfinalpathname(uf1uf2((u+/opt/alt/python33/lib64/python3.3/ntpath.pyusamefileYs(u_getfileinformationcCs|S(N((ufd((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu_getfileinformationcsu_getfileinformationcCst|t|kS(u5Test whether two file objects reference the same file(u_getfileinformation(uf1uf2((u+/opt/alt/python33/lib64/python3.3/ntpath.pyu sameopenfilefs(u_isdir(ii(6u__doc__uosusysustatu genericpathu__all__ucurdirupardiruextsepusepupathsepualtsepudefpathubuiltin_module_namesudevnullu _get_emptyu_get_sepu _get_altsepu _get_bothsepsu_get_dotu _get_colonu _get_specialunormcaseuisabsujoinu splitdriveusplituncusplitusplitextu _splitextubasenameudirnameuislinkulexistsuismountu expanduseru expandvarsunormpathuntu_getfullpathnameu ImportErroruabspathurealpathuhasattrugetwindowsversionusupports_unicode_filenamesurelpathu_getfinalpathnameuAttributeErrorusamefileu_getfileinformationu sameopenfileu_isdiruisdir(((u+/opt/alt/python33/lib64/python3.3/ntpath.pyus                 # -       1 w )  '