Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/site-packages/PIL/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/site-packages/PIL/__pycache__/PngImagePlugin.cpython-312.pyc

�

&ٜg����v�ddlmZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
mZmZmZmZmZddlmZmZmZmZmZddlmZdd	lmZdd
lmZddlmZ ddlm!Z"erdd
lm#Z#ejHe%�Z&ejNd�jPZ)dZ*dddddddddddddddd�Z+ejNd �Z,ejZZ.	d!e.zZ/	Gd"�d#e�Z0Gd$�d%e�Z1dRd&�Z2dSdTd'�Z3Gd(�d)�Z4Gd*�d+e5�Z6Gd,�d-�Z7Gd.�d/e�Z8Gd0�d1e4�Z9dUd2�Z:Gd3�d4ej,�Z;d5d6d7d8d9d:d;d;d;d<d=d>d?d@dAdB�Z<dVdC�Z=GdD�dE�Z>GdF�dG�Z?GdH�dIe�Z@																dWdJ�ZAdXdK�ZBe=dLf											dYdM�ZCdZdN�ZDej�e;j�e;e:�ej�e;j�eC�ej�e;j�eB�ej�e;j�dOdPg�ej�e;j�dQ�y)[�)�annotationsN)�Callable)�IntEnum)�IO�
TYPE_CHECKING�Any�
NamedTuple�NoReturn�cast�)�Image�
ImageChops�	ImageFile�ImagePalette�
ImageSequence)�i16be)�i32be)�o8)�o16be)�o32be)�_imagings\w\w\w\ws�PNG

)�1r)�L�L;2)r�L;4)rr)�I;16�I;16B)�RGBr)rzRGB;16B)�P�P;1)r�P;2)r�P;4)rr)�LAr#)�RGBAzLA;16B)r$r$)r$zRGBA;16B))rr)�r)�r)�r)�r)r'r%)r(r%)r�)r%r))r&r))r'r))r'r&)r(r&)r'�)r(r*s^�*�*$�@c��eZdZdZ	dZ	dZy)�Disposalrrr%N)�__name__�
__module__�__qualname__�OP_NONE�
OP_BACKGROUND�OP_PREVIOUS���=/usr/local/lib/python3.12/site-packages/PIL/PngImagePlugin.pyr-r-hs$���G���M��
�K�r5r-c��eZdZdZ	dZy)�BlendrrN)r.r/r0�	OP_SOURCE�OP_OVERr4r5r6r8r8}s���I��
�G�r5r8c��tj�}|j|t�}|jr
d}t|��|S)Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)�zlib�
decompressobj�
decompress�MAX_TEXT_CHUNK�unconsumed_tail�
ValueError)�s�dobj�	plaintext�msgs    r6�_safe_zlib_decompressrF�s>������D�����>�2�I����M����o���r5c�4�tj||�dzS)Nl��)r<�crc32)�data�seeds  r6�_crc32rK�s���:�:�d�D�!�J�.�.r5c�^�eZdZdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Z	dd�Z
dd	�Zddd
�Zy)�ChunkStreamc� �||_g|_y�N)�fp�queue)�selfrPs  r6�__init__zChunkStream.__init__�s��$&���:<��
r5c��d}|j�J�|jr:|jj�\}}}|jj|�nE|jj	d�}|dd}|jj�}t
|�}t|�s*tjsdt|��d�}t|��|||fS)z.Fetch a new chunk. Returns header information.Nr'r&zbroken PNG file (chunk �))rPrQ�pop�seek�read�tell�i32�is_cidr�LOAD_TRUNCATED_IMAGES�repr�SyntaxError)rR�cid�pos�lengthrBrEs      r6rXzChunkStream.read�s������w�w�"�"�"��:�:�#�z�z�~�~�/��C��f��G�G�L�L��������Q��A��A�B�%�C��'�'�,�,�.�C���V�F��c�{��2�2�/��S�	�{�!�<��!�#�&�&��C���r5c��|SrOr4�rRs r6�	__enter__zChunkStream.__enter__�s���r5c�$�|j�yrO)�close)rR�argss  r6�__exit__zChunkStream.__exit__�s���
�
�r5c� �dx|_|_yrO)rQrPrcs r6rfzChunkStream.close�s��#�#��
�T�Wr5c�\�|j�J�|jj|||f�yrO)rQ�append�rRr_r`ras    r6�pushzChunkStream.push�s+���z�z�%�%�%��
�
���3��V�,�-r5c�|�tjd|||�t|d|jd����||�S)z"Call the appropriate chunk handlerzSTREAM %r %s %s�chunk_�ascii)�logger�debug�getattr�decoderls    r6�callzChunkStream.call�s>��	���&��S�&�9�<�w�t�v�c�j�j��&9�%:�;�<�S�&�I�Ir5c��tjr|ddz	dzr|j||�y|j�J�	t	|t	|��}t|jj
d��}||k7rdt|��d�}t|��y#tj$r }dt|��d�}t|�|�d}~wwxYw)	zRead and verify checksumr�rNr&z(broken PNG file (bad header checksum in rUz(broken PNG file (incomplete checksum in )rr\�crc_skiprPrKrZrXr]r^�struct�error)rRr_rI�crc1�crc2rE�es       r6�crczChunkStream.crc�s����*�*��A��!��a���M�M�#�t�$���w�w�"�"�"�	*��$��s��,�D��t�w�w�|�|�A��'�D��t�|�@��c���1�M��!�#�&�&����|�|�	*�<�T�#�Y�K�q�I�C��c�"��)��	*�s�AB�C
�*C�C
c�V�|j�J�|jjd�y)z
Read checksumNr&)rPrX)rRr_rIs   r6rxzChunkStream.crc_skip�s#���w�w�"�"�"������Q�r5c�4�g}|j�J�		|j�\}}}||k(r	|S|j|t
j|j|��|j|��_#tj$r}d}t	|�|�d}~wwxYw)Nztruncated PNG file)	rPrXryrz�OSErrorr~r�
_safe_readrk)rR�endchunk�cidsr_r`rar}rEs        r6�verifyzChunkStream.verify�s������w�w�"�"�"��
*�#'�9�9�;� ��S�&�
�h�����
�H�H�S�)�.�.�t�w�w��?�@��K�K������<�<�
*�*���c�l��)��
*�s�A1�1B�B�BN�rP�	IO[bytes]�return�None)r�ztuple[bytes, int, int])r�rM)rg�objectr�r��r�r�)r_�bytesr`�intrar�r�r�)r_r�r`r�rar�r�r�)r_r�rIr�r�r�)�IEND)r�r�r�zlist[bytes])
r.r/r0rSrXrdrhrfrmrur~rxr�r4r5r6rMrM�s5��=� �*��$�.�J�*�*�r5rMc�J�eZdZUdZded<ded<e	d							dd��Zy)	�iTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    zstr | bytes | None�lang�tkeyNc�N�tj||�}||_||_|S)z�
        :param cls: the class to use when creating the instance
        :param text: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        )�str�__new__r�r�)�cls�textr�r�rRs     r6r�ziTXt.__new__s'���{�{�3��%����	���	��r5)NN)r�r�r��
str | Noner�r�r�r�)r.r/r0�__doc__�__annotations__�staticmethodr�r4r5r6r�r��sJ�����
���DH�
��
�(�
�7A�
�	
�
��
r5r�c�b�eZdZdZdd�Zdd	d�Z			d
											dd�Z	d							dd�Zy)
�PngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    c��g|_yrO)�chunksrcs r6rSzPngInfo.__init__s	��79��r5c�@�|jj|||f�y)a"Appends an arbitrary chunk. Use with caution.

        :param cid: a byte string, 4 bytes long.
        :param data: a byte string of the encoded data
        :param after_idat: for use with private chunks. Whether the chunk
                           should be written after IDAT

        N)r�rk)rRr_rI�
after_idats    r6�addzPngInfo.adds��	
�����C��z�2�3r5c���t|t�s|jdd�}t|t�s|jdd�}t|t�s|jdd�}t|t�s|jdd�}|r8|jd|dz|zdz|zdzt	j
|�z�y|jd|dz|zdz|zdz|z�y)	z�Appends an iTXt chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        :param zip: compression flag

        �latin-1�strict�utf-8�iTXts�sN)�
isinstancer��encoder�r<�compress)rR�key�valuer�r��zips      r6�add_itxtzPngInfo.add_itxt*s���$�#�u�%��*�*�Y��1�C��%��'��L�L��(�3�E��$��&��;�;�w��1�D��$��&��;�;�w��1�D���H�H���k�!�D�(�5�0�4�7�%�?�$�-�-�PU�BV�V�
�

�H�H�W�c�I�o��4�u�<�t�C�e�K�e�S�Tr5c��t|t�rL|j|||j�|jnd|j�|j|��Sd|��St|t
�s	|j
dd�}t|t
�s|j
dd�}|r,|jd|dztj|�z�y|jd|d	z|z�y#t$r|j|||��cYSwxYw)
z�Appends a text chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key, text or an
           :py:class:`PIL.PngImagePlugin.iTXt` instance
        :param zip: compression flag

        Nr5)r�r�r��zTXt��tEXtr�)r�r�r�r�r�r�r��UnicodeErrorr�r<r�)rRr�r�r�s    r6�add_textzPngInfo.add_textMs���e�T�"��=�=���#�j�j�4��
�
�#�#�j�j�4��
�
��!��
�;>��!��
��%��'�
:����Y��9���#�u�%��*�*�Y��1�C���H�H�W�c�G�m�d�m�m�E�.B�B�C��H�H�W�c�E�k�E�1�2�� �
:��}�}�S�%�S�}�9�9�
:�s�.C)�)D	�D	Nr��F)r_r�rIr�r��boolr�r�)�r�F)r��str | bytesr�r�r�r�r�r�r�r�r�r�)r�r�r�zstr | bytes | iTXtr�r�r�r�)r.r/r0r�rSr�r�r�r4r5r6r�r�s����
:�
4� ���
!U�
�!U��!U��	!U�
�!U��
!U�
�!U�HHM�!3��!3�'9�!3�@D�!3�	
�!3r5r�c�,�eZdZUded<ded<ded<y)�_RewindStatez dict[str | tuple[int, int], Any]�infozlist[ImageFile._Tile]�tilez
int | None�seq_numN�r.r/r0r�r4r5r6r�r�us��
*�*�
��
�r5r�c���eZdZd�fd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z	dd�Z
dd	�Zdd
�Zdd�Z
dd�Zdd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z�xZS)�	PngStreamc����t�|�|�i|_i|_d|_d|_g|_d|_d|_d|_	d|_
tigd�|_d|_
y)N�rrr�r)�superrS�im_info�im_text�im_size�im_mode�im_tile�
im_palette�im_custom_mimetype�im_n_frames�_seq_numr��rewind_state�text_memory)rRrP�	__class__s  �r6rSzPngStream.__init__|sl���
�����:<���.0���������.0���48���.2���'+���$(��
�(��R��6�����r5c��|xj|z
c_|jtkDrd|j�d�}t|��y)Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)r��MAX_TEXT_MEMORYrA)rR�chunklenrEs   r6�check_text_memoryzPngStream.check_text_memory�sN�����H�$�����o�-�7��#�#�$�$4�6�
��S�/�!�.r5c��t|jj�|j|j�|_yrO)r�r��copyr�r�r�rcs r6�save_rewindzPngStream.save_rewind�s-��(��L�L�����L�L��M�M�
��r5c���|jjj�|_|jj|_|jj|_yrO)r�r�r�r�r�r�r�r�rcs r6�rewindzPngStream.rewind�sD���(�(�-�-�2�2�4����(�(�-�-����)�)�1�1��
r5c���|j�J�tj|j|�}|jd�}tjd|d|�||dz}tjd|�|dk7rd|�d�}t
|��	t||dzd�}||jd	<|S#t$rtjrd}n�Y�0tj$rd}Y�FwxYw)
Nr�ziCCP profile name %rrzCompression method %sr�Unknown compression method z in iCCP chunkr%�icc_profile)
rPrr��findrqrrr^rFrAr\r<rzr�)rRr`rarB�i�comp_methodrEr�s        r6�
chunk_iCCPzPngStream.chunk_iCCP�s����w�w�"�"�"�� � ����&�1��
�F�F�5�M�����+�Q�r��U�3���A��h�����,�k�:��!��/��}�N�K�C��c�"�"�	�/��!�a�%�'�
�;�K�'2����]�#�����	��.�.�"�����z�z�	��K�	�s�B0�0C&�C&�%C&c��|j�J�tj|j|�}|dkrtjr|Sd}t	|��t|d�t|d�f|_	t|d|df\|_|_	|drd|jd	<|d
r
d}t|��|S#t$rY�3wxYw)N�
zTruncated IHDR chunkrr&r'�	�r�	interlace�zunknown filter category)
rPrr�r\rArZr��_MODESr��
im_rawmode�	Exceptionr�r^�rRr`rarBrEs     r6�
chunk_IHDRzPngStream.chunk_IHDR�s����w�w�"�"�"�� � ����&�1���B�;��.�.���(�C��S�/�!��1�a�y�#�a��)�+���	�,2�A�a�D�!�A�$�<�,@�)�D�L�$�/�
�R�5�()�D�L�L��%��R�5�+�C��c�"�"�����	��	�s�1B7�7	C�Cc�L�d|jvr1tjd|jd||j�g}nK|j�d|jd<tjdd|j
z||j�g}||_||_d}t|��)N�bboxr�T�
default_imager�zimage data found)	r�r�_Tiler�r�r�r��im_idat�EOFError)rRr`rar�rEs     r6�
chunk_IDATzPngStream.chunk_IDAT�s����T�\�\�!��O�O�E�4�<�<��+?��d�o�o�V�W�D����+�04����_�-��O�O�E�6�D�L�L�+@�#�t���W�X�D������� ���s�m�r5c��d}t|��)Nzend of PNG image)r�)rRr`rarEs    r6�
chunk_IENDzPngStream.chunk_IEND�s�� ���s�m�r5c��|j�J�tj|j|�}|jdk(r	d|f|_|S)Nrr)rPrr�r�r��rRr`rarBs    r6�
chunk_PLTEzPngStream.chunk_PLTE�sD���w�w�"�"�"�� � ����&�1���<�<�3��#�Q�h�D�O��r5c���|j�J�tj|j|�}|jdk(rMtj|�r'|j
d�}|dk\r ||jd<|S||jd<|S|jdvrt|�|jd<|S|jdk(r/t|�t|d�t|d�f|jd<|S)	Nrr�r�transparency)rrrrr%r&)	rPrr�r��_simple_palette�matchr�r��i16)rRr`rarBr�s     r6�
chunk_tRNSzPngStream.chunk_tRNS�s����w�w�"�"�"�� � ����&�1���<�<�3���$�$�Q�'��F�F�5�M����6�34�D�L�L��0���01����^�,�
��	�\�\�/�
/�+.�q�6�D�L�L��(����\�\�U�
"�+.�q�6�3�q�!�9�c�!�Q�i�+G�D�L�L��(��r5c��|j�J�tj|j|�}t|�dz|jd<|S)N�j�@�gamma)rPrr�rZr�r�s    r6�
chunk_gAMAzPngStream.chunk_gAMAsD���w�w�"�"�"�� � ����&�1�� #�A��� 1����W���r5c���|j�J�tj|j|�}tjdt|�dz�d�|�}t
d�|D��|jd<|S)N�>r&�Ic3�&K�|]	}|dz���y�w)r�Nr4)�.0�elts  r6�	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>s����,P�x��S�8�^�x�s��chromaticity)rPrr�ry�unpack�len�tupler�)rRr`rarB�raw_valss     r6�
chunk_cHRMzPngStream.chunk_cHRMsi���w�w�"�"�"�� � ����&�1���=�=�1�S��V�q�[�M��!3�Q�7��',�,P�x�,P�'P����^�$��r5c���|j�J�tj|j|�}|dkrtjr|Sd}t	|��|d|j
d<|S)NrzTruncated sRGB chunkr�srgb)rPrr�r\rAr�r�s     r6�
chunk_sRGBzPngStream.chunk_sRGBse���w�w�"�"�"�� � ����&�1���A�:��.�.���(�C��S�/�!� ��t����V���r5c�P�|j�J�tj|j|�}|dkrtjr|Sd}t	|��t|d�t|d�}}|d}|dk(r|dz|dzf}||jd<|S|dk(r||f|jd	<|S)
Nr�zTruncated pHYs chunkrr&r'r�
F%u�?�dpi�aspect)rPrr�r\rArZr�)	rRr`rarBrE�px�py�unitrs	         r6�
chunk_pHYszPngStream.chunk_pHYs#s����w�w�"�"�"�� � ����&�1���A�:��.�.���(�C��S�/�!��Q���C��1�I�B����t���1�9��v�+�r�F�{�*�C�"%�D�L�L������Q�Y�%'��V�D�L�L��"��r5c�~�|j�J�tj|j|�}	|jdd�\}}|rc|jdd�}|jdd�}|dk(r|n||j|<||j|<|jt|��|S#t$r|}d}Y�vwxYw)Nr�rr5r�r��replacesexif)
rPrr��splitrArtr�r�r�r)rRr`rarB�k�v�k_str�v_strs        r6�
chunk_tEXtzPngStream.chunk_tEXt5s����w�w�"�"�"�� � ����&�1��	��7�7�5�!�$�D�A�q�

��H�H�Y��1�E��H�H�Y�	�2�E�'(�G�|�!��D�L�L���"'�D�L�L����"�"�3�u�:�.�����	��A��A�	�s�B,�,
B<�;B<c�@�|j�J�tj|j|�}	|jdd�\}}|r|d}nd}|dk7rd|�d�}t|��	t
|dd�}|r\|jdd�}|jdd	�}	|	x|j|<|j|<|jt|	��|S#t$r|}d}Y��wxYw#t$rtjrd}n�Y��tj$rd}Y��wxYw)
Nr�rr5rr�z in zTXt chunkr�r�r)rPrr�rrAr^rFr\r<rzrtr�r�r�r)
rRr`rarBrrr�rErr s
          r6�
chunk_zTXtzPngStream.chunk_zTXtIs6���w�w�"�"�"�� � ����&�1��	��7�7�5�!�$�D�A�q�
��A�$�K��K��!��/��}�N�K�C��c�"�"�	�%�a���e�,�A�
��H�H�Y��1�E��H�H�Y�	�2�E�8=�=�D�L�L���$�,�,�u�"5��"�"�3�u�:�.����7�	��A��A�	���	��.�.������z�z�	��A�	�s)�C�&C'�
C$�#C$�'D�D�Dc�F�|j�J�tj|j|�x}}	|jdd�\}}t|�dkr|S|d|d|dd}}}	|jdd�\}}	}
|dk7r|dk(r
	t
|
�}
n|S|dk(r|
|jd<	|jdd�}|jd	d�}|	jd	d�}
|
jd	d�}t|||
�x|j|<|j|<|jt|��|S#t$r|cYSwxYw#t$r|cYSwxYw#t$rtjr|cYS�tj$r|cYSwxYw#t$r|cYSwxYw)
Nr�rr%rsXML:com.adobe.xmp�xmpr�r�r�)rPrr�rrArrFr\r<rzr�rtr�r�r�r�)rRr`ra�rrBr�cf�cmr��tkrr�lang_str�tk_strr s               r6�
chunk_iTXtzPngStream.chunk_iTXtls����w�w�"�"�"��$�$�T�W�W�f�5�5��A�	��7�7�5�!�$�D�A�q��q�6�A�:��H��a�D�!�A�$��!�"���B��	��'�'�%��+�K�D�"�a���7��Q�w��-�a�0�A����$�$�"#�D�L�L���	��H�H�Y��1�E��{�{�7�H�5�H��Y�Y�w��1�F��H�H�W�h�/�E�59���&�4Q�Q����U��d�l�l�5�1����s�5�z�*����G�	��H�	���	��H�	��"�� �6�6� ����z�z���H����	��H�	�sN�D8�'E	�E�+AF�8E�E�	E�E�F�7F�F�F �F c��|j�J�tj|j|�}d|z|jd<|S)N�Exif�exif)rPrr�r�r�s    r6�
chunk_eXIfzPngStream.chunk_eXIf�s@���w�w�"�"�"�� � ����&�1��.��2����V���r5c��|j�J�tj|j|�}|dkrtjr|Sd}t	|��|j
�d|_t
jd�|St|�}|dk(s|dkDrt
jd�|S||_t|d�|jd<d|_
|S)	Nr'z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possiblerlr&�loopz
image/apng)rPrr�r\rAr��warnings�warnrZr�r�)rRr`rarBrE�n_framess      r6�
chunk_acTLzPngStream.chunk_acTL�s����w�w�"�"�"�� � ����&�1���A�:��.�.���6�C��S�/�!����'�#�D���M�M�P�Q��H��q�6���q�=�H�z�1��M�M�P�Q��H�#���"�1�a�y����V��".����r5c��|j�J�tj|j|�}|dkrtjr|Sd}t	|��t|�}|j�|dk7s|j�|j|dz
k7r
d}t|��||_t|d�t|d�}}t|d�t|d	�}	}|j\}
}||z|
kDs|	|z|kDr
d
}t|��||	||z|	|zf|jd<t|d�t|d
�}
}|
dk(rd}
t|�t|
�zdz|jd<|d|jd<|d|jd<|S)N�z"APNG contains truncated fcTL chunkrr�#APNG contains frame sequence errorsr&r'r�r(zAPNG contains invalid framesr����d���duration��disposal��blend)rPrr�r\rArZr�r^r�r�r��float)rRr`rarBrE�seq�width�heightrr�im_w�im_h�	delay_num�	delay_dens              r6�
chunk_fcTLzPngStream.chunk_fcTL�s~���w�w�"�"�"�� � ����&�1���B�;��.�.���6�C��S�/�!��!�f���M�M�!�c�Q�h��M�M�%�$�-�-�3��7�*B�7�C��c�"�"���
��A�q�	�3�q�!�9�v���Q���S��B�Z�B���\�\�
��d�
��:����V��d� 2�0�C��c�"�"� "�B��U�
�B��K�@����V��"�1�b�z�3�q�"�:�9�	���>��I�#(��#3�e�I�6F�#F��#M����Z� �#$�R�5����Z� � !�"�����W���r5c�x�|j�J�|dkr?tjr"tj|j|�}|Sd}t	|��tj|jd�}t|�}|j|dz
k7r
d}t|��||_|j|dz|dz
�S)Nr&z"APNG contains truncated fDAT chunkrr9)	rPrr\r�rArZr�r^r�)rRr`rarBrErDs      r6�
chunk_fdATzPngStream.chunk_fdAT�s����w�w�"�"�"��A�:��.�.��(�(����&�9����6�C��S�/�!�� � ����!�,���!�f���=�=�C�!�G�#�7�C��c�"�"���
����s�Q�w���
�3�3r5r�)r�r�r�r�r�)r`r�rar�r�r�)r`r�rar�r�r
)r.r/r0rSr�r�r�r�r�r�r�r�r�rrrrr!r#r,r0r6rKrM�
__classcell__�r�s@r6r�r�{sn����""�
�2�
�8�*����*���"�$�(!�F)�V��*�<4r5r�c��|ddtk(S)Nr')�_MAGIC)�prefixs r6�_acceptrS�s���"�1�:���r5c���eZdZdZdZdd�Zedd��Zdd�Zdd�Z	ddd�Z
dd�Zdd	�Zdd
�Z
dd�Zdd�Zd�fd
�Z�xZS)�PngImageFile�PNGzPortable network graphicsc�F�t|jjd��s
d}t|��|j|_d|_g|_t|j�|_	|jj�\}}}	|jj|||�}|jj%||��Y#t$rYnvt$rktjd|||�tj|j|�}|ddj!�r|jj#||f�Y��wxYw|jj&|_|jj*|_|jj.|_d|_|jj4|_|jj8|_|jj<xsd|_|j0jAdd�|_!|jjDr4|jjD\}}tGjH||�|_%|d	k(r|d
z
|_&n||_&|jj<��d|_'|jjQ�|jL|_)|jjU�|_+|jBr|xj>dz
c_|jYd�|j>dkD|_-y)Nr'znot a PNG filer�%r %s %s (unknown)rr%r�F�fdATr&).rSrPrXr^�_fp�_PngImageFile__frame�private_chunksr��pngrur��AttributeErrorrqrrrr��islowerrkr~r��_moder��_sizer�r��_textr�r�r��custom_mimetyper�r5�getr�r�r�raw�palette�_PngImageFile__prepare_idat�!_close_exclusive_fp_after_loadingr��_PngImageFile__rewind_idatrY�_PngImageFile__rewind�_seek�is_animated)rRrEr_r`rarB�rawmoderIs        r6�_openzPngImageFile._open�sh���t�w�w�|�|�A��'�"�C��c�"�"��7�7������
VX���%.�t�w�w�%7���� $�x�x�}�}���C��f�
9��H�H�M�M�#�s�F�3��
�H�H�L�L��a� �!���
��!�
9����1�3��V�D��(�(����&�9���q��8�#�#�%��'�'�.�.��Q�x�8��	
9���X�X�%�%��
��X�X�%�%��
��H�H�$�$��	�37��
��H�H�$�$��	�#�x�x�:�:������,�,�1���
�!�Y�Y�]�]�?�E�B����8�8��� �H�H�/�/�M�G�T�'�+�+�G�T�:�D�L��'�>�"(�1�*�D��"(�D���8�8���+�5:�D�2��H�H� � �"�!%�!4�!4�D�� �H�H�M�M�O�D�M��!�!��
�
��"�
��J�J�q�M��=�=�1�,��s�C�	E�A0E�Ec��|j�c|jr*|j}|j|jdz
�|j�|jr|j�|j�J�|jS)Nr)rbrlr[rWr5�load)rR�frames  r6r�zPngImageFile.text5so���:�:����������	�	�$�-�-�!�+�,��I�I�K�����	�	�%� ��z�z�%�%�%��z�z�r5c�p�|j�
d}t|��|jj|jdddz
�|j�J�|jj�|jj
�|jr|jj
�d|_y)zVerify PNG fileNz)verify must be called directly after openrr%r')rP�RuntimeErrorrWr�r]r�rf�
_exclusive_fp)rRrEs  r6r�zPngImageFile.verifyEs����7�7�?�=�C��s�#�#�	
�����T�Y�Y�q�\�!�_�q�(�)��x�x�#�#�#�����������������G�G�M�M�O���r5c�H�|j|�sy||jkr|jdd�|j}t|jdz|dz�D]}	|j|��y#t$r$}|j|�d}t	|�|�d}~wwxYw)NrTrzno more images in APNG file)�_seek_checkr[rk�ranger�rW)rRrq�
last_frame�fr}rEs      r6rWzPngImageFile.seekWs�������&���4�<�<���J�J�q�$���\�\�
��t�|�|�a�'����3�A�
+��
�
�1�
�4���
+��	�	�*�%�3���s�m��*��
+�s� A4�4	B!�=B�B!c�t
�|j�J�|d}|dk(�r3|r�|jj|j�|jj	�|j
|_d|_|jj|_	|jj|_|j|_d|_
d|_|jjdd�|_|jjd�|_|jjd�|_|jjd�}d|_�n_||j&dzk7rd|��}t)|��|j+�|jr0|j,j/|j|j0�|j,j3�|_
|j|_|jr1t5j6|j|j�d|_d}	|jj9d
�	|jj9�\}}}|dk(r
d}tA|��|d
k(r|r
d}t?|��d	}	|jjC|||���|r||_|j�2|j"tLjNk(rtLjP|_d|_|j"tLjNk(rX|jrK|jj3�|_|jS|j|j0�|_yy|j"tLjPk(retTjVjY|jZ|j\�|_|jS|j|j0�|_yy#t:j<t>f$rYn�wxYw#tD$rYn�t@$r9|dk(r|d
z}|r	||_Ynjt5j6|j|�Y���tF$r<tHjKd|||�t5j6|j|�Y���wxYw||_|jj|_|jjd�|_|jjd�|_|jjd�}|jr���d}tA|��)Nrr�Fr@rBr�rzcannot seek to frame Tr&r�zNo more images in APNG file�fcTLzAPNG missing frame datarYrXzimage not found in APNG frame)/r]rZrWrjr�rirg�_imr�r�r�r�rP�_prev_im�disposerdr��
dispose_op�blend_opr[rArp�im�paste�dispose_extentr�rr�rXryrzr^r�ru�UnicodeDecodeErrorr^rqrrr-r3r2�_cropr
�core�fill�mode�size)	rRrqr�r�rE�frame_startr_r`ras	         r6rkzPngImageFile._seekfs����x�x�#�#�#�����A�:�����
�
�d�m�m�,������!�&*�&8�&8��#���� �H�H�,�,��	� �H�H�,�,��	��(�(��� �D�M��D�L�!%�������!F�D��"�i�i�m�m�J�7�D�O� �I�I�M�M�'�2�D�M�!�Y�Y�]�]�6�2�N��D�L�����q�(�(�-�e�W�5�� ��o�%�
�I�I�K��|�|����
�
�d�l�l�D�,?�,?�@� �G�G�L�L�N�D�M��h�h�D�G��"�"��$�$�T�W�W�d�.A�.A�B�&'��#��K�������Q���'+�x�x�}�}��$�C��f��'�>�7�C�"�3�-�'��'�>�"�7��)�#�.�.�"&�K�
:��H�H�M�M�#�s�F�3�'�T�ES�D���=�=� �T�_�_��8L�8L�%L�&�4�4�D�O�����?�?�h�2�2�2��}�}�#�}�}�1�1�3���#�z�z�$�,�,��8K�8K�L�����_�_�� 6� 6�
6� �:�:�?�?�4�9�9�d�i�i�@�D�L��:�:�d�l�l�D�4G�4G�H�D�L�7��c���k�2�����*����:��g�~��!���&�28�D�/�!��(�(����&�9�%�:��L�L�!5�s�C��H��(�(����&�9�:��!�D�L����(�(�D�I�"�i�i�m�m�J�7�D�O� �I�I�M�M�'�2�D�M�!�Y�Y�]�]�6�2�N��9�9�5���s�m�#s7�O1�
P�1P
�P
�	R�R�8 R�AR�Rc��|jSrO)r[rcs r6rYzPngImageFile.tell�s���|�|�r5c���|jjd�r|jdz|_|j|_t
j
j
|�y)z"internal: prepare to read PNG filer�)rN)r�rd�
decoderconfigrg�_PngImageFile__idatr�load_preparercs r6r�zPngImageFile.load_prepare�sH���9�9�=�=��%�!%�!3�!3�d�!:�D���)�)������(�(��.r5c�H�|j�J�|jdk(r�|jjd�|jj�\}}}|dvr|jj	|||�y|dk(r)	|jj|||�|dz
|_n||_|jdk(r��|dkr
|j}nt||j�}|j|z
|_|jj|�S#t$rY��wxYw)zinternal: read more image datarr&)�IDATsDDATrYr5rY)r]r�rPrXrmrur��min)rR�
read_bytesr_r`ras     r6�	load_readzPngImageFile.load_read�s���x�x�#�#�#��k�k�Q��
�G�G�L�L��O�#�x�x�}�}���C��f��5�5����
�
�c�3��/���g�~���H�H�M�M�#�s�F�3�%�q�j���$���%�k�k�Q��*��?����J��Z����5�J��k�k�J�.����w�w�|�|�J�'�'�� ����s�?D�	D!� D!c��|j�J�|jdk7r%|jj|j�	|jjd�	|jj�\}}}|dk(rnU|dk(r1|jr%d|_|jj|||�n	|jj|||���|jj.|_|js"|jj3�d|_y|j4�rO|j6t8j:k(�r0|j=|j>|j@�}|j>jBdk(r.d|jDvr |jGd
|jDd�}n�|j>jBdk(r`d|jDvrR|jDd}tI|tJ�r|jM|�n!tI|tN�r|jQ|�|jSd
�}|j4jU||j@|�|j4|_yyy#tj
tf$rY���wxYw#t$rY���t$rZ|dk(r|dz}	tj|j|�n*#t$r}tj rYd}~Y��&|�d}~wwxYwY��4t"$rmt$j'd|||�tj|j|�}|d	d
j)�r|j*j-||df�Y���wxYw)z%internal: finished reading image dataNrTr&r�r{rYrXrr%rr�r$r)+r]r�rPrXryrzr^rlrgrmrur�r�rr�r�r\r^rqrrr_r\rkr�rbrfr}r�r8r:r�r�r�r�r��convert_transparentr�r��putpalettealphasr��putpalettealpha�convertr�)	rRr_r`rar}rB�updated�mask�ts	         r6�load_endzPngImageFile.load_end�s����x�x�#�#�#��;�;�!���G�G�L�L����%���G�G�L�L��O�
�#'�8�8�=�=�?� ��S�&��g�~�����D�$4�$4�&'��#����
�
�c�3��/��
?����
�
�c�3��/�#�F�X�X�%�%��
�����H�H�N�N���D�H��}�}����%�-�-�!?��*�*�T�W�W�d�.A�.A�B���7�7�<�<�5�(�^�t�y�y�-H�"�6�6���	�	�.� 9��D��w�w�|�|�s�*�~����/J� �I�I�n�5��%�a��/�#�4�4�Q�7�'��3�/�#�3�3�A�6�"�?�?�6�2�D��
�
�#�#�G�T�-@�-@�$�G��-�-���"@�}��G�L�L�+�.�
��
��&�
���	
 ��'�>��a�K�F� ��(�(����&�9��� � �6�6�����	 ��:�"�
?����1�3��V�D��(�(����&�9���q��8�#�#�%��'�'�.�.��Q��~�>��	
?�sa� I?�;J�?J�J�	N�+N�> K�N�	L�(L�8N�?L�L�N�A1N�Nc��d|jvr|j�d|jvrd|jvry|j�j�S)Nr/zRaw profile type exif)r�rp�getexif�_get_merged_dictrcs r6�_getexifzPngImageFile._getexif4sG������"��I�I�K�����"�'>�d�i�i�'O���|�|�~�.�.�0�0r5c�\��d|jvr|j�t�|�
�S)Nr/)r�rpr�r�)rRr�s �r6r�zPngImageFile.getexif;s%�������"��I�I�K��w�� � r5r�)r�zdict[str, str | iTXt])rqr�r�r�r�)rqr�r�r�r�r�)r�r�)r�r�r�r�)r�zdict[int, Any] | None)r�z
Image.Exif)r.r/r0�format�format_descriptionrn�propertyr�r�rWrkrYr�r�r�r�r�rNrOs@r6rUrU�s`���
�F�4��A-�F�
��
��$
+�`I�D�/� (�D<(�|1�!�!r5rU)r�r�)�L;1r�r�)r�r�)r�r�)r�r�)r#r�r�)r�r�)r r��)r!r�r�)r"r�r�)rr�r�)rr�r�)r$r��)rr�rrrr#rrrr r!r"rrr$c���dj|�}|jtt|��|z�|j|�t	|t	|��}|jt|��y)z'Write a PNG chunk (including CRC field)r5N)�join�write�o32rrK)rPr_rI�	byte_datar~s     r6�putchunkr�YsW�������I��H�H�S��Y��
 �3�
&�'��H�H�Y��
��F�3�K�
(�C��H�H�S��X�r5c��eZdZdd�Zdd�Zy)�_idatc� �||_||_yrO)rP�chunk)rRrPr�s   r6rSz_idat.__init__gs�������
r5c�>�|j|jd|�y)Nr�)r�rP�rRrIs  r6r�z_idat.writeks���
�
�4�7�7�G�T�*r5N)rPr�r��Callable[..., None]r�r��rIr�r�r��r.r/r0rSr�r4r5r6r�r�ds���+r5r�c��eZdZdd�Zdd�Zy)�_fdatc�.�||_||_||_yrO)rPr�r�)rRrPr�r�s    r6rSz_fdat.__init__rs�������
���r5c��|j|jdt|j�|�|xjdz
c_y)NrYr)r�rPr�r�r�s  r6r�z_fdat.writews/���
�
�4�7�7�G�S����%6��=������r5N)rPr�r�r�r�r�r�r�r�r�r4r5r6r�r�os���
r5r�c�,�eZdZUded<ded<ded<y)�_Frame�Image.Imager�z tuple[int, int, int, int] | Noner�zdict[str, Any]�encoderinfoNr�r4r5r6r�r�|s���O�
*�*��r5r�c�F
�|jjd�}|jjd|jjdd��}|jjd|jjdtj��}	|jjd|jjdt
j��}
|rtj|�}ntj|g|�}g}d}
|D�]�}tj|�D�]�}|j|k(r|j�}n|j|�}|jj�}t|tt f�r	||
|d<n"|� d|jvr|jd|d<t|	tt f�r|	|
|d<t|
tt f�r|
|
|d<|
dz
}
|�r�|d}|jjd�}|jjd�}|tj"k(rt%|�dkrtj&}|tj&k(r�|j(j�}t*j,j/d	|j0d
�}|j2}|r|j5|�}nd|j0z}|j7||�n/|tj"k(r|dj(}n|j(}t9j:|jd	�|jd	��}|j=d
��}|sJ||jd�k(r6||jd�k(r"d|vr|jdxx|dz
cc<���d}|j?tA|||��������t%|�dk(r|s|dj(S||dtCt%|��tC|��|rz|j|k7r|j|�}tEjF|tItJtLtO||��tEjPdd|j0zd|�g�d}tS|�D�]�\}}|j(}|j2sd|j0z}n|j2}|j5|�}|j0}|j}tUtW|jdd���}|jd|	�}|jd|
�}||dtC|�tC|d�tC|d�tC|d�tC|d�tY|�tYd�t[|�t[|��|dz
}|dk(r^|s\tEjF|tItJtLtO||��tEjPdd|j0zd|�g����t]|||�}tEjF|tItJtL|�tEjPdd|j0zd|�g�|j^}���y)Nr>r2rr@rBr���r%r$)rrrrr����F)�
alpha_onlysacTLr�r{r=)0r�rdr�r-r1r8r9�	itertools�chainr�Iteratorr�r�r�r��listrr3rr2r�r
r�r�r�r��cropr�r�subtract_modulo�getbboxrkr�r�r�_saverrr�r�r��	enumerater��round�o16rr�r�) r�rPr�r�rmr��
append_imagesr>r2r@rBr��	im_frames�frame_count�im_seq�im_framer��previous�
prev_disposal�
prev_blend�base_imr~r��deltar�rq�
frame_datar��frame_duration�frame_disposal�frame_blend�fdat_chunkss                                 r6�_write_multiple_framesr��s����~�~�!�!�*�-�H�
�>�>���f�b�g�g�k�k�&�!�&<�=�D��~�~�!�!�*�b�g�g�k�k�*�h�FV�FV�.W�X�H��N�N���w������G�U�_�_�(M�N�E�����
�.�������m�4�� �I��K���%�.�.�v�6�H��}�}��$�#�=�=�?��#�+�+�D�1���.�.�-�-�/�K��(�T�5�M�2�*2�;�*?��J�'��!�j�H�M�M�&A�*2�-�-�
�*C��J�'��(�T�5�M�2�*2�;�*?��J�'��%�$���/�',�[�'9��G�$��1��K��$�R�=�� (� 4� 4� 8� 8�� D�
�%�1�1�5�5�g�>�
� �H�$8�$8�8�S��^�a�=O�$,�$:�$:�M� �H�$:�$:�:�&�k�k�.�.�0�G�#�j�j�o�o�f�b�g�g�|�L�G�#�=�=�D��")�,�,�t�"4��%����/���M�M�'�4�0�"�h�&:�&:�:�'��m�.�.�G�&�k�k�G�"�2�2��$�$�V�,�g�o�o�f�.E����}�}��}�6���%�����)D�D�"�k�o�o�g�&>�>�"�k�1��(�(��4��J�8O�O�4�������V�H�d�K�@�A�e7��j�9�~���=���|����
�
���C�	�N���D�	�	��
�7�7�d�?����D�!�B�������E��E�"�e�,�-�
�_�_�U�F�R�W�W�$4�a��
A�B�	
��G�&�y�1���z��=�=������H�M�M�)�D��?�?�D��}�}�T�*�H��}�}�� �,�,���U�;�?�?�:�q�#A�B�C��$����X�>��!�o�o�g�u�5��
�����L���Q��L���Q��L���Q��L���Q��L������I��~���{�O�	
�	�1����A�:�m��O�O���R��Y��b�%� 0�1���������(>��7�K�L�
� ��E�7�3�K��O�O���R��Y��,���������(>��7�K�L�
�
"�)�)�G�U2�Vr5c�"�t|||d��y)NT)�save_all)r�)r�rP�filenames   r6�	_save_allr�s��	�"�b�(�T�*r5Fc��(�|�r|jjd|jjd��}t�}t��(|jjdg�}t	j
|g|�D]R}t
j|�D]8}	|j|	j��(j|	j��:�TdD]}
|
|vs�n|j�}
t�(fd�td�D��}n|j}|j}
|
}|
dk(r�d|jvrtd|jdzd	�}
nL|jr>t!tt#|jj%�d�d
zd	�d�}
nd	}
|
dkr|
dkrd}n
|
dkrd}nd}|d
|��z
}|jjdd�|jjdd�|jjdd�|jjdd�f|_	t(|\}}}|j/t0�||dt3|d�t3|d�||ddd�	gd�}|jjd|jjd��}|r8d}|dzt5j6|�z}||d|�|j9d�|jjd �}|r�gd!�}|j:D]o}|dd\}}||vr|j9|�||||��+||vr||||��:|ddj=�s�Nt#|�d
k(xr|d}|r�f||||��q|jdk(rO
d
z}|j>jAd"�d|}t#|�|kr|dz
}t#|�|kr�||d#|�|jjd$|jjd$d��}|s|dk(r�|jdk(rM
} tC|tD�r||d%|d| ��nt!dtd&|��}d'|zdz}!||d%|!d| �n�|jd(vr*t!dtd)|��}||d%tG|��n�|jd"k(r2|\}"}#}$||d%tG|"�tG|#�ztG|$�z�nrd$|jvrdd*}t-|��|jdk(rH|j>jI�d+k(r+|j>jAd+d,�}!
} ||d%|!d| �|jjd-�}%|%rB||d.t3tK|%dd/zd0z��t3tK|%dd/zd0z��d1�|r=d2d3g}|j:D]*}|dd\}}||vs�|j9|�||||��,|jjd4�}&|&rKtC|&tLjN�r|&jQd5�}&|&jSd6�r|&d7d}&||d8|&�|}'|rtU||||
|�}'|'rZtWjX|'t[t\tDt_||��tWj`d9d:|'jzd|�g�|rO|j:D]@}|dd\}}|ddj=�s�t#|�d
k(xr|d}|s�7||||��B||d;d�tc|d<�r|je�yy#t*$r}d|
�d�}t-|�|�d}~wwxYw)=Nr�r�)r$rrc3�H��K�|]�t�fd��D�����y�w)c3�(�K�|]	}|����y�wrOr4)r�
frame_sizer�s  �r6rz"_save.<locals>.<genexpr>.<genexpr>-s�����?��:��A���s�N)�max)rr��sizess @�r6rz_save.<locals>.<genexpr>-s�����R��A�S�?��?�?��s�"r%r�bitsr�r)r(r&�;�optimizeF�compress_levelr��
compress_type�
dictionaryr5zcannot write mode z as PNGsIHDRrr�)scHRMsgAMAssBIT�sRGBstIMEr�sICC Profiler�siCCPr��pnginfo)ssPLTr�r�r�rsPLTEr�stRNS���)rrrri��z%cannot use transparency for this moder$�ArspHYsrg�?r�sbKGDshISTr/r'r.r*seXIfr�r�r��flush)3r�rdr��setr�r�rr�r�r�r�rVrrwr�rfr�r�getdata�
encoderconfig�	_OUTMODES�KeyErrorr�r�rQr�r<r��remover�r_r��
getpaletter�r�r��getpalettemoder�r
�Exif�tobytes�
startswithr�rr�rrr�r��hasattrr�))r�rPr�r�r�r��modesr�r�r�r�r��outmode�colorsr�rm�	bit_depth�
color_typer}rEr��icc�namerIr��chunks_multiple_allowed�
info_chunkr_r��palette_byte_number�
palette_bytesr��alpha_bytes�alpha�red�green�bluerr/�	single_imr�s)                                        @r6r�r�s/�������*�*��R�W�W�[�[��9�
�
����������*�*�?�B�?�
��o�o�r�d�M�:�F�)�2�2�6�:���	�	�(�-�-�(��	�	�(�-�-�(�;�;�)�D��u�}��)��9�9�;�D��R��q��R�R���w�w���w�w���G��s�{��R�^�^�#���b�n�n�V�4�4�c�:�F��z�z��S��R�Z�Z�%7�%7�%9�!�%<�!=��!B�C�H�!�L�����R�<���{����1��������4�&�z�!�G�	�����:�u�-�
�����+�R�0�
�����?�B�/�
�����<��-�	�B��"�)2�7�);�&���J��H�H�V��	�
���D��G���D��G����
�
�
�
�;�F�
�.�.�
�
�]�B�G�G�K�K�
�,F�
G�C�
����g�~��
�
�c� 2�2��
�b�'�4� �	�
�
�g��
�>�>���i�(�D��"F���+�+�J�"�2�A��I�C���f�}��
�
�c�"��b�#�t�$��/�/��b�#�t�$��Q�q��!�!�#� ��_��1�C�j��m�
�!��"�c�4�(�&�
�w�w�#�~�$�q�j�����(�(��/�0D�1D�E�
��-� �#6�6��U�"�M��-� �#6�6�
�b�'�=�)��>�>�%�%�n�b�g�g�k�k�.�RV�6W�X�L��|�q�(�
�7�7�c�>� �K��,��.��b�'�<���#=�>�"�1�c�#�|�&<�=���,�.��6���b�'�5��+�#6�7�
�W�W�/�
/��q�#�e�\�":�;�L��"�g�s�<�0�1�
�W�W��
�+��C����"�g�s�3�x�#�e�*�4�s�4�y�@�A�����/�>���c�l�"�
�7�7�c�>�b�e�e�2�2�4��>��E�E�$�$�V�S�1�E� �K��"�g�u�\�k�2�3�
�.�.�
�
�U�
#�C�
�
�����C��F�V�O�c�)�*�+���C��F�V�O�c�)�*�+��	
���7�#���+�+�J�"�2�A��I�C���f�}��
�
�c�"��b�#�t�$�	&��>�>���f�%�D���d�E�J�J�'��<�<��?�D��?�?�?�+����8�D�
�b�'�4� �$&�I��*���E�4��-��
�	��������E��E�"�e�,�-�
�_�_�U�F�Y�^�^�$;�Q��
H�I�	
���+�+�J�"�2�A��I�C���1�Q�x���!� ��_��1�C�j��m�
���"�c�4�(�
&�
�"�g�s���r�7��
���
���[�"�"�4�&��0���c�l��!��"�s�:
](�(	^�1^�^c�p��ddlm}g�d�fd�}|�}	||_t||d|�|`�S#|`wxYw)z4Return a list of PNG chunks representing this image.r)�BytesIOc���dj|�}tt|t|���}�j|||f�y)Nr5)r�r�rKrk)rPr_rIr�r~r�s     �r6rkzgetchunks.<locals>.append�s8����H�H�T�N�	��&��F�3�K�0�1���
�
�s�I�s�+�,r5r��rPr�r_r�rIr�r�r�)�iorr�r�)r��paramsrrkrPr�s     @r6�	getchunksr�sF����
�F�-�

��B�����
�b�"�b�&�!��N��M��
�N�s�1�5z.pngz.apngz	image/png)rBr�r�r�)r)rIr�rJr�r�r�)rRr�r�r�r)r�r�rPr�r�r�r�r�rmr�r��Image.Image | Noner�zlist[Image.Image]r�r)r�r�rPr�r�r�r�r�)r�r�rPr�r�r�r�r�r�r�r�r�)r�r�rrr�z list[tuple[bytes, bytes, bytes]])K�
__future__rr��logging�reryr3r<�collections.abcr�enumr�typingrrrr	r
rr�r
rrrr�_binaryrr�rrZrrr�rr�r�	getLoggerr.rq�compiler�r[rQr�r��	SAFEBLOCKr?r�r-r8rFrKrMr�r�r�r�r�rSrUr�r�r�r�r�r�r�r�r�
register_openr��
register_save�register_save_all�register_extensions�
register_mimer4r5r6�<module>r/s���B#���	�
���$��E�E�G�G�!�!��!�!���	��	�	�8�	$��	����L�	!�	'�	'��
��
����
��
������
��
!�+
��2�"�*�*�0�1���$�$���
�~�%����w��*�G���/�[�[�|�3��6Y3�Y3�@�:��d4��d4�V �Q!�9�&�&�Q!�r

!�$�$�$�	 �
"�	$�'�
(�$�$�$�	 �$�&�!
�	�(�+�+�
�
� �Z� �K��K��K��K��	K�
�K�&�
K�%�K��K�\+�"*��N��N��N��N��	N�
�N�
�
N�j�2����L�'�'��w�?�����L�'�'��/������+�+�Y�7�����,�-�-���/@�A�����L�'�'��5r5

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists