
    h{M                    B   S SK Jr  S SKrS SKJrJr  SSK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SSSSSS.rSrS'S jrS'S jr " S S\R                  5      r " S S\R2                  5      r " S S\5      rSSSSSS .rS(S! jr S)         S*S" jjr\R>                  " \R@                  \\5        \RB                  " \R@                  \5        \RD                  " \R@                  S#5        \RF                  " \R@                  S$5        \RH                  " S%\5        \R>                  " \R@                  \\5        \RB                  " \R@                  \5        \RD                  " \R@                  S&5        \RF                  " \R@                  S$5        g)+    )annotationsN)IOAny   )Image	ImageFileImagePalette)i16le)i32leo8)o16le)o32le)PzP;1)r   zP;4)r   r   )RGBBGR;15)r   BGR)r   BGRX)r                   Fc                $    U R                  S5      $ )N   BM)
startswithprefixs    D/var/www/html/env/lib/python3.13/site-packages/PIL/BmpImagePlugin.py_acceptr    6   s    U##    c                    [        U 5      S;   $ )N)   (   4   8   @   l   |   )i32r   s    r   _dib_acceptr+   :   s    v;888r!   c                      \ rS rSrSrSrSrSSSSS	S
S.r\R                  5        H  u  r	r
\
\" 5       \	'   M     SSS jjrSS jrSrg)BmpImageFileA   z0Image plugin for the Windows Bitmap format (BMP)Windows BitmapBMPr   r         r      )RAWRLE8RLE4	BITFIELDSJPEGPNGc                   U R                   R                  U R                   R                  pCU(       a  U" U5        [        U" S5      5      SS.n[	        US   [
        5      (       d   e[        R                  " U R                   US   S-
  5      nUS   S:X  aU  [        US5      US'   [        US5      US	'   [        US5      US
'   [        US5      US'   U R                  S   US'   SUS'   GOAUS   S;   Ga#  US   S:H  US'   US   (       a  SOSUS'   [        US5      US'   US   (       d  [        US5      OS[        US5      -
  US	'   [        US5      US
'   [        US5      US'   [        US5      US'   [        US5      US'   [        US5      [        US5      4US'   [        US5      US '   SUS'   [	        US   [        5      (       d   e[        S! US    5       5      U R                  S"'   US   U R                  S#   :X  Ga  / S$Qn[        U5      S%:  aO  [        U5      S&:  a  UR                  S'5        OSUS''   [        U5       H  u  p[        US(US-  -   5      XY'   M     O!SUS''   U H  n	[        U" S5      5      XY'   M     [	        US)   [
        5      (       d   e[	        US*   [
        5      (       d   e[	        US+   [
        5      (       d   e[	        US'   [
        5      (       d   eUS)   US*   US+   4US,'   US)   US*   US+   US'   4US-'   OS.US    S/3n
[        U
5      e[	        US   [
        5      (       d   e[	        US	   [
        5      (       d   eUS   US	   4U l        [	        US   [
        5      (       d   eUR#                  S S5      (       a  US    OSUS   -  US '   [	        US    [
        5      (       d   eUS0US   -   :X  a  US   S::  a  USUS    -  -  n[$        R#                  US   S15      u  U l        nU R(                  (       d  S2US    S/3n
[        U
5      eS3nUS   U R                  S#   :X  a  / S4QS5/S6S7/S8.nS9S:S;S<S=S>S?S>S@SASBSC.nUS   U;   a  US   SD:X  aN  US-   XS      ;   a@  [	        US-   [        5      (       d   eXS   US-   4   nSEU;   a  S=OU R(                  U l        OUS   SF;   a5  US,   XS      ;   a'  [	        US,   [        5      (       d   eXS   US,   4   nOSGn
[        U
5      eSGn
[        U
5      eUS   U R                  S   :X  a$  US   SD:X  a  USH:X  d  [*        (       a	  SIu  ol        O<US   U R                  SJ   U R                  SK   4;   a  SLnOSMUS    S/3n
[        U
5      eU R(                  SN:X  Ga   SUS    s=:  a  SO::  d  O  SPUS     S/3n
[        U
5      e[	        US   [
        5      (       d   eUS   nU" XS    -  5      nSQnUS    S:X  a  SRO[-        [/        US    5      5      n[        U5       H*  u  nnUUU-  UU-  S-    nU[1        U5      S-  :w  d  M(  SSnM,     U(       a  US    S:X  a  STOSUU l        U R(                  nO+SNU l        [2        R4                  " US:X  a  S9OS@U5      U l        US   U R                  S'   U/nUSL:X  a%  UR                  US   U R                  SK   :H  5        O=[	        US   [
        5      (       d   eUR                  US   US   -  SV-   S-	  SW-  5        UR                  US   5        [        R8                  " USSUS   US	   4U=(       d    U R                   R;                  5       [        U5      5      /U l        gX)Yz Read relevant info about the BMPr   )header_size	directionr<   r#   r   widthr1   heightplanes   bitsr4   compressionr2   palette_padding)r$   r%   r&   r'   r(   r)         y_flipr   r=   l        r   
   r   	data_size   r   pixels_per_meter   colorsc              3  *   #    U  H	  oS -  v   M     g7f)o_C@N .0xs     r   	<genexpr>'BmpImageFile._bitmap.<locals>.<genexpr>   s     $X:WQ[:Ws   dpir7   )r_maskg_maskb_mask0   r%   a_mask$   rW   rX   rY   rgb_mask	rgba_maskzUnsupported BMP header type ()   ) ra   zUnsupported BMP pixel depth (raw)      rF   r         ~ rd   re   r   rg   re   rF   r   rg   rd   re   rF   rF   re   rd   rg   rd   re   rF   rg   rg   re   rF   rd   r   r   r   r   rd   re   rF   i   i     i |  i  rp   )r   r   r   r   XBGRBGXRABGRRGBABGRABGARr   zBGR;16r   ))r   rc   )r   rf   )r   rh   )r   ri   )r   rj   )r   rk   )r   rl   )r   rm   )r   rn   )r   ro   )r   rq   r   A)r   r   z Unsupported BMP bitfields layout   )rv   ru   r5   r6   bmp_rlezUnsupported BMP compression (r   i   zUnsupported BMP Palette size (Tr   rF   F1Lrp   N)fpreadseekr*   
isinstanceintr   
_safe_readi16COMPRESSIONStupleinfolenappend	enumerateOSError_sizegetBIT2MODE_modemodeUSE_RAW_ALPHAlistranger   r	   rb   palette_Tiletelltile)selfheaderoffsetr   r   	file_infoheader_datamasksidxmaskmsgraw_modedecoder_name	SUPPORTED
MASK_MODESpaddingr   	grayscaleindicesindvalrgbargss                          r   _bitmapBmpImageFile._bitmapM   s   WW\\477<<dL tAw<>
	 )M2C8888**477Im4Lq4PQ
 ]#r)!$[!!4Ig"%k1"5Ih"%k1"5Ih #K 3If'+'8'8'?Im$+,I'( }%)CC"-a.D"8Ih*3H*=Q2Ik"!$[!!4Ig !* K#Sa00 h
 #&k1"5Ih #K 4If'*;';Im$%(b%9Ik"K$K$-I() #&k2"6Ih+,I'(i(:;UCCCC$$X)DV:W$XXDIIe'4+<+<[+II6{#r);'2-X..1	(+%.u%5	*-k2a<*H	 &6 +.Ih' %*-d1g,	 !&!)H"5s;;;;!)H"5s;;;;!)H"5s;;;;!)H"5s;;;;h'h'h')	*% h'h'h'h'	*	+& 2)M2J1K1MC#, )G,c2222)H-s3333w'8)<<
 )F+S1111 }}Xq)) hy(( 	(
 )H-s3333R)M222y7HA7Ma)H---F  (||If,=xH
Hyy1)F2C1DAFC#, ]#t'8'8'EE	 ..*,AB;I 6<;A7=<B<B<B<B,205-5-5J  I-f%+!+.)f<M2NN%i&<eDDDD)V+<i>T*UVH+.(?		DJf%1!*-V;L1MM%i
&;UCCCC)V+<i
>S*TUH<C!#,&8cl"}%):):5)AA B&"'5$*}%f%f%*
 
 %L1)M2J1K1MC#, 99	(+4u46y7J6K1Mcl"!),=">DDDD#$56w8)<<= 	 !*a/ eIh$789  !*' 2HC!#-#-!2CDCbgk)$)	 !3 (1((;q(@cDJ#yyH!$DJ#/#3#3")Q,E7$DL
 $-]#;		- #*9$KK	-0D4E4Ef4MMNi0#6666KK)G,y/@@2E!KPRSTIk*+OOAy)9X+>?($'',,.d	
	r!   c                    U R                   R                  S5      n[        U5      (       d  Sn[        U5      e[	        US5      nU R                  US9  g)z-Open file, check magic number and read headerr`   zNot a BMP filerH   )r   N)r   r   r    SyntaxErrorr*   r   )r   	head_datar   r   s       r   _openBmpImageFile._open7  sK     GGLL$	y!!"Cc""Y#F#r!   )r   r   r   r   Nr   r   )r   r   r   r   returnNoner   r   )__name__
__module____qualname____firstlineno____doc__format_descriptionformatr   itemskvvarsr   r   __static_attributes__rP   r!   r   r-   r-   A   sU    : *F aAVWXL""$1q	 %h
T$r!   r-   c                  "    \ rS rSrSrSS jrSrg)BmpRleDecoderiE  Tc                   U R                   c   eU R                  S   n[        5       nSnU R                  R                  U R                  R
                  -  n[        U5      U:  Ga  U R                   R                  S5      nU R                   R                  S5      nU(       a  U(       d  GOUS   nU(       a  XH-   U R                  R                  :  a#  [        SU R                  R                  U-
  5      nU(       aH  [        US   S-	  5      n	[        US   S-  5      n
[        U5       H  nUS-  S:X  a  X9-  nM  X:-  nM     OX7U-  -  nXH-  nGOUS   S:X  aW  [        U5      U R                  R                  -  S:w  a-  US-  n[        U5      U R                  R                  -  S:w  a  M-  SnGO}US   S:X  a  GOUS   S:X  a  U R                   R                  S5      n[        U5      S:  a  GOOU R                   R                  S5      u  pUSXU R                  R                  -  -   -  -  n[        U5      U R                  R                  -  nOU(       aO  US   S-  nU R                   R                  U5      nU H%  nU[        US-	  5      -  nU[        US-  5      -  nM'     O$US   nU R                   R                  U5      nX<-  n[        U5      U:  a  OdXGS   -  nU R                   R                  5       S-  S:w  a*  U R                   R                  S[        R                  5        [        U5      U:  a  GM  U R                  S:X  a  SOSnU R!                  [#        U5      USU R                  S	   45        g
)Nr   r   r      r1       r}   r   r;   )r;   r   )fdr   	bytearraystatexsizeysizer   r   maxr   r   r   r   osSEEK_CURr   
set_as_rawbytes)r   bufferrle4datarS   dest_lengthpixelsbyte
num_pixelsfirst_pixelsecond_pixelindex
bytes_readrightup
byte_count	byte_readrawmodes                     r   decodeBmpRleDecoder.decodeH  s   ww"""yy|{jj&&)9)99$i+%WW\\!_F77<<?DJ>DJJ$4$44!$Q

(8(81(<!=J"$T!W\"2K#%d1gn#5L!&z!2 19> /D 0D	 "3 :--D7a<d)djj&6&66!; d)djj&6&66!;A!W\!W\!%aJ:* $QIEGuDJJ4D4D/D'DEEDD	DJJ$4$44A %)!W\
%)WW\\*%=
)3I ByA~$66D By4'7$88D *4 &*!W
%)WW\\*%=
*:3aLA ww||~)Q.Q4u $i+%v c)#sdWq$))B-.@Ar!   rP   N)r   z$bytes | Image.SupportsArrayInterfacer   ztuple[int, int])r   r   r   r   	_pulls_fdr   r   rP   r!   r   r   r   E  s    ICr!   r   c                  &    \ rS rSrSrSrSS jrSrg)DibImageFilei  DIBr/   c                $    U R                  5         g )N)r   )r   s    r   r   DibImageFile._open  s    r!   rP   Nr   )r   r   r   r   r   r   r   r   rP   r!   r   r   r     s    F)r!   r   )r|   r   r1   )r}   r      )r   r   r   )r   r   r   )rv   r   r   )r|   r}   r   r   ru   c                    [        XUS5        g )NF)_save)imr   filenames      r   	_dib_saver     s    	"(E"r!   c                |    [         U R                     u  pEnU R                  n	U	R                  SS5      n
[        S U
 5       5      nU R                  S   U-  S-   S-  S	-   S
-  nSnXR                  S   -  nU R                  S:X  a  SR                  S S 5       5      nOoU R                  S:X  a"  SR                  S [        S5       5       5      nO=U R                  S:X  a+  U R                  R                  SS5      n[        U5      S-  nOS nU(       aX  SU-   US-  -   nUU-   nUS:  a  Sn[        U5      eUR                  S[        U5      -   [        S5      -   [        U5      -   5        UR                  [        U5      [        U R                  S   5      -   [        U R                  S   5      -   [!        S5      -   [!        U5      -   [        S5      -   [        U5      -   [        US   5      -   [        US   5      -   [        U5      -   [        U5      -   5        UR                  SUS-
  -  5        U(       a  UR                  U5        ["        R$                  " X["        R&                  " SSU R                  -   SXLS45      /5        g ! [         a!  nSU R                   S3n[        U5      UeS nAff = f) Nzcannot write mode z as BMPrV   )`   r   c              3  D   #    U  H  n[        US -  S-   5      v   M     g7f)rO   g      ?N)r   rQ   s     r   rT   _save.<locals>.<genexpr>  s!     41AK#%&&s    r   rE   r   r2   r~   r$   r   r|   r!   c              3  >   #    U  H  n[        U5      S -  v   M     g7fr   Nr   rR   is     r   rT   r     s     7h2a519h   r{   r}   c              3  >   #    U  H  n[        U5      S -  v   M     g7fr   r   r   s     r   rT   r     s     9j2a519jr   r   r   r   r   r   r`   l    z)File size is too large for the BMP formatr   r   rb   r   r;   )SAVEr   KeyErrorr   encoderinfor   r   sizejoinr   r   
getpaletter   
ValueErrorwriteo32o16r   r   r   )r   r   r   bitmap_headerr   rB   rM   er   r   rV   ppmstrider   imager   r   	file_sizes                     r   r   r     s   " $RWWv
 >>D
((5(
#C 44
4CwwqzD 1$*Q.26FFWWQZE	ww#~((7h77	C((9eCj99	C%%""5&1W" fvz)UN	y =CS/!
)n!f &k	
 HHF
bggaj/	
bggaj/	 a&	 d)		
 a&	 e*	 c!f+	 c!f+	 f+		 f+
	 HHUfrk"#
OO
(8!gr=RSTw  ""277)73cl!"s   J 
J;J66J;z.bmpz	image/bmprz   z.dib)r   r   r   bool)r   Image.Imager   	IO[bytes]r   str | bytesr   r   )T)
r   r  r   r  r   r  r  r  r   r   )%
__future__r   r   typingr   r   ra   r   r   r	   _binaryr
   r   r   r*   r   r   r  r   r  r   r   r    r+   r-   	PyDecoderr   r   r   r   r   register_openr   register_saveregister_extensionregister_mimeregister_decoderrP   r!   r   <module>r     s  2 # 	  , , ! !  ! !  $9A$9&& A$HFI'' FX<  
		#
 RVBB"B.9BJNB	BT   L''w ?   L'' /   ,,f 5   L'' 5   y- 0   L''{ C   L'' 3   ,,f 5   L'' 5r!   