
    ]Hj&                       S SK Jr  S SKJr  SSKJrJr   SSKJr  SrSr
\
(       a  S SKJrJr  S	S
S
S.rSS jr " S S\R                  5      rSS jrSS jrSS jr\R(                  " \R*                  \\5        \(       au  \R,                  " \R*                  \5        \R.                  " \R*                  \5        \R0                  " \R*                  S5        \R2                  " \R*                  S5        gg! \	 a    Sr Nf = f)    )annotations)BytesIO   )Image	ImageFile)_webpTF)IOAnyRGBRGBA)s   VP8 s   VP8Xs   VP8Lc                    U R                  S5      nU SS S:H  nU SS [        ;   nU(       a  U(       a  U(       a  [        (       d   ggg)	Ns   RIFF      s   WEBP   zEimage file could not be identified because WEBP support not installedTF)
startswith_VP8_MODES_BY_IDENTIFIER	SUPPORTED)prefixis_riff_file_formatis_webp_fileis_valid_vp8_modes       U/Users/admin/workspace/tools/venv/lib/python3.13/site-packages/PIL/WebPImagePlugin.py_acceptr      sR     ++G4!B<7*Lr")AA|0AyW     c                     ^  \ rS rSrSrSrSrSrSS jrSS jr	SS jr
SSS jjrSS	 jrSS
 jrSU 4S jjrSS jrSS jrSrU =r$ )WebPImageFile'   WEBPz
WebP imager   c                   U R                   c   eU R                   R                  5       n[        U5      (       d  Sn[        U5      e[        R
                  " U5      U l        U R                  R                  5       u  U l        U R                  S'   o0l
        U l        US-	  S-  US-	  S-  US-  US-	  S-  4U R                  S'   U R                  S:  U l        U R                  S	:X  a  S
OU R                  U l        SSSS.R                  5        H7  u  pEU R                  R                  U5      =n(       d  M)  X`R                  U'   M9     U R!                  SS9  g )Nznot a WEBP fileloopr      r      
backgroundr   RGBXr   ICCPEXIFzXMP )icc_profileexifxmpF)reset)fpreadr   SyntaxErrorr   WebPAnimDecoder_decoderget_info_sizeinfon_framesrawmodeis_animated_modeitems	get_chunk_reset)selfsmsgbgcolorkey
chunk_namevalues          r   _openWebPImageFile._open-   sC   ww"""GGLLNqzz#Cc"" --a0 MM""$ 	L
DIIf%wt| ]d"\T!dN]d"	#
		,  ==1,"llf4U$,,
 " 
 %'	 OC
 //
;;u;!&		#  	% r   c                `    SU R                   ;  a  g U R                  5       R                  5       $ )Nr(   )r2   getexif_get_merged_dictr:   s    r   _getexifWebPImageFile._getexifQ   s&    "||~..00r   c                >    U R                  U5      (       d  g Xl        g N)_seek_check_WebPImageFile__logical_framer:   frames     r   seekWebPImageFile.seekV   s    &&  %r   c                p    U(       a  U R                   R                  5         SU l        SU l        SU l        g )Nr   )r/   r*   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r:   r*   s     r   r9   WebPImageFile._reset]   s,    MM! !r   c                   U R                   R                  5       nU =R                  S-  sl        Uc.  U R                  5         U R	                  S5        Sn[        U5      eUu  p4X@R                  -
  nX@l        XE-  nX4U4$ )Nr   r   z(failed to decode next frame in WebP file)r/   get_nextrS   r9   rO   EOFErrorrU   )r:   retr<   data	timestampdurations         r   	_get_nextWebPImageFile._get_nextd   s    mm$$&" ;KKMIIaL<C3- ///$ 		((r   c                    U R                   U:X  a  g XR                   :  a  U R                  5         U R                   U:  a#  U R                  5         U R                   U:  a  M"  g g rJ   )rS   r9   r^   rM   s     r   _seekWebPImageFile._seeky   sP      E)(((KKM##e+NN ##e+r   c                
  > U R                   U R                  :w  a  U R                  U R                  5        U R                  5       u  oR                  S'   U R                  S'   U R                  U l         U R
                  (       a+  U R                  (       a  U R
                  R                  5         [        U5      U l        [        R                  " SSU R                  -   SU R                  5      /U l        [        TU ]=  5       $ )Nr\   r]   raw)r   r   r   )rT   rL   ra   r^   r2   r+   _exclusive_fpcloser   r   _Tilesizer4   tilesuperload)r:   r[   	__class__s     r   rk   WebPImageFile.load   s    ==D000JJt++, CG..BR?D))K($))J*? 00DM ww4--dmDG"0BAt||TUDIw|~r   c                    g rJ    )r:   poss     r   	load_seekWebPImageFile.load_seek   s    r   c                    U R                   $ rJ   )rL   rF   s    r   tellWebPImageFile.tell   s    ###r   )__loaded__logical_frame__physical_frame__timestampr/   r6   r1   r+   r5   r3   r4   ri   )returnNone)rz   zdict[int, Any] | None)rN   intrz   r{   )T)r*   boolrz   r{   )rz   ztuple[bytes, int, int])rz   zImage.core.PixelAccess | None)rp   r|   rz   r{   )rz   r|   )__name__
__module____qualname____firstlineno__formatformat_descriptionrT   rL   rA   rG   rO   r9   r^   ra   rk   rq   rt   __static_attributes____classcell__)rl   s   @r   r   r   '   sK    F%HO"!H1
%)* $ $r   r   c                n    U R                   S;  a$  U R                  U R                  (       a  SOS5      n U $ )N)r$   r   r   r   r   )modeconverthas_transparency_data)ims    r   _convert_framer      s,    	ww--ZZ"":":FIr   c           
     	   U R                   R                  5       n[        UR                  S/ 5      5      nSnU /U-    H  nU[	        USS5      -  nM     US:X  a  [        XU5        g SnSU;   a  US   nOfSU R                  ;   aV  U R                  S   n[        U[        5      (       a2  U R                  5       nU(       a  XS-  US-   S-   u  pnXUS4nOXwUS4nU R                   R                  S	U R                  R                  S	S5      5      nU R                   R                  S
S5      nU R                   R                  SS5      nU R                   R                  SS 5      nU R                   R                  SS 5      nU R                   R                  SS5      nSnU R                   R                  SS5      nU R                   R                  SS5      nU R                   R                  SS5      nU R                   R                  SS5      nU R                   R                  S5      =(       d    SnU R                   R                  SS5      n[        U[        R                  5      (       a  UR                  5       nU R                   R                  SS5      nU(       a  SnUc  U(       a  SOSnUc  U(       a  SOSn[        U[        [        45      (       a&  [        U5      S:w  d  [        S U 5       5      (       d  SU 3n[!        U5      eUu  nnnnUS -  US!-  -  US"-  -  US-  -  n["        R$                  " U R&                  UUUUUUU5      nSn Sn!U R)                  5       n" U /U-    H  n[	        USS5      n#[+        U#5       Hz  n$UR-                  U$5        [/        U5      n%UR1                  U%R3                  5       [5        U!5      UUUU5        [        U[        [        45      (       a	  U!UU    -  n!OU!U-  n!U S-  n M|     M     U R-                  U"5        UR1                  S [5        U!5      UUUS5        UR7                  UUU5      n&U&c  S#n[!        U5      eUR9                  U&5        g ! U R-                  U"5        f = f)$Nappend_imagesr   r3   r   )r   r   r   r   r#      r!   r]   r    minimize_sizeFkminkmaxallow_mixedlosslessqualityP   alpha_qualityd   methodr'    r(   r)   	            c              3  L   #    U  H  nS Us=:*  =(       a    S:  Os  v   M     g7f)r      Nro   ).0vs     r   	<genexpr>_save_all.<locals>.<genexpr>   s     4A1<<C<<s   "$z:Background color is not an RGBA tuple clamped to (0-255): r"   r   r   1cannot write file as WebP (encoder returned None))encoderinfocopylistgetgetattr_saver2   
isinstancer|   
getpaletter   ExiftobytestuplelenallOSErrorr   WebPAnimEncoderrh   rt   rangerO   r   addgetimroundassemblewrite)'r   r+   filenamer   r   totalimsr#   palettergbr]   r    r   r   r   r   verboser   r   r   r   r'   r(   r)   r<   bg_rbg_gbg_bbg_aenc	frame_idxr\   cur_idxnfridxrN   r[   s'                                          r   	_save_allr      s3   ..%%'K"=>M Etm#j!,, $zbh(4J{" .
		 WW\*
j#&& mmoG!q.JNa3GHaAs^
(j#F
~~!!*bggkk*a.HIH>>fa(DNN&&>M>>fd+D>>fd+D..$$]E:KG~~!!*e4Hnn  B/GNN&&<M^^!,F..$$]39rK>>fb)D$

##||~
..

UB
'C |q!|r1 zD%=11z?a4444J:,Wcl (D$d"*,	:daiHJ 


	C IIggiG4-'C#z1-CSz&s+ KKM)$! hu66)!44I)IQ	) "	 (6 	 GGD%	"Hg}aH <<T3/D|AclHHTN 	s   +B#Q3 3Rc                L   U R                   R                  SS5      nU R                   R                  SS5      nU R                   R                  SS5      nU R                   R                  S5      =(       d    SnU R                   R                  S	S
5      n[        U[        R                  5      (       a  UR                  5       nUR                  S5      (       a  USS  nU R                   R                  SS5      nU R                   R                  SS5      n	U R                   R                  S5      (       a  SOSn
[        U 5      n [        R                  " U R                  5       U[        U5      [        U5      UU	U
UU5	      nUc  Sn[        U5      eUR                  U5        g )Nr   Fr   r   r   r   r'   r   r(   r   s   Exif     r)   r   r   exactr   r   r   )r   r   r   r   r   r   r   r   r   
WebPEncoder   floatr   r   )r   r+   r   r   r   r   r'   r(   r)   r   r   r[   r<   s                r   r   r     sU   ~~!!*e4Hnn  B/GNN&&<M..$$]39rK>>fc*D$

##||~''ABx
..

UB
'C^^!,F##G,,A!E		B

gm
D |AclHHTNr   z.webpz
image/webpN)r   bytesrz   z
bool | str)r   Image.Imagerz   r   )r   r   r+   z	IO[bytes]r   zstr | bytesrz   r{   )
__future__r   ior   r   r   r   r   r   ImportErrorTYPE_CHECKINGtypingr	   r
   r   r   r   r   r   r   register_openr   register_saveregister_save_allregister_extensionregister_mimero   r   r   <module>r      s    "  I   n$I'' n$byxD   M((- A	,,e4	M00)<	]117;	,,l;	 g	  Is   C9 9DD