403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /tmp/calpy/PIL/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /tmp/calpy/PIL/__pycache__/PngImagePlugin.cpython-311.pyc
�

Υ=j���H�ddlmZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
mZmZddlmZmZmZmZmZddlmZdd	lmZdd
lmZddlmZddlmZdd
l m!Z!ddl"m#Z#dZ$e$rddl%m&Z&ddlm'Z'm(Z(ddlm)Z)ej*e+��Z,ej-d��j.Z/dZ0dddddddddddd d!d"d#d$�Z1ej-d%��Z2ej3Z4	d&e4zZ5	Gd'�d(e	��Z6Gd)�d*e	��Z7dvd.�Z8dwdxd2�Z9Gd3�d4��Z:Gd5�d6e;��Z<Gd7�d8��Z=Gd9�d:e��Z>Gd;�d<e:��Z?dyd?�Z@Gd@�dAej��ZAdBdCdDdEdFdGdHdHdHdIdJdKdLdMdNdO�ZBdzdT�ZCGdU�dV��ZDGdW�dX��ZEd{d]�ZFGd^�d_e��ZGd|di�ZHd}dl�ZIeCdfd~dn�ZJddr�ZKejLeAjMeAe@��ejNeAjMeJ��ejOeAjMeI��ejPeAjMdsdtg��ejQeAjMdu��dS)��)�annotationsN)�IntEnum)�Fraction)�IO�
NamedTuple�cast�)�Image�
ImageChops�	ImageFile�ImagePalette�
ImageSequence)�i16be)�i32be)�o8)�o16be)�o32be)�	deprecate)�
DeferredErrorF)�Callable)�Any�NoReturn)�_imagings\w\w\w\ws�PNG

)�1r)�L�L;2)r�L;4)rr)�I;16�I;16B)�RGBr )r zRGB;16B)�P�P;1)r!�P;2)r!�P;4)r!r!)�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	dZdS)�Disposalrr	r'N)�__name__�
__module__�__qualname__�OP_NONE�
OP_BACKGROUND�OP_PREVIOUS���E/tmp/claude-1015/pip-target-jmvfl800/lib/python/PIL/PngImagePlugin.pyr/r/ns1�������G���M��
�K��r7r/c��eZdZdZ	dZdS)�Blendrr	N)r0r1r2�	OP_SOURCE�OP_OVERr6r7r8r:r:�s%�������I��
�G��r7r:�s�bytes�returnc��tj��}|�|t��}|jrd}t|���|S)Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)�zlib�
decompressobj�
decompress�MAX_TEXT_CHUNK�unconsumed_tail�
ValueError)r=�dobj�	plaintext�msgs    r8�_safe_zlib_decompressrJ�sE������D�����>�2�2�I����M����o�o���r7�data�seed�intc�2�tj||��dzS)Nl��)rA�crc32)rKrLs  r8�_crc32rP�s���:�d�D�!�!�J�.�.r7c�`�eZdZdd�Zdd�Zdd�Zdd�Zd d�Zd!d�Zd"d�Z	d#d�Z
d#d�Zd$d%d�ZdS)&�ChunkStream�fp�	IO[bytes]r?�Nonec�"�||_g|_dS�N)rS�queue)�selfrSs  r8�__init__zChunkStream.__init__�s��$&���:<��
�
�
r7�tuple[bytes, int, int]c��d}|j�J�|jr8|j���\}}}|j�|��nL|j�d��}|dd�}|j���}t
|��}t|��s.tj	s"dt|���d�}t|���|||fS)z.Fetch a new chunk. Returns header information.Nr)r(zbroken PNG file (chunk �))rSrX�pop�seek�read�tell�i32�is_cidr�LOAD_TRUNCATED_IMAGES�repr�SyntaxError)rY�cid�pos�lengthr=rIs      r8r`zChunkStream.read�s������w�"�"�"��:�	�#�z�~�~�/�/��C��f��G�L�L����������Q���A��A�B�B�%�C��'�,�,�.�.�C���V�V�F��c�{�{�	'��2�
'�<��S�	�	�<�<�<��!�#�&�&�&��C���r7c��|SrWr6�rYs r8�	__enter__zChunkStream.__enter__�s���r7�args�objectc�.�|���dSrW)�close)rYrms  r8�__exit__zChunkStream.__exit__�s���
�
�����r7c�"�dx|_|_dSrW)rXrSrks r8rpzChunkStream.close�s��#�#��
�T�W�W�Wr7rgr>rhrMric�R�|j�J�|j�|||f��dSrW)rX�append�rYrgrhris    r8�pushzChunkStream.push�s3���z�%�%�%��
���3��V�,�-�-�-�-�-r7c��t�d|||��t|d|�d������||��S)z"Call the appropriate chunk handlerzSTREAM %r %s %s�chunk_�ascii)�logger�debug�getattr�decoderus    r8�callzChunkStream.call�sN��	���&��S�&�9�9�9�<�w�t�;�c�j�j��&9�&9�;�;�<�<�S�&�I�I�Ir7rKc���tjr&|ddz	dzr|�||��dS|j�J�	t	|t	|����}t|j�d����}||kr"dt|���d�}t|���dS#tj
$r(}dt|���d�}t|��|�d}~wwxYw)	zRead and verify checksumr�r	Nr(z(broken PNG file (bad header checksum in r]z(broken PNG file (incomplete checksum in )rrd�crc_skiprSrPrbr`rerf�struct�error)rYrgrK�crc1�crc2rI�es       r8�crczChunkStream.crc�s����*�	��A��!��a��	��M�M�#�t�$�$�$��F��w�"�"�"�	*��$��s���,�,�D��t�w�|�|�A���'�'�D��t�|�|�M��c���M�M�M��!�#�&�&�&��|���|�	*�	*�	*�I�T�#�Y�Y�I�I�I�C��c�"�"��)�����	*���s�A,B+�+C"�:#C�C"c�L�|j�J�|j�d��dS)z
Read checksumNr()rSr`)rYrgrKs   r8r�zChunkStream.crc_skip�s'���w�"�"�"�����Q�����r7�IEND�endchunk�list[bytes]c�:�g}|j�J�		|���\}}}n)#tj$r}d}t	|��|�d}~wwxYw||krnD|�|t
j|j|����|�|����|S)NTztruncated PNG file)	rSr`r�r��OSErrorr�r�
_safe_readrt)rYr��cidsrgrhrir�rIs        r8�verifyzChunkStream.verify�s������w�"�"�"�
	�
*�#'�9�9�;�;� ��S�&�&���<�
*�
*�
*�*���c�l�l��)�����
*�����h�����H�H�S�)�.�t�w��?�?�@�@�@��K�K�����
	��s�'�A
�A�A
N�rSrTr?rU)r?r[)r?rR)rmrnr?rU�r?rU)rgr>rhrMrirMr?rU)rgr>rhrMrirMr?r>)rgr>rKr>r?rU)r�)r�r>r?r�)
r0r1r2rZr`rlrqrprvr~r�r�r�r6r7r8rRrR�s�������=�=�=�=� � � � �*��������$�$�$�$�.�.�.�.�J�J�J�J�*�*�*�*�*����������r7rRc�D�eZdZUdZded<ded<e	ddd
���ZdS)
�iTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    zstr | bytes | None�lang�tkeyN�text�str�
str | Noner?c�X�t�||��}||_||_|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
        )r��__new__r�r�)�clsr�r�r�rYs     r8r�ziTXt.__new__
s*���{�{�3��%�%����	���	��r7)NN)r�r�r�r�r�r�r?r�)r0r1r2�__doc__�__annotations__�staticmethodr�r6r7r8r�r�s`������������������DH�
�
�
�
��\�
�
�
r7r�c�@�eZdZdZdd�Zddd�Z			ddd�Z	ddd�ZdS)�PngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    r?rUc��g|_dSrW)�chunksrks r8rZzPngInfo.__init__!s
��79����r7Frgr>rK�
after_idat�boolc�@�|j�|||f��dS)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�rt)rYrgrKr�s    r8�addzPngInfo.add$s'��	
����C��z�2�3�3�3�3�3r7��key�str | bytes�valuer�r��zipc�*�t|t��s|�dd��}t|t��s|�dd��}t|t��s|�dd��}t|t��s|�dd��}|r<|�d|dz|zdz|zdzt	j|��z��dS|�d|dz|zdz|zdz|z��dS)	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�rA�compress)rYr�r�r�r�r�s      r8�add_itxtzPngInfo.add_itxt0s)��$�#�u�%�%�	2��*�*�Y��1�1�C��%��'�'�	4��L�L��(�3�3�E��$��&�&�	2��;�;�w��1�1�D��$��&�&�	2��;�;�w��1�1�D��	U��H�H���k�!�D�(�5�0�4�7�%�?�$�-�PU�BV�BV�V�
�
�
�
�
�

�H�H�W�c�I�o��4�u�<�t�C�e�K�e�S�T�T�T�T�Tr7�str | bytes | iTXtc�8�t|t��r6|�|||j�|jnd|j�|jnd|���St|t
��s@	|�dd��}n(#t$r|�|||���cYSwxYwt|t
��s|�dd��}|r0|�d|dztj
|��z��dS|�d|d	z|z��dS)
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

        Nr7)r�r�r��zTXt��tEXtr�)r�r�r�r�r�r>r��UnicodeErrorr�rAr�)rYr�r�r�s    r8�add_textzPngInfo.add_textSs@���e�T�"�"�	��=�=���#�j�4��
�
�#�#�j�4��
�
�#��!���
��%��'�'�	:�
:����Y��9�9�����
:�
:�
:��}�}�S�%�S�}�9�9�9�9�9�
:�����#�u�%�%�	2��*�*�Y��1�1�C��	3��H�H�W�c�G�m�d�m�E�.B�.B�B�C�C�C�C�C��H�H�W�c�E�k�E�1�2�2�2�2�2s�"A9�9"B�BNr��F)rgr>rKr>r�r�r?rU)r�r�F)r�r�r�r�r�r�r�r�r�r�r?rU)r�r�r�r�r�r�r?rU)r0r1r2r�rZr�r�r�r6r7r8r�r�s���������
:�:�:�:�
4�
4�
4�
4�
4� ���
!U�!U�!U�!U�!U�HHM�!3�!3�!3�!3�!3�!3�!3r7r�c�.�eZdZUded<ded<ded<dS)�_RewindStatez dict[str | tuple[int, int], Any]�infozlist[ImageFile._Tile]�tilez
int | None�seq_numN�r0r1r2r�r6r7r8r�r�{s6�������*�*�*�*����������r7r�c���eZdZd �fd�Zd!d�Zd"d	�Zd"d
�Zd#d�Zd#d�Zd$d�Z	d$d�Z
d#d�Zd#d�Zd#d�Z
d#d�Zd#d�Zd#d�Zd#d�Zd#d�Zd#d�Zd#d�Zd#d�Zd#d�Zd#d�Z�xZS)%�	PngStreamrSrTr?rUc���t���|��i|_i|_d|_d|_g|_d|_d|_d|_	d|_
tigd��|_d|_
dS)N�rrr�r)�superrZ�im_info�im_text�im_size�im_mode�im_tile�
im_palette�im_custom_mimetype�im_n_frames�_seq_numr��rewind_state�text_memory)rYrS�	__class__s  �r8rZzPngStream.__init__�s����
���������:<���.0���������.0���48���.2���'+���$(��
�(��R��6�6�������r7�chunklenrMc�z�|xj|z
c_|jtkrd|j�d�}t|���dS)Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)r��MAX_TEXT_MEMORYrF)rYr�rIs   r8�check_text_memoryzPngStream.check_text_memory�sY�����H�$�����o�-�-�6��#�6�6�6�
��S�/�/�!�.�-r7c�t�t|j���|j|j��|_dSrW)r�r��copyr�r�r�rks r8�save_rewindzPngStream.save_rewind�s5��(��L������L��M�
�
����r7c��|jj���|_|jj|_|jj|_dSrW)r�r�r�r�r�r�r�r�rks r8�rewindzPngStream.rewind�s9���(�-�2�2�4�4����(�-����)�1��
�
�
r7rhrir>c���|j�J�tj|j|��}|�d��}t�d|d|���||dz}t�d|��|dkrd|�d�}t
|���	t||dzd���}n2#t$rtj	rd}n�Yntj$rd}YnwxYw||jd	<|S)
Nr�ziCCP profile name %rr	zCompression method %sr�Unknown compression method z in iCCP chunkr'�icc_profile)
rSrr��findrzr{rfrJrFrdrAr�r�)rYrhrir=�i�comp_methodrIr�s        r8�
chunk_iCCPzPngStream.chunk_iCCP�s$���w�"�"�"�� ���&�1�1��
�F�F�5�M�M�����+�Q�r��r�U�3�3�3���A��h�����,�k�:�:�:��!���K��K�K�K�C��c�"�"�"�	�/��!�a�%�'�'�
�;�;�K�K���	�	�	��.�
�"�������z�	�	�	��K�K�K�	����&1���]�#��s�B9�9C(�C(�'C(c��|j�J�tj|j|��}|dkrtjr|Sd}t	|���t|d��t|d��f|_	t|d|df\|_|_	n#t$rYnwxYw|dr
d|jd	<|d
rd}t|���|S)N�
zTruncated IHDR chunkrr(r)�	�r	�	interlace�zunknown filter category)
rSrr�rdrFrbr��_MODESr��
im_rawmode�	Exceptionr�rf�rYrhrir=rIs     r8�
chunk_IHDRzPngStream.chunk_IHDR�s����w�"�"�"�� ���&�1�1���B�;�;��.�
���(�C��S�/�/�!��1�a�y�y�#�a��)�)�+���	�,2�A�a�D�!�A�$�<�,@�)�D�L�$�/�/���	�	�	��D�	�����R�5�	*�()�D�L��%��R�5�	#�+�C��c�"�"�"��s�/(B�
B%�$B%rc��d|jvr)tjd|jd||j��g}n6|j�
d|jd<tjdd|jz||j��g}||_||_d}t|���)N�bboxr�T�
default_imager�zimage data found)	r�r�_Tiler�r�r�r��im_idat�EOFError)rYrhrir�rIs     r8�
chunk_IDATzPngStream.chunk_IDAT�s����T�\�!�!��O�E�4�<��+?��d�o�V�V�W�D�D���+�04���_�-��O�E�6�D�L�+@�#�t��W�W�X�D������� ���s�m�m�r7c�$�d}t|���)Nzend of PNG image)r�)rYrhrirIs    r8�
chunk_IENDzPngStream.chunk_IEND�s�� ���s�m�m�r7c�t�|j�J�tj|j|��}|jdkr	d|f|_|S)Nr!r )rSrr�r�r��rYrhrir=s    r8�
chunk_PLTEzPngStream.chunk_PLTE�sA���w�"�"�"�� ���&�1�1���<�3���#�Q�h�D�O��r7c�
�|j�J�tj|j|��}|jdkrKt�|��r&|�d��}|dkr
||jd<n�||jd<n�|jdkrt|��rdnd|jd<nb|jdvrt|��|jd<nA|jdkr6t|��t|d	��t|d
��f|jd<|S)Nr!r�r�transparencyr�)rrr r'r()	rSrr�r��_simple_palette�matchr�r��i16)rYrhrir=r�s     r8�
chunk_tRNSzPngStream.chunk_tRNS�s���w�"�"�"�� ���&�1�1���<�3����$�$�Q�'�'�	
1��F�F�5�M�M����6�6�34�D�L��0��01���^�,�,�
�\�S�
 �
 �25�a�&�&�+?�3�3�a�D�L��(�(�
�\�]�
*�
*�+.�q�6�6�D�L��(�(�
�\�U�
"�
"�+.�q�6�6�3�q�!�9�9�c�!�Q�i�i�+G�D�L��(��r7c��|j�J�tj|j|��}t|��dz|jd<|S)N�j�@�gamma)rSrr�rbr�r�s    r8�
chunk_gAMAzPngStream.chunk_gAMA	s@���w�"�"�"�� ���&�1�1�� #�A���� 1���W���r7c���|j�J�tj|j|��}tjdt|��dz�d�|��}t
d�|D����|jd<|S)N�>r(�Ic3� K�|]	}|dzV��
dS)rNr6)�.0�elts  r8�	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>s&����,P�,P��S�8�^�,P�,P�,P�,P�,P�,Pr7�chromaticity)rSrr�r��unpack�len�tupler�)rYrhrir=�raw_valss     r8�
chunk_cHRMzPngStream.chunk_cHRMsu���w�"�"�"�� ���&�1�1���=�!3�S��V�V�q�[�!3�!3�!3�Q�7�7��',�,P�,P�x�,P�,P�,P�'P�'P���^�$��r7c��|j�J�tj|j|��}|dkrtjr|Sd}t	|���|d|jd<|S)Nr	zTruncated sRGB chunkr�srgb)rSrr�rdrFr�r�s     r8�
chunk_sRGBzPngStream.chunk_sRGBse���w�"�"�"�� ���&�1�1���A�:�:��.�
���(�C��S�/�/�!� ��t���V���r7c�@�|j�J�tj|j|��}|dkrtjr|Sd}t	|���t|d��t|d��}}|d}|dkr|dz|dzf}||jd<n|dkr||f|jd	<|S)
Nr�zTruncated pHYs chunkrr(r)r	�
F%u�?�dpi�aspect)rSrr�rdrFrbr�)	rYrhrir=rI�px�py�unitrs	         r8�
chunk_pHYszPngStream.chunk_pHYs+s����w�"�"�"�� ���&�1�1���A�:�:��.�
���(�C��S�/�/�!��Q����C��1�I�I�B����t���1�9�9��v�+�r�F�{�*�C�"%�D�L����
�Q�Y�Y�%'��V�D�L��"��r7c��|j�J�tj|j|��}	|�dd��\}}n#t$r|}d}YnwxYw|rj|�dd��}|�dd��}|dkr|n||j|<||j|<|�t|����|S)Nr�r	r7r�r��replacesexif)
rSrr��splitrFr}r�r�r�r)rYrhrir=�k�v�k_str�v_strs        r8�
chunk_tEXtzPngStream.chunk_tEXt=s����w�"�"�"�� ���&�1�1��	��7�7�5�!�$�$�D�A�q�q���	�	�	��A��A�A�A�	����
�	/��H�H�Y��1�1�E��H�H�Y�	�2�2�E�'(�G�|�|�!�!��D�L���"'�D�L����"�"�3�u�:�:�.�.�.��s�?�A�Ac�X�|j�J�tj|j|��}	|�dd��\}}n#t$r|}d}YnwxYw|r	|d}nd}|dkrd|�d�}t|���	t
|dd���}n2#t$rtjrd}n�Yntj	$rd}YnwxYw|rb|�
dd��}|�
dd	��}	|	x|j|<|j|<|�
t|	����|S)
Nr�r	r7rr�z in zTXt chunkr�r�r!)rSrr�r"rFrfrJrdrAr�r}r�r�r�r)
rYrhrir=r#r$r�rIr%r&s
          r8�
chunk_zTXtzPngStream.chunk_zTXtQs����w�"�"�"�� ���&�1�1��	��7�7�5�!�$�$�D�A�q�q���	�	�	��A��A�A�A�	����
�	��A�$�K�K��K��!���K��K�K�K�C��c�"�"�"�	�%�a����e�,�,�A�A���	�	�	��.�
��������z�	�	�	��A�A�A�	����
�	/��H�H�Y��1�1�E��H�H�Y�	�2�2�E�8=�=�D�L���$�,�u�"5��"�"�3�u�:�:�.�.�.��s'�?�A�A�<B�C�0C�Cc��|j�J�tj|j|��x}}	|�dd��\}}n#t$r|cYSwxYwt|��dkr|S|d|d|dd�}}}	|�dd��\}}	}
n#t$r|cYSwxYw|dkrJ|dkrB	t
|
��}
n3#t$rtjr|cYS�tj	$r|cYSwxYw|S|dkr
|
|j
d<	|�dd��}|�d	d��}|	�d	d��}
|
�d	d��}n#t$r|cYSwxYwt|||
��x|j
|<|j|<|�t|����|S)
Nr�r	r'rsXML:com.adobe.xmp�xmpr�r�r�)rSrr�r"rFrrJrdrAr�r�r}r�r�r�r�)rYrhri�rr=r#�cf�cmr��tkr$r%�lang_str�tk_strr&s               r8�
chunk_iTXtzPngStream.chunk_iTXtts0���w�"�"�"��$�T�W�f�5�5�5��A�	��7�7�5�!�$�$�D�A�q�q���	�	�	��H�H�H�	�����q�6�6�A�:�:��H��a�D�!�A�$��!�"�"���B��	��'�'�%��+�+�K�D�"�a�a���	�	�	��H�H�H�	����
��7�7��Q�w�w��-�a�0�0�A�A��!���� �6�� ������z�����H�H�H��������$�$�$�"#�D�L���	��H�H�Y��1�1�E��{�{�7�H�5�5�H��Y�Y�w��1�1�F��H�H�W�h�/�/�E�E���	�	�	��H�H�H�	����59���&�4Q�4Q�Q���U��d�l�5�1����s�5�z�z�*�*�*��sN�A�A�A�B�B-�,B-�=C
�
C;�'C;�:C;�AE*�*E9�8E9c�f�|j�J�tj|j|��}d|z|jd<|S)N�Exif�exif)rSrr�r�r�s    r8�
chunk_eXIfzPngStream.chunk_eXIf�s:���w�"�"�"�� ���&�1�1��.��2���V���r7c��|j�J�tj|j|��}|dkrtjr|Sd}t	|���|j�d|_t
jd��|St|��}|dks|dkrt
jd��|S||_t|d��|j	d<d|_
|S)	Nr)z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possiblerlr(�loopz
image/apng)rSrr�rdrFr��warnings�warnrbr�r�)rYrhrir=rI�n_framess      r8�
chunk_acTLzPngStream.chunk_acTL�s����w�"�"�"�� ���&�1�1���A�:�:��.�
���6�C��S�/�/�!���'�#�D���M�P�Q�Q�Q��H��q�6�6���q�=�=�H�z�1�1��M�P�Q�Q�Q��H�#���"�1�a�y�y���V��".����r7c��|j�J�tj|j|��}|dkrtjr|Sd}t	|���t|��}|j�|dks|j�|j|dz
krd}t|���||_t|d��t|d��}}t|d��t|d	��}	}|j\}
}||z|
ks	|	|z|krd
}t|���||	||z|	|zf|j	d<t|d��t|d
��}
}|
dkrd}
t|��t|
��zdz|j	d<|d|j	d<|d|j	d<|S)N�z"APNG contains truncated fcTL chunkrr	�#APNG contains frame sequence errorsr(r)r�r*zAPNG contains invalid framesr����d���duration��disposal��blend)rSrr�rdrFrbr�rfr�r�r�float)rYrhrir=rI�seq�width�heightrr�im_w�im_h�	delay_num�	delay_dens              r8�
chunk_fcTLzPngStream.chunk_fcTL�s����w�"�"�"�� ���&�1�1���B�;�;��.�
���6�C��S�/�/�!��!�f�f���M�!�c�Q�h�h��M�%�$�-�3��7�*B�*B�7�C��c�"�"�"���
��A�q�	�	�3�q�!�9�9�v���Q����S��B�Z�Z�B���\�
��d�
��:�����V��d� 2� 2�0�C��c�"�"�"� "�B��U�
�B��K�@���V��"�1�b�z�z�3�q�"�:�:�9�	���>�>��I�#(��#3�#3�e�I�6F�6F�#F��#M���Z� �#$�R�5���Z� � !�"����W���r7c�h�|j�J�|dkr9tjrtj|j|��}|Sd}t	|���tj|jd��}t|��}|j|dz
krd}t|���||_|�|dz|dz
��S)Nr(z"APNG contains truncated fDAT chunkr	r?)	rSrrdr�rFrbr�rfr�)rYrhrir=rIrJs      r8�
chunk_fdATzPngStream.chunk_fdAT�s����w�"�"�"��A�:�:��.�
��(���&�9�9����6�C��S�/�/�!�� ���!�,�,���!�f�f���=�C�!�G�#�#�7�C��c�"�"�"���
����s�Q�w���
�3�3�3r7r�)r�rMr?rUr�)rhrMrirMr?r>)rhrMrirMr?r)r0r1r2rZr�r�r�r�r�r�r�r�rrrrrr'r)r2r6r<rQrS�
__classcell__�r�s@r8r�r��s��������������""�"�"�"�
�
�
�
�2�2�2�2�
����8����*����������������.������������"����$����(!�!�!�!�F)�)�)�)�V��������*����<4�4�4�4�4�4�4�4r7r��prefixr�c�6�|�t��SrW)�
startswith�_MAGIC)rVs r8�_acceptrZ�s�����V�$�$�$r7c���eZdZdZdZdd�Zedd���Zd�fd�Zdd�Z	ddd�Z
dd�Zdd�Zd d�Z
dd�Zd!d�Zd"�fd�Z�xZS)#�PngImageFile�PNGzPortable network graphicsr?rUc��|j�J�t|j�d����sd}t|���|j|_d|_g|_t|j��|_	|j���\}}}	|j�	|||��}n�#t$rYn�t$rrt�
d|||��tj|j|��}|dd����r|j�||f��YnwxYw|j�||����|jj|_|jj|_|jj|_d|_|jj|_|jj|_|jjpd|_|j� dd	��|_!|jj"r)|jj"\}}tGj$||��|_%|d
kr|dz
|_&n||_&|jj�vd	|_'|j�(��|j&|_)|j�*��|_+|j!r|xjdz
c_|�,d��|jdk|_-dS)Nr)znot a PNG filerT�%r %s %s (unknown)r	r'r�F�fdATr().rSrZr`rf�_fp�_PngImageFile__frame�private_chunksr��pngr~r��AttributeErrorrzr{rr��islowerrtr�r��_moder��_sizer�r��_textr�r�r��custom_mimetyper�r;�getr�r�r
�raw�palette�_PngImageFile__prepare_idat�!_close_exclusive_fp_after_loadingr��_PngImageFile__rewind_idatra�_PngImageFile__rewind�_seek�is_animated)rYrIrgrhrir=�rawmoderKs        r8�_openzPngImageFile._open�s����w�"�"�"��t�w�|�|�A���'�'�	#�"�C��c�"�"�"��7������
VX���%.�t�w�%7�%7���	!� $�x�}�}����C��f�
9��H�M�M�#�s�F�3�3�����
�
�
���!�
9�
9�
9����1�3��V�D�D�D��(���&�9�9���q��s�8�#�#�%�%�9��'�.�.��Q�x�8�8�8���	
9����
�H�L�L��a� � � �!	!�2�X�%��
��X�%��
��H�$��	�37��
��H�$��	�#�x�:�����,�1���
�!�Y�]�]�?�E�B�B����8��	;� �H�/�M�G�T�'�+�G�T�:�:�D�L��'�>�>�"(�1�*�D���"(�D���8��+�5:�D�2��H� � �"�"�"�!%�!4�D�� �H�M�M�O�O�D�M��!�
#��
�
��"�
�
��J�J�q�M�M�M��=�1�,����s�B1�1
D8�=A8D8�7D8�dict[str, str | iTXt]c���|j�[|jr$|j}|�|jdz
��|���|jr|�|��|j�J�|jS)Nr	)rirsrbr_r;�load)rY�frames  r8r�zPngImageFile.text>sy���:����
-�����	�	�$�-�!�+�,�,�,��I�I�K�K�K���
!��	�	�%� � � ��z�%�%�%��z�r7c�J��|j�d}t|���|j�|jdddz
��|j�J�|j���|j���t�����dS)zVerify PNG fileNz)verify must be called directly after openrr'r))rS�RuntimeErrorr_r�rdr�rpr�)rYrIr�s  �r8r�zPngImageFile.verifyNs�����7�?�=�C��s�#�#�#�	
����T�Y�q�\�!�_�q�(�)�)�)��x�#�#�#���������������
���������r7ryrMc�^�|�|��sdS||jkr|�dd��|j}	t|jdz|dz��D]}|�|���dS#t$r,}|�|��d}t	|��|�d}~wwxYw)NrTr	zno more images in APNG file)�_seek_checkrbrr�ranger�r_)rYry�
last_frame�fr�rIs      r8r_zPngImageFile.seek^s�������&�&�	��F��4�<����J�J�q�$�����\�
�	'��4�<�!�+�U�Q�Y�7�7�
�
���
�
�1�
�
�
�
�
�
���	'�	'�	'��I�I�j�!�!�!�/�C��3�-�-�Q�&�����	'���s�3A6�6
B,�'B'�'B,Fr�r�c�	�|j�J�t|jt��r|jj�|d}|dk�r
|ry|j�|j��|j���|j|_	d|_
|jj|_|jj
|_|j|_d|_d|_|j�dd��|_|j�d��|_|j�d��|_|j�d��}d|_�nx||jdzkrd|��}t/|���|���|jr%|j�|j|j��|j���|_|j|_|j	r&t;j|j|j	��d|_	d}	|j�d
��	|j���\}}}n#t@j!tDf$rYn�wxYw|dkrd}tG|���|d
kr|rd}tE|���d	}	|j�$|||��n�#tJ$rYn�tF$r3|dkr|d
z}|r	||_	Yndt;j|j|��YnFtL$r:tN�(d|||��t;j|j|��YnwxYw��4||_|jj
|_|j�d��|_|j�d��|_|j�d��}|jsd}tG|���|r||_|j�&|jtRj*krtRj+|_d|_|jtRj*krN|jrE|j���|_|�,|j|j��|_dSdS|jtRj+krVtZj.�/|j0|j1��|_|�,|j|j��|_dSdS)Nrr�FrFrHr�r	zcannot seek to frame Tr(r�zNo more images in APNG file�fcTLzAPNG missing frame datar`r_zimage not found in APNG frame)2rdr�rar�exr_rqr�rprn�_imr�r�r�r�rS�_prev_im�disposerkr��
dispose_op�blend_oprbrFrx�im�paste�dispose_extentr�rr�r`r�r�rfr�r~�UnicodeDecodeErrorrerzr{r/r5r4�_cropr
�core�fill�mode�size)	rYryr�r�rI�frame_startrgrhris	         r8rrzPngImageFile._seekms����x�#�#�#��d�h�
�.�.�	��(�+���1����A�:�:��
#���
�
�d�m�,�,�,�����!�!�!�&*�&8��#���� �H�,��	� �H�,��	��(��� �D�M��D�L�!%������!F�!F�D��"�i�m�m�J�7�7�D�O� �I�M�M�'�2�2�D�M�!�Y�]�]�6�2�2�N��D�L�L����q�(�(�(�5�e�5�5�� ��o�o�%�
�I�I�K�K�K��|�
A���
�
�d�l�D�,?�@�@�@� �G�L�L�N�N�D�M��h�D�G��"�
(��$�T�W�d�.A�B�B�B�&'��#��K�
:�����Q�����'+�x�}�}���$�C��f�f����k�2�����E������'�>�>�7�C�"�3�-�-�'��'�>�>�"�/�7��)�#�.�.�.�"&�K�
:��H�M�M�#�s�F�3�3�3�3��)�����E��:�:�:��g�~�~��!���&�"�28�D�/�!�E��(���&�9�9�9�9�9�%�:�:�:��L�L�!5�s�C��H�H�H��(���&�9�9�9�9�9�:����;
:�B!�D�L���(�D�I�"�i�m�m�J�7�7�D�O� �I�M�M�'�2�2�D�M�!�Y�]�]�6�2�2�N��9�
$�5���s�m�m�#��	T�ES�D���=� �T�_��8L�%L�%L�&�4�D�O�����?�h�2�2�2��}�
M�#�}�1�1�3�3���#�z�z�$�,��8K�L�L�����
M�
M��_�� 6�
6�
6� �:�?�?�4�9�d�i�@�@�D�L��:�:�d�l�D�4G�H�H�D�L�L�L�7�
6s7�H:�:I�I�	J&�&
L0�2L0�L0�-AL0�/L0c��|jSrW)rbrks r8razPngImageFile.tell�s
���|�r7c��|j�d��r|jdz|_|j|_t
j�|��dS)z"internal: prepare to read PNG filer�)r	N)r�rk�
decoderconfigrn�_PngImageFile__idatr�load_preparerks r8r�zPngImageFile.load_prepare�sQ���9�=�=��%�%�	;�!%�!3�d�!:�D���)�����(�(��.�.�.�.�.r7�
read_bytesr>c�(�|j�J�|j�J�|jdkr�|j�d��|j���\}}}|dvr|j�|||��dS|dkr9	|j�|||��n#t$rYnwxYw|dz
|_n||_|jdk��|dkr|j}nt||j��}|j|z
|_|j�|��S)zinternal: read more image dataNrr()�IDATsDDATr`r7r`)rdrSr�r`rvr~r��min)rYr�rgrhris     r8�	load_readzPngImageFile.load_read�s2���x�#�#�#��w�"�"�"��k�Q���
�G�L�L��O�O�O�#�x�}�}����C��f��5�5�5���
�
�c�3��/�/�/��s��g�~�~���H�M�M�#�s�F�3�3�3�3�������D�����$�q�j����$���%�k�Q���*��?�?���J�J��Z���5�5�J��k�J�.����w�|�|�J�'�'�'s�>B�
B(�'B(c��|j�J�|j�J�|jdkr|j�|j��	|j�d��	|j���\}}}n#tjtf$rY�nAwxYw|dkr�n5|dkr,|jr%d|_|j�	|||���n	|j�
|||��n�#t$rYn�t$rP|dkr|dz}	tj|j|��n&#t$r}tjrYd}~Yn�|�d}~wwxYwYnt"$rst$�d|||��tj|j|��}|d	d
����r|j�||df��YnwxYw���|jj|_|js"|j���d|_dS|j�r0|jt8jk�r|�|j|j ��}|jj!dkr+d|j"vr"|�#d
|j"d��}n�|jj!dkrkd|j"vrb|j"d}tI|tJ��r|�&|��n*tI|tN��r|�(|��|�)d
��}|j�*||j |��|j|_dSdSdS)z%internal: finished reading image dataNrTr(r�r�r`r_r	r'r r�r&r!)+rdrSr�r`r�r�rfrsrnrvr~r�r�rr�r�rdrerzr{rfrcrtr�rirpr�r�r:r<r�r�r�r�r��convert_transparentr�r>�putpalettealphasrM�putpalettealpha�convertr�)	rYrgrhrir�r=�updated�mask�ts	         r8�load_endzPngImageFile.load_ends����x�#�#�#��w�"�"�"��;�!����G�L�L���%�%�%�"	?��G�L�L��O�O�O�
�#'�8�=�=�?�?� ��S�&�&���L�+�.�
�
�
���
�����g�~�~������D�$4��&'��#���
�
�c�3��/�/�/��
?���
�
�c�3��/�/�/�/��%�
�
�
����	
 �	
 �	
 ��'�>�>��a�K�F� ��(���&�9�9�9�9��� � � � �6� �������������	 ����:�9�"�
?�
?�
?����1�3��V�D�D�D��(���&�9�9���q��s�8�#�#�%�%�?��'�.�.��Q��~�>�>�>���	
?����="	?�F�X�%��
���	(��H�N�N�����D�H�H�H��}�
(���%�-�!?�!?��*�*�T�W�d�.A�B�B���7�<�5�(�(�^�t�y�-H�-H�"�6�6���	�.� 9���D�D��w�|�s�*�*�~���/J�/J� �I�n�5��%�a��/�/�7�#�4�4�Q�7�7�7�7�'��3�/�/�7�#�3�3�A�6�6�6�"�?�?�6�2�2�D��
�#�#�G�T�-@�$�G�G�G��-�����
(�
(�!?�!?sa�A7�7B�B�C,�,
G�8G�
D(�'G�(
E�2E�>G�E�E�G�A9G�G�dict[int, Any] | Nonec��d|jvr|���d|jvrd|jvrdS|������S)Nr5zRaw profile type exif)r�rx�getexif�_get_merged_dictrks r8�_getexifzPngImageFile._getexif?sU�����"�"��I�I�K�K�K����"�"�'>�d�i�'O�'O��4��|�|�~�~�.�.�0�0�0r7�
Image.Exifc�~��d|jvr|���t�����S)Nr5)r�rxr�r�)rYr�s �r8r�zPngImageFile.getexifFs1������"�"��I�I�K�K�K��w�w��� � � r7r�)r?rv)ryrMr?rUr�)ryrMr�r�r?rU)r?rM)r�rMr?r>)r?r�)r?r�)r0r1r2�format�format_descriptionru�propertyr�r�r_rrrar�r�r�r�r�rTrUs@r8r\r\�s=�������
�F�4��B-�B-�B-�B-�H�
�
�
��X�
������� 
'�
'�
'�
'�bI�bI�bI�bI�bI�H����/�/�/�/�!(�!(�!(�!(�F=(�=(�=(�=(�~1�1�1�1�!�!�!�!�!�!�!�!�!�!r7r\)r�r�)�L;1r�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��)rr�rrrr%r
rrr"r#r$r!r r&rSrTrgrUc�<�d�|��}|�tt|����|z��|�|��t	|t	|����}|�t|����dS)z'Write a PNG chunk (including CRC field)r7N)�join�write�o32rrP)rSrgrK�	byte_datar�s     r8�putchunkr�ds}��������I��H�H�S��Y���
 �
 �3�
&�'�'�'��H�H�Y����
��F�3�K�K�
(�
(�C��H�H�S��X�X�����r7c��eZdZdd�Zd
d
�ZdS)�_idatrSrT�chunk�Callable[..., None]r?rUc�"�||_||_dSrW)rSr�)rYrSr�s   r8rZz_idat.__init__rs�������
�
�
r7rKr>c�>�|�|jd|��dS)Nr�)r�rS�rYrKs  r8r�z_idat.writevs ���
�
�4�7�G�T�*�*�*�*�*r7N)rSrTr�r�r?rU�rKr>r?rU�r0r1r2rZr�r6r7r8r�r�os<����������+�+�+�+�+�+r7r�c��eZdZdd	�Zdd�Zd
S)�_fdatrSrTr�r�r�rMr?rUc�0�||_||_||_dSrW)rSr�r�)rYrSr�r�s    r8rZz_fdat.__init__}s�������
�����r7rKr>c��|�|jdt|j��|��|xjdz
c_dS)Nr`r	)r�rSr�r�r�s  r8r�z_fdat.write�s:���
�
�4�7�G�S���%6�%6��=�=�=���������r7N)rSrTr�r�r�rMr?rUr�r�r6r7r8r�r�zs<����������
�����r7r�r��Image.Image�encoderinfo�dict[str, Any]c��|�dd��|�dd��|�dd��|�dd��f|_dS)N�optimizeF�compress_level����
compress_type�
dictionaryr7)rk�
encoderconfig)r�r�s  r8�_apply_encoderinfor��sW�����
�E�*�*����(�"�-�-������,�,�����c�*�*�	�B���r7c�.�eZdZUded<ded<ded<dS)�_Framer�r�z tuple[int, int, int, int] | Noner�r�r�Nr�r6r7r8r�r��s3��������O�O�O�*�*�*�*������r7r�r�r�r�r�rtr��Image.Image | None�
append_images�list[Image.Image]c��|j�d��}|j�d|j�dd����}|j�d|j�dtj����}	|j�d|j�dt
j����}
|rtj|��}ntj|g|��}g}d}
|D�]�}tj
|��D�]�}|j|kr|���}n|�
|��}|j���}t|tt f��r||
|d<n|�d|jvr|jd|d<t|	tt f��r|	|
|d<t|
tt f��r|
|
|d<|
dz
}
|�r�|d}|j�d��}|j�d��}|tjkrt%|��dkrtj}|tjkr|j���}t*j�d	|jd
��}|j}|r|�|��}n
d|jz}|�||��n%|tjkr|dj}n|j}t9j|�
d	��|�
d	����}|�d
���}|sS||�d��kr:||�d��kr!d|vr|jdxx|dz
cc<���nd}|�tA|||������ؐ��t%|��dkr|s
|djS||dtCt%|����tC|����|r�|j|kr|n|�
|��}tE||j��tGj$|tKtLtNtQ||����tGj)dd|jzd|��g��d}tU|��D�]f\}}|j}|jsd|jz}n|j}|�|��}|j}|j}|�dd��}tW|dz���,d��}|j-dkrd}t]|���|�d|	��} |�d|
��}!||dtC|��tC|d��tC|d��tC|d��tC|d��t_|j-��t_|j0��tc| ��tc|!����|dz
}tE||j��|dkrd|sbtGj$|tKtLtNtQ||����tGj)dd|jzd|��g�����te|||��}"tGj$|tKtLtN|"��tGj)dd|jzd|��g��|"j3}��hdS)NrDr8rrFrHr	r�r'r&)rrrrr����F)�
alpha_onlysacTLr�rC�zcannot write durationr�)4r�rkr�r/r3r:r;�	itertools�chainr�Iteratorr�r�r�r��listrr5rr4r�r
r�r�r�r��cropr�r�subtract_modulo�getbboxrtr�r�r�r�_saverrr>r�r��	enumerater�limit_denominator�	numeratorrF�o16�denominatorrr�r�)#r�rSr�r�rtr�r�rDr8rFrHr��	im_frames�frame_count�im_seq�im_framer��previous�
prev_disposal�
prev_blend�base_imr�r��delta�
default_imr�ry�
frame_datar��frame_duration�delayrI�frame_disposal�frame_blend�fdat_chunkss#                                   r8�_write_multiple_framesr��s����~�!�!�*�-�-�H�
�>���f�b�g�k�k�&�!�&<�&<�=�=�D��~�!�!�*�b�g�k�k�*�h�FV�.W�.W�X�X�H��N���w�����G�U�_�(M�(M�N�N�E��5���
�.�.�������m�4�4�� �I��K��3B�3B��%�.�v�6�6�2	B�2	B�H��}��$�$�#�=�=�?�?���#�+�+�D�1�1���.�-�-�/�/�K��(�T�5�M�2�2�
D�*2�;�*?��J�'�'��!�j�H�M�&A�&A�*2�-�
�*C��J�'��(�T�5�M�2�2�
@�*2�;�*?��J�'��%�$���/�/�
:�',�[�'9��G�$��1��K��!
�$�R�=�� (� 4� 8� 8�� D� D�
�%�1�5�5�g�>�>�
� �H�$8�8�8�S��^�^�a�=O�=O�$,�$:�M� �H�$:�:�:�&�k�.�.�0�0�G�#�j�o�o�f�b�g�|�L�L�G�#�=�D��0�")�,�,�t�"4�"4���%���/���M�M�'�4�0�0�0�0�"�h�&:�:�:�'��m�.�G�G�&�k�G�"�2��$�$�V�,�,�g�o�o�f�.E�.E�����}�}��}�6�6����%�����)D�)D�D�D�"�k�o�o�g�&>�&>�>�>�"�k�1�1��(��4�4�4��J�8O�O�4�4�4��������V�H�d�K�@�@�A�A�A�A�e2	B�h�9�~�~����=����|���
�E�
���C�	�N�N����D�	�	�	����
��7�d�?�?�R�R��
�
�4�0@�0@�
��:�r�~�6�6�6������E��E�"�e�,�,�-�-�
�_�U�F�R�W�$4�a��
A�
A�B�	
�	
�	
��G�&�y�1�1�/*�/*���z��=����	+��H�M�)�D�D��?�D��}�}�T�*�*�H��}�� �,��$����Q�7�7����$�.�/�/�A�A�%�H�H���?�U�"�"�)�C��S�/�/�!�$����X�>�>��!�o�o�g�u�5�5��
������L�L���Q��L�L���Q��L�L���Q��L�L���Q��L�L���� � ���!�"�"��~����{�O�O�	
�	
�	
�	�1����8�R�^�4�4�4��A�:�:�m�:��O���R��Y��b�%� 0� 0�1�1�������(>��7�K�K�L�
�
�
�
� ��E�7�3�3�K��O���R��Y��,�,�������(>��7�K�K�L�
�
�
�
"�)�G�G��4r7�filenamer�c�,�t|||d���dS)NT)�save_all)r�)r�rSr�s   r8�	_save_allr)s��	�"�b�(�T�*�*�*�*�*�*r7r�c��)�|�r|j�d|j�d����}t��}t���)|j�dg��}t	j|g|��D]M}t
j|��D]6}	|�|	j	���)�|	j
���7�NdD]}
|
|vrn�	|���}
t�)fd�td��D����}n|j
}|j	}
|
}g}
|jr|���pg}
|
dkr�d|jvrt!d|jdzd	��}n8|jr/t#t!t%|
��d
zd	��d��}nd	}|dkr|dkrd}n|dkrd}nd}|d
|��z
}	t&|\}}}n(#t($r}d|
�d�}t+|��|�d}~wwxYw|dkrt-ddd���|�t0��||dt3|d��t3|d��||ddd�	�	gd�}|j�d|j�d����x}r>d}|dzt5j|��z}||d|��|�d��|j�d��x}r�gd�}|jD]�}|dd�\}}||vr#|�|��||||���6||vr||||���H|dd����r*t%|��d
ko|d}|s
||||����|j	dkrT|d
z}t?|
d|���}t%|��|kr|dz
}t%|��|k�||d|��|j�d |j�d d����} | s| dk�r|j	dkrk|}!tA| t>��r||d!| d|!����n@t#dt!d"| ����} d#| zdz}"||d!|"d|!����n|j	d$vr9t#dt!d%| ����} ||d!tC| ����n�|j	d&krA| \}#}$}%||d!tC|#��tC|$��ztC|%��z��nud |jvrd'}t+|���nZ|j	dkrO|j"�#��d(kr2|j"�d(d)��}"|}!||d!|"d|!���|j�d*��x}&r[||d+t3tI|&dd,zd-z����t3tI|&dd,zd-z����d.��|rAd/d0g}|jD]5}|dd�\}}||vr"|�|��||||���6|j�d1��x}'r[tA|'tJj&��r|'�'d2��}'|'�(d3��r
|'d4d�}'||d5|'��|}(|rtS||||
|||��}(|(rutU|(|j��tWj,|(t[t\t>t_||����tWj0d6d7|(j
zd|��g��|r]|jD]U}|dd�\}}|dd����r*t%|��d
ko|d}|r
||||���V||d8d9��tc|d:��r|�2��dSdS);Nr�r�)r&r r!c3�P��K�|]�t�fd��D����V�� dS)c3�(�K�|]}|�V��
dSrWr6)r�
frame_sizer�s  �r8rz"_save.<locals>.<genexpr>.<genexpr>Fs'�����?�?�:��A��?�?�?�?�?�?r7N)�max)rr��sizess @�r8rz_save.<locals>.<genexpr>FsA������R�R�A�S�?�?�?�?��?�?�?�?�?�R�R�R�R�R�Rr7r'r!�bitsr	�r+r*r(�;zcannot write mode z as PNGr
zSaving I mode images as PNGr�)�
stacklevelsIHDRrr�)scHRMscICPsgAMAssBIT�sRGBstIMEr�sICC Profiler�siCCPr�pnginfo)ssPLTr�r�r�sPLTEr�stRNSr���)rrr
rr�r z%cannot use transparency for this moder&�ArspHYsrg�?r�sbKGDshISTr5r)r4r,seXIfr�r�r�r7�flush)3r�rkr��setr�r�rr�r�r�r�r^rr~rm�
getpaletter�rr�	_OUTMODES�KeyErrorr�rr�rYr�rAr��remover�rfr>r�r�r��getpalettemoderMr
�Exif�tobytesrXr�r�rr�rrr�r��hasattrr)*r�rSr�r�r�r��modesr�r�r�r�r��outmoderm�colorsrrt�	bit_depth�
color_typer�rIr��icc�namerKr��chunks_multiple_allowed�
info_chunkrgr��palette_byte_number�
palette_bytesr��alpha_bytes�alpha�red�green�bluerr5�	single_imrs*                                         @r8r�r�-s>	�������*�*��R�W�[�[��9�9�
�
�
�����������*�*�?�B�?�?�
��o�r�d�M�:�:�	)�	)�F�)�2�6�:�:�
)�
)���	�	�(�-�(�(�(��	�	�(�-�(�(�(�(�
)�)�	�	�D��u�}�}�����9�9�;�;�D��R�R�R�R��q���R�R�R�R�R����w���w���G��G�	�z�(��-�-�/�/�'�R���s�{�{��R�^�#�#���b�n�V�4�4�c�:�:�F�F��z�
��S��W����!2�C�8�8�!�<�<������R�<�<���{�{�����1���������z�4�z�z�!�G�"�)2�7�);�&���J�J���"�"�"�0�4�0�0�0���c�l�l��!�����"�����#�~�~��/���B�B�B�B�
�H�H�V����	�E�
���D��G����D��G�����
�
�
�
�
�
�D�
C�
C�F��n� � ������M�0J�0J�K�K�K�s�
����g�~��
�c� 2� 2�2��
��b�'�4� � � �	�
�
�g�����~�!�!�)�,�,�,�t�
)�"F�"F�"F���+�	)�	)�J�"�2�A�2��I�C���f�}�}��
�
�c�"�"�"���b�#�t�$�$�$�$��/�/�/���b�#�t�$�$�$�$��Q�q�S��!�!�#�#�
)� ��_�_��1�C�j��m�
�!�)��E�"�c�4�(�(�(��	�w�#�~�~�$�q�j���g�&:�':�&:�;�<�<�
��-� � �#6�6�6��U�"�M��-� � �#6�6�6�
��b�'�=�)�)�)��>�%�%�n�b�g�k�k�.�RV�6W�6W�X�X�L��4�|�q�(�(�
�7�c�>�>� �K��,��.�.�
8���b�'�<����#=�>�>�>�>�"�1�c�#�|�&<�&<�=�=���,�.��6����b�'�5��+��#6�7�7�7�7�
�W�/�
/�
/��q�#�e�\�":�":�;�;�L��E�"�g�s�<�0�0�1�1�1�1�
�W��
�
�+��C����E�"�g�s�3�x�x�#�e�*�*�4�s�4�y�y�@�A�A�A�A����/�/�>���c�l�l�"�	0��7�c�>�>�b�e�2�2�4�4��>�>��E�$�$�V�S�1�1�E� �K��E�"�g�u�\�k�\�2�3�3�3��n� � ��'�'�'�s�
�
������C��F�V�O�c�)�*�*�+�+���C��F�V�O�c�)�*�*�+�+��	
�	
�	
��%��7�#���+�	%�	%�J�"�2�A�2��I�C���f�}�}��
�
�c�"�"�"���b�#�t�$�$�$���~�!�!�&�)�)�)�t�!��d�E�J�'�'�	#��<�<��?�?�D��?�?�?�+�+�	�����8�D�
��b�'�4� � � �$&�I��
�*���E�4��-��
�
�	��
��9�b�n�5�5�5������E��E�"�e�,�,�-�-�
�_�U�F�Y�^�$;�Q��
H�
H�I�	
�	
�	
��)��+�	)�	)�J�"�2�A�2��I�C���1�Q�3�x���!�!�
)� ��_�_��1�C�j��m�
��)��E�"�c�4�(�(�(��	�E�"�g�s�����r�7����
���
�
�
�
�
��s�G%�%
H
�/H�H
�paramsr� list[tuple[bytes, bytes, bytes]]c���ddlm}g�d�fd
�}|��}	||_t||d|��|`n#|`wxYw�S)
z4Return a list of PNG chunks representing this image.r)�BytesIOrSrTrgr>rKr?rUc���d�|��}tt|t|������}��|||f��dS)Nr7)r�r�rPrt)rSrgrKr�r�r�s     �r8rtzgetchunks.<locals>.appendsN����H�H�T�N�N�	��&��F�3�K�K�0�0�1�1���
�
�s�I�s�+�,�,�,�,�,r7r��rSrTrgr>rKr>r?rU)�ior-r�r�)r�r*r-rtrSr�s     @r8�	getchunksr1�s����������
�F�-�-�-�-�-�-�

����B�����
�b�"�b�&�!�!�!��N�N��B�N������Ms�7�;z.pngz.apngz	image/png)r=r>r?r>)r)rKr>rLrMr?rM)rVr>r?r�r/)r�r�r�r�r?rU)r�r�rSrTr�r�r�r�rtr�r�r�r�r�r?r�)r�r�rSrTr�r�r?rU)r�r�rSrTr�r�r�r�r�r�r?rU)r�r�r*rr?r+)R�
__future__rr��logging�rer�r9rA�enumr�	fractionsr�typingrrrr�r
rrr
r�_binaryrrrrbrrr�rr��
_deprecater�_utilr�
TYPE_CHECKING�collections.abcrrrr�	getLoggerr0rz�compilerrcrYr�r�	SAFEBLOCKrDr�r/r:rJrPrRr�r�r�r�r�rZr\rr�r�r�r�r�r�rr�r1�
register_openr��
register_save�register_save_all�register_extensions�
register_mimer6r7r8�<module>rEs���B#�"�"�"�"�"���������	�	�	�	�
�
�
�
���������������������'�'�'�'�'�'�'�'�'�'�G�G�G�G�G�G�G�G�G�G�G�G�G�G�!�!�!�!�!�!�!�!�!�!�!�!�������!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!� � � � � � ��
���(�(�(�(�(�(�$�$�$�$�$�$�$�$�������	��	�8�	$�	$��	���L�	!�	!�	'��
��
����
��
������
��
!�+
�
��2�"�*�0�1�1���$���
�~�%��������w����*�����G��������/�/�/�/�/�[�[�[�[�[�[�[�[�|�����3����6Y3�Y3�Y3�Y3�Y3�Y3�Y3�Y3�@�����:����f4�f4�f4�f4�f4��f4�f4�f4�Z%�%�%�%�T!�T!�T!�T!�T!�9�&�T!�T!�T!�x

!�$�$�$�	 �
"�	$�'�
(�$�$�$�	 �$�&�!
�
�	�(����+�+�+�+�+�+�+�+�
�
�
�
�
�
�
�
����� � � � � �Z� � � �P�P�P�P�f+�+�+�+�"*��H�H�H�H�H�^����2���L�'��w�?�?�?����L�'��/�/�/�����+�Y�7�7�7����,�-���/@�A�A�A����L�'��5�5�5�5�5r7

Youez - 2016 - github.com/yon3zu
LinuXploit