§
    aÒ³g=6  ã                  ó|  — 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	 ddl
mZmZmZmZ  G d„ d¦  «        Zd$d„Zd%d„Zd&d„Z G d„ dej        ¦  «        Zd'd„Zd(d!„Z ej        ej        ee¦  «          ej        ej        e¦  «          ej        ej        g d"¢¦  «          ej        ej        d#¦  «         dS ))é    )ÚannotationsN)ÚCallable)ÚIOÚcasté   )ÚImageÚ	ImageFileÚImagePaletteÚ_binaryc                  óL   — e Zd ZdZddd	„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )Ú	BoxReaderz}
    A small helper class to read fields stored in JPEG2000 header boxes
    and to easily step into and read sub-boxes.
    éÿÿÿÿÚfpú	IO[bytes]ÚlengthÚintÚreturnÚNonec                óF   — || _         |dk    | _        || _        d| _        d S )Nr   r   )r   Ú
has_lengthr   Úremaining_in_box)Úselfr   r   s      úS/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/PIL/Jpeg2KImagePlugin.pyÚ__init__zBoxReader.__init__!   s)   € ØˆŒØ  Aš+ˆŒØˆŒØ "ˆÔÐÐó    Ú	num_bytesÚboolc                óŽ   — | j         r'| j                             ¦   «         |z   | j        k    rdS | j        dk    r|| j        k    S dS )NFr   T)r   r   Útellr   r   )r   r   s     r   Ú	_can_readzBoxReader._can_read'   sM   € ØŒ?ð 	˜tœwŸ|š|™~œ~°	Ñ9¸D¼KÒGÐGà�5ØÔ  AÒ%Ð%à Ô 5Ò5Ð5à�4r   Úbytesc                ó,  — |                       |¦  «        sd}t          |¦  «        ‚| j                             |¦  «        }t	          |¦  «        |k     r%d|› dt	          |¦  «        › d�}t          |¦  «        ‚| j        dk    r| xj        |z  c_        |S )NzNot enough data in headerzExpected to read z bytes but only got ú.r   )r    ÚSyntaxErrorr   ÚreadÚlenÚOSErrorr   )r   r   ÚmsgÚdatas       r   Ú_read_byteszBoxReader._read_bytes1   sž   € Ø�~Š~˜iÑ(Ô(ð 	#Ø-ˆCÝ˜cÑ"Ô"Ð"àŒw�|Š|˜IÑ&Ô&ˆÝˆt‰9Œ9�yÒ Ð ØQ iÐQÐQÅSÈÁYÄYÐQÐQÐQˆCÝ˜#‘,”,ÐàÔ  1Ò$Ð$ØÐ!Ô! YÑ.Ð!Ô!Øˆr   Úfield_formatÚstrútuple[int | bytes, ...]c                ó~   — t          j        |¦  «        }|                      |¦  «        }t          j        ||¦  «        S ©N)ÚstructÚcalcsizer*   Úunpack)r   r+   Úsizer)   s       r   Úread_fieldszBoxReader.read_fields?   s6   € ÝŒ˜|Ñ,Ô,ˆØ×Ò Ñ%Ô%ˆÝŒ}˜\¨4Ñ0Ô0Ð0r   c                ó~   — | j         }|                      |¦  «        }t          t          j        |¦  «        |¦  «        S r/   )r   r*   r   ÚioÚBytesIO)r   r3   r)   s      r   Ú
read_boxeszBoxReader.read_boxesD   s7   € ØÔ$ˆØ×Ò Ñ%Ô%ˆÝ�œ DÑ)Ô)¨4Ñ0Ô0Ð0r   c                óh   — | j         r*| j                             ¦   «         | j        z   | j        k     S dS )NT)r   r   r   r   r   )r   s    r   Úhas_next_boxzBoxReader.has_next_boxI   s0   € ØŒ?ð 	Ø”7—<’<‘>”> DÔ$9Ñ9¸D¼KÒGÐGà�4r   c                óÜ  — | j         dk    r*| j                             | j         t          j        ¦  «         d| _         t          t          t          t          f         |  	                    d¦  «        ¦  «        \  }}|dk    r1t          t          |  	                    d¦  «        d         ¦  «        }d}nd}||k     s|  
                    ||z
  ¦  «        sd}t          |¦  «        ‚||z
  | _         |S )	Nr   r   z>I4sr   z>Qé   é   zInvalid header length)r   r   ÚseekÚosÚSEEK_CURr   Útupler   r!   r4   r    r$   )r   ÚlboxÚtboxÚhlenr(   s        r   Únext_box_typezBoxReader.next_box_typeO   s×   € àÔ  1Ò$Ð$ØŒG�LŠL˜Ô.µ´Ñ<Ô<Ð<Ø "ˆÔõ �%¥¥U 
Ô+¨T×-=Ò-=¸fÑ-EÔ-EÑFÔF‰
ˆˆdØ�1Š9ˆ9Ý�˜T×-Ò-¨dÑ3Ô3°AÔ6Ñ7Ô7ˆDØˆDˆDàˆDà�$Š;ˆ;˜dŸnšn¨T°D©[Ñ9Ô9ˆ;Ø)ˆCÝ˜cÑ"Ô"Ð"à $ t¡ˆÔØˆr   N)r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r!   )r+   r,   r   r-   )r   r   )r   r   )r   r!   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r*   r4   r8   r:   rE   © r   r   r   r      s¯   € € € € € ðð ð
#ð #ð #ð #ð #ðð ð ð ðð ð ð ð1ð 1ð 1ð 1ð
1ð 1ð 1ð 1ð
ð ð ð ðð ð ð ð ð r   r   r   r   r   útuple[tuple[int, int], str]c                ó¨  — |                       d¦  «        }t          j        |¦  «        }||                       |dz
  ¦  «        z   }t          j        d|¦  «        \  }}}}}}}	}	}	}	}
||z
  ||z
  f}|
dk    r.t          j        d|d¦  «        }|d         dz  dz   dk    rd	}n/d
}n,|
dk    rd}n#|
dk    rd}n|
dk    rd}nd}t          |¦  «        ‚||fS )z‹Parse the JPEG 2000 codestream to extract the size and component
    count from the SIZ marker segment, returning a PIL (size, mode) tuple.é   z>HHIIIIIIIIHr   z>Bé&   r   é   r=   úI;16ÚLÚLAé   ÚRGBé   ÚRGBAz"unable to determine J2K image mode)r%   r   Úi16ber0   Úunpack_fromr$   )r   ÚhdrÚlsizÚsizÚrsizÚxsizÚysizÚxosizÚyosizÚ_Úcsizr3   ÚssizÚmoder(   s                  r   Ú_parse_codestreamre   e   s  € ð �'Š'�!‰*Œ*€CÝŒ=˜ÑÔ€DØ
�—’˜˜q™Ñ!Ô!Ñ
!€CÝ=CÔ=OØ˜ñ>ô >Ñ:€Dˆ$��d˜E 5¨!¨Q°°1°dð �5‰L˜$ ™,Ð'€DØˆq‚y€yÝÔ! $¨¨RÑ0Ô0ˆØ�ŒG�d‰N˜aÑ !Ò#Ð#ØˆDˆDàˆDˆDØ	�ŠˆØˆˆØ	�ŠˆØˆˆØ	�ŠˆØˆˆà2ˆÝ˜#ÑÔÐà�ˆ:Ðr   Únumr   ÚdenomÚexpúfloat | Nonec                ó4   — |dk    rdS d| z  d|z  z  d|z  z  S )zµConvert JPEG2000's (numerator, denominator, exponent-base-10) resolution,
    calculated as (num / denom) * 10^exp and stored in dots per meter,
    to floating-point dots per inch.r   Néþ   é
   i'  rJ   )rf   rg   rh   s      r   Ú_res_to_dpirm   „   s.   € ð �‚z€zØˆtØ�#‰I˜˜S™Ñ! e¨e¡mÑ4Ð4r   úetuple[tuple[int, int], str, str | None, tuple[float, float] | None, ImagePalette.ImagePalette | None]c                ó†  — t          | ¦  «        }d}d}|                     ¦   «         rj|                     ¦   «         }|dk    r|                     ¦   «         }n;|dk    r!|                     d¦  «        d         dk    rd}|                     ¦   «         °j|€J ‚d}d}d}d}d}	d}
|                     ¦   «         �rp|                     ¦   «         }|dk    rž|                     d	¦  «        \  }}}}t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚||f}|d
k    r|dz  dk    rd}�nË|d
k    rd}�nÁ|dk    rd}�n·|dk    rd}�n­|dk    rd}�n£|dk    r0|dk    r*|                     d¦  «        \  }}}}|d
k    r|dk    rd}�nm|dk    �r8|dv �r3|                     d¦  «        \  }}t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚d}|                     dd|z  z   ¦  «        D ]!}t          |t          ¦  «        sJ ‚||k    r|}Œ"|dk    r¦t          j        |dk    rdnd¦  «        }
t          |¦  «        D ]p}g }|                     dd|z  z   ¦  «        D ].}t          |t          ¦  «        sJ ‚| 	                    |¦  «         Œ/|
 
                    t          |¦  «        ¦  «         Œq|dk    rdnd}�n.|d k    �r'|                     ¦   «         }|                     ¦   «         rÿ|                     ¦   «         }|d!k    rÑ|                     d"¦  «        \  }}}}}}t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |||¦  «        }t          |||¦  «        } |�| �|| f}	n|                     ¦   «         °ÿ|                     ¦   «         �°p|�|€d#}!t          |!¦  «        ‚||||	|
fS )$zªParse the JP2 header box to extract size, component count,
    color space information, and optionally DPI information,
    returning a (size, mode, mimetype, dpi) tuple.Ns   jp2hs   ftypz>4sr   s   jpx z	image/jpxs   ihdrz>IIHBr   rO   r=   rP   rQ   rM   rR   rS   rT   rU   rV   s   colrz>BBBIé   ÚCMYKs   pclr)rQ   rR   z>HBú>ÚBÚPÚPAs   res s   rescz>HHHHBBzMalformed JP2 header)r   r:   rE   r8   r4   Ú
isinstancer   r
   ÚrangeÚappendÚgetcolorrA   rm   r$   )"r   ÚreaderÚheaderÚmimetyperC   r3   rd   ÚbpcÚncÚdpiÚpaletteÚheightÚwidthÚmethra   ÚenumcsÚneÚnpcÚmax_bitdepthÚbitdepthÚiÚcolorÚvalueÚresÚtresÚvrcnÚvrcdÚhrcnÚhrcdÚvrceÚhrceÚhresÚvresr(   s"                                     r   Ú_parse_jp2_headerr–   �   sè  € õ �r‰]Œ]€FØ€FØ€HØ
×
Ò
Ñ
Ô
ð 'Ø×#Ò#Ñ%Ô%ˆà�7Š?ˆ?Ø×&Ò&Ñ(Ô(ˆFØØ�WŠ_ˆ_Ø×!Ò! %Ñ(Ô(¨Ô+¨wÒ6Ð6Ø&�ð ×
Ò
Ñ
Ô
ð 'ð ÐÐÐà€DØ€DØ
€CØ	€BØ
€CØ€Gà
×
Ò
Ñ
Ô
ñ 9Ø×#Ò#Ñ%Ô%ˆà�7Š?ˆ?Ø%+×%7Ò%7¸Ñ%@Ô%@Ñ"ˆF�E˜2˜sÝ˜f¥cÑ*Ô*Ð*Ð*Ð*Ý˜e¥SÑ)Ô)Ð)Ð)Ð)Ý˜c¥3Ñ'Ô'Ð'Ð'Ð'Ø˜6�?ˆDØ�QŠwˆw˜C $™J¨!Ò+Ð+Ø�‘Ø�q’�Ø�‘Ø�q’�Ø�‘Ø�q’�Ø�‘Ø�q’�Ø�ùØ�WŠ_ˆ_  q¢ Ø!'×!3Ò!3°GÑ!<Ô!<ÑˆD�!�Q˜Ø�qŠyˆy˜V rš\˜\Ø�ùØ�WŠ_‰_ ¨Ð!4Ñ!4Ø×(Ò(¨Ñ/Ô/‰GˆB�Ý˜b¥#Ñ&Ô&Ð&Ð&Ð&Ý˜c¥3Ñ'Ô'Ð'Ð'Ð'ØˆLØ"×.Ò.¨s°c¸C±iÑ/@ÑAÔAð ,ð ,�Ý! (­CÑ0Ô0Ð0Ð0Ð0Ø˜lÒ*Ð*Ø#+�LøØ˜qÒ Ð Ý&Ô3¸cÀQºh¸h°F°FÈEÑRÔR�Ý˜r™œð 3ð 3�AØ')�EØ!'×!3Ò!3°C¸3À¹9Ñ4EÑ!FÔ!Fð ,ð ,˜Ý)¨%µÑ5Ô5Ð5Ð5Ð5ØŸš UÑ+Ô+Ð+Ð+Ø×$Ò$¥U¨5¡\¤\Ñ2Ô2Ð2Ð2Ø" cšk˜k�s�s¨t�ùØ�WŠ_‰_Ø×#Ò#Ñ%Ô%ˆCØ×"Ò"Ñ$Ô$ð Ø×(Ò(Ñ*Ô*�Ø˜7’?�?Ø9<¿ºÈÑ9SÔ9SÑ6�D˜$  d¨D°$Ý% d­CÑ0Ô0Ð0Ð0Ð0Ý% d­CÑ0Ô0Ð0Ð0Ð0Ý% d­CÑ0Ô0Ð0Ð0Ð0Ý% d­CÑ0Ô0Ð0Ð0Ð0Ý% d­CÑ0Ô0Ð0Ð0Ð0Ý% d­CÑ0Ô0Ð0Ð0Ð0Ý& t¨T°4Ñ8Ô8�DÝ& t¨T°4Ñ8Ô8�DØÐ'¨DÐ,<Ø# T˜l˜Øð ×"Ò"Ñ$Ô$ð ðW ×
Ò
Ñ
Ô
ñ 9ðv €|�t�|Ø$ˆÝ˜#ÑÔÐà��x  gÐ-Ð-r   c                  ór   ‡ — e Zd ZdZdZdd„Zdd„Zedˆ fd„¦   «         Zej	        dd„¦   «         Zdd„Z
ˆ xZS )ÚJpeg2KImageFileÚJPEG2000zJPEG 2000 (ISO 15444)r   r   c           
     ó  — | j                              d¦  «        }|dk    r>d| _        t          | j         ¦  «        \  | _        | _        |                      ¦   «          �n|| j                              d¦  «        z   }|dk    rÛd| _        t          | j         ¦  «        }|\  | _        | _        | _        }| _	        |�
|| j
        d<   | j                              d¦  «                             d	¦  «        rj| j                              d
¦  «        }t          j        |¦  «        }| j                              |d
z
  t          j        ¦  «         |                      ¦   «          nd}t#          |¦  «        ‚d| _        d| _        d}d}	 | j                              ¦   «         }t          j        |¦  «        j        }n—# t.          $ rŠ d}	 | j                              ¦   «         }| j                              dt2          j        ¦  «         | j                              ¦   «         }| j                              |¦  «         n# t.          $ r d}Y nw xY wY nw xY wt7          j        dd| j        z   d| j        | j        | j        ||f¦  «        g| _        d S )NrU   ó   ÿOÿQÚj2kr=   ó      jP  
‡
Újp2r   rp   s   jp2cÿOÿQrM   znot a JPEG 2000 filer   r   Újpeg2k©r   r   )r   r%   Úcodecre   Ú_sizeÚ_modeÚ_parse_commentr–   Úcustom_mimetyper€   ÚinfoÚendswithr   rW   r>   r?   r@   r$   Ú_reduceÚlayersÚfilenoÚfstatÚst_sizeÚ	Exceptionr   r6   ÚSEEK_ENDr	   Ú_Tiler3   Útile)	r   Úsigr{   r   rY   r   r(   ÚfdÚposs	            r   Ú_openzJpeg2KImageFile._openú   sV  € ØŒg�lŠl˜1‰oŒoˆØÐ%Ò%Ð%ØˆDŒJÝ%6°t´wÑ%?Ô%?Ñ"ˆDŒJ˜œ
Ø×ÒÑ!Ô!Ð!Ñ!à˜œŸš Q™œÑ'ˆCàÐ=Ò=Ð=Ø"�”
Ý*¨4¬7Ñ3Ô3�ØRXÑO�”
˜DœJ¨Ô(<¸cÀ4Ä<Ø�?Ø'*�D”I˜eÑ$Ø”7—<’< Ñ#Ô#×,Ò,Ð-DÑEÔEð *Øœ'Ÿ,š, q™/œ/�CÝ$œ]¨3Ñ/Ô/�FØ”G—L’L ¨!¡­R¬[Ñ9Ô9Ð9Ø×'Ò'Ñ)Ô)Ð)øà,�Ý! #Ñ&Ô&Ð&àˆŒØˆŒàˆØˆð	Ø”—’Ñ!Ô!ˆBÝ”X˜b‘\”\Ô)ˆFˆFøÝð 	ð 	ð 	ØˆBðØ”g—l’l‘n”n�Ø”—’˜Q¥¤Ñ,Ô,Ð,ØœŸš™œ�Ø”—’˜SÑ!Ô!Ð!Ð!øÝð ð ð Ø���ðøøøøøð	øøøõ ŒOØØ˜œÑ"ØØ”˜Tœ\¨4¬;¸¸FÐCñ	ô ð
ˆŒ	ˆ	ˆ	s7   Æ2F4 Æ4IÇA1H3È2IÈ3IÈ?IÉIÉIÉIc                ót  — 	 | j                              d¦  «        }|sd S |d         }|dv rd S | j                              d¦  «        }t          j        |¦  «        }|dk    r/| j                              |dz
  ¦  «        dd …         | j        d<   d S | j                              |dz
  t          j        ¦  «         Œ¸)NTrM   r   )é�   éÙ   éd   Úcomment)r   r%   r   rW   r¦   r>   r?   r@   )r   ÚmarkerÚtyprY   r   s        r   r¤   zJpeg2KImageFile._parse_comment.  s´   € ð	6Ø”W—\’\ !‘_”_ˆFØð Ø�Ø˜”)ˆCØ�lÐ"Ð"à�Ø”'—,’,˜q‘/”/ˆCÝ”] 3Ñ'Ô'ˆFØ�dŠ{ˆ{à'+¤w§|¢|°F¸Q±JÑ'?Ô'?ÀÀÀÔ'C�”	˜)Ñ$Ø�à”—’˜V a™Z­¬Ñ5Ô5Ð5ð	6r   úVCallable[[int | tuple[int, int], tuple[int, int, int, int] | None], Image.Image] | intc                ó8   •— | j         pt          ¦   «         j        S r/   )r¨   ÚsuperÚreduce)r   Ú	__class__s    €r   r¿   zJpeg2KImageFile.reduce@  s   ø€ ð Œ|Ð-�u™wœwœ~Ð-r   r‹   r   c                ó   — || _         d S r/   )r¨   )r   r‹   s     r   r¿   zJpeg2KImageFile.reduceL  s   € àˆŒˆˆr   úImage.core.PixelAccess | Nonec                ó$  — | j         rë| j        räd| j        z  }|dz	  }t          | j        d         |z   |z  ¦  «        t          | j        d         |z   |z  ¦  «        f| _        | j         d         }t          |d         t          ¦  «        sJ ‚|d         d         | j        | j        |d         d         |d         d         f}t          j	        |d         d| j        z   |d         |¦  «        g| _         t          j         
                    | ¦  «        S )Nr   r   rS   rU   r    rM   )r°   r¨   r   r3   r¢   rv   rA   r©   r	   r¯   Úload)r   ÚpowerÚadjustÚtÚt3s        r   rÄ   zJpeg2KImageFile.loadP  sþ   € ØŒ9ð 	N˜œð 	NØ˜œÑ%ˆEØ˜a‘ZˆFå�T”Y˜q”\ FÑ*¨eÑ3Ñ4Ô4Ý�T”Y˜q”\ FÑ*¨eÑ3Ñ4Ô4ðˆDŒJð ”	˜!”ˆAÝ˜a œd¥EÑ*Ô*Ð*Ð*Ð*Ø�A”$�q”'˜4œ<¨¬°a¸´d¸1´g¸qÀ¼tÀA¼wÐGˆBÝ"œ¨¨1¬¨v¸¼	Ñ/AÀ1ÀQÄ4ÈÑLÔLÐMˆDŒIåÔ"×'Ò'¨Ñ-Ô-Ð-r   )r   r   )r   r¼   )r‹   r   r   r   )r   rÂ   )rF   rG   rH   ÚformatÚformat_descriptionr´   r¤   Úpropertyr¿   ÚsetterrÄ   Ú__classcell__)rÀ   s   @r   r˜   r˜   ö   s³   ø€ € € € € Ø€FØ0Ðð2
ð 2
ð 2
ð 2
ðh6ð 6ð 6ð 6ð$ ð	.ð 	.ð 	.ð 	.ð 	.ñ „Xð	.ð „]ðð ð ñ „]ðð.ð .ð .ð .ð .ð .ð .ð .r   r˜   Úprefixr!   r   c                ó:   — | d d…         dk    p| d d…         dk    S )NrU   r›   rp   r�   rJ   )rÎ   s    r   Ú_acceptrÐ   b  s/   € àˆr�ˆrŒ
Ð)Ò)ð 	BØ�#�2�#Œ;ÐAÒAðr   ÚimúImage.ImageÚfilenameústr | bytesr   c                óD  — | j         }t          |t          ¦  «        r|                     ¦   «         }|                     d¦  «        s|                     dd¦  «        rd}nd}|                     dd ¦  «        }|                     dd ¦  «        }|                     dd ¦  «        }|                     d	d
¦  «        }|                     dd ¦  «        }	|	�Ft          |	t          t          f¦  «        rt          d„ |	D ¦   «         ¦  «        sd}
t          |
¦  «        ‚|                     dd¦  «        }|                     dd ¦  «        }|                     dd ¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     d¦  «        }t          |t          ¦  «        r|                     ¦   «         }|                     dd¦  «        }d}t          |d¦  «        r(	 |                     ¦   «         }n# t          $ r d}Y nw xY w|||||	|||||||||||f| _        t          j        | |t          j        dd| j        z   d|¦  «        g¦  «         d S )Ns   .j2kÚno_jp2Frœ   rž   ÚoffsetÚtile_offsetÚ	tile_sizeÚquality_modeÚratesÚquality_layersc              3  óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S r/   )rv   r   Úfloat)Ú.0Úquality_layers     r   ú	<genexpr>z_save.<locals>.<genexpr>  sA   è è € ð 
ð 
Ø8E�J�}¥s­E lÑ3Ô3ð
ð 
ð 
ð 
ð 
ð 
r   z,quality_layers must be a sequence of numbersÚnum_resolutionsr   Úcodeblock_sizeÚprecinct_sizeÚirreversibleÚprogressionÚLRCPÚcinema_modeÚnoÚmctÚsignedr¹   Úpltr   rª   rŸ   r    )Úencoderinforv   r,   Úencoder§   ÚgetÚlistrA   ÚallÚ
ValueErrorÚhasattrrª   r­   Úencoderconfigr	   Ú_saver¯   r3   )rÑ   r   rÓ   r¦   Úkindr×   rØ   rÙ   rÚ   rÜ   r(   râ   Ú	cblk_sizerä   rå   ræ   rè   rê   rë   r¹   rì   r²   s                         r   rõ   rõ   m  s¾  € àŒ>€Då�(�CÑ Ô ð %Ø—?’?Ñ$Ô$ˆØ×Ò˜Ñ!Ô!ð  T§X¢X¨h¸Ñ%>Ô%>ð Øˆˆàˆà�XŠX�h Ñ%Ô%€FØ—(’(˜=¨$Ñ/Ô/€KØ—’˜ dÑ+Ô+€IØ—8’8˜N¨GÑ4Ô4€LØ—X’XÐ.°Ñ5Ô5€NØÐ!Ý�>¥D­% =Ñ1Ô1ð "åð 
ð 
ØIWð
ñ 
ô 
ñ 
ô 
ð "ð =ˆÝ˜‰oŒoÐà—h’hÐ0°!Ñ4Ô4€OØ—’Ð)¨4Ñ0Ô0€IØ—H’H˜_¨dÑ3Ô3€MØ—8’8˜N¨EÑ2Ô2€LØ—(’(˜=¨&Ñ1Ô1€KØ—(’(˜=¨$Ñ/Ô/€KØ
�(Š(�5˜!Ñ
Ô
€CØ�XŠX�h Ñ&Ô&€FØ�hŠh�yÑ!Ô!€GÝ�'�3ÑÔð #Ø—.’.Ñ"Ô"ˆØ
�(Š(�5˜%Ñ
 Ô
 €Cà	€BÝˆr�8ÑÔð ð	Ø—’‘”ˆBˆBøÝð 	ð 	ð 	ØˆBˆBˆBð	øøøð 	ØØØØØØØØØØØØØ
ØØð!€BÔõ& „O�B˜�Yœ_¨X°vÀÄÑ7GÈÈDÑQÔQÐRÑSÔSÐSÐSÐSs   È.I ÉIÉI)z.jp2z.j2kz.jpcz.jpfz.jpxz.j2cz	image/jp2)r   r   r   rK   )rf   r   rg   r   rh   r   r   ri   )r   r   r   rn   )rÎ   r!   r   r   )rÑ   rÒ   r   r   rÓ   rÔ   r   r   )Ú
__future__r   r6   r?   r0   Úcollections.abcr   Útypingr   r   Ú r   r	   r
   r   r   re   rm   r–   r˜   rÐ   rõ   Úregister_openrÉ   Úregister_saveÚregister_extensionsÚregister_mimerJ   r   r   ú<module>r      sÕ  ðð  #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 	€	€	€	Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ðGð Gð Gð Gð Gñ Gô Gð GðTð ð ð ð>5ð 5ð 5ð 5ðb.ð b.ð b.ð b.ðRi.ð i.ð i.ð i.ð i.�iÔ)ñ i.ô i.ð i.ðXð ð ð ð@Tð @Tð @Tð @TðN €Ô �OÔ*¨O¸WÑ EÔ EÐ EØ €Ô �OÔ*¨EÑ 2Ô 2Ð 2à €Ô ØÔÐLÐLÐLñô ð ð €Ô �OÔ*¨KÑ 8Ô 8Ð 8Ð 8Ð 8r   