§
    qŠtj¿�  ã                   óÊ  — U d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ej        r
ddlZdd	lmZ  ej        d
ej        ej        ¦  «        Z ej        dej        ej        ¦  «        Z eg d¢¦  «        Z eg d¢¦  «        Zej        ej        ej        ej        ej        ej        dœZ ej!        e"ej#        ej$                 f         e%d<    G d„ d¦  «        Z&dS )z8Parse tokens from the lexer into nodes for the compiler.é    Né   )Únodes)ÚTemplateAssertionError)ÚTemplateSyntaxError)Údescribe_token)Údescribe_token_expr)ÚEnvironmentÚ_ImportIncludeÚ
_MacroCall)ÚforÚifÚblockÚextendsÚprintÚmacroÚincludeÚfromÚimportÚsetÚwithÚ
autoescape)ÚeqÚneÚltÚlteqÚgtÚgteq)ÚaddÚsubÚmulÚdivÚfloordivÚmodÚ_math_nodesc                   ó
  — e Zd ZdZ	 	 	 dUdddedej        e         dej        e         dej        e         d	dfd
„Zdefdedej        e	         dej
        e         d	dfd„Zdej        e         dej        ej        edf                  dej        e	         d	dfd„Z	 dVdedej        e	         d	dfd„Z	 	 dWdej        ej        edf                  dej        e	         d	dfd„Z	 dVdej        ej        edf                  d	efd„ZdVdej        e	         d	ej        fd„Zd	ej        ej        ej        ej                 f         fd„Z	 dXdej        edf         ded	ej        ej                 fd„Zd	ej        ej        ej        f         fd„Zd	ej        fd„Zd	ej        fd„Z d	ej!        fd „Z"d	ej#        fd!„Z$d	ej%        fd"„Z&d	ej'        fd#„Z(d$e)d%ed	e)fd&„Z*d	ej+        fd'„Z,d	ej-        fd(„Z.d	ej/        fd)„Z0d$e1d	dfd*„Z2d	ej3        fd+„Z4d	ej5        fd,„Z6d	ej7        fd-„Z8d	ej9        fd.„Z:e;j<        	 dYd/ed0d1d	ej=        fd2„¦   «         Z>e;j<        	 	 	 	 dZd/ed0edej        ej        edf                  d4ed	ej        ej?        ej=        ej        f         f
d5„¦   «         Z>	 	 	 	 dZd/ed0edej        ej        edf                  d4ed	ej        ej?        ej=        ej        f         f
d6„Z>d[d7ed	ej@        fd8„ZAd	ej@        fd9„ZBd	ej@        fd:„ZCd	ej@        fd;„ZDd	ej@        fd<„ZEd	ej@        fd=„ZFd	ej@        fd>„ZGd	ej@        fd?„ZHd	ej@        fd@„ZId	ej@        fdA„ZJd[dBed	ej@        fdC„ZKdXd4ed	ej@        fdD„ZL	 	 	 	 	 d\dEed7edej        ej        edf                  dFed4ed	ej        ej        ej@        f         fdG„ZMd	ej        fdH„ZNd	ejO        fdI„ZPd$ej@        d	ej@        fdJ„ZQd$ej@        d	ej@        fdK„ZRd$ej@        d	ej        ejS        ejT        f         fdL„ZUd	ej@        fdM„ZVd	ej        ej        ej@                 ej        ejW                 ej        ej@                 ej        ej@                 f         fdN„ZXd$ej@        d	ejY        fdO„ZZ	 dXd$ej        ej@                 dPed	ej        ej@                 fdQ„Z[d$ej@        d	ej@        fdR„Z\	 dVdej        ej        edf                  d	ej        ej                 fdS„Z]d	ej^        fdT„Z_dS )]ÚParserz…This is the central parsing class Jinja uses.  It's passed to
    extensions and can be used to parse expressions or statements.
    NÚenvironmentr	   ÚsourceÚnameÚfilenameÚstateÚreturnc                 ó  — || _         |                     ||||¦  «        | _        || _        || _        d| _        i | _        |                     ¦   «         D ]}|j        D ]}|j	        | j        |<   ŒŒd| _
        g | _        g | _        d S )NFr   )r'   Ú	_tokenizeÚstreamr)   r*   ÚclosedÚ
extensionsÚiter_extensionsÚtagsÚparseÚ_last_identifierÚ
_tag_stackÚ_end_token_stack)Úselfr'   r(   r)   r*   r+   Ú	extensionÚtags           úK/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/jinja2/parser.pyÚ__init__zParser.__init__5   s©   € ð 'ˆÔØ!×+Ò+¨F°D¸(ÀEÑJÔJˆŒØˆŒ	Ø ˆŒØˆŒð ð 	Œð %×4Ò4Ñ6Ô6ð 	7ð 	7ˆIØ ”~ð 7ð 7�Ø'0¤�” Ñ$Ð$ð7à !ˆÔØ')ˆŒØ;=ˆÔÐÐó    ÚmsgÚlinenoÚexczte.NoReturnc                 óX   — |€| j         j        j        } |||| j        | j        ¦  «        ‚)z Convenience method that raises `exc` with the message, passed
        line number or last line number as well as the current name and
        filename.
        )r/   Úcurrentr?   r)   r*   )r8   r>   r?   r@   s       r;   ÚfailzParser.failL   s0   € ð ˆ>Ø”[Ô(Ô/ˆFØˆc�#�v˜tœy¨$¬-Ñ8Ô8Ð8r=   Úend_token_stack.c           
      ó@  — t          ¦   «         }|D ]*}|                     t          t          |¦  «        ¦  «         Œ+|rBd                     t          t
          t          t          |d         ¦  «        ¦  «        ¦  «        }nd }|€dg}nd|›d�g}|r9|�||v r|                     d|› d�¦  «         n|                     d|› d�¦  «         | j        r$|                     d| j        d         ›d�¦  «         |                      d	                     |¦  «        |¦  «         d S )
Nz or éÿÿÿÿzUnexpected end of template.zEncountered unknown tag ú.z\You probably made a nesting mistake. Jinja is expecting this tag, but currently looking for z*Jinja was looking for the following tags: z/The innermost block that needs to be closed is ú )	r   ÚupdateÚmapr   ÚjoinÚreprÚappendr6   rC   )r8   r)   rD   r?   ÚexpectedÚexprsÚcurrently_lookingÚmessages           r;   Ú_fail_ut_eofzParser._fail_ut_eofZ   s  € õ  #™uœuˆØ$ð 	=ð 	=ˆEØ�OŠO�CÕ 3°UÑ;Ô;Ñ<Ô<Ð<Ð<Øð 	%Ø17·²Ý•D�#Õ1°?À2Ô3FÑGÔGÑHÔHñ2ô 2ÐÐð !%Ðàˆ<Ø4Ð5ˆGˆGà;°$Ð;Ð;Ð;Ð<ˆGàð 		ØÐ D¨HÐ$4Ð$4Ø—’ðGØ2CðGð Gð Gñô ð ð ð
 —’ØUÐARÐUÐUÐUñô ð ð Œ?ð 	Ø�NŠNð-Ø”O BÔ'ð-ð -ð -ñô ð ð
 	�	Š	�#—(’(˜7Ñ#Ô# VÑ,Ô,Ð,Ð,Ð,r=   c                 ó>   — |                       || j        |¦  «         dS )z¤Called if the parser encounters an unknown tag.  Tries to fail
        with a human readable error message that could help to identify
        the problem.
        N)rR   r7   )r8   r)   r?   s      r;   Úfail_unknown_tagzParser.fail_unknown_tag‚   s%   € ð 	×Ò˜$ Ô 5°vÑ>Ô>Ð>Ð>Ð>r=   Ú
end_tokensc                 óŠ   — t          | j        ¦  «        }|�|                     |¦  «         |                      d||¦  «         dS )z9Like fail_unknown_tag but for end of template situations.N)Úlistr7   rM   rR   )r8   rU   r?   Ústacks       r;   Úfail_eofzParser.fail_eof‹   sJ   € õ �TÔ*Ñ+Ô+ˆØÐ!Ø�LŠL˜Ñ$Ô$Ð$Ø×Ò˜$  vÑ.Ô.Ð.Ð.Ð.r=   Úextra_end_rulesc                 ór   — | j         j        j        dv rdS |�| j         j                             |¦  «        S dS )zAre we at the end of a tuple?)Úvariable_endÚ	block_endÚrparenTNF)r/   rB   ÚtypeÚtest_any)r8   rZ   s     r;   Úis_tuple_endzParser.is_tuple_end–   sA   € ð Œ;ÔÔ#Ð'NÐNÐNØ�4ØÐ(Ø”;Ô&×/Ò/°Ñ@Ô@Ð@Øˆur=   c                 óÂ   — | xj         dz  c_         t                               t          j        ¦  «        }t          j                             |d| j         › �|¬¦  «         |S )zDReturn a new free identifier as :class:`~jinja2.nodes.InternalName`.r   Úfi©r?   )r5   ÚobjectÚ__new__r   ÚInternalNameÚNoder<   )r8   r?   Úrvs      r;   Úfree_identifierzParser.free_identifier    sX   € àÐÔ Ñ"ÐÔÝ�^Š^�EÔ.Ñ/Ô/ˆÝŒ
×Ò˜BÐ < TÔ%:Ð <Ð <ÀVÐÑLÔLÐLØˆ	r=   c                 óÈ  — | j         j        }|j        dk    r|                      d|j        ¦  «         | j                             |j        ¦  «         d}	 |j        t          v rHt          | d| j         j        j        › �¦  «        } |¦   «         |r| j         
                    ¦   «          S S |j        dk    r0|                      ¦   «         |r| j         
                    ¦   «          S S |j        dk    r0|                      ¦   «         |r| j         
                    ¦   «          S S | j                             |j        ¦  «        }|�' || ¦  «        |r| j         
                    ¦   «          S S | j         
                    ¦   «          d}|                      |j        |j        ¦  «         |r| j         
                    ¦   «          dS dS # |r| j         
                    ¦   «          w w xY w)	zParse a single statement.r)   ztag name expectedTÚparse_ÚcallÚfilterNF)r/   rB   r_   rC   r?   r6   rM   ÚvalueÚ_statement_keywordsÚgetattrÚpopÚparse_call_blockÚparse_filter_blockr1   ÚgetrT   )r8   ÚtokenÚpop_tagÚfÚexts        r;   Úparse_statementzParser.parse_statement§   s  € à”Ô#ˆØŒ:˜ÒÐØ�IŠIÐ)¨5¬<Ñ8Ô8Ð8ØŒ×Ò˜uœ{Ñ+Ô+Ð+Øˆð	&ØŒ{Õ1Ð1Ð1Ý˜DÐ"F¨4¬;Ô+>Ô+DÐ"FÐ"FÑGÔG�Ø�q‘s”sð  ð &Ø”×#Ò#Ñ%Ô%Ð%Ð%ð&ð Œ{˜fÒ$Ð$Ø×,Ò,Ñ.Ô.ð ð &Ø”×#Ò#Ñ%Ô%Ð%Ð%ð&ð Œ{˜hÒ&Ð&Ø×.Ò.Ñ0Ô0ð ð &Ø”×#Ò#Ñ%Ô%Ð%Ð%ð&ð ”/×%Ò% e¤kÑ2Ô2ˆCØˆØ�s˜4‘y”yð ð &Ø”×#Ò#Ñ%Ô%Ð%Ð%ð&ð	 ŒO×ÒÑ!Ô!Ð!ØˆGØ×!Ò! %¤+¨u¬|Ñ<Ô<Ð<àð &Ø”×#Ò#Ñ%Ô%Ð%Ð%Ð%ð&ð &øˆwð &Ø”×#Ò#Ñ%Ô%Ð%Ð%ð&øøøs$   Á9G Â+G Ã&G Ä!+G Å);G ÇG!FÚdrop_needlec                 ó  — | j                              d¦  «         | j                              d¦  «         |                      |¦  «        }| j         j        j        dk    r|                      |¦  «         |rt          | j         ¦  «         |S )aR  Parse multiple statements into a list until one of the end tokens
        is reached.  This is used to parse the body of statements as it also
        parses template data if appropriate.  The parser checks first if the
        current token is a colon and skips it if there is one.  Then it checks
        for the block end and parses until if one of the `end_tokens` is
        reached.  Per default the active token in the stream at the end of
        the call is the matched end token.  If this is not wanted `drop_needle`
        can be set to `True` and the end token is removed.
        Úcolonr]   Úeof)r/   Úskip_ifÚexpectÚsubparserB   r_   rY   Únext)r8   rU   r{   Úresults       r;   Úparse_statementszParser.parse_statementsÄ   s‡   € ð 	Œ×Ò˜GÑ$Ô$Ð$ð 	Œ×Ò˜;Ñ'Ô'Ð'Ø—’˜zÑ*Ô*ˆð Œ;ÔÔ# uÒ,Ð,Ø�MŠM˜*Ñ%Ô%Ð%àð 	Ý�”ÑÔÐØˆr=   c                 ór  — t          | j        ¦  «        j        }|                      d¬¦  «        }| j                             d¦  «        r+|                      ¦   «         }t          j        |||¬¦  «        S |                      d¦  «        }|  	                    dd¬¦  «        }t          j
        ||||¬¦  «        S )zParse an assign statement.T©Úwith_namespaceÚassignrd   N)zname:endset©r{   )r‚   r/   r?   Úparse_assign_targetr   Úparse_tupler   ÚAssignÚparse_filterr„   ÚAssignBlock)r8   r?   ÚtargetÚexprÚfilter_nodeÚbodys         r;   Ú	parse_setzParser.parse_setá   s°   € å�d”kÑ"Ô"Ô)ˆØ×)Ò)¸Ð)Ñ>Ô>ˆØŒ;×Ò˜xÑ(Ô(ð 	=Ø×#Ò#Ñ%Ô%ˆDÝ”< ¨°VÐ<Ñ<Ô<Ð<Ø×'Ò'¨Ñ-Ô-ˆØ×$Ò$Ð%5À4Ð$ÑHÔHˆÝÔ  ¨°dÀ6ÐJÑJÔJÐJr=   c           	      ó0  — | j                              d¦  «        j        }|                      d¬¦  «        }| j                              d¦  «         |                      dd¬¦  «        }d}| j                              d	¦  «        r|                      ¦   «         }| j                              d
¦  «        }|                      d¦  «        }t          | j         ¦  «        j	        dk    rg }n|                      dd¬¦  «        }t          j        |||||||¬¦  «        S )zParse a for loop.zname:for)úname:in)rZ   r•   F)úname:recursive)Úwith_condexprrZ   Núname:ifr–   )úname:endforú	name:elseÚendfor)r™   Tr‰   rd   )r/   r€   r?   rŠ   r‹   r   Úparse_expressionr„   r‚   ro   r   ÚFor)r8   r?   r�   ÚiterÚtestÚ	recursiver’   Úelse_s           r;   Ú	parse_forzParser.parse_forì   s  € à”×#Ò# JÑ/Ô/Ô6ˆØ×)Ò)¸,Ð)ÑGÔGˆØŒ×Ò˜9Ñ%Ô%Ð%Ø×ÒØÐ1Dð  ñ 
ô 
ˆð ˆØŒ;×Ò˜yÑ)Ô)ð 	+Ø×(Ò(Ñ*Ô*ˆDØ”K×'Ò'Ð(8Ñ9Ô9ˆ	Ø×$Ò$Ð%AÑBÔBˆÝ�”ÑÔÔ" hÒ.Ð.ØˆEˆEà×)Ò)Ð*:ÈÐ)ÑMÔMˆEÝŒy˜  t¨U°D¸)ÈFÐSÑSÔSÐSr=   c                 ó*  — t          j        | j                             d¦  «        j        ¬¦  «        x}}	 |                      d¬¦  «        |_        |                      d¦  «        |_        g |_	        g |_
        t          | j        ¦  «        }|                     d¦  «        r?t          j        | j        j        j        ¬¦  «        }|j	                             |¦  «         Œ¬|                     d¦  «        r|                      d	d¬
¦  «        |_
        	 |S )zParse an if construct.r˜   rd   TF©r—   )ú	name:elifrš   ú
name:endifr¥   rš   )r¦   r‰   )r   ÚIfr/   r€   r?   r‹   rŸ   r„   r’   Úelif_r¡   r‚   rB   rM   )r8   Únoderƒ   rv   s       r;   Úparse_ifzParser.parse_ifÿ   sü   € åœ¨¬×(:Ò(:¸9Ñ(EÔ(EÔ(LÐMÑMÔMÐMˆˆvð	Ø×(Ò(°uÐ(Ñ=Ô=ˆDŒIØ×-Ò-Ð.VÑWÔWˆDŒIØˆDŒJØˆDŒJÝ˜œÑ%Ô%ˆEØ�zŠz˜+Ñ&Ô&ð XÝ”x t¤{Ô':Ô'AÐBÑBÔB�Ø”×#Ò# DÑ)Ô)Ð)ØØ—’˜KÑ(Ô(ð XØ#×4Ò4°_ÐRVÐ4ÑWÔW�”ØØˆr=   c                 óD  — t          j        t          | j        ¦  «        j        ¬¦  «        }g }g }| j        j        j        dk    r°|r| j                             d¦  «         |                      ¦   «         }| 	                    d¦  «         | 
                    |¦  «         | j                             d¦  «         | 
                    |                      ¦   «         ¦  «         | j        j        j        dk    °°||_        ||_        |                      dd¬¦  «        |_        |S )	Nrd   r]   ÚcommaÚparamrˆ   )zname:endwithTr‰   )r   ÚWithr‚   r/   r?   rB   r_   r€   rŠ   Úset_ctxrM   rœ   ÚtargetsÚvaluesr„   r’   )r8   r©   r°   r±   r�   s        r;   Ú
parse_withzParser.parse_with  s
  € ÝŒz¥ d¤kÑ!2Ô!2Ô!9Ð:Ñ:Ô:ˆØ&(ˆØ%'ˆØŒkÔ!Ô&¨+Ò5Ð5Øð ,Ø”×"Ò" 7Ñ+Ô+Ð+Ø×-Ò-Ñ/Ô/ˆFØ�NŠN˜7Ñ#Ô#Ð#Ø�NŠN˜6Ñ"Ô"Ð"ØŒK×Ò˜xÑ(Ô(Ð(Ø�MŠM˜$×/Ò/Ñ1Ô1Ñ2Ô2Ð2ð ŒkÔ!Ô&¨+Ò5Ð5ð ˆŒØˆŒØ×)Ò)Ð*;ÈÐ)ÑNÔNˆŒ	Øˆr=   c                 ó  — t          j        t          | j        ¦  «        j        ¬¦  «        }t          j        d|                      ¦   «         ¦  «        g|_        |                      dd¬¦  «        |_	        t          j
        |g¦  «        S )Nrd   r   )zname:endautoescapeTr‰   )r   ÚScopedEvalContextModifierr‚   r/   r?   ÚKeywordrœ   Úoptionsr„   r’   ÚScope©r8   r©   s     r;   Úparse_autoescapezParser.parse_autoescape"  sq   € ÝÔ.µd¸4¼;Ñ6GÔ6GÔ6NÐOÑOÔOˆÝœ l°D×4IÒ4IÑ4KÔ4KÑLÔLÐMˆŒØ×)Ò)Ð*AÈtÐ)ÑTÔTˆŒ	ÝŒ{˜D˜6Ñ"Ô"Ð"r=   c                 ó®  — t          j        t          | j        ¦  «        j        ¬¦  «        }| j                             d¦  «        j        |_        | j                             d¦  «        |_	        | j                             d¦  «        |_
        | j        j        j        dk    r|                      d¦  «         |                      dd¬	¦  «        |_        |j
        rW|j        D ]O}t!          |t           j        ¦  «        rt%          d
„ |j         D ¦   «         ¦  «        r|                      d¦  «         ŒP| j                             d|j        z   ¦  «         |S )Nrd   r)   zname:scopedzname:requiredr   zpBlock names in Jinja have to be valid Python identifiers and may not contain hyphens, use an underscore instead.)zname:endblockTr‰   c              3   ó€   K  — | ]9}t          |t          j        ¦  «         p|j                             ¦   «          V — Œ:d S ©N)Ú
isinstancer   ÚTemplateDataÚdataÚisspace)Ú.0Úoutput_nodes     r;   ú	<genexpr>z%Parser.parse_block.<locals>.<genexpr>>  sj   è è € ð Bð Bð $õ # ;µÔ0BÑCÔCÐCð 6Ø&Ô+×3Ò3Ñ5Ô5Ð5ðBð Bð Bð Bð Bð Br=   z7Required blocks can only contain comments or whitespacezname:)r   ÚBlockr‚   r/   r?   r€   ro   r)   r   ÚscopedÚrequiredrB   r_   rC   r„   r’   r½   ÚOutputÚany)r8   r©   Ú	body_nodes      r;   Úparse_blockzParser.parse_block(  sZ  € ÝŒ{¥$ t¤{Ñ"3Ô"3Ô":Ð;Ñ;Ô;ˆØ”K×&Ò& vÑ.Ô.Ô4ˆŒ	Ø”k×)Ò)¨-Ñ8Ô8ˆŒØœ×+Ò+¨OÑ<Ô<ˆŒð
 Œ;ÔÔ# uÒ,Ð,Ø�IŠIð?ñô ð ð
 ×)Ò)Ð*<È$Ð)ÑOÔOˆŒ	ð
 Œ=ð 	YØ!œYð Yð Y�	Ý! )­U¬\Ñ:Ô:ð Y½cð Bð Bð (1¤ðBñ Bô Bñ ?ô ?ð Yð
 —I’IÐWÑXÔXÐXøàŒ×Ò˜G d¤iÑ/Ñ0Ô0Ð0Øˆr=   c                 ó�   — t          j        t          | j        ¦  «        j        ¬¦  «        }|                      ¦   «         |_        |S ©Nrd   )r   ÚExtendsr‚   r/   r?   rœ   Útemplater¸   s     r;   Úparse_extendszParser.parse_extendsH  s9   € ÝŒ}¥D¨¬Ñ$5Ô$5Ô$<Ð=Ñ=Ô=ˆØ×-Ò-Ñ/Ô/ˆŒØˆr=   r©   Údefaultc                 ó$  — | j         j                             dd¦  «        rh| j                              ¦   «                              d¦  «        r<t          | j         ¦  «        j        dk    |_        | j                              ¦   «          n||_        |S )Nz	name:withzname:withoutúname:contextr   )	r/   rB   r`   ÚlookrŸ   r‚   ro   Úwith_contextÚskip)r8   r©   rÐ   s      r;   Úparse_import_contextzParser.parse_import_contextM  sŠ   € ð Œ;Ô×'Ò'Ø˜ñ
ô 
ð 	(àŒk×ÒÑ Ô ×%Ò% nÑ5Ô5ð	(õ !% T¤[Ñ 1Ô 1Ô 7¸6Ò AˆDÔØŒK×ÒÑÔÐÐà 'ˆDÔØˆr=   c                 ó   — t          j        t          | j        ¦  «        j        ¬¦  «        }|                      ¦   «         |_        | j        j                             d¦  «        rN| j         	                    ¦   «                              d¦  «        r"d|_
        | j                             d¦  «         nd|_
        |                      |d¦  «        S )Nrd   zname:ignorezname:missingTé   F)r   ÚIncluder‚   r/   r?   rœ   rÎ   rB   rŸ   rÓ   Úignore_missingrÕ   rÖ   r¸   s     r;   Úparse_includezParser.parse_includeY  s¸   € ÝŒ}¥D¨¬Ñ$5Ô$5Ô$<Ð=Ñ=Ô=ˆØ×-Ò-Ñ/Ô/ˆŒØŒ;Ô×#Ò# MÑ2Ô2ð 	(°t´{×7GÒ7GÑ7IÔ7I×7NÒ7NØñ8
ô 8
ð 	(ð #'ˆDÔØŒK×Ò˜QÑÔÐÐà"'ˆDÔØ×(Ò(¨¨tÑ4Ô4Ð4r=   c                 ó,  — t          j        t          | j        ¦  «        j        ¬¦  «        }|                      ¦   «         |_        | j                             d¦  «         |                      d¬¦  «        j	        |_
        |                      |d¦  «        S )Nrd   úname:asT©Ú	name_onlyF)r   ÚImportr‚   r/   r?   rœ   rÎ   r€   rŠ   r)   r�   rÖ   r¸   s     r;   Úparse_importzParser.parse_importe  s{   € ÝŒ|¥4¨¬Ñ#4Ô#4Ô#;Ð<Ñ<Ô<ˆØ×-Ò-Ñ/Ô/ˆŒØŒ×Ò˜9Ñ%Ô%Ð%Ø×.Ò.¸Ð.Ñ>Ô>ÔCˆŒØ×(Ò(¨¨uÑ5Ô5Ð5r=   c                 ó°  ‡ ‡— t          j        t          ‰ j        ¦  «        j        ¬¦  «        Š‰                      ¦   «         ‰_        ‰ j                             d¦  «         g ‰_        dt          fˆˆ fd„}	 ‰j        r‰ j                             d¦  «         ‰ j        j
        j        dk    rõ |¦   «         r�n‰                      d¬¦  «        }|j                             d	¦  «        r"‰                      d
|j        t           ¬¦  «         ‰ j                             d¦  «        r=‰                      d¬¦  «        }‰j                             |j        |j        f¦  «         n‰j                             |j        ¦  «          |¦   «         s‰ j        j
        j        dk    rnn‰ j                             d¦  «         �ŒGt'          ‰d¦  «        sd‰_        ‰S )Nrd   zname:importr,   c                  ó   •— ‰j         j        j        dv ri‰j                              ¦   «                              d¦  «        r=t          ‰j         ¦  «        j        dk    ‰ _        ‰j                              ¦   «          dS dS )N>   r   ÚwithoutrÒ   r   TF)r/   rB   ro   rÓ   rŸ   r‚   rÔ   rÕ   )r©   r8   s   €€r;   Úparse_contextz(Parser.parse_from.<locals>.parse_contextr  s}   ø€ ØŒ{Ô"Ô(ð -ð ð ð ”+×"Ò"Ñ$Ô$×)Ò)¨.Ñ9Ô9ðõ %)¨¬Ñ$5Ô$5Ô$;¸vÒ$E�Ô!Ø”× Ò Ñ"Ô"Ð"Ø�tØ�5r=   Tr¬   r)   rÞ   Ú_z4names starting with an underline can not be imported)r@   rÝ   rÔ   F)r   Ú
FromImportr‚   r/   r?   rœ   rÎ   r€   ÚnamesÚboolrB   r_   rŠ   r)   Ú
startswithrC   r   r   rM   ÚhasattrrÔ   )r8   rå   r�   Úaliasr©   s   `   @r;   Ú
parse_fromzParser.parse_froml  sì  øø€ ÝÔ¥t¨D¬KÑ'8Ô'8Ô'?Ð@Ñ@Ô@ˆØ×-Ò-Ñ/Ô/ˆŒØŒ×Ò˜=Ñ)Ô)Ð)ØˆŒ
ð	�tð 	ð 	ð 	ð 	ð 	ð 	ð 	ð	+ØŒzð ,Ø”×"Ò" 7Ñ+Ô+Ð+ØŒ{Ô"Ô'¨6Ò1Ð1Ø �=‘?”?ð ÙØ×1Ò1¸DÐ1ÑAÔA�Ø”;×)Ò)¨#Ñ.Ô.ð Ø—I’IØNØœÝ2ð ñ ô ð ð
 ”;×&Ò& yÑ1Ô1ð 3Ø ×4Ò4¸tÐ4ÑDÔD�EØ”J×%Ò% v¤{°E´JÐ&?Ñ@Ô@Ð@Ð@à”J×%Ò% f¤kÑ2Ô2Ð2Ø �=‘?”?ð  d¤kÔ&9Ô&>À'Ò&IÐ&IØð 'Jð ”×"Ò" 6Ñ*Ô*Ð*ñ+	+õ, �t˜^Ñ,Ô,ð 	&Ø %ˆDÔØˆr=   c                 óP  — g x}|_         g x}|_        | j                             d¦  «         | j        j        j        dk    rÊ|r| j                             d¦  «         |                      d¬¦  «        }|                     d¦  «         | j                             d¦  «        r(| 	                    |  
                    ¦   «         ¦  «         n|r|                      d¦  «         | 	                    |¦  «         | j        j        j        dk    °Ê| j                             d¦  «         d S )	NÚlparenr^   r¬   TrÞ   r­   rˆ   z-non-default argument follows default argument)ÚargsÚdefaultsr/   r€   rB   r_   rŠ   r¯   r   rM   rœ   rC   )r8   r©   rð   rñ   Úargs        r;   Úparse_signaturezParser.parse_signature–  s$  € ØÐˆˆtŒyØ#%Ð%ˆ�4”=ØŒ×Ò˜8Ñ$Ô$Ð$ØŒkÔ!Ô&¨(Ò2Ð2Øð ,Ø”×"Ò" 7Ñ+Ô+Ð+Ø×*Ò*°TÐ*Ñ:Ô:ˆCØ�KŠK˜Ñ Ô Ð ØŒ{×"Ò" 8Ñ,Ô,ð KØ—’ × 5Ò 5Ñ 7Ô 7Ñ8Ô8Ð8Ð8Øð KØ—	’	ÐIÑJÔJÐJØ�KŠK˜ÑÔÐð ŒkÔ!Ô&¨(Ò2Ð2ð 	Œ×Ò˜8Ñ$Ô$Ð$Ð$Ð$r=   c                 ó¨  — t          j        t          | j        ¦  «        j        ¬¦  «        }| j        j        j        dk    r|                      |¦  «         ng |_        g |_	        |  
                    ¦   «         }t          |t           j        ¦  «        s|                      d|j        ¦  «         ||_        |                      dd¬¦  «        |_        |S )Nrd   rï   zexpected call)zname:endcallTr‰   )r   Ú	CallBlockr‚   r/   r?   rB   r_   ró   rð   rñ   rœ   r½   ÚCallrC   rm   r„   r’   )r8   r©   Ú	call_nodes      r;   rs   zParser.parse_call_block¦  s»   € ÝŒ¥d¨4¬;Ñ&7Ô&7Ô&>Ð?Ñ?Ô?ˆØŒ;ÔÔ# xÒ/Ð/Ø× Ò  Ñ&Ô&Ð&Ð&àˆDŒIØˆDŒMà×)Ò)Ñ+Ô+ˆ	Ý˜)¥U¤ZÑ0Ô0ð 	4Ø�IŠI�o t¤{Ñ3Ô3Ð3ØˆŒ	Ø×)Ò)Ð*;ÈÐ)ÑNÔNˆŒ	Øˆr=   c                 óÎ   — t          j        t          | j        ¦  «        j        ¬¦  «        }|                      d d¬¦  «        |_        |                      dd¬¦  «        |_        |S )Nrd   T)Ústart_inline)zname:endfilterr‰   )	r   ÚFilterBlockr‚   r/   r?   r�   rn   r„   r’   r¸   s     r;   rt   zParser.parse_filter_blockµ  s\   € ÝÔ ­¨T¬[Ñ(9Ô(9Ô(@ÐAÑAÔAˆØ×'Ò'¨¸4Ð'Ñ@Ô@ˆŒØ×)Ò)Ð*=È4Ð)ÑPÔPˆŒ	Øˆr=   c                 ó   — t          j        t          | j        ¦  «        j        ¬¦  «        }|                      d¬¦  «        j        |_        |                      |¦  «         |                      dd¬¦  «        |_	        |S )Nrd   TrÞ   )zname:endmacror‰   )
r   ÚMacror‚   r/   r?   rŠ   r)   ró   r„   r’   r¸   s     r;   Úparse_macrozParser.parse_macro»  sp   € ÝŒ{¥$ t¤{Ñ"3Ô"3Ô":Ð;Ñ;Ô;ˆØ×,Ò,°tÐ,Ñ<Ô<ÔAˆŒ	Ø×Ò˜TÑ"Ô"Ð"Ø×)Ò)Ð*<È$Ð)ÑOÔOˆŒ	Øˆr=   c                 óZ  — t          j        t          | j        ¦  «        j        ¬¦  «        }g |_         | j        j        j        dk    rb|j         r| j                             d¦  «         |j                              |  	                    ¦   «         ¦  «         | j        j        j        dk    °b|S )Nrd   r]   r¬   )
r   rÇ   r‚   r/   r?   rB   r_   r€   rM   rœ   r¸   s     r;   Úparse_printzParser.parse_printÂ  s™   € ÝŒ|¥4¨¬Ñ#4Ô#4Ô#;Ð<Ñ<Ô<ˆØˆŒ
ØŒkÔ!Ô&¨+Ò5Ð5ØŒzð ,Ø”×"Ò" 7Ñ+Ô+Ð+ØŒJ×Ò˜d×3Ò3Ñ5Ô5Ñ6Ô6Ð6ð ŒkÔ!Ô&¨+Ò5Ð5ð ˆr=   Ú
with_tuplerß   zte.Literal[True]c                 ó   — d S r¼   © )r8   r   rß   s      r;   rŠ   zParser.parse_assign_targetË  s	   € ð �Sr=   Tr‡   c                 ó   — d S r¼   r  )r8   r   rß   rZ   r‡   s        r;   rŠ   zParser.parse_assign_targetÐ  s	   € ð 9<¸r=   c                 óº  — |r<| j                              d¦  «        }t          j        |j        d|j        ¬¦  «        }nF|r|                      d||¬¦  «        }n|                      |¬¦  «        }|                     d¦  «         | 	                    ¦   «         sB|  
                    dt          |¦  «        j                             ¦   «         ›�|j        ¦  «         |S )a  Parse an assignment target.  As Jinja allows assignments to
        tuples, this function can parse all allowed assignment targets.  Per
        default assignments to tuples are parsed, that can be disable however
        by setting `with_tuple` to `False`.  If only assignments to names are
        wanted `name_only` can be set to `True`.  The `extra_end_rules`
        parameter is forwarded to the tuple parsing function.  If
        `with_namespace` is enabled, a namespace assignment may be parsed.
        r)   Ústorerd   T)Ú
simplifiedrZ   r‡   r†   zcan't assign to )r/   r€   r   ÚNamero   r?   r‹   Úparse_primaryr¯   Ú
can_assignrC   r_   Ú__name__Úlower)r8   r   rß   rZ   r‡   rv   r�   s          r;   rŠ   zParser.parse_assign_targetÙ  sê   € ð" ð 	$Ø”K×&Ò& vÑ.Ô.ˆEÝ”Z ¤¨W¸U¼\ÐJÑJÔJˆFˆFàð KØ×)Ò)Ø#Ø$3Ø#1ð *ñ ô ��ð ×+Ò+¸>Ð+ÑJÔJ�à�NŠN˜7Ñ#Ô#Ð#à× Ò Ñ"Ô"ð 	Ø�IŠIØD¥4¨¡<¤<Ô#8×#>Ò#>Ñ#@Ô#@ÐDÐDÀfÄmñô ð ð ˆr=   r—   c                 óV   — |r|                       ¦   «         S |                      ¦   «         S )zºParse an expression.  Per default all expressions are parsed, if
        the optional `with_condexpr` parameter is set to `False` conditional
        expressions are not parsed.
        )Úparse_condexprÚparse_or©r8   r—   s     r;   rœ   zParser.parse_expression   s,   € ð
 ð 	)Ø×&Ò&Ñ(Ô(Ð(Ø�}Š}‰ŒÐr=   c                 ó”  — | j         j        j        }|                      ¦   «         }| j                              d¦  «        rˆ|                      ¦   «         }| j                              d¦  «        r|                      ¦   «         }nd }t          j        ||||¬¦  «        }| j         j        j        }| j                              d¦  «        °ˆ|S )Nr˜   rš   rd   )r/   rB   r?   r  r   r  r   ÚCondExpr)r8   r?   Úexpr1Úexpr2Úexpr3s        r;   r  zParser.parse_condexpr	  s¹   € Ø”Ô$Ô+ˆØ—’‘”ˆð Œk×!Ò! )Ñ,Ô,ð 	0Ø—M’M‘O”OˆEØŒ{×"Ò" ;Ñ/Ô/ð Ø×+Ò+Ñ-Ô-��à�Ý”N 5¨%°¸vÐFÑFÔFˆEØ”[Ô(Ô/ˆFð Œk×!Ò! )Ñ,Ô,ð 	0ð ˆr=   c                 ó0  — | j         j        j        }|                      ¦   «         }| j                              d¦  «        rV|                      ¦   «         }t          j        |||¬¦  «        }| j         j        j        }| j                              d¦  «        °V|S )Núname:orrd   )r/   rB   r?   Ú	parse_andr   r   ÚOr©r8   r?   ÚleftÚrights       r;   r  zParser.parse_or  s‰   € Ø”Ô$Ô+ˆØ�~Š~ÑÔˆØŒk×!Ò! )Ñ,Ô,ð 	0Ø—N’NÑ$Ô$ˆEÝ”8˜D %°Ð7Ñ7Ô7ˆDØ”[Ô(Ô/ˆFð Œk×!Ò! )Ñ,Ô,ð 	0ð ˆr=   c                 ó0  — | j         j        j        }|                      ¦   «         }| j                              d¦  «        rV|                      ¦   «         }t          j        |||¬¦  «        }| j         j        j        }| j                              d¦  «        °V|S )Núname:andrd   )r/   rB   r?   Ú	parse_notr   r   ÚAndr  s       r;   r  zParser.parse_and!  s‰   € Ø”Ô$Ô+ˆØ�~Š~ÑÔˆØŒk×!Ò! *Ñ-Ô-ð 	0Ø—N’NÑ$Ô$ˆEÝ”9˜T 5°Ð8Ñ8Ô8ˆDØ”[Ô(Ô/ˆFð Œk×!Ò! *Ñ-Ô-ð 	0ð ˆr=   c                 óê   — | j         j                             d¦  «        rAt          | j         ¦  «        j        }t          j        |                      ¦   «         |¬¦  «        S |                      ¦   «         S )Núname:notrd   )	r/   rB   rŸ   r‚   r?   r   ÚNotr  Úparse_compare)r8   r?   s     r;   r  zParser.parse_not*  s`   € ØŒ;Ô×#Ò# JÑ/Ô/ð 	>Ý˜$œ+Ñ&Ô&Ô-ˆFÝ”9˜TŸ^š^Ñ-Ô-°fÐ=Ñ=Ô=Ð=Ø×!Ò!Ñ#Ô#Ð#r=   c                 ól  — | j         j        j        }|                      ¦   «         }g }	 | j         j        j        }|t
          v rOt          | j         ¦  «         |                     t          j	        ||                      ¦   «         ¦  «        ¦  «         nö| j          
                    d¦  «        r;|                     t          j	        d|                      ¦   «         ¦  «        ¦  «         n¡| j         j                             d¦  «        r�| j                              ¦   «                              d¦  «        rU| j                              d¦  «         |                     t          j	        d|                      ¦   «         ¦  «        ¦  «         nn| j         j        j        }�Œr|s|S t          j        |||¬¦  «        S )NTr•   Úinr!  rØ   Únotinrd   )r/   rB   r?   Úparse_math1r_   Ú_compare_operatorsr‚   rM   r   ÚOperandr   rŸ   rÓ   rÕ   ÚCompare)r8   r?   r�   ÚopsÚ
token_types        r;   r#  zParser.parse_compare0  sˆ  € Ø”Ô$Ô+ˆØ×ÒÑ!Ô!ˆØˆð	0ØœÔ,Ô1ˆJØÕ/Ð/Ð/Ý�T”[Ñ!Ô!Ð!Ø—
’
�5œ=¨°T×5EÒ5EÑ5GÔ5GÑHÔHÑIÔIÐIÐIØ”×$Ò$ YÑ/Ô/ð Ø—
’
�5œ=¨¨t×/?Ò/?Ñ/AÔ/AÑBÔBÑCÔCÐCÐCØ”Ô$×)Ò)¨*Ñ5Ô5ð ¸$¼+×:JÒ:JÑ:LÔ:L×:QÒ:QØñ;ô ;ð ð ”× Ò  Ñ#Ô#Ð#Ø—
’
�5œ=¨°$×2BÒ2BÑ2DÔ2DÑEÔEÑFÔFÐFÐFàØ”[Ô(Ô/ˆFñ	0ð ð 	ØˆKÝŒ}˜T 3¨vÐ6Ñ6Ô6Ð6r=   c                 ób  — | j         j        j        }|                      ¦   «         }| j         j        j        dv rvt
          | j         j        j                 }t          | j         ¦  «         |                      ¦   «         } ||||¬¦  «        }| j         j        j        }| j         j        j        dv °v|S )N)r   r   rd   )r/   rB   r?   Úparse_concatr_   r$   r‚   ©r8   r?   r  Úclsr  s        r;   r'  zParser.parse_math1G  s¥   € Ø”Ô$Ô+ˆØ× Ò Ñ"Ô"ˆØŒkÔ!Ô&¨.Ð8Ð8Ý˜dœkÔ1Ô6Ô7ˆCÝ�”ÑÔÐØ×%Ò%Ñ'Ô'ˆEØ�3�t˜U¨6Ð2Ñ2Ô2ˆDØ”[Ô(Ô/ˆFð ŒkÔ!Ô&¨.Ð8Ð8ð ˆr=   c                 óz  — | j         j        j        }|                      ¦   «         g}| j         j        j        dk    rPt          | j         ¦  «         |                     |                      ¦   «         ¦  «         | j         j        j        dk    °Pt          |¦  «        dk    r|d         S t          j	        ||¬¦  «        S )NÚtilder   r   rd   )
r/   rB   r?   Úparse_math2r_   r‚   rM   Úlenr   ÚConcat)r8   r?   rð   s      r;   r.  zParser.parse_concatR  s¨   € Ø”Ô$Ô+ˆØ× Ò Ñ"Ô"Ð#ˆØŒkÔ!Ô&¨'Ò1Ð1Ý�”ÑÔÐØ�KŠK˜×(Ò(Ñ*Ô*Ñ+Ô+Ð+ð ŒkÔ!Ô&¨'Ò1Ð1õ ˆt‰9Œ9˜Š>ˆ>Ø˜”7ˆNÝŒ|˜D¨Ð0Ñ0Ô0Ð0r=   c                 ób  — | j         j        j        }|                      ¦   «         }| j         j        j        dv rvt
          | j         j        j                 }t          | j         ¦  «         |                      ¦   «         } ||||¬¦  «        }| j         j        j        }| j         j        j        dv °v|S )N)r    r!   r"   r#   rd   )r/   rB   r?   Ú	parse_powr_   r$   r‚   r/  s        r;   r3  zParser.parse_math2\  s£   € Ø”Ô$Ô+ˆØ�~Š~ÑÔˆØŒkÔ!Ô&Ð*KÐKÐKÝ˜dœkÔ1Ô6Ô7ˆCÝ�”ÑÔÐØ—N’NÑ$Ô$ˆEØ�3�t˜U¨6Ð2Ñ2Ô2ˆDØ”[Ô(Ô/ˆFð ŒkÔ!Ô&Ð*KÐKÐKð ˆr=   c                 óD  — | j         j        j        }|                      ¦   «         }| j         j        j        dk    ret          | j         ¦  «         |                      ¦   «         }t          j        |||¬¦  «        }| j         j        j        }| j         j        j        dk    °e|S )NÚpowrd   )r/   rB   r?   Úparse_unaryr_   r‚   r   ÚPowr  s       r;   r7  zParser.parse_powg  s“   € Ø”Ô$Ô+ˆØ×ÒÑ!Ô!ˆØŒkÔ!Ô&¨%Ò/Ð/Ý�”ÑÔÐØ×$Ò$Ñ&Ô&ˆEÝ”9˜T 5°Ð8Ñ8Ô8ˆDØ”[Ô(Ô/ˆFð	 ŒkÔ!Ô&¨%Ò/Ð/ð
 ˆr=   Úwith_filterc                 óÚ  — | j         j        j        }| j         j        j        }|dk    r>t	          | j         ¦  «         t          j        |                      d¦  «        |¬¦  «        }nX|dk    r>t	          | j         ¦  «         t          j        |                      d¦  «        |¬¦  «        }n|  	                    ¦   «         }|  
                    |¦  «        }|r|                      |¦  «        }|S )Nr   Frd   r   )r/   rB   r_   r?   r‚   r   ÚNegr:  ÚPosr  Úparse_postfixÚparse_filter_expr)r8   r<  r,  r?   r©   s        r;   r:  zParser.parse_unaryq  sà   € Ø”[Ô(Ô-ˆ
Ø”Ô$Ô+ˆð ˜ÒÐÝ�”ÑÔÐÝ”9˜T×-Ò-¨eÑ4Ô4¸VÐDÑDÔDˆDˆDØ˜5Ò Ð Ý�”ÑÔÐÝ”9˜T×-Ò-¨eÑ4Ô4¸VÐDÑDÔDˆDˆDà×%Ò%Ñ'Ô'ˆDØ×!Ò! $Ñ'Ô'ˆØð 	0Ø×)Ò)¨$Ñ/Ô/ˆDØˆr=   c                 óˆ  — | j         j        }|j        dk    r÷t          | j         ¦  «         |j        dv r$t          j        |j        dv |j        ¬¦  «        }�ni|j        dv rt          j        d|j        ¬¦  «        }�nC|rk| j         j        j        dk    rVt          | j         ¦  «         | j                              d¦  «        }t          j	        |j        |j        |j        ¬¦  «        }�nÖt          j
        |j        d|j        ¬¦  «        }�n³|j        d	k    r¯t          | j         ¦  «         |j        g}|j        }| j         j        j        d	k    rM|                     | j         j        j        ¦  «         t          | j         ¦  «         | j         j        j        d	k    °Mt          j        d
                     |¦  «        |¬¦  «        }nù|j        dv r5t          | j         ¦  «         t          j        |j        |j        ¬¦  «        }n»|j        dk    rEt          | j         ¦  «         |                      d¬¦  «        }| j                              d¦  «         nk|j        dk    r|                      ¦   «         }nK|j        dk    r|                      ¦   «         }n+|                      dt#          |¦  «        ›�|j        ¦  «         |S )z€Parse a name or literal value. If ``with_namespace`` is enabled, also
        parse namespace attr refs, for use in assignments.r)   )ÚtrueÚfalseÚTrueÚFalse)rC  rE  rd   )ÚnoneÚNoneNÚdotÚloadÚstringÚ )ÚintegerÚfloatrï   T)Úexplicit_parenthesesr^   ÚlbracketÚlbracezunexpected )r/   rB   r_   r‚   ro   r   ÚConstr?   r€   ÚNSRefr  rM   rK   r‹   Ú
parse_listÚ
parse_dictrC   r   )r8   r‡   rv   r©   ÚattrÚbufr?   s          r;   r  zParser.parse_primaryƒ  sˆ  € ð ”Ô#ˆàŒ:˜ÒÐÝ�”ÑÔÐØŒ{Ð@Ð@Ð@Ý”{ 5¤;Ð2BÐ#BÈ5Ì<ÐXÑXÔX�‘Ø”Ð 0Ð0Ð0Ý”{ 4°´Ð=Ñ=Ô=�‘Øð L D¤KÔ$7Ô$<ÀÒ$EÐ$Eõ �T”[Ñ!Ô!Ð!Ø”{×)Ò)¨&Ñ1Ô1�Ý”{ 5¤;°´
À5Ä<ÐPÑPÔP�‘å”z %¤+¨v¸e¼lÐKÑKÔK�‘ØŒZ˜8Ò#Ð#Ý�”ÑÔÐØ”;�-ˆCØ”\ˆFØ”+Ô%Ô*¨hÒ6Ð6Ø—
’
˜4œ;Ô.Ô4Ñ5Ô5Ð5Ý�T”[Ñ!Ô!Ð!ð ”+Ô%Ô*¨hÒ6Ð6õ ”;˜rŸwšw s™|œ|°FÐ;Ñ;Ô;ˆDˆDØŒZÐ/Ð/Ð/Ý�”ÑÔÐÝ”;˜uœ{°5´<Ð@Ñ@Ô@ˆDˆDØŒZ˜8Ò#Ð#Ý�”ÑÔÐØ×#Ò#¸Ð#Ñ>Ô>ˆDØŒK×Ò˜xÑ(Ô(Ð(Ð(ØŒZ˜:Ò%Ð%Ø—?’?Ñ$Ô$ˆDˆDØŒZ˜8Ò#Ð#Ø—?’?Ñ$Ô$ˆDˆDà�IŠIÐ=¥N°5Ñ$9Ô$9Ð=Ð=¸u¼|ÑLÔLÐLØˆr=   r  rO  c                 ó"  ‡ ‡‡— ‰ j         j        j        }|rdt          j        fˆ ˆfd„}ndt          j        fˆ ˆfd„}g }d}		 |r‰ j                              d¦  «         ‰                      |¦  «        rnH|                      |¦   «         ¦  «         ‰ j         j        j        dk    rd}	nn‰ j         j        j        }Œz|	s;|r|d         S |s/‰  	                    dt          ‰ j         j        ¦  «        ›�¦  «         t          j        |d	|¬
¦  «        S )aç  Works like `parse_expression` but if multiple expressions are
        delimited by a comma a :class:`~jinja2.nodes.Tuple` node is created.
        This method could also return a regular expression instead of a tuple
        if no commas where found.

        The default parsing mode is a full tuple.  If `simplified` is `True`
        only names and literals are parsed; ``with_namespace`` allows namespace
        attr refs as well. The `no_condexpr` parameter is forwarded to
        :meth:`parse_expression`.

        Because tuples do not require delimiters and may end in a bogus comma
        an extra hint is needed that marks the end of a tuple.  For example
        for loops support tuples between `for` and `in`.  In that case the
        `extra_end_rules` is set to ``['name:in']``.

        `explicit_parentheses` is true if the parsing was triggered by an
        expression in parentheses.  This is used to figure out if an empty
        tuple is a valid expression or not.
        r,   c                  ó0   •— ‰                       ‰¬¦  «        S )Nr†   )r  )r8   r‡   s   €€r;   r4   z!Parser.parse_tuple.<locals>.parseË  s   ø€ Ø×)Ò)¸Ð)ÑHÔHÐHr=   c                  ó0   •— ‰                       ‰¬¦  «        S )Nr¤   )rœ   r  s   €€r;   r4   z!Parser.parse_tuple.<locals>.parseÐ  s   ø€ Ø×,Ò,¸=Ð,ÑIÔIÐIr=   FTr¬   r   zExpected an expression, got rJ  rd   )r/   rB   r?   r   ÚExprr€   ra   rM   r_   rC   r   ÚTuple)
r8   r  r—   rZ   rO  r‡   r?   r4   rð   Úis_tuples
   ` `  `    r;   r‹   zParser.parse_tuple­  s�  øøø€ ð6 ”Ô$Ô+ˆØð 	JðI�5œ:ð Ið Ið Ið Ið Ið Ið Ið Ið
J�5œ:ð Jð Jð Jð Jð Jð Jð Jð $&ˆØˆð
	0Øð ,Ø”×"Ò" 7Ñ+Ô+Ð+Ø× Ò  Ñ1Ô1ð ØØ�KŠK˜˜™œÑ Ô Ð ØŒ{Ô"Ô'¨7Ò2Ð2Ø��àØ”[Ô(Ô/ˆFð
	0ð ð 	Øð Ø˜A”w�ð (ð Ø—	’	ðDÝ*¨4¬;Ô+>Ñ?Ô?ðDð Dñô ð õ
 Œ{˜4 °Ð7Ñ7Ô7Ð7r=   c                 óª  — | j                              d¦  «        }g }| j         j        j        dk    rn|r| j                              d¦  «         | j         j        j        dk    rn<|                     |                      ¦   «         ¦  «         | j         j        j        dk    °n| j                              d¦  «         t          j        ||j        ¬¦  «        S )NrP  Úrbracketr¬   rd   )	r/   r€   rB   r_   rM   rœ   r   ÚListr?   )r8   rv   Úitemss      r;   rT  zParser.parse_listò  sÅ   € Ø”×"Ò" :Ñ.Ô.ˆØ$&ˆØŒkÔ!Ô&¨*Ò4Ð4Øð ,Ø”×"Ò" 7Ñ+Ô+Ð+ØŒ{Ô"Ô'¨:Ò5Ð5ØØ�LŠL˜×.Ò.Ñ0Ô0Ñ1Ô1Ð1ð ŒkÔ!Ô&¨*Ò4Ð4ð 	Œ×Ò˜:Ñ&Ô&Ð&ÝŒz˜%¨¬Ð5Ñ5Ô5Ð5r=   c                 ó>  — | j                              d¦  «        }g }| j         j        j        dk    r¸|r| j                              d¦  «         | j         j        j        dk    rn†|                      ¦   «         }| j                              d¦  «         |                      ¦   «         }|                     t          j        |||j        ¬¦  «        ¦  «         | j         j        j        dk    °¸| j                              d¦  «         t          j	        ||j        ¬¦  «        S )NrQ  Úrbracer¬   r}   rd   )
r/   r€   rB   r_   rœ   rM   r   ÚPairr?   ÚDict)r8   rv   ra  Úkeyro   s        r;   rU  zParser.parse_dictþ  s  € Ø”×"Ò" 8Ñ,Ô,ˆØ$&ˆØŒkÔ!Ô&¨(Ò2Ð2Øð ,Ø”×"Ò" 7Ñ+Ô+Ð+ØŒ{Ô"Ô'¨8Ò3Ð3ØØ×'Ò'Ñ)Ô)ˆCØŒK×Ò˜wÑ'Ô'Ð'Ø×)Ò)Ñ+Ô+ˆEØ�LŠL�œ C¨°s´zÐBÑBÔBÑCÔCÐCð ŒkÔ!Ô&¨(Ò2Ð2ð 	Œ×Ò˜8Ñ$Ô$Ð$ÝŒz˜%¨¬Ð5Ñ5Ô5Ð5r=   c                 óª   — 	 | j         j        j        }|dk    s|dk    r|                      |¦  «        }n|dk    r|                      |¦  «        }nnŒQ|S )NTrI  rP  rï   )r/   rB   r_   Úparse_subscriptÚ
parse_call©r8   r©   r,  s      r;   r@  zParser.parse_postfix  sm   € ð		ØœÔ,Ô1ˆJØ˜UÒ"Ð" j°JÒ&>Ð&>Ø×+Ò+¨DÑ1Ô1��ð ˜xÒ'Ð'Ø—’ tÑ,Ô,��àð		ð ˆr=   c                 ó   — 	 | j         j        j        }|dk    r|                      |¦  «        }nN|dk    r+| j         j        j        dk    r|                      |¦  «        }n|dk    r|                      |¦  «        }nnŒ||S )NTÚpiper)   Úisrï   )r/   rB   r_   r�   ro   Ú
parse_testri  rj  s      r;   rA  zParser.parse_filter_expr  s“   € ð	ØœÔ,Ô1ˆJØ˜VÒ#Ð#Ø×(Ò(¨Ñ.Ô.��Ø˜vÒ%Ð%¨$¬+Ô*=Ô*CÀtÒ*KÐ*KØ—’ tÑ,Ô,��ð ˜xÒ'Ð'Ø—’ tÑ,Ô,��àð	ð ˆr=   c                 ó¬  — t          | j        ¦  «        }|j        dk    r°| j        j        }t          | j        ¦  «         |j        dk    r"t	          j        ||j        d|j        ¬¦  «        S |j        dk    r|                      d|j        ¦  «         t	          j	        |j        |j        ¬¦  «        }t	          j
        ||d|j        ¬¦  «        S |j        dk    rÞg }| j        j        j        dk    rX|r| j                             d	¦  «         |                     |                      ¦   «         ¦  «         | j        j        j        dk    °X| j                             d¦  «         t          |¦  «        d
k    r	|d         }nt	          j        |d|j        ¬¦  «        }t	          j
        ||d|j        ¬¦  «        S |                      d|j        ¦  «         d S )NrI  r)   rJ  rd   rM  zexpected name or numberrP  r_  r¬   r   r   zexpected subscript expression)r‚   r/   r_   rB   r   ÚGetattrro   r?   rC   rR  ÚGetitemr€   rM   Úparse_subscribedr4  r\  )r8   r©   rv   Ú
attr_tokenrò   rð   s         r;   rh  zParser.parse_subscript)  sÄ  € õ �T”[Ñ!Ô!ˆð Œ:˜ÒÐØœÔ,ˆJÝ�”ÑÔÐØŒ &Ò(Ð(Ý”}Ø˜*Ô*¨F¸5¼<ðñ ô ð ð ” IÒ-Ð-Ø—	’	Ð3°ZÔ5FÑGÔGÐGÝ”+˜jÔ.°zÔ7HÐIÑIÔIˆCÝ”=  s¨F¸5¼<ÐHÑHÔHÐHØŒ:˜Ò#Ð#Ø')ˆDØ”+Ô%Ô*¨jÒ8Ð8Øð 0Ø”K×&Ò& wÑ/Ô/Ð/Ø—’˜D×1Ò1Ñ3Ô3Ñ4Ô4Ð4ð ”+Ô%Ô*¨jÒ8Ð8ð ŒK×Ò˜zÑ*Ô*Ð*Ý�4‰yŒy˜AŠ~ˆ~Ø˜1”g��å”k $¨°u´|ÐDÑDÔD�Ý”=  s¨F¸5¼<ÐHÑHÔHÐHØ�	Š	Ð1°5´<Ñ@Ô@Ð@Ð@Ð@r=   c                 ó8  — | j         j        j        }| j         j        j        dk    rt	          | j         ¦  «         d g}nB|                      ¦   «         }| j         j        j        dk    r|S t	          | j         ¦  «         |g}| j         j        j        dk    r|                     d ¦  «         nP| j         j        j        dvr(|                     |                      ¦   «         ¦  «         n|                     d ¦  «         | j         j        j        dk    ret	          | j         ¦  «         | j         j        j        dvr(|                     |                      ¦   «         ¦  «         n+|                     d ¦  «         n|                     d ¦  «         t          j        |d|iŽS )Nr}   )r_  r¬   r?   )	r/   rB   r?   r_   r‚   rœ   rM   r   ÚSlice)r8   r?   rð   r©   s       r;   rr  zParser.parse_subscribedH  s€  € Ø”Ô$Ô+ˆð Œ;ÔÔ# wÒ.Ð.Ý�”ÑÔÐØ�6ˆDˆDà×(Ò(Ñ*Ô*ˆDØŒ{Ô"Ô'¨7Ò2Ð2Ø�Ý�”ÑÔÐØ�6ˆDàŒ;ÔÔ# wÒ.Ð.Ø�KŠK˜ÑÔÐÐØŒ[Ô Ô%Ð-BÐBÐBØ�KŠK˜×-Ò-Ñ/Ô/Ñ0Ô0Ð0Ð0à�KŠK˜ÑÔÐàŒ;ÔÔ# wÒ.Ð.Ý�”ÑÔÐØŒ{Ô"Ô'Ð/DÐDÐDØ—’˜D×1Ò1Ñ3Ô3Ñ4Ô4Ð4Ð4à—’˜DÑ!Ô!Ð!Ð!à�KŠK˜ÑÔÐåŒ{¨4Ð0 &Ð0Ð0Ð0r=   c                 ó‚  ‡ ‡	— ‰ j                              d¦  «        Š	g }g }d }d }d}dt          dd fˆ ˆ	fd„}‰ j         j        j        dk    �rÔ|r1‰ j                              d¦  «         ‰ j         j        j        dk    r�n¡‰ j         j        j        dk    r; ||d u o|d u ¦  «         t          ‰ j         ¦  «         ‰                      ¦   «         }�n9‰ j         j        j        d	k    r6 ||d u ¦  «         t          ‰ j         ¦  «         ‰                      ¦   «         }nî‰ j         j        j        d
k    rž‰ j                              ¦   «         j        dk    r| ||d u ¦  «         ‰ j         j        j        }‰ j          	                    d¦  «         ‰                      ¦   «         }| 
                    t          j        |||j        ¬¦  «        ¦  «         n; ||d u o|d u o| ¦  «         | 
                    ‰                      ¦   «         ¦  «         d}‰ j         j        j        dk    �°Ô‰ j                              d¦  «         ||||fS )Nrï   Fr�   r,   c                 óF   •— | s‰                      d‰j        ¦  «         d S d S )Nz+invalid syntax for function call expression)rC   r?   )r�   r8   rv   s    €€r;   Úensurez&Parser.parse_call_args.<locals>.ensurew  s5   ø€ Øð WØ—	’	ÐGÈÌÑVÔVÐVÐVÐVðWð Wr=   r^   r¬   r    r9  r)   rˆ   rØ   rd   T)r/   r€   ré   rB   r_   r‚   rœ   rÓ   ro   rÕ   rM   r   rµ   r?   )
r8   rð   ÚkwargsÚdyn_argsÚ
dyn_kwargsÚrequire_commarx  rf  ro   rv   s
   `        @r;   Úparse_call_argszParser.parse_call_argsh  s†  øø€ ð ”×"Ò" 8Ñ,Ô,ˆØˆØˆØˆØˆ
Øˆð	W�ð 	W $ð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð ŒkÔ!Ô&¨(Ò2Ñ2Øð Ø”×"Ò" 7Ñ+Ô+Ð+ð ”;Ô&Ô+¨xÒ7Ð7ÙàŒ{Ô"Ô'¨5Ò0Ð0Ø��x 4Ð'Ð>¨J¸$Ð,>Ñ?Ô?Ð?Ý�T”[Ñ!Ô!Ð!Ø×0Ò0Ñ2Ô2�‘Ø”Ô$Ô)¨UÒ2Ð2Ø��z TÐ)Ñ*Ô*Ð*Ý�T”[Ñ!Ô!Ð!Ø!×2Ò2Ñ4Ô4�
�
ð ”KÔ'Ô,°Ò6Ð6Øœ×(Ò(Ñ*Ô*Ô/°8Ò;Ð;ð �F˜:¨Ð-Ñ.Ô.Ð.Øœ+Ô-Ô3�CØ”K×$Ò$ QÑ'Ô'Ð'Ø ×1Ò1Ñ3Ô3�EØ—M’M¥%¤-°°UÀ5Ä<Ð"PÑ"PÔ"PÑQÔQÐQÐQð �F˜8 tÐ+ÐQ°
¸dÐ0BÐQÈ6ÀzÑRÔRÐRØ—K’K × 5Ò 5Ñ 7Ô 7Ñ8Ô8Ð8à ˆMðA ŒkÔ!Ô&¨(Ò2Ñ2ðD 	Œ×Ò˜8Ñ$Ô$Ð$Ø�V˜X zÐ1Ð1r=   c                 óŠ   — | j         j        }|                      ¦   «         \  }}}}t          j        ||||||j        ¬¦  «        S rÌ   )r/   rB   r}  r   rö   r?   )r8   r©   rv   rð   ry  rz  r{  s          r;   ri  zParser.parse_call   sG   € ð ”Ô#ˆØ-1×-AÒ-AÑ-CÔ-CÑ*ˆˆf�h 
ÝŒz˜$  f¨h¸
È5Ì<ÐXÑXÔXÐXr=   rù   c           	      óN  — | j         j        j        dk    s|�r|st          | j         ¦  «         | j                              d¦  «        }|j        }| j         j        j        dk    rNt          | j         ¦  «         |d| j                              d¦  «        j        z   z  }| j         j        j        dk    °N| j         j        j        dk    r|                      ¦   «         \  }}}}ng }g }d x}}t          j        |||||||j	        ¬¦  «        }d}| j         j        j        dk    �°	|�°|S )Nrl  r)   rI  rG   rï   rd   F)
r/   rB   r_   r‚   r€   ro   r}  r   ÚFilterr?   )	r8   r©   rù   rv   r)   rð   ry  rz  r{  s	            r;   r�   zParser.parse_filter§  s>  € ð ŒkÔ!Ô&¨&Ò0Ð0°LÑ0Øð "Ý�T”[Ñ!Ô!Ð!Ø”K×&Ò& vÑ.Ô.ˆEØ”;ˆDØ”+Ô%Ô*¨eÒ3Ð3Ý�T”[Ñ!Ô!Ð!Ø˜˜dœk×0Ò0°Ñ8Ô8Ô>Ñ>Ñ>�ð ”+Ô%Ô*¨eÒ3Ð3ð Œ{Ô"Ô'¨8Ò3Ð3Ø59×5IÒ5IÑ5KÔ5KÑ2��f˜h¨
¨
à�Ø�Ø(,Ð,�˜:Ý”<Ø�d˜D &¨(°JÀuÄ|ðñ ô ˆDð !ˆLð# ŒkÔ!Ô&¨&Ò0Ñ0°LÑ0ð$ ˆr=   c           	      ó´  — t          | j        ¦  «        }| j        j                             d¦  «        rt          | j        ¦  «         d}nd}| j                             d¦  «        j        }| j        j        j        dk    rNt          | j        ¦  «         |d| j                             d¦  «        j        z   z  }| j        j        j        dk    °Nd x}}g }| j        j        j        dk    r|                      ¦   «         \  }}}}n—| j        j        j        dv r‚| j        j                             d	d
d¦  «        sa| j        j                             d¦  «        r|  	                    d¦  «         |  
                    ¦   «         }	|                      |	¦  «        }	|	g}ng }t          j        |||||||j        ¬¦  «        }|rt          j        ||j        ¬¦  «        }|S )Nr!  TFr)   rI  rG   rï   >   r)   rN  rQ  rï   rK  rM  rP  rš   r  r  zname:isz'You cannot chain multiple tests with isrd   )r‚   r/   rB   rŸ   r€   ro   r_   r}  r`   rC   r  r@  r   ÚTestr?   r"  )
r8   r©   rv   Únegatedr)   rz  r{  ry  rð   Úarg_nodes
             r;   rn  zParser.parse_test¾  sä  € Ý�T”[Ñ!Ô!ˆØŒ;Ô×#Ò# JÑ/Ô/ð 	Ý�”ÑÔÐØˆGˆGàˆGØŒ{×!Ò! &Ñ)Ô)Ô/ˆØŒkÔ!Ô&¨%Ò/Ð/Ý�”ÑÔÐØ�C˜$œ+×,Ò,¨VÑ4Ô4Ô:Ñ:Ñ:ˆDð ŒkÔ!Ô&¨%Ò/Ð/ð !%Ð$ˆ�:Ø(*ˆØŒ;ÔÔ# xÒ/Ð/Ø15×1EÒ1EÑ1GÔ1GÑ.ˆD�&˜( J JØŒ[Ô Ô%ð *
ð 
ð 
ð ”+Ô%×.Ò.¨{¸IÀzÑRÔRð
ð Œ{Ô"×'Ò'¨	Ñ2Ô2ð EØ—	’	ÐCÑDÔDÐDØ×)Ò)Ñ+Ô+ˆHØ×)Ò)¨(Ñ3Ô3ˆHØ�:ˆDˆDàˆDÝŒzØ�$˜˜f h°
À5Ä<ð
ñ 
ô 
ˆð ð 	8Ý”9˜T¨%¬,Ð7Ñ7Ô7ˆDØˆr=   c                 ó8  ‡‡— g Šg Š‰j         }|�| j                              |¦  «         dˆˆfd„}	 | j        �r™| j        j        }|j        dk    rF|j        r) |t          j        |j        |j        ¬¦  «        ¦  «         t          | j        ¦  «         �n4|j        dk    rNt          | j        ¦  «          ||  
                    d¬¦  «        ¦  «         | j                             d¦  «         nÛ|j        d	k    rÁ |¦   «          t          | j        ¦  «         |�2 | j        j        j        |Ž r‰|�| j                             ¦   «          S S |                      ¦   «         }t          |t           ¦  «        r‰                     |¦  «         n‰                      |¦  «         | j                             d
¦  «         nt%          d¦  «        ‚| j        �°™ |¦   «          |�| j                             ¦   «          n!# |�| j                             ¦   «          w w xY w‰S )Nr,   c                  ó–   •— ‰rE‰d         j         } ‰                     t          j        ‰d d …         | ¬¦  «        ¦  «         ‰d d …= d S d S )Nr   rd   )r?   rM   r   rÇ   )r?   r’   Údata_buffers    €€r;   Ú
flush_dataz#Parser.subparse.<locals>.flush_dataî  sY   ø€ Øð #Ø$ QœÔ.�Ø—’�EœL¨°Q°Q°Q¬ÀÐGÑGÔGÑHÔHÐHØ   �N�N�Nð#ð #r=   r¿   rd   Úvariable_beginTr¤   r\   Úblock_beginr]   zinternal parsing error)r,   N)rM   r7   r/   rB   r_   ro   r   r¾   r?   r‚   r‹   r€   r`   rr   rz   r½   rW   ÚextendÚAssertionError)r8   rU   Úadd_datarˆ  rv   ri   r’   r‡  s         @@r;   r�   zParser.subparseä  sZ  øø€ ð $&ˆØ*,ˆØÔ%ˆàÐ!ØÔ!×(Ò(¨Ñ4Ô4Ð4ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð	,Ø”+ñ CØœÔ+�Ø”: Ò'Ð'Ø”{ð WØ ˜¥Ô!3°E´KÈÌÐ!UÑ!UÔ!UÑVÔVÐVÝ˜œÑ%Ô%Ð%Ñ%Ø”ZÐ#3Ò3Ð3Ý˜œÑ%Ô%Ð%Ø�H˜T×-Ò-¸DÐ-ÑAÔAÑBÔBÐBØ”K×&Ò& ~Ñ6Ô6Ð6Ð6Ø”Z =Ò0Ð0Ø�J‘L”L�LÝ˜œÑ%Ô%Ð%Ø!Ð-Ð2N°$´+Ô2EÔ2NØ#ð3Ð-ð  $ð Ð%ØÔ%×)Ò)Ñ+Ô+Ð+Ð+ð &ð ×-Ò-Ñ/Ô/�BÝ! "¥dÑ+Ô+ð (ØŸš B™œ˜˜àŸš B™œ˜Ø”K×&Ò& {Ñ3Ô3Ð3Ð3å(Ð)AÑBÔBÐBð1 ”+ñ Cð4 ˆJ‰LŒLˆLàÐ%ØÔ%×)Ò)Ñ+Ô+Ð+øøð Ð%ØÔ%×)Ò)Ñ+Ô+Ð+Ð+ð &øøøàˆs   ²C>G9 ÅBG9 Ç9Hc                 óŠ   — t          j        |                      ¦   «         d¬¦  «        }|                     | j        ¦  «         |S )z0Parse the whole template into a `Template` node.r   rd   )r   ÚTemplater�   Úset_environmentr'   )r8   rƒ   s     r;   r4   zParser.parse  s:   € å” §¢¡¤¸Ð:Ñ:Ô:ˆØ×Ò˜tÔ/Ñ0Ô0Ð0Øˆr=   )NNNr¼   )NN)F)..)TFNF)T)FTNFF)`r
  Ú
__module__Ú__qualname__Ú__doc__ÚstrÚtÚOptionalr<   r   ÚintÚTyperC   r`  r\  rR   rT   rY   ré   ra   r   rg   rj   ÚUnionrh   rz   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ó   rõ   rs   rú   rt   rü   rý   rÇ   rÿ   ÚtypingÚoverloadr  rŠ   rS  r[  rœ   r  r  r  r  r#  r'  r.  r3  r7  r:  r  r‹   rT  re  rU  r@  rA  rp  rq  rh  rr  rµ   r}  rö   ri  r�   rn  r�   r�  r4   r  r=   r;   r&   r&   0   s[
  € € € € € ðð ð !%Ø$(Ø!%ð>ð >à"ð>ð ð>ð Œj˜Œoð	>ð
 ”*˜S”/ð>ð Œz˜#Œð>ð 
ð>ð >ð >ð >ð4 #'Ø+>ð	9ð 9àð9ð ”
˜3”ð9ð ŒVÐ'Ô(ð	9ð
 
ð9ð 9ð 9ð 9ð&-àŒj˜Œoð&-ð œ ¤¨¨S¨Ô 1Ô2ð&-ð ”
˜3”ð	&-ð
 
ð&-ð &-ð &-ð &-ðR 48ð?ð ?Øð?Ø!"¤¨C¤ð?à	ð?ð ?ð ?ð ?ð 59Ø"&ð	/ð 	/à”J˜qœw s¨C xÔ0Ô1ð	/ð ”
˜3”ð	/ð 
ð		/ð 	/ð 	/ð 	/ð @Dðð Ø œz¨!¬'°#°s°(Ô*;Ô<ðà	ðð ð ð ðð  a¤j°¤oð ÀÔASð ð ð ð ð& ¤¨¬°Q´V¸E¼JÔ5GÐ)GÔ!Hð &ð &ð &ð &ð< BGðð Øœ' # s (Ô+ðØ:>ðà	
Œ�”
Ô	ðð ð ð ð:	K˜1œ7 5¤<°Ô1BÐ#BÔCð 	Kð 	Kð 	Kð 	KðT˜5œ9ð Tð Tð Tð Tð&˜%œ(ð ð ð ð ð$˜EœJð ð ð ð ð"# %¤+ð #ð #ð #ð #ð˜Uœ[ð ð ð ð ð@˜uœ}ð ð ð ð ð

Ø"ð
Ø-1ð
à	ð
ð 
ð 
ð 
ð
5˜uœ}ð 
5ð 
5ð 
5ð 
5ð6˜eœlð 6ð 6ð 6ð 6ð(˜EÔ,ð (ð (ð (ð (ðT% Jð %°4ð %ð %ð %ð %ð  %¤/ð ð ð ð ð EÔ$5ð ð ð ð ð˜Uœ[ð ð ð ð ð˜Uœ\ð ð ð ð ð „_àFIðð ØðØ1Cðà	Œðð ð ñ „_ðð „_ð  ØØ9=Ø$ð<ð <àð<ð ð<ð œ A¤G¨C°¨HÔ$5Ô6ð	<ð
 ð<ð 
Œ�”˜eœj¨%¬+Ð5Ô	6ð<ð <ð <ñ „_ð<ð  ØØ9=Ø$ð%ð %àð%ð ð%ð œ A¤G¨C°¨HÔ$5Ô6ð	%ð
 ð%ð 
Œ�”˜eœj¨%¬+Ð5Ô	6ð%ð %ð %ð %ðNð ¨dð ¸e¼jð ð ð ð ð ¤
ð ð ð ð ð˜%œ*ð ð ð ð ð˜5œ:ð ð ð ð ð$˜5œ:ð $ð $ð $ð $ð7˜uœzð 7ð 7ð 7ð 7ð.	˜UœZð 	ð 	ð 	ð 	ð1˜eœjð 1ð 1ð 1ð 1ð	˜UœZð 	ð 	ð 	ð 	ð˜5œ:ð ð ð ð ðð  tð °u´zð ð ð ð ð$(ð (¨Dð (¸U¼Zð (ð (ð (ð (ðX !Ø"Ø9=Ø%*Ø$ðC8ð C8àðC8ð ðC8ð œ A¤G¨C°¨HÔ$5Ô6ð	C8ð
 #ðC8ð ðC8ð 
Œ�”˜eœjÐ(Ô	)ðC8ð C8ð C8ð C8ðJ
6˜EœJð 
6ð 
6ð 
6ð 
6ð6˜EœJð 6ð 6ð 6ð 6ð %¤*ð °´ð ð ð ð ð e¤jð °U´Zð ð ð ð ðAØ”JðAà	
Œ�” ¤Ð-Ô	.ðAð Að Að Að>1 %¤*ð 1ð 1ð 1ð 1ð@62à	
ŒØ	ŒˆuŒzÔØ	ŒˆuŒ}ÔØ	Œ
�5”:ÔØ	Œ
�5”:Ôð	 ô
ð62ð 62ð 62ð 62ðpY˜uœzð Y¨e¬jð Yð Yð Yð Yð BGðð Ø”J˜uœzÔ*ðØ:>ðà	
Œ�E”JÔ	ðð ð ð ð.$˜uœzð $¨e¬jð $ð $ð $ð $ðN ;?ð/ð /Øœ* Q¤W¨S°#¨XÔ%6Ô7ð/à	
Œ�”
Ô	ð/ð /ð /ð /ðb�u”~ð ð ð ð ð ð r=   r&   )'r“  rš  r•  rL  r   Ú
exceptionsr   r   Úlexerr   r   ÚTYPE_CHECKINGÚtyping_extensionsÚter'   r	   ÚTypeVarrà   rÙ   r
   rü   rõ   r   Ú	frozensetrp   r(  ÚAddÚSubÚMulÚDivÚFloorDivÚModr$   re  r”  r˜  r[  Ú__annotations__r&   r  r=   r;   ú<module>rª     s   ðØ >Ð >Ð >à €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø +Ð +Ð +Ð +Ð +Ð +Ø !Ð !Ð !Ð !Ð !Ð !Ø &Ð &Ð &Ð &Ð &Ð &à„?ð )Ø"Ð"Ð"Ð"à(Ð(Ð(Ð(Ð(Ð(à�”Ð+¨U¬\¸5¼=ÑIÔI€ØˆQŒY�| U¤[°%´/ÑBÔB€
à�iðð ð ñô Ð ð  �YÐGÐGÐGÑHÔHÐ ð Œ9ØŒ9ØŒ9ØŒ9Ø”ØŒ9ð0ð 0€ˆQŒV�C˜œ ¤
Ô+Ð+Ô,ð ð ñ ðið ið ið ið iñ iô ið ið ið ir=   