
    =Og
^                     p   	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZg dZd\  Z	Z
ZZZd\  ZZdZdZdZdedddfd	Zd
 Z G d d          Z G d de          Z G d dej                  Zd Zd Z G d dej                  Z	 ddedefdZ efdddZ!d Z"d Z#e$dk    r e#             dS dS )    N)BadGzipFileGzipFileopencompress
decompress)               )r   r	   r      	   rbc                 $   	 d|v rd|v rt          d|          n3|t          d          |t          d          |t          d          |                    dd          }t          | t          t          t
          j        f          rt          | ||          }nBt          | d          st          | d	          rt          d |||           }nt          d
          d|v r+t          j        |          }t          j        ||||          S |S )NtbzInvalid mode: z0Argument 'encoding' not supported in binary modez.Argument 'errors' not supported in binary modez/Argument 'newline' not supported in binary mode readwritez1filename must be a str or bytes object, or a file)
ValueErrorreplace
isinstancestrbytesosPathLiker   hasattr	TypeErroriotext_encodingTextIOWrapper)filenamemodecompresslevelencodingerrorsnewlinegz_modebinary_files           /usr/lib64/python3.11/gzip.pyr   r      s7   $ d{{$;;*449:::  OPPPMNNNNOOOll3##G(S%566 Mx-@@	6	"	" Mgh&@&@ MtWmXFFKLLL
d{{#H--XvwGGG    c                 V    |                      t          j        d|                     d S )Nz<L)r   structpack)outputvalues     r*   write32ur1   F   s(     LLT5))*****r+   c                   2    e Zd Z	 ddZd ZddZd Zd ZdS )	_PaddedFiler+   c                 X    || _         t          |          | _        || _        d| _        d S Nr   )_bufferlen_lengthfile_read)selffprepends      r*   __init__z_PaddedFile.__init__P   s(    7||	


r+   c                 F   | j         | j                            |          S | j         |z   | j        k    r+| j         }| xj         |z  c_         | j        || j                  S | j         }d | _         | j        |d          | j                            || j        z
  |z             z   S N)r:   r9   r   r8   r6   )r;   sizer   s      r*   r   z_PaddedFile.readV   s    :9>>$''':,,:DJJ$JJ<TZ00:DDJ<&9>>$t|"3D"899: :r+   c                     | j         || _        n| xj         t          |          z  c_         d S t          | j                  | _        d| _         d S r5   )r:   r6   r7   r8   )r;   r=   s     r*   r=   z_PaddedFile.prependc   sJ    :"DLLJJ#g,,&JJF4<((


r+   c                 R    d | _         d | _        | j                            |          S r@   )r:   r6   r9   seek)r;   offs     r*   rD   z_PaddedFile.seekl   s$    
y~~c"""r+   c                     dS NT r;   s    r*   seekablez_PaddedFile.seekableq       tr+   N)r+   )__name__
__module____qualname__r>   r   r=   rD   rJ   rH   r+   r*   r3   r3   K   sn            : : :   # # #
    r+   r3   c                       e Zd ZdS )r   N)rL   rM   rN   rH   r+   r*   r   r   u   s        @@r+   r   c                       e Zd Z	 dZddeddfdZed             Zed             Zd Z	d Z
d Zd Zdd
ZddZd Zed             Zd Zej        fdZd Zd Zd Zd Zd Zej        fdZddZdS )r   Nc                    	 |r*d|v sd|v r"t          d                    |                    |r	d|vr|dz  }|t          j        ||pd          x}| _        |0t          |dd          }t          |t          t          f          sd}nt          j
        |          }|}|t          |dd          }|                    d	          r<t          | _        t          |          }t          j        |          | _        || _        n|                    d
          r| dd l}|                    dt*          d           t,          | _        |                     |           t1          j        |t0          j        t0          j         t0          j        d          | _        || _        n"t          d                    |                    || _        | j        t,          k    r|                      |           d S d S )Nr   UzInvalid mode: {!r}r   r   namer   r#   r)waxr   zGzipFile was opened for writing, but this will change in future Python releases.  Specify the mode argument for opening it for writing.r	   )!r   formatbuiltinsr   	myfileobjgetattrr   r   r   r   fspath
startswithREADr#   _GzipReaderr   BufferedReaderr6   rS   warningswarnFutureWarningWRITE_init_writezlibcompressobjDEFLATED	MAX_WBITSDEF_MEM_LEVELr   _write_mtimefileobj_write_gzip_header)	r;   r"   r#   r$   rl   mtimeorigmoderawra   s	            r*   r>   zGzipFile.__init__   s
   	B  	@SD[[C4KK188>>??? 	CtOOCKD?'/}Xt|t'L'LLGdnw33Hhe55 y**H<7FD11D??3 	@DIg&&C,S11DL DII___-- 	@L "1	& & &
 DIX&&& ,]-1].2n_-1-?-.	0 0DM
 !&D188>>???9##M22222 r+   c                     dd l }|                    dt          d           | j        t          k    r| j        dd          dk    r
| j        dz   S | j        S )Nr   zuse the name attributer	   .gz)ra   rb   DeprecationWarningr#   rd   rS   )r;   ra   s     r*   r"   zGzipFile.filename   sY    .0BAFFF9$)BCC.E"9"99u$$yr+   c                 &    	 | j         j        j        S r@   )r6   rp   _last_mtimerI   s    r*   rn   zGzipFile.mtime   s    >|++r+   c                     t          | j                  }d|dd         z   dz   t          t          |                     z   dz   S )Nz<gzip r    >)reprrl   hexid)r;   ss     r*   __repr__zGzipFile.__repr__   s?    !AbD'!C'#bhh--7#==r+   c                 ~    || _         t          j        d          | _        d| _        g | _        d| _        d| _        d S Nr+   r   )rS   rf   crc32crcrA   writebufbufsizeoffset)r;   r"   s     r*   re   zGzipFile._init_write   s8    	:c??	r+   c                 \   | j                             d           | j                             d           	 t          j                            | j                  }t          |t                    s|                    d          }|	                    d          r
|d d         }n# t          $ r d}Y nw xY wd}|rt          }| j                             t          |                              d                     | j        }|t          j                    }t          | j         t!          |                     |t"          k    rd}n|t$          k    rd	}nd
}| j                             |           | j                             d           |r| j                             |d
z              d S d S )N      zlatin-1s   .gzrr   r+   r                )rl   r   r   pathbasenamerS   r   r   encodeendswithUnicodeEncodeErrorFNAMEchrrk   timer1   int_COMPRESS_LEVEL_BEST_COMPRESS_LEVEL_FAST)r;   r$   fnameflagsrn   xfls         r*   rm   zGzipFile._write_gzip_header   s   ;'''7###		 G$$TY//EeU++ 0Y//~~f%% #crc
! 	 	 	EEE	 	E3u::,,Y77888!=IKKEs5zz***000CC222CCC37### 	0Luw/////	0 	0s   A-B$ $B32B3c                    |                                   | j        t          k    rdd l}t	          |j        d          | j        t          d          t          |t          t          f          rt          |          }nt          |          }|j        }|dk    rq| j                            | j                            |                     | xj        |z  c_        t#          j        || j                  | _        | xj        |z  c_        |S )Nr   z$write() on read-only GzipFile objectz!write() on closed GzipFile object)_check_not_closedr#   rd   errnoOSErrorEBADFrl   r   r   r   	bytearrayr7   
memoryviewnbytesr   r   rA   rf   r   r   r   )r;   datar   lengths       r*   r   zGzipFile.write  s       9LLL%+'MNNN<@AAAdUI.// 	!YYFF d##D[FA::Lt}55d;;<<<IIIIz$11DHKK6!KKr+   rx   c                     |                                   | j        t          k    rdd l}t	          |j        d          | j                            |          S )Nr   z$read() on write-only GzipFile object)r   r#   r^   r   r   r   r6   r   r;   rA   r   s      r*   r   zGzipFile.read(  sS       9LLL%+'MNNN|  &&&r+   c                     	 |                                   | j        t          k    rdd l}t	          |j        d          |dk     rt          j        }| j        	                    |          S )Nr   z%read1() on write-only GzipFile object)
r   r#   r^   r   r   r   r   DEFAULT_BUFFER_SIZEr6   read1r   s      r*   r   zGzipFile.read1/  sl    	E 	   9LLL%+'NOOO!88)D|!!$'''r+   c                     |                                   | j        t          k    rdd l}t	          |j        d          | j                            |          S )Nr   z$peek() on write-only GzipFile object)r   r#   r^   r   r   r   r6   peek)r;   nr   s      r*   r   zGzipFile.peek<  sS       9LLL%+'MNNN|  ###r+   c                     | j         d u S r@   )rl   rI   s    r*   closedzGzipFile.closedC  s    |t##r+   c                    | j         }|d S d | _         	 | j        t          k    rZ|                    | j                                                   t          || j                   t          || j        dz             n)| j        t          k    r| j
                                         | j        }|rd | _        |                                 d S d S # | j        }|rd | _        |                                 w w xY w)N    )rl   r#   rd   r   r   flushr1   r   rA   r^   r6   closerZ   )r;   rl   rZ   s      r*   r   zGzipFile.closeG  s   ,?F	"yE!!dm1133444$(+++$)j"89999d""""$$$I "!%!!!!!" " I "!%!!!!"s   BC 'C6c                     |                                   | j        t          k    rM| j                            | j                            |                     | j                                         d S d S r@   )r   r#   rd   rl   r   r   r   )r;   	zlib_modes     r*   r   zGzipFile.flushZ  si       9Lt}229==>>>L      r+   c                 6    	 | j                                         S r@   )rl   filenorI   s    r*   r   zGzipFile.filenoa  s    	
 |""$$$r+   c                 z    	 | j         t          k    rt          d          | j                            d           d S )NzCan't rewind in write moder   )r#   r^   r   r6   rD   rI   s    r*   rewindzGzipFile.rewindi  s?    	!96777!r+   c                 "    | j         t          k    S r@   )r#   r^   rI   s    r*   readablezGzipFile.readablep  s    yD  r+   c                 "    | j         t          k    S r@   )r#   rd   rI   s    r*   writablezGzipFile.writables  s    yE!!r+   c                     dS rG   rH   rI   s    r*   rJ   zGzipFile.seekablev  rK   r+   c                    | j         t          k    r|t          j        k    r*|t          j        k    r| j        |z   }nt          d          || j        k     rt          d          || j        z
  }d}t          |dz            D ]}| 	                    |           | 	                    d|dz  z             n?| j         t          k    r/|                                  | j                            ||          S | j        S )NzSeek from end not supportedzNegative seek in write modes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   i   r   )r#   rd   r   SEEK_SETSEEK_CURr   r   r   ranger   r^   r   r6   rD   )r;   r   whencecountchunkis         r*   rD   zGzipFile.seeky  s    9$$R[((![61FF$%BCCC##;<<<T[(E E5D=)) " "

5!!!!JJu-....Y$""$$$<$$VV444{r+   c                 ^    |                                   | j                            |          S r@   )r   r6   readline)r;   rA   s     r*   r   zGzipFile.readline  s*       |$$T***r+   rx   )rL   rM   rN   rZ   r   r>   propertyr"   rn   r   re   rm   r   r   r   r   r   r   rf   Z_SYNC_FLUSHr   r   r   r   r   rJ   r   r   rD   r   rH   r+   r*   r   r   y   s        I $43TO3 O3 O3 O3b   X , , X,> > >  0 0 0@  0' ' ' '( ( ( ($ $ $ $ $ X$" " "& ". ! ! ! !% % %  ! ! !" " "   #%+    (+ + + + + +r+   r   c                     	 |                      |          }t          |          |k     rN|                      |t          |          z
            }|st          d          ||z  }t          |          |k     N|S )NACompressed file ended before the end-of-stream marker was reached)r   r7   EOFError)fpr   r   r   s       r*   _read_exactr     s    
 771::D
d))a--GGAD		M"" 	? > ? ? ?	 d))a-- Kr+   c                 D   	 |                      d          }|dk    rd S |dk    rt          d|z            t          j        dt	          | d                    \  }}}|dk    rt          d          |t
          z  r5t          j        dt	          | d                    \  }t	          | |           |t          z  r 	 |                      d
          }|r|dk    rn|t          z  r 	 |                      d
          }|r|dk    rn|t          z  rt	          | d           |S )Nr	   r+   r   zNot a gzipped file (%r)z<BBIxxr   zUnknown compression methodz<HTr   r   )	r   r   r-   unpackr   FEXTRAr   FCOMMENTFHCRC)r   magicmethodflag
last_mtime	extra_lenr~   s          r*   _read_gzip_headerr     sN    GGAJJE||t3e;<<<!'xR9K9K!L!LVT:{{6777f} #]4R););<<
	B	"""e| 	

A 7

	 h 	

A 7

	 e| Br+   c                   H     e Zd Z fdZd Zd Zd	dZd Zd Z fdZ	 xZ
S )
r_   c                     t                                          t          |          t          j        t          j                    d| _        d | _        d S )NwbitsT)superr>   r3   rf   decompressobjri   _new_memberrv   )r;   r   	__class__s     r*   r>   z_GzipReader.__init__  sP    R$*< $ 	 	0 	0 	0  r+   c                 F    t          j        d          | _        d| _        d S r   )rf   r   _crc_stream_sizerI   s    r*   
_init_readz_GzipReader._init_read  s    JsOO	r+   c                 D    t          | j                  }|dS || _        dS )NFT)r   _fprv   )r;   r   s     r*   r   z_GzipReader._read_gzip_header  s)    &tx00
5%tr+   rx   c                 8   |dk     r|                                  S |sdS 	 | j        j        r2|                                  d| _         | j        di | j        | _        | j        r=|                                  |                                 s| j	        | _
        dS d| _        | j                            t          j                  }| j                            ||          }| j        j        dk    r%| j                            | j        j                   n4| j        j        dk    r$| j                            | j        j                   |dk    rn|dk    rt'          d          H|                     |           | xj	        t+          |          z  c_	        |S )Nr   r+   TFr   rH   )readall_decompressoreof	_read_eofr   _decomp_factory_decomp_argsr   r   _pos_sizer   r   r   r   r   unconsumed_tailr=   unused_datar   _add_read_datar7   )r;   rA   buf
uncompresss       r*   r   z_GzipReader.read  s   !88<<>>! 	3
#	C!% )
    #' %9T%9 &) &)'&) &)"  ) !!!--// !%DJ3#(  (-- 677C+66sDAAJ!1S88  !3!CDDDD#/366   !3!?@@@S  czz  B C C CE#	CJ 	Z)))		S__$		r+   c                 |    t          j        || j                  | _        | j        t	          |          z   | _        d S r@   )rf   r   r   r   r7   )r;   r   s     r*   r   z_GzipReader._add_read_data  s3    JtTY//	 -D		9r+   c                    t          j        dt          | j        d                    \  }}|| j        k    r4t          dt          |          dt          | j                            || j        dz  k    rt          d          d}|dk    r | j                            d          }|dk     |r| j        	                    |           d S d S )	N<IIr   zCRC check failed z != r   !Incorrect length of data producedr   r   )
r-   r   r   r   r   r   r|   r   r   r=   )r;   r   isizecs       r*   r   z_GzipReader._read_eof  s    
 }UK!,D,DEEuDI+SZZZZ=@^^^M N N Nt(:566ABBB
 7lla  A 7ll 	 HQ	  	 r+   c                 V    t                                                       d| _        d S rG   )r   _rewindr   )r;   r   s    r*   r   z_GzipReader._rewind&  s%    r+   r   )rL   rM   rN   r>   r   r   r   r   r   r   __classcell__)r   s   @r*   r_   r_     s                     1 1 1 1f: : :     *                 r+   r_   r$   returnc           
          	 |t          j                     }| t          k    rd}n| t          k    rd}nd}t          j        dddddt          |          |d          S )	Nr	   r
   r   z<BBBBLBB      r      )r   r   r   r-   r.   r   )r$   rn   r   s      r*   _create_simple_gzip_headerr  +  sj     }	,,,	.	.	. ;z4q!SZZcJJJr+   )rn   c                   	 |dk    rt          j        | |d          S t          ||          }t          j        dt          j        |           t          |           dz            }|t          j        | |d          z   |z   S )Nr   r  )levelr   z<LLr   i)rf   r   r  r-   r.   r   r7   )r   r$   rn   headertrailers        r*   r   r   @  s     zz }TbAAAA'u==Fk%D!1!1CII
4JLLGT]4}CHHHH r+   c                    	 g }	 t          j        |           }t          |          d                    |          S t	          j        t          j                   }|                    | |                                d                    }|j	        rt          |j                  dk     rt          d          t          j        d|j        d d                   \  }}|t	          j        |          k    rt!          d          |t          |          dz  k    rt!          d	          |                    |           |j        dd                              d
          } _)NTr+   r   r   r   r   zCRC check failedr   r   r   )r   BytesIOr   joinrf   r   ri   r   tellr   r7   r   r   r-   r   r   r   appendlstrip)r   decompressed_membersr   dodecompressedr   r   s          r*   r   r   R  sT    2ZR  (880111t~o666}}T"''))**%566v 	1R^,,q00 0 1 1 1mE2>"1"+=>>V$*\****0111c,''*455ABBB##L111~abb!((11#2r+   c                     ddl m}   | d          }|                                }|                    ddd           |                    d	dd
           |                    dddd           |                    dddgd           |                                }t
          }|j        rt          }n|j        rt          }|j
        D ]}|j        r|dk    r3t          ddt          j        j                  }t          j        j        }n|dd          dk    rt          j        d|           t%          |d          }t'          j        |d d         d          }nb|dk    r4t          j        j        }t          ddt          j        j        |          }n(t'          j        |d          }t%          |dz   d          }	 |                    t*          j                  }|sn|                    |           8|t          j        j        ur|                                 |t          j        j        ur|                                 d S )Nr   )ArgumentParserzeA simple command line interface for the gzip module: act like gzip, but do not delete the input file.)descriptionz--fast
store_truezcompress faster)actionhelpz--bestzcompress betterz-dz--decompresszact like gunzip instead of gzipargs*-r9   )nargsdefaultmetavarr   r   )r"   r#   rl   rr   rs   zfilename doesn't end in .gz: wb)r"   r#   rl   r$   )argparser  add_mutually_exclusive_groupadd_argument
parse_args_COMPRESS_LEVEL_TRADEOFFfastr   bestr   r  r   r   sysstdinbufferstdoutexitr   rY   r   r   r   r   r   )	r  parsergroupr  r$   argr<   gr   s	            r*   mainr1  k  ss   ''''''^	,- - -F //11E	x;LMMM	x;LMMM	t^L>  @ @ @ cC5&IIID,My -,	 -,y  ? 	,czzbtSY=MNNNJ%rss8u$$HDSDDEEEdOOM#crc(D11czzI$btSZ=N+8: : : M#t,,ud++	FF2122E GGENNN		
 CJ%%%GGIIICI$$$GGIII5 r+   __main__r@   )%r-   r(  r   r   rf   rY   r   _compression__all__FTEXTr   r   r   r   r^   rd   r   r%  r   r   r1   r3   r   r   
BaseStreamr   r   r   DecompressReaderr_   r   r   r  r   r   r1  rL   rH   r+   r*   <module>r8     sN  %                   				    
G
G
G(6 %ufeXe    ,@tT+ + + +Z+ + +
' ' ' ' ' ' ' 'TA A A A A' A A AV+ V+ V+ V+ V+|& V+ V+ V+r   " " "Ja  a  a  a  a ,/ a  a  a J (,K Kc K05K K K K* "6      $2 2 22. . .` zDFFFFF r+   