ó
    ùŠÂjÆ^ ã                   ó  • S SK Jr  S SKJrJrJrJrJrJrJ	r	J
r
Jr  SSKJr  SSKJrJr  SSKJrJr  \ " S S5      5       r " S	 S
\5      r " S S5      r1 Skr0 SS _SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_S!S"_S#S"_S$S%_S&S%_S'S%0Er1 S(krS)S*1r1 S+kr1 S,kr\\-  \-  \-  1 S-k-  r1 S.kr1 S/kr S0S11r!1 S2kr"S31r#1 S4kr$\\ -  \!-  \"-  \#-  \$-  r%1 S5kr& " S6 S75      r' " S8 S9\
5      r(\S:   r) " S; S<\
5      r*g=)>é    )Ú	dataclass)	ÚAnyÚDictÚListÚLiteralÚNoReturnÚOptionalÚTupleÚ	TypedDictÚcasté   )Úc_ast)ÚCLexerÚ_Token)Úfix_switch_casesÚfix_atomic_specifiersc                   óP   • \ rS rSr% Sr\\S'   \\S'   Sr\	\   \S'   S\4S jr
S	rg)
ÚCoordé   z[Coordinates of a syntactic element. Consists of:
- File name
- Line number
- Column number
ÚfileÚlineNÚcolumnÚreturnc                 ó‚   • U R                    SU R                   3nU R                  (       a  USU R                   3-  nU$ )NÚ:©r   r   r   )ÚselfÚtexts     ÚH/var/www/website/venv/lib/python3.13/site-packages/pycparser/c_parser.pyÚ__str__ÚCoord.__str__'   s;   € Ø—)‘)�˜A˜dŸi™i˜[Ð)ˆØ�;�;Ø�a˜Ÿ™�}Ð%Ñ%ˆDØˆó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstrÚ__annotations__Úintr   r	   r    Ú__static_attributes__r#   r"   r   r   r      s-   ‡ ñð ƒIØ
ƒIØ €FˆH�S‰MÓ ð˜÷ r"   r   c                   ó   • \ rS rSrSrg)Ú
ParseErroré.   r#   N)r$   r%   r&   r'   r,   r#   r"   r   r.   r.   .   s   † Úr"   r.   c                   ó"  • \ rS rSrSrS\SSSSS4S\S	\\   S
\S\S\S\S\SS4S jjr	 S±S\S\S\S\
R                  4S jjrS²S\S\\   S\4S jjrS\S\\-  S-  S\4S jrS³S jrS³S jrS\S\\   SS4S jrS\S\\   SS4S  jrS\S\4S! jrS\S"\S\SS4S# jrS³S$ jrS³S% jrS\S\4S& jrS'\S(\S\
R:                  4S) jrS'\
R>                  \
R@                  -  \
RB                  -  S*\"\   S\
R>                  \
R@                  -  \
RB                  -  4S+ jr# S´S,\S-   S.\S/S0S1\SS-4
S2 jjr$ S´S3S-S4\"S5   S6\S\"\
R:                     4S7 jjr%S3S-S'\
R:                  S8\\"\
R:                        S9\
R:                  S\
R:                  4
S: jr&S;\S\4S< jr'SµS=\S\\(   4S> jjr)SµS=\S\\   4S? jjr*S\(4S@ jr+SA\S\\(   4SB jr,SA\S\(4SC jr-S\4SD jr.SE\SS4SF jr/SG\(S\4SH jr0S²SG\\(   S\4SI jjr1S²SG\\(   S\4SJ jjr2S\4SK jr3S´SL\S\4SM jjr4S\5\\   \4   4SN jr6 S¶SO\SP\S\5\\
R:                     \4   4SQ jjr7S\5\\   \4   4SR jr8S\4SS jr9S\4ST jr:S\\5\
RB                  \\(4      4SU jr;S\
R                  4SV jr<S\"\
R:                     4SW jr=S\"\
R:                     4SX jr>S\"\
R:                     4SY jr?S\"\
R:                     4SZ jr@S3S-S[\S\"\
R:                     4S\ jrAS\"\
R:                     4S] jrB S´S^\S\5S-\\\   4   4S_ jjrCS·S` jrDS\"\   4Sa jrES\
R:                  4Sb jrFS\
R:                  4Sc jrG S¸Sd\S5   SL\S\"S5   4Se jjrHS´SL\SS54Sf jjrIS\
R:                  4Sg jrJS\"\
R:                     4Sh jrKS\\"\
R:                        4Si jrLS\"S5   4Sj jrMS¹Sk jrNS\
R:                  4Sl jrOS\
R:                  4Sm jrPS\
R:                  4Sn jrQS\
R:                  4So jrRS\
R:                  4Sp jrSS\
R:                  4Sq jrTS\
R:                  4Sr jrUS/\Ss\S\
R:                  4St jrV SºS/\Ss\S\
R:                  4Su jjrWS'\
R:                  S\
R:                  4Sv jrXSw\
R:                  S\
R:                  4Sx jrY S²Sy\\
R:                     S\\   S\
R:                  4Sz jjrZSw\
R:                  S\
R:                  4S{ jr[S\\
R:                     4S| jr\S\
Rº                  4S} jr^S\
Rº                  4S~ jr_S\
R:                  4S jr`S3S-S'\\
R:                     S€\\   S\
R:                  4S� jraS\\
R:                     4S‚ jrbS\
R:                  4Sƒ jrcS\
RB                  4S„ jrdS\\
R:                     4S… jreS\
R:                  4S† jrfS\\
Rº                     4S‡ jrgS\
R:                  4Sˆ jrhS\
R:                  \"\
R:                     -  4S‰ jriS\
R:                  \"\
R:                     -  4SŠ jrjS\
R:                  \"\
R:                     -  4S‹ jrkS\"\
R:                     4SŒ jrlS\
R:                  4S� jrmS\
R:                  4SŽ jrnS\
R:                  4S� jroS\
R:                  4S� jrpS\
R:                  4S‘ jrqS\
R:                  4S’ jrrS\\
R:                     4S“ jrsS\
R:                  4S” jrtS\
R:                  4S• jruS\
R:                  4S– jrv S»S—\S˜\\
R:                     S\
R:                  4S™ jjrwS\
R:                  4Sš jrxS\
R:                  4S› jryS\
R:                  4Sœ jrzS\
R:                  4S� jr{S\
R:                  4Sž jr|S\
R:                  4SŸ jr}S\
R:                  4S  jr~S\
R:                  4S¡ jrS\
R:                  4S¢ jr€S\
R:                  4S£ jr�S\
R:                  4S¤ jr‚S\
R:                  4S¥ jrƒS\
R:                  4S¦ jr„S\
R:                  4S§ jr…S\
R:                  4S¨ jr†S\"\
R:                     4S© jr‡S\"\
R:                     4Sª jrˆS\
R:                  4S« jr‰S\4S¬ jrŠS\
R:                  4S­ jr‹S\"\
R:                     4S® jrŒS\"\
R:                     4S¯ jr�S°rŽg)¼ÚCParseré2   a*  Recursive-descent C parser.

Usage:
    parser = CParser()
    ast = parser.parse(text, filename)

The `lexer` parameter lets you inject a lexer class (defaults to CLexer).
The parameters after `lexer` are accepted for backward compatibility with
the old PLY-based parser and are otherwise unused.
Tzpycparser.lextabzpycparser.yacctabFÚ Úlex_optimizeÚlexerÚlextabÚyacc_optimizeÚyacctabÚ
yacc_debugÚtaboutputdirr   Nc                 óÄ   • U" U R                   U R                  U R                  U R                  S9U l        [        5       /U l        [        U R                  5      U l        g )N)Ú
error_funcÚon_lbrace_funcÚon_rbrace_funcÚtype_lookup_func)	Ú_lex_error_funcÚ_lex_on_lbrace_funcÚ_lex_on_rbrace_funcÚ_lex_type_lookup_funcÚclexÚdictÚ_scope_stackÚ_TokenStreamÚ_tokens)r   r4   r5   r6   r7   r8   r9   r:   s           r   Ú__init__ÚCParser.__init__>   sR   € ñ "Ø×+Ñ+Ø×3Ñ3Ø×3Ñ3Ø!×7Ñ7ñ	
ˆŒ	ô 59³F°8ˆÔÜ%1°$·)±)Ó%<ˆ�r"   r   ÚfilenameÚdebugc                 ó2  • [        5       /U l        U R                  R                  X5        [	        U R                  5      U l        U R                  5       nU R                  5       nUb.  U R                  SUR                   3U R                  U5      5        U$ )zíParses C code and returns an AST.

text:
    A string containing the C source code

filename:
    Name of the file being parsed (for meaningful
    error messages)

debug:
    Deprecated debug flag (unused); for backwards compatibility.
úbefore: )rE   rF   rD   ÚinputrG   rH   Ú _parse_translation_unit_or_emptyÚ_peekÚ_parse_errorÚvalueÚ
_tok_coord)r   r   rK   rL   ÚastÚtoks         r   ÚparseÚCParser.parseZ   sw   € ô "›V˜HˆÔØ�	‰	�‰˜Ô'Ü# D§I¡IÓ.ˆŒà×3Ñ3Ó5ˆØ�j‰j‹lˆØ‰?Ø×Ñ ¨¯©¨Ð4°d·o±oÀcÓ6JÔKØˆ
r"   Úlinenor   c                 ó>   • [        U R                  R                  XS9$ )Nr   )r   rD   rK   )r   rY   r   s      r   Ú_coordÚCParser._coordv   s   € Ü˜$Ÿ)™)×,Ñ,°6ÑIÐIr"   ÚmsgÚcoordc                 ó"   • [        U SU 35      e)Nz: )r.   )r   r]   r^   s      r   rR   ÚCParser._parse_errory   s   € Ü˜E˜7 " S EÐ*Ó+Ð+r"   c                 óJ   • U R                   R                  [        5       5        g ©N)rF   ÚappendrE   ©r   s    r   Ú_push_scopeÚCParser._push_scope|   s   € Ø×Ñ× Ñ ¤£Õ(r"   c                 ón   • [        U R                  5      S:”  d   eU R                  R                  5         g )Nr   )ÚlenrF   Úpoprd   s    r   Ú
_pop_scopeÚCParser._pop_scope   s-   € Ü�4×$Ñ$Ó%¨Ó)Ð)Ð)Ø×Ñ×ÑÕr"   Únamec                 óž   • U R                   S   R                  US5      (       d  U R                  SU< S3U5        SU R                   S   U'   g)z9Add a new typedef name (ie a TYPEID) to the current scopeéÿÿÿÿTzTypedef z1 previously declared as non-typedef in this scopeN©rF   ÚgetrR   ©r   rl   r^   s      r   Ú_add_typedef_nameÚCParser._add_typedef_nameƒ   sU   € à× Ñ  Ñ$×(Ñ(¨¨t×4Ñ4Ø×ÑØ˜4™(Ð"SÐTØôð '+ˆ×Ñ˜"Ñ˜dÒ#r"   c                 óž   • U R                   S   R                  US5      (       a  U R                  SU< S3U5        SU R                   S   U'   g)zPAdd a new object, function, or enum member name (ie an ID) to the
current scope
rn   FzNon-typedef z- previously declared as typedef in this scopeNro   rq   s      r   Ú_add_identifierÚCParser._add_identifierŒ   sW   € ð ×Ñ˜RÑ ×$Ñ$ T¨5×1Ñ1Ø×ÑØ˜t™hÐ&SÐTØôð ',ˆ×Ñ˜"Ñ˜dÒ#r"   c                 ól   • [        U R                  5       H  nUR                  U5      nUc  M  Us  $    g)z.Is *name* a typedef-name in the current scope?F)ÚreversedrF   rp   )r   rl   ÚscopeÚin_scopes       r   Ú_is_type_in_scopeÚCParser._is_type_in_scope—   s6   € ä˜d×/Ñ/Ö0ˆEð —y‘y “ˆHØÓ#Ø’ñ 1ð r"   r   c                 óD   • U R                  XR                  X#5      5        g rb   )rR   r[   )r   r]   r   r   s       r   r@   ÚCParser._lex_error_func¡   s   € Ø×Ñ˜#Ÿ{™{¨4Ó8Õ9r"   c                 ó$   • U R                  5         g rb   )re   rd   s    r   rA   ÚCParser._lex_on_lbrace_func¤   s   € Ø×ÑÕr"   c                 ó$   • U R                  5         g rb   )rj   rd   s    r   rB   ÚCParser._lex_on_rbrace_func§   s   € Ø�‰Õr"   c                 ó$   • U R                  U5      $ )zzLooks up types that were previously defined with
typedef.
Passed to the lexer for recognizing identifiers that
are types.
)r{   )r   rl   s     r   rC   ÚCParser._lex_type_lookup_funcª   s   € ð ×%Ñ% dÓ+Ð+r"   ÚdeclÚmodifierc                 ó®  • UnUnUR                   (       a  UR                   nUR                   (       a  M  [        U[        R                  5      (       a  Xl         U$ Un[        UR                   [        R                  5      (       d7  UR                   n[        UR                   [        R                  5      (       d  M7  UR                   Ul         X5l         U$ )zTacks a type modifier on a declarator, and returns
the modified declarator.

Note: the declarator and modifier may be modified
)ÚtypeÚ
isinstancer   ÚTypeDecl)r   r…   r†   Úmodifier_headÚmodifier_tailÚ	decl_tails         r   Ú_type_modify_declÚCParser._type_modify_declÔ   s¤   € ð !ˆØ ˆð × × Ø)×.Ñ.ˆMð × × Ñ ô �dœEŸN™N×+Ñ+Ø!%ÔØˆOð
 ˆIÜ  §¡´·±×@Ñ@Ø%ŸN™N�	ô ! §¡´·±×@Ó@ð "+§¡ˆMÔØ*ŒNØˆKr"   Útypenamec                 ó4  • Un[        U[        R                  5      (       d-  UR                  n[        U[        R                  5      (       d  M-  UR                  Ul        UR                  SS Ul        U HY  n[        U[        R                  5      (       a  M$  [        U5      S:”  a  U R                  SUR                  5        MQ  XCl        Us  $    U(       dl  [        UR                  [        R                  5      (       d  U R                  SUR                  5        [        R                  " S/UR                  S9Ul        U$ [        R                  " U VVs/ s H  oUR                    H  ofPM     M     snnUS   R                  S9Ul        U$ s  snnf )z#Fixes a declaration. Modifies decl.Nr   z Invalid multiple types specifiedúMissing type in declarationr+   ©r^   r   )r‰   r   rŠ   rˆ   Údeclnamerl   ÚqualsÚIdentifierTyperh   rR   r^   ÚFuncDeclÚnames)r   r…   r�   ÚtypÚtnÚidrl   s          r   Ú_fix_decl_name_typeÚCParser._fix_decl_name_type   s4  € ð ˆÜ˜S¤%§.¡.×1Ñ1Ø—(‘(ˆCô ˜S¤%§.¡.×1Ó1ð —L‘LˆŒ	Ø—J‘J™q�MˆŒ	ó ˆBÜ˜b¤%×"6Ñ"6×7Ó7Ü�x“= 1Ó$Ø×%Ñ%Ð&HÈ"Ï(É(ÖSà!”HØ’Kñ ö ä˜dŸi™i¬¯©×8Ñ8Ø×!Ñ!Ð"?ÀÇÁÔLÜ×+Ò+¨U¨G¸4¿:¹:ÑFˆCŒHð ˆô ×+Ò+Ù (Ô>¢˜"·XµX¨T’±X‘¡Ò>ÀhÈqÁk×FWÑFWñˆCŒHð ˆùó ?s   ÅF
ÚdeclspecÚ	_DeclSpecÚnewspecÚkindÚ_DeclSpecKindrc   c                 óŒ   • Uc  [        / / / / / S9nOUnU(       a  XS   R                  U5        U$ XS   R                  SU5        U$ )z2See _DeclSpec for the specifier dictionary layout.©ÚqualÚstoragerˆ   ÚfunctionÚ	alignmentr   )rE   rc   Úinsert)r   rž   r    r¡   rc   Úspecs         r   Ú_add_declaration_specifierÚ"CParser._add_declaration_specifier(  sY   € ð ÑÜ"Ø ¨"°rÀRñ‰Dð ˆDæØ‰J×Ñ˜gÔ&ð ˆð ‰J×Ñ˜a Ô)àˆr"   rª   ÚdeclsÚ	_DeclInfoÚtypedef_namespacec                 ó>  • SUS   ;   n/ nUS   R                  S5      GcÏ  US   S   cä  [        US   5      S:  dH  [        US   S	   R                  5      S
:w  d)  U R                  US   S	   R                  S   5      (       d?  SnUS    H"  n[	        US5      (       d  M  UR
                  n  O   U R                  SU5        [        R                  " US   S	   R                  S   SSUS   US   S	   R
                  S9US   S'   US   S		 Oâ[        US   S   [        R                  [        R                  [        R                  [        R                  45      (       d�  [        [        US   S   5      n[        U[        R                  5      (       d-  UR                   n[        U[        R                  5      (       d  M-  UR"                  c   US   S	   R                  S   Ul        US   S		 U GH¦  n	U	S   c   eU(       a/  [        R$                  " SUS   US   U	S   U	S   R
                  S9n
OV[        R&                  " SUS   US   US   US   U	S   U	R                  S5      U	R                  S5      U	S   R
                  S9	n
[        U
R                   [        R                  [        R                  [        R                  [        R                  45      (       a  U
nOU R)                  X¡S   5      nU(       aT  U(       a'  U R+                  UR,                  UR
                  5        O&U R/                  UR,                  UR
                  5        [1        [        [        R&                  [        R$                  -  U5      5      nUR3                  U5        GM©     U$ )zÒBuilds a list of declarations all sharing the given specifiers.
If typedef_namespace is true, each declared name is added
to the "typedef namespace", which also includes objects,
functions, and enum constants.
Útypedefr¦   r   ÚbitsizeNr…   rˆ   é   rn   r   Ú?r^   úInvalid declarationr¨   ©r”   rˆ   r•   Úalignr^   r¥   )rl   r•   r¦   rˆ   r^   r§   Úinit©	rl   r•   r·   r¦   Úfuncspecrˆ   r¸   r²   r^   )rp   rh   r˜   r{   Úhasattrr^   rR   r   rŠ   r‰   ÚEnumÚStructÚUnionr–   r   r   rˆ   r”   ÚTypedefÚDeclrœ   rr   rl   ru   r   rc   )r   rª   r­   r¯   Ú
is_typedefÚdeclarationsr^   ÚtÚdecls_0_tailr…   ÚdeclarationÚ
fixed_decls               r   Ú_build_declarationsÚCParser._build_declarations>  sT  € ð  $ y¡/Ñ1ˆ
Øˆð �‰8�<‰<˜	Ó"Ò*ð
 �Q‰x˜ÑÑ'ä˜˜V™Ó%¨Ó)Ü˜4 ™<¨Ñ+×1Ñ1Ó2°aÓ7Ø×1Ñ1°$°v±,¸rÑ2B×2HÑ2HÈÑ2K×LÑLà�EØ! &œ\˜Ü" 1 g×.Ó.Ø$%§G¡G˜EÙ!ñ *ð ×%Ñ%Ð&;¸UÔCô $)§>¢>Ø! &™\¨"Ñ-×3Ñ3°AÑ6ØØØ˜{Ñ+Ø˜v™, rÑ*×0Ñ0ñ$��a‘˜Ñ ð ˜‘L Ñ$ô  Ø�a‘˜Ñ Ü—‘œUŸ\™\¬5¯;©;¼×8LÑ8LÐM÷ñ ô  $¤C¨¨q©°&Ñ)9Ó:�Ü$ \´5·>±>×BÑBØ#/×#4Ñ#4�Lô % \´5·>±>×BÓBà×(Ñ(Ñ0Ø,0°©L¸Ñ,<×,BÑ,BÀ1Ñ,E�LÔ)Ø˜V™ RÐ(äˆDØ˜‘<Ñ+Ð+Ð+ÞÜ#ŸmšmØØ˜v™,Ø  ™OØ˜f™Ø˜v™,×,Ñ,ñ‘ô $ŸjšjØØ˜v™,Ø˜{Ñ+Ø  ™OØ! *Ñ-Ø˜f™ØŸ™ &Ó)Ø ŸH™H YÓ/Ø˜v™,×,Ñ,ñ
�ô Ø× Ñ Ü—‘œUŸ\™\¬5¯;©;¼×8LÑ8LÐM÷ñ ð )‘
à!×5Ñ5°kÈÁ<ÓP�
ö !ÞØ×*Ñ*¨:¯?©?¸J×<LÑ<LÕMà×(Ñ(¨¯©¸*×:JÑ:JÔKä.Ü”U—Z‘Z¤%§-¡-Ñ/°Ó<óˆJð ×Ñ 
×+ñU ðX Ðr"   Úparam_declsÚbodyc           	      óÆ   • SUS   ;   a  U R                  SUR                  5        U R                  U[        USSS9/SS9S   n[        R
                  " XSXBR                  S	9$ )
zBuilds a function definition.r±   r¦   zInvalid typedefN©r…   r¸   r²   T©rª   r­   r¯   r   )r…   rÉ   rÊ   r^   )rR   r^   rÇ   rE   r   ÚFuncDef)r   rª   r…   rÉ   rÊ   rÅ   s         r   Ú_build_function_definitionÚ"CParser._build_function_definition¥  su   € ð ˜˜Y™Ó'Ø×ÑÐ/°·±Ô<à×.Ñ.ØÜ˜T¨°dÑ;Ð<Ø"ð /ð 
ð ñ	ˆô �}Š}Ø¸DÏ
É
ñ
ð 	
r"   Útokenc                 óN   • US:X  a  [         R                  $ [         R                  $ )zKGiven a token (either STRUCT or UNION), selects the
appropriate AST class.
Ústruct)r   r½   r¾   )r   rÑ   s     r   Ú_select_struct_union_classÚ"CParser._select_struct_union_classº  s    € ð �HÓÜ—<‘<Ðä—;‘;Ðr"   Úkc                 ó8   • U R                   R                  U5      $ )z:Return the k-th next token without consuming it (1-based).)rH   Úpeek©r   rÖ   s     r   rQ   ÚCParser._peekÆ  s   € à�|‰|× Ñ  Ó#Ð#r"   c                 óF   • U R                  U5      nUb  UR                  $ S$ )zDReturn the type of the k-th next token, or None if absent (1-based).N)rQ   rˆ   )r   rÖ   rV   s      r   Ú
_peek_typeÚCParser._peek_typeÊ  s"   € à�j‰j˜‹mˆØ™?ˆs�x‰xÐ4°Ð4r"   c                 óŽ   • U R                   R                  5       nUc'  U R                  SU R                  R                  5        g U$ )NzAt end of input)rH   ÚnextrR   rD   rK   ©r   rV   s     r   Ú_advanceÚCParser._advanceÏ  s9   € Ø�l‰l×ÑÓ!ˆØ‰;Ø×ÑÐ/°·±×1CÑ1CÕDàˆJr"   Ú
token_typec                 ój   • U R                  5       nUb   UR                  U:X  a  U R                  5       $ g)zªConditionally consume next token, only if it's of token_type.

If it is of the expected type, consume and return it.
Otherwise, leaves the token intact and returns None.
N)rQ   rˆ   rá   ©r   rã   rV   s      r   Ú_acceptÚCParser._acceptÖ  s.   € ð �j‰j‹lˆØ‰?˜sŸx™x¨:Ó5Ø—=‘=“?Ð"Ør"   c                 ó¢   • U R                  5       nUR                  U:w  a.  U R                  SUR                   3U R	                  U5      5        U$ )NrN   )rá   rˆ   rR   rS   rT   rå   s      r   Ú_expectÚCParser._expectá  sB   € Ø�m‰m‹oˆØ�8‰8�zÓ!Ø×Ñ ¨¯©¨Ð4°d·o±oÀcÓ6JÔKØˆ
r"   c                 ó6   • U R                   R                  5       $ rb   )rH   Úmarkrd   s    r   Ú_markÚCParser._markç  s   € Ø�|‰|× Ñ Ó"Ð"r"   rì   c                 ó:   • U R                   R                  U5        g rb   )rH   Úreset©r   rì   s     r   Ú_resetÚCParser._resetê  s   € Ø�‰×Ñ˜4Õ r"   rV   c                 óN   • U R                  UR                  UR                  5      $ rb   )r[   rY   r   rà   s     r   rT   ÚCParser._tok_coordí  s   € Ø�{‰{˜3Ÿ:™: s§z¡zÓ2Ð2r"   c                 ób   • U=(       d    U R                  5       nUc  gUR                  [        ;   $ ©NF)rQ   rˆ   Ú_DECL_STARTrà   s     r   Ú_starts_declarationÚCParser._starts_declarationð  s)   € Ø×!�T—Z‘Z“\ˆØ‰;ØØ�x‰xœ;Ñ&Ð&r"   c                 ób   • U=(       d    U R                  5       nUc  gUR                  [        ;   $ r÷   )rQ   rˆ   Ú_STARTS_EXPRESSIONrà   s     r   Ú_starts_expressionÚCParser._starts_expressionö  s*   € Ø×!�T—Z‘Z“\ˆØ‰;ØØ�x‰xÔ-Ñ-Ð-r"   c                 ó`   • U R                  5       nUc  gU[        ;   a  gU R                  5       $ )NFT)rÜ   Ú_STARTS_STATEMENTrý   ©r   Útok_types     r   Ú_starts_statementÚCParser._starts_statementü  s2   € Ø—?‘?Ó$ˆØÑØØÔ(Ó(ØØ×&Ñ&Ó(Ð(r"   Úid_onlyc                 óZ   • U R                  5       nUc  gUS;   a  gU(       a  US:H  $ US;   $ )NF>   ÚTIMESÚLPARENTÚID>   r	  ÚTYPEID©rÜ   )r   r  r  s      r   Ú_starts_declaratorÚCParser._starts_declarator  s=   € Ø—?‘?Ó$ˆØÑØØÐ*Ó*ØÞØ˜tÑ#Ð#ØÐ+Ñ+Ð+r"   c                 ón   • U R                  5       nU R                  5       u  p#U R                  U5        X#4$ rb   )rí   Ú_scan_declarator_name_inforò   )r   rì   r  Ú	saw_parens       r   Ú_peek_declarator_name_infoÚ"CParser._peek_declarator_name_info  s3   € Ø�z‰z‹|ˆØ"×=Ñ=Ó?ÑˆØ�‰�DÔØÐ"Ð"r"   Úallow_abstractÚtypeid_paren_as_abstractc                 ó¶  • U R                  5       u  p4Ub  U(       at  US:X  an  U(       ag  U(       dL  U R                  5       nUb  U R                  U5      OU R                  R                  nU R                  SU5        U R                  5       nUS4$ US:X  a0  U(       a  U R                  5       nUS4$ U R                  5       n US4$ U R                  5       nUS4$ )Nr
  zInvalid declaratorFT)
r  rQ   rT   rD   rK   rR   Ú_parse_abstract_declarator_optÚ _parse_typeid_noparen_declaratorÚ_parse_typeid_declaratorÚ_parse_id_declarator)r   r  r  Ú	name_typer  rV   r^   r…   s           r   Ú_parse_any_declaratorÚCParser._parse_any_declarator  s×   € ð  $×>Ñ>Ó@Ñˆ	ØÑÞ$¨°hÓ)>Æ9æ!Ø—j‘j“l�Ø03±˜Ÿ™¨Ô,ÀTÇYÁY×EWÑEW�Ø×!Ñ!Ð"6¸Ô>Ø×6Ñ6Ó8ˆDØ˜�;Ðà˜Ó Þ'Ø×<Ñ<Ó>�ð
 �TˆzÐð ×4Ñ4Ó6‘ð �TˆzÐð ×,Ñ,Ó.ˆDØ�TˆzÐr"   c                 óØ  • SnU R                  S5      (       aZ  U R                  5       [        ;   a*  U R                  5         U R                  5       [        ;   a  M*  U R                  S5      (       a  MZ  U R	                  5       nUc  S U4$ UR
                  S;   a  U R                  5         UR
                  U4$ UR
                  S:X  a   SnU R                  5         U R                  5       u  p4U(       a  SnSn U R	                  5       nUc  S U4$ UR
                  S:X  a  US-  nO1UR
                  S:X  a!  US-  nU R                  5         US:X  a   X14$ M_  U R                  5         Mp  S U4$ )	NFr  >   r	  r
  r  Tr   ÚRPARENr   )ræ   rÜ   Ú_TYPE_QUALIFIERrá   rQ   rˆ   r  )r   r  rV   r  Únested_parenÚdepths         r   r  Ú"CParser._scan_declarator_name_info/  sM  € Øˆ	Ø�l‰l˜7×#Ñ#Ø—/‘/Ó#¤Ó6Ø—‘”ð —/‘/Ó#¤Õ6ð �l‰l˜7×#Ó#ð �j‰j‹lˆØ‰;Ø˜�?Ð"Ø�8‰8Ð'Ó'Ø�M‰MŒOØ—8‘8˜YÐ&Ð&Ø�8‰8�xÓØˆIØ�M‰MŒOØ%)×%DÑ%DÓ%FÑ"ˆHÞØ �	ØˆEØØ—j‘j“l�Ø‘;Ø ˜?Ð*Ø—8‘8˜xÓ'Ø˜Q‘J‘EØ—X‘X Ó)Ø˜Q‘J�EØ—M‘M”OØ “zØð Ð&Ð&ñ Ø—‘”ñ ð �YˆÐr"   c                 ó(   • U R                  5       S;   $ )N>   r  ÚLBRACKETr  rd   s    r   Ú"_starts_direct_abstract_declaratorÚ*CParser._starts_direct_abstract_declaratorR  s   € Ø�‰Ó Ð$:Ñ:Ð:r"   c                 ó^   • U R                  5       nUS L=(       a    UR                  [        ;   $ rb   )rQ   rˆ   Ú_ASSIGNMENT_OPSrà   s     r   Ú_is_assignment_opÚCParser._is_assignment_opU  s%   € Ø�j‰j‹lˆØ˜$ˆ×> 3§8¡8¬Ñ#>Ð>r"   c                 ó
  • U R                  5       nU R                  S5      nUc  gU R                  5       (       d  U R                  U5        gU R	                  5       nU R                  S5      c  U R                  U5        gX1U4$ )a:  Parse and return a parenthesized type name if present.

Returns (typ, mark, lparen_tok) when the next tokens look like
'(' type_name ')', where typ is the parsed type name, mark is the
token-stream position before parsing, and lparen_tok is the LPAREN
token. Returns None if no parenthesized type name is present.
r  Nr  )rí   ræ   rù   rò   Ú_parse_type_name)r   rì   Ú
lparen_tokr™   s       r   Ú_try_parse_paren_type_nameÚ"CParser._try_parse_paren_type_nameY  s{   € ð �z‰z‹|ˆØ—\‘\ (Ó+ˆ
ØÑØØ×'Ñ'×)Ñ)Ø�K‰K˜ÔØØ×#Ñ#Ó%ˆØ�<‰<˜Ó!Ñ)Ø�K‰K˜ÔØØ˜*Ð$Ð$r"   c                 ó˜   • U R                  5       c  [        R                  " / 5      $ [        R                  " U R                  5       5      $ rb   )rQ   r   ÚFileASTÚ_parse_translation_unitrd   s    r   rP   Ú(CParser._parse_translation_unit_or_emptyt  s5   € Ø�:‰:‹<ÑÜ—=’= Ó$Ð$Ü�}Š}˜T×9Ñ9Ó;Ó<Ð<r"   c                 ó�   • / nU R                  5       b2  UR                  U R                  5       5        U R                  5       b  M2  U$ rb   )rQ   ÚextendÚ_parse_external_declaration)r   Úexts     r   r2  ÚCParser._parse_translation_unitz  s;   € ØˆØ�j‰j‹lÑ&Ø�J‰J�t×7Ñ7Ó9Ô:ð �j‰j‹lÓ&àˆ
r"   c           
      ó†  • U R                  5       nUc  / $ UR                  S:X  a  U R                  5         / $ UR                  S;   a  U R                  5       /$ U R	                  S5      (       a  / $ UR                  S:X  a  U R                  5       $ U R                  U5      (       d‘  U R                  5       nS nU R                  5       S:w  a  U R                  SUR                  5        [        / / / [        R                  " S/UR                  S9// S	9nU R                  UUUU R                  5       S
9nU/$ U R!                  SS9u  pFnU R#                  5       u  p‰US:w  a$  U R%                  XF5      n
U R'                  S5        U
$ U R                  5       nU R                  5       S:X  d  U R                  5       (       až  S nU R                  5       (       a  U R)                  5       nU R                  5       S:w  a  U R                  SUR                  5        US   (       d  [        R                  " S/US9/US'   U R                  UUUU R                  5       S
9nU/$ [        US S S9nU R	                  S5      (       a  U R+                  5       US'   U R-                  US9n
U R/                  XJSS9n
U R'                  S5        U
$ )NÚPPHASH¾   Ú_PRAGMAÚPPPRAGMAÚSEMIÚ_STATIC_ASSERTÚLBRACEzInvalid function definitionr+   r“   )r¥   r¨   r¦   rˆ   r§   )rª   r…   rÉ   rÊ   T©Úallow_no_typer	  rˆ   rÌ   ÚEQUALSr¸   )ÚfirstrÍ   )rQ   rˆ   Ú_parse_pp_directiveÚ_parse_pppragma_directiveræ   Ú_parse_static_assertrù   r  rÜ   rR   r^   rE   r   r–   rÏ   Ú_parse_compound_statementÚ_parse_declaration_specifiersr  Ú_parse_decl_body_with_specré   Ú_parse_declaration_listÚ_parse_initializerÚ_parse_init_declarator_listrÇ   )r   rV   r…   rÉ   rª   ÚfuncÚsaw_typeÚ
spec_coordr  Ú_r­   Ú	decl_dicts               r   r6  Ú#CParser._parse_external_declaration†  s¼  € Ø�j‰j‹lˆØ‰;ØˆIØ�8‰8�xÓØ×$Ñ$Ô&ØˆIØ�8‰8Ð.Ó.Ø×2Ñ2Ó4Ð5Ð5Ø�<‰<˜×ÑØˆIØ�8‰8Ð'Ó'Ø×,Ñ,Ó.Ð.à×'Ñ'¨×,Ñ,ð ×,Ñ,Ó.ˆDØˆKØ�‰Ó  HÓ,Ø×!Ñ!Ð"?ÀÇÁÔLÜ"ØØØÜ×*Ò*¨E¨7¸$¿*¹*ÑEÐFØñˆDð ×2Ñ2ØØØ'Ø×3Ñ3Ó5ð	 3ð ˆDð �6ˆMð &*×%GÑ%GØð &Hð &
Ñ"ˆ˜
ð ×6Ñ6Ó8‰ˆ	Ø˜ÓØ×3Ñ3°DÓCˆEØ�L‰L˜Ô ØˆLà×(Ñ(Ó*ˆà�?‰?Ó Ó(¨D×,DÑ,D×,FÑ,FØˆKØ×'Ñ'×)Ñ)Ø"×:Ñ:Ó<�Ø�‰Ó  HÓ,Ø×!Ñ!Ð"?ÀÇÁÔLØ˜—<Ü %× 4Ò 4°e°WÀJÑ OÐP��V‘Ø×2Ñ2ØØØ'Ø×3Ñ3Ó5ð	 3ð ˆDð �6ˆMä!%¨4°dÀDÑ!Iˆ	Ø�<‰<˜×!Ñ!Ø $× 7Ñ 7Ó 9ˆI�fÑØ×0Ñ0°yÐ0ÐAˆØ×(Ñ(¨dÐSWÐ(ÐXˆØ�‰�VÔØˆr"   c                 óH   • U R                  5       nU R                  S5        U$ ©Nr>  )Ú_parse_decl_bodyré   ©r   r­   s     r   Ú_parse_declarationÚCParser._parse_declarationÜ  s!   € Ø×%Ñ%Ó'ˆØ�‰�VÔØˆr"   c                 óH   • U R                  SS9u  pnU R                  X5      $ )NTrA  )rI  rJ  )r   rª   rO  rQ  s       r   rV  ÚCParser._parse_decl_bodyâ  s+   € Ø ×>Ñ>ÈTÐ>ÐRÑˆ˜Ø×.Ñ.¨tÓ>Ð>r"   rO  c                 ó0  • S nU(       a&  U R                  5       (       a  U R                  5       nO#U R                  SS9(       a  U R                  SS9nUc°  US   n[        R                  [        R                  [        R
                  4n[        U5      S:X  aO  [        US   U5      (       a;  [        R                  " S US   US   US   US	   US   S S US   R                  S
9	/nU$ U R                  U[        S S S S9/SS9n U$ U R                  XSS9nU$ )NT©r  rˆ   r   r   r¥   r¨   r¦   r§   r¹   rÌ   rÍ   )r  rM  r   r½   r¾   r¼   rh   r‰   rÀ   r^   rÇ   rE   )r   rª   rO  r­   ÚtyÚs_u_or_es         r   rJ  Ú"CParser._parse_decl_body_with_specè  s8  € ð ˆÞØ×&Ñ&×(Ñ(Ø×8Ñ8Ó:�øà×&Ñ&¨tÐ&Ö4Ø×8Ñ8ÀÐ8ÐF�à‰=Ø�f‘ˆBÜŸ™¤e§k¡k´5·:±:Ð>ˆHÜ�2‹w˜!‹|¤
¨2¨a©5°(× ;Ñ ;ä—J’JØ!Ø" 6™lØ" ;Ñ/Ø $ Y¡Ø!% jÑ!1Ø ™UØ!Ø $Ø  ™eŸk™kñ
ð�ð0 ˆð ×0Ñ0ØÜ T°¸dÑCÐDØ&*ð 1ð ‘ð ˆð	 ×,Ñ,Ø¸$ð -ð ˆEð ˆr"   c                 ó    • / nU R                  5       (       a6  UR                  U R                  5       5        U R                  5       (       a  M6  U$ rb   )rù   r5  rX  rW  s     r   rK  ÚCParser._parse_declaration_list  sA   € ØˆØ×&Ñ&×(Ñ(Ø�L‰L˜×0Ñ0Ó2Ô3ð ×&Ñ&×(Ó(àˆr"   rB  c           	      ó(  • SnSnSn U R                  5       nUc  GO*UR                  S:X  a5  Uc  U R                  U5      nU R                  X R	                  5       SSS9nM[  UR                  S:X  aL  U R                  S5      S	:X  a7  Uc  U R                  U5      nU R                  X R                  5       S
SS9nSnM·  UR                  [        ;   a@  Uc  U R                  U5      nU R                  X R                  5       R                  SSS9nGM  UR                  [        ;   a@  Uc  U R                  U5      nU R                  X R                  5       R                  SSS9nGM_  UR                  [        ;   a@  Uc  U R                  U5      nU R                  X R                  5       R                  SSS9nGM³  UR                  [        ;   ah  Uc  U R                  U5      nU R                  5       nU R                  U[        R                  " UR                  /U R                  U5      S9S
SS9nSnGM/  UR                  S:X  ap  U(       a  OùUc  U R                  U5      nU R                  5       nU R                  U[        R                  " UR                  /U R                  U5      S9S
SS9nSnGM¯  UR                  S;   a8  Uc  U R                  U5      nU R                  X R                  5       S
SS9nSnGM÷  UR                  S:X  a8  Uc  U R                  U5      nU R                  X R!                  5       S
SS9nSnGM?   Uc&  U R#                  SU R$                  R&                  5        U(       d  U(       d  U R#                  SU5        X#U4$ )av  Parse declaration-specifier sequence.

allow_no_type:
    If True, allow a missing type specifier without error.

Returns:
    (spec, saw_type, first_coord) where spec is a dict with
    qual/storage/type/function/alignment entries, saw_type is True
    if a type specifier was consumed, and first_coord is the coord
    of the first specifier token (used for diagnostics).
NFTÚ_ALIGNASr¨   ©rc   Ú_ATOMICr³   r  rˆ   r¥   r¦   r§   r“   r
  >   ÚUNIONÚSTRUCTÚENUMrµ   r’   )rQ   rˆ   rT   r«   Ú_parse_alignment_specifierrÜ   Ú_parse_atomic_specifierr  rá   rS   Ú_STORAGE_CLASSÚ_FUNCTION_SPECÚ_TYPE_SPEC_SIMPLEr   r–   Ú _parse_struct_or_union_specifierÚ_parse_enum_specifierrR   rD   rK   )r   rB  rª   rO  Úfirst_coordrV   s         r   rI  Ú%CParser._parse_declaration_specifiers  s‰  € ð ˆØˆØˆàØ—*‘*“,ˆCØ‰{Ùà�x‰x˜:Ó%ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×9Ñ9Ó;¸[ÐQUð 7ð �ñ à�x‰x˜9Ó$¨¯©¸Ó);¸xÓ)GØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×6Ñ6Ó8¸&Èð 7ð �ð  �Ùà�x‰xœ?Ó*ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6ØŸ-™-›/×/Ñ/°Àð 7ð �ò à�x‰xœ>Ó)ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6ØŸ-™-›/×/Ñ/°À4ð 7ð �ò à�x‰xœ>Ó)ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6ØŸ-™-›/×/Ñ/°ÀDð 7ð �ò à�x‰xÔ,Ó,ØÑ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ò(¨#¯)©)¨¸D¿O¹OÈCÓ<PÑQØØð	 7ð �ð  �Úà�x‰x˜8Ó#ÞØØÑ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ò(¨#¯)©)¨¸D¿O¹OÈCÓ<PÑQØØð	 7ð �ð  �Úà�x‰xÐ.Ó.ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×?Ñ?ÓAÀ6ÐRVð 7ð �ð  �Úà�x‰x˜6Ó!ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×4Ñ4Ó6¸Àtð 7ð �ð  �Úàà‰<Ø×ÑÐ3°T·Y±Y×5GÑ5GÔHæ¦Ø×ÑÐ;¸[ÔIà˜{Ð*Ð*r"   c           	      ó8  • S nSnSnS n U R                  5       nUc  GO„UR                  S:X  a7  Uc  U R                  U5      nU R                  XR	                  5       SSS9nSnM]  UR                  S:X  aL  U R                  S5      S:X  a7  Uc  U R                  U5      nU R                  XR                  5       S	SS9nSnM¹  UR                  [        ;   a@  Uc  U R                  U5      nU R                  XR                  5       R                  S
SS9nGM  UR                  [        ;   ah  Uc  U R                  U5      nU R                  5       nU R                  U[        R                  " UR                  /U R                  U5      S9S	SS9nSnGM‰  UR                  S:X  ap  U(       a  OùUc  U R                  U5      nU R                  5       nU R                  U[        R                  " UR                  /U R                  U5      S9S	SS9nSnGM	  UR                  S;   a8  Uc  U R                  U5      nU R                  XR                  5       S	SS9nSnGMQ  UR                  S:X  a8  Uc  U R                  U5      nU R                  XR                  5       S	SS9nSnGM™   Uc&  U R                  SU R                   R"                  5        U(       d  U(       d  U R                  SU5        UR%                  S5      c  / US'   UR%                  S5      c  / US'   U$ )NFTrd  r¨   re  rf  r³   r  rˆ   r¥   r“   r
  >   rg  rh  ri  zInvalid specifier listr’   r¦   r§   )rQ   rˆ   rT   r«   rj  rÜ   rk  r  rá   rS   rn  r   r–   ro  rp  rR   rD   rK   rp   )r   rª   rO  Úsaw_alignmentrq  rV   s         r   Ú_parse_specifier_qualifier_listÚ'CParser._parse_specifier_qualifier_list˜  s"  € ØˆØˆØˆØˆàØ—*‘*“,ˆCØ‰{Ùà�x‰x˜:Ó%ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×9Ñ9Ó;¸[ÐQUð 7ð �ð !%�Ùà�x‰x˜9Ó$¨¯©¸Ó);¸xÓ)GØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×6Ñ6Ó8¸&Èð 7ð �ð  �Ùà�x‰xœ?Ó*ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6ØŸ-™-›/×/Ñ/°Àð 7ð �ò à�x‰xÔ,Ó,ØÑ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ò(¨#¯)©)¨¸D¿O¹OÈCÓ<PÑQØØð	 7ð �ð  �Úà�x‰x˜8Ó#ÞØØÑ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ò(¨#¯)©)¨¸D¿O¹OÈCÓ<PÑQØØð	 7ð �ð  �Úà�x‰xÐ.Ó.ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×?Ñ?ÓAÀ6ÐRVð 7ð �ð  �Úà�x‰x˜6Ó!ØÑ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×4Ñ4Ó6¸Àtð 7ð �ð  �Úàà‰<Ø×ÑÐ6¸¿	¹	×8JÑ8JÔKæ¦Ø×ÑÐ;¸[ÔIà�8‰8�IÓÑ&Ø ˆD�‰OØ�8‰8�JÓÑ'Ø!ˆD�Ñàˆr"   c                 óÀ   • / nU R                  5       [        ;   aC  UR                  U R                  5       R                  5        U R                  5       [        ;   a  MC  U$ rb   )rÜ   r  rc   rá   rS   )r   r•   s     r   Ú_parse_type_qualifier_listÚ"CParser._parse_type_qualifier_listû  sD   € ØˆØ�o‰oÓ¤?Ó2Ø�L‰L˜Ÿ™›×.Ñ.Ô/ð �o‰oÓ¤?Õ2àˆr"   c                 óˆ  • U R                  S5      nU R                  S5        U R                  5       (       aF  U R                  5       nU R                  S5        [        R                  " X R                  U5      5      $ U R                  5       nU R                  S5        [        R                  " X0R                  U5      5      $ )Nrd  r  r  )ré   rù   r,  r   ÚAlignasrT   Ú_parse_constant_expression)r   rV   r™   Úexprs       r   rj  Ú"CParser._parse_alignment_specifier  s�   € Ø�l‰l˜:Ó&ˆØ�‰�XÔà×#Ñ#×%Ñ%Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô"Ü—=’= §o¡o°cÓ&:Ó;Ð;à×.Ñ.Ó0ˆØ�‰�XÔÜ�}Š}˜T§?¡?°3Ó#7Ó8Ð8r"   c                 óÂ   • U R                  S5        U R                  S5        U R                  5       nU R                  S5        UR                  R                  S5        U$ )Nrf  r  r  Ú_Atomic)ré   r,  r•   rc   )r   r™   s     r   rk  ÚCParser._parse_atomic_specifier  sK   € Ø�‰�YÔØ�‰�XÔØ×#Ñ#Ó%ˆØ�‰�XÔØ�	‰	×Ñ˜Ô#Øˆ
r"   rD  c                 óÊ   • Ub  U/OU R                  US9/nU R                  S5      (       a6  UR                  U R                  US95        U R                  S5      (       a  M6  U$ )Nr]  ÚCOMMA)Ú_parse_init_declaratorræ   rc   )r   rD  r  r­   s       r   rM  Ú#CParser._parse_init_declarator_list  sk   € ð
 Ñ ð ‰Gà×-Ñ-°gÐ-Ð>Ð?ð 	ð �l‰l˜7×#Ñ#Ø�L‰L˜×4Ñ4¸WÐ4ÐEÔFð �l‰l˜7×#Ó#àˆr"   c                 ó´   • U(       a  U R                  5       OU R                  5       nS nU R                  S5      (       a  U R                  5       n[	        X#S S9$ )NrC  rÌ   )r  Ú_parse_declaratorræ   rL  rE   )r   r  r…   r¸   s       r   r„  ÚCParser._parse_init_declarator'  sL   € Þ.5ˆt×(Ñ(Ô*¸4×;QÑ;QÓ;SˆØˆØ�<‰<˜×!Ñ!Ø×*Ñ*Ó,ˆDÜ˜°$Ñ7Ð7r"   c                 ón  • U R                  5       nU R                  UR                  5      nU R                  5       S;   aÍ  U R                  5       nU R                  5       S:X  aˆ  U R                  5         U R	                  S5      (       a!  U" UR                  / U R                  U5      S9$ U R                  5       nU R                  S5        U" UR                  X@R                  U5      S9$ U" UR                  S U R                  U5      S9$ U R                  5       S:X  at  U R                  5       nU R	                  S5      (       a  U" S / U R                  U5      S9$ U R                  5       nU R                  S5        U" S X@R                  U5      S9$ U R                  SU R                  U5      5        g )N>   r	  r
  r@  ÚRBRACE)rl   r­   r^   z Invalid struct/union declaration)	rá   rÔ   rS   rÜ   ræ   rT   Ú_parse_struct_declaration_listré   rR   )r   rV   ÚklassÚname_tokr­   Ú	brace_toks         r   ro  Ú(CParser._parse_struct_or_union_specifier3  so  € Ø�m‰m‹oˆØ×/Ñ/°·	±	Ó:ˆà�?‰?ÓÐ 0Ó0Ø—}‘}“ˆHØ�‰Ó  HÓ,Ø—‘”Ø—<‘< ×)Ñ)Ù Ø%Ÿ^™^°2¸T¿_¹_ÈXÓ=Vñð ð ×;Ñ;Ó=�Ø—‘˜XÔ&ÙØ!Ÿ™¨u¿O¹OÈHÓ<Uñð ñ Ø—^‘^¨4°t·±ÀxÓ7Pñð ð �?‰?Ó Ó(ØŸ™›ˆIØ�|‰|˜H×%Ñ%Ù $¨b¸¿¹È	Ó8RÑSÐSØ×7Ñ7Ó9ˆEØ�L‰L˜Ô"Ù˜d¨%·±ÀyÓ7QÑRÐRà×ÑÐ<¸d¿o¹oÈcÓ>RÕSr"   c                 óª   • / nU R                  5       S;  a<  U R                  5       nUc  M)  UR                  U5        U R                  5       S;  a  M<  U$ ©N>   NrŠ  )rÜ   Ú_parse_struct_declarationr5  )r   r­   Úitemss      r   r‹  Ú&CParser._parse_struct_declaration_listT  sR   € ØˆØ�o‰oÓÐ'7Ó7Ø×2Ñ2Ó4ˆEØ‰}ÙØ�L‰L˜Ôð	 �o‰oÓÐ'7Õ7ð
 ˆr"   c           	      óò  • U R                  5       S:X  a  U R                  5         g U R                  5       S;   a  U R                  5       /$ U R                  5       nSUR	                  S/ 5      ;  d   eS nU R                  5       (       d  U R                  5       S:X  a  U R                  5       nUb   U R                  S5        U R                  XS9$ [        US   5      S:X  ak  US   S	   n[        U[        R                  5      (       a  UnO[        R                  " U5      nU R                  S5        U R                  U[        US S S
9/S9$ U R                  S5        U R                  U[        S S S S
9/S9$ )Nr>  r;  r±   r¦   ÚCOLON©rª   r­   rˆ   r   r   rÌ   )rÜ   rá   rF  ru  rp   r  Ú_parse_struct_declarator_listré   rÇ   rh   r‰   r   ÚNoder–   rE   )r   rª   r­   ÚnodeÚ	decl_types        r   r’  Ú!CParser._parse_struct_declaration`  sl  € Ø�?‰?Ó Ó&Ø�M‰MŒOØØ�?‰?ÓÐ 7Ó7Ø×2Ñ2Ó4Ð5Ð5à×3Ñ3Ó5ˆØ §¡¨°BÓ 7Ó7Ð7Ð7àˆØ×"Ñ"×$Ñ$¨¯©Ó(9¸WÓ(DØ×6Ñ6Ó8ˆEØÑØ�L‰L˜Ô Ø×+Ñ+°Ð+ÐCÐCäˆt�F‰|Ó Ó!Ø˜‘< ‘?ˆDÜ˜$¤§
¡
×+Ñ+Ø ‘	ä!×0Ò0°Ó6�	Ø�L‰L˜Ô Ø×+Ñ+Ø¤$¨I¸DÈ$Ñ"OÐ!Pð ,ð ð ð 	�‰�VÔØ×'Ñ'Øœd¨°4ÀÑFÐGð (ð 
ð 	
r"   c                 óÂ   • U R                  5       /nU R                  S5      (       a7  UR                  U R                  5       5        U R                  S5      (       a  M7  U$ ©Nrƒ  )Ú_parse_struct_declaratorræ   rc   rW  s     r   r˜  Ú%CParser._parse_struct_declarator_list‚  sM   € Ø×.Ñ.Ó0Ð1ˆØ�l‰l˜7×#Ñ#Ø�L‰L˜×6Ñ6Ó8Ô9ð �l‰l˜7×#Ó#àˆr"   c                 ó  • U R                  S5      (       a-  U R                  5       n[        R                  " S S S S 5      S US.$ U R	                  5       nU R                  S5      (       a  U R                  5       nUS US.$ US S S.$ )Nr–  rÌ   )ræ   r|  r   rŠ   r‡  )r   r²   r…   s      r   rŸ  Ú CParser._parse_struct_declaratorŠ  sˆ   € Ø�<‰<˜× Ñ Ø×5Ñ5Ó7ˆGäŸš t¨T°4¸Ó>ØØ"ñð ð ×%Ñ%Ó'ˆØ�<‰<˜× Ñ Ø×5Ñ5Ó7ˆGØ ¨$¸7ÑCÐCà d°tÑ<Ð<r"   c                 óh  • U R                  S5      nU R                  5       S;   a¶  U R                  5       nU R                  5       S:X  aa  U R                  5         U R                  5       nU R                  S5        [        R
                  " UR                  X0R                  U5      5      $ [        R
                  " UR                  S U R                  U5      5      $ U R                  S5        U R                  5       nU R                  S5        [        R
                  " S X0R                  U5      5      $ )Nri  >   r	  r
  r@  rŠ  )ré   rÜ   rá   Ú_parse_enumerator_listr   r¼   rS   rT   )r   rV   r�  Úenumss       r   rp  ÚCParser._parse_enum_specifierœ  sÛ   € Ø�l‰l˜6Ó"ˆØ�?‰?ÓÐ 0Ó0Ø—}‘}“ˆHØ�‰Ó  HÓ,Ø—‘”Ø×3Ñ3Ó5�Ø—‘˜XÔ&Ü—z’z (§.¡.°%¿¹ÈÓ9MÓNÐNÜ—:’:˜hŸn™n¨d°D·O±OÀCÓ4HÓIÐIà�‰�XÔØ×+Ñ+Ó-ˆØ�‰�XÔÜ�zŠz˜$ §¡°sÓ';Ó<Ð<r"   c                 óJ  • U R                  5       n[        R                  " U/UR                  5      nU R	                  S5      (       aZ  U R                  5       S:X  a   U$ U R                  5       nUR                  R                  U5        U R	                  S5      (       a  MZ  U$ )Nrƒ  rŠ  )Ú_parse_enumeratorr   ÚEnumeratorListr^   ræ   rÜ   Úenumeratorsrc   )r   ÚenumÚ	enum_lists      r   r¤  ÚCParser._parse_enumerator_list­  sŽ   € Ø×%Ñ%Ó'ˆÜ×(Ò(¨$¨°·±Ó<ˆ	Ø�l‰l˜7×#Ñ#Ø�‰Ó  HÓ,Øð Ðð ×)Ñ)Ó+ˆDØ×!Ñ!×(Ñ(¨Ô.ð	 �l‰l˜7×#Ó#ð
 Ðr"   c                 ó&  • U R                  S5      nU R                  S5      (       a  U R                  5       nOS n[        R                  " UR
                  X R                  U5      5      nU R                  UR                  UR                  5        U$ )Nr	  rC  )
ré   ræ   r|  r   Ú
EnumeratorrS   rT   ru   rl   r^   )r   r�  rS   r«  s       r   r¨  ÚCParser._parse_enumerator¸  sn   € Ø—<‘< Ó%ˆØ�<‰<˜×!Ñ!Ø×3Ñ3Ó5‰EàˆEÜ×Ò §¡°·±ÀxÓ7PÓQˆØ×Ñ˜TŸY™Y¨¯
©
Ô3Øˆr"   c                 ó4   • U R                  SSS9u  pUc   eU$ )NF©r  r  )r  )r   r…   rQ  s      r   r‡  ÚCParser._parse_declaratorÆ  s1   € Ø×,Ñ,Ø ¸5ð -ð 
‰ˆð ÑÐÐØˆr"   c                 ó"   • U R                  SSS9$ )Nr›   T©r¡   Úallow_paren©Ú_parse_declarator_kindrd   s    r   r  ÚCParser._parse_id_declaratorÎ  s   € Ø×*Ñ*°À$Ð*ÐGÐGr"   c                 ó"   • U R                  SSS9$ )NÚtypeidTrµ  r·  rd   s    r   r  Ú CParser._parse_typeid_declaratorÒ  s   € Ø×*Ñ*°ÀdÐ*ÐKÐKr"   c                 ó"   • U R                  SSS9$ )Nr»  Frµ  r·  rd   s    r   r  Ú(CParser._parse_typeid_noparen_declaratorÖ  s   € Ø×*Ñ*°ÀeÐ*ÐLÐLr"   r¶  c                 ó˜   • S nU R                  5       S:X  a  U R                  5       nU R                  XS9nUb  U R                  XC5      $ U$ )Nr  ©r¶  )rÜ   Ú_parse_pointerÚ_parse_direct_declaratorrŽ   )r   r¡   r¶  ÚptrÚdirects        r   r¸  ÚCParser._parse_declarator_kindÚ  sR   € ØˆØ�?‰?Ó Ó'Ø×%Ñ%Ó'ˆCØ×.Ñ.¨tÐ.ÐMˆØ‰?Ø×)Ñ)¨&Ó6Ð6Øˆr"   c           	      óV  • U(       a8  U R                  S5      (       a"  U R                  USS9nU R                  S5        OZUS:X  a  U R                  S5      nOU R                  S5      n[        R                  " UR
                  S S S U R                  U5      S9nU R                  U5      $ )	Nr  TrÀ  r  r›   r	  r
  r¶   )ræ   r¸  ré   r   rŠ   rS   rT   Ú_parse_decl_suffixes)r   r¡   r¶  r…   r�  s        r   rÂ  Ú CParser._parse_direct_declaratoræ  s–   € ö ˜4Ÿ<™<¨×1Ñ1Ø×.Ñ.¨tÀÐ.ÐFˆDØ�L‰L˜Õ"à�t‹|ØŸ<™<¨Ó-‘àŸ<™<¨Ó1�Ü—>’>Ø!Ÿ™ØØØØ—o‘o hÓ/ñˆDð ×(Ñ(¨Ó.Ð.r"   c                 óæ   •  U R                  5       S:X  a"  U R                  XR                  U5      5      nM7  U R                  5       S:X  a$  U R                  U5      nU R                  X5      nMo   U$ )zAParse a chain of array/function suffixes and attach them to decl.r$  r  )rÜ   rŽ   Ú_parse_array_declÚ_parse_function_decl)r   r…   rN  s      r   rÇ  ÚCParser._parse_decl_suffixesû  sl   € àØ�‰Ó  JÓ.Ø×-Ñ-¨d×4JÑ4JÈ4Ó4PÓQ�ÙØ�‰Ó  HÓ,Ø×0Ñ0°Ó6�Ø×-Ñ-¨dÓ9�ÙØØˆr"   Ú	base_declc                 ó6   • U R                  S UR                  S9$ ©N)Ú	base_typer^   )Ú_parse_array_decl_commonr^   )r   rÍ  s     r   rÊ  ÚCParser._parse_array_decl	  s   € Ø×,Ñ,°tÀ9Ç?Á?Ð,ÐSÐSr"   rÐ  c                 óŠ  ^^• U R                  S5      nTc  U R                  U5      mUU4S jnU R                  S5      (       aF  S/U R                  5       =(       d    / -   nU R	                  5       nU R                  S5        U" Xe5      $ U R                  5       [        ;   aÿ  U R                  5       =(       d    / nU R                  S5      (       a/  US/-   nU R	                  5       nU R                  S5        U" Xe5      $ U R                  S5      nU(       aI  U R                  S5        [        R                  " UR                  U R                  U5      5      nU" Xe5      $ SnU R                  5       (       a  U R	                  5       nU R                  S5        U" Xe5      $ U R                  S5      nU(       aJ  U R                  S5        [        R                  " UR                  U R                  U5      5      nU" U/ 5      $ SnU R                  5       (       a  U R	                  5       nU R                  S5        U" U/ 5      $ )a	  Parse an array declarator suffix and return an ArrayDecl node.

base_type:
    Base declarator node to attach (None for direct-declarator parsing,
    TypeDecl for abstract declarators).

coord:
    Coordinate to use for the ArrayDecl. If None, uses the '[' token.
r$  Nc                 ó0   >• [         R                  " TXTS9$ )N)rˆ   ÚdimÚ	dim_qualsr^   )r   Ú	ArrayDecl)rÕ  rÖ  rÐ  r^   s     €€r   Úmake_array_declÚ9CParser._parse_array_decl_common.<locals>.make_array_decl  s   ø€ Ü—?’?Ø CÀEñð r"   ÚSTATICÚstaticÚRBRACKETr  )ré   rT   ræ   rx  Ú_parse_assignment_expressionrÜ   r  r   r	  rS   rý   )r   rÐ  r^   Ú
lbrack_tokrØ  rÖ  rÕ  Ú	times_toks    ``     r   rÑ  Ú CParser._parse_array_decl_common  sÝ  ù€ ð —\‘\ *Ó-ˆ
Ø‰=Ø—O‘O JÓ/ˆEö	ð
 �<‰<˜×!Ñ!Ø!˜
 d×&EÑ&EÓ&G×&MÈ2ÑNˆIØ×3Ñ3Ó5ˆCØ�L‰L˜Ô$Ù" 3Ó2Ð2à�?‰?Ó¤Ó/Ø×7Ñ7Ó9×?¸RˆIØ�|‰|˜H×%Ñ%Ø%¨¨
Ñ2�	Ø×7Ñ7Ó9�Ø—‘˜ZÔ(Ù& sÓ6Ð6ØŸ™ WÓ-ˆIÞØ—‘˜ZÔ(Ü—h’h˜yŸ™°·±À	Ó0JÓK�Ù& sÓ6Ð6ØˆCØ×&Ñ&×(Ñ(Ø×7Ñ7Ó9�Ø�L‰L˜Ô$Ù" 3Ó2Ð2à—L‘L Ó)ˆ	ÞØ�L‰L˜Ô$Ü—(’(˜9Ÿ?™?¨D¯O©O¸IÓ,FÓGˆCÙ" 3¨Ó+Ð+àˆØ×"Ñ"×$Ñ$Ø×3Ñ3Ó5ˆCØ�‰�ZÔ Ù˜s BÓ'Ð'r"   c                 óH  • U R                  S5        U R                  S5      (       a  S nOFU R                  5       (       a  U R                  5       OU R	                  5       nU R                  S5        [
        R                  " US UR                  S9nU R                  5       S:X  a}  UR                  bp  UR                  R                   HV  n[        U[
        R                  5      (       a    U$ [        USS 5      nU(       d  M;  U R                  XTR                  5        MX     U$ )Nr  r  ©Úargsrˆ   r^   r@  rl   )ré   ræ   rù   Ú_parse_parameter_type_listÚ_parse_identifier_list_optr   r—   r^   rÜ   rã  Úparamsr‰   ÚEllipsisParamÚgetattrru   )r   rÍ  rã  rN  Úparamrl   s         r   rË  ÚCParser._parse_function_declF  sî   € Ø�‰�XÔØ�<‰<˜×!Ñ!Ø‰Dð ×+Ñ+×-Ñ-ð ×/Ñ/Ô1à×4Ñ4Ó6ð ð
 �L‰L˜Ô"ä�~Š~ 4¨d¸)¿/¹/ÑJˆà�?‰?Ó Ó(Ø�y‰yÑ$Ø!ŸY™Y×-Ô-�EÜ! %¬×)<Ñ)<×=Ñ=Øð
 ˆô	 # 5¨&°$Ó7�Dß�tØ×,Ñ,¨T·;±;Ö?ñ .ð ˆr"   c                 ó6  • / nU R                  S5      nU(       aT  U R                  5       =(       d    / nUR                  X0R                  U5      45        U R                  S5      nU(       a  MT  U(       d  g S nU H  u  p5[        R
                  " X4US9nM     U$ )Nr  )r•   rˆ   r^   )ræ   rx  rc   rT   r   ÚPtrDecl)r   Ústarsrß  r•   rÃ  r^   s         r   rÁ  ÚCParser._parse_pointer`  s†   € ØˆØ—L‘L Ó)ˆ	ÞØ×3Ñ3Ó5×;¸ˆEØ�L‰L˜%§¡°Ó!;Ð<Ô=ØŸ™ WÓ-ˆI÷ ˆiö
 ØàˆÛ!‰LˆEÜ—-’- e¸UÑCŠCñ "àˆ
r"   c                 ó4  • U R                  5       nU R                  5       S:X  as  U R                  S5      S:X  a^  U R                  5         U R                  5       nUR                  R	                  [
        R                  " U R                  U5      5      5        U$ ©Nrƒ  r³   ÚELLIPSIS)Ú_parse_parameter_listrÜ   rá   ræ  rc   r   rç  rT   )r   ræ  Úell_toks      r   rä  Ú"CParser._parse_parameter_type_listq  sn   € Ø×+Ñ+Ó-ˆØ�?‰?Ó Ó'¨D¯O©O¸AÓ,>À*Ó,LØ�M‰MŒOØ—m‘m“oˆGØ�M‰M× Ñ ¤×!4Ò!4°T·_±_ÀWÓ5MÓ!NÔOØˆr"   c                 ó„  • U R                  5       n[        R                  " U/UR                  5      nU R	                  5       S:X  ay  U R	                  S5      S:w  ad  U R                  5         UR                  R                  U R                  5       5        U R	                  5       S:X  a  U R	                  S5      S:w  a  Md  U$ rð  )Ú_parse_parameter_declarationr   Ú	ParamListr^   rÜ   rá   ræ  rc   ©r   rD  ræ  s      r   rò  ÚCParser._parse_parameter_listz  s‘   € Ø×1Ñ1Ó3ˆÜ—’ % ¨%¯+©+Ó6ˆØ�o‰oÓ 7Ó*¨t¯©¸qÓ/AÀZÓ/OØ�M‰MŒOØ�M‰M× Ñ  ×!BÑ!BÓ!DÔEð �o‰oÓ 7Ó*¨t¯©¸qÓ/AÀZÕ/Oð ˆr"   c           	      ól  • U R                  SS9u  pnUS   (       d  [        R                  " S/US9/US'   U R                  5       (       aH  U R	                  SSS9u  pEU(       a  U R                  U[        US S S9/S9S	   $ U R                  XU5      $ U R                  5       nU R                  XU5      $ )
NTrA  rˆ   r+   r“   r²  rÌ   r—  r   )	rI  r   r–   r  r  rÇ   rE   Ú_build_parameter_declarationr  )r   rª   rQ  rP  r…   Úis_nameds         r   rö  Ú$CParser._parse_parameter_declaration„  sÓ   € Ø"×@Ñ@ÈtÐ@ÐTÑˆ�à�F�|Ü!×0Ò0°%°À
ÑKÐLˆD�‰Là×"Ñ"×$Ñ$Ø!×7Ñ7Ø#¸dð 8ð ‰NˆDö Ø×/Ñ/Ø¤d°¸4ÈÑ&NÐ%Oð 0ð àñð ð ×4Ñ4°TÀÓLÐLà×2Ñ2Ó4ˆØ×0Ñ0°¸ZÓHÐHr"   rP  c                 óŽ  • [        US   5      S:”  ae  [        US   S   R                  5      S:X  aF  U R                  US   S   R                  S   5      (       a  U R                  U[	        US S S9/S9S   $ [
        R                  " SUS   S U=(       d    [
        R                  " S S S S 5      US	9nU R                  X!S   5      $ )
Nrˆ   r   rn   r   rÌ   r—  r3   r¥   ©rl   r•   r·   rˆ   r^   )	rh   r˜   r{   rÇ   rE   r   ÚTypenamerŠ   rœ   )r   rª   r…   rP  s       r   rû  Ú$CParser._build_parameter_declaration—  sÕ   € ô ��V‘Ó Ó!Ü�D˜‘L Ñ$×*Ñ*Ó+¨qÓ0Ø×&Ñ& t¨F¡|°BÑ'7×'=Ñ'=¸aÑ'@×AÑAà×+Ñ+Ø¤$¨D°tÀTÑ"JÐ!Kð ,ð àñð ô �~Š~ØØ�v‘,ØØ×?œŸš¨¨d°D¸$Ó?Øñ
ˆð ×'Ñ'¨°6©lÓ;Ð;r"   c                 óL   • U R                  5       S:X  a  g U R                  5       $ ©Nr  )rÜ   Ú_parse_identifier_listrd   s    r   rå  Ú"CParser._parse_identifier_list_opt­  s#   € Ø�?‰?Ó Ó(ØØ×*Ñ*Ó,Ð,r"   c                 ó  • U R                  5       n[        R                  " U/UR                  5      nU R	                  S5      (       aA  UR
                  R                  U R                  5       5        U R	                  S5      (       a  MA  U$ rž  )Ú_parse_identifierr   r÷  r^   ræ   ræ  rc   rø  s      r   r  ÚCParser._parse_identifier_list³  sf   € Ø×&Ñ&Ó(ˆÜ—’ % ¨%¯+©+Ó6ˆØ�l‰l˜7×#Ñ#Ø�M‰M× Ñ  ×!7Ñ!7Ó!9Ô:ð �l‰l˜7×#Ó#àˆr"   c                 ór  • U R                  5       nU R                  5       nS nUb  UR                  nOUS   (       a  US   S   R                  n[        R                  " SUS   S S  S U=(       d    [        R
                  " S S S S 5      US9n[        [        R                  U R                  XAS   5      5      $ )Nrˆ   r   r3   r¥   rÿ  )ru  r  r^   r   r   rŠ   r   rœ   )r   rª   r…   r^   r�   s        r   r,  ÚCParser._parse_type_name¾  s§   € Ø×3Ñ3Ó5ˆØ×2Ñ2Ó4ˆàˆØÑØ—J‘J‰EØ�&�\Ø˜‘L ‘O×)Ñ)ˆEä—>’>ØØ�v‘,™q�/ØØ×?œŸš¨¨d°D¸$Ó?Øñ
ˆô ”E—N‘N D×$<Ñ$<¸XÈFÁ|Ó$TÓUÐUr"   c                 ó@  • U R                  5       S:X  ae  U R                  5       nU R                  5       (       a  U R                  5       nO[        R
                  " S S S S 5      nUc   eU R                  X!5      $ U R                  5       (       a  U R                  5       $ g )Nr  )rÜ   rÁ  r%  Ú!_parse_direct_abstract_declaratorr   rŠ   rŽ   )r   rÃ  r…   s      r   r  Ú&CParser._parse_abstract_declarator_optÒ  sŒ   € Ø�?‰?Ó Ó'Ø×%Ñ%Ó'ˆCØ×6Ñ6×8Ñ8Ø×=Ñ=Ó?‘ä—~’~ d¨D°$¸Ó=�Ø‘?Ð"�?Ø×)Ñ)¨$Ó4Ð4à×2Ñ2×4Ñ4Ø×9Ñ9Ó;Ð;àr"   c           	      óF  • U R                  S5      nU(       a®  U R                  5       (       d  U R                  5       S:X  a^  U R                  5       nU R	                  S5        [
        R                  " U[
        R                  " S S S S 5      U R                  U5      S9nOrU R                  5       nU R	                  S5        Uc   eOKU R                  5       S:X  a  U R                  5       nO&U R                  SU R                  R                  5        U R                  W5      $ )Nr  r  râ  r$  zInvalid abstract declarator)ræ   rù   rÜ   Ú_parse_parameter_type_list_optré   r   r—   rŠ   rT   r  Ú_parse_abstract_array_baserR   rD   rK   rÇ  )r   r-  ræ  r…   s       r   r  Ú)CParser._parse_direct_abstract_declaratorä  sê   € Ø—\‘\ (Ó+ˆ
ÞØ×'Ñ'×)Ñ)¨T¯_©_Ó->À(Ó-JØ×<Ñ<Ó>�Ø—‘˜XÔ&Ü—~’~ØÜŸš¨¨d°D¸$Ó?ØŸ/™/¨*Ó5ñ‘ð ×:Ñ:Ó<�Ø—‘˜XÔ&ØÑ'Ð'Ñ'Ø�_‰_Ó *Ó,Ø×2Ñ2Ó4‰Dà×ÑÐ;¸T¿Y¹Y×=OÑ=OÔPà×(Ñ(¨Ó.Ð.r"   c                 óL   • U R                  5       S:X  a  g U R                  5       $ r  )rÜ   rä  rd   s    r   r  Ú&CParser._parse_parameter_type_list_optû  s#   € Ø�?‰?Ó Ó(ØØ×.Ñ.Ó0Ð0r"   c                 óP   • U R                  [        R                  " S S S S 5      S S9$ rÏ  )rÑ  r   rŠ   rd   s    r   r  Ú"CParser._parse_abstract_array_base  s.   € Ø×,Ñ,Ü—n’n T¨4°°tÓ<ÀDð -ð 
ð 	
r"   c                 ó~  • U R                  5       nU==S:X  a  O	=S:X  a  O  O    U R                  5       $ =S:X  a&  U R                  S5      S:X  a    U R                  5       $ =S:X  a    U R                  5       $ ==S:X  a  O	=S:X  a  O  O    U R                  5       $ ==S	:X  a  O=S
:X  a  O	=S:X  a  O  O    U R	                  5       $ ==S:X  a  O=S:X  a  O=S:X  a  O	=S:X  a  O  O    U R                  5       $ ==S:X  a  O	=S:X  a  O  O    U R                  5       $ S:X  a  U R                  5       $  U R                  5       $ )NÚCASEÚDEFAULTr	  r³   r–  r@  ÚIFÚSWITCHÚWHILEÚDOÚFORÚGOTOÚBREAKÚCONTINUEÚRETURNr=  r<  r?  )	rÜ   Ú_parse_labeled_statementrH  Ú_parse_selection_statementÚ_parse_iteration_statementÚ_parse_jump_statementrF  rG  Ú_parse_expression_statementr  s     r   Ú_parse_statementÚCParser._parse_statement  sí   € Ø—?‘?Ó$ˆØØ#–ž)Ó#Ø×4Ñ4Ó6Ð6Ý˜Ÿ™¨Ó+¨wÓ6�Ø×4Ñ4Ó6Ð6ÞØ×5Ñ5Ó7Ð7Ø –ž“Ø×6Ñ6Ó8Ð8Ø'–ž4¦%Ó'Ø×6Ñ6Ó8Ð8Ø9–ž'¦J¶Ó9Ø×1Ñ1Ó3Ð3Ø'–žiÓ'Ø×5Ñ5Ó7Ð7Ü!Ø×0Ñ0Ó2Ð2ØØ×7Ñ7Ó9Ð9r"   c                 óÔ   • U R                  5       S;   aE  U R                  5       nU R                  5       n[        R                  " X/-   US   R
                  S9$ U R                  5       $ )Nr;  r   ©Úblock_itemsr^   )rÜ   Ú_parse_pppragma_directive_listr'  r   ÚCompoundr^   )r   ÚpragmasÚstmts      r   Ú_parse_pragmacomp_or_statementÚ&CParser._parse_pragmacomp_or_statement$  s]   € Ø�?‰?ÓÐ 7Ó7Ø×9Ñ9Ó;ˆGØ×(Ñ(Ó*ˆDÜ—>’>¨g¸Ñ.>ÀgÈaÁj×FVÑFVÑWÐWØ×$Ñ$Ó&Ð&r"   c                 ól   • U R                  5       (       a  U R                  5       $ U R                  5       $ rb   )rù   rX  r'  rd   s    r   Ú_parse_block_itemÚCParser._parse_block_item,  s/   € Ø×#Ñ#×%Ñ%Ø×*Ñ*Ó,Ð,Ø×$Ñ$Ó&Ð&r"   c                 ó   • / nU R                  5       S;  ag  U R                  5       n[        U[        5      (       a  US /:X  a  MB  UR	                  U5        OUR                  U5        U R                  5       S;  a  Mg  U$ r‘  )rÜ   r3  r‰   Úlistr5  rc   )r   r“  Úitems      r   Ú_parse_block_item_listÚCParser._parse_block_item_list2  so   € ØˆØ�o‰oÓÐ'7Ó7Ø×)Ñ)Ó+ˆDÜ˜$¤×%Ñ%Ø˜D˜6“>ÙØ—‘˜TÕ"à—‘˜TÔ"ð �o‰oÓÐ'7Õ7ð ˆr"   c                 ó   • U R                  S5      nU R                  S5      (       a$  [        R                  " S U R	                  U5      S9$ U R                  5       nU R                  S5        [        R                  " X R	                  U5      S9$ )Nr@  rŠ  r*  )ré   ræ   r   r-  rT   r8  )r   Ú
lbrace_tokr+  s      r   rH  Ú!CParser._parse_compound_statement?  sp   € Ø—\‘\ (Ó+ˆ
Ø�<‰<˜×!Ñ!Ü—>’>¨d¸$¿/¹/È*Ó:UÑVÐVØ×1Ñ1Ó3ˆØ�‰�XÔÜ�~Š~Ø#¯?©?¸:Ó+Fñ
ð 	
r"   c                 ó>  • U R                  5       nU=S:X  a�    U R                  5       nU R                  S5        U R                  5       (       a  U R	                  5       nO%[
        R                  " U R                  U5      5      n[
        R                  " UR                  X0R                  U5      5      $ =S:X  a¤    U R                  5       nU R                  5       nU R                  S5        U R                  5       (       a  U R	                  5       nO%[
        R                  " U R                  U5      5      n[
        R                  " XS/U R                  U5      5      $ S:X  a“  U R                  5       nU R                  S5        U R                  5       (       a  U R	                  5       nO%[
        R                  " U R                  U5      5      n[
        R                  " U/U R                  U5      5      $  U R                  SU R                  R                  5        g )Nr	  r–  r  r  zInvalid labeled statement)rÜ   rá   ré   r  r0  r   ÚEmptyStatementrT   ÚLabelrS   r|  ÚCaseÚDefaultrR   rD   rK   )r   r  r�  r/  Úcase_tokr}  Údef_toks          r   r"  Ú CParser._parse_labeled_statementL  sƒ  € Ø—?‘?Ó$ˆØÞØŸ=™=›?�Ø—‘˜WÔ%Ø×)Ñ)×+Ñ+Ø×>Ñ>Ó@‘Dä ×/Ò/°·±ÀÓ0IÓJ�DÜ—{’{ 8§>¡>°4¿¹ÈÓ9RÓSÐSÞØŸ=™=›?�Ø×6Ñ6Ó8�Ø—‘˜WÔ%Ø×)Ñ)×+Ñ+Ø×>Ñ>Ó@‘Dä ×/Ò/°·±ÀÓ0IÓJ�DÜ—z’z $¨°·±ÀÓ0IÓJÐJÜØŸ-™-›/�Ø—‘˜WÔ%Ø×)Ñ)×+Ñ+Ø×>Ñ>Ó@‘Dä ×/Ò/°·±ÀÓ0HÓI�DÜ—}’} d V¨T¯_©_¸WÓ-EÓFÐFØØ×!Ñ!Ð"=¸t¿y¹y×?QÑ?QÕRr"   c           	      óâ  • U R                  5       nUR                  =S:X  a¶    U R                  S5        U R                  5       nU R                  S5        U R	                  5       nU R                  S5      (       a6  U R	                  5       n[        R                  " X#X@R                  U5      5      $ [        R                  " X#S U R                  U5      5      $ S:X  aq  U R                  S5        U R                  5       nU R                  S5        U R	                  5       n[        [        R                  " XVU R                  U5      5      5      $  U R                  SU R                  U5      5        g )Nr  r  r  ÚELSEr  zInvalid selection statement)rá   rˆ   ré   Ú_parse_expressionr0  ræ   r   ÚIfrT   r   ÚSwitchrR   )r   rV   ÚcondÚ	then_stmtÚ	else_stmtr}  r/  s          r   r#  Ú"CParser._parse_selection_statementm  s  € Ø�m‰m‹oˆØ�h‰hÞØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø ×?Ñ?ÓA�	Ø—<‘< ×'Ñ'Ø $× CÑ CÓ E�IÜ Ÿ8š8 D°YÇÁÐPSÓ@TÓUÐUÜ—x’x °°t·±ÀsÓ7KÓLÐLÜØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü'¬¯ª°TÀÇÁÐQTÓAUÓ(VÓWÐWØØ×!Ñ!Ð"?ÀÇÁÐQTÓAUÕVr"   c           	      óf  • U R                  5       nUR                  =S:X  ai    U R                  S5        U R                  5       nU R                  S5        U R	                  5       n[
        R                  " X#U R                  U5      5      $ =S:X  a‹    U R	                  5       nU R                  S5        U R                  S5        U R                  5       nU R                  S5        U R                  S5        [
        R                  " X#U R                  U5      5      $ S:X  Gan  U R                  S5        U R                  5       (       a®  U R                  5       n[
        R                  " X@R                  U5      5      nU R                  5       nU R                  S5        U R                  5       nU R                  S5        U R	                  5       n[
        R                  " XRXcU R                  U5      5      $ U R                  5       nU R                  S5        U R                  5       nU R                  S5        U R                  5       nU R                  S5        U R	                  5       n[
        R                  " XRXcU R                  U5      5      $  U R                  SU R                  U5      5        g )Nr  r  r  r  r>  r  zInvalid iteration statement)rá   rˆ   ré   rG  r0  r   ÚWhilerT   ÚDoWhilerù   rX  ÚDeclListÚ_parse_expression_optÚForrR   )r   rV   rJ  r/  r­   r¸   Ú	next_exprs          r   r$  Ú"CParser._parse_iteration_statement†  s  € Ø�m‰m‹oˆØ�h‰hÞØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü—{’{ 4¨t¯©¸sÓ/CÓDÐDÞØ×:Ñ:Ó<�Ø—‘˜WÔ%Ø—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø—‘˜VÔ$Ü—}’} T°·±ÀÓ1EÓFÐFÝØ—‘˜XÔ&Ø×+Ñ+×-Ñ-Ø ×3Ñ3Ó5�EÜ Ÿ>š>¨%·±ÀÓ1EÓF�DØ×5Ñ5Ó7�DØ—L‘L Ô(Ø $× :Ñ :Ó <�IØ—L‘L Ô*Ø×>Ñ>Ó@�DÜ Ÿ9š9 T°À$Ç/Á/ÐRUÓBVÓWÐWà×1Ñ1Ó3�Ø—‘˜VÔ$Ø×1Ñ1Ó3�Ø—‘˜VÔ$Ø ×6Ñ6Ó8�	Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü—y’y ¨Y¸d¿o¹oÈcÓ>RÓSÐSØØ×!Ñ!Ð"?ÀÇÁÐQTÓAUÕVr"   c                 ó2  • U R                  5       nUR                  =S:X  aS    U R                  S5      nU R                  S5        [        R                  " UR
                  U R                  U5      5      $ =S:X  a7    U R                  S5        [        R                  " U R                  U5      5      $ =S:X  a7    U R                  S5        [        R                  " U R                  U5      5      $ S:X  a‚  U R                  S5      (       a&  [        R                  " S U R                  U5      5      $ U R                  5       nU R                  S5        [        R                  " X0R                  U5      5      $  U R                  SU R                  U5      5        g )Nr  r	  r>  r  r   r!  zInvalid jump statement)rá   rˆ   ré   r   ÚGotorS   rT   ÚBreakÚContinueræ   ÚReturnrG  rR   )r   rV   r�  r}  s       r   r%  ÚCParser._parse_jump_statement°  s  € Ø�m‰m‹oˆØ�h‰hÞØŸ<™<¨Ó-�Ø—‘˜VÔ$Ü—z’z (§.¡.°$·/±/À#Ó2FÓGÐGÞØ—‘˜VÔ$Ü—{’{ 4§?¡?°3Ó#7Ó8Ð8ÞØ—‘˜VÔ$Ü—~’~ d§o¡o°cÓ&:Ó;Ð;ÜØ—<‘< ×'Ñ'Ü Ÿ<š<¨¨d¯o©o¸cÓ.BÓCÐCØ×-Ñ-Ó/�Ø—‘˜VÔ$Ü—|’| D¯/©/¸#Ó*>Ó?Ð?ØØ×!Ñ!Ð":¸D¿O¹OÈCÓ<PÕQr"   c                 ó˜   • U R                  5       nU R                  S5      nUc%  [        R                  " U R	                  U5      5      $ U$ rU  )rR  ré   r   r>  rT   )r   r}  Úsemi_toks      r   r&  Ú#CParser._parse_expression_statementÇ  sB   € Ø×)Ñ)Ó+ˆØ—<‘< Ó'ˆØ‰<Ü×'Ò'¨¯©¸Ó(AÓBÐBØˆr"   c                 óN   • U R                  5       (       a  U R                  5       $ g rb   )rý   rG  rd   s    r   rR  ÚCParser._parse_expression_optÒ  s#   € Ø×"Ñ"×$Ñ$Ø×)Ñ)Ó+Ð+Ør"   c                 óN  • U R                  5       nU R                  S5      (       d  U$ XR                  5       /nU R                  S5      (       a7  UR                  U R                  5       5        U R                  S5      (       a  M7  [        R                  " X!R
                  5      $ rž  ©rÝ  ræ   rc   r   ÚExprListr^   ©r   r}  Úexprss      r   rG  ÚCParser._parse_expressionØ  s}   € Ø×0Ñ0Ó2ˆØ�|‰|˜G×$Ñ$ØˆKØ×8Ñ8Ó:Ð;ˆØ�l‰l˜7×#Ñ#Ø�L‰L˜×:Ñ:Ó<Ô=ð �l‰l˜7×#Ó#ä�~Š~˜e§Z¡ZÓ0Ð0r"   c                 óž  • U R                  5       S:X  aH  U R                  S5      S:X  a3  U R                  5         U R                  5       nU R                  S5        U$ U R	                  5       nU R                  5       (       aK  U R                  5       R                  nU R                  5       n[        R                  " X2XBR                  5      $ U$ )Nr  r³   r@  r  )rÜ   rá   rH  ré   Ú_parse_conditional_expressionr)  rS   rÝ  r   Ú
Assignmentr^   )r   Úcompr}  ÚopÚrhss        r   rÝ  Ú$CParser._parse_assignment_expressionã  s¡   € Ø�?‰?Ó Ó(¨T¯_©_¸QÓ-?À8Ó-KØ�M‰MŒOØ×1Ñ1Ó3ˆDØ�L‰L˜Ô"ØˆKà×1Ñ1Ó3ˆØ×!Ñ!×#Ñ#Ø—‘“×&Ñ&ˆBØ×3Ñ3Ó5ˆCÜ×#Ò# B¨c·:±:Ó>Ð>Øˆr"   c                 óö   • U R                  5       nU R                  S5      (       aR  U R                  5       nU R                  S5        U R	                  5       n[
        R                  " XX1R                  5      $ U$ )NÚCONDOPr–  )Ú_parse_binary_expressionræ   rG  ré   rh  r   Ú	TernaryOpr^   )r   r}  ÚiftrueÚiffalses       r   rh  Ú%CParser._parse_conditional_expressionó  sa   € Ø×,Ñ,Ó.ˆØ�<‰<˜×!Ñ!Ø×+Ñ+Ó-ˆFØ�L‰L˜Ô!Ø×8Ñ8Ó:ˆGÜ—?’? 4°¿*¹*ÓEÐEØˆr"   Úmin_precÚlhsc                 óþ  • Uc  U R                  5       n U R                  5       nUb  UR                  [        ;  a   U$ [        UR                     nXA:  a   U$ UR                  nU R                  5         U R                  5       n U R                  5       nUb  UR                  [        ;  a  O-[        UR                     nX„:”  a  U R                  X†5      nOOMU  [        R                  " XRXbR                  5      nMê  rb   )
Ú_parse_cast_expressionrQ   rˆ   Ú_BINARY_PRECEDENCErS   rá   rp  r   ÚBinaryOpr^   )	r   ru  rv  rV   Úprecrk  rl  Únext_tokÚ	next_precs	            r   rp  Ú CParser._parse_binary_expressioný  së   € ð ‰;Ø×-Ñ-Ó/ˆCàØ—*‘*“,ˆCØ‰{˜cŸh™hÔ.@Ó@Øð* ˆ
ô) & c§h¡hÑ/ˆDØ‹Øð$ ˆ
ð! —‘ˆBØ�M‰MŒOØ×-Ñ-Ó/ˆCàØŸ:™:›<�ØÑ# x§}¡}Ô<NÓ'NØÜ.¨x¯}©}Ñ=�	ØÓ#Ø×7Ñ7¸	ÓG‘Càñ ô —.’. ¨#¯y©yÓ9ˆCñ- r"   c                 ó(  • U R                  5       nUbp  Uu  p#nU R                  5       S:X  a!  U R                  U5        U R                  5       $ U R                  5       n[        R
                  " X%U R                  U5      5      $ U R                  5       $ )Nr@  )r.  rÜ   rò   rx  r   ÚCastrT   Ú_parse_unary_expression)r   Úresultr™   rì   r-  r}  s         r   rx  ÚCParser._parse_cast_expression  s‡   € Ø×0Ñ0Ó2ˆØÑØ$*Ñ!ˆC�zØ�‰Ó  HÓ,ð —‘˜DÔ!ð ×+Ñ+Ó-Ð-ð ×2Ñ2Ó4�Ü—z’z #¨T¯_©_¸ZÓ-HÓIÐIØ×+Ñ+Ó-Ð-r"   c                 ó´  • U R                  5       nUS;   aK  U R                  5       nU R                  5       n[        R                  " UR
                  X3R                  5      $ US;   aK  U R                  5       nU R                  5       n[        R                  " UR
                  X3R                  5      $ US:X  a™  U R                  5       nU R                  5       nUb6  Uu  n  n[        R                  " UR
                  XPR                  U5      5      $ U R                  5       n[        R                  " UR
                  X0R                  U5      5      $ US:X  ar  U R                  5       nU R                  S5        U R                  5       nU R                  S5        [        R                  " UR
                  XPR                  U5      5      $ U R                  5       $ )N¾   ÚPLUSPLUSÚ
MINUSMINUS>   ÚANDÚNOTÚLNOTÚPLUSÚMINUSr  ÚSIZEOFÚ_ALIGNOFr  r  )rÜ   rá   r�  r   ÚUnaryOprS   r^   rx  r.  rT   ré   r,  Ú_parse_postfix_expression)r   r  rV   r}  r‚  r™   rQ  s          r   r�  ÚCParser._parse_unary_expression4  sf  € Ø—?‘?Ó$ˆØÐ1Ó1Ø—-‘-“/ˆCØ×/Ñ/Ó1ˆDÜ—=’= §¡¨D·*±*Ó=Ð=àÐGÓGØ—-‘-“/ˆCØ×.Ñ.Ó0ˆDÜ—=’= §¡¨D·*±*Ó=Ð=à�xÓØ—-‘-“/ˆCØ×4Ñ4Ó6ˆFØÑ!Ø"‘	��Q˜Ü—}’} S§Y¡Y°·_±_ÀSÓ5IÓJÐJØ×/Ñ/Ó1ˆDÜ—=’= §¡¨D·/±/À#Ó2FÓGÐGà�zÓ!Ø—-‘-“/ˆCØ�L‰L˜Ô"Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô"Ü—=’= §¡¨C·±ÀÓ1EÓFÐFà×-Ñ-Ó/Ð/r"   c                 ó  • U R                  5       nUbt  Uu  p#nU R                  S5      (       aH  U R                  5       nU R                  S5        U R                  S5        [        R
                  " X%5      $ U R                  U5        U R                  5       n U R                  S5      (       aD  U R                  5       nU R                  S5        [        R                  " XgUR                  5      nM[  U R                  S5      (       ak  U R                  5       S:X  a  U R                  5         S nO!U R                  5       nU R                  S5        [        R                  " XhUR                  5      nMÜ  U R                  5       S;   a¯  U R                  5       n	U R                  5       n
U
R                  S	;  a!  U R!                  S
U R#                  U
5      5        [        R$                  " U
R&                  U R#                  U
5      5      n[        R(                  " XiR&                  X¶R                  5      nGMŸ  U R                  5       S;   aA  U R                  5       n[        R*                  " SUR&                  -   XfR                  5      nGMô   U$ )Nr@  rƒ  rŠ  r$  rÜ  r  r  >   ÚARROWÚPERIOD>   r	  r
  zInvalid struct referencer…  Úp)r.  ræ   Ú_parse_initializer_listré   r   ÚCompoundLiteralrò   Ú_parse_primary_expressionrG  ÚArrayRefr^   rÜ   rá   Ú_parse_argument_expression_listÚFuncCallrˆ   rR   rT   r	  rS   Ú	StructRefr�  )r   r‚  r™   rì   rQ  r¸   r}  Úsubrã  Úop_tokr�  ÚfieldrV   s                r   r�  Ú!CParser._parse_postfix_expressionT  sì  € Ø×0Ñ0Ó2ˆØÑØ!‰LˆC�qð �|‰|˜H×%Ñ%Ø×3Ñ3Ó5�Ø—‘˜WÔ%Ø—‘˜XÔ&Ü×,Ò,¨SÓ7Ð7à—‘˜DÔ!à×-Ñ-Ó/ˆØØ�|‰|˜J×'Ñ'Ø×,Ñ,Ó.�Ø—‘˜ZÔ(Ü—~’~ d°·±Ó<�ÙØ�|‰|˜H×%Ñ%Ø—?‘?Ó$¨Ó0Ø—M‘M”OØ‘Dà×?Ñ?ÓA�DØ—L‘L Ô*Ü—~’~ d°$·*±*Ó=�ÙØ�‰Ó Ð$7Ó7ØŸ™›�ØŸ=™=›?�Ø—=‘=Ð(8Ó8Ø×%Ñ%Ø2°D·O±OÀHÓ4Môô Ÿš §¡°·±ÀÓ1JÓK�Ü—’ t¯\©\¸5Ç*Á*ÓM�ÚØ�‰Ó Ð$>Ó>Ø—m‘m“o�Ü—}’} S¨3¯9©9¡_°d¿J¹JÓG�ÚØØˆr"   c                 ó`  • U R                  5       nUS:X  a  U R                  5       $ U[        ;   d  U[        ;   d
  U[        ;   a  U R                  5       $ U[        ;   a  U R                  5       $ U[        ;   a  U R                  5       $ US:X  a3  U R                  5         U R                  5       nU R                  S5        U$ US:X  aÁ  U R                  5       nU R                  S5        U R                  5       nU R                  S5        U R                  5       nU R                  S5        U R                  U5      n[         R"                  " [         R$                  " UR&                  U5      [         R(                  " XE/U5      U5      $ U R+                  SU R,                  R.                  5        g )Nr	  r  r  ÚOFFSETOFrƒ  zInvalid expression)rÜ   r  Ú
_INT_CONSTÚ_FLOAT_CONSTÚ_CHAR_CONSTÚ_parse_constantÚ_STRING_LITERALÚ_parse_unified_string_literalÚ_WSTR_LITERALÚ_parse_unified_wstring_literalrá   rG  ré   r,  Ú!_parse_offsetof_member_designatorrT   r   r›  r	  rS   rc  rR   rD   rK   )r   r  r}  Úoff_tokr™   Ú
designatorr^   s          r   r˜  Ú!CParser._parse_primary_expression†  s_  € Ø—?‘?Ó$ˆØ�tÓØ×)Ñ)Ó+Ð+àœ
Ó"Øœ<Ó'Øœ;Ó&à×'Ñ'Ó)Ð)Ø”Ó&Ø×5Ñ5Ó7Ð7Ø”}Ó$Ø×6Ñ6Ó8Ð8Ø�xÓØ�M‰MŒOØ×)Ñ)Ó+ˆDØ�L‰L˜Ô"ØˆKØ�zÓ!Ø—m‘m“oˆGØ�L‰L˜Ô"Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô!Ø×?Ñ?ÓAˆJØ�L‰L˜Ô"Ø—O‘O GÓ,ˆEÜ—>’>Ü—’˜Ÿ™¨Ó.Ü—’ Ð0°%Ó8Øóð ð 	×ÑÐ.°·	±	×0BÑ0BÕCr"   c                 ór  • U R                  5       n U R                  S5      (       a4  U R                  5       n[        R                  " USX!R                  5      nMK  U R                  S5      (       aD  U R                  5       nU R                  S5        [        R                  " XUR                  5      nM¥   U$ )Nr”  Ú.r$  rÜ  )Ú_parse_identifier_or_typeidræ   r   rœ  r^   rG  ré   r™  )r   rš  rŸ  r}  s       r   r«  Ú)CParser._parse_offsetof_member_designator«  s‘   € Ø×/Ñ/Ó1ˆØØ�|‰|˜H×%Ñ%Ø×8Ñ8Ó:�Ü—’ t¨S°%¿¹ÓD�ÙØ�|‰|˜J×'Ñ'Ø×-Ñ-Ó/�Ø—‘˜ZÔ(Ü—~’~ d°$·*±*Ó=�ÙØØˆr"   c                 ó  • U R                  5       nU/nU R                  S5      (       a7  UR                  U R                  5       5        U R                  S5      (       a  M7  [        R                  " X!R
                  5      $ rž  rb  rd  s      r   rš  Ú'CParser._parse_argument_expression_list»  s_   € Ø×0Ñ0Ó2ˆØ�ˆØ�l‰l˜7×#Ñ#Ø�L‰L˜×:Ñ:Ó<Ô=ð �l‰l˜7×#Ó#ä�~Š~˜e§Z¡ZÓ0Ð0r"   c                 ó"   • U R                  5       $ rb   )rh  rd   s    r   r|  Ú"CParser._parse_constant_expressionÃ  s   € Ø×1Ñ1Ó3Ð3r"   c                 ó„   • U R                  S5      n[        R                  " UR                  U R	                  U5      5      $ )Nr	  )ré   r   r	  rS   rT   rà   s     r   r  ÚCParser._parse_identifierÊ  s.   € Ø�l‰l˜4Ó ˆÜ�xŠx˜Ÿ	™	 4§?¡?°3Ó#7Ó8Ð8r"   c                 óä   • U R                  5       nUR                  S;  a!  U R                  SU R                  U5      5        [        R
                  " UR                  U R                  U5      5      $ )N>   r	  r
  zExpected identifier)rá   rˆ   rR   rT   r   r	  rS   rà   s     r   r±  Ú#CParser._parse_identifier_or_typeidÏ  sR   € Ø�m‰m‹oˆØ�8‰8Ð+Ó+Ø×ÑÐ3°T·_±_ÀSÓ5IÔJÜ�xŠx˜Ÿ	™	 4§?¡?°3Ó#7Ó8Ð8r"   c                 ó&  • U R                  5       nUR                  [        ;   a•  SnSnUR                  SS   H  nUS;   a  US-  nM  US;   d  M  US-  nM     US:”  a  [	        S5      eUS:”  a  [	        S5      eS	U-  S
U-  -   n[
        R                  " US-   UR                  U R                  U5      5      $ UR                  [        ;   a^  UR                  S   S;   a  SnOUR                  S   S;   a  SnOSn[
        R                  " XaR                  U R                  U5      5      $ UR                  [        ;   a1  [
        R                  " SUR                  U R                  U5      5      $ U R                  SU R                  U5      5        g )Nr   éýÿÿÿ)ÚlÚLr   )ÚuÚUz.Constant cannot have more than one u/U suffix.r³   z.Constant cannot have more than two l/L suffix.z	unsigned zlong r+   rn   )ÚfÚFÚfloatzlong doubleÚdoubleÚcharzInvalid constant)rá   rˆ   r£  rS   Ú
ValueErrorr   ÚConstantrT   r¤  r¥  rR   )r   rV   Úu_countÚl_countÚchÚprefixrÃ   s          r   r¦  ÚCParser._parse_constantÖ  sX  € Ø�m‰m‹oˆØ�8‰8”zÓ!ØˆGØˆGØ—i‘i  “n�Ø˜Ó#Ø˜q‘L’GØ˜:Õ%Ø˜q‘L’Gñ	 %ð
 ˜‹{Ü Ð!QÓRÐRØ˜‹{Ü Ð!QÓRÐRØ  7Ñ*¨W°wÑ->Ñ>ˆFÜ—>’> &¨5¡.°#·)±)¸T¿_¹_ÈSÓ=QÓRÐRà�8‰8”|Ó#Ø�y‰y˜‰} 
Ó*Ø‘Ø—‘˜2‘ *Ó,Ø!‘à�Ü—>’> !§Y¡Y°·±ÀÓ0DÓEÐEà�8‰8”{Ó"Ü—>’> &¨#¯)©)°T·_±_ÀSÓ5IÓJÐJà×ÑÐ,¨d¯o©o¸cÓ.BÕCr"   c                 óF  • U R                  S5      n[        R                  " SUR                  U R	                  U5      5      nU R                  5       S:X  aJ  U R                  5       nUR                  S S UR                  SS  -   Ul        U R                  5       S:X  a  MJ  U$ )NÚSTRING_LITERALÚstringrn   r   )ré   r   rÇ  rS   rT   rÜ   rá   ©r   rV   rš  Útok2s       r   r¨  Ú%CParser._parse_unified_string_literalö  s„   € Ø�l‰lÐ+Ó,ˆÜ�~Š~˜h¨¯	©	°4·?±?À3Ó3GÓHˆØ�o‰oÓÐ#3Ó3Ø—=‘=“?ˆDØŸ™ C R˜¨4¯:©:°a°b¨>Ñ9ˆDŒJð �o‰oÓÐ#3Õ3ð ˆr"   c                 óÚ  • U R                  5       nUR                  [        ;  a!  U R                  SU R	                  U5      5        [
        R                  " SUR                  U R	                  U5      5      nU R                  5       [        ;   a\  U R                  5       nUR                  R                  5       S S UR                  SS  -   Ul        U R                  5       [        ;   a  M\  U$ )NzInvalid string literalrÏ  rn   r³   )
rá   rˆ   r©  rR   rT   r   rÇ  rS   rÜ   ÚrstriprÐ  s       r   rª  Ú&CParser._parse_unified_wstring_literalÿ  s®   € Ø�m‰m‹oˆØ�8‰8œ=Ó(Ø×ÑÐ6¸¿¹ÈÓ8LÔMÜ�~Š~˜h¨¯	©	°4·?±?À3Ó3GÓHˆØ�o‰oÓ¤=Ó0Ø—=‘=“?ˆDØŸ™×*Ñ*Ó,¨S¨bÐ1°D·J±J¸q¸r°NÑBˆDŒJð �o‰oÓ¤=Õ0ð ˆr"   c                 ó2  • U R                  S5      nU(       ap  U R                  S5      (       a&  [        R                  " / U R                  U5      5      $ U R	                  5       nU R                  S5        U R                  S5        U$ U R                  5       $ )Nr@  rŠ  rƒ  )ræ   r   ÚInitListrT   r–  ré   rÝ  )r   r;  Ú	init_lists      r   rL  ÚCParser._parse_initializer  sw   € Ø—\‘\ (Ó+ˆ
ÞØ�|‰|˜H×%Ñ%Ü—~’~ b¨$¯/©/¸*Ó*EÓFÐFØ×4Ñ4Ó6ˆIØ�L‰L˜Ô!Ø�L‰L˜Ô"ØÐà×0Ñ0Ó2Ð2r"   c                 ó.  • U R                  5       /nU R                  S5      (       aL  U R                  5       S:X  a  O7UR                  U R                  5       5        U R                  S5      (       a  ML  [        R
                  " XS   R                  5      $ )Nrƒ  rŠ  r   )Ú_parse_initializer_itemræ   rÜ   rc   r   r×  r^   )r   r“  s     r   r–  ÚCParser._parse_initializer_list  ss   € Ø×-Ñ-Ó/Ð0ˆØ�l‰l˜7×#Ñ#Ø�‰Ó  HÓ,ØØ�L‰L˜×5Ñ5Ó7Ô8ð �l‰l˜7×#Ó#ô �~Š~˜e¨1¡X§^¡^Ó4Ð4r"   c                 ó¤   • S nU R                  5       S;   a  U R                  5       nU R                  5       nUb  [        R                  " X5      $ U$ ©N>   r”  r$  )rÜ   Ú_parse_designationrL  r   ÚNamedInitializer)r   Údesignationr¸   s      r   rÛ  ÚCParser._parse_initializer_item%  sO   € ØˆØ�?‰?ÓÐ 6Ó6Ø×1Ñ1Ó3ˆKØ×&Ñ&Ó(ˆØÑ"Ü×)Ò)¨+Ó<Ð<Øˆr"   c                 óH   • U R                  5       nU R                  S5        U$ )NrC  )Ú_parse_designator_listré   ©r   Údesignatorss     r   rß  ÚCParser._parse_designation/  s"   € Ø×1Ñ1Ó3ˆØ�‰�XÔØÐr"   c                 óœ   • / nU R                  5       S;   a5  UR                  U R                  5       5        U R                  5       S;   a  M5  U$ rÞ  )rÜ   rc   Ú_parse_designatorrå  s     r   rä  ÚCParser._parse_designator_list5  sF   € ØˆØ�o‰oÓÐ#9Ó9Ø×Ñ˜t×5Ñ5Ó7Ô8ð �o‰oÓÐ#9Õ9àÐr"   c                 ó  • U R                  S5      (       a#  U R                  5       nU R                  S5        U$ U R                  S5      (       a  U R                  5       $ U R	                  SU R
                  R                  5        g )Nr$  rÜ  r”  zInvalid designator)ræ   r|  ré   r±  rR   rD   rK   )r   r}  s     r   ré  ÚCParser._parse_designator=  si   € Ø�<‰<˜
×#Ñ#Ø×2Ñ2Ó4ˆDØ�L‰L˜Ô$ØˆKØ�<‰<˜×!Ñ!Ø×3Ñ3Ó5Ð5Ø×ÑÐ.°·	±	×0BÑ0BÕCr"   c                 óh   • U R                  S5      nU R                  SU R                  U5      5        g )Nr:  zDirectives not supported yet)ré   rR   rT   rà   s     r   rE  ÚCParser._parse_pp_directiveJ  s*   € Ø�l‰l˜8Ó$ˆØ×ÑÐ8¸$¿/¹/È#Ó:NÕOr"   c                 ó‚  • U R                  5       S:X  aŠ  U R                  5       nU R                  5       S:X  a@  U R                  5       n[        R                  " UR                  U R                  U5      5      $ [        R                  " SU R                  U5      5      $ U R                  5       S:X  ag  U R                  5       nU R                  S5      nU R                  5       nU R                  S5        [        R                  " X@R                  U5      5      $ U R                  SU R                  R                  5        g )Nr=  ÚPPPRAGMASTRr3   r<  r  r  zInvalid pragma)rÜ   rá   r   ÚPragmarS   rT   ré   r¨  rR   rD   rK   )r   rV   Ústr_tokÚlparenÚliterals        r   rF  Ú!CParser._parse_pppragma_directiveP  sã   € Ø�?‰?Ó 
Ó*Ø—-‘-“/ˆCØ�‰Ó  MÓ1ØŸ-™-›/�Ü—|’| G§M¡M°4·?±?À7Ó3KÓLÐLÜ—<’<  D§O¡O°CÓ$8Ó9Ð9à�?‰?Ó 	Ó)Ø—-‘-“/ˆCØ—\‘\ (Ó+ˆFØ×8Ñ8Ó:ˆGØ�L‰L˜Ô"Ü—<’< ¯©¸Ó)@ÓAÐAà×ÑÐ*¨D¯I©I×,>Ñ,>Õ?r"   c                 óœ   • / nU R                  5       S;   a5  UR                  U R                  5       5        U R                  5       S;   a  M5  U$ )Nr;  )rÜ   rc   rF  )r   r.  s     r   r,  Ú&CParser._parse_pppragma_directive_listb  sC   € ØˆØ�o‰oÓÐ#:Ó:Ø�N‰N˜4×9Ñ9Ó;Ô<ð �o‰oÓÐ#:Õ:àˆr"   c                 ó&  • U R                  S5      nU R                  S5        U R                  5       nS nU R                  S5      (       a  U R                  5       nU R                  S5        [        R
                  " X#U R                  U5      5      /$ )Nr?  r  rƒ  r  )ré   r|  ræ   r¨  r   ÚStaticAssertrT   )r   rV   rJ  r]   s       r   rG  ÚCParser._parse_static_asserti  sx   € Ø�l‰lÐ+Ó,ˆØ�‰�XÔØ×.Ñ.Ó0ˆØˆØ�<‰<˜× Ñ Ø×4Ñ4Ó6ˆCØ�‰�XÔÜ×"Ò" 4¨d¯o©o¸cÓ.BÓCÐDÐDr"   )rF   rH   rD   )r3   Frb   )r   N)F©r   )FF)r   rŸ   r÷   )r   r®   )T)r   N)�r$   r%   r&   r'   r(   r   Úboolrˆ   r)   rI   r   r1  rW   r+   r	   r   r[   r   rR   re   rj   rr   ru   r{   r@   rA   rB   rC   r   r™  rŽ   rÀ   r¿   r   r   rœ   r«   rÇ   rÏ   rÔ   r   rQ   rÜ   rá   ræ   ré   rí   rò   rT   rù   rý   r  r  r
   r  r  r  r%  r)  r.  rP   r2  r6  rX  rV  rJ  rK  rI  ru  rx  rj  rk  rM  r„  ro  r‹  r’  r˜  rŸ  rp  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  r'  r0  r3  r8  rH  r"  r#  r$  r%  r&  rR  rG  rÝ  rh  rp  rx  r�  r�  r˜  r«  rš  r|  r  r±  r¦  r¨  rª  rL  r–  rÛ  rß  rä  ré  rE  rF  r,  rG  r,   r#   r"   r   r1   r1   2   s  † ñ	ð "Ø$Ø(Ø"Ø*Ø Øñ=àð=ð �F‰|ð=ð ð	=ð
 ð=ð ð=ð ð=ð ð=ð 
õ=ð: <AñØðØ#&ðØ48ðà	�‰õñ8J˜Sð J¨(°3©-ð JÀ5õ Jð, ð ,¨E°C©K¸$Ñ,>ð ,À8ô ,ô)ô ð+ cð +°(¸5±/ð +Àdô +ð	, Cð 	,°¸±ð 	,ÀDô 	,ð cð ¨dô ð: 3ð :¨cð :¸3ð :À4ô :ôôð,¨#ð ,°$ô ,ðT cð °Sð ¸U¿Z¹Zô ðX&à�j‰j˜5Ÿ=™=Ñ(¨5¯>©>Ñ9ð&ð �s‘)ð&ð 
�‰�e—m‘mÑ	# e§n¡nÑ	4ô	&ðZ ñà˜;Ñ'ðð ðð ð	ð
 ðð 
õð4 #(ñ	eàðeð �KÑ ðeð  ð	eð
 
ˆe�j‰jÑ	õeðN
àð
ð �j‰jð
ð ˜d 5§:¡:Ñ.Ñ/ð	
ð
 �j‰jð
ð 
�‰ô
ð*°ð ¸ô ñ$�sð $ 8¨FÑ#3õ $ñ5˜Cð 5¨°©õ 5ð
˜&ô ð	 #ð 	¨(°6Ñ*:ô 	ð #ð ¨&ô ð#�sô #ð!˜3ð ! 4ô !ð3˜fð 3¨ô 3ñ' x°Ñ'7ð 'À4õ 'ñ. h¨vÑ&6ð .À$õ .ð) 4ô )ñ,¨$ð ,¸4õ ,ð#¨E°(¸3±-ÀÐ2EÑ,Fô #ð NSñØ"ðØFJðà	ˆx˜Ÿ
™
Ñ# TÐ)Ñ	*õð6!¨E°(¸3±-ÀÐ2EÑ,Fô !ðF;°Dô ;ð? 4ô ?ð%à	�%˜Ÿ™¨¨VÐ3Ñ4Ñ	5ô%ð6=°%·-±-ô =ð¨¨e¯j©jÑ)9ô ðM¨T°%·*±*Ñ-=ô Mðl D¨¯©Ñ$4ô ð? $ u§z¡zÑ"2ô ?ð'Øð'Ø+/ð'à	ˆe�j‰jÑ	ô'ðT¨¨e¯j©jÑ)9ô ð %*ñv+Ø!ðv+à	ˆ{˜D (¨5¡/Ð1Ñ	2õv+ôv`ðF¨D°©Iô ð9¨E¯J©Jô 9ð¨¯©ô ð DIñØ˜kÑ*ðØ<@ðà	ˆkÑ	õñ8¨dð 8¸{õ 8ðT°%·*±*ô TðB°°U·Z±ZÑ0@ô ð
¨8°D¸¿¹Ñ4DÑ+Eô 
ðD¨t°KÑ/@ô ô=ð$= u§z¡zô =ð"¨¯
©
ô ð 5§:¡:ô ð 5§:¡:ô ðH e§j¡jô HðL¨%¯*©*ô LðM°%·*±*ô Mð¨3ð ¸Tð ÀeÇjÁjô ð .2ñ/Øð/Ø&*ð/à	�‰õ/ð*¨¯©ð ¸¿
¹
ô ðT¨5¯:©:ð T¸%¿*¹*ô Tð IMñ7(Ø! %§*¡*Ñ-ð7(Ø6>¸u±oð7(à	�‰õ7(ðt¨e¯j©jð ¸U¿Z¹Zô ð4 ¨¯©Ñ 4ô ð"¨E¯O©Oô ð u§¡ô ðI¨e¯j©jô Ið&<Øð<Ø'/°·
±
Ñ';ð<ØIQÐRWÉð<à	�‰ô<ð,-¨H°U·Z±ZÑ,@ô -ð¨¯
©
ô ðV %§.¡.ô Vð(°¸¿¹Ñ0Dô ð$/°5·:±:ô /ð.1°¸¿¹Ñ0Iô 1ð
¨E¯J©Jô 
ð: %§*¡*¨t°E·J±JÑ/?Ñ"?ô :ð.'°·
±
¸TÀ%Ç*Á*Ñ=MÑ0Mô 'ð' 5§:¡:°°U·Z±ZÑ0@Ñ#@ô 'ð
¨¨U¯Z©ZÑ(8ô 
ð
¨5¯:©:ô 
ðS¨%¯*©*ô SðBW¨E¯J©Jô Wð2&W¨E¯J©Jô &WðTR u§z¡zô Rð.¨U¯Z©Zô ð x°·
±
Ñ';ô ð1 5§:¡:ô 1ð¨e¯j©jô ð ¨u¯z©zô ð >BñØðØ&.¨u¯z©zÑ&:ðà	�‰õðD.¨¯
©
ô .ð*0¨¯©ô 0ð@.¨5¯:©:ô .ðd!D¨5¯:©:ô !DðJ°5·:±:ô ð 1°·±ô 1ð4¨E¯J©Jô 4ð9 5§:¡:ô 9ð
9¨U¯Z©Zô 9ðD §¡ô Dð@¨u¯z©zô ð°·
±
ô ð 
3 E§J¡Jô 
3ð5¨¯©ô 5ð¨¯©ô ð D¨¯©Ñ$4ô ð¨¨U¯Z©ZÑ(8ô ðD 5§:¡:ô DðP Xô Pð@¨5¯:©:ô @ð$°°U·Z±ZÑ0@ô ðE d¨5¯:©:Ñ&6÷ Er"   r1   >   rC  ÚOREQUALÚANDEQUALÚDIVEQUALÚMODEQUALÚXOREQUALÚ	PLUSEQUALÚ
MINUSEQUALÚ
TIMESEQUALÚLSHIFTEQUALÚRSHIFTEQUALÚLORÚLANDÚORr³   ÚXORé   rˆ  é   ÚEQé   ÚNEÚGTé   ÚGEÚLTÚLEÚRSHIFTé   ÚLSHIFTr‹  é   rŒ  r  é	   ÚDIVIDEÚMOD>   ÚAUTOÚEXTERNrÚ  ÚTYPEDEFÚREGISTERÚ_THREAD_LOCALÚINLINEÚ	_NORETURN>   ÚCONSTrf  ÚRESTRICTÚVOLATILE>   ÚINTÚCHARÚLONGÚVOIDÚFLOATÚSHORTÚ_BOOLÚDOUBLEÚSIGNEDÚUNSIGNEDÚ_COMPLEXÚ__INT128>   ri  rg  rh  r
  rf  rd  >   r	  rˆ  r‰  rŠ  r‹  rŒ  r  r  r�  r¢  r†  rŽ  r‡  >   ÚINT_CONST_BINÚINT_CONST_DECÚINT_CONST_HEXÚINT_CONST_OCTÚINT_CONST_CHARÚFLOAT_CONSTÚHEX_FLOAT_CONST>   Ú
CHAR_CONSTÚWCHAR_CONSTÚU8CHAR_CONSTÚU16CHAR_CONSTÚU32CHAR_CONSTrÎ  >   ÚWSTRING_LITERALÚU8STRING_LITERALÚU16STRING_LITERALÚU32STRING_LITERAL>   r  r  r  r  r  r>  r  r  r@  r!  r  r  r<  r   r=  r?  c                   óŒ   • \ rS rSrSrS\SS4S jrSS\S\\	   4S jjr
S\\	   4S	 jrS\4S
 jrS\SS4S jrS\SS4S jrSrg)rG   iÿ  zœWraps a lexer to provide convenient, buffered access to the underlying
token stream. The lexer is expected to be initialized with the input
string already.
r5   r   Nc                 ó,   • Xl         / U l        SU l        g )Nr   )Ú_lexerÚ_bufferÚ_index)r   r5   s     r   rI   Ú_TokenStream.__init__	  s   € ØŒØ/1ˆŒØˆ�r"   rÖ   c                 óp   • US::  a  gU R                  U5        U R                  U R                  U-   S-
     $ )zœPeek at the k-th next token in the stream, without consuming it.

Examples:
    k=1 returns the immediate next token.
    k=2 returns the token after that.
r   Nr   ©Ú_fillrE  rF  rÙ   s     r   rØ   Ú_TokenStream.peek
	  s5   € ð �‹6ØØ�
‰
�1ŒØ�|‰|˜DŸK™K¨!™O¨aÑ/Ñ0Ð0r"   c                 ó„   • U R                  S5        U R                  U R                     nU =R                  S-  sl        U$ )z%Consume a single token and return it.r   rI  rà   s     r   rß   Ú_TokenStream.next	  s2   € à�
‰
�1ŒØ�l‰l˜4Ÿ;™;Ñ'ˆØ�Š�qÑ�Øˆ
r"   c                 ó   • U R                   $ rb   ©rF  rd   s    r   rì   Ú_TokenStream.mark"	  s   € Ø�{‰{Ðr"   rì   c                 ó   • Xl         g rb   rO  rñ   s     r   rð   Ú_TokenStream.reset%	  s   € Ø�r"   Únc                 ó  • [        U R                  5      U R                  U-   :  ab  U R                  R	                  5       nU R                  R                  U5        Uc  g [        U R                  5      U R                  U-   :  a  Ma  g g rb   )rh   rE  rF  rD  rÑ   rc   )r   rS  rV   s      r   rJ  Ú_TokenStream._fill(	  sb   € Ü�$—,‘,Ó $§+¡+°¡/Ó1Ø—+‘+×#Ñ#Ó%ˆCØ�L‰L×Ñ Ô$Ø‰{Øô	 �$—,‘,Ó $§+¡+°¡/×1r"   )rE  rF  rD  rû  )r$   r%   r&   r'   r(   r   rI   r+   r	   r   rØ   rß   rì   rð   rJ  r,   r#   r"   r   rG   rG   ÿ  su   † ñð
˜fð ¨ô ñ

1�cð 
1 (¨6Ñ"2õ 
1ð�h˜vÑ&ô ð�cô ð˜#ð  $ô ð�sð ˜t÷ r"   rG   c                   óf   • \ rS rSr% \\   \S'   \\   \S'   \\   \S'   \\   \S'   \\   \S'   Srg)	rŸ   i6	  r¥   r¦   rˆ   r§   r¨   r#   N)r$   r%   r&   r'   r   r   r*   r,   r#   r"   r   rŸ   rŸ   6	  s2   ‡ Ø
ˆs‰)ƒOØ�#‰YÓØ
ˆs‰)ƒOØ�3‰iÓØ�C‰yÖr"   rŸ   r¤   c                   ó‚   • \ rS rSr% \\R                     \S'   \\R                     \S'   \\R                     \S'   Srg)r®   iA	  r…   r¸   r²   r#   N)	r$   r%   r&   r'   r	   r   r™  r*   r,   r#   r"   r   r®   r®   A	  s1   ‡ ð
 �5—:‘:Ñ
ÓØ
�5—:‘:Ñ
ÓØ�e—j‘jÑ!Ö!r"   r®   N)+Údataclassesr   Útypingr   r   r   r   r   r	   r
   r   r   r3   r   Úc_lexerr   r   Úast_transformsr   r   r   Ú	Exceptionr.   r1   r(  ry  rl  rm  r  rn  rø   Ú_EXPR_STARTr£  r¤  r¥  r§  r©  rü   r   rG   rŸ   r¢   r®   r#   r"   r   Ú<module>r^     s.  ðõ "÷
÷ 
õ 
õ ß #ß Cð ÷ð ó ðô$	�ô 	÷ Eñ  EòDB€ð"Ø	ˆ1ðà
ˆAðð 	ˆ!ðð 
ˆ1ð	ð
 
ˆ1ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð ˆaðð ˆaðð ˆAðð ˆQðð  ˆQð!ð" ˆað#ð$ 
ˆ1ñ%Ð ò* V€à˜KÐ(€â>€òÐ ð  Øñàñð ñò Cñ	Cð ò€ò €
ð Ð0Ð1€ò€ð $Ð$€ò€ð Øñàñð ñð ñ	ð
 ñð òÐ ÷(.ñ .ôn�	ô ð ÐJÑK€ô"�	õ "r"   