HEX
Server: Apache
System: Linux server-634962.emtiyz.com 5.14.0-611.11.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Dec 3 09:47:37 EST 2025 x86_64
User: codo66ho (1003)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/lib64/python3.9/__pycache__/zipfile.cpython-39.opt-2.pyc
a

�iC[�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
zddlZejZWney�dZejZYn0zddlZWney�dZYn0zddlZWney�dZYn0gd�ZGdd�de�ZGdd�de�ZeZZdZdZdZdZd	Zd
ZdZdZ d
Z!dZ"dZ#dZ$dZ%dZ&e	�'e%�Z(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d	Z1dZ2dZ3dZ4e	�'e3�Z5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=d	Z>dZ?dZ@dZAd
ZBdZCdZDdZEd ZFd!ZGd"ZHd#ZId$ZJe	�'eI�ZKdZLdZMdZNdZOdZPdZQdZRdZSd	ZTdZUdZVdZWd%ZXd&ZYe	�'eX�ZZd'Z[d(Z\e	�'e[�Z]dZ^dZ_dZ`dZadZbdZcdZddZed	ZfdZgd)Zhe	�id*�Zjd+d,�Zkd-d.�Zld/d0�Zmd1d2�Znd3d4�ZoGd5d6�d6ep�Zqdard7d8�Zsd9d:�ZtGd;d<�d<�ZuGd=d>�d>�Zvd?d@dAdAdAdAdBdCdDdEdBdFdGdHdIdJdKdL�ZwdMdN�ZxdndOdP�ZydQdR�ZzGdSdT�dT�Z{GdUdV�dV�Z|GdWdX�dXej}�Z~GdYdZ�dZej}�ZGd[d\�d\�Z�Gd]d^�d^e��Z�d_d`�Z�dadb�Z�e�j�Z�dcdd�Z�Gdedf�dfe��Z�Gdgdh�dhe��Z�Gdidj�dj�Z�dodkdl�Z�e�dmk�r�e��dS)p�N)
�
BadZipFile�
BadZipfile�error�
ZIP_STORED�ZIP_DEFLATED�	ZIP_BZIP2�ZIP_LZMA�
is_zipfile�ZipInfo�ZipFile�	PyZipFile�LargeZipFile�Pathc@seZdZdS)rN��__name__�
__module__�__qualname__�rr�/usr/lib64/python3.9/zipfile.pyr*src@seZdZdS)r
Nrrrrrr
.sr
i���������-�.�?s<4s4H2LHsPK��������	z<4s4B4HL2L5H2LsPK�
��
����z<4s2B4HL2L2HsPKz<4sLQLsPKz
<4sQ2H2L4QsPKiPK�<HHc
Cs�tj}d}g}d}}|dt|�krz||||d��\}}|d|}	||vrt||krl|�|||��|	}d}|	}q|s�|Sd�|�S)NFrr T�)�_EXTRA_FIELD_STRUCT�unpack�len�append�join)
�extraZxidsr/Zmodified�buffer�start�iZxidZxlen�jrrr�_strip_extra�s r8cCs*zt|�rWdSWnty$Yn0dS)NTF)�_EndRecData�OSError��fprrr�_check_zipfile�s
r=c	Csld}zLt|d�rt|d�}n2t|d��}t|�}Wd�n1sD0YWnttfyfYn0|S)NF�readr;�rb)�hasattrr=�openr:r)�filename�resultr<rrrr	�s
*r	c
Cs�|t8}|dkr|S|�|�|�t�}t|�tkr<td��t�t|�\}}}}|tkr\|S|dksl|dkrtt	d��|t
8}||kr�t	d��|�|�||}|�t
�}t|�t
kr�td��|�t�s�||kr�|�|�d}|�t
�}t|�t
kr�td��|�t��st	d��t�t
|�\
}}	}
}}}
}}}}|||k�sN|	dt
|k�rVt	d��||t<||t<|
|t<||t<||t<||t<||t<|||t<|S)	NrzUnknown I/O errorrz3zipfiles that span multiple disks are not supportedz.Corrupt zip64 end of central directory locatorz/Zip64 end of central directory record not foundrz-Corrupt zip64 end of central directory record)�sizeEndCentDir64Locator�seekr>r0r:�structr/�structEndArchive64Locator�stringEndArchive64Locatorr�sizeEndCentDir64�
startswith�stringEndArchive64�structEndArchive64�_ECD_SIGNATURE�_ECD_DISK_NUMBER�_ECD_DISK_START�_ECD_ENTRIES_THIS_DISK�_ECD_ENTRIES_TOTAL�	_ECD_SIZE�_ECD_OFFSET�
_ECD_LOCATION)�fpin�offset�endrec�data�sigZdisknoZreloffZdisksZextraszZsz�create_versionZread_versionZdisk_numZdisk_dirZdircountZ	dircount2ZdirsizeZ	diroffsetrrr�
_EndRecData64�sX






��r[c	Csd|�dd�|��}z|�td�Wnty:YdS0|��}t|�tkr�|dd�tkr�|dd�dkr�t�t	|�}t
|�}|�d�|�|t�t||t|�St
|dtd�}|�|d�|��}|�t�}|dk�r`|||t�}t|�tk�rdSt
t�t	|��}|t}||t|t|�}|�|�|�||�t||||�SdS)Nrrr ���sr-i)rE�tell�sizeEndCentDirr:r>r0�stringEndArchiverFr/�structEndArchive�listr1r[�max�rfind�_ECD_COMMENT_SIZE)	rUZfilesizerXrWZmaxCommentStartr5ZrecDataZcommentSize�commentrrrr9s@��



r9c@sXeZdZdZddd�Zdd�Zdd	d
�Zdd�Zd
d�Ze	ddd�dd��Z
dd�ZdS)r
)�
orig_filenamerB�	date_time�
compress_type�_compresslevelrer3�
create_systemrZ�extract_version�reserved�	flag_bits�volume�
internal_attr�
external_attr�
header_offset�CRC�
compress_size�	file_size�	_raw_time�_end_offset�NoName��rrrrrcCs�||_|�td��}|dkr(|d|�}tjdkrJtj|vrJ|�tjd�}||_||_|ddkrjtd��t	|_
d|_d|_d|_
tjdkr�d|_nd|_t|_t|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr�/ryz+ZIP does not support timestamps before 1980r-�win32r)rf�find�chr�os�sep�replacerBrg�
ValueErrorrrhrirer3�sys�platformrj�DEFAULT_VERSIONrZrkrlrmrnrorprsrtrv)�selfrBrgZ	null_byterrr�__init__hs6
zZipInfo.__init__cCs�d|jj|jfg}|jtkr8|�dt�|j|j��|jd?}|jd@}|rd|�dt	�
|��|rv|�d|�|��}|r�|jr�|�d|j�|r�|j
r�|jtks�|j|j
kr�|�d|j
�|�d	�d
�|�S)Nz<%s filename=%r� compress_type=%sr)rz filemode=%rz external_attr=%#xz
 file_size=%rz compress_size=%r�>�)�	__class__rrBrhrr1�compressor_names�getrp�stat�filemode�is_dirrtrsr2)r�rC�hi�lo�isdirrrr�__repr__�s0
��



�
�
zZipInfo.__repr__NcCs||j}|ddd>|dd>B|dB}|dd>|d	d>B|ddB}|jd
@rfd}}}n|j}|j}|j}|j}d}	|dur�|tkp�|tk}|r�d}
|t�|
dt�	|
�d	||�}|tks�|tkr�|s�t
d��d
}d
}t}	|jt
k�rtt|	�}	n|jtk�rtt|	�}	t|	|j�|_t|	|j�|_|��\}}t�tt|j|j||j|||||t|�t|��
}
|
||S)Nrryr$rr!rrr&r rz<HHQQz'Filesize would require ZIP64 extensions���)rgrmrrrsrtr3�ZIP64_LIMITrF�pack�calcsizer
�
ZIP64_VERSIONrhrrb�
BZIP2_VERSIONr�LZMA_VERSIONrkrZ�_encodeFilenameFlags�structFileHeader�stringFileHeaderrlr0)r��zip64�dt�dosdate�dostimerrrsrtr3�min_version�fmtrBrm�headerrrr�
FileHeader�sJ$$
�


�zZipInfo.FileHeadercCsBz|j�d�|jfWSty<|j�d�|jdBfYS0dS)N�ascii�utf-8�)rB�encoderm�UnicodeEncodeError�r�rrrr��szZipInfo._encodeFilenameFlagscCs2|j}tj}t|�dk�r.|d|dd��\}}|dt|�krPtd||f��|dk�r|d|d�}z�|jdvr�d}|d|dd��\|_|dd�}|jd	kr�d
}|d|dd��\|_|dd�}|jd	kr�d}|d|dd��\|_Wn(tj�ytd|�d
��d�Yn0||dd�}qdS)Nr r,z"Corrupt extra field %04x (size=%d)r)l����r�z	File sizez<Qrr�z
Compress sizez
Header offsetzCorrupt zip64 extra field. z not found.)	r3rFr/r0rrtrsrqr)r�r3r/�tpZlnrXZfieldrrr�_decodeExtra�s6



��zZipInfo._decodeExtraT��strict_timestampsc	Cst|tj�rt�|�}t�|�}t�|j�}t�|j	�}|dd�}|sZ|ddkrZd}n|sn|ddkrnd}|durz|}tj
�tj
�|�d�}|dtj
tjfvr�|dd�}q�|r�|d7}|||�}|jd	@d
>|_|r�d|_|jd
O_n|j|_|S)Nrr"ryrx�;)r�r���;r�rrzrr))�
isinstancer~�PathLike�fspathr��S_ISDIR�st_mode�time�	localtime�st_mtime�path�normpath�
splitdriver�altseprprt�st_size)	�clsrB�arcnamer��str��mtimerg�zinforrr�	from_file�s0



zZipInfo.from_filecCs|jddkS)N���rz�rBr�rrrr�!szZipInfo.is_dir)rwrx)N)N)rrr�	__slots__r�r�r�r�r��classmethodr�r�rrrrr
Ms
,
.%r
cCs0td�D]"}|d@r"|d?dA}q|dL}q|S)Nrrl q[)�range)�crcr7rrr�_gen_crc+s

r�csld�d�d�tdur&ttttd���at��fdd������fdd��|D]}�|�qL��fd	d
�}|S)NixV4i�gE#i�xV4�cs|d?�||Ad@AS)Nr�r)Zchr�)�crctablerr�crc32Esz_ZipDecrypter.<locals>.crc32cs<�|�����d@d@��ddd@���d?���dS)Nr�r�i�r�r)�c)r��key0�key1�key2rr�update_keysIs
z"_ZipDecrypter.<locals>.update_keyscsNt�}|j}|D]4}�dB}|||dAd?d@N}�|�||�qt|�S)Nrrrr�)�	bytearrayr1�bytes)rXrCr1r��k)r�r�rr�	decrypterSs
z _ZipDecrypter.<locals>.decrypter)�	_crctablera�mapr�r�)�pwd�pr�r)r�r�r�r�r�r�r�
_ZipDecrypter;s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�LZMACompressorcCs
d|_dS�N)�_compr�rrrr�cszLZMACompressor.__init__cCsFt�dtji�}tjtjt�tj|�gd�|_t�dddt	|��|S)N�id��filtersz<BBHr$r )
�lzma�_encode_filter_properties�FILTER_LZMA1r��
FORMAT_RAW�_decode_filter_propertiesr�rFr�r0)r�Zpropsrrr�_initfs
�
zLZMACompressor._initcCs*|jdur|��|j�|�S|j�|�Sr�)r�r��compress)r�rXrrrr�ms
zLZMACompressor.compresscCs&|jdur|��|j��S|j��Sr�)r�r��flushr�rrrr�rs
zLZMACompressor.flushN)rrrr�r�r�r�rrrrr�asr�c@seZdZdd�Zdd�ZdS)�LZMADecompressorcCsd|_d|_d|_dS)Nr-F)�_decomp�_unconsumed�eofr�rrrr�zszLZMADecompressor.__init__c	Cs�|jdur�|j|7_t|j�dkr*dSt�d|jdd��\}t|j�d|krXdStjtjt�tj	|jdd|��gd�|_|jd|d�}|`|j�
|�}|jj|_|S)Nr r-z<Hrr�)r�r�r0rFr/r�r�r�r�r��
decompressr�)r�rXZpsizerCrrrr�s"
��

zLZMADecompressor.decompressN)rrrr�r�rrrrr�xsr��storeZshrink�reduceZimplode�tokenizeZdeflateZ	deflate64�bzip2r�ZterseZlz77ZwavpackZppmd)rrrrr r!r"r#rr$r%rrr+��a�bcCsX|tkr
nJ|tkr tsTtd��n4|tkr6tsTtd��n|tkrLtsTtd��ntd��dS)Nz.Compression requires the (missing) zlib modulez-Compression requires the (missing) bz2 modulez.Compression requires the (missing) lzma modulez(That compression method is not supported)	rr�zlib�RuntimeErrorr�bz2rr��NotImplementedError)�compressionrrr�_check_compression�s$���rcCsj|tkr2|dur t�|tjd�St�tjtjd�S|tkrT|durLt�|�St��S|tkrbt	�SdSdS)N��)
rr��compressobj�DEFLATED�Z_DEFAULT_COMPRESSIONrr��
BZ2Compressorrr�)rh�
compresslevelrrr�_get_compressor�s
rcCsvt|�|tkrdS|tkr&t�d�S|tkr6t��S|tkrDt	�St
�|�}|rdtd||f��ntd|f��dS)Nrzcompression type %d (%s)zcompression type %d)
rrrr��
decompressobjrr��BZ2Decompressorrr�r�r�r�)rhZdescrrrr�_get_decompressor�s

r
c@s8eZdZdd�Zdd�Zddd�Zdd	d
�Zdd�Zd
S)�_SharedFilecCs*||_||_||_||_||_|j|_dSr�)�_file�_pos�_close�_lock�_writing�seekable)r��file�pos�close�lock�writingrrrr��sz_SharedFile.__init__cCs|jSr�)r
r�rrrr]�sz_SharedFile.tellrcCsZ|j�@|��rtd��|j�||�|j��|_|jWd�S1sL0YdS)Nz}Can't reposition in the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rrr�rrEr]r
)r�rV�whencerrrrE�sz_SharedFile.seekr�cCsd|j�J|��rtd��|j�|j�|j�|�}|j��|_|Wd�S1sV0YdS)N�yCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rrr�rrEr
r>r]�r��nrXrrrr>�sz_SharedFile.readcCs$|jdur |j}d|_|�|�dSr�)rr)r��fileobjrrrr�s
z_SharedFile.closeN)r)r�)rrrr�r]rEr>rrrrrr�s



rc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	_TellablecCs||_d|_dS�Nr)r<rV�r�r<rrrr�sz_Tellable.__init__cCs|j�|�}|j|7_|Sr�)r<�writerV)r�rXrrrrr
sz_Tellable.writecCs|jSr�)rVr�rrrr]sz_Tellable.tellcCs|j��dSr�)r<r�r�rrrr�sz_Tellable.flushcCs|j��dSr�)r<rr�rrrrsz_Tellable.closeN)rrrr�rr]r�rrrrrrs
rcs�eZdZdZdZdZd'dd�Zdd	�Zd
d�Zd(d
d�Z	d)dd�Z
dd�Zd*dd�Zdd�Z
dd�Zdd�Zdd�Z�fdd�Zd d!�Zd+d#d$�Zd%d&�Z�ZS),�
ZipExtFilei@iiNFcCs&||_||_||_|j|_|j|_|j|_t	|j�|_
d|_d|_d|_
d|_||_|j|_t|d�rz|j|_td�|_nd|_d|_z4|��r�|��|_|j|_|j|_|j|_d|_Wnty�Yn0d|_|�r"|j d@r�|j!d?d@}n|jd?d@}|�"�}||k�r"t#d	|j$��dS)
NFr-rrrTrr�r�zBad password for file %r)%�_fileobj�_pwd�_close_fileobjrh�_compress_typers�_compress_leftrt�_leftr
�
_decompressor�_eof�_readbuffer�_offset�newlines�moderB�namer@rr�
_expected_crcr��_running_crc�	_seekablerr]�_orig_compress_start�_orig_compress_size�_orig_file_size�_orig_start_crc�AttributeError�
_decrypterrmru�_init_decrypterr�rf)r�rr,�zipinfor�Z
close_fileobjZ
check_byte�hrrrr�'sF




zZipExtFile.__init__cCs4t|j�|_|j�d�}|jd8_|�|�dS)Nrr&)r�r"r6r!r>r%)r�r�rrrr7ZszZipExtFile._init_decryptercCsvd|jj|jjfg}|jsX|�d|j|jf�|jtkrb|�dt	�
|j|j��n
|�d�|�d�d�|�S)N�<%s.%sz name=%r mode=%rr��	 [closed]r�r�)r�rr�closedr1r-r,r$rr�r�r2�r�rCrrrr�es�
��

zZipExtFile.__repr__r�cCsL|dkr>|j�d|j�d}|dkr>|j|j|�}||_|Stj�||�S)Nr�
r)r)r|r*�io�BufferedIOBase�readline)r��limitr6�linerrrrAsszZipExtFile.readlinercCsr|t|j�|jkr\|�|�}t|�|jkrJ||j|jd�|_d|_n|jt|�8_|j|j|jd�S)Nri)r0r)r*r>)r�r�chunkrrr�peek�s
zZipExtFile.peekcCs|jrtd��dS)N�I/O operation on closed file.T)r<r�r�rrr�readable�szZipExtFile.readablecCs|jrtd��|dus|dkrV|j|jd�}d|_d|_|jsR||�|j�7}q:|S||j}|t|j�kr�|j|j|�}||_|S|t|j�}|j|jd�}d|_d|_|dk�r|j�s|�|�}|t|�kr�||_||_||d|�7}�q||7}|t|�8}q�|S)Nzread from closed file.rr-)r<r�r)r*r(�_read1�MAX_Nr0)r�r�buf�endrXrrrr>�s8

zZipExtFile.readcCs@|jdurdSt||j�|_|jr<|j|jkr<td|j��dS)NzBad CRC-32 for file %r)r.r�r/r(rr-)r��newdatarrr�_update_crc�s

zZipExtFile._update_crccCs|dus|dkrR|j|jd�}d|_d|_|jsN|�|j�}|r,||7}qNq,|S||j}|t|j�kr�|j|j|�}||_|S|t|j�}|j|jd�}d|_d|_|dk�r|j�s|�|�}|t|�kr�||_||_||d|�7}�q|r�||7}�qq�|S�Nrr-)r)r*r(rHrIr0)r�rrJrXrKrrr�read1�s>


zZipExtFile.read1cCs"|js|dkrdS|jtkrH|jj}|t|�krR||�|t|��7}n
|�|�}|jtkrj|jdk|_nx|jtkr�t	||j
�}|j�||�}|jjp�|jdko�|jj|_|jr�||j�
�7}n |j�|�}|jjp�|jdk|_|d|j�}|jt|�8_|jdk�rd|_|�|�|S)Nrr-T)r(r$rr'�unconsumed_tailr0�_read2rr%rb�
MIN_READ_SIZEr�r�r�r&rMrrrrrH�s4




�
zZipExtFile._read1cCsd|jdkrdSt||j�}t||j�}|j�|�}|jt|�8_|sLt�|jdur`|�|�}|SrN)	r%rbrR�minr!r>r0�EOFErrorr6rrrrrQs


zZipExtFile._read2cs0z|jr|j��Wt���nt���0dSr�)r#r!r�superr��r�rrrszZipExtFile.closecCs|jrtd��|jS�NrF)r<r�r0r�rrrr"szZipExtFile.seekablercCsL|jrtd��|jst�d��|��}|dkr4|}n.|dkrF||}n|dkrZ|j|}ntd��||jkrr|j}|dkr~d}||}||j}|dkr�|t|j	�kr�||_d}nf|dk�r|j
�|j�|j
|_|j|_|j|_d|_	d|_t|j�|_d|_|}|jdu�r|��|dk�rDt|j|�}|�|�||8}�q|��S)	Nzseek on closed file.�!underlying stream is not seekablerrrzCwhence must be os.SEEK_SET (0), os.SEEK_CUR (1), or os.SEEK_END (2)r-F)r<r�r0r?�UnsupportedOperationr]r3r*r0r)r!rEr1r4r/r2r%r&r
r$r'r(r6r7rS�
MAX_SEEK_READr>)r�rVrZcurr_posZnew_posZread_offsetZbuff_offsetZread_lenrrrrE'sL






zZipExtFile.seekcCs>|jrtd��|jst�d��|j|jt|j�|j	}|S)Nztell on closed file.rX)
r<r�r0r?rYr3r&r0r)r*)r�Zfileposrrrr]Ys
zZipExtFile.tell)NF)r�)r)r�)r)rrrrIrRrZr�r7r�rArErGr>rMrOrHrQrrrEr]�
__classcell__rrrVrr s(�
3



#
%$
2r cs@eZdZdd�Zedd��Zdd�Zdd�Z�fd	d
�Z�Z	S)�
_ZipWriteFilecCs8||_||_||_t|j|j�|_d|_d|_d|_	dSr)
�_zinfo�_zip64�_zipfilerrhri�_compressor�
_file_size�_compress_size�_crc)r��zfr�r�rrrr�cs�z_ZipWriteFile.__init__cCs|jjSr�)r_r<r�rrrr!msz_ZipWriteFile._fileobjcCsdS)NTrr�rrr�writableqsz_ZipWriteFile.writablecCs�|jrtd��t|ttf�r&t|�}nt|�}|j}|j|7_t	||j
�|_
|jrt|j�|�}|j
t|�7_
|j�|�|SrW)r<r�r�r�r�r0�
memoryview�nbytesrar�rcr`r�rbr!r)r�rXrgrrrrts
z_ZipWriteFile.writec	sj|jr
dS�zNt���|jrR|j��}|jt|�7_|j�|�|j|j	_
n
|j|j	_
|j|j	_
|j|j	_|j	jd@r�|jr�dnd}|j�t�|t|j	j
|j	j
|j	j��|j��|j_nn|js�|jtkr�td��|jtkr�td��|j��|j_|j�|j	j�|j�|j	�|j��|j�|jj�|jj�|j	�|j	|jj|j	j<Wd|j_ n
d|j_ 0dS)Nrz<LLQQz<LLLLz+File size unexpectedly exceeded ZIP64 limitz1Compressed size unexpectedly exceeded ZIP64 limitF)!r<rUrr`r�rbr0r!rr]rsrarcrrrtrmr^rFr��
_DD_SIGNATUREr]r_�	start_dirr�r�rErqr��filelistr1�
NameToInforBr)r�rJr�rVrrr�sD




�
�
�z_ZipWriteFile.close)
rrrr��propertyr!rerrr[rrrVrr\bs

r\c@s eZdZdZdZdeddfdd�dd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zd<dd�Z
dd�Zdd�Zdd�Zedd��Zejdd��Zd=dd�Zd>d d!�d"d#�Zd?d$d%�Zd@d&d'�ZdAd(d)�Zed*d+��Zd,d-�Zd.d/�ZdBd0d1�ZdCd2d3�Zd4d5�Zd6d7�Z d8d9�Z!d:d;�Z"dS)DrN�rTr�c
	CsH|dvrtd��t|�||_d|_d|_i|_g|_||_||_||_	d|_
d|_||_t
|tj�rpt�|�}t
|t�r�d|_||_dddd	dd
dd�}||}zt�||�|_Wq�ty�||vr�||}Yq��Yq�0q�q�nd
|_||_t|dd�|_d
|_t��|_d|_d|_�z|dk�r2|��n�|dv�r�d|_z|j� �|_!Wn0t"tf�y�t#|j�|_d|_!d|_Yn40z|j�$|j!�Wnt"tf�y�d|_Yn0nd|dk�rz|��|j�$|j!�Wn4t%�y|j�$dd�d|_|j� �|_!Yn0ntd��Wn$|j}	d|_|�&|	��Yn0dS)N)rm�w�x�az+ZipFile requires mode 'r', 'w', 'x', or 'a'Frr-r?�w+b�x+b�r+b�wb�xb)rmrnrorprsrqrrrr-Trm)rnrorprz"Mode must be 'r', 'w', 'x', or 'a')'r�r�_allowZip64�
_didModify�debugrkrjr�rr,r��_comment�_strict_timestampsr�r~r�r��str�_filePassedrBr?rAr<r:�getattr�_fileRefCnt�	threading�RLockrr0r�_RealGetContentsr]rir5rrEr�_fpclose)
r�rr,r��
allowZip64rr�ZmodeDictr�r<rrrr��s�

�





zZipFile.__init__cCs|Sr�rr�rrr�	__enter__+szZipFile.__enter__cCs|��dSr��r)r��type�value�	tracebackrrr�__exit__.szZipFile.__exit__cCs�d|jj|jjfg}|jdurd|jr8|�d|j�n|jdurR|�d|j�|�d|j�n
|�d�|�d�d�|�S)Nr:z file=%rz filename=%rz mode=%rr;r�r�)	r�rrr<r|r1rBr,r2r=rrrr�1s�



zZipFile.__repr__cCs�|j}zt|�}Wnty,td��Yn0|s:td��|jdkrLt|�|t}|t}|t|_	|t
||}|jdkr�||}td|||�|||_|�|jd�|�
|�}t�|�}d}||k�r�|�
t�}	t|	�tkr�td��t�t|	�}	|	ttk�rtd��|jdk�r$t|	�|�
|	t�}
|	d}|d	@�rP|
�d
�}
n
|
�d�}
t|
�}|�
|	t�|_|�
|	t�|_|	t|_|	dd�\|_ |_!|_"|_#|_$|_%}
}|_&|_'|_(|j"t)k�r�t*d
|j"d��|	dd�\|_+|_,|_-|
|_.|d?d|d?d@|d@|
d?|
d?d@|
d@df|_/|�0�|j||_|j1�2|�||j3|j4<|t|	t|	t|	t}|jdkr�td|�q�|j}t5|j1dd�dd�D]}||_6|j}�q�dS)NzFile is not a zip filerrzgiven, inferred, offsetrzTruncated central directoryz&Bad magic number for central directoryr!r�r��cp437rzzip file version %.1fr%r(r+r$ryr�r&r�totalcSs|jSr�)rq)r�rrr�<lambda>�r-z*ZipFile._RealGetContents.<locals>.<lambda>T)�key�reverse)7r<r9r:rrx�printrRrS�_ECD_COMMENTryrTrirEr>r?�BytesIO�sizeCentralDirr0rFr/�structCentralDir�
_CD_SIGNATURE�stringCentralDir�_CD_FILENAME_LENGTH�decoder
�_CD_EXTRA_FIELD_LENGTHr3�_CD_COMMENT_LENGTHre�_CD_LOCAL_HEADER_OFFSETrqrZrjrkrlrmrhrrrsrt�MAX_EXTRACT_VERSIONr�rnrorprurgr�rjr1rkrB�sortedrv)r�r<rWZsize_cdZ	offset_cd�concatZinferredrXr��centdirrB�flagsro�t�dZ
end_offsetr�rrrr�?s�











�����
�
zZipFile._RealGetContentscCsdd�|jD�S)NcSsg|]
}|j�qSrr�)�.0rXrrr�
<listcomp>�r-z$ZipFile.namelist.<locals>.<listcomp>�rjr�rrr�namelist�szZipFile.namelistcCs|jSr�r�r�rrr�infolist�szZipFile.infolistcCsLtdd|d�|jD]0}d|jdd�}td|j||jf|d�qdS)Nz%-46s %19s %12s)z	File NamezModified    ZSize)rz%d-%02d-%02d %02d:%02d:%02dr"z
%-46s %s %12d)r�rjrgrBrt)r�rr��daterrr�printdir�s�
�zZipFile.printdirc	Cspd}|jD]`}z>|�|jd��}|�|�r,q Wd�n1s@0YWq
tyh|jYS0q
dS)Nirm)rjrArBr>r)r�Z
chunk_sizer��frrr�testzip�s

$zZipFile.testzipcCs$|j�|�}|dur td|��|S)Nz(There is no item named %r in the archive)rkr��KeyError)r�r-�inforrr�getinfo�s�zZipFile.getinfocCs6|r t|t�s tdt|�j��|r,||_nd|_dS)N�pwd: expected bytes, got %s)r�r��	TypeErrorr�rr�)r�r�rrr�setpassword�s
zZipFile.setpasswordcCs|jSr�)ryr�rrrre�szZipFile.commentcCs^t|t�stdt|�j��t|�tkrNddl}|jdtdd�|dt�}||_	d|_
dS)Nzcomment: expected bytes, got %srz3Archive comment is too long; truncating to %d bytesr��
stacklevelT)r�r�r�r�rr0�ZIP_MAX_COMMENT�warnings�warnryrw)r�rer�rrrre�s
��cCs:|�|d|��}|��Wd�S1s,0YdS�Nrm�rAr>)r�r-r�r<rrrr>�szZipFile.readF��force_zip64csJ|dvrtd��|r0t|t�s0tdt|�j��|rD|dkrDtd���jsRtd��t|t�rb|}n,|dkr�t|�}�j|_	�j
|_n
��|�}|dkr��j
||d�S�jr�td���jd	7_t�j|j�j�j�fd
d��}�zL|�t�}t|�tk�rtd��t�t|�}|ttk�r&td
��|�|t�}|t�rL|�|t�|jd@�r`t d��|jd@�rtt d��|t!d@�r�|�"d�}	n
|�"d�}	|	|j#k�r�td|j#|f��|j$du�r�|�%�|j&|j$k�r�td|j#�d���|jd	@}
|
�r|�s�j'}|�st(d|��nd}t)||||d�WS|�*��Yn0dS)N>rnrmzopen() requires mode "r" or "w"r�rnz'pwd is only supported for reading filesz2Attempt to use ZIP archive that was already closedr�rrcs�jSr�)rrr�rrr�	r-zZipFile.open.<locals>.<lambda>zTruncated file headerz Bad magic number for file header� z$compressed patched data (flag bit 5)�@zstrong encryption (flag bit 6)r�r�r�z/File name in directory %r and header %r differ.zOverlapped entries: z (possible zip bomb)z6File %r is encrypted, password required for extractionT)+r�r�r�r�r�rr<r
r�rhrrir��_open_to_writerr~rrqr�rr>�sizeFileHeaderr0rrFr/r��
_FH_SIGNATUREr��_FH_FILENAME_LENGTH�_FH_EXTRA_FIELD_LENGTHrmr��_FH_GENERAL_PURPOSE_FLAG_BITSr�rfrvr]rsr�r�r r)r�r-r,r�r�r�Zzef_fileZfheader�fnameZ	fname_strZis_encryptedrr�rrA�s��



�


���
�zZipFile.opencCs�|r|jstd��|jr td��d|_d|_d|_|jtkrJ|jdO_|js^|jdO_|j	sjd|_	|jo�|p�|j
dtk}|jr�|j�
|j�|j��|_|�|�d|_|j�|�|��d|_t|||�S)	NzHforce_zip64 is True, but allowZip64 was False when opening the ZIP file.zzCan't write to the ZIP file while there is another write handle open on it. Close the first handle before opening another.rrr��g�������?T)rvr�rrsrrrmrhrr0rprtr�r<rErir]rq�_writecheckrwrr�r\)r�r�r�r�rrrr�>s4
�
�
zZipFile._open_to_writecCs*|durt��}n
t�|�}|�|||�Sr�)r~�getcwdr��_extract_member)r��memberr�r�rrr�extractgs

zZipFile.extractcCsH|dur|��}|dur"t��}n
t�|�}|D]}|�|||�q0dSr�)r�r~r�r�r�)r�r��membersr�r8rrr�
extractallts

zZipFile.extractallcCs^|j}|s(d}t�|dt|��}||_|�|�}dd�|�|�D�}|�dd�|D��}|S)Nz:<>|"?*�_css|]}|�d�VqdS)�.N)�rstrip�r�rorrr�	<genexpr>�r-z1ZipFile._sanitize_windows_name.<locals>.<genexpr>css|]}|r|VqdSr�rr�rrrr��r-)�!_windows_illegal_name_trans_tabler{�	maketransr0�	translate�splitr2)r�r��pathsep�tableZillegalrrr�_sanitize_windows_name�s
zZipFile._sanitize_windows_namec	sxt|t�s|�|�}|j�dtjj�}tjjrB|�tjjtjj�}tj�	|�d}dtjj
tjjf�tjj��fdd�|�
tjj�D��}tjjdkr�|�|tjj�}tj�||�}tj�|�}tj�|�}|r�tj�|�s�t�|�|���rtj�|��st�|�|S|j||d��H}t|d��}t�||�Wd�n1�sJ0YWd�n1�sj0Y|S)	Nrzrr�c3s|]}|�vr|VqdSr�rr��Zinvalid_path_partsrrr��s�z*ZipFile._extract_member.<locals>.<genexpr>�\�r�rt)r�r
r�rBr�r~r�rr�r��curdir�pardirr2r�r�r��dirname�exists�makedirsr�r��mkdirrA�shutil�copyfileobj)r�r��
targetpathr�r�Z	upperdirs�source�targetrr�rr��s2

&


�LzZipFile._extract_membercCs�|j|jvr(ddl}|jd|jdd�|jdvr:td��|jsHtd��t|j�|j	s�d}t
|j�tkrpd}n|j
tkr�d	}n|jtkr�d
}|r�t|d��dS)NrzDuplicate name: %rrr��rnrorpz&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closed�Files countZFilesizezZipfile size� would require ZIP64 extensions)rBrkr�r�r,r�r<rrhrvr0rj�ZIP_FILECOUNT_LIMITrtr�rqr
)r�r�r��requires_zip64rrrr��s,
�


�zZipFile._writecheckc	Cs�|jstd��|jrtd��tj|||jd�}|��rDd|_d|_n0|durT||_	n|j
|_	|durl||_n|j|_|���r&|j
��|jr�|j�|j�|j��|_|j	tkr�|jdO_|�|�d|_|j�|�||j|j<|j�|�d��|j��|_Wd�n1�s0Ynht|d��L}|�|d	��}t�||d
�Wd�n1�sd0YWd�n1�s�0YdS)N�7Attempt to write to ZIP archive that was already closedz>Can't write to ZIP archive while an open writing handle existsr�rrTFr?rni ) r<r�rr
r�rzr�rsrrrhr�rirrr0rErir]rqrrmr�rwrjr1rkrBrr�rAr�r�)r�rBr�rhrr��src�destrrrr�sF���


.z
ZipFile.writec	Cs"t|t�r|�d�}t|t�sxt|t�t���dd�d�}|j|_|j|_	|j
ddkrpd|_|jdO_q|d|_n|}|js�t
d	��|jr�t
d
��|dur�||_|dur�||_	t|�|_|j�H|j|dd��}|�|�Wd�n1s�0YWd�n1�s0YdS)
Nr�r")rBrgr�rzi�Ar)r�r�z?Can't write to ZIP archive while an open writing handle exists.rn)r,)r�r{r�r
r�r�r�rhrrirBrpr<r�rr0rtrrAr)r�Zzinfo_or_arcnamerXrhrr�r�rrr�writestrs:


���
zZipFile.writestrcCs|��dSr�r�r�rrr�__del__/szZipFile.__del__c	Cs�|jdurdS|jrtd��zl|jdvrp|jrp|j�,|jrJ|j�|j�|�	�Wd�n1sf0YW|j}d|_|�
|�n|j}d|_|�
|�0dS)NzvCan't close the ZIP file while there is an open writing handle on it. Close the writing handle before closing the zip.r�)r<rr�r,rwrr0rEri�_write_end_recordr�rrrrr3s 
(�z
ZipFile.closecCs|jD�]�}|j}|ddd>|dd>B|dB}|dd>|d	d>B|ddB}g}|jtksr|jtkr�|�|j�|�|j�d
}d
}n|j}|j}|jtkr�|�|j�d
}n|j}|j}	d}
|�rt|	d�}	t	j
dd
t|�ddt|�g|�R�|	}	t}
|j
tk�r&tt|
�}
n|j
tk�r<tt|
�}
t|
|j�}t|
|j�}|��\}
}t	�
tt||j||j||j
|||j||t|
�t|	�t|j�d|j|j|�}|j�|�|j�|
�|j�|	�|j�|j�q|j� �}t|j�}||j!}|j!}d}|t"k�rd}n|tk�r&d}n|tk�r4d}|�r�|j#�sNt$|d��t	�
t%t&t'ddddd||||�}|j�|�t	�
t(t)d|d�}|j�|�t*|d�}t*|d
�}t*|d
�}t	�
t+t,dd||||t|j-��	}|j�|�|j�|j-�|j.dk�r|j�/�|j�0�dS)Nrryr$rr!rrr&r r�)rr,�Qrr�zCentral directory offsetzCentral directory sizer�rrrrp)1rjrgrtr�rsr1rqr3r8rFr�r0r�rhrrbr�rr�rkrZr�r�r�rjrlrrrerorpr<rr]rir�rvr
rLrKrIrGrHrSr`r_ryr,�truncater�)r�r�r�r�r�r3rtrsrqZ
extra_datar�rkrZrBrmr�Zpos2ZcentDirCountZcentDirSizeZ
centDirOffsetr�Zzip64endrecZzip64locrecrWrrrr�Is�$$
�

���



�





���


�
zZipFile._write_end_recordcCs&|jd8_|js"|js"|��dS�Nr)r~r|rrrrrr��szZipFile._fpclose)N)N)rmN)F)NN)NNN)NNN)NN)#rrrr<r�rr�r�r�r�r�r�r�r�r�r�r�rlre�setterr>rAr�r�r�r�r�r�r�rr�r�rr�r�rrrrr�sN��ZQ
	
		


f
)


*�
2�
)^rc@s0eZdZdeddfdd�Zddd	�Zd
d�ZdS)
rrmTr�cCstj|||||d�||_dS)N)r,r�r�)rr��	_optimize)r�rr,r�r��optimizerrrr��s�zPyZipFile.__init__r�NcCs�t�|�}|rD||�sD|jr@tj�|�r,dnd}td||f�dStj�|�\}}tj�|��rhtj�|d�}tj�|��r�|r�d||f}n|}|jr�td|d|�|�	|dd	�|�\}}	|jr�td
|	�|�
||	�tt�|��}
|
�
d�|
D]�}tj�||�}tj�|�\}
}tj�|��rRtj�tj�|d���r�|j|||d�q�|dkr�|�r~||��s~|jr�td
|�q�|�	|dd	�|�\}}	|j�r�td
|	�|�
||	�q�n�|j�r�td|�tt�|��D]�}tj�||�}tj�|�\}
}|dk�r�|�r,||��s,|j�r�td
|��q�|�	|dd	�|�\}}	|j�rVtd
|	�|�
||	��q�nP|d	d�dk�r�td��|�	|dd	�|�\}}	|j�r�td|	�|�
||	�dS)Nr�rz%s %r skipped by filterfuncz__init__.py�%s/%szAdding package in�asr���ZAdding)�
filterfunc�.pyzfile %r skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"zAdding file)r~r�rxr�r�r�r�r2�isfile�
_get_codenamerr��listdir�remove�splitext�writepyr�)r��pathname�basenamer�Zlabel�dirr-Zinitnamer�r��dirlistrBr��root�extrrrr�s�


��


�
�
zPyZipFile.writepyc
sd�fdd�	}|d}|d}tjj|dd�}tjj|dd�}tjj|d	d�}�jdk�r\tj�|�r�t�|�jt�|�jkr�|}	}
n�tj�|�r�t�|�jt�|�jkr�|}
|}	n�tj�|�r�t�|�jt�|�jkr�|}
|}	nvtj�|��rt�|�jt�|�jk�r|}
|}	nD||��rRt	j
jd
k�r4|}
nt	j
jdk�rH|}
n|}
|}	n|}
}	n��jd
k�rr|}
|}	n<|}	�jdk�r�|}
n&�jd	k�r�|}
nd��j�}t
|��tj�|
��r�t�|
�jt�|�jk�s�||�jd��s�|}
}	tj�|	�d}|�rd
||f}|
|fS)Nr�c
sdddl}�jrtd|�z|j|d|d�Wn2|jy^}zt|j�WYd}~dSd}~00dS)NrZ	CompilingT)�doraiser�F)�
py_compilerxr��compile�PyCompileError�msg)rr�r�errr�rr�_compiles

z)PyZipFile._get_codename.<locals>._compiler�z.pycr�)�optimizationrrrz"invalid value for 'optimize': {!r})r�r�)r�)�	importlib�util�cache_from_sourcer�r~r�r�r�r�r�r�r��formatr�r�)
r�rrr
Zfile_pyZfile_pycZpycache_opt0Zpycache_opt1Zpycache_opt2r�r�rZarchivenamerr�rr�	sj�
���

�zPyZipFile._get_codename)r�N)rrrrr�rr�rrrrr�s
�

RrcCst�t|�dd�Sr�)�	itertools�islice�	_ancestry)r�rrr�_parents\srccs2|�tj�}|�tj�r.|Vt�|�\}}qdSr�)r��	posixpathrr�)r��tailrrrrosrcCst�t|�j|�Sr�)r�filterfalse�set�__contains__)ZminuendZ
subtrahendrrr�_difference�srcsDeZdZedd��Z�fdd�Zdd�Zdd�Zed	d
��Z	�Z
S)�CompleteDirscCs.tj�tt|��}dd�|D�}tt||��S)Ncss|]}|tjVqdSr�)rr)r�r�rrrr��r-z-CompleteDirs._implied_dirs.<locals>.<genexpr>)r�chain�
from_iterabler�r�_deduper)�names�parentsZas_dirsrrr�
_implied_dirs�szCompleteDirs._implied_dirscs tt|���}|t|�|��Sr�)rUrr�rar#)r�r!rVrrr��szCompleteDirs.namelistcCst|���Sr�)rr�r�rrr�	_name_set�szCompleteDirs._name_setcCs,|��}|d}||vo||v}|r(|S|S�Nrz)r$)r�r-r!r�Z	dir_matchrrr�resolve_dir�szCompleteDirs.resolve_dircCsNt|t�r|St|t�s ||�Sd|jvr.t}|�|�}t|��t|��|Sr�)r�rrr,�__new__�vars�update)r�r��resrrr�make�s



zCompleteDirs.make)rrr�staticmethodr#r�r$r&r�r+r[rrrVrr�s

rcs(eZdZ�fdd�Z�fdd�Z�ZS)�
FastLookupcsFt�t��|jWd�S1s&0Ytt|���|_|jSr�)�
contextlib�suppressr5Z_FastLookup__namesrUr-r�r�rVrrr��s$zFastLookup.namelistcsFt�t��|jWd�S1s&0Ytt|���|_|jSr�)r.r/r5Z_FastLookup__lookuprUr-r$r�rVrrr$�s$zFastLookup._name_set)rrrr�r$r[rrrVrr-�sr-c@s�eZdZdZd#dd�Zd$dd�Zedd	��Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZeZed d!��Zd"S)%rz>{self.__class__.__name__}({self.root.filename!r}, {self.at!r})r�cCst�|�|_||_dSr�)r-r+r�at)r�rr0rrrr�	sz
Path.__init__rmcOs\|�dd�}|d}|jj|j||d�}d|vrD|s8|r@td��|Stj|g|�Ri|��S)Nr�rr��bz*encoding args invalid for binary operation)�poprrAr0r�r?�
TextIOWrapper)r�r,�args�kwargsr�Zzip_mode�streamrrrrA!	sz	Path.opencCst�|j�d��Sr%)rrr0r�r�rrrr-0	sz	Path.namecOsD|jdg|�Ri|���}|��Wd�S1s60YdSr�r�)r�r4r5�strmrrr�	read_text4	szPath.read_textcCs6|�d��}|��Wd�S1s(0YdS)Nr?r�)r�r7rrr�
read_bytes8	szPath.read_bytescCst�|j�d��|j�d�kSr%)rr�r0r�)r�r�rrr�	_is_child<	szPath._is_childcCst|j|�Sr�)rr)r�r0rrr�_next?	sz
Path._nextcCs|jp|j�d�Sr%)r0�endswithr�rrrr�B	szPath.is_dircCs
|��Sr�)r�r�rrr�is_fileE	szPath.is_filecCs|j|j��vSr�)r0rr$r�rrrr�H	szPath.existscCs.|��std��t|j|j���}t|j|�S)NzCan't listdir a file)r�r�r�r;rr��filterr:)r�Zsubsrrr�iterdirK	szPath.iterdircCst�|jj|j�Sr�)rr2rrBr0r�rrr�__str__Q	szPath.__str__cCs|jj|d�S)Nr�)�_Path__reprrr�rrrr�T	sz
Path.__repr__cCs t�|j|�}|�|j�|��Sr�)rr2r0r;rr&)r��add�nextrrr�joinpathW	sz
Path.joinpathcCs(t�|j�d��}|r|d7}|�|�Sr%)rr�r0r�r;)r�Z	parent_atrrr�parent]	szPath.parentN)r�)rm)rrrrAr�rArlr-r8r9r:r;r�r=r�r?r@r�rD�__truediv__rErrrrr�s&A


rc
s ddl}d}|j|d�}|jdd�}|jdddd	d
�|jddd
ddd�|jdddddd�|jddddd
�|�|�}|jdur�|j}t|d��}|��}Wd�n1s�0Y|r�td�	|��td��nB|j
du�r"|j
}t|d��}|��Wd�n1�s0Yn�|jdu�rp|j\}}t|d��}|�
|�Wd�n1�sd0Yn�|jdu�r|j�d�}	|j}
�fdd��t|	d��f}|
D]P}tj�|�}|�s�tj�tj�|��}|dtjtjfv�r�d}�|||��q�Wd�n1�s0YdS) Nrz3A simple command-line interface for zipfile module.)�descriptionT)�requiredz-lz--list�	<zipfile>zShow listing of a zipfile)�metavar�helpz-ez	--extractr)rIz<output_dir>zExtract zipfile into target dir)�nargsrJrKz-cz--create�+)z<name>z<file>zCreate zipfile from sourcesz-tz--testzTest if a zipfile is validrmz.The following enclosed file is corrupted: {!r}zDone testingcsptj�|�r|�||t�nPtj�|�rl|r8|�||�tt�|��D]$}�|tj�||�tj�||��qFdSr�)	r~r�r�rrr�r�r�r2)rdr��zippathZnm��addToZiprrrP�	s�zmain.<locals>.addToZiprnr�)�argparse�ArgumentParser�add_mutually_exclusive_group�add_argument�
parse_args�testrr�r�rrar�r�r�Zcreater2r~r�rr�r�r�)
r4rQrG�parser�groupr�rdZbadfiler�Zzip_name�filesr�rNrrOr�maine	s\
�
�
�
�

&*
,rZ�__main__)N)N)�Zbinascii�importlib.utilrr?rr~rr�r�rFr�rr�r.r�r��ImportErrorr�r��__all__�	Exceptionrr
rrr�r�r�rrrrr�r�r�r�r�r`r_r�r^rMrNrOrPrQrRrSrdr�rTr�r�r�r�Z_CD_CREATE_VERSIONZ_CD_CREATE_SYSTEMZ_CD_EXTRACT_VERSIONZ_CD_EXTRACT_SYSTEMZ
_CD_FLAG_BITSZ_CD_COMPRESS_TYPEZ_CD_TIMEZ_CD_DATEZ_CD_CRCZ_CD_COMPRESSED_SIZEZ_CD_UNCOMPRESSED_SIZEr�r�r�Z_CD_DISK_NUMBER_STARTZ_CD_INTERNAL_FILE_ATTRIBUTESZ_CD_EXTERNAL_FILE_ATTRIBUTESr�r�r�r�r�Z_FH_EXTRACT_VERSIONZ_FH_EXTRACT_SYSTEMr�Z_FH_COMPRESSION_METHODZ_FH_LAST_MOD_TIMEZ_FH_LAST_MOD_DATEZ_FH_CRCZ_FH_COMPRESSED_SIZEZ_FH_UNCOMPRESSED_SIZEr�r�rGrHrDrLrKrIZ_CD64_SIGNATUREZ_CD64_DIRECTORY_RECSIZEZ_CD64_CREATE_VERSIONZ_CD64_EXTRACT_VERSIONZ_CD64_DISK_NUMBERZ_CD64_DISK_NUMBER_STARTZ_CD64_NUMBER_ENTRIES_THIS_DISKZ_CD64_NUMBER_ENTRIES_TOTALZ_CD64_DIRECTORY_SIZEZ_CD64_OFFSET_START_CENTDIRrh�Structr.r8r=r	r[r9�objectr
r�r�r�r�r�r�rrr
rrr@r r\rrrr�dict�fromkeysr rrr-rrZrrrrr�<module>sP









<<^&�
(KU|/2
=