
    4)di$                       U d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ  ej        d          Zded<    ej        d          Zded<   d	Z ej        d
ej                  Zded<    ej        d          Zded<    ej        dej                  Zded<    ej        d          Zded<    ej        d          Zded<    ej        d          Zded<    ej        d          Zded<   ddddddddddd d!d"d#Zd$ed%<   ddd&d'd(d)d(d)d*d+d,d-d.d#Zd$ed/<   ddd0d1d2d3d2d3d4d5d6d7d8d#Zd$ed9<   d:d:d;d;d<d<d<d<d=d=d;d<d=d#Zd>ed?<   dWdDZ ej        e          dXdH            Z ej        e          dYdJ            Z  ej        e          dZdM            Z! ej        e          d[dN            Z" ej        e          d\d]dS            Z# ej        dT          Z$d^dVZ%dS )_    )annotationsN)TupleListOptionalPatternDictUnionMatchz!^([a-zA-Z][a-zA-Z0-9_]*?):?(\d*)$zPattern[str]NAME_INT_REz+^([a-zA-Z][a-zA-Z0-9_]*?):?([a-zA-Z0-9_]+)$NAME_KWARG_RE   z"^(?P<len>[^=]+)?(=(?P<value>.*))?$DEFAULT_BITSz^(?P<factor>.*)\*(?P<token>.+)MULTIPLICATIVE_REz ^(?P<name>0([xob]))(?P<value>.+)
LITERAL_REz4^(?P<endian>[<>@=])(?P<fmt>(?:\d*[bBhHlLiIqQefd])+)$STRUCT_PACK_REz5^(?P<endian>[<>@=])?(?P<fmt>(?:\d*[bBhHlLiIqQefd])+)$BYTESWAP_STRUCT_PACK_REz,^(?P<endian>[<>@=])(?P<fmt>[bBhHlLiIqQefd])$SINGLE_STRUCT_PACK_REz\d*[bBhHlLiIqQefd]STRUCT_SPLIT_REint8uint8intbe16uintbe16intbe32uintbe32intbe64uintbe64	floatbe16	floatbe32	floatbe64)bBhHlLiIqQefdzDict[str, str]REPLACEMENTS_BEintle16uintle16intle32uintle32intle64uintle64	floatle16	floatle32	floatle64REPLACEMENTS_LEintne16uintne16intne32uintne32intne64uintne64	floatne16	floatne32	floatne64REPLACEMENTS_NE            zDict[str, int]PACK_CODE_SIZEm
Match[str]return	List[str]c                8   |                      d          }t          j        t          |                      d                    }d                    d |D                       }|dv rd |D             }n'|dk    rd |D             }n|d	k    sJ d
 |D             }|S )z:Parse struct-like format string token into sub-token list.endianfmt c                x    g | ]7}t          |          d k    r |d         t          |dd                   z  n|8S )rB   N)lenint.0r+   s     V/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/bitstring/utils.py
<listcomp>z structparser.<locals>.<listcomp>D   sS     * * * +.a&&A++1R53q"v;;&&* * *    z@=c                (    g | ]}t           |         S  )rA   rT   cs     rU   rV   z structparser.<locals>.<listcomp>H       222/!$222rW   <c                (    g | ]}t           |         S rY   )r7   rZ   s     rU   rV   z structparser.<locals>.<listcomp>J   r\   rW   >c                (    g | ]}t           |         S rY   )r-   rZ   s     rU   rV   z structparser.<locals>.<listcomp>M   r\   rW   )grouprefindallr   join)rG   rL   
formatlistrM   tokenss        rU   structparserrg   >   s    WWXFOQWWU^^<<J
'' * *(* * * + +C~~22c222	322c222}}}}22c222MrW   rM   strTuple[str, Optional[int]]c                   t                               |           x}rB|                    d          }|                    d          }|dk    rd nt          |          }nt                              |           x}rc|                    d          }	 ||                    d                   }n!# t
          $ r t          d|  d          w xY wt          |          }nt          d|  d          ||fS )NrB   rC   rN   z#Can't parse 'name[:]length' token ''.)r   matchra   rR   r   KeyError
ValueError)rM   kwargsm2name
length_strlengthrG   s          rU   parse_name_length_tokenrt   Q   s    s###r Lxx{{XXa[[
#r))s: ##C(((1 	L771::DP#AGGAJJ/

 P P P !Ns!N!N!NOOOP__FFJ3JJJKKK<s   B- -C#Optional[Tuple[str, Optional[int]]]c                &   t                               |           x}rt|                    d          }|                    d          }|dk    rt          |         } n'|dk    rt          |         } n|dv sJ t
          |         } t          |           S d S )NrL   rM   r_   r]   z=@)r   rl   ra   r-   r7   rA   rt   )rM   rG   rL   r+   s       rU   parse_single_struct_tokenrw   f   s    !'',,,q ""GGENNS==!!$CCs]]!!$CCT>>>>!!$C&s+++trW   tokenTuple[str, str, Optional[str]]c                   |                      d          x}dk    rd }n| |dz   d          }| d |         } t                              |           x}r5|                    d          }|                    d          }|dk    rd n|}nKt                              |           x}r+|                    d          }|                    d          }nd}| }|||fS )N=rP   rB   rC   rN   bits)findr   rl   ra   r   )rx   
equals_posvaluerp   rq   rr   rs   m3s           rU   parse_single_tokenr   w   s    jjoo%
",,j1noo&kzk"u%%%r xx{{XXa[[
#r))z""5))	) xx{{! rW   c                   t          d                    |                                                     } d |                     d          D             }g }|D ]}|dk    r	d}t                              |          x}r7t          |                    d                    }|                    d          }t                              |          x}rt          |          n|g}|	                    ||z             |S )NrN   c                6    g | ]}|                                 S rY   )striprS   s     rU   rV   z%preprocess_tokens.<locals>.<listcomp>   s     55517799555rW   ,rB   factorrx   )
expand_bracketsrd   splitr   rl   rR   ra   r   rg   extend)rM   meta_tokensfinal_tokens
meta_tokenr   rG   rf   s          rU   preprocess_tokensr      s     "''#))++..
/
/C 65ciinn555KL! - -
!''
3331 	***++F))J +9*>*>z*J*J%JQ]aR\Q] 	FVO,,,,rW   rY   keysTuple[str, ...]CTuple[bool, List[Tuple[str, Union[int, str, None], Optional[str]]]]c                   t          |           }d}g }|D ]}|r||v r|                    |ddf           !|dk    r(t                              |          x}r?|                    |                    d          d|                    d          f           t          |          \  }}}	|d}|:	 t          |          }n)# t          $ r |r||vrt          d| d          Y nw xY w|                    |||	f           ||fS )	a  Divide the format string into tokens and parse them.

    Return stretchy token and list of [initialiser, length, value]
    initialiser is one of: hex, oct, bin, uint, int, se, ue, 0x, 0o, 0b etc.
    length is None if not known, as is value.

    If the token is in the keyword dictionary (keys) then it counts as a
    special case and isn't messed with.

    tokens must be of the form: [factor*][initialiser][:][length][=value]

    FNrN   rq   r   TzDon't understand length 'z' of token.)r   appendr   rl   ra   r   rR   rn   )
rM   r   rf   stretchy_tokenret_valsrx   rG   rq   rs   r   s
             rU   tokenparserr      sc    s##FNGIH / / 	ETMMOOUD$/000B;;  '''1 	OOQWWV__dAGGG4D4DEFFF077fe>!NVV V V V VvT11$%T%T%T%TUUU  21V 	vu-....8##s   3C#C)(C)z(?P<factor>\d+)\*\(sc                   	 |                      d          }|dk    rnPd}|dz   }|t          |           k     r;|| |         dk    | |         dk    z
  z  }|dk    rn|dz  }|t          |           k     ;|dk    rt          d|  d          |dk    s| |dz
           d	k    r'| d|         | |dz   |         z   | |dz   d
         z   } nt                              |           }|rut          |                    d                    }|                    d          }| d|         |dz
  | |dz   |         dz   z  z   | |dz   |         z   | |dz   d
         z   } nt          d|  d          m| S )zExpand all brackets.T(rP   rB   )r   zUnbalanced parenthesis in 'rk   *Nr   r   zFailed to parse ')r}   rQ   rn   
BRACKET_REsearchrR   ra   start)r   r   countprG   r   
matchstarts          rU   r   r      s   <sB;;AI#a&&jjadckadck22EzzFA	 #a&&jj
 A::@1@@@AAAA::519,,!E'
Quqy{^+aAi7AA !!!$$A <QWWX..//WWX..
a
lOvza	!ns6J&KKaPUXYPYZ[P[n\_`abefafagag_hh !:Q!:!:!:;;;/<0 HrW   )rG   rH   rI   rJ   )rM   rh   rI   ri   )rM   rh   rI   ru   )rx   rh   rI   ry   )rM   rh   rI   rJ   )rY   )rM   rh   r   r   rI   r   )r   rh   rI   rh   )&
__future__r   	functoolsrb   typingr   r   r   r   r   r	   r
   compiler   __annotations__r   
CACHE_SIZE
IGNORECASEr   r   r   r   r   r   r   r-   r7   rA   rF   rg   	lru_cachert   rw   r   r   r   r   r   rY   rW   rU   <module>r      s   " " " " " " "     				 E E E E E E E E E E E E E E E E E E 'BJ'KLL L L L L )bj)WXX X X X X
'RZ(Mr}]] ] ] ] ]","*-N"O"O  O O O O &2:&I2=YY
 Y Y Y Y  *rz*abb b b b b(2
3k(l(l  l l l l&0bj1`&a&a  a a a a !+
+@ A A A A A A )/W(1
(1
(1
(1
(3+K#Y #Y Y Y Y Y )/W(1
(1
(1
(1
(3+K#Y #Y Y Y Y Y )/W(1
(1
(1
(1
(3+K#Y #Y Y Y Y Y ()qqqqqWX_`'(qqqq"J "J J J J J   & Z     ! ( Z     !   Z     ! , Z     ! 4 Z  '$ '$ '$ '$ ! '$T RZ.//
     rW   