§
    œ"²c’  ã                   ó8  — d dl Z d dlZd dlZddlmZmZmZmZmZm	Z	 ddl
mZ ddl
mZ d„ Zd„ Z G d„ d	ej        ¦  «        Z ej        ej        e¦  «          ej        ej        e¦  «          ej        ej        d
¦  «          ej        ej        d¦  «         dS )é    Né   )ÚExifTagsÚImageÚ	ImageFileÚImageSequenceÚJpegImagePluginÚTiffImagePlugin)Úi16be)Úo32lec                 ó2   — t          j        | ||¦  «         d S ©N)r   Ú_save)ÚimÚfpÚfilenames      ú4/usr/lib/python3/dist-packages/PIL/MpoImagePlugin.pyr   r   (   s   € ÝÔ˜"˜b (Ñ+Ô+Ð+Ð+Ð+ó    c           
      ó  — | j                              dg ¦  «        }|s0	 | j        }n# t          $ r d}Y nw xY w|st	          | ||¦  «         d S d}g }t          j        | g|¦  «        D �]1}t          j        |¦  «        D �]}|sÍdt          j
        dd¦  «        z   dz   dz   |j         d	<   |j                              d
¦  «        }	t          |	t          j        ¦  «        r|	                     ¦   «         }	|	|j         d
<   |	r|dt          |	¦  «        z   z  }t!          j        |||¦  «         |                     |                     ¦   «         ¦  «         ŒÒ|                     |d¦  «         |                     |                     ¦   «         |d         z
  ¦  «         �Œ�Œ3t)          j        ¦   «         }
d|
d<   t          |¦  «        |
d<   d}d}t-          |¦  «        D ]<\  }}|dk    rd}nd}|t          j
        d|||dd¦  «        z  }|dk    r||z  }||z  }Œ=||
d<   |                     |¦  «         |                     dt3          d¦  «        z   |
                     d¦  «        z   ¦  «         |                     dt4          j        ¦  «         d S )NÚappend_imagesFé   s   ÿâz>HéX   s   MPF sR                                                                                     ÚextraÚexifé   ÚJPEGéÿÿÿÿs   0100i °  é°  r   r   i   z<LLLHHé°  s   II* é   )ÚencoderinfoÚgetÚis_animatedÚAttributeErrorr   Ú	itertoolsÚchainr   ÚIteratorÚstructÚpackÚ
isinstancer   ÚExifÚtobytesÚlenr   ÚappendÚtellÚsaver	   ÚImageFileDirectory_v2Ú	enumerateÚseekÚwriter   ÚosÚSEEK_END)r   r   r   r   ÚanimatedÚ
mpf_offsetÚoffsetsÚ
imSequenceÚim_framer   ÚifdÚ	mpentriesÚdata_offsetÚiÚsizeÚmptypes                   r   Ú	_save_allrA   ,   s½  € Ø”N×&Ò& ¸Ñ;Ô;€MØð ð	Ø”~ˆHˆHøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøàð 	Ý�"�b˜(Ñ#Ô#Ð#ØˆFà€JØ€GÝ”o r d¨MÑ:Ô:ð 8ñ 8ˆ
Ý%Ô.¨zÑ:Ô:ð 	8ñ 	8ˆHØð 8ð  ¥&¤+¨d°FÑ";Ô";Ñ;¸hÑFÈÑRð Ô$ WÑ-ð  Ô+×/Ò/°Ñ7Ô7�Ý˜d¥E¤JÑ/Ô/ð 8ØŸ<š<™>œ>�DØ37�HÔ(¨Ñ0Øð 0Ø !¥c¨$¡i¤i¡-Ñ/�JåÔ% h°°HÑ=Ô=Ð=Ø—’˜rŸwšw™yœyÑ)Ô)Ð)Ð)à—’˜b &Ñ)Ô)Ð)Ø—’˜rŸwšw™yœy¨7°2¬;Ñ6Ñ7Ô7Ð7Ñ7ñ#	8õ& Ô
/Ñ
1Ô
1€CØ€Cˆ�KÝ�g‘,”,€Cˆ�Kà€IØ€KÝ˜WÑ%Ô%ð ð ‰ˆˆ4Ø�Š6ˆ6ØˆFˆFàˆFØ•V”[ ¨6°4¸ÀaÈÑKÔKÑKˆ	Ø�Š6ˆ6Ø˜:Ñ%ˆKØ�tÑˆˆØ€Cˆ�Kà‡G‚GˆJÑÔÐØ‡H‚Hˆ]�U 1™XœXÑ%¨¯ª°A©¬Ñ6Ñ7Ô7Ð7Ø‡G‚GˆA�rŒ{ÑÔÐÐÐs   Ÿ' §6µ6c                   óR   — e Zd ZdZdZdZd„ Zdd„Zd„ Zd„ Z	d	„ Z
edd
„¦   «         ZdS )ÚMpoImageFileÚMPOzMPO (CIPA DC-007)Fc                 ó    — | j                              d¦  «         t          j                             | ¦  «         |                      ¦   «          d S )Nr   )r   r2   r   ÚJpegImageFileÚ_openÚ_after_jpeg_open©Úselfs    r   rG   zMpoImageFile._openm   sB   € ØŒ�Š�Q‰ŒˆÝÔ%×+Ò+¨DÑ1Ô1Ð1Ø×ÒÑÔÐÐÐr   Nc                 óÈ  ‡ — ‰ j         ‰ _        |�|n‰                      ¦   «         ‰ _        ‰ j        d         ‰ _        ˆ fd„‰ j        d         D ¦   «         ‰ _        d‰ j        d<   ‰ j        t          ‰ j        ¦  «        k    sJ ‚‰ j        d= ‰ j        dk    ‰ _        ‰ j	        ‰ _
        ‰ j
                             ‰ j        d         ¦  «         d‰ _        d‰ _        d‰ _        d S )Nr   c                 ó<   •— g | ]}|d          ‰j         d         z   ‘ŒS )Ú
DataOffsetÚmpoffset)Úinfo)Ú.0ÚmpentrJ   s     €r   ú
<listcomp>z1MpoImageFile._after_jpeg_open.<locals>.<listcomp>v   s7   ø€ ð 
ð 
ð 
Ø<AˆE�,Ô $¤)¨JÔ"7Ñ7ð
ð 
ð 
r   r   r   rN   r   )r?   Ú_initial_sizeÚ_getmpÚmpinfoÚn_framesÚ_MpoImageFile__mpoffsetsr,   rO   r"   r   Ú_fpr2   Ú_MpoImageFile__frameÚoffsetÚreadonly)rJ   Úmpheaders   ` r   rH   zMpoImageFile._after_jpeg_openr   sì   ø€ Ø!œYˆÔØ"*Ð"6�h�h¸D¿KºK¹M¼MˆŒØœ FÔ+ˆŒð
ð 
ð 
ð 
ØEIÄ[ÐQWÔEXð
ñ 
ô 
ˆÔð  ˆÔ˜Ñð Œ}¥ DÔ$4Ñ 5Ô 5Ò5Ð5Ð5Ð5ØŒI�jÐ!Øœ=¨1Ò,ˆÔØ”7ˆŒØŒ�Š�dÔ& qÔ)Ñ*Ô*Ð*ØˆŒØˆŒàˆŒˆˆr   c                 ó:   — | j                              |¦  «         d S r   )rX   r2   )rJ   Úposs     r   Ú	load_seekzMpoImageFile.load_seek†   s   € ØŒ�Š�cÑÔÐÐÐr   c                 ó´  — |                       |¦  «        sd S | j        | _        | j        |         | _        | j                             | j        dz   ¦  «         | j                             d¦  «        }|sd}t          |¦  «        ‚| j        | _	        t          |¦  «        dk    rèt          | j                             d¦  «        ¦  «        dz
  }t          j        | j        |¦  «        | j        d<   |                      ¦   «          | j        d         |         d         d         }|                     d¦  «        rS|                      ¦   «                              t&          j        j        ¦  «        }d	|v rd
|v r|d	         |d
         f| _	        n%d| j        v r| j        d= |                      ¦   «          dd| j        z   | j        | j        dffg| _        || _        d S )Né   zNo data found for frameiáÿ  r   r   Ú	AttributeÚMPTypezLarge Thumbnaili   i   Újpeg)r   r   Ú )Ú_seek_checkrX   r   rW   rZ   r2   ÚreadÚ
ValueErrorrS   Ú_sizeÚi16r   Ú
_safe_readrO   Ú_reload_exifrU   Ú
startswithÚgetexifÚget_ifdr   ÚIFDr*   r?   ÚmodeÚtilerY   )rJ   ÚframeÚsegmentÚmsgÚnr@   r   s          r   r2   zMpoImageFile.seek‰   s­  € Ø×Ò Ñ&Ô&ð 	ØˆFØ”(ˆŒØÔ& uÔ-ˆŒàŒ�Š�T”[ 1‘_Ñ%Ô%Ð%Ø”'—,’,˜q‘/”/ˆØð 	"Ø+ˆCÝ˜S‘/”/Ð!ØÔ'ˆŒ
Ýˆw‰<Œ<˜6Ò!Ð!Ý�D”G—L’L ‘O”OÑ$Ô$ qÑ(ˆAÝ )Ô 4°T´W¸aÑ @Ô @ˆDŒI�fÑØ×ÒÑÔÐà”[ Ô(¨Ô/°Ô<¸XÔFˆFØ× Ò Ð!2Ñ3Ô3ð <Ø—|’|‘~”~×-Ò-­h¬lÔ.?Ñ@Ô@�Ø˜D�=�= U¨d ] ]Ø"& u¤+¨t°E¬{Ð!;�D”JøØ�t”yÐ Ð Ø”	˜&Ð!Ø×ÒÑÔÐà˜f t¤yÑ0°$´+ÀÄ	È2¸ÐOÐPˆŒ	ØˆŒˆˆr   c                 ó   — | j         S r   )rY   rI   s    r   r.   zMpoImageFile.tell¦   s
   € ØŒ|Ðr   c                 óH   — t           | _        |                      |¦  «         | S )aC  
        Transform the instance of JpegImageFile into
        an instance of MpoImageFile.
        After the call, the JpegImageFile is extended
        to be an MpoImageFile.

        This is essentially useful when opening a JPEG
        file that reveals itself as an MPO, to avoid
        double call to _open.
        )rC   Ú	__class__rH   )Újpeg_instancer\   s     r   ÚadoptzMpoImageFile.adopt©   s&   € õ #/ˆÔØ×&Ò& xÑ0Ô0Ð0ØÐr   r   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrG   rH   r_   r2   r.   Ústaticmethodr{   © r   r   rC   rC   g   s•   € € € € € à€FØ,ÐØ(-Ð%ð ð  ð  ð
ð ð ð ð(ð ð ðð ð ð:ð ð ð ðð ð ñ „\ðð ð r   rC   z.mpoz	image/mpo)r$   r4   r'   re   r   r   r   r   r   r	   Ú_binaryr
   rj   r   r   rA   rF   rC   Úregister_saver   Úregister_save_allÚregister_extensionÚregister_mimerƒ   r   r   ú<module>r‰      sX  ðð* Ð Ð Ð Ø 	€	€	€	Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð ð,ð ,ð ,ð4ð 4ð 4ðvPð Pð Pð Pð P�?Ô0ñ Pô Pð Pðt €Ô �LÔ'¨Ñ /Ô /Ð /Ø €Ô ˜Ô+¨YÑ 7Ô 7Ð 7à €Ô ˜Ô,¨fÑ 5Ô 5Ð 5à €Ô �LÔ'¨Ñ 5Ô 5Ð 5Ð 5Ð 5r   