ó
    EñiÊ  ã                  óÊ  • 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J	r	  S SK
Jr  S SKJrJrJr  SSK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  SSK J!r!  SSK"J#r#  Sr$\$(       a  S SK%J&r&  S SKJ'r'J(r(  SSKJ)r)  \RT                  " \+5      r,\RZ                  " S5      R\                  r/Sr0SSSSSSSSSSSS S!S"S#S$.r1\RZ                  " S%5      r2\Rf                  r4 S&\4-  r5  " S' S(\	5      r6 " S) S*\	5      r7SWS+ jr8SXSYS, jjr9 " S- S.5      r: " S/ S0\;5      r< " S1 S25      r= " S3 S4\5      r> " S5 S6\:5      r?SZS7 jr@ " S8 S9\R&                  5      rAS:S;S<S=S>S?S@S@S@SASBSCSDSESFSG.rBS[SH jrC " SI SJ5      rD " SK SL5      rES\SM jrF " SN SO\5      rG                S]SP jrHS^SQ jrI\CS4           S_SR jjrJS`SS jrK\R˜                  " \ARš                  \A\@5        \Rœ                  " \ARš                  \J5        \Rž                  " \ARš                  \I5        \R                   " \ARš                  STSU/5        \R¢                  " \ARš                  SV5        g)aé    )ÚannotationsN)ÚIntEnum)ÚFraction)ÚIOÚ
NamedTupleÚcasté   )ÚImageÚ
ImageChopsÚ	ImageFileÚImagePaletteÚImageSequence)Úi16be)Úi32be)Úo8)Úo16be)Úo32be)Ú	deprecate)ÚDeferredErrorF)ÚCallable)ÚAnyÚNoReturn)Ú_imagings   \w\w\w\ws   ‰PNG

)Ú1r   )ÚLúL;2)r   úL;4)r   r   )úI;16úI;16B)ÚRGBr    )r    zRGB;16B)ÚPúP;1)r!   úP;2)r!   úP;4)r!   r!   )ÚLAr%   )ÚRGBAzLA;16B)r&   r&   )r&   zRGBA;16B))r	   r   )é   r   )é   r   )é   r   )é   r   )r)   r'   )r*   r'   )r	   é   )r'   r+   )r(   r+   )r)   r+   )r)   r(   )r*   r(   )r)   é   )r*   r,   s   ^ÿ* ÿ*$é@   c                  ó$   • \ rS rSrSr Sr SrSrg)ÚDisposalén   r   r	   r'   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚOP_NONEÚOP_BACKGROUNDÚOP_PREVIOUSÚ__static_attributes__r1   ó    ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/PIL/PngImagePlugin.pyr/   r/   n   s$   † Ø€Gðð €Mðð
 €Kòr:   r/   c                  ó   • \ rS rSrSr SrSrg)ÚBlendéƒ   r   r	   r1   N)r2   r3   r4   r5   Ú	OP_SOURCEÚOP_OVERr9   r1   r:   r;   r=   r=   ƒ   s   † Ø€Iðð
 €Gòr:   r=   c                ó˜   • [         R                  " 5       nUR                  U [        5      nUR                  (       a  Sn[        U5      eU$ )Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)ÚzlibÚdecompressobjÚ
decompressÚMAX_TEXT_CHUNKÚunconsumed_tailÚ
ValueError)ÚsÚdobjÚ	plaintextÚmsgs       r;   Ú_safe_zlib_decompressrL   ‘   s>   € Ü×ÒÓ€DØ—‘ ¤>Ó2€IØ××ØMˆÜ˜‹oÐØÐr:   c                ó4   • [         R                  " X5      S-  $ )Nl   ÿÿ )rB   Úcrc32)ÚdataÚseeds     r;   Ú_crc32rQ   š   s   € Ü�:Š:�dÓ! JÑ.Ð.r:   c                  ó|   • \ rS rS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)ÚChunkStreamé¢   c                ó   • Xl         / U l        g ©N©ÚfpÚqueue)ÚselfrX   s     r;   Ú__init__ÚChunkStream.__init__£   s   € Ø$&ŒØ:<ˆ�
r:   c                óÈ  • SnU R                   c   eU R                  (       a9  U R                  R                  5       u  pnU R                   R                  U5        OEU R                   R	                  S5      nUSS nU R                   R                  5       n[        U5      n[        U5      (       d/  [        R                  (       d  S[        U5       S3n[        U5      eXU4$ )z.Fetch a new chunk. Returns header information.Nr)   r(   zbroken PNG file (chunk Ú))rX   rY   ÚpopÚseekÚreadÚtellÚi32Úis_cidr   ÚLOAD_TRUNCATED_IMAGESÚreprÚSyntaxError)rZ   ÚcidÚposÚlengthrH   rK   s         r;   ra   ÚChunkStream.read§   s±   € àˆà�w‰wÑ"Ð"Ð"Ø�:�:Ø#Ÿz™zŸ~™~Ó/ÑˆC�fØ�G‰G�L‰L˜Õà—‘—‘˜Q“ˆAØ�A�B�%ˆCØ—'‘'—,‘,“.ˆCÜ˜“VˆFä�c�{‰{Ü×2×2Ø/´°S³	¨{¸!Ð<�Ü! #Ó&Ð&à˜ÐÐr:   c                ó   • U $ rV   r1   ©rZ   s    r;   Ú	__enter__ÚChunkStream.__enter__¼   s   € Øˆr:   c                ó$   • U R                  5         g rV   )Úclose)rZ   Úargss     r;   Ú__exit__ÚChunkStream.__exit__¿   s   € Ø�
‰
�r:   c                ó    • S =U l         U l        g rV   )rY   rX   rm   s    r;   rq   ÚChunkStream.closeÂ   s   € Ø#Ð#ˆŒ
�T•Wr:   c                ó\   • U R                   c   eU R                   R                  XU45        g rV   )rY   Úappend©rZ   rh   ri   rj   s       r;   ÚpushÚChunkStream.pushÅ   s)   € Ø�z‰zÑ%Ð%Ð%Ø�
‰
×Ñ˜3 VÐ,Õ-r:   c                óx   • [         R                  SXU5        [        U SUR                  S5       35      " X#5      $ )z"Call the appropriate chunk handlerzSTREAM %r %s %sÚchunk_Úascii)ÚloggerÚdebugÚgetattrÚdecodery   s       r;   ÚcallÚChunkStream.callÉ   s8   € ô 	�‰Ð&¨°&Ô9Ü�t˜v c§j¡j°Ó&9Ð%:Ð;Ô<¸SÓIÐIr:   c                ó°  • [         R                  (       a"  US   S-	  S-  (       a  U R                  X5        gU R                  c   e [	        U[	        U5      5      n[        U R                  R                  S5      5      nX4:w  a  S[        U5       S3n[        U5      eg! [        R                   a   nS[        U5       S3n[        U5      UeSnAff = f)	zRead and verify checksumr   é   r	   Nr(   z(broken PNG file (bad header checksum in r^   z(broken PNG file (incomplete checksum in )r   re   Úcrc_skiprX   rQ   rc   ra   rf   rg   ÚstructÚerror)rZ   rh   rO   Úcrc1Úcrc2rK   Úes          r;   ÚcrcÚChunkStream.crcÏ   sÁ   € ô ×*×*°°A±¸!±¸a·Ø�M‰M˜#Ô$Øà�w‰wÑ"Ð"Ð"ð	*Ü˜$¤ s£Ó,ˆDÜ�t—w‘w—|‘| A“Ó'ˆDØ‹|Ø@ÄÀcÃÀÈ1ÐM�Ü! #Ó&Ð&ð øô �|‰|ó 	*Ø<¼TÀ#»Y¸KÀqÐIˆCÜ˜cÓ"¨Ð)ûð	*ús   ÁAB! Â!CÂ5CÃCc                óX   • U R                   c   eU R                   R                  S5        g)zRead checksumNr(   )rX   ra   )rZ   rh   rO   s      r;   r‡   ÚChunkStream.crc_skipä   s#   € ð �w‰wÑ"Ð"Ð"Ø�‰�‰�Q�r:   c                ó:  • / nU R                   c   e  U R                  5       u  p4nX1:X  a   U$ U R                  U[        R                  " U R                   U5      5        UR                  U5        M`  ! [        R                   a  nSn[	        U5      UeS nAff = f)Nztruncated PNG file)	rX   ra   rˆ   r‰   ÚOSErrorr�   r   Ú
_safe_readrx   )rZ   ÚendchunkÚcidsrh   ri   rj   rŒ   rK   s           r;   ÚverifyÚChunkStream.verifyê   s›   € ð ˆà�w‰wÑ"Ð"Ð"Øð*Ø#'§9¡9£;Ñ �˜&ð
 ‹Øð ˆð �H‰H�Sœ)×.Ò.¨t¯w©w¸Ó?Ô@Ø�K‰K˜Ôñ øô —<‘<ó *Ø*�Ü˜c“l¨Ð)ûð*ús   ”A3 Á3BÂBÂBrW   N©rX   ú	IO[bytes]ÚreturnÚNone)rš   ztuple[bytes, int, int])rš   rS   )rr   Úobjectrš   r›   ©rš   r›   )rh   Úbytesri   Úintrj   rŸ   rš   r›   )rh   rž   ri   rŸ   rj   rŸ   rš   rž   )rh   rž   rO   rž   rš   r›   )ó   IEND)r”   rž   rš   zlist[bytes])r2   r3   r4   r5   r[   ra   rn   rs   rq   rz   rƒ   r�   r‡   r–   r9   r1   r:   r;   rS   rS   ¢   s:   † ô=ô ô*ôô$ô.ôJô*ô*÷ñ r:   rS   c                  óV   • \ rS rSr% SrS\S'   S\S'   \ S	       S
S jj5       rSrg)ÚiTXté   ze
Subclass of string to allow iTXt chunks to look like strings while
keeping their extra information

zstr | bytes | NoneÚlangÚtkeyNc                óH   • [         R                  X5      nX$l        X4l        U$ )zŸ
:param cls: the class to use when creating the instance
:param text: value for this key
:param lang: language code
:param tkey: UTF-8 version of the key name
)ÚstrÚ__new__r¤   r¥   )ÚclsÚtextr¤   r¥   rZ   s        r;   r¨   ÚiTXt.__new__
  s!   € ô �{‰{˜3Ó%ˆØŒ	ØŒ	Øˆr:   )r¤   r¥   )NN)rª   r§   r¤   ú
str | Noner¥   r¬   rš   r¢   )	r2   r3   r4   r5   Ú__doc__Ú__annotations__Ústaticmethodr¨   r9   r1   r:   r;   r¢   r¢      sJ   ‡ ñð ÓØ
ÓààDHðØðØ(ðØ7Aðà	ôó ór:   r¢   c                  óx   • \ rS rSrSrS	S jrS
SS jjr   S           SS jjr S
       SS jjrSr	g)ÚPngInfoi  z4
PNG chunk container (for use with save(pnginfo=))

c                ó   • / U l         g rV   ©Úchunksrm   s    r;   r[   ÚPngInfo.__init__!  s	   € Ø79ˆ�r:   c                ó>   • U R                   R                  XU45        g)zúAppends an arbitrary chunk. Use with caution.

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

N)r´   rx   )rZ   rh   rO   Ú
after_idats       r;   ÚaddÚPngInfo.add$  s   € ð 	�‰×Ñ˜C zÐ2Õ3r:   c                ó  • [        U[        5      (       d  UR                  SS5      n[        U[        5      (       d  UR                  SS5      n[        U[        5      (       d  UR                  SS5      n[        U[        5      (       d  UR                  SS5      nU(       a9  U R                  SUS-   U-   S-   U-   S-   [        R
                  " U5      -   5        gU R                  SUS-   U-   S-   U-   S-   U-   5        g)	zÉAppends an iTXt chunk.

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

úlatin-1Ústrictúutf-8ó   iTXts     ó    s      N)Ú
isinstancerž   Úencoder¸   rB   Úcompress)rZ   ÚkeyÚvaluer¤   r¥   Úzips         r;   Úadd_itxtÚPngInfo.add_itxt0  sâ   € ô$ ˜#œu×%Ñ%Ø—*‘*˜Y¨Ó1ˆCÜ˜%¤×'Ñ'Ø—L‘L ¨(Ó3ˆEÜ˜$¤×&Ñ&Ø—;‘;˜w¨Ó1ˆDÜ˜$¤×&Ñ&Ø—;‘;˜w¨Ó1ˆDæØ�H‰HØØ�kÑ! DÑ(¨5Ñ0°4Ñ7¸%Ñ?Ä$Ç-Â-ÐPUÓBVÑVõð
 �H‰H�W˜c I™o°Ñ4°uÑ<¸tÑCÀeÑKÈeÑSÕTr:   c                ó4  • [        U[        5      (       aH  U R                  UUUR                  b  UR                  OSUR                  b  UR                  US9$ SUS9$ [        U[
        5      (       d   UR                  SS5      n[        U[
        5      (       d  UR                  SS5      nU(       a-  U R                  SUS-   [        R                  " U5      -   5        gU R                  SUS	-   U-   5        g! [         a    U R                  XUS9s $ f = f)
z¾Appends a text chunk.

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

Nr:   )rÅ   r»   r¼   ó   zTXtó     ó   tEXtr¿   )rÀ   r¢   rÆ   r¤   r¥   rž   rÁ   ÚUnicodeErrorr¸   rB   rÂ   )rZ   rÃ   rÄ   rÅ   s       r;   Úadd_textÚPngInfo.add_textS  s
  € ô �eœT×"Ñ"Ø—=‘=ØØØ#Ÿj™jÑ4�—
’
¸#Ø#Ÿj™jÑ4�—
‘
Øð !ð ð ð ;>Øð !ð ð ô ˜%¤×'Ñ'ð:ØŸ™ Y°Ó9�ô ˜#œu×%Ñ%Ø—*‘*˜Y¨Ó1ˆCæØ�H‰H�W˜c G™m¬d¯mªm¸EÓ.BÑBÕCà�H‰H�W˜c E™k¨EÑ1Õ2øô  ó :Ø—}‘} S°S�}Ð9Ò9ð:ús   Á4C: Ã:DÄDr³   Nr�   ©F)rh   rž   rO   rž   r·   Úboolrš   r›   )Ú rÑ   F)rÃ   ústr | bytesrÄ   rÒ   r¤   rÒ   r¥   rÒ   rÅ   rÐ   rš   r›   )rÃ   rÒ   rÄ   zstr | bytes | iTXtrÅ   rÐ   rš   r›   )
r2   r3   r4   r5   r­   r[   r¸   rÆ   rÍ   r9   r1   r:   r;   r±   r±     s”   † ñô
:ö
4ð  ØØð!Uàð!Uð ð!Uð ð	!Uð
 ð!Uð ð!Uð 
õ!UðH HMð!3Øð!3Ø'9ð!3Ø@Dð!3à	÷!3ð !3r:   r±   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú_RewindStatei{  z dict[str | tuple[int, int], Any]Úinfozlist[ImageFile._Tile]Útilez
int | NoneÚseq_numr1   N©r2   r3   r4   r5   r®   r9   r1   r:   r;   rÔ   rÔ   {  s   ‡ Ø
*Ó*Ø
ÓØÖr:   rÔ   c                  óô   ^ • \ rS rSrSU 4S j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 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rU =r$ )Ú	PngStreami�  c                óÔ   >• [         TU ]  U5        0 U l        0 U l        SU l        SU l        / U l        S U l        S U l        S U l	        S U l
        [        0 / S 5      U l        SU l        g )N©r   r   rÑ   r   )Úsuperr[   Úim_infoÚim_textÚim_sizeÚim_modeÚim_tileÚ
im_paletteÚim_custom_mimetypeÚim_n_framesÚ_seq_numrÔ   Úrewind_stateÚtext_memory)rZ   rX   Ú	__class__s     €r;   r[   ÚPngStream.__init__‚  sl   ø€ Ü‰Ñ˜Ôð :<ˆŒØ.0ˆŒØˆŒØˆŒØ.0ˆŒØ48ˆŒØ.2ˆÔØ'+ˆÔØ$(ˆŒÜ(¨¨R°Ó6ˆÔàˆÕr:   c                óŒ   • U =R                   U-  sl         U R                   [        :”  a  SU R                    S3n[        U5      eg )Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)rè   ÚMAX_TEXT_MEMORYrG   )rZ   ÚchunklenrK   s      r;   Úcheck_text_memoryÚPngStream.check_text_memory“  sN   € Ø×Ò˜HÑ$ÕØ×ÑœoÓ-à7Ø×#Ñ#Ð$Ð$4ð6ð ô ˜S“/Ð!ð .r:   c                ó€   • [        U R                  R                  5       U R                  U R                  5      U l        g rV   )rÔ   rÞ   Úcopyrâ   ræ   rç   rm   s    r;   Úsave_rewindÚPngStream.save_rewindœ  s-   € Ü(Ø�L‰L×ÑÓØ�L‰LØ�M‰Mó
ˆÕr:   c                óÂ   • U R                   R                  R                  5       U l        U R                   R                  U l        U R                   R                  U l        g rV   )rç   rÕ   rñ   rÞ   rÖ   râ   r×   ræ   rm   s    r;   ÚrewindÚPngStream.rewind£  sD   € Ø×(Ñ(×-Ñ-×2Ñ2Ó4ˆŒØ×(Ñ(×-Ñ-ˆŒØ×)Ñ)×1Ñ1ˆ�r:   c                óÞ  • U R                   c   e[        R                  " U R                   U5      nUR                  S5      n[        R                  SUS U 5        X4S-      n[        R                  SU5        US:w  a  SU S3n[        U5      e [        X4S-   S  5      nXpR                  S	'   U$ ! [         a    [        R                  (       a  S n N3e [        R                   a    S n NKf = f)
Nr¿   ziCCP profile name %rr	   zCompression method %sr   úUnknown compression method z in iCCP chunkr'   Úicc_profile)rX   r   r“   Úfindr   r€   rg   rL   rG   re   rB   r‰   rÞ   )rZ   ri   rj   rH   ÚiÚcomp_methodrK   rù   s           r;   Ú
chunk_iCCPÚPngStream.chunk_iCCP¨  sä   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆð �F‰F�5‹MˆÜ�‰Ð+¨Q¨r°¨UÔ3Ø˜A™‘hˆÜ�‰Ð,¨kÔ:Ø˜!ÓØ/°¨}¸NÐKˆCÜ˜cÓ"Ð"ð	Ü/°°a±%°'°
Ó;ˆKð '2�‰�]Ñ#Øˆøô ó 	Ü×.×.Ø"’àÜ�z‰zó 	ØŠKð	ús   ÂB0 Â0!C,ÃC,Ã+C,c                ó²  • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      e[        US5      [        US5      4U l         [        US   US   4   u  U l        U l	        US   (       a  SU R                  S	'   US
   (       a  Sn[        U5      eU$ ! [         a     N>f = f)Né   zTruncated IHDR chunkr   r(   r)   é	   é   r	   Ú	interlaceé   zunknown filter category)rX   r   r“   re   rG   rc   rà   Ú_MODESrá   Ú
im_rawmodeÚ	ExceptionrÞ   rg   ©rZ   ri   rj   rH   rK   s        r;   Ú
chunk_IHDRÚPngStream.chunk_IHDRÄ  sÏ   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�B‹;Ü×.×.Ø�Ø(ˆCÜ˜S“/Ð!Ü˜1˜a“y¤# a¨£)Ð+ˆŒð	Ü,2°A°a±D¸!¸A¹$°<Ñ,@Ñ)ˆDŒL˜$œ/ð ˆR�5Ø()ˆD�L‰L˜Ñ%ØˆR�5Ø+ˆCÜ˜cÓ"Ð"Øˆøô ó 	Ùð	ús   Á9C	 Ã	
CÃCc                óN  • SU R                   ;   a1  [        R                  " SU R                   S   XR                  5      /nOLU R                  b  SU R                   S'   [        R                  " SSU R
                  -   XR                  5      /nX0l        X l        Sn[        U5      e)NÚbboxrÅ   TÚdefault_imagerÜ   zimage data found)	rÞ   r   Ú_Tiler  rå   rà   râ   Úim_idatÚEOFError)rZ   ri   rj   rÖ   rK   s        r;   Ú
chunk_IDATÚPngStream.chunk_IDATÙ  s…   € à�T—\‘\Ó!Ü—O’O E¨4¯<©<¸Ñ+?ÀÇoÁoÓVÐW‰Dà×ÑÑ+Ø04�—‘˜_Ñ-Ü—O’O E¨6°D·L±LÑ+@À#ÇÁÓWÐXˆDØŒØŒØ ˆÜ�s‹mÐr:   c                ó   • Sn[        U5      e)Nzend of PNG image)r  )rZ   ri   rj   rK   s       r;   Ú
chunk_IENDÚPngStream.chunk_IENDæ  s   € Ø ˆÜ�s‹mÐr:   c                ó˜   • U R                   c   e[        R                  " U R                   U5      nU R                  S:X  a	  SU4U l        U$ )Nr!   r    )rX   r   r“   rá   rã   ©rZ   ri   rj   rH   s       r;   Ú
chunk_PLTEÚPngStream.chunk_PLTEê  sD   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�<‰<˜3ÓØ# Q˜hˆDŒOØˆr:   c                ób  • U R                   c   e[        R                  " U R                   U5      nU R                  S:X  aR  [        R                  U5      (       a'  UR                  S5      nUS:¼  a  X@R                  S'   U$ X0R                  S'    U$ U R                  S:X  a#  [        U5      (       a  SOSU R                  S'   U$ U R                  S;   a  [        U5      U R                  S'   U$ U R                  S:X  a/  [        U5      [        US	5      [        US
5      4U R                  S'   U$ )Nr!   r¿   r   Útransparencyr   éÿ   )r   r   r    r'   r(   )	rX   r   r“   rá   Ú_simple_paletteÚmatchrú   rÞ   Úi16)rZ   ri   rj   rH   rû   s        r;   Ú
chunk_tRNSÚPngStream.chunk_tRNSò  s  € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�<‰<˜3ÓÜ×$Ñ$ Q×'Ñ'ð —F‘F˜5“M�Ø˜“6Ø34—L‘L Ñ0ð ˆð 01—‘˜^Ò,ð ˆð �\‰\˜SÓ Ü25°a·&±&©3¸aˆD�L‰L˜Ñ(ð
 ˆð	 �\‰\˜]Ó*Ü+.¨q«6ˆD�L‰L˜Ñ(ð ˆð �\‰\˜UÓ"Ü+.¨q«6´3°q¸!³9¼cÀ!ÀQ»iÐ+GˆD�L‰L˜Ñ(Øˆr:   c                óœ   • U R                   c   e[        R                  " U R                   U5      n[        U5      S-  U R                  S'   U$ )Nç     jø@Úgamma)rX   r   r“   rc   rÞ   r  s       r;   Ú
chunk_gAMAÚPngStream.chunk_gAMA	  sD   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆÜ # A£¨Ñ 1ˆ�‰�WÑØˆr:   c                óò   • U R                   c   e[        R                  " U R                   U5      n[        R                  " S[        U5      S-   S3U5      n[        S U 5       5      U R                  S'   U$ )NÚ>r(   ÚIc              3  ó*   #   • U  H	  oS -  v •  M     g7f)r#  Nr1   )Ú.0Úelts     r;   Ú	<genexpr>Ú'PngStream.chunk_cHRM.<locals>.<genexpr>  s   é € Ð,PÂxÀ°8®^Âxùs   ‚Úchromaticity)rX   r   r“   rˆ   ÚunpackÚlenÚtuplerÞ   )rZ   ri   rj   rH   Úraw_valss        r;   Ú
chunk_cHRMÚPngStream.chunk_cHRM  si   € ð �w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆÜ—=’= 1¤S¨£V¨q¡[ M°Ð!3°QÓ7ˆÜ',Ñ,PÁxÓ,PÓ'Pˆ�‰�^Ñ$Øˆr:   c                óÞ   • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      eUS   U R
                  S'   U$ )Nr	   zTruncated sRGB chunkr   Úsrgb)rX   r   r“   re   rG   rÞ   r  s        r;   Ú
chunk_sRGBÚPngStream.chunk_sRGB  se   € ð �w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�A‹:Ü×.×.Ø�Ø(ˆCÜ˜S“/Ð!Ø  ™tˆ�‰�VÑØˆr:   c                ó^  • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      e[        US5      [        US5      peUS   nUS:X  a  US-  US-  4nX€R                  S'   U$ US:X  a  XV4U R                  S	'   U$ )
Nr  zTruncated pHYs chunkr   r(   r)   r	   ç¦
F%uš?ÚdpiÚaspect)rX   r   r“   re   rG   rc   rÞ   )	rZ   ri   rj   rH   rK   ÚpxÚpyÚunitr<  s	            r;   Ú
chunk_pHYsÚPngStream.chunk_pHYs+  s²   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�A‹:Ü×.×.Ø�Ø(ˆCÜ˜S“/Ð!Ü�Q˜“œC  1›IˆBØ�‰tˆØ�1‹9Ø�v‘+˜r F™{Ð*ˆCØ"%�L‰L˜Ñð ˆð �Q‹YØ%' VˆD�L‰L˜Ñ"Øˆr:   c                óŒ  • U R                   c   e[        R                  " U R                   U5      n UR                  SS5      u  pEU(       ac  UR                  SS5      nUR                  SS5      nUS:X  a  UOUU R                  U'   XpR                  U'   U R                  [        U5      5        U$ ! [         a    UnSn N|f = f)Nr¿   r	   r:   r»   r¼   Úreplaces   exif)
rX   r   r“   ÚsplitrG   r‚   rÞ   rß   rî   r1  )rZ   ri   rj   rH   ÚkÚvÚk_strÚv_strs           r;   Ú
chunk_tEXtÚPngStream.chunk_tEXt=  s¸   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆð	Ø—7‘7˜5 !Ó$‰DˆAö
 Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨	Ó2ˆEà'(¨G£|¡!¸ˆD�L‰L˜ÑØ"'�L‰L˜ÑØ×"Ñ"¤3 u£:Ô.àˆøô ó 	àˆAØŠAð	ús   ²B2 Â2CÃCc                óf  • U R                   c   e[        R                  " U R                   U5      n UR                  SS5      u  pEU(       a  US   nOSnUS:w  a  SU S3n[        U5      e [        USS  5      nU(       a\  UR                  SS5      nUR                  SS	5      n	U	=U R                  U'   U R                  U'   U R                  [        U	5      5        U$ ! [         a    UnSn Nªf = f! [         a    [        R                  (       a  Sn Nœe [        R                   a    Sn N´f = f)
Nr¿   r	   r:   r   rø   z in zTXt chunkr»   r¼   rD  )rX   r   r“   rE  rG   rg   rL   re   rB   r‰   r‚   rÞ   rß   rî   r1  )
rZ   ri   rj   rH   rF  rG  rü   rK   rH  rI  s
             r;   Ú
chunk_zTXtÚPngStream.chunk_zTXtQ  s-  € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆð	Ø—7‘7˜5 !Ó$‰DˆAö Ø˜A™$‰KàˆKØ˜!ÓØ/°¨}¸NÐKˆCÜ˜cÓ"Ð"ð	Ü% a¨¨ eÓ,ˆAö Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨	Ó2ˆEà8=Ð=ˆD�L‰L˜Ñ $§,¡,¨uÑ"5Ø×"Ñ"¤3 u£:Ô.àˆøô7 ó 	ØˆAØŠAð	ûô ó 	Ü×.×.Ø’àÜ�z‰zó 	ØŠAð	ús)   ²C  Á-C4 Ã C1Ã0C1Ã4!D0ÄD0Ä/D0c                óZ  • U R                   c   e[        R                  " U R                   U5      =p4 UR                  SS5      u  pS[        U5      S:  a  U$ US   US   USS  p7n UR                  SS5      u  p‰n
US:w  a  US:X  a   [        U
5      n
OU$ US:X  a  X R                  S'    UR                  SS5      nUR                  S	S5      nU	R                  S	S5      nU
R                  S	S5      n[        XìU5      =U R                  U'   U R                  U'   U R                  [        U5      5        U$ ! [         a    Us $ f = f! [         a    Us $ f = f! [         a    [        R                  (       a  Us $ e [        R                   a    Us $ f = f! [         a    Us $ f = f)
Nr¿   r	   r'   r   s   XML:com.adobe.xmpÚxmpr»   r¼   r½   )rX   r   r“   rE  rG   r1  rL   re   rB   r‰   rÞ   r‚   rÌ   r¢   rß   rî   )rZ   ri   rj   ÚrrH   rF  ÚcfÚcmr¤   ÚtkrG  rH  Úlang_strÚtk_strrI  s                  r;   Ú
chunk_iTXtÚPngStream.chunk_iTXtt  sµ  € à�w‰wÑ"Ð"Ð"Ü×$Ò$ T§W¡W¨fÓ5Ð5ˆð	Ø—7‘7˜5 !Ó$‰DˆAô ˆq‹6�A‹:ØˆHØ�a‘D˜!˜A™$  ! " �ˆð	ØŸ'™' %¨Ó+‰KˆD�að �‹7Ø�Q‹wðÜ-¨aÓ0‘Að �ØÐ$Ó$Ø"#�L‰L˜Ñð	Ø—H‘H˜Y¨Ó1ˆEØ—{‘{ 7¨HÓ5ˆHØ—Y‘Y˜w¨Ó1ˆFØ—H‘H˜W hÓ/ˆEô 59¸È&Ó4QÐQˆ�‰�UÑ˜dŸl™l¨5Ñ1Ø×Ñœs 5›zÔ*àˆøôG ó 	ØŠHð	ûô ó 	ØŠHð	ûô "ó Ü ×6×6Ø šàÜ—z‘zó Ø’Hðûô ó 	ØŠHð	úsN   ³D8 Á'E
 Â	E Â,AF Ä8EÅEÅ
EÅEÅ!FÅ?FÆFÆF*Æ)F*c                óŠ   • U R                   c   e[        R                  " U R                   U5      nSU-   U R                  S'   U$ )Nó   Exif  Úexif)rX   r   r“   rÞ   r  s       r;   Ú
chunk_eXIfÚPngStream.chunk_eXIfŸ  s@   € Ø�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ.°Ñ2ˆ�‰�VÑØˆr:   c                ó¼  • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      eU R
                  b  S U l        [        R                  " S5        U$ [        U5      nUS:X  d  US:”  a  [        R                  " S5        U$ XPl        [        US5      U R                  S'   SU l
        U$ )	Nr)   z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possibler   l        r(   Úloopz
image/apng)rX   r   r“   re   rG   rå   ÚwarningsÚwarnrc   rÞ   rä   )rZ   ri   rj   rH   rK   Ún_framess         r;   Ú
chunk_acTLÚPngStream.chunk_acTL¦  sÂ   € Ø�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�A‹:Ü×.×.Ø�Ø6ˆCÜ˜S“/Ð!Ø×ÑÑ'Ø#ˆDÔÜ�MŠMÐPÔQØˆHÜ�q“6ˆØ�q‹=˜H zÓ1Ü�MŠMÐPÔQØˆHØ#ÔÜ" 1 a›yˆ�‰�VÑØ".ˆÔØˆr:   c                ó  • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      e[        U5      nU R                  c  US:w  d   U R                  b   U R                  US-
  :w  a  Sn[        U5      eXPl        [        US5      [        US5      pv[        US5      [        US	5      p˜U R                  u  p«X†-   U
:”  d  X—-   U:”  a  S
n[        U5      eX‰X†-   X—-   4U R                  S'   [        US5      [        US5      pÜUS:X  a  Sn[        U5      [        U5      -  S-  U R                  S'   US   U R                  S'   US   U R                  S'   U$ )Né   z"APNG contains truncated fcTL chunkr   r	   ú#APNG contains frame sequence errorsr(   r)   r  r*   zAPNG contains invalid framesr  é   é   éd   éè  Údurationé   Údisposalé   Úblend)rX   r   r“   re   rG   rc   ræ   rg   rà   rÞ   r  Úfloat)rZ   ri   rj   rH   rK   ÚseqÚwidthÚheightr>  r?  Úim_wÚim_hÚ	delay_numÚ	delay_dens                 r;   Ú
chunk_fcTLÚPngStream.chunk_fcTL»  sj  € Ø�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�B‹;Ü×.×.Ø�Ø6ˆCÜ˜S“/Ð!Ü�!‹fˆØ�M‰MÑ! c¨Q£hØ�M‰MÑ%¨$¯-©-¸3À¹7Ó*Bà7ˆCÜ˜cÓ"Ð"ØŒÜ˜A˜q›	¤3 q¨!£9ˆvÜ�Q˜“œS  B›ZˆBØ—\‘\‰
ˆØ‰:˜Ó ¡¨dÓ 2Ø0ˆCÜ˜cÓ"Ð"Ø "¨©
°B±KÐ@ˆ�‰�VÑÜ" 1 b›z¬3¨q°"«:�9Ø˜‹>ØˆIÜ#(¨Ó#3´e¸IÓ6FÑ#FÈÑ#Mˆ�‰�ZÑ Ø#$ R¡5ˆ�‰�ZÑ Ø ! "¡ˆ�‰�WÑØˆr:   c                óŠ  • U R                   c   eUS:  aE  [        R                  (       a#  [        R                  " U R                   U5      nU$ Sn[	        U5      e[        R                  " U R                   S5      n[        U5      nU R                  US-
  :w  a  Sn[        U5      eXPl        U R                  US-   US-
  5      $ )Nr(   z"APNG contains truncated fDAT chunkr	   rg  )	rX   r   re   r“   rG   rc   ræ   rg   r  )rZ   ri   rj   rH   rK   rr  s         r;   Ú
chunk_fdATÚPngStream.chunk_fdATÙ  s©   € Ø�w‰wÑ"Ð"Ð"Ø�A‹:Ü×.×.Ü×(Ò(¨¯©°&Ó9�Ø�Ø6ˆCÜ˜S“/Ð!Ü× Ò  §¡¨!Ó,ˆÜ�!‹fˆØ�=‰=˜C !™GÓ#Ø7ˆCÜ˜cÓ"Ð"ØŒØ�‰˜s Q™w¨°©
Ó3Ð3r:   )ræ   rä   r  rÞ   rá   rå   rã   r  rà   rß   râ   rç   rè   r˜   )rí   rŸ   rš   r›   r�   )ri   rŸ   rj   rŸ   rš   rž   )ri   rŸ   rj   rŸ   rš   r   )r2   r3   r4   r5   r[   rî   rò   rõ   rý   r	  r  r  r  r   r%  r4  r8  rA  rJ  rM  rW  r\  rc  ry  r|  r9   Ú__classcell__©ré   s   @r;   rÚ   rÚ   �  ss   ø† ÷ô""ô
ô2ô
ô8ô*ôôôô.ôôô"ô$ô(!ôF)ôVôô*÷<4ò 4r:   rÚ   c                ó,   • U R                  [        5      $ rV   )Ú
startswithÚ_MAGIC)Úprefixs    r;   Ú_acceptr„  î  s   € Ø×ÑœVÓ$Ð$r:   c                  ó¬   ^ • \ rS rSrSrSrSS jr\SS j5       rSU 4S jjr	SS jr
SSS jjrSS	 jrSS
 jrSS jrSS jrSS jrSU 4S jjrSrU =r$ )ÚPngImageFileiö  ÚPNGzPortable network graphicsc                ó”  • U R                   c   e[        U R                   R                  S5      5      (       d  Sn[        U5      eU R                   U l        SU l        / U l        [        U R                   5      U l         U R                  R                  5       u  p#n U R                  R                  X#U5      nU R                  R%                  X%5        MW  ! [         a     O{[         ao    [        R                  SX#U5        [        R                  " U R                   U5      nUSS R!                  5       (       a  U R                  R#                  X%45         N f = fU R                  R&                  U l        U R                  R*                  U l        U R                  R.                  U l        S U l        U R                  R4                  U l        U R                  R8                  U l        U R                  R<                  =(       d    SU l        U R0                  RA                  SS5      U l!        U R                  RD                  (       a3  U R                  RD                  u  pg[F        RH                  " Xg5      U l%        US	:X  a  US
-
  U l&        OX@l&        U R                  R<                  bˆ  SU l'        U R                  RQ                  5         U RL                  U l)        U R                  RU                  5       U l+        U RB                  (       a  U =R>                  S-  sl        U RY                  S5        U R>                  S:„  U l-        g )Nr)   znot a PNG filer   ú%r %s %s (unknown)r	   r'   r  Fó   fdATr(   ).rX   r„  ra   rg   Ú_fpÚ_PngImageFile__frameÚprivate_chunksrÚ   Úpngrƒ   r  ÚAttributeErrorr   r€   r   r“   Úislowerrx   r�   rá   Ú_moderà   Ú_sizerÞ   rÕ   Ú_textrâ   rÖ   rä   Úcustom_mimetyperå   rb  Úgetr  rã   r   ÚrawÚpaletteÚ_PngImageFile__prepare_idatÚ!_close_exclusive_fp_after_loadingrò   Ú_PngImageFile__rewind_idatrb   Ú_PngImageFile__rewindÚ_seekÚis_animated)rZ   rK   rh   ri   rj   rH   ÚrawmoderO   s           r;   Ú_openÚPngImageFile._openú  sn  € Ø�w‰wÑ"Ð"Ð"Ü�t—w‘w—|‘| A“×'Ñ'Ø"ˆCÜ˜cÓ"Ð"Ø—7‘7ˆŒØˆŒð
 VXˆÔÜ%.¨t¯w©wÓ%7ˆŒàð  $Ÿx™xŸ}™}›ÑˆC�fð9Ø—H‘H—M‘M #¨FÓ3�ð �H‰H�L‰L˜Ô ñ! øô ó ÙÜ!ó 9Ü—‘Ð1°3¸VÔDÜ×(Ò(¨¯©°&Ó9�Ø�q˜�8×#Ñ#×%Ñ%Ø×'Ñ'×.Ñ.°¨xÔ8ùð	9úð —X‘X×%Ñ%ˆŒ
Ø—X‘X×%Ñ%ˆŒ
Ø—H‘H×$Ñ$ˆŒ	Ø37ˆŒ
Ø—H‘H×$Ñ$ˆŒ	Ø#Ÿx™x×:Ñ:ˆÔØŸ™×,Ñ,×1°ˆŒØ!ŸY™YŸ]™]¨?¸EÓBˆÔà�8‰8××Ø ŸH™H×/Ñ/‰MˆGÜ'×+Ò+¨GÓ:ˆDŒLà�'‹>Ø"(¨1¡*ˆDÕà"(Ôà�8‰8×ÑÑ+Ø5:ˆDÔ2Ø�H‰H× Ñ Ô"Ø!%×!4Ñ!4ˆDÔØ ŸH™HŸM™M›OˆDŒMØ×!×!à—’ Ñ"•Ø�J‰J�qŒMØŸ=™=¨1Ñ,ˆÕs   ÂC Ã
EÃ#A5EÅEc                ó,  • U R                   cm  U R                  (       a*  U R                  nU R                  U R                  S-
  5        U R                  5         U R                  (       a  U R                  W5        U R                   c   eU R                   $ )Nr	   )r“  r�  rŒ  r`   rb  Úload)rZ   Úframes     r;   rª   ÚPngImageFile.text>  so   € ð �:‰:Ñð ××ØŸ™�à—	‘	˜$Ÿ-™-¨!Ñ+Ô,Ø�I‰IŒKØ××Ø—	‘	˜%Ô Ø�z‰zÑ%Ð%Ð%Ø�z‰zÐr:   c                ó8  >• U R                   c  Sn[        U5      eU R                   R                  U R                  S   S   S-
  5        U R                  c   eU R                  R                  5         U R                  R                  5         [        TU ]  5         g)zVerify PNG fileNz)verify must be called directly after openr   r'   r)   )rX   ÚRuntimeErrorr`   rÖ   rŽ  r–   rq   rÝ   )rZ   rK   ré   s     €r;   r–   ÚPngImageFile.verifyN  sw   ø€ ð �7‰7‰?Ø=ˆCÜ˜sÓ#Ð#ð 	�‰�‰�T—Y‘Y˜q‘\ !‘_ qÑ(Ô)à�x‰xÑ#Ð#Ð#Ø�‰�‰ÔØ�‰�‰Ôä‰‰Õr:   c                óX  • U R                  U5      (       d  g XR                  :  a  U R                  SS5        U R                  n [        U R                  S-   US-   5       H  nU R                  U5        M     g ! [         a$  nU R                  U5        Sn[	        U5      UeS nAff = f)Nr   Tr	   zno more images in APNG file)Ú_seek_checkrŒ  rœ  Úranger  r`   )rZ   r£  Ú
last_frameÚfrŒ   rK   s         r;   r`   ÚPngImageFile.seek^  s’   € Ø×Ñ ×&Ñ&ØØ—<‘<ÓØ�J‰J�q˜$Ôà—\‘\ˆ
ð	'Ü˜4Ÿ<™<¨!Ñ+¨U°Q©YÖ7�Ø—
‘
˜1–ò 8øäó 	'Ø�I‰I�jÔ!Ø/ˆCÜ˜3“- QÐ&ûð	'ús   Á4A; Á;
B)ÂB$Â$B)c                óF  • U R                   c   e[        U R                  [        5      (       a  U R                  R                  eU   S nUS:X  Ga8  U(       až  U R                  R                  U R                  5        U R                   R                  5         U R                  U l	        S U l
        U R                   R                  U l        U R                   R                  U l        U R                  U l        S U l        S U l        U R                  R%                  SS5      U l        U R                  R%                  S5      U l        U R                  R%                  S5      U l        U R                  R%                  S5      nSU l        GOpXR,                  S-   :w  a  SU 3n[/        U5      eU R1                  5         U R"                  (       a0  U R2                  R5                  U R"                  U R6                  5        U R2                  R9                  5       U l        U R                  U l        U R                  (       a2  [:        R<                  " U R                  U R                  5        SU l	        Sn U R                  R?                  S
5         U R                   R?                  5       u  pgnUS:X  a  Sn[G        U5      eUS:X  a  U(       a  Sn[E        U5      eS	n U R                   RI                  XgU5        M‡  U(       a  X0l        U R                   c3  U R(                  [R        RT                  :X  a  [R        RV                  U l        S U l        U R(                  [R        RT                  :X  a]  U R                   (       aK  U R                   R9                  5       U l        U RY                  U R"                  U R6                  5      U l        g g U R(                  [R        RV                  :X  ae  [Z        R\                  R_                  U R`                  U Rb                  5      U l        U RY                  U R"                  U R6                  5      U l        g g ! [@        RB                  [D        4 a     OŸf = f! [J         a     O�[F         a?    US:X  a  US
-  nU(       a  X€l	         Ol[:        R<                  " U R                  U5         GNÈ[L         a<    [N        RQ                  SXgU5        [:        R<                  " U R                  U5         GNf = fXl        U R                   R                  U l        U R                  R%                  S5      U l        U R                  R%                  S5      U l        U R                  R%                  S5      nU R                  (       a  GMž  Sn[G        U5      e)Nr   r  Frn  rp  r  r	   zcannot seek to frame Tr(   r    zNo more images in APNG fileó   fcTLzAPNG missing frame datarŠ  r‰  zimage not found in APNG frame)2rŽ  rÀ   r‹  r   Úexr`   r›  rõ   rš  r˜  Ú_imrÞ   rÕ   râ   rÖ   rX   Ú_prev_imÚdisposer•  r  Ú
dispose_opÚblend_oprŒ  rG   r¢  ÚimÚpasteÚdispose_extentrñ   r   r“   ra   rˆ   r‰   rg   r  rƒ   ÚUnicodeDecodeErrorr�  r   r€   r/   r8   r7   Ú_cropr
   ÚcoreÚfillÚmodeÚsize)	rZ   r£  rõ   r¸  rK   Úframe_startrh   ri   rj   s	            r;   rœ  ÚPngImageFile._seekm  s
  € Ø�x‰xÑ#Ð#Ð#Ü�d—h‘h¤×.Ñ.Ø—(‘(—+‘+ÐáØˆØ�AŒ:ÞØ—‘—‘˜dŸm™mÔ,Ø—‘—‘Ô!Ø&*×&8Ñ&8�Ô#Ø�”Ø ŸH™H×,Ñ,�”	Ø ŸH™H×,Ñ,�”	ØŸ(™(�”Ø ˆDŒMØˆDŒLØ!%§¡§¡¨ÀÓ!FˆDÔØ"Ÿi™iŸm™m¨JÓ7ˆDŒOØ ŸI™IŸM™M¨'Ó2ˆDŒMØ!ŸY™YŸ]™]¨6Ó2ˆNØˆDŽLàŸ™ qÑ(Ó(Ø-¨e¨WÐ5�Ü  “oÐ%ð �I‰IŒKà�|�|Ø—‘—‘˜dŸl™l¨D×,?Ñ,?Ô@Ø ŸG™GŸL™L›NˆDŒMà—h‘hˆDŒGð ×"×"Ü×$Ò$ T§W¡W¨d×.AÑ.AÔBØ&'�Ô#ØˆKØØ—‘—‘˜Q”ðØ'+§x¡x§}¡}£Ñ$�C˜fð ˜'“>Ø7�CÜ" 3›-Ð'Ø˜'“>Þ"à7˜Ü)¨#Ó.Ð.Ø"&�Kð:Ø—H‘H—M‘M #¨FÔ3ñ' öT ØESÔð �=‰=Ñ  T§_¡_¼×8LÑ8LÓ%LÜ&×4Ñ4ˆDŒOàˆŒØ�?‰?œh×2Ñ2Ó2Ø�}�}Ø#Ÿ}™}×1Ñ1Ó3�”Ø#Ÿz™z¨$¯,©,¸×8KÑ8KÓL�•ð ð �_‰_¤× 6Ñ 6Ó6Ü Ÿ:™:Ÿ?™?¨4¯9©9°d·i±iÓ@ˆDŒLØŸ:™: d§l¡l°D×4GÑ4GÓHˆD�Lð 7øôc Ÿ™¤kÐ2ó Ùðûô *ó ÙÜó :Ø˜g“~Ø !™˜Þ&Ø28Ô/Ù!Ü×(Ò(¨¯©°&×9Ü%ó :Ü—L‘LÐ!5°sÀÔHÜ×(Ò(¨¯©°&×9ð:úð !ŒLØŸ™×(Ñ(ˆDŒIØ"Ÿi™iŸm™m¨JÓ7ˆDŒOØ ŸI™IŸM™M¨'Ó2ˆDŒMØ!ŸY™YŸ]™]¨6Ó2ˆNà—9—9’9Ø5�Ü˜s“mÐ#s7   ÊQ ËQ+ ÑQ(Ñ'Q(Ñ+
TÑ7!TÒ!TÒ>ATÔTc                ó   • U R                   $ rV   )rŒ  rm   s    r;   rb   ÚPngImageFile.tellÑ  s   € Ø�|‰|Ðr:   c                óÌ   • U R                   R                  S5      (       a  U R                  S-   U l        U R                  U l        [
        R
                  R                  U 5        g)z"internal: prepare to read PNG filer  )r	   N)rÕ   r•  Údecoderconfigr˜  Ú_PngImageFile__idatr   Úload_preparerm   s    r;   rÆ  ÚPngImageFile.load_prepareÔ  sK   € ð �9‰9�=‰=˜×%Ñ%Ø!%×!3Ñ!3°dÑ!:ˆDÔà×)Ñ)ˆŒÜ×Ñ×(Ñ(¨Õ.r:   c                ón  • U R                   c   eU R                  c   eU R                  S:X  a¡  U R                  R                  S5        U R                   R                  5       u  p#nUS;  a  U R                   R	                  X#U5        gUS:X  a(   U R                   R                  X#U5        US-
  U l        OX@l        U R                  S:X  a  M¡  US::  a  U R                  nO[        XR                  5      nU R                  U-
  U l        U R                  R                  U5      $ ! [         a     N†f = f)zinternal: read more image datar   r(   )ó   IDATs   DDATrŠ  r:   rŠ  )rŽ  rX   rÅ  ra   rz   rƒ   r  Úmin)rZ   Ú
read_bytesrh   ri   rj   s        r;   Ú	load_readÚPngImageFile.load_readÝ  s  € ð �x‰xÑ#Ð#Ð#Ø�w‰wÑ"Ð"Ð"Ø�k‰k˜QÓð �G‰G�L‰L˜ŒOà#Ÿx™xŸ}™}›ÑˆC�fàÐ5Ó5Ø—‘—‘˜c¨Ô/Øà�g‹~ðØ—H‘H—M‘M #¨FÔ3ð % q™j�•à$”ð% �k‰k˜QÕð* ˜‹?ØŸ™‰Jä˜Z¯©Ó5ˆJà—k‘k JÑ.ˆŒà�w‰w�|‰|˜JÓ'Ð'øô  ó Ùðús   ÂD' Ä'
D4Ä3D4c                óŒ  • U R                   c   eU R                  c   eU R                  S:w  a%  U R                  R                  U R                  5         U R                  R                  S5         U R                   R                  5       u  pnUS:X  a  OZUS:X  a5  U R                  (       a$  SU l        U R                   R                  XU5        O U R                   R                  XU5        Mš  U R                   R.                  U l        U R                  (       d"  U R                   R3                  5         SU l         gU R4                  (       Ga_  U R6                  [8        R:                  :X  Ga?  U R=                  U R>                  U R@                  5      nU R>                  RB                  S:X  a0  SU RD                  ;   a   URG                  SU RD                  S   5      nO—U R>                  RB                  S:X  al  SU RD                  ;   a\  U RD                  S   n[I        U[J        5      (       a  URM                  U5        O&[I        U[N        5      (       a  URQ                  U5        URS                  S5      nU R4                  RU                  X`R@                  U5        U R4                  U l        ggg! [        R
                  [        4 a     GMÞ  f = f! [         a     GMð  [         ab    US:X  a  US-  n [        R                  " U R                  U5         GN+! [         a$  n[        R                   (       a   SnA GMP  UeSnAff = f["         aq    [$        R'                  SXU5        [        R                  " U R                  U5      nUS	S
 R)                  5       (       a  U R*                  R-                  XS45         GNÕf = f)z%internal: finished reading image dataNr   Tr(   r    r¯  rŠ  r‰  r	   r'   r    r  r&   r!   )+rŽ  rX   rÅ  ra   rˆ   r‰   rg   r�  r˜  rz   rƒ   r¹  r  r   r“   r’   re   r�  r   r€   r�  r�  rx   rß   r“  rq   r²  rµ  r=   r@   rº  r¶  r¸  r½  rÕ   Úconvert_transparentrÀ   rž   ÚputpalettealphasrŸ   ÚputpalettealphaÚconvertr·  )	rZ   rh   ri   rj   rŒ   rH   ÚupdatedÚmaskÚts	            r;   Úload_endÚPngImageFile.load_end   sÜ  € à�x‰xÑ#Ð#Ð#Ø�w‰wÑ"Ð"Ð"Ø�;‰;˜!ÓØ�G‰G�L‰L˜Ÿ™Ô%ØØ�G‰G�L‰L˜ŒOðØ#'§8¡8§=¡=£?Ñ �˜&ð �g‹~ØØ˜“ D×$4×$4à&'�Ô#Ø—‘—‘˜c¨Ô/Øð?Ø—‘—‘˜c¨Ô/ñ# ðF —X‘X×%Ñ%ˆŒ
Ø××Ø�H‰H�N‰NÔØˆD�Hà�}�}ˆ} §¡´%·-±-Ô!?ØŸ*™* T§W¡W¨d×.AÑ.AÓB�Ø—7‘7—<‘< 5Ó(¨^¸t¿y¹yÓ-HØ"×6Ñ6Ø §	¡	¨.Ñ 9ó‘Dð —w‘w—|‘| sÓ*¨~ÀÇÁÓ/JØ ŸI™I nÑ5˜Ü% a¬×/Ñ/Ø#×4Ñ4°QÕ7Ü'¨¬3×/Ñ/Ø#×3Ñ3°AÔ6Ø"Ÿ?™?¨6Ó2�DØ—‘×#Ñ# G×-@Ñ-@À$ÔGØŸ-™-�•ð "@ˆ}øôG —L‘L¤+Ð.ó Ûðûô &ó ÛÜó 	 Ø˜'“>Ø˜a‘K�Fð Ü×(Ò(¨¯©°&×9øÜó  Ü ×6×6ßà˜ûð	 úô
 "ó ?Ü—‘Ð1°3¸VÔDÜ×(Ò(¨¯©°&Ó9�Ø�q˜�8×#Ñ#×%Ñ%Ø×'Ñ'×.Ñ.°¸¨~Ô>úð	?úsU   Á1J/ ÃK Ê/KËKË
OËOË4!LÌ
MÌ"MÌ7OÌ?MÍMÍA9OÏOc                óÀ   • SU R                   ;  a  U R                  5         SU R                   ;  a  SU R                   ;  a  g U R                  5       R                  5       $ )Nr[  zRaw profile type exif)rÕ   r¢  ÚgetexifÚ_get_merged_dictrm   s    r;   Ú_getexifÚPngImageFile._getexif?  sG   € Ø˜Ÿ™Ó"Ø�I‰IŒKØ˜Ÿ™Ó"Ð'>ÀdÇiÁiÓ'OØØ�|‰|‹~×.Ñ.Ó0Ð0r:   c                ó`   >• SU R                   ;  a  U R                  5         [        TU ]  5       $ )Nr[  )rÕ   r¢  rÝ   rÙ  )rZ   ré   s    €r;   rÙ  ÚPngImageFile.getexifF  s%   ø€ Ø˜Ÿ™Ó"Ø�I‰IŒKä‰w‰Ó Ð r:   )Ú__frameÚ__idatÚ__prepare_idatÚ__rewindÚ__rewind_idatr™  r‹  r±  r‘  r²  r’  r“  rµ  r”  rÄ  r  r³  r¸  r´  rX   r¶  rÕ   r�  rb  r—  rŽ  r�  rÖ   r�   )rš   zdict[str, str | iTXt])r£  rŸ   rš   r›   rÏ   )r£  rŸ   rõ   rÐ   rš   r›   )rš   rŸ   )rË  rŸ   rš   rž   )rš   zdict[int, Any] | None)rš   z
Image.Exif)r2   r3   r4   r5   ÚformatÚformat_descriptionrŸ  Úpropertyrª   r–   r`   rœ  rb   rÆ  rÌ  rÖ  rÛ  rÙ  r9   r~  r  s   @r;   r†  r†  ö  s`   ø† Ø€FØ4ÐôB-ðH óó ð÷ô 'öbIôHô/ô!(ôF=(ô~1÷!õ !r:   r†  )r   ó   r¿   )úL;1rç  r¿   )r   ó   r¿   )r   ó   r¿   )r   ó   r¿   )r%   rë  rê  )r   ó   r¿   )r"   rç  ó   )r#   ré  rí  )r$   rê  rí  )r!   rë  rí  )r    rë  ré  )r&   rë  ó   )r   rè  r   r   r   r%   r)  r   r   r"   r#   r$   r!   r    r&   c                óò   • SR                  U5      nU R                  [        [        U5      5      U-   5        U R                  U5        [	        U[	        U5      5      nU R                  [        U5      5        g)z'Write a PNG chunk (including CRC field)r:   N)ÚjoinÚwriteÚo32r1  rQ   )rX   rh   rO   Ú	byte_datar�   s        r;   Úputchunkrô  d  sW   € ð —‘˜“€Ià‡H�HŒS”�Y“Ó  3Ñ&Ô'Ø‡H�HˆYÔÜ
�œF 3›KÓ
(€CØ‡H�HŒS�‹XÕr:   c                  ó(   • \ rS rSrSS jrSS jrSrg)Ú_idatio  c                ó   • Xl         X l        g rV   )rX   Úchunk)rZ   rX   rø  s      r;   r[   Ú_idat.__init__r  s   € ØŒØ�
r:   c                ó>   • U R                  U R                  SU5        g )NrÉ  ©rø  rX   ©rZ   rO   s     r;   rñ  Ú_idat.writev  s   € Ø�
‰
�4—7‘7˜G TÕ*r:   rû  N)rX   r™   rø  úCallable[..., None]rš   r›   ©rO   rž   rš   r›   ©r2   r3   r4   r5   r[   rñ  r9   r1   r:   r;   rö  rö  o  s   † ô÷+r:   rö  c                  ó(   • \ rS rSrSS jrSS jrSrg)Ú_fdatiz  c                ó(   • Xl         X l        X0l        g rV   )rX   rø  r×   )rZ   rX   rø  r×   s       r;   r[   Ú_fdat.__init__}  s   € ØŒØŒ
Ø�r:   c                ó�   • U R                  U R                  S[        U R                  5      U5        U =R                  S-  sl        g )NrŠ  r	   )rø  rX   rò  r×   rü  s     r;   rñ  Ú_fdat.write‚  s/   € Ø�
‰
�4—7‘7˜G¤S¨¯©Ó%6¸Ô=Ø�Š˜ÑŽr:   )rø  rX   r×   N)rX   r™   rø  rþ  r×   rŸ   rš   r›   rÿ  r   r1   r:   r;   r  r  z  s   † ô÷
r:   r  c                óš   • UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      4U l        g )NÚoptimizeFÚcompress_leveléÿÿÿÿÚcompress_typeÚ
dictionaryr:   )r•  Úencoderconfig)r¶  Úencoderinfos     r;   Ú_apply_encoderinfor  ‡  sE   € à�‰˜
 EÓ*Ø�‰Ð(¨"Ó-Ø�‰˜¨Ó,Ø�‰˜ cÓ*ð	€BÕr:   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú_Framei�  úImage.Imager¶  z tuple[int, int, int, int] | Noner  údict[str, Any]r  r1   NrØ   r1   r:   r;   r  r  �  s   ‡ ØƒOØ
*Ó*ØÖr:   r  c                ó¸  • U R                   R                  S5      nU R                   R                  SU R                  R                  SS5      5      nU R                   R                  SU R                  R                  S[        R                  5      5      n	U R                   R                  SU R                  R                  S[
        R                  5      5      n
U(       a  [        R                  " U5      nO[        R                  " U /U5      n/ nSnU GHý  n[        R                  " U5       GHÞ  nUR                  U:X  a  UR                  5       nOUR                  U5      nU R                   R                  5       n[        U[        [         45      (       a  X}   US'   O%Uc"  SUR                  ;   a  UR                  S   US'   [        U	[        [         45      (       a  X�   US'   [        U
[        [         45      (       a  X­   US'   US-  nU(       Ga×  US   nUR                   R                  S5      nUR                   R                  S5      nU[        R"                  :X  a  [%        U5      S:  a  [        R&                  nU[        R&                  :X  aŒ  UR(                  R                  5       n[*        R,                  R/                  S	U R0                  S
5      nUR2                  nU(       a  UR5                  U5      nOSU R0                  -   nUR7                  UU5        O0U[        R"                  :X  a  US   R(                  nOUR(                  n[8        R:                  " UR                  S	5      UR                  S	5      5      nUR=                  SS9nU(       dM  UUR                  S5      :X  a8  UUR                  S5      :X  a#  SU;   a  UR                   S==   US   -  ss'   GM¿  OS nUR?                  [A        UUU5      5        GMá     GM      [%        U5      S:X  a  U(       d  US   R(                  $ U" US[C        [%        U5      5      [C        U5      5        U(       a”  U R                  U:X  a  U OU R                  U5      n[E        UU R                   5        [F        RH                  " U[K        [L        [N           [Q        X5      5      [F        RR                  " SSU R0                  -   SU5      /5        Sn[U        U5       GHK  u  nnUR(                  nUR2                  (       d  SUR0                  -   nOUR2                  nUR5                  U5      nUR0                  nUR                   nUR                  SS5      n[W        US-  5      RY                  S5      nURZ                  S:”  a  Sn[]        U5      eUR                  SU	5      n UR                  SU
5      n!U" US[C        U5      [C        US   5      [C        US   5      [C        US   5      [C        US   5      [_        URZ                  5      [_        UR`                  5      [c        U 5      [c        U!5      5        US-  n[E        XðR                   5        US:X  ae  U(       d^  [F        RH                  " U[K        [L        [N           [Q        X5      5      [F        RR                  " SSUR0                  -   SU5      /5        GMá  [e        XU5      n"[F        RH                  " U[K        [L        [N           U"5      [F        RR                  " SSUR0                  -   SU5      /5        U"Rf                  nGMN     g )Nrl  r_  r   rn  rp  r	   r
  r'   r&   )r   r   r   r   rÜ   éþÿÿÿF)Ú
alpha_onlys   acTLrÅ   rk  éÿÿ  zcannot write durationr¯  )4r  r•  rÕ   r/   r6   r=   r?   Ú	itertoolsÚchainr   ÚIteratorr½  rñ   rÒ  rÀ   Úlistr2  r8   r1  r7   r¶  r
   r»  r¼  r¾  r  Úcropr·  r   Úsubtract_moduloÚgetbboxrx   r  rò  r  r   Ú_saver   r   rž   rö  r  Ú	enumerater   Úlimit_denominatorÚ	numeratorrG   Úo16Údenominatorr   r  r×   )#r¶  rX   rø  r½  rž  r  Úappend_imagesrl  r_  rn  rp  r  Ú	im_framesÚframe_countÚim_seqÚim_framer  ÚpreviousÚprev_disposalÚ
prev_blendÚbase_imr³  r  ÚdeltaÚ
default_imr×   r£  Ú
frame_datar¾  Úframe_durationÚdelayrK   Úframe_disposalÚframe_blendÚfdat_chunkss#                                      r;   Ú_write_multiple_framesr6  –  sÓ  € ð �~‰~×!Ñ! *Ó-€HØ�>‰>×Ñ˜f b§g¡g§k¡k°&¸!Ó&<Ó=€DØ�~‰~×!Ñ! *¨b¯g©g¯k©k¸*Äh×FVÑFVÓ.WÓX€HØ�N‰N×Ñ˜w¨¯©¯©°G¼U¿_¹_Ó(MÓN€EæÜ—’ Ó.‰ä—’   mÓ4ˆà €IØ€KÜˆÜ%×.Ò.¨v×6ˆHØ�}‰} Ó$Ø#Ÿ=™=›?‘à#×+Ñ+¨DÓ1�ØŸ.™.×-Ñ-Ó/ˆKÜ˜(¤T¬5 M×2Ñ2Ø*2Ñ*?�˜JÒ'ØÑ! j°H·M±MÓ&AØ*2¯-©-¸
Ñ*C�˜JÑ'Ü˜(¤T¬5 M×2Ñ2Ø*2Ñ*?�˜JÑ'Ü˜%¤$¬ ×/Ñ/Ø',Ñ'9�˜GÑ$Ø˜1ÑˆKçØ$ R™=�Ø (× 4Ñ 4× 8Ñ 8¸Ó D�Ø%×1Ñ1×5Ñ5°gÓ>�
Ø ¤H×$8Ñ$8Ó8¼SÀ»^ÈaÓ=OÜ$,×$:Ñ$:�Mà ¤H×$:Ñ$:Ó:Ø&Ÿk™k×.Ñ.Ó0�GÜ#Ÿj™jŸo™o¨f°b·g±g¸|ÓL�GØ#Ÿ=™=�DÞØ")§,¡,¨tÓ"4™à%¨¯©Ñ/˜Ø—M‘M '¨4Õ0Ø"¤h×&:Ñ&:Ó:Ø'¨™m×.Ñ.‘Gà&Ÿk™k�GÜ"×2Ò2Ø×$Ñ$ VÓ,¨g¯o©o¸fÓ.Eó�ð —}‘}°�}Ð6�æØ%¨¯©¸Ó)DÓDØ" k§o¡o°gÓ&>Ó>Ø" kÓ1à×(Ñ(¨Ó4¸ÀJÑ8OÑOÓ4Úøà�Ø×ÑœV H¨d°KÓ@×Aôe 7ñ ôj ˆ9ƒ~˜Ó¦=Ø˜‰|�‰Ðñ 
Ø
ØÜŒC�	‹NÓÜˆD‹	ô	ö ØŸ7™7 d›?‘R°·
±
¸4Ó0@ˆ
Ü˜: r§~¡~Ô6Ü�ŠØÜ””E‘œE "Ó,Ó-Ü�_Š_˜U F¨R¯W©WÑ$4°a¸ÓAÐBô	
ð €GÜ& y×1ÑˆˆzØ—=‘=ˆØ��Ø˜HŸM™MÑ)‰Dà—?‘?ˆDØ—}‘} TÓ*ˆHØ�}‰}ˆØ ×,Ñ,ˆØ$Ÿ™¨°QÓ7ˆÜ˜¨$Ñ.Ó/×AÑAÀ%ÓHˆØ�?‰?˜UÓ"Ø)ˆCÜ˜S“/Ð!Ø$Ÿ™¨°XÓ>ˆØ!—o‘o g¨uÓ5ˆáØØÜ�‹LÜ��Q‘‹LÜ��Q‘‹LÜ��Q‘‹LÜ��Q‘‹LÜ�—‘Ó Ü�×!Ñ!Ó"Üˆ~ÓÜˆ{‹Oô	
ð 	�1‰ˆä˜8§^¡^Ô4Ø�A‹:žmä�OŠOØÜ”Rœ‘Y¤ bÓ 0Ó1Ü—’ ¨°·±Ñ(>ÀÀ7ÓKÐL÷ô   ¨7Ó3ˆKÜ�OŠOØÜ”Rœ‘Y Ó,Ü—’ ¨°·±Ñ(>ÀÀ7ÓKÐLôð
 "×)Ñ)‹Gñ_ 2ð` r:   c                ó   • [        XUSS9  g )NT)Úsave_all)r  )r¶  rX   Úfilenames      r;   Ú	_save_allr:  )  s   € Ü	ˆ"�( TÓ*r:   c                ó¶  ^)• U(       Ga  U R                   R                  SU R                  R                  S5      5      n[        5       n[        5       m)U R                   R                  S/ 5      n[        R
                  " U /U5       HV  n[        R                  " U5       H9  n	UR                  U	R                  5        T)R                  U	R                  5        M;     MX     S H
  n
X¦;   d  M
    O   UR                  5       n
[        U)4S j[        S5       5       5      nOU R                  nU R                  n
U
n/ nU R                  (       a  U R                  5       =(       d    / nU
S:X  a…  SU R                   ;   a  [!        SU R                   S   -  S	5      nO6U R                  (       a#  [#        [!        [%        U5      S
-  S	5      S5      nOS	nUS::  a  US::  a  SnOUS::  a  SnOSnUSU 3-  n [&        U   u  nnnUS:X  a  [-        SSSS9  UR/                  [0        5        U" US[3        US   5      [3        US   5      UUSSS5	        / SQnU R                   R                  SU R                  R                  S5      5      =n(       a9  SnUS-   [4        R6                  " U5      -   nU" USU5        UR9                  S5        U R                   R                  S5      =n(       a›  / SQnUR:                   H‡  nUS S u  nnUU;   a  UR9                  U5        U" UUU5        M.  UU;   a  U" UUU5        M@  USS R=                  5       (       d  MZ  [%        U5      S
:H  =(       a    US   nU(       a  M}  U" UUU5        M‰     U R                  S:X  aB  WS
-  n[?        US U 5      n[%        U5      U:  a  US-  n[%        U5      U:  a  M  U" USU5        U R                   R                  S U R                  R                  S S 5      5      n U (       d  U S:X  aü  U R                  S:X  aR  Wn![A        U [>        5      (       a  U" US!U S U! 5        GO[#        S[!        S"U 5      5      n S#U -  S-   n"U" US!U"S U! 5        OóU R                  S$;   a*  [#        S[!        S%U 5      5      n U" US![C        U 5      5        O¹U R                  S&:X  a2  U u  n#n$n%U" US![C        U#5      [C        U$5      -   [C        U%5      -   5        OwS U R                   ;   a  S'n[+        U5      eOYU R                  S:X  aI  U RD                  RG                  5       S(:X  a+  U RD                  R                  S(S)5      n"Wn!U" US!U"S U! 5        U R                   R                  S*5      =n&(       aB  U" US+[3        [I        U&S   S,-  S--   5      5      [3        [I        U&S   S,-  S--   5      5      S.5        U(       aB  S/S0/nUR:                   H.  nUS S u  nnUU;   d  M  UR9                  U5        U" UUU5        M0     U R                   R                  S15      =n'(       aU  [A        U'[J        RL                  5      (       a  U'RO                  S25      n'U'RQ                  S35      (       a  U'S4S  n'U" US5U'5        U n(U(       a  [S        XX:UWW5      n(U((       aq  [U        U(U R                   5        [V        RX                  " U([[        [\        [>           [_        X5      5      [V        R`                  " S6S7U(R                  -   SU5      /5        U(       ab  UR:                   HR  nUS S u  nnUSS R=                  5       (       d  M%  [%        U5      S
:H  =(       a    US   nU(       d  MH  U" UUU5        MT     U" US8S95        [c        US:5      (       a  URe                  5         g g ! [(         a  nSU
 S3n[+        U5      UeS nAff = f);Nr  r%  )r&   r    r!   c              3  óP   >^#   • U  H  m[        U4S  jT 5       5      v •  M     g7f)c              3  ó,   >#   • U  H	  oT   v •  M     g 7frV   r1   )r+  Ú
frame_sizerû   s     €r;   r-  Ú"_save.<locals>.<genexpr>.<genexpr>F  s   øé € Ð?º¨: Ažºùs   ƒN)Úmax)r+  rû   Úsizess    @€r;   r-  Ú_save.<locals>.<genexpr>F  s   ùé € ÐRÊÀA”SÔ?¹Ó?×?Ð?Êùs   „"&r'   r!   Úbitsr	   r£   r+   r*   r(   Ú;zcannot write mode z as PNGr)  zSaving I mode images as PNGr   )Ú
stacklevels   IHDRr   r¿   )s   cHRMs   cICPs   gAMAs   sBITó   sRGBs   tIMErù   s   ICC ProfilerÊ   s   iCCPrF  Úpnginfo)s   sPLTr¾   rË   rÉ   s   PLTEr  s   tRNSr  ó   ÿ)r   r   r)  r   r  r    z%cannot use transparency for this moder&   ÚAr<  s   pHYsr;  g      à?rç  s   bKGDs   hISTr[  r)   rZ  r,   s   eXIfrÅ   rÜ   r    r:   Úflush)3r  r•  rÕ   Úsetr  r  r   r  r¸   r½  r¾  r_   r2  rª  r—  Ú
getpaletterÊ  r@  r1  Ú	_OUTMODESÚKeyErrorr’   r   rñ  r‚  rò  rB   rÂ   Úremover´   r�  rž   rÀ   r#  r¶  ÚgetpalettemoderŸ   r
   ÚExifÚtobytesr�  r6  r  r   r  r   r   rö  r  ÚhasattrrJ  )*r¶  rX   r9  rø  r8  r  Úmodesr%  r(  r)  r½  r¾  Úoutmoder—  ÚcolorsrC  rž  Ú	bit_depthÚ
color_typerŒ   rK   r´   ÚiccÚnamerO   rÕ   Úchunks_multiple_allowedÚ
info_chunkrh   r·   Úpalette_byte_numberÚpalette_bytesr  Úalpha_bytesÚalphaÚredÚgreenÚbluer<  r[  Ú	single_imrA  s*                                            @r;   r  r  -  s  ø€ ÷ ØŸ™×*Ñ*Ø˜RŸW™WŸ[™[¨Ó9ó
ˆô “ˆÜ“ˆØŸ™×*Ñ*¨?¸BÓ?ˆÜ—o’o r d¨MÖ:ˆFÜ)×2Ò2°6Ö:�Ø—	‘	˜(Ÿ-™-Ô(Ø—	‘	˜(Ÿ-™-Ö(ó ;ñ ;ó )ˆDØ�}Ùñ )ð —9‘9“;ˆDÜÔRÌÈqÌÓRÓR‰à�w‰wˆØ�w‰wˆà€GØ€GØ	‡z‡zØ—-‘-“/×' RˆØˆsƒ{ð �R—^‘^Ó#ä˜˜bŸn™n¨VÑ4Ñ4°cÓ:‰Fð �z�zÜœS¤ W£°Ñ!2°CÓ8¸!Ó<‘à�à�R‹<Ø˜‹{Ø‘Ø˜1“Ø‘à�Ø˜˜4˜&�zÑ!ˆGð"Ü)2°7Ñ);Ñ&ˆ�˜Jð �#ƒ~ÜÐ/°ÀÒBð
 ‡H�HŒVÔá	Ø
ØÜˆD�‰G‹ÜˆD�‰G‹ØØØØØô
ò D€Fà�n‰n× Ñ  °·±·±¸MÓ0JÓKÐK€sÕKð ˆØ�g‰~¤§¢¨cÓ 2Ñ2ˆÙˆb�'˜4Ô ð 	�‰�gÔà�~‰~×!Ñ! )Ó,Ð,€tÕ,Ú"FÐØŸ+œ+ˆJØ" 2 A˜‰IˆC�Ø�f‹}Ø—‘˜cÔ"Ù�b˜#˜tÖ$ØÐ/Ó/Ù�b˜#˜tÖ$Ø�Q�q�×!Ñ!×#Ó#ä  ›_°Ñ1×C°jÀ±m�
ß!�zÙ˜"˜c 4Ö(ñ &ð 
‡w�w�#ƒ~Ø$ q™jÐÜ˜gÐ&:Ð':Ð;Ó<ˆÜ�-Ó Ð#6Ó6Ø˜UÑ"ˆMô �-Ó Ð#6Õ6áˆb�'˜=Ô)à—>‘>×%Ñ% n°b·g±g·k±kÀ.ÐRVÓ6WÓX€Læ�| qÓ(Ø�7‰7�c‹>à ˆKÜ˜,¬×.Ñ.Ù�b˜' <°°Ð#=Ö>ä" 1¤c¨#¨|Ó&<Ó=�Ø ,Ñ.°Ñ6�Ù�b˜' 5¨¨+Ð#6Õ7Ø�W‰WÐ/Ó/Ü˜q¤# e¨\Ó":Ó;ˆLÙ�"�gœs <Ó0Õ1Ø�W‰W˜ÓØ+ÑˆC�˜Ù�"�gœs 3›x¬#¨e«*Ñ4´s¸4³yÑ@ÕAà §¡Ó/ð >�Ü˜c“lÐ"ð	 0ð �7‰7�c‹>˜bŸe™e×2Ñ2Ó4¸Ó>Ø—E‘E×$Ñ$ V¨SÓ1ˆEØ ˆKÙ�"�g˜u \ kÐ2Ô3à�n‰n× Ñ  Ó'Ð'€sÕ'ÙØØÜ”�C˜‘F˜V‘O cÑ)Ó*Ó+Ü”�C˜‘F˜V‘O cÑ)Ó*Ó+Øô	
ö Ø˜7Ð#ˆØŸ+œ+ˆJØ" 2 A˜‰IˆC�Ø�f�}Ø—‘˜cÔ"Ù�b˜#˜tÖ$ñ	 &ð �~‰~×!Ñ! &Ó)Ð)€tÕ)Ü�dœEŸJ™J×'Ñ'Ø—<‘< “?ˆDØ�?‰?˜?×+Ñ+Ø˜˜�8ˆDÙˆb�'˜4Ô à$&€IÞÜ*Ø�E ¨-¸ó
ˆ	ö Ü˜9 b§n¡nÔ5Ü�ŠØÜ””E‘œE "Ó,Ó-Ü�_Š_˜U F¨Y¯^©^Ñ$;¸QÀÓHÐIô	
ö ØŸ+œ+ˆJØ" 2 A˜‰IˆC�Ø�1�Qˆx×Ñ×!Ó!ä  ›_°Ñ1×C°jÀ±m�
ß�:Ù˜"˜c 4Ö(ñ &ñ 
ˆ"ˆg�sÔäˆr�7×ÑØ
�‰�
ð øôY ó "Ø" 4 &¨Ð0ˆÜ�c‹l Ð!ûð"ús   Ç2^7 Þ7
_ß_ß_c                óp   ^• SSK Jn  / mSU4S jjnU" 5       n Xl        [        XSU5        U ?T$ ! U ?f = f)z4Return a list of PNG chunks representing this image.r   )ÚBytesIOc                óŠ   >• SR                  U5      n[        [        U[        U5      5      5      nTR                  XU45        g )Nr:   )rð  rò  rQ   rx   )rX   rh   rO   ró  r�   r´   s        €r;   rx   Úgetchunks.<locals>.append  s6   ø€ Ø—H‘H˜T“Nˆ	Ü”&˜¤F¨3£KÓ0Ó1ˆØ�‰�s sÐ+Õ,r:   rÑ   ©rX   r™   rh   rž   rO   rž   rš   r›   )Úiorf  r  r  )r¶  Úparamsrf  rx   rX   r´   s        @r;   Ú	getchunksrl  ü  sB   ø€ åà€F÷-ñ
 
‹€BðØŒÜˆb�b˜&Ô!àˆNà€Møð ‰Nús   š1 ±5z.pngz.apngz	image/png)rH   rž   rš   rž   )r   )rO   rž   rP   rŸ   rš   rŸ   )rƒ  rž   rš   rÐ   ri  )r¶  r  r  r  rš   r›   )r¶  r  rX   r™   rø  rþ  r½  r§   rž  r§   r  úImage.Image | Noner%  zlist[Image.Image]rš   rm  )r¶  r  rX   r™   r9  rÒ   rš   r›   )r¶  r  rX   r™   r9  rÒ   rø  rþ  r8  rÐ   rš   r›   )r¶  r  rk  r   rš   z list[tuple[bytes, bytes, bytes]])RÚ
__future__r   r  ÚloggingÚrerˆ   r`  rB   Úenumr   Ú	fractionsr   Útypingr   r   r   rÑ   r
   r   r   r   r   Ú_binaryr   r  r   rc   r   r   r#  r   rò  Ú
_deprecater   Ú_utilr   ÚTYPE_CHECKINGÚcollections.abcr   r   r   r   Ú	getLoggerr2   r   Úcompiler  rd   r‚  r  r  Ú	SAFEBLOCKrE   rì   r/   r=   rL   rQ   rS   r§   r¢   r±   rÔ   rÚ   r„  r†  rM  rô  rö  r  r  r  r6  r:  r  rl  Úregister_openrä  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mimer1   r:   r;   Ú<module>r�     sî  ðõB #ã Û Û 	Û Û Û Ý Ý ß 'Ñ 'ç GÕ GÝ !Ý !Ý Ý !Ý !Ý !Ý  à€ÞÝ(ß$åà	×	Ò	˜8Ó	$€à	�Š�LÓ	!×	'Ñ	'€ð 
€ð ØØØØàØàØØØàØàØ!ñ+
€ð2 —*’*Ð0Ó1€à×$Ñ$€ðð
 �~Ñ%€ðôˆwô ô*ˆGô ôö/÷[ñ [ô|ˆ3ô ÷6Y3ñ Y3ô@�:ô ôf4�ô f4ôZ%ôT!�9×&Ñ&ô T!ðx
 
!Ø$Ø$Ø$Ø	 Ø
"Ø	$Ø'Ø(Ø$Ø$Ø$Ø	 Ø$Ø&ñ!€	ô(÷+ñ +÷
ñ 
ôô ˆZô  ðPØðPàðPð ðPð ð	Pð
 ðPð &ðPð %ðPð ôPôf+ð "*ØðHØðHàðHð ðHð ð	Hð
 ðHð 
õHô^ð2 × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �L×'Ñ'¨Ô /Ø × Ò ˜×+Ñ+¨YÔ 7à × Ò ˜,×-Ñ-°¸Ð/@Ô Aà × Ò �L×'Ñ'¨Õ 5r:   