
    zTi                     "   d dl 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
mZmZ d dlmZ d dlmZ d dlmZ dZdZd	Zd Zd
ZdZdZdZdZdZdZd
d
dddd
d
ddddddZh dZd
ddddZ h dZ!e G d de	             Z"ee#e$ejJ                  f   Z&ee&ee"f   Z' G d de      Z(de'fdZ)d Z*d Z+d Z,d Z-d Z.d  Z/d! Z0d" Z1d# Z2d$ Z3d% Z4d& Z5d' Z6d( Z7d) Z8d* Z9d+d+d+d+d+d,de'd-e:d.e:d/e:d0e:d1e:d2e(fd3Z;d+d4de'd0e:d2e
e<e<f   fd5Z=de'd2e
e<e<f   fd6Z>y)7    N)Decimal)BinaryIO
NamedTupleProtocolTupleUnionruntime_checkable)urlparse)urlopen)ElementTree                     )r   r   r   r   r   r      r   	   
         >      avif   avis   heic   heix   hevc   hevx   mif1   msf1)r   r   r   r   >            c                   4    e Zd ZddedefdZd	dededefdZy)
ReadSeekBinarysizereturnc                      y N )selfr)   s     F/home/agent/.local/lib/python3.12/site-packages/imagesize/imagesize.pyreadzReadSeekBinary.read9           offsetwhencec                      y r,   r-   )r.   r3   r4   s      r/   seekzReadSeekBinary.seek<   r1   r2   N)r   )r   )__name__
__module____qualname__intbytesr0   r6   r-   r2   r/   r(   r(   7   s/     e 3  C r2   r(   c                   p    e Zd ZU dZeed<   dZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   dZeed<   y	)
	ImageInfor   widthheightrotationxdpiydpicolorschannelsN)r7   r8   r9   r>   r:   __annotations__r?   r@   rA   rB   rC   rD   r-   r2   r/   r=   r=   D   sE    E3OFCHcD#ND#NFCHcr2   r=   filepathc                 $   t        | t              r| dfS t        | t              rSt        |       }|j                  dv r:t        |       5 }t        j                  |j                               dfcd d d        S t        | d      dfS # 1 sw Y   xY w)NF)httphttpsTrb)

isinstancer(   strr
   schemer   ioBytesIOr0   open)rF   parsedresponses      r/   
_open_filerS   N   s    (N+(C (#==--" 9hzz(--/2D89 9$%%9 9s   	%BBc                    |t         k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t
        k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t        k(  rt        | dz  dz         S |t        k(  r| d	z  S |t        k(  r| d
z  S |t        k(  r| dz  S | S )Ng5B>g      ?gti0?gd?g
F%u?gK7A?gRQ@gffffff9@   i	  i8c  )_UNIT_KMr:   
_UNIT_100M	_UNIT_10M_UNIT_1M
_UNIT_10CM_UNIT_CM_UNIT_MM_UNIT_0_1MM_UNIT_0_01MM_UNIT_UM)densityunits     r/   _convertToDPIrb   Y   s   x7Y&,--		7X%+,,		7W$s*++		7V#c)**		7U?S())		7T>C'((		7T>C'((		}		~		Nr2   c                 ^   t        j                  d|       }|st        d| z        |j                         \  }}t	        |      }|dk(  rt        |      S |dk(  r#t        |t	        d      z  t	        d      z        S |dk(  r#t        |t	        d      z  t	        d      z        S |d	k(  rt        |t	        d      z        S |d
k(  r#t        |t	        d      z  t	        d      z        S |dk(  r#t        |t	        d      z  t	        d      z        S |dk(  rt        |      S t        d|z        )Nz(\d+(?:\.\d+)?)?([a-z]*)$zunknown length value: %s cm96z2.54mmz25.4inpc6pt72pxzunknown unit type: %s)rematch
ValueErrorgroupsr   float)valuematchedlengthra   s       r/   _convertToPxrv   q   s   hh3U;G3e;<<>>#LFDV_FrzV}	Vgdm+gfo=>>	Vgdm+gfo=>>	Vgdm+,,	Vgdm+gcl:;;	Vgdm+gdm;<<	V}
,t3
44r2   c                 (   d}d}| j                  d       | j                  d      }t        |      }|dk\  r(|d d dv r!	 t        j                  d|dd       \  }}||fS |d	k\  r:|j                  d
      r)|dd dk(  r!	 t        j                  d|dd	       \  }}||fS |dk\  r2|j                  d
      r!	 t        j                  d|dd       \  }}||fS |dk\  rl|j                  d      r[	 | j                  d       t        |        | j                  dd       t        j                  d| j                  d            \  }}||fS |dk\  rO|j                  d      r>| j                  d       	 t        j                  d| j                  d            \  }}||fS |dk\  r|dd dk(  rt        j                  d|d d       d   }|dk  rt        d      | j                  d       | j                  |dz
        t        fdt        D              r)t        |       \  }}}}|dk7  r	|dk7  r||fS t        d      ||fS |dk\  r|j                  d      rt        j                  d|dd       d   }| j                  |       t        j                  d| j                  d            d   }t        |      D ]  }	t        j                  d | j                  d            \  }
}}}|
d!k(  r'|d"k(  rt        |d#z        }n?|dk(  r|}n7t        d$      |
d%k(  r'|d"k(  rt        |d#z        }n|dk(  r|}nt        d&      |dk7  s|dk7  s n |dk(  s|dk(  rt        d'      ||fS |dk\  r|j                  d(      rt        j                  d)|dd       d   }| j                  |       t        j                  d*| j                  d            d   }t        |      D ]H  }	t        j                  d+| j                  d            \  }
}}}|
d!k(  r|}n|
d%k(  r|}|dk7  sB|dk7  sH n |dk(  s|dk(  rt        d'      ||fS |dk\  r|j                  d,      rt        j                  d)|dd       d   }|dk7  rt        d-j                              t        j                  d.|dd       d   }| j                  |       t        j                  d.| j                  d            d   }t        |      D ]H  }	t        j                  d/| j                  d0            \  }
}}}|
d!k(  r|}n|
d%k(  r|}|dk7  sB|dk7  sH n |dk(  s|dk(  rt        d1      ||fS |d2k\  r|j                  d3      s|j                  d4      r| j                  d       | j                  d5      }	 |j                  d6      }t!        j"                  d7|      j%                  d      }t!        j"                  d8|      j%                  d      }t)        |      }t)        |      }||fS |d d d:k(  r|dd d;v r| j                  d       g }	 | j                  d      }|j+                         r#|d<k(  rt        d=      |d>k(  r| j-                          I|j/                         st        d?      |}| j                  d      }|j/                         r'||z  }| j                  d      }|j/                         r'|j1                  t        |             t        |      dk(  rn!| j                  dt2        j4                         |\  }}||fS |j                  d@      r|dd dAk(  r|dd dBk(  r t        j                  dC|dDdE       \  }}||fS |dd dFk(  rHt        j                  dG|d	dH dIz         d   dz   }t        j                  dG|dHdE dIz         d   dz   }||fS |dd dJk(  r@|dKdL }|d   dMz  dz  |d   z  dz   }|d"   dNz  dz  |d   dz  z  |d   dOz  dz	  z  dz   }||fS t        dP      |j                  dQ      rt        j                  dR|dSdD       \  }}||fS # t        j
                  $ r t        d      w xY w# t        j
                  $ r t        d      w xY w# t        j
                  $ r t        d      w xY w# t        j
                  t        f$ r t        d      w xY w# t        j
                  $ r t        d      w xY w# t&        $ r t        d9      w xY w)TNr   r   @   r   r   s   GIF87as   GIF89az<hhzInvalid GIF file      PNG

r         IHDR>LLInvalid PNG filer   r      r   z>HHr   Invalid JPEG file      jP  

0   Invalid JPEG2000 files   ftyp>LzInvalid HEIF filec              3   &   K   | ]  }|v  
 y wr,   r-   ).0brandftyp_payloads     r/   	<genexpr>z_get_size.<locals>.<genexpr>   s     ?u$?s      MM *>Hz>HHLL   r      z?Invalid TIFF file: width column data type should be SHORT/LONG.i  z@Invalid TIFF file: height column data type should be SHORT/LONG.z?Invalid TIFF file: width and/or height IDS entries are missing.   II* z<L<Hz<HHLL   II+ z@Invalid BigTIFF file: Expected offset to be 8, found {} instead.z<Qz<HHQQ   zBInvalid BigTIFF file: width and/or height IDS entries are missing.r   s   <?xmls   <svgi   zutf-8z[^-]width="(.*?)"z[^-]height="(.*?)"zInvalid SVG file   Ps   123456r2   zInvalid Netpbm file   #z&Invalid character found on Netpbm files   RIFFs   WEBPs   VP8 z<HH      s   VP8Xz<I       s   VP8L      ?         zUnsupported WebP file   BMz<ll   )r6   r0   lenstructunpackerrorrp   
startswith_seek_to_jpeg_sofany_HEIF_BRANDS_read_heif_metadataranger:   formatdecodern   searchgroup	Exceptionrv   isspacereadlineisdigitappendosSEEK_CUR)fhandler?   r>   headr)   	ftyp_size_r3   ifdsizeitagdatatypecountdatabytesize_offsetsizesnext_chrbr   s                     @r/   	_get_sizer      s	   FELLO<<Dt9Drzd2Ah"88	1"MM%a<ME6L &=E 
(<=$r"+QXBX	1"MM%b=ME6@ &=y 
(<=	1"MM%a<ME6r &=k 
t{3	2LLOg&LLA"MM%aAMFE^ &=W 
(IJR	6"MM%aAMFEP &=I 
Qq	W,MM$Ra1!4	q=011Q||IM2?,??"5g">E61a{v|f}$011t &=q 
t':;tT!AY/2V--gll1o6q9w 	A)/wR@P)Q&C5$czq=u-E] E$%fggq= .F]!F$%ghh{v|#	$ B;&B,^__B &=A 
t':;tT!AY/2V--gll1o6q9w 	A)/wR@P)Q&C5$cz{v|	 B;&B,^__f &=c 
t':; --d1Qi8;a_ffgmnootT!BZ03V--gll1o6q9w 	A)/wR@P)Q&C5$cz{v|	 B;&B,abbB &=} 
1T__W5MQ||D!	1;;w'DII2D9??BEYY4d;AA!DF U#f%h &=c 
bqT	d1Qi94Q||AH!3 !6774  "##% !IJJD||AH""$ "<<? ""$ LLT#5zQLLR[[)9 : v  &= 
	!d1RjG&;2;'!"MM%b=ME6 &= "R[G#MM$Re(;<Q?!CE]]4bu)<=a@1DF &= "R[G#RAtbyQ&!A$.!3E!r	b(QqTQY7AaD3J1;LMQRRF &=	 455		eT"R[9v&=K || 	1/00	1 || 	1/00	1 || 	1/00	1 j) 	2011	2 || 	6455	6`  	1/00	1sJ    a ?a. 6b -Ab2 /(c Ac< a+.bb/2%cc9<dc                    | j                  d       | j                  d      }|j                  d      sy	 | j                  d      }|s	 y|dk(  r| j                  d      }|dk7  rn|dk(  r9|r|dv r	 y	 t        j                  d| j                  d            d   }|dk  r	 y| j                  |dz
        }|d	k7  s|j                  d
      st        |dd        S # t        j
                  $ r Y yw xY w)Nr   r   r   r   r      )      r         Exif  r   )r6   r0   r   r   r   r   #_read_orientation_from_exif_payload)r   r   marker_startmarker_codesegment_sizepayloads         r/   _read_jpeg_exif_rotationr   =  s   LLO<<?D??;'
||A0 / g%!,,q/Kg% g%
 k-?? 	!==w||A?BL !  ,,|a/0'!););O)L2712;?? || 	 	s   7(C C54C5c                     | j                  d      }|dk(  r| j                  d      }|dk(  r|st        d      |d   }t        j                  d| j                  d            d   dz
  }|dk  rt        d      ||fS )Nr   r   zUnexpected end of JPEG filer   r   r   zInvalid JPEG segment size)r0   rp   r   r   )r   marker_bytemarkerr   s       r/   _read_jpeg_segment_headerr   a  s    ,,q/K

 ll1o 
 677^F==w||A7:Q>La455<r2   c                     d}d}d|cxk  rdk  rn n|t         vs8| j                  |d       t        |       \  }}d|cxk  rdk  s,n /|t         vs8||fS )Nr   r   r      r   )_JPEG_NO_SOF_MARKERSr6   r   )r   
block_sizer   s      r/   r   r   n  sb    JFv%%&8L*LZ#6w?
 v%%&8L*L :r2   c                    t        |       dk  ry| d d }|dk(  rd}n	|dk(  rd}ny	 t        j                  |dz   | d	d       d
   }|dz   t        |       kD  ry	 t        j                  |dz   | ||dz          d
   }|dz   }t	        |      D ]j  }|dz   t        |       kD  r y	 t        j                  |dz   | ||dz          \  }}}	}
|dk(  r&|dk(  r!|	dk(  r|dk(  rt        |
dz        c S |
dz  c S |dz  }l y# t        j                  $ r Y yw xY w# t        j                  $ r Y yw xY w# t        j                  $ r Y  yw xY w)Nr   r   r   s   II<s   MM>Lr   r   Hr   HHLL  r   r   r   i  )r   r   r   r   r   r:   )	exif_dataendian_tokenendianfirst_ifd_offset	ifd_countcursorr   r   r   r   rs   s              r/   r   r   w  s   
9~Ra=Lu		!==#y1~FqI !c)n,MM&3,	:JK[^_K_0`abcd	 !F9 	B;Y'	*0--SYZ`ceZeIf*g'C5% &=X]uz)/33uu}%JEFNJ"	 + <<  <<  || 		s5   C9 "D "$D+9DDD('D(+EEc                     t        |       \  }}}}|dk7  r|S |dk7  r|S | j                  d       | j                         }d}|j                  |      }|dk(  ryt	        ||t        |      z   d        S )Nr   r   r   )r   r6   r0   findr   r   )r   r   property_rotationexif_rotationr   r   starts          r/   _read_heif_exif_rotationr     s    -@-I*Aq
]B  LLO<<>DFIIfE{.tECK4G4H/IJJr2   c              #   <  K   |}|dz   |k  rt        j                  d| ||dz          d   }| |dz   |dz    }d}|dk(  r.|dz   |kD  ry t        j                  d| |dz   |dz          d   }d}n
|dk(  r||z
  }||k  s||z   |kD  ry ||||f ||z  }|dz   |k  ry y w)Nr   r   r   r   r   r|   z>Q)r   r   )r   r   endr3   r)   box_typeheader_sizes          r/   _iter_iso_boxesr     s     F
1*
}}T4vz#:;A>
6A:.19{S ==tFQJv{'CDQGDKQY<D+$!4dHk11$ 1*
s   BBBc                 Z   | j                  d       | j                         }d }t        |dt        |            D ]  \  }}}}|dk(  s|||f} n |y|\  }}}	||	z   dz   }
||z   }d }g }i }i }i }t        ||
|      D ]  \  }}}}||z   }||z   }|dk(  rg||   }|dk(  r+|dz   |k  r#t	        j
                  d||dz   |dz          d   }M|dkD  sS|dz   |k  s\t	        j
                  d	||dz   |dz          d   }|d
k(  r\|dz   |k  rS||   }|dk(  r(t	        j
                  d||dz   |dz          d   }|dz   }n0|dz   |kD  rt	        j
                  d	||dz   |dz          d   }|dz   }t        |      D ]  }|dz   |kD  r 	t	        j
                  d	|||dz          d   }||dz   |dz    }||z   }|dk  s||kD  r E|dk(  r|dz   |k  r|dz   }||   }|dk(  r;|dz   |k  r3t	        j
                  d||dz   |dz          d   }||dz   |dz    }|||<   n?|dk\  r:|dz   |k  r2t	        j
                  d	||dz   |dz          d   }||dz   |dz    }|||<   |} |dk(  rG|dz   |k  r>||   }|dz   }|dz   |kD  r||   dz	  }||   dz  }|dz  }||   dz	  } |dv r||   dz  nd}!|dz  }|dk  r/|dz   |kD  rCt	        j
                  d|||dz          d   }"|dz  }n.|dz   |kD  rrt	        j
                  d	|||dz          d   }"|dz  }t        |"      D ]  }|dk  r0|dz   |kD  r t	        j
                  d|||dz          d   }|dz  }n/|dz   |kD  r t	        j
                  d	|||dz          d   }|dz  }|dv r|dz   |kD  r |dz  }|dz   |kD  r (|dz  }|| z   |kD  r 8| rt        j                  |||| z    d      nd}#|| z  }|dz   |kD  r ht	        j
                  d|||dz          d   }$|dz  }g }%t        |$      D ]  }|dv r|!r||!z   |kD  r nt||!z  }||z   |z   |kD  r nb|rt        j                  ||||z    d      nd}&||z  }|rt        j                  ||||z    d      nd}'||z  }|%j                  |#|&z   |'f        |%s|%||<    .|dk(  s5t        |||      D ]h  \  }(})}*}+|(|+z   },|(|)z   }-|*dk(  rt        t        ||,|-            }/|*dk(  s5|,dz   |-k  s>t        j                  ||,dz   |,dz    d      }.t        |.dz        }/|,dz   }|dz   |-kD  ryt	        j
                  d	|||dz          d   }|dz  }t        |      D ]  }|dz   |-kD  r t	        j
                  d|||dz          d   }|dz  }||   }0|dz  }g }1t        |0      D ]o  }|/rC|dz   |-kD  r nct	        j
                  d|||dz          d   }2|dz  }|1j                  |2dz         H|dz   |-kD  r n ||   }2|dz  }|1j                  |2dz         q |1||<    k  |sy|j                  |t        t        dt        |      dz                     }3dx}4x}5x}6}7|3D ]  }8d|8cxk  rt        |      k  sn ||8dz
     \  }(})}*}+|(|+z   },|*dk(  r.|,dz   |(|)z   k  r#t	        j
                  d||,dz   |,dz          \  }4}5_|*dk(  se|,dz   |(|)z   k  sqt        j                  ||,dz      dz  d      }6 |j                         D ]  \  }}|d k7  r|j                  |g       D ]o  \  }&}'|'dk  r|&|'z   }9|&dk  s|9t        |      kD  r%||&|9 }:dt	        j
                  d	|:d d       d   z   };|;dz   t        |:      kD  r[t        |:|;d        }7|7dk7  so n |7dk7  s n |4|5|6|7fS )!Nr   s   meta)r   r   r   r   r   s   pitmr   r   r   r   s   iinfs   infe   r   r   r   r|   s   ilocr   r   )r   r   bigs   iprps   ipcos   ipmai     r   s   isper~   s   irotr   s   Exif)r6   r0   r   r   r   r   r   r:   
from_bytesr   listboolget_HEIF_IROT_TO_EXIFitemsr   )<r   r   meta_boxr3   r)   r   r   meta_offset	meta_sizemeta_header
meta_startmeta_endprimary_item_id
propertiesassociations
item_typesitem_extentspayload_startpayload_endversionentry_countr   r   
entry_size
entry_type	entry_endinfe_payloadinfe_versionitem_id	item_typeoffset_sizelength_sizebase_offset_size
index_size
item_countbase_offsetextent_countextentsextent_offsetextent_lengthp_offsetp_sizep_typep_headerp_payload_startp_payload_endflagsis_large_indexassoc_count
item_propsrs   target_indexesr>   r?   r@   r   index
extent_end	exif_itemtiff_offsets<                                                               r/   r   r     s=
   LLO<<>DH/>tQD	/R +hwk2H *2'KK{*Q.JY&HOJLJL/>tZQY/Z S;+h,tmw=)G!| 1[ @"(--d=1;L]]^M^6_"`ab"c1!2k!A"(--d=1;L]]^M^6_"`ab"c ]Q%6+%E=)G!|$mmD$}q7HYZIZ2[\]^_&* 1${2$mmD$}q7HYZIZ2[\]^_&*;' #A:+#]]4fVaZ1HI!L
!&1*VaZ8
"Z/	>Y%<(Vb[K-G#)A:L#'#5L#q(\B->)-K"(--d<!;KL[\L\6]"^_`"a$()9,:K$L	.7
7+%*|b/@I/M"(--d<!;KL[\L\6]"^_`"a$():<";L$M	.7
7+"'#(  ]Q%6+%E=)G"Q&FzK'v,!+Kv,-KaKF#F|q029V2C$v,-JaKF{A:+#]]4fVaZ1HI!L
!A:+#]]4fVaZ1HI!L
!:& .4Q;zK/$mmD$vfqj2IJ1MGaKFzK/$mmD$vfqj2IJ1MGaKFf$zK/aKFA:+!,,{:_ocnnT&BR9R-SUZ[uv**A:+%}}T4vz3JKAN!|, QA&(Z!J.<!*,+k9KG`kCNN4v?S3TV[$\qrMk)F`kCNN4v?S3TV[$\qrMk)FNNK-$?#OPQ ,3L)].4^  6EdM[f6g ";2&&("*X"5 (6 1W$!%odO]&[!\Jw&?Q+>-+ONN4!0COVWDW+XZ_`E%)%!)_N,q0FzM1 "(--d6&1*6M"Nq"QKaKF";/ ;!A:5!"(--d6&1*6M"Nq"Q!&*6l!%'
!&{!3 @A-#)A:#=$)(.dDQR
<S(TUV(W &! * 1 1%&. A#)A:#=$)(,V &! * 1 1%$, ?@ 1;W-+;";cS;j !%%otE!S_WXEX<Y7Z[N022E2F2X TU-c*o--7	-B*&&("X-W2!5F9J!J"MM%o6I/\^J^1_`ME6w?Q#6(V:K#K)--d?Q3F.G$.NPRSHT )..0 ,8,<,<Wb,I 	(M=q &6Jq JT$:]:6IfmmD)BQ-@CCKQY/?	+,@WXM"	 B#& &(M11r2   c                    | j                  d       | j                  d      }t        |      dk  ry|j                  d      rd}d}n-|j                  d      rd	}d}n|j                  d
      rd	}d}ny	 |r\t        |      dk  ryt	        j
                  |dz   |dd       d   }|dk7  ryt	        j
                  |dz   |dd       d   }| j                  |       t	        j
                  |dz   | j                  d            d   }t        |      D ]  }| j                  d      }t        |      dk  r yt	        j
                  |dz   |d d       \  }	}
t	        j
                  |dz   |dd       d   }|dd }|	dk(  sm|dk(  ss|
dk(  r!t	        j
                  |dz   |d d       d   c S |
dk(  st	        j
                  |dz   |d d       d   c S  yt	        j
                  |dz   |dd       d   }| j                  |       t	        j
                  |dz   | j                  d            d   }t        |      D ]  }| j                  d      }t        |      dk  r yt	        j
                  |dz   |d d       \  }	}
}|dd }|	dk(  sO|dk(  sU|
dk(  r!t	        j
                  |dz   |d d       d   c S |
dk(  st	        j
                  |dz   |      d   c S  	 y# t        j                  $ r Y yw xY w)Nr   r|   r   r   r   r   Fr   r   r   Tr   r   r   Qr   HHr   r   r   r   r   r   HHL)r6   r0   r   r   r   r   r   r   )r   r   r   
is_bigtiffbytesize
ifd_offsetr  r   entryr   r   r   value_fields                r/   _read_tiff_rotationr2    s   LLO<<D
4y1}z"
		$
		$
'4y2~}}Vc\4!9=a@H1}v|T!BZ@CJLL$ --gll1oFqIK;' OR(u:? &ftmU2AY GXfslE!BK@C#Brl#:%1*1}%}}Vc\;r?KANN1}%}}Vc\;r?KANNO ]]6C<a;A>
Z mmFSL',,q/B1E{# 
	GALL$E5zB#)==%r#K C5"+Kczeqjq=!==#{2AGJJq=!==#{CAFF
	G  << so   6K $K -B	K 7AK  K %K ,K 2 K K B	K *K 
K %K 6K <K K K32K3c                 `    t        |       }|dk7  r|S t        |       }|dk7  r|S t        |       S )Nr   )r   r   r2  )r   r@   s     r/   _get_rotationr4    s9    '0H2~'0H2~w''r2   c                 
    | dv S )N>   r   r   r   r   r-   )r@   s    r/   _is_rotation_swappedr6    s    |##r2   c                    d}d}| j                  d       | j                  d      }t        |      }|dk\  r|d d dv r	 ||fS |dk\  r|j                  d      rd}|dd  }	 |d
d }|dk(  rJ	 t	        j
                  d|dd        \  }}	}
|
r!t        |t              }t        |	t              }n|}|	}	 ||fS |dk(  r	 ||fS 	 t	        j
                  d|dd
       \  }||dz   z  }| j                  |       | j                  d      }|dk\  r|j                  d      r	 | j                  d       d}d}d|cxk  rdk  sn | j                  |d       t        |       \  }}|dk(  rp| j                  dd       t	        j
                  d| j                  d            \  }
}}	|
dk(  s|
dk(  r|}|	}n%|
dk(  r t        |t              }t        |	t              }nd|cxk  rdk  sn ||fS |dk\  rj|j                  d      rX| j                  d       t	        j
                  d| j                  d
            d   dz
  }| j                  d
d       d}	 |dkD  r^| j                  d      }|d
d  }|dk(  rd	}|dz  }n;t	        j
                  d|d d
       \  }| j                  |dz
  d       ||z  }|dkD  r^|r|dkD  r| j                  d      }|d
d  }|d k(  rCt	        j
                  d!| j                  d            \  }	}}}t        ||      }t        |	|      }n;t	        j
                  d|d d
       \  }| j                  |dz
  d       ||z  }|dkD  r||fS ||fS # t        j                  $ r t        d      w xY w# t        j                  $ r t        d      w xY w# t        j                  t        f$ r t        d      w xY w# t        j                  $ r t        d"      w xY w)#Nr   r   rz   r   r   ry   r{   r   Tr   s   pHYsz>LLBr   s   IDATr   r      r   r   r   r   r      r   z>BHHr   r   r       Fs   res s   resdz>HHBBr   )r6   r0   r   r   r   r   r   rp   rb   rY   r   r[   )r   xDPIyDPIr   r)   chunkOffsetchunk	chunkTypexDensityyDensityra   dataSizer   r   
headerSizefoundResBox	boxHeaderboxTypeboxSizeyUnitxUnits                        r/   _get_dpirJ    sL   DDLLO<<Dt9D rzd2Ah"88f :c 
(<=QRa
IG#9/5}}VU12Y/O,Hh (8<D(8<D#D#DB :A g%~ :{9 &dE!AJ ?IH x"},[)R(/ 2 
t{3	2LLOJFf,,Z+%>w%G"
T>LLA&/5}}VW\\RS_/U,D(HqyDAI'',Xx@,Xx@ f,,` :A 
(IJR]]4a9!<q@
Q	6q.#LLO	#AB-g%"&K!OJ!==y!}=Wq[!,g%
 q.  1n 'QI'mG');A==RYR^R^_aRb;c8(E5,Xu=,Xu=%}}T9Ra=AHGLL1a0')J !1n :4:S || 9$%7889 || 9$%78890 j) 	2011	2@ || 	6455	6s?   ,M  M= CN  N A"O 3BO M:=N%OO&c                 J   d}| j                  d       | j                  d      }t        |      dk\  r|d d dv r|d   }|dz  rd	|d
z  dz   z  }|S t        |      dk\  rD|j                  d      r3|dd dk(  r+|d   }|d   }ddddddj	                  |      }|rd	||z  z  }|S )Nr   r   r:  r   r   ry   r      r   r   r   r   r{   r   r|   r}   rz   r   r   r   r   r   r   r   )r6   r0   r   r   r   )r   rC   r   packed	bit_depth
color_typerD   s          r/   _get_colorsrQ  ;  s    FLLO<<D
4yB48'==bD=FTMQ./F M 
TbT__-ABtBr{V]G]H	"X

 #j/ 	 9x/0FMr2   c                    d}| j                  d       | j                  d      }t        |      }|dk\  r8|j                  d      r'|dd dk(  r|d	   }d
dd
dddj	                  |d      }|S |dk\  rj|j                  d      rY	 | j                  d       t        |        | j                  dd
       t        j                  d| j                  d
            d   }|S |dk\  r|d d dv rd}|S |dk\  rF|j                  d      r5t        j                  d|dd       d   }|dk  rd
}|S |dk(  rd}|S |dk(  rd}|S # t        j                  t        f$ r t        d      w xY w)Nr   r   r:  r   r{   r   r|   r}   r   r   r   r   r   rM  r   r   z>Br   r   r   ry   r   r      r   r   rz   )
r6   r0   r   r   r   r   r   r   r   rp   )r   rD   r   r)   rP  rO  s         r/   _get_channelsrT  R  s   HLLO<<Dt9Drzdoo&:;Rw@V"X

 #j"
 	4 O' 
t{3	2LLOg&LLA}}T7<<?;A>H O 
Ra$:: O 
.MM$R4Q7	>H O "_H O "_HO j) 	2011	2s   AD9 9%ETr)   dpirC   r   rD   r)   rV  rC   r   rD   r*   c          	      b   t        |       \  }}	 dx}x}	x}
x}x}x}}|r*t        |      \  }}	t        |      }
|rt        |
      r|	|}	}|rt	        |      \  }}|rt        |      }|rt        |      }t        ||	|
||||      |r|j                          S S # |r|j                          w w xY w)Nr   )r>   r?   r@   rA   rB   rC   rD   )	rS   r   r4  r6  rJ  rQ  rT  r=   close)rF   r)   rV  rC   r   rD   r   should_closer>   r?   r@   rA   rB   color_countchannel_counts                  r/   get_infor\  x  s    &x0G\PRRRRRDR4R+%g.ME6$W-H!5h!? &v!'*JD$%g.K)'2MuVhTX\ep  |I  JMMO <MMO s   A5B B.)r   c                t    	 t        | ddd|d      }|j                  |j                  fS # t        $ r Y yw xY w)z
    Return (width, height) for a given img file content.
    Set exif_rotation=False to return stored dimensions as-is.
    :type filepath: Union[bytes, str, pathlib.Path]
    :rtype Tuple[int, int]
    TFrU  r   r   )r\  r   r>   r?   )rF   r   infos      r/   r   r     sF    tuTalqr ::t{{""  s   + 	77c                 p    	 t        | ddd      }|j                  |j                  fS # t        $ r Y yw xY w)z
    Return (x DPI, y DPI) for a given img file content
    no requirements
    :type filepath: Union[bytes, str, pathlib.Path]
    :rtype Tuple[int, int]
    FT)r)   rV  rC   r^  )r\  r   rA   rB   )rF   r_  s     r/   getDPIra    s@    u$uE 99dii  s   ) 	55)?rN   r   rn   r   decimalr   typingr   r   r   r   r   r	   urllib.parser
   urllib.requestr   	xml.etreer   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   
_UNIT_INCH_TIFF_TYPE_SIZESr   r   r   r(   rL   r;   PathLike	PathInput	FileInputr=   rS   rb   rv   r   r   r   r   r   r   r   r   r2  r4  r6  rJ  rQ  rT  r   r\  r:   r   ra  r-   r2   r/   <module>rl     s   	 	 	   R R ! " !
	

   		  *  X   #ubkk)*	)X~56	
 & &052pf!H
 "JK &M2`;|($]@.#L 37DY]#'$y 4 T RV  37CL, 7; #) #t #uS#X # Y  5c?  r2   