Ë
    D·j×  ã                  óz  — d dl m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 dd„Zd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«       y)é    )ÚannotationsN)ÚIOé   )ÚImageÚImageSequenceÚJpegImagePluginÚTiffImagePlugin)Úo32lec                ó2   — t        j                  | ||«       y ©N)r   Ú_save)ÚimÚfpÚfilenames      ú`/var/www/html/ai-video-generator/backend/venv/lib/python3.12/site-packages/PIL/MpoImagePlugin.pyr   r   $   s   € Ü×Ñ˜"˜b (Õ+ó    c           
     óª  — | j                   j                  dg «      }|st        | dd«      st        | ||«       y d}g }t	        j
                  | g|«      D �]"  }t        j                  |«      D �]  }|sÊdt        j                  dd«      z   dz   d	z   |j                   d
<   |j                   j                  d«      }t        |t        j                  «      r|j                  «       }||j                   d<   |r|dt        |«      z   z  }t        j                  |||«       |j!                  |j#                  «       «       ŒÐ|j%                  |d«       |j!                  |j#                  «       |d   z
  «       �Œ	 �Œ% t'        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<   |j-                  |«       |j/                  dt1        d«      z   |	j                  d«      z   «       |j-                  dt2        j4                  «       y )NÚappend_imagesÚis_animatedFé   s   ÿâz>HéX   s   MPF sR                                                                                     ÚextraÚexifé   ÚJPEGéÿÿÿÿs   0100i °  é°  r   r   i   z<LLLHHé°  s   II* é   )ÚencoderinfoÚgetÚgetattrr   Ú	itertoolsÚchainr   ÚIteratorÚstructÚpackÚ
isinstancer   ÚExifÚtobytesÚlenr   ÚappendÚtellÚsaver	   ÚImageFileDirectory_v2Ú	enumerateÚseekÚwriter
   ÚosÚSEEK_END)r   r   r   r   Ú
mpf_offsetÚoffsetsÚ
imSequenceÚim_framer   ÚifdÚ	mpentriesÚdata_offsetÚiÚsizeÚmptypes                  r   Ú	_save_allr?   (   s&  € Ø—N‘N×&Ñ& ¸Ó;€MÙ¤¨¨]¸EÔ!BÜˆb�"�hÔØà€JØ€GÜ—o‘o r d¨MÓ:ó 8ˆ
Ü%×.Ñ.¨zÓ:ó 	8ˆHÙð  ¤&§+¡+¨d°FÓ";Ñ;¸hÑFÈÑRð ×$Ñ$ WÑ-ð  ×+Ñ+×/Ñ/°Ó7�Ü˜d¤E§J¡JÔ/ØŸ<™<›>�DØ37�H×(Ñ(¨Ñ0ÙØ !¤c¨$£i¡-Ñ/�Jä×%Ñ% h°°HÔ=Ø—‘˜rŸw™w›yÕ)à—‘˜b &Ô)Ø—‘˜rŸw™w›y¨7°2©;Ñ6Ö7ò#	8ð8ô( ×
/Ñ
/Ó
1€CØ€Cˆ�KÜ�g“,€Cˆ�Kà€IØ€KÜ˜WÓ%ò ‰ˆˆ4Ø�Š6Ø‰FàˆFØ”V—[‘[ ¨6°4¸ÀaÈÓKÑKˆ	Ø�Š6Ø˜:Ñ%ˆKØ�tÑ‰ðð €Cˆ�Kà‡G�GˆJÔØ‡H�Hˆ]œU 1›XÑ%¨¯©°A«Ñ6Ô7Ø‡G�GˆAŒr�{‰{Õr   c                  óR   — e Zd ZdZdZdZdd„Zdd„Zdd„Zdd„Z	dd	„Z
edd
„«       Zy)ÚMpoImageFileÚMPOzMPO (CIPA DC-007)Fc                ó˜   — | j                   j                  d«       t        j                  j	                  | «       | j                  «        y )Nr   )r   r1   r   ÚJpegImageFileÚ_openÚ_after_jpeg_open©Úselfs    r   rE   zMpoImageFile._openc   s1   € Ø�‰�‰�QŒÜ×%Ñ%×+Ñ+¨DÔ1Ø×ÑÕr   Nc                ó  — |�|n| j                  «       | _        | j                  d   | _        | j                  d   D �cg c]  }|d   | j                  d   z   ‘Œ c}| _        d| j                  d<   | j                  t        | j                  «      k(  sJ ‚| j                  d= | j                  dkD  | _        | j                  | _        | j                  j                  | j                  d   «       d| _
        d| _        d| _        y c c}w )Nr   r   Ú
DataOffsetÚmpoffsetr   r   )Ú_getmpÚmpinfoÚn_framesÚinfoÚ_MpoImageFile__mpoffsetsr+   r   r   Ú_fpr1   Ú_MpoImageFile__frameÚoffsetÚreadonly)rH   ÚmpheaderÚmpents      r   rF   zMpoImageFile._after_jpeg_openh   sé   € Ø"*Ð"6‘h¸D¿K¹K»MˆŒØŸ™ FÑ+ˆŒàEIÇ[Á[ÐQWÑEXö
Ø<AˆE�,Ñ $§)¡)¨JÑ"7Ó7ò
ˆÔð  ˆ×Ñ˜Ñð �}‰}¤ D×$4Ñ$4Ó 5Ò5Ð5Ð5Ø�I‰I�jÐ!ØŸ=™=¨1Ñ,ˆÔØ—7‘7ˆŒØ�‰�‰�d×&Ñ& qÑ)Ô*ØˆŒØˆŒàˆ�ùò
s   ¿Dc                ó:   — | j                   j                  |«       y r   )rQ   r1   )rH   Úposs     r   Ú	load_seekzMpoImageFile.load_seek{   s   € Ø�‰�‰�cÕr   c                óÖ  — | j                  |«      sy | j                  | _        | j                  |   | _        | j
                  j                  d«      }d| j
                  v r| j
                  d= | j                  j                  | j                  dz   «       | j                  j                  d«      sd}t        |«      ‚| j                  j                  | j                  «       t        j                  j                  | «       | j
                  j                  d«      |k7  r| j                  «        dd| j                  z   | j                  | j                  d   d   fg| _        || _        y )Nr   é   zNo data found for frameÚjpeg)r   r   r   r   )Ú_seek_checkrQ   r   rP   rS   rO   r!   r1   ÚreadÚ
ValueErrorr   rD   rE   Ú_reload_exifr=   ÚtilerR   )rH   ÚframeÚoriginal_exifÚmsgs       r   r1   zMpoImageFile.seek~   s  € Ø×Ñ Ô&ØØ—(‘(ˆŒØ×&Ñ& uÑ-ˆŒàŸ	™	Ÿ™ fÓ-ˆØ�T—Y‘YÑØ—	‘	˜&Ð!à�‰�‰�T—[‘[ 1‘_Ô%Ø�w‰w�|‰|˜AŒØ+ˆCÜ˜S“/Ð!Ø�‰�‰�T—[‘[Ô!Ü×%Ñ%×+Ñ+¨DÔ1Ø�9‰9�=‰=˜Ó  MÒ1Ø×ÑÔà˜f t§y¡yÑ0°$·+±+¸t¿y¹yÈ¹|ÈBÑ?OÐPÐQˆŒ	Øˆ�r   c                ó   — | j                   S r   )rR   rG   s    r   r-   zMpoImageFile.tell”   s   € Ø�|‰|Ðr   c                ó>   — t         | _        | j                  |«       | 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.
        )rA   Ú	__class__rF   )Újpeg_instancerU   s     r   ÚadoptzMpoImageFile.adopt—   s    € ô #/ˆÔØ×&Ñ& xÔ0ØÐr   )ÚreturnÚNoner   )rX   Úintrj   rk   )rb   rl   rj   rk   )rj   rl   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrE   rF   rY   r1   r-   Ústaticmethodri   © r   r   rA   rA   ^   s@   „ Ø€FØ,ÐØ(-Ð%ó ó
ó&óó,ð òó ñr   rA   z.mpoz	image/mpo)r   zImage.Imager   z	IO[bytes]r   zstr | bytesrj   rk   )Ú
__future__r   r#   r3   r&   Útypingr   Ú r   r   r   r	   Ú_binaryr
   r   r?   rD   rA   Úregister_saverp   Úregister_save_allÚregister_extensionÚregister_mimert   r   r   ú<module>r}      s§   ðõ( #ã Û 	Û Ý ÷ó õ ó,ó/ôlG�?×0Ñ0ô Gðb €× Ñ �L×'Ñ'¨Ô /Ø €× Ñ ˜×+Ñ+¨YÔ 7à €× Ñ ˜×,Ñ,¨fÔ 5à €× Ñ �L×'Ñ'¨Õ 5r   