<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    if                     @   s  d dl a d dlZd dlad dlZd dlZtjdkZerHd dlZd dl	Z	nd dl
Zer^ddgZndgZed  ZeeZdeZdd eD ZdZd	Zee Zd
d Zdd Zdd Zdd Zerdd Zndd Zdd Zdd Zdd Zdd Zdd Zer
dd  Znd!d  Zdld#d$Ze ej!Z"d%#d&d'd( Z$e%&e$d'Z'd)Z(d*Z)d+gZ*d,gZ+e+ Z,Z-dmdd-d.d/Z.d0d1 Z/d2d3 Z0d4d5 Z1d6d7 Z2d8d9 Z3d:d; Z4d<d= Z5d>d? Z6d@dA Z7dndBdCZ8dodDdEZ9dpdGdHZ:dIdJ Z;e< Z=dqde=dKdLdMZ>G dNdO dOZ?G dPdQ dQZ@G dRdS dSe@ZAG dTdU dUZBG dVdW dWeBeAZCG dXdY dYeBe@ZDg ZEG dZd[ d[eBe@ZFG d\d] d]ZGG d^d_ d_ZHG d`da daZIG dbdc dcZJdrdddeZKdfdg ZLdhdi ZMdjdk ZNdS )s    NZwin32\/ c                 C   s   h | ]}d | qS : .0sr   r   B/opt/alt/python38/lib64/python3.8/importlib/_bootstrap_external.py	<setcomp>/   s     r   )win)cygwindarwinc                     s<   t jtr0t jtrd nd  fdd} ndd } | S )NPYTHONCASEOKs   PYTHONCASEOKc                      s
    t jkS N)_osenvironr   keyr   r   _relax_case@   s    z%_make_relax_case.<locals>._relax_casec                   S   s   dS )NFr   r   r   r   r   r   D   s    )sysplatform
startswith_CASE_INSENSITIVE_PLATFORMS#_CASE_INSENSITIVE_PLATFORMS_STR_KEY)r   r   r   r   _make_relax_case9   s    r   c                 C   s   t | d@ ddS )N       little)intto_bytes)xr   r   r   _pack_uint32J   s    r#   c                 C   s   t | dS Nr   r    
from_bytesdatar   r   r   _unpack_uint32O   s    r)   c                 C   s   t | dS r$   r%   r'   r   r   r   _unpack_uint16T   s    r*   c                  G   s   | sdS t | dkr| d S d}g }ttj| D ]z\}}|tsL|trf|tpX|}t	| g}q0|dr|
 |
 kr|}|g}q|| q0|p|}|| q0dd |D }t |dkr|d s|t	 S |t	| S )Nr      r   r   c                 S   s   g | ]}|r| tqS r   rstrippath_separatorsr	   pr   r   r   
<listcomp>r   s      _path_join.<locals>.<listcomp>)lenmapr   _path_splitrootr   path_sep_tupleendswithr-   r.   path_sepcasefoldappendjoin)
path_partsrootpathZnew_roottailr   r   r   
_path_join[   s*    
r@   c                  G   s   t dd | D S )Nc                 S   s   g | ]}|r| tqS r   r,   )r	   partr   r   r   r1   {   s    r2   )r8   r;   )r<   r   r   r   r@   y   s    
c                    sB   t  fddtD }|dk r&d fS  d |  |d d  fS )Nc                 3   s   | ]}  |V  qd S r   )rfindr/   r>   r   r   	<genexpr>   s     z_path_split.<locals>.<genexpr>r   r   r+   )maxr.   )r>   ir   rC   r   _path_split   s    rG   c                 C   s
   t | S r   )r   statrC   r   r   r   
_path_stat   s    rI   c                 C   s2   zt | }W n tk
r"   Y dS X |jd@ |kS )NFi   )rI   OSErrorst_mode)r>   mode	stat_infor   r   r   _path_is_mode_type   s
    rN   c                 C   s
   t | dS )Ni   )rN   rC   r   r   r   _path_isfile   s    rO   c                 C   s   | st  } t| dS )Ni @  )r   getcwdrN   rC   r   r   r   _path_isdir   s    rQ   c                 C   s>   | sdS t | d dd}t|dko<|dp<|dS )NFr   r   r   r+   z\\)r   r5   replacer3   r   r7   )r>   r=   r   r   r   _path_isabs   s    rS   c                 C   s
   |  tS r   )r   r.   rC   r   r   r   rS      s      c                 C   s   d | t| }t|tjtjB tjB |d@ }z2t|d}|	| W 5 Q R X t
||  W n: tk
r   zt| W n tk
r   Y nX  Y nX d S )N{}.{}rT   wb)formatidr   openO_EXCLO_CREATO_WRONLY_ioFileIOwriterR   rJ   unlink)r>   r(   rL   path_tmpfdfiler   r   r   _write_atomic   s     rd   iU     r   s   
__pycache__zopt-z.pyz.pyc)optimizationc                C   sX  |d k	r4t dt |d k	r(d}t||r0dnd}t| } t| \}}|d\}}}tj	j
}	|	d krrtdd|r~|n|||	g}
|d krtjjdkrd}ntjj}t|}|dkr| std|d	|
t|}
|
td  }tjd k	rLt|stt |}|d d
kr8|d tkr8|dd  }ttj|t|S t|t|S )NzFthe debug_override parameter is deprecated; use 'optimization' insteadz2debug_override or optimization must be set to Noner   r+   .$sys.implementation.cache_tag is Noner   z{!r} is not alphanumericz{}.{}{}r   re   )	_warningswarnDeprecationWarning	TypeErrorr   fspathrG   
rpartitionr   implementation	cache_tagNotImplementedErrorr;   flagsoptimizestrisalnum
ValueErrorrW   _OPTBYTECODE_SUFFIXESpycache_prefixrS   r@   rP   r.   lstrip_PYCACHE)r>   debug_overriderg   messageheadr?   basesepresttagalmost_filenamefilenamer   r   r   cache_from_sourceb  sH    
	
r   c           
      C   s.  t jjd krtdt| } t| \}}d}t jd k	rft jt	}|
|t rf|t|d  }d}|st|\}}|tkrtt d| |d}|dkrtd|n\|dkr|dd	d
 }|
tstdt|ttd  }| std|d|dd }	t||	td  S )Nri   FTz not bottom-level directory in rh   >   re      zexpected only 2 or 3 dots in r   re   z5optimization portion of filename does not start with zoptimization level z is not an alphanumeric valuer   )r   rp   rq   rr   r   rn   rG   rz   r-   r.   r   r8   r3   r|   rw   countrsplitrx   rv   	partitionr@   SOURCE_SUFFIXES)
r>   r   pycache_filenamefound_in_pycache_prefixstripped_pathpycache	dot_countrg   	opt_levelbase_filenamer   r   r   source_from_cache  s4    	





r   c              	   C   s~   t | dkrd S | d\}}}|r8| dd dkr<| S zt| }W n$ ttfk
rl   | d d }Y nX t|rz|S | S )Nr   rh   py)r3   ro   lowerr   rr   rw   rO   )bytecode_pathr   _	extensionsource_pathr   r   r   _get_sourcefile  s    r   c                 C   sJ   |  ttr0z
t| W S  tk
r,   Y qFX n|  ttrB| S d S d S r   )r7   tupler   r   rr   ry   )r   r   r   r   _get_cached  s    
r   c                 C   s4   zt | j}W n tk
r&   d}Y nX |dO }|S )NrT      )rI   rK   rJ   )r>   rL   r   r   r   
_calc_mode  s    
r   c                    sD   d fdd	}z
t j}W n tk
r4   dd }Y nX ||  |S )Nc                    sB   |d kr| j }n | j |kr0td| j |f |d | |f||S )Nzloader for %s cannot handle %sname)r   ImportError)selfr   argskwargsmethodr   r   _check_name_wrapper  s    
z(_check_name.<locals>._check_name_wrapperc                 S   s8   dD ] }t ||rt| |t|| q| j|j d S )N)
__module____name____qualname____doc__)hasattrsetattrgetattr__dict__update)newoldrR   r   r   r   _wrap  s    
z_check_name.<locals>._wrap)N)
_bootstrapr   	NameError)r   r   r   r   r   r   _check_name  s    

r   c                 C   s<   |  |\}}|d kr8t|r8d}t||d t |S )Nz,Not importing directory {}: missing __init__r   )find_loaderr3   rj   rk   rW   ImportWarning)r   fullnameloaderportionsmsgr   r   r   _find_module_shim  s
    
r   c                 C   s   | d d }|t kr<d|d|}td| t|f|t| dk rfd|}td| t|t| dd }|d@ rd	|d
|}t|f||S )Nr   zbad magic number in z: {}   z(reached EOF while reading pyc header of    zinvalid flags z in )MAGIC_NUMBERr   _verbose_messager   r3   EOFErrorr)   )r(   r   exc_detailsmagicr~   rs   r   r   r   _classify_pyc)  s    
r   c                 C   sp   t | dd |d@ kr:d|}td| t|f||d k	rlt | dd |d@ krltd|f|d S )Nr      r   zbytecode is stale for r   r   )r)   r   r   r   )r(   source_mtimesource_sizer   r   r~   r   r   r   _validate_timestamp_pycJ  s    
r   c                 C   s&   | dd |kr"t d|f|d S )Nr   r   z.hash in bytecode doesn't match hash of source )r   )r(   source_hashr   r   r   r   r   _validate_hash_pycf  s    r   c                 C   sP   t | }t|tr8td| |d k	r4t|| |S td	|||dd S )Nzcode object from {!r}zNon-code object in {!r}r   r>   )
marshalloads
isinstance
_code_typer   r   _imp_fix_co_filenamer   rW   )r(   r   r   r   coder   r   r   _compile_bytecode~  s    


 r   c                 C   sF   t t}|td |t| |t| |t|  |S Nr   	bytearrayr   extendr#   r   dumps)r   mtimer   r(   r   r   r   _code_to_timestamp_pyc  s    r   Tc                 C   s@   t t}d|d> B }|t| || |t|  |S )Nr+   r   )r   r   checkedr(   rs   r   r   r   _code_to_hash_pyc  s    
r   c                 C   s>   dd l }t| j}||}td d}|| |d S )Nr   T)tokenizer]   BytesIOreadlinedetect_encodingIncrementalNewlineDecoderdecode)source_bytesr   source_bytes_readlineencodingnewline_decoderr   r   r   decode_source  s
    
r   r   submodule_search_locationsc          	      C   s  |d kr<d}t |drFz|| }W qF tk
r8   Y qFX n
t|}tj| ||d}d|_|d krt D ]*\}}|	t
|rj|| |}||_ qqjd S |tkrt |drz|| }W n tk
r   Y qX |rg |_n||_|jg kr|rt|d }|j| |S )Nz	<unknown>get_filenameoriginT
is_packager   )r   r   r   r   rn   r   
ModuleSpec_set_fileattr_get_supported_file_loadersr7   r   r   	_POPULATEr   r   rG   r:   )	r   locationr   r   specloader_classsuffixesr   dirnamer   r   r   spec_from_file_location  s>    



r   c                   @   sL   e Zd ZdZdZdZedd Zedd Zedd	d
Z	edddZ
dS )WindowsRegistryFinderz;Software\Python\PythonCore\{sys_version}\Modules\{fullname}zASoftware\Python\PythonCore\{sys_version}\Modules\{fullname}\DebugFc                 C   s8   zt t j|W S  tk
r2   t t j| Y S X d S r   )_winregOpenKeyHKEY_CURRENT_USERrJ   HKEY_LOCAL_MACHINE)clsr   r   r   r   _open_registry  s    z$WindowsRegistryFinder._open_registryc              	   C   sr   | j r| j}n| j}|j|dtjd d  d}z&| |}t|d}W 5 Q R X W n t	k
rl   Y d S X |S )Nz%d.%dre   )r   sys_versionr   )
DEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYrW   r   version_infor  r   
QueryValuerJ   )r  r   registry_keyr   hkeyfilepathr   r   r   _search_registry  s    z&WindowsRegistryFinder._search_registryNc                 C   sz   |  |}|d krd S zt| W n tk
r8   Y d S X t D ]4\}}|t|r@tj|||||d}|  S q@d S )Nr   )r  rI   rJ   r   r7   r   r   spec_from_loader)r  r   r>   targetr  r   r   r   r   r   r   	find_spec  s    
zWindowsRegistryFinder.find_specc                 C   s"   |  ||}|d k	r|jS d S d S r   r  r   r  r   r>   r   r   r   r   find_module'  s    z!WindowsRegistryFinder.find_module)NN)N)r   r   r   r  r  r  classmethodr  r  r  r  r   r   r   r   r     s   

r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_LoaderBasicsc                 C   s@   t | |d }|ddd }|dd }|dko>|dkS )Nr+   rh   r   re   __init__)rG   r   r   ro   )r   r   r   filename_base	tail_namer   r   r   r   :  s    z_LoaderBasics.is_packagec                 C   s   d S r   r   r   r   r   r   r   create_moduleB  s    z_LoaderBasics.create_modulec                 C   s8   |  |j}|d kr$td|jtt||j d S )Nz4cannot load module {!r} when get_code() returns None)get_coder   r   rW   r   _call_with_frames_removedexecr   )r   moduler   r   r   r   exec_moduleE  s    z_LoaderBasics.exec_modulec                 C   s   t | |S r   )r   _load_module_shimr   r   r   r   r   load_moduleM  s    z_LoaderBasics.load_moduleN)r   r   r   r   r  r   r#  r   r   r   r   r  5  s   r  c                   @   sJ   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZddddZdd Z	dS )SourceLoaderc                 C   s   t d S r   )rJ   r   r>   r   r   r   
path_mtimeT  s    zSourceLoader.path_mtimec                 C   s   d|  |iS )Nr   )r&  r%  r   r   r   
path_stats\  s    zSourceLoader.path_statsc                 C   s   |  ||S r   )set_data)r   r   
cache_pathr(   r   r   r   _cache_bytecodej  s    zSourceLoader._cache_bytecodec                 C   s   d S r   r   )r   r>   r(   r   r   r   r(  t  s    zSourceLoader.set_datac              
   C   sR   |  |}z| |}W n0 tk
rH } ztd|d|W 5 d }~X Y nX t|S )Nz'source not available through get_data()r   )r   get_datarJ   r   r   )r   r   r>   r   excr   r   r   
get_source{  s    
zSourceLoader.get_sourcer   )	_optimizec                C   s   t jt||dd|dS )Nr  T)dont_inheritrt   )r   r  compile)r   r(   r>   r.  r   r   r   source_to_code  s     zSourceLoader.source_to_codec              	   C   s"  |  |}d }d }d }d}d}zt|}W n tk
rD   d }Y n0X z| |}	W n tk
rj   Y n
X t|	d }z| |}
W n tk
r   Y nX ||d}zt|
||}t|
dd  }|d@ dk}|r$|d@ dk}t	j
d	kr8|st	j
d
kr8| |}t	t|}t|
||| nt|
||	d || W n ttfk
rT   Y n X td|| t||||dS |d kr| |}| ||}td| tjs|d k	r|d k	r|r|d krt	|}t|||}
nt||t|}
z| |||
 W n tk
r   Y nX |S )NFTr   r   r   r+   r   re   neveralwayssizez{} matches {})r   r   r   zcode object from {})r   r   rr   r'  rJ   r    r+  r   
memoryviewr   check_hash_based_pycsr   _RAW_MAGIC_NUMBERr   r   r   r   r   r   r   r1  r   dont_write_bytecoder   r   r3   r*  )r   r   r   r   r   r   
hash_basedcheck_sourcer   str(   r   rs   
bytes_datacode_objectr   r   r   r    s    





zSourceLoader.get_codeN)
r   r   r   r&  r'  r*  r(  r-  r1  r  r   r   r   r   r$  R  s   

r$  c                       sx   e Zd Zdd Zdd Zdd Ze fddZed	d
 Zdd Z	edd Z
dd Zdd Zdd Zdd Z  ZS )
FileLoaderc                 C   s   || _ || _d S r   r   )r   r   r>   r   r   r   r    s    zFileLoader.__init__c                 C   s   | j |j ko| j|jkS r   	__class__r   r   otherr   r   r   __eq__  s    
zFileLoader.__eq__c                 C   s   t | jt | jA S r   hashr   r>   r   r   r   r   __hash__  s    zFileLoader.__hash__c                    s   t t| |S r   )superr>  r#  r"  r@  r   r   r#    s    
zFileLoader.load_modulec                 C   s   | j S r   rC   r"  r   r   r   r      s    zFileLoader.get_filenamec              
   C   sf   t | ttfr:tt|}| W  5 Q R  S Q R X n(t|d}| W  5 Q R  S Q R X d S )Nr)r   r$  ExtensionFileLoaderr]   	open_coderu   readr^   )r   r>   rc   r   r   r   r+    s
    zFileLoader.get_datac                 C   s   |  |r| S d S r   )r   r   r  r   r   r   get_resource_reader  s    
zFileLoader.get_resource_readerc                 C   s    t t| jd |}t|dS )Nr   rJ  )r@   rG   r>   r]   r^   r   resourcer>   r   r   r   open_resource  s    zFileLoader.open_resourcec                 C   s&   |  |sttt| jd |}|S r   )is_resourceFileNotFoundErrorr@   rG   r>   rP  r   r   r   resource_path  s    
zFileLoader.resource_pathc                 C   s(   t |krdS tt| jd |}t|S )NFr   )r8   r@   rG   r>   rO   r   r   r>   r   r   r   rS     s    zFileLoader.is_resourcec                 C   s   t tt| jd S r   )iterr   listdirrG   r>   rF  r   r   r   contents&  s    zFileLoader.contents)r   r   r   r  rC  rG  r   r#  r   r+  rO  rR  rU  rS  rY  __classcell__r   r   rI  r   r>    s   

r>  c                   @   s*   e Zd Zdd Zdd ZddddZd	S )
SourceFileLoaderc                 C   s   t |}|j|jdS )N)r   r4  )rI   st_mtimest_size)r   r>   r;  r   r   r   r'  .  s    zSourceFileLoader.path_statsc                 C   s   t |}| j|||dS )N_mode)r   r(  )r   r   r   r(   rL   r   r   r   r*  3  s    z SourceFileLoader._cache_bytecoderT   r^  c          	      C   s   t |\}}g }|r4t|s4t |\}}|| qt|D ]l}t||}zt| W q< tk
rp   Y q<Y q< tk
r } zt	
d|| W Y  d S d }~X Y q<X q<zt||| t	
d| W n0 tk
r } zt	
d|| W 5 d }~X Y nX d S )Nzcould not create {!r}: {!r}zcreated {!r})rG   rQ   r:   reversedr@   r   mkdirFileExistsErrorrJ   r   r   rd   )	r   r>   r(   r_  parentr   r<   rA   r,  r   r   r   r(  8  s0    
 zSourceFileLoader.set_dataN)r   r   r   r'  r*  r(  r   r   r   r   r[  *  s   r[  c                   @   s   e Zd Zdd Zdd ZdS )SourcelessFileLoaderc                 C   sD   |  |}| |}||d}t||| tt|dd  ||dS )Nr   r   )r   r   )r   r+  r   r   r5  )r   r   r>   r(   r   r   r   r   r  [  s    

zSourcelessFileLoader.get_codec                 C   s   d S r   r   r"  r   r   r   r-  k  s    zSourcelessFileLoader.get_sourceN)r   r   r   r  r-  r   r   r   r   rd  W  s   rd  c                   @   sX   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd ZdS )rK  c                 C   s@   || _ t|s6ztt |}W n tk
r4   Y nX || _d S r   )r   rS   r@   r   rP   rJ   r>   rV  r   r   r   r  |  s    zExtensionFileLoader.__init__c                 C   s   | j |j ko| j|jkS r   r?  rA  r   r   r   rC    s    
zExtensionFileLoader.__eq__c                 C   s   t | jt | jA S r   rD  rF  r   r   r   rG    s    zExtensionFileLoader.__hash__c                 C   s$   t tj|}t d|j| j |S )Nz&extension module {!r} loaded from {!r})r   r  r   create_dynamicr   r   r>   )r   r   r  r   r   r   r    s      z!ExtensionFileLoader.create_modulec                 C   s$   t tj| t d| j| j d S )Nz(extension module {!r} executed from {!r})r   r  r   exec_dynamicr   r   r>   rN  r   r   r   r     s
     zExtensionFileLoader.exec_modulec                    s$   t | jd  t fddtD S )Nr+   c                 3   s   | ]} d | kV  qdS )r  Nr   r	   suffix	file_namer   r   rD     s   z1ExtensionFileLoader.is_package.<locals>.<genexpr>)rG   r>   anyEXTENSION_SUFFIXESr"  r   ri  r   r     s    zExtensionFileLoader.is_packagec                 C   s   d S r   r   r"  r   r   r   r    s    zExtensionFileLoader.get_codec                 C   s   d S r   r   r"  r   r   r   r-    s    zExtensionFileLoader.get_sourcec                 C   s   | j S r   rC   r"  r   r   r   r     s    z ExtensionFileLoader.get_filenameN)r   r   r   r  rC  rG  r  r   r   r  r-  r   r   r   r   r   r   rK  t  s   	rK  c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )_NamespacePathc                 C   s$   || _ || _t|  | _|| _d S r   )_name_pathr   _get_parent_path_last_parent_path_path_finderr   r   r>   path_finderr   r   r   r    s    z_NamespacePath.__init__c                 C   s&   | j d\}}}|dkrdS |dfS )Nrh   r   )r   r>   __path__)rn  ro   )r   rc  dotmer   r   r   _find_parent_path_names  s    z&_NamespacePath._find_parent_path_namesc                 C   s   |   \}}ttj| |S r   )rx  r   r   modules)r   parent_module_namepath_attr_namer   r   r   rp    s    z_NamespacePath._get_parent_pathc                 C   sP   t |  }|| jkrJ| | j|}|d k	rD|jd krD|jrD|j| _|| _| jS r   )r   rp  rq  rr  rn  r   r   ro  )r   parent_pathr   r   r   r   _recalculate  s    
z_NamespacePath._recalculatec                 C   s   t |  S r   )rW  r}  rF  r   r   r   __iter__  s    z_NamespacePath.__iter__c                 C   s   |   | S r   r}  )r   indexr   r   r   __getitem__  s    z_NamespacePath.__getitem__c                 C   s   || j |< d S r   )ro  )r   r  r>   r   r   r   __setitem__  s    z_NamespacePath.__setitem__c                 C   s   t |  S r   )r3   r}  rF  r   r   r   __len__  s    z_NamespacePath.__len__c                 C   s   d | jS )Nz_NamespacePath({!r}))rW   ro  rF  r   r   r   __repr__  s    z_NamespacePath.__repr__c                 C   s   ||   kS r   r  r   itemr   r   r   __contains__  s    z_NamespacePath.__contains__c                 C   s   | j | d S r   )ro  r:   r  r   r   r   r:     s    z_NamespacePath.appendN)r   r   r   r  rx  rp  r}  r~  r  r  r  r  r  r:   r   r   r   r   rm    s   
rm  c                   @   sP   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )_NamespaceLoaderc                 C   s   t |||| _d S r   )rm  ro  rs  r   r   r   r    s    z_NamespaceLoader.__init__c                 C   s   d |jS )Nz<module {!r} (namespace)>)rW   r   )r  r  r   r   r   module_repr  s    z_NamespaceLoader.module_reprc                 C   s   dS )NTr   r"  r   r   r   r     s    z_NamespaceLoader.is_packagec                 C   s   dS Nr   r   r"  r   r   r   r-    s    z_NamespaceLoader.get_sourcec                 C   s   t dddddS )Nr   z<string>r  T)r/  )r0  r"  r   r   r   r     s    z_NamespaceLoader.get_codec                 C   s   d S r   r   r  r   r   r   r    s    z_NamespaceLoader.create_modulec                 C   s   d S r   r   rN  r   r   r   r     s    z_NamespaceLoader.exec_modulec                 C   s   t d| j t | |S )Nz&namespace module loaded with path {!r})r   r   ro  r!  r"  r   r   r   r#  	  s    z_NamespaceLoader.load_moduleN)r   r   r   r  r  r  r   r-  r  r  r   r#  r   r   r   r   r    s   
r  c                   @   sr   e Zd Zedd Zedd Zedd Zedd Zedd
dZedddZ	edddZ
edd Zd	S )
PathFinderc                 C   s@   t tj D ],\}}|d kr(tj|= qt|dr|  qd S )Ninvalidate_caches)listr   path_importer_cacheitemsr   r  )r  r   finderr   r   r   r    s
    

zPathFinder.invalidate_cachesc              	   C   sT   t jd k	rt jstdt t jD ],}z||W   S  tk
rL   Y q"Y q"X q"d S )Nzsys.path_hooks is empty)r   
path_hooksrj   rk   r   r   )r  r>   hookr   r   r   _path_hooks%  s    
zPathFinder._path_hooksc                 C   sh   |dkr,zt  }W n tk
r*   Y d S X ztj| }W n( tk
rb   | |}|tj|< Y nX |S r  )r   rP   rT  r   r  KeyErrorr  )r  r>   r  r   r   r   _path_importer_cache2  s    
zPathFinder._path_importer_cachec                 C   sR   t |dr||\}}n||}g }|d k	r<t||S t|d }||_|S )Nr   )r   r   r  r   r  r   r   )r  r   r  r   r   r   r   r   r   _legacy_get_specH  s    

zPathFinder._legacy_get_specNc           	      C   s   g }|D ]}t |ttfsq| |}|d k	rt|drF|||}n| ||}|d kr\q|jd k	rn|  S |j}|d krt	d|
| qt|d }||_|S )Nr  zspec missing loader)r   ru   bytesr  r   r  r  r   r   r   r   r   r   )	r  r   r>   r  namespace_pathentryr  r   r   r   r   r   	_get_specW  s(    


zPathFinder._get_specc                 C   sd   |d krt j}| |||}|d kr(d S |jd kr\|j}|rVd |_t||| j|_|S d S n|S d S r   )r   r>   r  r   r   r   rm  )r  r   r>   r  r   r  r   r   r   r  w  s    
zPathFinder.find_specc                 C   s   |  ||}|d krd S |jS r   r  r  r   r   r   r    s    zPathFinder.find_modulec                 O   s   ddl m} |j||S )Nr   )MetadataPathFinder)importlib.metadatar  find_distributions)r  r   r   r  r   r   r   r    s    
zPathFinder.find_distributions)N)NN)N)r   r   r   r  r  r  r  r  r  r  r  r  r   r   r   r   r    s    
	


r  c                   @   sV   e Zd Zdd Zdd ZeZdd Zdd Zdd
dZ	dd Z
edd Zdd Zd	S )
FileFinderc                    sp   g }|D ] \ }|  fdd|D  q|| _|p6d| _t| jsVtt | j| _d| _t | _	t | _
d S )Nc                 3   s   | ]}| fV  qd S r   r   rg  r   r   r   rD     s     z&FileFinder.__init__.<locals>.<genexpr>rh   r   )r   _loadersr>   rS   r@   r   rP   _path_mtimeset_path_cache_relaxed_path_cache)r   r>   loader_detailsloadersr   r   r  r   r    s    

zFileFinder.__init__c                 C   s
   d| _ d S )Nr   )r  rF  r   r   r   r    s    zFileFinder.invalidate_cachesc                 C   s*   |  |}|d krd g fS |j|jp&g fS r   )r  r   r   )r   r   r   r   r   r   r     s    
zFileFinder.find_loaderc                 C   s   |||}t ||||dS )Nr   )r   )r   r   r   r>   smslr  r   r   r   r   r    s    
zFileFinder._get_specNc              	   C   s  d}| dd }zt| jp"t j}W n tk
rB   d}Y nX || jkr\|   || _t	 rr| j
}| }n
| j}|}||krt| j|}| jD ]:\}	}
d|	 }t||}t|r| |
|||g|  S qt|}| jD ]r\}	}
zt| j||	 }W n tk
r   Y  d S X tjd|dd ||	 |krt|r| |
||d |  S q|r~td| t|d }|g|_|S d S )	NFrh   re   r   r  z	trying {})	verbosityzpossible namespace for {})ro   rI   r>   r   rP   r\  rJ   r  _fill_cacher   r  r   r  r@   r  rO   r  rQ   rw   r   r   r   r   )r   r   r  is_namespacetail_moduler   cachecache_module	base_pathrh  r   init_filename	full_pathr   r   r   r   r    sP    





 
zFileFinder.find_specc           	   
   C   s   | j }zt|pt }W n tttfk
r:   g }Y nX tj	dsTt
|| _nJt
 }|D ]8}|d\}}}|rd|| }n|}|| q^|| _tj	trdd |D | _d S )Nr   rh   rU   c                 S   s   h | ]}|  qS r   )r   )r	   fnr   r   r   r   *  s     z)FileFinder._fill_cache.<locals>.<setcomp>)r>   r   rX  rP   rT  PermissionErrorNotADirectoryErrorr   r   r   r  r  r   rW   r   addr   r  )	r   r>   rY  lower_suffix_contentsr  r   rv  rh  new_namer   r   r   r    s"    
zFileFinder._fill_cachec                    s    fdd}|S )Nc                    s"   t | std| d | f S )Nzonly directories are supportedrC   )rQ   r   rC   r  r  r   r   path_hook_for_FileFinder6  s    z6FileFinder.path_hook.<locals>.path_hook_for_FileFinderr   )r  r  r  r   r  r   	path_hook,  s    
zFileFinder.path_hookc                 C   s   d | jS )NzFileFinder({!r}))rW   r>   rF  r   r   r   r  >  s    zFileFinder.__repr__)N)r   r   r   r  r  r   r  r   r  r  r  r  r  r  r   r   r   r   r    s   	
3
r  c                 C   s   |  d}|  d}|sB|r$|j}n||kr8t||}n
t||}|sTt|||d}z$|| d< || d< || d< || d< W n tk
r   Y nX d S )N
__loader____spec__r  __file__
__cached__)getr   rd  r[  r   	Exception)nsr   pathname	cpathnamer   r   r   r   r   _fix_up_moduleD  s"    


r  c                  C   s&   t t f} ttf}ttf}| ||gS r   )rK  r   extension_suffixesr[  r   rd  ry   )
extensionssourcebytecoder   r   r   r   [  s    r   c              	   C   s  | a t jat jatjt }dD ]0}|tjkr8t |}n
tj| }t||| qddgfdddgff}|D ]X\}}|d }|tjkrtj| } qqjzt |}W  qW qj tk
r   Y qjY qjX qjtdt|d| t|d	| t|d
d| t|ddd |D  t d}	t|d|	 t d}
t|d|
 |dkrXt d}t|d| t|dt	  t
t  |dkrtd dt
krdt_d S )N)r]   rj   builtinsr   posixr   ntr   r   zimportlib requires posix or ntr   r8   r.   r   _pathseps_with_colonc                 S   s   h | ]}d | qS r   r   r   r   r   r   r     s     z_setup.<locals>.<setcomp>_thread_weakrefwinregr   r   z.pywz_d.pydT)r   r   r   ry  r   _builtin_from_namer   r   r;   r   rl  r   r  r   r:   r   r  )_bootstrap_moduleself_modulebuiltin_namebuiltin_module
os_details
builtin_osr.   r8   	os_modulethread_moduleweakref_modulewinreg_moduler   r   r   _setupf  sL    













r  c                 C   s2   t |  t }tjtj| g tjt	 d S r   )
r  r   r   r  r   r  r  	meta_pathr:   r  )r  supported_loadersr   r   r   _install  s    r  )rT   )N)NNN)r   r   )T)N)N)Or   r]   r   rj   r   r   _MS_WINDOWSr  r   r  r  r.   r8   r   r6   r;   r  r   %_CASE_INSENSITIVE_PLATFORMS_BYTES_KEYr   r   r#   r)   r*   r@   rG   rI   rN   rO   rQ   rS   rd   type__code__r   r!   r   r    r&   r7  r|   rx   r   ry   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESr   r   r   r   r   r   r   r   r   r   r   r   r   r   objectr   r   r   r  r$  r>  r[  rd  rl  rK  rm  r  r  r  r  r   r  r  r   r   r   r   <module>   s   





	


 G(!



D@ H-:?*  
A