a
    þd|
  ã                   @   s:   d dl Z ddlmZ dd„ Zdd„ Zdd	„ Zddd„ZdS )é    Né   )ÚInvalidImageDataErrorc                 C   s¬   | dd… dkrt dƒ‚d}dg}| ||d … dkrL| | |d… ¡ q¨nFt d| |d |d … ¡d }|| d }| ||… }| |¡ |}|t| ƒkr"t d	ƒ‚q"|S )
ú=Slices JPEG meta data into a list from JPEG binary data.
    r   é   ó   ÿØúGiven data isn't JPEG.s   ÿÚNú>Hé   zWrong JPEG data.)r   ÚappendÚstructÚunpackÚlen)ÚdataÚheadÚsegmentsÚlengthZendPointÚseg© r   úW/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/piexif/_common.pyÚsplit_into_segments   s     

r   c                 C   sä   t | dƒ}| d¡}|dd… dkr,tdƒ‚|dd… }d}d}t|ƒ|krØt d	|dd… ¡d }|dd… d
krª| |d ¡}|dd… dkrž| |¡}q@|| }qØq@|dd… dkrØ| |d ¡ | |¡}q@qØq@| ¡  |S )r   Úrbé   r   r   r   r   r	   Nr   ó   ÿás   Exifr   ó   ÿ)ÚopenÚreadr   r   r   r   Úclose)ÚfilenameÚfr   r   ZHEAD_LENGTHÚexifr   Zsegment_datar   r   r   Úread_exif_from_file   s,    


r    c                 C   s6   | D ],}|dd… dkr|dd… dkr|  S qdS )z*Returns Exif from JPEG meta data list
    r   r   r   r	   é
   ó   Exif  Nr   )r   r   r   r   r   Úget_exif_seg<   s     
r#   ó    c                 C   sú   | d dd… dkrt| d dd… dkrt| d dd… dkrt|rT|| d< |   d¡ qð|d	u rh|   d¡ qð|   d¡ n|| d dd… dkr–|rð|| d< nZ| d dd… dkrà| d dd… dkrà|rÌ|| d< qð|d	u rð|   d¡ n|rð|  d|¡ d
 | ¡S )z2Merges Exif with APP0 and APP1 manipulations.
    r   r   r   s   ÿàr   r	   r!   r"   Nr$   )ÚpopÚinsertÚjoin)r   r   r   r   r   Úmerge_segmentsE   s0    ÿþ
ÿ
r(   )r$   )r   Ú_exceptionsr   r   r    r#   r(   r   r   r   r   Ú<module>   s
   	