Ë
    ^ãj´š  ã                  óä  — d dl mZ h d£Zd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ ddlmZmZmZmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ dZerd dl	mZmZmZ ddlmZ ddlm Z   G d„ de«      Z!e!jD                  Z#d/d„Z$ G d„ dej                  «      Z%ddddœZ&d0d„Z'e(e)z  e*e+   z  ej                   z  Z,	 	 	 	 	 	 	 	 d1d„Z-	 	 	 	 	 	 	 	 d2d„Z.	 	 	 	 	 	 d3d„Z/ G d„ de
«      Z0	 	 	 	 	 	 	 	 d4d„Z1d5d „Z2	 d6	 	 	 	 	 	 	 	 	 d7d!„Z3d8d"„Z4	 	 	 	 	 	 	 	 	 	 d9d#„Z5dZ6d:d$„Z7d;d%„Z8d<d&„Z9d=d'„Z:	 	 	 	 	 	 d>d(„Z;d?d)„Z<	 	 	 	 	 	 	 	 	 	 d@d*„Z=	 dA	 	 	 	 	 	 	 dBd+„Z>	 dC	 	 	 	 	 	 	 dDd,„Z? ej€                  e%j‚                  e%e$«        ej„                  e%j‚                  e3«        ej†                  e%j‚                  e2«        ejˆ                  e%j‚                  d-«        ejŠ                  e%j‚                  d.«       y)Eé    )Úannotations>   ú	PIL._utilúPIL._binaryÚmathÚ	itertoolsÚ
subprocessN)ÚIntEnum)Úcached_property)Ú
NamedTupleÚcasté   )ÚImageÚ
ImageChopsÚ	ImageFileÚImagePaletteÚImageSequence)Úi16le)Úo8)Úo16le)ÚDeferredErrorF)ÚIOÚAnyÚLiteral)Ú_imaging)ÚBufferc                  ó   — e Zd ZdZdZdZdZy)ÚLoadingStrategyz.. versionadded:: 9.1.0r   r   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚRGB_AFTER_FIRSTÚ RGB_AFTER_DIFFERENT_PALETTE_ONLYÚ
RGB_ALWAYS© ó    úT/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/PIL/GifImagePlugin.pyr   r   >   s   „ Ù!à€OØ'(Ð$Ø�Jr'   r   c                ó$   — | j                  d«      S )N)s   GIF87as   GIF89a)Ú
startswith)Úprefixs    r(   Ú_acceptr,   M   s   € Ø×ÑÐ3Ó4Ð4r'   c                  óŽ   ‡ — e Zd ZdZdZdZdZdd„Zdd„Zdd„Z	e
dd„«       Zedd	„«       Zdd
„Zddd„Zdˆ fd„Zdd„Zdd„Zˆ xZS )ÚGifImageFileÚGIFzCompuserve GIFFNc                ó    — | j                   €J ‚| j                   j                  d«      }|r#|d   r| j                   j                  |d   «      S y )Nr   r   )ÚfpÚread)ÚselfÚss     r(   ÚdatazGifImageFile.data]   sF   € Ø�w‰wÐ"Ð"Ð"Ø�G‰G�L‰L˜‹OˆÙ��1’Ø—7‘7—<‘<  !¡Ó%Ð%Ør'   c                óŠ   — t        dt        |«      d«      D ]*  }|dz  ||   cxk(  r||dz      cxk(  r||dz      k(  rŒ' y  y y)Nr   é   r   r   TF)ÚrangeÚlen)r3   ÚpÚis      r(   Ú_is_palette_neededzGifImageFile._is_palette_neededd   sX   € Ü�qœ#˜a›& !Ó$ò 	ˆAØ˜‘F˜a ™dÔ: a¨¨A©¡hÔ:°!°A¸±E±(Ó:Ùð ;Ùð	ð r'   c                ób  — | j                   €J ‚| j                   j                  d«      }t        |«      sd}t        |«      ‚|d d | j                  d<   t        |d«      t        |d«      f| _        |d   }|dz  dz   }|d	z  re|d
   | j                  d<   | j                   j                  d|z  «      }| j                  |«      r$t        j                  d|«      }|x| _
        | _        | j                   | _        | j                   j                  «       | _        d | _        | j!                  d«       y )Né   znot a GIF fileé   Úversioné   é
   é   r   é€   é   Ú
backgroundr7   ÚRGBr   )r1   r2   r,   ÚSyntaxErrorÚinfoÚi16Ú_sizer<   r   ÚrawÚglobal_paletteÚpaletteÚ_fpÚtellÚ_GifImageFile__rewindÚ	_n_framesÚ_seek)r3   r4   ÚmsgÚflagsÚbitsr:   rN   s          r(   Ú_openzGifImageFile._openj   s	  € à�w‰wÐ"Ð"Ð"Ø�G‰G�L‰L˜ÓˆÜ�qŒzØ"ˆCÜ˜cÓ"Ð"à   !˜uˆ�	‰	�)ÑÜ˜˜A“Y¤ A q£	Ð)ˆŒ
Ø�"‘ˆØ˜‘	˜Q‰ˆà�3Š;à&'¨¡eˆD�I‰I�lÑ#à—‘—‘˜Q $™YÓ'ˆAØ×&Ñ& qÔ)Ü&×*Ñ*¨5°!Ó4�Ø5<Ð<�Ô# d¤là—7‘7ˆŒØŸ™Ÿ™›ˆŒØ%)ˆŒØ�
‰
�1�r'   c                ó  — | j                   €6| j                  «       }	 	 | j                  | j                  «       dz   d«       Œ$| j                   S # t        $ r | j                  «       dz   | _         Y nw xY w| j	                  |«       ŒE)Nr   F©rR   rP   rS   ÚEOFErrorÚseek)r3   Úcurrents     r(   Ún_frameszGifImageFile.n_frames…   sw   € à�>‰>Ð!Ø—i‘i“kˆGð1ØØ—J‘J˜tŸy™y›{¨Q™°Ô6ð ð
 �~‰~Ðøô ò 1Ø!%§¡£¨q¡�–ð1úà�I‰I�gÔøs   ž%A Á!A3Á2A3c                óÐ   — | j                   �| j                   dk7  S | j                  «       }|ry	 | j                  dd«       d}| j	                  |«       |S # t        $ r d}Y Œ w xY w)Nr   TFrY   )r3   r\   Úis_animateds      r(   r_   zGifImageFile.is_animated‘   sn   € à�>‰>Ð%Ø—>‘> QÑ&Ð&à—)‘)“+ˆÙØð	 Ø�J‰J�q˜%Ô ØˆKð 	�	‰	�'ÔØÐøô	 ò 	 ØŠKð	 ús   °A ÁA%Á$A%c                óT  — | j                  |«      sy || j                  k  rd | _        | j                  d«       | j                  }	 t	        | j                  dz   |dz   «      D ]  }| j                  |«       Œ y # t
        $ r$}| j                  |«       d}t        |«      |‚d }~ww xY w)Nr   r   úno more images in GIF file)Ú_seek_checkÚ_GifImageFile__frameÚ_imrS   r8   rZ   r[   )r3   ÚframeÚ
last_frameÚfÚerT   s         r(   r[   zGifImageFile.seek£   sš   € Ø×Ñ Ô&ØØ�4—<‘<ÒØˆDŒHØ�J‰J�qŒMà—\‘\ˆ
ð	'Ü˜4Ÿ<™<¨!Ñ+¨U°Q©YÓ7ò �Ø—
‘
˜1•ñøäò 	'Ø�I‰I�jÔ!Ø.ˆCÜ˜3“- QÐ&ûð	'ús   Á2A: Á:	B'ÂB"Â"B'c                óÐ  ‡ — t        ‰ j                  t        «      r‰ j                  j                  ‚|dk(  r]d‰ _        d ‰ _        d‰ _        ‰ j                  j                  ‰ j                  «       d‰ _	        d‰ j                  v r,‰ j                  d= n‰ j                  r|r‰ j                  «        |‰ j                  dz   k7  rd|› �}t        |«      ‚‰ j                  ‰ _        ‰ j                  rN‰ j                  j                  ‰ j                  «       ‰ j                  «       r	 ‰ j                  «       rŒd‰ _        ‰ j                  j!                  d«      }|r|dk(  rd}t#        |«      ‚d }i }g }d }d }	d }
	 |s‰ j                  j!                  d«      }|r|dk(  r�nÐ|dk(  �rU‰ j                  j!                  d«      }‰ j                  «       }|d   d	k(  r7|�5|d   }|dz  r|d
   }t%        |d«      dz  |d<   d|z  }|dz	  }|rÎ|‰ _	        nÆ|d   dk(  r>|r|r|j'                  d«       |r$|j'                  |«       ‰ j                  «       }|rŒ$d}ŒÝ|d   dk(  rx|dk(  rs|�q|‰ j                  j)                  «       f|d<   |j+                  d«      rA‰ j                  «       }|r/t-        |«      d
k\  r!|d   dk(  rt%        |d«      ‰ j                  d<   ‰ j                  «       �r…	 ‰ j                  «       rŒ�nq|dk(  �rk‰ j                  j!                  d«      }t%        |d«      t%        |d«      }}|t%        |d«      z   |t%        |d«      z   }}|‰ j.                  d   kD  s|‰ j.                  d   kD  rP|rNt1        |‰ j.                  d   «      t1        |‰ j.                  d   «      f}t3        j4                  |«       |‰ _        ||||f}
|d   }|dz  dk7  }	|dz  rP|dz  dz   }‰ j                  j!                  d
|z  «      }‰ j9                  |«      rt;        j<                  d|«      }nd}‰ j                  j!                  d«      d   }‰ j                  j)                  «       ‰ _        nd}�Œö|	€d }t#        |«      ‚|‰ _        |sy g ‰ _        ‰ j
                  r0‰ j>                  jA                  ‰ j
                  ‰ jB                  «       |�|n‰ jD                  ‰ _#        |‰ _$        |dk(  r{‰ jF                  r+tJ        tL        jN                  k(  r|�d!nd‰ _(        nd"‰ _(        nd#‰ _(        |r	|‰ _)        �n‰ jD                  rdd$l*m*}  |‰ jD                  «      ‰ _)        nõd ‰ _)        ní‰ jV                  d"k(  rÞtJ        tL        jX                  k7  s|rÅd%‰ j                  v rw‰ j>                  j[                  ‰ j                  d%   d«       ‰ j>                  j]                  d!t2        j^                  j`                  «      ‰ _        d!‰ _(        ‰ j                  d%= n@d‰ _(        ‰ j>                  j]                  dt2        j^                  j`                  «      ‰ _        d,ˆ fd&„}d ‰ _        |
‰ _!        ‰ jB                  �r–‰ j                  dk\  �r†	 ‰ j                  dk(  rÇ‰ jB                  \  }}}}||z
  ||z
  f}t3        j4                  |«       d"}‰ j                  jc                  d%|«      }|�‰ jV                  d'v rBd!} ||«      d(z   }n4‰ j                  jc                  d)d«      }‰ jV                  d'v r
d} ||«      }t2        jd                  jg                  |||«      ‰ _        n¯‰ jh                  �,‰ jk                  ‰ j>                  ‰ jB                  «      ‰ _        nw|�u‰ jB                  \  }}}}||z
  ||z
  f}t3        j4                  |«       d"}|}‰ jV                  d'v rd!} ||«      d(z   }t2        jd                  jg                  |||«      ‰ _        |	�od}|�<|dk(  r'tJ        tL        jN                  k7  r |‰ j                  d%<   n‰ jV                  d'vr|}to        jp                  d*f‰ j                  |	|f«      g‰ _        |rdjs                  |«      ‰ j                  d<   d+D ]5  }||v r||   ‰ j                  |<   Œ|‰ j                  v sŒ)‰ j                  |= Œ7 y # tl        $ r Y Œ×w xY w)-Nr   éÿÿÿÿÚcommentr   zcannot seek to frame ó   ;ra   ó   !éù   r7   rB   Údurationé   r   éþ   ó   
r'   éÿ   Ú	extensionó   NETSCAPE2.0Úloopó   ,é	   é   r?   rA   é@   rD   rC   rG   Fzimage not found in GIF frameÚRGBAÚPÚL)ÚcopyÚtransparencyc           	     óä   •— ‰j                   r_| dz  dz   t        ‰j                   j                  «      kD  rd} t        dt	        ‰j                   j                  | dz  | dz  dz    «      «      S | | | fS )Nr7   r   útuple[int, int, int])Ú_frame_paletter9   rN   r   Útuple)Úcolorr3   s    €r(   Ú_rgbz GifImageFile._seek.<locals>._rgba  sx   ø€ Ø×"Ò"Ø˜1‘9˜q‘=¤3 t×':Ñ':×'BÑ'BÓ#CÒCØ�EÜØ*Ü˜$×-Ñ-×5Ñ5°e¸a±iÀ%È!Á)ÈaÁ-ÐPÓQóð ð
 ˜u eÐ,Ð,r'   ©rG   r{   )r   rF   Úgif)ro   rt   )r„   ÚintÚreturnr�   ):Ú
isinstancerO   r   ÚexÚ_GifImageFile__offsetÚdisposerc   r[   rQ   Údisposal_methodrI   ÚtileÚloadÚ
ValueErrorr1   r5   r2   rZ   rJ   ÚappendrP   r*   r9   ÚsizeÚmaxr   Ú_decompression_bomb_checkrK   r<   r   rL   ÚimÚpasteÚdispose_extentrM   r‚   Ú_frame_transparencyÚLOADING_STRATEGYr   r%   Ú_moderN   r~   Úmoder$   ÚputpalettealphaÚconvertÚDitherÚFLOYDSTEINBERGÚgetÚcoreÚfillrd   Ú_cropÚAttributeErrorr   Ú_TileÚjoin)r3   re   Úupdate_imagerT   r4   rN   rI   Úcomment_blocksÚframe_transparencyÚ	interlaceÚframe_dispose_extentÚblockrU   Údispose_bitsÚx0Úy0Úx1Úy1r“   rV   r:   r~   r…   Údispose_sizeÚdispose_moder„   r   Úks   `                           r(   rS   zGifImageFile._seek³   s  ø€ Ü�d—h‘h¤Ô.Ø—(‘(—+‘+ÐØ�AŠ:àˆDŒMØ8<ˆDŒLØˆDŒLØ�H‰H�M‰M˜$Ÿ-™-Ô(Ø#$ˆDÔ Ø˜DŸI™IÑ%Ø—I‘I˜iÑ(ð �yŠy™\Ø—	‘	”à�D—L‘L 1Ñ$Ò$Ø)¨%¨Ð1ˆCÜ˜S“/Ð!à—(‘(ˆŒØ�=Š=à�G‰G�L‰L˜Ÿ™Ô'Ø—)‘)”+Øð —)‘)•+àˆDŒMà�G‰G�L‰L˜‹OˆÙ�A˜’IØ.ˆCÜ˜3“-ÐàEIˆà!ˆØ&(ˆØ!ÐØˆ	Ø#ÐØÙØ—G‘G—L‘L “O�Ù˜˜Tš	Ùà�d“ð —G‘G—L‘L “O�ØŸ	™	›�Ø�Q‘4˜3’; 5Ð#4ð " !™H�EØ˜q’yØ-2°1©XÐ*Ü'*¨5°!£}°rÑ'9�D˜Ñ$ð $.°Ñ#5�LØ#/°1Ñ#4�LÙ#ð
 0<˜Õ,Ø�q‘T˜S’[ñ ¡à&×-Ñ-¨eÔ4ÙØ&×-Ñ-¨eÔ4Ø $§	¡	£˜ò  ð �AØØ�q‘T˜S’[ U¨a¢Z°EÐ4Eð ).¨t¯w©w¯|©|«~Ð(=�D˜Ñ%Ø×'Ñ'¨Ô7Ø $§	¡	£˜Ù ¤S¨£Z°1¢_¸¸q¹ÀQºÜ03°E¸1³˜DŸI™I fÑ-Ø—i‘i•kØð —i‘i—kð �d“ð —G‘G—L‘L “O�ô ˜Q ›¤C¨¨1£I�B�Øœc ! Q›i™¨¬c°!°Q«i©�B�Ø˜Ÿ™ 1™Ò%¨¨d¯i©i¸©lÒ):ÁÜ˜r 4§9¡9¨Q¡<Ó0´#°b¸$¿)¹)ÀA¹,Ó2GÐG�DÜ×3Ñ3°DÔ9Ø!%�D”JØ')¨2¨r°2 ~Ð$Ø˜!™�à" R™Z¨AÑ-�	à˜3’;Ø! A™I¨™?�DØŸ™Ÿ™ Q¨$¡YÓ/�AØ×.Ñ.¨qÔ1Ü".×"2Ñ"2°5¸!Ó"<™à"'˜ð —w‘w—|‘| A“ qÑ)�Ø $§¡§¡£�”ØØˆAñi ðl ÐØ0ˆCÜ˜3“-ÐàˆŒÙØàˆŒ	à�<Š<Ø�G‰G�M‰M˜$Ÿ,™,¨×(;Ñ(;Ô<à)0Ð)<™gÀ$×BUÑBUˆÔØ#5ˆÔ Ø�AŠ:Ø×"Ò"Ü#¤×'AÑ'AÒAØ+=Ð+I¡Èu�D•Jà!$�D•Jà �”
áØ&�–Ø×$Ò$Ý%á# D×$7Ñ$7Ó8�•à#�•à�y‰y˜CÒä$¬×(XÑ(XÒXÙà%¨¯©Ñ2ØŸ™×/Ñ/°·	±	¸.Ñ0IÈ1ÔMØ"&§'¡'§/¡/°&¼%¿,¹,×:UÑ:UÓ"V˜œØ%+˜œ
Ø ŸI™I nÑ5à%*˜œ
Ø"&§'¡'§/¡/°%¼¿¹×9TÑ9TÓ"U˜œõ		-ð ˆŒØ@TˆÔØ×Ó 4×#7Ñ#7¸1Ó#<ð*Ø×'Ñ'¨1Ò,ð &*×%8Ñ%8‘N�B˜˜B Ø$&¨¡G¨R°"©WÐ#5�Lä×3Ñ3°LÔAð $'�LØ ŸI™IŸM™M¨.Ð:LÓM�EØÐ(ØŸ9™9¨Ñ7Ø+1˜LÙ$(¨£K°$Ñ$6™Eà $§	¡	§¡¨l¸AÓ >˜ØŸ9™9¨Ñ7Ø+0˜LÙ$(¨£K˜EÜ#(§:¡:§?¡?°<ÀÈuÓ#U�D•Lð —x‘xÐ+à'+§z¡z°$·'±'¸4×;NÑ;NÓ'O˜�Ø+Ð7Ø)-×)<Ñ)<™˜˜B  BØ(*¨R©°°b±Ð'9˜ä×7Ñ7¸ÔEØ'*˜Ø 2˜ØŸ9™9¨Ñ7Ø+1˜LÙ$(Ð);Ó$<¸tÑ$C˜EÜ',§z¡z§¡Ø(¨,¸ó(˜œð Ð ØˆLØ!Ð-Ø˜A’:Ü'¬?×+EÑ+EÒEØ4F˜Ÿ	™	 .Ò1Ø—Y‘Y oÑ5Ø#5�Lä—‘ØØ˜˜R Ð$Ø—M‘MØ˜9 lÐ3ó	ðˆDŒIñ Ø#&§8¡8¨NÓ#;ˆD�I‰I�iÑ Ø*ò 	!ˆAØ�D‰yØ# A™w�—	‘	˜!’Ø�d—i‘i’Ø—I‘I˜a‘Lñ		!øô- "ò Ùðús   ÚFc ã	c%ã$c%c                ó<  •— | j                   rdnd}d | _        | j                  dk(  rG| j                  �át        j
                  j                  || j                  | j                  «      | _        n¦| j                  dv r˜| j                  | _        | j                   rtt        j
                  j                  d| j                  | j                  xs d«      | _         | j                  j                  dg| j                   j                  «       ¢­Ž  nd | _        | j                  sà| j                  �Ô| j                  | j                  j                  k7  r±t        j
                  j                  | j                  j                  | j                  «      }| j                   r+ |j                  dg| j                   j                  «       ¢­Ž  |j                  | j                  ddg| j                  j                  ¢­«       || _        || _        d | _         t        ‰| �A  «        y )Nr|   r}   r   r†   rG   )r‚   Ú_prev_imrc   r™   r   r¢   r£   r“   r–   rœ   Ú
putpaletteÚgetdatard   r—   r›   ÚsuperÚload_prepare)r3   Ú	temp_modeÚexpanded_imÚ	__class__s      €r(   r»   zGifImageFile.load_prepare´  s†  ø€ Ø×.Ò.‘C°Cˆ	ØˆŒØ�<‰<˜1ÒØ×'Ñ'Ð3ÜŸ*™*Ÿ/™/Ø˜tŸy™y¨$×*BÑ*Bó�•ð �Y‰Y˜/Ñ)Ø ŸG™GˆDŒMØ×"Ò"ÜŸ*™*Ÿ/™/¨#¨t¯y©y¸$×:RÑ:RÒ:WÐVWÓX�”Ø"�—‘×"Ñ" 5ÐI¨4×+>Ñ+>×+FÑ+FÓ+HÔIà�”Ø�}Š} §¡Ð!5¸$¿)¹)ÀtÇwÁwÇ|Á|Ò:SÜŸ*™*Ÿ/™/¨$¯'©'¯,©,¸¿	¹	ÓBˆKØ×"Ò"Ø&�×&Ñ& uÐM¨t×/BÑ/B×/JÑ/JÓ/LÓMØ×Ñ˜dŸg™g¨¨1Ð'<¨t¯w©w¯|©|Ñ'<Ô=à!ˆDŒGØˆŒ
Ø"ˆÔä‰ÑÕr'   c                óH  — | j                   dk(  r«| j                  dk(  r›t        t        j                  k(  r„| j
                  �.| j                  j                  | j
                  d«       d| _        nd| _        | j                  j                  | j                  t        j                  j                  «      | _        y | j                  sy | j                  | j                  j                  k7  rç| j
                  �+t        j                  j!                  d| j                  «      }nft        j                  j!                  d| j                  «      }|j#                  dd| j                  j%                  «       «       |j                  d«      }|j'                  | j                  ddg| j                  j                  ¢­«       || _        | j                  €J ‚| j
                  �x| j                  dk(  r'| j                  j)                  d| j
                  «      }n]| j                  j                  | j
                  d«       | j                  j                  d«      }n| j                  j                  d«      }| j*                  €J ‚| j-                  || j*                  «      }| j                  | _        | j                  j                  | _        |j                  dv r(| j                  j'                  || j*                  |«       y | j                  j'                  || j*                  «       y )Nr   r|   r{   rG   r}   ÚLA)rÀ   r{   )rc   rœ   rš   r   r%   r™   r–   r�   r›   rž   r   rŸ   r    r·   r“   r¢   r£   r¸   Ú
getpaletter—   Úconvert_transparentr˜   r¤   )r3   r½   Úframe_ims      r(   Úload_endzGifImageFile.load_endÏ  s?  € Ø�<‰<˜1ÒØ�y‰y˜CÒÔ$4¼×8RÑ8RÒ$RØ×+Ñ+Ð7Ø—G‘G×+Ñ+¨D×,DÑ,DÀaÔHØ!'�D•Jà!&�D”JØŸ'™'Ÿ/™/¨$¯)©)´U·\±\×5PÑ5PÓQ�”ØØ�}Š}ØØ�9‰9˜Ÿ™×*Ñ*Ò*Ø×'Ñ'Ð3Ü#Ÿj™jŸo™o¨f°d·i±iÓ@‘ä#Ÿj™jŸo™o¨c°4·9±9Ó=�Ø×&Ñ& u¨e°T·W±W×5GÑ5GÓ5IÔJØ)×1Ñ1°%Ó8�Ø×Ñ˜dŸm™m¨a°Ð-H°T·]±]×5GÑ5GÑ-HÔIà'ˆDŒMØ—=‘=Ð,Ð,Ð,Ø×#Ñ#Ð/Ø�y‰y˜CÒØŸ7™7×6Ñ6°t¸T×=UÑ=UÓV‘à—‘×'Ñ'¨×(@Ñ(@À!ÔDØŸ7™7Ÿ?™?¨6Ó2‘à—w‘w—‘ uÓ-ˆHà×"Ñ"Ð.Ð.Ð.Ø—:‘:˜h¨×(;Ñ(;Ó<ˆà—-‘-ˆŒØ—W‘W—\‘\ˆŒ
Ø�=‰=˜NÑ*Ø�G‰G�M‰M˜( D×$7Ñ$7¸ÕBà�G‰G�M‰M˜( D×$7Ñ$7Õ8r'   c                ó   — | j                   S ©N)rc   )r3   s    r(   rP   zGifImageFile.tellù  s   € Ø�|‰|Ðr'   )r‰   zbytes | None)r:   Úbytesr‰   Úbool)r‰   ÚNone)r‰   rˆ   )r‰   rÈ   )re   rˆ   r‰   rÉ   )T)re   rˆ   r¨   rÈ   r‰   rÉ   )r   r    r!   ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrM   r5   r<   rW   Úpropertyr]   r
   r_   r[   rS   r»   rÄ   rP   Ú__classcell__)r¾   s   @r(   r.   r.   V   sl   ø„ Ø€FØ)ÐØ(-Ð%à€Nóóóð6 ò	ó ð	ð òó ðó"'ô !õBó6(9÷Tr'   r.   r}   r|   )Ú1r}   r|   c                óð  — | j                   t        v r| j                  «        | S t        j                  | j                   «      dk(  r | j                  dt        j                  j                  ¬«      } | j                  €J ‚| j                  j                   dk(  rL| j                  j                  D ]3  }|d   dk(  sŒ| j                  j                  |   | j                  d<    | S  | S | j                  d«      S )	a  
    Takes an image (or frame), returns an image in a mode that is appropriate
    for saving in a Gif.

    It may return the original image, or it may return an image converted to
    palette or 'L' mode.

    :param im: Image object
    :returns: Image object
    rG   r|   ©rN   r{   r7   r   r   r}   )rœ   ÚRAWMODEr�   r   Úgetmodebaserž   ÚPaletteÚADAPTIVErN   ÚcolorsrI   )r–   Úrgbas     r(   Ú_normalize_moderØ     sÏ   € ð 
‡w�w”'ÑØ
�‰Œ	Øˆ	Ü×Ñ˜Ÿ™Ó! UÒ*Ø�Z‰Z˜¤U§]¡]×%;Ñ%;ˆZÓ<ˆØ�z‰zÐ%Ð%Ð%Ø�:‰:�?‰?˜fÒ$ØŸ
™
×)Ñ)ò �Ø˜‘7˜a“<Ø.0¯j©j×.?Ñ.?ÀÑ.E�B—G‘G˜NÑ+ØØˆ	ð	ð ˆ	Ø�:‰:�c‹?Ðr'   c                óH  — d}|rXt        |t        t        t        f«      rt        |dd «      }t        |t        j                  «      rt        |j
                  «      }| j                  dk(  r#|sZ| j                  d«      }|€J ‚t        |«      }n9|st        d„ t        d«      D «       «      }t	        j                  d|¬«      | _        |€J ‚|râg }| j
                  €J ‚t        dt        |«      d«      D ]O  }t        |||dz    «      }| j
                  j                  j                  |«      }||v rd}|j                  |«       ŒQ t        |«      D ],  \  }}|�Œ	t        t        |«      «      D ]  }	|	|vsŒ|	||<    Œ, Œ. g }
|D ]  }|€J ‚|
j                  |«       Œ | j                  |
«      } n@t!        | |«      }|�2| j                  ||«      } d	|v r	 |j#                  |d	   «      |d	<   | S | S | j
                  €J ‚|| j
                  _        | S # t$        $ r |d	= Y | S w xY w)
at  
    Normalizes the palette for image.
      - Sets the palette to the incoming palette, if provided.
      - Ensures that there's a palette for L mode images
      - Optimizes the palette if necessary/desired.

    :param im: Image object
    :param palette: bytes object containing the source palette, or ....
    :param info: encoderinfo
    :returns: Image object
    Ni   r|   c              3  ó&   K  — | ]	  }|d z  –— Œ y­w)r7   Nr&   )Ú.0r;   s     r(   ú	<genexpr>z%_normalize_palette.<locals>.<genexpr>>  s   è ø€ Ò&B°! q¨A¥vÑ&Bùs   ‚rG   rÑ   r   r7   r   )rŠ   rÇ   Ú	bytearrayÚlistr   rN   rœ   rÁ   r8   r9   rƒ   rÖ   r¡   r’   Ú	enumerateÚremap_paletteÚ_get_optimizeÚindexr‘   )r–   rN   rI   Úsource_paletteÚ
im_paletteÚused_palette_colorsr;   Úsource_colorrâ   ÚjÚdest_mapÚoptimized_palette_colorss               r(   Ú_normalize_paletterê   !  s`  € ð €NÙä�g¤¤y´$Ð7Ô8Ü& w¨t° }Ó5ˆNÜ�gœ|×8Ñ8Ô9Ü& w§¡Ó7ˆNà	‡w�w�#‚~ÙØŸ™ tÓ,ˆJØÐ)Ð)Ð)Ü& zÓ2‰NáÜ&Ñ&B´u¸S³zÔ&BÓBˆNÜ!×.Ñ.¨u¸nÔMˆŒ
ØÐ%Ð%Ð%áØ02ÐØ�z‰zÐ%Ð%Ð%Ü�qœ#˜nÓ-¨qÓ1ò 	.ˆAÜ  °°A¸±EÐ!:Ó;ˆLØ—J‘J×%Ñ%×)Ñ)¨,Ó7ˆEØÐ+Ñ+Ø�Ø×&Ñ& uÕ-ð	.ô "Ð"5Ó6ò 	‰HˆAˆuØ‰}ÜœsÐ#6Ó7Ó8ò �AØÐ 3Ò3Ø12Ð+¨AÑ.Ùñð	ð !ˆØ(ò 	#ˆEØÐ$Ð$Ð$Ø�O‰O˜EÕ"ð	#ð ×Ñ˜hÓ'‰ä#0°°TÓ#:Ð Ø#Ð/Ø×!Ñ!Ð":¸NÓKˆBØ Ñ%ð-Ø+C×+IÑ+IØ˜^Ñ,ó,�D˜Ñ(ð
 ˆI�2ˆIà�:‰:Ð!Ð!Ð!Ø'€B‡J�JÔØ€Iøô "ò -Ø˜^Ñ,ØˆIð-ús   ÇH ÈH!È H!c                ó`  — t        | «      }|j                  j                  «       D ]2  \  }}t        |t        «      sŒ| j
                  j                  ||«       Œ4 t        ||| j
                  «      }t        || j
                  «      D ]  }|j                  |«       Œ d}t        | «      r|dz  }t        || d|«       dt        | «      f|_        t        j                  ||t        j                  dddg| j                   ¢­dt"        |j$                     «      g«       |j                  d«       y )Nr   rz   ©r   r   rA   r‡   ó    )rØ   rI   ÚitemsrŠ   ÚstrÚencoderinfoÚ
setdefaultrê   Ú_get_global_headerÚwriteÚget_interlaceÚ_write_local_headerÚencoderconfigr   Ú_saver¦   r“   rÒ   rœ   )r–   r1   rN   Úim_outrµ   Úvr4   rU   s           r(   Ú_write_single_framerú   h  s  € ô
 ˜RÓ €FØ—‘×!Ñ!Ó#ò ,‰ˆˆ1Ü�aœÕØ�N‰N×%Ñ% a¨Õ+ð,ô   ¨°·±Ó@€Fä ¨¯©Ó7ò ˆØ
�‰��ðð €EÜ�RÔØ˜‘
ˆÜ˜˜B ¨Ô.àœ}¨RÓ0Ð1€FÔÜ‡O�OØ�”Y—_‘_ U¨Q°Ð,<°B·G±GÑ,<¸aÄÈÏÉÑAUÓVÐWôð ‡H�HˆU…Or'   c                ó2  — | |fD �cg c]/  }|j                   rt        |j                   j                   «      nd‘Œ1 }}|d   |d   k7  r"|j                  d«      }| j                  d«      } t        j                  || «      }||j                  d¬«      fS c c}w )Nr'   r   r   r{   F)Ú
alpha_only)rN   rÇ   rž   r   Úsubtract_moduloÚgetbbox)Úbase_imÚim_framer–   Úpalette_bytesÚdeltas        r(   Ú_getbboxr  „  sž   € ð ELÈXÐCVöØ=? R§Z¢ZŒˆb�j‰j× Ñ Ô!°SÑ8ð€Mð ð �QÑ˜=¨Ñ+Ò+Ø×#Ñ# FÓ+ˆØ—/‘/ &Ó)ˆÜ×&Ñ& x°Ó9€EØ�%—-‘-¨5�-Ó1Ð1Ð1ùòs   ‡4Bc                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_FrameúImage.Imager–   z tuple[int, int, int, int] | NoneÚbboxúdict[str, Any]rð   N)r   r    r!   Ú__annotations__r&   r'   r(   r  r  ‘  s   … ØƒOØ
*Ó*ØÔr'   r  c           	     ó„
  — | j                   j                  d«      }| j                   j                  d| j                  j                  d«      «      }g }d }d}d }t        j                  | g| j                   j                  dg «      «      D �]¥  }	t        j                  |	«      D �]‰  }
t        |
j                  «       «      }
|dk(  rU|
j                  j                  «       D ]8  \  }}|dk(  rŒt        |t        «      sŒ| j                   j                  ||«       Œ: | j                   j                  «       }d|
j                  v r|j                  d|
j                  d   «       t        |
||«      }
t        |t        t        f«      r	||   |d<   n"|€ d|
j                  v r|
j                  d   |d<   t        |t        t        f«      r||   |d<   |dz  }d }|�r2|�r/t!        ||
«      \  }}|sH|j                  d«      r5|d   j                   j                  dd«      |d   z   |d   j                   d<   �Œ�|d   j                   j                  d«      dk(  rÂ| j                   j                  d| j                  j                  d«      «      }|�y|€ft#        |
|«      }t%        j&                  d	|
j(                  |«      }|d   j*                  j,                  }|€J ‚|j/                  ||j0                  «       t!        ||
«      d   }�nddg|
j(                  ¢­}nõ|j                  d
«      rä|
j0                  dk7  rÕd|vr-|
j,                  €J ‚	 |
j,                  j3                  |
«      |d<   d|v r |j0                  dk(  rS|j7                  «       \  }}}}t9        j:                  t9        j:                  ||«      t9        j:                  ||«      «      }|j=                  dgd¢d«      }|
j                  «       }|j?                  |d   |¬«       nd }|
}|jA                  tC        |xs |
||«      «       �ŒŒ �Œ¨ tE        |«      dk(  r1d|d   j                   v r|d   j                   d   | j                   d<   y|D ]º  }|j*                  }
|jF                  s/tI        |
|j                   «      D ]  }|jK                  |«       Œ d}nY|sd|j                   d<   |jF                  ddg|
j(                  ¢­k7  r|
jM                  |jF                  «      }
|jF                  d d }tO        ||
||j                   «       Œ¼ y# t4        $ r Y �Œ×w xY w)Nro   Údisposalr   Úappend_imagesr   r   rj   r   r|   ÚoptimizerÏ   r{   rs   )ÿ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   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   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   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   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   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   )ÚmaskFrì   TÚinclude_color_table)(rð   r¡   rI   r   Úchainr   ÚIteratorrØ   r~   rî   rŠ   rï   rñ   rê   rÞ   rƒ   r  Ú_get_backgroundr   Únewr“   r–   rN   r¸   rœ   Ú_new_color_indexr‘   Úsplitr   ÚlighterÚpointr—   r’   r  r9   r  rò   ró   ÚcropÚ_write_frame_data)r–   r1   rN   ro   r  Ú	im_framesÚprevious_imÚframe_countÚbackground_imÚ
imSequencer   rµ   rù   rð   Ú
diff_framer  r  r„   rF   Úfirst_paletteÚrÚgÚbÚaÚ	unchangedÚ
frame_datar4   Úoffsets                               r(   Ú_write_multiple_framesr(  —  s  € ð �~‰~×!Ñ! *Ó-€HØ�~‰~×!Ñ! *¨b¯g©g¯k©k¸*Ó.EÓF€Hà €IØ&*€KØ€KØ€MÜ—o‘o r d¨B¯N©N×,>Ñ,>¸ÐPRÓ,SÓTó MPˆ
Ü%×.Ñ.¨zÓ:ó L	PˆHä& x§}¡}£Ó7ˆHØ˜aÒØ$ŸM™M×/Ñ/Ó1ò 8‘D�A�qØ˜NÒ*Ø Ü! !¤SÕ)ØŸ™×1Ñ1°!°QÕ7ð	8ð Ÿ.™.×-Ñ-Ó/ˆKØ §¡Ñ.Ø×&Ñ& ~°x·}±}À^Ñ7TÔUÜ)¨(°G¸[ÓIˆHÜ˜(¤T¬5 MÔ2Ø*2°;Ñ*?�˜JÒ'ØÐ! j°H·M±MÑ&AØ*2¯-©-¸
Ñ*C�˜JÑ'Ü˜(¤T¬5 MÔ2Ø*2°;Ñ*?�˜JÑ'Ø˜1ÑˆKàˆJÚš[ä& {°HÓ=‘��tÙà"—‘ zÔ2à% b™M×5Ñ5×9Ñ9¸*ÀaÓHØ)¨*Ñ5ñ6ð " "™×1Ñ1°*Ñ=ñ Ø˜R‘=×,Ñ,×0Ñ0°Ó<ÀÒAð ŸN™N×.Ñ.Ø&¨¯©¯©°NÓ(Có�Eð Ð(Ø(Ð0Ü)8¸À5Ó)I˜JÜ,1¯I©I°c¸8¿=¹=È*Ó,U˜MØ,5°a©L¯O©O×,CÑ,C˜MØ#0Ð#<Ð<Ð#<Ø)×4Ñ4°]ÀM×DVÑDVÔWÜ'¨°xÓ@ÀÑCšà ! 1Ð5 x§}¡}Ñ5™Ø —_‘_ ZÔ0°X·]±]ÀcÒ5IØ%¨[Ñ8Ø'×/Ñ/Ð;Ð;Ð;ð!à (× 0Ñ 0× AÑ AÀ(Ó Kð (¨Ñ7ð
 &¨Ñ4à Ÿ:™:¨Ò/à).¯©«™J˜A˜q ! QÜ$.×$6Ñ$6Ü *× 2Ñ 2°1°aÓ 8Ü *× 2Ñ 2°1°aÓ 8ó%˜Eð %*§K¡K°Ð0B°zÐ0BÀCÓ$H˜	Ø%-§]¡]£_˜
Ø"×(Ñ(¨°^Ñ)DÈ9Ð(ÕUà�Ø"ˆKØ×ÑœV JÒ$:°(¸DÀ+ÓNÖOòYL	PðMPô^ ˆ9ƒ~˜ÒØ˜ 1™×1Ñ1Ñ1à)2°1©×)AÑ)AÀ*Ñ)MˆB�N‰N˜:Ñ&Øàò Hˆ
Ø—=‘=ˆØ�Šä'¨°*×2HÑ2HÓIò �Ø—‘˜•ðà‰Fñ Ø@D�
×&Ñ&Ð'<Ñ=à�‰ 1 aÐ"8¨(¯-©-Ñ"8Ò8Ø#Ÿ=™=¨¯©Ó9�Ø—_‘_ R aÐ(ˆFÜ˜"˜h¨°
×0FÑ0FÕGðHð  øôW  *ò !Ú ð!ús   Í	T2Ô2	T?Ô>T?c                ó"   — t        | ||d¬«       y )NT)Úsave_all)r÷   )r–   r1   Úfilenames      r(   Ú	_save_allr,  	  s   € Ü	ˆ"ˆb�( TÖ*r'   c                óx  — d| j                   v sd| j                  v r6| j                   j                  d| j                  j                  d«      «      }nd }| j                   j                  dd«       |rt	        | ||«      st        | ||«       |j                  d«       t        |d«      r|j                  «        y y )NrN   r  Trl   Úflush)	rð   rI   r¡   rñ   r(  rú   ró   Úhasattrr.  )r–   r1   r+  r*  rN   s        r(   r÷   r÷     s•   € ð �B—N‘NÑ" i°2·7±7Ñ&:Ø—.‘.×$Ñ$ Y°·±·±¸IÓ0FÓG‰àˆØ
�‰×!Ñ! *¨dÔ3áÔ1°"°b¸'ÔBÜ˜B  GÔ,à‡H�HˆT„Näˆr�7ÔØ
�‰�
ð r'   c                ór   — | j                   j                  dd«      }t        | j                  «      dk  rd}|S )Nr«   r   é   r   )rð   r¡   Úminr“   )r–   r«   s     r(   rô   rô      s5   € Ø—‘×"Ñ" ;°Ó2€Iô ˆ2�7‰7ƒ|�bÒØˆ	àÐr'   c                óš  — 	 |j                   d   }d|j                   v rt        |j                   d   dz  «      }nd}t        |j                   j                  dd«      «      }|€|dk7  s|rk|�dnd}||dz  z  }| j	                  dt        d	«      z   t        d
«      z   t        |«      z   t        |«      z   t        |xs d«      z   t        d«      z   «       |j                   j                  d«      }|r"t        |«      }	t        |	«      }
|
r
|dz  }||
z  }| j	                  dt        |d   «      z   t        |d   «      z   t        |j                  d   «      z   t        |j                  d   «      z   t        |«      z   «       |r
r| j	                  t        	«      «       | j	                  t        d«      «       y # t        $ r d }Y �Œ¸w xY w)Nr   ro   rB   r   r  r   r   rm   rn   ry   r  rD   rw   rA   )rð   ÚKeyErrorrˆ   r¡   ró   r   Úo16Ú_get_palette_bytesÚ_get_color_table_sizer“   Ú_get_header_palette)r1   r–   r'  rU   r   ro   r  Úpacked_flagr  r  Úcolor_table_sizes              r(   rõ   rõ   *  sØ  € ðØ—~‘~ nÑ5ˆð �R—^‘^Ñ#Ü�r—~‘~ jÑ1°BÑ6Ó7‰àˆä�2—>‘>×%Ñ% j°!Ó4Ó5€HàÐ 8¨q¢=±HØ'Ð3‘a¸ˆØ�x 1‘}Ñ$ˆà
�‰ØÜ�‹gñä�‹eñô �‹oñô �(‹mñ	ô
 �Ò" Ó#ñ$ô �‹eñô	
ð Ÿ.™.×,Ñ,Ð-BÓCÐÙÜ*¨2Ó.ˆÜ0°Ó?ÐÙØ˜C‘KˆEØÐ,Ñ,ˆEà‡H�HØÜ
ˆf�Q‰i‹.ñ	ä
ˆf�Q‰i‹.ñ	ô ˆb�g‰g�a‰j‹/ñ	ô ˆb�g‰g�a‰j‹/ñ		ô
 ˆU‹)ñ	ôñ Ñ/Ø
�‰Ô$ ]Ó3Ô4Ø‡H�HŒR�‹U…OøôU ò Ø‹ðús   ‚F; Æ;G
Ç	G
c                ó¤  — | j                   dv �rA|�r>|j                  d«      �r,| j                  dk7  �r| j                  dk7  �rt        xs | j                   dk(  }|s| j                  | j                  z  dk  r×g }t        | j                  «       «      D ]  \  }}|sŒ	|j                  |«       Œ |st        |«      t        |«      k\  r|S | j                  €J ‚t        | j                  j                  «      t        j                  | j                  j                   «      z  }d|dz
  j                  «       z  }t        |«      |dz  k  r|dkD  r|S y)	aL  
    Palette optimization is a potentially expensive operation.

    This function determines if the palette should be optimized using
    some heuristics, then returns the list of palette entries in use.

    :param im: Image object
    :param info: encoderinfo
    :returns: list of indexes of palette entries in use, or None
    )r|   r}   r  r   r}   i   Nr   r   )rœ   r¡   ÚwidthÚheightÚ_FORCE_OPTIMIZErß   Ú	histogramr’   r”   r9   rN   r   ÚgetmodebandsÚ
bit_length)r–   rI   Úoptimiserå   r;   ÚcountÚnum_palette_colorsÚcurrent_palette_sizes           r(   rá   rá   a  s8  € ð 	�‰�:ÒÚØ�H‰H�ZÕ Ø�H‰H˜‹MØ�I‰I˜‹Nô #Ò4 b§g¡g°¡nˆÙ�r—x‘x "§)¡)Ñ+¨iÒ7à"$ÐÜ% b§l¡l£nÓ5ò 2‘��5ÚØ'×.Ñ.¨qÕ1ð2ñ œ3Ð2Ó3´sÐ;NÓ7OÒOØ*Ð*à—:‘:Ð)Ð)Ð)Ü!$ R§Z¡Z×%7Ñ%7Ó!8¼E×<NÑ<NØ—
‘
—‘ó=ñ "Ðð $%Ð);¸aÑ)?×(KÑ(KÓ(MÑ#MÐ ô Ð'Ó(Ð,@ÀAÑ,EÒEà(¨1Ò,à*Ð*Ør'   c                ó–   — | syt        | «      dk  ryt        j                  t        j                  t        | «      dz  d«      «      dz
  S )Nr   rx   r   r7   r   )r9   r   ÚceilÚlog)r  s    r(   r7  r7  —  sA   € áØÜ	ˆ]Ó	˜aÒ	Øä�y‰yœŸ™¤# mÓ"4¸Ñ"9¸1Ó=Ó>ÀÑBÐBr'   c                óv   — t        | «      }d|z  t        | «      dz  z
  }|dkD  r| t        d«      dz  |z  z  } | S )zä
    Returns the palette, null padded to the next power of 2 (*3) bytes
    suitable for direct inclusion in the GIF header

    :param palette_bytes: Unpadded palette bytes, in RGBRGB form
    :returns: Null padded palette
    r   r7   r   )r7  r9   r   )r  r:  Úactual_target_size_diffs      r(   r8  r8  ¡  sR   € ô -¨]Ó;Ðð  !Ð$4Ñ4¼¸MÓ8JÈaÑ8OÑOÐØ Ò"Øœ˜A› ™Ð%<Ñ<Ñ<ˆØÐr'   c                óð   ‡— | j                   syt        | j                   j                   «      Š| j                   j                  dk(  r/dj                  ˆfd„t	        t        ‰«      dz  «      D «       «      Š‰S )zš
    Gets the palette for inclusion in the gif header

    :param im: Image object
    :returns: Bytes, len<=768 suitable for inclusion in gif header
    r'   r{   c              3  ó:   •K  — | ]  }‰|d z  |d z  dz    –— Œ y­w)ry   r7   Nr&   )rÛ   r;   rN   s     €r(   rÜ   z%_get_palette_bytes.<locals>.<genexpr>¿  s$   øè ø€ ÒX¸!˜7 1 q¡5¨1¨q©5°1©9Ô5ÑXùs   ƒr7   )rN   rÇ   rœ   r§   r8   r9   )r–   rN   s    @r(   r6  r6  ³  s[   ø€ ð �:Š:Øä�B—J‘J×&Ñ&Ó'€GØ	‡z�z‡�˜&Ò Ø—(‘(ÓX¼uÄSÈÃ\ÐUVÑEVÓ?WÔXÓXˆØ€Nr'   c                óÖ   — d}|r?t        |t        «      r-| j                  €J ‚	 | j                  j                  || «      }|S |}|S # t        $ r}t        |«      dvr‚ Y d }~|S d }~ww xY w)Nr   )z$cannot allocate more than 256 colorsz/cannot add non-opaque RGBA color to RGB palette)rŠ   rƒ   rN   Úgetcolorr‘   rï   )r–   Úinfo_backgroundrF   rh   s       r(   r  r  Ã  s�   € ð €JÙÜ�o¤uÔ-ð —:‘:Ð)Ð)Ð)ð
ØŸZ™Z×0Ñ0°À"ÓE�
ð Ðð )ˆJØÐøô ò Ü�q“6ð "ñ ð óð Ðûðús   ¤A Á	A(ÁA#Á#A(c                ó4  — d}| j                   j                  d«      dk(  s9|r9d|v s3|j                  d«      €"|j                  d«      s|j                  d«      rd}t        | |j                  d«      «      }t        | «      }t	        |«      }d	|z   t        | j                  d
   «      z   t        | j                  d   «      z   t        |dz   «      t        |«      t        d
«      z   t        |«      g}|j                  d«      �_|j                  dt        d«      z   t        d«      z   dz   t        d«      z   t        d«      z   t        |d   «      z   t        d
«      z   «       |j                  d«      r¥|j                  dt        d«      z   «       |d   }t        |t        «      r|j                  «       }t        d
t        |«      d«      D ]0  }|||dz    }	|j                  t        t        |	«      «      |	z   «       Œ2 |j                  t        d
«      «       |S )z2Return a list of strings representing a GIF headers   87ar@   s   89ar   rv   ro   rk   rF   s   GIFr   r   rD   rm   rs   rE   ru   r7   rq   )rI   r¡   r  r6  r7  r5  r“   r   r8  r’   rŠ   rï   Úencoder8   r9   )
r–   rI   r@   rF   r  r:  Úheaderrk   r;   Úsubblocks
             r(   rò   rò   Þ  s  € ð €GØ	‡w�w‡{�{�9Ó Ò'Ùà˜dÑ"Ø�x‰x˜ÓÐ+Ø�x‰x˜
Ô#Ø�x‰x˜	Ô"ð ˆä   T§X¡X¨lÓ%;Ó<€Jä& rÓ*€MÜ,¨]Ó;Ðð 	Ø
ñ	ä
ˆb�g‰g�a‰j‹/ñ	ô ˆb�g‰g�a‰j‹/ñ	ô 	Ð˜cÑ!Ó"ä
ˆ:‹œ˜A›Ñä˜MÓ*ð€Fð ‡x�x�ÓÐ#Ø�‰ØÜ�‹gñä�‹fñð ñô �‹eñ	ô
 �‹eñô �$�v‘,Óñ ô �‹eñô		
ð ‡x�x�	ÔØ�‰�dœR ›W‘nÔ%à�y‘/ˆÜ�gœsÔ#Ø—n‘nÓ&ˆGÜ�qœ#˜g›,¨Ó,ò 	8ˆAØ˜q 1 s¡7Ð+ˆHØ�M‰Mœ"œS ›]Ó+¨hÑ6Õ7ð	8ð 	�‰”b˜“eÔØ€Mr'   c                ó   — 	 ||_         t        | ||d«       t        j                  || t        j                  dddg|j
                  ¢­dt        |j                     «      g«       | j                  d«       |` y # |` w xY w)Nr   r‡   rí   )	rð   rõ   r   r÷   r¦   r“   rÒ   rœ   ró   )r1   r   r'  Úparamss       r(   r  r    sw   € ð!Ø%ˆÔô 	˜B ¨&°!Ô4ä�‰ØØÜ�_‰_˜U Q¨Ð$:¨H¯M©MÑ$:¸A¼wÀxÇ}Á}Ñ?UÓVÐWô	
ð 	�‰�ŒàÑ øˆHÑ ús   ‚A4A9 Á9A=c                óè   — |€i }t        | |«      }d|vr d| j                  v r| j                  d   |d<   t        | ||«      }|j                  | _        |j                  | _        t        | |«      }||fS )a  
    Legacy Method to get Gif data from image.

    Warning:: May modify image data.

    :param im: Image object
    :param palette: bytes object containing the source palette, or ....
    :param info: encoderinfo
    :returns: tuple of(list of header items, optimized palette)

    rF   )rá   rI   rê   rN   r–   rò   )r–   rN   rI   rå   Úim_modrR  s         r(   Ú	getheaderrX  6  s}   € ð €|Øˆä'¨¨DÓ1Ðà˜4Ñ L°B·G±GÑ$;ØŸW™W \Ñ2ˆˆ\Ñä  G¨TÓ2€FØ—‘€B„JØ�I‰I€B„EÜ  DÓ)€FàÐ&Ð&Ð&r'   c                ó†   — ddl m}  G d„ d|«      }| j                  «         |«       }t        || ||«       |j                  S )aë  
    Legacy Method

    Return a list of strings representing this image.
    The first string is a local image header, the rest contains
    encoded image data.

    To specify duration, add the time in milliseconds,
    e.g. ``getdata(im_frame, duration=1000)``

    :param im: Image object
    :param offset: Tuple of (x, y) pixels. Defaults to (0, 0)
    :param \**params: e.g. duration or other encoder info parameters
    :returns: List of bytes containing GIF encoded frame data

    r   )ÚBytesIOc                  ó   — e Zd Zg Zdd„Zy)úgetdata.<locals>.Collectorc                óN   — | j                   j                  |«       t        |«      S rÆ   )r5   r’   r9   )r3   r5   s     r(   ró   z getdata.<locals>.Collector.writel  s   € Ø�I‰I×Ñ˜TÔ"Ü�t“9Ðr'   N)r5   r   r‰   rˆ   )r   r    r!   r5   ró   r&   r'   r(   Ú	Collectorr\  i  s   „ Øˆô	r'   r^  )ÚiorZ  r�   r  r5   )r–   r'  rU  rZ  r^  r1   s         r(   r¹   r¹   T  s<   € õ& ô�Gô ð ‡G�G„Iá	‹€Bä�b˜"˜f fÔ-à�7‰7€Nr'   z.gifz	image/gif)r+   rÇ   r‰   rÈ   )r–   r  r‰   r  )r–   r  rN   ú_Palette | NonerI   r  r‰   r  )r–   r  r1   ú	IO[bytes]rN   r`  r‰   rÉ   )rÿ   r  r   r  r‰   z4tuple[Image.Image, tuple[int, int, int, int] | None])r–   r  r1   ra  rN   r`  r‰   rÈ   )r–   r  r1   ra  r+  ústr | bytesr‰   rÉ   )F)
r–   r  r1   ra  r+  rb  r*  rÈ   r‰   rÉ   )r–   r  r‰   rˆ   )
r1   ra  r–   r  r'  útuple[int, int]rU   rˆ   r‰   rÉ   )r–   r  rI   r  r‰   zlist[int] | None)r  rÇ   r‰   rˆ   )r  rÇ   r‰   rÇ   )r–   r  r‰   rÇ   )r–   r  rO  z=int | tuple[int, int, int] | tuple[int, int, int, int] | Noner‰   rˆ   )r–   r  rI   r  r‰   úlist[bytes])
r1   ra  r   r  r'  rc  rU  r  r‰   rÉ   )NN)r–   r  rN   r`  rI   zdict[str, Any] | Noner‰   z$tuple[list[bytes], list[int] | None])rì   )r–   r  r'  rc  rU  r   r‰   rd  )FÚ
__future__r   Ú__lazy_modules__r   r   Úenumr	   Ú	functoolsr
   Útypingr   r   Ú r   r   r   r   r   Ú_binaryr   rJ   r   r   r5  Ú_utilr   ÚTYPE_CHECKINGr   r   r   r   Ú_typingr   r   r#   rš   r,   r.   rÒ   rØ   rÇ   rÝ   rÞ   rˆ   Ú_Paletterê   rú   r  r  r(  r,  r÷   rô   rõ   r>  rá   r7  r8  r6  r  rò   r  rX  r¹   Úregister_openrÊ   Úregister_saveÚregister_save_allÚregister_extensionÚregister_mimer&   r'   r(   ú<module>ru     s  ðõ4 #òÐ ó Û Ý Ý %ß #÷õ õ "Ý Ý !Ý  à€Ùß'Ñ'åÝô�gô ð #×2Ñ2Ð ó5ôd�9×&Ñ&ô dðV ˜# CÑ
(€óð4 �9Ñ˜t C™yÑ(¨<×+DÑ+DÑD€ðDØðDØ-ðDØ5CðDàóDðNØðàðð ðð 
ó	ð8
2Øð
2Ø$/ð
2à9ó
2ô ˆZô  ðoØðoØ"ðoØ-<ðoà	óoód+ð
 MRðØðØ"ðØ.9ðØEIðà	óó&ð/Øð/Ø"ð/Ø,;ð/ØDGð/à	ó/ðh €ó3ólCóó$ð ØðàRðð 	óó6:ðz!Øð!àð!ð ð!ð ð	!ð
 
ó!ð8 UYð'Øð'Ø-ð'Ø<Qð'à)ó'ð> 06ð"Øð"Ø,ð"ØADð"àó"ðP €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �L×'Ñ'¨Ô /Ø €× Ñ ˜×+Ñ+¨YÔ 7Ø €× Ñ ˜×,Ñ,¨fÔ 5Ø €× Ñ �L×'Ñ'¨Õ 5r'   