Ë
    éÿæi“! ã                   ó   — d 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 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 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 d
dlmZ d
dlmZ d
dlm Z  d
dl!m"Z" ejF                  r
ddl$Z%d
dl&m'Z'  ejP                  dejR                  dejT                  f   ¬«      Z+dddddd d!d"d#œZ,d$e+d%e+fd&„Z-d'e.d%ejR                  d(ej^                  d)gdf   fd*„Z0d'e.d%ejR                  d(ejb                  d)gdf   fd+„Z2	 	 	 dFd,ejf                  d-d.d/ejh                  e.   d0ejh                  e.   d1ejh                  ejj                     d2e6d3e6d%ejh                  e.   fd4„Z7d5ejT                  d%e6fd6„Z8d7ejr                  ejt                     d8ejr                  e.   d%ejv                  e.   fd9„Z< G d:„ d;«      Z= G d<„ d)«      Z> G d=„ d>e?«      Z@ G d?„ d@e"«      ZA G dA„ dBe"«      ZB G dC„ dDeC«      ZD G dE„ d(e"«      ZEy)Gz0Compiles nodes from the parser into Python code.é    N)Úcontextmanager)Úupdate_wrapper)ÚStringIO)Úchain)Ú	iskeyword)Úescape)ÚMarkupé   )Únodes)ÚTemplateAssertionError)ÚSymbols)ÚVAR_LOAD_ALIAS)ÚVAR_LOAD_PARAMETER)ÚVAR_LOAD_RESOLVE)ÚVAR_LOAD_UNDEFINED)ÚEvalContext)Ú	Optimizer)Ú_PassArg)Úconcat)ÚNodeVisitor)ÚEnvironmentÚF.)Úboundz==z!=Ú>z>=Ú<z<=Úinznot in)ÚeqÚneÚgtÚgteqÚltÚlteqr   ÚnotinÚfÚreturnc           
      ó�   ‡ — dddt         j                  dddt        j                  dt        j                  f
ˆ fd„}t	        |‰ «      S )	NÚselfÚCodeGeneratorÚnodeÚframeÚFrameÚkwargsr%   c                 óØ   •— | j                   �S|j                  j                  s=| j                   j                  ||j                  «      }||k7  r| j                  ||«      S  ‰| ||fi |¤ŽS ©N)Ú	optimizerÚeval_ctxÚvolatileÚvisit)r'   r)   r*   r,   Únew_noder$   s        €úd/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/jinja2/compiler.pyÚnew_funczoptimizeconst.<locals>.new_func.   sb   ø€ ð �>‰>Ð%¨e¯n©n×.EÒ.EØ—~‘~×+Ñ+¨D°%·.±.ÓAˆHà˜4ÒØ—z‘z (¨EÓ2Ð2á��t˜UÑ- fÑ-Ð-ó    )r   ÚExprÚtÚAnyr   )r$   r5   s   ` r4   Úoptimizeconstr:   -   sK   ø€ ð
.Øð
.Ü%*§Z¡Zð
.Ø8?ð
.ÜKLÏ5É5ð
.ä	
�‰õ
.ô ˜( AÓ&Ð&r6   Úopr(   r+   c           	      óZ   ‡ — t         dddt        j                  dt        dd fˆ fd„«       }|S )Nr'   r(   r)   r*   r%   c                 óþ  •— | j                   j                  rw‰| j                   j                  v r_| j                  d‰›d�«       | j	                  |j
                  |«       | j                  d«       | j	                  |j                  |«       n^| j                  d«       | j	                  |j
                  |«       | j                  d‰› d�«       | j	                  |j                  |«       | j                  d«       y )Nz environment.call_binop(context, ú, Ú(Ú Ú))ÚenvironmentÚ	sandboxedÚintercepted_binopsÚwriter2   ÚleftÚright©r'   r)   r*   r;   s      €r4   Úvisitorz_make_binop.<locals>.visitor>   s»   ø€ ð ×Ñ×&Ò&¨2°×1AÑ1A×1TÑ1TÑ+Tà�J‰JÐ9¸"¸¸rÐBÔCØ�J‰J�t—y‘y %Ô(Ø�J‰J�tÔØ�J‰J�t—z‘z 5Õ)à�J‰J�sŒOØ�J‰J�t—y‘y %Ô(Ø�J‰J˜˜2˜$˜a�yÔ!Ø�J‰J�t—z‘z 5Ô)à�
‰
�3�r6   )r:   r   ÚBinExprr+   ©r;   rI   s   ` r4   Ú_make_binoprL   =   s<   ø€ Üð�oð ¬U¯]©]ð Ä5ð ÈTô ó ðð  €Nr6   c           	      óZ   ‡ — t         dddt        j                  dt        dd fˆ fd„«       }|S )Nr'   r(   r)   r*   r%   c                 óH  •— | j                   j                  rJ‰| j                   j                  v r2| j                  d‰›d�«       | j	                  |j
                  |«       n0| j                  d‰z   «       | j	                  |j
                  |«       | j                  d«       y )Nzenvironment.call_unop(context, r>   r?   rA   )rB   rC   Úintercepted_unopsrE   r2   r)   rH   s      €r4   rI   z_make_unop.<locals>.visitorU   s|   ø€ ð ×Ñ×&Ò&¨2°×1AÑ1A×1SÑ1SÑ+Sà�J‰JÐ8¸¸¸bÐAÔBØ�J‰J�t—y‘y %Õ(à�J‰J�s˜R‘xÔ Ø�J‰J�t—y‘y %Ô(à�
‰
�3�r6   )r:   r   Ú	UnaryExprr+   rK   s   ` r4   Ú
_make_unoprQ   R   s>   ø€ ô ð
�oð 
¬U¯_©_ð 
ÄUð 
Ètô 
ó ð
ð €Nr6   r)   rB   r   ÚnameÚfilenameÚstreamÚ
defer_initÚ	optimizedc                 óÔ   — t        | t        j                  «      st        d«      ‚|j	                  ||||||«      }|j                  | «       |€|j                  j                  «       S y)z+Generate the python source for a node tree.z Can't compile non template nodesN)Ú
isinstancer   ÚTemplateÚ	TypeErrorÚcode_generator_classr2   rT   Úgetvalue)r)   rB   rR   rS   rT   rU   rV   Ú	generators           r4   Úgenerater^   e   sf   € ô �dœEŸN™NÔ+ÜÐ:Ó;Ð;à×0Ñ0Ø�T˜8 V¨Z¸ó€Ið ‡O�O�DÔà€~Ø×Ñ×(Ñ(Ó*Ð*àr6   Úvaluec                 óT  — | �| t         u s| t        u ryt        | «      t        t        t
        t        t        t        t        hv ryt        | «      t        t        t        t        hv rt        d„ | D «       «      S t        | «      t        u r t        d„ | j!                  «       D «       «      S y)z)Does the node have a safe representation?Tc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr.   ©Úhas_safe_repr)Ú.0Úvs     r4   Ú	<genexpr>z has_safe_repr.<locals>.<genexpr>†   s   è ø€ Ð3©U¨”= ×#©Uùs   ‚c              3   óR   K  — | ]  \  }}t        |«      xr t        |«      –— Œ! y ­wr.   rb   ©rd   Úkre   s      r4   rf   z has_safe_repr.<locals>.<genexpr>‰   s'   è ø€ ÐSÁ]¹T¸QÀ”= Ó#Ò8¬°aÓ(8Ó8Á]ùs   ‚%'F)ÚNotImplementedÚEllipsisÚtypeÚboolÚintÚfloatÚcomplexÚrangeÚstrr	   ÚtupleÚlistÚsetÚ	frozensetÚallÚdictÚitems©r_   s    r4   rc   rc   }   s‚   € à€}˜¤Ñ/°5¼HÑ3DØäˆEƒ{”tœS¤%¬´%¼¼fÐEÑEØäˆEƒ{”uœd¤C¬Ð3Ñ3ÜÑ3©UÓ3Ó3Ð3äˆEƒ{”dÑÜÑSÀUÇ[Á[Ä]ÓSÓSÐSàr6   r   Únamesc                 ó˜   — t        |«      }	 | D ]  }|j                  |«       Œ 	 |j                  S # t        $ r Y |j                  S w xY w)z”Check if the names passed are accessed undeclared.  The return value
    is a set of all the undeclared names from the sequence of names found.
    )ÚUndeclaredNameVisitorr2   ÚVisitorExitÚ
undeclared)r   r{   rI   r)   s       r4   Úfind_undeclaredr€   Ž   sW   € ô $ EÓ*€GðÛˆDØ�M‰M˜$Õñ ð ×ÑÐøô ò ØØ×ÑÐðús   �2 ²	A	ÁA	c                   ób   — e Zd Zdej                  ej                  ej                  f   ddfd„Zy)ÚMacroRefr)   r%   Nc                 ó<   — || _         d| _        d| _        d| _        y ©NF)r)   Úaccesses_callerÚaccesses_kwargsÚaccesses_varargs©r'   r)   s     r4   Ú__init__zMacroRef.__init__ž   s!   € ØˆŒ	Ø$ˆÔØ$ˆÔØ %ˆÕr6   )	Ú__name__Ú
__module__Ú__qualname__r8   ÚUnionr   ÚMacroÚ	CallBlockr‰   © r6   r4   r‚   r‚   �   s+   „ ð&˜QŸW™W U§[¡[°%·/±/Ð%AÑBð &Àtô &r6   r‚   c            	       óˆ   — e Zd ZdZ	 	 ddedej                  d    dej                  e   ddfd„Zdd„Z	dd	e
dd fd
„Zdd„Ze	Zy)r+   z&Holds compile time information for us.Nr0   ÚparentÚlevelr%   c                 óV  — || _         || _        |€'t        |¬«      | _        d| _        d | _        d | _        nOt        |j                  |¬«      | _        |j                  | _        |j
                  | _        |j                  | _        d| _        d| _        d| _	        d| _
        d| _        y )N©r“   F)r0   r’   r   ÚsymbolsÚrequire_output_checkÚbufferÚblockÚtoplevelÚ	rootlevelÚ
loop_frameÚblock_frameÚ
soft_frame)r'   r0   r’   r“   s       r4   r‰   zFrame.__init__¨   s¥   € ð !ˆŒð ˆŒàˆ>Ü"¨Ô/ˆDŒLð ).ˆDÔ%ð ,0ˆDŒKð +/ˆD�Jô # 6§>¡>¸Ô?ˆDŒLØ(.×(CÑ(CˆDÔ%Ø Ÿ-™-ˆDŒKØŸ™ˆDŒJð ˆŒð
 ˆŒð  ˆŒØ ˆÔð
  ˆ�r6   c                 óÌ   — t         j                  | j                  «      }|j                  j	                  | j                  «       | j
                  j                  «       |_        |S )z!Create a copy of the current one.)ÚobjectÚ__new__Ú	__class__Ú__dict__Úupdater–   Úcopy©r'   Úrvs     r4   r¥   z
Frame.copyÛ   sC   € ä�^‰^˜DŸN™NÓ+ˆØ
�‰×Ñ˜4Ÿ=™=Ô)Ø—\‘\×&Ñ&Ó(ˆŒ
Øˆ	r6   Úisolatedc                 óŽ   — |r.t        | j                  | j                  j                  dz   ¬«      S t        | j                  | «      S )zReturn an inner frame.r
   r•   )r+   r0   r–   r“   )r'   r¨   s     r4   ÚinnerzFrame.innerâ   s6   € áÜ˜Ÿ™¨d¯l©l×.@Ñ.@À1Ñ.DÔEÐEÜ�T—]‘] DÓ)Ð)r6   c                 óB   — | j                  «       }d|_        d|_        |S )a&  Return a soft frame.  A soft frame may not be modified as
        standalone thing as it shares the resources with the frame it
        was created of, but it's not a rootlevel frame any longer.

        This is only used to implement if-statements and conditional
        expressions.
        FT)r¥   r›   rž   r¦   s     r4   Úsoftz
Frame.softè   s"   € ð �Y‰Y‹[ˆØˆŒØˆŒØˆ	r6   )NN)r%   zte.Self©F)rŠ   r‹   rŒ   Ú__doc__r   r8   ÚOptionalrn   r‰   r¥   rm   rª   r¬   Ú__copy__r�   r6   r4   r+   r+   ¥   sn   „ Ù0ð
 '+Ø!%ñ	1 àð1 ð —
‘
˜7Ñ#ð1 ð �z‰z˜#‰ð	1 ð
 
ó1 ófñ*˜dð *¨wó *óð �Hr6   c                   ó   — e Zd ZdZy)r~   z?Exception used by the `UndeclaredNameVisitor` to signal a stop.N©rŠ   r‹   rŒ   r®   r�   r6   r4   r~   r~   ø   s   „ ÚIr6   r~   c                   ó„   — e Zd ZdZd	d„Zdej                  ddfd„Zdej                  ddfd„Z	dej                  ddfd„Zy)
ÚDependencyFinderVisitorz.A visitor that collects filter and test calls.r%   Nc                 ó@   — t        «       | _        t        «       | _        y r.   )ru   ÚfiltersÚtests©r'   s    r4   r‰   z DependencyFinderVisitor.__init__ÿ   s   € Ü#&£5ˆŒÜ!$£ˆ�
r6   r)   c                 óp   — | j                  |«       | j                  j                  |j                  «       y r.   )Úgeneric_visitr¶   ÚaddrR   rˆ   s     r4   Úvisit_Filterz$DependencyFinderVisitor.visit_Filter  s&   € Ø×Ñ˜4Ô Ø�‰×Ñ˜Ÿ™Õ#r6   c                 óp   — | j                  |«       | j                  j                  |j                  «       y r.   )rº   r·   r»   rR   rˆ   s     r4   Ú
visit_Testz"DependencyFinderVisitor.visit_Test  s$   € Ø×Ñ˜4Ô Ø�
‰
�‰�t—y‘yÕ!r6   c                  ó   — y)zStop visiting at blocks.Nr�   rˆ   s     r4   Úvisit_Blockz#DependencyFinderVisitor.visit_Block  ó   � r6   ©r%   N)rŠ   r‹   rŒ   r®   r‰   r   ÚFilterr¼   ÚTestr¾   ÚBlockrÀ   r�   r6   r4   r´   r´   ü   sO   „ Ù8ó'ð$ §¡ð $°$ó $ð"˜uŸz™zð "¨dó "ð' §¡ð '°ô 'r6   r´   c                   ó‚   — e Zd ZdZdej
                  e   ddfd„Zdej                  ddfd„Z
dej                  ddfd„Zy)	r}   z¡A visitor that checks if a name is accessed without being
    declared.  This is different from the frame visitor as it will
    not stop at closure frames.
    r{   r%   Nc                 óB   — t        |«      | _        t        «       | _        y r.   )ru   r{   r   )r'   r{   s     r4   r‰   zUndeclaredNameVisitor.__init__  s   € Ü˜“ZˆŒ
Ü&)£eˆ�r6   r)   c                 ó.  — |j                   dk(  ra|j                  | j                  v rI| j                  j	                  |j                  «       | j                  | j                  k(  r
t        «       ‚y | j                  j                  |j                  «       y )NÚload)ÚctxrR   r{   r   r»   r~   Údiscardrˆ   s     r4   Ú
visit_Namez UndeclaredNameVisitor.visit_Name  sh   € Ø�8‰8�vÒ $§)¡)¨t¯z©zÑ"9Ø�O‰O×Ñ §	¡	Ô*Ø�‰ $§*¡*Ò,Ü!“mÐ#ð -ð �J‰J×Ñ˜tŸy™yÕ)r6   c                  ó   — y)zStop visiting a blocks.Nr�   rˆ   s     r4   rÀ   z!UndeclaredNameVisitor.visit_Block!  rÁ   r6   )rŠ   r‹   rŒ   r®   r8   ÚIterablerr   r‰   r   ÚNamerÌ   rÅ   rÀ   r�   r6   r4   r}   r}     sP   „ ñð
,˜aŸj™j¨™oð ,°$ó ,ð*˜uŸz™zð *¨dó *ð& §¡ð &°ô &r6   r}   c                   ó   — e Zd ZdZy)ÚCompilerExitz¼Raised if the compiler encountered a situation where it just
    doesn't make sense to further process the code.  Any block that
    raises such an exception is not further processed.
    Nr²   r�   r6   r4   rÑ   rÑ   %  s   „ òr6   rÑ   c                   óZ  — e Zd ZU 	 	 	 dŠdddej                  e   dej                  e   dej                  ej                     deded	dfd
„Ze	d	efd„«       Z
deded	dfd„Zd	efd„Zded	dfd„Z	 d‹deded	dfd„ZdŒd„Zd�ded	dfd„ZdŽdedej                  ej(                     d	dfd„Zded	dfd„Z	 dŽdededej                  ej(                     d	dfd„Zdej0                  ej(                     ded	dfd„Zded	dfd „Z	 d�dedej                  ej(                     d!ed	dfd"„Zd�dej                  ej(                     d!ed	dfd#„Z	 dŽdej:                  ej<                  ej>                  ej@                  f   ded$ej                  ejB                  eejD                  f      d	dfd%„Z#dej0                  ej(                     d	dfd&„Z$ded	dfd'„Z%d‹ded(ed	dfd)„Z&d�d*ed+ed	efd,„Z'ded	efd-„Z(dej:                  ejR                  ejT                  f   ded	ejV                  ee,f   fd.„Z-d/e,ded	dfd0„Z.dej(                  d	efd1„Z/ded	efd2„Z0dŒd3„Z1ded	dfd4„Z2dŒd5„Z3d6ed	dfd7„Z4d6ed	dfd8„Z5dŒd9„Z6d	efd:„Z7d	efd;„Z8ded	efd<„Z9d6ed	efd=„Z:dŒd>„Z;ded	dfd?„Z<	 dŽdejz                  dej                  e   d	dfd@„Z>dej~                  ded	dfdA„Z@dej‚                  ded	dfdB„ZBdej†                  ded	dfdC„ZDdej:                  ejŠ                  ejŒ                  f   ded	dfdD„ZGdejŠ                  ded	dfdE„ZHdejŒ                  ded	dfdF„ZIdej”                  ded	dfdG„ZKdej˜                  ded	dfdH„ZMdejR                  ded	dfdI„ZNdejT                  ded	dfdJ„ZOdej                   ded	dfdK„ZQdej¤                  ded	dfdL„ZSdej¨                  ded	dfdM„ZU G dN„ dOej¬                  «      ZWeXdPejD                  d	ejD                  fdQ„«       ZYdZZej                  eW   e[dR<   d	eWfdS„Z\dTej0                  ejD                     d	efdU„Z]dej¼                  dedVeWd	efdW„Z_dej¼                  dedVeWd	dfdX„Z`dej¼                  dedVeWd	dfdY„ZadejÄ                  ded	dfdZ„ZcdejÈ                  ded	dfd[„ZedejÌ                  ded	dfd\„ZgdejÐ                  ded	dfd]„ZidejÔ                  ded	dfd^„ZkdejØ                  ded	dfd_„ZmdejÜ                  ded	dfd`„ZodejV                  ded	dfda„Zpdejâ                  ded	dfdb„Zrdejæ                  ded	dfdc„Zt eudd«      Zv eude«      Zw eudf«      Zx eudg«      Zy eudh«      Zz eudi«      Z{ eudj«      Z| eudk«      Z} eudl«      Z~ edd«      Z€ ede«      Z� edm«      Z‚eƒde�j                  ded	dfdn„«       Z…eƒde�j                  ded	dfdo„«       Z‡de�j                  ded	dfdp„Z‰eƒde�j                  ded	dfdq„«       Z‹eƒde�j                  ded	dfdr„«       Z�de�j                  ded	dfds„Z�e�dej:                  ej>                  ej@                  f   dedted	e�j"                  d   fdu„«       Z’eƒdej>                  ded	dfdv„«       Z“eƒdej@                  ded	dfdw„«       Z”eƒde�j*                  ded	dfdx„«       Z–eƒ	 d‹dej<                  dedyed	dfdz„«       Z—de�j0                  ded	dfd{„Z™de�j4                  ded	dfd|„Z›de�j8                  ded	dfd}„Z�de�j<                  ded	dfd~„ZŸde�j@                  ded	dfd„Z¡de�jD                  ded	dfd€„Z£de�jH                  ded	dfd�„Z¥de�jL                  ded	dfd‚„Z§de�jP                  ded	dfdƒ„Z©de�jT                  ded	dfd„„Z«de�jX                  ded	dfd…„Z­de�j\                  ded	dfd†„Z¯de�j`                  ded	dfd‡„Z±de�jd                  ded	dfdˆ„Z³de�jh                  ded	dfd‰„Zµy)‘r(   NrB   r   rR   rS   rT   rU   rV   r%   c                 ó’  — |€
t        «       }|| _        || _        || _        || _        d| _        || _        d | _        |rt        |«      | _        i | _	        i | _
        d| _        d| _        d| _        i | _        i | _        g | _        d | _        d| _        d| _        d| _        d| _        d| _        g | _        g | _        dg| _        y )NFr   r
   TÚcontext)r   rB   rR   rS   rT   Úcreated_block_contextrU   r/   r   Úimport_aliasesÚblocksÚextends_so_farÚhas_known_extendsÚcode_linenor·   r¶   Ú
debug_infoÚ_write_debug_infoÚ
_new_linesÚ
_last_lineÚ_first_writeÚ_last_identifierÚ_indentationÚ_assign_stackÚ_param_def_blockÚ_context_reference_stack)r'   rB   rR   rS   rT   rU   rV   s          r4   r‰   zCodeGenerator.__init__-  sô   € ð ˆ>Ü“ZˆFØ&ˆÔØˆŒ	Ø ˆŒØˆŒØ%*ˆÔ"Ø$ˆŒØ04ˆŒáÜ& {Ó3ˆDŒNð 13ˆÔð 13ˆŒð  ˆÔð
 "'ˆÔð ˆÔð (*ˆŒ
Ø)+ˆŒð 68ˆŒØ26ˆÔð ˆŒð ˆŒð !ˆÔð !"ˆÔð ˆÔð 24ˆÔð 57ˆÔð *3¨ˆÕ%r6   c                 ó   — | j                   d uS r.   )r/   r¸   s    r4   rV   zCodeGenerator.optimizedv  s   € à�~‰~ TÐ)Ð)r6   ÚmsgÚlinenozte.NoReturnc                 óF   — t        ||| j                  | j                  «      ‚)z*Fail with a :exc:`TemplateAssertionError`.)r   rR   rS   )r'   ræ   rç   s      r4   ÚfailzCodeGenerator.fail|  s   € ä$ S¨&°$·)±)¸T¿]¹]ÓKÐKr6   c                 óJ   — | xj                   dz  c_         d| j                   › �S )zGet a new unique identifier.r
   Út_)rà   r¸   s    r4   Útemporary_identifierz"CodeGenerator.temporary_identifier€  s'   € à×Ò Ñ"ÕØ�D×)Ñ)Ð*Ð+Ð+r6   r*   c                 ój   — | j                  «       |_        | j                  |j                  › d�«       y)z7Enable buffering for the frame from that point onwards.z = []N)rì   r˜   Ú	writeline©r'   r*   s     r4   r˜   zCodeGenerator.buffer…  s)   € à×0Ñ0Ó2ˆŒØ�‰˜%Ÿ,™,˜ uÐ-Õ.r6   Úforce_unescapedc                 ó   — |sí|j                   j                  r¡| j                  d«       | j                  «        | j                  d|j                  › d�«       | j                  «        | j                  d«       | j                  «        | j                  d|j                  › d�«       | j                  «        y|j                   j                  r | j                  d|j                  › d�«       y| j                  d|j                  › d�«       y)z(Return the buffer contents of the frame.zif context.eval_ctx.autoescape:zreturn Markup(concat(ú))úelse:zreturn concat(rA   N)r0   r1   rî   Úindentr˜   ÚoutdentÚ
autoescape)r'   r*   rð   s      r4   Úreturn_buffer_contentsz$CodeGenerator.return_buffer_contentsŠ  sÊ   € ñ Ø�~‰~×&Ò&Ø—‘Ð@ÔAØ—‘”Ø—‘Ð!6°u·|±|°nÀBÐGÔHØ—‘”Ø—‘˜wÔ'Ø—‘”Ø—‘ °·±¨~¸QÐ?Ô@Ø—‘”ØØ—‘×*Ò*Ø—‘Ð!6°u·|±|°nÀBÐGÔHØØ�‰˜¨¯© ~°QÐ7Õ8r6   c                 ó.   — | xj                   dz  c_         y)zIndent by one.r
   N©rá   r¸   s    r4   rô   zCodeGenerator.indentž  s   € à×Ò˜QÑÖr6   Ústepc                 ó.   — | xj                   |z  c_         y)zOutdent by step.Nrù   )r'   rú   s     r4   rõ   zCodeGenerator.outdent¢  s   € à×Ò˜TÑ!Ör6   r)   c                 ó€   — |j                   €| j                  d|«       y| j                  |j                   › d�|«       y)z%Yield or write into the frame buffer.Núyield ú.append()r˜   rî   )r'   r*   r)   s      r4   Ústart_writezCodeGenerator.start_write¦  s3   € à�<‰<ÐØ�N‰N˜8 TÕ*à�N‰N˜eŸl™l˜^¨8Ð4°dÕ;r6   c                 ó@   — |j                   �| j                  d«       yy)z1End the writing process started by `start_write`.NrA   )r˜   rE   rï   s     r4   Ú	end_writezCodeGenerator.end_write­  s   € à�<‰<Ð#Ø�J‰J�s�Oð $r6   Úsc                 ól   — | j                  ||«       | j                  |«       | j                  |«       y)z4Simple shortcut for start_write + write + end_write.N)rÿ   rE   r  )r'   r  r*   r)   s       r4   Úsimple_writezCodeGenerator.simple_write²  s+   € ð 	×Ñ˜ Ô%Ø�
‰
�1ŒØ�‰�uÕr6   r   c                 óx   — 	 | j                  d«       |D ]  }| j                  ||«       Œ y# t        $ r Y yw xY w)z•Visit a list of nodes as block in a frame.  If the current frame
        is no buffer a dummy ``if 0: yield None`` is written automatically.
        ÚpassN)rî   r2   rÑ   )r'   r   r*   r)   s       r4   Ú
blockvisitzCodeGenerator.blockvisitº  s=   € ð	Ø�N‰N˜6Ô"Û�Ø—
‘
˜4 Õ'ñ øäò 	Ùð	ús   ‚*- ­	9¸9Úxc                 óì  — | j                   rÍ| j                  s‹| j                  j                  d| j                   z  «       | xj                  | j                   z  c_        | j
                  �8| j                  j                  | j
                  | j                  f«       d| _        d| _        | j                  j                  d| j                  z  «       d| _         | j                  j                  |«       y)z&Write a string into the output stream.Ú
NFz    r   )	rÝ   rß   rT   rE   rÚ   rÜ   rÛ   Úappendrá   )r'   r  s     r4   rE   zCodeGenerator.writeÅ  s·   € à�?Š?Ø×$Ò$Ø—‘×!Ñ! $¨¯©Ñ"8Ô9Ø× Ò  D§O¡OÑ3Õ Ø×)Ñ)Ð5Ø—O‘O×*Ñ*¨D×,BÑ,BÀD×DTÑDTÐ+UÔVØ-1�DÔ*Ø %ˆDÔØ�K‰K×Ñ˜f t×'8Ñ'8Ñ8Ô9ØˆDŒOØ�‰×Ñ˜!Õr6   Úextrac                 óJ   — | j                  ||«       | j                  |«       y)z!Combination of newline and write.N)ÚnewlinerE   )r'   r  r)   r  s       r4   rî   zCodeGenerator.writelineÓ  s   € ð 	�‰�T˜5Ô!Ø�
‰
�1�r6   c                 ó¾   — t        | j                  d|z   «      | _        |�=|j                  | j                  k7  r#|j                  | _        |j                  | _        yyy)z/Add one or more newlines before the next write.r
   N)ÚmaxrÝ   rç   rÞ   rÜ   )r'   r)   r  s      r4   r  zCodeGenerator.newlineÚ  sL   € ä˜dŸo™o¨q°5©yÓ9ˆŒØÐ §¡¨t¯©Ò >Ø%)§[¡[ˆDÔ"Ø"Ÿk™kˆD�Oð !?Ðr6   Úextra_kwargsc                 óº  — t        d„ t        d„ |j                  D «       |xs d«      D «       «      }|j                  D ]%  }| j	                  d«       | j                  ||«       Œ' |se|j                  D ]%  }| j	                  d«       | j                  ||«       Œ' |�/|j                  «       D ]  \  }}| j	                  d|› d|› �«       Œ |j                  r-| j	                  d«       | j                  |j                  |«       |�r|j                  �| j	                  d«       n| j	                  d	«       |j                  D ]M  }| j	                  |j                  ›d
�«       | j                  |j                  |«       | j	                  d«       ŒO |�/|j                  «       D ]  \  }}| j	                  |›d
|› d�«       Œ |j                  �?| j	                  d«       | j                  |j                  |«       | j	                  d«       y| j	                  d«       y|j                  �.| j	                  d«       | j                  |j                  |«       yy)a+  Writes a function call to the stream for the current node.
        A leading comma is added automatically.  The extra keyword
        arguments may not include python keywords otherwise a syntax
        error could occur.  The extra keyword arguments should be given
        as python dict.
        c              3   ób   K  — | ]'  }t        t        j                  t        |«      «      –— Œ) y ­wr.   )Úis_python_keywordr8   Úcastrr   )rd   ri   s     r4   rf   z*CodeGenerator.signature.<locals>.<genexpr>ï  s'   è ø€ ð 
áL�ô œaŸf™f¤S¨!›n×-ÙLùs   ‚-/c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr.   )Úkey©rd   r  s     r4   rf   z*CodeGenerator.signature.<locals>.<genexpr>ñ  s   è ø€ Ð7©; a˜AŸE�E©;ùó   ‚r�   r>   NÚ=z, *z
, **dict({z, **{ú: z}, **rA   Ú}z, **)Úanyr   r,   ÚargsrE   r2   ry   Údyn_argsÚ
dyn_kwargsr  r_   )	r'   r)   r*   r  Úkwarg_workaroundÚargÚkwargr  r_   s	            r4   Ú	signaturezCodeGenerator.signatureá  sñ  € ô ñ 
äÑ7¨4¯;ª;Ó7¸Ò9KÈÔLó
ó 
Ðð
 —9”9ˆCØ�J‰J�tÔØ�J‰J�s˜EÕ"ð ñ  ØŸœ�Ø—
‘
˜4Ô Ø—
‘
˜5 %Õ(ð %ð Ð'Ø".×"4Ñ"4Ö"6‘J�C˜Ø—J‘J  C 5¨¨%¨Ð1Õ2ð #7à�=Š=Ø�J‰J�uÔØ�J‰J�t—}‘} eÔ,âØ�‰Ð*Ø—
‘
˜<Õ(à—
‘
˜7Ô#ØŸœ�Ø—
‘
˜eŸi™i˜]¨"Ð-Ô.Ø—
‘
˜5Ÿ;™;¨Ô.Ø—
‘
˜4Õ ð %ð Ð'Ø".×"4Ñ"4Ö"6‘J�C˜Ø—J‘J # ¨¨5¨'°Ð4Õ5ð #7à�‰Ð*Ø—
‘
˜7Ô#Ø—
‘
˜4Ÿ?™?¨EÔ2Ø—
‘
˜3•à—
‘
˜3•à�_‰_Ð(Ø�J‰J�vÔØ�J‰J�t—‘¨Õ.ð )r6   c           
      óÖ  — t        «       }|D ]  }|j                  |«       Œ | j                  |j                  df| j                  |j                  dffD �]  \  }}}t	        |«      D ]ü  }||vr| j                  «       ||<   | j                  d«       | j                  «        | j                  ||   › d|› d|›d�«       | j                  «        | j                  d«       | j                  «        | j                  d«       | j                  d	||   › d
�«       | j                  «        | j                  d|dd › d|›d�«       | j                  «        | j                  «        Œþ �Œ y)aæ  Find all filter and test names used in the template and
        assign them to variables in the compiled namespace. Checking
        that the names are registered with the environment is done when
        compiling the Filter and Test nodes. If the node is in an If or
        CondExpr node, the check is done at runtime instead.

        .. versionchanged:: 3.0
            Filters and tests in If and CondExpr nodes are checked at
            runtime instead of compile time.
        r¶   r·   útry:z = environment.Ú[Ú]zexcept KeyError:z@internalcodeúdef z
(*unused):zraise TemplateRuntimeError("No Néÿÿÿÿú named z	 found."))	r´   r2   r¶   r·   Úsortedrì   rî   rô   rõ   )r'   r   rI   r)   Úid_mapr{   Ú
dependencyrR   s           r4   Úpull_dependencieszCodeGenerator.pull_dependencies  sM  € ô *Ó+ˆãˆDØ�M‰M˜$Õð ð �\‰\˜7Ÿ?™?¨IÐ6à—
‘
Ø—‘Øðô*
Ñ%ˆF�E˜:ô ˜už�Ø˜vÑ%Ø#'×#<Ñ#<Ó#>�F˜4‘Lð —‘˜vÔ&Ø—‘”Ø—‘ &¨¡, ¨¸z¸lÈ!ÈDÈ8ÐSTÐUÔVØ—‘”Ø—‘Ð1Ô2Ø—‘”Ø—‘˜Ô/Ø—‘  f¨T¡l ^°:Ð>Ô?Ø—‘”Ø—‘Ø5°jÀÀ"°oÐ5FØ˜d˜X Yð0ôð —‘”Ø—‘•ò) &ñ*
r6   c           	      ó´  — g }|j                   j                  j                  «       D ]‰  \  }\  }}|t        k(  rŒ|t        k(  r)| j                  |› d| j                  «       › d|›d�«       ŒE|t        k(  r| j                  |› d|› �«       Œe|t        k(  r|j                  |«       Œ€t        d«      ‚ |r$| j                  dj                  |«      › d�«       y y )Nú = r?   rA   zunknown load instructionú
 = missing)r–   Úloadsry   r   r   rî   Úget_resolve_funcr   r   r  ÚNotImplementedErrorÚjoin)r'   r*   ÚundefsÚtargetÚactionÚparams         r4   Úenter_framezCodeGenerator.enter_frameH  sÓ   € ØˆØ',§}¡}×':Ñ':×'@Ñ'@Ö'BÑ#ˆF‘O�V˜UØÔ+Ò+ØØÔ+Ò+Ø—‘ & ¨¨T×-BÑ-BÓ-DÐ,EÀQÀuÀiÈqÐQÕRØœ>Ò)Ø—‘ & ¨¨U¨GÐ4Õ5ØÔ-Ò-Ø—‘˜fÕ%ä)Ð*DÓEÐEð (Cñ Ø�N‰N˜eŸj™j¨Ó0Ð1°Ð<Õ=ð r6   Úwith_python_scopec                 ó²   — |sUg }|j                   j                  D ]  }|j                  |«       Œ |r$| j                  dj	                  |«      › d�«       y y y )Nr1  r2  )r–   r3  r  rî   r6  )r'   r*   r<  r7  r8  s        r4   Úleave_framezCodeGenerator.leave_frameX  sT   € Ù ØˆFØŸ-™-×-Ô-�Ø—‘˜fÕ%ð .áØ—‘ %§*¡*¨VÓ"4Ð!5°ZÐ@ÕAð ð	 !r6   Úasync_valueÚ
sync_valuec                 ó6   — | j                   j                  r|S |S r.   )rB   Úis_async)r'   r?  r@  s      r4   Úchoose_asynczCodeGenerator.choose_async`  s   € Ø"×.Ñ.×7Ò7ˆ{ÐG¸ZÐGr6   c                 ó,   — | j                  «       › d|› �S )Nr)  )rC  )r'   rR   s     r4   ÚfunczCodeGenerator.funcc  s   € Ø×#Ñ#Ó%Ð& d¨4¨&Ð1Ð1r6   c           
      óè  — |j                  «       }|j                  j                  |«       t        |«      }d}t	        «       }g }t        |j                  «      D ]s  \  }}|j                  dk(  r|}|j                  dv r|j                  |j                  «       |j                  |j                  j                  |j                  «      «       Œu t        |j                  d«      }	d|	v rZ|�'	 |j                  |t        |j                  «      z
      n*|j                  |j                  j%                  d«      «       d|_        d|	v r5d|vr1|j                  |j                  j%                  d«      «       d|_        d|	v r5d|vr1|j                  |j                  j%                  d«      «       d|_        d	|_        |j                  j                  |«       | j/                  | j1                  d
«      › ddj3                  |«      › d�|«       | j5                  «        | j7                  |«       | j9                  |«       | j;                  |«       t        |j                  «      D ]¼  \  }}|j                  j                  |j                  «      }
| j/                  d|
› d�«       | j5                  «        	 |j                  |t        |j                  «      z
     }| j/                  |
› d�«       | j=                  ||«       | j?                  |
«       | jA                  «        Œ¾ | jC                  «        | jE                  |j                  |«       | jG                  |d¬«       | jI                  |d¬«       | jA                  «        ||fS # t        $ r  | j!                  d|j"                  «       Y �Œvw xY w# t        $ r1 | j/                  |
› d|j                  ›d|j                  ›d�«       Y Œîw xY w)z/Dump the function def of a macro or call block.NÚcaller)r,   Úvarargs)rG  r,   rH  zhWhen defining macros or call blocks the special "caller" argument must be omitted or be given a default.Tr,   rH  FÚmacror?   r>   ú):úif ú is missing:r1  z = undefined("parameter z was not provided", name=rA   )rð   ©r<  )%rª   r–   Úanalyze_noder‚   ru   Ú	enumerater  rR   r»   r  Úrefr€   ÚbodyÚdefaultsÚlenÚ
IndexErrorré   rç   Údeclare_parameterr…   r†   r‡   r—   rî   rE  r6  rô   r˜   r;  Úpush_parameter_definitionsr2   Úmark_parameter_storedrõ   Úpop_parameter_definitionsr  r÷   r>  )r'   r)   r*   Ú	macro_refÚexplicit_callerÚskip_special_paramsr  Úidxr"  r   rP  Údefaults               r4   Ú
macro_bodyzCodeGenerator.macro_bodyf  sX  € ð —‘“ˆØ�‰×"Ñ" 4Ô(Ü˜T“Nˆ	àˆÜ!›eÐØˆä! $§)¡)Ö,‰HˆC�Ø�x‰x˜8Ò#Ø"%�Ø�x‰xÐ0Ñ0Ø#×'Ñ'¨¯©Ô1Ø�K‰K˜Ÿ™×)Ñ)¨#¯(©(Ó3Õ4ð -ô % T§Y¡YÐ0OÓPˆ
à�zÑ!ð Ð*ðØ—M‘M /´C¸¿	¹	³NÑ"BÓCð —‘˜EŸM™M×;Ñ;¸HÓEÔFØ(,ˆIÔ%Ø�zÑ! hÐ6IÑ&IØ�K‰K˜Ÿ™×7Ñ7¸ÓAÔBØ(,ˆIÔ%Ø˜
Ñ" yÐ8KÑ'KØ�K‰K˜Ÿ™×7Ñ7¸	ÓBÔCØ)-ˆIÔ&ð &+ˆÔ"Ø�‰×"Ñ" 4Ô(Ø�‰˜$Ÿ)™) GÓ,Ð-¨Q¨t¯y©y¸«Ð.?¸rÐBÀDÔIØ�‰Œà�‰�EÔØ×Ñ˜Ôà×'Ñ'¨Ô.Ü! $§)¡)Ö,‰HˆC�Ø—-‘-×#Ñ# C§H¡HÓ-ˆCØ�N‰N˜S   \Ð2Ô3Ø�K‰KŒMð	+ØŸ-™-¨¬c°$·)±)«nÑ(<Ñ=�ð —‘ #  c˜{Ô+Ø—
‘
˜7 EÔ*Ø×&Ñ& sÔ+Ø�L‰L�Nð -ð  	×&Ñ&Ô(à�‰˜Ÿ	™	 5Ô)Ø×#Ñ# E¸4Ð#Ô@Ø×Ñ˜°$ÐÔ7Ø�‰Œà�iÐÐøôe "ò Ø—I‘Ið1ð Ÿ™÷	ðûôB ò Ø—‘Ø�eÐ3°C·H±H°<ð @Ø ŸX™X˜L¨ð+öðús$   Ã-%N Ê7%N7Î%N4Î3N4Î77O1Ï0O1rY  c                 óV  — dj                  d„ |j                  j                  D «       «      }t        |j                  dd«      }t	        |j                  j                  «      dk(  r|dz  }| j                  d|›d|› d	|j                  ›d|j                  ›d|j                  ›d
�«       y)z<Dump the macro definition for the def created by macro_body.r>   c              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wr.   )ÚreprrR   r  s     r4   rf   z*CodeGenerator.macro_def.<locals>.<genexpr>»  s   è ø€ ÐHÑ4G¨qœd 1§6¡6ŸlÑ4Gùs   ‚!rR   Nr
   Ú,zMacro(environment, macro, z, (z), z, context.eval_ctx.autoescape))	r6  r)   r  ÚgetattrrS  rE   r†   r‡   r…   )r'   rY  r*   Ú	arg_tuplerR   s        r4   Ú	macro_defzCodeGenerator.macro_def¹  s¥   € à—I‘IÑH°I·N±N×4GÒ4GÓHÓHˆ	Ü�y—~‘~ v¨tÓ4ˆÜˆy�~‰~×"Ñ"Ó# qÒ(Ø˜ÑˆIØ�
‰
Ø(¨¨°°I°;ð ?Ø×)Ñ)Ð,¨B¨y×/IÑ/IÐ.Lð MØ×)Ñ)Ð,Ð,JðLõ	
r6   c                 ó^   — d|j                   › �}| j                  �|› d| j                  ›�}|S )z.Return a human readable position for the node.zline ú in )rç   rR   )r'   r)   r§   s      r4   ÚpositionzCodeGenerator.positionÅ  s5   € à�T—[‘[�MÐ"ˆØ�9‰9Ð Ø�4�t˜DŸI™I˜=Ð)ˆBØˆ	r6   c                 óŠ   — dj                  d„ |j                  j                  «       j                  «       D «       «      }d|› d�S )Nr>   c              3   ó0   K  — | ]  \  }}|›d |› �–— Œ y­w©r  Nr�   )rd   rR   r8  s      r4   rf   z3CodeGenerator.dump_local_context.<locals>.<genexpr>Í  s'   è ø€ ð 
á C‘��fð ˆh�b˜˜Ô!Ù Cùó   ‚Ú{r  )r6  r–   Údump_storesry   )r'   r*   Úitems_kvs      r4   Údump_local_contextz CodeGenerator.dump_local_contextÌ  sD   € Ø—9‘9ñ 
à %§¡× 9Ñ 9Ó ;× AÑ AÔ Có
ó 
ˆð �H�:˜RÐ Ð r6   c                 ó®   — | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       y)z·Writes a common preamble that is used by root and block functions.
        Primarily this sets up common local helpers and enforces a generator
        through a dead branch.
        z$resolve = context.resolve_or_missingz!undefined = environment.undefinedzconcat = environment.concatzcond_expr_undefined = Undefinedzif 0: yield NoneN©rî   r¸   s    r4   Úwrite_commonszCodeGenerator.write_commonsÓ  sG   € ð
 	�‰Ð=Ô>Ø�‰Ð:Ô;Ø�‰Ð4Ô5ð 	�‰Ð8Ô9Ø�‰Ð)Õ*r6   c                 ój   — | j                   j                  |j                  j                  «       «       y)aQ  Pushes all parameter targets from the given frame into a local
        stack that permits tracking of yet to be assigned parameters.  In
        particular this enables the optimization from `visit_Name` to skip
        undefined expressions for parameters in macros as macros can reference
        otherwise unbound parameters.
        N)rã   r  r–   Údump_param_targetsrï   s     r4   rV  z(CodeGenerator.push_parameter_definitionsà  s%   € ð 	×Ñ×$Ñ$ U§]¡]×%EÑ%EÓ%GÕHr6   c                 ó8   — | j                   j                  «        y)z+Pops the current parameter definitions set.N)rã   Úpopr¸   s    r4   rX  z'CodeGenerator.pop_parameter_definitionsé  s   € à×Ñ×!Ñ!Õ#r6   r8  c                 óZ   — | j                   r| j                   d   j                  |«       yy)z€Marks a parameter in the current parameter definitions as stored.
        This will skip the enforced undefined checks.
        r*  N)rã   rË   ©r'   r8  s     r4   rW  z#CodeGenerator.mark_parameter_storedí  s+   € ð × Ò Ø×!Ñ! "Ñ%×-Ñ-¨fÕ5ð !r6   c                 ó:   — | j                   j                  |«       y r.   )rä   r  ry  s     r4   Úpush_context_referencez$CodeGenerator.push_context_referenceô  s   € Ø×%Ñ%×,Ñ,¨VÕ4r6   c                 ó8   — | j                   j                  «        y r.   )rä   rw  r¸   s    r4   Úpop_context_referencez#CodeGenerator.pop_context_reference÷  s   € Ø×%Ñ%×)Ñ)Õ+r6   c                 ó    — | j                   d   S )Nr*  ©rä   r¸   s    r4   Úget_context_refzCodeGenerator.get_context_refú  s   € Ø×,Ñ,¨RÑ0Ð0r6   c                 ó6   — | j                   d   }|dk(  ry|› d�S )Nr*  rÔ   Úresolvez.resolver  ry  s     r4   r4  zCodeGenerator.get_resolve_funcý  s*   € Ø×.Ñ.¨rÑ2ˆØ�YÒØØ�˜Ð"Ð"r6   c                 óL   — | j                  «       › d| j                  |«      › d�S )Nz	.derived(rA   )r€  rp  rï   s     r4   Úderive_contextzCodeGenerator.derive_context  s,   € Ø×&Ñ&Ó(Ð)¨°4×3JÑ3JÈ5Ó3QÐ2RÐRSÐTÐTr6   c                 ó>   — | j                   sy|| j                   d   v S )z4Checks if a given target is an undeclared parameter.Fr*  )rã   ry  s     r4   Úparameter_is_undeclaredz%CodeGenerator.parameter_is_undeclared  s$   € à×$Ò$ØØ˜×.Ñ.¨rÑ2Ð2Ð2r6   c                 óJ   — | j                   j                  t        «       «       y)z+Pushes a new layer for assignment tracking.N)râ   r  ru   r¸   s    r4   Úpush_assign_trackingz"CodeGenerator.push_assign_tracking  s   € à×Ñ×!Ñ!¤#£%Õ(r6   c                 óx  — | j                   j                  «       }|j                  s|j                  s|j                  r|sy|D �cg c]  }|dd dk7  sŒ|‘Œ }}t        |«      dk(  r�t        t        |«      «      }|j                  j                  |«      }|j                  r| j                  d|›d|› �«       y|j                  r| j                  d|›d|› �«       y| j                  d|›d|› �«       n¾|j                  r| j                  d«       n/|j                  r| j                  d	«       n| j                  d
«       t        t        |«      «      D ]I  \  }}|r| j                  d«       |j                  j                  |«      }| j                  |›d|› �«       ŒK | j                  d«       |j                  su|j                  sh|ret        |«      dk(  r| j                  d|d   ›d�«       ydj                  t        t         t        |«      «      «      }| j                  d|› d�«       yyyyc c}w )zoPops the topmost level for assignment tracking and updates the
        context variables if necessary.
        Nr
   Ú_z_loop_vars[ú] = z_block_vars[úcontext.vars[z_loop_vars.update({z_block_vars.update({úcontext.vars.update({r>   r  ú})úcontext.exported_vars.add(r   rA   zcontext.exported_vars.update((rò   )râ   rw  r�   rœ   rš   rS  ÚnextÚiterr–   rP  rî   rO  r,  rE   r6  Úmapra  )	r'   r*   Úvarsr  Úpublic_namesrR   rP  r\  Ú	names_strs	            r4   Úpop_assign_trackingz!CodeGenerator.pop_assign_tracking  sû  € ð ×!Ñ!×%Ñ%Ó'ˆà×!Ò!Ø×$Ò$Ø—N’NÙàÙ#'Ó8¡4˜a¨1¨R¨a¨5°C«<š 4ˆÐ8Üˆt‹9˜Š>Üœ˜T›
Ó#ˆDØ—-‘-×#Ñ# DÓ)ˆCØ×ÒØ—‘ ¨T¨H°D¸¸Ð>Ô?ØØ× Ò Ø—‘ ¨d¨X°T¸#¸Ð?Ô@ØØ�N‰N˜]¨4¨(°$°s°eÐ<Õ=à×ÒØ—‘Ð4Õ5Ø×"Ò"Ø—‘Ð5Õ6à—‘Ð6Ô7Ü&¤v¨d£|Ö4‘	��TÙØ—J‘J˜tÔ$Ø—m‘m×'Ñ'¨Ó-�Ø—
‘
˜d˜X R¨ uÐ-Õ.ð	 5ð
 �J‰J�tÔØ× Ò ¨×)9Ò)9¹lÜ�<Ó  AÒ%Ø—‘Ð!;¸LÈ¹OÐ;NÈaÐPÕQà ŸI™I¤c¬$´°|Ó0DÓ&EÓF�	Ø—‘Ð!?À	¸{È"ÐMÕNð ?KÐ)9Ð ùò1 9s   ÁH7ÁH7c           	      ó  — |�J d«       ‚t        | j                  | j                  «      }ddlm} ddlm} | j                  j                  rt        ||z   «      }nt        |«      }| j                  ddj                  |«      z   «       | j                  rdnd}|j                  t        j                  «      d u}|j                  t        j                  «      D ]]  }	|	j                  | j                   v r*| j#                  d	|	j                  ›d
�|	j$                  «       |	| j                   |	j                  <   Œ_ |j                  t        j&                  «      D ]‘  }
|
j(                  | j*                  vsŒ|
j(                  }| j-                  «       x| j*                  |<   }d|v r0|j/                  dd«      \  }}| j                  d|› d|› d|› �«       Œ{| j                  d|› d|› �«       Œ“ | j                  d| j                  ›�«       | j                  | j1                  d«      › d|› d�d¬«       | j3                  «        | j5                  «        t7        |«      }dt9        |j:                  d«      v r/|j<                  j?                  d«      }| j                  |› d�«       |j<                  jA                  |«       dx|_!        |_"        |xr | jF                   |_$        |r| j                  d«       | jK                  |«       | jM                  |j:                  «       | jO                  |j:                  |«       | jQ                  |d¬«       | jS                  «        |�r| jF                  s!| j3                  «        | j                  d«       | j3                  «        | j                  j                  s| j                  d«       n•| j                  d«       | j                  d«       | j3                  «        | j                  d«       | j3                  «        | j                  d «       | jS                  «        | jS                  «        | j                  d!«       | jS                  d| jF                   z   «       | j                   jU                  «       D �]ƒ  \  }}	| j                  | j1                  d"|z   «      › d|› d�|	d«       | j3                  «        | j5                  «        t7        |«      }d|_+        t9        |	j:                  d#«      }d|v r/|j<                  j?                  d«      }| j                  |› d�«       d$|v r5|j<                  j?                  d$«      }| j                  |› d%|›d&|› d'�«       |j<                  jA                  |	«       ||_,        | j                  d(«       | jK                  |«       | jM                  |	j:                  «       | jO                  |	j:                  |«       | jQ                  |d¬«       | jS                  «        �Œ† dj                  d)„ | j                   D «       «      }| j                  d*|› d+�d¬«       d,j                  d-„ | jZ                  D «       «      }| j                  d.|›�«       y )/Nzno root frame allowedr
   )Úasync_exported)Úexportedzfrom jinja2.runtime import r>   Ú z, environment=environmentzblock z defined twiceÚ.zfrom z import z as zimport zname = Úrootz(context, missing=missingrJ  )r  r'   r¸   z = TemplateReference(context)Tzparent_template = NonerM  úif parent_template is not None:z4yield from parent_template.root_render_func(context)z0agen = parent_template.root_render_func(context)r&  zasync for event in agen:zyield eventzfinally: await agen.aclose()Úblock_)r'   ÚsuperrŸ  z = context.super(z, block_rA   z_block_vars = {}c              3   ó*   K  — | ]  }|›d |› �–— Œ y­w)z: block_Nr�   r  s     r4   rf   z/CodeGenerator.visit_Template.<locals>.<genexpr>²  s   è ø€ Ð!K¹{¸! Q E¨°!°Ô"5¹{ùs   ‚z
blocks = {r  Ú&c              3   ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)r  Nr�   rh   s      r4   rf   z/CodeGenerator.visit_Template.<locals>.<genexpr>´  s   è ø€ ÐG±©t¨q°! 1 # Q q c¤
±ùrl  zdebug_info = ).r   rB   rR   Úruntimer˜  r™  rB  r,  rî   r6  rU   Úfindr   ÚExtendsÚfind_allrÅ   r×   ré   rç   ÚImportedNameÚ
importnamerÖ   rì   ÚrsplitrE  rô   rs  r+   r€   rQ  r–   rU  rN  rš   r›   rÙ   r—   r;  r/  r  r>  rõ   ry   r�   r™   rÛ   )r'   r)   r*   r0   r˜  r™  Úexported_namesÚenvenvÚhave_extendsr™   Úimport_ÚimpÚaliasÚmoduleÚobjrP  rR   r�   r   Úblocks_kv_strÚdebug_kv_strs                        r4   Úvisit_TemplatezCodeGenerator.visit_Template=  sp  € ð ˆ}Ð5Ð5Ó5ˆ}Ü˜t×/Ñ/°·±Ó;ˆå+Ý%à×Ñ×$Ò$Ü# H¨~Ñ$=Ó>‰Nä# HÓ-ˆNà�‰Ð4°t·y±yÀÓ7PÑPÔQð —’‘Ð,Gˆð —y‘y¤§¡Ó/°tÐ;ˆð —]‘]¤5§;¡;Ö/ˆEØ�z‰z˜TŸ[™[Ñ(Ø—	‘	˜F 5§:¡: .°Ð?ÀÇÁÔNØ&+ˆD�K‰K˜Ÿ
™
Ò#ð 0ð —}‘}¤U×%7Ñ%7Ö8ˆGØ×!Ñ!¨×)<Ñ)<Ò<Ø×(Ñ(�Ø37×3LÑ3LÓ3NÐN�×#Ñ# CÑ(¨5Ø˜#‘:Ø"%§*¡*¨S°!Ó"4‘K�F˜CØ—N‘N U¨6¨(°(¸3¸%¸tÀEÀ7Ð#KÕLà—N‘N W¨S¨E°°e°WÐ#=Õ>ð 9ð 	�‰˜ §¡ Ð.Ô/ð 	�‰Ø�y‰y˜Ó Ð!Ð!:¸6¸(À"ÐEÈQð 	ô 	
ð 	�‰ŒØ×ÑÔô �h“ˆØ”_ T§Y¡Y°	Ó:Ñ:Ø—-‘-×1Ñ1°&Ó9ˆCØ�N‰N˜c˜UÐ"?Ð@ÔAØ�‰×"Ñ" 4Ô(Ø+/Ð/ˆŒ˜œØ%1Ò%P¸$×:PÑ:PÐ6PˆÔ"ÙØ�N‰NÐ3Ô4Ø×Ñ˜ÔØ×Ñ˜tŸy™yÔ)Ø�‰˜Ÿ	™	 5Ô)Ø×Ñ˜°$ÐÔ7Ø�‰Œò Ø×)Ò)Ø—‘”Ø—‘Ð@ÔAØ�K‰KŒMØ×#Ñ#×,Ò,Ø—‘ÐUÕVà—‘ÐQÔRØ—‘˜vÔ&Ø—‘”Ø—‘Ð9Ô:Ø—‘”Ø—‘˜}Ô-Ø—‘”Ø—‘”Ø—‘Ð=Ô>Ø�L‰L˜ $×"8Ñ"8Ð8Ñ9Ô:ð  Ÿ;™;×,Ñ,×.‰KˆD�%Ø�N‰NØ—9‘9˜X¨™_Ó-Ð.Ð.GÈÀxÈrÐRØØôð
 �K‰KŒMØ×ÑÔ ô   ›/ˆKØ&*ˆKÔ#Ü(¨¯©Ð5FÓGˆJØ˜Ñ#Ø!×)Ñ)×;Ñ;¸FÓC�Ø—‘ # Ð&CÐDÔEØ˜*Ñ$Ø!×)Ñ)×;Ñ;¸GÓD�Ø—‘ # Ð&7¸°x¸xÈÀvÈQÐOÔPØ×Ñ×,Ñ,¨UÔ3Ø $ˆKÔØ�N‰NÐ-Ô.Ø×Ñ˜[Ô)Ø×"Ñ" 5§:¡:Ô.Ø�O‰O˜EŸJ™J¨Ô4Ø×Ñ˜[¸DÐÔAØ�L‰LŽNð7 /ð: Ÿ	™	Ñ!K¸t¿{º{Ó!KÓKˆØ�‰˜ ] O°2Ð6¸aˆÔ@Ø—x‘xÑG°t·²ÓGÓGˆØ�‰˜ |Ð&6Ð7Õ8r6   c                 ó  — d}|j                   rB| j                  ry| j                  dkD  r&| j                  d«       | j	                  «        |dz  }|j
                  r| j                  |«      }n| j                  «       }|j                  r`| j                  d|j                  ›d�|«       | j	                  «        | j                  d|j                  ›d�|«       | j                  «        | j                  j                  s0|j                  €$| j                  d	|j                  ›d
|› d�|«       nÌ| j                  d|j                  ›d
|› d�«       | j                  d«       | j	                  «        | j                  | j                  «       › d�|«       | j	                  «        | j                  d|«       | j                  «        | j                  «        | j                  d| j                  dd«      › �«       | j                  |«       y)z.Call a block and register it for the template.r   Núif parent_template is None:r
   zif len(context.blocks[z]) <= 1:z+raise TemplateRuntimeError("Required block z not found")zyield from context.blocks[z][0](rA   zgen = context.blocks[r&  úfor event in gen:Úeventú	finally: úawait gen.aclose()úgen.close())rš   rÙ   rØ   rî   rô   Úscopedr„  r€  ÚrequiredrR   rõ   rB   rB  r˜   rC  r  )r'   r)   r*   r“   rÔ   s        r4   rÀ   zCodeGenerator.visit_Block·  s»  € àˆØ�>Š>ð ×%Ò%ØØ×"Ñ" QÒ&Ø—‘Ð<Ô=Ø—‘”Ø˜‘
�à�;Š;Ø×)Ñ)¨%Ó0‰Gà×*Ñ*Ó,ˆGà�=Š=Ø�N‰NÐ3°D·I±I°=ÀÐIÈ4ÔPØ�K‰KŒMØ�N‰NØ=¸d¿i¹i¸]È,ÐWØôð �L‰LŒNà×Ñ×(Ò(¨U¯\©\Ð-AØ�N‰NØ,¨T¯Y©Y¨M¸¸w¸iÀqÐIÈ4õð �N‰NÐ2°4·9±9°-¸uÀWÀIÈQÐOÔPØ�N‰N˜6Ô"Ø�K‰KŒMØ�N‰NØ×$Ñ$Ó&Ð'Ð'8Ð9Øôð �K‰KŒMØ×Ñ˜g uÔ-Ø�L‰LŒNØ�L‰LŒNØ�N‰NØ˜D×-Ñ-Ð.BÀMÓRÐSÐTôð 	�‰�UÕr6   c                 ó¨  — |j                   s| j                  d|j                  «       | j                  dkD  rd| j                  s!| j                  d«       | j                  «        | j                  d«       | j                  r
t        «       ‚| j                  «        | j                  d|«       | j                  |j                  |«       | j                  d| j                  ›d�«       | j                  d«       | j                  «        | j                  d	«       | j                  «        |j                  rd
| _        | xj                  dz  c_        y)zCalls the extender.z,cannot use extend from a non top-level scoper   r�  z5raise TemplateRuntimeError("extended multiple times")z+parent_template = environment.get_template(r>   rA   z9for name, parent_block in parent_template.blocks.items():z8context.blocks.setdefault(name, []).append(parent_block)Tr
   N)rš   ré   rç   rØ   rÙ   rî   rô   rÑ   rõ   r2   ÚtemplaterE   rR   r›   ©r'   r)   r*   s      r4   Úvisit_ExtendszCodeGenerator.visit_Extendsè  s   € à�~Š~Ø�I‰IÐDÀdÇkÁkÔRð
 ×Ñ Ò"ð
 ×)Ò)Ø—‘Ð@ÔAØ—‘”Ø�N‰NÐRÔSð ×%Ò%Ü"“nÐ$à—‘”à�‰ÐDÀdÔKØ�
‰
�4—=‘= %Ô(Ø�
‰
�R˜Ÿ	™	�} AÐ&Ô'Ø�‰ÐRÔSØ�‰ŒØ�‰ÐQÔRØ�‰Œð
 �?Š?Ø%)ˆDÔ"ð 	×Ò˜qÑ Ör6   c                 óˆ  ‡ ‡— |j                   r!‰ j                  d«       ‰ j                  «        d}t        |j                  t
        j                  «      rTt        |j                  j                  t        «      rd}nct        |j                  j                  t        t        f«      r9d}n6t        |j                  t
        j                  t
        j                  f«      rd}‰ j                  d|› d�|«       ‰ j                  |j                  ‰«       ‰ j                  d‰ j                  ›d�«       |j                   rs‰ j!                  «        ‰ j                  d	«       ‰ j                  «        ‰ j                  d
«       ‰ j!                  «        ‰ j                  d«       ‰ j                  «        dˆˆ fd„}|j"                  r£‰ j                  d‰ j%                  ‰«      › d�«       ‰ j                  d«       ‰ j                  «        ‰ j                  ‰ j'                  «       › d�«        |«        ‰ j!                  «        ‰ j                  d‰ j'                  dd«      › �«       n@‰ j(                  j*                  r‰ j                  d«        |«        n‰ j                  d«       |j                   r‰ j!                  «        yy)zHandles includes.r&  Úget_or_select_templateÚget_templateÚselect_templateztemplate = environment.r?   r>   rA   zexcept TemplateNotFound:r  ró   Nc                  ój   •— ‰j                  «        ‰j                  d‰ «       ‰j                  «        y )Nr¸  )rô   r  rõ   )r*   r'   s   €€r4   Ú	loop_bodyz.CodeGenerator.visit_Include.<locals>.loop_body-  s%   ø€ Ø�K‰KŒMØ×Ñ˜g uÔ-Ø�L‰L�Nr6   zNgen = template.root_render_func(template.new_context(context.get_all(), True, rò   r·  r¹  rº  r»  zGfor event in (await template._get_default_module_async())._body_stream:z6yield from template._get_default_module()._body_streamrÂ   )Úignore_missingrî   rô   rX   r¿  r   ÚConstr_   rr   rs   rt   ÚTupleÚListr2   rE   rR   rõ   Úwith_contextrp  rC  rB   rB  )r'   r)   r*   Ú	func_namerÇ  s   ` `  r4   Úvisit_IncludezCodeGenerator.visit_Include  s  ù€ à×ÒØ�N‰N˜6Ô"Ø�K‰KŒMà,ˆ	Ü�d—m‘m¤U§[¡[Ô1Ü˜$Ÿ-™-×-Ñ-¬sÔ3Ø*‘	Ü˜DŸM™M×/Ñ/´%¼°Ô?Ø-‘	Ü˜Ÿ™¬¯©´U·Z±ZÐ'@ÔAØ)ˆIà�‰Ð0°°¸1Ð=¸tÔDØ�
‰
�4—=‘= %Ô(Ø�
‰
�R˜Ÿ	™	�} AÐ&Ô'Ø×ÒØ�L‰LŒNØ�N‰NÐ5Ô6Ø�K‰KŒMØ�N‰N˜6Ô"Ø�L‰LŒNØ�N‰N˜7Ô#Ø�K‰KŒMö	ð
 ×ÒØ�N‰Nðà×+Ñ+¨EÓ2Ð3°2ð7ôð
 �N‰N˜6Ô"Ø�K‰KŒMØ�N‰N˜d×/Ñ/Ó1Ð2Ð2CÐDÔEÙŒKØ�L‰LŒNØ�N‰NØ˜D×-Ñ-Ð.BÀMÓRÐSÐTõð ×Ñ×&Ò&Ø�N‰Nð!ôñ �Kà�N‰NÐSÔTà×ÒØ�L‰L�Nð r6   c                 ó–  — | j                  | j                  d«      › d�«       | j                  |j                  |«       | j                  d| j                  ›d�«       |j
                  r;d| j                  d«      › �}| j                  |› d| j                  |«      › d�«       y | j                  d	| j                  d«      › d
�«       y )Núawait zenvironment.get_template(r>   z).Úmake_moduleÚ_asyncz(context.get_all(), True, rA   Ú_get_default_modulez	(context))rE   rC  r2   r¿  rR   rÌ  rp  )r'   r)   r*   Úf_names       r4   Ú_import_commonzCodeGenerator._import_commonL  s¾   € ð 	�
‰
�d×'Ñ'¨Ó1Ð2Ð2KÐLÔMØ�
‰
�4—=‘= %Ô(Ø�
‰
�R˜Ÿ	™	�} BÐ'Ô(à×ÒØ" 4×#4Ñ#4°XÓ#>Ð"?Ð@ˆFØ�J‰JØ�(Ð4°T×5LÑ5LÈUÓ5SÐ4TÐTUÐVõð �J‰JÐ,¨T×->Ñ->¸xÓ-HÐ,IÈÐSÕTr6   c                 ó~  — | j                  |j                  j                  |j                  «      › d�|«       |j                  r| j                  d|j                  ›d�«       | j                  ||«       |j                  r<|j                  j                  d«      s | j                  d|j                  ›d�«       yyy)zVisit regular imports.r1  rŒ  r‹  rŠ  úcontext.exported_vars.discard(rA   N)rî   r–   rP  r8  rš   rE   rÕ  Ú
startswithrÀ  s      r4   Úvisit_ImportzCodeGenerator.visit_Import[  s”   € à�‰˜%Ÿ-™-×+Ñ+¨D¯K©KÓ8Ð9¸Ð=¸tÔDØ�>Š>Ø�J‰J˜ t§{¡{ o°TÐ:Ô;à×Ñ˜D %Ô(à�>Š> $§+¡+×"8Ñ"8¸Ô"=Ø�N‰NÐ;¸D¿K¹K¸?È!ÐLÕMð #>ˆ>r6   c           	      óÌ  ‡— | j                  |«       | j                  d«       | j                  |‰«       g }g }|j                  D �]H  }t	        |t
        «      r|\  }}n|}| j                  ‰j                  j                  |«      › d|›d�«       | j                  d‰j                  j                  |«      › d�«       | j                  «        | j                  |«      j                  dd«      j                  dd	«      }d
|› d|›�}| j                  ‰j                  j                  |«      › d|›d|›d�«       | j                  «        ‰j                  s�Œ|j                  |«       |j                  d«      r�Œ8|j                  |«       �ŒK |rst!        |«      dk(  r6|d   }| j                  d|›d‰j                  j                  |«      › �«       n/dj#                  ˆfd„|D «       «      }	| j                  d|	› d�«       |r\t!        |«      dk(  r| j                  d|d   ›d�«       ydj#                  t%        t&        |«      «      }
| j                  d|
› d�«       yy)zVisit named imports.zincluded_template = z = getattr(included_template, z
, missing)rK  rL  rm  z{{r  z}}z9the template {included_template.__name__!r} (imported on z%) does not export the requested name z = undefined(fz, name=rA   rŠ  r
   r   rŒ  r‹  r>   c              3   ó^   •K  — | ]$  }|›d ‰j                   j                  |«      › �–— Œ& y­wrk  )r–   rP  )rd   rR   r*   s     €r4   rf   z1CodeGenerator.visit_FromImport.<locals>.<genexpr>�  s0   øè ø€ ð %ÙGP¸t�t�h˜b §¡×!2Ñ!2°4Ó!8Ð 9Ô:Áyùs   ƒ*-r�  rŽ  r×  z)context.exported_vars.difference_update((rò   N)r  rE   rÕ  r{   rX   rs   rî   r–   rP  rô   rh  Úreplacerõ   rš   r  rØ  rS  r6  r’  ra  )r'   r)   r*   Ú	var_namesÚdiscarded_namesrR   r¯  rh  ÚmessageÚnames_kvr•  s     `        r4   Úvisit_FromImportzCodeGenerator.visit_FromImportf  sO  ø€ à�‰�TÔØ�
‰
Ð)Ô*Ø×Ñ˜D %Ô(Øˆ	ØˆØ—J•JˆDÜ˜$¤Ô&Ø"‘�‘eà�Ø�N‰NØ—=‘=×$Ñ$ UÓ+Ð,ð -/Ø/3¨h°jðBôð �N‰N˜S §¡×!2Ñ!2°5Ó!9Ð :¸,ÐGÔHØ�K‰KŒMð
 —}‘} TÓ*×2Ñ2°3¸Ó=×EÑEÀcÈ4ÓPˆHð!Ø!) 
ð +7Ø7;°hð@ð ð
 �N‰NØ—=‘=×$Ñ$ UÓ+Ð,¨N¸7¸+ÀWÈTÈHÐTUÐVôð �L‰LŒNØ�~Œ~Ø× Ñ  Ô'Ø×'Ñ'¨Ö,Ø#×*Ñ*¨5Ö1ð9 ñ< Ü�9‹~ Ò"Ø  ‘|�Ø—‘ ¨t¨h°d¸5¿=¹=×;LÑ;LÈTÓ;RÐ:SÐTÕUàŸ9™9ó %ÙGPó%ó �ð —‘Ð!7¸°zÀÐEÔFÙÜ�?Ó# qÒ(Ø—‘Ð!?ÀÐPQÑ@RÐ?UÐUVÐWÕXà ŸI™I¤c¬$°Ó&@ÓA�	Ø—‘Ø?À	¸{È"ÐMõð r6   c                 ó"  — |j                  «       }d|_        |j                  «       }|j                  «       }|j                  xsO dt        |j	                  d¬«      d«      v xs/ t        d„ |j                  t        j                  «      D «       «      }d }|r|j                  j                  d«      }|j                  j                  |d¬«       |j                  r|j                  j                  |d	¬«       |j                  �r¶| j                  «       }|j                  j                  |d
¬«       | j                  | j!                  |«      › d�|j                  «       | j#                  «        | j%                  |«       | j                  | j'                  dd«      «       | j)                  |j*                  |«       | j-                  d«       | j-                  | j'                  dd«      «       | j-                  d«       | j#                  «        | j                  d|j                  «       | j)                  |j                  |«       | j-                  d«       | j#                  «        | j                  d«       | j)                  |j*                  |«       | j/                  d«       | j1                  |d¬«       |j                  rV| j                  | j!                  d«      › d�|«       | j#                  «        | j3                  |«       |j2                  |_        |r| j                  |› d�«       |j                  t        j4                  «      D ]>  }	|	j6                  dk(  sŒ|	j8                  dk(  sŒ#| j;                  d|	j<                  «       Œ@ |j                  r$| j                  «       }
| j                  |
› d�«       | j                  | j'                  dd«      |«       | j)                  |j*                  |«       |r(| j-                  d|› d| j'                  d«      › d�«       n| j-                  d«       |j                  r| j-                  › d�«       |j                  r| j-                  d«       nn| j>                  j@                  r|s| j-                  d «       | j)                  |jB                  |«       | j>                  j@                  r|s| j-                  d!«       |j                  r| j-                  d!«       |j                  r| j-                  d"«       n| j-                  |rd#nd«       | j#                  «        | j%                  |«       | j                  d$«       | jE                  |jF                  |«       |j                  r| j                  
› d%�«       | j/                  «        | j1                  ||j                  xr |j                   ¬«       |j                  rs| j                  d
› d�«       | j#                  «        | j%                  |«       | jE                  |j                  |«       | j1                  |«       | j/                  «        |j                  râ| jI                  |«       | j/                  «        | jK                  ||«       | j-                  | j'                  d&«      › d'�«       | j>                  j@                  r| j-                  d «       | j)                  |jB                  |«       | j>                  j@                  r| j-                  d!«       | j-                  d(«       | jM                  |«       | jN                  r3| jN                  d)   jQ                  |j                  jR                  «       y y )*NTÚloop)rQ  )Úonly)rã  c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr.   )r¼  )rd   r™   s     r4   rf   z*CodeGenerator.visit_For.<locals>.<genexpr>ª  s   è ø€ ÐHÑ-G E�5—<•<Ñ-Gùr  rQ  )Ú
for_branchÚelseÚtestz(fiter):z
async for zfor rg  zauto_aiter(fiter)ÚfiterÚ:rK  rý   é   rM  z%(reciter, loop_render_func, depth=0):r2  Ústorez8Can't assign to special loop variable in for-loop targetz = 1r>   ÚAsynczLoopContext(r?   Úreciterzauto_aiter(rA   z&, undefined, loop_render_func, depth):z, undefined):z_loop_vars = {}z = 0rÐ  zloop(z, loop)r*  )*rª   rœ   Ú	recursiver€   Úiter_child_nodesr  r¦  r   rÅ   r–   rU  rN  Úelse_rè  rì   rî   rE  rô   r;  rC  r2   r8  rE   rõ   r>  r˜   rÏ   rÊ   rR   ré   rç   rB   rB  r‘  r  rQ  r÷   rÿ   r  râ   Údifference_updateÚstores)r'   r)   r*   rœ   Ú
test_frameÚ
else_frameÚextended_loopÚloop_refÚloop_filter_funcrR   Úiteration_indicators              r4   Ú	visit_ForzCodeGenerator.visit_For�  sÓ  € Ø—[‘[“]ˆ
Ø $ˆ
ÔØ—[‘[“]ˆ
Ø—[‘[“]ˆ
ð �N‰Nò IØÜ˜t×4Ñ4¸)Ð4ÓDÀiÓPðQòIô ÑH¨T¯]©]¼5¿;¹;Ô-GÓHÓHð	 	ð ˆÙØ!×)Ñ)×;Ñ;¸FÓCˆHà×Ñ×'Ñ'¨¸Ð'Ô@Ø�:Š:Ø×Ñ×+Ñ+¨D¸VÐ+ÔDà�9‹9Ø#×8Ñ8Ó:ÐØ×Ñ×+Ñ+¨D¸VÐ+ÔDØ�N‰N˜dŸi™iÐ(8Ó9Ð:¸(ÐCÀTÇYÁYÔOØ�K‰KŒMØ×Ñ˜ZÔ(Ø�N‰N˜4×,Ñ,¨\¸6ÓBÔCØ�J‰J�t—{‘{ JÔ/Ø�J‰J�vÔØ�J‰J�t×(Ñ(Ð)<¸gÓFÔGØ�J‰J�sŒOØ�K‰KŒMØ�N‰N˜5 $§)¡)Ô,Ø�J‰J�t—y‘y *Ô-Ø�J‰J�sŒOØ�K‰KŒMØ�N‰N˜8Ô$Ø�J‰J�t—{‘{ JÔ/Ø�L‰L˜ŒOØ×Ñ˜Z¸4ÐÔ@ð
 �>Š>Ø�N‰NØ—9‘9˜VÓ$Ð%Ð%JÐKÈTôð �K‰KŒMØ�K‰K˜
Ô#ð !+× 1Ñ 1ˆJÔñ Ø�N‰N˜h˜Z zÐ2Ô3à—M‘M¤%§*¡*Ö-ˆDØ�x‰x˜7Ó" t§y¡y°FÓ':Ø—	‘	ØNØ—K‘Kõð .ð �:Š:Ø"&×";Ñ";Ó"=ÐØ�N‰NÐ1Ð2°$Ð7Ô8à�‰�t×(Ñ(¨°vÓ>ÀÔEØ�
‰
�4—;‘; 
Ô+ÙØ�J‰J˜˜H˜: T¨$×*;Ñ*;¸GÓ*DÐ)EÀ\ÐRÕSà�J‰J�vÔà�9Š9Ø�J‰JÐ*Ð+¨1Ð-Ô.Ø�>Š>Ø�J‰J�yÕ!à×Ñ×(Ò(±Ø—
‘
˜=Ô)Ø�J‰J�t—y‘y %Ô(Ø×Ñ×(Ò(±Ø—
‘
˜3”Ø�9Š9Ø�J‰J�sŒOà�>Š>Ø�J‰JÐ?Õ@à�J‰J©-‘¸SÔAà�‰ŒØ×Ñ˜Ô$à�‰Ð(Ô)Ø�‰˜Ÿ	™	 :Ô.Ø�:Š:Ø�N‰NÐ1Ð2°$Ð7Ô8Ø�‰ŒØ×ÑØ¨$¯.©.Ò*KÀÇÁ¸^ð 	ô 	
ð �:Š:Ø�N‰N˜SÐ!4Ð 5°QÐ7Ô8Ø�K‰KŒMØ×Ñ˜ZÔ(Ø�O‰O˜DŸJ™J¨
Ô3Ø×Ñ˜ZÔ(Ø�L‰LŒNð �>Š>Ø×'Ñ'¨
Ô3Ø�L‰LŒNØ×Ñ˜U DÔ)Ø�J‰J˜$×+Ñ+¨HÓ5Ð6°eÐ<Ô=Ø×Ñ×(Ò(Ø—
‘
˜=Ô)Ø�J‰J�t—y‘y %Ô(Ø×Ñ×(Ò(Ø—
‘
˜3”Ø�J‰J�yÔ!Ø�N‰N˜5Ô!ð ×ÒØ×Ñ˜rÑ"×4Ñ4°Z×5GÑ5G×5NÑ5NÕOð r6   c                 óæ  — |j                  «       }| j                  d|«       | j                  |j                  |«       | j	                  d«       | j                  «        | j                  |j                  |«       | j                  «        |j                  D ]}  }| j                  d|«       | j                  |j                  |«       | j	                  d«       | j                  «        | j                  |j                  |«       | j                  «        Œ |j                  rN| j                  d«       | j                  «        | j                  |j                  |«       | j                  «        y y )NrK  rê  zelif ró   )r¬   rî   r2   rè  rE   rô   r  rQ  rõ   Úelif_rñ  )r'   r)   r*   Úif_framerü  s        r4   Úvisit_IfzCodeGenerator.visit_If(  s÷   € Ø—:‘:“<ˆØ�‰�u˜dÔ#Ø�
‰
�4—9‘9˜hÔ'Ø�
‰
�3ŒØ�‰ŒØ�‰˜Ÿ	™	 8Ô,Ø�‰ŒØ—Z”ZˆEØ�N‰N˜7 EÔ*Ø�J‰J�u—z‘z 8Ô,Ø�J‰J�sŒOØ�K‰KŒMØ�O‰O˜EŸJ™J¨Ô1Ø�L‰L�Nð  ð �:Š:Ø�N‰N˜7Ô#Ø�K‰KŒMØ�O‰O˜DŸJ™J¨Ô1Ø�L‰L�Nð	 r6   c                 óª  — | j                  ||«      \  }}| j                  «        |j                  rY|j                  j	                  d«      s| j                  d|j                  ›d�«       | j                  d|j                  ›d�«       | j                  |j                  j                  |j                  «      › d�«       | j                  ||«       y )NrŠ  r�  rA   rŒ  r‹  r1  )
r^  r  rš   rR   rØ  rE   rî   r–   rP  re  )r'   r)   r*   Úmacro_framerY  s        r4   Úvisit_MacrozCodeGenerator.visit_Macro=  s¡   € Ø!%§¡°°uÓ!=Ñˆ�YØ�‰ŒØ�>Š>Ø—9‘9×'Ñ'¨Ô,Ø—
‘
Ð7¸¿	¹	°}ÀAÐFÔGØ�N‰N˜]¨4¯9©9¨-°tÐ<Ô=Ø�
‰
�e—m‘m×'Ñ'¨¯	©	Ó2Ð3°3Ð7Ô8Ø�‰�y +Õ.r6   c                 óö   — | j                  ||«      \  }}| j                  d«       | j                  ||«       | j                  ||«       | j	                  |j
                  |d¬«       | j                  |«       y )Nz	caller = T)Úforward_caller)r^  rî   re  rÿ   Ú
visit_CallÚcallr  )r'   r)   r*   Ú
call_framerY  s        r4   Úvisit_CallBlockzCodeGenerator.visit_CallBlockG  sc   € Ø $§¡°°eÓ <Ñˆ
�IØ�‰�{Ô#Ø�‰�y *Ô-Ø×Ñ˜ Ô%Ø�‰˜Ÿ	™	 5¸ˆÔ>Ø�‰�uÕr6   c                 óv  — |j                  «       }|j                  j                  |«       | j                  |«       | j	                  |«       | j                  |j                  |«       | j                  ||«       | j                  |j                  |«       | j                  |«       | j                  |«       y r.   )rª   r–   rN  r;  r˜   r  rQ  rÿ   r¼   Úfilterr  r>  )r'   r)   r*   Úfilter_frames       r4   Úvisit_FilterBlockzCodeGenerator.visit_FilterBlockO  s‹   € Ø—{‘{“}ˆØ×Ñ×)Ñ)¨$Ô/Ø×Ñ˜Ô&Ø�‰�LÔ!Ø�‰˜Ÿ	™	 <Ô0Ø×Ñ˜ Ô%Ø×Ñ˜$Ÿ+™+ |Ô4Ø�‰�uÔØ×Ñ˜Õ&r6   c                 ó°  — |j                  «       }|j                  j                  |«       | j                  |«       t	        |j
                  |j                  «      D ]J  \  }}| j                  «        | j                  ||«       | j                  d«       | j                  ||«       ŒL | j                  |j                  |«       | j                  |«       y )Nr1  )rª   r–   rN  r;  ÚzipÚtargetsÚvaluesr  r2   rE   r  rQ  r>  )r'   r)   r*   Ú
with_framer8  Úexprs         r4   Ú
visit_WithzCodeGenerator.visit_WithZ  sŸ   € Ø—[‘[“]ˆ
Ø×Ñ×'Ñ'¨Ô-Ø×Ñ˜Ô$Ü §¡¨d¯k©kÖ:‰LˆF�DØ�L‰LŒNØ�J‰J�v˜zÔ*Ø�J‰J�uÔØ�J‰J�t˜UÕ#ð	 ;ð
 	�‰˜Ÿ	™	 :Ô.Ø×Ñ˜Õ$r6   c                 ó^   — | j                  |«       | j                  |j                  |«       y r.   )r  r2   r)   rÀ  s      r4   Úvisit_ExprStmtzCodeGenerator.visit_ExprStmtf  s    € Ø�‰�TÔØ�
‰
�4—9‘9˜eÕ$r6   c                   ót   — e Zd ZU ej                  ej
                  def      ed<   ej                  e   ed<   y)úCodeGenerator._FinalizeInfo.ÚconstÚsrcN)rŠ   r‹   rŒ   r8   r¯   ÚCallablerr   Ú__annotations__r�   r6   r4   Ú_FinalizeInfor  j  s,   … Ø�z‰z˜!Ÿ*™* S¨# XÑ.Ñ/Ó/Ø�Z‰Z˜‰_Ôr6   r  r_   c                 ó   — t        | «      S )z¼The default finalize function if the environment isn't
        configured with one. Or, if the environment has one, this is
        called on that function's output for constants.
        )rr   rz   s    r4   Ú_default_finalizezCodeGenerator._default_finalizen  s   € ô �5‹zÐr6   Ú	_finalizec                 ób  ‡ ‡‡— ‰ j                   �‰ j                   S ‰ j                  x}Šd}‰ j                  j                  rÌd}‰ j                  j                  Št        j
                  dt        j                  dt        j                  dij                  t	        j                  ‰«      «      }d}|€(dt        j                  dt        j                  fˆˆfd„}n4|› |› d	�}|dk(  r(dt        j                  dt        j                  fˆˆˆ fd
„}‰ j                  ||«      ‰ _         ‰ j                   S )a‰  Build the finalize function to be used on constants and at
        runtime. Cached so it's only created once for all output nodes.

        Returns a ``namedtuple`` with the following attributes:

        ``const``
            A function to finalize constant data at compile time.

        ``src``
            Source code to output around nodes to be evaluated at
            runtime.
        Nzenvironment.finalize(rÔ   úcontext.eval_ctxrB   r_   r%   c                 ó    •—  ‰ ‰| «      «      S r.   r�   )r_   r]  Úenv_finalizes    €€r4   Úfinalizez.CodeGenerator._make_finalize.<locals>.finalizeš  s   ø€ Ù"¡<°Ó#6Ó7Ð7r6   r>   c                 ó6   •—  ‰ ‰‰j                   | «      «      S r.   )rB   )r_   r]  r"  r'   s    €€€r4   r#  z.CodeGenerator._make_finalize.<locals>.finalize¢  s   ø€ Ù&¡|°D×4DÑ4DÀeÓ'LÓMÐMr6   )r  r  rB   r#  r   rÔ   Úeval_contextÚgetÚfrom_objr8   r9   r  )r'   r#  r  Úpass_argr]  r"  s   `   @@r4   Ú_make_finalizezCodeGenerator._make_finalizex  s  ú€ ð �>‰>Ð%Ø—>‘>Ð!ð "×3Ñ3Ð3ˆ�7Øˆà×Ñ×$Ò$Ø)ˆCØ×+Ñ+×4Ñ4ˆLä× Ñ  )Ü×%Ñ%Ð'9Ü×$Ñ$ mð÷ ‰cÜ×!Ñ! ,Ó/óð	 ð ˆHàÐð8¤A§E¡Eð 8¬a¯e©e÷ 8ð ˜˜h˜Z rÐ*�à˜}Ò,ðN¬¯©ð N´!·%±%÷ Nð ×+Ñ+¨H°cÓ:ˆŒØ�~‰~Ðr6   Úgroupc                 ó*   — t        t        |«      «      S )z™Given a group of constant values converted from ``Output``
        child nodes, produce a string to write to the template module
        source.
        )ra  r   )r'   r*  s     r4   Ú_output_const_reprz CodeGenerator._output_const_repr¨  s   € ô
 ”F˜5“MÓ"Ð"r6   r#  c                 óæ   — |j                  |j                  «      }|j                  j                  rt        |«      }t	        |t
        j                  «      rt        |«      S |j                  |«      S )aC  Try to optimize a child of an ``Output`` node by trying to
        convert it to constant, finalized data at compile time.

        If :exc:`Impossible` is raised, the node is not constant and
        will be evaluated at runtime. Any other exception will also be
        evaluated at runtime for easier debugging.
        )	Úas_constr0   rö   r   rX   r   ÚTemplateDatarr   r  )r'   r)   r*   r#  r  s        r4   Ú_output_child_to_constz$CodeGenerator._output_child_to_const¯  sW   € ð —‘˜eŸn™nÓ-ˆà�>‰>×$Ò$Ü˜5“MˆEô �dœE×.Ñ.Ô/Ü�u“:Ðà�~‰~˜eÓ$Ð$r6   c                 ó  — |j                   j                  r| j                  d«       n9|j                   j                  r| j                  d«       n| j                  d«       |j                  �| j                  |j                  «       yy)zXOutput extra source code before visiting a child of an
        ``Output`` node.
        z1(escape if context.eval_ctx.autoescape else str)(zescape(zstr(N)r0   r1   rE   rö   r  ©r'   r)   r*   r#  s       r4   Ú_output_child_prezCodeGenerator._output_child_preÄ  sb   € ð �>‰>×"Ò"Ø�J‰JÐJÕKØ�^‰^×&Ò&Ø�J‰J�yÕ!à�J‰J�vÔà�<‰<Ð#Ø�J‰J�x—|‘|Õ$ð $r6   c                 ób   — | j                  d«       |j                  �| j                  d«       yy)zWOutput extra source code after visiting a child of an
        ``Output`` node.
        rA   N)rE   r  r2  s       r4   Ú_output_child_postz CodeGenerator._output_child_postÔ  s)   € ð 	�
‰
�3Œà�<‰<Ð#Ø�J‰J�s�Oð $r6   c                 ó~  — |j                   r.| j                  ry | j                  d«       | j                  «        | j	                  «       }g }|j
                  D ]Œ  }	 |j                  s.t        |t
        j                  «      st        j                  «       ‚| j                  |||«      }|r(t        |d   t        «      r|d   j                  |«       Œ{|j                  |g«       ŒŽ |j                  �[t        |«      dk(  r| j                  |j                  › d�«       n| j                  |j                  › d�«       | j                  «        |D ]ß  }t        |t        «      rG| j!                  |«      }|j                  €| j                  d|z   «       ŒE| j                  |dz   «       ŒZ|j                  €| j                  d|«       n| j#                  |«       | j%                  |||«       | j'                  ||«       | j)                  |||«       |j                  €ŒÏ| j+                  d«       Œá |j                  �1| j-                  «        | j                  t        |«      dk(  rdnd	«       |j                   r| j-                  «        y y # t
        j                  t        f$ r |j                  |«       Y �Œbw xY w)
Nr¶  r*  r
   rþ   z	.extend((rý   rb  rA   rò   )r—   rÙ   rî   rô   r)  r   r  rX   r/  Ú
Impossibler0  Ú	Exceptionr  rt   r˜   rS  r,  r  r3  r2   r5  rE   rõ   )	r'   r)   r*   r#  rQ  Úchildr  ÚitemÚvals	            r4   Úvisit_OutputzCodeGenerator.visit_Outputß  s>  € à×%Ò%à×%Ò%Øà�N‰NÐ8Ô9Ø�K‰KŒMà×&Ñ&Ó(ˆØ;=ˆð
 —Z”ZˆEðð —N’Nô " %¬×);Ñ);Ô<ä×*Ñ*Ó,Ð,à×3Ñ3°E¸5À(ÓK�ñ œ
 4¨¡8¬TÔ2Ø�R‘—‘ Õ&à—‘˜U˜GÕ$ð/  ð2 �<‰<Ð#Ü�4‹y˜AŠ~Ø—‘ %§,¡, ¨xÐ8Õ9à—‘ %§,¡, ¨yÐ9Ô:à�K‰KŒMãˆDÜ˜$¤Ô%à×-Ñ-¨dÓ3�à—<‘<Ð'Ø—N‘N 8¨c¡>Õ2à—N‘N 3¨¡9Õ-à—<‘<Ð'Ø—N‘N 8¨TÕ2à—L‘L Ô&ð ×&Ñ& t¨U°HÔ=Ø—
‘
˜4 Ô'Ø×'Ñ'¨¨e°XÔ>à—<‘<Ñ+Ø—J‘J˜s•Oð+ ð. �<‰<Ð#Ø�L‰LŒNØ�N‰N¤# d£)¨q¢.™3°dÔ;à×%Ò%Ø�L‰L�Nð &øô_ ×$Ñ$¤iÐ0ò ð —‘˜EÔ"Úðús   ÁAJÊ*J<Ê;J<c                 ó€  — | j                  «        t        «       }|j                  t        j                  «      D ]—  }|j
                  |v rŒ|j                  |j
                  «       |j                  j                  |j
                  «      }| j                  d|› d�«       | j                  «        | j                  d«       | j                  «        Œ™ | j                  |«       | j                  |j                  |«       | j                  d«       | j                  |j                   |«       | j#                  |«       y )Nzif not isinstance(z, Namespace):zMraise TemplateRuntimeError("cannot assign attribute on non-namespace object")r1  )rˆ  ru   r¦  r   ÚNSRefrR   r»   r–   rP  rî   rô   rõ   r  r2   r8  rE   r)   r–  )r'   r)   r*   Ú	seen_refsÚnsrefrP  s         r4   Úvisit_AssignzCodeGenerator.visit_Assign.  sï   € Ø×!Ñ!Ô#ô !$£ˆ	à—]‘]¤5§;¡;Ö/ˆEØ�z‰z˜YÑ&ð à�M‰M˜%Ÿ*™*Ô%Ø—-‘-×#Ñ# E§J¡JÓ/ˆCØ�N‰NÐ/°¨u°MÐBÔCØ�K‰KŒMØ�N‰NðFôð �L‰L�Nð 0ð  	�‰�TÔØ�
‰
�4—;‘; Ô&Ø�
‰
�5ÔØ�
‰
�4—9‘9˜eÔ$Ø× Ñ  Õ'r6   c                 óv  — | j                  «        |j                  «       }d|_        |j                  j	                  |«       | j                  |«       | j                  |«       | j                  |j                  |«       | j                  |«       | j                  |j                  |«       | j                  d«       |j                  �| j                  |j                  |«       n| j                  d|j                  › d�«       | j                  d«       | j                  |«       | j!                  |«       y )NFz9 = (Markup if context.eval_ctx.autoescape else identity)(úconcat(rA   )rˆ  rª   r—   r–   rN  r;  r˜   r  rQ  r  r2   r8  rE   r	  r¼   r–  r>  )r'   r)   r*   r�   s       r4   Úvisit_AssignBlockzCodeGenerator.visit_AssignBlockM  sï   € Ø×!Ñ!Ô#Ø—k‘k“mˆð ,1ˆÔ(Ø×Ñ×(Ñ(¨Ô.Ø×Ñ˜Ô%Ø�‰�KÔ Ø�‰˜Ÿ	™	 ;Ô/Ø�‰�TÔØ�
‰
�4—;‘; Ô&Ø�
‰
ÐNÔOØ�;‰;Ð"Ø×Ñ˜dŸk™k¨;Õ7à�J‰J˜ ×!3Ñ!3Ð 4°AÐ6Ô7Ø�
‰
�3ŒØ× Ñ  Ô'Ø×Ñ˜Õ%r6   c           	      ó  — |j                   dk(  rX|j                  s|j                  s|j                  r4| j                  r(| j                  d   j                  |j                  «       |j                  j                  |j                  «      }|j                   dk(  r`|j                  j                  |«      }|�|d   t        k(  r| j                  |«      r&| j                  d|j                  ›d|› d|› d�«       y | j                  |«       y )	Nrì  r*  rÉ   r   z(undefined(name=z) if z is missing else rA   )rÊ   rš   rœ   r�   râ   r»   rR   r–   rP  Ú	find_loadr   r†  rE   )r'   r)   r*   rP  rÉ   s        r4   rÌ   zCodeGenerator.visit_Namee  sà   € Ø�8‰8�wÒØ�NŠN˜e×.Ò.°%×2CÒ2Cà×!Ò!Ø×"Ñ" 2Ñ&×*Ñ*¨4¯9©9Ô5Ø�m‰m×Ñ §	¡	Ó*ˆð
 �8‰8�vÒØ—=‘=×*Ñ*¨3Ó/ˆDàÐ Ø˜‘GÔ1Ò1Ø×4Ñ4°SÔ9à—
‘
Ø& t§y¡y m°5¸¸Ð=NÈsÈeÐSTÐUôð à�
‰
�3�r6   c                 ó�   — |j                   j                  |j                  «      }| j                  |› d|j                  ›d�«       y )Nr'  r(  )r–   rP  rR   rî   Úattr)r'   r)   r*   rP  s       r4   Úvisit_NSRefzCodeGenerator.visit_NSRef~  s9   € ð
 �m‰m×Ñ §	¡	Ó*ˆØ�‰˜#˜˜a §	¡	˜}¨AÐ.Õ/r6   c                 óÄ   — |j                  |j                  «      }t        |t        «      r| j	                  t        |«      «       y | j	                  t        |«      «       y r.   )r.  r0   rX   ro   rE   rr   ra  )r'   r)   r*   r;  s       r4   Úvisit_ConstzCodeGenerator.visit_Const†  s>   € Ø�m‰m˜EŸN™NÓ+ˆÜ�cœ5Ô!Ø�J‰J”s˜3“xÕ à�J‰J”t˜C“yÕ!r6   c                 óÜ   — 	 | j                  t        |j                  |j                  «      «      «       y # t        j
                  $ r" | j                  d|j                  ›d�«       Y y w xY w©Nz6(Markup if context.eval_ctx.autoescape else identity)(rA   )rE   ra  r.  r0   r   r7  ÚdatarÀ  s      r4   Úvisit_TemplateDataz CodeGenerator.visit_TemplateData�  sW   € ð	Ø�J‰J”t˜DŸM™M¨%¯.©.Ó9Ó:Õ;øÜ×Ñò 	Ø�J‰JØHÈÏÉÈÐUVÐWöð	ús   ‚36 ¶2A+Á*A+c                 óè   — | j                  d«       d}t        |j                  «      D ]*  \  }}|r| j                  d«       | j                  ||«       Œ, | j                  |dk(  rd«       y d«       y )Nr?   r*  r>   r   z,)rA   ©rE   rO  ry   r2   ©r'   r)   r*   r\  r:  s        r4   Úvisit_TuplezCodeGenerator.visit_Tuple•  s_   € Ø�
‰
�3ŒØˆÜ" 4§:¡:Ö.‰IˆC�ÙØ—
‘
˜4Ô Ø�J‰J�t˜UÕ#ð /ð 	�
‰
˜3 !š8�4Õ-¨Õ-r6   c                 óÌ   — | j                  d«       t        |j                  «      D ]*  \  }}|r| j                  d«       | j                  ||«       Œ, | j                  d«       y )Nr'  r>   r(  rQ  rR  s        r4   Ú
visit_ListzCodeGenerator.visit_Listž  sN   € Ø�
‰
�3ŒÜ" 4§:¡:Ö.‰IˆC�ÙØ—
‘
˜4Ô Ø�J‰J�t˜UÕ#ð /ð 	�
‰
�3�r6   c                 ó:  — | j                  d«       t        |j                  «      D ]a  \  }}|r| j                  d«       | j                  |j                  |«       | j                  d«       | j                  |j
                  |«       Œc | j                  d«       y )Nrm  r>   r  r  )rE   rO  ry   r2   r  r_   rR  s        r4   Ú
visit_DictzCodeGenerator.visit_Dict¦  sp   € Ø�
‰
�3ŒÜ" 4§:¡:Ö.‰IˆC�ÙØ—
‘
˜4Ô Ø�J‰J�t—x‘x Ô'Ø�J‰J�tÔØ�J‰J�t—z‘z 5Õ)ð /ð 	�
‰
�3�r6   Ú+Ú-Ú*Ú/z//z**Ú%ÚandÚorznot c                 ó  — |j                   j                  rd}n|j                   j                  rd}nd}| j                  |› d�«       |j                  D ]%  }| j                  ||«       | j                  d«       Œ' | j                  d«       y )Nz8(markup_join if context.eval_ctx.volatile else str_join)Úmarkup_joinÚstr_joinz((r>   rò   )r0   r1   rö   rE   r   r2   )r'   r)   r*   rÍ  r"  s        r4   Úvisit_ConcatzCodeGenerator.visit_Concat½  st   € à�>‰>×"Ò"ØR‰IØ�^‰^×&Ò&Ø%‰Ià"ˆIØ�
‰
�i�[ Ð#Ô$Ø—:”:ˆCØ�J‰J�s˜EÔ"Ø�J‰J�tÕð ð 	�
‰
�4Õr6   c                 óÆ   — | j                  d«       | j                  |j                  |«       |j                  D ]  }| j                  ||«       Œ | j                  d«       y )Nr?   rA   )rE   r2   r  ÚopsrH   s       r4   Úvisit_ComparezCodeGenerator.visit_CompareË  sF   € à�
‰
�3ŒØ�
‰
�4—9‘9˜eÔ$Ø—(”(ˆBØ�J‰J�r˜5Õ!ð à�
‰
�3�r6   c                 óˆ   — | j                  dt        |j                     › d�«       | j                  |j                  |«       y )Nr@   )rE   Ú	operatorsr;   r2   r  rÀ  s      r4   Úvisit_OperandzCodeGenerator.visit_OperandÓ  s3   € Ø�
‰
�Q”y §¡Ñ)Ð*¨!Ð,Ô-Ø�
‰
�4—9‘9˜eÕ$r6   c                 ó:  — | j                   j                  r| j                  d«       | j                  d«       | j                  |j                  |«       | j                  d|j
                  ›d�«       | j                   j                  r| j                  d«       y y )Nú(await auto_await(zenvironment.getattr(r>   rA   rò   )rB   rB  rE   r2   r)   rH  rÀ  s      r4   Úvisit_GetattrzCodeGenerator.visit_Getattr×  sv   € à×Ñ×$Ò$Ø�J‰JÐ+Ô,à�
‰
Ð)Ô*Ø�
‰
�4—9‘9˜eÔ$Ø�
‰
�R˜Ÿ	™	�} AÐ&Ô'à×Ñ×$Ò$Ø�J‰J�tÕð %r6   c                 óv  — t        |j                  t        j                  «      r[| j	                  |j
                  |«       | j                  d«       | j	                  |j                  |«       | j                  d«       y | j                  j                  r| j                  d«       | j                  d«       | j	                  |j
                  |«       | j                  d«       | j	                  |j                  |«       | j                  d«       | j                  j                  r| j                  d«       y y )Nr'  r(  rj  zenvironment.getitem(r>   rA   rò   )	rX   r"  r   ÚSlicer2   r)   rE   rB   rB  rÀ  s      r4   Úvisit_GetitemzCodeGenerator.visit_Getitemã  sÔ   € ô �d—h‘h¤§¡Ô,Ø�J‰J�t—y‘y %Ô(Ø�J‰J�sŒOØ�J‰J�t—x‘x Ô'Ø�J‰J�s�Oà×Ñ×(Ò(Ø—
‘
Ð/Ô0à�J‰JÐ-Ô.Ø�J‰J�t—y‘y %Ô(Ø�J‰J�tÔØ�J‰J�t—x‘x Ô'Ø�J‰J�sŒOà×Ñ×(Ò(Ø—
‘
˜4Õ ð )r6   c                 ó:  — |j                   �| j                  |j                   |«       | j                  d«       |j                  �| j                  |j                  |«       |j                  �.| j                  d«       | j                  |j                  |«       y y )Nrê  )Ústartr2   rE   Ústoprú   rÀ  s      r4   Úvisit_SlicezCodeGenerator.visit_Sliceø  sq   € Ø�:‰:Ð!Ø�J‰J�t—z‘z 5Ô)Ø�
‰
�3ŒØ�9‰9Ð Ø�J‰J�t—y‘y %Ô(Ø�9‰9Ð Ø�J‰J�sŒOØ�J‰J�t—y‘y %Õ(ð !r6   Ú	is_filterc              #   ó¼  K  — | j                   j                  r| j                  d«       |r[| j                  | j                  |j                     › d�«       | j                   j                  j                  |j                  «      }nZ| j                  | j                  |j                     › d�«       | j                   j                  j                  |j                  «      }|€?|j                  s3|rdnd}| j                  d|› d|j                  ›d�|j                  «       t        j                  dt        j                  d	t        j                   d
ij                  t        j                  |«      «      }|�| j                  |› d�«       d –— | j                  ||«       | j                  d«       | j                   j                  r| j                  d«       y y ­w)Nrj  r?   r	  rè  zNo r+  r›  rÔ   r   rB   r>   rA   rò   )rB   rB  rE   r¶   rR   r&  r·   rž   ré   rç   r   rÔ   r%  r'  r$  )r'   r)   r*   rs  rE  Ú	type_namer(  s          r4   Ú_filter_test_commonz!CodeGenerator._filter_test_common  s†  è ø€ ð ×Ñ×$Ò$Ø�J‰JÐ+Ô,áØ�J‰J˜$Ÿ,™, t§y¡yÑ1Ð2°!Ð4Ô5Ø×#Ñ#×+Ñ+×/Ñ/°·	±	Ó:‰Dà�J‰J˜$Ÿ*™* T§Y¡YÑ/Ð0°Ð2Ô3Ø×#Ñ#×)Ñ)×-Ñ-¨d¯i©iÓ8ˆDð
 ˆ< × 0Ò 0Ù$-™°6ˆIØ�I‰I˜˜I˜; g¨d¯i©i¨]¸!Ð<¸d¿k¹kÔJô ×Ñ˜iÜ×!Ñ!Ð#5Ü× Ñ  -ð
÷ ‰#Ü×Ñ˜dÓ#ó
ð	 	ð ÐØ�J‰J˜(˜ 2�Ô'ó 	à�‰�t˜UÔ#Ø�
‰
�3Œà×Ñ×$Ò$Ø�J‰J�tÕð %ùs   ‚GGc                 óÖ  — | j                  ||d«      5  |j                  �| j                  |j                  |«       n˜|j                  j                  r-| j                  d|j                  › d|j                  › d�«       nU|j                  j                  r | j                  d|j                  › d�«       n| j                  d|j                  › d�«       d d d «       y # 1 sw Y   y xY w)NTz(Markup(concat(z.)) if context.eval_ctx.autoescape else concat(rò   zMarkup(concat(rC  rA   )rv  r)   r2   r0   r1   rE   r˜   rö   rÀ  s      r4   r¼   zCodeGenerator.visit_Filter,  s»   € à×%Ñ% d¨E°4Õ8ð �y‰yÐ$Ø—
‘
˜4Ÿ9™9 eÕ,Ø—‘×(Ò(Ø—
‘
Ø% e§l¡l ^ð 4CØCHÇ<Á<À.ÐPRðTõð —‘×*Ò*Ø—
‘
˜^¨E¯L©L¨>¸Ð<Õ=à—
‘
˜W U§\¡\ N°!Ð4Ô5÷ 9×8Ñ8ús   ”CCÃC(c                 óŒ   — | j                  ||d«      5  | j                  |j                  |«       d d d «       y # 1 sw Y   y xY wr„   )rv  r2   r)   rÀ  s      r4   r¾   zCodeGenerator.visit_Test=  s2   € à×%Ñ% d¨E°5Õ9Ø�J‰J�t—y‘y %Ô(÷ :×9Ñ9ús	   ”:ºAc                 ó@  ‡ ‡‡— ‰j                  «       Šdˆˆˆ fd„}‰ j                  d«       ‰ j                  ‰j                  ‰«       ‰ j                  d«       ‰ j                  ‰j                  ‰«       ‰ j                  d«        |«        ‰ j                  d«       y )Nc                  ó    •— ‰j                   �‰j                  ‰j                   ‰ «       y ‰j                  d‰j                  ‰«      › d�«       y )Nz1cond_expr_undefined("the inline if-expression on z6 evaluated to false and no else section was defined."))Úexpr2r2   rE   rh  )r*   r)   r'   s   €€€r4   Úwrite_expr2z1CodeGenerator.visit_CondExpr.<locals>.write_expr2F  sL   ø€ Ø�z‰zÐ%Ø—
‘
˜4Ÿ:™: uÔ-Øà�J‰JðØ—M‘M $Ó'Ð(ð )*ð+õr6   r?   z if z else rA   rÂ   )r¬   rE   r2   Úexpr1rè  )r'   r)   r*   r|  s   ``` r4   Úvisit_CondExprzCodeGenerator.visit_CondExprB  sl   ú€ à—
‘
“ˆ÷		ð 	�
‰
�3ŒØ�
‰
�4—:‘:˜uÔ%Ø�
‰
�6ÔØ�
‰
�4—9‘9˜eÔ$Ø�
‰
�8ÔÙŒØ�
‰
�3�r6   r  c                 ó8  — | j                   j                  r| j                  d«       | j                   j                  r| j                  d«       n| j                  d«       | j	                  |j
                  |«       |rddind }|j                  rddini }|j                  rddini }|r |j                  |fi |¤Ž n|s|rt        |fi |¤Ž}| j                  |||«       | j                  d«       | j                   j                  r| j                  d«       y y )	Nrj  zenvironment.call(context, zcontext.call(rG  Ú
_loop_varsÚ_block_varsrA   rò   )rB   rB  rE   rC   r2   r)   rœ   r�   r¤   rx   r$  )r'   r)   r*   r  r  Úloop_kwargsÚblock_kwargss          r4   r  zCodeGenerator.visit_CallY  sø   € ð ×Ñ×$Ò$Ø�J‰JÐ+Ô,Ø×Ñ×%Ò%Ø�J‰JÐ3Õ4à�J‰J�Ô'Ø�
‰
�4—9‘9˜eÔ$Ù/=˜ (Ñ+À4ˆØ6;×6FÒ6F�| \Ñ2ÈBˆØ9>×9JÒ9J˜ }Ñ5ÐPRˆÙØˆL×Ñ Ñ<¨|Ó<Ù™LÜ Ñ<¨|Ñ<ˆLØ�‰�t˜U LÔ1Ø�
‰
�3ŒØ×Ñ×$Ò$Ø�J‰J�tÕð %r6   c                 óx   — | j                  |j                  dz   «       | j                  |j                  |«       y )Nr  )rE   r  r2   r_   rÀ  s      r4   Úvisit_KeywordzCodeGenerator.visit_Keywordp  s(   € Ø�
‰
�4—8‘8˜c‘>Ô"Ø�
‰
�4—:‘:˜uÕ%r6   c                 ó€   — | j                  d«       | j                  |j                  |«       | j                  d«       y )NzMarkup(rA   ©rE   r2   r  rÀ  s      r4   Úvisit_MarkSafezCodeGenerator.visit_MarkSafev  s+   € Ø�
‰
�9ÔØ�
‰
�4—9‘9˜eÔ$Ø�
‰
�3�r6   c                 ó€   — | j                  d«       | j                  |j                  |«       | j                  d«       y rM  r‡  rÀ  s      r4   Úvisit_MarkSafeIfAutoescapez(CodeGenerator.visit_MarkSafeIfAutoescape{  s.   € ð 	�
‰
ÐKÔLØ�
‰
�4—9‘9˜eÔ$Ø�
‰
�3�r6   c                 ó@   — | j                  d|j                  z   «       y )Nzenvironment.©rE   rR   rÀ  s      r4   Úvisit_EnvironmentAttributez(CodeGenerator.visit_EnvironmentAttribute‚  s   € ð 	�
‰
�> D§I¡IÑ-Õ.r6   c                 óZ   — | j                  d|j                  ›d|j                  › �«       y )Nzenvironment.extensions[z].)rE   Ú
identifierrR   rÀ  s      r4   Úvisit_ExtensionAttributez&CodeGenerator.visit_ExtensionAttribute‡  s'   € ð 	�
‰
Ð,¨T¯_©_Ð,?¸rÀ$Ç)Á)ÀÐMÕNr6   c                 óT   — | j                  | j                  |j                     «       y r.   )rE   rÖ   r¨  rÀ  s      r4   Úvisit_ImportedNamez CodeGenerator.visit_ImportedNameŒ  s   € Ø�
‰
�4×&Ñ& t§¡Ñ7Õ8r6   c                 ó:   — | j                  |j                  «       y r.   rŒ  rÀ  s      r4   Úvisit_InternalNamez CodeGenerator.visit_InternalName�  s   € Ø�
‰
�4—9‘9Õr6   c                 ó&   — | j                  d«       y )NrÔ   )rE   rÀ  s      r4   Úvisit_ContextReferencez$CodeGenerator.visit_ContextReference’  s   € ð 	�
‰
�9Õr6   c                 óD   — | j                  | j                  |«      «       y r.   )rE   r„  rÀ  s      r4   Úvisit_DerivedContextReferencez+CodeGenerator.visit_DerivedContextReference—  s   € ð 	�
‰
�4×&Ñ& uÓ-Õ.r6   c                 ó(   — | j                  d|«       y )NÚcontinuerr  rÀ  s      r4   Úvisit_ContinuezCodeGenerator.visit_Continueœ  s   € Ø�‰�z 4Õ(r6   c                 ó(   — | j                  d|«       y )NÚbreakrr  rÀ  s      r4   Úvisit_BreakzCodeGenerator.visit_BreakŸ  s   € Ø�‰�w Õ%r6   c                 óÖ   — |j                  «       }|j                  j                  |«       | j                  |«       | j	                  |j
                  |«       | j                  |«       y r.   )rª   r–   rN  r;  r  rQ  r>  )r'   r)   r*   Úscope_frames       r4   Úvisit_ScopezCodeGenerator.visit_Scope¢  sO   € Ø—k‘k“mˆØ×Ñ×(Ñ(¨Ô.Ø×Ñ˜Ô%Ø�‰˜Ÿ	™	 ;Ô/Ø×Ñ˜Õ%r6   c                 óæ  — | j                  «       }| j                  |› d| j                  |«      › �«       | j                  |› d�«       | j                  |j                  |«       | j                  |«       |j                  d¬«      }|j                  j                  |«       | j                  |«       | j                  |j                  |«       | j                  |«       | j                  «        y )Nr1  z.vars = T)r¨   )rì   rî   r„  r2   rÔ   r{  rª   r–   rN  r;  r  rQ  r>  r}  )r'   r)   r*   rÊ   r   s        r4   Úvisit_OverlayScopez CodeGenerator.visit_OverlayScope©  sÄ   € Ø×'Ñ'Ó)ˆØ�‰˜#˜˜c $×"5Ñ"5°eÓ"<Ð!=Ð>Ô?Ø�‰˜#˜˜hÐ'Ô(Ø�
‰
�4—<‘< Ô'Ø×#Ñ# CÔ(à—k‘k¨4�kÓ0ˆØ×Ñ×(Ñ(¨Ô.Ø×Ñ˜Ô%Ø�‰˜Ÿ	™	 ;Ô/Ø×Ñ˜Ô%Ø×"Ñ"Õ$r6   c                 ó~  — |j                   D ]„  }| j                  d|j                  › d�«       | j                  |j                  |«       	 |j                  j                  |j                  «      }t        |j                  |j                  |«       Œ† y # t        j                  $ r d|j                  _
        Y Œ®w xY w)Nzcontext.eval_ctx.r1  T)Úoptionsrî   r  r2   r_   r.  r0   Úsetattrr   r7  r1   )r'   r)   r*   Úkeywordr;  s        r4   Úvisit_EvalContextModifierz'CodeGenerator.visit_EvalContextModifier·  s”   € ð —|”|ˆGØ�N‰NÐ.¨w¯{©{¨m¸3Ð?Ô@Ø�J‰J�w—}‘} eÔ,ð:Ø—m‘m×,Ñ,¨U¯^©^Ó<�ô ˜Ÿ™¨¯©°SÕ9ñ $øô
 ×#Ñ#ò /Ø*.�—‘Ö'ð/ús   Á%BÂ$B<Â;B<c                 óJ  — | j                  «       }|j                  j                  «       }| j                  |› d�«       | j	                  ||«       |j
                  D ]  }| j                  ||«       Œ |j                  j                  |«       | j                  d|› d�«       y )Nz = context.eval_ctx.save()zcontext.eval_ctx.revert(rA   )rì   r0   Úsaverî   r¨  rQ  r2   Úrevert)r'   r)   r*   Úold_ctx_nameÚ	saved_ctxr9  s         r4   Úvisit_ScopedEvalContextModifierz-CodeGenerator.visit_ScopedEvalContextModifierÄ  sŒ   € ð ×0Ñ0Ó2ˆØ—N‘N×'Ñ'Ó)ˆ	Ø�‰˜,˜Ð'AÐBÔCØ×&Ñ& t¨UÔ3Ø—Y”YˆEØ�J‰J�u˜eÕ$ð à�‰×Ñ˜iÔ(Ø�‰Ð1°,°¸qÐAÕBr6   ©NFTr­   rÂ   )r
   r.   )Nr   )zasync rš  )¶rŠ   r‹   rŒ   r8   r¯   rr   ÚTextIOrm   r‰   ÚpropertyrV   rn   ré   rì   r+   r˜   r÷   rô   rõ   r   ÚNoderÿ   r  r  rÎ   r  rE   rî   r  r�   ÚCallrÃ   rÄ   ÚMappingr9   r$  r/  r;  r>  rC  rE  rŽ   r�   rÊ  r‚   r^  re  rh  rp  rs  rV  rX  rW  r{  r}  r€  r4  r„  r†  rˆ  r–  rY   r´  rÅ   rÀ   r¥  rÁ  ÚIncluderÎ  ÚImportÚ
FromImportrÕ  rÙ  rá  ÚForrú  ÚIfrþ  r  r  ÚFilterBlockr  ÚWithr  ÚExprStmtr  Ú
NamedTupler  Ústaticmethodr  r  r  r)  r,  r7   r0  r3  r5  ÚOutputr<  ÚAssignrA  ÚAssignBlockrD  rÏ   rÌ   r>  rI  rÉ  rK  r/  rO  rS  rË  rU  ÚDictrW  rL   Ú	visit_AddÚ	visit_SubÚ	visit_MulÚ	visit_DivÚvisit_FloorDivÚ	visit_PowÚ	visit_ModÚ	visit_AndÚvisit_OrrQ   Ú	visit_PosÚ	visit_NegÚ	visit_Notr:   ÚConcatrb  ÚComparere  ÚOperandrh  ÚGetattrrk  ÚGetitemrn  rm  rr  r   ÚIteratorrv  r¼   r¾   ÚCondExprr~  r  ÚKeywordr…  ÚMarkSaferˆ  ÚMarkSafeIfAutoescaperŠ  ÚEnvironmentAttributer�  ÚExtensionAttributer�  r§  r’  ÚInternalNamer”  ÚContextReferencer–  ÚDerivedContextReferencer˜  ÚContinuer›  ÚBreakrž  ÚScoper¡  ÚOverlayScoper£  ÚEvalContextModifierr¨  ÚScopedEvalContextModifierr®  r�   r6   r4   r(   r(   ,  s¿  … ð (,Ø ØñG4à"ðG4ð �j‰j˜‰oðG4ð —*‘*˜S‘/ð	G4ð
 —
‘
˜1Ÿ8™8Ñ$ðG4ð ðG4ð ðG4ð 
óG4ðR ð*˜4ò *ó ð*ð
L˜ð L Sð L¨]ó Lð, có ,ð
/˜Eð / dó /ð 5:ñ9Øð9Ø-1ð9à	ó9ó(ñ"˜Cð "¨ó "ñ< ð <¨a¯j©j¸¿¹Ñ.Dð <ÐPTó <ð˜uð ¨ó ð DHñØðØ"ðØ*+¯*©*°U·Z±ZÑ*@ðà	óð	 §
¡
¨5¯:©:Ñ 6ð 	¸uð 	Èó 	ð�sð ˜tó ð IJñØðØŸJ™J u§z¡zÑ2ðØBEðà	óñ*˜AŸJ™J u§z¡zÑ2ð *À#ð *Èdó *ð ;?ñ	7/à�g‰g�e—j‘j %§,¡,°·
±
Ð:Ñ;ð7/ð ð7/ð —j‘j §¡¨3°·±¨:Ñ!6Ñ7ð	7/ð
 
ó7/ðr, q§z¡z°%·*±*Ñ'=ð ,À$ó ,ð\> ð >¨4ó >ñ B ð B¸4ð BÈDó BñH¨ð HÀCð HÐQTó Hð2˜ð 2 ó 2ðQ Ø—G‘G˜EŸK™K¨¯©Ð8Ñ9ðQ ØBGðQ à	
�‰�˜�Ñ	!óQ ðf

 8ð 

°Eð 

¸dó 

ð˜UŸZ™Zð ¨Có ð!¨ð !°#ó !ó+ðI°ð I¸$ó Ió$ð6¨Cð 6°Dó 6ð5¨Sð 5°Tó 5ó,ð1 ó 1ð# #ó #ðU Eð U¨có Uð3¨cð 3°dó 3ó)ð)O¨ð )O°4ó )Oð\ @Dñx9Ø—N‘Nðx9Ø+,¯:©:°eÑ+<ðx9à	óx9ðt/ §¡ð /°Eð /¸dó /ðb(! %§-¡-ð (!¸ð (!À$ó (!ðT8 %§-¡-ð 8¸ð 8À$ó 8ðtUØ—G‘G˜EŸL™L¨%×*:Ñ*:Ð:Ñ;ðUØDIðUà	óUð	N §¡ð 	N°eð 	NÀó 	Nð5 U×%5Ñ%5ð 5¸eð 5Èó 5ðnIP˜eŸi™ið IP°ð IP¸$ó IPðV˜UŸX™Xð ¨eð ¸ó ð*/ §¡ð /°Eð /¸dó /ð E§O¡Oð ¸Eð Àdó ð	' e×&7Ñ&7ð 	'Àð 	'È$ó 	'ð
%˜uŸz™zð 
%°%ð 
%¸Dó 
%ð% 5§>¡>ð %¸%ð %ÀDó %ô˜Ÿ™ô ð ð §¡ð ¨1¯5©5ò ó ðð ,0€Iˆq�z‰z˜-Ñ(Ó/ð. ó .ð`#¨¯
©
°1·5±5Ñ(9ð #¸có #ð%Ø—J‘Jð%Ø',ð%Ø8Eð%à	ó%ð*%Ø—J‘Jð%Ø',ð%Ø8Eð%à	ó%ð 	Ø—J‘Jð	Ø',ð	Ø8Eð	à	ó	ðM §¡ð M°eð MÀó Mð^( §¡ð (°eð (Àó (ð>& e×&7Ñ&7ð &Àð &È$ó &ð0˜uŸz™zð °%ð ¸Dó ð20 §¡ð 0°Eð 0¸dó 0ð" §¡ð "°Eð "¸dó "ð u×'9Ñ'9ð À%ð ÈDó ð. §¡ð .°Eð .¸dó .ð˜uŸz™zð °%ð ¸Dó ð˜uŸz™zð °%ð ¸Dó ñ ˜CÓ €IÙ˜CÓ €IÙ˜CÓ €IÙ˜CÓ €IÙ  Ó&€NÙ˜DÓ!€IÙ˜CÓ €IÙ˜EÓ"€IÙ˜4Ó €HÙ˜3“€IÙ˜3“€IÙ˜6Ó"€Iàð §¢ð °eð Àò ó ðð ð %§-¢-ð ¸ð À$ò ó ðð% %§-¢-ð %¸ð %À$ó %ð ð	 %§-¢-ð 	¸ð 	À$ò 	ó ð	ð ð! %§-¢-ð !¸ð !À$ò !ó ð!ð() §¢ð )°Eð )¸dó )ð ð'Ø—G‘G˜EŸL™L¨%¯*©*Ð4Ñ5ð'Ø>Cð'ØPTð'à	
�Š�DÑ	ò'ó ð'ðR ð6 §¡ð 6°eð 6Àò 6ó ð6ð  ð)˜uŸz™zð )°%ð )¸Dò )ó ð)ð ð 5§>¢>ð ¸%ð ÀDò ó ðð, àEJñØ—J‘JðØ',ðØ>Bðà	òó ðð,& %§-¢-ð &¸ð &À$ó &ð 5§>¢>ð ¸%ð ÀDó ð
Ø×.Ò.ðØ7<ðà	óð/Ø×.Ò.ð/Ø7<ð/à	ó/ð
OØ×,Ò,ðOØ5:ðOà	óOð
9 u×'9Ò'9ð 9À%ð 9ÈDó 9ð u×'9Ò'9ð À%ð ÈDó ðØ×*Ò*ðØ38ðà	óð
/Ø×1Ò1ð/Ø:?ð/à	ó/ð
) 5§>¢>ð )¸%ð )ÀDó )ð& §¢ð &°Eð &¸dó &ð& §¢ð &°Eð &¸dó &ð% u×'9Ò'9ð %À%ð %ÈDó %ð:Ø×-Ò-ð:Ø6;ð:à	ó:ð
CØ×3Ò3ð
CØ<Að
Cà	ô
Cr6   r¯  )Fr®   Útypingr8   Ú
contextlibr   Ú	functoolsr   Úior   Ú	itertoolsr   r§  r   r  Ú
markupsafer   r	   rš  r   Ú
exceptionsr   Ú
idtrackingr   r   r   r   r   r   r/   r   Úutilsr   r   rI   r   ÚTYPE_CHECKINGÚtyping_extensionsÚterB   r   ÚTypeVarr  r9   r   rg  r:   rr   rJ   rL   rP   rQ   rY   r¯   r°  rm   r^   rc   rÎ   r²  ÚSetr€   r‚   r+   ÚRuntimeErrorr~   r´   r}   r8  rÑ   r(   r�   r6   r4   Ú<module>ró     s2  ðÙ 6ã Ý %Ý $Ý Ý Ý 2å Ý å Ý .Ý Ý &Ý *Ý (Ý *Ý Ý  Ý Ý Ý  à‡?‚?Û"å(à€A‡I�Iˆc˜Ÿ™ C¨¯© JÑ/Ô0€ð Ø
Ø
ØØ
ØØ
Øñ	€	ð'�Qð '˜1ó 'ð �Cð ˜AŸJ™J¨¸¿¹ÈÐ'PÐRVÐ'VÑWó ð*Øðà‡Z�Z� %§/¡/°7Ð;¸TÐAÑBóð0 $(ØØñØ
�.‰.ðàðð �*‰*�S‰/ðð �j‰j˜‰oð	ð
 �J‰J�q—x‘xÑ ðð ðð ðð ‡Z�Z��_óð0˜Ÿ™ð  4ó ð"Ø�:‰:�e—j‘jÑ!ðØ*+¯*©*°S©/ðà‡U�Uˆ3�Zó÷&ñ &÷Pñ PôfJ�,ô Jô'˜kô 'ô&&˜Kô &ô,�9ô ôbC�Kõ bCr6   