Ë
    È[;jZ–  ã                   ó|  — d Z ddlZddlZddlZddlZddlmZ ddlmZ g d¢Z	 ej                  d«      Z ej                  dej                  «      Zd	„ Z G d
„ de«      Z G d„ de«      Z G d„ de«      Zd„ Z G d„ d«      Zd3d„Zd3d„Z G d„ de«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z e«       Z[d4d„Z ej                  d «      Zg d!¢Z  ej                  d"«      Z! ej                  d#«      Z"d$„ Z#d%„ Z$d5d&„Z%d6d'„Z&d(„ Z'd)„ Z(d*„ Z)d+„ Z*d,„ Z+d-„ Z,d.„ Z-d/„ Z.d0Z/d3d1„Z0e1d2k(  r e0«        yy)7aÃ  
A small templating language

This implements a small templating language.  This language implements
if/elif/else, for/continue/break, expressions, and blocks of Python
code.  The syntax is::

  {{any expression (function calls etc)}}
  {{any expression | filter}}
  {{for x in y}}...{{endfor}}
  {{if x}}x{{elif y}}y{{else}}z{{endif}}
  {{py:x=1}}
  {{py:
  def foo(bar):
      return 'baz'
  }}
  {{default var = default_value}}
  {{# comment}}

You use this with the ``Template`` class or the ``sub`` shortcut.
The ``Template`` class takes the template string and the name of
the template (for errors) and a default namespace.  Then (like
``string.Template``) you can call the ``tmpl.substitute(**kw)``
method to make a substitution (or ``tmpl.substitute(a_dict)``).

``sub(content, **kw)`` substitutes the template immediately.  You
can use ``__name='tmpl.html'`` to set the name of the template.

If there are syntax errors ``TemplateError`` will be raised.
é    N)ÚStringIOé   )Úlooper)ÚTemplateErrorÚTemplateÚsubÚbunchz\s+in\s+z^[a-z_][a-z0-9_]*$c                 ój   — t        | t        «      s"t        | d«      rt        | «      S t        | «      S | S )NÚ__str__)Ú
isinstanceÚstrÚhasattrÚbytes)Úvs    ú`G:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Tempita/_tempita.pyÚcoerce_textr   .   s-   € Ü�aœÔÜ�1�iÔ Ü�q“6ˆMä˜“8ˆOØ€Hó    c                   ó   — e Zd ZdZdd„Zd„ Zy)r   z.Exception raised while parsing a template
    Nc                 óL   — t         j                  | |«       || _        || _        y ©N)Ú	ExceptionÚ__init__ÚpositionÚname)ÚselfÚmessager   r   s       r   r   zTemplateError.__init__:   s    € Ü×Ñ˜4 Ô)Ø ˆŒØˆ�	r   c                 óØ   — dj                  | j                  «      }| j                  r$|›d| j                  d   ›d| j                  d   ›�}| j                  r|d| j                  z  z  }|S )NÚ ú	 at line r   ú column r   z in %s)ÚjoinÚargsr   r   )r   Úmsgs     r   r   zTemplateError.__str__?   sZ   € Ø�h‰h�t—y‘yÓ!ˆØ�=Š=â�T—]‘] 1Ó% t§}¡}°QÒ'7ð9ˆCà�9Š9Ø�8˜dŸi™iÑ'Ñ'ˆCØˆ
r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r   6   s   „ ñóó
r   r   c                   ó   — e Zd Zy)Ú_TemplateContinueN©r$   r%   r&   r(   r   r   r*   r*   I   ó   „ Ør   r*   c                   ó   — e Zd Zy)Ú_TemplateBreakNr+   r(   r   r   r.   r.   M   r,   r   r.   c                 óô   — t         j                  j                  t         j                  j                  |j                  «      | «      }|j
                  j                  ||j                  |j                  ¬«      S )N)Ú	namespaceÚget_template)	ÚosÚpathr!   Údirnamer   Ú	__class__Úfrom_filenamer0   r1   )r   Úfrom_templater3   s      r   Úget_file_templater8   Q   s[   € Ü�7‰7�<‰<œŸ™Ÿ™¨×(:Ñ(:Ó;¸TÓB€DØ×"Ñ"×0Ñ0Ø˜×/Ñ/Ø"×/Ñ/ð 1ó 1ð 1r   c                   ó–   — e Zd ZddedœZdZdZ	 	 	 dd„Zdddefd„Z	 e
e	«      Z	d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r   z{{z}})Ústart_bracesÚ
end_bracesr   Úutf8Nc
                 ó  — || _         |	rdd l}
|
j                  dt        «       |€|	}|€| j                  d   | j                  d   f}nM| j
                  j                  j                  «       | _        |d   | j                  d<   |d   | j                  d<   |x| _        | _        t        |t        «      | _        |€x|�v	 t        j                  |«      }|j                  }|j                  }d|v r-|d   }|j!                  d«      s|j!                  d«      r|d d	 }nd
|v r|d
   }nd}|r	|d|z  z  }	 || _        t'        |||| j                  ¬«      | _        |€i }|| _        || _        |�|| _        y y # t"        $ r Y ŒMw xY w)Nr   zk'delimeters' kwarg is being deprecated in favor of correctly spelled 'delimiters'. Please adjust your code.r:   r;   r   Ú__file__z.pycz.pyoéÿÿÿÿr$   z<string>z:%s©r   Úline_offsetÚ
delimiters)ÚcontentÚwarningsÚwarnÚDeprecationWarningÚdefault_namespacer5   ÚcopyrB   Ú
delimetersr   r   Ú_unicodeÚsysÚ	_getframeÚ	f_globalsÚf_linenoÚendswithÚ
ValueErrorr   ÚparseÚ_parsedr0   r1   Údefault_inherit)r   rC   r   r0   Ú
stacklevelr1   rS   rA   rB   rI   rD   ÚcallerÚglobalsÚlinenos                 r   r   zTemplate.__init__c   s°  € ð ˆŒñ ÛØ�M‰MðBä"ôð
 Ð!Ø'�
ØÐØ×0Ñ0°Ñ@Ø×0Ñ0°Ñ>ð@‰Jð
 &*§^¡^×%EÑ%E×%JÑ%JÓ%LˆDÔ"Ø5?À±]ˆD×"Ñ" >Ñ2Ø3=¸a±=ˆD×"Ñ" <Ñ0Ø,6Ð6ˆŒ˜$œ/ä" 7¬CÓ0ˆŒØˆ<˜JÐ2ð+ÜŸ™ zÓ2�ð !×*Ñ*�ØŸ™�Ø Ñ(Ø" :Ñ.�DØ—}‘} VÔ,°·±¸fÔ0EØ# C R˜y™Ø 7Ñ*Ø" :Ñ.‘Dà%�DÙØ˜E F™NÑ*‘DØˆŒ	Ü˜W¨4¸[ÐUY×UdÑUdÔeˆŒØÐØˆIØ"ˆŒØ(ˆÔØÐ&Ø#2ˆDÕ ð 'øô+ ò Ùðús   Â>E5 Å5	FÆ Fc                 ó¤   — t        |d«      5 }|j                  «       }d d d «       |rj                  |«      } | ||||¬«      S # 1 sw Y   Œ)xY w)NÚrb)rC   r   r0   rS   r1   )ÚopenÚreadÚdecode)ÚclsÚfilenamer0   ÚencodingrS   r1   ÚfÚcs           r   r6   zTemplate.from_filename™   sR   € ä�(˜DÔ! QØ—‘“ˆA÷ "áØ—‘˜Ó"ˆAÙ˜1 8°yØ#2ÀôOð 	O÷	 "Ð!ús   �AÁAc                 ó€   — d| j                   j                  ›dt        t        | «      «      dd  ›d| j                  ›d�S )NÚ<r   é   z name=Ú>)r5   r$   ÚhexÚidr   ©r   s    r   Ú__repr__zTemplate.__repr__¤   s1   � à�N‰N×#Ó#Ü”�4“‹M˜!˜"Ò˜tŸy›yð*ð 	*r   c                 ó‚  — |rK|rt        d«      ‚t        |«      dkD  rt        d«      ‚t        |d   d«      st        d|d   ›�«      ‚|d   }|}| j                  |d<   | j                  r|j                  | j                  «       | j                  |«      \  }}}|s| j                  }|r| j                  ||||«      }|S )Nz3You can only give positional *or* keyword argumentsr   z)You can only give one positional argumentr   ÚitemszoIf you pass in a single argument, you must pass in a dictionary-like object (with a .items() method); you gave Ú__template_name__)	Ú	TypeErrorÚlenr   r   r0   ÚupdateÚ
_interpretrS   Ú_interpret_inherit)r   r"   ÚkwÚnsÚresultÚdefsÚinherits          r   Ú
substitutezTemplate.substitute©   sÕ   € ÙÙÜØIóKð Kä�4‹y˜1Š}ÜØ?óAð Aä˜4 ™7 GÔ,Ýà˜A’wð!ó"ð "ð �a‘ˆBØˆØ"&§)¡)ˆÐÑØ�>Š>Ø�I‰I�d—n‘nÔ%Ø $§¡°Ó 3Ñˆ��gÙØ×*Ñ*ˆGÙØ×,Ñ,¨V°T¸7ÀBÓGˆFØˆr   c                 ó¤   — d}g }i }| j                  | j                  |||¬«       d|v r|j                  d«      }nd }dj                  |«      ||fS )NT)Úoutru   Ú__inherit__Ú )Ú_interpret_codesrR   Úpopr!   )r   rs   Ú__traceback_hide__Úpartsru   rv   s         r   rp   zTemplate._interpretÁ   s]   € Ø!ÐØˆØˆØ×Ñ˜dŸl™l¨B°EÀÐÔEØ˜DÑ Ø—h‘h˜}Ó-‰GàˆGØ�w‰w�u‹~˜t WÐ,Ð,r   c                 ó@  — d}| j                   st        dd | j                  ¬«      ‚| j                  || «      }t        | j                  «      }|j	                  «       D ]  \  }}	t        |||	«       Œ ||_        |j                  «       }||d<   |j                  |«      S )NTz:You cannot use inheritance without passing in get_template©r   r   r   )	r1   r   r   ÚTemplateObjectrk   ÚsetattrÚbodyrH   rw   )
r   r„   ru   Úinherit_templaters   r~   ÚtemplÚself_r   Úvalues
             r   rq   zTemplate._interpret_inheritÌ   s™   € Ø!ÐØ× Ò ÜØLØ D§I¡Iô/ð /ð ×!Ñ!Ð"2°DÓ9ˆÜ˜tŸy™yÓ)ˆØŸ:™:ž<‰KˆD�%Ü�E˜4 Õ'ð (àˆŒ
Ø�W‰W‹YˆØˆˆ6‰
Ø×Ñ Ó#Ð#r   c                 ó‚   — d}|D ]8  }t        |t        «      r|j                  |«       Œ%| j                  ||||«       Œ: y )NT)r   r   ÚappendÚ_interpret_code)r   Úcodesrs   ry   ru   r~   Úitems          r   r|   zTemplate._interpret_codesÛ   s<   € Ø!ÐÛˆDÜ˜$¤Ô$Ø—
‘
˜4Õ à×$Ñ$ T¨2¨s°DÕ9ñ	 r   c                 óP  — d}|d   |d   }}|dk(  r| j                  |d   ||«       y |dk(  r
t        «       ‚|dk(  r
t        «       ‚|dk(  r9|d   |d	   |d
   }
}	}| j                  |	||«      }	| j	                  ||	|
|||«       y |dk(  r|dd  }| j                  ||||«       y |dk(  rq|d   j                  d«      }| j                  |d   ||«      }|dd  D ]  }| j                  |||«      } ||«      }Œ |j                  | j                  ||«      «       y |dk(  r(|d   |d	   }	}||vr| j                  |	||«      }|||<   y y |dk(  r|d   }	| j                  |	||«      }||d<   y |dk(  r)|d   }|d	   }|d
   }t        | |||||¬«      x||<   ||<   y |dk(  ry J d|z  «       ‚)NTr   r   Úpyrd   ÚcontinueÚbreakÚforé   é   ÚcondÚexprÚ|Údefaultrv   rz   Údef)r„   rs   ÚposÚcommentzUnknown code: %r)
Ú_execr*   r.   Ú_evalÚ_interpret_forÚ_interpret_ifÚsplitrŠ   Ú_reprÚTemplateDef)r   Úcoders   ry   ru   r~   r   rš   Úvarsr–   rC   r   ÚbaseÚpartÚfuncÚvarrt   rˆ   Ú	signatures                      r   r‹   zTemplate._interpret_codeã   s  € Ø!ÐØ˜‘G˜T !™WˆcˆØ�4Š<Ø�J‰J�t˜A‘w  CÕ(Ø�ZÒÜ#Ó%Ð%Ø�WŠ_Ü Ó"Ð"Ø�UŠ]Ø"& q¡'¨4°©7°D¸±G˜�$ˆDØ—:‘:˜d B¨Ó,ˆDØ×Ñ  d¨G°R¸¸dÕCØ�VŠ^Ø˜˜�HˆEØ×Ñ˜u b¨#¨tÕ4Ø�VŠ^Ø˜‘G—M‘M #Ó&ˆEØ—:‘:˜e A™h¨¨CÓ0ˆDØ˜a˜b›	�Ø—z‘z $¨¨CÓ0�Ù˜D“z‘ð "ð �J‰J�t—z‘z $¨Ó,Õ-Ø�YÒØ˜Q™  a¡�ˆCØ˜"‰}ØŸ™ D¨"¨cÓ2�Ø ��3’ð ð �YÒØ˜‘7ˆDØ—J‘J˜t R¨Ó-ˆEØ"'ˆD�ÒØ�UŠ]Ø˜‘7ˆDØ˜Q™ˆIØ˜‘GˆEÜ$/°°d¸IÈEÐVXØ47ô%9ð 9ˆBˆt‰H�t˜D’zà�YÒØà/Ð(¨4Ñ/Ó/�1r   c                 óF  — d}|D ]€  }t        |«      dk(  r	|||d   <   nRt        |«      t        |«      k7  r"t        dt        |«      t        |«      fz  «      ‚t        ||«      D ]
  \  }	}
|
||	<   Œ 	 | j                  ||||«       Œ‚ y # t        $ r Y Œ�t
        $ r Y  y w xY w)NTr   r   z&Need %i items to unpack (got %i items))rn   rP   Úzipr|   r*   r.   )r   r¤   r–   rC   rs   ry   ru   r~   r�   r   rˆ   s              r   rž   zTemplate._interpret_for  s¶   € Ø!ÐÛˆDÜ�4‹y˜AŠ~Ø"��4˜‘7’ä�t“9¤ D£	Ò)Ü$Ø@Ü˜t›9¤c¨$£iÐ0ñ1ó2ð 2ô $' t¨T¦?‘K�D˜%Ø$�B�t’Hð $3ðØ×%Ñ% g¨r°3¸Õ=ñ øô %ò ÙÜ!ò Úðús   Á2B	Â		B ÂB ÂB c                 óÀ   — d}|D ]W  }t        |t        «      rJ ‚|d   |d   }}|dk(  rd}	n| j                  |d   ||«      }	|	sŒ@| j                  |d   |||«        y  y )NTr   r   Úelserd   r“   )r   r   r�   r|   )
r   r   rs   ry   ru   r~   r¦   r   rš   rt   s
             r   rŸ   zTemplate._interpret_if!  ss   € Ø!ÐãˆDÜ! $¬Ô,Ð,Ð,Ø˜Q™  a¡�#ˆDØ�vŠ~Ø‘àŸ™ D¨¡G¨R°Ó5�ÚØ×%Ñ% d¨1¡g¨r°3¸Ô=Ùñ r   c                 ó  — d}	 	 t        || j                  |«      }|S # t        $ r}t        d|z  «      ‚d }~ww xY w# t        $ rF}t	        |dd «      r|j
                  d   }nt        |«      }| j                  ||«      f|_        ‚ d }~ww xY w)NTz invalid syntax in expression: %sr"   r   )ÚevalrG   ÚSyntaxErrorr   Úgetattrr"   r   Ú_add_line_info)r   r£   rs   rš   r~   rˆ   ÚeÚarg0s           r   r�   zTemplate._eval/  s¡   € Ø!Ðð	ð?Ü˜T 4×#9Ñ#9¸2Ó>�ð ˆLøô ò ?Ü!Ø6¸Ñ=ó?ð ?ûð?ûô ò 	Ü�q˜& $Ô'Ø—v‘v˜a‘y‘ä" 1“~�Ø×)Ñ)¨$°Ó4Ð6ˆAŒFØûð	ús*   … œ= ž	:§5µ:º= ½	BÁABÂBc                 óð   — d}	 t        || j                  |«       y # t        $ rP}|j                  r&| j	                  |j                  d   |«      f|_        ‚ | j	                  d |«      f|_        ‚ d }~ww xY w)NTr   )ÚexecrG   r   r"   r²   )r   r£   rs   rš   r~   r³   s         r   rœ   zTemplate._exec@  sv   € Ø!Ðð	Ü��t×-Ñ-¨rÕ2øÜò 	Ø�vŠvØ×-Ñ-¨a¯f©f°Q©i¸Ó=Ð?�”ð ð ×-Ñ-¨d°CÓ8Ð:�”Øûð	ús   „ œ	A5¥AA0Á0A5c           
      ó„  — d}	 |€y| j                   r	 t        |«      }nRt	        |t        «      st        |«      }t	        |t        «      r'| j                  r|j                  | j                  «      }| j                   rHt	        |t        «      r8| j                  st        d|z  «      ‚	 |j                  | j                  «      }|S | j                   sEt	        |t        «      r5| j                  st        d|z  «      ‚|j                  | j                  «      }|S # t        $ r t        |«      }Y Œ½w xY w# t        $ rL}t        |j                  |j                  |j                  |j                  |j                  d|z  z   «      ‚d }~ww xY w# t        $ r+}| j!                  |j"                  d   |«      f|_        ‚ d }~ww xY w)NTr{   zHCannot decode bytes value %r into unicode (no default_encoding provided)z in string %rzHCannot encode unicode value %r into bytes (no default_encoding provided)r   )rJ   r   ÚUnicodeDecodeErrorr   r   r   Údefault_encodingÚencoder\   r_   ÚobjectÚstartÚendÚreasonÚUnicodeEncodeErrorr   r²   r"   )r   rˆ   rš   r~   r³   s        r   r¡   zTemplate._reprK  s«  € Ø!Ðð&	Øˆ}ØØ�}Š}ð)Ü ›J‘Eô " %¬Ô-Ü'¨Ó.�EÜ˜u¤cÔ*Ø ×1Ò1Ø!ŸL™L¨×)>Ñ)>Ó?�Eð
 �}Š}¤¨E´5Ô!9Ø×,Ò,Ü,ð9Ø;@ñAóBð Bð<Ø!ŸL™L¨×)>Ñ)>Ó?�Eð ˆLð —]’]¤z°%¼Ô'=Ø×,Ò,Ü,ð9Ø;@ñAóBð Bð Ÿ™ T×%:Ñ%:Ó;�ØˆLøôA *ò )Ü! %›L’Eð)ûô& *ò <Ü,ØŸ
™
ØŸ™ØŸ™ØŸ™ØŸ™ ?°UÑ#:Ñ:ó<ð <ûð<ûô ò 	Ø×)Ñ)¨!¯&©&°©)°SÓ9Ð;ˆAŒFØûð	úsX   „F ‡F ”D ŸAF Â)D3 ÄD0Ä-F Ä/D0Ä0F Ä3	FÄ<AFÆFÆ	F?Æ&F:Æ:F?c                 ób   — |›d|d   ›d|d   ›�}| j                   r|d| j                   z  z  }|S )Nr   r   r    r   z in file %s©r   )r   r#   rš   s      r   r²   zTemplate._add_line_infou  s7   € â��Q“˜˜Qšð!ˆà�9Š9Ø�= 4§9¡9Ñ,Ñ,ˆCØˆ
r   )NNNNNr   NN)r$   r%   r&   r   rG   r¹   rS   r   r8   r6   Úclassmethodri   rw   rp   rq   r|   r‹   rž   rŸ   r�   rœ   r¡   r²   r(   r   r   r   r   X   sŽ   „ ð ØØñ
Ðð ÐØ€OàFJØFGØ-1ó43ðl 04¸dØ&*Ð9JóOñ   Ó.€Mò*ò
ò0	-ò$ò:ò)0òVò&òò"	ò(óTr   r   c                 ó’   — |j                  d«      }d|v r|j                  d«      nd }t        | |||¬«      }|j                  |«      S )NÚ__namerI   )r   rB   rI   )Úgetr}   r   rw   )rC   rB   rr   r   rI   Útmpls         r   r   r   }  sF   € Ø�6‰6�(Ó€DØ)5¸Ñ);�—‘˜Ô%À€JÜ�G $°:È*ÔU€DØ�?‰?˜2ÓÐr   c                 ó>   — t        | |¬«      }|j                  |«      S )NrÁ   )r   rw   )rC   r¤   r^   rÆ   s       r   Úpaste_script_template_rendererrÈ   „  s   € Ü�G (Ô+€DØ�?‰?˜4Ó Ð r   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r	   c                 óN   — |j                  «       D ]  \  }}t        | ||«       Œ y r   )rk   rƒ   )r   rr   r   rˆ   s       r   r   zbunch.__init__‹  s"   € ØŸ8™8ž:‰KˆD�%Ü�D˜$ Õ&ñ &r   c                 ó   — || |<   y r   r(   )r   r   rˆ   s      r   Ú__setattr__zbunch.__setattr__�  s   € ØˆˆTŠ
r   c                 ó>   — 	 | |   S # t         $ r t        |«      ‚w xY wr   )ÚKeyErrorÚAttributeError©r   r   s     r   Ú__getattr__zbunch.__getattr__’  s+   € ð	'Ø˜‘:ÐøÜò 	'Ü  Ó&Ð&ð	'ús   ‚ ‡c                 ó®   — d| v r	 t         j                  | |«      S t         j                  | |«      S # t        $ r t         j                  | d«      cY S w xY w)Nr˜   )ÚdictÚ__getitem__rÎ   )r   Úkeys     r   rÔ   zbunch.__getitem__˜  s[   € Ø˜Ñð9Ü×'Ñ'¨¨cÓ2Ð2ô ×#Ñ# D¨#Ó.Ð.øô ò 9Ü×'Ñ'¨¨iÓ8Ò8ð9ús   †2 ²AÁAc                 óÄ   — d| j                   j                  ›ddj                  t        | j	                  «       «      D ��cg c]  \  }}|›d|›�‘Œ c}}«      ›d�S c c}}w )Nrc   r   Ú=re   )r5   r$   r!   Úsortedrk   )r   Úkr   s      r   ri   zbunch.__repr__¡  sO   � à�N‰N×#Ó#Ø�H‰H´6¸$¿*¹*»,Ô3GÔHÑ3G©4¨1¨a¢¡AÒ&Ð3GÒHÕIðKð 	KùãHs   Á AN)r$   r%   r&   r   rÌ   rÑ   rÔ   ri   r(   r   r   r	   r	   ‰  s   „ ò'òò'ò/óKr   r	   c                   ó6   — e Zd Z	 dd„Zd„ Zd„ Zd„ Zdd„Zd„ Zy)	r¢   Nc                 óf   — || _         || _        || _        || _        || _        || _        || _        y r   )Ú	_templateÚ
_func_nameÚ_func_signatureÚ_bodyÚ_nsÚ_posÚ_bound_self)r   ÚtemplateÚ	func_nameÚfunc_signaturer„   rs   rš   Ú
bound_selfs           r   r   zTemplateDef.__init__¨  s5   € à!ˆŒØ#ˆŒØ-ˆÔØˆŒ
ØˆŒØˆŒ	Ø%ˆÕr   c           	      ó„   — d| j                   ›d| j                  ›d| j                  j                  ›d| j                  ›d�	S )Nz<tempita function Ú(z) at Ú:re   )rÝ   rÞ   rÜ   r   rá   rh   s    r   ri   zTemplateDef.__repr__²  s.   � à�O‹O˜T×1Ó1Ø�N‰N×Ó §£ð,ð 	,r   c                 ó   —  | «       S r   r(   rh   s    r   r   zTemplateDef.__str__·  s	   € Ù‹vˆr   c                 ó,  — | j                  ||«      }| j                  j                  «       }|j                  |«       | j                  �| j                  |d<   g }i }| j
                  j                  | j                  |||«       dj                  |«      S )Nr   r{   )	Ú_parse_signaturerà   rH   ro   râ   rÜ   r|   rß   r!   )r   r"   rr   Úvaluesrs   ry   Úsubdefss          r   Ú__call__zTemplateDef.__call__º  s~   € Ø×&Ñ& t¨RÓ0ˆØ�X‰X�]‰]‹_ˆØ
�	‰	�&ÔØ×ÑÐ'Ø×)Ñ)ˆBˆv‰JØˆØˆØ�‰×'Ñ'¨¯
©
°B¸¸WÔEØ�w‰w�s‹|Ðr   c           	      ó²   — |€| S | j                  | j                  | j                  | j                  | j                  | j
                  | j                  |¬«      S )N)ræ   )r5   rÜ   rÝ   rÞ   rß   rà   rá   )r   ÚobjÚtypes      r   Ú__get__zTemplateDef.__get__Å  sL   € Øˆ;ØˆKØ�~‰~Ø�N‰N˜DŸO™O¨T×-AÑ-AØ�J‰J˜Ÿ™ $§)¡)¸ð ó =ð 	=r   c                 óê  — i }| j                   \  }}}}i }|j                  «       D ](  \  }	}
|s|	|vrt        d|	z  «      ‚|	|v r|
||<   Œ$|
||	<   Œ* t        |«      }t        |«      }|r”|r"|d   |v r|j	                  d«       |r|d   |v rŒ|r&|j	                  d«      }	|j	                  d«      ||	<   nE|rt        |«      ||<   n7t        ddj                  |D �cg c]  }t        |«      ‘Œ c}«      z  «      ‚|rŒ”|j                  «       D ]>  \  }	}|	|vsŒ| j                  j                  || j                  | j                  «      ||	<   Œ@ |D ]  }	|	|vsŒt        d|	z  «      ‚ |r|||<   |S c c}w )NzUnexpected argument %sr   zExtra position arguments: %sz, zMissing argument: %s)rÞ   rk   rm   Úlistr}   Útupler!   ÚreprrÜ   r�   rà   rá   )r   r"   rr   rí   Úsig_argsÚvar_argsÚvar_kwÚdefaultsÚextra_kwr   rˆ   r   Ú
value_exprs                r   rì   zTemplateDef._parse_signatureÌ  s¤  € ØˆØ/3×/CÑ/CÑ,ˆ�(˜F HØˆØŸ8™8ž:‰KˆD�%Ù˜d¨(Ñ2ÜØ,¨tÑ3ó5ð 5à�xÑØ#(��xÒ à!&�˜’ð &ô �D‹zˆÜ˜“>ˆÙÙ˜x¨™{¨fÑ4Ø—‘˜Q”ñ ˜x¨™{¨fÒ4áØ—|‘| A“�Ø#Ÿx™x¨›{��t’ÙÜ#(¨£;��xÑ ØäØ2Ø—i‘i±$Ó 7±$¨Q¤ a¥°$Ñ 7Ó8ñ9ó:ð :ò ð !)§¡Ö 0ÑˆD�*Ø˜6Ò!Ø#Ÿ~™~×3Ñ3Ø §¡¨$¯)©)ó 5��t’ð !1ó ˆDØ˜6Ò!ÜØ*¨TÑ1ó3ð 3ð ñ Ø%ˆF�6‰NØˆùò !8s   ÃE0r   )	r$   r%   r&   r   ri   r   rï   ró   rì   r(   r   r   r¢   r¢   §  s#   „ à+/ó&ò,ò
ò	ó=ó%r   r¢   c                   ó   — e Zd Zd„ Zd„ Zy)r‚   c                 ó2   — || _         t        | «      | _        y r   )Ú_TemplateObject__nameÚTemplateObjectGetterrÅ   rÐ   s     r   r   zTemplateObject.__init__ö  s   € ØˆŒÜ'¨Ó-ˆ�r   c                 óP   — d| j                   j                  ›d| j                  ›d�S )Nrc   r   re   )r5   r$   r   rh   s    r   ri   zTemplateObject.__repr__ú  s   � Ø ŸN™N×3Ó3°T·[³[ÐAÐAr   N)r$   r%   r&   r   ri   r(   r   r   r‚   r‚   ô  s   „ ò.óBr   r‚   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)r  c                 ó   — || _         y r   )Ú#_TemplateObjectGetter__template_obj)r   Útemplate_objs     r   r   zTemplateObjectGetter.__init__   s
   € Ø*ˆÕr   c                 ó8   — t        | j                  |t        «      S r   )r±   r  ÚEmpty)r   Úattrs     r   rÑ   z TemplateObjectGetter.__getattr__  s   € Ü�t×*Ñ*¨D´%Ó8Ð8r   c                 óP   — d| j                   j                  ›d| j                  ›d�S )Nrc   z around re   )r5   r$   r  rh   s    r   ri   zTemplateObjectGetter.__repr__  s   � Ø#'§>¡>×#:Ó#:¸D×<OÓ<OÐPÐPr   N)r$   r%   r&   r   rÑ   ri   r(   r   r   r  r  þ  s   „ ò+ò9óQr   r  c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú_Emptyc                 ó   — | S r   r(   )r   r"   rr   s      r   rï   z_Empty.__call__  s   € Øˆr   c                  ó   — y©Nr{   r(   rh   s    r   r   z_Empty.__str__  ó   € Ør   c                  ó   — y)Nr  r(   rh   s    r   ri   z_Empty.__repr__  s   € Ør   c                  ó   — yr  r(   rh   s    r   Ú__unicode__z_Empty.__unicode__  r  r   c                 ó   — t        d«      S )Nr(   )Úiterrh   s    r   Ú__iter__z_Empty.__iter__  s   € Ü�B‹xˆr   c                  ó   — y)NFr(   rh   s    r   Ú__bool__z_Empty.__bool__  s   € Ør   N)	r$   r%   r&   rï   r   ri   r  r  r  r(   r   r   r  r  
  s    „ òòòòòór   r  c                 óB  — |€&t         j                  d   t         j                  d   f}d}g }d}|dz   df}t        j                  t        j                  |d   «      ›dt        j                  |d   «      ›�«      }	|	j                  | «      D ]Ô  }
|
j                  d«      }t        | |
j                  «       ||«      }||d   k(  r|rt        d|d   z  ||¬	«      ‚||d   k(  r|st        d
|d   z  ||¬	«      ‚||d   k(  r)| ||
j                  «        }|r|j                  |«       d}n&|j                  | ||
j                  «        |f«       d}|
j                  «       }|}ŒÖ |rt        d|d   z  ||¬«      ‚| |d }|r|j                  |«       |rt        |«      }|S )aY  
    Lex a string into chunks:

        >>> lex('hey')
        ['hey']
        >>> lex('hey {{you}}')
        ['hey ', ('you', (1, 7))]
        >>> lex('hey {{')
        Traceback (most recent call last):
            ...
        TemplateError: No }} to finish last expression at line 1 column 7
        >>> lex('hey }}')
        Traceback (most recent call last):
            ...
        TemplateError: }} outside expression at line 1 column 7
        >>> lex('hey {{ {{')
        Traceback (most recent call last):
            ...
        TemplateError: {{ inside expression at line 1 column 10

    Nr:   r;   Fr   r   r—   z%s inside expressionr�   z%s outside expressionTzNo %s to finish last expression)r   r   )r   rG   ÚreÚcompileÚescapeÚfinditerÚgroupÚfind_positionr½   r   r¼   rŠ   Útrim_lex)Úsr   Útrim_whitespacerA   rB   Úin_exprÚchunksÚlastÚlast_posÚtoken_reÚmatchr–   rš   r¦   s                 r   Úlexr)  %  sÉ  € ð, ÐÜ×1Ñ1°.ÑAÜ×1Ñ1°,Ñ?ðBˆ
à€GØ€FØ€DØ˜a‘ Ð#€Hä�z‰z¤b§i¡i°
¸1±Õ&>Ü&(§i¡i°
¸1±Ô&>ð@ó A€Hà×"Ñ" 1Ö%ˆØ�{‰{˜1‹~ˆÜ˜A˜uŸy™y›{¨D°(Ó;ˆØ�:˜a‘=Ò ¡WÜÐ 6¸ÀA¹Ñ FØ),Ø%)ô+ð +ð �Z ‘]Ò"©7ÜÐ 7¸*ÀQ¹-Ñ GØ),Ø%)ô+ð +ð �:˜a‘=Ò Ø�T˜%Ÿ+™+›-Ð(ˆDÙØ—‘˜dÔ#Ø‰Gà�M‰M˜1˜T %§+¡+£-Ð0°(Ð;Ô<ØˆGØ�y‰y‹{ˆØ‰ð) &ñ* ÜÐ=À
È1ÁÑMØ!%°ô:ð 	:àˆTˆUˆ8€DÙØ�‰�dÔÙÜ˜&Ó!ˆØ€Mr   z.^(?:if |elif |for |def |inherit |default |py:))r­   ÚendifÚendforÚenddefr�   r‘   z\n\r?[\t ]*$z	^[\t ]*\nc                 ó¸  — d}t        | «      D �]È  \  }}t        |t        «      rŒ|d   }t        j	                  |«      s	|t
        vrŒ;|sd}n| |dz
     }|dz   t        | «      k\  rd}n| |dz      }t        |t        «      rt        |t        «      sŒ…| xs t        j	                  |«      }|dk(  r|j                  «       sd}|�|dz   |k(  r|j                  «       sd}|sŒÕ|r9t        j	                  |«      s$|t        | «      dz
  k(  sŒþ|j                  «       r�Œ|rV|dk(  r|j                  «       r|dk(  r	d| |dz
  <   n3t        j	                  |«      }|d|j                  «       dz    }|| |dz
  <   |s�Œl|}|t        | «      dz
  k(  r|j                  «       s
d| |dz   <   �Œ™t        j	                  |«      }||j                  «       d }|| |dz   <   �ŒË | S )aa  
    Takes a lexed set of tokens, and removes whitespace when there is
    a directive on a line by itself:

       >>> tokens = lex('{{if x}}\nx\n{{endif}}\ny', trim_whitespace=False)
       >>> tokens
       [('if x', (1, 3)), '\nx\n', ('endif', (3, 3)), '\ny']
       >>> trim_lex(tokens)
       [('if x', (1, 3)), 'x\n', ('endif', (3, 3)), 'y']
    Nr   r{   r   Trd   r%  )Ú	enumerater   r   Ústatement_reÚsearchÚsingle_statementsrn   Útrail_whitespace_reÚstripÚlead_whitespace_rer¼   r½   )	ÚtokensÚ	last_trimÚiÚcurrentr�   ÚprevÚ
next_chunkÚprev_okÚms	            r   r   r   j  sÔ  € ð €IÜ ×'‰
ˆˆ7Ü�gœsÔ#àØ�q‰zˆÜ×"Ñ" 4Ô(¨TÔ9JÑ-JØÙØ‰Dà˜!˜a™%‘=ˆDØˆq‰5”C˜“KÒØ‰Jà  A¡™ˆJÜ˜:¤sÔ+Ü! $¬Ô,ØØ�(Ò>Ô1×8Ñ8¸Ó>ˆØ�Š6˜$Ÿ*™*œ,ØˆGØÐ  Y°¡]°aÒ%7ÀÇ
Á
ÄØˆGÚÙÔ#5×#<Ñ#<¸ZÔ#HØœ#˜f›+¨™/Ó)°*×2BÑ2BÖ2DÙØ˜!’V D§J¡J¤LØ" fÒ,Ø$&�F˜1˜q™5’Mä+×2Ñ2°4Ó8�Aà  §¡£¨Q¡Ð/�DØ$(�F˜1˜q™5‘MÛØ�	Øœ˜F› a™Ò'°
×0@Ñ0@Ô0BØ$&�F˜1˜q™5“Mä*×1Ñ1°*Ó=�AØ!+¨A¯E©E«G¨HÐ!5�JØ$.�F˜1˜q™5“MðU (ðV €Mr   c                 óŠ   — | j                  d||«      }|dkD  r|| j                  d||«      z
  }n|d   ||z
  z   }|d   |z   |fS )z/Given a string and index, return (line, column)Ú
r   r   )ÚcountÚrfind)ÚstringÚindexÚ
last_indexr&  ÚlinesÚcolumns         r   r  r  ¤  sY   € à�L‰L˜˜z¨5Ó1€EØˆq‚yØ˜Ÿ™ d¨J¸Ó>Ñ>‰à˜!‘ ¨
Ñ 2Ñ3ˆØ�Q‰K˜%Ñ Ð(Ð(r   c                 óÂ   — |€&t         j                  d   t         j                  d   f}t        | |||¬«      }g }|r#t        ||«      \  }}|j	                  |«       |rŒ#|S )a£  
    Parses a string into a kind of AST

        >>> parse('{{x}}')
        [('expr', (1, 3), 'x')]
        >>> parse('foo')
        ['foo']
        >>> parse('{{if x}}test{{endif}}')
        [('cond', (1, 3), ('if', (1, 3), 'x', ['test']))]
        >>> parse('series->{{for x in y}}x={{x}}{{endfor}}')
        ['series->', ('for', (1, 11), ('x',), 'y', ['x=', ('expr', (1, 27), 'x')])]
        >>> parse('{{for x, y in z:}}{{continue}}{{endfor}}')
        [('for', (1, 3), ('x', 'y'), 'z', [('continue', (1, 21))])]
        >>> parse('{{py:x=1}}')
        [('py', (1, 3), 'x=1')]
        >>> parse('{{if x}}a{{elif y}}b{{else}}c{{endif}}')
        [('cond', (1, 3), ('if', (1, 3), 'x', ['a']), ('elif', (1, 12), 'y', ['b']), ('else', (1, 23), None, ['c']))]

    Some exceptions::

        >>> parse('{{continue}}')
        Traceback (most recent call last):
            ...
        TemplateError: continue outside of for loop at line 1 column 3
        >>> parse('{{if x}}foo')
        Traceback (most recent call last):
            ...
        TemplateError: No {{endif}} at line 1 column 3
        >>> parse('{{else}}')
        Traceback (most recent call last):
            ...
        TemplateError: else outside of an if block at line 1 column 3
        >>> parse('{{if x}}{{for x in y}}{{endif}}{{endfor}}')
        Traceback (most recent call last):
            ...
        TemplateError: Unexpected endif at line 1 column 25
        >>> parse('{{if}}{{endif}}')
        Traceback (most recent call last):
            ...
        TemplateError: if with no expression at line 1 column 3
        >>> parse('{{for x y}}{{endfor}}')
        Traceback (most recent call last):
            ...
        TemplateError: Bad for (no "in") in 'x y' at line 1 column 3
        >>> parse('{{py:x=1\ny=2}}')
        Traceback (most recent call last):
            ...
        TemplateError: Multi-line py blocks must start with a newline at line 1 column 3
    r:   r;   r@   )r   rG   r)  Ú
parse_exprrŠ   )r!  r   rA   rB   r5  rt   r:  s          r   rQ   rQ   ®  sp   € ðd ÐÜ×1Ñ1°.ÑAÜ×1Ñ1°,Ñ?ðBˆ
ä�˜¨;À:ÔN€FØ€FÙ
Ü'¨°Ó5Ñˆ
�FØ�‰�jÔ!ò ð €Mr   c                 ó@  — t        | d   t        «      r
| d   | dd  fS | d   \  }}|j                  «       }|j                  d«      r‘|dd  j	                  d«      }|j                  d«      s|j                  d«      r?|j	                  d«      }d|v r$|j                  dd«      }|j                  dd	«      }|dz  }nd|v rt        d
||¬«      ‚d||f| dd  fS |dv rd|vrt        d||¬«      ‚||f| dd  fS |j                  d«      rt        | ||«      S |j                  d«      s|dk(  r"t        d|j                  «       d   z  ||¬«      ‚|dv rt        d|z  ||¬«      ‚|dv rt        d|z  ||¬«      ‚|j                  d«      rt        | ||«      S |j                  d«      rt        | ||«      S |j                  d«      rt        | ||«      S |j                  d«      rt        | ||«      S |j                  d«      rd|| d   d   f| dd  fS d|| d   d   f| dd  fS )Nr   r   úpy:r“   z 	r>  Úz
r{   z.Multi-line py blocks must start with a newliner�   r�   )r�   r‘   r’   zcontinue outside of for loopúif úelif r­   z%s outside of an if block)ÚifÚelifr’   z%s with no expression)r*  r+  r,  zUnexpected %súfor údefault úinherit údef Ú#r›   r–   )r   r   r3  Ú
startswithÚlstripÚreplacer   Ú
parse_condr    Ú	parse_forÚparse_defaultÚparse_inheritÚ	parse_def)r5  r   Úcontextr–   rš   s        r   rG  rG  ë  s{  € Ü�&˜‘)œSÔ!Ø�a‰y˜&  ˜*Ð$Ð$Ø�q‘	�I€Dˆ#Ø�:‰:‹<€DØ‡��uÔØ�A�Bˆx�‰˜uÓ%ˆØ�?‰?˜4Ô  D§O¡O°DÔ$9Ø—;‘;˜vÓ&ˆDØ�t‰|Ø—|‘| F¨DÓ1�Ø—|‘| D¨"Ó-�Ø�D‰L‰Dà�t‰|Ü#ØDØ  tô-ð -ð �c˜4Ð  &¨¨ *Ð,Ð,Ø	Ð&Ñ	&Ø˜ÑÜØ.Ø 4ô)ð )ð �cˆ{˜F 1 2˜JÐ&Ð&Ø	�‰˜Ô	Ü˜& $¨Ó0Ð0Ø
�/‰/˜'Ô
"Ø�VŠ^ÜØ'¨$¯*©*«,°q©/Ñ9Ø˜tô%ð 	%ð 
Ð&Ñ	&ÜØ# dÑ*Ø˜tô%ð 	%ð 
Ð.Ñ	.ÜØ˜dÑ"Ø˜tô%ð 	%ð 
�‰˜Ô	 Ü˜  wÓ/Ð/Ø	�‰˜Ô	$Ü˜V T¨7Ó3Ð3Ø	�‰˜Ô	$Ü˜V T¨7Ó3Ð3Ø	�‰˜Ô	 Ü˜  wÓ/Ð/Ø	�‰˜Ô	Ø˜3  q¡	¨!¡Ð-¨v°a°b¨zÐ9Ð9Ø�C˜ ™ 1™Ð&¨¨q¨r¨
Ð2Ð2r   c                 óì   — | d   d   }g }|dz   }	 | st        d||¬«      ‚t        | d   t        «      r | d   d   dk(  rd|ft        |«      z   | dd  fS t        | ||«      \  }} |j	                  |«       Œe)Nr   r   )rM  zMissing {{endif}}r�   r*  r•   )r   r   rö   Úparse_one_condrŠ   )r5  r   r\  r¼   Úpiecesr:  s         r   rW  rW     s›   € Ø�1‰I�a‰L€EØ€FØ˜Ñ€GØ
ÙÜØ#Ø Tô+ð +ô �v˜a‘y¤%Ô(Ø˜1‘I˜a‘L GÒ+Ø˜E�?¤U¨6£]Ñ2°F¸1¸2°JÐ>Ð>Ü+¨F°D¸'ÓBÑˆ
�FØ�‰�jÔ!ð r   c                 ó  — | d   | dd  c\  }}} g }|j                  d«      r|d d }|j                  d«      rd||dd  j                  «       |f}nB|j                  d«      rd	||d
d  j                  «       |f}n|dk(  rd|d |f}nJ d|›d|›�«       ‚	 | st        d||¬«      ‚t	        | d   t
        «      r1| d   d   dk(  s"| d   d   j                  d«      s| d   d   dk(  r|| fS t        | ||«      \  }} |j                  |«       Œv)Nr   r   ré   r?   rK  rM  r“   rL  rN  é   r­   zUnexpected token z at zNo {{endif}}r�   r*  )rO   rT  rU  r   r   rö   rG  rŠ   )r5  r   r\  Úfirstrš   rC   r¦   r:  s           r   r^  r^  0  sA  € Ø! !™9 f¨Q¨R jÐ�L€UˆC�&Ø€GØ‡~�~�cÔØ�c�r�
ˆØ×Ñ˜ÔØ�c˜5  ˜9×+Ñ+Ó-¨wÐ7‰Ø	×	Ñ	˜'Ô	"Ø˜˜U 1 2˜Y×-Ñ-Ó/°Ð9‰Ø	�&ŠØ˜˜T 7Ð+‰á<²¹Ð<Ó<ˆqØ
ÙÜØØ 4ô)ð )ô �v˜a‘y¤%Ô(Ø˜‘˜1‘ Ò(Ø˜1‘I˜a‘L×+Ñ+¨GÔ4Ø˜1‘I˜a‘L FÒ*Ø˜�<ÐÜ'¨°°gÓ>Ñˆ
�FØ�‰�zÔ"ð r   c                 óä  — | d   \  }}| dd  } d|z   }g }|j                  d«      sJ |«       ‚|j                  d«      r|d d }|dd  j                  «       }t        j	                  |«      }|st        d|z  ||¬	«      ‚|d |j                  «        }d
|v rt        d|z  ||¬	«      ‚t        |d |j                  «        j                  d«      D �cg c]"  }|j                  «       r|j                  «       ‘Œ$ c}«      }||j                  «       d  }		 | st        d||¬	«      ‚t        | d   t        «      r| d   d   dk(  rd|||	|f| dd  fS t        | ||«      \  }
} |j                  |
«       Œ\c c}w )Nr   r   )r’   rO  ré   r?   r“   zBad for (no "in") in %rr�   rè   z=You cannot have () in the variable section of a for loop (%r)Ú,zNo {{endfor}}r+  r’   )rT  rO   r3  Úin_rer0  r   r¼   rö   r    r½   r   rG  rŠ   )r5  r   r\  rb  rš   rC   r(  r¤   r   r–   r:  s              r   rX  rX  K  s°  € Ø˜‘�J€Eˆ3Ø�A�BˆZ€FØ˜Ñ €GØ€GØ×Ñ˜FÔ#Ð* UÓ*Ð#Ø‡~�~�cÔØ�c�r�
ˆØ�!�"ˆI�O‰OÓ€EÜ�L‰L˜Ó€EÙÜØ%¨Ñ-Ø˜tô%ð 	%ð ��%—+‘+“-Ð €DØ
ˆd�{ÜØKØñØ  tô-ð 	-ô Ø   %§+¡+£-Ð0×6Ñ6°sÔ;óÙ;�aØ�7‰7Œ9ð 	
�‰�	Ð;ñó €Dð �—‘“�Ð€DØ
ÙÜØØ 4ô)ð )ô �v˜a‘y¤%Ô(Ø˜1‘I˜a‘L HÒ,Ø˜3  d¨GÐ4°f¸Q¸R°jÐ@Ð@Ü'¨°°gÓ>Ñˆ
�FØ�‰�zÔ"ð ùò	s   Ã'E-c                 ó–  — | d   \  }}|j                  d«      sJ ‚|j                  d d«      d   }|j                  dd«      }t        |«      dk(  rt        d|z  ||¬«      ‚|d   j	                  «       }d|v rt        d||¬«      ‚t
        j                  |«      st        d	|z  ||¬«      ‚|d   j	                  «       }d
|||f| dd  fS )Nr   rP  r   r×   z:Expression must be {{default var=value}}; no = found in %rr�   rd  z'{{default x, y = ...}} is not supportedz-Not a valid variable name for {{default}}: %rr˜   )rT  r    rn   r   r3  Úvar_rer0  )r5  r   r\  rb  rš   r   r¨   r–   s           r   rY  rY  n  sò   € Ø˜‘�J€Eˆ3Ø×Ñ˜JÔ'Ð'Ð'Ø�K‰K˜˜aÓ  Ñ#€EØ�K‰K˜˜QÓ€EÜ
ˆ5ƒz�Q‚ÜØHÈ5ÑPØ˜tô%ð 	%ð �‰(�.‰.Ó
€CØ
ˆc�zÜØ5Ø˜tô%ð 	%ô �=‰=˜ÔÜØ;ØñØ dô,ð 	,ð �‰8�>‰>Ó€DØ�s˜C Ð&¨¨q¨r¨
Ð2Ð2r   c                 óv   — | d   \  }}|j                  d«      sJ ‚|j                  d d«      d   }d||f| dd  fS )Nr   rQ  r   rv   )rT  r    )r5  r   r\  rb  rš   r–   s         r   rZ  rZ  „  sP   € Ø˜‘�J€Eˆ3Ø×Ñ˜JÔ'Ð'Ð'Ø�;‰;�t˜QÓ Ñ"€DØ�s˜DÐ! 6¨!¨" :Ð-Ð-r   c                 ó  — | d   \  }}| dd  } |j                  d«      sJ ‚|j                  d d«      d   }|j                  d«      r|d d }d|vr	|}dd d i f}nI|j                  d«      st        d	|z  ||¬
«      ‚|d d }|j                  dd«      \  }}t	        |||«      }|dz   }g }	 | st        d||¬
«      ‚t        | d   t        «      r| d   d   dk(  rd||||f| dd  fS t        | ||«      \  }	} |j                  |	«       Œ\)Nr   r   rR  ré   r?   rè   r(   Ú)z*Function definition doesn't end with ): %sr�   )r™   zMissing {{enddef}}r,  r™   )	rT  r    rO   r   Úparse_signaturer   rö   rG  rŠ   )
r5  r   r\  rb  r¼   rä   ÚsigÚsig_textrC   r:  s
             r   r[  r[  ‹  sU  € Ø˜!‘9�L€Eˆ5Ø�A�BˆZ€FØ×Ñ˜FÔ#Ð#Ð#Ø�K‰K˜˜aÓ  Ñ#€EØ‡~�~�cÔØ�c�r�
ˆØ
�%ÑØˆ	Ø�4˜˜rÐ"‰Ø�^‰^˜CÔ ÜÐHÈ5ÑPØ%*°ô7ð 	7ð �c�r�
ˆØ#Ÿk™k¨#¨qÓ1Ñˆ	�8Ü˜h¨¨eÓ4ˆØ˜Ñ €GØ€GØ
ÙÜØ$Ø Tô+ð +ô �v˜a‘y¤%Ô(Ø˜1‘I˜a‘L HÒ,Ø˜5 )¨S°'Ð:¸FÀ1À2¸JÐFÐFÜ'¨°°gÓ>Ñˆ
�FØ�‰�zÔ"ð r   c                 óÄ  ‡— t        j                  t        | «      j                  «      Šg }d }d }i }dˆfd„	}	 d } |«       \  }	}
|	t         j                  k(  r�n|	t         j
                  k(  r|
dk(  s|
dk(  r|
} |«       \  }	}
|	t         j                  k7  rt        d| z  ||¬«      ‚|
} |«       \  }	}
|	t         j                  k(  s|	t         j
                  k(  r<|
dk(  r7|dk(  r|}n|dk(  r|}n|j                  |«       |	t         j                  k(  r�nHŒÝ|�t        d| z  ||¬«      ‚|	t         j
                  k(  �r|
dk(  �rd }d }d	}d x}}g }	  |d
«      \  }	}
}}|€|}|}|	t         j                  k(  r|rt        d| z  ||¬«      ‚|sO|	t         j                  k(  s|	t         j
                  k(  r)|
dk(  r$t        | ||«      }|||<   |j                  |«       n�|j                  |	|
f«       |r|	t         j
                  k(  r|
|k(  r|dz  }nL|r$|	t         j
                  k(  r|
|k(  r|dz  }|s+d x}}n&|s$|	t         j
                  k(  r|
dv r|
}d}ddddœ|   }�Œ�Œ#||||fS )Nc                 ó–   •— 	 t        ‰«      \  }}\  }}\  }}}| r
||||f||ffS ||fS # t        $ r t        j                  dfcY S w xY wr  )ÚnextÚStopIterationÚtokenizeÚ	ENDMARKER)	rš   Útok_typeÚ
tok_stringÚsrowÚscolÚerowÚecolÚliner5  s	           €r   Ú	get_tokenz"parse_signature.<locals>.get_token±  sm   ø€ ð	*ÜEIÈ&Ã\ÑBˆH�j¡, 4¨±°°t¸dñ Ø˜Z¨$°¨¸¸d°|ÐCÐCà˜ZÐ'Ð'øô ò 	*Ü×%Ñ% rÐ)Ò)ð	*ús   ƒ* ªAÁAr   Ú*z**zInvalid signature: (%s)r�   rd  r×   r   T)rè   Ú[Ú{rj  Ú]Ú})F)
rr  Úgenerate_tokensr   Úreadliners  ÚOPÚNAMEr   rŠ   Úisolate_expression)rm  r   rš   rø   Úvar_argrú   rû   r{  Úvar_arg_typert  ru  Úvar_nameÚ	nest_typeÚunnest_typeÚ
nest_countÚ	start_posÚend_posr   r!  r³   Údefault_exprr5  s                        @r   rk  rk  ª  s±  ø€ Ü×%Ñ%¤h¨xÓ&8×&AÑ&AÓB€FØ€HØ€GØ€FØ€Hõ(ð ØˆÙ(›{Ñˆ�*Ø”x×)Ñ)Ò)ÙØ”x—{‘{Ò"¨
°cÒ(9¸ZÈ4Ò=OØ%ˆLÙ#,£;Ñ ˆH�jØ”x—}‘}Ò$ÜÐ 9¸HÑ DØ),°4ô9ð 9àˆÙ(›{Ñˆ�*Ø”x×)Ñ)Ò)¨h¼(¿+¹+Ò.EÈ*ÐX[ÒJ[Ø˜sÒ"Ø"‘Ø Ò%Ø!‘à—‘ Ô)Øœ8×-Ñ-Ò-ÙØØÐ#ÜÐ 9¸HÑ DØ),°4ô9ð 9à”x—{‘{Ó" z°SÓ'8ØˆIØˆKØˆJØ"&Ð&ˆI˜ØˆEØÙ-6°t«_Ñ*�˜* a¨ØÐ$Ø !�IØ�Øœx×1Ñ1Ò1±jÜ'Ð(AÀHÑ(LØ14¸4ôAð Aá"Ø!¤X×%7Ñ%7Ò7¸HÌÏÉÒ<SÐXbÐfiÒXiÜ#5°hÀ	È7Ó#S�LØ)5�H˜XÑ&Ø—O‘O HÔ-ØØ—‘˜h¨
Ð3Ô4Ù (¬h¯k©kÒ"9¸jÈIÒ>UØ !‘O‘JÙ H´·±Ò$;À
ÈkÒ@YØ !‘O�JÙ%Ø26Ð6˜	¡KÙ#¨´H·K±KÒ(?ÀJÐRaÑDaØ *�IØ!"�JØ(+°#¸CÑ"@ÀÑ"K�Kñ1 ñA ðr �W˜f hÐ.Ð.r   c                 ó  — |\  }}|dz  }|\  }}|dz  }| j                  d«      }||k(  r||   || S ||   |d  g}|j                  ||dz   | «       |t        |«      k  r|j                  ||   d | «       dj	                  |«      S )Nr   Tr{   )Ú
splitlinesÚextendrn   rŠ   r!   )	rA  rŒ  r�  rv  rw  rx  ry  rD  r   s	            r   r…  r…  ö  s©   € Ø�J€Dˆ$ØˆA�I€DØ�J€Dˆ$ØˆA�I€DØ×Ñ˜dÓ#€EØˆt‚|Ø�T‰{˜4 Ð%Ð%Ø�4‰[˜˜ÐÐ €EØ	‡L�L��t˜A‘v˜dÐ#Ô$ØŒc�%‹jÒà�‰�U˜4‘[  $Ð'Ô(Ø�7‰7�5‹>Ðr   zn%prog [OPTIONS] TEMPLATE arg=value

Use py:arg=value to set a Python value; otherwise all values are
strings.
c                 ó  — dd l }dd l}dd l}| €|j                  dd  } |j	                  t
        ¬«      }|j                  ddddd¬	«       |j                  d
ddd¬«       |j                  | «      \  }} t        | «      dk  rt        d«        |j                  d«       | d   }| dd  } i }|j                  r|j                  |j                  «       | D ]a  }d|vr t        d|z  «        |j                  d«       |j                  dd«      \  }	}|	j                  d«      r|	d d }	t!        |«      }|||	<   Œc |dk(  r|j"                  j%                  «       }
d}n%t'        |d«      5 }|j%                  «       }
d d d «       t)        
|¬«      }|j+                  |«      }|j,                  r1t'        |j,                  d«      5 }|j/                  |«       d d d «       y |j0                  j/                  |«       y # 1 sw Y   Œ€xY w# 1 sw Y   y xY w)Nr   r   )Úusagez-oz--outputÚoutputÚFILENAMEz(File to write output to (default stdout))ÚdestÚmetavarÚhelpz--envÚuse_envÚ
store_truez-Put the environment in as top-level variables)r–  Úactionr˜  z!You must give a template filenamerd   r×   zBad argument: %rrI  r“   Ú-z<stdin>rY   rÁ   Úwb)rK   Úoptparser2   ÚargvÚOptionParserÚ_fill_command_usageÚ
add_optionÚ
parse_argsrn   ÚprintÚexitr™  ro   Úenvironr    rT  r¯   Ústdinr[   rZ   r   rw   r”  ÚwriteÚstdout)r"   rK   rž  r2   ÚparserÚoptionsÚtemplate_namer¤   rˆ   r   Útemplate_contentr`   rã   rt   s                 r   Úfill_commandr®    sô  € ÛÛÛØ€|Ø�x‰x˜˜ˆ|ˆØ×"Ñ"Ü!ð #ó #€Fà
×ÑØˆjØØØ7ð	 ô 9ð
 ×ÑØØØØ<ð	 ô >ð
 ×%Ñ% dÓ+�M€GˆTÜ
ˆ4ƒy�1‚}ÜÐ1Ô2Øˆ�‰�ŒØ˜‘G€MØ��ˆ8€DØ€DØ‡‚Ø�‰�B—J‘JÔÛˆØ�eÑÜÐ$ uÑ,Ô-ØˆC�H‰H�QŒKØ—k‘k # qÓ)‰ˆˆeØ�?‰?˜5Ô!Ø˜˜�8ˆDÜ˜“KˆEØˆˆTŠ
ð ð ˜ÒØŸ9™9Ÿ>™>Ó+ÐØ!‰ä�- Ô&¨!Ø Ÿv™v›xÐ÷ 'äÐ(¨}Ô=€HØ× Ñ  Ó&€FØ‡~‚~Ü�'—.‘. $Ô'¨1Ø�G‰G�FŒO÷ (Ð'ð 	�
‰
×Ñ˜Õ ÷ 'Ð&ú÷
 (Ð'ús   Å%G5Æ>HÇ5G>ÈH
Ú__main__r   )NTr   N)Nr   N)r(   )2r'   r  rK   r2   rr  Úior   Ú_looperr   Ú__all__r  re  ÚIrg  r   r   r   r*   r.   r8   r   r   rÈ   rÓ   r	   r¢   r‚   r  r  r  r)  r/  r1  r2  r4  r   r  rQ   rG  rW  r^  rX  rY  rZ  r[  rk  r…  r¡  r®  r$   r(   r   r   Ú<module>r´     s~  ðñó@ 
Û 
Û 	Û Ý å â
7€àˆ�
‰
�;Ó€Ø	ˆ�‰Ð)¨2¯4©4Ó	0€òô�Iô ô&	˜	ô 	ô	�Yô 	ò1÷bñ bóJ	ó!ô
KˆDô K÷<Jñ J÷ZBñ B÷	Qñ 	Q÷ñ ñ& 	‹€Ø
ó=ð~ ˆr�z‰zÐKÓL€ÚNÐ Ø �b—j‘j Ó1Ð Ø�R—Z‘Z Ó-Ð ò7òt)ó:óz23òj"ò #ò6 #òF3ò,.ò#ò>I/òXðÐ ó0!ðd ˆzÒÙ…Nð r   