
    h0                       S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r	J
r
  SSK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rSS jrSS jr " S S\
5      r " S S5      r " S S\R                  5      r\R@                  " \RB                  \\5        \RD                  " \RB                  \5        \RF                  " \RB                  S5        \RH                  " \RB                  S5        g)    )annotationsN)BytesIO)ceillog)IO
NamedTuple   )BmpImagePluginImage	ImageFilePngImagePlugin)i16le)i32le)o8)o16le)o32les      c                v   UR                  [        5        U R                  R                  S5      S:H  nU R                  R                  S/ SQ5      n/ nU /U R                  R                  S/ 5      -   nU R                  u  px[        [        U5      5       GH/  n	U	S   U:  d  U	S   U:  d  U	S   S:  d	  U	S   S:  a  M*  U H  n
U
R                  U	:w  a  M  UR                  U
5        U(       a  [        R                  U
R                     S   nU/nU H^  nUR                  U	:w  a  M  [        R                  UR                     S   nX;  d  M<  UR                  U5        UR                  U5        M`       M     W
R                  5       nUR                  U	[        R                  R                  S S	9  UR                  U5        GM2     UR                  [!        [#        U5      5      5        UR%                  5       [#        U5      S
-  -   nU GH'  nUR                  u  pxUR                  ['        US:  a  UOS5      5        UR                  ['        US:  a  UOS5      5        U(       a   [        R                  UR                     SS  OSu  nnUR                  ['        U5      5        UR                  S5        UR                  S5        UR                  [!        U5      5        [)        5       nU(       ac  UR+                  US5        US:w  aJ  [        R,                  " SW	5      n[.        R0                  " UU[.        R2                  " SSU	-   SS5      /5        OUR+                  US5        UR5                  S5        UR7                  5       nU(       a  US S [9        US-  5      -   USS  -   n[#        U5      nUR                  [9        U5      5        UR                  [9        U5      5        UR%                  5       nUR5                  U5        UR                  U5        UU-   nUR5                  U5        GM*     g )Nbitmap_formatbmpsizes))   r   )   r   )    r   )0   r   )@   r   )   r   )   r   append_imagesr   r	   r   )reducing_gapr   )r   r       s     dibr   1rawr   r   )r"   r   png         )write_MAGICencoderinfogetsizesortedsetappendr
   SAVEmodecopy	thumbnailr   
ResamplingLANCZOSo16lentellr   r   savenewr   _save_Tileseekreado32)imfpfilenamer   r   framesprovided_imswidthheightr.   provided_imbits	bits_usedother_imframeoffsetcolorsimage_ioand_maskimage_bytes	bytes_lencurrents                         D/var/www/html/env/lib/python3.13/site-packages/PIL/IcoImagePlugin.pyr=   r=   +   sl   HHV
..

_
-
6CNNRE F4"..,,_bAALGGMEs5z"7U?d1g.$q'C-47S='K4'MM+&%**;+;+;<Q?!F	 ,H}}, )..x}}=a@D, h/!((. !- ! (&  $$&EOOD%"2"2":":ONMM% 3 #4 HHSVWWYVr))F


US[Ea01
fslF23>A~**5::6qr:wf
F


T9JJx'rz 99S$/__UFTM1lKL JJx'ammo%bq/C
O;k"#>NNK$	
Y 
V'')

)#
I     c                ,    U R                  [        5      $ N)
startswithr+   )prefixs    rU   _acceptr[   x   s    V$$rV   c                      \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   Srg)
IconHeader|   intrG   rH   nb_colorreservedplanesbppr.   rN   tuple[int, int]dimsquarecolor_depth N)__name__
__module____qualname____firstlineno____annotations____static_attributes__rh   rV   rU   r]   r]   |   s;    JKMMK	H
IK	KrV   r]   c                  N    \ rS rSrS	S jrS
S jrSSS jjrSSS jjrSS jrSr	g)IcoFile   c                   UR                  S5      n[        U5      (       d  Sn[        U5      eXl        / U l        [        US5      U l        [        U R                  5       H  nUR                  S5      nUS   =(       d    SnUS   =(       d    SnUS   n[        US5      n[        UUUUS	   [        US5      [        US5      [        US
5      [        US5      XV4XV-  U=(       d*    US:g  =(       a    [        [        US5      5      =(       d    SS9n	U R                  R                  U	5        M     [        U R                  S S9U l        [        U R                  S SS9U l        g)z<
Parse image from file-like object containing ico file data
   znot an ICO file   r   r   r   r	   r(      r'   r)   )rG   rH   r`   ra   rb   rc   r.   rN   re   rf   rg   c                    U R                   $ rX   )rg   xs    rU   <lambda>"IcoFile.__init__.<locals>.<lambda>   s    ammrV   )keyc                    U R                   $ rX   )rf   rw   s    rU   ry   rz      s    ahhrV   T)r{   reverseN)r@   r[   SyntaxErrorbufentryi16nb_itemsranger]   i32r   r   r1   r/   )
selfr   smsgirG   rH   r`   rc   icon_headers
             rU   __init__IcoFile.__init__   sD    HHQKqzz#Cc""
 Aq	 t}}%AA aDKCEqT[SF tHa)C$!11ay1IAY1bzO~  THM$Ld3x;K6LTQTK  JJk*5 &8 DJJ,CD
DJJ,>M
rV   c                p    U R                    Vs1 s H  oR                  UR                  4iM     sn$ s  snf )z9
Get a set of all available icon sizes and color depths.
)r   rG   rH   )r   hs     rU   r   IcoFile.sizes   s+     .2ZZ8Z!((#Z888s   !3c                    [        U R                  5       H.  u  p4XR                  :X  d  M  USL d  X$R                  :X  d  M,  Us  $    g)NFr   )	enumerater   re   rg   )r   r.   rc   r   r   s        rU   getentryindexIcoFile.getentryindex   s9    djj)DAuu}#,#2F * rV   c                B    U R                  U R                  X5      5      $ )z
Get an image from the icon
)rM   r   )r   r.   rc   s      rU   getimageIcoFile.getimage   s     zz$,,T788rV   c                   U R                   U   nU R                  R                  UR                  5        U R                  R	                  S5      nU R                  R                  UR                  5        USS [
        R                  :X  aB  [
        R                  " U R                  5      n[        R                  " UR                  5        U$ [        R                  " U R                  5      n[        R                  " UR                  5        UR                  S   [        UR                  S   S-  5      4Ul        UR                  S   u  pVpx[         R"                  " USUR                  -   Xx5      UR                  S'   UR$                  S:X  a  U R                  R                  U5        U R                  R	                  UR                  S   UR                  S   -  S-  5      S	SS2   n	 [        R&                  " S
UR                  U	SS5      n
OUR                  S   nUS-  S:  a  USUR                  S   S-  -
  -  n[        XR                  S   -  S-  5      nUR                  UR                  -   U-
  nU R                  R                  U5        U R                  R	                  U5      n [        R&                  " SUR                  USS[        US-  5      S45      n
U
(       a"  UR-                  S5      nUR/                  U
5        U$ ! [(         a    [         R*                  (       a  Sn
 NNe f = f! [(         a    [         R*                  (       a  Sn
 Nve f = f)z
Get an image from frame idx
r'   Nr   r	   r(   r$   r   rt   ru   Lr#   )r   r   r%   r"   z1;Ir%   RGBA)r   r   r?   rN   r@   r   r+   PngImageFiler   _decompression_bomb_checkr.   r
   DibImageFiler_   _sizetiler   r>   rc   
frombuffer
ValueErrorLOAD_TRUNCATED_IMAGESconvertputalpha)r   idxheaderdatarB   deoaalpha_bytesmaskwtotal_bytesand_mask_offset	mask_datas                  rU   rM   IcoFile.frame   s   
 Cfmm$xx}}Qfmm$ 8~,,,,,TXX6B++BGG4V 	Q  ,,TXX6B++BGG4 
C
Q$78BHJA!"FRWW,<aCBGGAJ zzR a "hhmmBGGAJ,Ca,GHAN ++#$D GGAJFa<rwwqzB//A
 "1wwqz>Q"67"(--&++"="Ko. HHMM+6	 ++!AE
B/D  ZZ'D!	W "  66#	< "  66#	s$   .$L 33L9 !L64L69!MM)r   r   r   N)r   	IO[bytes]returnNone)r   zset[tuple[int, int]])F)r.   rd   rc   
int | boolr   r_   )r.   rd   rc   r   r   Image.Image)r   r_   r   r   )
ri   rj   rk   rl   r   r   r   r   rM   rn   rh   rV   rU   rp   rp      s    0Nd99ZrV   rp   c                  z    \ rS rSrSrSrSrSS jr\SS j5       r	\	R                  SS j5       r	SS jrSS	 jrS
rg)IcoImageFilei0  a  
PIL read-only image support for Microsoft Windows .ico files.

By default the largest resolution image in the file will be loaded. This
can be changed by altering the 'size' attribute before calling 'load'.

The info dictionary has a key 'sizes' that is a list of the sizes available
in the icon file.

Handles classic, XP and Vista icon formats.

When saving, PNG compression is used. Support for this was only added in
Windows Vista. If you are unable to view the icon in Windows, convert the
image to "RGBA" mode before saving.

This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis
<casadebender@gmail.com>.
https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki
ICOzWindows Iconc                    [        U R                  5      U l        U R                  R                  5       U R                  S'   U R                  R
                  S   R                  U l        U R                  5         g )Nr   r   )	rp   rC   icor   infor   re   r.   loadr   s    rU   _openIcoImageFile._openH  sN    477#!XX^^-		'HHNN1%))			rV   c                    U R                   $ rX   )r   r   s    rU   r.   IcoImageFile.sizeN  s    zzrV   c                N    XR                   S   ;  a  Sn[        U5      eXl        g )Nr   z2This is not one of the allowed sizes of this image)r   r   r   )r   valuer   s      rU   r.   r   R  s%    		'**FCS/!
rV   c                   U R                   bC  U R                  R                  U R                  :X  a  [        R                  R	                  U 5      $ U R
                  R                  U R                  5      nUR	                  5         UR                  U l        UR                  U l        UR                  (       a  UR                  U l	        UR                  U R                  :w  a  [        R                  " S5        U R
                  R                  U R                  5      n[        U R                  S   5      nUR                  X2'   [        U5      U R                  S'   UR                  U l        g )NzImage was not the expected sizer   )_imrB   r.   r   r   r   r   r3   _modepalettewarningswarnr   listr   r0   )r   rB   indexr   s       rU   r   IcoImageFile.loadY  s    88DGGLLDII$=;;##D))XXtyy)
	%%WW
::::DL77diiMM;<HH**4995E7+,E77EL!$UDIIgDIrV   c                    g rX   rh   )r   poss     rU   	load_seekIcoImageFile.load_seeko  s     	rV   )r   r   r   rB   r   r.   N)r   r   )r   rd   )r   rd   r   r   )r   zImage.core.PixelAccess | None)r   r_   r   r   )ri   rj   rk   rl   __doc__formatformat_descriptionr   propertyr.   setterr   r   rn   rh   rV   rU   r   r   0  sO    ( F'   
[[ ,rV   r   z.icozimage/x-icon)rB   r   rC   r   rD   zstr | bytesr   r   )rZ   bytesr   bool)%
__future__r   r   ior   mathr   r   typingr   r    r
   r   r   r   _binaryr   r   r   r   r   r   r8   r   rA   r+   r=   r[   r]   rp   r   register_openr   register_saveregister_extensionregister_mimerh   rV   rU   <module>r      s   . #    ! > > ! !  ! !
 
JZ% _ _LB9&& BR   L''w ?   L'' /   ,,f 5   L'' 8rV   