
    hgD                     x   d dl Z d dlZd dlZd dlmZmZmZmZ ej        d          dk    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 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dS )    N)openBytesIOSEEK_CURSEEK_END   z0.10)r   
   c                   h    e Zd Zd Zd Zd Zd Zed             Zed             Z	ed             Z
dS )	KaitaiStructc                     || _         d S N)_io)selfstreams     E/var/www/fb-scrape/myenv/lib/python3.11/site-packages/kaitaistruct.py__init__zKaitaiStruct.__init__   s        c                     | S r    r   s    r   	__enter__zKaitaiStruct.__enter__       r   c                 .    |                                   d S r   closer   argskwargss      r   __exit__zKaitaiStruct.__exit__"       

r   c                 8    | j                                          d S r   r   r   r   s    r   r   zKaitaiStruct.close%       r   c                     t          |d          }	  | t          |                    S # t          $ r |                                  w xY w)Nrb)r   KaitaiStream	Exceptionr   )clsfilenamefs      r   	from_filezKaitaiStruct.from_file(   sW    4  	3|A''' 	 	 	GGIII	s	   *  A
c                 L     | t          t          |                              S r   )r%   r   )r'   bufs     r   
from_byteszKaitaiStruct.from_bytes2   s     s<--...r   c                 2     | t          |                    S r   )r%   )r'   ios     r   from_iozKaitaiStruct.from_io6   s    s<##$$$r   N)__name__
__module____qualname__r   r   r   r   classmethodr*   r-   r0   r   r   r   r
   r
      s                   [ / / [/ % % [% % %r   r
   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
 ej        d	          Z ej        d
          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z( ej        d%          Z) ej        d&          Z* ej        d'          Z+ ej        d(          Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8e9d5             Z:e9d6             Z;e9d7             Z<e9d8             Z=e9d9             Z>e9d:             Z?e9d;             Z@e9d<             ZAe9d=             ZBe9d>             ZCe9d?             ZDd@S )Ar%   c                 <    || _         |                                  d S r   )r   align_to_byte)r   r/   s     r   r   zKaitaiStream.__init__<   s!    r   c                     | S r   r   r   s    r   r   zKaitaiStream.__enter__@   r   r   c                 .    |                                   d S r   r   r   s      r   r   zKaitaiStream.__exit__C   r   r   c                 8    | j                                          d S r   r!   r   s    r   r   zKaitaiStream.closeF   r"   r   c                     | j         dk    rdS | j        }|                    d          }|dk    rdS |                    dt                     dS )Nr   F   r   T)	bits_leftr   readseekr   )r   r/   ts      r   is_eofzKaitaiStream.is_eofM   sQ    >A5XGGAJJ884
Hur   c                 :    | j                             |           d S r   )r   r@   r   ns     r   r@   zKaitaiStream.seekY   s    ar   c                 4    | j                                         S r   )r   tellr   s    r   poszKaitaiStream.pos\       x}}r   c                     | j         }|                                }|                    dt                    }|                    |           |S Nr   )r   rG   r@   r   )r   r/   cur_pos	full_sizes       r   sizezKaitaiStream.size_   sC     X''))GGAx((	
r   bz>hz>iz>qz<hz<iz<qBz>Hz>Iz>Qz<Hz<Iz<Qc                 r    t           j                            |                     d                    d         S Nr<   r   )r%   	packer_s1unpack
read_bytesr   s    r   read_s1zKaitaiStream.read_s1   *    %,,T__Q-?-?@@CCr   c                 r    t           j                            |                     d                    d         S Nr   r   )r%   packer_s2berT   rU   r   s    r   	read_s2bezKaitaiStream.read_s2be   *    '..tq/A/ABB1EEr   c                 r    t           j                            |                     d                    d         S N   r   )r%   packer_s4berT   rU   r   s    r   	read_s4bezKaitaiStream.read_s4be   r\   r   c                 r    t           j                            |                     d                    d         S N   r   )r%   packer_s8berT   rU   r   s    r   	read_s8bezKaitaiStream.read_s8be   r\   r   c                 r    t           j                            |                     d                    d         S rY   )r%   packer_s2lerT   rU   r   s    r   	read_s2lezKaitaiStream.read_s2le   r\   r   c                 r    t           j                            |                     d                    d         S r^   )r%   packer_s4lerT   rU   r   s    r   	read_s4lezKaitaiStream.read_s4le   r\   r   c                 r    t           j                            |                     d                    d         S rc   )r%   packer_s8lerT   rU   r   s    r   	read_s8lezKaitaiStream.read_s8le   r\   r   c                 r    t           j                            |                     d                    d         S rR   )r%   	packer_u1rT   rU   r   s    r   read_u1zKaitaiStream.read_u1   rW   r   c                 r    t           j                            |                     d                    d         S rY   )r%   packer_u2berT   rU   r   s    r   	read_u2bezKaitaiStream.read_u2be   r\   r   c                 r    t           j                            |                     d                    d         S r^   )r%   packer_u4berT   rU   r   s    r   	read_u4bezKaitaiStream.read_u4be   r\   r   c                 r    t           j                            |                     d                    d         S rc   )r%   packer_u8berT   rU   r   s    r   	read_u8bezKaitaiStream.read_u8be   r\   r   c                 r    t           j                            |                     d                    d         S rY   )r%   packer_u2lerT   rU   r   s    r   	read_u2lezKaitaiStream.read_u2le   r\   r   c                 r    t           j                            |                     d                    d         S r^   )r%   packer_u4lerT   rU   r   s    r   	read_u4lezKaitaiStream.read_u4le   r\   r   c                 r    t           j                            |                     d                    d         S rc   )r%   packer_u8lerT   rU   r   s    r   	read_u8lezKaitaiStream.read_u8le   r\   r   z>fz>dz<fz<dc                 r    t           j                            |                     d                    d         S r^   )r%   packer_f4berT   rU   r   s    r   	read_f4bezKaitaiStream.read_f4be   r\   r   c                 r    t           j                            |                     d                    d         S rc   )r%   packer_f8berT   rU   r   s    r   	read_f8bezKaitaiStream.read_f8be   r\   r   c                 r    t           j                            |                     d                    d         S r^   )r%   packer_f4lerT   rU   r   s    r   	read_f4lezKaitaiStream.read_f4le   r\   r   c                 r    t           j                            |                     d                    d         S rc   )r%   packer_f8lerT   rU   r   s    r   	read_f8lezKaitaiStream.read_f8le   r\   r   c                 "    d| _         d| _        d S rK   )r>   bitsr   s    r   r7   zKaitaiStream.align_to_byte   s    			r   c                 T   d}|| j         z
  }| dz  | _         |dk    rb|dz
  dz  dz   }|                     |          }t          rt          |          }|D ]
}|dz  |z  }|}|| j         z	  | j        |z  z  }|| _        n| j        | z	  }d| j         z  dz
  }| xj        |z  c_        |S )Nr   rd   r<   )r>   rU   PY2	bytearrayr   )	r   rE   resbits_neededbytes_neededr,   bytenew_bitsmasks	            r   read_bits_int_bezKaitaiStream.read_bits_int_be   s    $.(%)?? )1_2a7L//,//C %nn & &QhoH'$){*BBC DII)|+CT^#q(		T		
r   c                 ,    |                      |          S r   )r   rD   s     r   read_bits_intzKaitaiStream.read_bits_int  s    $$Q'''r   c                 r   d}|| j         z
  }|dk    ru|dz
  dz  dz   }|                     |          }t          rt          |          }t	          |          D ]\  }}|||dz  z  z  }||z	  }|| j         z  | j        z  }|| _        n| j        }| xj        |z  c_        | dz  | _         d|z  dz
  }	||	z  }|S )Nr   r<   rd   )r>   rU   r   r   	enumerater   )
r   rE   r   r   r   r,   ir   r   r   s
             r   read_bits_int_lezKaitaiStream.read_bits_int_le  s    $.(?? )1_2a7L//,//C %nn$S>> ' '4tA&k)H'$)3C DII)CII!OII%)Q!|t
r   c                    |dk     rt          d|fz            d}|dk    rkt          t          | j        dd                     rH| j                                        r/|                                 |                                 z
  }||k    }|r/| j                            |          }t          |          }||k    }|st          d||fz            |S )Nr   z$requested invalid %d amount of bytesTi   seekablez/requested %d bytes, but only %d bytes available)

ValueErrorcallablegetattrr   r   rN   rH   r?   lenEOFError)r   rE   is_satisfiablenum_bytes_availablers        r   rU   zKaitaiStream.read_bytes(  s   q556  
   :t<<==  !!##	  #'))++

":#66N 	8a  A"%a&&#66N 	A'()   r   c                 4    | j                                         S r   )r   r?   r   s    r   read_bytes_fullzKaitaiStream.read_bytes_fullN  rI   r   c                     d}	 | j                             d          }|dk    r|rt          d|fz            |S t          |          |k    r+|r||z  }|s | j                             dt
                     |S ||z  }{)Nr   Tr<   z1end of stream reached, but no terminator %d foundr=   )r   r?   r&   ordr@   r   )r   terminclude_termconsume_term	eos_errorr   cs          r   read_bytes_termzKaitaiStream.read_bytes_termQ  s    	a  ACxx #K   
 1vv~~ FA# 0HMM"h///FA%	r   c                     | j                             t          |                    }||k    rt          d|d|          |S )Nzunexpected fixed contents: got z, was waiting for )r   r?   r   r&   )r   expectedactuals      r   ensure_fixed_contentsz"KaitaiStream.ensure_fixed_contentsg  sQ    s8}}--X)#   r   c                 \    |                      t                              |                    S r   )rstripr%   byte_from_int)datapad_bytes     r   bytes_strip_rightzKaitaiStream.bytes_strip_rightp  s"    {{<55h??@@@r   c                 v    |                      t                              |                    \  }}}|r||z  }|S r   )	partitionr%   r   )r   r   r   new_data	term_byte_s         r   bytes_terminatezKaitaiStream.bytes_terminatet  s?    !%0J0J40P0P!Q!Q)Q 	"	!Hr   c                     t           r5t          t          fdt          |           D                                 S t          fd| D                       S )Nc              3   "   K   | ]	}|z  V  
d S r   r   .0vkeys     r   	<genexpr>z/KaitaiStream.process_xor_one.<locals>.<genexpr>  s'      "D"Dq1s7"D"D"D"D"D"Dr   c              3   "   K   | ]	}|z  V  
d S r   r   r   s     r   r   z/KaitaiStream.process_xor_one.<locals>.<genexpr>  s'      ++QW++++++r   )r   bytesr   r   r   s    `r   process_xor_onezKaitaiStream.process_xor_one  s`     	F"D"D"D"DIdOO"D"D"DDDEEE++++d++++++r   c                 B   t           r`t          t          d t          t          |           t	          j        t          |                              D                                 S t          d t          | t	          j        |                    D                       S )Nc              3   &   K   | ]\  }}||z  V  d S r   r   r   arO   s      r   r   z0KaitaiStream.process_xor_many.<locals>.<genexpr>  s*      "k"kTQ1q5"k"k"k"k"k"kr   c              3   &   K   | ]\  }}||z  V  d S r   r   r   s      r   r   z0KaitaiStream.process_xor_many.<locals>.<genexpr>  s*      GGtq!QUGGGGGGr   )r   r   r   zip	itertoolscycler   s     r   process_xor_manyzKaitaiStream.process_xor_many  s     	m"k"kS4)/ZcdgZhZhJiJi5j5j"k"k"kkklllGGs41E1E'F'FGGGGGGr   c                     |dk    rt          d|fz            | |dz  z  }t          |           }t          |          D ]\  }}||z  dz  ||z	  z  ||<   t          |          S )Nr<   z&unable to rotate group of %d bytes yetrd      )r&   r   r   r   )r   amount
group_sizeanti_amountr   r   r   s          r   process_rotate_leftz KaitaiStream.process_rotate_left  s    ??8  
 ga0dOO || 	C 	CGAtFNd*dk.ABAaDDQxxr   c                 2    t           rt          |           n| S r   )r   r   )r   s    r   int_from_bytezKaitaiStream.int_from_byte  s    #s1vvv!#r   c                 N    t           rt          |           nt          | f          S r   )r   chrr   )r   s    r   r   zKaitaiStream.byte_from_int  s    -s1vvv%++-r   c                 B    t                               | |                   S r   )r%   r   )r   r   s     r   byte_array_indexzKaitaiStream.byte_array_index  s    ))$q'222r   c                 P    t                               t          |                     S r   )r%   r   minrO   s    r   byte_array_minzKaitaiStream.byte_array_min      ))#a&&111r   c                 P    t                               t          |                     S r   )r%   r   maxr   s    r   byte_array_maxzKaitaiStream.byte_array_max  r   r   c                 >    	  | |          S # t           $ r |cY S w xY w)zResolves value using enum: if the value is not found in the map,
        we'll just use literal value per se. Works around problem with Python
        enums throwing an exception when encountering unknown value.
        )r   )enum_objvalues     r   resolve_enumzKaitaiStream.resolve_enum  s9    	8E??" 	 	 	LLL	s   
 N)Er1   r2   r3   r   r   r   r   rB   r@   rH   rN   structStructrS   rZ   r`   re   rh   rk   rn   rq   rt   rw   rz   r}   r   r   rV   r[   ra   rf   ri   rl   ro   rr   ru   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r7   r   r   r   rU   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   ;   s               
 
 
      " c""I&-%%K&-%%K&-%%K&-%%K&-%%K&-%%Kc""I&-%%K&-%%K&-%%K&-%%K&-%%K&-%%KD D DF F FF F FF F FF F FF F FF F FD D DF F FF F FF F FF F FF F FF F F  &-%%K&-%%K&-%%K&-%%KF F FF F FF F FF F F    <( ( (  @$ $ $L    ,   A A \A   \ , , \, H H \H   \$ $ $ \$ . . \. 3 3 \3 2 2 \2 2 2 \2   \  r   r%   c                   "     e Zd ZdZ fdZ xZS )KaitaiStructErrorzCommon ancestor for all error originating from Kaitai Struct usage.
    Stores KSY source path, pointing to an element supposedly guilty of
    an error.
    c                 p    t          t          |                               |d|           || _        d S )Nz: )superr   r   src_path)r   msgr   	__class__s      r   r   zKaitaiStructError.__init__  s8    &&//HHHcc0JKKK r   r1   r2   r3   __doc__r   __classcell__r   s   @r   r   r     sB         ! ! ! ! ! ! ! ! !r   r   c                   "     e Zd ZdZ fdZ xZS )UndecidedEndiannessErrorzError that occurs when default endianness should be decided with
    switch, but nothing matches (although using endianness expression
    implies that there should be some positive result).
    c                 Z    t          t          |                               d|           d S )Nz)unable to decide on endianness for a type)r   r  r   )r   r   r   s     r   r   z!UndecidedEndiannessError.__init__  s,    &--667bdlmmmmmr   r   r   s   @r   r  r    sK         n n n n n n n n nr   r  c                   "     e Zd ZdZ fdZ xZS )ValidationFailedErrorz~Common ancestor for all validation failures. Stores pointer to
    KaitaiStream IO object which was involved in an error.
    c                     t          t          |                               d|                                |fz  |           || _        d S )Nz at pos %d: validation failed: %s)r   r  r   rH   r/   )r   r   r/   r   r   s       r   r   zValidationFailedError.__init__  sI    #T**334VZ\Z`Z`ZbZbdgYh4hjrsssr   r   r   s   @r   r  r    sB                 r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationNotEqualErrorz{Signals validation failure: we required "actual" value to be equal to
    "expected", but it turned out that it's not.
    c                     t          t          |                               dt          |          dt          |          ||           || _        || _        d S )Nznot equal, expected 
, but got )r   r  r   reprr   r   )r   r   r   r/   r   r   s        r   r   z ValidationNotEqualError.__init__  sl    %t,,555^bck^l^l^l^lnrsynznznz6{}  BJ  	K  	K  	K r   r   r   s   @r   r  r    B                 r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationLessThanErrorzSignals validation failure: we required "actual" value to be
    greater than or equal to "min", but it turned out that it's not.
    c                     t          t          |                               dt          |          dt          |          ||           || _        || _        d S )Nznot in range, min r
  )r   r  r   r  r   r   )r   	min_boundr   r/   r   r   s        r   r   z ValidationLessThanError.__init__  sl    %t,,555\`aj\k\k\k\kmqrxmymymy6z|~  AI  	J  	J  	Jr   r   r   s   @r   r  r    r  r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationGreaterThanErrorzSignals validation failure: we required "actual" value to be
    less than or equal to "max", but it turned out that it's not.
    c                     t          t          |                               dt          |          dt          |          ||           || _        || _        d S )Nznot in range, max r
  )r   r  r   r  r   r   )r   	max_boundr   r/   r   r   s        r   r   z#ValidationGreaterThanError.__init__  sp    ($//888_cdm_n_n_n_nptu{p|p|p|9}  @B  DL  	M  	M  	Mr   r   r   s   @r   r  r    r  r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationNotAnyOfErrorzuSignals validation failure: we required "actual" value to be
    from the list, but it turned out that it's not.
    c                     t          t          |                               dt          |          z  ||           || _        d S )Nznot any of the list, got %s)r   r  r   r  r   r   r   r/   r   r   s       r   r   z ValidationNotAnyOfError.__init__  sC    %t,,556SW[\bWcWc6dfhjrsssr   r   r   s   @r   r  r    B                 r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationExprErrorz{Signals validation failure: we required "actual" value to match
    the expression, but it turned out that it doesn't.
    c                     t          t          |                               dt          |          z  ||           || _        d S )Nz#not matching the expression, got %s)r   r  r   r  r   r  s       r   r   zValidationExprError.__init__  sC    !4((112W[_`f[g[g2hjlnvwwwr   r   r   s   @r   r  r    r  r   r  )r   sysr   r/   r   r   r   r   version_infor   __version__API_VERSIONobjectr
   r%   r&   r   r  r  r  r  r  r  r  r   r   r   <module>r"     s.       



  0 0 0 0 0 0 0 0 0 0 0 0	qQ 
 % % % % %6 % % %@B B B B B6 B B BJ! ! ! ! !	 ! ! !n n n n n0 n n n    -       3       3       !6       3       /     r   