Files
intellecton/venv/lib/python3.12/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-312.pyc
T

497 lines
100 KiB
Plaintext
Raw Normal View History

Ë
ß¼jQOãó¼ddlmZddlZddlZddlZddlZddlZddlZddlZddl m
Z
m Z ddl m
Z
ddlmZmZddlmZmZmZddlmZmZmZmZmZmZdd lmZdd
lmZ dd lm!Z!dd l"m#Z#m$Z$dd
lm%Z%dZ&e&rddl m'Z'ddlm(Z(ddl)m*Z*m+Z+m,Z,ejZe.«Z/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?d Z@d!ZAd"ZBd#ZCd$ZDd%ZEd&ZFd'ZGd(ZHd)ZId*ZJd+ZKd,ZLd-ZMd.ZNd/ZOd0ZPd1ZQd2ZRd3ZSd4ZTd5ZUd6ZVd7ZWd8ZXd9ZYd:ZZd;Z[d<Z\d=Z]idd>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“d]d^“Z^e^j¿«Dcic]\}}||Œ
c}}Z`ie3dd_dd_d`fda“e4dd_dd_d`fda“e3dd_d?d_d`fdb“e4dd_d?d_d`fdb“e3dd_dd_d`fdc“e4dd_dd_d`fdc“e3dd_d?d_d`fdd“e4dd_d?d_d`fdd“e3dd_dded`fdf“e4dd_dded`fdf“e3dd_d?ded`fdg“e4dd_d?ded`fdg“e3dd_dded`fdh“e4dd_dded`fdh“e3dd_d?ded`fdi“e4dd_d?ded`fdi“e3dd_ddjd`fdk“ie4dd_ddjd`fdk“e3dd_d?djd`fdl“e4dd_d?djd`fdl“e3dd_ddjd`fdm“e4dd_ddjd`fdm“e3dd_d?djd`fdn“e4dd_d?djd`fdn“e3dd_ddod`fdp“e4dd_ddod`fdp“e3dd_d?dod`fdq“e4dd_d?dod`fdq“e3dd_ddod`fdr“e4dd_ddod`fdr“e3ddeddod`fdr“e4ddeddod`fdr“e3dd_d?dod`fds“e4dd_d?dod`fds“¥ie3dd_ddtd`fdu“e3dd_ddvd`fdw“e3dd_ddvd`fdw“e4dd_ddvd`fdx“e3dd_d?dvd`fdy“e3ddeddvd`fdz“e4ddeddvd`fd{“e3dd|dd}d`fd~“e4dd|dd}d`fde3dd_dd}d`fd€“e3ddedd}d`fde4ddedd}d`fd‚“e3dd|dd}d`fd~“e4dd|dd}d`fde3dd_ddƒdefd„“e4dd_ddƒdefd„“e3d?d_dd…d`fd†“¥ie4d?d_dd…d`fd†“e3d?d_d?d…d`fd‡“e4d?d_d?d…d`fd‡“e3d?d_ddˆd`fd‰“e4d?d_ddˆd`fd‰“e3d?d_ddˆdŠfd‹“e4d?d_ddˆdŠfd‹“e3d?d_ddŒdfdŽ“e4d?d_ddŒdfdŽ“e3d?d_dddfd‘“e4d?d_dddfd‘“e3d?d_ddˆd_fd’“e4d?d_ddˆd_fd’“e3d?d_ddŒd“fd”“e4d?d_ddŒd“fd”“e3d?d_ddd•fd–“e4d?d_ddd•fd–“¥ie3d?d_ddˆdefd‰“e4d?d_ddˆdefd‰“e3d?d_ddŒd—fd˜“e4d?d_ddŒd—fd˜“e3d?d_ddd™fdš“e4d?d_ddd™fdš“e3d?d_ddˆdfd‰“e4d?d_ddˆdfd‰“e3d?d_ddœd`fde4d?d_ddœd`fdž“e3d?d_ddŸd`fd “e4d?d_ddŸd`fd¡“e3d?d_ddŸdŠfd¢“e4d?d_ddŸdŠfd£“e3d?d_ddŸd_fd¤“e4d?d_ddŸd_fd¥“e3d?d_ddŸdefd “¥ie4d?d_ddŸdefd¡“e3dAd_dd_d`fd¦“e4dAd_dd_d`fd¦“e3dAd_d?d_d`fd§“e4dAd_d?d_d`fd§“e3dAd_dded`fd¨“e4dAd_dded`fd¨“e3dAd_d?ded`fd©“e4dAd_d?ded`fd©“e3dAd_ddjd`fdª“e4dAd_ddjd`fdª“e3dAd_d?djd`fd«“e4dAd_d?djd`fd«“e3dAd_ddod`fd¬“e4dAd_ddod`fd¬“e3dAd_ddƒdŠfd­“e4dAd_ddƒdŠfd­“¥ie3dAd_ddƒdefd®“e4dAd_ddƒdefd®“e3dAd_d?dod`fd¯“e4dAd_d?dod`fd¯“e3dEd_ddˆd`fd°“e4dEd_ddˆd`fd°“e3dEd_ddŒdŠfd±“e4dEd_ddŒdŠfd±“e3dEd_dddfd²“e4dEd_dddfd²“e3dEd_ddŸd`fd³“e4dEd_ddŸd`fd´“e3dGd_ddod`fdr“e4dGd_ddod`fdr“e3dGd_dd…d`fd‹“e4dGd_dd…d`fd‹“e3dKd_dd…d`fdµ“¥e4dKd_dd…d`fdµi¥Zaebd¶„eaD««Zcgd·¢Zddäd¸„Ze dåd¹„Zf dæd»„ZgiZhiZidçd¼„ZjGd½„dºe«Zke
d¾elemgefZndèd¿„ZodédÀ„ZpdêdÁ„Zqe&re erefZsne ZsGd„d¾es«Ztehet_heiet_ie%j¾«D]:\ZuZvevjïdÃdÄ«ZvexetdÅeveheud«exetdÆeveieu«Œ<[h[i[u[vGdÇ„dÈet«ZyeyZzGdÉ„dÊej0«Z{idËdËe3ddd_dfdÌdÌe3dddodfdÍdÍe3dddƒd?fdÎdÎe3dAddodfdÏdÏe3dAddƒd?fdÐdÑe3dd?d}dfdÒdÒe3dddvdfdÓdÓe3dddvdfdÔdÕe3ddAd}dfdÖdÖe3d?dd…dfd×d×e3d?ddˆdfdØdØe3d?ddˆd?fdÙdÙe3dEddˆdfdÚdÚe3dGdd…dfdÛdÛe3dKdd…dfdÜdÜe4dddvdfZ|dëdÝ„Z}GdÞ„dße«Zdëdà„Z€eje{je{ee«eje{je}«eje{je€«ej
e{jdádâg«ej e{jdã«ycc}}w)ìé)Ú annotationsN)ÚCallableÚMutableMapping)ÚFraction)ÚNumberÚRational)ÚIOÚAnyÚcasté)ÚExifTagsÚImageÚ ImageFileÚImageOpsÚ ImagePaletteÚTiffTags)Úi16be)Úi32be)Úo8)Ú
DeferredErrorÚis_path©ÚTYPESF)ÚIterator)ÚNoReturn)ÚBufferÚ IntegralLikeÚStrOrBytesPathésIIsMMéÿéiiiii
iéiiiiiii(i-i1i2i;i=i@iBiCéDiEiJiRiSi[iii˜‚i»ƒiI†is‡ii‡ii–Æi—ÆÚrawéÚ
tiff_ccittéÚgroup3éÚgroup4éÚtiff_lzwéÚ tiff_jpegéÚjpegéÚtiff_adobe_deflateiÚ tiff_raw_16iÚpackbitsi)€Útiff_thunderscani²€Ú tiff_deflateit‡Ú tiff_sgilogiu‡Ú
tiff_sgilog24imˆÚlzmaiPÃÚzstdiQÃÚwebp©r ©)Ú1z1;I)r>z1;IR)r>r>)r>z1;R)r%)ÚLzL;2I)r?zL;2IR)r?zL;2)r?zL;2R)r))r?zL;4I)r?zL;4IR)r?zL;4)r?zL;4R)r1)r?zL;I)r?zL;IR)r?r?)r?zL;R)é )úI;16zI;12)é)rArA)úI;16BrC)rAzI;16R)ÚIzI;16S)rDzI;16BS)r')é )ÚF;32F)rFzF;32BF)rDzI;32N)rDúI;32S)rDzI;32BS)r1r1)ÚLArI)r1r1r1)ÚRGBrJ)rJzRGB;R)r1r1r1r1)ÚRGBArK©r)rJÚRGBX)r1r1r1r1r1©rr)rJÚRGBXX)r1r1r1r1r1r1)rrr)rJÚRGBXXX)rKÚRGBa)r r)rKÚRGBaX)r rr)rKÚRGBaXX)r%r)rKÚRGBAX)r%rr)rKÚRGBAXX))rBrBrB)rJzRGB;16L)rJzRGB;16B)rBrBrBrB)rKzRGBA;16L)rKzRGBA;16B)rJzRGBX;16L)rJzRGBX;16B)rKzRGBa;16L)rKzRGBa;16B)ÚPzP;1)rVzP;1R)rVzP;2)rVzP;2R)rVzP;4)rVzP;4R)rVrV)rVÚPX)ÚPArX)rVzP;R)ÚCMYKrY)rYÚCMYKX)rYÚCMYKXX)rYzCMYK;16L)rYzCMYK;16B)ÚLABr\c#ó8K|]}t|d«Œy­w)r)N)Úlen)Ú.0Úkey_tps úV/home/antigravity/intellecton/venv/lib/python3.12/site-packages/PIL/TiffImagePlugin.pyú <genexpr>rbsèø€ÒA¨Vœ#˜f Q™iŸ.ÑAùs)sMM*sII*sMM*sII*sMM+sII+có>|jtt««S©N)Ú
startswithÚtupleÚPREFIXES©Úprefixs raÚ_acceptrj"sØ × Ñ œU¤8›_Ó cóxt|«dkD}t|rd|z n|«j|«}|r|dddS|S)Nr éÿÿÿÿ)ÚabsÚ IFDRationalÚlimit_rational)ÚvalÚmax_valÚinvÚn_ds raÚ_limit_rationalru&sCô ˆc(Q‰,€CÜ
¡a˜#g¨#Ó
.×
=¸
F€CÙˆ3‰tˆt‰9Ð$ Ð$rkrocó
t|«}|j|jf}td|D««|krt |t |««}t
d|D««}t|«|kDrt |d|dz |«}|S)Nc3ó2K|]}t|«Œy­wrd©Úfloat©r_Úis rarbz)_limit_signed_rational.<locals>.<genexpr>4sèø€Ò
!˜Œ5
!ùóc3ó2K|]}t|«Œy­wrdrxrzs rarbz)_limit_signed_rational.<locals>.<genexpr>7sèø€Ò, 1”e˜A—hÑ,ùr|rr )rÚ numeratorÚ denominatorÚminrurnrfÚmax)rqrrÚmin_valÚfracrtÚ n_d_floats raÚ_limit_signed_rationalr….s~ô C=€DØ-1¯^©^¸T×=MÑ=MÐ-M€Cä
Ñ
!˜
! ˜c¤3 w£<ÓäÑÔ,€IÜ
ˆ9ƒ~˜Òܘi¨™l¨Y°q©\Ñ9¸7Óà €Jrkcó dˆfd }|S)Ncó6t|j«|ŽSrd)ÚgetattrÚ_val)ÚselfÚargsÚops €raÚdelegatez_delegate.<locals>.delegateFsø€ð&Œwt—yy % ,rk)rorztuple[float, ...]Úreturnzbool | float | Fractionr=)rs` raÚ _delegaterEs'ø€ðð-Ø"3ð-à õ
€OrkcóFeZdZdZ dZ d( d)dZed*d«Zed+d«Zd,dZ d-dZ
d+dZ d.d „Z d/d
Z
d0d Z ed «Zed
«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Z ed«Z!ed«Z"ed«Z#ed «Z$ed!«Z%ed"«Z&ed#«Z'ed$«Z(ed%«Z)e*e+d&«r ed&«Z,y'y')1rozÀImplements a rational class where 0/0 is a legal value to match
the in the wild use of exif rationals.
e.g., DigitalZoomRatio - 0.00/0.00 indicates that no digital zoom was used
)Ú
_numeratorÚ _denominatorr‰có|t|t«r4|j|_|j|_|j |_yt|t«r#|j|_|j|_n*trtt|«|_n||_||_|dk(rtd«|_y|dk(rt|«|_yt|«|k(rtt|«|«|_yt||z «|_y)
:param value: either an integer numerator, a
float/rational/other number, or an IFDRational
:param denominator: Optional integer denominator
NrÚnanr )
Ú
isinstanceror~rrrr‰rÚ
TYPE_CHECKINGr rryÚint)Úvaluers raÚ__init__zIFDRational.__init__\ñ
Ü eœ[Ô #Ÿo™oˆDŒOØ %× 1Ñ 1ˆDÔ ØŸ
ˆDŒIØ ä eœXÔ #Ÿo™oˆDŒOØ %× 1Ñ 1ˆ åÜ"&¤|°UÓ";à"'Ø +ˆ à ˜!Ò Ü˜e› ˆD
˜
Ü  ˆD
Z˜
Ü ¤ U£¨[Ó9ˆD  ¨Ñ!4Ó5ˆDIrkcó|jSrd)r©s rar~zIFDRational.numerator~s àÐrkcó|jSrd)rrs rarzIFDRational.denominatorsà× Ñ Ð rkcóî|jdk(r|j|jfSt|jt«sJ|jj |«}|j|jfS)z…
:param max_denominator: Integer, the maximum denominator value
:returns: Tuple of (numerator, denominator)
r)rr~r•r‰rÚlimit_denominator)Úmax_denominatorÚfs rarpzIFDRational.limit_rational†sbð × Ñ ˜ Ø—>> 4×#3Ñ#3Ð ˜$Ÿ)™)¤XÔ I‰I× Ó 8ˆØ{‰{˜AŸM™MÐ)rkcó>tt|j««Srd)Ústrryr‰rs raÚ__repr__zIFDRational.__repr__”sÜ”5˜ŸÓ$rkcó6|jj«Srd)r‰Ú__hash__rs razIFDRational.__hash__—sØy‰y×#rkcó’|j}t|t«r |j}t|t«r t|«}||k(Srd)r‰r•rory)Úotherrqs raÚ__eq__zIFDRational.__eq__šs;Øi‰iˆÜ eœ[Ô —J‘JˆEÜ eœUÔ ˜“*ˆe‰|ÐrkcóH|j|j|jgSrd)r‰rrrs raÚ __getstate__zIFDRational.__getstate__¢sØ ˜4Ÿ?™?¨D×,=Ñ,=Ð>rkcóòtj|d«|\}}}t|ttf«sJ||_t rtt|«|_ n||_ t|t«sJ||_ y©Nr) ror™r•ryrr‰rr rrr—r)Ústater‰rrs raÚ __setstate__zIFDRational.__setstate__¥sjÜ×јT %Ø).шj˜˜¬Ð 1ÔˆŒ Ý Ü"¤<°Ó<ˆD(ˆDŒOܘ,¬Ô(ˆÕrkÚ__add__Ú__radd__Ú__sub__Ú__rsub__Ú__mul__Ú__rmul__Ú __truediv__Ú __rtruediv__Ú __floordiv__Ú
__rfloordiv__Ú__mod__Ú__rmod__Ú__pow__Ú__rpow__Ú__pos__Ú__neg__Ú__abs__Ú __trunc__Ú__lt__Ú__gt__Ú__le__Ú__ge__Ú__bool__Ú__ceil__Ú __floor__Ú __round__Ú__int__Nr<)r˜úfloat | Fraction | IFDRationalrr—ÚNone)r©r—)r—ztuple[IntegralLike, int]©)ÚobjectrŽÚbool)ú%list[float | Fraction | IntegralLike])r­)-Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú __slots__r™Úpropertyr~rrprr¿Úhasattrrr=rkraroroNñð ð
7€IðIJð  6ØBEð 
ó 6ðDòóððòð ó
 ñ˜ Ó"€GÙ˜Ó$€HÙ˜ Ó"€GÙ˜Ó$€HÙ˜ Ó"€GÙ˜Ó$€HÙ˜MÓ*€KÙ˜^Ó,€LÙ˜^Ó,€LÙ˜oÓ.€MÙ˜ Ó"€GÙ˜Ó$€HÙ˜ Ó"€GÙ˜Ó$€HÙ˜ Ó"€GÙ˜ Ó"€GÙ˜ Ó"€GÙ˜&€IÙ

€FÙ

€FÙ

€FÙ

€FÙ˜Ó$€HÙ˜Ó$€HÙ˜+Ó&€IÙ˜&€Iáˆx˜Ô˜&‰ð$rkÚImageFileDirectory_v2códˆˆfd }|S)Ncó¤ddlm}|jjd«r"|jddj dd«|<|ft
<|S)Nr rÚload_r+Ú )rrreÚreplaceÚ_load_dispatch)ÚfuncrÚidxÚsizes €€raÚ decoratorz#_register_loader.<locals>.decoratorÜsLø€Ý =‰=× # GÔ Ÿ q *×2°3¸Ó<ˆE#‰JØ" D˜Øˆ rk)Ú _LoaderFuncrŽr=)s`` raÚ_register_loaderråÛsù€öð Ðrkcódˆfd }|S)Ncó|t<|Srd)Ú_write_dispatch)s €raz#_register_writer.<locals>.decoratorèsø€Ø˜Ñ؈ rk)úCallable[..., Any]rŽr=)s` raÚ_register_writerrêçsø€õð Ðrkcó¨ddlm}|\}Š}|||<tjd«Š d dˆˆfd
}|ft|<ˆfdt
|<y)Nr rú=cóH|jt|«z|«Srd)Ú_unpackr^)ÚdataÚ
legacy_apiÚfmtrâs €€raÚ
basic_handlerz&_register_basic.<locals>.basic_handlerös)ø€ð|‰|œs 4›y¨DÑ1°#°Ð7¸Ó>rkcó<djˆˆfd|D««S)Nrkc3óBK|]}j|«Œy­wrd)Ú_pack)r_r˜s €€rarbz4_register_basic.<locals>.<lambda>.<locals>.<genexpr>ýsøèø€Ò<¨E˜C ×<ùsƒ©Újoin)Úvaluesrñs` €raú<lambda>z!_register_basic.<locals>.<lambda>üsù€Ø Ô<°VÔrk©T)Úbytesrðútuple[Any, ...])rrÚstructÚcalcsizerß)Ú idx_fmt_namerÚnameròs @@raÚ_register_basicrïswù€Ýà!N€CˆˆdØ€Eˆ# ?‰?˜Q˜s˜e˜ %€DðFJð?Ø+0ð?Ø>Bðö
 
Ð-„Nó„Orkcó¤eZdZUdZiZded<iZded< d= d>dZed«Z ed „«Z
ed?d
«Z e jd@d «Z dAd Z
dBd
ZdCdZdDdZdEdZdFdZdGdZdHdZdIdZdJdZdKdZdLdZeeeej:ddfej<ddfej>ddfej@ddfejBd d!fejDd"d#fejFd$d%fejHddfejJd&d'fg ««e&d(d(«dMdNd)„«Z'e(d(«dOd*„«Z)e&d+d(«dMdPd,„«Z*e(d+«dQd-„«Z+e&d.d/« dM dRd0„«Z,e(d.«dSd1„«Z-e&d2d(«dMdNd3„«Z.e(d2«dTd4„«Z/e&d5d/« dM dRd6„«Z0e(d5«dSd7„«Z1dUd8„Z2dVd9„Z3dWd:„Z4dXdYd;„Z5dZd<„Z6y)[rØaThis class represents a TIFF tag directory. To speed things up, we
don't decode tags unless they're asked for.
Exposes a dictionary interface of the tags in the directory::
ifd = ImageFileDirectory_v2()
ifd[key] = 'Some Data'
ifd.tagtype[key] = TiffTags.ASCII
print(ifd[key])
'Some Data'
Individual values are returned as the strings or numbers, sequences are
returned as tuples of the values.
The tiff metadata type of each item is stored in a dictionary of
tag types in
:attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types
are read from a tiff file, guessed from the type added, or added
manually.
Data Structures:
* ``self.tagtype = {}``
* Key: numerical TIFF tag number
* Value: integer corresponding to the data type from
:py:data:`.TiffTags.TYPES`
.. versionadded:: 3.0.0
'Internal' data structures:
* ``self._tags_v2 = {}``
* Key: numerical TIFF tag number
* Value: decoded data, as tuple for multiple values
* ``self._tagdata = {}``
* Key: numerical TIFF tag number
* Value: undecoded byte string from file
* ``self._tags_v1 = {}``
* Key: numerical TIFF tag number
* Value: decoded data in the v1 format
Tags will be found in the private attributes ``self._tagdata``, and in
``self._tags_v2`` once decoded.
``self.legacy_api`` is a value for internal use, and shouldn't be changed
from outside code. In cooperation with
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, if ``legacy_api``
is true, then decoded tags will be populated into both ``_tags_v1`` and
``_tags_v2``. ``_tags_v2`` will be used if this IFD is used in the TIFF
save routine. Tags should be read from ``_tags_v1`` if
``legacy_api == true``.
z"dict[int, tuple[int, _LoaderFunc]]rßzdict[int, Callable[..., Any]]rèNcóØt|«sdt|«d}t|«||n|dd|_|jtk(rd|_n(|jt k(rd|_n
d}t|«|ddk(|_||_i|_ |j«|jr|jd |d
d«d n|jd |d
d«d |_ d|_
y)a—Initialize an ImageFileDirectory.
To construct an ImageFileDirectory from a real file, pass the 8-byte
magic header to the constructor. To only set the endianness, pass it
as the 'prefix' keyword argument.
:param ifh: One of the accepted magic headers (cf. PREFIXES); also sets
endianness.
:param prefix: Override the endianness of the file.
znot a TIFF file (header z not valid)Nr%ú<znot a TIFF IFDé+ÚQr1rr?r)F)rjÚreprÚ SyntaxErrorÚ_prefixÚMMÚ_endianÚIIÚ_bigtiffÚgroupÚtagtypeÚresetrîÚnextÚ _legacy_api)ÚifhrirÚmsgs rar™zImageFileDirectory_v2.__init__Gô sŒ|Ø,¬T°#«Y¨K°{ÐCˆ˜ "Ø!'Ð!3v¸¸R¸a¸ˆŒ Ø <‰<œ2Ò ØˆD
\‰\œRÒ
؈D"ˆ˜ ˜A™ "™ ˆŒ
؈Œ
Ø')ˆŒ Ø
Œ ð}Š}ð
L‰L˜˜c ! "˜ &  ˜c 3 q r +¨AÑ
Œ ð
!ˆÕrkcó|jSrd)r
rs razImageFileDirectory_v2.<lambda>nó
 4§<¡<€rkcó|jSrd)Ú_offsetrs razImageFileDirectory_v2.<lambda>orrkcó|jSrd)rrs raz ImageFileDirectory_v2.legacy_apiqsà×ÑÐrkcód}t|«)Nz"Not allowing setting of legacy api)Ú Exception)r˜rs raz ImageFileDirectory_v2.legacy_apiusà2ˆÜ˜‹nÐrkcóXi|_i|_i|_i|_d|_d|_yrd)Ú_tags_v1Ú_tags_v2Ú_tagdatarÚ_nextrrs rarzImageFileDirectory_v2.resetzs,Ø(*ˆŒ
Ø(*ˆŒ
Ø*,ˆŒ
؈Œ ؈Œ
Ø#'ˆ rkcó*tt|««Srd)Údictrs raÚ__str__zImageFileDirectory_v2.__str__sÜ”4˜“:‹Ðrkcó¦|j«Dcic]0\}}tj||j«j|Œ2c}}Scc}}w)z
:returns: dict of name|key: value
Returns the complete tag dictionary, with named tags where possible.
)ÚitemsrÚlookuprr)Úcoder˜s raÚnamedzImageFileDirectory_v2.named…sHð $Ÿz™z›|÷
á
O‰O˜D $§*¡*Ó -× 2°EÑ 
ð
ùó
s”5A
cójtt|j«t|j«z«Srd)r^Úsetr rrs raÚ__len__zImageFileDirectory_v2.__len__ó$Ü”3t—}‘}Ó¨D¯M©MÓ(:Ñ;rkcó||jvrG|j|}|j|}|j|\}}||||j«||<|j|}|jrt |t tf«s|f}|Srd)rr rr•rf)ÚtagrïÚtyprâÚhandlerrqs raÚ __getitem__z!ImageFileDirectory_v2.__getitem__“sØ d—m‘mÑ —=‘= Ñ%ˆDØ—,‘,˜sÑ#ˆCØ ×Ñ4‰MˆD  d¨D¯O©OÓ<ˆD‰IØm‰m˜ ˆØ ?Š?¤:¨c´E¼5°>Ô#BØ&ˆˆ
rkcó>||jvxs||jvSrd)rr ©r/s raÚ __contains__z"ImageFileDirectory_v2.__contains__žóØd—m; s¨d¯m©mÐ';Ð;rkcó>|j|||j«yrd)Ú_setitemrð)r/r˜s raÚ __setitem__z!ImageFileDirectory_v2.__setitem__¡sØ
c˜5 $§/¡/Õ2rkc óŠ tttf}tj||j
«Š t
||«r|gn|}||jvr jr j|j|<n÷tj|j|<td|D««r]|D]9}t
|t«sJ|dksŒtj|j|<ntj|j|<nktd|D««rÊd}d}d} |D]A}t
|t«sJ|rd|cxkrdksnd}|rd|cxkrdksnd}| sŒ:|dksŒ@d} ŒC|rtj|j|<ní|rtj |j|<nÍ| rtj"|j|<n­tj$|j|<ntd „|D««rtj&|j|<n_td
|D««rtj(|j|<n/td |D««rtj*|j|<|j|tjk(r2|Dcgc]&}t
|t«r|j-d d
«n|Œ(}}nJ|j|tjk(r*|Dcgc]}t
|t«r t/|«n|Œ!}}|j|tj"k(xrt
|t0«}
|
st3ˆ fd|D««}|r |j4n |j6} |
sˆ‰ j8dk(s<|j|tj*k(s j8€Mt;|«dk(r?|s=|r2|j|tjtjfvr|f} |\| |<y|| |<ycc}wcc}w#t<$r0t?j@d|dt;|«d«|d| |<YywxYw)Nc3ó<K|]}t|t«Œy­wrd)r•ro©r_Úvs rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>¯sèø€ÒB°a”z !¤[×Bùórc3ó<K|]}t|t«Œy­wrd)r•r—r<s rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>·óèø€Òœ A¤s×<ùr>TrFi€ÿÿic3ó<K|]}t|t«Œy­wrd)r•ryr<s rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ëóèø€Ò>°!œ A¤u×>ùr>c3ó<K|]}t|t«Œy­wrd)r•r<s rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ír@r>c3ó<K|]}t|t«Œy­wrd)r•r<s rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>ÏrBr>ÚasciirÞc3ódK|]'}t|t«rj|«n|Œ)y­wrd)r•Úcvt_enum)r_r˜Úinfos €rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Üs0øèø€òàô)3°5¼#Ô(>
˜eÔ$ÀEÓùsƒ-0r zMetadata Warning, tag z had too many entries: z , expected 1)!rrr'rr•rÚtypeÚ UNDEFINEDÚallroÚSIGNED_RATIONALÚRATIONALr—ÚSHORTÚ SIGNED_SHORTÚLONGÚ SIGNED_LONGÚDOUBLEÚASCIIÚBYTEÚencoderyr#rfrrÚlengthr^Ú
ValueErrorÚwarningsÚwarn)
r/r˜Ú basetypesrør=ÚshortÚ signed_shortÚlongÚis_ifdÚdestrHs
@rar8zImageFileDirectory_v2._setitem¤ø€ÜœU¤CÐ(ˆ ä˜s D§J¡JÓ/ˆÜ& u¨iÔ8%¸eˆà d—l yŠyØ$(§I¡I ˜SÓ!ä$,×$6Ñ$6 ˜SÑÑB¸6Ô>˜Ü)¨!¬[Ô˜q5Ü08×0HÑ0H˜DŸL™L¨Ñ -5×,=Ñ,=˜Ÿ  Ñ<°VÔ EØ#')˜Ü)¨!¬SÔ ¨!¨q¬.°5¬.Ø$)˜¸AÔ1EÀÔ1EØ+0˜ A¨£EØ#(™DðÜ,4¯N©N˜Ÿ  SÒ%Ü,4×,AÑ,A˜Ÿ  SÒÜ,4¯M©M˜Ÿ  SÒ)ä,4×,@Ñ,@˜Ÿ  Ñ>°vÔ>Ü(0¯©D—LL ÒÑ<°VÔ<Ü(0¯©D—LL ÒÑ>°vÔ>Ü(0¯
©
D—LL Ñ <‰<˜Ñ ¤× 2Ñ 2Ò  öàô1;¸1¼cÔ0B˜ )ÔшFñð\‰\˜#Ñ
¤(×"3Ñ"3Ò
3ØEKÖ¤*¨Q´Ô"4”e˜A”h¸Lˆ˜cÑ"¤h§m¡mÑ
À6Ì4Ó8PˆÙÜóàóˆFñ
!+ˆt}Š}°·
±
ˆñØ
[‰[˜
Ø|‰|˜CÑ ¤H§M¡MÒ Ð¨F« °qÒ(8Áñ˜dŸl™l¨3Ñ××4ñðð
% cðˆDŠIùò[ùò
Møô:ò

Ø,¨S¨EÐ1Hܘ6“{m ð# 1™IS“ ð

&úsÊ+O?Ë'$PÏ1P Ð 6QÑQcó¬|jj|d«|jj|d«|jj|d«yrd)rÚpoprr r4s raÚ __delitem__z!ImageFileDirectory_v2.__delitem__s>Ø
×ј#˜
×ј#˜
×ј#˜$rkcójtt|j«t|j«z«Srd)Úiterr+r rrs raÚ__iter__zImageFileDirectory_v2.__iter__ó$Ü”C˜Ÿ
Ó¨T¯]©]Ó);Ñ<rkcóHtj|j|z|«Srd)Úunpackr )s razImageFileDirectory_v2._unpack
sÜ}‰}˜TŸ\™\¨CÑÓ6rkcóHtj|j|zg|¢­ŽSrd)Úpackr )s razImageFileDirectory_v2._pack
sÜ{‰{˜4Ÿ<™<¨#ÑÒ7rkÚHr[r?r]Úbz signed byteÚhz signed shortÚlz signed longr ryÚdoublerÚlong8r có|Srdr=©s raÚ load_bytezImageFileDirectory_v2.load_byte!óàˆ rkcótt|t«r t|«}t|t«r t|f«}|Srd)r•ror—©s raÚ
write_bytez ImageFileDirectory_v2.write_byte%s/ä dœKÔ t“9ˆDÜ dœCÔ Ü˜$˜“>ˆˆ rkr%cóR|jd«r|dd}|jdd«S)rmzlatin-1rÞ)ÚendswithÚdecoderss raÚ load_stringz!ImageFileDirectory_v2.load_string-s*à =‰=˜Ô ؘ˜9ˆDØ{‰{˜9 0rkcó†t|t«r t|«}t|t«s|j dd«}|dzS)NrErz)r•r—rU©r˜s raÚ write_stringz"ImageFileDirectory_v2.write_string3s;ô eœSÔ ˜“JˆEܘ%¤Ô—LL ¨)Ó4ˆu‰}Ðrkr+r1c
ó¨|jt|«dzd|«}dˆfd Štˆfdt|ddd|ddd«D««S)Nr)r?có(r||fSt||«Srd©ro©Úarls €raÚcombinez4ImageFileDirectory_v2.load_rational.<locals>.combineBóø€Ù'Aq >¬[¸¸AÓ->Ð >rkc3ó6K|]\}}||«Œy­wrdr=©r_ÚnumÚdenomr†s €rarbz6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>Eóøèø€ÒV©Z¨S°%‘W˜S %×Vùóƒr%r ©r…r—rlr—ztuple[int, int] | IFDRational©r^rfÚzip©Úvalsr†s ` @raÚ
load_rationalz#ImageFileDirectory_v2.load_rational<óWù€ð|‰|œs 4›y¨A™~Ð.¨aÐ0°$ÓõÓV¼3¸tÁCÀaÀC¹yÈ$ÈqÈtÐRSÈtÉ*Ó;UÔVrkcó8djˆfd|D««S)Nrkc3óXK|]!}jdgt|d«¢­ŽŒ#y­w)Ú2LlÿÿN)ru©r_s €rarbz7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>Is-øèø€ò
ØDHˆJˆDJ‰J ?œo¨d°IÓ 
ùsƒ'*©s` raÚwrite_rationalz$ImageFileDirectory_v2.write_rationalGs!ø€àx‰xó
ØLRô
ó
ð
rkr/có|Srdr=rss raÚload_undefinedz$ImageFileDirectory_v2.load_undefinedMrurkcó’t|t«r t|«}t|t«rt|«j dd«}|S)NrE)r•ror—rUrs raÚwrite_undefinedz%ImageFileDirectory_v2.write_undefinedQs:ä eœ[Ô ˜“JˆEÜ eœSÔ ˜“J×% g¨yÓ9ˆE؈ rké
c
ó¨|jt|«dzd|«}dˆfd Štˆfdt|ddd|ddd«D««S)Nr)rncó(r||fSt||«Srdr„s €rar†z;ImageFileDirectory_v2.load_signed_rational.<locals>.combine_r‡rkc3ó6K|]\}}||«Œy­wrdr=r‰s €rarbz=ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>brr%r rrs ` @raÚload_signed_rationalz*ImageFileDirectory_v2.load_signed_rationalYr”rkcó8djˆfd|D««S)Nrkc 3óZK|]"}jdgt|dd«¢­ŽŒ$y­w)Ú2liÿÿÿi€N)r…r˜s €rarbz>ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>fs3øèø€ò
àð
ˆDJ‰J 4°T¸9ÀhÓ 
ùsƒ(+r™s` raÚwrite_signed_rationalz+ImageFileDirectory_v2.write_signed_rationalds!ø€àx‰xó
àô
ó
ð
rkcó~|j|«}t|«|k7rd|dt|«d}t|«|S)Nz&Corrupt EXIF data. Expecting to read ú bytes but only got z. )Úreadr^ÚOSError)ÚfprâÚretrs raÚ _ensure_readz"ImageFileDirectory_v2._ensure_readksNØg‰gd‹mˆÜ ˆs8 ð%Ø%) FÐ*>¼sÀ3»x¸ðLð
ô˜#“,Р؈
rkc
ó~|j«|j«|_ |jr"|j d|j |d««n!|j d|j |d««d}t
|«D]}|jr"|j d|j |d««n!|j d|j |d ««\}}}}tj||j«j}tj|d
«} d |d |d
| d |d }
|j|\} } || z}
|
|jrdndkDrv|j«}|j |jrdnd|«\}|
d|d|z
}
|j#|«t%j&||
«}|j#|«n|d|
}t)|«|
k7r>t+j,d|
dt)|«d|«tj!|
«Œš|stj!|
«Œ³||j.|<||j0|<|
dz
}
|
|
dkDrd|
dn
t3|«z
}
tj!|
«Œ|jr"|j d|j |d««n!|j d|j |d««\|_y#t$rtj!d|
|«YŒ‚wxYw#t6$r(}
t+j,t9|
««Yd}
~
yd}
~
wwxYw)Nrr1rkr%rÚHHQ8séÚHHL4sr@Úunknownztag: ú
) - type: ú)z%s - unsupported type %sr)r?z Tag Location: z - Data Location: z/Possibly corrupt EXIF data. Expecting to read r©z. Skipping tag z
- value: rEú<table: ú bytes>)rÚtellrrÚrangerr'rrrÚgetrßÚKeyErrorÚloggerÚdebugÚseekrÚ
_safe_readr^rXrYr rrr)Ú tag_countr{r/r0ÚcountrïÚtagnameÚtypnamerÚ unit_sizer1ÚhereÚoffsets raÚloadzImageFileDirectory_v2.loadusØ
Œ Ø—w‘w“yˆŒ ð= ð—=’=ð ˜S $×"3Ñ"3°B¸Ó":Ô—\\ # t×'8Ñ'8¸¸QÓ'?Óñ ˆ
˜.
"ð—}—L¨$×*;Ñ*;¸BÀÓ*CÔŸ g¨t×/@Ñ/@ÀÀRÓ/HÓ&S˜% ô #Ÿ/™/¨#¨t¯z©zÓ?ÜŸ)™) C¨Ó3ؘg˜Y b¨¨¨Z¸°yÀÀ3À%ÀqÐIðØ)-×)<Ñ)<¸SÑ)AÑ&I˜˜(Ø §
¢
™1°1ÒŸ7™7›9DØ $§ ¡ °D·M²M©SÀsÈDÓ Q‘I˜_¨T¨FÐ2DÀVÀHÐM—G‘G˜F”OܰDÓ9—G‘G˜D•Mà  ˜;t“9 Ò—M-Ø-1¨FÐ2FÄsÈ4ÃyÀkðR)Ø),¨ðô
—L‘L ÔáÜ—L‘L Ôà%)
˜"Ø$' ˜#ذ4¸"²9˜ $  /Ä$ÀtÃ*ÑLä ˜SÖ!ð].
"ðd—= ˜S $×"3Ñ"3°B¸Ó":Ô—\\ # t×'8Ñ'8¸¸QÓ'?Ó
ˆTYøôG òÜ—L‘LÐ!;¸SÀ#ÔðûôPò Ü M‰Mœ#˜c›(Ô ûð ús=§DL Ä.K$ÅF#L Ë$ LÌL ÌLÌL Ì L<ÌL7Ì7L<có|j|jd|jrdnd«z}|jr||jddd«z
}||jr|jdd«z
}|S|jd d«z
}|S)
Nrkré*ÚHHr1rrrBr?)r
r©rs raÚ_get_ifhzImageFileDirectory_v2._get_ifh¸s{Øl‰l˜TŸZ™Z¨°4·=²=©RÀbÓØ =Š=Ø 4—::˜d A  )ˆ  d§m¢mˆtz‰z˜#˜Kˆàˆ
ð:>¿¹ÀCÈÓ9KÑKˆàˆ
rkc ó\|j|jrdndt|j««}g}|jrdnd}|jrdnd}|t|«t|j«|jrdndzz|zz
}d}t |jj ««D]H\}}|t k(r t|«}|j|} tjd|| t|««| tjk(xrt|t«}
|
rYt|j!«|¬ «} |j|} | j «D]
\}
}|| |
<Œ | j#|«}n+t|t$«r|n|f} |j&| |g| ¢­Ž}tj(||j*«j,}|
rd
nt/j0| d «}d |d
|d|d
| d }|t|«dk\rdt|«dn
t3| «z
}tj|«|
rd}nH| tj4tj6tj8fvr t|«}n t| «}t|«|kr(|j;|| ||j=|d«df«Œ |j;|| ||j||«|f«|t|«dzdzdzz
}ŒK|Œ||\}} }}}|rM|j>| \}}||||j@«Dcgc]}||zŒ } }|j&| |g| ¢­Ž}n(|j||jC||«d|z«}|| |||f||<|D]Z\}} }}}tjd|| |t|«t|««||j|jrdnd|| ||«z
}Œ\||j|d«z
}|D]!\}} }}}||z
}t|«dzsŒ|dz
}Œ#|Scc}w)Nrrkr?r1r)r@zTag %s, Type: %s, Value: %s)rÚifdr³zsave: r´z ) - value: rBr¸r rzrkr%rz%s %s %s %s %sr°)"rõrr^rÚsortedr&Ú STRIPOFFSETSrrrrPr•r#Útobytesrfr'rrrrTrSrJÚappendÚljustrß)ÚresultÚentriesrñÚfmt_sizeÚ stripoffsetsr/r˜r0r^Úifd_tagÚ ifd_valuerïrr1rqs razImageFileDirectory_v2.tobytesÀs à 4§=¢=™C°c¼3¸t¿}¹}Ó;MÓNˆà<>ˆà—]]‰c¨ˆØŸ
š
‘1¨1ˆØÜ ‹Kœ#˜dŸm™mÓ,°d·m²m±ÈÑ LÈxÑ 
ˆðˆ ô§¡×!4Ñ!4Ó!6Ó" 3‰JˆCØ”lÒ" 7| Ø—,,˜#ˆ L‰LиSÄ$ÀuÃ+Ô œHŸM™MÑE¬j¸ÄÓ.EˆFÙÜ+¨D¯M©M«OÀ3ÔGØŸ sÑ+Ø*0¯,©,«.ò&G˜YØ#,C˜—{{ *ä",¨U´EÔ":™ÀÀØ0+¨CÑÐÒ?ä—o‘o c¨4¯:©:Ó;ˆ%‘e¬5¯9©9°S¸)Ó+Dˆ˜7˜) 2 c U¨*°W°I¸RÀ¸uÀKÐPˆCØ ´C¸³IÀ²OXœc $›i˜[¨ÑÈVËÑ TˆCÜ L‰L˜Ô ñØØœŸ¬¯©¼×8JÑ8JИD› ‘ä˜F› ä4‹y˜HÒ  S¨%°·±¸HÀeÓ1LÈcР S¨%°·±¸CÀÓ1HÈ$М3˜t›9 q™=¨QÑÑ2ðE" 3ðJ Ð #Ø+2°<Ñ+@Ñ (ˆCe˜U Ø $× 3Ñ 3°CÑ 8
gÙ29¸ÀdÇoÁoÓ2VÖW¨3˜# ›,ÐWÐ0+¨CÑÐÒ?‘àŸ
 3¨¯ © °S¸%Ó(@ÀÑ(CÀfÑ(LÓMØ$'¨¨e°U¸DÐ$@ˆG -4ò Ñ (ˆCe˜U  L‰LÐ)¨3°°U¼DÀ»KÌÈdËÔ d—j‘jØŸ=š=‘¨g°s¸CÀÈóñ
‰Fð ð $—**˜S $ˆð-4ò Ñ (ˆCe˜U  d‰NˆFÜ4‹y˜1‹}ؘ%‘ð ð
ˆ
ùò-XsÌ6 P)cóæ|j«dk(r|j|j««|j«}|j|«}|j|«|t |«zS)ÚwriterÍr^)s raÚsavezImageFileDirectory_v2.savesUØ
7‰79˜Š>Ø H‰HT—]‘]“_Ô ˆØ˜fÓØ
ÔØœ˜F› Ñ#rk)sII*NN)rriz bytes | Nonerú
int | NonerŽ))r˜r©)zdict[str, Any]rÌ©r/r—r
©r/©r/r—r˜r
)r/r—r˜r
)r/r—©z
Iterator[int]))r
))úbytes | int | IFDRationalrŽ))r˜zstr | bytes | intrŽ)z)tuple[tuple[int, int] | IFDRational, ...])ro)r˜)ú IO[bytes]râr—))rL)r—)r—)7rÑÚ__annotations__rèr™riÚsetterrr$r)r,r2r5r9r8rbreÚlistÚmaprrrNrPÚ SIGNED_BYTErOrQÚFLOATrRÚIFDÚLONG8rårtrxr}r€r“r=rkrañ:ðx:<€NÐ;Ø57€OÐ ð %
ð%ð%ð %
ó %!ñNÑ
0€FÙ
Ñ
0€Fà
ò óð ð×Ñòóðóó 
ó ó\ó|
 Ù Ø à  gР VÐ×% s¨MÐר^Ð×% s¨MР gР# xИs FР gÐ
ó
ôñ"ÓóóðñòóðñÓóð
òóðñÓà.2ðWØðWØ'+ðWà 2òWóðWñò
óð
ñ
Óóóðñòóðñb˜!Óà.2ðWØðWØ'+ðWà 2òWóðWñò
óð
ó óAóFôNô`$rkÚwrite_có˜eZdZUdZdˆfd Zed«Zed«Zded< e dd«Z
ddZ dd „Z dd
Z
dd Zdd Zdd
ZˆxZS)ÚImageFileDirectory_v1aþThis class represents the **legacy** interface to a TIFF tag directory.
Exposes a dictionary interface of the tags in the directory::
ifd = ImageFileDirectory_v1()
ifd[key] = 'Some Data'
ifd.tagtype[key] = TiffTags.ASCII
print(ifd[key])
('Some Data',)
Also contains a dictionary of tag types as read from the tiff image file,
:attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`.
Values are returned as a tuple.
.. deprecated:: 3.0.0
có2t||i|¤Žd|_y)NT)Úsuperr™r)rÚkwargsÚ __class__s €rar™zImageFileDirectory_v1.__init__7sø€Ü
ј$Ð) ˆÕrkcó|jSrd)rrs razImageFileDirectory_v1.<lambda>;s
 §¡rkcó|jSrd)r rs razImageFileDirectory_v1.<lambda><s
 D§M¡M€rkzdict[int, int]rcó’||j¬«}|j|_|j|_|j|_|S)a2Returns an
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
instance with the same data as is contained in the original
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
instance.
:returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
rh)rir rr)ÚclsÚoriginalrÏs raÚfrom_v2zImageFileDirectory_v1.from_v2Bs<ñ˜ŸÔØ×Œ Ø×Œ Ø—=ŒØˆ
rkcóÎt|j¬«}t|j«|_t|j«|_t|j
«|_|S)a2Returns an
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
instance with the same data as is contained in the original
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
instance.
:returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
rh)rir#r rr)s raÚto_v2zImageFileDirectory_v1.to_v2TsGô$¨4¯;©;ÔܘDŸM™MÓ*ˆŒ ܘ4Ÿ<™<ÓŒ ܘDŸM™MÓŒ ؈
rkcó>||jvxs||jvSrd)rr r4s rar5z"ImageFileDirectory_v1.__contains__er6rkcójtt|j«t|j«z«Srd)r^r+r rrs rar,zImageFileDirectory_v1.__len__hr-rkcójtt|j«t|j«z«Srd)rdr+r rrs rarezImageFileDirectory_v1.__iter__krfrkcó8dD]}|j|||«Œy©N)FT)r8)r/r˜s rar9z!ImageFileDirectory_v1.__setitem__ns!Ø 2ˆ M‰M˜#˜u   2rkc ó||jvrR|j|}|j|}|j|\}}dD]}|j |||||«|«Œ|j|}t |t tf«s|f}|Sr)rr rr8r•rf)r/r0r1Úlegacyrqs rar2z!ImageFileDirectory_v1.__getitem__rsØ d—m —=‘= Ñ%ˆDØ—,‘,˜sÑ#ˆCØ ×Ñ4‰MˆD
HØ
˜c¡7¨4°°vÓ#>ÀÕ
Hàm‰m˜CÑ ˆÜ˜¤u˜~Ô&ˆˆ
rk)rr
r
)))r™ÚtagsÚtagdataræÚ classmethodrúr5r,rer9r2Ú
__classcell__©s@ra$s`ø…ñõ$ ñ Ñ /€DÙÑ2€GðÓØòóðó"ó"
rkcó eZdZdZdZdZ d dˆfd
ZddZedd«Z ddZ
ddZ dd „Z dd
Z
dˆfd Zdd Zdd
ZddZddZˆxZS)Ú
TiffImageFileÚTIFFz
Adobe TIFFFcó2| | t|||«yrd)r™)Úfilenamerôs €rar™zTiffImageFile.__init__Œs ø€ñ
Ø Ø
ј˜&rkcó|jJ|jjd«}|ddk(r||jjd«z
}t|«|_|jjx|_|_d|_|j|_g|_ d|_
tjd«tjd|j
«tjdt|««|jd «y)
z#Open the first image in a TIFF fileNr1r%rrmz*** TiffImageFile._open ***z
- __first: %sz - ifh: %sr)Útag_v2rÚ_TiffImageFile__firstÚ_TiffImageFile__nextÚ_TiffImageFile__frameÚ_fpÚ
_frame_posÚ _n_framesr½rÚ_seekrÌs raÚ_openzTiffImageFile._open™ðw‰wÐg‰gl‰l˜1oˆØ ˆq‰6RŠ<Ø 4—77—<< “?Ñ "ˆ+¨CÓ0ˆŒ ð&*§[¡[×%5Ñ%5Ð5ˆŒ t”{؈Œ Ø—7‘7ˆŒØ%'ˆŒØ%)ˆŒä Ð _ d§l¡lÔ [¤$ s£)Ô
1
rkcóR|j}|€€|j«}|jt|j««|j€/|j|j«dz«|jŒ/|j |«|jJ|jS)Nr )rrr^rr¿)Úcurrent_n_framesÚcurrents raÚn_frameszTiffImageFile.n_frames²s„àŸ>™>ÐØ Ð —i‘i“kˆGØ J‰J”s˜4Ÿ?™?Ó —.‘.Ð
˜4Ÿ9™9›;¨™?Ô—.‘.Ñ I‰I Ø~‰~Ð~‰~Ðrkcó|j|«sy|j|«|j[|jj|j
k7s/|jj |j k7s |jrd|_yyy)z%Select a given frame as current imageN)Ú _seek_checkrÚ_imÚimrâÚ
_tile_sizeÚmodeÚreadonly)Úframes rar¿zTiffImageFile.seek¾sià×Ñ Ô Ø
Ø 8‰8Ð Ø G‰GL‰L˜DŸO™OÒ w‰w|‰|˜tŸy™yÒ}Š}àˆDð rkcó|t|jt«r|jj|j|_t |j «|krÐ|js
d}t|«tjd||j|j|jj««|jdk\r
d}t|«|jj|j«|j j|j«tjd|jj««|j j#|j«|j j$|j vrd|_n|j j$|_|jdk(r
|dz|_t |j «dk(r|jdk7|_|xjdz
c_ t |j «|krŒÐ|jj|j |«|j j#|j«t*|j vrF|j t*}t|t,«rt |«dk(r|d}||j.d<nd|j.vr
|j.d=|j1«t2j5|j «x|_|_||_ |j;«y) Nzno more images in TIFF filez9Seeking to frame %s, on frame %s, __next %s, location: %slzUnable to seek to framezLoading tags, location: %srr Úxmp)r•rrÚexr¬r^rrÚEOFErrorr½rrWr¿rrrÚ is_animatedÚXMPrfrHÚ _reload_exifrðr/Ú_setup)r#rr%s rarzTiffImageFile._seekÊsDÜ d—h
Ô —(‘(—+‘+Ð Ø—(‘(ˆŒä$—/‘/Ó" —;3ܘs“mÐ L‰LØØ Ø Ø ô 
ð{‰{˜eÒ/Ü  “oÐ G‰GL‰L˜ŸÔ O‰O× " 4§;¡;Ô L‰LÐ5°t·w±w·|±|³~Ô K‰K× Ñ ˜TŸW™WÔ {‰{×Ñ 4§?¡?Ñ  à"Ÿk™k×. Ø{‰{˜Ø!&¨¡Ü4—?# (Ø#'§;¡;°!Ñ#3Ô Ø LŠL˜ Lô9$—/" +ð:
 T—_‘_ UÑ ×јŸÔ $—+‘+Ñ Ø—++œcÑ"ˆ˜#œuÔ%¬#¨c«(°aª-ؘ!fØ"ˆDI‰I Ø
d—i
Ø— ‘ ˜%Ð Ø ×ÑÔä;¸D¿K¹KÓŒ4”8؈Œ Ø
rkcó|jS)zReturn the current frame number)rrs razTiffImageFile.tellûs à|‰|Ðrkcó i}|jjtjj«}|r¼|j d«r«t
|«dk\rt|dd«}tj|ddzdz «dz} t|d|zd|z«}|d|zd|z|z}d|i||<|tjd|z|zdz «dzd }|j d«rt
|«dk\rŒ|S#tj$rY|SwxYw)
a5
Returns a dictionary of Photoshop "Image Resource Blocks".
The keys are the image resource ID. For more information, see
https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727
:returns: Photoshop "Image Resource Blocks" in a dictionary.
s8BIMr@r)r-r r%N)
rr
ÚBaseÚImageResourcesrer^Úi16ÚmathÚceilÚi32rýÚerror)ÚblocksrqÚidÚnrâs raÚget_photoshop_blocksz"TiffImageFile.get_photoshop_blocksÿsðˆØk‰ko‰oœhŸm™m×Ù Ø—.. Ô)¬c°#«h¸"ªnܘ˜Q˜q˜“]Ü—I‘I˜s 1™v¨™z¨QÑ/°!Ñ3ðܘs 1 q¡5¨2°©6Ð3˜2 ™6 ¡F¨T¡MÐ2Ø$ d˜^r
àœ$Ÿ)™) R¨!¡V¨d¡]°aÑ$7Ó8¸?ð—.. Ô)¬c°#«h¸"«nðˆ
øô
—|Øð
ˆ
ð
úsÂC6Ã6D
Ä D
cóp|jr|jr|j«St|«Srd)ÚtileÚuse_load_libtiffÚ
_load_libtiffrò)s €razTiffImageFile.loads-ø€Ø 9Š9˜×× ‰w‰|rkcó
|j€Xtj|j«tjj |j |j«|_tjj|«yrd)
rrÚ_decompression_bomb_checkr ÚcoreÚnewr!rrÚ load_preparers rarAzTiffImageFile.load_preparesPØ 8‰8Ð Ü × +¨D¯O©OÔ —j‘j—n‘n T§Y¡Y°·±Ó@ˆDŒGÜ×Ñ×Õ.rkcóf|jsBd|_|j«}tjD]}||vrŒ|j |«Œt
j|d¬«tjj|jvr&|jtjj=yy)NT)Úin_place) r(Ú!_close_exclusive_fp_after_loadingÚgetexifrÚTAGS_V2_GROUPSÚget_ifdrÚexif_transposer
r.Ú Orientationr)ÚexifÚkeys raÚload_endzTiffImageFile.load_end"sð×ÒØ59ˆ —<<“>ˆ×
"ؘd‘?ØØ ˜SÕ
×Ñ ¨tÕ =‰=× ¯ © Ñ  œHŸM™M× 4rkcóÔtjj|«|j«t|j«dk(s
d}t |«|jdd}|jdd}|j J t|j d«xr|j j«}t|j d«r|j j«|r-t|t«sJt|«}||d <t|«}tj|jd
||j«} |j!|j"|«|j&xr
|j( }t|j d «rBt*j-d
«|j/|j j1««\} }
nï|rt*j-d«|s|j j3d«t5j6|dt4j8«} |j/d«\} }
t5j6|| t4j:«n\t*j-d«|j j3d«|j/|j j=««\} }
g|_d|_|jA«|r!|j jC«d|_|
dkrd|
}t |«tjj|«S#t
$rd}YŒ]wxYw#t$$r}d }t |«|d}~wwxYw)zWOverload method triggered when we detect a compressed tiff
Calls out to libtiffr zNot exactly one tilerr'filenoÚflushFr%ÚlibtiffzCouldn't set the imageÚgetvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.sfpfpz+don't have fileno or getvalue. just readingzdecoder error )"rrAr^r:r×rNrOr•rfÚ _getdecoderr!Ú
decoderconfigÚsetimagerrWÚ
_exclusive_fpr(r|rQr¿ÚosÚlseekÚSEEK_CURÚSEEK_SETrªr"rLÚclose) rÚextentsrÚ args_listÚdecoderÚ
close_self_fpr7ÚerrÚposs rar<zTiffImageFile._load_libtiff3ô  ×јÔà ×ÑÔä4—9‘9‹~ Ò(ˆ˜#“,Ð ð—)‘)˜A‘,˜q‘/ˆØy‰y˜‰|˜A‰ˆð
w‰wÐ
ܘŸ (Ó·±·±Ó0@ˆBôt—w‘w Ô
ñ ܘd¤EÔ ˜T›
ˆI؈Ia‰LܘÓ#ˆDä×# D§I¡I¨y¸×@RÑ@RÓSˆð × Ñ ˜TŸW™W 
×C°4×3CÑ3CÐ/Cˆ
Ü 4—77˜ 
L‰LÐ —^^ D§G¡G×$4Ñ$4Ó$6Ó7‰FˆA‰sÙ
ä L‰LÐ  Ø ˜Q”ô—(‘(˜2˜q¤"§+¡+Ó.ˆ—^^ ,‰FˆAˆsÜ H‰HR˜œbŸk™kÕ 
L‰LÐ G‰GL‰L˜ŒOà—^‘^ D§G¡G§L¡L£NÓ3‰FˆAˆsàˆŒ ؈Œ
à
Œá Ø G‰GM‰MŒO؈DŒGà Š7Ø" 3 (ˆ˜#“,Ð ä{‰{×Ñ Ó%øôGò ð‹Bð ûôò*ˆ˜#“,  %ûð &ús+ÂA"L9ÅM Ì9 MÍMÍ M'ÍM"Í"M'c
ó*d|jvr
d}t|«t|jjtd«|_|jjt d«|_|jjtd«}|j
dk(rd}|jjtd«}tjd«tjd|j