§
    !phHf  ã            
      ó²  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZmZ ddlmZ  edg d¢¦  «        Z ej        e¦  «        Zd„ Z e¦   «         Z ej        d	¦  «        Z G d
„ d¦  «        Zedk    rÎe	j        dd…         Z ee¦  «        dk    red         Zedd…         ZndZ ee¦  «        dk    red         Zedd…         ZndZe	j        dd…         ez   e	_         e¦   «                              ¦   «         Ze	j          !                    d "                    eddd…         eeddd…         f¦  «        ¦  «         dS dS )z½
The PythonInfo contains information about a concrete instance of a Python interpreter.

Note: this file is also used to query target interpreters, so can only use standard library methods
é    )ÚannotationsN)ÚOrderedDictÚ
namedtuple)ÚdigitsÚVersionInfo)ÚmajorÚminorÚmicroÚreleaselevelÚserialc            	     óä   — t          t          j        dgt          j                             dd¦  «                             ¦   «                              t          j        ¦  «        ¢¦  «        ¦  «        S )NÚ ÚPATHEXT)	Úlistr   ÚfromkeysÚosÚenvironÚgetÚlowerÚsplitÚpathsep© ó    úiC:\Users\Daniel\PycharmProjects\Portfolio_Website\.venv\Lib\site-packages\virtualenv/discovery/py_info.pyÚ_get_path_extensionsr      sQ   € Ý•Ô$ bÐ%c­2¬:¯>ª>¸)ÀRÑ+HÔ+H×+NÒ+NÑ+PÔ+P×+VÒ+VÕWYÔWaÑ+bÔ+bÐ%cÑdÔdÑeÔeÐer   z\{\w+\}c                  ó0  — e Zd ZdZd)d„Zd„ Zd„ Zed„ ¦   «         Ze	d„ ¦   «         Z
e	d	„ ¦   «         Ze	d
„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Zdej        fd„Zd*d„Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Zd+d„Zd+d„Ze	d„ ¦   «         Zed„ ¦   «         Zd„ ZdZdZed,d„¦   «         Zed,d-d„¦   «         Zd„ Z d„ Z!e	 	 	 	 	 d.d„¦   «         Z"ed „ ¦   «         Z#ed!„ ¦   «         Z$ed"„ ¦   «         Z%i Z&d/d#„Z'd$„ Z(ed%„ ¦   «         Z)d&„ Z*d'„ Z+d(„ Z,dS )0Ú
PythonInfoz.Contains information for a Python interpreter.ÚreturnÚNonec           	     óL	  ‡ — d„ }t           j        ‰ _        t          j        ¦   «         ‰ _        ‰ j        dk    rt	          t           j        ¦  «        ‰ _        t          t           j        Ž ‰ _        t          j	        d¦  «        dk    rdnd‰ _
        t          j        d¦  «        ‰ _        t           j        ‰ _        t          j        ‰ _        t          j        d¦  «        d	k    ‰ _         |t%          t           d
d ¦  «        ¦  «        ‰ _         |t%          t           dd ¦  «        ¦  «        ‰ _         |t%          t           dd ¦  «        ¦  «        ‰ _         |t%          t           dd ¦  «        ¦  «        ‰ _         |t%          t           dd ¦  «        ¦  «        ‰ _         |t           j        ¦  «        ‰ _         |‰ j        ¦  «        ‰ _        ‰                      ¦   «         ‰ _        	 t9          d¦  «         d}n# t:          $ r d}Y nw xY w|‰ _        t           j        ‰ _        t          j         ¦   «         ‰ _!        t%          t           j"        dd ¦  «        ‰ _#        t          j$        ¦   «         }d|v r3d‰ _%        ˆ fd„t          j&        ¦   «         D ¦   «         ‰ _'        i ‰ _(        n£t           j        d d…         dk    r7d|v r3d‰ _%        ˆ fd„t          j&        ¦   «         D ¦   «         ‰ _'        i ‰ _(        nTd ‰ _%        d„ t          j&        ¦   «         D ¦   «         ‰ _'        ‰  )                    ¦   «          *                    ¦   «         ‰ _(        t%          t          dt%          t          dd ¦  «        ¦  «        }d„ d |¦   «         ffD ¦   «         ‰ _        tW          ¦   «         }‰ j'         ,                    ¦   «         D ]9}| -                    d„ t\           /                    |¦  «        D ¦   «         ¦  «         Œ:| 0                    d¦  «         d „ |D ¦   «         ‰ _1        ˆ fd!„‰ j1         2                    ¦   «         D ¦   «         }‰  3                    d"|¦  «        ‰ _4        ‰  3                    d#|¦  «        ‰ _5        t%          t           d$t%          t           d%d ¦  «        ¦  «        ‰ _6        d ‰ _7        d S )&Nc                óH   — | €d nt           j                             | ¦  «        S ©N)r   ÚpathÚabspath)Úvs    r   Úabs_pathz%PythonInfo.__init__.<locals>.abs_path%   s   € ØÐ<�4�4­"¬'¯/ª/¸!Ñ*<Ô*<Ð<r   ÚPyPyÚPé   é    é@   Úpy_version_nodotÚPy_GIL_DISABLEDé   ÚprefixÚbase_prefixÚreal_prefixÚbase_exec_prefixÚexec_prefixÚvenvTFÚencodingc                óJ   •— i | ]}|t          j        |d ‰j        ¬¦  «        “Œ S ©F)ÚexpandÚscheme©Ú	sysconfigÚget_pathÚsysconfig_scheme©Ú.0ÚiÚselfs     €r   ú
<dictcomp>z'PythonInfo.__init__.<locals>.<dictcomp>X   ó=   ø€ ð $ð $ð $ØYZ�•9Ô% a°¸dÔ>SÐTÑTÔTð$ð $ð $r   é   )é   é
   Ú
deb_systemÚposix_prefixc                óJ   •— i | ]}|t          j        |d ‰j        ¬¦  «        “Œ S r7   r:   r>   s     €r   rB   z'PythonInfo.__init__.<locals>.<dictcomp>b   rC   r   c                ó<   — i | ]}|t          j        |d ¬¦  «        “ŒS )F)r8   )r;   r<   ©r?   r@   s     r   rB   z'PythonInfo.__init__.<locals>.<dictcomp>i   s*   € Ð#oÐ#oÐ#oÈq A¥yÔ'9¸!ÀEÐ'JÑ'JÔ'JÐ#oÐ#oÐ#or   Úget_makefile_filenameÚ_get_makefile_filenamec                ó   — i | ]
\  }}|®||“ŒS r"   r   ©r?   Úkr%   s      r   rB   z'PythonInfo.__init__.<locals>.<dictcomp>n   s6   € ð 
ð 
ð 
á��1ð ð
Øˆqð
ð 
ð 
r   Úmakefile_filenamec              3  ó*   K  — | ]}|d d…         V — ŒdS )r.   éÿÿÿÿNr   )r?   rP   s     r   ú	<genexpr>z&PythonInfo.__init__.<locals>.<genexpr>y   s*   è è € Ð"RÐ"R¨q 1 Q r T¤7Ð"RÐ"RÐ"RÐ"RÐ"RÐ"Rr   ÚPYTHONFRAMEWORKc                ó<   — i | ]}|t          j        |pd ¦  «        “ŒS ©r   )r;   Úget_config_varrK   s     r   rB   z'PythonInfo.__init__.<locals>.<dictcomp>|   s)   € Ð]Ð]Ð]È˜q¥)Ô":¸1¸7ÀÑ"CÔ"CÐ]Ð]Ð]r   c                ób   •— i | ]+\  }}||�!|                      ‰j        ¦  «        r‰j        n|“Œ,S r"   ©Ú
startswithr/   Úsystem_prefix©r?   rP   r%   rA   s      €r   rB   z'PythonInfo.__init__.<locals>.<dictcomp>~   sP   ø€ ð 
ð 
ð 
á��1ð  aÐX¸¿ºÀTÄ[Ñ8QÔ8QÐX�Ô"Ð"ÐWXð
ð 
ð 
r   ÚstdlibÚ
platstdlibÚmaxsizeÚmaxint)8ÚsysÚplatformÚpython_implementationÚimplementationÚtupleÚpypy_version_infor   Úversion_infoÚstructÚcalcsizeÚarchitecturer;   rX   Úversion_nodotÚversionr   ÚnameÚfree_threadedÚgetattrr/   r0   r1   r2   r3   Ú
executableÚoriginal_executableÚ_fast_get_system_executableÚsystem_executableÚ
__import__ÚImportErrorÚhas_venvr#   ÚgetfilesystemencodingÚfile_system_encodingÚstdoutÚstdout_encodingÚget_scheme_namesr=   Úget_path_namesÚsysconfig_pathsÚdistutils_installÚ_distutils_installÚcopyÚsetÚvaluesÚupdateÚ_CONF_VAR_REÚfindallÚaddÚsysconfig_varsÚitemsÚsysconfig_pathÚsystem_stdlibÚsystem_stdlib_platformÚmax_sizeÚ	_creators)rA   r&   ÚhasÚscheme_namesÚmakefileÚconfig_var_keysÚelementÚconfss   `       r   Ú__init__zPythonInfo.__init__$   s¡  ø€ ð	=ð 	=ð 	=õ œˆŒÝ&Ô<Ñ>Ô>ˆÔØÔ &Ò(ð 	BÝ%*­3Ô+@Ñ%AÔ%AˆDÔ"õ (­Ô)9Ð:ˆÔõ #)¤/°#Ñ"6Ô"6¸!Ò";ÐC˜B˜BÀˆÔõ 'Ô5Ð6HÑIÔIˆÔå”{ˆŒÝ”'ˆŒÝ&Ô5Ð6GÑHÔHÈAÒMˆÔð �h�w¥s¨H°dÑ;Ô;Ñ<Ô<ˆŒØ#˜8¥G­C°ÀÑ$EÔ$EÑFÔFˆÔØ#˜8¥G­C°ÀÑ$EÔ$EÑFÔFˆÔð !) ­µÐ6HÈ$Ñ)OÔ)OÑ PÔ PˆÔØ#˜8¥G­C°ÀÑ$EÔ$EÑFÔFˆÔà"˜(¥3¤>Ñ2Ô2ˆŒØ#+ 8¨D¬OÑ#<Ô#<ˆÔ Ø!%×!AÒ!AÑ!CÔ!CˆÔð	Ý�vÑÔÐØˆCˆCøÝð 	ð 	ð 	ØˆCˆCˆCð	øøøàˆŒÝ”HˆŒ	Ý$'Ô$=Ñ$?Ô$?ˆÔ!Ý&¥s¤z°:¸tÑDÔDˆÔå Ô1Ñ3Ô3ˆà�\Ð!ð 	FØ$*ˆDÔ!ð$ð $ð $ð $Ý^gÔ^vÑ^xÔ^xð$ñ $ô $ˆDÔ ð &(ˆDÔ"Ð"õ Ô˜b˜q˜bÔ! WÒ,ð 
	F°ÀÐ1Mð 
	FØ$2ˆDÔ!ð$ð $ð $ð $Ý^gÔ^vÑ^xÔ^xð$ñ $ô $ˆDÔ ð &(ˆDÔ"Ð"à$(ˆDÔ!Ø#oÐ#oÕT]ÔTlÑTnÔTnÐ#oÑ#oÔ#oˆDÔ Ø%)×%<Ò%<Ñ%>Ô%>×%CÒ%CÑ%EÔ%EˆDÔ"õ �9Ð&=½wÅyÐRjÐlpÑ?qÔ?qÑrÔrˆð
ð 
ð % h h¡j¤jÐ1ðð
ñ 
ô 
ˆŒõ ™%œ%ˆØÔ+×2Ò2Ñ4Ô4ð 	Sð 	SˆGØ×"Ò"Ð"RÐ"RµL×4HÒ4HÈÑ4QÔ4QÐ"RÑ"RÔ"RÑRÔRÐRÐRØ×ÒÐ-Ñ.Ô.Ð.à]Ð]È_Ð]Ñ]Ô]ˆÔð
ð 
ð 
ð 
àÔ+×1Ò1Ñ3Ô3ð
ñ 
ô 
ˆð "×0Ò0°¸5ÑAÔAˆÔØ&*×&9Ò&9¸,ÈÑ&NÔ&NˆÔ#Ý¥ Yµ½¸XÀtÑ0LÔ0LÑMÔMˆŒØˆŒˆˆs   Ç%G7 Ç7HÈHc                ó  ‡— | j         s| j        �ë| j        | j        k    rÛ| j         €Òt          t          dd¦  «        }|�ºt          j        |k    rªt          j                             |¦  «        r|S | j	        j
        | j	        j        }}| j        dk    rf||fdk    r^t          j                             |¦  «        Šˆfd„d|› �d|› d|› �fD ¦   «         D ]%}t          j                             |¦  «        r|c S Œ&dS | j        S )z?Try to get the system executable by just looking at properties.NÚ_base_executableÚposix)rE   é   c                óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S r   )r   r#   Újoin)r?   ÚexeÚbase_dirs     €r   ú
<listcomp>z:PythonInfo._fast_get_system_executable.<locals>.<listcomp>œ   s6   ø€ ð 4ð 4ð 4Ø@C¥¤§¢¨X°sÑ ;Ô ;ð4ð 4ð 4r   Úpythonú.)r1   r0   r/   rp   rb   rq   r   r#   Úexistsrh   r   r	   Údirnamerr   )rA   Úbase_executabler   r	   r�   s       @r   rs   z&PythonInfo._fast_get_system_executable‡   sR  ø€ àÔð 	ØÔð	Ø-1Ô-=ÀÄÒ-Lð	ð Ôð ;Ý")­#Ð/AÀ4Ñ"HÔ"H�Ø"ð ;Ý”~¨Ò8ð ;Ýœ7Ÿ>š>¨/Ñ:Ô:ð 3Ø#2Ð2ð (,Ô'8Ô'>ÀÔ@QÔ@W˜u˜Øœ7 gÒ-ð ;°5¸%°.ÀGÒ2Kð ;å')¤w§¢°Ñ'GÔ'G˜Hð4ð 4ð 4ð 4ØHXÐQVÐHXÐHXÐZrÐchÐZrÐZrÐkpÐZrÐZrÐGsð4ñ 4ô 4ð ;ð ; õ $&¤7§>¢>°/Ñ#BÔ#Bð !;Ø+:Ð$:Ð$:Ð$:ð!;à�4ð Ô'Ð'r   c                ó&  ‡— | j                              |¦  «        }|€s| j        | j        | j        | j        fŠˆfd„| j                             ¦   «         D ¦   «         }|                      ||¬¦  «         	                    t          j        ¦  «        }|S )Nc                ó(   •— i | ]\  }}||‰v rd n|“ŒS rW   r   )r?   rP   r%   Úprefixess      €r   rB   z+PythonInfo.install_path.<locals>.<dictcomp>«   s,   ø€ Ð`Ð`Ð`¹D¸A¸q˜! 1¨ =Ð7˜R˜R°aÐ`Ð`Ð`r   )Ú
config_var)r   r   r/   r3   r0   r2   rˆ   r‰   rŠ   Úlstripr   Úsep)rA   ÚkeyÚresultr§   r¦   s       @r   Úinstall_pathzPythonInfo.install_path¦   s�   ø€ ØÔ'×+Ò+¨CÑ0Ô0ˆØð 	Tà”{ DÔ$4°dÔ6FÈÔH]Ð]ˆHØ`Ð`Ð`Ð`ÀDÔDW×D]ÒD]ÑD_ÔD_Ð`Ñ`Ô`ˆJØ×(Ò(¨¸Ð(ÑDÔD×KÒKÍBÌFÑSÔSˆFØˆr   c                 ó^  ‡— t          j        ¦   «         5  t          j        d¦  «         	 ddlm}  ddlm} n# t          $ r i cY cd d d ¦  «         S w xY w	 d d d ¦  «         n# 1 swxY w Y   |                      ddi¦  «        }t          t          d¦  «        rd t          _        t          j        ¦   «         5  t          j        d¦  «         |                     dd	¬
¦  «        Šd d d ¦  «         n# 1 swxY w Y   t          j        ‰_        ‰                     ¦   «          ˆfd„|D ¦   «         S )NÚignorer   )Údist)ÚSCHEME_KEYSÚscript_argsz--no-user-cfgÚ
_frameworkÚinstallT)Úcreatec                ó‚   •— i | ];}|t          ‰d |› �¦  «        dd…                              t          j        ¦  «        “Œ<S )Úinstall_r.   N)rp   r¨   r   r©   )r?   rª   r@   s     €r   rB   z1PythonInfo._distutils_install.<locals>.<dictcomp>Æ   sG   ø€ Ð^Ð^Ð^È3�•g˜aÐ!1¨CÐ!1Ð!1Ñ2Ô2°1°2°2Ô6×>Ò>½r¼vÑFÔFÐ^Ð^Ð^r   )ÚwarningsÚcatch_warningsÚsimplefilterÚ	distutilsr¯   Údistutils.command.installr°   rv   ÚDistributionÚhasattrrb   r²   Úget_command_objr   r©   r/   Úfinalize_options)r¯   r°   Údr@   s      @r   r€   zPythonInfo._distutils_install¯   sî  ø€ õ
 Ô$Ñ&Ô&ð 	ð 	ÝÔ! (Ñ+Ô+Ð+ðØ*Ð*Ð*Ð*Ð*Ð*ØAÐAÐAÐAÐAÐAÐAøÝð ð ð Ø�	�	ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð
øøøð Bð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×Ò˜}¨oÐ>Ñ?Ô?ˆÝ•3˜Ñ%Ô%ð 	"Ø!�CŒNåÔ$Ñ&Ô&ð 	:ð 	:ÝÔ! (Ñ+Ô+Ð+Ø×!Ò! )°DÐ!Ñ9Ô9ˆAð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:õ ”6ˆŒØ	×ÒÑÔÐØ^Ð^Ð^Ð^ÐR]Ð^Ñ^Ô^Ð^sC   •A#«8·A#¸AÁA#ÁAÁA#Á#A'Á*A'Â9,C1Ã1C5Ã8C5c                óZ   — d                      d„ | j        dd…         D ¦   «         ¦  «        S )Nr    c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r"   ©ÚstrrK   s     r   rT   z)PythonInfo.version_str.<locals>.<genexpr>Ê   ó(   è è € Ð?Ð? 1�˜A™œÐ?Ð?Ð?Ð?Ð?Ð?r   r   rE   ©r›   rh   ©rA   s    r   Úversion_strzPythonInfo.version_strÈ   ó/   € à�xŠxÐ?Ð?¨Ô(9¸!¸A¸#Ô(>Ð?Ñ?Ô?Ñ?Ô?Ð?r   c                óZ   — d                      d„ | j        dd…         D ¦   «         ¦  «        S )Nr    c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r"   rÃ   rK   s     r   rT   z1PythonInfo.version_release_str.<locals>.<genexpr>Î   rÅ   r   r   rD   rÆ   rÇ   s    r   Úversion_release_strzPythonInfo.version_release_strÌ   rÉ   r   c                ó4   — | j         }d|j        › d|j        › �S )NrŸ   r    )rh   r   r	   )rA   rh   s     r   Úpython_namezPythonInfo.python_nameÐ   s&   € àÔ(ˆØA˜Ô*ÐAÐA¨\Ô-?ÐAÐAÐAr   c                ó   — | j         d uS r"   )r1   rÇ   s    r   Úis_old_virtualenvzPythonInfo.is_old_virtualenvÕ   ó   € àÔ tÐ+Ð+r   c                ó   — | j         d uS r"   )r0   rÇ   s    r   Úis_venvzPythonInfo.is_venvÙ   rÑ   r   Nc                óÒ   — | j         |         }|€| j        }n0| j                             ¦   «         }|                     |¦  «         |} |j        di |¤Ž                     d|¦  «        S )Nú/r   )r~   rˆ   r�   r„   ÚformatÚreplace)rA   rª   r§   r©   ÚpatternÚbases         r   rŠ   zPythonInfo.sysconfig_pathÝ   st   € ØÔ& sÔ+ˆØð 	ØÔ,ˆJˆJàÔ&×+Ò+Ñ-Ô-ˆDØ�KŠK˜
Ñ#Ô#Ð#ØˆJØˆwŒ~Ð+Ð+ 
Ð+Ð+×3Ò3°C¸Ñ=Ô=Ð=r   Fc                óf   — | j         �|du r ddlm} |                     | ¦  «        | _         | j         S )NTr   )ÚCreatorSelector)rŽ   Úvirtualenv.run.plugin.creatorsrÛ   Úfor_interpreter)rA   ÚrefreshrÛ   s      r   ÚcreatorszPythonInfo.creatorsç   sH   € ØŒ>ð 	C W° _ð 	CØFÐFÐFÐFÐFÐFà,×<Ò<¸TÑBÔBˆDŒNØŒ~Ðr   c                ó¤  ‡ — ‰                       dˆ fd„‰ j                             ¦   «         D ¦   «         ¦  «        }t          j                             |¦  «        svt          j                             ‰ j        t          j                             ‰  	                    d¦  «        ¦  «        ¦  «        }t          j                             |¦  «        r|}|S )NÚincludec                ób   •— i | ]+\  }}||�!|                      ‰j        ¦  «        r‰j        n|“Œ,S r"   rZ   r]   s      €r   rB   z-PythonInfo.system_include.<locals>.<dictcomp>ò   sP   ø€ ð ð ð á�A�qð ¨!Ð\¸A¿LºLÈÌÑ<UÔ<UÐ\�DÔ&Ð&Ð[\ðð ð r   Úheaders)
rŠ   rˆ   r‰   r   r#   r¡   r›   r/   r¢   r¬   )rA   r#   Úfallbacks   `  r   Úsystem_includezPythonInfo.system_includeî   s¼   ø€ à×"Ò"Øðð ð ð à Ô/×5Ò5Ñ7Ô7ðñ ô ñ
ô 
ˆõ Œw�~Š~˜dÑ#Ô#ð 	 å”w—|’| D¤Kµ´·²À×ARÒARÐS\ÑA]ÔA]Ñ1^Ô1^Ñ_Ô_ˆHÝŒw�~Š~˜hÑ'Ô'ð  Ø�Øˆr   c                ó,   — | j         p| j        p| j        S r"   )r1   r0   r/   rÇ   s    r   r\   zPythonInfo.system_prefixþ   s   € àÔÐB 4Ô#3ÐB°t´{ÐBr   c                ó,   — | j         p| j        p| j        S r"   )r1   r2   r3   rÇ   s    r   Úsystem_exec_prefixzPythonInfo.system_exec_prefix  s   € àÔÐL 4Ô#8ÐL¸DÔ<LÐLr   rÄ   c                ó„   — d                      | j        j        d„ | j                             ¦   «         D ¦   «         ¦  «        S )Nz{}({!r})c                óD   — i | ]\  }}|                      d ¦  «        °||“ŒS )Ú_)r[   rO   s      r   rB   z'PythonInfo.__repr__.<locals>.<dictcomp>	  s/   € ÐMÐMÐM‘d�a˜¸1¿<º<ÈÑ;LÔ;LÐMˆQ�ÐMÐMÐMr   )rÖ   Ú	__class__Ú__name__Ú__dict__r‰   rÇ   s    r   Ú__repr__zPythonInfo.__repr__  sA   € Ø× Ò ØŒNÔ#ØMÐM˜dœm×1Ò1Ñ3Ô3ÐMÑMÔMñ
ô 
ð 	
r   c                óz  — d                      | j        j        d                     d„ d| j        f| j        �| j        | j        k    rdnd | j        f| j        | j        | j        hvrdnd | j        fd| j        fd| j        fd	t          | j
        ¦  «        fd
| j        › d| j        › �ffD ¦   «         ¦  «        ¦  «        S )Nz{}({})z, c              3  ó.   K  — | ]\  }}|®|› d|› �V — Œd S )Nú=r   rO   s      r   rT   z%PythonInfo.__str__.<locals>.<genexpr>  sL   è è € ð ð á�A�qð& ð+Ø�
�
�q�
�
ðð ð ð ð ð r   ÚspecÚsystemÚoriginalrœ   rc   rm   Úencoding_fs_ioú-)rÖ   rì   rí   r›   ró   rt   rq   rr   rc   Úreprrm   ry   r{   rÇ   s    r   Ú__str__zPythonInfo.__str__  s  € Ø�ŠØŒNÔ#Ø�IŠIð ð ð ˜TœYÐ'ð  Ô1ð"ØBFÔBXÐ\`Ô\kÒBkð"˜˜à!ØÔ.ð	ð  Ô3¸DÔ<RÐTXÔTcÐ;dÐdð"˜
˜
à!ØÔ0ð	ð ˜DœOÐ,Ø ¤Ð/Ø¥ T¤\Ñ 2Ô 2Ð3Ø%¨$Ô*CÐ'\Ð'\ÀdÔFZÐ'\Ð'\Ð]ð#ðñ ô ñ ô ñ
ô 
ð 	
r   c                óœ   — d                      | j        d                     d„ | j        D ¦   «         ¦  «        | j        rdnd| j        ¦  «        S )Nz	{}{}{}-{}r    c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r"   rÃ   rK   s     r   rT   z"PythonInfo.spec.<locals>.<genexpr>,  s(   è è € Ð7Ð7 •S˜‘V”VÐ7Ð7Ð7Ð7Ð7Ð7r   Útr   )rÖ   re   r›   rh   ro   rk   rÇ   s    r   ró   zPythonInfo.spec(  sV   € à×!Ò!ØÔØ�HŠHÐ7Ð7 TÔ%6Ð7Ñ7Ô7Ñ7Ô7ØÔ%Ð-ˆCˆC¨2ØÔñ	
ô 
ð 	
r   c                óZ   — ddl m}  ||¦  «         | j                             ¦   «          d S )Nr   )Úclear)Ú#virtualenv.discovery.cached_py_inforþ   Ú_cache_exe_discovery)ÚclsÚapp_datarþ   s      r   Úclear_cachezPythonInfo.clear_cache1  s>   € ð 	>Ð=Ð=Ð=Ð=Ð=àˆˆh‰ŒˆØÔ ×&Ò&Ñ(Ô(Ð(Ð(Ð(r   c                ó
  — |j         rÈ| j        t          j                              |j         ¦  «        k    rdS |j        s’t          j                              | j        ¦  «        }|j         }t          j        dk    rOt          j          	                    |¦  «        \  }}| 
                    |¦  «        r|dt          |¦  «         …         }||k    rdS |r=|j        �6|j                             ¦   «         | j                             ¦   «         k    rdS |j        �|j        | j        k    rdS |j        �|j        | j        k    rdS t!          | j        dd…         |j        |j        |j        f¦  «        D ]\  }}|�|�	||k    r dS ŒdS )zXCheck if a given specification can be satisfied by the this python interpreter instance.TÚwin32NFr   rE   )r#   rq   r   r$   Úis_absÚbasenamerr   rb   rc   ÚsplitextÚendswithÚlenre   r   rk   ro   Úziprh   r   r	   r
   )rA   ró   Úimpl_must_matchr  Ú	spec_pathÚsuffixÚourÚreqs           r   Ú	satisfieszPythonInfo.satisfies9  sª  € àŒ9ð 	!ØŒ¥"¤'§/¢/°$´)Ñ"<Ô"<Ò<ð Ø�tØ”;ð 	!åœ7×+Ò+¨DÔ,DÑEÔE�Ø œI�	Ý”< 7Ò*ð >Ý')¤w×'7Ò'7¸Ñ'AÔ'AÑ$�H˜fØ ×)Ò)¨&Ñ1Ô1ð >Ø$-¨nµ°V±´°¨nÔ$=˜	Ø˜yÒ(ð !Ø ˜5ð ð	àÔ#ð	ð Ô#×)Ò)Ñ+Ô+¨tÔ/B×/HÒ/HÑ/JÔ/JÒJð	ð
 �5àÔð 	¨TÔ->À$ÔBSÒ-Sð 	Ø�5àÔð 	¨dÔ.@ÀDÔDVÒ.Vð 	Ø�5å˜DÔ-¨a°¨cÔ2°T´ZÀÄÈTÌZÐ4XÑYÔYð 	ð 	‰HˆC�Øð  3ð °s¸c²zð Ø�u�uøØˆtr   c                ón   — | j         €(|                      t          j        |dd¬¦  «        | _         | j         S )ú¼
        This locates the current host interpreter information. This might be different than what we run into in case
        the host python has been upgraded from underneath us.
        NTF©Úraise_on_errorÚresolve_to_host)Ú_currentÚfrom_exerb   rq   ©r  r  s     r   ÚcurrentzPythonInfo.current^  s6   € ð Œ<ð 	nØŸ<š<­¬¸ÐQUÐgl˜<ÑmÔmˆCŒLØŒ|Ðr   c                ón   — | j         €(|                      t          j        |dd¬¦  «        | _         | j         S )r  NTr  )Ú_current_systemr  rb   rq   r  s     r   Úcurrent_systemzPythonInfo.current_systemh  s9   € ð Ôð 	tØ"%§,¢,­s¬~¸xÐX\Ðnr ,Ñ"sÔ"sˆCÔØÔ"Ð"r   c                óR   — t          j        |                      ¦   «         d¬¦  «        S )NrD   )Úindent)ÚjsonÚdumpsÚ_to_dictrÇ   s    r   Ú_to_jsonzPythonInfo._to_jsonr  s   € åŒz˜$Ÿ-š-™/œ/°!Ð4Ñ4Ô4Ð4r   c                óx   ‡ — ˆ fd„t          ‰ ¦  «        D ¦   «         }|d                              ¦   «         |d<   |S )Nc                óB   •— i | ]}||d k    rt          ‰|¦  «        nd“ŒS )rŽ   N)rp   )r?   ÚvarrA   s     €r   rB   z'PythonInfo._to_dict.<locals>.<dictcomp>w  s4   ø€ Ð`Ð`Ð`Èc�¨C°;Ò,>ÐH•g˜d CÑ(Ô(Ð(ÀDÐ`Ð`Ð`r   rh   )ÚvarsÚ_asdict)rA   Údatas   ` r   r"  zPythonInfo._to_dictv  sF   ø€ Ø`Ð`Ð`Ð`ÕUYÐZ^ÑU_ÔU_Ð`Ñ`Ô`ˆà# NÔ3×;Ò;Ñ=Ô=ˆˆ^ÑØˆr   Tc                ó,  — ddl m} |€t          j        n|} || |||||¬¦  «        }t	          |t
          ¦  «        rW|rU	 |                     ||¦  «        }n=# t          $ r0}	|r‚ t           	                    d|j
        |	¦  «         d}Y d}	~	nd}	~	ww xY w|S )z9Given a path to an executable get the python information.r   )r  N)Úenvr  Úignore_cachez-ignore %s due cannot resolve system due to %r)rÿ   r  r   r   Ú
isinstancer   Ú_resolve_to_systemÚ	ExceptionÚLOGGERÚinforr   )
r  rœ   r  r  r,  r  r+  r  ÚproposedÚ	exceptions
             r   r  zPythonInfo.from_exe|  sÔ   € ð 	AÐ@Ð@Ð@Ð@Ð@àÐ0�bŒjˆj¨SˆØ�8˜C ¨3°CÈÐeqÐrÑrÔrˆå�h¥
Ñ+Ô+ð 	 °ð 	 ð Ø#×6Ò6°xÀÑJÔJ��øÝð  ð  ð  Ø!ð ØÝ—’ÐKÈXÔMiÐktÑuÔuÐuØ������øøøøð	 øøøð
 ˆs   Á A Á
BÁ!&BÂBc                óx   — t          j        |¦  «        }|                      |                     ¦   «         ¦  «        S r"   )r   ÚloadsÚ
_from_dictr�   )r  ÚpayloadÚraws      r   Ú
_from_jsonzPythonInfo._from_json—  s-   € õ Œj˜Ñ!Ô!ˆØ�~Š~˜cŸhšh™jœjÑ)Ô)Ð)r   c                óv   — t          di |d         ¤Ž|d<    | ¦   «         }|                     ¦   «         |_        |S )Nrh   r   )r   r�   rî   )r  r)  r«   s      r   r6  zPythonInfo._from_dict�  s>   € å*ÐBÐB¨T°.Ô-AÐBÐBˆˆ^ÑØ�‘”ˆØŸ)š)™+œ+ˆŒØˆr   c                ó  — |j         }t          ¦   «         }|j        �€8|j        p|j        p|j        }||v rút          |¦  «        dk    r(t                               d|¦  «         |j         |_        nät          | 
                    ¦   «         d¬¦  «        D ]%\  }\  }}t                               d|||¦  «         Œ&t                               dt          |¦  «        dz   ||¦  «         d                     d                     |                     ¦   «         ¦  «        ¦  «        }	t          |	¦  «        ‚|||<   |                     ||d¬¦  «        }|j        �®8|j         |j        k    r|                      |j        |¦  «        }||_         |S )	Nr.   z$%r links back to itself via prefixes)Ústartz%d: prefix=%s, info=%rz prefixes are causing a circle {}ú|F)r/   Úexact)rq   r   rt   r1   r0   r/   r
  r0  r1  Ú	enumerater‰   ÚerrorrÖ   r›   ÚkeysÚRuntimeErrorÚdiscover_exer  )
r  r  ÚtargetÚstart_executabler¦   r/   ÚatÚprü   Úmsgs
             r   r.  zPythonInfo._resolve_to_system¤  s‹  € à!Ô,ÐÝ‘=”=ˆØÔ&ñ 	OØÔ'ÐN¨6Ô+=ÐNÀÄˆFØ˜Ð!ð 
(Ý�x‘=”= AÒ%ð å—K’KÐ FÈÑOÔOÐOØ/5Ô/@�FÔ,ØÝ"+¨H¯NªNÑ,<Ô,<ÀAÐ"FÑ"FÔ"Fð Eð E‘J�B™˜˜AÝ—L’LÐ!9¸2¸qÀ!ÑDÔDÐDÐDÝ—’Ð5µs¸8±}´}ÀqÑ7HÈ&ÐRXÑYÔYÐYØ8×?Ò?ÀÇÂÈÏÊÉÌÑ@YÔ@YÑZÔZ�Ý" 3Ñ'Ô'Ð'Ø%ˆH�VÑØ×(Ò(¨¸&ÈÐ(ÑNÔNˆFð Ô&ñ 	Oð Ô Ô 8Ò8ð 	FØ—\’\ &Ô":¸HÑEÔEˆFØ,ˆÔØˆr   c           
     ó  — ||f}|| j         v r7|r5t                               d||| j         |         ¦  «         | j         |         S t                               d| |¦  «         |                      ¦   «         }|                      |¦  «        }g }|€t
          j        n|}|D ]3}	|D ].}
|                      ||	|
|||¦  «        }|�|| j         |<   |c c S Œ/Œ4|du r_|r]|                      || ¦  «        }t
          j	         
                    |¦  «        }|| j         |<   t                               d||¦  «         |S d                     d 
                    |¦  «        t
          j	         
                    |¦  «        ¦  «        }t          |¦  «        ‚)Nz)discover exe from cache %s - exact %s: %rzdiscover exe for %s in %sFzFno exact match found, chosen most similar of %s within base folders %szfailed to detect {} in {}r=  )r   r0  ÚdebugÚ_find_possible_exe_namesÚ_find_possible_foldersr   r   Ú
_check_exeÚ_select_most_likelyr   r›   rÖ   rB  )rA   r  r/   r>  r+  rª   Úpossible_namesÚpossible_foldersÚ
discoveredÚfolderrn   r1  ÚfoldersrH  s                 r   rC  zPythonInfo.discover_exe¾  s±  € Ø�eˆmˆØ�$Ô+Ð+ð 	2°ð 	2Ý�LŠLÐDÀfÈeÐUYÔUnÐorÔUsÑtÔtÐtØÔ,¨SÔ1Ð1Ý�ŠÐ0°$¸Ñ?Ô?Ð?à×6Ò6Ñ8Ô8ˆØ×6Ò6°vÑ>Ô>ÐØˆ
ØÐ0�bŒjˆj¨SˆØ&ð 	 ð 	 ˆFØ&ð  ð  �Ø—’ x°¸¸uÀjÐRUÑVÔV�Øð  Ø59�DÔ-¨cÑ2Ø�K�K�K�K�Kð ð ð
 �Eˆ>ð 	˜jð 	Ø×+Ò+¨J¸Ñ=Ô=ˆDÝ”j—o’oÐ&6Ñ7Ô7ˆGØ-1ˆDÔ% cÑ*Ý�LŠLÐaÐcgÐipÑqÔqÐqØˆKØ)×0Ò0°·²¸.Ñ1IÔ1IÍ2Ì:Ï?Ê?Ð[kÑKlÔKlÑmÔmˆÝ˜3ÑÔÐr   c                ó&  — t           j                             ||¦  «        }t           j                             |¦  «        sd S |                      ||dd|¬¦  «        }|€d S dD ]¬}	t          ||	¦  «        }
t          | |	¦  «        }|
|k    r„|	dk    r>d                     d„ |
D ¦   «         ¦  «        d                     d„ |D ¦   «         ¦  «        }}
|j        }t                               d||	|
|¦  «         |du r| 	                    |¦  «          nŒ­|S d S )	NF)r  r  r+  )re   rk   rh   rh   r    c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r"   rÃ   rK   s     r   rT   z(PythonInfo._check_exe.<locals>.<genexpr>ä  s(   è è € Ð.EÐ.E¸!­s°1©v¬vÐ.EÐ.EÐ.EÐ.EÐ.EÐ.Er   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r"   rÃ   rK   s     r   rT   z(PythonInfo._check_exe.<locals>.<genexpr>ä  s-   è è € ÐOiÐOiÐ[\ÕPSÐTUÑPVÔPVÐOiÐOiÐOiÐOiÐOiÐOir   z2refused interpreter %s because %s differs %s != %s)
r   r#   r›   r¡   r  rp   rq   r0  rJ  Úappend)rA   r  rR  rn   r>  rQ  r+  Úexe_pathr1  ÚitemÚfoundÚsearchedrq   s                r   rM  zPythonInfo._check_exeØ  s@  € Ý”7—<’< ¨Ñ-Ô-ˆÝŒw�~Š~˜hÑ'Ô'ð 	Ø�4Ø�}Š}˜X xÀÐW\Ðbeˆ}ÑfÔfˆØð 	Ø�4ØFð 	ð 	ˆDÝ˜D $Ñ'Ô'ˆEÝ˜t TÑ*Ô*ˆHØ˜Ò ð Ø˜>Ò)ð jØ&)§h¢hÐ.EÐ.E¸uÐ.EÑ.EÔ.EÑ&EÔ&EÀsÇxÂxÐOiÐOiÐ`hÐOiÑOiÔOiÑGiÔGi˜8�EØ!œ_�
Ý—’ÐQÐS]Ð_cÐejÐltÑuÔuÐuØ˜E�>ð ,Ø×%Ò% dÑ+Ô+Ð+Ø�ðð ˆKØˆtr   c                óB   ‡— ˆfd„}t          | |d¬¦  «        }|d         S )Nc                ó¤  •— | j         ‰j         k    | j        j        ‰j        j        k    | j        j        ‰j        j        k    | j        ‰j        k    | j        j        ‰j        j        k    | j        j        ‰j        j        k    | j        j        ‰j        j        k    g}t          d„ t          t          |¦  «        ¦  «        D ¦   «         ¦  «        S )Nc              3  ó.   K  — | ]\  }}|rd |z  ndV — ŒdS )r.   r   Nr   )r?   ÚposÚmatchs      r   rT   zBPythonInfo._select_most_likely.<locals>.sort_by.<locals>.<genexpr>þ  s3   è è € ÐaÐa±j°c¸5 EÐ0˜˜S™˜¨qÐaÐaÐaÐaÐaÐar   )re   rh   r   r	   rk   r
   r   r   Úsumr?  Úreversed)r1  ÚmatchesrD  s     €r   Úsort_byz/PythonInfo._select_most_likely.<locals>.sort_byò  s¼   ø€ ð Ô# vÔ'<Ò<ØÔ!Ô'¨6Ô+>Ô+DÒDØÔ!Ô'¨6Ô+>Ô+DÒDØÔ! VÔ%8Ò8ØÔ!Ô'¨6Ô+>Ô+DÒDØÔ!Ô.°&Ô2EÔ2RÒRØÔ!Ô(¨FÔ,?Ô,FÒFðˆGõ ÐaÐaÅIÍhÐW^ÑN_ÔN_ÑD`ÔD`ÐaÑaÔaÑaÔaÐar   T)rª   Úreverser   )Úsorted)rQ  rD  rd  Úsorted_discovereds    `  r   rN  zPythonInfo._select_most_likelyî  sC   ø€ ð	bð 	bð 	bð 	bð 	bõ # :°7ÀDÐIÑIÔIÐØ  Ô#Ð#r   c                óæ  — t          ¦   «         }t          ¦   «         }d |t          j                             | j        ¦  «        <   d || j        <   d |t          j                             | j        ¦  «        <   d || j        <   |D ]`}t          j                             |¦  «        }|                     | j        ¦  «        r%|t          | j        ¦  «        d …         }d ||› |› �<   Œad ||<   d„ |D ¦   «         S )Nc                óP   — g | ]#}t           j                             |¦  «        ¯!|‘Œ$S r   )r   r#   r¡   rK   s     r   rž   z5PythonInfo._find_possible_folders.<locals>.<listcomp>  s+   € ÐAÐAÐA�a­r¬w¯~ª~¸aÑ/@Ô/@ÐA�ÐAÐAÐAr   )
r   r   r#   Úrealpathrq   rr   r¢   r[   r/   r
  )rA   Úinside_folderÚcandidate_folderÚexecutablesrœ   rÙ   Úrelatives          r   rL  z!PythonInfo._find_possible_folders  sõ   € Ý&™=œ=ÐÝ!‘m”mˆØ9=ˆ•B”G×$Ò$ T¤_Ñ5Ô5Ñ6Ø'+ˆ�D”OÑ$ØBFˆ•B”G×$Ò$ TÔ%=Ñ>Ô>Ñ?Ø04ˆ�DÔ,Ñ-Øð 	Fð 	FˆCÝ”7—?’? 3Ñ'Ô'ˆDà�Š˜tœ{Ñ+Ô+ð FØ¥ D¤KÑ 0Ô 0Ð 2Ð 2Ô3�ØAEÐ  MÐ!=°8Ð!=Ð!=Ñ>øð +/Ð˜Ñ'ØAÐAÐ+ÐAÑAÔAÐAr   c           
     óŒ  — t          ¦   «         }|                      ¦   «         D ]�}dD ]|}d                     d„ | j        d |…         D ¦   «         ¦  «        }dg}| j        r|                     d¦  «         |D ],}d| j        › �dfD ]}t          D ]}|› |› |› |› |› �}	d ||	<   ŒŒŒ-Œ}Œ‚t          | 	                    ¦   «         ¦  «        S )N)rE   rD   r.   r   r    c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r"   rÃ   rK   s     r   rT   z6PythonInfo._find_possible_exe_names.<locals>.<genexpr>  s(   è è € Ð"JÐ"J¨a¥3 q¡6¤6Ð"JÐ"JÐ"JÐ"JÐ"JÐ"Jr   r   rü   r÷   )
r   Ú_possible_baser›   rh   ro   rW  rk   Ú
EXTENSIONSr   rA  )
rA   Úname_candidatern   rF  rm   ÚmodsÚmodÚarchÚextÚ	candidates
             r   rK  z#PythonInfo._find_possible_exe_names  s  € Ý$™œˆØ×'Ò'Ñ)Ô)ð 
	=ð 
	=ˆDØ"ð 	=ð 	=�ØŸ(š(Ð"JÐ"J°4Ô3DÀSÀbÀSÔ3IÐ"JÑ"JÔ"JÑJÔJ�Ø�t�ØÔ%ð %Ø—K’K Ñ$Ô$Ð$Øð =ð =�CØ!8 TÔ%6Ð!8Ð!8¸"Ð =ð =ð =˜Ý#-ð =ð =˜CØ+/Ð(J°Ð(J¸#Ð(J¸tÐ(JÀSÐ(JÐ(J˜IØ8<˜N¨9Ñ5Ð5ð=ð=ð=ð	=õ �N×'Ò'Ñ)Ô)Ñ*Ô*Ð*r   c              #  óÄ  K  — t          ¦   «         }t          j                             t          j                             | j        ¦  «        ¦  «        d                              t          ¦  «        }d ||<   d || j        <   d|v r|d= d |d<   |D ]R}| 	                    ¦   «         }|V — ddl
m}  |¦   «         r(||k    r|V — |                     ¦   «         }||k    r|V — ŒSd S )Nr   rŸ   )Úfs_is_case_sensitive)r   r   r#   r  r  rq   Úrstripr   re   r   Úvirtualenv.inforz  Úupper)rA   Úpossible_baser  rÙ   r   rz  r}  s          r   rq  zPythonInfo._possible_base$  s
  è è € Ý#™œˆÝ”7×#Ò#¥B¤G×$4Ò$4°T´_Ñ$EÔ$EÑFÔFÀqÔI×PÒPÕQWÑXÔXˆØ"&ˆ�hÑØ-1ˆ�dÔ)Ñ*à�}Ð$ð 	(Ø˜hÐ'Ø"&ˆ�hÑØ!ð 
	 ð 
	 ˆDØ—J’J‘L”LˆEØˆKˆKˆKØ<Ð<Ð<Ð<Ð<Ð<à#Ð#Ñ%Ô%ð  Ø˜5’=ð Ø�J�J�JØŸ
š
™œ�Ø˜D’=ð  Ø�K�K�Køð
	 ð 
	 r   )r   r   )F)r   rÄ   r"   )r   r   )NTFTN)TN)-rí   Ú
__module__Ú__qualname__Ú__doc__r•   rs   r¬   Ústaticmethodr€   ÚpropertyrÈ   rÌ   rÎ   rÐ   rÓ   r   r©   rŠ   rß   rå   r\   rè   rï   rù   ró   Úclassmethodr  r  r  r  r  r  r#  r"  r  r9  r6  r.  r   rC  rM  rN  rL  rK  rq  r   r   r   r   r   !   sZ  € € € € € Ø8Ð8ðað að að aðF(ð (ð (ð>ð ð ð ð_ð _ñ „\ð_ð0 ð@ð @ñ „Xð@ð ð@ð @ñ „Xð@ð ðBð Bñ „XðBð ð,ð ,ñ „Xð,ð ð,ð ,ñ „Xð,ð .2°r´vð >ð >ð >ð >ðð ð ð ð ðð ñ „Xðð ðCð Cñ „XðCð ðMð Mñ „XðMð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð8 ð
ð 
ñ „Xð
ð ð)ð )ñ „[ð)ð ð  ð  ðD €OØ€Hàðð ð ñ „[ðð ð#ð #ð #ð #ñ „[ð#ð5ð 5ð 5ðð ð ð ð ØØØØðð ð ñ „[ðð4 ð*ð *ñ „[ð*ð
 ðð ñ „[ðð ðð ñ „[ðð. Ðð ð  ð  ð  ð4ð ð ð, ð$ð $ñ „\ð$ð(Bð Bð Bð$+ð +ð +ð ð  ð  ð  ð  r   r   Ú__main__r.   r   rS   )#r�  Ú
__future__r   r   Úloggingr   rc   Úreri   rb   r;   r·   Úcollectionsr   r   Ústringr   r   Ú	getLoggerrí   r0  r   rr  Úcompiler…   r   Úargvr
  Ústart_cookieÚ
end_cookier#  r1  rz   Úwriter›   r   r   r   ú<module>r‘     s0  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð àˆj˜Ð(]Ð(]Ð(]Ñ^Ô^€Ø	ˆÔ	˜8Ñ	$Ô	$€ðfð fð fð "Ð!Ñ#Ô#€
ØˆrŒz˜*Ñ%Ô%€ðV ð V ð V ð V ð V ñ V ô V ð V ðr ˆzÒð Lð Œ8�A�B�BŒ<€Dà
€sˆ4�y„y�A‚~ð Ø˜A”wˆØ�A�B�BŒxˆˆàˆà
€sˆ4�y„y�A‚~ð Ø˜!”Wˆ
Ø�A�B�BŒxˆˆàˆ
àŒx˜˜˜Œ|˜dÑ"€C„Hàˆ:‰<Œ<× Ò Ñ"Ô"€DØ„J×Ò�R—W’W˜l¨4¨4¨R¨4Ô0°$¸
À4À4ÀRÀ4Ô8HÐIÑJÔJÑKÔKÐKÐKÐKð)Lð Lr   