???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
]$O                 @   sR  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 d d d d g Z d d d d	 d
 f \ Z	 Z
 Z Z Z d d f \ Z Z d d d d d d d  Z d d   Z Gd d   d  Z Gd d   d e j  Z Gd d   d e j  Z d d d  Z d d   Z d d   Z e d k rNe   d S)    NGzipFileopencompress
decompress               rb	   c             C   s  d | k r. d | k rv t  d | f   nH | d  k	 rF t  d   | d  k	 r^ t  d   | d  k	 rv t  d   | j d d  } t |  t t f  r t |  | |  } nB t |  d  s t |  d	  r t d  | | |   } n t d
   d | k rt j	 | | | |  S| Sd  S)NtbzInvalid mode: %rz0Argument '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bytesr   hasattr	TypeErrorioTextIOWrapper)filenamemodecompresslevelencodingerrorsnewlineZgz_modebinary_file r"   )/opt/alt/python35/lib64/python3.5/gzip.pyr      s$    c             C   s   |  j  t j d |   d  S)Nz<L)r   structpack)outputvaluer"   r"   r#   write32u@   s    r(   c               @   sR   e  Z d  Z d d d  Z d d   Z d d d  Z d d	   Z d
 d   Z d S)_PaddedFile    c             C   s.   | |  _  t |  |  _ | |  _ d |  _ d  S)Nr   )_bufferlen_lengthfile_read)selffprependr"   r"   r#   __init__J   s    		z_PaddedFile.__init__c             C   s   |  j  d  k r |  j j |  S|  j  | |  j k ra |  j  } |  j  | 7_  |  j | |  j   S|  j  } d  |  _  |  j | d   |  j j | |  j |  Sd  S)N)r/   r.   r   r-   r+   )r0   sizer   r"   r"   r#   r   P   s    			z_PaddedFile.readc             C   sS   |  j  d  k r | |  _ n |  j  t |  8_  d  St |  j  |  _ d |  _  d  S)Nr   )r/   r+   r,   r-   )r0   r2   r"   r"   r#   r2   ]   s    z_PaddedFile.prependc             C   s"   d  |  _  d  |  _ |  j j |  S)N)r/   r+   r.   seek)r0   Zoffr"   r"   r#   r5   f   s    		z_PaddedFile.seekc             C   s   d S)NTr"   )r0   r"   r"   r#   seekablek   s    z_PaddedFile.seekableN)__name__
__module____qualname__r3   r   r2   r5   r6   r"   r"   r"   r#   r)   E   s
   	r)   c               @   s<  e  Z d  Z d Z d d d d d d d  Z e d d    Z e d d    Z d	 d
   Z d d   Z	 d d   Z
 d d   Z d, d d  Z d- d d  Z d d   Z e d d    Z d d   Z e j d d  Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& d'   Z e j d( d)  Z d. d* d+  Z d S)/r   Nr   c             C   s  | r3 d | k s d | k r3 t  d j |    | rO d | k rO | d 7} | d  k rz t j | | pm d  } |  _ | d  k r t | d d  } t | t t f  s d } | d  k r t | d d  } | j	 d	  rt
 |  _ t |  } t j |  |  _ | |  _ nn | j	 d  rlt |  _ |  j |  t j | t j t j t j d  |  _ | |  _ n t  d j |    | |  _ |  j t k r|  j   d  S)Nr   UzInvalid mode: {!r}r   r   namer   r   rwaxr   )r=   r>   r?   )r   formatbuiltinsr   	myfileobjgetattrr   r   r   
startswithREADr   _GzipReaderr   BufferedReaderr+   r;   WRITE_init_writezlibcompressobjDEFLATED	MAX_WBITSDEF_MEM_LEVELr   _write_mtimefileobj_write_gzip_header)r0   r   r   r   rP   mtimerawr"   r"   r#   r3   {   s<    #
				zGzipFile.__init__c             C   sY   d d  l  } | j d t d  |  j t k rR |  j d d   d k rR |  j d S|  j S)Nr   zuse the name attributer      z.gz)warningswarnDeprecationWarningr   rH   r;   )r0   rV   r"   r"   r#   r      s
    (zGzipFile.filenamec             C   s   |  j  j j S)N)r+   rS   _last_mtime)r0   r"   r"   r#   rR      s    zGzipFile.mtimec             C   s9   t  |  j  } d | d d  d t t |    d S)Nz<gzip r    >)reprrP   hexid)r0   sr"   r"   r#   __repr__   s    zGzipFile.__repr__c             C   sC   | |  _  t j d  |  _ d |  _ g  |  _ d |  _ d |  _ d  S)Nr*   r   )r;   rJ   crc32crcr4   Zwritebufbufsizeoffset)r0   r   r"   r"   r#   rI      s    				zGzipFile._init_writec             C   s7  |  j  j d  |  j  j d  yV t j j |  j  } t | t  sV | j d  } | j	 d  ru | d  d  } Wn t
 k
 r d } Yn Xd } | r t } |  j  j t |  j d   |  j } | d  k r t j   } t |  j  t |   |  j  j d  |  j  j d	  | r3|  j  j | d
  d  S)Ns   s   zlatin-1s   .gzrT   r*   r   s   s   s    rU   )rP   r   ospathbasenamer;   r   r   encodeendswithUnicodeEncodeErrorFNAMEchrrO   timer(   int)r0   ZfnameflagsrR   r"   r"   r#   rQ      s,    	zGzipFile._write_gzip_headerc             C   s   |  j    |  j t k r7 d d  l } t | j d   |  j d  k rR t d   t | t	  rp t
 |  } n t |  } | j } | d k r |  j j |  j j |   |  j | 7_ t j | |  j  |  _ |  j | 7_ | S)Nr   z$write() on read-only GzipFile objectz!write() on closed GzipFile object)_check_not_closedr   rH   errnoOSErrorEBADFrP   r   r   r   r,   
memoryviewnbytesr   r   r4   rJ   rb   rc   re   )r0   datarr   lengthr"   r"   r#   r      s     
	zGzipFile.writer   c             C   sG   |  j    |  j t k r7 d d  l } t | j d   |  j j |  S)Nr   z$read() on write-only GzipFile object)rq   r   rE   rr   rs   rt   r+   r   )r0   r4   rr   r"   r"   r#   r     s
    
zGzipFile.readc             C   s\   |  j    |  j t k r7 d d  l } t | j d   | d k  rL t j } |  j j	 |  S)Nr   z%read1() on write-only GzipFile object)
rq   r   rE   rr   rs   rt   r   DEFAULT_BUFFER_SIZEr+   read1)r0   r4   rr   r"   r"   r#   rz     s    
	zGzipFile.read1c             C   sG   |  j    |  j t k r7 d d  l } t | j d   |  j j |  S)Nr   z$peek() on write-only GzipFile object)rq   r   rE   rr   rs   rt   r+   peek)r0   nrr   r"   r"   r#   r{   !  s
    
zGzipFile.peekc             C   s   |  j  d  k S)N)rP   )r0   r"   r"   r#   closed(  s    zGzipFile.closedc             C   s   |  j  } | d  k r d  Sd  |  _  zl |  j t k rq | j |  j j    t | |  j  t | |  j d @ n |  j t	 k r |  j
 j   Wd  |  j } | r d  |  _ | j   Xd  S)Nl    )rP   r   rH   r   r   flushr(   rc   r4   rE   r+   closerB   )r0   rP   rB   r"   r"   r#   r   ,  s    				zGzipFile.closec             C   sF   |  j    |  j t k rB |  j j |  j j |   |  j j   d  S)N)rq   r   rH   rP   r   r   r~   )r0   Z	zlib_moder"   r"   r#   r~   ?  s    
zGzipFile.flushc             C   s   |  j  j   S)N)rP   fileno)r0   r"   r"   r#   r   F  s    zGzipFile.filenoc             C   s/   |  j  t k r t d   |  j j d  d  S)NzCan't rewind in write moder   )r   rE   rs   r+   r5   )r0   r"   r"   r#   rewindN  s    zGzipFile.rewindc             C   s   |  j  t k S)N)r   rE   )r0   r"   r"   r#   readableU  s    zGzipFile.readablec             C   s   |  j  t k S)N)r   rH   )r0   r"   r"   r#   writableX  s    zGzipFile.writablec             C   s   d S)NTr"   )r0   r"   r"   r#   r6   [  s    zGzipFile.seekablec             C   s   |  j  t k r | t j k rI | t j k r= |  j | } n t d   | |  j k  rd t d   | |  j } t d  } x% t	 | d  D] } |  j
 |  q W|  j
 t | d   n, |  j  t k r |  j   |  j j | |  S|  j S)NzSeek from end not supportedzNegative seek in write modei   )r   rH   r   SEEK_SETSEEK_CURre   r   rs   r   ranger   rE   rq   r+   r5   )r0   re   whencecountchunkir"   r"   r#   r5   ^  s     
zGzipFile.seekc             C   s   |  j    |  j j |  S)N)rq   r+   readline)r0   r4   r"   r"   r#   r   r  s    
zGzipFile.readliner\   r\   r\   )r7   r8   r9   rB   r3   propertyr   rR   ra   rI   rQ   r   r   rz   r{   r}   r   rJ   Z_SYNC_FLUSHr~   r   r   r   r   r6   r   r   r5   r   r"   r"   r"   r#   r   n   s,   Fc                   s   e  Z d  Z   f d d   Z d d   Z d d   Z d d   Z d d
 d  Z d d   Z d d   Z	   f d d   Z
   S)rF   c                s<   t    j t |  t j d t j d |  _ d  |  _ d  S)NZwbitsT)superr3   r)   rJ   decompressobjrM   _new_memberrY   )r0   fp)	__class__r"   r#   r3   x  s    	z_GzipReader.__init__c             C   s   t  j d  |  _ d |  _ d  S)Nr*   r   )rJ   rb   _crc_stream_size)r0   r"   r"   r#   
_init_read  s    z_GzipReader._init_readc             C   sg   |  j  j |  } xN t |  | k  rb |  j  j | t |   } | sU t d   | | 7} q W| S)NzACompressed file ended before the end-of-stream marker was reached)_fpr   r,   EOFError)r0   r|   rw   r   r"   r"   r#   _read_exact  s    z_GzipReader._read_exactc             C   s;  |  j  j d  } | d k r" d S| d k r> t d |   t j d |  j d   \ } } |  _ | d k r} t d   | t @r t j d	 |  j d   \ } |  j |  | t @r x* |  j  j d
  } | s | d k r Pq W| t	 @r x* |  j  j d
  } | s| d k r Pq W| t
 @r7|  j d  d S)Nr   r*   Fs   zNot a gzipped file (%r)z<BBIxxr	   zUnknown compression methodz<Hr   s    T)r   r   rs   r$   unpackr   rY   FEXTRArl   FCOMMENTFHCRC)r0   magicmethodflagZ	extra_lenr`   r"   r"   r#   _read_gzip_header  s0    '



z_GzipReader._read_gzip_headerr   c             C   s[  | d k  r |  j    S| s  d Sx|  j j rW |  j   d |  _ |  j |  j   |  _ |  j r |  j   |  j   s |  j	 |  _
 d Sd |  _ |  j j t j  } |  j j | |  } |  j j d k r |  j j |  j j  n( |  j j d k r|  j j |  j j  | d k rP| d k r# t d   q# W|  j |  |  j	 t |  7_	 | S)Nr   r*   TFzACompressed file ended before the end-of-stream marker was reached)readall_decompressoreof	_read_eofr   _decomp_factory_decomp_argsr   r   _pos_sizer   r   r   ry   r   unconsumed_tailr2   unused_datar   _add_read_datar,   )r0   r4   bufZ
uncompressr"   r"   r#   r     s:    

		
	z_GzipReader.readc             C   s2   t  j | |  j  |  _ |  j t |  |  _ d  S)N)rJ   rb   r   r   r,   )r0   rw   r"   r"   r#   r     s    z_GzipReader._add_read_datac             C   s   t  j d |  j d   \ } } | |  j k rX t d t |  t |  j  f   n | |  j d @k rw t d   d } x" | d k r |  j j d  } q W| r |  j j	 |  d  S)Nz<IIr	   zCRC check failed %s != %sl    z!Incorrect length of data produceds    r   )
r$   r   r   r   rs   r^   r   r   r   r2   )r0   rb   Zisizecr"   r"   r#   r     s    !z_GzipReader._read_eofc                s   t    j   d |  _ d  S)NT)r   _rewindr   )r0   )r   r"   r#   r      s    z_GzipReader._rewindr\   )r7   r8   r9   r3   r   r   r   r   r   r   r   r"   r"   )r   r#   rF   w  s   !3rF   c          	   C   sH   t  j   } t d | d d d |   } | j |   Wd  QRX| j   S)NrP   r   wbr   )r   BytesIOr   r   getvalue)rw   r   r   r1   r"   r"   r#   r     s    c          	   C   s0   t  d t j |     } | j   SWd  QRXd  S)NrP   )r   r   r   r   )rw   r1   r"   r"   r#   r     s    c              C   s  t  j d d   }  |  o& |  d d k } | r? |  d d   }  |  sN d g }  xm|  D]e} | r | d k r t d d d d d	 t  j j  } t  j j } qX| d d   d k r t d t |   qU t | d  } t	 j | d  d  d  } na | d k r3t  j j } t d d d d d	 t  j j  } n% t	 j | d  } t | d d  } x' | j
 d  } | sqP| j |  q[W| t  j j k	 r| j   | t  j j k	 rU | j   qU Wd  S)Nr   r   z-d-r   r   r   r   rP   rT   z.gzzfilename doesn't end in .gz:r   i   rU   rU   )sysargvr   stdinbufferstdoutprintr]   r   rA   r   r   r   )argsr   argr1   gr   r"   r"   r#   _test  s<    	!$
r   __main__)r$   r   rn   rf   rJ   rA   r   _compression__all__ZFTEXTr   r   rl   r   rE   rH   r   r(   r)   
BaseStreamr   DecompressReaderrF   r   r   r   r7   r"   r"   r"   r#   <module>   s&   0$+) 
	&