
    ;e                    "   	 d a dd lZdd lZdd lZdd lZdd lZej        dk    Zer	d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 eD             ZdZdZeez   Zd	 Z e            Zd
 Zd Zd Zerd Znd Zd Zd Zd Zd Zd Zerd Z nd Z dMdZ! e"e!j#                  Z$d%                    dd          dz   Z&e'(                    e&d          Z)dZ*dZ+dgZ,ere,-                    d            ej.                    Z/d gZ0e0xZ1Z2dNd d!d"Z3d# Z4d$ Z5d% Z6d& Z7d' Z8d( Z9d) Z:d* Z;d+ Z<dOd,Z=dPd-Z>dQd/Z?d0 Z@ eA            ZBdNd eBd1d2ZC G d3 d4          ZD G d5 d6          ZE G d7 d8eE          ZF G d9 d:          ZG G d; d<eGeF          ZH G d= d>eGeE          ZI G d? d@eGeE          ZJ G dA dB          ZK G dC dD          ZLeLZM G dE dF          ZN G dG dH          ZOdNdIZPdJ ZQdK ZRdL ZSd S )RN    win32\/ c                     h | ]}d | S ): ).0ss     4/usr/lib/python3.11/importlib/_bootstrap_external.py	<setcomp>r   2   s    999AA999    )win)cygwindarwinc                      t           j                            t                    r/t           j                            t                    rdndfd} nd } | S )NPYTHONCASEOKs   PYTHONCASEOKc                  F    	 t           j        j         o t          j        v S N)sysflagsignore_environment_osenvironkeys   r   _relax_casez%_make_relax_case.<locals>._relax_caseC   s     py33Js{8JJr   c                      	 dS )NFr	   r	   r   r   r   z%_make_relax_case.<locals>._relax_caseG   s
    G5r   )r   platform
startswith_CASE_INSENSITIVE_PLATFORMS#_CASE_INSENSITIVE_PLATFORMS_STR_KEY)r   r   s    @r   _make_relax_caser#   <   s|    
|:;; <""#FGG 	" CC!C	K 	K 	K 	K 	K 	K	 	 	 r   c                 P    	 t          |           dz                      dd          S )N       little)intto_bytes)xs    r   _pack_uint32r+   O   s&    4FFZ))!X666r   c                 :    	 t                               | d          S Nr'   r(   
from_bytesdatas    r   _unpack_uint32r2   T       9>>$)))r   c                 :    	 t                               | d          S r-   r.   r0   s    r   _unpack_uint16r5   Y   r3   r   c                     	 | sdS t          |           dk    r| d         S d}g }t          t          j        |           D ]\  }}|                    t
                    s|                    t
                    r(|                    t                    p|}t          |z   g}a|                    d          rF|
                                |
                                k    r|}|g}|                    |           |p|}|                    |           d |D             }t          |          dk    r|d         s
|t          z   S |t                              |          z   S )Nr      r   r   c                 F    g | ]}||                     t                    S r	   rstrippath_separators)r
   ps     r   
<listcomp>z_path_join.<locals>.<listcomp>w   s)    ===a1=))===r   )lenmapr   _path_splitrootr    path_sep_tupleendswithr:   r;   path_sepcasefoldappendjoin)
path_partsrootpathnew_roottails        r   
_path_joinrL   `   sj   - 	2z??aa= !#"5zBB 	" 	"NHd"">22 "h6G6G6W6W "77?4 4(""3'' 
"==??h&7&7&9&999 $D 6DDKK%%%%'4D!!!!==4===t99>>$q'>(?"hmmD))))r   c                  L    	 t                               d | D                       S )Nc                 F    g | ]}||                     t                    S r	   r9   )r
   parts     r   r=   z_path_join.<locals>.<listcomp>   s8     > > >"&>dkk/:: > > >r   )rC   rF   )rG   s    r   rL   rL   ~   s7    -}} > >*4> > > ? ? 	?r   c                      	 t           fdt          D                       }|dk     rd fS  d |          |dz   d          fS )Nc              3   B   K   | ]}                     |          V  d S r   )rfind)r
   r<   rI   s     r   	<genexpr>z_path_split.<locals>.<genexpr>   s-      33aDJJqMM333333r   r   r   r7   )maxr;   )rI   is   ` r   _path_splitrV      sY    *3333?33333A1uu4x8T!a%&&\!!r   c                 ,    	 t          j        |           S r   )r   statrI   s    r   
_path_statrZ      s     8D>>r   c                 d    	 	 t          |           }n# t          $ r Y dS w xY w|j        dz  |k    S )NFi   )rZ   OSErrorst_mode)rI   mode	stat_infos      r   _path_is_mode_typer`      sN    ;t$$		   uu(T11s    
!!c                 $    	 t          | d          S )Ni   )r`   rY   s    r   _path_isfilerb      s    )dH---r   c                 N    	 | st          j                    } t          | d          S )Ni @  )r   getcwdr`   rY   s    r   _path_isdirre      s(    ( z||dH---r   c                     	 | sdS t          j        |           d                             dd          }t          |          dk    o)|                    d          p|                    d          S )NFr   r   r   r7   z\\)r   r@   replacer>   r    rB   )rI   rH   s     r   _path_isabsrh      si    , 	5"4((+33C>>4yy1}Q$//&"9"9"PT]]4=P=PQr   c                 8    	 |                      t                    S r   )r    r;   rY   s    r   rh   rh      s    ,///r     c                    	 d                     | t          |                     }t          j        |t          j        t          j        z  t          j        z  |dz            }	 t          j        |d          5 }|	                    |           d d d            n# 1 swxY w Y   t          j
        ||            d S # t          $ r( 	 t          j        |           n# t          $ r Y nw xY w w xY w)N{}.{}rj   wb)formatidr   openO_EXCLO_CREATO_WRONLY_ioFileIOwriterg   r\   unlink)rI   r1   r^   path_tmpfdfiles         r   _write_atomicr{      s;   $ ~~dBtHH--H	(*s{*S\94%<
I 
IB ZD!! 	TJJt	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Hd#####   	Jx     	 	 	D	sT   #B< 8BB< BB< !B"B< <
C.CC.
C)&C.(C))C.i     r'   s   
__pycache__zopt-z.pyz.pywz.pyc)optimizationc                    	 |3t          j        dt                     |d}t          |          |rdnd}t	          j        |           } t          |           \  }}|                    d          \  }}}t          j	        j
        }	|	t          d          d                    |r|n|||	g          }
|)t          j        j        dk    rd}nt          j        j        }t          |          }|dk    rR|                                s"t#          d                    |                    d	                    |
t&          |          }
|
t(          d         z   }t          j        t-          |          s!t/          t	          j                    |          }|d         d
k    r|d         t2          vr
|dd          }t/          t          j        |                    t2                    |          S t/          |t6          |          S )NzFthe debug_override parameter is deprecated; use 'optimization' insteadz2debug_override or optimization must be set to Noner   r7   .$sys.implementation.cache_tag is Noner   z{!r} is not alphanumericz{}.{}{}r   r|   )	_warningswarnDeprecationWarning	TypeErrorr   fspathrV   
rpartitionr   implementation	cache_tagNotImplementedErrorrF   r   optimizestrisalnum
ValueErrorrn   _OPTBYTECODE_SUFFIXESpycache_prefixrh   rL   rd   r;   lstrip_PYCACHE)rI   debug_overrider~   messageheadrK   basesepresttagalmost_filenamefilenames               r   cache_from_sourcer     s   " ! 01C	E 	E 	E#JGG$$$+2rr:dDT""JD$ooc**OD#t


&C
{!"HIIIgg 6$cBCCO9""LL9-L|$$Lr##%% 	N7>>|LLMMM#**?D,OO!21!55H
% 4   	2cjllD11D
 7c>>d1g_<<8D KK((
 
 	

 dHh///r   c                    	 t           j        j        t          d          t	          j        |           } t          |           \  }}d}t           j        Zt           j                            t                    }|
                    |t          z             r|t          |          d          }d}|s6t          |          \  }}|t          k    rt          t           d|           |                    d          }|dvrt          d|          |dk    r|                    dd	          d
         }|
                    t"                    st          dt"                    |t          t"                    d          }|                                st          d|d          |                    d          d         }	t)          ||	t*          d         z             S )Nr   FTz not bottom-level directory in r   >   r|      zexpected only 2 or 3 dots in r   r|   z5optimization portion of filename does not start with zoptimization level z is not an alphanumeric valuer   )r   r   r   r   r   r   rV   r   r:   r;   r    rC   r>   r   r   countrsplitr   r   	partitionrL   SOURCE_SUFFIXES)
rI   r   pycache_filenamefound_in_pycache_prefixstripped_pathpycache	dot_countr~   	opt_levelbase_filenames
             r   source_from_cacher     s    #+!"HIII:dD(..D
#
%*11/BB??=8344 	+M**++,D&*#" *#D))gh ) ) $) ) * * * &&s++IM9IMMNNN	a'..sA66r:&&t,, 	/ .%). . / / / T,	  "" 	3 2< 2 2 2 3 3 3$..s33A6MdMOA,>>???r   c                 2   	 t          |           dk    rd S |                     d          \  }}}|r |                                dd         dk    r| S 	 t          |           }n!# t          t
          f$ r | d d         }Y nw xY wt          |          r|n| S )Nr   r   py)r>   r   lowerr   r   r   rb   )bytecode_pathr   _	extensionsource_paths        r   _get_sourcefiler   $  s     =Qt&11#66D!Y 9??$$RU+t33)'66, ) ) )#CRC()&{33F;;Fs   A% %BBc                     |                      t          t                              r!	 t          |           S # t          $ r Y d S w xY w|                      t          t
                              r| S d S r   )rB   tupler   r   r   r   )r   s    r   _get_cachedr   7  s~    //00 	$X..." 	 	 	DD				5!233	4	4 ts   8 
AAc                 b    	 	 t          |           j        }n# t          $ r d}Y nw xY w|dz  }|S )Nrj      )rZ   r]   r\   )rI   r^   s     r   
_calc_moder   C  sP    =$'    	EMDKs    ''c                 \     	 d fd	}t           t           j        }nd } ||            |S )Nc                     || j         }n'| j         |k    rt          d| j         d||           | |g|R i |S )Nzloader for z cannot handle name)r   ImportError)selfr   argskwargsmethods       r   _check_name_wrapperz(_check_name.<locals>._check_name_wrapperW  sn    <9DDY$+!%DD28<> > > >vdD242226222r   c           	          dD ]1}t          ||          rt          | |t          ||                     2| j                            |j                   d S )N)
__module____name____qualname____doc__)hasattrsetattrgetattr__dict__update)newoldrg   s      r   _wrapz_check_name.<locals>._wrapd  sa    P A A3(( AC'#w*?*?@@@L-----r   r   )
_bootstrapr   )r   r   r   s   `  r   _check_namer   O  sb    3 3 3 3 3 3  	. 	. 	. 
E
v&&&r   c                     	 t          j        dt                     |                     |          \  }}|Dt	          |          r5d}t          j        |                    |d                   t                     |S )NzZfind_module() is deprecated and slated for removal in Python 3.12; use find_spec() insteadz,Not importing directory {}: missing __init__r   )r   r   r   find_loaderr>   rn   ImportWarning)r   fullnameloaderportionsmsgs        r   _find_module_shimr   n  s{     N P%' ' ' ''11FH~#h--~<szz(1+..>>>Mr   c                 x   	 | d d         }|t           k    r0d|d|}t                              d|           t          |fi |t	          |           dk     r/d|}t                              d|           t          |          t          | dd                   }|dz  rd	|d
|}t          |fi ||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   r>   EOFErrorr2   )r1   r   exc_detailsmagicr   r   s         r   _classify_pycr     s     !HE<<<5<<##D'222'11[111
4yy2~~ETEE##D'222w4!9%%Eu} 2858888'11[111Lr   c                    	 t          | dd                   |dz  k    r-d|}t                              d|           t          |fi ||.t          | dd                   |dz  k    rt          d|fi |d S d S )Nr      r%   zbytecode is stale for r   r   )r2   r   r   r   )r1   source_mtimesource_sizer   r   r   s         r   _validate_timestamp_pycr     s    " d1R4j!!lZ&?@@3433##D'222'11[111tBrE{##j(@AA;4;;KK{KKK 	 AAr   c                 D    	 | dd         |k    rt          d|fi |d S )Nr   r   z.hash in bytecode doesn't match hash of source )r   )r1   source_hashr   r   s       r   _validate_hash_pycr     sN      AbDz[  FdFF
 

 
 	
 ! r   c                    	 t          j        |           }t          |t                    r4t                              d|           |t          j        ||           |S t          d	                    |          ||          )Nzcode object from {!r}zNon-code object in {!r}r   rI   )
marshalloads
isinstance
_code_typer   r   _imp_fix_co_filenamer   rn   )r1   r   r   r   codes        r   _compile_bytecoder     s    -=D$
## 9##$;]KKK"!$4443::=II#-9 9 9 	9r   c                 J   	 t          t                    }|                    t          d                     |                    t          |                     |                    t          |                     |                    t	          j        |                      |S )Nr   	bytearrayr   extendr+   r   dumps)r   mtimer   r1   s       r   _code_to_timestamp_pycr    s    1\""DKKQ   KKU##$$$KK[))***KKd##$$$Kr   Tc                     	 t          t                    }d|dz  z  }|                    t          |                     |                    |           |                    t	          j        |                      |S )Nr7   r   )r   r   checkedr1   r   s        r   _code_to_hash_pycr    sm    ,\""D'Q,EKKU##$$$KKKKd##$$$Kr   c                     	 dd l }t          j        |           j        }|                    |          }t          j        d d          }|                    |                     |d                             S )Nr   T)tokenizert   BytesIOreadlinedetect_encodingIncrementalNewlineDecoderdecode)source_bytesr  source_bytes_readlineencodingnewline_decoders        r   decode_sourcer    sq     OOOK55>''(=>>H3D$??O!!,"5"5hqk"B"BCCCr   r   submodule_search_locationsc                ,   	 |:d}t          |d          r'	 |                    |           }ng# t          $ r Y n[w xY wnVt          j        |          }t          |          s3	 t          t          j                    |          }n# t          $ r Y nw xY wt          
                    | ||          }d|_        |Mt                      D ]<\  }}|                    t          |                    r || |          }||_         n=d S |t           u rAt          |d          r0	 |                    |           }|rg |_        n# t          $ r Y nw xY wn||_        |j        g k    r1|r/t'          |          d         }|j                            |           |S )Nz	<unknown>get_filenameoriginT
is_packager   )r   r  r   r   r   rh   rL   rd   r\   r   
ModuleSpec_set_fileattr_get_supported_file_loadersrB   r   r   	_POPULATEr  r  rV   rE   )	r   locationr   r  specloader_classsuffixesr  dirnames	            r   spec_from_file_locationr!  
  s   	  6>** 	!..t44   		 :h''8$$ 	%cjllH==      vh ??DD ~&A&C&C 	 	"L(  x11 %dH55$
 4 "Y..6<(( 	99#..t44
  968D3	    	9 +E'&",, 	<!(++A.G+227;;;Ks0   - 
::"!B 
BB!E   
EEc                       e Zd Z	 dZdZeodev Zed             Z	e
d             Ze
d	d            Ze
d
d            ZdS )WindowsRegistryFinderz;Software\Python\PythonCore\{sys_version}\Modules\{fullname}zASoftware\Python\PythonCore\{sys_version}\Modules\{fullname}\Debugz_d.pydc                     	 t          j        t           j        |           S # t          $ r" t          j        t           j        |           cY S w xY wr   )winregOpenKeyHKEY_CURRENT_USERr\   HKEY_LOCAL_MACHINEr   s    r   _open_registryz$WindowsRegistryFinder._open_registry_  sW    	B>&":C@@@ 	B 	B 	B>&";SAAAAA	Bs   ! )AAc                 4   | j         r| j        }n| j        }|                    |dt          j        d d         z            }	 |                     |          5 }t          j        |d          }d d d            n# 1 swxY w Y   n# t          $ r Y d S w xY w|S )Nz%d.%dr|   )r   sys_versionr   )
DEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYrn   r   version_infor)  r%  
QueryValuer\   )clsr   registry_keyr   hkeyfilepaths         r   _search_registryz&WindowsRegistryFinder._search_registryf  s    ? 	,1LL+L!!8.58H!8L.L " N N	##C(( 7D!,T2667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 	 	 	44	s6   B A;/B ;A??B A?B 
BBNc                 >   |                      |          }|d S 	 t          |           n# t          $ r Y d S w xY wt                      D ]R\  }}|                    t          |                    r+t                              | |||          |          }|c S Sd S )Nr  )r5  rZ   r\   r  rB   r   r   spec_from_loader)r1  r   rI   targetr4  r   r  r  s           r   	find_speczWindowsRegistryFinder.find_specu  s    ''114	x     	 	 	44	 ; = = 	 	FH  x11 !228396(H3M3M:B 3 D D 		 	s   + 
99c                 z    	 t          j        dt                     |                     ||          }||j        S d S )NzpWindowsRegistryFinder.find_module() is deprecated and slated for removal in Python 3.12; use find_spec() insteadr   r   r   r9  r   r1  r   rI   r  s       r   find_modulez!WindowsRegistryFinder.find_module  sN    	
 	 T)	+ 	+ 	+ }}Xt,,;4r   NNr   )r   r   r   r.  r-  _MS_WINDOWSEXTENSION_SUFFIXESr,  staticmethodr)  classmethodr5  r9  r=  r	   r   r   r#  r#  S  s        H	  	'  A8/A#AKB B \B   [    [    [  r   r#  c                   (    e Zd Z	 d Zd Zd Zd ZdS )_LoaderBasicsc                     	 t          |                     |                    d         }|                    dd          d         }|                    d          d         }|dk    o|dk    S )Nr7   r   r   r|   __init__)rV   r  r   r   )r   r   r   filename_base	tail_names        r   r  z_LoaderBasics.is_package  sm    	Nt00::;;A> Q//2'',,Q/	
*FyJ/FFr   c                     d S r   r	   r   r  s     r   create_modulez_LoaderBasics.create_module      88r   c                     	 |                      |j                  }|'t          d                    |j                            t                              t          ||j                   d S )Nz4cannot load module {!r} when get_code() returns None)get_coder   r   rn   r   _call_with_frames_removedexecr   )r   moduler   s      r   exec_modulez_LoaderBasics.exec_module  sf    !}}V_--< --3VFO-D-DF F F,,T4IIIIIr   c                 :    	 t                               | |          S r   )r   _load_module_shimr   r   s     r   load_modulez_LoaderBasics.load_module  s    (++D(;;;r   N)r   r   r   r  rK  rR  rV  r	   r   r   rD  rD    s[        G G G9 9 9J J J< < < < <r   rD  c                   >    e Zd Zd Zd Zd Zd Zd ZdddZd	 Z	d
S )SourceLoaderc                     	 t           r   )r\   r   rI   s     r   
path_mtimezSourceLoader.path_mtime  s    	
 r   c                 2    	 d|                      |          iS )Nr   )r[  rZ  s     r   
path_statszSourceLoader.path_stats  s     
	 ..//r   c                 0    	 |                      ||          S r   )set_data)r   r   
cache_pathr1   s       r   _cache_bytecodezSourceLoader._cache_bytecode  s    	 }}Z...r   c                     d S r   r	   )r   rI   r1   s      r   r_  zSourceLoader.set_data  s    	 	r   c                     	 |                      |          }	 |                     |          }n$# t          $ r}t          d|          |d }~ww xY wt	          |          S )Nz'source not available through get_data()r   )r  get_datar\   r   r  )r   r   rI   r  excs        r   
get_sourcezSourceLoader.get_source  s    B  **	6==..LL 	6 	6 	6G#+- - -256	6 \***s   . 
AA

Ar   )	_optimizec                N    	 t                               t          ||dd|          S )NrP  T)dont_inheritr   )r   rO  compile)r   r1   rI   rg  s       r   source_to_codezSourceLoader.source_to_code  s6    	 33GT459I 4 O O 	Or   c                    	 |                      |          }d }d }d }d}d}	 t          |          }	 |                     |          }	t          |	d                   }	 |                     |          }
||d}	 t          |
||          }t          |
          dd          }|dz  dk    }|rm|dz  dk    }t          j        d	k    rS|st          j        d
k    rA|                     |          }t          j	        t          |          }t          |
|||           nt          |
||	d         ||           t                              d||           t          ||||          S # t           t"          f$ r Y n6w xY w# t$          $ r Y n&w xY w# t$          $ r Y nw xY w# t&          $ r d }Y nw xY w||                     |          }|                     ||          }t                              d|           t*          j        su|s|q|r(|t          j	        |          }t/          |||          }
nt1          ||t3          |                    }
	 |                     |||
           n# t&          $ r Y nw xY w|S )NFTr   r   r   r7   r   r|   neveralwayssizez{} matches {})r   r   r   zcode object from {})r  r   r]  r(   rd  r   
memoryviewr   check_hash_based_pycsr   _RAW_MAGIC_NUMBERr   r   r   r   r   r   r   r\   r   rk  r   dont_write_bytecoder  r  r>   ra  )r   r   r   r   r  r   
hash_basedcheck_sourcer   str1   r   r   
bytes_datacode_objects                  r   rN  zSourceLoader.get_code  sR   	 ''11
3	J-k::M.J__[11  #2g;//(J==77D
 !) -# #KJ -dHk J J%/%5%5bcc%:
%*S[A%5
% +04<1+<L $ :g E E!- !F!%!;x!G!G/3}}[/I/I.2.>$5$0/" /" !34h3>!@ !@ !@ 4 $ , "6
 ( +   #33O]4?A A A0(?L=H J  J  J J (2   ?    D     # 	! 	! 	! MMM	!d ==55L)),DD##$9;GGG' 	M,E( A&"&"2<"@"@K(k<PP-k<.1,.?.?A A$$[-FFFF&   sY   F F E7 8B9E   E43E47
FF
FFF&%F&
I" "
I/.I/N)
r   r   r   r[  r]  ra  r_  rf  rk  rN  r	   r   r   rX  rX    s          0 0 0/ / /  + + + 79 O O O O OR R R R Rr   rX  c                   t     e Zd Z	 d Zd Zd Ze fd            Zed             Zd Z	ed             Z
 xZS )
FileLoaderc                 $    	 || _         || _        d S r   r   )r   r   rI   s      r   rF  zFileLoader.__init__I  s    					r   c                 B    | j         |j         k    o| j        |j        k    S r   	__class__r   r   others     r   __eq__zFileLoader.__eq__O  $    %/1 0/	1r   c                 T    t          | j                  t          | j                  z  S r   hashr   rI   r   s    r   __hash__zFileLoader.__hash__S      DIdi00r   c                 V    	 t          t          |                               |          S r   )superrz  rV  )r   r   r~  s     r   rV  zFileLoader.load_moduleV  s(    	 Z&&228<<<r   c                     	 | j         S r   rY   rU  s     r   r  zFileLoader.get_filenameb      Hyr   c                 `   	 t          | t          t          f          rOt          j        t          |                    5 }|                                cd d d            S # 1 swxY w Y   d S t          j        |d          5 }|                                cd d d            S # 1 swxY w Y   d S )Nr)r   rX  ExtensionFileLoaderrt   	open_coder   readru   )r   rI   rz   s      r   rd  zFileLoader.get_datag  s   5d\+>?@@ 	#s4yy)) #Tyy{{# # # # # # # # # # # # # # # # # # D#&& #$yy{{# # # # # # # # # # # # # # # # # #s#   A  A$'A$B##B'*B'c                 $    ddl m}  ||           S )Nr   )
FileReader)importlib.readersr  )r   rQ  r  s      r   get_resource_readerzFileLoader.get_resource_readerp  s$    000000z$r   )r   r   r   rF  r  r  r   rV  r  rd  r  __classcell__)r~  s   @r   rz  rz  D  s        "  1 1 11 1 1 	= 	= 	= 	= [	=   [# # #     [         r   rz  c                   (    e Zd Z	 d Zd ZdddZdS )SourceFileLoaderc                 @    	 t          |          }|j        |j        dS )N)r   ro  )rZ   st_mtimest_size)r   rI   rv  s      r   r]  zSourceFileLoader.path_statsz  s$    /bj999r   c                 P    t          |          }|                     |||          S )N_mode)r   r_  )r   r   r   r1   r^   s        r   ra  z SourceFileLoader._cache_bytecode  s'    +&&}}]D}===r   rj   r  c                r   	 t          |          \  }}g }|rGt          |          s8t          |          \  }}|                    |           |rt          |          8t          |          D ]g}t	          ||          }	 t          j        |           (# t          $ r Y 4t          $ r(}t          
                    d||           Y d }~ d S d }~ww xY w	 t          |||           t          
                    d|           d S # t          $ r'}t          
                    d||           Y d }~d S d }~ww xY w)Nzcould not create {!r}: {!r}zcreated {!r})rV   re   rE   reversedrL   r   mkdirFileExistsErrorr\   r   r   r{   )	r   rI   r1   r  parentr   rG   rO   re  s	            r   r_  zSourceFileLoader.set_data  s   )&t,,
 	$[00 	$&v..LFDd###  	$[00 	$ Z(( 	 	D--F
	&!!!!"       ++,I,2C9 9 9	-$e,,,''===== 	- 	- 	-''(Et(+- - - - - - - - -	-s6   B
C"	C+CC,D 
D6D11D6N)r   r   r   r]  ra  r_  r	   r   r   r  r  v  sS        H: : :
> > >
 -2 - - - - - - -r   r  c                       e Zd Z	 d Zd ZdS )SourcelessFileLoaderc                     |                      |          }|                     |          }||d}t          |||           t          t	          |          dd          ||          S )Nr   r   )r   r   )r  rd  r   r   rp  )r   r   rI   r1   r   s        r   rN  zSourcelessFileLoader.get_code  s      **}}T"" 
 
 	dHk222 tRSS!
 
 
 	
r   c                     	 d S r   r	   rU  s     r   rf  zSourcelessFileLoader.get_source  s
    5tr   N)r   r   r   rN  rf  r	   r   r   r  r    s5        7
 
 
     r   r  c                   V    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
ed	             Zd
S )r  c                 "    || _         || _        d S r   r   )r   r   rI   s      r   rF  zExtensionFileLoader.__init__  s    				r   c                 B    | j         |j         k    o| j        |j        k    S r   r}  r  s     r   r  zExtensionFileLoader.__eq__  r  r   c                 T    t          | j                  t          | j                  z  S r   r  r  s    r   r  zExtensionFileLoader.__hash__  r  r   c                     	 t                               t          j        |          }t                               d|j        | j                   |S )Nz&extension module {!r} loaded from {!r})r   rO  r   create_dynamicr   r   rI   )r   r  rQ  s      r   rK  z!ExtensionFileLoader.create_module  sK    655' '##$LDI	/ 	/ 	/r   c                     	 t                               t          j        |           t                               d| j        | j                   d S )Nz(extension module {!r} executed from {!r})r   rO  r   exec_dynamicr   r   rI   r   rQ  s     r   rR  zExtensionFileLoader.exec_module  sL    ,,,T->GGG##$NDI	/ 	/ 	/ 	/ 	/r   c                 z    	 t          | j                  d         t          fdt          D                       S )Nr7   c              3   *   K   | ]}d |z   k    V  dS )rF  Nr	   )r
   suffix	file_names     r   rS   z1ExtensionFileLoader.is_package.<locals>.<genexpr>  sA       5 5 
V 33 5 5 5 5 5 5r   )rV   rI   anyr@  )r   r   r  s     @r   r  zExtensionFileLoader.is_package  sR    ?	**1-	 5 5 5 5!35 5 5 5 5 	5r   c                     	 d S r   r	   rU  s     r   rN  zExtensionFileLoader.get_code  s
    Mtr   c                     	 d S r   r	   rU  s     r   rf  zExtensionFileLoader.get_source  s
    Ctr   c                     	 | j         S r   rY   rU  s     r   r  z ExtensionFileLoader.get_filename  r  r   N)r   r   r   rF  r  r  rK  rR  r  rN  rf  r   r  r	   r   r   r  r    s          1 1 11 1 1  / / /5 5 5       [  r   r  c                   V    e Zd Z	 dZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )_NamespacePathr   c                     || _         || _        t          |                                           | _        | j        | _        || _        d S r   )_name_pathr   _get_parent_path_last_parent_path_epoch_last_epoch_path_finderr   r   rI   path_finders       r   rF  z_NamespacePath.__init__  sD    

!&t'<'<'>'>!?!?;'r   c                 X    	 | j                             d          \  }}}|dk    rdS |dfS )Nr   r   )r   rI   __path__)r  r   )r   r  dotmes       r   _find_parent_path_namesz&_NamespacePath._find_parent_path_names  s;    L*//44R"99 = z!!r   c                 p    |                                  \  }}t          t          j        |         |          S r   )r  r   r   modules)r   parent_module_namepath_attr_names      r   r  z_NamespacePath._get_parent_path  s1    -1-I-I-K-K*Ns{#56GGGr   c                    t          |                                           }|| j        k    s| j        | j        k    rJ|                     | j        |          }||j        |j        r|j        | _	        || _        | j        | _        | j	        S r   )
r   r  r  r  r  r  r  r   r  r  )r   parent_pathr  s      r   _recalculatez_NamespacePath._recalculate  s    D113344$000DK4CS4S4S$$TZ==D DK$72 A!%!@DJ%0D"#{Dzr   c                 D    t          |                                           S r   )iterr  r  s    r   __iter__z_NamespacePath.__iter__  s    D%%''(((r   c                 6    |                                  |         S r   r  )r   indexs     r   __getitem__z_NamespacePath.__getitem__"  s      ""5))r   c                     || j         |<   d S r   )r  )r   r  rI   s      r   __setitem__z_NamespacePath.__setitem__%  s     
5r   c                 D    t          |                                           S r   )r>   r  r  s    r   __len__z_NamespacePath.__len__(  s    4$$&&'''r   c                 6    d                     | j                  S )Nz_NamespacePath({!r}))rn   r  r  s    r   __repr__z_NamespacePath.__repr__+  s    %,,TZ888r   c                 .    ||                                  v S r   r  r   items     r   __contains__z_NamespacePath.__contains__.  s    t((****r   c                 :    | j                             |           d S r   )r  rE   r  s     r   rE   z_NamespacePath.append1  s    
$r   N)r   r   r   r  rF  r  r  r  r  r  r  r  r  r  rE   r	   r   r   r  r    s         F( ( (" " "H H H  ) ) )* * *! ! !( ( (9 9 9+ + +         r   r  c                   T    e Zd Zd Zed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
S )NamespaceLoaderc                 2    t          |||          | _        d S r   )r  r  r  s       r   rF  zNamespaceLoader.__init__9  s    #D$<<


r   c                 l    	 t          j        dt                     d                    | j                  S )NzQNamespaceLoader.module_repr() is deprecated and slated for removal in Python 3.12z<module {!r} (namespace)>)r   r   r   rn   r   )rQ  s    r   module_reprzNamespaceLoader.module_repr<  s>    	
 	 ;<N	P 	P 	P*11&/BBBr   c                     dS )NTr	   rU  s     r   r  zNamespaceLoader.is_packageG  s    tr   c                     dS Nr   r	   rU  s     r   rf  zNamespaceLoader.get_sourceJ  s    rr   c                 (    t          dddd          S )Nr   z<string>rP  T)ri  )rj  rU  s     r   rN  zNamespaceLoader.get_codeM  s    r:vDAAAAr   c                     d S r   r	   rJ  s     r   rK  zNamespaceLoader.create_moduleP  rL  r   c                     d S r   r	   r  s     r   rR  zNamespaceLoader.exec_moduleS  s    r   c                 z    	 t                               d| j                   t                               | |          S )Nz&namespace module loaded with path {!r})r   r   r  rT  rU  s     r   rV  zNamespaceLoader.load_moduleV  sA    	 	##$L$(J	0 	0 	0 ++D(;;;r   c                 .    ddl m}  || j                  S )Nr   )NamespaceReader)r  r  r  )r   rQ  r  s      r   r  z#NamespaceLoader.get_resource_readerb  s&    555555tz***r   N)r   r   r   rF  rA  r  r  rf  rN  rK  rR  rV  r  r	   r   r   r  r  8  s        = = = C C \C    B B B9 9 9  
< 
< 
<+ + + + +r   r  c                       e Zd Z	 ed             Zed             Zed             Zed             Zed
d            Z	edd            Z
ed
d            Zed	             ZdS )
PathFinderc                     	 t          t          j                                                  D ]H\  } }|t	          |           st          j        | = $t          |d          r|                                 It          xj        dz  c_        d S )Ninvalidate_cachesr7   )	listr   path_importer_cacheitemsrh   r   r  r  r  )r   finders     r   r  zPathFinder.invalidate_cachesq  s    	C !8!>!>!@!@AA 	+ 	+LD& ~[%6%6~+D11!455 +((*** 	"r   c                     	 t           j        &t           j        st          j        dt                     t           j        D ]}	  ||           c S # t
          $ r Y w xY wd S )Nzsys.path_hooks is empty)r   
path_hooksr   r   r   r   )rI   hooks     r   _path_hookszPathFinder._path_hooks  sx    <>%cn%N4mDDDN 	 	DtDzz!!!    4s   
A
AAc                     	 |dk    r&	 t          j                    }n# t          $ r Y d S w xY w	 t          j        |         }n4# t
          $ r' |                     |          }|t          j        |<   Y nw xY w|S r  )r   rd   FileNotFoundErrorr   r  KeyErrorr  )r1  rI   r  s      r   _path_importer_cachezPathFinder._path_importer_cache  s    	 2::z||$    tt	3,T2FF 	3 	3 	3__T**F,2C#D)))	3 s    
++A .A32A3c                    t          |d          rPt                              |           d}t          j        |t
                     |                    |          \  }}nNt                              |           d}t          j        |t
                     |                    |          }g }|t                              ||          S t          	                    |d           }||_
        |S )Nr   z5.find_spec() not found; falling back to find_loader()z5.find_spec() not found; falling back to find_module())r   r   _object_namer   r   r   r   r=  r7  r  r  )r1  r   r  r   r   r   r  s          r   _legacy_get_speczPathFinder._legacy_get_spec  s     6=)) 
	 --f55 4 4 4CN3...%11(;;FHH --f55 4 4 4CN3...''11FH..x@@@$$Xt44*2'r   Nc                    	 g }|D ]}t          |t                    s|                     |          }|xt          |d          r|                    ||          }n|                     ||          }|o|j        |c S |j        }|t          d          |	                    |           t                              |d           }||_        |S )Nr9  zspec missing loader)r   r   r   r   r9  r  r   r  r   r   r   r  )	r1  r   rI   r8  namespace_pathentryr  r  r   s	            r   	_get_speczPathFinder._get_spec  s    M  	 	EeS)) --e44F!6;// B!++Hf==DD//&AAD<;*KKK:#%&;<<<
 %%h///((488D.<D+Kr   c                     	 |t           j        }|                     |||          }|d S |j        /|j        }|r$d |_        t          ||| j                  |_        |S d S |S r   )r   rI   r  r   r  r  r  )r1  r   rI   r8  r  r  s         r   r9  zPathFinder.find_spec  s|    	 <8D}}XtV44<4[ !<N  #2@>[^[h2i2i/tKr   c                 z    	 t          j        dt                     |                     ||          }|d S |j        S )NzePathFinder.find_module() is deprecated and slated for removal in Python 3.12; use find_spec() insteadr;  r<  s       r   r=  zPathFinder.find_module  sM    	 	 T)	+ 	+ 	+ }}Xt,,<4{r   c                  *    	 ddl m}  |j        | i |S )Nr   )MetadataPathFinder)importlib.metadatar  find_distributions)r   r   r  s      r   r  zPathFinder.find_distributions   s4    	 	:999994!4dEfEEEr   r   r>  )r   r   r   rA  r  r  rB  r   r  r  r9  r=  r  r	   r   r   r  r  m  s       H# # \# 
 
 \
   [*   [(    [>    [.    [ 
F 
F \
F 
F 
Fr   r  c                   V    e Zd Z	 d Zd ZeZd Zd Zd
dZ	d Z
ed             Zd	 ZdS )
FileFinderc                    	 g }|D ]&\  }|                     fd|D                        '|| _        |r|dk    rt          j                    | _        n=t          |          s't          t          j                    |          | _        n|| _        d| _        t                      | _	        t                      | _
        d S )Nc              3       K   | ]}|fV  	d S r   r	   )r
   r  r   s     r   rS   z&FileFinder.__init__.<locals>.<genexpr>  s(      CCFF+CCCCCCr   r   r   )r   _loadersr   rd   rI   rh   rL   _path_mtimeset_path_cache_relaxed_path_cache)r   rI   loader_detailsloadersr  r   s        @r   rF  zFileFinder.__init__  s    	  . 	D 	DFHNNCCCC(CCCCCCC 	ts{{
DIIT"" 	"3:<<66DIIDI55#&55   r   c                     	 d| _         d S )Nr   )r  r  s    r   r  zFileFinder.invalidate_caches*  s    -r   c                     	 t          j        dt                     |                     |          }|d g fS |j        |j        pg fS )NzeFileFinder.find_loader() is deprecated and slated for removal in Python 3.12; use find_spec() instead)r   r   r   r9  r   r  )r   r   r  s      r   r   zFileFinder.find_loader0  s\    	 	 T)	+ 	+ 	+ ~~h''<8O{D;ArAAr   c                 @     |||          }t          ||||          S )Nr  )r!  )r   r  r   rI   smslr8  r   s          r   r  zFileFinder._get_spec?  s7    h--&xfBFH H H 	Hr   Nc                    	 d}|                     d          d         }	 t          | j        pt          j                              j        }n# t          $ r d}Y nw xY w|| j        k    r|                                  || _        t                      r| j
        }|                                }n	| j        }|}||v rqt          | j        |          }| j        D ]E\  }	}
d|	z   }t          ||          }t          |          r|                     |
|||g|          c S Ft#          |          }| j        D ]\  }	}
	 t          | j        ||	z             }n# t$          $ r Y  d S w xY wt&                              d|d           ||	z   |v r*t          |          r|                     |
||d |          c S |r@t&                              d|           t&                              |d           }|g|_        |S d S )	NFr   r|   r   rF  z	trying {})	verbosityzpossible namespace for {})r   rZ   rI   r   rd   r  r\   r  _fill_cacher   r  r   r  rL   r  rb   r  re   r   r   r   r  r  )r   r   r8  is_namespacetail_moduler   cachecache_module	base_pathr  r  init_filename	full_pathr  s                 r   r9  zFileFinder.find_specD  sd   	 ))#..q1	ty8CJLL99BEE 	 	 	EEE	D$$$$D== 	',E&,,..LL$E&L5  "49k::I(, 6 6$ *V 3&y-@@		** b>>,)i[Z`aaaaab
  +955$(M 		8 		8 FL&ty+2FGG		   ttt''Y!'LLLf$--	** 8>>,)*.8 8 8 8 8 	''(CYOOO((488D/8kD+Kts#   ,A AA:E
E"!E"c                 f   	 | j         }	 t          j        |pt          j                              }n# t          t
          t          f$ r g }Y nw xY wt          j        	                    d          st          |          | _        nut                      }|D ]]}|                    d          \  }}}|r)d                    ||                                          }n|}|                    |           ^|| _        t          j        	                    t                     rd |D             | _        d S d S )Nr   r   rl   c                 6    h | ]}|                                 S r	   )r   )r
   fns     r   r   z)FileFinder._fill_cache.<locals>.<setcomp>  s     'F'F'Fr

'F'F'Fr   )rI   r   listdirrd   r  PermissionErrorNotADirectoryErrorr   r   r    r  r  r   rn   r   addr!   r  )	r   rI   contentslower_suffix_contentsr  r   r  r  new_names	            r   r  zFileFinder._fill_cachew  sD   Ry	{4#73:<<88HH!?4FG 	 	 	 HHH	 |&&u-- 	5"8}}D %(EE!  4 4$(NN3$7$7!c6 $&~~dFLLNNCCHH#H%))(33334D<""#>?? 	G'F'FX'F'F'FD$$$	G 	Gs   '2 AAc                      	  fd}|S )Nc                 X    	 t          |           st          d|            | gR  S )Nzonly directories are supportedrY   )re   r   )rI   r1  r  s    r   path_hook_for_FileFinderz6FileFinder.path_hook.<locals>.path_hook_for_FileFinder  sC    ?t$$ O!"BNNNN3t-n----r   r	   )r1  r  r3  s   `` r   	path_hookzFileFinder.path_hook  s/    		. 	. 	. 	. 	. 	. ('r   c                 6    d                     | j                  S )NzFileFinder({!r}))rn   rI   r  s    r   r  zFileFinder.__repr__  s    !((333r   r   )r   r   r   rF  r  r   r=  r   r  r9  r  rB  r4  r  r	   r   r   r  r    s        ) ) )&   $KB B BH H H
1 1 1 1fG G G> ( ( [("4 4 4 4 4r   r  c                 4   |                      d          }|                      d          }|s1|r|j        }n'||k    rt          ||          }nt          ||          }|st	          |||          }	 || d<   || d<   || d<   || d<   d S # t
          $ r Y d S w xY w)N
__loader____spec__)r   __file__
__cached__)getr   r  r  r!  	Exception)nsr   pathname	cpathnamer   r  s         r   _fix_up_moduler@    s    VVL!!F66*D 6 	6[FF"")$99FF%dH55F F&tXfEEE:!<!:$<   s   3B	 	
BBc                  z    	 t           t          j                    f} t          t          f}t
          t          f}| ||gS r   )r  r   extension_suffixesr  r   r  r   )
extensionssourcebytecodes      r   r  r    s>     %d&=&?&??J.F#%66H))r   c                 
    | a d S r   )r   )_bootstrap_modules    r   _set_bootstrap_modulerH    s    "JJJr   c                     	 t          |            t                      }t          j                            t          j        | g           t          j                            t                     d S r   )
rH  r  r   r  r   r  r4  	meta_pathrE   r  )rG  supported_loaderss     r   _installrL    s^    3+,,,355N:/1BCDEEEM$$$$$r   )rj   r   )NNN)r   r   )T)Tr   r   rt   r   r   r   r   r?  ntr   r%  posixr;   rC   r   rA   rF   _pathseps_with_colonr"   %_CASE_INSENSITIVE_PLATFORMS_BYTES_KEYr!   r#   r   r+   r2   r5   rL   rV   rZ   r`   rb   re   rh   r{   type__code__r   r)   r   r(   r/   rr  r   r   r   rE   rB  r@  r   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESr   r   r   r   r   r   r   r   r   r   r   r  r  r  objectr  r!  r#  rD  rX  rz  r  r  r  r  r  _NamespaceLoaderr  r  r@  r  rH  rL  r	   r   r   <module>rW     s#  , 
  



 



      |w& MMMM  SkOOeO 1''''/**99999  '- #(: % E"E!F       7 7 7
* * *
* * *  "?* * * *<? ? ?" " "  2 2 2. . .
. . .  0R R R R0 0 0
   , T-())
j q(++g5NN<:: ' #6""",T,.. H 8I I 5D0 D0 D0 D0 D0 D0N%@ %@ %@PG G G&	 	 		 	 	  >  (  BL L L8
 
 
0
9 
9 
9 
9      	D 	D 	D FHH	D47@D D D D DR@ @ @ @ @ @ @ @F< < < < < < < <<M M M M M= M M M`/  /  /  /  /  /  /  / d*- *- *- *- *-z< *- *- *-Z    :}   22 2 2 2 2*m 2 2 2jA  A  A  A  A  A  A  A N,+ ,+ ,+ ,+ ,+ ,+ ,+ ,+` # 
^F ^F ^F ^F ^F ^F ^F ^FB[4 [4 [4 [4 [4 [4 [4 [4@   .* * *# # #
% % % % %r   