
    :h2                    N   d dl mZ d dlZd dlZd dlZd dlZd dlmZ ddlm	Z	m
Z
mZmZ ddlmZ  ej                  d      ZerddlmZ d	Zd
Zd"dZ	 	 	 	 	 	 	 	 d#dZ	 	 	 	 	 	 	 	 d#dZ	 	 	 	 	 	 	 	 d#dZ	 	 	 	 	 	 	 	 d#dZ G d d      Z G d de
j                        Zd$dZd%dZ e	j:                  ej<                  ee        e	j>                  ej<                  d        e	j@                  ej<                  e        e	jB                  ej<                  d       e"dk(  r e#ejH                        dk  r e%d        ejL                           e'ejH                  d   d      5 Z( ee(      Z)e)jT                  d   D ]*  Z+e+x\  Z,Z-Z.e)_+        e)j_                  de, de- de. d       ,  e	jN                  ejH                  d         5 Z0e0j_                  d        ddd       ejb                  d!k(  r ejd                  d        ddd       yy# 1 sw Y   4xY w# 1 sw Y   yxY w)&    )annotationsN)IO   )Image	ImageFilePngImagePluginfeatures)	deprecatejpg_2000)Jpeg2KImagePlugins   icns   c                T    t        j                  d| j                  t                    S )Nz>4sI)structunpackread
HEADERSIZE)fobjs    Q/var/www/urcfiles/bundle/venv/lib/python3.12/site-packages/PIL/IcnsImagePlugin.py
nextheaderr   &   s    ==:!677    c                    |\  }}| j                  |       | j                  d      }|dk7  rd}t        |      t        | |dz   |dz
  f|      S )N   s       z'Unknown signature, expecting 0x00000000)seekr   SyntaxErrorread_32)r   start_lengthsizestartlengthsigmsgs          r   read_32tr"   *   s[     #OUFIIe
))A,C
!!7#4%!)VaZ0$77r   c           
     B   |\  }}| j                  |       |d   |d   z  |d   |d   z  f}|d   |d   z  }||dz  k(  r0| j                  |      }t        j                  d||dddd      }d|iS t        j                  d|d      }t        d      D ]  }	g }
|}|dkD  r| j                  d      }|snx|d   }|dz  r8|d	z
  }| j                  d      }t        |      D ]  }|
j                  |        n%|dz   }|
j                  | j                  |             ||z  }|dk  rn|dkD  r|dk7  rd
t        |       d}t        |      t        j                  d|dj                  |
      dddd      }|j                  j                  |j                  |	       
 d|iS )zn
    Read a 32bit RGB icon resource.  Seems to be either uncompressed or
    an RLE packbits-like scheme.
    r      r      RGBrawN   }   zError reading channel [z left]Lr   )r   r   r   
frombuffernewrangeappendreprr   joinimputband)r   r   r   r   r   
pixel_sizesizesqindatar1   band_ixdata	bytesleftbytebyte_int	blocksizeir!   bands                     r   r   r   7   s    #OUFIIeq'DG#T!WtAw%67J]Z]*F!6"eZq!L8 2;3 YYuj$/QxGDIa-yy|7d? (3I99Q<D"9-D) . !)1IKK		) 45Y&	> a-  A~/Y/@G!#&&##CSXXd^UCQRTUVDEEMM$''7+/  0 2;r   c           	         |d   }| j                  |       |d   |d   z  |d   |d   z  f}|d   |d   z  }t        j                  d|| j                  |      dddd      }d|iS )Nr   r$   r   r*   r'   A)r   r   r+   r   )r   r   r   r   r3   r4   r=   s          r   read_mkr@   d   s~     OEIIeq'DG#T!WtAw%67J]Z]*FCTYYv->sAqQD;r   c                   |\  }}| j                  |       | j                  d      }|j                  d      rI| j                  |       t        j                  |       }t        j                  |j                         d|iS |j                  d      s|dk(  rt        sd}t        |      | j                  |       | j                  |      }t        j                  |      }	t        j                  |	      }t        j                  |j                         |j                  dk7  r|j                  d      }d|iS d}t        |      )N   s   PNG

RGBA)s   OQs   

s      jP  

zQUnsupported icon subimage format (rebuild PIL with JPEG 2000 support to fix this)z Unsupported icon subimage format)r   r   
startswithr   PngImageFiler   _decompression_bomb_checkr   enable_jpeg2k
ValueErrorioBytesIOr   Jpeg2KImageFilemodeconvert)
r   r   r   r   r   r    r1   r!   
jp2kstreamfs
             r   read_png_or_jpeg2000rP   p   s    #OUFIIe
))B-C ~~01		%((.''0|AB996  S/!		%YYv&
JJz"..q1''077fF#B|0or   c                      e Zd Zdefgdefgdefgdefgdefgdefdefdefgd	efgd
efgdefdefgdefdefdefgdefgdefdefdefgdZddZddZ	ddZ
ddZ	 d	 	 	 d dZy)!IcnsFile   ic10   ic09   ic14   ic08   ic13   ic07s   it32s   t8mks   icp6   ic12s   ih32s   h8mks   icp5s   il32s   l8mk   ic11s   icp4s   is32s   s8mk))   r[   r$   )r[   r[   r   )   r\   r$   )r\   r\   r   )r(   r(   r$   )r(   r(   r   )@   r]   r   )    r^   r$   )0   r_   r   )r^   r^   r   )   r`   r$   )r`   r`   r   c                `   i | _         || _        t        |      \  }}t        |      sd}t	        |      t
        }||k  rot        |      \  }}|dk  rd}t	        |      |t
        z  }|t
        z  }||f| j                   |<   |j                  |t        j                         ||z  }||k  rnyy)z@
        fobj is a file-like object as an icns resource
        znot an icns filer   zinvalid block headerN)	dctr   r   _acceptr   r   r   rI   SEEK_CUR)selfr   r    filesizer!   r<   r;   s          r   __init__zIcnsFile.__init__   s    
 	"4(Xs|$Cc""(l'-NCA~,!#&&OA#I	NDHHSMIIi-NA (lr   c                    g }| j                   j                         D ]0  \  }}|D ]&  \  }}|| j                  v s|j                  |        0 2 |S N)SIZESitemsrb   r.   )re   sizesr   fmtsfmtreaders         r   	itersizeszIcnsFile.itersizes   sQ    ****,JD$#V$((?LL&  $ -
 r   c                V    | j                         }|sd}t        |      t        |      S )NzNo 32bit icon resources found)rp   r   max)re   rl   r!   s      r   bestsizezIcnsFile.bestsize   s+     1Cc""5zr   c                    i }| j                   |   D ]F  \  }}| j                  j                  |      }|$|j                   || j                  ||             H |S )z
        Get an icon resource as {channel: array}.  Note that
        the arrays are bottom-up like windows bitmaps and will likely
        need to be flipped or transposed in some way.
        )rj   rb   getupdater   )re   r   rb   codero   descs         r   dataforsizezIcnsFile.dataforsize   sX      JJt,LD&88<<%D

6$))T489 - 
r   Nc                   || j                         }nt        |      dk(  r|d   |d   df}| j                  |      }|j                  d      }|r|S |d   j	                         }	 |j                  |d          |S # t        $ r Y |S w xY w)Nr$   r   r   rC   r&   r?   )rs   lenry   ru   copyputalphaKeyError)re   r   channelsr1   s       r   getimagezIcnsFile.getimage   s     <==?DY!^GT!Wa(D##D)\\&!Ie_!!#	KK& 	  			s   'A= =	B
	B
)r   	IO[bytes]returnNone)r   zlist[tuple[int, int, int]])r   tuple[int, int, int])r   r   r   dict[str, Image.Image]ri   )r   z-tuple[int, int] | tuple[int, int, int] | Noner   Image.Image)__name__
__module____qualname__rP   r"   r@   r   rj   rg   rp   rs   ry   r    r   r   rR   rR      s	    "678 "678 "678 "678 "678*+hg

  456 456(7G*<=*+gg

  456*+gg
)E6. EIA	r   rR   c                  b    e Zd ZdZdZdZd	dZed
d       Zej                  dd       ZdddZ
y)IcnsImageFilea!  
    PIL image support for Mac OS .icns files.
    Chooses the best resolution, but will possibly load
    a different size image if you mutate the size attribute
    before calling 'load'.

    The info dictionary has a key 'sizes' that is a list
    of sizes that the icns file has.
    ICNSzMac OS icns resourcec                X   t        | j                        | _        d| _        | j                  j	                         | j
                  d<   | j                  j                         | _        | j                  d   | j                  d   z  | j                  d   | j                  d   z  f| _        y )NrC   rl   r   r$   r   )	rR   fpicns_moderp   infors   	best_sizer   re   s    r   _openzIcnsImageFile._open  s    TWW%	
!YY002		'++-NN1q 11NN1q 11
	r   c                    | j                   S ri   )_sizer   s    r   r   zIcnsImageFile.size  s    zzr   c                   t        |      dk(  r&t        ddd       || j                  d   v rT|| _        y | j                  d   D ]:  }|d   |d   z  |d   |d   z  f}|d   |d   z  }|d   |d   z  |k(  s3|| _         y  d	}t	        |      )
Nr%   z&Setting size to (width, height, scale)rB   zload(scale)rl   r   r$   r   z2This is not one of the allowed sizes of this image)r{   r
   r   r   rH   )re   valuer   simple_sizescaler!   s         r   r   zIcnsImageFile.size  s    u:?>MR		'**"
 		'*"1gQ/a471BB#A%(2q>E!H,5!&DJ + Cor   Nc                z   |t        | j                        dk(  rX|'t        | j                        dk(  r| j                  d   }|J | j                  d d \  }}||z  ||z  f| _        |||f| _        t        j                  j	                  |       }| j
                  %| j                  j                  | j                  k(  r|S | j                          | j                  j                  | j                        }|j	                         }|j                  | _        |j                  | _        |j                  | _        |S )Nr%   r$   )r{   r   r   r   load_imr1   load_preparer   r   rL   r   )re   r   widthheightpxr1   s         r   r   zIcnsImageFile.load-  s   DII! 3}TYY1!4		!$$$ IIbqMME6v~5DI"FE1DN[[d#88DGGLLDII$=IYY/ WWY%%WW
GG		r   )r   r   )r   &tuple[int, int] | tuple[int, int, int])r   r   r   r   ri   )r   z
int | Noner   zImage.core.PixelAccess | None)r   r   r   __doc__formatformat_descriptionr   propertyr   setterr   r   r   r   r   r      sJ     F/
   
[[ $r   r   c           	        t        |d      r|j                          ddddddddd}| j                  j                  d	g       D  ci c]  } | j                  |  }} i }t        |j                               D ]W  }||v r||   n j                  ||f      }t        j                         }|j                  |d
       |j                         ||<   Y g }	|j                         D ].  \  }
}||   }|	j                  |
t        t        |      z   |f       0 |j!                  t"               t        }|t        dt        |	      z  z   z  }|t%        d |	D              z  }|j!                  t'        j(                  d|             |j!                  d       |j!                  t'        j(                  dt        t        |	      t        z  z                |	D ]>  }|j!                  |d          |j!                  t'        j(                  d|d                @ |	D ]R  }|j!                  |d          |j!                  t'        j(                  d|d                |j!                  |d          T t        |d      r|j                          yyc c} w )za
    Saves the image as a series of PNG files,
    that are then combined into a .icns file.
    flushr(   r\   r[   i   r^   r]   )rX   rV   rT   rS   rZ   rY   rW   rU   append_imagespngr   c              3  &   K   | ]	  }|d      yw)r   Nr   ).0entrys     r   	<genexpr>z_save.<locals>.<genexpr>p  s     5WEuQxWs   z>is   TOC r   r   r$   N)hasattrr   encoderinforu   r   setvaluesresizerI   rJ   savegetvaluerk   r.   r   r{   writeMAGICsumr   pack)r1   r   filenamerl   provided_imagessize_streamsr   imagetempentriestypestreamfile_lengthr   s                 r   _saver   H  s?   
 r7

 	E /1nn.@.@RT.UV.Urxx|.UOVLELLN# & D!D$<( 	 zz|

4!]]_T $ Gkkm
dd#j3v;6?@ $
 HHUOK:CL 000K35W555KHHV[[{+, HHWHHV[[zCL:,EEFG
q
T58,- 
 
q
T58,-
q 
 r7

 M Ws   Jc                ,    | j                  t              S ri   )rD   r   )prefixs    r   rc   rc     s    U##r   z.icnsz
image/icns__main__r$   z)Syntax: python3 IcnsImagePlugin.py [file]rbrl   zout--z.pngzout.pngwindows)r   r   r   ztuple[bytes, int])r   r   r   ztuple[int, int]r   r   r   r   )r1   r   r   r   r   zstr | bytesr   r   )r   bytesr   bool)3
__future__r   rI   osr   systypingr    r   r   r   r	   
_deprecater
   check_codecrG   r   r   r   r   r"   r   r@   rP   rR   r   r   rc   register_openr   register_extensionregister_saveregister_mimer   r{   argvprintexitopenr   imfr   r   r   r   r   r   r1   platform	startfiler   r   r   <module>r      se  & # 	 	  
  8 8 !$$$Z0#
8
8

8#2
8:N
8
8*
*#2*:N**Z	
	#2	:N		"
"#2":N""Jb bRGI'' GT9x$   M((- A   --w 7   M((% 0   M((, 7z
388}q9:
	chhqk4	 BBHHW%D.22 E6538HHtE7!F81UG489 & UZZ$GGI %<<9$BLL# 
!	   %$ 
!	 s%   &A$H
H)HH	HH$