§
    Á³glº  ã                   ó¦  — d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	m
Z
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mZ ddlmZ dd	lmZ  ej        ¦   «         d
k    rddlZddlmZ n G d„ d¦  «        Z e¦   «         Zd„ Zd„ ZdddddœZd„ Z d„ Z!d„ Z"d„ Z#d#d„Z$ G d„ d¦  «        Z% G d„ d¦  «        Z& G d„ d ¦  «        Z' G d!„ d"¦  «        Z(dS )$a›  
Improved support for Microsoft Visual C++ compilers.

Known supported compilers:
--------------------------
Microsoft Visual C++ 14.X:
    Microsoft Visual C++ Build Tools 2015 (x86, x64, arm)
    Microsoft Visual Studio Build Tools 2017 (x86, x64, arm, arm64)
    Microsoft Visual Studio Build Tools 2019 (x86, x64, arm, arm64)

This may also support compilers shipped with compatible Visual Studio versions.
é    N)Úopen)ÚlistdirÚpathsep)ÚjoinÚisfileÚisdirÚdirname)ÚLegacyVersion)Úunique_everseené   )Úget_unpatchedÚWindows)Úenvironc                   ó   — e Zd ZdZdZdZdZdS )ÚwinregN)Ú__name__Ú
__module__Ú__qualname__Ú
HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚHKEY_CLASSES_ROOT© ó    úM/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/setuptools/msvc.pyr   r   #   s'   € € € € € Øˆ
Ø ÐØ!ÐØ ÐÐÐr   r   c                  ó,  — 	 t          j        t           j        ddt           j        t           j        z  ¦  «        } n# t
          $ r Y dS w xY wd}d}| 5  t          j        ¦   «         D ]”}	 t          j        | |¦  «        \  }}}n# t
          $ r Y  nkw xY w|rd|t           j	        k    rTt          |¦  «        rE	 t          t          |¦  «        ¦  «        }n# t          t          f$ r Y Œ€w xY w|dk    r
||k    r||}}Œ•ddd¦  «         n# 1 swxY w Y   ||fS )ú0Python 3.8 "distutils/_msvccompiler.py" backportz'Software\Microsoft\VisualStudio\SxS\VC7r   ©NNNé   )r   ÚOpenKeyr   ÚKEY_READÚKEY_WOW64_32KEYÚOSErrorÚ	itertoolsÚcountÚ	EnumValueÚREG_SZr   ÚintÚfloatÚ
ValueErrorÚ	TypeError)ÚkeyÚbest_versionÚbest_dirÚiÚvÚvc_dirÚvtÚversions           r   Ú_msvc14_find_vc2015r4   ,   sœ  € ðÝŒnÝÔ%Ø6ØÝŒO�fÔ4Ñ4ñ	
ô 
ˆˆøõ ð ð ð Øˆzˆzðøøøð €LØ€HØ	ð =ð =Ý”Ñ"Ô"ð 	=ð 	=ˆAðÝ &Ô 0°°aÑ 8Ô 8‘��6˜2˜2øÝð ð ð Ø��ðøøøàð =�R�6œ=Ò(Ð(­U°6©]¬]Ð(ðÝ!¥%¨¡(¤(™mœm�G�GøÝ"¥IÐ.ð ð ð Ø�Hðøøøà˜b’=�= W¨|Ò%;Ð%;Ø-4°f (�Løð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð ˜Ð!Ð!si   ‚8; »
A	ÁA	ÁDÁ)BÂDÂ
BÂDÂBÂ$DÂ6CÃDÃC'Ã$DÃ&C'Ã'DÄDÄDc                  ó   — t          j        d¦  «        pt          j        d¦  «        } | sdS 	 t          j        t	          | ddd¦  «        ddd	d
dd
dddddg¦  «                             dd¬¦  «                             ¦   «         }n## t          j        t          t          f$ r Y dS w xY wt	          |ddd¦  «        }t          |¦  «        rd|fS dS )a€  Python 3.8 "distutils/_msvccompiler.py" backport

    Returns "15, path" based on the result of invoking vswhere.exe
    If no install is found, returns "None, None"

    The version is returned to avoid unnecessarily changing the function
    result. It may be ignored when the path is not None.

    If vswhere.exe is not available, by definition, VS 2017 is not
    installed.
    úProgramFiles(x86)ÚProgramFilesr   zMicrosoft Visual StudioÚ	Installerzvswhere.exez-latestz-prereleasez-requiresAnyz	-requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z)Microsoft.VisualStudio.Workload.WDExpressz	-propertyÚinstallationPathz	-productsÚ*ÚmbcsÚstrict)ÚencodingÚerrorsÚVCÚ	AuxiliaryÚBuildé   )r   ÚgetÚ
subprocessÚcheck_outputr   ÚdecodeÚstripÚCalledProcessErrorr#   ÚUnicodeDecodeErrorr   )ÚrootÚpaths     r   Ú_msvc14_find_vc2017rL   J   sþ   € õ Œ;Ð*Ñ+Ô+ÐJ­w¬{¸>Ñ/JÔ/J€DØð ØˆzðÝÔ&Ý�Ð0°+¸}ÑMÔMØØØØÐLØÐDØÐ+Ø˜ð	(
ñ 	ô 	÷ Š6˜6¨(ˆ6Ñ3Ô3·E²E±G´Gð 	ˆøõ Ô)­7Õ4FÐGð ð ð Øˆzˆzðøøøõ ��d˜K¨Ñ1Ô1€DÝˆT�{„{ð Ø�4ˆxˆàˆ:s   ®AB ÂB&Â%B&Úx86Úx64ÚarmÚarm64)rM   Ú	x86_amd64Úx86_armÚ	x86_arm64c                 óä  — t          ¦   «         \  }}d}| t          v rt          |          }nd| v rdnd}|rYt          |ddddd|d	d
¦	  «	        }	 ddl}|                     |d¬¦  «        d         }n# t          t
          t          f$ r d}Y nw xY w|s&t          ¦   «         \  }}|rt          |d|dd
¦  «        }|sdS t          |d¦  «        }t          |¦  «        sdS |rt          |¦  «        sd}||fS )r   NÚamd64rN   rM   z..ÚredistÚMSVCz**zMicrosoft.VC14*.CRTzvcruntime140.dllr   T)Ú	recursiveéÿÿÿÿzMicrosoft.VC140.CRTr   zvcvarsall.bat)	rL   ÚPLAT_SPEC_TO_RUNTIMEr   ÚglobÚImportErrorr#   ÚLookupErrorr4   r   )	Ú	plat_specÚ_r.   Ú	vcruntimeÚvcruntime_platÚvcredistr[   r-   Ú	vcvarsalls	            r   Ú_msvc14_find_vcvarsallrd   w   s]  € å%Ñ'Ô'�K€A€xØ€IàÕ(Ð(Ð(Ý-¨iÔ8ˆˆà")¨YÐ"6Ð"6˜˜¸Eˆàð Ý˜ $¨¨h¸ÀØ&Ð(=Ø*ñ,ô ,ˆð	ØˆKˆKˆKØŸ	š	 (°d˜	Ñ;Ô;¸BÔ?ˆIˆIøÝ�W¥kÐ2ð 	ð 	ð 	ØˆIˆIˆIð	øøøð ð HÝ!4Ñ!6Ô!6Ñˆ�hØð 	HÝ˜X x°Ø2Ð4FñHô HˆIð ð Øˆzå�X˜Ñ/Ô/€IÝ�)ÑÔð Øˆzàð �F 9Ñ-Ô-ð Øˆ	à�iÐÐs   Á!A/ Á/BÂ
Bc                 óJ  — dt           v rd„ t          j        ¦   «         D ¦   «         S t          | ¦  «        \  }}|st          j                             d¦  «        ‚	 t          j        d                     || ¦  «        t          j	        ¬¦  «         
                    dd¬¦  «        }nO# t          j        $ r=}t          j                             d	                     |j        ¦  «        ¦  «        |‚d
}~ww xY wd„ d„ |                     ¦   «         D ¦   «         D ¦   «         }|r||d<   |S )r   ÚDISTUTILS_USE_SDKc                 ó>   — i | ]\  }}|                      ¦   «         |“ŒS r   ©Úlower)Ú.0r,   Úvalues      r   ú
<dictcomp>z&_msvc14_get_vc_env.<locals>.<dictcomp>¡   s6   € ð 
ð 
ð 
á��Uð �IŠI‰KŒK˜ð
ð 
ð 
r   zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)Ústderrzutf-16leÚreplace)r>   zError executing {}Nc                 óH   — i | ]\  }}}|¯|¯
|                      ¦   «         |“Œ S r   rh   )rj   r,   r_   rk   s       r   rl   z&_msvc14_get_vc_env.<locals>.<dictcomp>¶   sH   € ð ð ð áˆC��Eàð	ð ð	Ø�	Š	‰Œ�Uðð ð r   c              3   ó@   K  — | ]}|                      d ¦  «        V — ŒdS )ú=N)Ú	partition)rj   Úlines     r   ú	<genexpr>z%_msvc14_get_vc_env.<locals>.<genexpr>¹   s.   è è € Ð:Ð: ˆ�Š˜Ñ	Ô	Ð:Ð:Ð:Ð:Ð:Ð:r   Úpy_vcruntime_redist)r   Úitemsrd   Ú	distutilsr>   ÚDistutilsPlatformErrorrD   rE   ÚformatÚSTDOUTrF   rH   ÚcmdÚ
splitlines)r^   rc   r`   ÚoutÚexcÚenvs         r   Ú_msvc14_get_vc_envr€   ž   sb  € à�gÐ%Ð%ð
ð 
å%œm™oœoð
ñ 
ô 
ð 	
õ
 2°)Ñ<Ô<Ñ€IˆyØð 
ÝÔ×5Ò5Ø*ñ
ô 
ð 	
ðÝÔ%Ø&×-Ò-¨i¸ÑCÔCÝÔ$ð
ñ 
ô 
÷ Š&� Iˆ&Ñ
.Ô
.ð 	ˆøõ Ô(ð ð ð ÝÔ×5Ò5Ø ×'Ò'¨¬Ñ0Ô0ñ
ô 
àð	øøøøðøøøð
ð ð 	;Ð:¨¯ªÑ)9Ô)9Ð:Ñ:Ô:ðñ ô €Cð ð /Ø%.ˆÐ!Ñ"Ø€Js   ÁA	B% Â%C1Â48C,Ã,C1c                 ó|   — 	 t          | ¦  «        S # t          j        j        $ r}t	          |d¦  «         ‚ d}~ww xY w)a*  
    Patched "distutils._msvccompiler._get_vc_env" for support extra
    Microsoft Visual C++ 14.X compilers.

    Set environment without use of "vcvarsall.bat".

    Parameters
    ----------
    plat_spec: str
        Target architecture.

    Return
    ------
    dict
        environment
    ç      ,@N)r€   rw   r>   rx   Ú_augment_exception)r^   r~   s     r   Úmsvc14_get_vc_envr„   Â   sM   € ð&Ý! )Ñ,Ô,Ð,øÝÔÔ2ð ð ð Ý˜3 Ñ%Ô%Ð%Øøøøøðøøøs   ‚ ‘;¥6¶;c                  óÒ   — dt           j        v r@ddl}t          |j        ¦  «        t          d¦  «        k     r |j        j        j        | i |¤ŽS  t          t          ¦  «        | i |¤ŽS )z¦
    Patched "distutils._msvccompiler.gen_lib_options" for fix
    compatibility between "numpy.distutils" and "distutils._msvccompiler"
    (for Numpy < 1.11.2)
    znumpy.distutilsr   Nz1.11.2)
ÚsysÚmodulesÚnumpyr
   Ú__version__rw   Ú	ccompilerÚgen_lib_optionsr   Úmsvc14_gen_lib_options)ÚargsÚkwargsÚnps      r   rŒ   rŒ   Ü   su   € ð �CœKÐ'Ð'ØÐÐÐÝ˜œÑ(Ô(­=¸Ñ+BÔ+BÒBÐBØ9�2”<Ô)Ô9¸4ÐJÀ6ÐJÐJÐJØ0�=Õ/Ñ0Ô0°$ÐA¸&ÐAÐAÐAr   Ú c                 óz  — | j         d         }d|                     ¦   «         v sd|                     ¦   «         v ryd} |j        di t          ¦   «         ¤Ž}d}|dk    r7|                     ¦   «                              d¦  «        dk    r|d	z  }n%|d
z  }n|dk    r|dz  }||dz  z  }n|dk    r|dz  }|f| _         dS )zl
    Add details to the exception message to help guide the user
    as to what action will resolve it.
    r   rc   zvisual cz;Microsoft Visual C++ {version:0.1f} or greater is required.z-www.microsoft.com/download/details.aspx?id=%dç      "@Úia64rY   z( Get it with "Microsoft Windows SDK 7.0"z% Get it from http://aka.ms/vcpython27ç      $@z* Get it with "Microsoft Windows SDK 7.1": iW   r‚   zd Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/Nr   )r�   ri   ry   ÚlocalsÚfind)r~   r3   ÚarchÚmessageÚtmplÚ
msdownloads         r   rƒ   rƒ   é   sí   € ð Œh�qŒk€Gà�g—m’m‘o”oÐ%Ð%¨°w·}²}±´Ð)FÐ)FàLˆØ�$”+Ð)Ð)¥¡¤Ð)Ð)ˆØDˆ
Ø�cŠ>ˆ>Ø�zŠz‰|Œ|× Ò  Ñ(Ô(¨2Ò-Ð-ð ÐEÑE��ð
 ÐBÑB��Ø˜Š_ˆ_àÐCÑCˆGØ�z DÑ(Ñ(ˆGˆGØ˜Š_ˆ_àð 4ñ 5ˆGð ˆ{€C„H€H€Hr   c                   ó˜   — e Zd ZdZ ej        dd¦  «                             ¦   «         Zd„ Ze	d„ ¦   «         Z
d„ Zd„ Zdd	„Zdd
„Zdd„ZdS )ÚPlatformInfoz�
    Current and Target Architectures information.

    Parameters
    ----------
    arch: str
        Target architecture.
    Úprocessor_architecturer�   c                 ó`   — |                      ¦   «                              dd¦  «        | _        d S )NrN   rU   )ri   rn   r—   )Úselfr—   s     r   Ú__init__zPlatformInfo.__init__  s%   € Ø—J’J‘L”L×(Ò(¨°Ñ8Ô8ˆŒ	ˆ	ˆ	r   c                 óV   — | j         | j                              d¦  «        dz   d…         S )zs
        Return Target CPU architecture.

        Return
        ------
        str
            Target CPU
        r_   r   N)r—   r–   ©rŸ   s    r   Ú
target_cpuzPlatformInfo.target_cpu  s*   € ð Œy˜œŸš¨Ñ,Ô,¨qÑ0Ð1Ð1Ô2Ð2r   c                 ó   — | j         dk    S )z‡
        Return True if target CPU is x86 32 bits..

        Return
        ------
        bool
            CPU is x86 32 bits
        rM   ©r£   r¢   s    r   Útarget_is_x86zPlatformInfo.target_is_x86(  s   € ð Œ %Ò'Ð'r   c                 ó   — | j         dk    S )zˆ
        Return True if current CPU is x86 32 bits..

        Return
        ------
        bool
            CPU is x86 32 bits
        rM   ©Úcurrent_cpur¢   s    r   Úcurrent_is_x86zPlatformInfo.current_is_x863  s   € ð Ô 5Ò(Ð(r   Fc                 óR   — | j         dk    r|rdn| j         dk    r|rdn	d| j         z  S )uk  
        Current platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not 'Â†' if architecture is x86.
        x64: bool
            return 'd' and not 'md64' if architecture is amd64.

        Return
        ------
        str
            subfolder: '	arget', or '' (see hidex86 parameter)
        rM   r�   rU   ú\x64ú\%sr¨   ©rŸ   Úhidex86rN   s      r   Úcurrent_dirzPlatformInfo.current_dir>  sB   € ð" Ô# uÒ,Ð,°Ð,ˆBˆBØÔ(¨GÒ3Ð3¸Ð3ˆGˆGØ�TÔ%Ñ%ð	
r   c                 óR   — | j         dk    r|rdn| j         dk    r|rdn	d| j         z  S )ar  
        Target platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '\x86' if architecture is x86.
        x64: bool
            return '\x64' and not '\amd64' if architecture is amd64.

        Return
        ------
        str
            subfolder: '\current', or '' (see hidex86 parameter)
        rM   r�   rU   r¬   r­   r¥   r®   s      r   Ú
target_dirzPlatformInfo.target_dirT  s?   € ð" ”? eÒ+Ð+°Ð+ˆBˆBØœ¨7Ò2Ð2°sÐ2ˆGˆGØ�T”_Ñ$ð	
r   c                 óˆ   — |rdn| j         }| j        |k    rdn*|                      ¦   «                              dd|z  ¦  «        S )ap  
        Cross platform specific subfolder.

        Parameters
        ----------
        forcex86: bool
            Use 'x86' as current architecture even if current architecture is
            not x86.

        Return
        ------
        str
            subfolder: '' if target architecture is current architecture,
            '\current_target' if not.
        rM   r�   ú\z\%s_)r©   r£   r²   rn   )rŸ   Úforcex86Úcurrents      r   Ú	cross_dirzPlatformInfo.cross_dirj  sM   € ð  $Ð9�%�%¨Ô)9ˆà”/ WÒ,Ð,ˆBˆBØ�OŠOÑÔ×%Ò% d¨G°gÑ,=Ñ>Ô>ð	
r   N)FF©F)r   r   r   Ú__doc__r   rC   ri   r©   r    Úpropertyr£   r¦   rª   r°   r²   r·   r   r   r   rœ   rœ     sÄ   € € € € € ðð ð �'”+Ð6¸Ñ;Ô;×AÒAÑCÔC€Kð9ð 9ð 9ð ð	3ð 	3ñ „Xð	3ð	(ð 	(ð 	(ð	)ð 	)ð 	)ð
ð 
ð 
ð 
ð,
ð 
ð 
ð 
ð,
ð 
ð 
ð 
ð 
ð 
r   rœ   c                   ó   — e Zd ZdZej        ej        ej        ej        fZ	d„ Z
ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zdd„Zd„ ZdS )ÚRegistryInfozŸ
    Microsoft Visual Studio related registry information.

    Parameters
    ----------
    platform_info: PlatformInfo
        "PlatformInfo" instance.
    c                 ó   — || _         d S ©N)Úpi)rŸ   Úplatform_infos     r   r    zRegistryInfo.__init__�  s   € ØˆŒˆˆr   c                 ó   — dS )z€
        Microsoft Visual Studio root registry key.

        Return
        ------
        str
            Registry key
        ÚVisualStudior   r¢   s    r   ÚvisualstudiozRegistryInfo.visualstudio’  s	   € ð ˆ~r   c                 ó,   — t          | j        d¦  «        S )z
        Microsoft Visual Studio SxS registry key.

        Return
        ------
        str
            Registry key
        ÚSxS)r   rÃ   r¢   s    r   ÚsxszRegistryInfo.sxsž  s   € õ �DÔ% uÑ-Ô-Ð-r   c                 ó,   — t          | j        d¦  «        S )z|
        Microsoft Visual C++ VC7 registry key.

        Return
        ------
        str
            Registry key
        ÚVC7©r   rÆ   r¢   s    r   ÚvczRegistryInfo.vcª  ó   € õ �D”H˜eÑ$Ô$Ð$r   c                 ó,   — t          | j        d¦  «        S )z
        Microsoft Visual Studio VS7 registry key.

        Return
        ------
        str
            Registry key
        ÚVS7rÉ   r¢   s    r   ÚvszRegistryInfo.vs¶  rË   r   c                 ó   — dS )zƒ
        Microsoft Visual C++ for Python registry key.

        Return
        ------
        str
            Registry key
        zDevDiv\VCForPythonr   r¢   s    r   Úvc_for_pythonzRegistryInfo.vc_for_pythonÂ  s
   € ð %Ð$r   c                 ó   — dS )zq
        Microsoft SDK registry key.

        Return
        ------
        str
            Registry key
        zMicrosoft SDKsr   r¢   s    r   Úmicrosoft_sdkzRegistryInfo.microsoft_sdkÎ  s
   € ð  Ðr   c                 ó,   — t          | j        d¦  «        S )z‚
        Microsoft Windows/Platform SDK registry key.

        Return
        ------
        str
            Registry key
        r   ©r   rÒ   r¢   s    r   Úwindows_sdkzRegistryInfo.windows_sdkÚ  s   € õ �DÔ&¨	Ñ2Ô2Ð2r   c                 ó,   — t          | j        d¦  «        S )z€
        Microsoft .NET Framework SDK registry key.

        Return
        ------
        str
            Registry key
        ÚNETFXSDKrÔ   r¢   s    r   Ú	netfx_sdkzRegistryInfo.netfx_sdkæ  s   € õ �DÔ&¨
Ñ3Ô3Ð3r   c                 ó   — dS )z€
        Microsoft Windows Kits Roots registry key.

        Return
        ------
        str
            Registry key
        zWindows Kits\Installed Rootsr   r¢   s    r   Úwindows_kits_rootszRegistryInfo.windows_kits_rootsò  s
   € ð /Ð.r   Fc                 ód   — | j                              ¦   «         s|rdnd}t          d|d|¦  «        S )a  
        Return key in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        x86: str
            Force x86 software registry.

        Return
        ------
        str
            Registry key
        r�   ÚWow6432NodeÚSoftwareÚ	Microsoft)r¿   rª   r   )rŸ   r,   rM   Únode64s       r   Ú	microsoftzRegistryInfo.microsoftþ  s9   € ð  ”w×-Ò-Ñ/Ô/ÐI°3ÐI��¸MˆÝ�J ¨°SÑ9Ô9Ð9r   c           	      ó:  — t           j        }t           j        }t           j        }| j        }| j        D ]ç}d}	  || ||¦  «        d|¦  «        }nd# t          t          f$ rP | j         	                    ¦   «         s2	  || ||d¦  «        d|¦  «        }n# t          t          f$ r Y Y Œuw xY wY Œ{Y nw xY w	 t          j
        ||¦  «        d         |r ||¦  «         c S c S # t          t          f$ r Y nw xY w	 |r ||¦  «         ŒÕ# |r ||¦  «         w w xY wdS )a  
        Look for values in registry in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        name: str
            Value name to find.

        Return
        ------
        str
            value
        Nr   T)r   r!   r    ÚCloseKeyrà   ÚHKEYSr#   ÚIOErrorr¿   rª   ÚQueryValueEx)	rŸ   r,   ÚnameÚkey_readÚopenkeyÚclosekeyÚmsÚhkeyÚbkeys	            r   ÚlookupzRegistryInfo.lookup  s�  € õ  ”?ˆÝ”.ˆÝ”?ˆØŒ^ˆØ”Jð 	#ð 	#ˆDØˆDð	Ø�w˜t R R¨¡W¤W¨a°Ñ:Ô:��øÝ�WÐ%ð ð ð Ø”w×-Ò-Ñ/Ô/ð ð!Ø&˜w t¨R¨R°°T©]¬]¸A¸xÑHÔH˜˜øÝ#¥WÐ-ð !ð !ð !Ø ˜˜ð!øøøð �Hð	 ˜ðøøøð#ÝÔ*¨4°Ñ6Ô6°qÔ9ð ð #Ø�H˜T‘N”N�N�N�N�Nð#ð #ð #øõ �WÐ%ð ð ð Ø�ðøøøØàð #Ø�H˜T‘N”N�Nøøð ð #Ø�H˜T‘N”N�N�Nð#øøøð#	#ð 	#sY   ¸AÁ*B1Á;BÂB1ÂB)Â%B1Â(B)Â)B1Â0B1Â5C"Ã"C6Ã3DÃ5C6Ã6DÄDNr¸   )r   r   r   r¹   r   r   r   r   r   rã   r    rº   rÃ   rÆ   rÊ   rÎ   rÐ   rÒ   rÕ   rØ   rÚ   rà   rí   r   r   r   r¼   r¼   �  sd  € € € € € ðð ð ÔØÔ%ØÔ&ØÔ%ð'€Eð
 ð  ð  ð ð	ð 	ñ „Xð	ð ð	.ð 	.ñ „Xð	.ð ð	%ð 	%ñ „Xð	%ð ð	%ð 	%ñ „Xð	%ð ð	%ð 	%ñ „Xð	%ð ð	 ð 	 ñ „Xð	 ð ð	3ð 	3ñ „Xð	3ð ð	4ð 	4ñ „Xð	4ð ð	/ð 	/ñ „Xð	/ð:ð :ð :ð :ð&&#ð &#ð &#ð &#ð &#r   r¼   c                   ó  — e Zd ZdZ ej        dd¦  «        Z ej        dd¦  «        Z ej        de¦  «        Zdd„Z	d„ Z
d	„ Zd
„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z d„ Z!ed d„¦   «         Z"dS )!Ú
SystemInfozê
    Microsoft Windows and Visual Studio related system information.

    Parameters
    ----------
    registry_info: RegistryInfo
        "RegistryInfo" instance.
    vc_ver: float
        Required Microsoft Visual C++ version.
    ÚWinDirr�   r7   r6   Nc                 ó¬   — || _         | j         j        | _        |                      ¦   «         | _        |p|                      ¦   «         x| _        | _        d S r¾   )Úrir¿   Úfind_programdata_vs_versÚknown_vs_pathsÚ_find_latest_available_vs_verÚvs_verÚvc_ver)rŸ   Úregistry_infor÷   s      r   r    zSystemInfo.__init__L  sO   € ØˆŒØ”'”*ˆŒà"×;Ò;Ñ=Ô=ˆÔð Ð:�d×8Ò8Ñ:Ô:ð	<ˆŒ�d”k�k�kr   c                 óö   — |                       ¦   «         }|s&| j        st          j                             d¦  «        ‚t          |¦  «        }|                     | j        ¦  «         t          |¦  «        d         S )zm
        Find the latest VC version

        Return
        ------
        float
            version
        z%No Microsoft Visual C++ version foundrY   )Úfind_reg_vs_versrô   rw   r>   rx   ÚsetÚupdateÚsorted)rŸ   Úreg_vc_versÚvc_verss      r   rõ   z(SystemInfo._find_latest_available_vs_verV  sz   € ð ×+Ò+Ñ-Ô-ˆàð 	9˜tÔ2ð 	9ÝÔ"×9Ò9Ø7ñ9ô 9ð 9õ �kÑ"Ô"ˆØ�Š�tÔ*Ñ+Ô+Ð+Ý�g‰Œ˜rÔ"Ð"r   c           
      óÀ  — | j         j        }| j         j        | j         j        | j         j        f}g }t          j        | j         j        |¦  «        D �]~\  }}	 t          j	        | ||¦  «        dt          j
        ¦  «        }n# t          t          f$ r Y ŒEw xY w|5  t          j        |¦  «        \  }}}	t          |¦  «        D ]t}
t          j        t"          ¦  «        5  t%          t          j        ||
¦  «        d         ¦  «        }||vr|                     |¦  «         ddd¦  «         n# 1 swxY w Y   Œut          |¦  «        D ]n}
t          j        t"          ¦  «        5  t%          t          j        ||
¦  «        ¦  «        }||vr|                     |¦  «         ddd¦  «         n# 1 swxY w Y   Œo	 ddd¦  «         n# 1 swxY w Y   �Œ€t-          |¦  «        S )z˜
        Find Microsoft Visual Studio versions available in registry.

        Return
        ------
        list of float
            Versions
        r   N)rò   rà   rÊ   rÐ   rÎ   r$   Úproductrã   r   r    r!   r#   rä   ÚQueryInfoKeyÚrangeÚ
contextlibÚsuppressr*   r)   r&   ÚappendÚEnumKeyrý   )rŸ   rê   ÚvckeysÚvs_versrë   r,   rì   ÚsubkeysÚvaluesr_   r/   Úvers               r   rú   zSystemInfo.find_reg_vs_versi  s�  € ð ŒWÔˆØ”'”*˜dœgÔ3°T´W´ZÐ@ˆØˆÝ"Ô*¨4¬7¬=¸&ÑAÔAð 	0ñ 	0‰IˆD�#ðÝ”~ d¨B¨B¨s©G¬G°Q½¼ÑHÔH��øÝ�WÐ%ð ð ð Ø�ðøøøàð 0ð 0Ý%+Ô%8¸Ñ%>Ô%>Ñ"�˜ Ý˜v™œð 0ð 0�AÝ#Ô,­ZÑ8Ô8ð 0ð 0Ý#¥FÔ$4°T¸1Ñ$=Ô$=¸aÔ$@ÑAÔA˜Ø gÐ-Ð-Ø#ŸNšN¨3Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øõ ˜w™œð 0ð 0�AÝ#Ô,­ZÑ8Ô8ð 0ð 0Ý#¥F¤N°4¸Ñ$;Ô$;Ñ<Ô<˜Ø gÐ-Ð-Ø#ŸNšN¨3Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øð0ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ùõ �g‰ŒÐsn   Á*BÂBÂBÂAGÃAD-	Ä!GÄ-D1Ä1GÄ4D1Ä5.GÅ#<F+	ÆGÆ+F/Æ/GÆ2F/Æ3GÇG	ÇG	c                 óÌ  — i }d}	 t          |¦  «        }n# t          t          f$ r |cY S w xY w|D ]²}	 t          ||d¦  «        }t	          |dd¬¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |d         }t          t          |d¦  «        ¦  «         |||                      |d	         ¦  «        <   Œ–# t          t          t          f$ r Y Œ¯w xY w|S )
zé
        Find Visual studio 2017+ versions from information in
        "C:\ProgramData\Microsoft\VisualStudio\Packages\_Instances".

        Return
        ------
        dict
            float version as key, path as value.
        z9C:\ProgramData\Microsoft\VisualStudio\Packages\_Instancesz
state.jsonÚrtzutf-8)r=   Nr9   úVC\Tools\MSVCÚinstallationVersion)	r   r#   rä   r   r   ÚjsonÚloadÚ_as_float_versionÚKeyError)	rŸ   Úvs_versionsÚinstances_dirÚhashed_namesræ   Ú
state_pathÚ
state_fileÚstateÚvs_paths	            r   ró   z#SystemInfo.find_programdata_vs_versˆ  st  € ð ˆàHð 	ð	Ý" =Ñ1Ô1ˆLˆLøå�Ð!ð 	ð 	ð 	àÐÐÐð	øøøð !ð 	ð 	ˆDðå! -°°|ÑDÔD�
Ý˜* d°WÐ=Ñ=Ô=ð 2ÀÝ œI jÑ1Ô1�Eð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2àÐ 2Ô3�õ �˜WÐ&6Ñ7Ô7Ñ8Ô8Ð8ð 6=ð ˜D×2Ò2ØÐ/Ô0ñ2ô 2ñ 3ð 3øõ �W¥hÐ/ð ð ð à�ðøøøð ÐsB   † –,«,´#CÁA8Á,CÁ8A<	Á<CÁ?A<	Â ACÃC!Ã C!c                 ó|   — t          d                     |                      d¦  «        dd…         ¦  «        ¦  «        S )zç
        Return a string version as a simplified float version (major.minor)

        Parameters
        ----------
        version: str
            Version.

        Return
        ------
        float
            version
        ú.Né   )r)   r   Úsplit)r3   s    r   r  zSystemInfo._as_float_version²  s3   € õ �S—X’X˜gŸmšm¨CÑ0Ô0°°!°Ô4Ñ5Ô5Ñ6Ô6Ð6r   c                 óš   — t          | j        d| j        z  ¦  «        }| j                             | j        j        d| j        z  ¦  «        p|S )zp
        Microsoft Visual Studio directory.

        Return
        ------
        str
            path
        zMicrosoft Visual Studio %0.1fú%0.1f)r   ÚProgramFilesx86rö   rò   rí   rÎ   )rŸ   Údefaults     r   ÚVSInstallDirzSystemInfo.VSInstallDirÃ  sL   € õ �tÔ+Ø6¸¼ÑDñFô Fˆð Œw�~Š~˜dœgœj¨'°D´KÑ*?Ñ@Ô@ÐKÀGÐKr   c                 ó¶   — |                       ¦   «         p|                      ¦   «         }t          |¦  «        s!d}t          j                             |¦  «        ‚|S )zm
        Microsoft Visual C++ directory.

        Return
        ------
        str
            path
        z(Microsoft Visual C++ directory not found)Ú	_guess_vcÚ_guess_vc_legacyr   rw   r>   rx   )rŸ   rK   Úmsgs      r   ÚVCInstallDirzSystemInfo.VCInstallDirÔ  sS   € ð �~Š~ÑÔÐ: 4×#8Ò#8Ñ#:Ô#:ˆå�T‰{Œ{ð 	?Ø<ˆCÝÔ"×9Ò9¸#Ñ>Ô>Ð>àˆr   c                 óN  — | j         dk    rdS 	 | j        | j                  }n# t          $ r
 | j        }Y nw xY wt	          |d¦  «        }	 t          |¦  «        d         }|                      |¦  «        | _        t	          ||¦  «        S # t          t          t          f$ r Y dS w xY w)zl
        Locate Visual C++ for VS2017+.

        Return
        ------
        str
            path
        r‚   r�   r  rY   )rö   rô   r  r$  r   r   r  r÷   r#   rä   Ú
IndexError)rŸ   Úvs_dirÚguess_vcr÷   s       r   r&  zSystemInfo._guess_vcæ  sÊ   € ð Œ;˜$ÒÐØ�2ð	'àÔ(¨¬Ô5ˆFˆFøÝð 	'ð 	'ð 	'àÔ&ˆFˆFˆFð	'øøøõ ˜Ð 0Ñ1Ô1ˆð	å˜XÑ&Ô& rÔ*ˆFØ×0Ò0°Ñ8Ô8ˆDŒKÝ˜ &Ñ)Ô)Ð)øÝ�¥*Ð-ð 	ð 	ð 	Ø�2�2ð	øøøs   �" ¢6µ6Á
>B	 Â	B$Â#B$c                 ó<  — t          | j        d| j        z  ¦  «        }t          | j        j        d| j        z  ¦  «        }| j                             |d¦  «        }|rt          |d¦  «        n|}| j                             | j        j        d| j        z  ¦  «        p|S )z{
        Locate Visual C++ for versions prior to 2017.

        Return
        ------
        str
            path
        z Microsoft Visual Studio %0.1f\VCr!  Ú
installdirr?   )r   r"  rö   rò   rÐ   rí   rÊ   )rŸ   r#  Úreg_pathÚ	python_vcÚ
default_vcs        r   r'  zSystemInfo._guess_vc_legacy  s—   € õ �tÔ+Ø:¸T¼[ÑHñJô Jˆõ ˜œÔ-¨w¸¼Ñ/DÑEÔEˆØ”G—N’N 8¨\Ñ:Ô:ˆ	Ø.7ÐD•T˜) TÑ*Ô*Ð*¸Wˆ
ð Œw�~Š~˜dœgœj¨'°D´KÑ*?Ñ@Ô@ÐNÀJÐNr   c                 óˆ   — | j         dk    rdS | j         dk    rdS | j         dk    rdS | j         dk    rdS | j         d	k    rd
S dS )z—
        Microsoft Windows SDK versions for specified MSVC++ version.

        Return
        ------
        tuple of str
            versions
        r’   )z7.0z6.1z6.0ar”   )z7.1z7.0aç      &@)z8.0z8.0aç      (@)ú8.1z8.1ar‚   )z10.0r6  N©rö   r¢   s    r   ÚWindowsSdkVersionzSystemInfo.WindowsSdkVersion  sg   € ð Œ;˜#ÒÐØ'Ð'ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=ð !Ð r   c                 óR   — |                       t          | j        d¦  «        ¦  «        S )zt
        Microsoft Windows SDK last version.

        Return
        ------
        str
            version
        Úlib)Ú_use_last_dir_namer   ÚWindowsSdkDirr¢   s    r   ÚWindowsSdkLastVersionz SystemInfo.WindowsSdkLastVersion-  s%   € ð ×&Ò&¥t¨DÔ,>ÀÑ'FÔ'FÑGÔGÐGr   c                 óÖ  — d}| j         D ]>}t          | j        j        d|z  ¦  «        }| j                             |d¦  «        }|r nŒ?|rt          |¦  «        sOt          | j        j        d| j        z  ¦  «        }| j                             |d¦  «        }|rt          |d¦  «        }|rt          |¦  «        sR| j         D ]J}|d|                     d¦  «        …         }d	|z  }t          | j	        |¦  «        }t          |¦  «        r|}ŒK|rt          |¦  «        s5| j         D ]-}d
|z  }t          | j	        |¦  «        }t          |¦  «        r|}Œ.|st          | j
        d¦  «        }|S )zn
        Microsoft Windows SDK directory.

        Return
        ------
        str
            path
        r�   zv%sÚinstallationfolderr!  r/  ÚWinSDKNr  zMicrosoft SDKs\Windows Kits\%szMicrosoft SDKs\Windows\v%sÚPlatformSDK)r8  r   rò   rÕ   rí   r   rÐ   r÷   Úrfindr7   r)  )rŸ   Úsdkdirr  ÚlocrK   Úinstall_baseÚintverÚds           r   r<  zSystemInfo.WindowsSdkDir9  sœ  € ð ˆØÔ)ð 	ð 	ˆCå�t”wÔ*¨E°C©KÑ8Ô8ˆCØ”W—^’^ CÐ)=Ñ>Ô>ˆFØð Ø�ðàð 	6�U 6™]œ]ð 	6å˜œÔ-¨w¸¼Ñ/DÑEÔEˆDØœ7Ÿ>š>¨$°Ñ=Ô=ˆLØð 6Ý˜l¨HÑ5Ô5�Øð 	�U 6™]œ]ð 	àÔ-ð ð �Ø˜_˜cŸiši¨™nœn˜_Ô-�Ø8¸6ÑA�Ý˜Ô*¨DÑ1Ô1�Ý˜‘8”8ð Ø�FøØð 	�U 6™]œ]ð 	àÔ-ð ð �Ø4°sÑ:�Ý˜Ô*¨DÑ1Ô1�Ý˜‘8”8ð Ø�FøØð 	<å˜$Ô+¨]Ñ;Ô;ˆFØˆr   c                 óÆ  — | j         dk    rd}d}n-d}| j         dk    rdnd}| j                             d|¬¦  «        }d	||                     d
d¦  «        fz  }g }| j         dk    r)| j        D ]!}|t          | j        j        ||¦  «        gz  }Œ"| j        D ]$}|t          | j        j	        d|z  |¦  «        gz  }Œ%|D ]#}| j         
                    |d¦  «        }|r|c S Œ$dS )zy
        Microsoft Windows SDK executable directory.

        Return
        ------
        str
            path
        r4  é#   r�   é(   r5  TF)rN   r¯   zWinSDK-NetFx%dTools%sr´   ú-r‚   zv%sAr?  N)rö   r¿   r°   rn   ÚNetFxSdkVersionr   rò   rØ   r8  rÕ   rí   )	rŸ   Únetfxverr—   r¯   ÚfxÚregpathsr  rK   Úexecpaths	            r   ÚWindowsSDKExecutablePathz#SystemInfo.WindowsSDKExecutablePathd  s3  € ð Œ;˜$ÒÐØˆHØˆDˆDàˆHØ"œk¨TÒ1Ð1�d�d°uˆGØ”7×&Ò&¨4¸Ð&ÑAÔAˆDØ$¨°$·,²,¸tÀSÑ2IÔ2IÐ'JÑJˆð ˆØŒ;˜$ÒÐØÔ+ð ?ð ?�Ø�T $¤'Ô"3°S¸"Ñ=Ô=Ð>Ñ>��àÔ)ð 	Fð 	FˆCØ�˜dœgÔ1°6¸C±<ÀÑDÔDÐEÑEˆHˆHð ð 	 ð 	 ˆDØ”w—~’~ dÐ,@ÑAÔAˆHØð  Ø���ð ð	 ð 	 r   c                 ó€   — t          | j        j        d| j        z  ¦  «        }| j                             |d¦  «        pdS )zl
        Microsoft Visual F# directory.

        Return
        ------
        str
            path
        z%0.1f\Setup\F#Ú
productdirr�   )r   rò   rÃ   rö   rí   )rŸ   rK   s     r   ÚFSharpInstallDirzSystemInfo.FSharpInstallDir‡  s;   € õ �D”GÔ(Ð*;¸d¼kÑ*IÑJÔJˆØŒw�~Š~˜d LÑ1Ô1Ð7°RÐ7r   c                 óŽ   — | j         dk    rdnd}|D ]2}| j                             | j        j        d|z  ¦  «        }|r|pdc S Œ3dS )zt
        Microsoft Universal CRT SDK directory.

        Return
        ------
        str
            path
        r‚   )Ú10Ú81r   z
kitsroot%sr�   N)rö   rò   rí   rÚ   )rŸ   Úversr  rC  s       r   ÚUniversalCRTSdkDirzSystemInfo.UniversalCRTSdkDir”  su   € ð  $œ{¨dÒ2Ð2ˆ|ˆ|¸ˆð ð 	$ð 	$ˆCØ”W—^’^ D¤GÔ$>Ø$0°3Ñ$6ñ8ô 8ˆFàð $Ø�| Ð#Ð#Ð#ð$ð	$ð 	$r   c                 óR   — |                       t          | j        d¦  «        ¦  «        S )z€
        Microsoft Universal C Runtime SDK last version.

        Return
        ------
        str
            version
        r:  )r;  r   rY  r¢   s    r   ÚUniversalCRTSdkLastVersionz%SystemInfo.UniversalCRTSdkLastVersion¨  s%   € ð ×&Ò&¥t¨DÔ,CÀUÑ'KÔ'KÑLÔLÐLr   c                 ó    — | j         dk    rdndS )z�
        Microsoft .NET Framework SDK versions.

        Return
        ------
        tuple of str
            versions
        r‚   )	z4.7.2z4.7.1z4.7z4.6.2z4.6.1z4.6z4.5.2z4.5.1z4.5r   r7  r¢   s    r   rL  zSystemInfo.NetFxSdkVersion´  s%   € ð ”; $Ò&Ð&ð*ð *ð -/ð	0r   c                 ó�   — d}| j         D ];}t          | j        j        |¦  «        }| j                             |d¦  «        }|r nŒ<|S )zu
        Microsoft .NET Framework SDK directory.

        Return
        ------
        str
            path
        r�   Úkitsinstallationfolder)rL  r   rò   rØ   rí   )rŸ   rC  r  rD  s       r   ÚNetFxSdkDirzSystemInfo.NetFxSdkDirÄ  s\   € ð ˆØÔ'ð 	ð 	ˆCÝ�t”wÔ(¨#Ñ.Ô.ˆCØ”W—^’^ CÐ)AÑBÔBˆFØð Ø�ðàˆr   c                 óz   — t          | j        d¦  «        }| j                             | j        j        d¦  «        p|S )zw
        Microsoft .NET Framework 32bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\FrameworkÚframeworkdir32©r   rð   rò   rí   rÊ   ©rŸ   Úguess_fws     r   ÚFrameworkDir32zSystemInfo.FrameworkDir32Ö  s8   € õ ˜œÐ%?Ñ@Ô@ˆð Œw�~Š~˜dœgœjÐ*:Ñ;Ô;ÐG¸xÐGr   c                 óz   — t          | j        d¦  «        }| j                             | j        j        d¦  «        p|S )zw
        Microsoft .NET Framework 64bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\Framework64Úframeworkdir64rb  rc  s     r   ÚFrameworkDir64zSystemInfo.FrameworkDir64æ  s8   € õ ˜œÐ%AÑBÔBˆð Œw�~Š~˜dœgœjÐ*:Ñ;Ô;ÐG¸xÐGr   c                 ó,   — |                       d¦  «        S )zƒ
        Microsoft .NET Framework 32bit versions.

        Return
        ------
        tuple of str
            versions
        é    ©Ú_find_dot_net_versionsr¢   s    r   ÚFrameworkVersion32zSystemInfo.FrameworkVersion32ö  ó   € ð ×*Ò*¨2Ñ.Ô.Ð.r   c                 ó,   — |                       d¦  «        S )zƒ
        Microsoft .NET Framework 64bit versions.

        Return
        ------
        tuple of str
            versions
        é@   rk  r¢   s    r   ÚFrameworkVersion64zSystemInfo.FrameworkVersion64  rn  r   c                 ód  — | j                              | j         j        d|z  ¦  «        }t          | d|z  ¦  «        }|p|                      |d¦  «        pd}| j        dk    r|dfS | j        dk    r&|                     ¦   «         dd	…         d
k    rdn|dfS | j        dk    rdS | j        dk    rdS dS )zê
        Find Microsoft .NET Framework versions.

        Parameters
        ----------
        bits: int
            Platform number of bits: 32 or 64.

        Return
        ------
        tuple of str
            versions
        zframeworkver%dzFrameworkDir%dr0   r�   r5  zv4.0r”   Nr  Úv4z
v4.0.30319úv3.5r’   )rt  ú
v2.0.50727g       @)zv3.0ru  )rò   rí   rÊ   Úgetattrr;  rö   ri   )rŸ   ÚbitsÚreg_verÚdot_net_dirr  s        r   rl  z!SystemInfo._find_dot_net_versions  sÔ   € ð ”'—.’. ¤¤Ð-=ÀÑ-DÑEÔEˆÝ˜dÐ$4°tÑ$;Ñ<Ô<ˆØÐH˜×0Ò0°¸cÑBÔBÐHÀbˆð Œ;˜$ÒÐØ˜�;ÐØŒ[˜DÒ Ð Ø#&§9¢9¡;¤;¨r°¨r¤?°dÒ#:Ð#:�<�<ÀÀVÐKÐKØŒ[˜CÒÐØ'Ð'ØŒ[˜CÒÐØ'Ð'ð  Ðr   c                 ó|   ‡ ‡— ˆ ˆfd„t          t          ‰ ¦  «        ¦  «        D ¦   «         }t          |d¦  «        pdS )a)  
        Return name of the last dir in path or '' if no dir found.

        Parameters
        ----------
        path: str
            Use dirs in this path
        prefix: str
            Use only dirs starting by this prefix

        Return
        ------
        str
            name
        c              3   ó€   •K  — | ]8}t          t          ‰|¦  «        ¦  «        ¯|                     ‰¦  «        ¯4|V — Œ9d S r¾   )r   r   Ú
startswith)rj   Údir_namerK   Úprefixs     €€r   rt   z0SystemInfo._use_last_dir_name.<locals>.<genexpr><  sg   øè è € ð 
ð 
àÝ•T˜$ Ñ)Ô)Ñ*Ô*ð
ð ×Ò Ñ'Ô'ð	
Øð
ð 
ð 
ð 
ð 
ð 
r   Nr�   )Úreversedr   Únext)rK   r~  Úmatching_dirss   `` r   r;  zSystemInfo._use_last_dir_name+  sV   øø€ ð"
ð 
ð 
ð 
ð 
å$¥W¨T¡]¤]Ñ3Ô3ð
ñ 
ô 
ˆõ �M 4Ñ(Ô(Ð.¨BÐ.r   r¾   ©r�   )#r   r   r   r¹   r   rC   rð   r7   r"  r    rõ   rú   ró   Ústaticmethodr  rº   r$  r)  r&  r'  r8  r=  r<  rQ  rT  rY  r[  rL  r_  re  rh  rm  rq  rl  r;  r   r   r   rï   rï   :  s­  € € € € € ð	ð 	ð ˆWŒ[˜ 2Ñ&Ô&€FØ�7”;˜~¨rÑ2Ô2€LØ!�g”kÐ"5°|ÑDÔD€Oð<ð <ð <ð <ð#ð #ð #ð&ð ð ð>(ð (ð (ðT ð7ð 7ñ „\ð7ð  ðLð Lñ „XðLð  ðð ñ „Xðð"ð ð ð<Oð Oð Oð( ð!ð !ñ „Xð!ð( ð	Hð 	Hñ „Xð	Hð ð(ð (ñ „Xð(ðT ð  ð   ñ „Xð  ðD ð
8ð 
8ñ „Xð
8ð ð$ð $ñ „Xð$ð& ð	Mð 	Mñ „Xð	Mð ð0ð 0ñ „Xð0ð ðð ñ „Xðð" ðHð Hñ „XðHð ðHð Hñ „XðHð ð	/ð 	/ñ „Xð	/ð ð	/ð 	/ñ „Xð	/ð(ð (ð (ð: ð/ð /ð /ñ „\ð/ð /ð /r   rï   c                   ó>  — e Zd ZdZd!d„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed	„ ¦   «         Z
ed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd"d„Zd „ Z dS )#ÚEnvironmentInfoaY  
    Return environment variables for specified Microsoft Visual C++ version
    and platform : Lib, Include, Path and libpath.

    This function is compatible with Microsoft Visual C++ 9.0 to 14.X.

    Script created by analysing Microsoft environment configuration files like
    "vcvars[...].bat", "SetEnv.Cmd", "vcbuildtools.bat", ...

    Parameters
    ----------
    arch: str
        Target architecture.
    vc_ver: float
        Required Microsoft Visual C++ version. If not set, autodetect the last
        version.
    vc_min_ver: float
        Minimum Microsoft Visual C++ version.
    Nr   c                 óì   — t          |¦  «        | _        t          | j        ¦  «        | _        t	          | j        |¦  «        | _        | j        |k     r!d}t          j         	                    |¦  «        ‚d S )Nz.No suitable Microsoft Visual C++ version found)
rœ   r¿   r¼   rò   rï   Úsir÷   rw   r>   rx   )rŸ   r—   r÷   Ú
vc_min_verÚerrs        r   r    zEnvironmentInfo.__init__]  sf   € Ý˜tÑ$Ô$ˆŒÝ˜tœwÑ'Ô'ˆŒÝ˜TœW fÑ-Ô-ˆŒàŒ;˜Ò#Ð#ØBˆCÝÔ"×9Ò9¸#Ñ>Ô>Ð>ð $Ð#r   c                 ó   — | j         j        S )zk
        Microsoft Visual Studio.

        Return
        ------
        float
            version
        )r‡  rö   r¢   s    r   rö   zEnvironmentInfo.vs_verf  ó   € ð ŒwŒ~Ðr   c                 ó   — | j         j        S )zp
        Microsoft Visual C++ version.

        Return
        ------
        float
            version
        )r‡  r÷   r¢   s    r   r÷   zEnvironmentInfo.vc_verr  r‹  r   c                 ó    ‡ — ddg}‰ j         dk    r1‰ j                             dd¬¦  «        }|dgz  }|dgz  }|d|z  gz  }ˆ fd	„|D ¦   «         S )
zu
        Microsoft Visual Studio Tools.

        Return
        ------
        list of str
            paths
        zCommon7\IDEzCommon7\Toolsr‚   T©r¯   rN   z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance ToolszTeam Tools\Performance Tools%sc                 óD   •— g | ]}t          ‰j        j        |¦  «        ‘ŒS r   ©r   r‡  r$  ©rj   rK   rŸ   s     €r   ú
<listcomp>z+EnvironmentInfo.VSTools.<locals>.<listcomp>�  ó(   ø€ ÐCÐCÐC°T•�T”WÔ)¨4Ñ0Ô0ÐCÐCÐCr   )rö   r¿   r°   )rŸ   ÚpathsÚarch_subdirs   `  r   ÚVSToolszEnvironmentInfo.VSTools~  s€   ø€ ð  Ð!1Ð2ˆàŒ;˜$ÒÐØœ'×-Ò-°dÀÐ-ÑEÔEˆKØÐJÐKÑKˆEØÐ5Ð6Ñ6ˆEØÐ7¸+ÑEÐFÑFˆEàCÐCÐCÐC¸UÐCÑCÔCÐCr   c                 ój   — t          | j        j        d¦  «        t          | j        j        d¦  «        gS )z’
        Microsoft Visual C++ & Microsoft Foundation Class Includes.

        Return
        ------
        list of str
            paths
        ÚIncludezATLMFC\Include©r   r‡  r)  r¢   s    r   Ú
VCIncludeszEnvironmentInfo.VCIncludes’  s3   € õ �T”WÔ)¨9Ñ5Ô5Ý�T”WÔ)Ð+<Ñ=Ô=ð?ð 	?r   c                 óà   ‡ — ‰ j         dk    r‰ j                             d¬¦  «        }n‰ j                             d¬¦  «        }d|z  d|z  g}‰ j         dk    r	|d|z  gz  }ˆ fd	„|D ¦   «         S )
z“
        Microsoft Visual C++ & Microsoft Foundation Class Libraries.

        Return
        ------
        list of str
            paths
        ç      .@T©rN   ©r¯   úLib%szATLMFC\Lib%sr‚   zLib\store%sc                 óD   •— g | ]}t          ‰j        j        |¦  «        ‘ŒS r   r™  r‘  s     €r   r’  z/EnvironmentInfo.VCLibraries.<locals>.<listcomp>²  r“  r   )rö   r¿   r²   )rŸ   r•  r”  s   `  r   ÚVCLibrarieszEnvironmentInfo.VCLibrariesŸ  s‘   ø€ ð Œ;˜$ÒÐØœ'×,Ò,°Ð,Ñ6Ô6ˆKˆKàœ'×,Ò,°TÐ,Ñ:Ô:ˆKØ˜;Ñ&¨¸+Ñ(EÐFˆàŒ;˜$ÒÐØ�n {Ñ2Ð3Ñ3ˆEàCÐCÐCÐC¸UÐCÑCÔCÐCr   c                 óR   — | j         dk     rg S t          | j        j        d¦  «        gS )z‡
        Microsoft Visual C++ store references Libraries.

        Return
        ------
        list of str
            paths
        r‚   zLib\store\references)rö   r   r‡  r)  r¢   s    r   ÚVCStoreRefszEnvironmentInfo.VCStoreRefs´  s/   € ð Œ;˜ÒÐØˆIÝ�T”WÔ)Ð+BÑCÔCÐDÐDr   c                 óà  — | j         }t          |j        d¦  «        g}| j        dk    rdnd}| j                             |¦  «        }|r|t          |j        d|z  ¦  «        gz  }| j        dk    r8d| j                             d¬¦  «        z  }|t          |j        |¦  «        gz  }nÆ| j        dk    r¢| j                             ¦   «         rd	nd
}|t          |j        || j                             d¬¦  «        z  ¦  «        gz  }| j        j	        | j        j
        k    r5|t          |j        || j                             d¬¦  «        z  ¦  «        gz  }n|t          |j        d¦  «        gz  }|S )zr
        Microsoft Visual C++ Tools.

        Return
        ------
        list of str
            paths
        Ú
VCPackagesr”   TFúBin%sr‚   rž  rœ  zbin\HostX86%szbin\HostX64%sr�  ÚBin)r‡  r   r)  rö   r¿   r·   r°   rª   r²   r©   r£   )rŸ   r‡  Útoolsrµ   r•  rK   Úhost_dirs          r   ÚVCToolszEnvironmentInfo.VCToolsÂ  sš  € ð ŒWˆÝ�b”o |Ñ4Ô4Ð5ˆàœ;¨$Ò.Ð.�4�4°EˆØ”g×'Ò'¨Ñ1Ô1ˆØð 	DØ•d˜2œ?¨G°kÑ,AÑBÔBÐCÑCˆEàŒ;˜$ÒÐØ˜TœW×0Ò0¸Ð0Ñ>Ô>Ñ>ˆDØ•d˜2œ?¨DÑ1Ô1Ð2Ñ2ˆEˆEàŒ[˜DÒ Ð Ø,0¬G×,BÒ,BÑ,DÔ,Dð )Ð(Ð(Ø(ð à•dØ” ¨D¬G×,>Ò,>À4Ð,>Ñ,HÔ,HÑ!HñJô Jð Kñ KˆEð ŒwÔ" d¤gÔ&8Ò8Ð8Ø�$Ø”O X°´×0CÒ0CÈÐ0CÑ0MÔ0MÑ%MñOô Oð Pñ P�øð •d˜2œ?¨EÑ2Ô2Ð3Ñ3ˆEàˆr   c                 ó0  — | j         dk    r:| j                             dd¬¦  «        }t          | j        j        d|z  ¦  «        gS | j                             d¬¦  «        }t          | j        j        d¦  «        }| j        }t          ||›d|›�¦  «        gS )zw
        Microsoft Windows SDK Libraries.

        Return
        ------
        list of str
            paths
        r”   TrŽ  rŸ  r�  r:  Úum)rö   r¿   r²   r   r‡  r<  Ú_sdk_subdir)rŸ   r•  r:  Úlibvers       r   ÚOSLibrarieszEnvironmentInfo.OSLibrariesç  sœ   € ð Œ;˜$ÒÐØœ'×,Ò,°T¸tÐ,ÑDÔDˆKÝ˜œÔ.°¸+Ñ0EÑFÔFÐGÐGð œ'×,Ò,°Ð,Ñ6Ô6ˆKÝ�t”wÔ,¨eÑ4Ô4ˆCØÔ%ˆFÝ˜¨&¨&¨&°+°+Ð>Ñ?Ô?Ð@Ð@r   c                 ó
  — t          | j        j        d¦  «        }| j        dk    r|t          |d¦  «        gS | j        dk    r| j        }nd}t          |d|z  ¦  «        t          |d|z  ¦  «        t          |d|z  ¦  «        gS )	zu
        Microsoft Windows SDK Include.

        Return
        ------
        list of str
            paths
        Úincluder”   Úglr‚   r�   z%ssharedz%sumz%swinrt)r   r‡  r<  rö   r­  )rŸ   r±  Úsdkvers      r   Ú
OSIncludeszEnvironmentInfo.OSIncludesû  s—   € õ �t”wÔ,¨iÑ8Ô8ˆàŒ;˜$ÒÐØ�T '¨4Ñ0Ô0Ð1Ð1ð Œ{˜dÒ"Ð"ØÔ)��à�Ý˜ *¨vÑ"5Ñ6Ô6Ý˜ &¨6¡/Ñ2Ô2Ý˜ )¨fÑ"4Ñ5Ô5ð7ð 7r   c                 ó¦  — t          | j        j        d¦  «        }g }| j        dk    r
|| j        z  }| j        dk    r|t          |d¦  «        gz  }| j        dk    ru||t          | j        j        d¦  «        t          |dd¦  «        t          |d	d¦  «        t          |d
d¦  «        t          | j        j        ddd| j        z  ddd¦  «        gz  }|S )z}
        Microsoft Windows SDK Libraries Paths.

        Return
        ------
        list of str
            paths
        Ú
Referencesr’   r4  zCommonConfiguration\Neutralr‚   ÚUnionMetadataz'Windows.Foundation.UniversalApiContractz1.0.0.0z%Windows.Foundation.FoundationContractz,Windows.Networking.Connectivity.WwanContractÚExtensionSDKszMicrosoft.VCLibsr!  ÚCommonConfigurationÚneutral)r   r‡  r<  rö   r¯  )rŸ   ÚrefÚlibpaths      r   Ú	OSLibpathzEnvironmentInfo.OSLibpath  sÿ   € õ �4”7Ô(¨,Ñ7Ô7ˆØˆàŒ;˜#ÒÐØ�tÔ'Ñ'ˆGàŒ;˜$ÒÐØ�˜SÐ"@ÑAÔAÐBÑBˆGàŒ;˜$ÒÐØØÝ�T”WÔ*¨OÑ<Ô<ÝØÐBÀIñOô Oå�SÐAÀ9ÑMÔMÝØÐGØñô õ Ø”GÔ)¨?Ð<NØ˜dœkÑ)¨<Ð9NØñô ðñ ˆGð ˆr   c                 óD   — t          |                      ¦   «         ¦  «        S )zs
        Microsoft Windows SDK Tools.

        Return
        ------
        list of str
            paths
        )ÚlistÚ
_sdk_toolsr¢   s    r   ÚSdkToolszEnvironmentInfo.SdkTools7  s   € õ �D—O’OÑ%Ô%Ñ&Ô&Ð&r   c              #   óâ  K  — | j         dk     r+| j         dk    rdnd}t          | j        j        |¦  «        V — | j                             ¦   «         s<| j                             d¬¦  «        }d|z  }t          | j        j        |¦  «        V — | j         dv rZ| j                             ¦   «         rd	}n| j                             dd¬
¦  «        }d|z  }t          | j        j        |¦  «        V — nb| j         dk    rWt          | j        j        d¦  «        }| j                             d¬¦  «        }| j        j        }t          ||›|›�¦  «        V — | j        j	        r| j        j	        V — dS dS )zˆ
        Microsoft Windows SDK Tools paths generator.

        Return
        ------
        generator of str
            paths
        rœ  r4  r§  zBin\x86Tr�  r¦  )r”   r4  r�   rŽ  zBin\NETFX 4.0 Tools%sN)
rö   r   r‡  r<  r¿   rª   r°   r¦   r=  rQ  )rŸ   Úbin_dirr•  rK   r³  s        r   rÀ  zEnvironmentInfo._sdk_toolsC  s•  è è € ð Œ;˜ÒÐØ#œ{¨dÒ2Ð2�e�e¸
ˆGÝ�t”wÔ,¨gÑ6Ô6Ð6Ð6Ð6àŒw×%Ò%Ñ'Ô'ð 	4Øœ'×-Ò-°$Ð-Ñ7Ô7ˆKØ˜[Ñ(ˆDÝ�t”wÔ,¨dÑ3Ô3Ð3Ð3Ð3àŒ;˜,Ð&Ð&ØŒw×$Ò$Ñ&Ô&ð JØ ��à"œg×1Ò1¸$ÀDÐ1ÑIÔI�Ø+¨kÑ9ˆDÝ�t”wÔ,¨dÑ3Ô3Ð3Ð3Ð3Ð3àŒ[˜DÒ Ð Ý˜œÔ-¨uÑ5Ô5ˆDØœ'×-Ò-°$Ð-Ñ7Ô7ˆKØ”WÔ2ˆFÝ�t v v¨{¨{Ð;Ñ<Ô<Ð<Ð<Ð<àŒ7Ô+ð 	3Ø”'Ô2Ð2Ð2Ð2Ð2Ð2ð	3ð 	3r   c                 ó,   — | j         j        }|rd|z  ndS )zu
        Microsoft Windows SDK version subdir.

        Return
        ------
        str
            subdir
        ú%s\r�   )r‡  r=  ©rŸ   Úucrtvers     r   r­  zEnvironmentInfo._sdk_subdirf  s#   € ð ”'Ô/ˆØ%,Ð4�˜Ñ Ð °"Ð4r   c                 óR   — | j         dk    rg S t          | j        j        d¦  «        gS )zs
        Microsoft Windows SDK Setup.

        Return
        ------
        list of str
            paths
        r’   ÚSetup)rö   r   r‡  r<  r¢   s    r   ÚSdkSetupzEnvironmentInfo.SdkSetups  s.   € ð Œ;˜ÒÐØˆIå�T”WÔ*¨GÑ4Ô4Ð5Ð5r   c                 ót  ‡— | j         }| j        Š| j        dk    r-d}|                     ¦   «          o|                     ¦   «          }n>|                     ¦   «         p|                     ¦   «         }|j        dk    p
|j        dk    }g }|r|ˆfd„‰j        D ¦   «         z  }|r|ˆfd„‰j        D ¦   «         z  }|S )zv
        Microsoft .NET Framework Tools.

        Return
        ------
        list of str
            paths
        r”   TrU   c                 ó:   •— g | ]}t          ‰j        |¦  «        ‘ŒS r   )r   re  ©rj   r  r‡  s     €r   r’  z+EnvironmentInfo.FxTools.<locals>.<listcomp>˜  ó6   ø€ ð 8ð 8ð 8Øõ ˜2Ô,¨cÑ2Ô2ð 8ð 8ð 8r   c                 ó:   •— g | ]}t          ‰j        |¦  «        ‘ŒS r   )r   rh  rÍ  s     €r   r’  z+EnvironmentInfo.FxTools.<locals>.<listcomp>›  rÎ  r   )	r¿   r‡  rö   r¦   rª   r©   r£   rm  rq  )rŸ   r¿   Ú	include32Ú	include64r¨  r‡  s        @r   ÚFxToolszEnvironmentInfo.FxTools‚  s	  ø€ ð ŒWˆØŒWˆàŒ;˜$ÒÐØˆIØ×,Ò,Ñ.Ô.Ð.ÐJ°r×7HÒ7HÑ7JÔ7JÐ3JˆIˆIà×(Ò(Ñ*Ô*ÐA¨b×.?Ò.?Ñ.AÔ.AˆIØœ¨'Ò1ÐM°R´]ÀgÒ5MˆIàˆØð 	8Øð 8ð 8ð 8ð 8Ø!#Ô!6ð8ñ 8ô 8ñ 8ˆEàð 	8Øð 8ð 8ð 8ð 8Ø!#Ô!6ð8ñ 8ô 8ñ 8ˆEàˆr   c                 ó¦   — | j         dk     s| j        j        sg S | j                             d¬¦  «        }t          | j        j        d|z  ¦  «        gS )z~
        Microsoft .Net Framework SDK Libraries.

        Return
        ------
        list of str
            paths
        r‚   Tr�  zlib\um%s)rö   r‡  r_  r¿   r²   r   )rŸ   r•  s     r   ÚNetFxSDKLibrariesz!EnvironmentInfo.NetFxSDKLibrariesŸ  sU   € ð Œ;˜ÒÐ T¤WÔ%8ÐØˆIà”g×(Ò(¨TÐ(Ñ2Ô2ˆÝ�T”WÔ(¨+¸Ñ*CÑDÔDÐEÐEr   c                 ój   — | j         dk     s| j        j        sg S t          | j        j        d¦  «        gS )z}
        Microsoft .Net Framework SDK Includes.

        Return
        ------
        list of str
            paths
        r‚   z
include\um)rö   r‡  r_  r   r¢   s    r   ÚNetFxSDKIncludesz EnvironmentInfo.NetFxSDKIncludes¯  s8   € ð Œ;˜ÒÐ T¤WÔ%8ÐØˆIå�T”WÔ(¨-Ñ8Ô8Ð9Ð9r   c                 ó8   — t          | j        j        d¦  «        gS )z„
        Microsoft Visual Studio Team System Database.

        Return
        ------
        list of str
            paths
        zVSTSDB\Deployr�  r¢   s    r   ÚVsTDbzEnvironmentInfo.VsTDb¾  s   € õ �T”WÔ)Ð+;Ñ<Ô<Ð=Ð=r   c                 ó  — | j         dk     rg S | j         dk     r(| j        j        }| j                             d¬¦  «        }n| j        j        }d}d| j         |fz  }t          ||¦  «        g}| j         dk    r|t          ||d¦  «        gz  }|S )zn
        Microsoft Build Engine.

        Return
        ------
        list of str
            paths
        r5  rœ  Trž  r�   zMSBuild\%0.1f\bin%sÚRoslyn)rö   r‡  r"  r¿   r°   r$  r   )rŸ   Ú	base_pathr•  rK   Úbuilds        r   ÚMSBuildzEnvironmentInfo.MSBuildÊ  s¤   € ð Œ;˜ÒÐØˆIØŒ[˜4ÒÐØœÔ/ˆIØœ'×-Ò-°dÐ-Ñ;Ô;ˆKˆKàœÔ,ˆIØˆKà%¨¬°kÐ(BÑBˆÝ�i Ñ&Ô&Ð'ˆàŒ;˜$ÒÐà•d˜9 d¨HÑ5Ô5Ð6Ñ6ˆEàˆr   c                 óR   — | j         dk     rg S t          | j        j        d¦  «        gS )zt
        Microsoft HTML Help Workshop.

        Return
        ------
        list of str
            paths
        r4  zHTML Help Workshop)rö   r   r‡  r"  r¢   s    r   ÚHTMLHelpWorkshopz EnvironmentInfo.HTMLHelpWorkshopæ  s/   € ð Œ;˜ÒÐØˆIå�T”WÔ,Ð.BÑCÔCÐDÐDr   c                 óÀ   — | j         dk     rg S | j                             d¬¦  «        }t          | j        j        d¦  «        }| j        }t          ||›d|›�¦  «        gS )zƒ
        Microsoft Universal C Runtime SDK Libraries.

        Return
        ------
        list of str
            paths
        r‚   Tr�  r:  Úucrt)rö   r¿   r²   r   r‡  rY  Ú_ucrt_subdir)rŸ   r•  r:  rÇ  s       r   ÚUCRTLibrarieszEnvironmentInfo.UCRTLibrariesõ  sh   € ð Œ;˜ÒÐØˆIà”g×(Ò(¨TÐ(Ñ2Ô2ˆÝ�4”7Ô-¨uÑ5Ô5ˆØÔ#ˆÝ�S¨¨¨°°Ð=Ñ>Ô>Ð?Ð?r   c                 ó‚   — | j         dk     rg S t          | j        j        d¦  «        }t          |d| j        z  ¦  «        gS )z�
        Microsoft Universal C Runtime SDK Include.

        Return
        ------
        list of str
            paths
        r‚   r±  z%sucrt)rö   r   r‡  rY  râ  )rŸ   r±  s     r   ÚUCRTIncludeszEnvironmentInfo.UCRTIncludes  sE   € ð Œ;˜ÒÐØˆIå�t”wÔ1°9Ñ=Ô=ˆÝ�W˜h¨Ô):Ñ:Ñ;Ô;Ð<Ð<r   c                 ó,   — | j         j        }|rd|z  ndS )z�
        Microsoft Universal C Runtime SDK version subdir.

        Return
        ------
        str
            subdir
        rÅ  r�   )r‡  r[  rÆ  s     r   râ  zEnvironmentInfo._ucrt_subdir  s#   € ð ”'Ô4ˆØ%,Ð4�˜Ñ Ð °"Ð4r   c                 óJ   — d| j         cxk    rdk    rn ng S | j        j        gS )zk
        Microsoft Visual F#.

        Return
        ------
        list of str
            paths
        r4  r5  )rö   r‡  rT  r¢   s    r   ÚFSharpzEnvironmentInfo.FSharp$  s;   € ð �$”+Ð$Ð$Ò$Ð$ Ò$Ð$Ð$Ð$Ð$ØˆIà”Ô(Ð)Ð)r   c                 ó\  — d| j         z  }| j                             d¬¦  «                             d¦  «        }g }| j        j        }t          |                     dd¦  «        ¦  «        }t          |¦  «        r8t          |t          |¦  «        d         ¦  «        }||t          |d¦  «        gz  }|t          |d	¦  «        gz  }d
| j         dz  z  d
t          | j        ¦  «        dz  z  f}t          j        ||¦  «        D ]*\  }}t          ||||¦  «        }	t          |	¦  «        r|	c S Œ+dS )z
        Microsoft Visual C++ runtime redistributable dll.

        Return
        ------
        str
            path
        zvcruntime%d0.dllTr�  r´   z\Toolsz\RedistrY   ÚonecorerV   zMicrosoft.VC%d.CRTé
   N)r÷   r¿   r²   rG   r‡  r)  r	   rn   r   r   r   r(   rö   r$   r  r   )
rŸ   r`   r•  ÚprefixesÚ
tools_pathÚredist_pathÚcrt_dirsr~  Úcrt_dirrK   s
             r   ÚVCRuntimeRedistzEnvironmentInfo.VCRuntimeRedist3  sL  € ð '¨¬Ñ4ˆ	Ø”g×(Ò(¨TÐ(Ñ2Ô2×8Ò8¸Ñ>Ô>ˆð ˆØ”WÔ)ˆ
Ý˜j×0Ò0°¸JÑGÔGÑHÔHˆÝ�ÑÔð 	Då˜{­G°KÑ,@Ô,@ÀÔ,DÑEÔEˆKØ˜¥d¨;¸	Ñ&BÔ&BÐCÑCˆHà•T˜* hÑ/Ô/Ð0Ñ0ˆð )¨D¬K¸"Ñ,<Ñ=à(­C°´Ñ,<Ô,<¸rÑ,AÑBðDˆõ
  )Ô0°¸8ÑDÔDð 	ð 	‰OˆF�GÝ˜ ¨W°iÑ@Ô@ˆDÝ�d‰|Œ|ð Ø���ðð	ð 	r   Tc                 ó.  — t          |                      d| j        | j        | j        | j        g|¦  «        |                      d| j        | j        | j        | j	        | j
        g|¦  «        |                      d| j        | j        | j        | j        g|¦  «        |                      d| j        | j        | j        | j        | j        | j        | j        | j        | j        g	|¦  «        ¬¦  «        }| j        dk    rt-          | j        ¦  «        r
| j        |d<   |S )zÛ
        Return environment dict.

        Parameters
        ----------
        exists: bool
            It True, only return existing paths.

        Return
        ------
        dict
            environment
        r±  r:  r¼  rK   )r±  r:  r¼  rK   r   ru   )ÚdictÚ_build_pathsrš  r´  rå  rÖ  r¡  r¯  rÒ  rã  rÔ  r£  r½  rª  r–  rØ  rÁ  rÊ  rÝ  rß  rè  rö   r   rñ  )rŸ   Úexistsr   s      r   Ú
return_envzEnvironmentInfo.return_envV  sD  € õ Ø×%Ò% iØ'+¤Ø'+¤Ø'+Ô'8Ø'+Ô'<ð'>ð '-ñ.ô .ð ×!Ò! %Ø#'Ô#3Ø#'Ô#3Ø#'¤<Ø#'Ô#5Ø#'Ô#9ð	#;ð
 #)ñ*ô *ð ×%Ò% iØ'+Ô'7Ø'+¤|Ø'+Ô'7Ø'+¤~ð'7ð '-ñ.ô .ð ×"Ò" 6Ø$(¤LØ$(¤LØ$(¤JØ$(¤MØ$(¤MØ$(¤LØ$(¤LØ$(Ô$9Ø$(¤Kð$1ð $*ñ
+ô 
+ð)
ñ 
ô 
ˆð@ Œ;˜"ÒÐ¥¨Ô(<Ñ!=Ô!=ÐØ)-Ô)=ˆCÐ%Ñ&Øˆ
r   c                 óÆ  — t           j                             |¦  «        }t          j        |d¦  «                             t          ¦  «        }t          j        ||¦  «        }|r"t          t          t          |¦  «        ¦  «        n|}|s6d| 
                    ¦   «         z  }t          j                             |¦  «        ‚t          |¦  «        }	t          j        |	¦  «        S )aC  
        Given an environment variable name and specified paths,
        return a pathsep-separated string of paths containing
        unique, extant, directories from those paths and from
        the environment variable. Raise an error if no paths
        are resolved.

        Parameters
        ----------
        name: str
            Environment variable name
        spec_path_lists: list of str
            Paths
        exists: bool
            It True, only return existing paths.

        Return
        ------
        str
            Pathsep-separated paths
        r�   z %s environment variable is empty)r$   ÚchainÚfrom_iterabler   rC   r  r   r¿  Úfilterr   Úupperrw   r>   rx   r   r   )
rŸ   ræ   Úspec_path_listsrõ  Ú
spec_pathsÚ	env_pathsr”  Úextant_pathsr(  Úunique_pathss
             r   rô  zEnvironmentInfo._build_pathsˆ  s¸   € õ. ”_×2Ò2°?ÑCÔCˆ
Ý”K  bÑ)Ô)×/Ò/µÑ8Ô8ˆ	Ý” 
¨IÑ6Ô6ˆØ5;ÐF•t�F¥5¨%Ñ0Ô0Ñ1Ô1Ð1ÀˆØð 	?Ø4°t·z²z±|´|ÑCˆCÝÔ"×9Ò9¸#Ñ>Ô>Ð>Ý& |Ñ4Ô4ˆÝŒ|˜LÑ)Ô)Ð)r   )Nr   )T)!r   r   r   r¹   r    rº   rö   r÷   r–  rš  r¡  r£  rª  r¯  r´  r½  rÁ  rÀ  r­  rÊ  rÒ  rÔ  rÖ  rØ  rÝ  rß  rã  rå  râ  rè  rñ  rö  rô  r   r   r   r…  r…  E  s  € € € € € ðð ð.?ð ?ð ?ð ?ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ðDð Dñ „XðDð& ð
?ð 
?ñ „Xð
?ð ðDð Dñ „XðDð( ðEð Eñ „XðEð ð"ð "ñ „Xð"ðH ðAð Añ „XðAð& ð7ð 7ñ „Xð7ð. ð!ð !ñ „Xð!ðF ð	'ð 	'ñ „Xð	'ð!3ð !3ð !3ðF ð
5ð 
5ñ „Xð
5ð ð6ð 6ñ „Xð6ð ðð ñ „Xðð8 ðFð Fñ „XðFð ð:ð :ñ „Xð:ð ð	>ð 	>ñ „Xð	>ð ðð ñ „Xðð6 ðEð Eñ „XðEð ð@ð @ñ „Xð@ð" ð=ð =ñ „Xð=ð ð
5ð 
5ñ „Xð
5ð ð*ð *ñ „Xð*ð ð ð  ñ „Xð ðD0ð 0ð 0ð 0ðd*ð *ð *ð *ð *r   r…  r‚  ))r¹   r  Úior   Úosr   r   Úos.pathr   r   r   r	   r†   r  Úplatformr$   rD   Údistutils.errorsrw   Ú#setuptools.extern.packaging.versionr
   Ú setuptools.extern.more_itertoolsr   Úmonkeyr   Úsystemr   r   ró  r4   rL   rZ   rd   r€   r„   rŒ   rƒ   rœ   r¼   rï   r…  r   r   r   ú<module>r
     s§  ððð ð €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø =Ð =Ð =Ð =Ð =Ð =Ø <Ð <Ð <Ð <Ð <Ð <à !Ð !Ð !Ð !Ð !Ð !à€8„?ÑÔ˜	Ò!Ð!Ø€M€M€MØÐÐÐÐÐÐð!ð !ð !ð !ð !ñ !ô !ð !ð ˆd‰fŒf€Gð"ð "ð "ð<"ð "ð "ðL ØØØð	ð Ð ð$ ð $ ð $ ðN!ð !ð !ðHð ð ð4
Bð 
Bð 
Bð"ð "ð "ð "ðJp
ð p
ð p
ð p
ð p
ñ p
ô p
ð p
ðfv#ð v#ð v#ð v#ð v#ñ v#ô v#ð v#ðrH/ð H/ð H/ð H/ð H/ñ H/ô H/ð H/ðVb	*ð b	*ð b	*ð b	*ð b	*ñ b	*ô b	*ð b	*ð b	*ð b	*r   