ó
    Eñifz  ã                  óÊ  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
SSK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\(       a  S SKJrJr  SSKJr  S½S jrS½S jrS½S jr S½S jr!S½S jr"0 SSS\!4_SSS\!4_SSS\!4_SSS\!4_SS S!\4_S"S#S$\!4_S%S&S'\!4_S(S)S*\!4_S+S,_S-S.S/\!4_S0S1S2\!4_S3S4S5\!4_S6S7S8\4_S9S:S;\!4_S<S=S>\!4_S?S@SA\!4_SBSC_0 SDSE_SFSG_SHSI_SJSK_SLSM_SNSO_SPSQ_SRSS_STSU_SVSWSX\4_SYSZS[\"4_S\S]S^\4_S_S`Sa\4_SbScSd\!4_SeSfSg\4_ShSiSj\4_SkSlSm\4_E0 SnSoSp\4_SqSrSs\4_StSuSv\4_SwSxSy\4_SzS{S|\4_S}S~S\4_S€S�S‚\4_SƒS„S…\4_S†S‡Sˆ\4_S‰SŠS‹\4_SŒS�SŽ\4_S�S�S‘\4_S’S“S”\4_S•S–S—\4_S˜S™_SšS›_SœS�_ESžSŸS S¡S¢S£S¤S¥S¦S§S¨S©Sª\ 4S«.Er#S¾S¬ jr$ " S­ S\R                  5      r%S¿S® jr&S¿S¯ jr'S°S°S±S±S²S³S´.r(Sµr)S SS¶S·.r*SÀS¸ jr+SÁS¹ jr, SÂ     SÃSº jjr-\R\                  " \%R^                  \-\$5        \R`                  " \%R^                  \,5        \Rb                  " \%R^                  / S»Q5        \Rd                  " \%R^                  S¼5        g)Äé    )ÚannotationsNé   )ÚImageÚ	ImageFile)Úi16be)Úi32be)Úo8)Úo16be)ÚpresetsF)ÚIOÚAny©ÚMpoImageFileÚJpegImageFilec                ó²   • U R                   c   e[        U R                   R                  S5      5      S-
  n[        R                  " U R                   U5        g )Né   )ÚfpÚi16Úreadr   Ú
_safe_read)ÚselfÚmarkerÚns      ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/PIL/JpegImagePlugin.pyÚSkipr   ?   sA   € Ø�7‰7ÑÐÐÜˆD�G‰G�L‰L˜‹OÓ˜qÑ €AÜ×Ò˜Ÿ™ !Õ$ó    c                ó\  • U R                   c   e[        U R                   R                  S5      5      S-
  n[        R                  " U R                   U5      nSUS-   3nX0R
                  U'   U R                  R                  XC45        US:X  a¿  UR                  S5      (       a©  [        US5      =U R                  S'   n[        US5      U R                  S	'    US
   n[        US5      [        US5      4nUS:X  a  XpR                  S'   O%US:X  a  [        S U 5       5      U R                  S'   X`R                  S'   XpR                  S'   g US:X  au  UR                  S5      (       a_  SU R                  ;   a  U R                  S==   USS  -  ss'   g X0R                  S'   U R                   R                  5       U-
  S-   U l        g US:X  a9  UR                  S5      (       a#  UR                  SS5      S   U R                  S'   g US:X  a%  UR                  S5      (       a  X0R                  S'   g US:X  a2  UR                  S5      (       a  U R                   R                  U5        g US:X  aÚ  UR                  S5      (       aÄ  SnU R                  R#                  S 0 5      n	 X8US!-    S":X  a™  US!-  n[        X85      n
US-  nX8   nUSU-   -  nXˆS-  -  n[%        X85      nUS!-  nX8XŒ-    nU
S#:X  a8  [%        US$5      S%-  [        US!5      [%        US5      S%-  [        US&5      S'.Xš'   OXÙU
'   XŒ-  nXˆS-  -  nX8US!-    S":X  a  M˜  g g US(:X  aD  UR                  S)5      (       a.  [        US5      U R                  S*'    US+   nXàR                  S,'   g US:X  aW  UR                  S-5      (       a@  US!S  U R                  S.'   U R                   R                  5       U-
  S!-   U R                  S/'   g g g ! [         a     g f = f! [&        R(                   a     g f = f! [*         a     g f = f)0Nr   ÚAPPé   éàÿ  s   JFIFé   Újfifé   Újfif_versioné   é   é
   r   Údpic              3  ó*   #   • U  H	  oS -  v •  M     g7f)çR¸…ëQ@N© )Ú.0Úds     r   Ú	<genexpr>ÚAPP.<locals>.<genexpr>b   s   é € Ð(Hº<°a¨T®º<ùs   ‚Ú	jfif_unitÚjfif_densityéáÿ  s   Exif  Úexifé   ó   http://ns.adobe.com/xap/1.0/ ó    Úxmpéâÿ  s   FPXR Úflashpixó   ICC_PROFILE éíÿ  s   Photoshop 3.0 é   Ú	photoshopé   s   8BIMií  r   i   é   )ÚXResolutionÚDisplayedUnitsXÚYResolutionÚDisplayedUnitsYéîÿ  s   AdobeÚadobeé   Úadobe_transforms   MPF ÚmpÚmpoffset)r   r   r   r   r   ÚappÚapplistÚappendÚ
startswithÚinfoÚdivmodÚtupleÚ	ExceptionÚtellÚ_exif_offsetÚsplitÚicclistÚ
setdefaultÚi32ÚstructÚerrorÚ
IndexError)r   r   r   ÚsrJ   Úversionr0   r1   Úoffsetr=   ÚcodeÚname_lenÚsizeÚdatarG   s                  r   r   r   E   sü  € ð
 �7‰7ÑÐÐÜˆD�G‰G�L‰L˜‹OÓ˜qÑ €AÜ×Ò˜TŸW™W aÓ(€Aà�˜‘ˆ}Ð
€Cà‡H�HˆS�MØ‡L�L×Ñ˜˜Ô!à�Ó˜AŸL™L¨×1Ñ1ä&)¨!¨Q£iÐ/ˆ�	‰	�&Ñ˜GÜ$*¨7°CÓ$8ˆ�	‰	�.Ñ!ð	5Ø˜!™ˆIÜ˜q !›9¤c¨!¨R£jÐ0ˆLð ˜A‹~Ø#/—	‘	˜%Ò Ø˜a“ä#(Ñ(H¹<Ó(HÓ#H�—	‘	˜%Ñ Ø%.�I‰I�kÑ"Ø(4�I‰I�nÒ%Ø	�6Ó	˜aŸl™l¨;×7Ñ7à�T—Y‘YÓØ�I‰I�fÓ  1 2 Ñ&Ôà !�I‰I�fÑØ $§¡§¡£°Ñ 2°QÑ 6ˆDÕØ	�6Ó	˜aŸl™lÐ+N×OÑOØŸ7™7 7¨AÓ.¨qÑ1ˆ�	‰	�%ÒØ	�6Ó	˜aŸl™l¨9×5Ñ5à !�	‰	�*ÒØ	�6Ó	˜aŸl™lÐ+;×<Ñ<ð 	�‰×Ñ˜AÕØ	�6Ó	˜aŸl™lÐ+?×@Ñ@àˆØ—I‘I×(Ñ(¨°bÓ9ˆ	ð	Ø˜V a™ZÐ(¨GÓ3Ø˜!‘�ä˜1“~�Ø˜!‘�à™9�à˜!˜h™,Ñ&�Ø 1™*Ñ$�ä˜1“~�Ø˜!‘�Ø &¡-Ð0�Ø˜6“>ä'*¨4°£|°eÑ';Ü+.¨t°Q«<Ü'*¨4°£|°eÑ';Ü+.¨t°R«=ñ	'�I’Oð '+˜d‘OØ‘�Ø 1™*Ñ$�ð1 ˜V a™ZÐ(¨G×3ð8 
�6Ó	˜aŸl™l¨8×4Ñ4Ü   A›Yˆ�	‰	�'Ñð	;Ø ™eˆOð ,;�I‰IÐ'Ò(Ø	�6Ó	˜aŸl™l¨8×4Ñ4à˜A˜B˜%ˆ�	‰	�$‰ð !%§¡§¡£°Ñ 2°QÑ 6ˆ�	‰	�*Òð 5Ð	øô[ ó 	Ùð	ûôB �|‰|ó 	Ùð	ûô ó 	Ùð	ús7   ÃO4 Ê'B!P ÎP Ï4
PÐ PÐPÐPÐ
P+Ð*P+c                ó$  • U R                   c   e[        U R                   R                  S5      5      S-
  n[        R                  " U R                   U5      nX0R
                  S'   X0R                  S'   U R                  R                  SU45        g )Nr   ÚcommentÚCOM)	r   r   r   r   r   rN   rJ   rK   rL   )r   r   r   r[   s       r   rd   rd   °   sr   € ð �7‰7ÑÐÐÜˆD�G‰G�L‰L˜‹OÓ˜qÑ €AÜ×Ò˜TŸW™W aÓ(€Aà‡I�IˆiÑØ‡H�HˆU�OØ‡L�L×Ñ˜ ˜
Õ#r   c                óÒ  • U R                   c   e[        U R                   R                  S5      5      S-
  n[        R                  " U R                   U5      n[        US5      [        US5      4U l        U R                  b+  U R                  U R                  R                  :w  a  S U l        US   U l	        U R                  S:w  a  SU R                   S3n[        U5      eUS   U l        U R                  S:X  a  S	U l        OKU R                  S:X  a  S
U l        O3U R                  S:X  a  SU l        OSU R                   S3n[        U5      eUS;   a  S=U R                  S'   U R                  S'   U R                  (       aŠ  U R                  R                  5         U R                  S   S   [!        U R                  5      :X  a0  U R                   Vs/ s H  oUSS  PM	     nnSR#                  U5      nOS nXpR                  S'   / U l        [%        S[!        U5      S5       H;  nX8US-    n	U R&                  R)                  U	S   U	S   S-  U	S   S-  U	S   45        M=     g s  snf )Nr   é   r   r   r&   zcannot handle z-bit layersr!   ÚLÚRGBr>   ÚCMYKz-layer images)éÂÿ  éÆÿ  éÊÿ  éÎÿ  ÚprogressiveÚprogressioné   r<   r   Úicc_profiler4   é   r   )r   r   r   r   r   Ú_sizeÚ_imr`   ÚimÚbitsÚSyntaxErrorÚlayersÚ_moderN   rU   ÚsortÚlenÚjoinÚrangeÚlayerrL   )
r   r   r   r[   ÚmsgÚpÚprofilerq   ÚiÚts
             r   ÚSOFr„   ¼   s  € ð �7‰7ÑÐÐÜˆD�G‰G�L‰L˜‹OÓ˜qÑ €AÜ×Ò˜TŸW™W aÓ(€AÜ�Q˜“œC  1›IÐ%€D„JØ‡x�xÑ §	¡	¨T¯W©W¯\©\Ó 9ØˆŒà�!‘€D„IØ‡y�y�Aƒ~Ø˜tŸy™y˜k¨Ð5ˆÜ˜#ÓÐà�A‘$€D„KØ‡{�{�aÓØˆ�
Ø	�‰˜Ó	Øˆ�
Ø	�‰˜Ó	Øˆ�
à˜tŸ{™{˜m¨=Ð9ˆÜ˜#ÓÐàÐ1Ó1Ø>?Ð?ˆ�	‰	�-Ñ  4§9¡9¨]Ñ#;à‡|‡|à�‰×ÑÔØ�<‰<˜‰?˜2Ñ¤# d§l¡lÓ"3Ó3Ø'+§|¢|Ó4¢| !˜˜“v¡|ˆGÐ4ØŸ(™( 7Ó+‰KàˆKØ#.�	‰	�-Ñ ØˆŒä�1”c˜!“f˜aÖ ˆØ�!�a‘%ˆLˆà�
‰
×Ñ˜1˜Q™4  1¡¨¡¨Q¨q©T°B©Y¸¸!¹Ð=Ö>ò !ùò 5s   ÇI$c                ó`  • U R                   c   e[        U R                   R                  S5      5      S-
  n[        R                  " U R                   U5      n[        U5      (       aÂ  US   nUS-  S:X  a  SOSnSUS-  -   n[        U5      U:  a  Sn[        U5      e[        R                  " US:X  a  SOSUSU 5      n[        R                  S	:X  a  US:”  a  UR                  5         [         V	s/ s H  o˜U	   PM	     sn	U R                  US
-  '   X6S  n[        U5      (       a  MÁ  g g s  sn	f )Nr   r   rr   r   é@   zbad quantization table markerÚBÚHÚlittler   )r   r   r   r   r   r{   rw   ÚarrayÚsysÚ	byteorderÚbyteswapÚzigzag_indexÚquantization)
r   r   r   r[   ÚvÚ	precisionÚ	qt_lengthr   ra   r‚   s
             r   ÚDQTr“   ï   s
  € ð �7‰7ÑÐÐÜˆD�G‰G�L‰L˜‹OÓ˜qÑ €AÜ×Ò˜TŸW™W aÓ(€AÜ
ˆa�&‰&Øˆa‰DˆØ˜r™' Q›,‘A¨Qˆ	Ø˜	 B™Ñ&ˆ	Üˆq‹6�IÓØ1ˆCÜ˜cÓ"Ð"Ü�{Š{ )¨q£.™3°c¸1¸Q¸y¸>ÓJˆÜ�=‰=˜HÓ$¨°Q«Ø�M‰MŒOÝ6BÓ$C²l°¨!¤W±lÑ$Cˆ×Ñ˜!˜b™&Ñ!ØˆjˆMˆô ˆa�&�&ùò %Ds   Ã2D+iÀÿ  ÚSOF0zBaseline DCTiÁÿ  ÚSOF1zExtended Sequential DCTrj   ÚSOF2zProgressive DCTiÃÿ  ÚSOF3zSpatial losslessiÄÿ  ÚDHTzDefine Huffman tableiÅÿ  ÚSOF5zDifferential sequential DCTrk   ÚSOF6zDifferential progressive DCTiÇÿ  ÚSOF7zDifferential spatialiÈÿ  )ÚJPGÚ	ExtensionNiÉÿ  ÚSOF9zExtended sequential DCT (AC)rl   ÚSOF10zProgressive DCT (AC)iËÿ  ÚSOF11zSpatial lossless DCT (AC)iÌÿ  ÚDACz%Define arithmetic coding conditioningiÍÿ  ÚSOF13z Differential sequential DCT (AC)rm   ÚSOF14z!Differential progressive DCT (AC)iÏÿ  ÚSOF15zDifferential spatial (AC)iÐÿ  )ÚRST0z	Restart 0NiÑÿ  )ÚRST1z	Restart 1NiÒÿ  )ÚRST2z	Restart 2NiÓÿ  )ÚRST3z	Restart 3NiÔÿ  )ÚRST4z	Restart 4NiÕÿ  )ÚRST5z	Restart 5NiÖÿ  )ÚRST6z	Restart 6Ni×ÿ  )ÚRST7z	Restart 7NiØÿ  )ÚSOIzStart of imageNiÙÿ  )ÚEOIzEnd of imageNéÚÿ  ÚSOSzStart of scaniÛÿ  r“   zDefine quantization tableiÜÿ  ÚDNLzDefine number of linesiÝÿ  ÚDRIzDefine restart intervaliÞÿ  ÚDHPzDefine hierarchical progressionißÿ  ÚEXPzExpand reference componentr    ÚAPP0zApplication segment 0r2   ÚAPP1zApplication segment 1r8   ÚAPP2zApplication segment 2iãÿ  ÚAPP3zApplication segment 3iäÿ  ÚAPP4zApplication segment 4iåÿ  ÚAPP5zApplication segment 5iæÿ  ÚAPP6zApplication segment 6içÿ  ÚAPP7zApplication segment 7ièÿ  ÚAPP8zApplication segment 8iéÿ  ÚAPP9zApplication segment 9iêÿ  ÚAPP10zApplication segment 10iëÿ  ÚAPP11zApplication segment 11iìÿ  ÚAPP12zApplication segment 12r;   ÚAPP13zApplication segment 13rD   ÚAPP14zApplication segment 14iïÿ  ÚAPP15zApplication segment 15iðÿ  )ÚJPG0zExtension 0Niñÿ  )ÚJPG1zExtension 1Niòÿ  )ÚJPG2zExtension 2N)ÚJPG3zExtension 3N)ÚJPG4zExtension 4N)ÚJPG5zExtension 5N)ÚJPG6zExtension 6N)ÚJPG7zExtension 7N)ÚJPG8zExtension 8N)ÚJPG9zExtension 9N)ÚJPG10zExtension 10N)ÚJPG11zExtension 11N)ÚJPG12zExtension 12N)ÚJPG13zExtension 13Nrd   ÚComment)ióÿ  iôÿ  iõÿ  iöÿ  i÷ÿ  iøÿ  iùÿ  iúÿ  iûÿ  iüÿ  éýÿ  iþÿ  c                ó$   • U R                  S5      $ )Ns   ÿØÿ)rM   )Úprefixs    r   Ú_acceptr×   N  s   € à×Ñ˜_Ó-Ð-r   c                  ó–   ^ • \ rS rSrSrSrSS jrSU 4S jjrSU 4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U =r$ )r   iW  ÚJPEGzJPEG (ISO 10918)c                ó|  • U R                   c   eU R                   R                  S5      n[        U5      (       d  Sn[        U5      eSnS=U l        U l        SU l        / U l        0 U l        0 U l	        0 U l
        0 U l        / U l        / U l         US   nUS:X  a)  XR                   R                  S5      -   n[        U5      nOU R                   R                  S5      nMR  U[        ;   a†  [        U   u  pEnUb  U" X5        US:X  aM  U R                   nU R                   S:X  a  S	n["        R$                  " S
SU R&                  -   SUS45      /U l        OWU R                   R                  S5      nO8US;   a  SnO/US:X  a  U R                   R                  S5      nOSn[        U5      eGM  U R+                  5         g )Nrf   znot a JPEG fileó   ÿr   éÿ   r   r¯   ri   úCMYK;IÚjpeg©r   r   Ú >   r   éÿÿ  i ÿ  zno marker found)r   r   r×   rw   rv   rx   rS   r~   Ú_huffman_dcÚ_huffman_acr�   rJ   rK   rU   r   ÚMARKERÚmoder   Ú_Tiler`   ÚtileÚ_read_dpi_from_exif)r   r[   r   r‚   ÚnameÚdescriptionÚhandlerÚrawmodes           r   Ú_openÚJpegImageFile._open[  s¡  € Ø�w‰wÑ"Ð"Ð"Ø�G‰G�L‰L˜‹Oˆä�q�z‰zØ#ˆCÜ˜cÓ"Ð"Øˆð #$Ð#ˆŒ	�D”KØˆÔð 79ˆŒ
Ø+-ˆÔØ+-ˆÔØ24ˆÔØ%'ˆŒØ02ˆŒØ$&ˆŒàØ�!‘ˆAØ�D‹yØŸ™Ÿ™ Q›Ñ'�Ü˜“F‘ð —G‘G—L‘L “O�Ùà”F‹{Ü-3°A©YÑ*� 7ØÑ&Ù˜DÔ$Ø˜“;Ø"Ÿi™i�GØ—y‘y FÓ*Ø"*˜ä!Ÿš¨°¸¿¹Ñ0BÀAÈÐQSÀ}ÓUð!�D”Ið Ø—G‘G—L‘L “O‘Ø�kÓ!à‘Ø�f“Ø—G‘G—L‘L “O‘à'�Ü! #Ó&Ð&ò? ðB 	× Ñ Õ"r   c                óR   >• [         TU ]  5       U R                  U R                  /-   $ ©N)ÚsuperÚ__getstate__rx   r~   )r   Ú	__class__s    €r   rò   ÚJpegImageFile.__getstate__”  s#   ø€ Ü‰wÑ#Ó%¨¯©°d·j±jÐ(AÑAÐAr   c                óH   >• USS  u  U l         U l        [        TU ]  U5        g )Nr4   )rx   r~   rñ   Ú__setstate__)r   Ústateró   s     €r   rö   ÚJpegImageFile.__setstate__—  s$   ø€ Ø"'¨¨ )ÑˆŒ�T”ZÜ‰Ñ˜UÕ#r   c                óÄ   • U R                   c   eU R                   R                  U5      nU(       d.  [        R                  (       a  [	        U S5      (       d  SU l        gU$ )z{
internal: read more image data
For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
so libjpeg can finish decoding
Ú_endedTs   ÿÙ)r   r   r   ÚLOAD_TRUNCATED_IMAGESÚhasattrrú   )r   Ú
read_bytesr[   s      r   Ú	load_readÚJpegImageFile.load_read›  sN   € ð �w‰wÑ"Ð"Ð"Ø�G‰G�L‰L˜Ó$ˆæ”Y×4×4¼WÀTÈ8×=TÑ=Tð ˆDŒKØàˆr   c                ó  • [        U R                  5      S:w  a  g U R                  (       a  g U R                  S   u  p4pVSnU R                  n[	        U[
        5      (       d   eUS   S:X  a  US;   a
  Xl        US4nU(       aº  [        U R                  S   US   -  U R                  S   US   -  5      nS H
  n	Xy:¼  d  M
    O   Uc   eUS   US   US   US   -
  W	-   S-
  U	-  US   -   US   US   -
  U	-   S-
  U	-  US   -   4nU R                  S   U	-   S-
  U	-  U R                  S   U	-   S-
  U	-  4U l        U	n[        R                  " X4XV5      /U l        US4U l        SSUS   U-  US   U-  4n
U R                  U
4$ )	Nr   r   rh   )rg   ÚYCbCrrà   )r&   r>   r   r   r   rf   )r{   rç   Údecoderconfigr`   Ú
isinstancerP   ry   Úminrs   r   ræ   rå   )r   rå   r`   r-   ÚeÚoÚaÚscaleÚoriginal_sizer[   Úboxs              r   ÚdraftÚJpegImageFile.draft¬  sº  € ô ˆt�y‰y‹>˜QÓØð ××Øà—Y‘Y˜q‘\‰
ˆˆaØˆØŸ	™	ˆä˜!œU×#Ñ#Ð#Ð#ØˆQ‰4�5‹=˜T ^Ó3ØŒJØ�b�ˆAæÜ˜Ÿ	™	 !™¨¨Q©Ñ/°·±¸1±ÀÀaÁÑ1HÓIˆEÛ!�Ø•:Ùñ "ð ‘=Ð �=à�!‘Ø�!‘Ø�1‘˜˜!™‘˜q‘ 1Ñ$¨Ñ*¨Q¨q©TÑ1Ø�1‘˜˜!™‘˜q‘ 1Ñ$¨Ñ*¨Q¨q©TÑ1ð	ˆAð  Ÿ9™9 Q™<¨!Ñ+¨aÑ/°AÑ5¸¿	¹	À!¹ÀqÑ8HÈ1Ñ8LÐQRÑ7RÐSˆDŒJØˆEä—_’_ Q¨1Ó0Ð1ˆŒ	Ø# Q˜ZˆÔà�!�] 1Ñ%¨Ñ-¨}¸QÑ/?À%Ñ/GÐHˆØ�y‰y˜#ˆ~Ðr   c                ó.  • [         R                  " 5       u  p[        R                  " U5        [        R                  R                  U R                  5      (       a$  [        R                  " SSX R                  /5        O$ [        R                  " U5        Sn[        U5      e [        R                  " U5       nUR                  5         UR                  U l        S S S 5         [        R                  " U5        U R                  R                   U l        U R                  R$                  U l        / U l        g ! [         a     N¯f = f! , (       d  f       Ns= f! [         a     Nkf = f!  [        R                  " U5        f ! [         a     f f = f= f)NÚdjpegz-outfilezInvalid Filename)ÚtempfileÚmkstempÚosÚcloseÚpathÚexistsÚfilenameÚ
subprocessÚ
check_callÚunlinkÚOSErrorÚ
ValueErrorr   ÚopenÚloadru   rå   ry   r`   rs   rç   )r   Úfr  r   rt   s        r   Ú
load_djpegÚJpegImageFile.load_djpegÔ  s%  € ô ×"Ò"Ó$‰ˆÜ
�Š�ŒÜ�7‰7�>‰>˜$Ÿ-™-×(Ñ(Ü×!Ò! 7¨J¸¿m¹mÐ"LÕMðÜ—	’	˜$”ð %ˆCÜ˜S“/Ð!ð	Ü—’˜DÔ! SØ—‘”
ØŸ&™&�”÷ "ðÜ—	’	˜$”ð —W‘W—\‘\ˆŒ
Ø—W‘W—\‘\ˆŒ
àˆ�	øô' ó Ùðú÷ "Õ!ûô ó ÙðûðÜ—	’	˜$•øÜó Ùðýsl   ÂD: Â%E+ Â;"E
ÃE+ Ã&E Ä:
EÅEÅ

EÅE+ Å
E(Å'E(Å+FÅ-FÆFÆ
FÆFÆFÆFc                ó   • [        U 5      $ rð   )Ú_getexif©r   s    r   r!  ÚJpegImageFile._getexifó  s   € Ü˜‹~Ðr   c                óÖ  • SU R                   ;   d  SU R                   ;  a  g  U R                  5       nUS   nUS   n [        US   5      US   -  n[        R
                  " U5      (       a  Sn[        U5      eUS:X  a  US	-  nXD4U R                   S'   g ! [         a    Un NRf = f! [        R                  [        [        [        [        [        4 a    S
U R                   S'    g f = f)Nr(   r3   i(  i  r   r   zDPI is not a numberrf   r*   )éH   r%  )rN   ÚgetexifÚfloatÚ	TypeErrorÚmathÚisnanr  rX   rY   ÚKeyErrorrw   ÚZeroDivisionError)r   r3   Úresolution_unitÚx_resolutionr(   r   s         r   rè   Ú!JpegImageFile._read_dpi_from_exifö  sç   € à�D—I‘IÓ ¨t¯y©yÓ!8Øð	&Ø—<‘<“>ˆDØ" 6™lˆOØ ™<ˆLð#Ü˜L¨™OÓ,¨|¸A©Ñ>�ô �zŠz˜#�‰Ø+�Ü  “oÐ%Ø !Ó#à�t‘�Ø"˜xˆD�I‰I�eÒøô ó #Ø"’ð#ûô �L‰LÜÜÜÜÜð
ó 	&ð  &ˆD�I‰I�eÓð	&ús5   £B( ¾B ÁAB( ÂB%Â"B( Â$B%Â%B( Â(=C(Ã'C(c                ó   • [        U 5      $ rð   )Ú_getmpr"  s    r   r1  ÚJpegImageFile._getmp  s   € Ü�d‹|Ðr   )rú   rS   rã   râ   ry   rs   rJ   rK   rv   r  rU   ru   r~   rx   r�   rç   )ÚreturnÚNone)r3  ú	list[Any])r÷   r5  r3  r4  )rý   Úintr3  Úbytes)rå   z
str | Noner`   ztuple[int, int] | Noner3  z0tuple[str, tuple[int, int, float, float]] | None)r3  údict[int, Any] | None)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚformatÚformat_descriptionrí   rò   rö   rþ   r  r  r!  rè   r1  Ú__static_attributes__Ú__classcell__)ró   s   @r   r   r   W  s[   ø† Ø€FØ+Ðô7#÷rB÷$ôð"&Øð&Ø&<ð&à	9ô&ôPô>ô&÷:ò r   c                ó`   • SU R                   ;  a  g U R                  5       R                  5       $ )Nr3   )rN   r&  Ú_get_merged_dictr"  s    r   r!  r!    s&   € Ø�T—Y‘YÓØØ�<‰<‹>×*Ñ*Ó,Ð,r   c           	     ó  •  U R                   S   n[        R                  " U5      nUR	                  S5      nUR                  S5      (       a  SOSnSSKJn   UR                  U5      nUR                  UR                  5        UR                  U5        [        U5      n US	   n
/ n US   n[        U
5       HØ  n[         R"                  " U S3XÍS-  5      nSn[        [%        Xþ5      5      n['        US   S-  5      ['        US   S-  5      ['        US   S-  5      US   S-  S-	  US   S-  S-	  US   S-  S.nUS   S:X  a  SUS'   OSn	[        U	5      eSSSS S!S"S#S$.nUR)                  US%   S&5      US%'   UUS'   UR+                  U5        MÚ     X·S'   U$ ! [         a     g f = f! [         a  nSn	[        U	5      UeS nAff = f! [         a  nS
n	[        U	5      UeS nAff = f! [         a  nS'n	[        U	5      UeS nAff = f)(NrH   r&   s   MM *Ú>Ú<r   )ÚTiffImagePluginz)malformed MP Index (unreadable directory)é°  z(malformed MP Index (no number of images)i°  ÚLLLHHrr   )Ú	AttributeÚSizeÚ
DataOffsetÚEntryNo1ÚEntryNo2rI  l        i   @i    i   é   i   é   iÿÿÿ )ÚDependentParentImageFlagÚDependentChildImageFlagÚRepresentativeImageFlagÚReservedÚImageDataFormatÚMPTyperT  r   rÙ   z!unsupported picture format in MPOÚ	Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)r   i  i  i  i  i  i   rU  ÚUnknownz!malformed MP Index (bad MP Entry))rN   r+  ÚioÚBytesIOr   rM   rà   rF  ÚImageFileDirectory_v2ÚseekÚnextr  ÚdictrQ   rw   r}   rX   Úunpack_fromÚzipÚboolÚgetrL   )r   ra   Úfile_contentsÚheadÚ
endiannessrF  rN   rH   r  r   ÚquantÚ	mpentriesÚrawmpentriesÚentrynumÚunpackedentryÚlabelsÚmpentryÚmpentryattrÚ	mptypemaps                      r   r1  r1    si  € ðØ�y‰y˜‰ˆô —J’J˜tÓ$€MØ×Ñ˜aÓ €DØŸ™Ð(;×<Ñ<‘À#€Jå!ð&Ø×4Ñ4°TÓ:ˆØ×Ñ˜4Ÿ9™9Ô%Ø�	‰	�-Ô Ü�$‹Zˆð
&Ø�6‘
ˆð
 €Ið$&Ø˜&‘zˆÜ˜ežˆHÜ"×.Ò.Ø�,˜eÐ$ l¸r±MóˆMð QˆFÜœ3˜vÓ5Ó6ˆGä,0°¸Ñ1EÈÑ1QÓ,RÜ+/°¸Ñ0DÈÑ0PÓ+QÜ+/°¸Ñ0DÈÑ0PÓ+QØ$ [Ñ1°WÑ=À"ÑDØ$+¨KÑ$8¸GÑ$DÈÑ#KØ! +Ñ.°Ñ;ñˆKð Ð,Ñ-°Ó2Ø17�Ð-Ò.à9�Ü! #Ó&Ð&à%Ø<Ø@Ø8Ø:Ø<Ø5ñˆIð %.§M¡M°+¸hÑ2GÈÓ$SˆK˜Ñ!Ø#.ˆG�KÑ Ø×Ñ˜WÖ%ñ= %ð> ˆ6‰
ð €IøôA ó Ùðûô ó &Ø9ˆÜ˜#Ó AÐ%ûð&ûô ó &Ø8ˆÜ˜#Ó AÐ%ûð&ûôN ó &Ø1ˆÜ˜#Ó AÐ%ûð&ús[   ‚F ÁAF, Â"G Â*C0G, Æ
F)Æ(F)Æ,
G	Æ6GÇG	Ç
G)ÇG$Ç$G)Ç,
H	Ç6HÈH	rg   rh   rÝ   r  )Ú1rg   rh   ÚRGBXri   r  )@r   r   r!   r4   r<   r   rN  é   r   r>   r%   rp   rr   é   é   é*   rf   r&   r?   é   é   é   é)   é+   é	   rF   é   rO  é   é(   é,   é5   r'   é   é   é    é'   é-   é4   é6   é   é   é!   é&   é.   é3   é7   é<   é   é"   é%   é/   é2   é8   é;   é=   é#   é$   é0   é1   é9   é:   é>   é?   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   c                óê   • [        U [        5      (       a  U R                  S;   a  gU R                  S   SS U R                  S   SS -   U R                  S   SS -   n[        R                  US5      $ )N)r   r>   éÿÿÿÿr   r   rf   r   )r  r   rx   r~   Ú	samplingsra  )ru   Úsamplings     r   Úget_samplingr¢  ‰  sl   € ô �bœ-×(Ñ(¨B¯I©I¸Ó,?ØØ�x‰x˜‰{˜1˜QÐ "§(¡(¨1¡+¨a°Ð"2Ñ2°R·X±X¸a±[ÀÀ1Ð5EÑE€HÜ�=‰=˜ 2Ó&Ð&r   c                óÞ
  •  [         U R                     nU R                  nUR                  SS5       Vs/ s H  n[        U5      PM     nnUR                  SS5      n	UR                  SS5      n
UR                  S5      nU	S	:X  a  Sn	S	n
S	nOµU	[        ;   a/  [        U	   nSn	UR                  SS5      n
UR                  S
5      nO|[        U	[        5      (       d  Sn[        U5      eU
[        ;   a  [        U
   R                  SS5      n
[        U[        5      (       a"  U[        ;   a  [        U   R                  S
5      nU
S:X  a  Sn
OIU
S:X  a  Sn
O@U
S:X  a  Sn
O7U
S:X  a  Sn
O.U
S	:X  a(  U R                  S:w  a  Sn[        U5      e[        U 5      n
    S3S jnUS	:X  a*  U R                  S:w  a  Sn[        U5      e[        U S
S 5      nU" U5      nUR                  SS5      nSnUR                  S5      =n(       aK  SnUU-
  n[        U5      U:”  a  Sn[        U5      e[!        SU-   [        U5      -   5      nUSU-   S-   U-   -  nUR                  S5      =n(       a‹  SnUU-
  n/ nU(       a"  UR#                  US U 5        UUS  nU(       a  M"  SnU HQ  n[!        SU-   [        U5      -   5      nUS U-   S!-   [%        U5      -   [%        [        U5      5      -   U-   -  nUS-  nMS     UR                  S"U R&                  R                  S"5      5      nUR                  S#S$5      =(       d    UR                  S%S$5      nUR                  S&S$5      nUR                  S'S5      n[        U[(        R*                  5      (       a  UR-                  5       n[        U5      U:”  a  S(n[        U5      eU	UUR                  S)S5      UUR                  S*S$5      UR                  S+S5      UU
UR                  S,S5      UR                  S-S5      UUUU4U l        U(       d  U(       a²  U R                  S.:X  a#  S/U R0                  S   -  U R0                  S   -  nONU	S0:¼  d  U	S:X  a#  SU R0                  S   -  U R0                  S   -  nOU R0                  S   U R0                  S   -  nU(       a  U[        U5      S1-   -  nU(       a  U[        U5      S-   -  nO$[3        [        U5      S1-   [        U5      S-   5      n[4        R6                  " X[4        R8                  " S2SU R0                  -   SU5      /U5        g ! [         a!  nSU R                   S3n[        U5      UeS nAff = fs  snf )4Nzcannot write mode z as JPEGr(   rß   ÚqualityrŸ  ÚsubsamplingÚqtablesÚkeepr�   zInvalid quality settingz4:4:4r   z4:2:2r   z4:2:0r   z4:1:1rÙ   z3Cannot use 'keep' when original image is not a JPEGc                óÔ  • U c  U $ [        U [        5      (       a�   U R                  5        VVs/ s H9  nUR                  SS5      S   R                  5         H  n[	        U5      PM     M;     nnn[        S[        U5      S5       Vs/ s H	  oCXDS-    PM     n n[        U [        [        [        45      (       aÝ  [        U [        5      (       a.  [        [        U 5      5       Vs/ s H  owU ;   d  M
  X   PM     n nO [        U [        5      (       a  [        U 5      n S[        U 5      s=:  a  S:  d  O  Sn[        U5      e [        U 5       HC  u  p‰[        U	5      S:w  a  Sn[        U5      e[        [        R                  " SU	5      5      X'   ME     U $ g s  snnf s  snf ! [         a  nSn[        U5      UeS nAff = fs  snf ! [         a  nSn[        U5      UeS nAff = f)	NÚ#r   r   r†   zInvalid quantization tabler!   z$None or too many quantization tablesrˆ   )r  ÚstrÚ
splitlinesrT   r6  r}   r{   r  rP   Úlistr]  Ú	enumerater(  rŠ   )
r¦  ÚlineÚnumÚlinesr[   r  r   ÚkeyÚidxÚtables
             r   Úvalidate_qtablesÚ_save.<locals>.validate_qtablesÈ  sÔ  € ð
 ‰?ØˆNÜ�gœs×#Ñ#ð
Pð !(× 2Ñ 2Ô 4ôâ 4˜Ø#Ÿz™z¨#¨qÓ1°!Ñ4×:Ñ:×<˜ô ˜–Há<ñ Ù 4ð ñ ô 7<¸A¼sÀ5»zÈ2Ô6NÓOÒ6N° ¨¡VÓ,Ñ6N�ÐOÜ�g¤¤t¬TÐ2×3Ñ3Ü˜'¤4×(Ñ(ä,1´#°g³,Ô,?óÚ,? SÈ'Á>“L�G”LÑ,?ð ð �ô ˜G¤U×+Ñ+Ü˜w›-�Øœ˜G›Õ( qÕ(Ø<�Ü  “oÐ%ð-Ü"+¨GÖ"4‘J�CÜ˜5“z RÓ'Ø:˜Ü'¨›nÐ,Ü#'¬¯ª°C¸Ó(?Ó#@�G“Lñ	 #5ð ˆNð' 4ùóùò Pøô	 ó -Ø2�Ü  “o¨1Ð,ûð-üòøô ó -Ø2�Ü  “o¨1Ð,ûð-úsT   œF% ¯A FÁ/F% Â
F Ã'	GÃ4GÅAG
 ÆF% Æ%
GÆ/F=Æ=GÇ

G'ÇG"Ç"G'Úextrar   rÔ   r7   rr  zXMP data is too longs   ÿár5   rq   r<   s   ÿâr:   rc   rn   Fro   Úoptimizer3   zEXIF data is too longÚsmoothÚkeep_rgbÚ
streamtypeÚrestart_marker_blocksÚrestart_marker_rowsri   r>   é_   r!   rÞ   )r¦  zKstr | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | Noner3  zlist[list[int]] | None)ÚRAWMODErå   r+  r  Úencoderinfora  Úroundr   r  r6  r  rª  r=  r¢  Úgetattrr{   Úo16rL   r	   rN   r   ÚExifÚtobytesÚencoderconfigr`   Úmaxr   Ú_saveræ   )ru   r   r  rì   r  r   rN   Úxr(   r¤  r¥  r¦  Úpresetr´  r¶  ÚMAX_BYTES_IN_MARKERr7   Úoverhead_lenÚmax_data_bytes_in_markerr`   rq   Úmarkersr‚   r   rc   rn   r·  r3   Úbufsizes                                r   rÇ  rÇ  —  s^  € ð"Ü˜"Ÿ'™'Ñ"ˆð
 �>‰>€Dà!ŸX™X e¨VÔ4Ó
5Ò4˜Œ5�Ž8Ñ4€CÐ
5à�h‰h�y "Ó%€GØ—(‘(˜=¨"Ó-€KØ�h‰h�yÓ!€Gà�&ÓØˆØˆØ‰Ø	”GÓ	Ü˜Ñ!ˆØˆØ—j‘j °Ó3ˆØ—*‘*˜^Ó,‰Ü˜¤×%Ñ%Ø'ˆÜ˜‹oÐàœ'Ó!Ü! +Ñ.×2Ñ2°=À"ÓEˆKÜ�gœs×#Ñ#¨´7Ó(:Ü˜gÑ&×*Ñ*¨>Ó:ˆGà�gÓØ‰Ø	˜Ó	Ø‰Ø	˜Ó	Ø‰Ø	˜Ó	ð ‰Ø	˜Ó	Ø�9‰9˜ÓØGˆCÜ˜S“/Ð!Ü" 2Ó&ˆð&àWð&ð 
 ô	&ðP �&ÓØ�9‰9˜ÓØGˆCÜ˜S“/Ð!Ü˜"˜n¨dÓ3ˆÙ˜wÓ'€Gà�H‰H�W˜cÓ"€EàÐØ�h‰h�u‹oÐ€sÕØˆØ#6¸Ñ#EÐ Üˆs‹8Ð.Ó.Ø(ˆCÜ˜S“/Ð!Ü�1�|Ñ#¤c¨#£hÑ.Ó/ˆØ�˜tÑ#Ð&IÑIÈCÑOÑOˆà—h‘h˜}Ó-Ð-€{Õ-ØˆØ#6¸Ñ#EÐ ØˆÞØ�N‰N˜;Ð'@Ð(@ÐAÔBØ%Ð&>Ð&?Ð@ˆK÷ ˆkð ˆÛˆFÜ�q˜<Ñ'¬#¨f«+Ñ5Ó6ˆDØØØñà"ñ#ô �Q“%ñô ”S˜“\Ó"ñ	#ð
 ññˆEð �‰FŠAñ ð �h‰h�y "§'¡'§+¡+¨iÓ"8Ó9€Gð
 —(‘(˜=¨%Ó0×R°D·H±H¸]ÈEÓ4R€Kà�x‰x˜
 EÓ*€Hà�8‰8�F˜CÓ €DÜ�$œŸ
™
×#Ñ#Ø�|‰|‹~ˆÜ
ˆ4ƒyÐ&Ó&Ø%ˆÜ˜‹oÐð 	ØØ�‰�˜1ÓØØ�‰�˜UÓ#Ø�‰�˜qÓ!ØØØ�‰Ð(¨!Ó,Ø�‰Ð&¨Ó*ØØØØð€BÔö* –;à�7‰7�fÓØ˜"Ÿ'™' !™*‘n r§w¡w¨q¡zÑ1‰Gà˜‹]˜g¨›mØ˜"Ÿ'™' !™*‘n r§w¡w¨q¡zÑ1‰Gà—g‘g˜a‘j 2§7¡7¨1¡:Ñ-ˆGÞØ”s˜4“y 1‘}Ñ$ˆGÞØ”s˜5“z A‘~Ñ%ˆGøô ”c˜$“i !‘m¤S¨£Z°!¡^Ó4ˆä‡O‚OØ
”—’ ¨°"·'±'Ñ)9¸1¸gÓFÐGÈõøôk ó "Ø" 2§7¡7 )¨8Ð4ˆÜ�c‹l Ð!ûð"üò 6s   ‚T< µU*Ô<
U'ÕU"Õ"U'c                óF  • [        X5      n UR                  5       nUbH  US   S:”  a?  UR                   H  u  pEUS:X  d  M  SU;   d  M  Us  $    SSKJn  UR
                  " X#5      nU$ ! [        [        4 a     U$ [         a    [        R                  " S5         U$ f = f)NrG  r   r¶   s    hdrgm:Version="r   zTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r1  rK   ÚMpoImagePluginr   Úadoptr(  rZ   rw   ÚwarningsÚwarn)r   r  ru   ÚmpheaderÚsegmentÚcontentr   s          r   Újpeg_factoryr×  V  sµ   € ô 
�rÓ	$€Bð
Ø—9‘9“;ˆØÑ H¨U¡O°aÓ$7Ø$&§J¤JÑ �Ø˜fÕ$Ð)<ÀÕ)Gà’Iñ %/õ
 5ð ×#Ò# BÓ1ˆBð €Iøô ”zÐ"ó àð €Iô ó 
Ü�Šð.õ	
ð €Ið
ús)   �1A* ÁA* Á
A* ÁA* Á*B Á=B ÂB )z.jfifz.jpez.jpgz.jpegz
image/jpeg)r   r   r   r6  r3  r4  )rÖ   r7  r3  r`  )r   r   r3  r8  )ru   úImage.Imager3  r6  )ru   rØ  r   ú	IO[bytes]r  zstr | bytesr3  r4  rð   )r   rÙ  r  zstr | bytes | Noner3  zJpegImageFile | MpoImageFile)3Ú
__future__r   rŠ   rX  r)  r  rX   r  r‹   r  rÒ  rà   r   r   Ú_binaryr   r   r   rW   r	   r
   rÂ  ÚJpegPresetsr   ÚTYPE_CHECKINGÚtypingr   r   rÐ  r   r   r   rd   r„   r“   rä   r×   r   r!  r1  r¾  rŽ   r   r¢  rÇ  r×  Úregister_openr=  Úregister_saveÚregister_extensionsÚregister_mimer+   r   r   Ú<module>rã     st  ðõD #ã Û 	Û Û 	Û Û Û 
Û Û ç Ý !Ý !Ý Ý !Ý  à€Þßå,ô%ôh7ôV	$ô0?ôfð8@
Ø
ˆV�^ SÐ)ð@
à
ˆVÐ.°Ð4ð@
ð ˆVÐ&¨Ð,ð@
ð ˆVÐ'¨Ð-ð	@
ð
 ˆUÐ*¨DÐ1ð@
ð ˆVÐ2°CÐ8ð@
ð ˆVÐ3°SÐ9ð@
ð ˆVÐ+¨SÐ1ð@
ð Ð&ð@
ð ˆVÐ3°SÐ9ð@
ð ˆWÐ,¨cÐ2ð@
ð ˆWÐ1°3Ð7ð@
ð ˆUÐ;¸TÐBð@
ð ˆWÐ8¸#Ð>ð@
ð ˆWÐ9¸3Ð?ð@
ð  ˆWÐ1°3Ð7ð!@
ð" Ð'ñ#@
ð$ Ð'ð%@
ð& Ð'ð'@
ð( Ð'ð)@
ð* Ð'ð+@
ð, Ð'ð-@
ð. Ð'ð/@
ð0 Ð'ð1@
ð2 Ð+ð3@
ð4 Ð)ð5@
ð6 ˆU�O TÐ*ð7@
ð8 ˆUÐ/°Ð5ð9@
ð: ˆUÐ,¨dÐ3ð;@
ð< ˆUÐ-¨tÐ4ð=@
ð> ˆUÐ5°sÐ;ð?@
ð@ ˆUÐ0°$Ð7ðA@
ðB ˆVÐ,¨cÐ2ðC@
ðD ˆVÐ,¨cÐ2òE@
ðF ˆVÐ,¨cÐ2ðG@
ðH ˆVÐ,¨cÐ2ðI@
ðJ ˆVÐ,¨cÐ2ðK@
ðL ˆVÐ,¨cÐ2ðM@
ðN ˆVÐ,¨cÐ2ðO@
ðP ˆVÐ,¨cÐ2ðQ@
ðR ˆVÐ,¨cÐ2ðS@
ðT ˆVÐ,¨cÐ2ðU@
ðV ˆWÐ.°Ð4ðW@
ðX ˆWÐ.°Ð4ðY@
ðZ ˆWÐ.°Ð4ð[@
ð\ ˆWÐ.°Ð4ð]@
ð^ ˆWÐ.°Ð4ð_@
ð` ˆWÐ.°Ð4ða@
ðb Ð)ðc@
ðd Ð)ðe@
ðf Ð)ñg@
ðh *Ø)Ø)Ø)Ø)Ø)Ø)Ø+Ø+Ø+Ø+Ø�I˜sÐ#ò@
€ôF.ô}�I×'Ñ'ô }ô@-ôIð` 
Ø	ØØØØñ€ð	€ð ØØñ€	ô'ôzð@ 37ðØðØ/ðà!õð< × Ò �M×(Ñ(¨,¸Ô @Ø × Ò �M×(Ñ(¨%Ô 0à × Ò ˜-×.Ñ.Ò0RÔ Sà × Ò �M×(Ñ(¨,Õ 7r   