o
    ga                    @   s  d dl Z d dlZd dlmZmZmZ d dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlZd dlmZmZmZ d dlmZ d dlmZmZ edZd dlmZmZmZmZ G d	d
 d
ejZG dd dejZG dd dZG dd dejZ G dd dejZ!G dd dejZ"dZ#dZ$dZ%dZ&ej'ddgZ(dZ)ej*ddej'ej+ej,B dgZ-dZ.ej/dd d!ej'igZ0d"Z1ej*d#dej2d$d ej'd#dd%gZ3d&Z4d'Z5d(d) Z6e7d*kre6  dS dS )+    N)BytesIOUnsupportedOperationDEFAULT_BUFFER_SIZE)support)_4G
bigmemtestrun_unittest)import_module)TESTFNunlinklzma)LZMACompressorLZMADecompressor	LZMAErrorLZMAFilec                   @   s@  e Zd Zdd Zdd Zdd Zdd ZdGd
dZdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zej e!e"d: d;d<d=d> Z#ej e!e"d: d?d<d@dA Z$dBdC Z%ej&dDdE Z'dFS )HCompressorDecompressorTestCasec                 C   sL  |  ttg  | j ttdd | j ttdd | j ttdd | j ttdd | j tttjd |  t td	d
tjigd W d    n1 sJw   Y  |  ttd | j ttdd |  t ttjdd W d    n1 suw   Y  |  t ttjdd W d    n1 sw   Y  | j ttt	d |  t ttj
t	d W d    n1 sw   Y  |  t ttjt	d W d    n1 sw   Y  t }|  t|j |  t|jdd |  t|jd | }|  t|jd |  t|j t }|  t|j |  t|jdd || |  t|jd d S )Ng@format checkZasdfpreset   filters   idr   r    s   qwmemlimitZzzz   r   r      foo   bars   blahs   quux)assertRaises	TypeErrorr   
ValueErrorr   FORMAT_AUTOFILTER_LZMA2r   
FORMAT_RAWFILTERS_RAW_1	FORMAT_XZFORMAT_ALONEcompressflush
decompressEOFError)selflzcemptylzdr   r   D/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_lzma.pytest_simple_bad_args   sH   
z3CompressorDecompressorTestCase.test_simple_bad_argsc                 C   s   | j ttdgd | j ttddigd | j ttddigd |  t ttjddgd W d    n1 s9w   Y  |  t ttjddgd W d    n1 sXw   Y  |  t ttjddgd W d    d S 1 sxw   Y  d S )	N   wobsiter   xyzzyr   r   ́ r   r   foo)r&   r'   r   r(   r   r*   FILTER_DELTA
FILTER_X86r3   r   r   r7   test_bad_filter_specD   s   "z3CompressorDecompressorTestCase.test_bad_filter_specc                 C   s$   t  }|t | t|jd d S )Ns   nyan)r   r1   COMPRESSED_XZr&   r2   r3   r6   r   r   r7   test_decompressor_after_eofO   s   
z:CompressorDecompressorTestCase.test_decompressor_after_eofc                 C   sZ   t dd}| t|jt t tjdd}| t|jt t tjdd}| t|jt d S )N   r    )	r   r&   r   r1   rB   r   r-   r.   COMPRESSED_ALONErC   r   r   r7   test_decompressor_memlimitT   s   
z9CompressorDecompressorTestCase.test_decompressor_memlimit    c                 C   sN   |  |j ||}| |t | |j| | |j | |j| d S N)assertFalseeofr1   assertEqualINPUTr   
assertTrueunused_data)r3   r6   datar   rO   outr   r   r7   _test_decompressor`   s   
z1CompressorDecompressorTestCase._test_decompressorc                 C   s0   t  }| |ttj t  }| |ttj d S rI   )r   rR   rB   r   CHECK_CRC64rF   
CHECK_NONErC   r   r   r7   test_decompressor_autoh   s   z5CompressorDecompressorTestCase.test_decompressor_autoc                 C      t tj}| |ttj d S rI   )r   r   r-   rR   rB   rS   rC   r   r   r7   test_decompressor_xzo      
z3CompressorDecompressorTestCase.test_decompressor_xzc                 C   rV   rI   )r   r   r.   rR   rF   rT   rC   r   r   r7   test_decompressor_alones   rX   z6CompressorDecompressorTestCase.test_decompressor_alonec                 C   "   t tjtd}| |ttj d S Nr   )r   r   r+   r,   rR   COMPRESSED_RAW_1rT   rC   r   r   r7   test_decompressor_raw_1w      z6CompressorDecompressorTestCase.test_decompressor_raw_1c                 C   rZ   r[   )r   r   r+   FILTERS_RAW_2rR   COMPRESSED_RAW_2rT   rC   r   r   r7   test_decompressor_raw_2{   r^   z6CompressorDecompressorTestCase.test_decompressor_raw_2c                 C   rZ   r[   )r   r   r+   FILTERS_RAW_3rR   COMPRESSED_RAW_3rT   rC   r   r   r7   test_decompressor_raw_3   r^   z6CompressorDecompressorTestCase.test_decompressor_raw_3c                 C   rZ   r[   )r   r   r+   FILTERS_RAW_4rR   COMPRESSED_RAW_4rT   rC   r   r   r7   test_decompressor_raw_4   r^   z6CompressorDecompressorTestCase.test_decompressor_raw_4c              	   C   s   t  }g }tdttdD ]}| |j ||t||d   qd|}| 	|t
 | 	|jtj | |j | 	|jd d S Nr   
   rH   r   rangelenrB   rJ   rK   appendr1   joinrL   rM   r   r   rS   rN   rO   r3   r6   rQ   ir   r   r7   test_decompressor_chunks   s   
z7CompressorDecompressorTestCase.test_decompressor_chunksc              	   C   s   t  }g }tdttdD ].}| |j ||d ||d ||d ||t||d   qd|}| 	|t
 | 	|jtj | |j | 	|jd d S rh   rj   ro   r   r   r7   test_decompressor_chunks_empty   s   
z=CompressorDecompressorTestCase.test_decompressor_chunks_emptyc                 C   s&  t  }d}g }ttd }||jtd | |d | |j | t|d | ||jd|d | |j | t|d | ||jt|d  |d | t|d | |j	sw||jd|d | t|d | |j	r`d
|}| |t | |jtj | |jd d S )Nd      
max_lengthrH   )r   rl   rB   rm   r1   rJ   needs_inputrL   assertLessEqualrK   rn   rM   r   r   rS   rO   )r3   r6   rv   rQ   Zlen_r   r   r7    test_decompressor_chunks_maxsize   s0   
z?CompressorDecompressorTestCase.test_decompressor_chunks_maxsizec                 C   s   t  }g }| |jtd d ddd ||dd ||tdd d ||tdd   | d|t d S )Nrs   r   ru   rH   rt   i      r   rL   r1   rB   rm   rn   rM   r3   r6   rQ   r   r   r7   test_decompressor_inputbuf_1   s   z;CompressorDecompressorTestCase.test_decompressor_inputbuf_1c                 C   s   t  }g }| |jtd d ddd ||d ||tdd d ||tdd d ||tdd   | d|t d S )N   r   ru   rH   i  rt   ,  r}   r~   r   r   r7   test_decompressor_inputbuf_2   s   z;CompressorDecompressorTestCase.test_decompressor_inputbuf_2c                 C   sl   t  }g }||td d d ||tdd d ||tdd   | d|t d S )Nr      r   rH   )r   rm   r1   rB   rL   rn   rM   r~   r   r   r7   test_decompressor_inputbuf_3   s   z;CompressorDecompressorTestCase.test_decompressor_inputbuf_3c                 C   s&   t  }d}| j|t| tj|d d S )Ns	   fooblibarrO   )r   rR   rB   r   rS   )r3   r6   extrar   r   r7   test_decompressor_unused_data   s
   
z<CompressorDecompressorTestCase.test_decompressor_unused_datac                 C   sl   t  }| t|jt t tj}| t|jt t tj}| t|jt	 t tj
td}| t|jt	 d S r[   )r   r&   r   r1   r\   r   r-   rF   r.   rB   r+   r,   rC   r   r   r7   test_decompressor_bad_input  s   

z:CompressorDecompressorTestCase.test_decompressor_bad_inputc                 C   s*   t  }| t|jt | t|jt d S rI   )r   r&   r   r1   r\   rC   r   r   r7   test_decompressor_bug_28275  s   z:CompressorDecompressorTestCase.test_decompressor_bug_28275c                 C   s2   t  }|t|  }t }| ||tj d S rI   )r   r/   rM   r0   r   rR   r   rS   r3   r4   cdatar6   r   r   r7   test_roundtrip_xz  s   z0CompressorDecompressorTestCase.test_roundtrip_xzc                 C   s6   t tj}|t|  }t }| ||tj d S rI   )	r   r   r.   r/   rM   r0   r   rR   rT   r   r   r   r7   test_roundtrip_alone  s   
z3CompressorDecompressorTestCase.test_roundtrip_alonec                 C   sB   t tjtd}|t|  }ttjtd}| ||tj	 d S r[   
r   r   r+   re   r/   rM   r0   r   rR   rT   r   r   r   r7   test_roundtrip_raw%  s   z1CompressorDecompressorTestCase.test_roundtrip_rawc                 C   sp   t tjtd}|t}||d7 }||d7 }||d7 }|| 7 }ttjtd}| ||tj	 d S )Nr   rH   r   r   r   r   r7   test_roundtrip_raw_empty+  s   
z7CompressorDecompressorTestCase.test_roundtrip_raw_emptyc              	   C   sn   t  }g }tdttdD ]}||t||d   q||  d|}t }| 	||t
j d S rh   r   rk   rl   rM   rm   r/   r0   rn   r   rR   r   rS   r3   r4   r   rp   r6   r   r   r7   test_roundtrip_chunks5  s   
z4CompressorDecompressorTestCase.test_roundtrip_chunksc              	   C   s   t  }g }tdttdD ](}||t||d   ||d ||d ||d q||  d|}t }| 	||t
j d S rh   r   r   r   r   r7   test_roundtrip_empty_chunks?  s   
z:CompressorDecompressorTestCase.test_roundtrip_empty_chunksc                 C   s"   t  }| j|tt tjtd d S )Nr   )r   rR   rB   rF   r   rS   rC   r   r   r7   test_decompressor_multistreamN  s   
z<CompressorDecompressorTestCase.test_decompressor_multistreamrs   rt   )sizeZmemusec                 C   s^   t  }|d| |  }t|}z| t|| | t|dd W d }d S d }w )N   xr   )r   r/   r0   r   r1   rL   rl   strip)r3   r   r4   r   ddatar   r   r7   test_compressor_bigmemU  s   
z5CompressorDecompressorTestCase.test_compressor_bigmemr   c                 C   sf   t  }d}t|}z!||| d  }t|}||}| || W d  } }}d S d  } }}w )Ni      )r   random	randbytesr   r/   r1   rL   )r3   r   r6   	blocksizeblockinputr   r   r   r   r7   test_decompressor_bigmema  s   


z7CompressorDecompressorTestCase.test_decompressor_bigmemc              	   C   s   t tjd D ]:}| t tt | W d    n1 s w   Y  | t tt | W d    q1 s<w   Y  qd S Nr   )rk   pickleHIGHEST_PROTOCOLr&   r'   dumpsr   r   )r3   protor   r   r7   test_pickleq  s   z*CompressorDecompressorTestCase.test_picklec                 C   sH   t td}t }| }tdD ]}|  q| j| | ddd d S )Ngettotalrefcountrs   r   ri   )Zdelta)r   Zget_attributesysr   rk   __init__ZassertAlmostEqual)r3   r   r6   Zrefs_beforerp   r   r   r7   &test_refleaks_in_decompressor___init__x  s   
zECompressorDecompressorTestCase.test_refleaks_in_decompressor___init__NrH   )(__name__
__module____qualname__r8   rA   rD   rG   rR   rU   rW   rY   r]   ra   rd   rg   rq   rr   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zskip_if_pgo_taskr   r   r   r   r   Zrefcount_testr   r   r   r   r7   r      sL    (
 	


r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )"CompressDecompressFunctionTestCasec                 C   s&  |  ttj |  ttjg  | j ttjddd | j ttjddd | j ttjddd | j ttjddd	 |  t tjdd
dtjigd W d    n1 sSw   Y  |  ttj |  ttjg  | j ttjddd | j ttjddd |  t tjdtji d W d    n1 sw   Y  |  t tjdtjdd W d    n1 sw   Y  |  t tjdtd	 W d    n1 sw   Y  |  t tjdtj	td W d    n1 sw   Y  |  t tjdtj
td W d    d S 1 sw   Y  d S )NrH   xzr   Znoner   Zblahr   rE   r   r   r   r   r   g   1Ar    r#   r"   r   r!   )r&   r'   r   r/   r(   r*   r1   r+   r,   r-   r.   r@   r   r   r7   test_bad_args  s<   $z0CompressDecompressFunctionTestCase.test_bad_argsc                 C   s   |  t tjtdd W d    n1 sw   Y  |  t tjttjdd W d    n1 s5w   Y  |  t tjttjdd W d    d S 1 sTw   Y  d S )NrE   r    r   )r&   r   r   r1   rB   r-   rF   r.   r@   r   r   r7   test_decompress_memlimit  s   "z;CompressDecompressFunctionTestCase.test_decompress_memlimitc                 C   s   t t}| |t t t}| |t t tt j}| |t t tt j}| |t t jtt j	t
d}| |t t jtt j	td}| |t t jtt j	td}| |t t jtt j	td}| |t d S r[   )r   r1   rB   rL   rM   rF   r-   r.   r\   r+   r,   r`   r_   rc   rb   rf   re   r3   r   r   r   r7   test_decompress_good_input  s0   

z=CompressDecompressFunctionTestCase.test_decompress_good_inputc                 C   s   |  ttjtd d  |  ttjtd d  | j ttjtd d tjtd | j ttjt	d d tjt
d | j ttjtd d tjtd | j ttjtd d tjtd d S )N   r#   )r&   r   r   r1   rB   rF   r\   r+   r,   r`   r_   rc   rb   rf   re   r@   r   r   r7    test_decompress_incomplete_input  s   
zCCompressDecompressFunctionTestCase.test_decompress_incomplete_inputc                 C   s  |  t tt W d    n1 sw   Y  |  t tt W d    n1 s/w   Y  |  t tjttjd W d    n1 sLw   Y  |  t tjttj	d W d    n1 siw   Y  |  t tjttj
td W d    d S 1 sw   Y  d S Nr   r#   )r&   r   r   r1   COMPRESSED_BOGUSr\   rF   r-   rB   r.   r+   r,   r@   r   r   r7   test_decompress_bad_input  s"   
"z<CompressDecompressFunctionTestCase.test_decompress_bad_inputc                 C   s   t t}t |}| |t t tt j}t |}| |t t tt j}t |}| |t t jtt jtd}t j|t jtd}| |t d S r[   )	r   r/   rM   r1   rL   r-   r.   r+   re   )r3   r   r   r   r   r7   test_roundtrip  s   



z1CompressDecompressFunctionTestCase.test_roundtripc                 C   s"   t tt }| |td  d S )Nrt   )r   r1   rB   rF   rL   rM   r   r   r   r7   test_decompress_multistream  r^   z>CompressDecompressFunctionTestCase.test_decompress_multistreamc                 C   s   t tt }| |t d S rI   r   r1   rB   r   rL   rM   r   r   r   r7   test_decompress_trailing_junk   s   z@CompressDecompressFunctionTestCase.test_decompress_trailing_junkc                 C   s&   t td t }| |td  d S )Nr   r   r   r   r   r7   )test_decompress_multistream_trailing_junk  s   zLCompressDecompressFunctionTestCase.test_decompress_multistream_trailing_junkN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r     s    r   c                   @   s*   e Zd ZdZd
ddZdd Zdd Zd	S )TempFilez=Context manager - creates a file, and deletes it on __exit__.rH   c                 C   s   || _ || _d S rI   )filenamerP   )r3   r   rP   r   r   r7   r     s   
zTempFile.__init__c                 C   s>   t | jd}|| j W d    d S 1 sw   Y  d S )Nwb)openr   writerP   r3   fr   r   r7   	__enter__  s   "zTempFile.__enter__c                 G   s   t | j d S rI   )r   r   )r3   argsr   r   r7   __exit__  s   zTempFile.__exit__Nr   )r   r   r   __doc__r   r   r   r   r   r   r7   r   	  s
    
r   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6didj Z7dkdl Z8dmdn Z9dodp Z:dqdr Z;dsdt Z<dudv Z=dwdx Z>dydz Z?d{d| Z@d}S )~FileTestCasec                 C   s   t tt}W d    n1 sw   Y  t t d}W d    n1 s'w   Y  t t d}W d    n1 s=w   Y  t t d	}W d    d S 1 sTw   Y  d S )Nwxa)r   r   rB   r   r   r   r7   	test_init  s   "zFileTestCase.test_initc              	   C   s   t t}t|te t|}| | t W d    n1 s"w   Y  t|d}|	t W d    n1 s<w   Y  t|}| | td  W d    n1 sZw   Y  W d    d S W d    d S 1 srw   Y  d S )Nr   rt   )
pathlibPathr
   r   rB   r   rL   readrM   r   )r3   r   r   r   r   r7    test_init_with_PathLike_filename$  s   


"z-FileTestCase.test_init_with_PathLike_filenamec              	   C   s   t ttO tt}W d    n1 sw   Y  ttd}W d    n1 s*w   Y  ttd}W d    n1 s?w   Y  W d    d S W d    d S 1 sWw   Y  d S )Nr   r   )r   r
   rB   r   r   r   r   r7   test_init_with_filename.  s   
"z$FileTestCase.test_init_with_filenamec              	   C   s:  t t ttd W d    n1 sw   Y  ttd W d    n1 s*w   Y  ttd W d    n1 s?w   Y  ttd W d    n1 sTw   Y  ttd W d    n1 siw   Y  ttd W d    n1 s~w   Y  W d    d S W d    d S 1 sw   Y  d S )Nrrbr   r   r   ab)r   r
   r   r@   r   r   r7   test_init_mode7  s,   
"zFileTestCase.test_init_modec              
   C   s   |  tt dD ]E}tt tt| W d    n1 sw   Y  | t tt| W d    n1 s9w   Y  W d    q1 sHw   Y  qd S )N)r   xb)
addCleanupr   r
   r   r&   FileExistsError)r3   moder   r   r7   test_init_with_x_modeF  s   z"FileTestCase.test_init_with_x_modec                 C   sr  |  t tttd W d    n1 sw   Y  |  t tttd W d    n1 s3w   Y  |  t tttd W d    n1 sOw   Y  |  t tttd W d    n1 skw   Y  |  t tttd W d    n1 sw   Y  |  t tttd W d    n1 sw   Y  |  t tttd W d    n1 sw   Y  |  t tttd W d    n1 sw   Y  |  t tttd	 W d    n1 sw   Y  |  t tttd
 W d    n	1 sw   Y  |  t tttd W d    d S 1 s2w   Y  d S )N)r   r   r   xtzx+rxZwxrtzr+wtzw+rw)r&   r(   r   r   rB   r@   r   r   r7   test_init_bad_modeP  sB   $zFileTestCase.test_init_bad_modec                 C   s  |  t tt ddd W d    n1 sw   Y  |  t tt dtjd W d    n1 s6w   Y  |  t tt dtjd d W d    n1 sVw   Y  |  t ttt	tj
d W d    n1 stw   Y  |  t ttt	tjd W d    n1 sw   Y  |  t ttt	tjd W d    n1 sw   Y  |  t ttt	tjd W d    n1 sw   Y  |  t ttt	tjd W d    d S 1 sw   Y  d S )Nr   s   asdr   r   )r&   r'   r   r   r   r   CHECK_UNKNOWNCHECK_ID_MAXr(   rB   rT   CHECK_CRC32rS   CHECK_SHA256r@   r   r   r7   test_init_bad_checkh  s0   "z FileTestCase.test_init_bad_checkc                 C   s  |  t tt ddd W d    n1 sw   Y  |  t tt ddd W d    n1 s5w   Y  |  t tt ddd W d    n1 sRw   Y  |  t tt ddd W d    n1 sow   Y  |  t tt ddd W d    n1 sw   Y  |  t tt ddd W d    n1 sw   Y  |  t tttd	d W d    d S 1 sw   Y  d S )
Nr   g(\@r   ri      rw   ir=   r   )r&   r'   r   r   r   OverflowErrorr(   rB   r@   r   r   r7   test_init_bad_preset|  s*   "z!FileTestCase.test_init_bad_presetc                 C   s  |  t tt ddgd W d    n1 sw   Y  |  t tt dddigd W d    n1 s9w   Y  |  t tt dddigd W d    n1 sYw   Y  |  t tt dtjdd	gd W d    n1 s{w   Y  |  t tt dtjdd	gd W d    n1 sw   Y  |  t tt dtjdd	gd W d    d S 1 sw   Y  d S )
Nr   r9   r   r:   r   r   r;   r   r<   )	r&   r'   r   r   r(   r   r*   r>   r?   r@   r   r   r7   test_init_bad_filter_spec  s0   "z&FileTestCase.test_init_bad_filter_specc                 C   sF   |  t tt dtjdtd W d    d S 1 sw   Y  d S )Nr      )r   r   r   )r&   r(   r   r   r   r+   r,   r@   r   r   r7   !test_init_with_preset_and_filters  s
   "z.FileTestCase.test_init_with_preset_and_filtersc                 C   s   t t }t|}|  | |j |  | |j W d    n1 s'w   Y  ttt tt}|j}|  | 	|j |  W d    d S 1 sRw   Y  d S rI   )
r   rB   r   closerJ   closedr   r
   _fprN   )r3   srcr   fpr   r   r7   
test_close  s   


"zFileTestCase.test_closec                 C   s   t tt}z| |j |  | |j W |  n|  w | |j t t d}z| |j W |  n|  w | |j d S Nr   )r   r   rB   rJ   r   r   r   rN   r   r   r   r7   test_closed  s   zFileTestCase.test_closedc              	   C   s   t tt}z| t|j W |  n|  w | t|j tt	t+ t t	}z| 
| |j  | | t W |  n|  w W d    n1 sSw   Y  | t|j d S rI   )r   r   rB   r&   r   filenor   r(   r   r
   rL   r   ZassertIsInstanceintr   r   r   r7   test_fileno  s   zFileTestCase.test_filenoc                 C   s   t tt}z| |  |  | |  W |  n|  w | t|j t t d}z| 	|  W |  n|  w | t|j tt}dd |_t |}z| 	|  W |  n|  w | t|j d S )Nr   c                   S   s   dS )NFr   r   r   r   r7   <lambda>  s    z,FileTestCase.test_seekable.<locals>.<lambda>)
r   r   rB   rN   seekabler   r   r&   r(   rJ   )r3   r   r   r   r   r7   test_seekable  s&   
zFileTestCase.test_seekablec                 C      t tt}z| |  |  | |  W |  n|  w | t|j t t d}z| 	|  W |  n|  w | t|j d S r   )
r   r   rB   rN   readabler   r   r&   r(   rJ   r   r   r   r7   test_readable     zFileTestCase.test_readablec                 C   r   r   )
r   r   rB   rJ   writabler   r   r&   r(   rN   r   r   r   r7   test_writable  r  zFileTestCase.test_writablec                 C   s  t tt}| | t | | d W d    n1 s!w   Y  t tt}| | t W d    n1 s?w   Y  t tttjd}| | t | | d W d    n1 shw   Y  t tttj	d}| | t | | d W d    n1 sw   Y  t tt
tjtd}| | t | | d W d    n1 sw   Y  t tttjtd}| | t | | d W d    n1 sw   Y  t tttjtd}| | t | | d W d    n	1 sw   Y  t tttjtd}| | t | | d W d    d S 1 s<w   Y  d S )NrH   r   r#   )r   r   rB   rL   r   rM   rF   r   r-   r.   r\   r+   r,   r`   r_   rc   rb   rf   re   r   r   r   r7   	test_read  sV   $zFileTestCase.test_readc                 C   s
  t tt}| |dd W d    n1 sw   Y  t tt}| |dd W d    n1 s9w   Y  t tttjd}| |dd W d    n1 s[w   Y  t tttjd}| |dd W d    d S 1 s~w   Y  d S )Nr   rH   r   )	r   r   rB   rL   r   rF   r   r-   r.   r   r   r   r7   test_read_01  s   "zFileTestCase.test_read_0c                 C   sv   t tt+}g }	 |d}|sq | t|d || q
| d|t	 W d    d S 1 s4w   Y  d S NTri   rH   )
r   r   rB   r   ry   rl   rm   rL   rn   rM   )r3   r   chunksresultr   r   r7   test_read_10;  s   

"zFileTestCase.test_read_10c                 C   s   t ttd }| | td  W d    n1 sw   Y  t ttt }| | td  W d    n1 s?w   Y  t ttd tj	t
d}| | td  W d    d S 1 sfw   Y  d S )Nr   rt      r#   )r   r   rB   rL   r   rM   rF   rc   r   r+   rb   r   r   r   r7   test_read_multistreamF  s   "z"FileTestCase.test_read_multistreamc                 C   sv   t j}ttt _z.tttd }| | td  W d    n1 s&w   Y  W |t _d S W |t _d S |t _w Nr   )	_compressionBUFFER_SIZErl   rB   r   r   rL   r   rM   )r3   Zsaved_buffer_sizer   r   r   r7   )test_read_multistream_buffer_size_alignedO  s   

z6FileTestCase.test_read_multistream_buffer_size_alignedc                 C   sF   t ttt }| | t W d    d S 1 sw   Y  d S rI   r   r   rB   r   rL   r   rM   r   r   r   r7   test_read_trailing_junkZ  s   "z$FileTestCase.test_read_trailing_junkc                 C   sN   t ttd t }| | td  W d    d S 1 s w   Y  d S r  r  r   r   r   r7   #test_read_multistream_trailing_junk^  s   "z0FileTestCase.test_read_multistream_trailing_junkc              	   C   s   t tt5 tt}| | t | | d W d    n1 s%w   Y  W d    d S W d    d S 1 s=w   Y  d S )NrH   )r   r
   rB   r   rL   r   rM   r   r   r   r7   test_read_from_fileb  s   
"z FileTestCase.test_read_from_filec              	   C   s   zt d}W n ty   | d Y nw tt t5 t|}| | t	 | | d W d    n1 s;w   Y  W d    d S W d    d S 1 sSw   Y  d S )Nascii%Temporary file name needs to be ASCIIrH   )
r
   encodeUnicodeEncodeErrorskipTestr   rB   r   rL   r   rM   )r3   bytes_filenamer   r   r   r7   'test_read_from_file_with_bytes_filenameh  s   
"z4FileTestCase.test_read_from_file_with_bytes_filenamec                 C   sH   t ttd d }| t|j W d    d S 1 sw   Y  d S )Nr   )r   r   rB   r&   r2   r   r   r   r   r7   test_read_incompleter  s   "z!FileTestCase.test_read_incompletec              	   C   s   t d d }tt|}| t|j W d    n1 sw   Y  tt|}| |ttt | t|jd W d    n1 sGw   Y  t	dD ]$}tt|d | }| t|jd W d    qP1 sow   Y  qPd S )Nir      )
rB   r   r   r&   r2   r   rL   rl   rM   rk   )r3   Z	truncatedr   rp   r   r   r7   test_read_truncatedv  s   z FileTestCase.test_read_truncatedc                 C   s   t tt}|  | t|j t t d}| t|j W d    n1 s)w   Y  t tt}| t|jt  W d    d S 1 sIw   Y  d S r   )	r   r   rB   r   r&   r(   r   r'   floatr   r   r   r7   test_read_bad_args  s   "zFileTestCase.test_read_bad_argsc                 C   s@   t tt}| t|j W d    d S 1 sw   Y  d S rI   )r   r   r   r&   r   r   r   r   r   r7   test_read_bad_data     "zFileTestCase.test_read_bad_datac                 C   st   t tt*}g }	 | }|sq|| q
| d|t | | d W d    d S 1 s3w   Y  d S )NTrH   r   r   rB   read1rm   rL   rn   rM   r3   r   Zblocksr  r   r   r7   
test_read1  s   
"zFileTestCase.test_read1c                 C   sD   t tt}| |dd W d    d S 1 sw   Y  d S )Nr   rH   )r   r   rB   rL   r#  r   r   r   r7   test_read1_0  s   "zFileTestCase.test_read1_0c                 C   sv   t tt+}g }	 |d}|sq|| q
| d|t | | d W d    d S 1 s4w   Y  d S r  r"  r$  r   r   r7   test_read1_10  s   

"zFileTestCase.test_read1_10c                 C   s|   t ttd ,}g }	 | }|sq|| q| d|td  | | d W d    d S 1 s7w   Y  d S )Nr   TrH   r"  r$  r   r   r7   test_read1_multistream  s   
"z#FileTestCase.test_read1_multistreamc                 C   s   t tt}|  | t|j t t d}| t|j W d    n1 s)w   Y  t tt}| t|jd  W d    d S 1 sHw   Y  d S r   )r   r   rB   r   r&   r(   r#  r'   r   r   r   r7   test_read1_bad_args  s   "z FileTestCase.test_read1_bad_argsc                 C   s   t tt$}| }| t|d | t| | 	|
 t W d    n1 s-w   Y  t tt&}|d}| t|d | t| | 	|
 t W d    d S 1 saw   Y  d S )Nr   ri   )r   r   rB   peekZassertGreaterrl   rN   rM   
startswithrL   r   )r3   r   r  r   r   r7   	test_peek  s   
"zFileTestCase.test_peekc                 C   s@   t t d}| t|j W d    d S 1 sw   Y  d S r   )r   r   r&   r(   r*  r   r   r   r7   test_peek_bad_args  r!  zFileTestCase.test_peek_bad_argsc                 C   s  t t}| }W d    n1 sw   Y  tt t}| tt|| W d    n1 s3w   Y  tt t}| tt|| W d    n1 sSw   Y  tt tt	j
d}| tt|| W d    n1 svw   Y  tt tt	jd}| tt|| W d    n1 sw   Y  tt tt	jtd}| tt|| W d    d S 1 sw   Y  d S r   )r   rM   	readlinesr   rB   assertListEquallistiterrF   r   r-   r.   r`   r+   r_   r3   r   linesr   r   r7   test_iterator  s*   

"zFileTestCase.test_iteratorc                 C   s|   t t}| }W d    n1 sw   Y  tt t}|D ]
}| | | q!W d    d S 1 s7w   Y  d S rI   )r   rM   r.  r   rB   rL   readline)r3   r   r3  liner   r   r7   test_readline  s   

"zFileTestCase.test_readlinec                 C   sr   t t}| }W d    n1 sw   Y  tt t}| | | W d    d S 1 s2w   Y  d S rI   )r   rM   r.  r   rB   r/  r2  r   r   r7   test_readlines  s   

"zFileTestCase.test_readlinesc                 C   sh   t jdtd dd}| t|tj tt|}| 	|
dd dt }| |jj |d dS )z-Decompressed data buffering should be limited    g    >Ar   r   r   z)Excessive amount of data was decompressedN)r   r/   r   Z
assertLessrl   r  r  r   r   rL   r   r   ry   _bufferrawtell)r3   ZbombdecompZ
max_decompr   r   r7   test_decompress_limited  s   z$FileTestCase.test_decompress_limitedc              	   C   s  t  /}t|d}|t W d    n1 sw   Y  tt}| | | W d    n1 s5w   Y  t  5}t|dtjd}|t W d    n1 sVw   Y  tjttjd}| | | W d    n1 suw   Y  t  5}t|dtj	d}|t W d    n1 sw   Y  tjttj	d}| | | W d    n1 sw   Y  t  8}t|dtj
td}|t W d    n1 sw   Y  tjttj
td}| | | W d    d S 1 sw   Y  d S )Nr   r   r#   )r   r   r   rM   r   r/   rL   getvaluer-   r.   r+   r_   )r3   dstr   expectedr   r   r7   
test_write  sB   


"zFileTestCase.test_writec              	   C   s   t  A}t|d}tdttdD ]}|t||d   qW d    n1 s*w   Y  tt}| |	 | W d    d S 1 sGw   Y  d S )Nr   r   ri   )
r   r   rk   rl   rM   r   r   r/   rL   r?  )r3   r@  r   startrA  r   r   r7   test_write_10  s   
"zFileTestCase.test_write_10c              	   C   s  t d d }t dd }t dd  }ddd |||fD }t _}t|d}|| W d    n1 s8w   Y  t|d}|| W d    n1 sRw   Y  t|d}|| W d    n1 slw   Y  | | | W d    d S 1 sw   Y  d S )NrE      rH   c                 s       | ]}t |V  qd S rI   r   r/   .0r   r   r   r7   	<genexpr>      z1FileTestCase.test_write_append.<locals>.<genexpr>r   r   )rM   rn   r   r   r   rL   r?  )r3   part1part2part3rA  r@  r   r   r   r7   test_write_append  s    "zFileTestCase.test_write_appendc                 C   s   zJt td}|t W d    n1 sw   Y  tt}ttd}| | | W d    n1 s8w   Y  W t	t d S W t	t d S t	t w )Nr   r   )
r   r
   r   rM   r   r/   r   rL   r   r   )r3   r   rA  r   r   r7   test_write_to_file$  s   
zFileTestCase.test_write_to_filec                 C   s   zt d}W n ty   | d Y nw zJt|d}|t W d    n1 s,w   Y  tt}t	t d}| 
| | W d    n1 sNw   Y  W tt  d S W tt  d S tt  w )Nr  r  r   r   )r
   r  r  r  r   r   rM   r   r/   r   rL   r   r   )r3   r  r   rA  r   r   r7   &test_write_to_file_with_bytes_filename.  s    
z3FileTestCase.test_write_to_file_with_bytes_filenamec                 C   s<  t d d }t dd }t dd  }ddd |||fD }zyttd}|| W d    n1 s5w   Y  ttd}|| W d    n1 sOw   Y  ttd}|| W d    n1 siw   Y  ttd}| | | W d    n1 sw   Y  W tt d S W tt d S tt w )	NrE   rE  rH   c                 s   rF  rI   rG  rH  r   r   r7   rJ  @  rK  z9FileTestCase.test_write_append_to_file.<locals>.<genexpr>r   r   r   )	rM   rn   r   r
   r   r   rL   r   r   )r3   rL  rM  rN  rA  r   r   r   r7   test_write_append_to_file<  s(   z&FileTestCase.test_write_append_to_filec                 C   s   t t d}|  | t|jd t ttd}| t|jd W d    n1 s,w   Y  t t d!}| t|jd  | t|jd | t|jd W d    d S 1 s[w   Y  d S )Nr   r$   r   r%   texti  )r   r   r   r&   r(   r   rB   r'   r   r   r   r7   test_write_bad_argsM  s   "z FileTestCase.test_write_bad_argsc              	   C   s   t t}| }W d    n1 sw   Y  t  0}t|d}|| W d    n1 s1w   Y  tt}| | | W d    d S 1 sNw   Y  d S r   )	r   rM   r.  r   
writelinesr   r/   rL   r?  )r3   r   r3  r@  rA  r   r   r7   test_writelinesX  s   


"zFileTestCase.test_writelinesc                 C   sT   t tt}|d | | tdd   W d    d S 1 s#w   Y  d S )Ni+  r   r   rB   seekrL   r   rM   r   r   r   r7   test_seek_forwarda  s   
"zFileTestCase.test_seek_forwardc                 C   s`   t ttd }|ttd  | | tdd   W d    d S 1 s)w   Y  d S )Nrt   {   )r   r   rB   rX  rl   rM   rL   r   r   r   r   r7    test_seek_forward_across_streamsf  s   "z-FileTestCase.test_seek_forward_across_streamsc                 C   s`   t tt }|d |dd | | tdd   W d    d S 1 s)w   Y  d S )Nrs   i  r   i8  r   r   rB   r   rX  rL   rM   r   r   r   r7   %test_seek_forward_relative_to_currentk  s
   
"z2FileTestCase.test_seek_forward_relative_to_currentc                 C   V   t tt}|dd | | tdd   W d    d S 1 s$w   Y  d S )Nirt   rW  r   r   r   r7   !test_seek_forward_relative_to_endq     "z.FileTestCase.test_seek_forward_relative_to_endc                 C   s^   t tt}|d |d | | tdd   W d    d S 1 s(w   Y  d S )Ni     r\  r   r   r   r7   test_seek_backwardv  s
   

"zFileTestCase.test_seek_backwardc                 C   sn   t ttd %}|ttd  |d | | tdd  t  W d    d S 1 s0w   Y  d S )Nrt   iM  i  )r   r   rB   r   rl   rM   rX  rL   r   r   r   r7   !test_seek_backward_across_streams|  s
   
"z.FileTestCase.test_seek_backward_across_streamsc                 C   r^  )Nijrt   rW  r   r   r   r7   "test_seek_backward_relative_to_end  r`  z/FileTestCase.test_seek_backward_relative_to_endc                 C   sh   t tt$}|ttd  | | tt | | d W d    d S 1 s-w   Y  d S )N)#  rH   )	r   r   rB   rX  rl   rM   rL   r<  r   r   r   r   r7   test_seek_past_end  s
   "zFileTestCase.test_seek_past_endc                 C   s\   t tt}|d | | d | | t W d    d S 1 s'w   Y  d S )Nir   )r   r   rB   rX  rL   r<  r   rM   r   r   r   r7   test_seek_past_start  s
   
"z!FileTestCase.test_seek_past_startc                 C   s   t tt}|  | t|jd t t d}| t|jd W d    n1 s+w   Y  t tt-}| t|jdd | ttf|jdd | t|jd  | t|jd W d    d S 1 sfw   Y  d S )Nr   r   r   	   r   s   derp)r   r   rB   r   r&   r(   rX  r'   r   r   r   r7   test_seek_bad_args  s   "zFileTestCase.test_seek_bad_argsc                 C   s   t tt,}d}	 | | | |d}|sq!|t|7 }q
| | tt W d    n1 s5w   Y  t t d1}tdttdD ]}| | | |	t||d   qI| | tt W d    d S 1 stw   Y  d S )Nr   T   r      )
r   r   rB   rL   r<  r   rl   rM   rk   r   )r3   r   posr  r   r   r7   	test_tell  s"   
	"zFileTestCase.test_tellc                 C   s&   t tt}|  | t|j d S rI   )r   r   rB   r   r&   r(   r<  r   r   r   r7   test_tell_bad_args  s   zFileTestCase.test_tell_bad_argsc                 C   s   t  }|jtdd}| t|d | |j t  }|jtdd}| |j | |j |d}| t|d | |j | || | d S )Nrw   ru   ih3  i]3  rH      )	r   r1   ISSUE_21872_DATrL   rl   rN   rK   rJ   rx   )r3   Zd1ZentireZd2Zout1Zout2r   r   r7   test_issue21872  s   
zFileTestCase.test_issue21872c                 C   sr   t  dg d}t||j }tt d}| ||| | | | W d    d S 1 s2w   Y  d S )NQ)r   rt   r   r
  r   r   )arrayrl   itemsizer   r   rL   r   r<  )r3   qZLENGTHr   r   r   r7   test_issue44439  s   "zFileTestCase.test_issue44439N)Ar   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r  r  r  r  r  r  r  r  r  r   r%  r&  r'  r(  r)  r,  r-  r4  r7  r8  r>  rB  rD  rO  rP  rQ  rR  rT  rV  rY  r[  r]  r_  rb  rc  rd  rf  rg  ri  rm  rn  rq  rv  r   r   r   r7   r     s~    

	

	
		
	r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )OpenTestCasec              	   C   s  t ttd}| | t W d    n1 sw   Y  t [}t |d}|t W d    n1 s:w   Y  t |	 }| |t t |d}|t W d    n1 sbw   Y  t |	 }| |td  W d    d S 1 sw   Y  d S )Nr   r   r   rt   )
r   r   r   rB   rL   r   rM   r   r1   r?  )r3   r   bio	file_datar   r   r7   test_binary_modes  s   "zOpenTestCase.test_binary_modesc              	   C   s@  t d}|dtj}tjttddd}| 	|
 | W d    n1 s)w   Y  t e}tj|ddd}|| W d    n1 sJw   Y  t| d}| 	|| tj|ddd}|| W d    n1 sww   Y  t| d}| 	||d  W d    d S 1 sw   Y  d S )Nr  
r   encodingr   Zatrt   )rM   decodereplaceoslinesepr   r   r   rB   rL   r   r   r1   r?  )r3   uncompresseduncompressed_rawr   rx  ry  r   r   r7   test_text_modes  s"   
"zOpenTestCase.test_text_modesc              	   C   sj  t t ttd}|t W d    n1 sw   Y  ttd}t| }| |t W d    n1 s=w   Y  ttd}| | t W d    n1 s[w   Y  ttd}|t W d    n1 svw   Y  ttd}| | td  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r   r   rt   )	r   r
   r   r   r   rM   r1   r   rL   )r3   r   ry  r   r   r7   test_filename  s(   

"zOpenTestCase.test_filenamec              	   C   s   t t}t|l t|d}|t W d    n1 s w   Y  t|d}t|	 }| 
|t W d    n1 sBw   Y  t|d}| 
|	 t W d    n1 s`w   Y  W d    d S W d    d S 1 sxw   Y  d S )Nr   r   )r   r   r
   r   r   r   r   rM   r1   r   rL   )r3   r   r   ry  r   r   r7   test_with_pathlike_filename  s   

"z(OpenTestCase.test_with_pathlike_filenamec                 C   s   |  t ttd W d    n1 sw   Y  |  t ttd W d    n1 s1w   Y  |  t tjtddd W d    n1 sNw   Y  |  t tjtddd W d    n1 skw   Y  |  t tjtddd	 W d    d S 1 sw   Y  d S )
Nr   Zrbtr   zutf-8r|  ignore)errorsr{  )newline)r&   r(   r   r   r
   r@   r   r   r7   test_bad_params  s   "zOpenTestCase.test_bad_paramsc              	   C   s   t jtd}t jttdfi |}| | t W d    n1 s%w   Y  t 9}t j|dfi |}|	t W d    n1 sHw   Y  t j
| fi |}| |t W d    d S 1 siw   Y  d S )Nr#   r   r   )r   r+   r,   r   r   r\   rL   r   rM   r   r1   r?  )r3   optionsr   rx  ry  r   r   r7   test_format_and_filters   s   "z$OpenTestCase.test_format_and_filtersc              	   C   s   t d}|dtj}t c}tj|ddd}|| W d    n1 s(w   Y  t	|
 d}| || |d tj|ddd}| | | W d    n1 s]w   Y  W d    d S W d    d S 1 suw   Y  d S )Nr  r{  r   z	utf-16-ler|  r   r   )rM   r~  r  r  r  r   r   r   r   r1   r?  rL   rX  r   )r3   r  r  rx  r   ry  r   r   r7   test_encoding+  s   

"zOpenTestCase.test_encodingc              	   C   s   t td2}tj|dddd}| | d W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S )Ns   foobarr   r  r  )r}  r  Zfoobar)r   r   r/   r   rL   r   )r3   rx  r   r   r   r7   test_encoding_error_handler8  s   "z(OpenTestCase.test_encoding_error_handlerc              	   C   s   t d}t V}tj|dddd}|| W d    n1 s"w   Y  |d tj|dddd}| | |g W d    n1 sIw   Y  W d    d S W d    d S 1 saw   Y  d S )Nr  r   r{  )r}  r  r   r   )	rM   r~  r   r   r   r   rX  rL   r.  )r3   rS  rx  r   r   r   r7   test_newline>  s   

"zOpenTestCase.test_newlinec              
   C   s   |  tt dD ]Q}tt d|v rdnd }tjt||d W d    n1 s)w   Y  | t tt| W d    n1 sEw   Y  W d    q1 sTw   Y  qd S )N)r   r   r   tr  r|  )r   r   r
   r   r   r&   r   )r3   r   r}  r   r   r7   test_x_modeH  s   zOpenTestCase.test_x_modeN)r   r   r   rz  r  r  r  r  r  r  r  r  r  r   r   r   r7   rw    s    
rw  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
MiscellaneousTestCasec                 C   sP   |  ttj |  ttj | ttjd  | ttj d S r   )rN   r   is_check_supportedrT   r   rJ   r   r   r@   r   r   r7   test_is_check_supportedV  s   z-MiscellaneousTestCase.test_is_check_supportedc                 C   s  |  t td W d    n1 sw   Y  |  t tddi W d    n1 s1w   Y  |  t ttjdd W d    n1 sOw   Y  |  tj ttjdd W d    n1 snw   Y  ttjdd	d
dd}| 	|d d S )Ns
   not a dictr      r  )r   Zjunkre  r   distrt   r   r      )r   pblplc	dict_size   ]   )
r&   r'   r   _encode_filter_propertiesr(   r*   r   r>   FILTER_LZMA1rL   )r3   Zpropsr   r   r7   test__encode_filter_propertiesb  s,   
z4MiscellaneousTestCase.test__encode_filter_propertiesc                 C   s   |  t ttjdti W d    n1 sw   Y  |  tj ttjd W d    n1 s6w   Y  ttjd}| 	|d tj | 	|d d | 	|d d | 	|d	 d
 | 	|d d d S )Nz	should bes   too longr  r   r  rt   r  r   r  r   r  r  )
r&   r'   r   _decode_filter_propertiesr?   bytesr   r>   r  rL   )r3   Z
filterspecr   r   r7   test__decode_filter_propertiesw  s   z4MiscellaneousTestCase.test__decode_filter_propertiesc                 C   s6   t t jd}t |}t t j|}| || d S )Nr  )r   r  r  r  rL   )r3   Zspec1Z	reencodedZspec2r   r   r7    test_filter_properties_roundtrip  s   
z6MiscellaneousTestCase.test_filter_properties_roundtripN)r   r   r   r  r  r  r  r   r   r   r7   r  T  s
    r  s  
LAERTES

       O, fear me not.
       I stay too long: but here my father comes.

       Enter POLONIUS

       A double blessing is a double grace,
       Occasion smiles upon a second leave.

LORD POLONIUS

       Yet here, Laertes! aboard, aboard, for shame!
       The wind sits in the shoulder of your sail,
       And you are stay'd for. There; my blessing with thee!
       And these few precepts in thy memory
       See thou character. Give thy thoughts no tongue,
       Nor any unproportioned thought his act.
       Be thou familiar, but by no means vulgar.
       Those friends thou hast, and their adoption tried,
       Grapple them to thy soul with hoops of steel;
       But do not dull thy palm with entertainment
       Of each new-hatch'd, unfledged comrade. Beware
       Of entrance to a quarrel, but being in,
       Bear't that the opposed may beware of thee.
       Give every man thy ear, but few thy voice;
       Take each man's censure, but reserve thy judgment.
       Costly thy habit as thy purse can buy,
       But not express'd in fancy; rich, not gaudy;
       For the apparel oft proclaims the man,
       And they in France of the best rank and station
       Are of a most select and generous chief in that.
       Neither a borrower nor a lender be;
       For loan oft loses both itself and friend,
       And borrowing dulls the edge of husbandry.
       This above all: to thine ownself be true,
       And it must follow, as the night the day,
       Thou canst not then be false to any man.
       Farewell: my blessing season this in thee!

LAERTES

       Most humbly do I take my leave, my lord.

LORD POLONIUS

       The time invites you; go; your servants tend.

LAERTES

       Farewell, Ophelia; and remember well
       What I have said to you.

OPHELIA

       'Tis in my memory lock'd,
       And you yourself shall keep the key of it.

LAERTES

       Farewell.
s   this is not a valid lzma streams   7zXZ  ִF !   t/] bXn䴝o
2h\6(wd"u.n򎍏/=/Mާz-]rZo#z/FMt6 BF$Ql,bnԨNȆ3x2O@Q /OozSt<I#ud6Y]-Pee:	7
pJV%G=?(΂=I3RisPX2jLbc-HoJliQk?@xH12Puw㾪iWЀ#cb5]dWlUGyF7v5h8W5:?rD5@7cԗitSkKvy6Te]:kla4r}r*z8hӼl-KZL3Ϝ!^9w PPKdZ}%$/&,qh{Q)qÀo![Ԋwt`^??\RԎXaЫS>ɕH	%$.oRbU^S/vr̢GkzʀЋIxy-0z^֏_Pi萄ܿky܁+\YYhw̴ |ejz`A叩	=_%voZO	M-<"CMg~b|'x!JFu 87yu_@qc#5)_3]o]5myK+ b t0ȏ׮+iܹk>f${pƈ0_h6Z%'
"冟7X=mNX[FUɆ0a+* _$_ޯ46qɒ`}ʮ`wجVeZ#d{wB:^VaH
\Xu#%*v!	4    Vj?uLU   twPg    YZs  ]    bXn䴝o
2h\6(wd"u.n򎍏/=/Mާz-]rZo#z/FMt6 BF$Ql,bnԨNȆ3x2O@Q /OozSt<I#ud6Y]-Pee:	7
pJV%G=?(΂=I3RisPX2jLbpljr=	3!EvVF״P~E7ƻc%I;砋Z(o>`᪨١}獃4T㘼DMA@ȓSaśTJE}g#ZVɝc>0S/y_(r?@:zBeyX :	xD\&GYJv{)Ao 5F?vVtTf'k\Y|wdd  ,Xsv}%
ߢ.6
h
 BlU}sHpB8ZA;z{5!A$qg/|r^=n6{>8
:'.
:݂'["wD$wq,1,2w$JdmgA&8i;NQrheL;mQN[jEOliB^R].-eiNwbQ~餈4kM)T3)B ^..	H5#NV$Kkt'R2-LH0~?SOE]<Z0a*?rnGd^8uEI
Vⳕi!&1FDP SO3D!w_G+.]>#h;5JK^-[\ʯԡĸprr.l []+0gaKYI,
V_#>wW,63J2=kTUti_lhfxr   )r   r   s  ] bXncyqm' QIVL8_뼥
W$=R;k8	{+cS3mb4*+.9bZrA0s"rGސcu۩.Al<OiŴg4t6"o?^}}[:
[lg2n7@6Tu	8[4PCV"x~NK%k:{6è\@F_ȐsU87JMг;X﮳eO,z,dyjlB8#6PKP؈ҡC?۔_"eޛ>H;#4ź%v9A"2i3߾Dm7o:Jہ6O	Q펕S/MSJd=^BE͑G.b&ٟj\CvҊ?^H>IqYK7DWOl5U{ϣk{O*B-(R@E:VY]ĥgX3 ]n콣Yu*TA$AAiw젇%=DѻqCqpL "t~cix)l)@lynD:Җ? %_h#7QDhnѣ_?q17_|ʷSWt9L|WsL_$Fkvfhî1QG5yIcwrIp:p_va"ّeëH*m}}>l%΄dӂ5fOg^&	@ΟJ{rzMho^U7\!kUd~熊z;PGw^ı3Sf @売sxRD`WϑTZ-X|^[7֢		Q5/@S5VhAKVCMxOO<e*Hk6G+)͜lK}5u*F2   rt   r  s  ] -Ԩd?ﾯH2.g5z	[}WmHgQRA5
v~:o:JCc*o\lE2aU{׸wܾ88\[_9%fs#=<\t=7ft\Q8Ԫآ >-ӎ#ArAmJ~B(`WKkaj S%iXB;EeTbg
jу]"Mr\j~PGHN*Z.	pE1ͩHP~0JK]9F_[ԋ6뿻$kS{,f:Sjz殘Q~r?&ˀ	|x|dhh+'Ł3q`Z#܊Il{6ճxhz%ݘ!RUaX1=R0㤚bd$]Bh2cL`4xZ]T^؉;Y9zo)f]$np;QK @:UcX
!"=.6g=WnOTDW3pntVOjMi$3܊fYKhwO2^&Vi=yZoƶw%c`]8mQh`[q0g"NR)(0\G!xzHyM
\A	arMꄛ!~Hoڇh颾qN!WGڡA`j?5B~E!^ݨy}))D2fuɗx4_6$t9=˿v\8jk)ffnĩMIE5TpӉ3/֏ou;PRFj$hK(c7)ݲ,.yQi`h-	^ [!M.-S+8,  ë~$eP]iog^Ek`~y+^D"!ҧT5Y4ZHf]όx3TUHy7X ( /\JvP8~4kAyPJNaO:eqACmw	uCwUP 8L4w!L2 j;Vːlv@EZ[E`>ޡbZЩ`{;fk1.N(u!LГBjc_}dàY/,bl@p8quHX}OXݾeO`CF=K$I_XJ'v+.vTv5ṑS"(xCXpS'J!G	2 oSdy,fߞE\L h}W#\oz r  )r   Zstart_offsetr   s  ] bXn䴝o
2h\6(wd"u.n򎍏/=/Mާz-]rZo#z/FMt6 BF$Ql,bnԨNȆ3x2O@Q /OozSt<I#ud6Y]-Pee:	7
pJV%G=?(΂=I3RisPX2jLbc-HoJliQk?@xH12Puw㾪iWЀ#cb5]dWlUGyF7v5h8W5:?rD5@7cԗitSkKvy6Te]:kla4r}r*z8hӼl-KZL3Ϝ!^9w PPKdZ}%$/&,qh{Q)qÀo![Ԋwt`^??\RԎXaЫS>ɕH	%$.oRbU^S/vr̢GkzʀЋIxy-0z^֏_Pi萄ܿky܁+\YYhw̴ |ejz`A叩	=_%voZO	M-<"CMg~b|'x!JFu 87yu_@qc#5)_3]o]5myK+ b t0ȏ׮+iܹk>f${pƈ0_h6Z%'
"冟7X=mNX[FUɆ0a+* _$_ޯ46qɒ`}ʮ`wجVeZ#d{wB:^VaH
\Xu#%*v!	4   r
  @   )r   r   r  s  \ bWh'֐,vJq lxBf=&fx
>TnFv_?V<#w؞*]c~]Eg"8=~WDǙ1u9hw|lk6o7{Y_b$=wZ@kmE*ح{j,)mB<ca( -c'B`װ]Bܖ6DՃ1&5 PZ&jŏSӥu$̗oV~xWp4HDY)t"Fߥ"xȒ
[l*Yر@o7ru5$U{	}QxNXX`v-f/\)Bg#2B2444q	93?mPXa)djw2A\C3!o[:0.@\4Jv4kkfss^ea=&rpEՀykTHoŌ0-e\>k	!^qA<EG񶹂sa̒ҶUنaTG@	7*޼]6N񄞟'<ߙsqН%p4{=MH:֤0DӨS `W 7N#	1al	jA:\=D3]eZAdgFQqBro仴@dQ
/ظS5:gDzڐ5H!	uRlQOb	RA -IGE$jѪI2s53D0%P}JO^hlV.owඤ*rG+i[w@_yW.-mU6gSA(=ޒ,DnE\Yˌ~EuVƙm<[u1
w%![·B,%df"g.3XY+4qA
=9*/s1b@FQ\ ,E7[!mA}3R5FH)ccнn{IJB`w&`}@Oxe	|eg@Y88NJ!qqWk*7Jmq
:`.+)ހXQmcPA'ɬ)tZR`]gRFTHS<PeJ^[c~']A,K{MxQ3=a9a2sbE"dDIJ!dGm_rNBqPΧeP!|6ͿIirejPqwS7hMʆ?P}y~I<Q8ߔ>rkv⹊qIs"㩥>D;33'e.;HqW~2x
6	;j[-%@2\ǯ¡Oth_A_W&D܅;X,>-7S)pQBLdsuȕ*)v{FWlj s  ]  @ h3        `DѻZ^3+g-1F%-ps8,|*xТb!cهUn VJ"8%_`?@*^&gɯ'}FN\Mz-˚O@gƥwnG'GIrυy[/_MQ+xF]&,fHgrvqxYF9'Fd<\kai C"4)֧`y|jX!Nǅjv]c5ՙi^Gl:,'4$Ywkkņ>~G5]0dw#(3ʡbXr+m3qŞ*6s-r?CgJN'M
Q
`mNql:qGT!0~4J827At]5MK,j7(l2ڕ(0BhpJ	go??}όV:вkk=Ǎ/`.X*~j";V`t0d)}\bJ
+V!ޘK7`ā~؍mY)/Pm[zZӋPf0ЕJ{Wope]ڷ5<g!̱\72Mc350L-˖Uʰ̉*P.~9o?}P
;m|#03<^HiֳTFq}&ĮΜU̶drwNzsRl5^eVYٟ*Ĩ6+ֈ[_rcfx|~L/ۘCiOt<Q`%5k
7I<#)&C`!˩FMuʕebXa[BOf;Crbٜi]<zT9pFPw堔a q&Wo5q8t4-H	dQJ s."pNg}|d3X[E+WvG/I<L\1O{mW~^@D@A9;BOutNJ5ZO6[7o*[ɷa'uq+y aMļ0'pQHK=nFOY0	|Py~h0d[ _vcI3`WyrkBiŊ^ԁ>"v`$^2.dd@Y|j}riVX4rBNPS[I(;9|^0;.*[l_Xf!43D{t]5Ufb
,Q	@<,-3 7	K7*X~Okz"3sL;^⽪Zfڦ:]}a?5M
}M2Yo īTU"unA̐i~4*JtuוZG~ST,C`2>Qśhu bVKc ޅ-:*;`ݗgS}5e7/!Y'C(bTD_E֘{\fz9˥bqW!;z~is+5k htUޣˆj
C?0Jj;0d#;c&8?Jncb4lhnZe,B-c|&LL86bViF̎4/^W?܄(dOD64,SJc^0	D[憰n^븸)a @+/h3`+P-Bn^/w<M!EY<٦Bǃ"D|&d`70o喤v;]'hA&9~@t<4)=:&6A+ <k\dv^l5C?ԠMCȀ3BPjyzE[oT'*HM7f;'wM 帷 D+PgnkcƐVUovfZ3^翬vxJjn*o>_+D{sHAGݭ7q+Wg"X~4`q)KsV5s*;{<@GjLؒ&	u5]\A|ICeQ*~uXyP
fZEu>'`cZ8jUoe>Rb#H-!ޝkw{/K)A:UM̻{9 ((6iu؞q7-BQ8vACd!'ͮؓިb2K l	|DU>w7}W|g|1 m@6+	D Mҵ'~Co	fI1φ`͂wcdCUEMJH=*I"^S6=@,Gr[>n<(}~4stff	/)
ײwQnsƷ(G<6[~H ~:e(_(c̟gvS=S>
YRGAOdcPܟ"[Q~䈡#CϾHؾmWFQ(XDKB.-՞|N]Z=)MLTiN?4O&u70ؓBNEyϘDʚL_]ܩ1 cؿp-N(#2Ilr c                   C   s   t ttttt d S rI   )r   r   r   r   rw  r  r   r   r   r7   	test_main  s   r  __main__)8r  rs  ior   r   r   r  r   r   r   r   testr   ZunittestZtest.supportr   r   r   Ztest.support.import_helperr	   Ztest.support.os_helperr
   r   r   r   r   r   r   ZTestCaser   r   r   r   rw  r  rM   r   rB   rF   r*   r,   r\   r>   PRESET_DEFAULTPRESET_EXTREMEr_   r`   FILTER_IA64rb   rc   r?   re   rf   rp  r  r   r   r   r   r7   <module>   s~      l      Ix<@0,
.

>
-
D 	
