ó
    jñ:il6  ã                  óÜ  • S SK Jr  S SKrS SKrS SKrS SKJr  SSKJrJ	r	J
r
Jr  Sr\(       a  S SKJr  S SKJr   " S	 S
5      rSS jrSS jr    SS jr " S S\	R                  5      rSS jrSS jr\R.                  " \R0                  \\5        \R2                  " \R0                  \5        \R4                  " \R0                  / SQ5        \R6                  " \R0                  S5        g)é    )ÚannotationsN)Úcasté   )ÚImageÚ	ImageFileÚImagePaletteÚ_binaryF)ÚCallable)ÚIOc                  ób   • \ rS rSrSrSSS jjrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)Ú	BoxReaderé   zq
A small helper class to read fields stored in JPEG2000 header boxes
and to easily step into and read sub-boxes.
c                ó>   • Xl         US:¬  U l        X l        SU l        g )Nr   éÿÿÿÿ©ÚfpÚ
has_lengthÚlengthÚremaining_in_box)Úselfr   r   s      ÚX/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/PIL/Jpeg2KImagePlugin.pyÚ__init__ÚBoxReader.__init__%   s   € ØŒØ  A™+ˆŒØŒØ "ˆÕó    c                óº   • U R                   (       a,  U R                  R                  5       U-   U R                  :”  a  gU R                  S:¼  a  XR                  :*  $ g)NFr   T)r   r   Útellr   r   )r   Ú	num_bytess     r   Ú	_can_readÚBoxReader._can_read+   sF   € Ø�?�?˜tŸw™wŸ|™|›~°	Ñ9¸D¿K¹KÓGàØ× Ñ  AÓ%à× 5Ñ 5Ñ5Ð5àr   c                ó$  • U R                  U5      (       d  Sn[        U5      eU R                  R                  U5      n[	        U5      U:  a  SU S[	        U5       S3n[        U5      eU R                  S:”  a  U =R                  U-  sl        U$ )NzNot enough data in headerzExpected to read z bytes but only got Ú.r   )r   ÚSyntaxErrorr   ÚreadÚlenÚOSErrorr   )r   r   ÚmsgÚdatas       r   Ú_read_bytesÚBoxReader._read_bytes5   s†   € Ø�~‰~˜i×(Ñ(Ø-ˆCÜ˜cÓ"Ð"à�w‰w�|‰|˜IÓ&ˆÜˆt‹9�yÓ Ø% i [Ð0DÄSÈÃYÀKÈqÐQˆCÜ˜#“,Ðà× Ñ  1Ó$Ø×!Ò! YÑ.Õ!Øˆr   c                ó|   • [         R                  " U5      nU R                  U5      n[         R                  " X5      $ ©N)ÚstructÚcalcsizer(   Úunpack)r   Úfield_formatÚsizer'   s       r   Úread_fieldsÚBoxReader.read_fieldsC   s/   € Ü�Š˜|Ó,ˆØ×Ñ Ó%ˆÜ�}Š}˜\Ó0Ð0r   c                ó|   • U R                   nU R                  U5      n[        [        R                  " U5      U5      $ r+   )r   r(   r   ÚioÚBytesIO)r   r0   r'   s      r   Ú
read_boxesÚBoxReader.read_boxesH   s3   € Ø×$Ñ$ˆØ×Ñ Ó%ˆÜœŸš DÓ)¨4Ó0Ð0r   c                óŽ   • U R                   (       a4  U R                  R                  5       U R                  -   U R                  :  $ g)NT)r   r   r   r   r   )r   s    r   Úhas_next_boxÚBoxReader.has_next_boxM   s0   € Ø�?�?Ø—7‘7—<‘<“> D×$9Ñ$9Ñ9¸D¿K¹KÑGÐGàr   c                ó¸  • U R                   S:”  a4  U R                  R                  U R                   [        R                  5        SU l         [        [        [        [        4   U R                  S5      5      u  pUS:X  a%  [        [        U R                  S5      S   5      nSnOSnX:  d  U R                  X-
  5      (       d  Sn[        U5      eX-
  U l         U$ )	Nr   r   z>I4sr   z>Qé   é   zInvalid header length)r   r   ÚseekÚosÚSEEK_CURr   ÚtupleÚintÚbytesr1   r   r"   )r   ÚlboxÚtboxÚhlenr&   s        r   Únext_box_typeÚBoxReader.next_box_typeS   s¹   € à× Ñ  1Ó$Ø�G‰G�L‰L˜×.Ñ.´·±Ô<Ø "ˆÔô œ%¤¤U 
Ñ+¨T×-=Ñ-=¸fÓ-EÓF‰
ˆØ�1‹9Üœ˜T×-Ñ-¨dÓ3°AÑ6Ó7ˆDØ‰DàˆDà‹;˜dŸn™n¨T©[×9Ñ9Ø)ˆCÜ˜cÓ"Ð"à $¡ˆÔØˆr   r   N)r   )r   ú	IO[bytes]r   rB   ÚreturnÚNone)r   rB   rJ   Úbool)r   rB   rJ   rC   )r/   ÚstrrJ   ztuple[int | bytes, ...])rJ   r   )rJ   rL   )rJ   rC   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r(   r1   r6   r9   rG   Ú__static_attributes__© r   r   r   r      s*   † ñö
#ôôô1ô
1ô
÷r   r   c                ó–  • U R                  S5      n[        R                  " U5      nXR                  US-
  5      -   n[        R                  " SU5      u  p$pVpx      pšXW-
  Xh-
  4nU
S:X  a2  [        R                  " SUS5      nUS   S-  S-   S:”  a  S	nX½4$ S
n X½4$ U
S:X  a  SnX½4$ U
S:X  a  SnX½4$ U
S:X  a  SnX½4$ Sn[        U5      e)z‡Parse the JPEG 2000 codestream to extract the size and component
count from the SIZ marker segment, returning a PIL (size, mode) tuple.é   z>HHIIIIIIIIHr   z>Bé&   r   é   r=   úI;16ÚLÚLAé   ÚRGBé   ÚRGBAz"unable to determine J2K image mode)r#   r	   Úi16ber,   Úunpack_fromr"   )r   ÚhdrÚlsizÚsizÚrsizÚxsizÚysizÚxosizÚyosizÚ_Úcsizr0   ÚssizÚmoder&   s                  r   Ú_parse_codestreamrn   i   s  € ð �'‰'�!‹*€CÜ�=Š=˜Ó€DØ
—‘˜˜q™Ó!Ñ
!€CÜ=C×=OÒ=OØ˜ó>Ñ:€D�˜E¨!¨Q°°1ð ‰L˜$™,Ð'€DØˆqƒyÜ×!Ò! $¨¨RÓ0ˆØ�‰G�d‰N˜aÑ !Ó#ØˆDð ˆ:Ðð ‰Dð ˆ:Ðð 
�‹Øˆð ˆ:Ðð 
�‹Øˆð ˆ:Ðð 
�‹Øˆð
 ˆ:Ðð 3ˆÜ˜#ÓÐr   c                ó2   • US:X  a  gSU -  SU-  -  SU-  -  $ )z­Convert JPEG2000's (numerator, denominator, exponent-base-10) resolution,
calculated as (num / denom) * 10^exp and stored in dots per meter,
to floating-point dots per inch.r   Néþ   é
   i'  rT   )ÚnumÚdenomÚexps      r   Ú_res_to_dpiru   ˆ   s*   € ð �ƒzØØ�#‰I˜˜S™Ñ! e¨e¡mÑ4Ð4r   c                ó  • [        U 5      nSnSnUR                  5       (       a^  UR                  5       nUS:X  a  UR                  5       nO7US:X  a  UR	                  S5      S   S:X  a  SnUR                  5       (       a  M^  Uc   eSnSnSnSnSn	Sn
UR                  5       (       GaK  UR                  5       nUS:X  a—  UR	                  S	5      u  p¼p‡[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   eXË4nUS
:X  a  US-  S:”  a  SnGO®US
:X  a  SnGO¤US:X  a  SnGOšUS:X  a  SnGO�US:X  a  SnGO†US:X  a+  US:X  a%  UR	                  S5      u  n  pïUS
:X  a  US:X  a  SnGOUUS:X  Ga.  US;   Ga'  UR	                  S5      u  nn[        U[        5      (       d   e[        U[        5      (       d   eSnUR	                  SSU-  -   5       H$  n[        U[        5      (       d   eUU:”  d  M"  UnM&     US::  aœ  [        R                  " US:X  a  SOS5      n
[        U5       He  n/ nUR	                  SSU-  -   5       H+  n[        U[        5      (       d   eUR                  U5        M-     U
R                  [        U5      5        Mg     US:X  a  SOSnGO US :X  Ga  UR                  5       nUR                  5       (       aô  UR                  5       nUS!:X  aÇ  UR	                  S"5      u  nnnnnn[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        UUU5      n[        UUU5      n Ub  U b  UU 4n	OUR                  5       (       a  Mô  UR                  5       (       a  GMK  Ub  Uc  S#n![        U!5      eXVX9U
4$ )$z¢Parse the JP2 header box to extract size, component count,
color space information, and optionally DPI information,
returning a (size, mode, mimetype, dpi) tuple.Ns   jp2hs   ftypz>4sr   s   jpx z	image/jpxs   ihdrz>IIHBr   rX   r=   rY   rZ   rV   r[   r\   r]   r^   r_   s   colrz>BBBIé   ÚCMYKs   pclr)rZ   r[   z>HBÚ>ÚBÚPÚPAs   res s   rescz>HHHHBBzMalformed JP2 header)r   r9   rG   r6   r1   Ú
isinstancerB   r   ÚrangeÚappendÚgetcolorrA   ru   r"   )"r   ÚreaderÚheaderÚmimetyperE   r0   rm   ÚbpcÚncÚdpiÚpaletteÚheightÚwidthÚmethrj   ÚenumcsÚneÚnpcÚmax_bitdepthÚbitdepthÚiÚcolorÚvalueÚresÚtresÚvrcnÚvrcdÚhrcnÚhrcdÚvrceÚhrceÚhresÚvresr&   s"                                     r   Ú_parse_jp2_headerr�   ‘   s  € ô �r‹]€FØ€FØ€HØ
×
Ñ
×
Ñ
Ø×#Ñ#Ó%ˆà�7‹?Ø×&Ñ&Ó(ˆFØØ�W‹_Ø×!Ñ! %Ó(¨Ñ+¨wÓ6Ø&�ð ×
Ñ
×
Ó
ð ÑÐÐà€DØ€DØ
€CØ	€BØ
€CØ€Gà
×
Ñ
×
Ò
Ø×#Ñ#Ó%ˆà�7‹?Ø%+×%7Ñ%7¸Ó%@Ñ"ˆF˜2Ü˜f¤c×*Ñ*Ð*Ð*Ü˜e¤S×)Ñ)Ð)Ð)Ü˜c¤3×'Ñ'Ð'Ð'Ø�?ˆDØ�Q‹w˜C $™J¨!Ó+Ø’Ø�q“Ø’Ø�q“Ø’Ø�q“Ø’Ø�q“Ø�ùØ�W‹_  q£Ø!'×!3Ñ!3°GÓ!<ÑˆD�!�QØ�q‹y˜V r›\Ø�ùØ�WŒ_ ¨Ô!4Ø×(Ñ(¨Ó/‰GˆB�Ü˜b¤#×&Ñ&Ð&Ð&Ü˜c¤3×'Ñ'Ð'Ð'ØˆLØ"×.Ñ.¨s°c¸C±iÑ/@ÖA�Ü! (¬C×0Ñ0Ð0Ð0Ø˜lÕ*Ø#+’Lñ Bð ˜qÓ Ü&×3Ò3¸cÀQ»h±FÈEÓR�Ü˜rž�AØ')�EØ!'×!3Ñ!3°C¸3À¹9Ñ4EÖ!F˜Ü)¨%´×5Ñ5Ð5Ð5ØŸ™ UÖ+ñ "Gð ×$Ñ$¤U¨5£\Ö2ñ #ð # c›k‘s¨t�ùØ�WŒ_Ø×#Ñ#Ó%ˆCØ×"Ñ"×$Ñ$Ø×(Ñ(Ó*�Ø˜7“?Ø9<¿¹ÈÓ9SÑ6�D˜$  d¨D°$Ü% d¬C×0Ñ0Ð0Ð0Ü% d¬C×0Ñ0Ð0Ð0Ü% d¬C×0Ñ0Ð0Ð0Ü% d¬C×0Ñ0Ð0Ð0Ü% d¬C×0Ñ0Ð0Ð0Ü% d¬C×0Ñ0Ð0Ð0Ü& t¨T°4Ó8�DÜ& t¨T°4Ó8�DØÑ'¨DÑ,<Ø# T˜l˜Øð ×"Ñ"×$Ó$ðW ×
Ñ
×
Ô
ðv �|�t‘|Ø$ˆÜ˜#ÓÐà�x gÐ-Ð-r   c                  óˆ   ^ • \ rS rSrSrSrS
S jrS
S jr\  SU 4S jj5       r	\	R                  SS j5       r	SS jrS	rU =r$ )ÚJpeg2KImageFileéú   ÚJPEG2000zJPEG 2000 (ISO 15444)c           
     ó\  • U R                   R                  S5      nUS:X  a;  SU l        [        U R                   5      u  U l        U l        U R                  5         GOXR                   R                  S5      -   nUS:X  aæ  SU l        [        U R                   5      nUu  U l        U l        U l        o0l	        Ub  X0R                  S'   U R                   R                  S5      R                  S	5      (       an  U R                   R                  S
5      n[        R                  " U5      nU R                   R                  US
-
  [        R                   5        U R                  5         OSn[#        U5      eSU l        SU l        SnSn U R                   R)                  5       n[        R*                  " U5      R,                  n[6        R8                  " SSU R:                  -   SU R                  U R$                  U R&                  Xu45      /U l        g ! [.         a’    Sn U R                   R1                  5       nU R                   R                  S[2        R4                  5        U R                   R1                  5       nU R                   R                  U5         N×! [.         a    Sn  Næf = ff = f)Nr^   ó   ÿOÿQÚj2kr=   ó      jP  
‡
Újp2r†   rw   s   jp2cÿOÿQrV   znot a JPEG 2000 filer   r   Újpeg2k©r   r   )r   r#   Úcodecrn   Ú_sizeÚ_modeÚ_parse_commentr�   Úcustom_mimetyper‡   ÚinfoÚendswithr	   r`   r>   r?   r@   r"   Ú_reduceÚlayersÚfilenoÚfstatÚst_sizeÚ	Exceptionr   r4   ÚSEEK_ENDr   Ú_Tiler0   Útile)	r   Úsigr‚   r†   rb   r   r&   ÚfdÚposs	            r   Ú_openÚJpeg2KImageFile._openþ   s	  € Ø�g‰g�l‰l˜1‹oˆØÐ%Ó%ØˆDŒJÜ%6°t·w±wÓ%?Ñ"ˆDŒJ˜œ
Ø×ÑÖ!àŸ™Ÿ™ Q›Ñ'ˆCàÐ=Ó=Ø"�”
Ü*¨4¯7©7Ó3�ØRXÑO�”
˜DœJ¨Ô(<¸cÄ<Ø‘?Ø'*—I‘I˜eÑ$Ø—7‘7—<‘< Ó#×,Ñ,Ð-D×EÑEØŸ'™'Ÿ,™, q›/�CÜ$Ÿ]š]¨3Ó/�FØ—G‘G—L‘L ¨!¡¬R¯[©[Ô9Ø×'Ñ'Ô)øà,�Ü! #Ó&Ð&àˆŒØˆŒàˆØˆð	Ø—‘—‘Ó!ˆBÜ—X’X˜b“\×)Ñ)ˆFô �OŠOØØ˜Ÿ™Ñ"ØØ—‘˜TŸ\™\¨4¯;©;¸ÐCó	ð
ˆ�	øô ó 	ØˆBðØ—g‘g—l‘l“n�Ø—‘—‘˜Q¤§¡Ô,ØŸ™Ÿ™›�Ø—‘—‘˜SÖ!øÜó Ø“ðúð	ús+   Æ:H ÈJ+ÈA9JÊJ'Ê#J+Ê&J'Ê'J+c                óŒ  •  U R                   R                  S5      nU(       d  g US   nUS;   a  g U R                   R                  S5      n[        R                  " U5      nUS:X  a/  U R                   R                  US-
  5      SS  U R                  S'   g U R                   R                  US-
  [        R                  5        MÄ  )NrV   r   )é�   éÙ   éd   Úcomment)r   r#   r	   r`   r®   r>   r?   r@   )r   ÚmarkerÚtyprb   r   s        r   r¬   ÚJpeg2KImageFile._parse_comment2  sž   € ØØ—W‘W—\‘\ !“_ˆFÞØØ˜‘)ˆCØ�lÓ"àØ—'‘'—,‘,˜q“/ˆCÜ—]’] 3Ó'ˆFØ�d‹{à'+§w¡w§|¡|°F¸Q±JÓ'?ÀÀÐ'C�—	‘	˜)Ñ$Øà—‘—‘˜V a™Z¬¯©Ô5ñ r   c                ó>   >• U R                   =(       d
    [        TU ]  $ r+   )r°   ÚsuperÚreduce)r   Ú	__class__s    €r   rÈ   ÚJpeg2KImageFile.reduceD  s   ø€ ð �|‰|×-œu™w™~Ð-r   c                ó   • Xl         g r+   )r°   )r   r’   s     r   rÈ   rÊ   P  s   € à�r   c                ó>  • U R                   (       aî  U R                  (       aÝ  SU R                  -  nUS-	  n[        U R                  S   U-   U-  5      [        U R                  S   U-   U-  5      4U l        U R                   S   n[        US   [        5      (       d   eUS   S   U R                  U R                  US   S   US   S   4n[        R                  " US   SU R                  -   US   U5      /U l         [        R                  R                  U 5      $ )Nr   r   r\   r^   r¨   rV   )r¸   r°   rB   r0   rª   r}   rA   r±   r   r·   Úload)r   ÚpowerÚadjustÚtÚt3s        r   rÍ   ÚJpeg2KImageFile.loadT  sú   € Ø�9�9˜ŸŸØ˜Ÿ™Ñ%ˆEØ˜a‘ZˆFä�T—Y‘Y˜q‘\ FÑ*¨eÑ3Ó4Ü�T—Y‘Y˜q‘\ FÑ*¨eÑ3Ó4ðˆDŒJð —	‘	˜!‘ˆAÜ˜a ™d¤E×*Ñ*Ð*Ð*Ø�A‘$�q‘'˜4Ÿ<™<¨¯©°a¸±d¸1±g¸qÀ¹tÀA¹wÐGˆBÜ"Ÿš¨¨1©¨v¸¿	¹	Ñ/AÀ1ÀQÁ4ÈÓLÐMˆDŒIä×"Ñ"×'Ñ'¨Ó-Ð-r   )r«   r°   rª   r©   r­   r±   r‡   r¸   )rJ   rK   )rJ   zVCallable[[int | tuple[int, int], tuple[int, int, int, int] | None], Image.Image] | int)r’   rB   rJ   rK   )rJ   zImage.core.PixelAccess | None)rN   rO   rP   rQ   ÚformatÚformat_descriptionr¼   r¬   ÚpropertyrÈ   ÚsetterrÍ   rS   Ú__classcell__)rÉ   s   @r   rŸ   rŸ   ú   sY   ø† Ø€FØ0Ðô2
ôh6ð$ ð	.ð	ö	.ó ð	.ð ‡]�]óó ð÷.ò .r   rŸ   c                ó$   • U R                  S5      $ )N)r£   r¥   )Ú
startswith)Úprefixs    r   Ú_acceptrÛ   f  s   € Ø×ÑØFóð r   c                óÄ  • U R                   n[        U[        5      (       a  UR                  5       nUR	                  S5      (       d  UR                  SS5      (       a  SnOSnUR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  S	S
5      nUR                  SS 5      n	U	b?  [        U	[        [        45      (       a  [        S U	 5       5      (       d  Sn
[        U
5      eUR                  SS5      nUR                  SS 5      nUR                  SS 5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S5      n[        U[        5      (       a  UR                  5       nUR                  SS5      nSn[        US5      (       a   UR                  5       nUUUUU	UUUUUUUUUUU4U l        [        R                  " X[        R                   " SSU R"                  -   SU5      /5        g ! [         a    Sn Nbf = f)Ns   .j2kÚno_jp2Fr¤   r¦   ÚoffsetÚtile_offsetÚ	tile_sizeÚquality_modeÚratesÚquality_layersc              3  óN   #   • U  H  n[        U[        [        45      v •  M     g 7fr+   )r}   rB   Úfloat)Ú.0Úquality_layers     r   Ú	<genexpr>Ú_save.<locals>.<genexpr>‚  s!   é € ð 
ÚIW¸ŒJ�}¤s¬E l×3Ð3Êùs   ‚#%z,quality_layers must be a sequence of numbersÚnum_resolutionsr   Úcodeblock_sizeÚprecinct_sizeÚirreversibleÚprogressionÚLRCPÚcinema_modeÚnoÚmctÚsignedrÂ   Úpltr   r²   r§   r¨   )Úencoderinfor}   rM   Úencoder¯   ÚgetÚlistrA   ÚallÚ
ValueErrorÚhasattrr²   rµ   Úencoderconfigr   Ú_saver·   r0   )Úimr   Úfilenamer®   ÚkindrÞ   rß   rà   rá   rã   r&   rê   Ú	cblk_sizerì   rí   rî   rð   rò   ró   rÂ   rô   rº   s                         r   rý   rý   p  s:  € à�>‰>€Dä�(œC× Ñ Ø—?‘?Ó$ˆØ×Ñ˜×!Ñ! T§X¡X¨h¸×%>Ñ%>Ø‰àˆà�X‰X�h Ó%€FØ—(‘(˜=¨$Ó/€KØ—‘˜ dÓ+€IØ—8‘8˜N¨GÓ4€LØ—X‘XÐ.°Ó5€NØÑ!Ü�>¤D¬% =×1Ñ1Üñ 
ÙIWó
÷ 
ñ 
ð =ˆÜ˜‹oÐà—h‘hÐ0°!Ó4€OØ—‘Ð)¨4Ó0€IØ—H‘H˜_¨dÓ3€MØ—8‘8˜N¨EÓ2€LØ—(‘(˜=¨&Ó1€KØ—(‘(˜=¨$Ó/€KØ
�(‰(�5˜!Ó
€CØ�X‰X�h Ó&€FØ�h‰h�yÓ!€GÜ�'œ3×ÑØ—.‘.Ó"ˆØ
�(‰(�5˜%Ó
 €Cà	€BÜˆr�8×Ñð	Ø—‘“ˆBð
 	ØØØØØØØØØØØØØ
ØØð!€BÔô& ‡O‚O�BœYŸ_š_¨X°vÀÇÁÑ7GÈÈDÓQÐRÕSøô- ó 	ØŠBð	ús   Ç,I ÉIÉI)z.jp2z.j2kz.jpcz.jpfz.jpxz.j2cz	image/jp2)r   rI   rJ   ztuple[tuple[int, int], str])rr   rB   rs   rB   rt   rB   rJ   zfloat | None)r   rI   rJ   zetuple[tuple[int, int], str, str | None, tuple[float, float] | None, ImagePalette.ImagePalette | None])rÚ   rC   rJ   rL   )rþ   zImage.Imager   rI   rÿ   zstr | bytesrJ   rK   )Ú
__future__r   r4   r?   r,   Útypingr   Ú r   r   r   r	   ÚTYPE_CHECKINGÚcollections.abcr
   r   r   rn   ru   r�   rŸ   rÛ   rý   Úregister_openrÓ   Úregister_saveÚregister_extensionsÚregister_mimerT   r   r   Ú<module>r     sà   ðõ  #ã 	Û 	Û Ý ç 5Ó 5à€ÞÝ(Ý÷Gñ GôTô>5ðb.Øðb.ðôb.ôRi.�i×)Ñ)ô i.ôXô@TðN × Ò �O×*Ñ*¨O¸WÔ EØ × Ò �O×*Ñ*¨EÔ 2à × Ò Ø×ÑÒLôð × Ò �O×*Ñ*¨KÕ 8r   