
    ,h'                       d dl mZ d dlmZ d dlmZmZ ddlmZm	Z	 	 ddlm
Z
 dZd	d
d
dZddZ G d de	j                        ZddZddZddZ ej&                  ej(                  ee       eru ej*                  ej(                  e        ej,                  ej(                  e        ej.                  ej(                  d        ej0                  ej(                  d       yy# e$ r dZY w xY w)    )annotations)BytesIO)IOAny   )Image	ImageFile)_webpTFRGBRGBA)s   VP8 s   VP8Xs   VP8Lc                j    | j                  d      }| dd dk(  }| dd t        v }|r|r|r	t        s	 yyy)	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/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/PIL/WebPImagePlugin.py_acceptr      sP     ++G4!B<7*Lr")AA|0AW     c                  r     e Zd ZdZdZdZdZddZddZddZ	dddZ
ddZdd	Zd fd
ZddZddZ xZS )WebPImageFileWEBPz
WebP imager   c                   t        j                  | j                  j                               | _        | j                  j                         \  | _        }}}}|| j                  d<   |dz	  dz  |dz	  dz  |dz	  dz  |dz  f\  }}}}||||f| j                  d<   || _        | j                  dkD  | _	        |dk(  rd	n|| _
        || _        | j                  j                  d
      }	| j                  j                  d      }
| j                  j                  d      }|	r|	| j                  d<   |
r|
| j                  d<   |r|| j                  d<   | j                  d       y )Nloop      r   r   
backgroundr   RGBXr   ICCPEXIFzXMP icc_profileexifxmpF)reset)r
   WebPAnimDecoderfpread_decoderget_info_sizeinfon_framesis_animated_moderawmode	get_chunk_reset)self
loop_countbgcolorframe_countmodebg_abg_rbg_gbg_br&   r'   r(   s               r   _openzWebPImageFile._open+   sS    --dgglln= >B]]=S=S=U:
Jd&		&]d"]d"\T!dN	"
dD$ $(tT":		,#==1,"fnU$
 mm--f5}}&&v.mm%%f-'2DIIm$ $DIIf"DIIe 	% r   c                \    d| j                   vry | j                         j                         S )Nr'   )r0   getexif_get_merged_dictr7   s    r   _getexifzWebPImageFile._getexifM   s&    "||~..00r   c                6    | j                  |      sy || _        y N)_seek_check_WebPImageFile__logical_framer7   frames     r   seekzWebPImageFile.seekR   s    &  %r   c                f    |r| j                   j                          d| _        d| _        d| _        y )Nr   )r-   r)   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r7   r)   s     r   r6   zWebPImageFile._resetY   s,    MM! !r   c                
   | j                   j                         }| xj                  dz  c_        |.| j                          | j	                  d       d}t        |      |\  }}|| j                  z
  }|| _        ||z  }|||fS )Nr   r   z(failed to decode next frame in WebP file)r-   get_nextrO   r6   rL   EOFErrorrQ   )r7   retmsgdata	timestampdurations         r   	_get_nextzWebPImageFile._get_next`   s    mm$$&" ;KKMIIaL<C3- it///$ 	X	Y((r   c                    | j                   |k(  ry || j                   k  r| j                          | j                   |k  r!| j                          | j                   |k  r y y rG   )rO   r6   rZ   rJ   s     r   _seekzWebPImageFile._seeku   sR      E)4(((KKM##e+NN ##e+r   c                   | j                   | j                  k7  r| j                  | j                         | j                         \  }}}|| j                  d<   || j                  d<   | j                  | _         | j
                  r&| j                  r| j
                  j                          t        |      | _        t        j                  dd| j                  z   d| j                        g| _        t        | =         S )NrX   rY   raw)r   r   r   )rP   rI   r\   rZ   r0   r+   _exclusive_fpcloser   r	   _Tilesizer4   tilesuperload)r7   rW   rX   rY   	__class__s       r   re   zWebPImageFile.load}   s    ==D000JJt++, )-(8%D)X%.DIIk"$,DIIj! 00DM ww4--dmDG"0BAt||TUDIw|~r   c                     y rG    )r7   poss     r   	load_seekzWebPImageFile.load_seek   s    r   c                    | j                   S rG   )rI   rD   s    r   tellzWebPImageFile.tell   s    ###r   )returnNone)rm   zdict[int, Any] | None)rK   intrm   rn   )T)r)   boolrm   rn   )rm   ztuple[bytes, int, int])rm   zImage.core.PixelAccess | None)ri   ro   rm   rn   )rm   ro   )__name__
__module____qualname__formatformat_descriptionrP   rI   r@   rE   rL   r6   rZ   r\   re   rj   rl   __classcell__)rf   s   @r   r   r   %   sF    F%HO !D1
%)*$$r   r   c                `    | j                   dvr| j                  | j                  rdnd      } | S )N)r#   r   r   r   r   )r;   converthas_transparency_data)ims    r   _convert_framer{      s,    	ww--ZZ"":":FIr   c           
        | j                   j                         }t        |j                  dg             }d}| g|z   D ]  }|t	        |dd      z  } |dk(  rt        | ||       y d}d|v r|d   }n^d| j                  v rP| j                  d   }t        |t              r1| j                         }|r||dz  |dz   dz   \  }	}
}|	|
|df}n|||df}| j                   j                  d	| j                  j                  d	d            }| j                   j                  d
d      }| j                   j                  dd      }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd      }d}| j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }| j                   j                  d      xs d}| j                   j                  dd      }t        |t        j                        r|j                         }| j                   j                  dd      }|rd}||rdnd}||rdnd}t        |t        t        f      r t        |      dk7  st        d |D              sd| }t!        |      |\  }}}}|d z  |d!z  z  |d"z  z  |dz  z  }t#        j$                  | j&                  |||||||      }d} d}!| j)                         }"	 | g|z   D ]  }t	        |dd      }#t+        |#      D ]t  }$|j-                  |$       t/        |      }%|j1                  |%j3                         t5        |!      ||||       t        |t        t        f      r	|!||    z  }!n|!|z  }!| dz  } v  	 | j-                  |"       |j1                  d t5        |!      |||d       |j7                  |||      }&|&d#}t!        |      |j9                  |&       y # | j-                  |"       w xY w)$Nappend_imagesr   r1   r   )r   r   r   r   r"      r!   rY   r   minimize_sizeFkminkmaxallow_mixedlosslessqualityP   alpha_qualityd   methodr&    r'   r(   	            c              3  <   K   | ]  }d |cxk  xr dk  nc   yw)r      Nrh   ).0vs     r   	<genexpr>z_save_all.<locals>.<genexpr>   s     4A1<C<<4s   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_saver0   
isinstancero   
getpaletter   ExiftobytestuplelenallOSErrorr
   WebPAnimEncoderrb   rl   rangerL   r{   addgetimroundassemblewrite)'rz   r+   filenamer   r}   totalimsr"   palettergbrY   r   r   r   r   r   verboser   r   r   r   r&   r'   r(   rV   r=   r>   r?   r<   enc	frame_idxrX   cur_idxnfridxrK   rW   s'                                          r   	_save_allr      s=   ..%%'K"=>M Etm# -j!,,-zb"h(4J{" .
		 WW\*
j#& mmoG!*q.JNa3GH1a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z?a444J:,Wcl (D$d"*,	:daiHJ 


	C IIggiG4-' 	C#z1-CSz &s+ KKM)$! hu6)!44I)IQ	)		6 	 GGD%	"Hg}aH <<T3/D|AclHHTN 	s   8BP7 7Q
c                    | j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }| j                   j                  d      xs d}| j                   j                  d	d
      }t        |t        j                        r|j                         }|j                  d      r|dd  }| j                   j                  dd      }| j                   j                  dd      }	| j                   j                  d      rdnd}
t        |       } t        j                  | j                         |t        |      t        |      ||	|
||	      }|d}t        |      |j                  |       y )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   )rz   r+   r   r   r   r   r&   r'   r(   r   r   rW   rV   s                r   r   r     sL   ~~!!*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   bytesrm   z
bool | str)rz   Image.Imagerm   r   )rz   r   r+   z	IO[bytes]r   zstr | bytesrm   rn   )
__future__r   ior   typingr   r   r   r   r	   r
   r   ImportErrorr   r   r   r{   r   r   register_openrt   register_saveregister_save_allregister_extensionregister_mimerh   r   r   <module>r      s    "   I  n$I'' n$byxD   M((- AE,,e4EM00)<E]117;E,,l;	 a	  Is   C' 'C10C1