
    (ph1                      S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJrJr  S SKJrJrJrJrJr  SSKJrJrJrJrJrJr  SS	KJr  SS
KJ r!  SSKJ"r"  SSK#J$r$  SSKJ%r%  \RL                  " \'5      r(Sr)Sr*Sr+Sr,Sr-Sr.Sr/Sr0Sr1Sr2Sr3Sr4Sr5Sr6Sr7Sr8Sr9Sr:Sr;S r<S!r=S"r>S#r?S$r@S%rAS&rBS'rCS(rDS)rES*rFS+rGS,rHS-rIS.rJS/rKS0rLS1rMS2rNS3rOS4rPS5rQS6rRS7rSS8rTS9rUS:rVS;rW0 SS<_S=S>_S?S@_SASB_SCSD_SESF_SGSH_SISJ_SKSL_SMSN_SOSP_SQSR_SSST_SUSV_SWSX_SYSZ_S[S\_rX\XR                  5        V Vs0 s H  u  pX_M	     snn rZ0 \-S S]SS]S^4S__\.S S]SS]S^4S__\-S S]S=S]S^4S`_\.S S]S=S]S^4S`_\-SS]SS]S^4Sa_\.SS]SS]S^4Sa_\-SS]S=S]S^4Sb_\.SS]S=S]S^4Sb_\-S S]SScS^4Sd_\.S S]SScS^4Sd_\-S S]S=ScS^4Se_\.S S]S=ScS^4Se_\-SS]SScS^4Sf_\.SS]SScS^4Sf_\-SS]S=ScS^4Sg_\.SS]S=ScS^4Sg_\-S S]SShS^4Si_0 \.S S]SShS^4Si_\-S S]S=ShS^4Sj_\.S S]S=ShS^4Sj_\-SS]SShS^4Sk_\.SS]SShS^4Sk_\-SS]S=ShS^4Sl_\.SS]S=ShS^4Sl_\-S S]SSmS^4Sn_\.S S]SSmS^4Sn_\-S S]S=SmS^4So_\.S S]S=SmS^4So_\-SS]SSmS^4Sp_\.SS]SSmS^4Sp_\-SScSSmS^4Sp_\.SScSSmS^4Sp_\-SS]S=SmS^4Sq_\.SS]S=SmS^4Sq_E0 \-SS]SSrS^4Ss_\-S S]SStS^4Su_\-SS]SStS^4Su_\.SS]SStS^4Sv_\-SS]S=StS^4Sw_\-SScSStS^4Sx_\.SScSStS^4Sy_\-S SzSS{S^4S|_\.S SzSS{S^4S}_\-SS]SS{S^4S~_\-SScSS{S^4S_\.SScSS{S^4S_\-SSzSS{S^4S|_\.SSzSS{S^4S}_\-SS]SSSc4S_\.SS]SSSc4S_\-S=S]SSS^4S_E0 \.S=S]SSS^4S_\-S=S]S=SS^4S_\.S=S]S=SS^4S_\-S=S]SSS^4S_\.S=S]SSS^4S_\-S=S]SSS4S_\.S=S]SSS4S_\-S=S]SSS4S_\.S=S]SSS4S_\-S=S]SSS4S_\.S=S]SSS4S_\-S=S]SSS]4S_\.S=S]SSS]4S_\-S=S]SSS4S_\.S=S]SSS4S_\-S=S]SSS4S_\.S=S]SSS4S_E0 \-S=S]SSSc4S_\.S=S]SSSc4S_\-S=S]SSS4S_\.S=S]SSS4S_\-S=S]SSS4S_\.S=S]SSS4S_\-S=S]SSS4S_\.S=S]SSS4S_\-S=S]SSS^4S_\.S=S]SSS^4S_\-S=S]SSS^4S_\.S=S]SSS^4S_\-S=S]SSS4S_\.S=S]SSS4S_\-S=S]SSS]4S_\.S=S]SSS]4S_\-S=S]SSSc4S_E0 \.S=S]SSSc4S_\-S?S]SS]S^4S_\.S?S]SS]S^4S_\-S?S]S=S]S^4S_\.S?S]S=S]S^4S_\-S?S]SScS^4S_\.S?S]SScS^4S_\-S?S]S=ScS^4S_\.S?S]S=ScS^4S_\-S?S]SShS^4S_\.S?S]SShS^4S_\-S?S]S=ShS^4S_\.S?S]S=ShS^4S_\-S?S]SSmS^4S_\.S?S]SSmS^4S_\-S?S]SSS4S_\-S?S]SSSc4S_E0 \.S?S]SSSc4S_\-S?S]S=SmS^4S_\.S?S]S=SmS^4S_\-SCS]SSS^4S_\.SCS]SSS^4S_\-SCS]SSS4S_\.SCS]SSS4S_\-SCS]SSS4S_\.SCS]SSS4S_\-SCS]SSS^4S_\-SES]SSmS^4Sp_\.SES]SSmS^4Sp_\-SES]SSS^4S_\.SES]SSS^4S_\-SIS]SSS^4S_\.SIS]SSS^4S_Er[\\" S \[ 5       5      r]/ SQr^\_" \R                  SS5      (       d	  \$" SS5        SS jraS rbS rc0 rd0 reS rf " S S\5      rgS rhS riS rj\(       a  \
\k\4   rlO\
rl " S S\l5      rm\d\mld        \e\mle        \%R                  " 5        H;  u  rnro\oR                  SS5      ro\q" \mS\o 3\d\n   S   5        \q" \mS\o 3\e\n   5        M=     CdCeCnCo " S S\m5      rr\rrs " S S\R2                  5      rt0 SS\-SSS]S4_SS\-SSSmS4_SS\-SSSS=4_SS\-S?SSmS4_SS\-S?SSS=4_SS\-SS=S{S4_SS\-SSStS4_SS\-SS=StS4_SS\-SS?S{S4_SS\-S=SSS4_SS\-S=SSS 4_SS\-S=SSS=4_SS\-SCSSS4_SS\-SESSS4_SS\-SISSS4_SS\.SS=S{S4_SS\.SSStS4_S\.SS=StS4S\.SS?S{S4S.EruS rv " S S5      rwSS jrx\R                  " \tR                  \t\a5        \R                  " \tR                  \v5        \R                  " \tR                  \x5        \R                  " \tR                  SS/5        \R                  " \tR                  S5        gs  snn f )    )annotationsN)MutableMapping)Fraction)NumberRational)IOTYPE_CHECKINGAnyCallableNoReturn   )ExifTagsImage	ImageFileImageOpsImagePaletteTiffTags)i16be)i32be)o8)	deprecateTYPESFT   s   IIs   MM      i  i  i  i  i
  i    i  i  i  i  i  i  i(  i-  i1  i2  i;  i=  i@  iB  C  D  iE  iJ  iR  iS  i[  i  i  i  i  iI  is  ii  i  i  i  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    )1z1;I)r:   z1;IR)r:   r:   )r:   z1;R)r!   )LzL;2I)r;   zL;2IR)r;   zL;2)r;   zL;2R)r%   )r;   zL;4I)r;   zL;4IR)r;   zL;4)r;   zL;4R)r-   )r;   zL;I)r;   zL;IR)r;   r;   )r;   zL;R)   )I;16zI;12)   )r=   r=   )I;16Br?   )r=   zI;16R)II;16S)r@   I;16BS)r#   )    )FF;32F)rD   F;32BF)r@   zI;32N)r@   I;32S)r@   I;32BS)r-   r-   )LArI   )r-   r-   r-   )RGBrJ   )rJ   zRGB;R)r-   r-   r-   r-   )RGBArK   r   )rJ   RGBX)r-   r-   r-   r-   r-   r   r   )rJ   RGBXX)r-   r-   r-   r-   r-   r-   )r   r   r   )rJ   RGBXXX)rK   RGBa)r   r   )rK   RGBaX)r   r   r   )rK   RGBaXX)r!   r   )rK   RGBAX)r!   r   r   )rK   RGBAXX)i  )r>   r>   r>   )rJ   zRGB;16L)rJ   zRGB;16B)r>   r>   r>   r>   )rK   zRGBA;16L)rK   zRGBA;16B)rJ   zRGBX;16L)rJ   zRGBX;16B)rK   zRGBa;16L)rK   zRGBa;16B)PzP;1)rV   zP;1R)rV   zP;2)rV   zP;2R)rV   zP;4)rV   zP;4R)rV   rV   )rV   PX)PArX   )rV   zP;R)CMYKrY   )rY   CMYKX)rY   CMYKXX)rY   zCMYK;16L)LABr\   c              #  >   #    U  H  n[        US    5      v   M     g7f)r%   N)len).0key_tps     F/var/www/html/venv/lib/python3.13/site-packages/PIL/TiffImagePlugin.py	<genexpr>rb     s     AyV#fQi..ys   )   MM *   II* s   MM* s   II *s   MM +s   II+ libtiff_support_custom_tagsz*Support for LibTIFF earlier than version 4r<   c                    U S S [         ;   $ Nr%   )PREFIXESprefixs    ra   _acceptrk     s    "1:!!    c                    [        U 5      S:  n[        U(       a  SU -  OU 5      R                  U5      nU(       a  US S S2   $ U$ )Nr   )absIFDRationallimit_rational)valmax_valinvn_ds       ra   _limit_rationalrv   !  sA    
c(Q,C
a#g#
.
=
=g
FC3tt9$$rl   c                    [        U 5      nUR                  UR                  4n[        U5      U:  a  [	        U [        U5      5      n[        U5      U:  a  [        U6 n [	        X5      nU$ N)r   	numeratordenominatorminrv   ro   max)rr   rs   min_valfracru   s        ra   _limit_signed_rationalr   '  s_    C=D
..$**
*C
3x'c3w<0
3x'nc+Jrl   c                   ^  U 4S jnU$ )Nc                6   > [        U R                  T5      " U6 $ rx   )getattr_val)selfargsops     ra   delegate_delegate.<locals>.delegate=  s    tyy"%t,,rl   r9   )r   r   s   ` ra   	_delegater   <  s    - Orl   c                  L   \ rS rSrSr SrS*S jr\S 5       r\S 5       r	S r
S+S jrS,S	 jrS-S
 jrS rS r \" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r \" S5      r!\" S5      r"\" S5      r#\" S 5      r$\" S!5      r%\" S"5      r&\" S#5      r'\" S$5      r(\" S%5      r)\" S&5      r*\+" \,S'5      (       a  \" S'5      r-S(r.g)S(r.g)).rp   r   zImplements 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                   [        U[        5      (       a4  UR                  U l        UR                  U l        UR                  U l        g[        U[        5      (       a#  UR                  U l        UR                  U l        OXl        X l        US:X  a  [        S5      U l        gUS:X  a  [        U5      U l        g[        X5      U l        g)z
:param value: either an integer numerator, a
float/rational/other number, or an IFDRational
:param denominator: Optional integer denominator
Nr   nanr   )	
isinstancerp   ry   r   rz   r   r   r   float)r   valuerz   s      ra   __init__IFDRational.__init__Q  s     e[))#ooDO % 1 1D

DIeX&&#ooDO % 1 1D#O +!eDIA DI 4DIrl   c                    U R                   $ rx   )r   r   s    ra   ry   IFDRational.numeratork  s    rl   c                    U R                   $ rx   )r   r   s    ra   rz   IFDRational.denominatoro  s       rl   c                    U R                   S:X  a  U R                  U R                   4$ U R                  R                  U5      nUR                  UR                   4$ )zm

:param max_denominator: Integer, the maximum denominator value
:returns: Tuple of (numerator, denominator)
r   )rz   ry   r   limit_denominator)r   max_denominatorfs      ra   rq   IFDRational.limit_rationals  sN     q >>4#3#333II''8{{AMM))rl   c                >    [        [        U R                  5      5      $ rx   )strr   r   r   s    ra   __repr__IFDRational.__repr__  s    5#$$rl   c                6    U R                   R                  5       $ rx   )r   __hash__r   s    ra   r   IFDRational.__hash__  s    yy!!##rl   c                    U R                   n[        U[        5      (       a  UR                   n[        U[        5      (       a  [        U5      nX!:H  $ rx   )r   r   rp   r   )r   otherrr   s      ra   __eq__IFDRational.__eq__  s?    iie[))JJEeU##*C|rl   c                H    U R                   U R                  U R                  /$ rx   )r   r   r   r   s    ra   __getstate__IFDRational.__getstate__  s    		4??D,=,=>>rl   c                ^    [         R                  U S5        Uu  p#nX l        X0l        X@l        g )Nr   )rp   r   r   r   r   )r   stater   r   r   s        ra   __setstate__IFDRational.__setstate__  s,    T1%).&,	$(rl   __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__)r   r   r   Nr8   returnr   r   int)r   objectr   bool)/__name__
__module____qualname____firstlineno____doc__	__slots__r   propertyry   rz   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   hasattrr   r   __static_attributes__r9   rl   ra   rp   rp   C  s   
 7I54   ! !*%$?) 	"G$H	"G$H	"G$HM*K^,L^,Lo.M	"G$H	"G$H	"G	"G	"G+&Ix Fx Fx Fx F$H$H+&I+&Ix##I& $rl   rp   c                   ^ ^ U U4S jnU$ )Nc                   > SSK Jn  U R                  R                  S5      (       a"  U R                  SS  R	                  SS5      UT'   TU 4[
        T'   U $ )Nr   r   load_r'   _ )r   r   r   
startswithreplace_load_dispatch)funcr   idxsizes     ra   	decorator#_register_loader.<locals>.decorator  sO    #==##G,,qr*223<E#J"Djsrl   r9   )r   r   r   s   `` ra   _register_loaderr     s     rl   c                   ^  U 4S jnU$ )Nc                   > U [         T'   U $ rx   )_write_dispatch)r   r   s    ra   r   #_register_writer.<locals>.decorator  s    #rl   r9   )r   r   s   ` ra   _register_writerr     s     rl   c                   ^^ SSK Jn  U u  nmnX1U'   [        R                  " ST 35      mTSUU4S jj4[        U'   U4S j[
        U'   g )Nr   r   =c                H   > U R                  [        U5      T-   T 3U5      $ rx   )_unpackr^   )r   data
legacy_apifmtr   s      ra   <lambda>!_register_basic.<locals>.<lambda>  s$    LLCI-.se4d;rl   c                >   >^  SR                  UU 4S jU 5       5      $ )Nrl   c              3  H   >#    U  H  nTR                  TU5      v   M     g 7frx   )_pack)r_   r   r   r   s     ra   rb   4_register_basic.<locals>.<lambda>.<locals>.<genexpr>  s     <VEC''Vs   "join)r   valuesr   s   ` ra   r   r     s    <V<<rl   T)r   r   structcalcsizer   r   )idx_fmt_namer   r   namer   r   s       @@ra   _register_basicr    sL    !NCd#J??Qse9%D	
N3OCrl   c                  |   \ rS rSr% Sr0 rS\S'   0 rS\S'      S>       S?S jjr\	" S	 5      r
\	" S
 5      r\	S@S j5       r\R                  SAS j5       rSBS jrSCS jrS rSDS jrS rS rS rS rSES jrS rS rS r\" \" \\R<                  SS4\R>                  SS4\R@                  SS4\RB                  SS 4\RD                  S!S"4\RF                  S#S$4\RH                  S%S&4\RJ                  SS4\RL                  S'S(4/	5      5        \'" S)S)5      SFS* j5       r(\)" S)5      S+ 5       r*\'" S,S)5      SFS- j5       r+\)" S,5      S. 5       r,\'" S/S05      SFS1 j5       r-\)" S/5      S2 5       r.\'" S3S)5      SFS4 j5       r/\)" S35      S5 5       r0\'" S6S05      SFS7 j5       r1\)" S65      S8 5       r2S9 r3S: r4SGS; jr5S< r6S=r7g)HImageFileDirectory_v2i  a  This 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, Callable[[ImageFileDirectory_v2, bytes, bool], Any]]r   zdict[int, Callable[..., Any]]r   Nc                   [        U5      (       d  S[        U5       S3n[        U5      eUb  UOUSS U l        U R                  [        :X  a  SU l        O)U R                  [        :X  a  SU l        OSn[        U5      eUS   S:H  U l        X0l        0 U l	         U R                  5         U R                  (       a  U R                  S	US
S 5      OU R                  SUSS 5      u  U l        SU l        g)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.
znot a TIFF file (header z not valid)Nr!   ><znot a TIFF IFD+   Qr-   r;   r%   F)rk   reprSyntaxError_prefixMM_endianII_bigtiffgrouptagtyperesetr   next_legacy_api)r   ifhrj   r  msgs        ra   r   ImageFileDirectory_v2.__init__*  s      s||,T#YK{CCc""!'!3vRa<<2DL\\RDL"Cc""A"
')'

*.--DLLc!"g&T\\#sSTSUw=W 	 !rl   c                    U R                   $ rx   )r  r   s    ra   r   ImageFileDirectory_v2.<lambda>O      4<<rl   c                    U R                   $ rx   )_offsetr   s    ra   r   r  P  r  rl   c                    U R                   $ rx   r  r   s    ra   r    ImageFileDirectory_v2.legacy_apiR  s    rl   c                    Sn[        U5      e)Nz"Not allowing setting of legacy api)	Exception)r   r   r  s      ra   r   r   V  s    2nrl   c                X    0 U l         0 U l        0 U l        0 U l        S U l        S U l        g rx   )_tags_v1_tags_v2_tagdatar  _nextr  r   s    ra   r  ImageFileDirectory_v2.reset[  s,    (*(**,
rl   c                *    [        [        U 5      5      $ rx   )r   dictr   s    ra   __str__ImageFileDirectory_v2.__str__c  s    4:rl   c                    U R                  5        VVs0 s H0  u  p[        R                  " XR                  5      R                  U_M2     snn$ s  snnf )zi
:returns: dict of name|key: value

Returns the complete tag dictionary, with named tags where possible.
)itemsr   lookupr  r  )r   coder   s      ra   namedImageFileDirectory_v2.namedf  sI      $zz|
+ OOD**-22E9+
 	
 
s   7Ac                j    [        [        U R                  5      [        U R                  5      -  5      $ rx   )r^   setr&  r%  r   s    ra   __len__ImageFileDirectory_v2.__len__q  $    3t}}%DMM(::;;rl   c                (   XR                   ;  aD  U R                  U   nU R                  U   nU R                  U   u  pEU" XU R                  5      X'   U R                   U   nU R                  (       a  [        U[        [        45      (       d  U4nU$ rx   )r%  r&  r  r   r   r   tuplebytes)r   tagr   typr   handlerrr   s          ra   __getitem__!ImageFileDirectory_v2.__getitem__t  s}    mm#==%D,,s#C //4MDDOO<DImmC ??:cE5>#B#B&C
rl   c                H    XR                   ;   =(       d    XR                  ;   $ rx   )r%  r&  r   r;  s     ra   __contains__"ImageFileDirectory_v2.__contains__      mm#;smm';;rl   c                <    U R                  XU R                  5        g rx   )_setitemr   )r   r;  r   s      ra   __setitem__!ImageFileDirectory_v2.__setitem__  s    c$//2rl   c           	       ^	 [         [        [        4n[        R                  " XR
                  5      m	[        X$5      (       a  U/OUnXR                  ;  Ga  T	R                  (       a  T	R                  U R                  U'   GO[        R                  U R                  U'   [        S U 5       5      (       aF  [        S U 5       5      (       a  [        R                  O[        R                  U R                  U'   GOe[        S U 5       5      (       a  [        S U 5       5      (       a  [        R                  U R                  U'   GO[        S U 5       5      (       a  [        R                  U R                  U'   O[        S U 5       5      (       a  [        R                  O[        R                   U R                  U'   O[        S U 5       5      (       a  [        R"                  U R                  U'   Oi[        S U 5       5      (       a  [        R$                  U R                  U'   O4[        S	 U 5       5      (       a  [        R&                  U R                  U'   U R                  U   [        R                  :X  a:  U Vs/ s H,  n[        U[        5      (       a  UR)                  S
S5      OUPM.     nnOSU R                  U   [        R                  :X  a2  U Vs/ s H%  n[        U[*        5      (       a  [-        U5      OUPM'     nnU R                  U   [        R                  :H  =(       a    [        U[.        5      nU(       d  [1        U	4S jU 5       5      nU(       a  U R2                  OU R4                  nU(       d  T	R6                  S:X  dD  U R                  U   [        R&                  :X  d#  T	R6                  cY  [9        U5      S:X  aJ  U(       dC  U(       a4  U R                  U   [        R                  [        R                  4;   a  U4n Uu  X'   g XXU'   g s  snf s  snf ! [:         a0    [<        R>                  " SU S[9        U5       S35        US   X'    g f = f)Nc              3  B   #    U  H  n[        U[        5      v   M     g 7frx   )r   rp   r_   vs     ra   rb   1ImageFileDirectory_v2._setitem.<locals>.<genexpr>  s     B6az![116   c              3  *   #    U  H	  oS :  v   M     g7fr   Nr9   rK  s     ra   rb   rM    s     6v!Avv   c              3  B   #    U  H  n[        U[        5      v   M     g 7frx   )r   r   rK  s     ra   rb   rM         <VAs++VrN  c              3  L   #    U  H  nS Us=:*  =(       a    S:  Os  v   M     g7f)r   r   Nr9   rK  s     ra   rb   rM    s     :6a1>>E>>6   "$c              3  L   #    U  H  nS Us=:  =(       a    S:  Os  v   M     g7f)i i   Nr9   rK  s     ra   rb   rM    s      B6aX11E116rU  c              3  *   #    U  H	  oS :  v   M     g7frP  r9   rK  s     ra   rb   rM    s     ":6a66rQ  c              3  B   #    U  H  n[        U[        5      v   M     g 7frx   )r   r   rK  s     ra   rb   rM         >v!Au--vrN  c              3  B   #    U  H  n[        U[        5      v   M     g 7frx   )r   r   rK  s     ra   rb   rM    rS  rN  c              3  B   #    U  H  n[        U[        5      v   M     g 7frx   )r   r:  rK  s     ra   rb   rM    rY  rN  asciir   c              3  F   >#    U  H  nTR                  U5      v   M     g 7frx   )cvt_enum)r_   r   infos     ra   rb   rM    s     DVE4==//Vs   !r   zMetadata Warning, tag z had too many entries: z, expected 1r   ) r   r:  r   r   r/  r  r   r  type	UNDEFINEDallRATIONALSIGNED_RATIONALSHORTSIGNED_SHORTLONGSIGNED_LONGDOUBLEASCIIBYTEencoder   r   r*  r9  r$  r%  lengthr^   
ValueErrorwarningswarn)
r   r;  r   r   	basetypesr   rL  is_ifddestr_  s
            @ra   rF  ImageFileDirectory_v2._setitem  sc   UC(	sJJ/&u88%ell"yy$(IIS!$,$6$6S!B6BBB 6v666 !))%55 LL%
 <V<<<:6:::,4NNS)B6BBB,4,A,AS)  #":6"::: %MM!)!5!5 S)
 >v>>>(0DLL%<V<<<(0DLL%>v>>>(0DLL%<< 2 22  A 1;1c0B0B),I  F \\#("3"33EKLV*Q"4"4eAh!;VFLc"hmm3P
648PDVDDF *t}} [[A||C HMM1#Fq(8 dll3/!!((4  !&% IU
 M4  &,SE1H6{m<1 #1I	&s   3P&#,P+P0 07Q*)Q*c                    U R                   R                  US 5        U R                  R                  US 5        U R                  R                  US 5        g rx   )r%  popr$  r&  rA  s     ra   __delitem__!ImageFileDirectory_v2.__delitem__  s>    #t$#t$#t$rl   c                j    [        [        U R                  5      [        U R                  5      -  5      $ rx   )iterr4  r&  r%  r   s    ra   __iter__ImageFileDirectory_v2.__iter__  $    C&T]]);;<<rl   c                J    [         R                  " U R                  U-   U5      $ rx   )r   unpackr  )r   r   r   s      ra   r   ImageFileDirectory_v2._unpack  s    }}T\\C/66rl   c                J    [         R                  " U R                  U-   /UQ76 $ rx   )r   packr  )r   r   r   s      ra   r   ImageFileDirectory_v2._pack  s    {{4<<#-777rl   Hshortr;   longbzsigned bytehzsigned shortlzsigned longr   r   ddoubler	  long8r   c                    U$ rx   r9   r   r   r   s      ra   	load_byteImageFileDirectory_v2.load_byte      rl   c                    [        U[        5      (       a  [        U5      n[        U[        5      (       a  [        U45      nU$ rx   )r   rp   r   r:  r   r   s     ra   
write_byte ImageFileDirectory_v2.write_byte  s5    dK((t9DdC  $>Drl   r!   c                \    UR                  S5      (       a  US S nUR                  SS5      $ )N    rn   zlatin-1r   )endswithdecoder  s      ra   load_string!ImageFileDirectory_v2.load_string   s-    ==9D{{9i00rl   c                    [        U[        5      (       a  [        U5      n[        U[        5      (       d  UR	                  SS5      nUS-   $ )Nr\  r   r  )r   r   r   r:  rl  r   r   s     ra   write_string"ImageFileDirectory_v2.write_string  sA     eS!!JE%''LL)4Eu}rl   r'   r-   c           
        ^^ U R                  [        U5      S-   S3U5      nU4S jm[        U4S j[        US S S2   USS S2   5       5       5      $ )Nr%   r;   c                .   > T(       a  X4$ [        X5      $ rx   rp   ar  r   s     ra   combine4ImageFileDirectory_v2.load_rational.<locals>.combine      'A6>[->>rl   c              3  8   >#    U  H  u  pT" X5      v   M     g 7frx   r9   r_   numdenomr  s      ra   rb   6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>       V;UZSWS((;U   r!   r   r   r^   r9  zipr   r   r   valsr  s     ` @ra   load_rational#ImageFileDirectory_v2.load_rational  U    ||s4yA~.a0$7	? V3tCaCy$qtRSt*;UVVVrl   c                :   ^  SR                  U 4S jU 5       5      $ )Nrl   c              3  ^   >#    U  H"  nTR                   " S /[        US5      Q76 v   M$     g7f)2Ll    N)r   rv   r_   r~   r   s     ra   rb   7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>  s)      
LRDDJJt?odI>?Fs   *-r   r   r   s   ` ra   write_rational$ImageFileDirectory_v2.write_rational  s!    xx 
LR
 
 	
rl   r+   c                    U$ rx   r9   r  s      ra   load_undefined$ImageFileDirectory_v2.load_undefined  r  rl   c                    [        U[        5      (       a  [        U5      n[        U[        5      (       a  [        U5      R	                  SS5      nU$ )Nr\  r   )r   rp   r   r   rl  r  s     ra   write_undefined%ImageFileDirectory_v2.write_undefined"  s@    e[))JEeS!!J%%gy9Erl   
   c           
        ^^ U R                  [        U5      S-   S3U5      nU4S jm[        U4S j[        US S S2   USS S2   5       5       5      $ )Nr%   r  c                .   > T(       a  X4$ [        X5      $ rx   r  r  s     ra   r  ;ImageFileDirectory_v2.load_signed_rational.<locals>.combine.  r  rl   c              3  8   >#    U  H  u  pT" X5      v   M     g 7frx   r9   r  s      ra   rb   =ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>1  r  r  r!   r   r  r  s     ` @ra   load_signed_rational*ImageFileDirectory_v2.load_signed_rational*  r  rl   c                :   ^  SR                  U 4S jU 5       5      $ )Nrl   c           	   3  `   >#    U  H#  nTR                   " S /[        USS5      Q76 v   M%     g7f)2lii   N)r   r   r  s     ra   rb   >ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>5  s0      
 JJtP4T9hOPs   +.r   r  s   ` ra   write_signed_rational+ImageFileDirectory_v2.write_signed_rational3  s!    xx 

 
 	
rl   c                    UR                  U5      n[        U5      U:w  a  SU S[        U5       S3n[        U5      eU$ )Nz&Corrupt EXIF data.  Expecting to read  bytes but only got z. )readr^   OSError)r   fpr   retr  s        ra   _ensure_read"ImageFileDirectory_v2._ensure_read:  sN    ggdms8t%%)F*>s3xjL  #,
rl   c           
        U R                  5         UR                  5       U l         U R                  (       a"  U R	                  SU R                  US5      5      O!U R	                  SU R                  US5      5      S   n[        U5       GH  nU R                  (       a"  U R	                  SU R                  US5      5      O!U R	                  SU R                  US	5      5      u  pEpg[        R                  " X@R                  5      R                  n[        R                  " US
5      n	SU SU SU	 SU S3	n
 U R                  U   u  pXk-  nXR                  (       a  SOS:  a{  UR                  5       nU R	                  U R                  (       a  SOSU5      u  nU
SU SU 3-  n
UR#                  U5        [$        R&                  " X5      nUR#                  U5        OUS U n[)        U5      U:w  a@  [*        R,                  " SU S[)        U5       SU 35        [        R!                  U
5        GM  U(       d  [        R!                  U
5        GM  XpR.                  U'   XPR0                  U'   U
SUS:  a  SU-  O
[3        U5      -   -  n
[        R!                  U
5        GM     U R                  (       a"  U R	                  SU R                  US5      5      O!U R	                  SU R                  US5      5      u  U l        g ! [         a    [        R!                  SX5         GM  f = f! [6         a)  n
[*        R,                  " [9        U
5      5         S n
A
g S n
A
ff = f)Nr	  r-   r  r!   r   HHQ8s   HHL4sr<   unknownztag:  (
) - 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 
 - value: rC   <table: %d bytes>)r  tellr  r  r   r  ranger   r/  r  r  r   getr   KeyErrorloggerdebugseekr   
_safe_readr^   ro  rp  r&  r  r
  r  r  r   )r   r  	tag_countir;  r<  countr   tagnametypnamer  	unit_sizer=  r   hereoffsets                   ra   loadImageFileDirectory_v2.loadD  s   

wwy=	 == S$"3"3B":;\\#t'8'8Q'?@	I
 9% }} LL$*;*;B*CDgt/@/@R/HI &% #//#zz:??))C3gYbZy3%qI)-)<)<S)A&I (115779D $DMMSsD QIV_TF2DVHMMCGGFO$//9DGGDM;Dt9$MM--1F2Fs4yk R)),/
 LL%LL%%)c"$'S!|26)'$.d  S!] &d == S$"3"3B":;\\#t'8'8Q'?@ TYG   LL!;SFP  	MM#c(#	s=   DL) 7LF8L)  L&!L) %L&&L) )
M3MMc                   U R                  S[        U R                  5      5      n/ nU[        U5      -   [        U R                  5      S-  -   S-   nS n[        U R                  R	                  5       5       GHv  u  pVU[
        :X  a  [        U5      nU R                  R                  U5      n[        R                  SXW[        U5      5        U[        R                  :H  =(       a    [        U[        5      nU(       a\  U R                  S:X  a  Sn	OSn	[!        XS9n
U R                  U   nUR	                  5        H	  u  pXU'   M     U
R#                  U5      nO0[        U[$        5      (       a  UOU4nU R&                  U   " U /UQ76 n[        R(                  " XPR*                  5      R,                  nU(       a  S	O[.        R                  " US
5      nSU SU SU SU S3	nUS[        U5      S:  a  S[        U5      -  O
[1        U5      -   -  n[        R                  U5        U(       a  SnOJU[        R2                  [        R4                  [        R6                  4;   a  [        U5      nO[        U5      n[        U5      S::  a(  UR9                  XWUUR;                  SS5      S45        GM:  UR9                  XWUU R                  SU5      U45        U[        U5      S-   S-  S-  -  nGMy     UbK  X4   u  pWnpnU(       a  Sn[=        U5      eU R                  SU R?                  SU5      S   U-   5      nXWUXn4X4'   U HH  u  pWnpn[        R                  SXWU[        U5      [        U5      5        X R                  SXWUU5      -  nMJ     US-  nU H%  u  pWnpnX.-  n[        U5      S-  (       d  M   US-  nM'     U$ )Nr  r<   r%   zTag %s, Type: %s, Value: %sr  s   II*    s   MM *   )r  ifdr  zsave: r  r  r  r  r>   r  r   r  rl   r;   r!   z&multistrip support not yet implementedr   z%s %s %s %s %sr  s       ) r   r^   r%  sortedr.  STRIPOFFSETSr  r  r  r  r
  r   rg  r   r*  r  r  tobytesr9  r   r/  r  r  r   r   rk  rj  ra  appendljustNotImplementedErrorr   )r   r  resultentriesstripoffsetsr;  r   r<  rr  r  r  r   ifd_tag	ifd_valuer   r  r  r  r  s                      ra   r  ImageFileDirectory_v2.tobytes  sY   CT]]!34#f+%DMM(:R(??!C !!4!4!67JCl""7|,,""3'CLL6$u+NHMM)Ej.EF<<3&7C7C+C;s+*0,,.&G#,L +9{{6*",UE":":++C0??ooc::6;;G%e599S)+DG7)2cU*WIRuAFC<36t9?#c$i/F C LL 8J8JKKD	F4yA~%Au1EsKL%C1H$OP3t9q=Q.22Q 8V #+2+@(CeU>)#..JJsDLLe$<Q$?&$HIE$'eU$@G! -4(CeULL)3UDKdTjj#E5AAF -4
 	+ -4(CeUNF4y1}}% -4
 rl   c                   UR                  5       S:X  a/  UR                  U R                  U R                  SSS5      -   5        UR                  5       nU R	                  U5      nUR                  U5        U[        U5      -   $ )Nr   HL*   r-   )r  writer  r   r  r^   )r   r  r  r  s       ra   saveImageFileDirectory_v2.save  se    779>HHT\\DJJtR$;;<f%
F##rl   )r  r  r  r'  r  r  r&  r$  r%  r  r  r  )s   II*     NN)r  r:  rj   zbytes | Noner  
int | Noner   None)r   r   )r   r   r   r   r   r  r   r   )r;  r   r   r  r   rL   )8r   r   r   r   r   r   __annotations__r   r   r   rj   r  r   setterr  r+  r1  r5  r>  rB  rG  rF  rw  r{  r   r   listmapr  r   re  rg  SIGNED_BYTErf  rh  FLOATri  IFDLONG8r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r9   rl   ra   r  r    s   :x VXNRW57O27 )# 	#!#! #! 	#!
 
#!J /0F/0F     	
<	<3N`%
=78 	g.V,%%sM:&&^<%%sM:g.#x0sF+g.
	
" a  a  a1 1
 a  aW W a
 

 a  a  b!W W b
 
AFKZ$rl   r  r   r   r   write_c                     ^  \ rS rSr% SrU 4S jr\" S 5      r\" S 5      rS\	S'    \
S 5       rSS	 jrS
 rSS jrS rS rS rSrU =r$ )ImageFileDirectory_v1i  a  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                4   > [         TU ]  " U0 UD6  SU l        g )NT)superr   r  )r   r   kwargs	__class__s      ra   r   ImageFileDirectory_v1.__init__  s    $)&)rl   c                    U R                   $ rx   )r$  r   s    ra   r   ImageFileDirectory_v1.<lambda>   s    rl   c                    U R                   $ rx   )r&  r   s    ra   r   r    s    DMMrl   zdict[int, int]r  c                    U " UR                   S9nUR                  Ul        UR                  Ul        UR                  Ul        U$ )a  Returns 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`

ri   )rj   r&  r  r  )clsoriginalr  s      ra   from_v2ImageFileDirectory_v1.from_v2  s<     )((&&==
rl   c                    [        U R                  S9n[        U R                  5      Ul        [        U R                  5      Ul        [        U R
                  5      Ul        U$ )a  Returns 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`

ri   )r  rj   r*  r&  r  r%  )r   r  s     ra   to_v2ImageFileDirectory_v1.to_v2  sG     $4;;7DMM*4<<(DMM*
rl   c                H    XR                   ;   =(       d    XR                  ;   $ rx   )r$  r&  rA  s     ra   rB  "ImageFileDirectory_v1.__contains__*  rD  rl   c                j    [        [        U R                  5      [        U R                  5      -  5      $ rx   )r^   r4  r&  r$  r   s    ra   r5  ImageFileDirectory_v1.__len__-  r7  rl   c                j    [        [        U R                  5      [        U R                  5      -  5      $ rx   )rz  r4  r&  r$  r   s    ra   r{  ImageFileDirectory_v1.__iter__0  r}  rl   c                :    S H  nU R                  XU5        M     g N)FT)rF  )r   r;  r   r   s       ra   rG  !ImageFileDirectory_v1.__setitem__3  s    'JMM#j1 (rl   c           	         XR                   ;  aQ  U R                  U   nU R                  U   nU R                  U   u  pES H  nU R	                  X" XU5      U5        M     U R                   U   n[        U[        [        45      (       d  U4nU$ r/  )r$  r&  r  r   rF  r   r9  r:  )r   r;  r   r<  r   r=  legacyrr   s           ra   r>  !ImageFileDirectory_v1.__getitem__7  s    mm#==%D,,s#C //4MD'c74v#>G (mmC #u~..&C
rl   r  )r   r  r   )r   r   r   r   r   r   r   tagstagdatar  classmethodr#  r&  rB  r5  r{  rG  r>  r   __classcell__r  s   @ra   r  r    se    $  ./D12G ! ""<<=2
 
rl   r  c                     ^  \ rS rSrSrSrSrSU 4S jjrSS jr\	S 5       r
SS jrSS	 jrSS
 jrS rU 4S jrSS jrS rS rSrU =r$ )TiffImageFileiL  TIFFz
Adobe TIFFFc                D   > S U l          S U l         [        TU ]  X5        g rx   )tag_v2r;  r  r   )r   r  filenamer  s      ra   r   TiffImageFile.__init__Q  s$    5"&rl   c                   U R                   R                  S5      nUS   S:X  a  XR                   R                  S5      -  n[        U5      U l        SU l        U R                  R
                  =U l        U l        SU l        U R                   U l	        / U l
        SU l        [        R                  S5        [        R                  SU R                  5        [        R                  S[        U5      5        U R                  S	5        g)
z#Open the first image in a TIFF filer-   r!   r  Nrn   z*** TiffImageFile._open ***z- __first: %sz	- ifh: %sr   )r  r  r  r=  r  r  _TiffImageFile__first_TiffImageFile__next_TiffImageFile__frame_fp
_frame_pos	_n_framesr  r  r
  _seek)r   r  s     ra   _openTiffImageFile._openZ  s     ggll1oq6R<77<<?"C+C0  &*[[%5%55t{77%'%)23_dll3[$s), 	

1rl   c                :   U R                   c  U R                  5       nU R                  [        U R                  5      5        U R                   c1  U R                  U R                  5       S-   5        U R                   c  M1  U R                  U5        U R                   $ )Nr   )rF  r  rG  r^   rE  r  )r   currents     ra   n_framesTiffImageFile.n_framesu  sn    >>!iikGJJs4??+,..(

499;?+ ..(IIg~~rl   c                   U R                  U5      (       d  gU R                  U5        [        R                  " U R                  5        [        R
                  R                  U R                  U R                  5      U l        g)z%Select a given frame as current imageN)	_seek_checkrG  r   _decompression_bomb_checkr   corenewmodeim)r   frames     ra   r  TiffImageFile.seek  sT    &&

5 	''		2**..DII6rl   c                &   U R                   U l        U R                  R                  5         [        U R                  5      U::  Ga  U R
                  (       d  Sn[        U5      e[        R                  SUU R                  U R
                  U R                  R                  5       5        U R
                  S:  a  Sn[        U5      eU R                  R                  U R
                  5        U R                  R                  U R
                  5        [        R                  SU R                  R                  5       5        U R                  R                  U R                  5        U R                  R                  U R                  ;   a  SU l        OU R                  R                  U l        U R
                  S:X  a
  US-   U l        [        U R                  5      S:X  a  U R
                  S:g  U l        U =R                  S-  sl	        [        U R                  5      U::  a  GM  U R                  R                  U R                  U   5        U R                  R                  U R                  5        [$        U R                  ;   a!  U R                  [$           U R&                  S'   OSU R&                  ;   a  U R&                  S	 U R)                  5         [*        R-                  U R                  5      =U l        U l        Xl	        U R3                  5         g )	Nzno more images in TIFF filez9Seeking to frame %s, on frame %s, __next %s, location: %sl            zUnable to seek to framezLoading tags, location: %sr   r   xmp)rD  r  r  r^   rE  rB  EOFErrorr  r  rC  rn  r  r  r=  r  r  rF  is_animatedXMPr_  _reload_exifr  r#  r;  r  _setup)r   rU  r  s      ra   rG  TiffImageFile._seek  s   (( 	$//"e+;;3sm#LLK {{e#/ o%GGLL%OO""4;;/LL5tww||~FKKTWW%{{4??2  "kk..{{a!&4??#q(#';;!#3 LLAL9 $//"e+: 	T__U+,!$++#{{3/DIIedii		% 3;;DKKHH48rl   c                    U R                   $ )zReturn the current frame number)rC  r   s    ra   r  TiffImageFile.tell  s    ||rl   c                   0 nU R                   R                  [        R                  R                  5      nU(       a  USS S:X  a  [        USS 5      n[        R                  " US   S-   S-  5      S-  n[        USU-   SU-    5      nUSU-   SU-   U-    nSU0X'   U[        R                  " SU-   U-   S-  5      S-  S nUSS S:X  a  M  U$ )	a  
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.
Nr%   s   8BIMr)   r   r!   r  r   )	r=  r  r   BaseImageResourcesi16mathceili32)r   blocksrr   idnr   r   s          ra   get_photoshop_blocks"TiffImageFile.get_photoshop_blocks  s     kkoohmm::;bq'W$Qq]IIs1vzQ./!33q1urAv./26BFTM2$d^
$))R!Vd]a$781<>? bq'W$ rl   c                   > U R                   (       a!  U R                  (       a  U R                  5       $ [        TU ]  5       $ rx   )tileuse_load_libtiff_load_libtiffr  r  )r   r  s    ra   r  TiffImageFile.load  s-    99..%%''w|~rl   c                   U R                   (       d`  SU l        U R                  R                  5         U R	                  5       n[
        R                   H  nX!;  a  M
  UR                  U5        M     [        R                  " U SS9  [        R                  R                  U R                  ;   a&  U R                  [        R                  R                  	 g g )NT)in_place)rZ  !_close_exclusive_fp_after_loadingr  r  getexifr   TAGS_V2_GROUPSget_ifdr   exif_transposer   rb  Orientationr=  )r   exifkeys      ra   load_endTiffImageFile.load_end  s     59D2 GGLLN <<>D..?S! /
 	t4==$$3HMM556 4rl   c                H   [         R                   R                  U 5        U R                  5         [        U R                  5      S:X  d  Sn[        U5      eU R                  S   S   n[        U R                  S   S   5      n [        U R                  S5      =(       a    U R                  R                  5       n[        U R                  S5      (       a  U R                  R                  5         U(       a  XCS'   [         R                  " U R                  S	[        U5      U R                  5      n UR                  U R                   U5        U R$                  =(       a    U R&                  (       + n[        U R                  S5      (       aA  [(        R+                  S5        UR-                  U R                  R/                  5       5      u  pOU(       aK  [(        R+                  S5        U(       d  U R                  R1                  S5        UR-                  S5      u  pO[[(        R+                  S5        U R                  R1                  S5        UR-                  U R                  R3                  5       5      u  p/ U l        SU l        U R7                  5         U(       a!  U R                  R9                  5         SU l        U	S:  a  [        U	5      e[         R                   R                  U 5      $ ! [
         a    Sn GNf = f! ["         a  nS
n[        U5      UeSnAff = f)zOOverload method triggered when we detect a compressed tiff
Calls out to libtiffr   zNot exactly one tiler   r#   filenoflushFr!   libtiffzCouldn't set the imageNgetvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.s   fpfpz+don't have fileno or getvalue. just reading)r   r  load_preparer^   rn  r  r  r   r  r  r  _getdecoderrS  r9  decoderconfigsetimagerT  rn  _exclusive_fprZ  r  r  r  r  r  r  readonlyr|  close)
r   r  extentsr   r  decodereclose_self_fprj  errs
             ra   rp  TiffImageFile._load_libtiff  sP    	499~"(C#, ))A,q/DIIaLO$

	(+@0@B tww(( G##IIy%+t/A/A
	&TWWg.
 **C43C3C/C477J'' LLPQ^^DGG$4$4$67FAsLLNO Q^^G,FAs LLFGGGLLO^^DGGLLN3FA	GGMMODG7#,{{%%q  	 B	  	&*C#,A%	&s+   A,K1 2L 1L L
L!LL!c                   SU R                   ;   a  Sn[        U5      e[        U R                   R                  [        S5         U l        U R                   R                  [        S5      U l        U R                   R                  [        S5      nU R
                  S:X  a  SnU R                   R                  [        S5      n[        R                  S5        [        R                  SU R
                  5        [        R                  S	U5        [        R                  S
U R                  5        [        R                  SU5        [        R                  SU R                  R                  [        5      5        [        U R                   R                  [        5      5      n[        U R                   R                  [         5      5      nXE4U l        [        R                  SU R$                  5        U R                   R                  [&        S5      n[)        U5      S:  a$  [+        U5      [-        U5      s=:X  a  S:X  a  O  OSnU R                   R                  [.        S5      nU R                   R                  [0        S5      nUS;   a  Sn	OUS:X  a  Sn	OSn	U	[)        U5      -  n	[)        U5      n
U R                   R                  [2        U R
                  S:X  a  US;   a  SOS5      nU[4        :  a#  [        R7                  SU5        Sn[9        U5      eX:  a  USU nOX:  a
  U
S:X  a  X{-  n[)        U5      U:w  a  Sn[9        U5      eU R                   R:                  UUUUU4n[        R                  SU5         [<        U   u  U l        n[        R                  SU5        [        R                  SU RB                  5        U R
                  U RD                  S'   U R                   R                  [F        S5      nU R                   R                  [H        S5      nU(       a  U(       a  U R                   R                  [J        5      nUS:X  a  UU4U RD                  S '   OUUS:X  a  US!-  US!-  4U RD                  S '   O7Uc#  UU4U RD                  S '   UU4U RD                  S"'   OUU4U RD                  S"'   S=n=nn/ U l&        [N        =(       d    U R
                  S#:g  U l(        U RP                  (       a  US:X  a5  USS S-   USS -   n[        R                  SU5        [<        U   u  U l        nUS$:X  a  S%nS&U;   a  URS                  S&S'5      nS(U;   a  URS                  S(S'5      nUS:X  a"  U R
                  S):X  a  U R                  S:X  a  S*nXR
                  S+U R                   RT                  4nU RL                  RW                  S,SSXE4SU45        GO[X        U R                   ;   d  [Z        U R                   ;   Ga  [X        U R                   ;   aC  U R                   [X           nU R                   R                  [\        U5      nU R$                  S   nOQU R                   [Z           nU R                   R                  [^        5      nU R                   R                  [`        5      nU H  nUU-   U:  a  U[c        U5      -  S--  nOSnUnU R                  S:X  a
  UU   nUU	-  nU[        U5      S4nU RL                  RW                  U R
                  UU[-        UU-   U5      [-        UU-   U5      4UU45        UU-   nUU R$                  S   :  d  M  SUU-   nnUU R$                  S   :  d  M  S=nnUS-  nM     O"[        R                  S.5        Sn[9        U5      e[d        U R                   ;   a   U R                   [d           U RD                  S/'   U RB                  S0;   a[  U R                   [f            Vs/ s H  n[i        US1-  5      PM     nn[j        Rl                  " S2S3Ro                  U5      5      U l8        gg! [@         a(  n[        R                  S5        Sn[9        U5      UeSnAff = fs  snf )4z-Setup this image object based on current tagsi  z+Windows Media Photo files not yet supportedr   r   r*   r)   z*** Summary ***z- compression: %sz - photometric_interpretation: %sz- planar_configuration: %sz- fill_order: %sz- YCbCr subsampling: %sz
- size: %sr8   r9   )r!   r)   r-   r#   r'   r%   )r!   r)   z.More samples per pixel than can be decoded: %sz#Invalid value for samples per pixelNzunknown data organizationzformat key: %sz- unsupported formatzunknown pixel modez- raw mode: %sz- pil mode: %scompressionr!   dpigRQ@
resolutionr    r=   I;16Nz;16Bz;16Nz;16Lr,   rJ   Fr  r-   z- unsupported data organizationicc_profilerV   rX   r   RGB;Lrl   )9r=  r  COMPRESSION_INFOr  COMPRESSION_compressionPLANAR_CONFIGURATION_planar_configurationPHOTOMETRIC_INTERPRETATION	FILLORDERr  r  r;  YCBCRSUBSAMPLINGr   
IMAGEWIDTHIMAGELENGTH_sizer   SAMPLEFORMATr^   r|   r{   BITSPERSAMPLEEXTRASAMPLESSAMPLESPERPIXELMAX_SAMPLESPERPIXELerrorr  rj   	OPEN_INFO_moder  rS  r_  X_RESOLUTIONY_RESOLUTIONRESOLUTION_UNITrn  READ_LIBTIFFro  r   r  r  r  TILEOFFSETSROWSPERSTRIP	TILEWIDTH
TILELENGTHsum
ICCPROFILECOLORMAPr   r   r    r   palette)r   r  photo	fillorderxsizeysizesample_format	bps_tupleextra_tuple	bps_countbps_actual_countsamples_per_pixelr{  rawmoder  xresyresresunitxylayerr  offsetsr  wr  stridetile_rawmoder  r  s                                 ra   r]  TiffImageFile._setupB  sF    T[[ ?C#, -T[[__[!-LM%)[[__5I1%M"  :A> +EKKOOIq1	&'($*;*;<7?143M3MN'3.=M0NO DKKOOJ/0DKKOOK01\
\499-d;}!c-&8C<N&SRS&S !MKKOOM48	kkoolB7IIaZIIS%%	y> KKOO""k1evoA1

 22LL@BS 8Cc""/ ""4#45I16F!6K "5Iy>..-Cc"" KK
 	%s+	*"+C.DJ 	%w/%tyy1#'#4#4		- {{|Q/{{|Q/Dkkooo6G!|$($<		% A$(4K#=		% $($<		%  +/*		,'*.*		,' A	 , J0A0AU0J   A~"1gns12w.-s3 '0n#
G
 & ! !//&&9 !//&&9
 
%%/..!3 ++UDKK4F4FGAIIi!Q)=q!DET[[(K4;;,Ft{{*++l3KKOOL%8IIaL ++k2KKOOI.KKOOJ/!q55=Y/!3FF&--2#*5>Li'F!3v;2		  ))As1q5%0#a!eU2CD	 E		!$a!eqADIIaL( !	A
7 ": LL:;-Cc"" $'+{{:'>DIIm$ 99#-1[[-BC-Br!s(|-BGC'++GSXXg5FGDL $A  	*LL/0&Cc")	*B Ds   ;a  9a5 
a2
#a--a2)__first__frame__nextrt  r  rD  rE  r  rF  r  r  r  r  rT  rZ  r  r  r;  r=  rn  ro  )NNr  )rU  r   r   r  r   )r   r   r   r   formatformat_descriptionrt  r   rH  r   rL  r  rG  r  rk  r  r|  rp  r]  r   r7  r8  s   @ra   r:  r:  L  sf    F%(-%'6  	7.`*
7*S&j^H ^Hrl   r:  r:   r;   rI   rV   rX   r@   rG   r=   rA   rD   rE   rJ   rM   rK   rY   YCbCrr\   rH   r?   rB   rF   )rB   rF   c                    [         U R                     u  p4pVpx[	        US9nU R
                  nU R                  n US   nUc  SnOUS:X  a  SnOUS:X  a  S	n[        =(       d    US:g  nS
U[        '   U R                  S   U[        '   U R                  S
   U[        '   SU;   a  US   nOKSU;   aC  US   n[        U[         5      (       a(  ["        R$                  " 5       nUR'                  U5        UnO0 n[(        R+                  S[-        U5      5        [        U[.        5      (       a  UR1                  5       nU H|  n[        U["        R$                  5      (       a)  U[2        R4                  ;   a  UR7                  U5      UU'   OUR                  U5      UU'    UR8                  U   UR8                  U'   M~     0 n[=        U S5      (       a  U R>                  R1                  5       n0 UE[A        U S0 5      En[B        [D        4 H  nUU;   d  M  UU	 M     [=        U S5      (       a  [F        [H        [J        [L        [N        [P        4 H  nUU RR                  ;   d  M  U[L        :X  a@  U RR                  R8                  U   [2        RT                  [2        RV                  4;  a  UU	 M_  U RR                  U   UU'   U RR                  R8                  U   UR8                  U'   M     UR                  SU R                  R                  S5      5      nU(       a	  UU[X        '   [Z        S4[H        S4[J        S4[H        S4[J        S4[F        S4[\        S4[^        S4[`        S4[b        S44
 H  u  nnUU;   d  M  UU   UU'   M     UR                  S5      nU(       a!  SU[F        '   US   U[H        '   US
   U[J        '   US:w  a)  X{[d        '   [g        U5      S
:w  a  [g        U5      U[h        '   Ub  X[j        '   US
:w  a  Xk[D        '   [l        U;  a	  X[[l        '   OU R                  S;   a  U[l           S:X  a  U R                  S:X  ao  U Ro                  5       nUR'                  5       n[q        URr                  5       H3  n[q        URt                  5       H  nUUU4   S :X  a  SOS UUU4'   M     M5     Un O[v        Rx                  " U 5      n U R                  S!;   ax  U Rz                  R}                  S"S#5      n/ n[g        U5      S$-  n[q        S$5       H4  n UUUU -  UU S
-   -    V!s/ s H  n!U!S%-  PM
     sn!-  nUS/S%U-
  -  -  nM6     UU[~        '   U[           U[           n#n"[g        U5      U"US   -  S&-   S'-  -  n$[        U;  ac  U(       aI  UR                  S([        5      n%U$S:X  a  S
O[        U%U$-  U#5      n&US:X  a  [        U&S&-   S'-  S'-  U#5      n&OU#n&U&S:X  a  S
n&U&U[        '   U$S:X  a  S
OU$U[           -  n'U#U[           -   S
-
  U[           -  n(U'S):  a!  [2        R                  UR8                  [        '   U'4U(S
-
  -  U$U#-  U'U(S
-
  -  -
  4-   U[        '   [        [q        SU'U(-  U'5      5      U[        '   [        R                  US
5      U[        '   U R                  S*:X  a8  [        S+[        S,0R                  5        H  u  nn)UR                  UU)5        M     [        [        [        [        /n*U(       Ga  S-U;   aO  US-   n+[        U+[        5      (       a  U+S:  d  U+S.:  a  S/n
[        U
5      eUS:w  a  S0n
[        U
5      eU+U[        '   [(        R+                  S15        [(        R+                  S2[        UR                  5       5      5        Sn,[=        US35      (       a6   UR                  S5        [        R                  " UR                  5       5      n,0 n-U*[        [        [        [        [        [        /-  n*[d        US   0n.[        R                  " UR                  5       UR                  5       5       GH  u  nn)U[2        R                  ;  a  [A        ["        R                  S4S55      (       d  M=  UUR8                  ;   a  UR8                  U   U-U'   OS[        U)[        [        [        [         45      (       d  M  [2        R                  " U5      R                  n/U/(       a  U/U-U'   UU.;  d  M  UU*;  d  M  [        U)[        5      (       a  U)R                  S6S75      S8-   U.U'   M  [        U)[        5      (       a  [        U)5      U.U'   GM  U)U.U'   GM      [D        U.;   a)  [g        U.[D           5      S
:X  a  U.[D           S   U.[D        '   [(        R+                  S9[        U.R                  5       5      5        U R                  S:;   a  S;n[-        U.R                  5       5      n0U0R                  5         X>U,UU0U-4n1["        R                  " U R                  S<U1U5      n2U2R                  U Rz                  S=U R                  -   5         U2R                  S>5      S
S  u  n3n4U,(       d  UR                  U45        U3(       a  OM9  U,(       a   [        R                  " U,5        U3S:  a  S?U3 S@3n
[        U
5      eOIU* H  nUU	 M     UR                  U5      n5[        R                  " XSS=U R                  -   U5UU$S
44/5        SAU;   a  Xlo        g g ! [         a!  n	SU R                   S3n
[        U
5      U	eS n	A	ff = f! [         a6    U R                  R                  S5      n[        U[        5      (       a  S n GNEf = f! [:         a     G
M\  f = fs  sn!f ! [        R                   a     GNf = f! [         a     GNf = f)BNzcannot write mode z as TIFFri   r  r    r*   r,   r2   r.   r   r   tiffinforz  zTiffinfo Keys: %sr;  r=  r  descriptionr  x_resolutiony_resolutionresolution_unitsoftware	date_timeartist	copyrightr  r!   r8   )r:   r;   r:   r   r  rJ   r  r#   r   r+   r-   
strip_sizer   r  )r   r   )r   r      r   r  r   qualityd   zInvalid quality settingz5quality setting only supported for 'jpeg' compressionzSaving using libtiff encoderz	Items: %sr  re   Fr\  r   r  zConverted items: %s)r?   r=   r  r  rN   i @  zencoder error z when writing image file_debug_multipage)p	SAVE_INFOrS  r  r  r  encoderinfoencoderconfigr_  r  r   r   WRITE_LIBTIFFr  r   r  r  r:  r   Exifr  r  r  r  r  r&  r   rv  rw  r  r"  r   r;  r   EXIFIFDr  r  r  r  IPTC_NAA_CHUNKPHOTOSHOP_CHUNKr[  r=  rk  ra  r  IMAGEDESCRIPTIONSOFTWARE	DATE_TIMEARTIST	COPYRIGHTr  r^   r  r  r  copyr  heightwidthr   invertrT  
getpaletter  r  
STRIP_SIZEr{   rg  STRIPBYTECOUNTSr9  r  COMPRESSION_INFO_REVr  r  REFERENCEBLACKWHITEr.  
setdefaultr  r  r  TILEBYTECOUNTSrn  JPEGQUALITYr  r  osdupr  ioUnsupportedOperationOSUBFILETYPETRANSFERFUNCTIONSUBIFD	itertoolschainLIBTIFF_CORErQ  r   r   r/  r`  rl  rp   sort_getencoderr  r  r  r  r   _saver  )6rT  r  r>  r  rj   r  r  bitsextrar  r  r  r  r  r  r  r_  rz  r{  
legacy_ifdsupplied_tagsr;  iccr  r  inverted_impxr  r  lutcolormapcolorsr  rL  r  r  r  im_strip_sizerows_per_stripstrip_byte_countsstrips_per_imager   	blocklistr  rD  typesattsr`  r4  r  encodererrcoder   r  s6                                                         ra   r  r  C  s
   "6?6H3
  v
.C..K$$M!-0 		#		&*3{e3G !"CggajC
OwwqzC [ :&	;	6"dE""::<DIIdOD
LL$d4j1$-..zz|dEJJ''C83J3J,J||C(CHxx}CH	#||C0CKK  Jr5VV\\^
?z?WR2%>?M 		 -c" r8 
C bii.(RYY->->s-CMM&&L . &c*!yy~CH')yy'8'8'=CKK$!
( //-])C
DC
J 
=)	|$	|$	~&	~&	+,	:	K 		K 	T ;"4(CH //%
 C
 OFLFLt|!Mt9>#&t9C !L{"L!,*/&'	J	3'A#Ba#G77c>'')K!!#B;--.{001A$&q!tHOqBq!tH 2 / B$B	ww+eeug.SQqA#fqj6QU;K*LM*LQS*LMMHsV|,,H  !Hz?C,qAY1tAw;?q01F3'OOL*EM"(A+Q3}7NPQ3RNf$!$~'9a&?1%Da!HNQN*L#q[fs<7H.HC--1c,6GGE!'/}}O$-/3Ca3GH
&*:Q*>??L C a"%557HIC ,//Q?C	ww'f!=
 %'JC NN3&	 J^DI#!),Ggs++w{gm/ o%f$M o%&C34[&"562x  
ffRYY[)
  	
 	
	 tAw' $//#))+}7J7J7LMJC
 (///uzz+H%PP#++%!$S!1E#J$US%e,DEE#??3/44D%)c
$3i#7eS)) %Wi @5 HDI{33 %eDI %DI/ N2 4C\(:$;q$@!%l!3A!6D*F4::<,@A 77''G
 DJJL!		3$>##BGGY=I 01#NN95ab9MGT   Q;"7)+CDC#, 
 CC "eVbgg-v7KLM	

 [(! )Y	  ""277)84cl!"  ggkk-0k3''K	T  		z Nt ** b  sd   l m n	!n)5n  n; 
m"l>>m<nn	
nn n87n8;
o	o	c                  *   \ rS rSr/ SQr1 SkrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS S
 jr\R                  4S jrSS jrS!S jrSS jrS"S jrS S jrS S jrS#S jrS#S jrS#S jrS#S jrS#S jrSS jrSS jr S$       S%S jjrSrg)&AppendingTiffWriteriw  )r   r   r   r!   r%   r-   r   r   r!   r%   r-   r%   r-   r%   r!   r%   r-   >       	  r      r   c                0   [        US5      (       a  Xl        SU l        O'Xl        SU l         [	        X(       a  SOS5      U l        U R                  R                  5       U l        U R                  5         g ! [
         a    [	        US5      U l         NMf = f)Nr  FTzw+bzr+b)	r   r   close_fpr  openr  r  	beginningsetup)r   fnrR  s      ra   r   AppendingTiffWriter.__init__  sx    2vF!DMI DM)b3%E: 

  )b%)s   A7 7BBc                   U R                   R                  U R                  [        R                  5        S U l        SU l        U R                   R                  S5      =U l        nU(       d  SU l	        g SU l	        US:X  a  U R                  S5        O%US:X  a  U R                  S5        OS	n[        U5      eU R                  5         U R                  5         g )
Nr   r%   TFrd   r  rc   r  zInvalid TIFF file header)r   r  r$  r  SEEK_SETwhereToWriteNewIFDOffsetoffsetOfNewPager  IIMMisFirst	setEndianRuntimeErrorskipIFDsgoToEnd)r   iimmr  s      ra   r%  AppendingTiffWriter.setup  s    DNNBKK0(,% 66;;q>)	DDL= NN3]"NN3,Cs##rl   c                   U R                   (       a  g U R                  R                  U R                  5        U R                  R	                  S5      nU(       d  g XR
                  :w  a  Sn[        U5      eU R                  5       nX0R                  -  nU R                  R                  U R                  5        U R                  U5        U R                  R                  U5        U R                  5         g )Nr%   z1IIMM of new page doesn't match IIMM of first page)r-  r   r  r+  r  r,  r/  readLongr*  	writeLongfixIFD)r   r2  r  
ifd_offsets       ra   finalizeAppendingTiffWriter.finalize  s    << 	D(()vv{{1~99ECs##]]_
***
D112z"Jrl   c                D    U R                  5         U R                  5         g rx   )r9  r%  r   s    ra   newFrameAppendingTiffWriter.newFrame  s    

rl   c                    U $ rx   r9   r   s    ra   	__enter__AppendingTiffWriter.__enter__  s    rl   c                H    U R                   (       a  U R                  5         g g rx   )r"  r  )r   r   s     ra   __exit__AppendingTiffWriter.__exit__  s    ==JJL rl   c                P    U R                   R                  5       U R                  -
  $ rx   )r   r  r+  r   s    ra   r  AppendingTiffWriter.tell  s    vv{{}t3333rl   c                    U[         R                  :X  a  XR                  -  nU R                  R	                  X5        U R                  5       $ rx   )r  r)  r+  r   r  r  )r   r  whences      ra   r  AppendingTiffWriter.seek  s8    R[[ ***FF#yy{rl   c                B   U R                   R                  S[        R                  5        U R                   R	                  5       nSUS-  -
  nSUs=:  a  S:  a'  O  O$U R                   R                  [        U5      5        U R                   R	                  5       U l        g )Nr   r>   )r   r  r  SEEK_ENDr  r  r:  r+  )r   pos	pad_bytess      ra   r1  AppendingTiffWriter.goToEnd  sj    Ar{{#ffkkm rM	y2FFLLy)*#vv{{}rl   c                    Xl         U R                    S3U l        U R                    S3U l        U R                    S3U l        g )Nr;   r  HHL)endianlongFmtshortFmt	tagFormat)r   rP  s     ra   r.  AppendingTiffWriter.setEndian  s=    ++a(;;-q) KK=,rl   c                *    U R                  5       nUS:X  a#  U R                  R                  5       S-
  U l        g U R                  R	                  U5        U R                  5       nU R                  R	                  US-  [        R                  5        M  )Nr   r%   r<   )r5  r   r  r*  r  	readShortr  SEEK_CUR)r   r8  num_tagss      ra   r0  AppendingTiffWriter.skipIFDs  sl    JQ040A-FFKK
#~~'HFFKK2r{{3 rl   c                8    U R                   R                  U5      $ rx   )r   r  r  s     ra   r  AppendingTiffWriter.write  s    vv||D!!rl   c                ~    [         R                  " U R                  U R                  R	                  S5      5      u  nU$ )Nr!   )r   r  rR  r   r  r  s     ra   rV  AppendingTiffWriter.readShort  s)    ==A?rl   c                ~    [         R                  " U R                  U R                  R	                  S5      5      u  nU$ rg   )r   r  rQ  r   r  r  s     ra   r5  AppendingTiffWriter.readLong  s)    ==tvv{{1~>rl   c                   U R                   R                  S[        R                  5        U R                   R	                  [
        R                  " U R                  U5      5      nUb  US:w  a  SU S3n[        U5      eg g )Nr%   wrote only  bytes but wanted 4	r   r  r  rW  r  r   r  rQ  r/  r   r   bytes_writtenr  s       ra   rewriteLastShortToLong*AppendingTiffWriter.rewriteLastShortToLong  h    B$V[[u%EF$!);.ABCs## *<$rl   c                   U R                   R                  S[        R                  5        U R                   R	                  [
        R                  " U R                  U5      5      nUb  US:w  a  SU S3n[        U5      eg g )Nra  r!   rb   bytes but wanted 2)	r   r  r  rW  r  r   r  rR  r/  re  s       ra   rewriteLastShort$AppendingTiffWriter.rewriteLastShort  sh    B$V[[%FG$!);.ABCs## *<$rl   c                   U R                   R                  S[        R                  5        U R                   R	                  [
        R                  " U R                  U5      5      nUb  US:w  a  SU S3n[        U5      eg g )Nr%   rb  rc  rd  re  s       ra   rewriteLastLong#AppendingTiffWriter.rewriteLastLong  ri  rl   c                    U R                   R                  [        R                  " U R                  U5      5      nUb  US:w  a  SU S3n[        U5      eg g )Nr!   rb  rk  )r   r  r   r  rR  r/  re  s       ra   
writeShortAppendingTiffWriter.writeShort$  sR    V[[%FG$!);.ABCs## *<$rl   c                    U R                   R                  [        R                  " U R                  U5      5      nUb  US:w  a  SU S3n[        U5      eg g )Nr%   rb  rc  )r   r  r   r  rQ  r/  re  s       ra   r6  AppendingTiffWriter.writeLong*  sR    V[[u%EF$!);.ABCs## *<$rl   c                X    U R                  5         U R                  R                  5         g rx   )r9  r   r  r   s    ra   r  AppendingTiffWriter.close0  s    rl   c                6   U R                  5       n[        U5       GHy  n[        R                  " U R                  U R
                  R                  S5      5      u  p4nU R                  U   nXe-  nUS:*  nU(       d.  U R                  5       U R                  -   n	U R                  U	5        X0R                  ;   a  U R
                  R                  5       n
U(       a5  U R                  XVS:H  US:H  S9  U R
                  R                  U
S-   5        OLU R
                  R                  W	5        U R                  XVS:H  US:H  S9  U R
                  R                  U
5        S =pGME  U(       d  GMO  U R
                  R                  S[        R                   5        GM|     g )Nr-   r%   r!   )isShortisLong)rV  r  r   r  rS  r   r  
fieldSizesr5  r+  rp  Tagsr  
fixOffsetsr  r  rW  )r   rX  r  r;  
field_typer  
field_size
total_sizeis_localr  cur_poss              ra   r7  AppendingTiffWriter.fixIFD4  s>   >>#xA%+]]4>>466;;q>%R"CU4J#+J!QH4+?+??$$V,ii&&++-OOa*PQ/ $  FFKK!,FFKK'OOa*PQ/ $  FFKK(#''Ar{{+= !rl   c                n   U(       d  U(       d  Sn[        U5      e[        U5       GH
  nU(       a  U R                  5       OU R                  5       nX`R                  -  nU(       a  US:  a  US:w  a  Sn[        U5      eU R                  U5        U R                  R                  S[        R                  5        U R                  [        R                  5        U R                  R                  S[        R                  5        M  U(       a  U R                  U5        M  U R                  U5        GM     g )Nz offset is neither short nor longr   r   znot implementedir-   )r/  r  rV  r5  r+  rg  r   r  r  rW  rs  r   rg  rl  rp  )r   r  rz  r{  r  r  r  s          ra   r~  AppendingTiffWriter.fixOffsetsW  s     v4Cs##uA)0T^^%dmmoF***F6U?A:+C&s++ ++F3C-.Ar{{+%%f-$$V,% rl   )r,  r$  r"  rP  r   r-  rQ  r  r+  rR  rS  r*  N)Fr  )r   r  )r   r   r   r  r   )rP  r   r   r  )r   r:  r   r
  )r   r   r   r  )FF)r  r   rz  r   r{  r   r   r  )r   r   r   r   r|  r}  r   r%  r9  r<  r?  rB  r  r  r)  r  r1  r.  r0  r  rV  r5  rg  rl  rp  rs  r6  r  r7  r~  r   r9   rl   ra   r  r  w  s    J(D2.
4 #%++ --	4"$$$$$!,H AF--#'-9=-	- -rl   r  c                   U R                   R                  5       nU R                  n[        UR	                  S/ 5      5      n[        U S5      (       d  U(       d  [        XU5      $ U R                  5       n [        U5       nU /U-    H~  nX8l         XHl        [        US5      (       d  Sn	OUR                  n	[        U	5       H@  n
UR                  U
5        UR                  5         [        XU5        UR                  5         MB     M     S S S 5        U R                  U5        g ! , (       d  f       N = f! U R                  U5        f = f)Nappend_imagesrL  r   )r  r  r  r  r  r   r  r  r  rL  r  r  r  r<  )rT  r  r>  r  r  r  cur_idxtfimsnfrr   s              ra   	_save_allr  s  s   ..%%'K$$M"=>M2z""=RX&&ggiG $tm+"-$1!sJ//C,,C :CHHSMHHJ#8,KKM	 & , % 	 %$ 	s%   7D6 B	D%D6 %
D3/D6 6E	z.tifz.tiffz
image/tiff)rj   r:  r   r   )rT  zImage.Imager  z	IO[bytes]r>  zstr | bytesr   r  )
__future__r   r  r  loggingre  r  r   ro  collections.abcr   	fractionsr   numbersr   r   typingr   r	   r
   r   r    r   r   r   r   r   r   _binaryr   rd  r   rg  r   
_deprecater   r   	getLoggerr   r  r  r  IFD_LEGACY_APIr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  	PREDICTORr  r  r  r  r  r  r  r  
JPEGTABLESr  r  r  r  r  r  r  r[  r  IMAGEJ_META_DATA_BYTE_COUNTSIMAGEJ_META_DATAr  r.  r  r  r|   r  rh   r   rQ  rk   rv   r   r   r   r   rp   r   r   r  r   
_IFDv2Baser  r   r  r   setattrr  ImageFileDirectoryr:  r  r  r  r  register_openr  register_saveregister_save_allregister_extensionsregister_mime)krL  s   00ra   <module>r     s  R # 	    	   *  $ = = J J ! !  ! 			8	$ 


 
  	   				
	
  	

	  %  u | x	
 x z { v  
= 
: 
 
> 
= 
?  
6!" 
6#$ 
6% * *:)?)?)AB)A)AB { D!T2{ D!T2	{
 D!T2{ D!T2{ D!T2
{ D!T2
{ D!T2{ D!T2{ D!T2{ D!T2{ D!T2{ D!T2{ D!T2{  D!T2!{" D!T2#{$ D!T2%{& D!T2'{( D!T2){* D!T2+{, D!T2-{. D!T2/{0 D!T21{2 D!T23{4 D!T25{6 D!T27{8 D!T29{: D!T2;{< D!T2={> D!T2
?{@ D!T2
A{B D!T2
C{D D!T2
E{F D!T2G{H D!T2I{J D!UB!1K{L D!UB!1M{N D!UB!1O{P D!UB!3Q{R D!UB!2S{T D!UBU{V D!UBW{X D!UBY{Z D!UB[{\ D!UB]{^ D!UB_{` D!UBa{b D!UBc{d D!UBe{f D!VT"Lg{h D!VT"Li{j D!Y#^k{l D!Y#^m{n D!Y#%5o{p D!Y#%5q{r D!\2&(8s{t D!\2&(8u{v D!\4(/w{x D!\4(/y{z D!_f-/?{{| D!_f-/?}{~ D!'35F{@ D!'35FA{B D!\4(*:C{D D!\4(*:E{F D!_f-/@G{H D!_f-/@I{J D!'35GK{L D!'35GM{N D!\4(*:O{P D!\4(*:Q{R D!_f-/@S{T D!_f-/@U{V D!'35GW{X D!'35GY{Z D!\6*,<[{\ D!\6*,<]{^ D!\2&(:_{` D!\2&(:a{b D!%r*,@c{d D!%r*,@e{f D!%t,.Ag{h D!%t,.Ai{j D!%t,.Bk{l D!%t,.Bm{n D!%t,.Bo{p D!%t,.Bq{r D!T2s{t D!T2u{v D!T2w{x D!T2y{z D!T2{{| D!T2}{~ D!T2{@ D!T2A{B D!T2C{D D!T2E{F D!T2G{H D!T2I{J D!T2
K{L D!T2
M{N D!VT"KO{P D!VT"LQ{R D!VT"LS{T D!T2U{V D!T2W{X D!\2&(8Y{Z D!\2&(8[{\ D!_d+->]{^ D!_d+->_{` D!'02Da{b D!'02Dc{d D!%r*,@e{f D!T2
g{h D!T2
i{n D!Y#_o{p D!Y#_q{r D!Y#^s{t D!Y#^u{	z AyAA  uzz8$??:B?"%" y'( y'x	" S)JJr$J r$j (6  $(7  %IC<<S!D!U4&>>#3Fq3IJ!VD6?OC4HI  OS$X1 Xx + THI'' TH| #r1at	$ #r1at	$	
 	4Q61
% #r1at	$ 	4Q61
% '2q!UD	) VRAud+ gr1a- '2q!UD	) 
E2q!Y- VRA|Q/ VRA|Q/ VRA|T2  gr1aD1!" 
E2q!Y-#$ xQ5$/%& gr1a-'( Q5$/Q5$/+	2q"h	y- y-x>   M((- A   M((% 0   ,,i 8   -..0A B   M((, 7S@ Cs   +^?