
    Rf8,                       d dl mZ d dlmZ ddlmZmZ 	 ddlmZ dZn# e	$ r dZY nw xY wddddZ
ddd	Zd
dddZd Z G d dej                  Zd Zd Z ej        ej        ee           era ej        ej        e           ej        r ej        ej        e            ej        ej        d            ej        ej        d           dS dS )    )annotations)BytesIO   )Image	ImageFile)_webpTF)RGBXRGBARGB)r   r
   r   r
   )s   VP8 s   VP8Xs   VP8Lc                    | d d         dk    }| dd         dk    }| dd         t           v }|r|r|rt          s	 dS dS d S d S d S )	N   s   RIFF      s   WEBP   zEimage file could not be identified because WEBP support not installedT)_VP8_MODES_BY_IDENTIFIER	SUPPORTED)prefixis_riff_file_formatis_webp_fileis_valid_vp8_modes       E/var/www/html/env/lib/python3.11/site-packages/PIL/WebPImagePlugin.py_acceptr      s     !*/!B$<7*Lr"u)AA | 0A  	W  t         c                  j     e Zd ZdZdZdZdZd Zd Zd Z	d Z
dd	Zd
 Zd Z fdZd Z fdZ xZS )WebPImageFileWEBPz
WebP imager   c                   t           j        st          j        | j                                                  \  }}}| _        }}|r
|| j        d<   |r
|| j        d<   ||f| _        t          |          | _        dd| j	        z   d| j
        fg| _        d| _        d| _        d S t          j        | j                                                  | _        | j                                        \  }}}}}}	||f| _        || j        d<   |d	z	  d
z  |dz	  d
z  |dz	  d
z  |d
z  f\  }
}}}||||
f| j        d<   || _        | j        dk    | _        |	dk    rdn|	| _        |	| _        g | _        | j                            d          }| j                            d          }| j                            d          }|r
|| j        d<   |r
|| j        d<   |r
|| j        d<   |                     d           d S )Nicc_profileexifrawr   r   r   r   Floop      r   r   
backgroundr	   r   ICCPEXIFzXMP xmp)reset)r   HAVE_WEBPANIM
WebPDecodefpread_modeinfo_sizer   sizemodetilen_framesis_animatedWebPAnimDecoder_decoderget_inforawmode	get_chunk_reset)selfdatawidthheightr   r   
loop_countbgcolorframe_countr2   bg_abg_rbg_gbg_br(   s                  r   _openzWebPImageFile._open-   s*   " 	AFAQB B>D%[$  7+6	-( )$(	&!DJdmmDG$)!3Q	BCDIDM$DF -dgllnn== AE@V@V@X@X=vz7KF]
&	&]d"]d"\T!dN	"
dD$ $(tT":	,#=1,"fnnUU$
	 m--f55}&&v..m%%f-- 	3'2DIm$ 	% $DIf 	#"DIe 	%     r   c                d    d| j         vrd S |                                                                 S )Nr   )r/   getexif_get_merged_dictr<   s    r   _getexifzWebPImageFile._getexifa   s.    ""4||~~..000r   c                X    d| j         v r |                     | j         d                   ni S )z
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        r(   )r/   _getxmprK   s    r   getxmpzWebPImageFile.getxmpf   s.     27$)1C1Ct||DIe,---Kr   c                B    |                      |          sd S || _        d S N)_seek_check_WebPImageFile__logical_framer<   frames     r   seekzWebPImageFile.seeko   s-    && 	F  %r   Tc                f    |r| j                                          d| _        d| _        d| _        d S )Nr   )r7   r)   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r<   r)   s     r   r;   zWebPImageFile._resetv   s;     	"M!!! !r   c                   | j                                         }| xj        dz  c_        |:|                                  |                     d           d}t          |          |\  }}|| j        z
  }|| _        ||z  }|||fS )Nr   r   z(failed to decode next frame in WebP file)r7   get_nextrY   r;   rV   EOFErrorr[   )r<   retmsgr=   	timestampdurations         r   	_get_nextzWebPImageFile._get_next}   s    m$$&&" ;KKMMMIIaLLL<C3-- it//$ 	X	Y((r   c                    | j         |k    rd S || j         k     r|                                  | j         |k     r!|                                  | j         |k     d S d S rQ   )rY   r;   rc   rT   s     r   _seekzWebPImageFile._seek   sj     E))F4(((KKMMM#e++NN #e++++++r   c                   t           j        r| j        | j        k    r|                     | j                   |                                 \  }}}|| j        d<   || j        d<   | j        | _        | j        r | j        r| j        	                                 t          |          | _        dd| j        z   d| j        fg| _        t                                                      S )Nra   rb   r    r!   r   )r   r*   rZ   rS   re   rc   r/   r,   _exclusive_fpcloser   r1   r9   r3   superload)r<   r=   ra   rb   	__class__s       r   rj   zWebPImageFile.load   s     	K} 444

4/000 -1NN,<,<)i)2	+&(0	*% $ 4 7 $t1 $GMMOOO!$--#Vdi%7DLIJ	ww||~~r   c                    d S rQ    )r<   poss     r   	load_seekzWebPImageFile.load_seek   s    r   c                j    t           j        s t                                                      S | j        S rQ   )r   r*   ri   tellrS   )r<   rk   s    r   rq   zWebPImageFile.tell   s)    " 	"77<<>>!##r   )T)__name__
__module____qualname__formatformat_descriptionrZ   rS   rG   rL   rO   rV   r;   rc   re   rj   ro   rq   __classcell__)rk   s   @r   r   r   '   s        F%HO2! 2! 2!h1 1 1
L L L% % %   ) ) )*      &  $ $ $ $ $ $ $ $ $r   r   c                v
   | j                                         }t          |                    dg                     }d}| g|z   D ]}|t	          |dd          z  }|dk    rt          | ||           d S d}d|v r	|d         }ned| j        v r\| j        d         }t          |t                    r:| 	                                }|r||dz  |dz   dz           \  }	}
}|	|
|df}n|||df}| j                             d	| j                            d	d                    }| j                             d
d          }| j                             dd          }| j                             dd           }| j                             dd           }| j                             dd          }d}| j                             dd          }| j                             dd          }| j                             dd          }| j                             d          pd}| j                             dd          }t          |t          j                  r|                                }| j                             dd          }|rd}||rdnd}||rdnd}t          |t          t          f          r,t          |          dk    st          d |D                       sd| }t!          |          |\  }}}}|dz  |dz  z  |d z  z  |dz  z  }t#          j        | j        d         | j        d         |||||||	  	        }d}d} |                                 }!	 | g|z   D ]H}t	          |dd          }"t+          |"          D ]#}#|                    |#           |                                 |}$|j        }%|j        t2          vrSd!|j        v p.d"|j        v p%|j        d#k    od!|j                                        v }&|&rd$nd%}%|                    |%          }$|%d%k    rd&}%|                    |$                    d'|%          t=          |           |$j        d         |$j        d         |%|||           t          |t          t          f          r| ||         z  } n| |z  } |dz  }%J	 |                     |!           n# |                     |!           w xY w|                    d t=          |           ddd||d           |                    |||          }'|'d(}t!          |          |                     |'           d S ))Nappend_imagesr   r4   r   )r   r   r   r   r%      r$   rb   r"   minimize_sizeFkminkmaxallow_mixedlosslessqualityP   methodr    r   r(   	         r   c              3  6   K   | ]}d |cxk    odk     nc V  dS )r      Nrm   ).0vs     r   	<genexpr>z_save_all.<locals>.<genexpr>   s6      44A1<<<<C<<<<444444r   z:Background color is not an RGBA tuple clamped to (0-255): r#   r   r   AaPr
   r   r	   r    1cannot write file as WebP (encoder returned None))!encoderinfocopylistgetgetattr_saver/   
isinstanceint
getpaletter   ExiftobytestuplelenallOSErrorr   WebPAnimEncoderr1   rq   rangerV   rj   r2   _VALID_WEBP_MODESimgetpalettemodeconvertaddroundassemblewrite)(r   r,   filenamer   ry   totalimsr%   palettergbrb   r"   r{   r|   r}   r~   verboser   r   r   r   r   r(   r`   rD   rE   rF   rC   enc	frame_idxra   cur_idxnfridxrU   r9   alphar=   s(                                           r   	_save_allr      s   .%%''K"==>>M Etm# - -j!,,,zzb"hJ{"" .

		 	 W\*
j#&& 	G mmooG G!*q.JNa3G"GH1aAs^

(*j#F
~!!*bgkk*a.H.HIIH>fa((DN&&>>M>fd++D>fd++D.$$]E::KG~!!*e44Hn  B//G^!,,F.$$]339rK>fb))D$
## ||~~
.

UB
'
'C  |#qq!|$rr1 zD%=11z??a4444444   X:WWcll (D$d"*,	:daiHJ 





 
C IIggiiG-4-' )	 )	C#z1--CSzz % %


 (8#444sx P#(?PHONsv7L7L7N7N0N 
 ).8ff5GKK00Ee##$G MM%11)$$JqMJqM	 	 	 hu66 *)!44II)IQ		K%	)	X 	 GGD%	""Aq"hCCC <<T3//D|AcllHHTNNNNNs   ER7 7Sc                z   | j                             dd          }| j                             dd          }| j                             d          pd}| j                             dd          }t          |t          j                  r|                                }|                    d	          r
|d
d          }| j                             dd          }| j                             dd          }| j                             d          rdnd}	| j        t          vr| 	                    | j
        rdnd          } t          j        |                                 | j        d         | j        d         |t          |          | j        |||	||          }
|
d}t          |          |                    |
           d S )Nr   Fr   r   r   r   r   r   s   Exif     r(   r   r   exactr   r   r
   r   r   )r   r   r   r   r   r   
startswithr2   _VALID_WEBP_LEGACY_MODESr   has_transparency_datar   
WebPEncoder1   floatr   r   )r   r,   r   r   r   r   r   r(   r   r   r=   r`   s               r   r   r   D  s   ~!!*e44Hn  B//G.$$]339rK>fc**D$
## ||~~'' ABBx
.

UB
'
'C^!,,F##G,,3AA!E	w...ZZ"":EFF






g
 D |AcllHHTNNNNNr   z.webpz
image/webpN)
__future__r   ior   r   r   r   r   r   ImportErrorr   r   r   r   r   r   r   register_openru   register_saver*   register_save_allregister_extensionregister_mimerm   r   r   <module>r      s   " " " " " "              II   III "4== #'66    
 
 
M$ M$ M$ M$ M$I' M$ M$ M$`J J JZ! ! !H  M(- A A A <E,e444 A 4i@@@E]17;;;E,l;;;;;< <s    ))