grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B Ö p–‘Û·Ùã@sœddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z yddl Z e j Z Wne k r€dZ e j Z YnXy ddlZWne k r¦dZYnXy ddlZWne k rÌdZYnXdddddddd d d d d g ZGdd„deƒZGdd „d eƒZeZZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#e $e"¡Z%dZ&dZ'dZ(dZ)dZ*dZ+d Z,d!Z-dZ.d"Z/d#Z0d$Z1e $e0¡Z2dZ3dZ4dZ5dZ6dZ7dZ8d Z9d!Z:dZ;d"ZdZ?d'Z@dZAd(ZBd)ZCd*ZDd+ZEd,ZFd-ZGe $eF¡ZHdZIdZJdZKdZLdZMdZNd ZOd!ZPdZQd"ZRd%ZSd&ZTd.ZUd/ZVe $eU¡ZWd0ZXd1ZYe $eX¡ZZdZ[dZ\dZ]dZ^dZ_dZ`d Zad!ZbdZcd"Zdd2Zee fd3¡Zgd4d5„Zhd6d7„Zid8d „Zjd9d:„Zkd;d<„ZlGd=d „d emƒZndaod>d?„Zpd@dA„ZqGdBdC„dCƒZrGdDdE„dEƒZsdFdGdHdHdHdHdIdJdKdLdIdMdNdOdPdQdRdSœZtdTdU„ZudgdVdW„ZvdXdY„ZwGdZd[„d[ƒZxGd\d]„d]ƒZyGd^d_„d_ejzƒZ{Gd`da„daejzƒZ|Gdbd „d ƒZ}Gdcd „d e}ƒZ~dhddde„Ze€dfk�r˜eƒdS)iéNÚ BadZipFileÚ BadZipfileÚerrorÚ ZIP_STOREDÚ ZIP_DEFLATEDÚ ZIP_BZIP2ÚZIP_LZMAÚ is_zipfileÚZipInfoÚZipFileÚ PyZipFileÚ LargeZipFilec@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©rrú,/opt/alt/python37/lib64/python3.7/zipfile.pyr&sc@s eZdZdS)r N)rrrrrrrr *siÿÿÿiÿÿéé ééé-é.é?s<4s4H2LHsPKéééééééé z<4s4B4HL2L5H2LsPKé é é ééééz <4s2B4HL2L2HsPKz<4sLQLsPKz <4sQ2H2L4QsPKiPKz        r5c@sReZdZdZddd„Zdd„Zdd d „Zd d „Zd d„Ze ddd„ƒZ dd„Z dS)r )Ú orig_filenamer=Ú date_timeÚ compress_typeÚ_compresslevelr]r/Ú create_systemrRÚextract_versionÚreservedÚ flag_bitsÚvolumeÚ internal_attrÚ external_attrÚ header_offsetÚCRCÚ compress_sizeÚ file_sizeÚ _raw_timeÚNoName©i¼rrrrrcCsÈ||_| tdƒ¡}|dkr(|d|…}tjdkrJtj|krJ| tjd¡}||_||_|ddkrjtdƒ‚t |_ d|_ d|_ d|_ tjdkr”d|_nd|_t|_t|_d|_d|_d|_d|_d|_dS)Nrú/i¼z+ZIP does not support timestamps before 1980r)Úwin32r)r^ÚfindÚchrÚosÚsepÚreplacer=r_Ú ValueErrorrr`rar]r/ÚsysÚplatformrbÚDEFAULT_VERSIONrRrcrdrerfrgrh)Úselfr=r_Z null_byterrrÚ__init__Ss0   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=%rz compress_type=%sr&iÿÿz filemode=%rz external_attr=%#xz file_size=%rz compress_size=%rú>Ú)Ú __class__rr=r`rr-Úcompressor_namesÚgetrhÚstatÚfilemodeÚis_dirrlrkr.)r{r>ÚhiÚloÚisdirrrrÚ__repr__~s(         zZipInfo.__repr__NcCs||j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}|jd @rfd}}}n|j}|j}|j}|j}d} |dkrš|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)Nri¼r!rrrrr#rrzy|j d¡|jfStk r8|j d¡|jdBfSXdS)NÚasciizutf-8i)r=ÚencodereÚUnicodeEncodeError)r{rrrr�ÂszZipInfo._encodeFilenameFlagscCsŒ|j}tj}�xxt|ƒdk�r†|d|dd…ƒ\}}|dt|ƒkrTtd||fƒ‚|dk�rt|dkrz|d|dd…ƒ}nV|dkr–|d |dd …ƒ}n:|d kr²|d |dd …ƒ}n|dkrÀd}ntd||fƒ‚d}|jdk�rt|ƒ|krôtdƒ‚|||_|d7}|jdk�r:t|ƒ|k�r(tdƒ‚|||_|d7}|jdk�rtt|ƒ|k�r\tdƒ‚|j}|||_|d7}||dd…}qWdS)Nrz|_|rÎd|_|jdO_n|j|_|S)Nrrrrpiÿÿr&)Ú isinstancertÚPathLikeÚfspathr‚ÚS_ISDIRÚst_modeÚtimeÚ localtimeÚst_mtimeÚpathÚnormpathÚ splitdriveruÚaltseprhrlÚst_size)Úclsr=ÚarcnameÚstr‡Úmtimer_ÚzinforrrÚ from_fileús(       zZipInfo.from_filecCs|jddkS)Néÿÿÿÿrp)r=)r{rrrr„szZipInfo.is_dir)rnro)N)N) rrrÚ __slots__r|rˆr™r�r¢Ú classmethodrµr„rrrrr 9s + .2 !cCs4x.tdƒD]"}|d@r$|d?dA}q |dL}q W|S)Nrrl q[)Úrange)Úcrcr3rrrÚ_gen_crc&s  r»cspd‰d‰d‰tdkr&ttttdƒƒƒat‰‡fdd„‰‡‡‡‡fdd„‰x|D] }ˆ|ƒqNW‡‡fd d „}|S) NixV4i‰gE#i�xV4écs|d?ˆ||Ad@AS)Nréÿr)Zchrº)ÚcrctablerrÚcrc32@sz_ZipDecrypter..crc32cs<ˆ|ˆƒ‰ˆˆd@d@‰ˆddd@‰ˆˆd?ˆƒ‰dS)Nr½lÿÿi„rr�r)Úc)r¿Úkey0Úkey1Úkey2rrÚ update_keysDs z"_ZipDecrypter..update_keyscsRtƒ}|j}x<|D]4}ˆdB}|||dAd?d@N}ˆ|ƒ||ƒqWt|ƒS)Nrrrr½)Ú bytearrayr-Úbytes)rQr>r-rÀÚk)rÃrÄrrÚ decrypterNs  z _ZipDecrypter..decrypter)Ú _crctablerYÚmapr»r¹)ÚpwdÚprÈr)r¿r¾rÁrÂrÃrÄrÚ _ZipDecrypter6s    rÍc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚLZMACompressorcCs d|_dS)N)Ú_comp)r{rrrr|^szLZMACompressor.__init__cCsFt dtji¡}tjtjt tj|¡gd�|_t dddt |ƒ¡|S)NÚid)ÚfilterszrrrrÝzs   zLZMADecompressor.decompressN)rrrr|rÝrrrrrÙssrÙÚstoreZshrinkÚreduceZimplodeÚtokenizeZdeflateZ deflate64Zbzip2rÒZterseZlz77ZwavpackZppmd)rrrrrrrr 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£srécCsj|tkr2|dk r t |tjd¡St tjtjd¡S|tkrT|dk rLt |¡St ¡S|tkrbt ƒSdSdS)Niñÿÿÿ) rräZ compressobjZDEFLATEDZZ_DEFAULT_COMPRESSIONrræZ BZ2CompressorrrÎ)r`Ú compresslevelrrrÚ_get_compressor¶s rëcCsn|tkr dS|tkrt d¡S|tkr.t ¡S|tkrrrrrˆ]s   zZipExtFile.__repr__r¶cCsL|dkr>|j d|j¡d}|dkr>|j|j|…}||_|Stj ||¡S)Nró r)rrrrÚioÚBufferedIOBaseÚreadline)r{Úlimitr2ÚlinerrrrkszZipExtFile.readlinercCsr|t|jƒ|jkr\| |¡}t|ƒ|jkrJ||j|jd…|_d|_n|jt|ƒ8_|j|j|jd…S)Nri)r,rrr9)r{rùÚchunkrrrÚpeek{s zZipExtFile.peekcCsdS)NTr)r{rrrÚreadableˆszZipExtFile.readablecCs |dks|dkrL|j|jd…}d|_d|_x|jsF|| |j¡7}q.W|S||j}|t|jƒkr~|j|j|…}||_|S|t|jƒ}|j|jd…}d|_d|_x^|dk�r|j�s| |¡}|t|ƒkrð||_||_||d|…7}P||7}|t|ƒ8}qªW|S)Nrr))rrrÚ_read1ÚMAX_Nr,)r{rùÚbufÚendrQrrrr9‹s4   zZipExtFile.readcCs@|jdkrdSt||jƒ|_|jr<|j|jkr      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)rrrrZunconsumed_tailr,Ú_read2rrrZÚ MIN_READ_SIZErÝrÜrØrr&)r{rùrQrrrr!Ûs2           zZipExtFile._read1cCsd|jdkrdSt||jƒ}t||jƒ}|j |¡}|jt|ƒ8_|sLt‚|jdk r`| |¡}|S)Nrr)) rrZr)Úminrþr9r,ÚEOFErrorr)r{rùrQrrrr(ÿs      zZipExtFile._read2cs&z|jr|j ¡Wdtƒ ¡XdS)N)rrþröÚsuper)r{)rrrröszZipExtFile.closecCs|jS)N)r )r{rrrrószZipExtFile.seekablercCsB|jst d¡‚| ¡}|dkr&|}n.|dkr8||}n|dkrL|j|}ntdƒ‚||jkrd|j}|dkrpd}||}||j}|dkr¤|t|jƒkr¤||_d}nf|dk�r |j   |j ¡|j |_ |j|_|j|_d|_d|_t|jƒ|_d|_|}|jdk �r | ¡x.|dk�r8t|j|ƒ}| |¡||8}�q W| ¡S)Nz!underlying stream is not seekablerrrzCwhence must be os.SEEK_SET (0), os.SEEK_CUR (1), or os.SEEK_END (2)r)F)r rÚUnsupportedOperationrUrrwrr,rrþr?rrr rrrrìrrrrrr*Ú MAX_SEEK_READr9)r{rOrøZcurr_posZnew_posZ read_offsetZ buff_offsetZread_lenrrrr?sH           zZipExtFile.seekcCs0|jst d¡‚|j|jt|jƒ|j}|S)Nz!underlying stream is not seekable)r rr-rrr,rr)r{ZfileposrrrrUIs zZipExtFile.tell)NF)r¶)r)r¶)r)rrrr"r)r.r|rrˆrrr r9r&r'r!r(rörór?rUÚ __classcell__rr)rrrýs& 2    ! %$  0rýcs@eZdZdd„Zedd„ƒZdd„Zdd„Z‡fd d „Z‡Z S) Ú _ZipWriteFilecCs8||_||_||_t|j|jƒ|_d|_d|_d|_ dS)Nr) Ú_zinfoÚ_zip64Ú_zipfilerër`raÚ _compressorÚ _file_sizeÚ_compress_sizeÚ_crc)r{Úzfr´r’rrrr|Qs z_ZipWriteFile.__init__cCs|jjS)N)r3r7)r{rrrrþ[sz_ZipWriteFile._fileobjcCsdS)NTr)r{rrrÚwritable_sz_ZipWriteFile.writablecCsf|jrtdƒ‚t|ƒ}|j|7_t||jƒ|_|jrV|j |¡}|jt|ƒ7_|j   |¡|S)NzI/O operation on closed file.) rrwr,r5r¿r7r4r×r6rþrü)r{rQÚnbytesrrrrübs  z_ZipWriteFile.writec sb|jr dS�zFtƒ ¡|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ê|j tkrØtdƒ‚|jtkrêtdƒ‚|j ¡|j_|j |j j¡|j |j  |j¡¡|j |jj¡|jj |j ¡|j |jj|j j<Wdd|j_ XdS)Nrz          z_ZipWriteFile.close) rrrr|Úpropertyrþr9rürör/rr)rrr0Ps   r0c@seZdZdZdZdeddfdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z d;dd„Z dd„Zdd„Zdd„Zedd„ƒZejdd„ƒZdd#d$„Zd?d%d&„Zd@d'd(„Zed)d*„ƒZd+d,„Zd-d.„ZdAd/d0„ZdBd1d2„Zd3d4„Zd5d6„Z d7d8„Z!d9d:„Z"dS)Cr NÚrTc CsL|dkrtdƒ‚t|ƒ||_d|_d|_i|_g|_||_||_||_ d|_ d|_ t |t jƒrjt  |¡}t |tƒrâd|_||_dddd dd d d œ}||}x^yt ||¡|_Wn(tk rØ||krÒ||}wž‚YnXPqžWnd |_||_t|ddƒ|_d |_t ¡|_d|_d|_�y|dk�r0| ¡nð|dk�rºd|_y|j ¡|_ Wn2t!tfk �r‚t"|jƒ|_d|_ d|_Yn6Xy|j #|j ¡Wn t!tfk �r¶d|_YnXnf|dk�ry| ¡|j #|j ¡Wn6t$k �r|j #dd¡d|_|j ¡|_ YnXntdƒ‚Wn$|j}d|_| %|¡‚YnXdS)N)r@ÚwÚxÚaz+ZipFile requires mode 'r', 'w', 'x', or 'a'Frr)r:zw+bzx+bzr+bÚwbZxb)r@rArBrCzr+bzw+bzx+brr Tr@)rArBrCrz"Mode must be 'r', 'w', 'x', or 'a')&rwréÚ _allowZip64Ú _didModifyÚdebugr>r=rèrêr rËÚ_commentr£rtr¤r¥ÚstrÚ _filePassedr=rr<r7r6ÚgetattrÚ _fileRefCntÚ threadingÚRLockrñr ròÚ_RealGetContentsrUr<rrûr?rÚ_fpclose) r{rôr rèÚ allowZip64rêZmodeDictrƒr7rrrr|¸s„             zZipFile.__init__cCs|S)Nr)r{rrrÚ __enter__szZipFile.__enter__cCs | ¡dS)N)rö)r{ÚtypeÚvalueÚ tracebackrrrÚ__exit__szZipFile.__exit__cCs‚d|jj|jjfg}|jdk rd|jr8| d|j¡n|jdk rR| d|j¡| d|j¡n | d¡| d¡d |¡S)Nz<%s.%sz file=%rz filename=%rz mode=%rz [closed]r}r~) rrrr7rJr-r=r r.)r{r>rrrrˆs    zZipFile.__repr__c Cs¾|j}y t|ƒ}Wntk r.tdƒ‚YnX|sr=)r{r7rPZsize_cdZ offset_cdÚconcatZinferredrQrYÚcentdirr=ÚflagsrBÚtÚdrrrrO%sp                4       zZipFile._RealGetContentscCsdd„|jDƒS)NcSsg|] }|j‘qSr)r=)Ú.0rQrrrú usz$ZipFile.namelist..)r=)r{rrrÚnamelistsszZipFile.namelistcCs|jS)N)r=)r{rrrÚinfolistwszZipFile.infolistcCsPtdd|d�x:|jD]0}d|jdd…}td|j||jf|d�qWdS)Nz%-46s %19s %12s)z File Namez Modified ZSize)rôz%d-%02d-%02d %02d:%02d:%02drz %-46s %s %12d)rZr=r_r=rl)r{rôr´ZdaterrrÚprintdir|s  zZipFile.printdirc Cs^d}xT|jD]J}y.| |jd¡�}x| |¡r0q$WWdQRXWq tk rT|jSXq WdS)Nir@)r=r<r=r9r)r{Z chunk_sizer´ÚfrrrÚtestzip…s  zZipFile.testzipcCs$|j |¡}|dkr td|ƒ‚|S)Nz(There is no item named %r in the archive)r>r�ÚKeyError)r{r ÚinforrrÚgetinfo’s   zZipFile.getinfocCs6|r t|tƒs tdt|ƒjƒ‚|r,||_nd|_dS)Nzpwd: expected bytes, got %s)r£rÆÚ TypeErrorrSrrË)r{rËrrrÚ setpassword›s zZipFile.setpasswordcCs|jS)N)rH)r{rrrr]¤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ÆrwrSrr,ÚZIP_MAX_COMMENTÚwarningsÚwarnrHrF)r{r]r{rrrr]©s    c Cs"| |d|¡� }| ¡SQRXdS)Nr@)r<r9)r{r rËr7rrrr9¶sz ZipFile.readF)Ú force_zip64c s|dkrtdƒ‚|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 „ƒ}�y| t¡}t|ƒtk�rtd ƒ‚t t|¡}|ttk�r&td ƒ‚| |t¡}|t�rL| |t¡|jd@�r`t dƒ‚|jd@�rtt dƒ‚|jd@�rŒ| !d¡} n | !d¡} | |j"k�r´td|j"|fƒ‚|jd @} | �rä|�sЈj#}|�sèt$d|ƒ‚nd}t%||||dƒS| &¡‚YnXdS)N>r@rAzopen() requires mode "r" or "w"zpwd: expected bytes, got %srAz'pwd is only supported for reading filesz2Attempt to use ZIP archive that was already closed)r}zyCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.rcsˆjS)N)ròr)r{rrÚìr)zZipFile.open..zTruncated file headerz Bad magic number for file headeré z$compressed patched data (flag bit 5)é@zstrong encryption (flag bit 6)izutf-8rWz/File name in directory %r and header %r differ.z6File %r is encrypted, password required for extractionT)'rwr£rÆrwrSrr7r rèr`rêrarvÚ_open_to_writeròrLrírirPrñr9ÚsizeFileHeaderr,rrAr+r�Ú _FH_SIGNATUREr‘Ú_FH_FILENAME_LENGTHÚ_FH_EXTRA_FIELD_LENGTHrerçrcr^rËrårýrö) r{r r rËr}r´Zzef_fileZfheaderÚfnameZ fname_strZ is_encryptedr)r{rr<»sp                z ZipFile.opencCsæ|r|jstdƒ‚|jr tdƒ‚t|dƒs0d|_d|_d|_d|_|jt krZ|jdO_|j sn|jdO_|j szd|_ |jo�|p�|jdt k}|j r¦|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.rlrrri€gÍÌÌÌÌÌð?T)rErwròr;rlrkrjrer`rr rhr‰r7r?r<rUriÚ _writecheckrFrür™r0)r{r´r}r’rrrr�s4     zZipFile._open_to_writecCs*|dkrt ¡}n t |¡}| |||¡S)N)rtÚgetcwdr¥Ú_extract_member)r{Úmemberr«rËrrrÚextractHs  zZipFile.extractcCsL|dkr| ¡}|dkr"t ¡}n t |¡}x|D]}| |||¡q2WdS)N)rortrˆr¥r‰)r{r«ÚmembersrËrrrrÚ extractallUs   zZipFile.extractallcCs^|j}|s(d}t |dt|ƒ¡}||_| |¡}dd„| |¡Dƒ}| dd„|Dƒ¡}|S)Nz:<>|"?*Ú_css|]}| d¡VqdS)Ú.N)Úrstrip)rmrBrrrú psz1ZipFile._sanitize_windows_name..css|]}|r|VqdS)Nr)rmrBrrrr‘rs)Ú!_windows_illegal_name_trans_tablerIÚ maketransr,Ú translateÚsplitr.)r°r±ÚpathsepÚtableZillegalrrrÚ_sanitize_windows_namefs zZipFile._sanitize_windows_namec sLt|tƒs| |¡}|j dtjj¡}tjjrB| tjjtjj¡}tj  |¡d}dtjj tjj f‰tjj  ‡fdd„|  tjj¡Dƒ¡}tjjdkr¦| |tjj¡}tj  ||¡}tj |¡}tj |¡}|rætj |¡sæt |¡| ¡�r tj |¡�st |¡|S|j||d��(}t|dƒ�}t ||¡WdQRXWdQRX|S) Nrprr~c3s|]}|ˆkr|VqdS)Nr)rmrB)Úinvalid_path_partsrrr‘†sz*ZipFile._extract_member..ú\)rËrD)r£r rvr=rvrtr«rur®r­ÚcurdirÚpardirr.r•r˜r¬ÚdirnameÚexistsÚmakedirsr„r‡Úmkdirr<ÚshutilÚ copyfileobj)r{rŠZ targetpathrËr±Z upperdirsÚsourceÚtargetr)r™rr‰us.  &        zZipFile._extract_membercCs¢|j|jkr(ddl}|jd|jdd�|jdkr:tdƒ‚|jsHtdƒ‚t|jƒ|j sžd}t |j ƒt krpd}n|j tkr€d }n|jtkrŽd }|ržt|d ƒ‚dS) NrzDuplicate name: %rr)ry)rArBrCz&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closedz Files countZFilesizez Zipfile sizez would require ZIP64 extensions)r=r>r{r|r rwr7rér`rEr,r=ÚZIP_FILECOUNT_LIMITrlr‰rir )r{r´r{Úrequires_zip64rrrr‡Ÿs(     zZipFile._writecheckc CsJ|jstdƒ‚|jrtdƒ‚t ||¡}| ¡r>d|_d|_n0|dk rN||_n|j |_|dk rf||_ n|j |_ | ¡�r |j �„|j r”|j |j¡|j ¡|_|jtkr¸|jdO_| |¡d|_|j |¡||j|j<|j | d¡¡|j ¡|_WdQRXnCan't write to ZIP archive while an open writing handle existsrrTFr:rAi )r7rwròr rµr„rkrjr`rèrarêrñr r?r<rUrirrer‡rFr=r-r>r=rür™r<r¡r¢)r{r=r±r`rêr´ÚsrcÚdestrrrrü¶s>       z ZipFile.writec Csøt|tƒr| d¡}t|tƒsxt|t t ¡¡dd…d�}|j|_|j|_ |j ddkrpd|_ |j dO_ q|d|_ n|}|j sŠt d ƒ‚|jr˜t d ƒ‚|dk r¦||_|dk r´||_ t|ƒ|_|j�*|j|d d ��}| |¡WdQRXWdQRXdS) Nzutf-8r)r=r_r¶rpiýAr&i€z7Attempt to write to ZIP archive that was already closedz?Can't write to ZIP archive while an open writing handle exists.rA)r )r£rIr›r r¨r©rèr`rêrar=rhr7rwròr,rlrñr<rü)r{Zzinfo_or_arcnamerQr`rêr´r¨rrrÚwritestræs4    zZipFile.writestrcCs | ¡dS)N)rö)r{rrrÚ__del__szZipFile.__del__c Cs||jdkrdS|jrtdƒ‚zB|jdkr\|jr\|j�"|jrJ|j |j¡|  ¡WdQRXWd|j}d|_|  |¡XdS)NzvCan't close the ZIP file while there is an open writing handle on it. Close the writing handle before closing the zip.)rArBrC) r7ròrwr rFrñr r?r<Ú_write_end_recordrP)r{r7rrrrös z ZipFile.closecCsr�xP|jD�]D}|j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}g}|jtksv|jtkr˜| |j¡| |j¡d }d }n |j}|j}|jtkrÀ| |j¡d }n|j}|j} d} |�rt| d ƒ} t j d d t |ƒddt |ƒf|žŽ| } t } |j tk�r(tt| ƒ} n|j tk�r>tt| ƒ} t| |jƒ} t| |jƒ} yZ| ¡\} }t   tt| |j| |j||j |||j||t | ƒt | ƒt |jƒd|j|j|¡}Wnltk �rttt| |j| |j|j |j |||j||t |j!ƒt | ƒt |jƒd|j|j|ft"j#d�‚YnX|j$ %|¡|j$ %| ¡|j$ %| ¡|j$ %|j¡q W|j$ &¡}t |jƒ}||j'}|j'}d}|t(k�rŒd}n|tk�rœd}n|tk�rªd}|�r*|j)�sÄt*|dƒ‚t   t+t,ddddd||||¡ }|j$ %|¡t   t-t.d|d¡}|j$ %|¡t/|dƒ}t/|d ƒ}t/|d ƒ}t   t0t1dd||||t |j2ƒ¡ }|j$ %|¡|j$ %|j2¡|j$ 3¡dS)Nri¼r!rrrrr#rlÿÿ)rz XN     b +  * 0 (fc@s0eZdZdeddfdd„Zd dd „Zd d „ZdS) r r@Tr¶cCstj|||||d�||_dS)N)r rèrQ)r r|Ú _optimize)r{rôr rèrQÚoptimizerrrr|™s zPyZipFile.__init__r~NcCsÄt |¡}|rD||ƒsD|jr@tj |¡r,dnd}td||fƒdStj |¡\}}tj |¡�rptj |d¡}tj |¡�r¼|r�d||f}n|}|jr¨td|d|ƒ|  |dd …|¡\}} |jrÐtd | ƒ|  || ¡t t  |¡ƒ} |   d¡xÄ| D]¼} tj || ¡} tj | ¡\} }tj | ¡�rTtj tj | d¡¡�r¶|j| ||d �qú|d krú|�r€|| ƒ�s€|jrútd | ƒqú|  | dd …|¡\}} |j�rªtd | ƒ|  || ¡qúWn²|j�rÎtd|ƒxðt t  |¡ƒD]Œ} tj || ¡} tj | ¡\} }|d k�rÞ|�r2|| ƒ�s2|j�rÞtd | ƒ�qÞ|  | dd …|¡\}} |j�r\td | ƒ|  || ¡�qÞWnP|d d…d k�rŠtdƒ‚|  |dd …|¡\}} |j�r´td| ƒ|  || ¡dS)Nr«rôz%s %r skipped by filterfuncz __init__.pyz%s/%szAdding package inÚasréýÿÿÿZAdding)Ú filterfuncz.pyzfile %r skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"z Adding file)rtr¥rGr«r‡rZr•r.ÚisfileÚ _get_codenamerüÚsortedÚlistdirÚremoveÚsplitextÚwritepyrå)r{ÚpathnameÚbasenamerµZlabelÚdirr Zinitnamer†r±Zdirlistr=r«ÚrootZextrrrr¼Ÿsx                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 j d k�r4|} nt j j dk�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 s`ddl}ˆjrtd|ƒy|j|d|d�Wn.|jk rZ}zt|jƒdSd}~XYnXdS)NrZ CompilingT)Údoraiser²F)Ú py_compilerGrZÚcompileÚPyCompileErrorÚmsg)rôr²rÂÚerr)r{rrÚ_compileøs  z)PyZipFile._get_codename.._compilez.pyz.pycr~)Ú optimizationrrrz"invalid value for 'optimize': {!r})r²z%s/%s)r¶)Ú importlibÚutilÚcache_from_sourcer±rtr«r¶r‚rªrxrjr²Úformatrwr•) r{r½r¾rÇZfile_pyZfile_pycZ pycache_opt0Z pycache_opt1Z pycache_opt2r±r†rÅZ archivenamer)r{rr·ñs`             zPyZipFile._get_codename)r~N)rrrrr|r¼r·rrrrr –s Rc sÌddl}d}|j|d�}|jdd�}|jdddd d �|jd d d ddd�|jdddddd�|jddddd �| |¡}|jdk rÆ|j}t|dƒ�}| ¡}WdQRX|rºtd  |¡ƒtdƒ�n|j dk rö|j }t|dƒ�}|  ¡WdQRXnÒ|j dk �r.|j \}}t|dƒ�}|  |¡WdQRXnš|jdk �rÈ|j d¡} |j} ‡fdd„‰t| dƒ�`}xX| D]P} tj | ¡} | �s”tj tj | ¡¡} | dtjtjfk�r¬d} ˆ|| | ƒ�qjWWdQRXdS) Nrz3A simple command-line interface for zipfile module.)Ú descriptionT)Úrequiredz-lz--listz zShow listing of a zipfile)ÚmetavarÚhelpz-ez --extractr)z z zExtract zipfile into target dir)ÚnargsrÏrÐz-cz--createú+)zzzCreate zipfile from sourcesz-tz--testzTest if a zipfile is validr@z.The following enclosed file is corrupted: {!r}z Done testingcsttj |¡r| ||t¡nTtj |¡rp|r8| ||¡x6tt |¡ƒD]$}ˆ|tj ||¡tj ||¡ƒqHWdS)N) rtr«r¶rürr‡r¸r¹r.)r8r«ÚzippathZnm)ÚaddToZiprrrÔls   zmain..addToZiprAr~)ÚargparseÚArgumentParserÚadd_mutually_exclusive_groupÚ add_argumentÚ parse_argsZtestr rsrZrÌrYrqr‹r�ZcreateÚpoprtr«r¾r�r›rœ) ÚargsrÕrÍÚparserÚgroupr§r8Zbadfiler›Zzip_nameÚfilesr«rÓr)rÔrÚmainDsT                    rßÚ__main__)N)N)�rrtÚimportlib.utilrÉrxr¨r‚r¡rAZbinasciirMrär¿Ú ImportErrorrærÒÚ__all__Ú Exceptionrr rrr‰r¥rzrrrrrzrŒr�rŽrgrXrWr‹rVrGrHrIrJrKrLrMr\r[r\r_rar^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_SIZErbrdreZ_CD_DISK_NUMBER_STARTZ_CD_INTERNAL_FILE_ATTRIBUTESZ_CD_EXTERNAL_FILE_ATTRIBUTESrfr�r‘r‚rƒZ_FH_EXTRACT_VERSIONZ_FH_EXTRACT_SYSTEMZ_FH_GENERAL_PURPOSE_FLAG_BITSZ_FH_COMPRESSION_METHODZ_FH_LAST_MOD_TIMEZ_FH_LAST_MOD_DATEZ_FH_CRCZ_FH_COMPRESSED_SIZEZ_FH_UNCOMPRESSED_SIZEr„r…rBrCr@rErFrDZ_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_CENTDIRr;ÚStructr*r4r8r rSr5Úobjectr rÉr»rÍrÎrÙr€rérërìrírûrrýr0r r rßrrrrrÚs<             +=m& &AN}/ <