403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.9/site-packages/PIL/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.9/site-packages/PIL/__pycache__/Image.cpython-39.opt-2.pyc
a

h�a���@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZddlmZzddlmZWney�dZYn0ddlmZmZmZmZmZmZddlmZddlmZmZe	j dkr�d	d
�Z!nddlm"Z"dZ#dZ$dZ%e�&e'�Z(Gd
d�de)�Z*Gdd�de+�Z,e-d�Z.z>ddlm/Z0ee1e0dd�k�rzede1e0dd��de����Wnre�y�Z2zXeed��Z0e3e2��4d��r�e�5de)�n e3e2��4d��r�e�5e3e2�e)��WYdZ2[2n
dZ2[200e6e	d�Z7zddl8Z8Wne�ydZ8Yn0dd�Z9dZ:dZ;dZ<dZ=dZ>dZ?dZ@d ZAdZBdZCdZDdZEdZFdZGZ:dZHdZIZJdZKdZLZMdZNZOeHd!eId"eKd"eLd#eNd$iZPdZGZ:dZQdZRdZSdZTdZUdZVdZWdZXdZYe6e0d%��r�e0jZZZe0j[Z[e0j\Z\e0j]Z]e0j^Z^gZ_iZ`iZaiZbiZciZdiZeiZfe	jgd&k�r$d'Zhnd(Zhd)d*d+ehd,dfehd-dfd*d.d/d/d/d.d.d.d0d1d0d2d3d2d4d5d4d6d7d6d8�Zid9d:�Zjgd;�Zkd<Zld=d>�Zmd?d@�ZndAdB�ZodCdD�ZpdaqdEdF�ZrdGdH�Zsd�dJdK�Ztd�dLdM�ZudNdO�ZvGdPdQ�dQ�ZwdRdS�ZxGdTdU�dU�ZyGdVdW�dW�ZzGdXdY�dY�Z{dZd[�Z|d\d]�Z}d�d^d_�Z~d�dadb�Zd�dcdd�Z�d�dedf�Z�dgdh�Z�didj�Z�dkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}�Z�d~e�dehd,f<d�e�dehd-f<d�d��Z�d�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�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�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d�d��Z�e��e��e0j��Gd�d��d�e�Z�dS)��N)�Callable�MutableMapping)�Path�)�	ImageMode�TiffTags�UnidentifiedImageError�__version__�_plugins�_raise_version_warning)�i32le)�deferred_error�isPath)��cCsX|dkrt�tSdddd�}||vr>tjdtdd�||Stdt�d	|�d
���dS)N�PILLOW_VERSIONrr�)�NORMAL�SEQUENCE�	CONTAINER�gImage categories are deprecated and will be removed in Pillow 10 (2023-01-02). Use is_animated instead.��
stacklevelzmodule 'z' has no attribute '�')rr	�warnings�warn�DeprecationWarning�AttributeError�__name__)�name�
categories�r!�-/usr/lib/python3.9/site-packages/PIL/Image.py�__getattr__?s�r#)rrc@seZdZdS)�DecompressionBombWarningN�r�
__module__�__qualname__r!r!r!r"r$`sr$c@seZdZdS)�DecompressionBombErrorNr%r!r!r!r"r(dsr(iUUU)�_imagingrzUThe _imaging extension was built for another version of Pillow or PIL:
Core version: z
Pillow version: z'The _imaging C module is not installed.zModule use of pythonz?The _imaging extension was built for another version of Python.zThe _imaging extensionZpypy_version_infocCs
t|d�S)N�im)�hasattr)�tr!r!r"�isImageType�sr-r�����?��?�@g@�DEFAULT_STRATEGY�little�<�>)�|b1N)�|u1N)r9rZi4Zf4)r9r)r9r.)�<u2N)�>u2N)�<i2N)�>i2N)�<u4N)�>u4N)�<i4N)�>i4N)�1�L�LA�I�F�P�RGB�RGBX�RGBA�CMYK�YCbCr�LAB�HSV�I;16�I;16B�I;16L�I;16S�I;16BSzI;16LS�I;32�I;32BzI;32L�I;32S�I;32BSzI;32LScCsLt|j\}}|dur.|jd|jdf|fS|jd|jd|f|fSdS�Nrr)�
_MODE_CONV�mode�size)r*�typ�extrar!r!r"�_conv_type_shape
sr^)rBrKrFrNrErCrMrGrHrJrIrL)rCrGrIrJrKrOrQrPcCst�|�jS�N)r�getmodeZbasemode�rZr!r!r"�getmodebases
rbcCst�|�jSr_)rr`Zbasetyperar!r!r"�getmodetype)s	rccCst�|�jSr_)rr`�bandsrar!r!r"�getmodebandnames5srecCstt�|�j�Sr_)�lenrr`rdrar!r!r"�getmodebandsDsrgcCs�tdkrdSzddlm}Wnty.Yn0zddlm}WntyRYn0zddlm}WntyvYn0zddlm}Wnty�Yn0zddlm}Wnty�Yn0dadS)Nr)�BmpImagePlugin)�GifImagePlugin)�JpegImagePlugin)�PpmImagePlugin)�PngImagePlugin)�_initialized�rh�ImportErrorrirjrkrl)rhrirjrkrlr!r!r"�preinitUs8rpcCs�tdkrdStD]`}z(t�d|�td|��t�t�g�Wqtyn}zt�d||�WYd}~qd}~00qtszt	r�dadSdS)NrrzImporting %szPIL.zImage: failed to import %s: %sr)
rmr
�logger�debug�
__import__�globals�localsro�OPEN�SAVE)Zplugin�er!r!r"�init�s&ryr!c
Cs�|durd}nt|t�s|f}zt|}Wnty<Yn0||g||�R�Sztt|d�}Wn6ty�}ztd|�d��|�WYd}~n
d}~00||g||�R�S)Nr!Z_decoderzdecoder � not available)�
isinstance�tuple�DECODERS�KeyError�getattr�corer�OSError)rZ�decoder_name�argsr]�decoderrxr!r!r"�_getdecoder�s
(r�c
Cs�|durd}nt|t�s|f}zt|}Wnty<Yn0||g||�R�Sztt|d�}Wn6ty�}ztd|�d��|�WYd}~n
d}~00||g||�R�S)Nr!Z_encoderzencoder rz)r{r|�ENCODERSr~rr�rr�)rZ�encoder_namer�r]�encoderrxr!r!r"�_getencoder�s
(r�cCst|t�r|St|�Sr_)r{�_E)�valuer!r!r"�coerce_e�sr�c@s$eZdZdd�Zdd�Zdd�ZdS)r�cCs
||_dSr_)�data)�selfr�r!r!r"�__init__�sz_E.__init__cCst|jdt|�jf�S)N�__add__�r�r�r��r��otherr!r!r"r��sz
_E.__add__cCst|jdt|�jf�S)N�__mul__r�r�r!r!r"r��sz
_E.__mul__N)rr&r'r�r�r�r!r!r!r"r��sr�cCs�dg}|t|��j}zZ|\}}}||urF|dkrFt|tj�rF|dfWS||url|dkrlt|tj�rld|fWSWnty�Yn0zN|\\}}}}}||ur�|dkr�t|tj�r�|dkr�t|tj�r�||fWSWnty�Yn0td��dS)N�stubr��r�r2zillegal expression)r�r�r{�numbers�Number�	TypeError�
ValueError)�exprr�r��a�b�c�drxr!r!r"�_getscaleoffset�s4

��
��
�r�c@s�eZdZdZdZdZdd�Zdd�Zedd��Z	ed	d
��Z
edd��Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd�dd�Zdd�Zdd�Zdd �Zd�d!d"�Zd#d$�Zd%d&�Zd�d(d)�Zd�d+d,�Zd�d-d.�Zd/d0�Zd1d2�Zddded3fd4d5�Zd�d8d9�Z d:d;�Z!e!Z"d�d<d=�Z#d>d?�Z$d@dA�Z%d�dBdC�Z&dDdE�Z'dFdG�Z(dHdI�Z)d�dJdK�Z*d�dLdM�Z+dNdO�Z,dPdQ�Z-dRdS�Z.dTdU�Z/dVdW�Z0dXdY�Z1dZd[�Z2d�d\d]�Z3d�d^d_�Z4d�d`da�Z5d�dcdd�Z6d�dedf�Z7dgdh�Z8d�dkdl�Z9d�dndo�Z:dpdq�Z;d�drds�Z<dtdu�Z=d�dvdw�Z>d�dxdy�Z?e@d6dddfdzd{�ZAd�d|d}�ZBd~d�ZCd�d�d��ZDd�d��ZEd�d��ZFd�d��ZGeHd�fd�d��ZIde@d7dfd�d��ZJe@d7fd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOdS)��ImageNTcCs:d|_d|_d|_d|_i|_d|_d|_d|_d|_dS)Nrn�rrr)	r*rZ�_size�palette�info�	_category�readonly�pyaccess�_exif�r�r!r!r"r�szImage.__init__cCs*|dkrtjdtdd�|jSt|��dS)N�categoryrrr)rrrr�r)r�rr!r!r"r#s�zImage.__getattr__cCs
|jdS�Nr�r[r�r!r!r"�width$szImage.widthcCs
|jdS�Nrr�r�r!r!r"�height(szImage.heightcCs|jSr_)r�r�r!r!r"r[,sz
Image.sizecCs`t�}||_|j|_|j|_|jdvrP|jr:|j��|_nddlm}|��|_|j	��|_	|S)N)rG�PAr��ImagePalette)
r�r*rZr[r�r��copyrnr�r�)r�r*�newr�r!r!r"�_new0s

z
Image._newcCs|Sr_r!r�r!r!r"�	__enter__@szImage.__enter__cGsBt|d�r8t|dd�r8t|d�r(|��|jr8|j��d|_dS)N�fp�
_exclusive_fpF�
_close__fp)r+rr�r��close)r�r�r!r!r"�__exit__Cs

zImage.__exit__c
Cs�z,t|d�r|��|jr$|j��d|_Wn0ty\}zt�d|�WYd}~n
d}~00t|dd�rpd|_t	t
d��|_dS)Nr�zError closing: %s�mapzOperation on closed image)r+r�r�r��	Exceptionrqrrrr�r
r�r*)r��msgr!r!r"r�Ks


"zImage.closecCs$|��|j��|_d|_d|_dSr�)�loadr*r�r�r�r�r!r!r"�_copyhszImage._copycCs|jr|��n|��dSr_)r�r�r�r�r!r!r"�_ensure_mutablens
zImage._ensure_mutablecKs~d}|rd|}|s.t�|�\}}t�|�n|}|�|�sD||}|��|rX|dkrf|j�|�n|j||fi|��|S)Nrn�.ZPPM)	�tempfileZmkstemp�osr��endswithr�r*Zsave_ppm�save)r��file�format�options�suffix�f�filenamer!r!r"�_dumpts
zImage._dumpcCsh|j|juof|j|jkof|j|jkof|j|jkof|j|jkof|j|jkof|��|��kof|��|��kSr_)�	__class__rZr[r�r�r��
getpalette�tobytesr�r!r!r"�__eq__�s
�
�
�
�
���zImage.__eq__cCs.d|jj|jj|j|jd|jdt|�fS)Nz(<%s.%s image mode=%s size=%dx%d at 0x%X>rr)r�r&rrZr[�idr�r!r!r"�__repr__�s�zImage.__repr__c
CsPt��}z|�|d�Wn.tyF}ztd�|�WYd}~n
d}~00|��S)NZPNGz!Could not save to PNG for display)�io�BytesIOr�r�r��getvalue)r�r�rxr!r!r"�
_repr_png_�s zImage._repr_png_csxddl}i�t|�\}}|�d<|�d<d�d<|jdkrL|�dd��d	<n|���d	<G�fd
d�d�}|�|�|�S)Nr�shape�typestrr�versionrB�rawrCr�cseZdZ�ZdS)z"Image.__array__.<locals>.ArrayDataN)rr&r'�__array_interface__r!�r�r!r"�	ArrayData�sr�)Znumpyr^rZr�Zarray)r�ZdtypeZnpr�r�r�r!r�r"�	__array__�s
zImage.__array__cCs|j|j|j|��|��gSr_)r�rZr[r�r�r�r!r!r"�__getstate__�szImage.__getstate__cCsbt�|�g|_|\}}}}}||_||_||_t�||�|_|dvrT|rT|�	|�|�
|�dS)N�rCrDrGr�)r�r�Ztiler�rZr�r�r�r*�
putpalette�	frombytes)r��stater�rZr[r�r�r!r!r"�__setstate__�s

zImage.__setstate__r�c	Gs�t|�dkr"t|dt�r"|d}|dkr8|dkr8|j}|��t|j||�}|�|j�td|j	dd�}g}|�
|�\}}}|�|�|rrq�qr|dkr�td|�d���d	�
|�S)
Nrrr�r!ir.zencoder error z in tobytes�)rfr{r|rZr�r��setimager*�maxr[�encode�append�RuntimeError�join)	r�r�r�rx�bufsizer��l�sr�r!r!r"r��s 
z
Image.tobytes�imagecCsz|��|jdkrtd��|�d�}d�d|�d|jd�d��d	�d|�d
|jd�d��d	�d|�d
��d	�|dg�S)NrBznot a bitmapZxbmr�z#define z_width r�
�asciiz_height rzstatic char z_bits[] = {
s};)r�rZr�r�r�r[r�)r�rr�r!r!r"�tobitmap�s

��zImage.tobitmapcGs�t|�dkr"t|dt�r"|d}|dkr8|dkr8|j}t|j||�}|�|j�|�|�}|ddkrptd��|ddkr�td��dS)Nrrr�r!znot enough image datazcannot decode image data)	rfr{r|rZr�r�r*�decoder�)r�r�r�r�r�r�r!r!r"r�s	
zImage.frombytescCsJ|jr�|jr�|jjr�|j��\}}|dkrXd}|ddd�|jd<tdd�t|�D��}|j�||�}d|j_d|j_d|jvr�|d	vr�t	|jdt
�r�|j�|jdd�n|j�|jd�d|j_
n"d|j_
|j��d|d�|j_|j�rFt�r8t�r8|j�r|jSd
dlm}|�||j�|_|j�r8|jS|j�|j�SdS)NrJrHrr.�transparencycss"|]\}}|ddkr|VqdS)r.rNr!)�.0�indexr�r!r!r"�	<genexpr>CszImage.load.<locals>.<genexpr>r)rJrDr�r)�PyAccess)r*r�Zdirty�getdatar��bytes�	enumerater��rawmoder{�int�putpalettealpha�putpalettealphasrZr��cffi�USE_CFFI_ACCESSr�rnr�r�r�Zpixel_access)r�rZ�arrZpalette_lengthr�r!r!r"r�.s6�
z
Image.loadcCsdSr_r!r�r!r!r"�verify^s	zImage.verify�c
s�|��|j�d�du}|sJ|jdkrJ|jr6|jj}nd}|dkrJ|rJd}|r\||jkrd�sd|��S��r
|dvrztd��|j�|��}|�	|�}|�r|jj
dk�r|jd�dd	��|d
kr̈����n0t|�dkr�t���fdd�t
d
t���D����|jd<|S|dk�r*|jdk�r*|�|�Sd}	d}
|�r�|jdv�rt|dk�rt|�	|j�||jd��}|jd=|S|jdv�r�|dv�r�|jd}t|t��r�t�d�d}
n�t��	t�|jd��}
|jdk�rF|
�|j�t|t��rFd}z|
j�||�}WnDt�yD}z*t|�dk�r&d}n
t|�|�WYd}~n
d}~00|du�rVd}	n6|
�d|�|dv�rx|
�|�}
n
|
�d�}
|
�d�}	nb|jdk�r�|dv�r�|jd}d}
t|t��r�|j�|�n$t|t��r�|j�|d
�ntd��|dk�r�|t k�r�|j�|�}|�	|�}ddl!m"}|�"d|j�#d��|_|
�rJ|jd=|	du�r�z|j�|	|�|jd<Wn&t$�y�|jd=t�d�Yn0|S|du�r�t%}z|j�||�}Wnht�y z"|j�t&|j��}|�||�}Wn0t'�y}ztd�|�WYd}~n
d}~00Yn0|�	|�}|dk�rf|t k�rfddl!m"}|�"dt(t
d��d�|_|
�rt|jd=|	du�r�|jdk�r�z|j�|	|�|jd<WnFt�y�}z,|jd=t|�dk�r�t�d�WYd}~n
d}~00n
|	|jd<|S)Nr�rGrHrJ)rCrHzillegal conversionrcSsP|d|d|d|d|d|d|dd}tdtdt|���S)Nrrrrr1�)r��minr�)�m�vr!r!r"�convert_transparency�s<z+Image.convert.<locals>.convert_transparencyrCcs*g|]"}��|d|dd����qS)r.r!�r��i�r�matrixr�r!r"�
<listcomp>�s��z!Image.convert.<locals>.<listcomp>rF)rBrCrErH)rCrHrGzVPalette images with Transparency expressed in bytes should be converted to RGBA imagesT�rrz2Couldn't allocate a palette color for transparencyz$cannot allocate more than 256 colorsr��rDr�rJz.Transparency for P mode should be bytes or intrr�z0Couldn't allocate palette entry for transparencyr))r�r��getrZr�r�r�r*Zconvert_matrixr�rdrfr|�range�quantizeZconvert_transparentr{r�rrr�r�r�r��getcolor�str�putpixel�convert�getpixelrr�r�ADAPTIVErnr�r�r��FLOYDSTEINBERGrbr~�list)r�rZr�ditherr��colorsZhas_transparencyr*r�ZtrnsZdelete_trns�new_imr,Ztrns_im�errrxr�r!rr"ris�*


��

�
� 






&

�
z
Image.convertrrc
Cs�|��|dur"t}|jdkr"t}|jdkr@|ttfvr@td��|r�|��|jdkr^td��|jdkrz|jdkrztd��|j�d||j�}|�|�}|j	�
�|_	|S|�|j�|||��}dd	lm
}|j��}	|�
|	|j�|	|	��|_	|S)
NrJzoFast Octree (method == 2) and libimagequant (method == 3) are the only valid methods for quantizing RGBA imagesrGzbad mode for palette imagerHrCz7only RGB or L mode images can be quantized to a paletterr�)r��	MEDIANCUTrZ�
FASTOCTREE�
LIBIMAGEQUANTr�r*rr�r�r�rrnr�Zgetpalettemoder�)
r�r�methodZkmeansr�rr*r r�rZr!r!r"r7s4
�
�

zImage.quantizecCs|��|�|j���Sr_)r�r�r*r�r�r!r!r"r�zsz
Image.copycCs,|dur|��S|��|�|�|j|��Sr_)r�r�r��_cropr*)r��boxr!r!r"�crop�s
z
Image.cropcCsJtttt|��\}}}}t||�t||�f}t|�|�||||f�Sr_)r�r��round�abs�_decompression_bomb_checkr()r�r*r'�x0�y0�x1�y1Zabsolute_valuesr!r!r"r&�szImage._cropcCsdSr_r!)r�rZr[r!r!r"�draft�szImage.draftcCs*|dur|}|��|�|j�||d��Sr�)r�r�r*�expand)r�ZxmarginZymarginr!r!r"�_expand�sz
Image._expandc
Cs�ddlm}|��t|t�r$|�}t|d�s6td��t||j�}|jj	dksR|rd|�
|�|j��Sg}t|jj	�D]"}|�
|�
|�|j�|����qtt|j|�S)Nr)�ImageFilter�filterz>filter argument should be ImageFilter.Filter instance or class)rnr3r�r{rr+r�ZMultibandFilterr*rdr�r4rr��getband�mergerZ)r�r4r3Z	multiband�imsr�r!r!r"r4�s

� zImage.filtercCst�|j�jSr_)rr`rZrdr�r!r!r"�getbands�szImage.getbandscCs|��|j��Sr_)r�r*�getbboxr�r!r!r"r9�sz
Image.getbboxcCsh|��|jdvr\|j��}g}td�D]}||r(|�|||f�q(t|�|krXdS|S|j�|�S)N)rBrCrGr)r�rZr*�	histogramrr�rf�	getcolors)r�Z	maxcolors�h�outr
r!r!r"r;�s

zImage.getcolorscCs"|��|dur|j�|�S|jSr_)r�r*r5)r��bandr!r!r"r�sz
Image.getdatacCsR|��|jjdkrHg}t|jj�D]}|�|j�|����q$t|�S|j��Sr�)r�r*rdrr�r5�
getextremar|)r��extremar
r!r!r"r?0s
zImage.getextremacsLdd����fdd��tdur,t�d�iSt�|�}�|j��|�iSdS)NcSs|�d�dS)N�}r)�split)�tagr!r!r"�get_nameCszImage._getxmp.<locals>.get_namecs��fdd�|j��D�}t|�}|r~|D]R}�|j�}�|�}||vrrt||t�sb||g||<||�|�q(|||<q(n|r�|jr�|j|d<n|jS|S)Ncsi|]\}}�|�|�qSr!r!�r��kr
)rDr!r"�
<dictcomp>Gr�z4Image._getxmp.<locals>.get_value.<locals>.<dictcomp>�text)Zattrib�itemsrrCr{r�rH)�elementr�Zchildren�childrZchild_value�rD�	get_valuer!r"rMFs 
z Image._getxmp.<locals>.get_valuez5XMP data cannot be read without defusedxml dependency)�ElementTreerrZ
fromstringrC)r��xmp_tags�rootr!rLr"�_getxmpBs

z
Image._getxmpcCs�|jdurt�|_|j�d�}|dur�d|jvrVt�d�|jd�d�dd���}n*t|d�r�|j	j
|j_|j�|j
|j	j�|dur�|j�|�d|jvr�|j�d�}|r�t�d	|�}|r�t|d
�|jd<|jS)NZexifzRaw profile type exifrnr�r�tag_v2izXML:com.adobe.xmpztiff:Orientation="([0-9])"r)r��Exifr�rr��fromhexr�rBr+rR�_endian�endian�load_from_fpr�Z_offsetr��re�searchr�)r�Z	exif_inforO�matchr!r!r"�getexifas(

�

z
Image.getexifcCs|��|jjSr_)r�r*Zptrr�r!r!r"�getim{szImage.getimcCs2|��zt|j���WSty,YdS0dSr_)r�rr*r�r�r�r!r!r"r��s
zImage.getpalettecCs&|��|jr|j�|�S|j�|�Sr_)r�r�rr*)r��xyr!r!r"r�s
zImage.getpixelcCs&|��|j��\}}t|�t|�fSr_)r�r*�
getprojectionr)r��x�yr!r!r"r^�szImage.getprojectioncCsT|��|r$|��|j�d|j�S|jdvrJ|dur>|��}|j�|�S|j��S�Nr�)rErF)r�r*r:rZr?�r��maskr@r!r!r"r:�s
zImage.histogramcCsT|��|r$|��|j�d|j�S|jdvrJ|dur>|��}|j�|�S|j��Sra)r�r*�entropyrZr?rbr!r!r"rd�s
z
Image.entropycCs t|�r|dur|}d}|dur$d}t|�dkr|t|�r@|j}nt|�rP|j}ntd��||d|d|d|df7}t|t�r�ddlm}|�||j	�}nBt|�r�|�
�|j	|j	kr�|j	dks�|j	dvr�|�|j	�}|j}|�
�|�r|�
�|j�|||j�n|j�||�dS)	Nr�rz,cannot determine region size; use 4-item boxrr��
ImageColorrH)rJ�RGBa)r-rfr[r�r{rrnrfrrZr�rr*r��paste)r�r*r'rcr[rfr!r!r"rh�s4($
zImage.paster�cCs�t|ttf�std��t|ttf�s,td��t|�dvr@td��t|�dksTtd��t|�dkrhtd��t|�dkr~||j}|d	|jkr�|}n
|�|�}||d|j|d
|j	f}|d	|jkr�|}n
|�|�}t
||�}|�||�dS)NzSource must be a tuplezDestination must be a tuple)rr.zSource must be a 2 or 4-tuplerzDestination must be a 2-tuplerzSource must be non-negativer�r)r{rr|r�rfrr[r(r�r��alpha_compositerh)r�r*�dest�sourceZoverlayr'Z
background�resultr!r!r"ri6s*

 

zImage.alpha_compositecs�|��t�t�r��|�St��rl|jdvrNt��\}}|�|j�	||��S�fdd�t
d�D�|jj�|jdkr~td��|�|j��|��S)N)rErOrFcsg|]}�|��qSr!r!r��lutr!r"r�r�zImage.point.<locals>.<listcomp>rrFz+point operation not supported for this mode)
r�r{�ImagePointHandler�point�callablerZr�r�r*Zpoint_transformrrdr�)r�rnrZ�scale�offsetr!rmr"rpds



zImage.pointc
Csb|��|jdvr�z~t|j�d}z|j�|�WnJttfy|}z.|j�|�}|jdvrbt|�||_WYd}~n
d}~00d|_|jj|_Wn.t	y�}ztd�|�WYd}~n
d}~00|jdvr�d}nd}t
|��r|jdvr�td��|��|jdk�rN|�d	�}n>z|j�||�Wn&ttf�yHt
d	|j|�}Yn0dS|j�|j|�dS)
Nr�A�illegal image mode)rDr�rr)rBrCrBrC)r�rZrbr*Zsetmoderr�rr�r~r-r�Zfillbandr�r[Zputband)r��alpharZrxr*r>r!r!r"�putalpha�s<

 


zImage.putalphar2r�cCs|��|j�|||�dSr_)r�r*�putdata)r�r�rrrsr!r!r"rx�s
z
Image.putdatarHcCs�ddlm}|jdvrtd��t||j�r<|�|j|j�}nt|t�sNt|�}|�||�}d|jvrhdnd|_||_d|j_|�	�dS)	Nrr�r�rurtr�rGrH)
rnr�rZr�r{r�r�r�r�r�)r�r�r�r�r�r!r!r"r��s

zImage.putpalettecCsj|jr|��|��|jr*|j�||�S|jdkr\t|ttf�r\t	|�dvr\|j
�||�}|j�||�S)NrG�rr.)
r�r�r�r�rrZr{rr|rfr�rr*)r�r]r�r!r!r"r�s��
�zImage.putpixelcCs"ddlm}|jdvrtd��|durd|jdkrN|��|j�d�dd�}ntdd	�td�D��}d
}dgd}t	|�D],\}}|||d
|d
d
�7}|||<qzt|�}|�
�}	d|	_|jd|d
d�|	_|	j�d|	j�
��|	�d�}	|dt|�d}
|	�|
�|jd|d�|	_|	S)Nrr�)rCrGrurGrHicss|]}|dVqdS)rNr!rr!r!r"r�6r�z&Image.remap_palette.<locals>.<genexpr>r�rrr)r�zRGB;LrC�)rnr�rZr�r�r*r��	bytearrayrr�r�r�r�r�rrf)r�Zdest_mapZsource_paletter�Z
palette_bytesZ
new_positionsr
ZoldPositionZmapping_paletteZm_imZnew_palette_bytesr!r!r"�
remap_palette!s.





zImage.remap_palettec		Cs�t|d}|d|d|d}|d|d|d}||}||}tdt|d|��tdt|d|��t|jdt�|d|��t|jdt�|d|��fS)Nr1rrrr)�_filters_supportr�r�rr[�math�ceil)	r�r[�resampler'Zfilter_supportZscale_xZscale_yZ	support_xZ	support_yr!r!r"�
_get_safe_boxgs�zImage._get_safe_boxc
Csn|dur d|jv}|rtnt}n||ttttttfvr�d|�d�}dd�tdftdftdftd	ftd
ftdffD�}t|dd
�|dd��d|d��|dur�|dkr�td��t	|�}|dur�d|j
}nt	|�}|j
|kr�|d|j
kr�|��S|jdv�rt}|jdv�rN|tk�rN|�ddd�|j�}|�
|||�}|�|j�S|��|du�rX|tk�rXt|d|d|d|��p�d}	t|d|d|d|��p�d}
|	dk�s�|
dk�rX|�|||�}|	|
f}t|j��r�|j||d�}ntj|||d�}|d|d|	|d|d|
|d|d|	|d|d|
f}|�|j�
|||��S)N�;�Unknown resampling filter (�).cSs g|]}d�|d|d��qS�z{} ({})rr�r��r�r4r!r!r"r�s�z Image.resize.<locals>.<listcomp>�
Image.NEARESTz
Image.LANCZOS�Image.BILINEAR�
Image.BICUBIC�	Image.BOX�
Image.HAMMING� Use �, ���� or r2z#reducing_gap must be 1.0 or greaterr��rBrG�rDrJ�Largrrrr)r')rZ�NEAREST�BICUBIC�BILINEAR�LANCZOS�BOX�HAMMINGr�r�r|r[r�r�resizer�r�r�rq�reducer�r�r*)
r�r[r�r'�reducing_gapZtype_special�message�filtersr*Zfactor_xZfactor_yZ
reduce_box�factorr!r!r"r�xs^#
��$�&&�zImage.resizecCs�t|ttf�s||f}|dur*d|j}nt|�}|dkrP|d|jkrP|��S|jdvr�|�ddd�|j�}|�||�}|�|j�S|��|�	|j
�||��S)Nr�rr�r�rg)r{rr|r[r�rZrr�r�r�r*)r�r�r'r*r!r!r"r��s

zImage.reducecCs(|d}|s`|s`|dkr |��S|dkr2|�t�S|dvr`|sJ|j|jkr`|�|dkrZtnt�S|j\}}|durxd}	n|}	|dur�|d|df}
n|}
t�	|�}t
t�|�d�t
t�|�d�d	t
t�|�d�t
t�|�d�d	g}d
d�}||
d|	d|
d|	d|�\|d
<|d<|d
|
d7<|d|
d7<|�rg}
g}d|df||fd|ffD].\}}||||�\}}|
�
|�|�
|��qrt�t|
��t�t|
��}t�t|��t�t|��}|||d||d|�\|d
<|d<||}}|j||ft|||d�S)Ng�v@r�)�Zir�r�r3�r�c	Ss8|\}}}}}}||||||||||fSr_r!)	r_r`rr�r�r�r�rxr�r!r!r"�	transformQszImage.rotate.<locals>.transformrrr/)�	fillcolor)r��	transpose�
ROTATE_180r�r��	ROTATE_90�
ROTATE_270r[r~Zradiansr)ZcosZsinr�rr��floorrr��AFFINE)r�Zangler�r1�center�	translater��wr<Z
post_transZrotn_centerrr��xxZyyr_r`�nwZnhr!r!r"�rotate�sR"

�	"� 
,
zImage.rotatec

Ks�d}d}t|t�r t|�}d}n<t|�r2|}d}n*|tjkr\ztjj}WntyZYn0|szt|d�rzt|j	�rz|j	}|�
�|�dd�}||_d|_
t�tj�|�d��}|�s|tvr�t�zt|}Wn6t�y
}ztd|���|�WYd}~n
d}~00|��tv�r t�|�r4t|��}	nt|��}	|�rn|�d	d��rbt�|d
�}nt�|d�}z|	|||�W|�r�|��n|�r�|��0dS)NrnFTr�save_allr!rzunknown file extension: r�zr+bzw+b)r{rrr�sys�stdout�bufferrr+rr��popZencoderinfoZ
encoderconfigrpr��path�splitext�lower�	EXTENSIONryr~r��upperrw�SAVE_ALLr�builtins�openr�)
r�r�r��paramsr�Zopen_fpr��extrxZsave_handlerr!r!r"r�nsV

&
�z
Image.savecCs|dkrt�dSr�)�EOFError)r��framer!r!r"�seek�sz
Image.seekcCs&|durt�dt�t|||d�dS)Nz}The command parameter is deprecated and will be removed in Pillow 9 (2022-01-02). Use a subclass of ImageShow.Viewer instead.)�title�command)rrr�_show)r�r�r�r!r!r"�show�s�z
Image.showcCs:|��|jjdkr |��g}nt|j|j���}t|�Sr�)r�r*rdr�r�r�rBr|)r�r7r!r!r"rB�s
zImage.splitc
Csn|��t|t�r\z|���|�}Wn6tyZ}ztd|�d��|�WYd}~n
d}~00|�|j�|��S)NzThe image has no channel "�")	r�r{rr8r�r�r�r*r5)r�Zchannelrxr!r!r"�
getchannel
	s
(zImage.getchannelcCsdSr�r!r�r!r!r"�tell"	s	z
Image.tellr3csttj|�\���|jkr(�|jkr(dSdd�}|j|j����krd|����fdd�d��n|����fdd�d����f}d}|dur�|�d|d||d|f�}|dur�|d}|j|kr�|j||||d	�}|j|_||_	|jj
|_
d|_d|_dS)
NcSs ttt�|�t�|�|d�d�S)N��keyr)r�rr~r�r)Znumberr�r!r!r"�round_aspectX	sz%Image.thumbnail.<locals>.round_aspectcst�|��Sr_�r*��n)�aspectr`r!r"�<lambda>^	r�z!Image.thumbnail.<locals>.<lambda>r�cs|dkrdSt��|�Sr�r�r�)r�r_r!r"r�a	r�rr)r'r�)
r�r~r�r�r�r0r[r�r*r�rZr�r�)r�r[r�r�r�r'�resr*r!)r�r_r`r"�	thumbnail-	s.'� 

zImage.thumbnailc

Cs|jdvr@|tkr@|�ddd�|j��||||||��|j�St|t�r\|j||||d�St|d�rr|��\}}|dur�td��t	|j||�}|jdkr�|j
r�|j
��|_
|j��|_|t
kr�|D] \}}	|�||t|	||du�q�n|�d||||||du�|S)	Nr�r�rg)r��fillr�zmissing method datarGr�)rZr�rr�r{�ImageTransformHandlerr+r�r�r�r�r�r��MESH�_Image__transformer�QUAD)
r�r[r%r�r�r�r�r*r'Zquadr!r!r"r�w	s00���

�zImage.transformc
CsD|d|d}|d|d}|tkr8|dd�}�n8|tkrz|\}	}
}}||	|}
||
|}t}|
d|	d||
f}n�|tkr�|dd�}n�|tk�rh|dd�}|dd�}|dd�}|dd�}|\}	}
d|}d|}|	|d|	||d|	||d|d|d|	|||
|d|
||d|
||d|d|d|
||f}ntd	��|tttfv�r|tt	t
fv�r�td
t	dt
di|d
|�d�}nd|�d�}dd�tdftdftdffD�}t|dd�|dd��d|d��|��|��|j
dv�r(t}|j�||j||||�dS)Nrrrrr0�r.r2zunknown transformation methodr�r�zImage.LANCZOS/Image.ANTIALIASz (z) cannot be used.r�r�cSs g|]}d�|d|d��qSr�r�r�r!r!r"r�	s�z'Image.__transformer.<locals>.<listcomp>r�r�r�r�r�r�r�r�)r��EXTENT�PERSPECTIVEr�r�r�r�r�r�r�r�r�r�rZr*Z
transform2)r�r'r�r%r�r�r�r�r<r,r-r.r/ZxsZysr��swZse�neZAsZAtr�r�r!r!r"Z
__transformer�	sn
""���
���$�zImage.__transformercCs|��|�|j�|��Sr_)r�r�r*r�)r�r%r!r!r"r�
szImage.transposecCs|��|�|j�|��Sr_)r�r�r*�
effect_spread)r�Zdistancer!r!r"r�
szImage.effect_spreadcCs$ddlm}|jstd��|�|�S�Nr)�ImageQtzQt bindings are not installed)rnr��qt_is_installedro�toqimage�r�r�r!r!r"r�'
szImage.toqimagecCs$ddlm}|jstd��|�|�Sr�)rnr�r�ro�	toqpixmapr�r!r!r"r�/
szImage.toqpixmap)NN)N)r�)r�)r�)rNrNr)N)N)r)N)NN)NN)NN)r�r�)N)r2r�)rH)N)NNN)N)N)NN)Prr&r'r�Zformat_descriptionZ!_close_exclusive_fp_after_loadingr�r#�propertyr�r�r[r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�WEBrrr��__copy__r(r&r0r2r4r8r9r;r�r?rQr[r\r�rr^r:rdrhrirprwrxr�rr|r�r�r�r�r�r�r�r�rBr�r�r�r�r�r�r�r�r�r�r!r!r!r"r��s�







+

0O
C








P
.
.6

"&
F
b
$�
s
X
K�
PI	r�c@seZdZdS)roNr%r!r!r!r"ro<
sroc@seZdZdS)r�Nr%r!r!r!r"r�E
sr�cCst��t�d��S)NrC)r�r�r�Zwedger!r!r!r"�_wedgeU
sr�cCsNt|ttf�std��t|�dkr*td��|ddksB|ddkrJtd��dS)NzSize must be a tuplerz Size must be a tuple of length 2rrzWidth and height must be >= 0T)r{rr|r�rfr�r!r!r"�_check_size[
sr�cCs�t|�|dur$t��t�||��St|t�rFddlm}|�	||�}t�}|dkr�t|t
tf�r�t|�dvr�ddlm
}|�
�|_|j�	|�}|�t�|||��S)NrrerGryr�)r�r�r�r�r�r{rrnrfrrr|rfr�r�r�)rZr[Zcolorrfr*r�r!r!r"r�m
s
"
r�r�cGsZt|�t|�dkr*t|dt�r*|d}|dkr>|dkr>|}t||�}|�|||�|S)Nrrr�r!)r�rfr{r|r�r��rZr[r�r�r�r*r!r!r"r��
s
r�c	Gs�t|�t|�dkr*t|dt�r*|d}|dkr||dkrD|ddf}|dtvr|t|d�}|�t�|||d|��}d|_	|St
|||||�S)Nrrr�r!r)r�rfr{r|�	_MAPMODESr�r�r�Z
map_bufferr�r�r�r!r!r"�
frombuffer�
s#

r�c
CsX|j}|d}t|�}|�dd�}|dur�zd|dd�|df}Wn.tyt}ztd�|�WYd}~n
d}~00zt|\}}Wq�ty�}ztd|�|�WYd}~q�d}~00n|}|dvr�d}	n|d	kr�d
}	nd}	||	kr�td|�d
|	�d���|dk�rdn|d|df}
|du�rDt|d��r<|��}n|�	�}t
||
|d|dd�S)Nr��stridesrrr�zCannot handle this data typez$Cannot handle this data type: %s, %s)rBrCrErGrFrHrr.zToo many dimensions: z > r�rrr�r�)r�rfrr~r��_fromarray_typemapr�r+r�Ztostringr�)�objrZrr��ndimr�Ztypekeyrxr�Zndmaxr[r!r!r"�	fromarray�
s6 &

r�cCs$ddlm}|jstd��|�|�Sr�)rnr�r�ro�
fromqimage�r*r�r!r!r"r�+sr�cCs$ddlm}|jstd��|�|�Sr�)rnr�r�ro�fromqpixmapr�r!r!r"r�4sr�)rBz1;8)rCrC)rEzI;8)rErO)rErP)rErR)rErS)rErT)rErU)rErV)rErW)rFzF;32F)rFzF;32BF)rFzF;64F)rFzF;64BF)rDrD)rHrH)rJrJ))rr8)rr9)rz|i1)rr:)rr;)rr<)rr=)rr>)rr?)rr@)rrA)rz<f4)rz>f4)rz<f8)rz>f8))rrrr9))rrrr9))rrr.r9)rErEr)rFrFcCshtdurdS|d|d}|dtkrBtd|�ddt�d���|tkrdt�d|�dt�d�t�dS)NrrrzImage size (z pixels) exceeds limit of z0 pixels, could be decompression bomb DOS attack.)�MAX_IMAGE_PIXELSr(rrr$)r[Zpixelsr!r!r"r+Ys��r+�rc	sl|dkrtdt|�����nt|tj�r0td��|dur>t}nt|ttf�sTtd��d�d}t|t	�rtt
|���}nt|�r�|}|r�t
�|d�}d�z|�d	�Wn*ttjfy�t�|���}d�Yn0|�d
�}t�g���fdd�}|||||�}|du�rt��r|||||�}|�r.�|_|S��r<|���D]}t�|��q@td
|�r`|n|��dS)Nr�z	bad mode zKStringIO cannot be used to open an image. Binary data must be used instead.zformats must be a list or tupleFrn�rbTr�c	s�|D]�}|��}|tvrt�zft|\}}|p8||�}t|�ttfvrV��|�n,|r�|�d�|||�}t|j	�|WSWqt
ttt
jfy�YqYqty��r�|���Yq0qdSr�)r�rvry�typerr�r�r�r+r[�SyntaxError�
IndexErrorr��struct�error�
BaseExceptionr�)	r�r��prefix�formatsr
�factory�acceptrlr*�Zaccept_warningsZexclusive_fpr!r"�
_open_core�s*



zopen.<locals>._open_corezcannot identify image file %r)r��reprr{r��StringIO�IDrr|r�rr�resolverr�r�r�r�UnsupportedOperationr��readrpryr�r�rrr)r�rZrr�r�rr*r�r!rr"r�msT�



�r�cCs&|��|��|�t�|j|j��Sr_)r�r�r�rir*)�im1�im2r!r!r"ri�s
ricCs(|��|��|�t�|j|j|��Sr_)r�r�r��blendr*)rrrvr!r!r"r
�sr
cCs|��}|�|d|�|Sr_)r�rh)Zimage1Zimage2rcr�r!r!r"�	compositesrcGs|�|d�Sr�)rp)r�r�r!r!r"�evals
rcCs�t|�t|�ksd|vr td��|dd�D]2}|jt|�krFtd��|j|djkr,td��q,|D]}|��qd|d�tj	|gdd�|D��R��S)	N�*zwrong number of bandsrz
mode mismatchrz
size mismatchcSsg|]
}|j�qSr!)r*)r�r�r!r!r"r;r�zmerge.<locals>.<listcomp>)
rgrfr�rZrcr[r�r�r�r6)rZrdr>r!r!r"r6&s

r6cCs"|��}t�|�||ft|<dSr_)r�rr�rv)r�rrr!r!r"�
register_openBs

rcCs|t|��<dSr_)�MIMEr�)r�Zmimetyper!r!r"�
register_mimeQsrcCs|t|��<dSr_)rwr��r�Zdriverr!r!r"�
register_save\srcCs|t|��<dSr_)r�r�rr!r!r"�register_save_allgs	rcCs|��t|��<dSr_)r�r�r�)r��	extensionr!r!r"�register_extensionssrcCs|D]}t||�qdSr_)r)r��
extensionsrr!r!r"�register_extensions~srcCsts
t�tSr_)r�ryr!r!r!r"�registered_extensions�srcCs|t|<dSr_)r})rr�r!r!r"�register_decoder�srcCs|t|<dSr_)r�)rr�r!r!r"�register_encoder�srcKsd|d<t|fi|��dS)NT�_internal_pillow)�_showxv)r�r�r!r!r"r��sr�cKs@ddlm}d|vr|d=nt�dt�|j||fi|��dS)Nr)�	ImageShowrz[_showxv is deprecated and will be removed in Pillow 9 (2022-01-02). Use Image.show instead.)rnr rrrr�)r�r�r�r r!r!r"r�s�rcCst��t�|||��Sr_)r�r�r��effect_mandelbrot)r[ZextentZqualityr!r!r"r!�s
r!cCst��t�||��Sr_)r�r�r��effect_noise)r[Zsigmar!r!r"r"�sr"cCst��t�|��Sr_)r�r�r��linear_gradientrar!r!r"r#�sr#cCst��t�|��Sr_)r�r�r��radial_gradientrar!r!r"r$�sr$cCs�|durtj}dtjfdtjfdtjffD]�\}}||vr<q*||��}d}dD](\}}|�|�rP|}|dt|��}qPzt	|�|}Wn&t
y�t�|�d��Yq*Yn0z||�Wq*t
y�}z t�|�d|���WYd}~q*d}~00q*dS)NZPILLOW_ALIGNMENTZPILLOW_BLOCK_SIZEZPILLOW_BLOCKS_MAXr))rFi)r	iz is not intz: )
r��environr�Z
set_alignmentZset_block_sizeZset_blocks_maxr�r�rfr�r�rr)�envZvar_name�setter�varZunitsZpostfix�mulrxr!r!r"�_apply_env_variables�s.�

r*c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	d%dd�Z
dd�Zd&dd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�ZdS)'rSNcCsi|_i|_d|_d|_dSr_)�_data�_ifds�_info�_loaded_exifr�r!r!r"r� 
sz
Exif.__init__cCs<z$t|�dkr"t|t�r"|dWSWnty6Yn0|SrX)rfr{r|r�)r�r�r!r!r"�_fixup&
szExif._fixupcs�fdd�|��D�S)Ncsi|]\}}|��|��qSr!)r/rEr�r!r"rG1
r�z$Exif._fixup_dict.<locals>.<dictcomp>)rI)r�Zsrc_dictr!r�r"�_fixup_dict.
szExif._fixup_dictc	CsZz|j�|�Wnttfy&Yn00ddlm}|�|j�}|�|j�|�	|�SdS)Nr��TiffImagePlugin)
r�r�r~r�rnr2�ImageFileDirectory_v2�headr�r0)r�rsr2r�r!r!r"�
_get_ifd_dict3
szExif._get_ifd_dictcCs|jdkrdSdSdS)Nr6sII*sMM*)rVr�r!r!r"�	_get_headA
s
zExif._get_headcCs�||jkrdS||_|j��|j��|s6d|_dS|�d�rL|dd�}t�|�|_|j�	d�|_
ddlm}|�
|j
�|_|jj|_|j�|jj�|j�|j�dS)N�Exifr0r�rr1)r.r+�clearr,r-�
startswithr�r�r�r
r4rnr2r3rUrVr��nextr�)r�r�r2r!r!r"r�G
s"




z	Exif.loadcCs�d|_|j��|j��ddlm}||_|dur@|��|_n|j�	d�|_|�
|j�|_|jdurp|jj
|_|dur�|jj}|j�|�|j�|j�dS)Nrr1r�)r.r+r8r,rnr2r�r6r4r
r3r-rVrUr:r�r�)r�r�rsr2r!r!r"rWc
s



zExif.load_from_fpcCsJt|�}d|vr,|�|d�}|r,|�|�d|vrF|�|d�|d<|S)N�i��%�)�dictr5�update)r�Zmerged_dict�ifdr!r!r"�_get_merged_dictx
s
zExif._get_merged_dictr�cCs�ddlm}|��}|j|d�}|��D]`\}}|dvr�t|t�s�|�|�}|dkr�d|vr�t|dt�s�|��}|�d�|d<|||<q(d||�	|�S)Nrr1)Zifh)r;i%�r<r;��r7)
rnr2r6r3rIr{r=�get_ifdr�r�)r�rsr2r4r?rCr�r!r!r"r��
s 
���
zExif.tobytesc	Cs8||jv�r*|dvr4||vr0|�||�|j|<�n�|dv�r*d|jvrR|�d�|jd|}|dk�rddlm}|dd�dk�r�t|d�}||d�}i}td	t�d
|dd��d	�D]�}t�d||d
d|dd
d��\}}	}
}z|j	|	\}}
Wnt
�yYq�Yn0|
|}|dk�rZt�d|�\}||d
||d
�}n|d|�}t|�|k�r�t�
d|�dt|��d|���q�|�s�q�|
|�|d�||<q�t|�|��|j|<�q*|�d�dk�r*i}td	t�d|dd��d	�D�]}t�d||d
d|dd
d��\}}	}
}|dk�r�t�d|�\}|j�|�d|j�d�i}|j�d�t|j�d
��|d<|j�d�|j�d�|d<|j�d
�|j�d�}|j	tjd}
|
|�|d�|d<|j�d�|j�d�|d<dt|�|��i}�q�||j|<n|�|�|j|<|j�|i�S)N)r;r<)rA�|�r;rCr)r3r�sFUJIFILMrz<Hrz<HHL4s�r.z<Lz9Possibly corrupt EXIF MakerNote data.  Expecting to read z bytes but only got z. Skipping tag FiZNintendoz>Hz>HHL4siz>LZModelIDZ	TimeStampZInternalSerialNumberZParallaxZCategory)r,r5rBr2r3rrr��unpackZ_load_dispatchr~rfrrr=r0rr�r�r
rZFLOAT)r�rCZtag_datar3Z
ifd_offsetZifd_dataZ	makernoter
Zifd_tagr\�countr�Z	unit_sizeZhandlerr[rsZ
camerainfoZparallaxr!r!r"rB�
s�




" ���

�����
$ �
���zExif.get_ifdcCs,|jdur"|j��D]}||qt|j�Sr_)r-�keysrr+�r�rCr!r!r"�__str__�
s

zExif.__str__cCs(t|j�}|jdur |�|j�t|�Sr_)�setr+r-r>rf�r�rGr!r!r"�__len__�
s

zExif.__len__cCsF|jdur<||jvr<||jvr<|�|j|�|j|<|j|=|j|Sr_)r-r+r/rHr!r!r"�__getitem__szExif.__getitem__cCs||jvp|jduo||jvSr_)r+r-rHr!r!r"�__contains__	szExif.__contains__cCs*|jdur||jvr|j|=||j|<dSr_�r-r+)r�rCr�r!r!r"�__setitem__szExif.__setitem__cCs*|jdur||jvr|j|=n|j|=dSr_rOrHr!r!r"�__delitem__s
zExif.__delitem__cCs(t|j�}|jdur |�|j�t|�Sr_)rJr+r-r>�iterrKr!r!r"�__iter__s

z
Exif.__iter__)N)r�)rr&r'rVr�r/r0r5r6r�rWr@r�rBrIrLrMrNrPrQrSr!r!r!r"rS
s$

\rS)r!)r!)r)r�)r�)N)r�N)N)N)N)��atexitr�r�Zloggingr~r�r�rXr�r�r�r�collections.abcrr�pathlibrZdefusedxml.ElementTreerNrornrrrr	r
rZ_binaryrZ_utilr
r�version_infor#rrrrZ	getLoggerrrq�RuntimeWarningr$r�r(r�r�r)r�rr
rr9rr+rrr-ZNONEZFLIP_LEFT_RIGHTZFLIP_TOP_BOTTOMr�r�r�Z	TRANSPOSEZ
TRANSVERSEr�r�r�r�r�r�r�r�ZLINEARr�r�ZCUBICr�Z	ANTIALIASr}ZORDEREDZ	RASTERIZErr�rr"ZMAXCOVERAGEr#r$r4ZFILTEREDZHUFFMAN_ONLYZRLEZFIXEDrrvrrwr�r�r}r��	byteorderZ_ENDIANrYr^ZMODESr�rbrcrergrmrpryr�r�r�r�r�r�ror�r�r�r�r�r�r�r�r�r�r+r�rir
rrr6rrrrrrrrrr�rr!r"r#r$r*�register�clear_cacherSr!r!r!r"�<module>s�
 



����



�
.

P	
'
&
5
<	�
r



	
 

Youez - 2016 - github.com/yon3zu
LinuXploit