
    @OOfO                         d dl Z d dl mZmZmZ d dlmZ d dlZ ee dd      dk  r ede j                  z         G d de      Z
y)	    N)KaitaiStructKaitaiStreamBytesIO)EnumAPI_VERSION)r   	   zPIncompatible Kaitai Struct Python API: 0.9 or later is required, but you have %sc                   D   e Zd ZdZ G d de      Z G d de      Z G d de      Z G d d	e      Z G d
 de      Z	d7dZ
d Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z y)8PngzTest files for APNG can be found at the following locations:
    
      * <https://philip.html5.org/tests/apng/tests.html>
      * <http://littlesvr.ca/apng/>
    c                       e Zd ZdZdZy)Png.PhysUnitr      N)__name__
__module____qualname__unknownmeter     c/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/contrib/kaitaistruct/png.pyPhysUnitr      s    r   r   c                       e Zd ZdZdZy)Png.BlendOpValuesr   r   N)r   r   r   sourceoverr   r   r   BlendOpValuesr      s    r   r   c                       e Zd ZdZy)Png.CompressionMethodsr   N)r   r   r   zlibr   r   r   CompressionMethodsr      s    r   r   c                       e Zd ZdZdZdZy)Png.DisposeOpValuesr   r      N)r   r   r   none
backgroundpreviousr   r   r   DisposeOpValuesr!      s    
r   r&   c                        e Zd ZdZdZdZdZdZy)Png.ColorTyper   r"            N)r   r   r   	greyscale	truecolorindexedgreyscale_alphatruecolor_alphar   r   r   	ColorTyper(   #   s    		r   r1   Nc                 V    || _         || _        |r|n| | _        | j                          y N_io_parent_root_readselfr5   r6   r7   s       r   __init__zPng.__init__)   s$    #U


r   c                    | j                   j                  d      | _        | j                  dk(  s,t        j                  d| j                  | j                   d      | j                   j                         | _        | j                  dk(  s,t        j                  d| j                  | j                   d      | j                   j                  d      | _        | j                  dk(  s,t        j                  d| j                  | j                   d      t        j                  | j                   | | j                        | _        | j                   j                  d      | _        g | _        d	}	 t        j                  | j                   | | j                        }| j                  j                  |       |j                   d
k(  s| j                   j#                         ry |dz  }v)N   s   PNG

z/seq/0   z/seq/1r*   s   IHDRz/seq/2r   IENDr   )r5   
read_bytesmagickaitaistructValidationNotEqualError	read_u4beihdr_len	ihdr_typer
   	IhdrChunkr7   ihdrihdr_crcchunksChunkappendtypeis_eof)r:   i_s      r   r8   z	Png._read/   sj   XX((+
zz@@667Z\`\f\fhlhphpr{||**,}}"66r4==$((T]^^,,Q/~~!44667JDNN\`\d\dfoppMM$((D$**=	++A.		$((D$**5AKKq!&&G#):FA r   c                       e Zd ZddZd Zy)Png.RgbNc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.Rgb.__init__E   $    DH"DL"'TDJJJLr   c                     | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        y r3   )r5   read_u1rgbr:   s    r   r8   zPng.Rgb._readK   s>    XX%%'DFXX%%'DFXX%%'DFr   NNr   r   r   r;   r8   r   r   r   RgbrR   D   s    		(r   r]   c                       e Zd ZddZd Zy)	Png.ChunkNc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.Chunk.__init__R   rT   r   c                 *   | j                   j                         | _        | j                   j                  d      j	                  d      | _        | j
                  }|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j                  || | j                        | _        n|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j                  || | j                        | _        n/|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j                  || | j                        | _        n|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j                  || | j                        | _        nE|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j!                  || | j                        | _        n|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j#                  || | j                        | _        n[|d	k(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j%                  || | j                        | _        n|d
k(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j'                  || | j                        | _        nq|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j)                  || | j                        | _        n|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j+                  || | j                        | _        n|dk(  rp| j                   j                  | j                        | _        t        t        | j                              }t        j-                  || | j                        | _        n|dk(  ro| j                   j                  | j                        | _        t        t        | j                              }t        j/                  || | j                        | _        n|dk(  ro| j                   j                  | j                        | _        t        t        | j                              }t        j1                  || | j                        | _        n*| j                   j                  | j                        | _        | j                   j                  d      | _        y )Nr*   UTF-8iTXtgAMAtIMEPLTEbKGDpHYsfdATtEXtcHRMacTLsRGBzTXtfcTL)r5   rD   lenr@   decoderM   	_raw_bodyr   r   r
   InternationalTextChunkr7   body	GamaChunk	TimeChunk	PlteChunk	BkgdChunk	PhysChunkFrameDataChunk	TextChunk	ChrmChunkAnimationControlChunk	SrgbChunkCompressedTextChunkFrameControlChunkcrc)r:   _on_io__raw_bodys      r   r8   zPng.Chunk._readX   sV   xx))+DH,,Q/77ADI))Cg~!%!4!4TXX!> ,WT^^-D E66}dDJJW	!%!4!4TXX!> ,WT^^-D EMM-tzzJ	!%!4!4TXX!> ,WT^^-D EMM-tzzJ	!%!4!4TXX!> ,WT^^-D EMM-tzzJ	!%!4!4TXX!> ,WT^^-D EMM-tzzJ	!%!4!4TXX!> ,WT^^-D EMM-tzzJ	!%!4!4TXX!> ,WT^^-D E..}dDJJO	!%!4!4TXX!> ,WT^^-D EMM-tzzJ	!%!4!4TXX!> ,WT^^-D EMM-tzzJ	!%!4!4TXX!> ,WT^^-D E55mT4::V	!%!4!4TXX!> ,WT^^-D EMM-tzzJ	!%!4!4TXX!> ,WT^^-D E33M4T	!%!4!4TXX!> ,WT^^-D E11-tzzR	 HH//9	xx**1-DHr   r[   r\   r   r   r   rK   r_   Q   s    	:	.r   rK   c                       e Zd ZdZddZd Zy)Png.BkgdIndexedz1Background chunk for images with indexed palette.Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.BkgdIndexed.__init__   rT   r   c                 B    | j                   j                         | _        y r3   )r5   rV   palette_indexrZ   s    r   r8   zPng.BkgdIndexed._read   s    !%!1!1!3Dr   r[   r   r   r   __doc__r;   r8   r   r   r   BkgdIndexedr      s    ?		4r   r   c                   :    e Zd ZddZd Zed        Zed        Zy)	Png.PointNc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.Point.__init__   rT   r   c                     | j                   j                         | _        | j                   j                         | _        y r3   )r5   rD   x_inty_intrZ   s    r   r8   zPng.Point._read   s*    ++-DJ++-DJr   c                 t    t        | d      r| j                  S | j                  dz  | _        t        | dd       S )N_m_x     j@)hasattrr   r   getattrrZ   s    r   xzPng.Point.x   5    tV$yy h.DI4..r   c                 t    t        | d      r| j                  S | j                  dz  | _        t        | dd       S )N_m_yr   )r   r   r   r   rZ   s    r   yzPng.Point.y   r   r   r[   )r   r   r   r;   r8   propertyr   r   r   r   r   Pointr      s4    		. 
	/ 
	/ 
	/ 
	/r   r   c                       e Zd ZdZddZd Zy)Png.BkgdGreyscalez&Background chunk for greyscale images.Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.BkgdGreyscale.__init__   rT   r   c                 B    | j                   j                         | _        y r3   )r5   	read_u2bevaluerZ   s    r   r8   zPng.BkgdGreyscale._read   s    ++-DJr   r[   r   r   r   r   BkgdGreyscaler      s    4		.r   r   c                       e Zd ZdZddZd Zy)Png.ChrmChunkzT
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11cHRM
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.ChrmChunk.__init__   rT   r   c                    t         j                  | j                  | | j                        | _        t         j                  | j                  | | j                        | _        t         j                  | j                  | | j                        | _        t         j                  | j                  | | j                        | _        y r3   )r
   r   r5   r7   white_pointredgreenbluerZ   s    r   r8   zPng.ChrmChunk._read   ss    "yy4DDyy4<DH488T4::>DJ		$((D$**=DIr   r[   r   r   r   r   r|   r      s    			>r   r|   c                       e Zd ZdZddZd Zy)Png.IhdrChunkzT
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11IHDR
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.IhdrChunk.__init__   rT   r   c                    | j                   j                         | _        | j                   j                         | _        | j                   j	                         | _        t        j                  t        j                  | j                   j	                               | _
        | j                   j	                         | _        | j                   j	                         | _        | j                   j	                         | _        y r3   )r5   rD   widthheightrV   	bit_depthr   resolve_enumr
   r1   
color_typecompression_methodfilter_methodinterlace_methodrZ   s    r   r8   zPng.IhdrChunk._read   s    ++-DJ((,,.DK!XX--/DN*77txxGWGWGYZDO&*hh&6&6&8D#!%!1!1!3D$(HH$4$4$6D!r   r[   r   r   r   r   rG   r      s    			7r   rG   c                       e Zd ZdZddZd Zy)Png.PlteChunkzT
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11PLTE
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.PlteChunk.__init__   rT   r   c                    g | _         d}| j                  j                         se| j                   j                  t        j                  | j                  | | j                               |dz  }| j                  j                         sdy y )Nr   r   )entriesr5   rN   rL   r
   r]   r7   )r:   rO   s     r   r8   zPng.PlteChunk._read   s\    DLAhhoo'##CGGDHHdDJJ$GHQ hhoo'r   r[   r   r   r   r   rw   r      s    			r   rw   c                   4    e Zd ZdZ G d de      ZddZd Zy)Png.SrgbChunkzT
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11sRGB
        c                       e Zd ZdZdZdZdZy)Png.SrgbChunk.Intentr   r   r"   r)   N)r   r   r   
perceptualrelative_colorimetric
saturationabsolute_colorimetricr   r   r   Intentr   
  s    J$%!J$%!r   r   Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.SrgbChunk.__init__  rT   r   c                     t        j                  t        j                  j                  | j
                  j                               | _        y r3   )r   r   r
   r~   r   r5   rV   render_intentrZ   s    r   r8   zPng.SrgbChunk._read  s1    !-!:!:3==;O;OQUQYQYQaQaQc!dDr   r[   )r   r   r   r   r   r   r;   r8   r   r   r   r~   r     s    	
	&T 	&
		er   r~   c                       e Zd ZdZddZd Zy)Png.CompressedTextChunka  Compressed text chunk effectively allows to store key-value
        string pairs in PNG container, compressing "value" part (which
        can be quite lengthy) with zlib compression.
        
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11zTXt
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   z Png.CompressedTextChunk.__init__!  rT   r   c                 p   | j                   j                  dddd      j                  d      | _        t	        j
                  t        j                  | j                   j                               | _	        | j                   j                         | _        t        j                  | j                        | _        y )Nr   FTrb   )r5   read_bytes_termrq   keywordr   r   r
   r   rV   r   read_bytes_full_raw_text_datastreamr   
decompresstext_datastreamrZ   s    r   r8   zPng.CompressedTextChunk._read'  s     HH44QtTJRRS[\DL&2&?&?@V@VX\X`X`XhXhXj&kD#(,(@(@(BD%#'??43L3L#MD r   r[   r   r   r   r   r   r     s    			Nr   r   c                       e Zd ZdZddZd Zy)Png.FrameDataChunkz
        .. seealso::
           Source - https://wiki.mozilla.org/APNG_Specification#.60fdAT.60:_The_Frame_Data_Chunk
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.FrameDataChunk.__init__3  rT   r   c                     | j                   j                         | _        | j                   j                         | _        y r3   )r5   rD   sequence_numberr   
frame_datarZ   s    r   r8   zPng.FrameDataChunk._read9  s+    #'88#5#5#7D "hh668DOr   r[   r   r   r   r   rz   r   .  s    			9r   rz   c                       e Zd ZdZddZd Zy)Png.BkgdTruecolorz&Background chunk for truecolor images.Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.BkgdTruecolor.__init__@  rT   r   c                     | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        y r3   )r5   r   r   r   r   rZ   s    r   r8   zPng.BkgdTruecolor._readF  s>    xx))+DH++-DJ**,DIr   r[   r   r   r   r   BkgdTruecolorr   >  s    4		-r   r   c                   .    e Zd ZdZddZd Zed        Zy)Png.GamaChunkzT
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11gAMA
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.GamaChunk.__init__Q  rT   r   c                 B    | j                   j                         | _        y r3   )r5   rD   	gamma_intrZ   s    r   r8   zPng.GamaChunk._readW  s    !XX//1DNr   c                 t    t        | d      r| j                  S d| j                  z  | _        t        | dd       S )N_m_gamma_ratior   )r   r   r   r   rZ   s    r   gamma_ratiozPng.GamaChunk.gamma_ratioZ  s:    t-.***#+dnn#<D4!1488r   r[   )r   r   r   r   r;   r8   r   r   r   r   r   ru   r   L  s%    			2 
	9 
	9r   ru   c                       e Zd ZdZddZd Zy)Png.BkgdChunkzBackground chunk stores default background color to display this
        image against. Contents depend on `color_type` of the image.
        
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11bKGD
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.BkgdChunk.__init__j  rT   r   c                 P   | j                   j                  j                  }|t        j                  j
                  k(  r1t        j                  | j                  | | j                         | _        y |t        j                  j                  k(  r1t        j                  | j                  | | j                         | _        y |t        j                  j                  k(  r1t        j                  | j                  | | j                         | _        y |t        j                  j                  k(  r1t        j                  | j                  | | j                         | _        y |t        j                  j                  k(  r1t        j                  | j                  | | j                         | _        y y r3   )r7   rH   r   r
   r1   r.   r   r5   bkgdr0   r   r/   r   r-   r,   )r:   r   s     r   r8   zPng.BkgdChunk._readp  s   **//,,Ccmm+++OODHHdDJJG	555--dhhdjjI	555--dhhdjjI	///--dhhdjjI	///--dhhdjjI	 0r   r[   r   r   r   r   rx   r   c  s    			Jr   rx   c                       e Zd ZdZddZd Zy)Png.PhysChunkz"Physical size" chunk stores data that allows to translate
        logical pixels into physical units (meters, etc) and vice-versa.
        
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11pHYs
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.PhysChunk.__init__  rT   r   c                    | j                   j                         | _        | j                   j                         | _        t	        j
                  t        j                  | j                   j                               | _	        y r3   )
r5   rD   pixels_per_unit_xpixels_per_unit_yr   r   r
   r   rV   unitrZ   s    r   r8   zPng.PhysChunk._read  sQ    %)XX%7%7%9D"%)XX%7%7%9D"$11#,,@P@P@RSDIr   r[   r   r   r   r   ry   r   ~  s    			Tr   ry   c                   .    e Zd ZdZddZd Zed        Zy)Png.FrameControlChunkz
        .. seealso::
           Source - https://wiki.mozilla.org/APNG_Specification#.60fcTL.60:_The_Frame_Control_Chunk
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.FrameControlChunk.__init__  rT   r   c                    | j                   j                         | _        | j                   j                         | _        | j                  dk\  s,t	        j
                  d| j                  | j                   d      | j                  | j                  j                  j                  k  sJt	        j                  | j                  j                  j                  | j                  | j                   d      | j                   j                         | _	        | j                  dk\  s,t	        j
                  d| j                  | j                   d      | j                  | j                  j                  j                  k  sJt	        j                  | j                  j                  j                  | j                  | j                   d      | j                   j                         | _
        | j                  | j                  j                  j                  | j                  z
  k  sWt	        j                  | j                  j                  j                  | j                  z
  | j                  | j                   d      | j                   j                         | _        | j                  | j                  j                  j                  | j                  z
  k  sWt	        j                  | j                  j                  j                  | j                  z
  | j                  | j                   d      | j                   j                         | _        | j                   j                         | _        t        j                   t"        j$                  | j                   j'                               | _        t        j                   t"        j*                  | j                   j'                               | _        y )Nr   z /types/frame_control_chunk/seq/1z /types/frame_control_chunk/seq/2z /types/frame_control_chunk/seq/3z /types/frame_control_chunk/seq/4)r5   rD   r   r   rB   ValidationLessThanErrorr7   rH   ValidationGreaterThanErrorr   x_offsety_offsetr   	delay_num	delay_denr   r   r
   r&   rV   
dispose_opr   blend_oprZ   s    r   r8   zPng.FrameControlChunk._read  s   #'88#5#5#7D ++-DJ::?"::1djj$((Twxx::!6!66"==djjoo>S>SUYU_U_aeaiai  lO  P  P((,,.DK;;!#"::1dkk488Uxyy;;$**//"8"88"==djjoo>T>TVZVaVacgckck  nQ  R  R HH..0DM==TZZ__%:%:TZZ%GH"==tzz?T?TW[WaWa?adhdqdqsws{s{  ~a  b  b HH..0DM==TZZ__%;%;dkk%IJ"==tzz?U?UX\XcXc?cfjfsfsuyu}u}  @c  d  d!XX//1DN!XX//1DN*778K8KTXXM]M]M_`DO(55c6G6GIYIYI[\DMr   c                     t        | d      r| j                  S | j                  | j                  dk(  rdn| j                  z  | _        t	        | dd      S )z'Time to display this frame, in seconds._m_delayr   g      Y@N)r   r   r   r   r   rZ   s    r   delayzPng.FrameControlChunk.delay  sK     tZ(}}$!^^!8KuQUQ_Q_`DM4T22r   r[   )r   r   r   r   r;   r8   r   r  r   r   r   r   r     s&    			]. 
	3 
	3r   r   c                       e Zd ZdZddZd Zy)Png.InternationalTextChunkaI  International text chunk effectively allows to store key-value string pairs in
        PNG container. Both "key" (keyword) and "value" (text) parts are
        given in pre-defined subset of iso8859-1 without control
        characters.
        
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11iTXt
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   z#Png.InternationalTextChunk.__init__  rT   r   c                 L   | j                   j                  dddd      j                  d      | _        | j                   j	                         | _        t        j                  t        j                  | j                   j	                               | _
        | j                   j                  dddd      j                  d      | _        | j                   j                  dddd      j                  d      | _        | j                   j                         j                  d      | _        y )Nr   FTrb   ASCII)r5   r   rq   r   rV   compression_flagr   r   r
   r   r   language_tagtranslated_keywordr   textrZ   s    r   r8   z Png.InternationalTextChunk._read  s     HH44QtTJRRS[\DL$(HH$4$4$6D!&2&?&?@V@VX\X`X`XhXhXj&kD#!%!9!9!UD$!O W WX` aD'+xx'?'?5$PT'U&]&]^f&gD#113;;HEDIr   r[   r   r   r   r   rs   r    s    			Fr   rs   c                       e Zd ZdZddZd Zy)Png.TextChunka;  Text chunk effectively allows to store key-value string pairs in
        PNG container. Both "key" (keyword) and "value" (text) parts are
        given in pre-defined subset of iso8859-1 without control
        characters.
        
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11tEXt
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.TextChunk.__init__  rT   r   c                     | j                   j                  dddd      j                  d      | _        | j                   j	                         j                  d      | _        y )Nr   FTz	iso8859-1)r5   r   rq   r   r   r
  rZ   s    r   r8   zPng.TextChunk._read  sI     HH44QtTJRRS_`DL113;;LIDIr   r[   r   r   r   r   r{   r    s    			Jr   r{   c                       e Zd ZdZddZd Zy)Png.AnimationControlChunkz
        .. seealso::
           Source - https://wiki.mozilla.org/APNG_Specification#.60acTL.60:_The_Animation_Control_Chunk
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   z"Png.AnimationControlChunk.__init__  rT   r   c                     | j                   j                         | _        | j                   j                         | _        y r3   )r5   rD   
num_frames	num_playsrZ   s    r   r8   zPng.AnimationControlChunk._read  s*    "hh002DO!XX//1DNr   r[   r   r   r   r   r}   r    s    			2r   r}   c                       e Zd ZdZddZd Zy)Png.TimeChunkzTime chunk stores time stamp of last modification of this image,
        up to 1 second precision in UTC timezone.
        
        .. seealso::
           Source - https://www.w3.org/TR/PNG/#11tIME
        Nc                 V    || _         || _        |r|n| | _        | j                          y r3   r4   r9   s       r   r;   zPng.TimeChunk.__init__   rT   r   c                 x   | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        y r3   )	r5   r   yearrV   monthdayhourminutesecondrZ   s    r   r8   zPng.TimeChunk._read  sz    **,DI))+DJxx'')DH((*DI((**,DK((**,DKr   r[   r   r   r   r   rv   r    s    			-r   rv   r[   )!r   r   r   r   r   r   r   r   r&   r1   r;   r8   r   r]   rK   r   r   r   r|   rG   rw   r~   r   rz   r   ru   rx   ry   r   rs   r{   r}   rv   r   r   r   r
   r
      sM   4  T $ 
D *
(l 
(A. A.H	4l 	4/ /8	. 	.>L >$7L 7*L (eL e*Nl N*9 9 - -9L 9.JL J6TL T&)3L )3XF F0JL J(2 2 -L -r   r
   )rB   r   r   r   enumr   r   r   	Exception__version__r
   r   r   r   <module>r"     s`     < <   </&8
fjv  kC  kC  D  E  E@-, @-r   