a
    ¥Q•h†š  ã                   @   s¨  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZe	ej
 dd¡ƒZeefZe jdd… dkZeedƒZd dlZG dd„ deƒZejd	ejd
ejdejdejdejdejdejdejdej dej!dej"dej#diZ$e%g d¢ƒZ&e%d '¡ ƒZ(e )dd *e(¡ ej+¡Z,dd„ Z-G dd„ dej.ƒZ/dd„ Z0G d d!„ d!ƒZ1i Z2d,d"d#„Z3ej4Z5e6ƒ Z7G d$d%„ d%ƒZ8G d&d'„ d'ƒZ9G d(d)„ d)e9ƒZ:d-d*d+„Z;e:ƒ Z<e9ƒ Z=dS ).é    NZ
EVAL_DEBUGÚ0é   )é   é	   ÚNameConstantc                   @   s   e Zd ZdS )ÚBadCodeN)Ú__name__Ú
__module__Ú__qualname__© r   r   úS/var/www/sistema_ama/venv/lib/python3.9/site-packages/reportlab/lib/rl_safe_eval.pyr      s   r   ú+=ú-=ú*=ú/=ú%=ú**=ú<<=ú>>=ú|=ú^=ú&=ú//=z@=)Ú__init__Ú__contains__Ú__lt__Ú__le__Ú__eq__Ú__ne__Ú__gt__Ú__ge__aT  builtins breakpoint __annotations__ co_argcount co_cellvars co_code co_consts
						__code__ co_filename co_firstlineno co_flags co_freevars co_kwonlyargcount
						co_lnotab co_name co_names co_nlocals co_posonlyargcount co_stacksize
						co_varnames cr_await cr_code cr_frame cr_origin cr_running __defaults__
						f_back f_builtins f_code f_exc_traceback f_exc_type f_exc_value f_globals
						f_lasti f_lineno f_locals f_restricted f_trace __func__ func_code func_defaults
						func_doc func_globals func_name gi_code gi_frame gi_running gi_yieldfrom
						__globals__ im_class im_func im_self __iter__ __kwdefaults__ __module__
						__name__ next __qualname__ __self__ tb_frame tb_lasti tb_lineno tb_next
						globals vars locals
						type eval exec aiter anext compile open
						dir print classmethod staticmethod __import__ super propertyz\b(?:%s)ú|c                 C   s   t  | |¡ t  | ¡ d S ©N)ÚastÚcopy_locationÚfix_missing_locations)Únew_nodeÚold_noder   r   r   Úcopy_locations?   s    r(   c                       s¢  e Zd ZdJ‡ fdd„	Zedd„ ƒZdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dKdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"e!Z#eZ$eZ%dAdB„ Z&dCdD„ Z'‡ fdEdF„Z(e)dGk�rFdHdI„ Z*e'Z+e'Z,e'Z-e'Z.e'Z/e'Z0e'Z1e'Z2e'Z3e(Z4e(Z5e(Z6e(Z7e(Z8e(Z9e(Z:e(Z;e(Z<e(Z=e(Z>e(Z?e(Z@e(ZAe(ZBe(ZCe(ZDe(ZEe(ZFe(ZGe(ZHe(ZIe(ZJe(ZKe(ZLe(ZMe(ZNe(ZOe(ZPe(ZQe(ZRe(ZSe(ZTe(ZUe(ZVe(ZWe(ZXe(ZYe(ZZe(Z[e(Z\e(Z]e(Z^e(Z_e(Z`e(Zae(Zbe(Zce(Zde(Zee(Zfe(Zge(Zhe(Zie(Zje(Zke(Zle(Zme(Zne(Zoe(Zpe(Zqe(Zre(Zse(Zte(Zue(Zve(Zwe(Zxe(Zye(Zze(Z{e(Z|e(Z}e(Z~e(Z‡  Z€S )LÚUntrustedAstTransformerNc                    sJ   t t| ƒ ¡  |d u ri n|| _|| _d| _dtt ¡ ƒ dd¡ | _	d S )Nr   z_tmp%sÚ.Ú )
Úsuperr)   r   Ú
names_seenÚnameIsAllowedÚ_tmp_idxÚreprÚtimeÚreplaceÚ_tmp_pfx)Úselfr-   r.   ©Ú	__class__r   r   r   E   s
    z UntrustedAstTransformer.__init__c                 C   s"   d| j | jf }|  jd7  _|S )Nz%s%sé   )r3   r/   ©r4   Únamer   r   r   ÚtmpNameN   s    zUntrustedAstTransformer.tmpNamec                 C   s   t dt|ddƒ|f ƒ‚d S )NzLine %s: %sÚlinenoz??)r   Úgetattr)r4   ÚnodeÚmsgr   r   r   ÚerrorT   s    zUntrustedAstTransformer.errorc              	   C   sŒ   |   |¡}t|jtjƒrV|  |j¡}tjt dt ¡ ¡|j	|t dt ¡ ¡gg d�}n tjt dt ¡ ¡|j	gg d�}t
||j	ƒ ||_	|S )z·
		Converts:
			for x in expr
		to
			for x in __rl_getiter__(expr)

		Also used for
		* list comprehensions
		* dict comprehensions
		* set comprehensions
		* generator expresions
		Ú__rl_iter_unpack_sequence__Ú__rl_getiter__©ÚfuncÚargsÚkeywords)Úvisit_childrenÚ
isinstanceÚtargetr#   ÚTupleÚgen_unpack_specÚCallÚNameÚLoadÚiterr(   )r4   r=   ÚspecZnew_iterr   r   r   Ú
guard_iterW   s     
ýýz"UntrustedAstTransformer.guard_iterc                 C   s   t |tjƒS r"   )rG   r#   ÚStarred)r4   Úobr   r   r   Ú
is_starredv   s    z"UntrustedAstTransformer.is_starredc                    sú   t jg g d�}|j t  d¡¡ |j t  g t  ¡ ¡¡ t‡ fdd„|j	D ƒƒ}d}t
|j	ƒD ]r\}}ˆ  |¡rz|d }q^t|t jƒr^t  g t  ¡ ¡}|j	 t  || ¡¡ |j	 ˆ  |¡¡ |jd j	 |¡ q^|j t  d¡¡ |j t  |¡¡ |S )aê  Generate a specification for '__rl_unpack_sequence__'.

		This spec is used to protect sequence unpacking.
		The primary goal of this spec is to tell which elements in a sequence
		are sequences again. These 'child' sequences have to be protected
		again.

		For example there is a sequence like this:
			(a, (b, c), (d, (e, f))) = g

		On a higher level the spec says:
			- There is a sequence of len 3
			- The element at index 1 is a sequence again with len 2
			- The element at index 2 is a sequence again with len 2
			  - The element at index 1 in this subsequence is a sequence again
				with len 2

		With this spec '__rl_unpack_sequence__' does something like this for
		protection (len checks are omitted):

			t = list(__rl_getiter__(g))
			t[1] = list(__rl_getiter__(t[1]))
			t[2] = list(__rl_getiter__(t[2]))
			t[2][1] = list(__rl_getiter__(t[2][1]))
			return t

		The 'real' spec for the case above is then:
			spec = {
				'min_len': 3,
				'childs': (
					(1, {'min_len': 2, 'childs': ()}),
					(2, {
							'min_len': 2,
							'childs': (
								(1, {'min_len': 2, 'childs': ()})
							)
						}
					)
				)
			}

		So finally the assignment above is converted into:
			(a, (b, c), (d, (e, f))) = __rl_unpack_sequence__(g, spec)
		)ÚkeysÚvaluesÚchildsc                    s   g | ]}ˆ   |¡s|‘qS r   )rS   )Ú.0rR   ©r4   r   r   Ú
<listcomp>®   ó    z;UntrustedAstTransformer.gen_unpack_spec.<locals>.<listcomp>r   r7   Úmin_len)r#   ÚDictrT   ÚappendÚStrrU   rI   rM   ÚlenÚeltsÚ	enumeraterS   rG   ÚNumrJ   )r4   ÚtplrO   r[   ÚoffsetÚidxÚvalÚelr   rX   r   rJ   y   s     -

z'UntrustedAstTransformer.gen_unpack_specc              	   C   s8   |   |¡}tjt dt ¡ ¡||t dt ¡ ¡gg d�S )NÚ__rl_unpack_sequence__rA   rB   )rJ   r#   rK   rL   rM   )r4   rH   ÚvaluerO   r   r   r   Úprotect_unpack_sequenceÅ   s    
ýz/UntrustedAstTransformer.protect_unpack_sequenceÚstorec           
      C   sª   | j }|  |t |t ¡ ¡¡}tj|g|d�g}|  |¡g}tj||g g d�}|dkr`t ¡ }n"|dkrrt 	¡ }nt
dt|ƒ ƒ‚t ||¡}	t|	|ƒ t||ƒ |	|fS )a2  Helper function to protect tuple unpacks.

		node: used to copy the locations for the new nodes.
		target: is the tuple which must be protected.
		ctx: Defines the context of the returned temporary node.

		It returns a tuple with two element.

		Element 1: Is a temporary name node which must be used to
				   replace the target.
				   The context (store, param) is defined
				   by the 'ctx' parameter..

		Element 2: Is a try .. finally where the body performs the
				   protected tuple unpack of the temporary variable
				   into the original target.
		©Útargetsri   )ÚbodyÚ	finalbodyÚhandlersÚorelserk   Úparamzbad ctx "%s")r:   rj   r#   rL   rM   ÚAssignÚgen_del_stmtÚTryÚStoreÚParamÚNotImplementedErrorÚtyper(   )
r4   r=   rH   ÚctxZtnamÚ	converterZtry_bodyro   ÚcleanupÚ
tmp_targetr   r   r   Úgen_unpack_wrapperÌ   s&    þÿ



z*UntrustedAstTransformer.gen_unpack_wrapperc                 C   s"   t rtjd d�S tjdt ¡ d�S )N)ri   ÚNone)Úidrz   )ZhasNameConstantr#   r   rL   rM   rX   r   r   r   Úgen_none_node  s    z%UntrustedAstTransformer.gen_none_nodec                 C   s   t jt j|d d g d�|d�S )N)rD   ÚvarargÚkwargÚdefaults)rD   rn   )r#   ÚLambdaÚ	arguments)r4   rD   rn   r   r   r   Ú
gen_lambda
  s    ÿýz"UntrustedAstTransformer.gen_lambdac                 C   s   t jt  |t  ¡ ¡gd�S )N)rm   )r#   ÚDeleterL   ÚDel)r4   Zname_to_delr   r   r   rt     s    z$UntrustedAstTransformer.gen_del_stmtc                 C   sú   t |tjƒr|jS t |tjƒr¤g }|jr6| |j¡ n| |  ¡ ¡ |jrX| |j¡ n| |  ¡ ¡ |j	rz| |j	¡ n| |  ¡ ¡ tj
t dt ¡ ¡|g d�S t |tjƒrât g t ¡ ¡}|jD ]}|j |  |¡¡ qÆ|S trê|S td| ƒ‚dS )zõTransform slices into function parameters.

		ast.Slice nodes are only allowed within a ast.Subscript node.
		To use a slice as an argument of ast.Call it has to be converted.
		Conversion is done by calling the 'slice' function from builtins
		ÚslicerB   zUnknown slice type: %sN)rG   r#   ÚIndexri   ÚSliceÚlowerr]   r�   ÚupperÚsteprK   rL   rM   ÚExtSlicerI   Údimsr`   Útransform_sliceÚisPy39rx   )r4   Zslice_rD   r‘   Úitemr   r   r   r’     s4    ý
z'UntrustedAstTransformer.transform_slicec                 C   s   |d u rd S |   |¡ d S r"   ©r.   ©r4   r=   r9   r   r   r   ÚisAllowedNameC  s    z%UntrustedAstTransformer.isAllowedNamec                 C   sp   |j j D ]}|  ||j¡ q|j jr6|  ||j jj¡ |j jrP|  ||j jj¡ |j jD ]}|  ||j¡ qXd S r"   )rD   r—   Úargr‚   rƒ   Ú
kwonlyargs)r4   r=   r˜   r   r   r   Úcheck_function_argument_namesG  s    z5UntrustedAstTransformer.check_function_argument_namesc                 C   sN   |j D ]<}d|jv r |  |d¡ |  ||j¡ |jr|  ||j¡ q|  |¡S )zÏCheck the names being imported.

		This is a protection against rebinding dunder names like
		__rl_getitem__,__rl_set__ via imports.

		=> 'from _a import x' is ok, because '_a' is not added to the scope.
		Ú*z"*" imports are not allowed.)Únamesr9   r?   r—   ÚasnamerF   r–   r   r   r   Úcheck_import_names[  s    

z*UntrustedAstTransformer.check_import_namesc                 C   s<   t jt  dt  ¡ ¡|t  |¡gg d�}t jt  ¡ ||gd�S )zpCheck if 'attr_name' is allowed on the object in node.

		It generates (_getattr_(node, attr_name) and node).
		Ú__rl_getattr__rB   )ÚoprU   )r#   rK   rL   rM   r^   ÚBoolOpÚAnd)r4   r=   Ú	attr_nameZcall_getattrr   r   r   Úgen_attr_checkl  s    ýz&UntrustedAstTransformer.gen_attr_checkc                 C   s$   |j tu r|  |d¡ dS |  |¡S )zÌAllow constant literals with restriction for Ellipsis.

		Constant replaces Num, Str, Bytes, NameConstant and Ellipsis in
		Python 3.8+.
		:see: https://docs.python.org/dev/whatsnew/3.8.html#deprecated
		z$Ellipsis statements are not allowed.N)ri   ÚEllipsisr?   rF   ©r4   r=   r   r   r   Úvisit_Constanty  s    
z&UntrustedAstTransformer.visit_Constantc                 C   sL   |   |¡}t|jtjƒr:|jdkr.|  |d¡ d| j|j< |  ||j¡ |S )NÚprintzprint function is not allowedT)	rF   rG   rz   r#   rM   r€   r?   r-   r—   r¦   r   r   r   Ú
visit_Name‹  s    

z"UntrustedAstTransformer.visit_Namec                 C   s¼   t |jtjƒr@|jjdkr(|  |d¡ n|jjdkr@|  |d¡ d}|jD ]}t |tjƒrJd}qJ|jD ]}|j	du rfd}qf|  
|¡}|j d|j¡ t d	t ¡ ¡|_t|j|jd ƒ |S )
aÿ  Checks calls with '*args' and '**kwargs'.

		Note: The following happens only if '*args' or '**kwargs' is used.

		Transfroms 'foo(<all the possible ways of args>)' into
		__rl_apply__(foo, <all the possible ways for args>)

		The thing is that '__rl_apply__' has only '*args', '**kwargs', so it gets
		Python to collapse all the myriad ways to call functions
		into one manageable from.

		From there, '__rl_apply__()' wraps args and kws in guarded accessors,
		then calls the function, returning the value.
		ÚexeczExec calls are not allowed.ÚevalzEval calls are not allowed.FTNr   Ú__rl_apply__)rG   rC   r#   rL   r€   r?   rD   rQ   rE   r˜   rF   ÚinsertrM   r(   )r4   r=   Z
needs_wrapZpos_argZkeyword_argr   r   r   Ú
visit_Call–  s"    



z"UntrustedAstTransformer.visit_Callc                 C   sâ   |j  d¡r(|j dkr(|  |d|j  ¡ t|jtjƒrx|  |¡}tjt 	dt ¡ ¡|j
t |j ¡gg d�}t||ƒ |S t|jtjtjfƒrÌ|  |¡}tjt 	dt ¡ ¡|j
gg d�}t||j
ƒ ||_
|S tdt|jƒ ƒ‚dS )z\Checks and mutates attribute access/assignment.

		'a.b' becomes '__rl_getattr__(a, "b")'
		Ú__z"%s" is an invalid attributerŸ   rB   Ú	__rl_sd__úUnknown ctx type: %sN)ÚattrÚ
startswithr?   rG   rz   r#   rM   rF   rK   rL   ri   r^   r(   rv   r‰   rx   ry   )r4   r=   r&   Ú	new_valuer   r   r   Úvisit_AttributeÀ  s,    
ý

ýz'UntrustedAstTransformer.visit_Attributec                 C   s~   |   |¡}t|jtjƒrPtjt dt ¡ ¡|j|  |j	¡gg d�}t
||ƒ |S t|jtjtjfƒrh|S tdt|jƒ ƒ‚dS )aà  Transforms all kinds of subscripts.

		'v[a]' becomes '__rl_getitem__(foo, a)'
		'v[:b]' becomes '__rl_getitem__(foo, slice(None, b, None))'
		'v[a:]' becomes '__rl_getitem__(foo, slice(a, None, None))'
		'v[a:b]' becomes '__rl_getitem__(foo, slice(a, b, None))'
		'v[a:b:c]' becomes '__rl_getitem__(foo, slice(a, b, c))'
		'v[a,b:c] becomes '__rl_getitem__(foo, (a, slice(b, c, None)))'
		#'v[a] = c' becomes '_rl_write__(v)[a] = c'
		#'del v[a]' becomes 'del __rl_sd__(v)[a]'
		Ú__rl_getitem__rB   r±   N)rF   rG   rz   r#   rM   rK   rL   ri   r’   rŠ   r(   r‰   rv   rx   ry   ©r4   r=   r&   r   r   r   Úvisit_Subscriptâ  s    
ý
z'UntrustedAstTransformer.visit_Subscriptc                 C   sœ   |   |¡}tdd„ |jD ƒƒs"|S g }t|jƒD ]R}t|tjƒrftj|g|  ||j	¡d�}| 
|¡ q0tj|g|j	d�}| 
|¡ q0|D ]}t||ƒ qˆ|S )Nc                 s   s   | ]}t |tjƒV  qd S r"   )rG   r#   rI   )rW   Útr   r   r   Ú	<genexpr>  rZ   z7UntrustedAstTransformer.visit_Assign.<locals>.<genexpr>rl   )rF   Úanyrm   ÚreversedrG   r#   rI   rs   rj   ri   r]   r(   )r4   r=   Z	new_nodesrH   Úwrapperr&   r   r   r   Úvisit_Assign  s     
þz$UntrustedAstTransformer.visit_Assignc              
   C   sÆ   |   |¡}t|jtjƒr&|  |d¡ nœt|jtjƒrB|  |d¡ n€t|jtjƒr°tj|jgtj	t dt 
¡ ¡t tt|jƒ ¡t |jjt 
¡ ¡|jgg d�d�}t||ƒ |S tdt|jƒ ƒ‚dS )aj  Forbid certain kinds of AugAssign

		According to the language reference (and ast.c) the following nodes
		are are possible:
		Name, Attribute, Subscript

		Note that although augmented assignment of attributes and
		subscripts is disallowed, augmented assignment of names (such
		as 'n += 1') is allowed.
		'n += 1' becomes 'n = __rl_augAssign__("+=", n, 1)'
		z2Augmented assignment of attributes is not allowed.z?Augmented assignment of object items and slices is not allowed.Ú__rl_augAssign__rB   rl   zUnknown target type: %sN)rF   rG   rH   r#   Ú	Attributer?   Ú	SubscriptrL   rs   rK   rM   r^   ÚaugOpsry   r    r€   ri   r(   rx   r·   r   r   r   Úvisit_AugAssign:  s(    
ýùþ
z'UntrustedAstTransformer.visit_AugAssignc                 C   s   t  | ¡ | S r"   )r4   rF   ©r=   r   r   r   Úvisit_Whilee  s    
z#UntrustedAstTransformer.visit_Whilec                 C   s   |   |¡}|  ||j¡ |S )zàProtect tuple unpacking on exception handlers.

		try:
			.....
		except Exception as (a, b):
			....

		becomes

		try:
			.....
		except Exception as tmp:
			try:
				(a, b) = __rl_getiter__(tmp)
			finally:
				del tmp
		)rF   r—   r9   r¦   r   r   r   Úvisit_ExceptHandleri  s    
z+UntrustedAstTransformer.visit_ExceptHandlerc                 C   sV   |   |¡}|j}t|ƒD ]8}t|jtjƒr|  ||j¡\}}||_|j 	d|¡ q|S )z+Protect tuple unpacking on with statements.r   )
rF   Úitemsr¼   rG   Úoptional_varsr#   rI   r~   rn   r­   )r4   r=   rÇ   r”   r}   Úunpackr   r   r   Ú
visit_With€  s    
þz"UntrustedAstTransformer.visit_Withc                 C   s   |   ||j¡ |  |¡ |S )z:Allow function definitions (`def`) with some restrictions.)r—   r9   rš   r¦   r   r   r   Úvisit_FunctionDef’  s    
z)UntrustedAstTransformer.visit_FunctionDefc                 C   s   |   |¡ |  |¡}|S )z$Allow lambda with some restrictions.)rš   rF   r¦   r   r   r   Úvisit_Lambda™  s    

z$UntrustedAstTransformer.visit_Lambdac                 C   st   |   ||j¡ |  |¡}tdd„ |jD ƒƒr8|  |d¡ t d|j ¡}t 	|¡j
d }|j
|_
|j|_|j|_|S )z%Check the name of a class definition.c                 s   s   | ]}|j d kV  qdS )Ú	metaclassN)r˜   )rW   Úkeywordr   r   r   rº   ¥  rZ   z9UntrustedAstTransformer.visit_ClassDef.<locals>.<genexpr>z0The keyword argument "metaclass" is not allowed.z1			class %s(metaclass=__metaclass__):
				pass
		r   )r—   r9   rF   r»   rE   r?   ÚtextwrapÚdedentr#   Úparsern   ÚbasesÚdecorator_list)r4   r=   Z	CLASS_DEFZnew_class_noder   r   r   Úvisit_ClassDef¡  s    
ýz&UntrustedAstTransformer.visit_ClassDefc                 C   s
   |   |¡S )NÚ
__rl_add__rB   )	rž   rF   r#   rK   rL   rM   ÚleftÚrightr(   r·   r   r   r   Úvisit_Import²  s    
     ý  z$UntrustedAstTransformer.visit_Importc                 C   s€   |   |¡}|j}t|tjtjtjfƒr|t|tjƒr6dnt|tjƒrFdnd}tjt |t 	¡ ¡|j
|jgg d�}t||ƒ |S |S )NÚ__rl_mult__rÕ   Ú
__rl_pow__rB   )rF   r    rG   r#   ÚMultÚAddÚPowrK   rL   rM   rÖ   r×   r(   )r4   r=   r    Zopfr&   r   r   r   Úvisit_BinOp½  s    
þ
ý
z#UntrustedAstTransformer.visit_BinOpc                 C   s   |   |¡ dS )z>Reject nodes which do not have a corresponding `visit` method.N)Únot_allowedr¦   r   r   r   Úgeneric_visitÐ  s    z%UntrustedAstTransformer.generic_visitc                 C   s   |   |d|jj ¡ d S )Nz%s statements are not allowed.)r?   r6   r   r¦   r   r   r   rß   Ô  s    z#UntrustedAstTransformer.not_allowedc                    s   t t| ƒ |¡S )zVisit the contents of a node.)r,   r)   rà   r¦   r5   r   r   rF   ×  s    z&UntrustedAstTransformer.visit_childrenr   c                 C   s4   d|j j }t| || jƒ}td|||f ƒ ||ƒS )NÚvisit_zvisitor=%s=%r node=%r)r6   r   r<   rà   r¨   )r4   r=   ÚmethodÚvisitorr   r   r   ÚvisitÜ  s    zUntrustedAstTransformer.visit)NN)rk   )�r   r	   r
   r   Úpropertyr:   r?   rP   rS   rJ   rj   r~   r�   r‡   rt   r’   r—   rš   rž   r¤   r§   r©   r®   rµ   r¸   r¾   rÃ   rÅ   rÆ   rÊ   rË   rÌ   rÔ   rØ   rÞ   Úvisit_ImportFromÚ	visit_ForÚvisit_comprehensionrà   rß   rF   Ú
eval_debugrä   Úvisit_EllipsisZvisit_MatMultZ
visit_ExecÚvisit_NonlocalÚvisit_AsyncFunctionDefÚvisit_AwaitÚvisit_AsyncForÚvisit_AsyncWithZvisit_PrintZ	visit_NumZ	visit_StrZvisit_BytesÚ
visit_ListÚvisit_TupleÚ	visit_SetÚ
visit_DictÚvisit_FormattedValueÚvisit_JoinedStrZvisit_NameConstantZ
visit_LoadZvisit_StoreZ	visit_DelÚvisit_StarredZvisit_ExpressionÚ
visit_ExprÚvisit_UnaryOpZ
visit_UAddZ
visit_USubZ	visit_NotZvisit_InvertZ	visit_AddZ	visit_SubZ
visit_MultZ	visit_DivZvisit_FloorDivZ	visit_PowZ	visit_ModZvisit_LShiftZvisit_RShiftZvisit_BitOrZvisit_BitXorZvisit_BitAndÚvisit_BoolOpZ	visit_AndZvisit_OrÚvisit_CompareZvisit_EqZvisit_NotEqZvisit_LtZ	visit_LtEZvisit_GtZ	visit_GtEZvisit_IsZvisit_IsNotZvisit_InZvisit_NotInÚvisit_keywordÚvisit_IfExpZvisit_IndexÚvisit_SliceZvisit_ExtSliceÚvisit_ListCompÚvisit_SetCompÚvisit_GeneratorExpÚvisit_DictCompÚvisit_RaiseÚvisit_AssertÚvisit_DeleteÚ
visit_PassÚvisit_aliasÚvisit_IfÚvisit_BreakÚvisit_ContinueÚ	visit_TryZvisit_TryFinallyZvisit_TryExceptÚvisit_withitemÚvisit_argumentsÚ	visit_argÚvisit_ReturnÚvisit_YieldÚvisit_YieldFromÚvisit_GlobalÚvisit_ModuleZvisit_ParamÚ__classcell__r   r   r5   r   r)   C   sú   	
L
;0*"+-+
r)   c                 C   s   t jt | ¡dddd�S )NTé   )Úannotate_fieldsÚinclude_attributesÚindent)r#   ÚdumpÚcopyÚdeepcopyrÄ   r   r   r   Ú	astFormat9  s    r  c                   @   s(   e Zd Zdd„ Zdd„ Zdd„ ZeZdS )Ú__rl_SafeIter__c                 C   s   |ƒ   |¡| _|| _d S r"   )Ú__rl_real_iter__Ú__rl_iter__Ú__rl_owner__)r4   ÚitÚownerr   r   r   r   =  s    z__rl_SafeIter__.__init__c                 C   s   | S r"   r   rX   r   r   r   Ú__iter__A  s    z__rl_SafeIter__.__iter__c                 C   s   |   ¡  ¡  t| jƒS r"   )r  Ú__rl_check__Únextr  rX   r   r   r   Ú__next__D  s    z__rl_SafeIter__.__next__N)r   r	   r
   r   r"  r%  r$  r   r   r   r   r  <  s   r  c                 C   s@   | d u rt  d¡j ¡ } dD ]}|| v r.| |= t ¡ | d< q| S )Nr7   )Ú__annotations__Ú__doc__Ú
__loader__r   Ú__package__Ú__spec__Ú__builtins__)ÚsysÚ	_getframeÚ	f_globalsr  Ú__rl_safe_builtins__)Úgr9   r   r   r   Úsafer_globalsK  s    r1  c                   @   sH  e Zd ZejZejZee	dƒƒZ
dNdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdOdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Z d/d0„ Z!d1d2„ Z"d3d4„ Z#d5Z$d6Z%d7Z&d8d9„ Z'd:d;„ Z(d<d=„ Z)d>d?„ Z*d@dA„ Z+dBdC„ Z,dDdE„ Z-dPdIdJ„Z.dQdLdM„Z/dS )RÚ__RL_SAFE_ENV__r   Nc                    s.  |d ur|nˆj ˆ_|r(|dkr$tq*|ng ˆ_dd l‰ˆjˆ_ˆjˆ_G ‡fdd„dt	ƒ}G dd„ dƒ‰ ˆˆ_
dˆ dƒfdˆjffˆ_t ‡fd	d
„d ¡ D ƒ¡ ‡ ‡fdd
„tˆƒD ƒ ˆ_}| t¡ ˆj|d< ˆj|d< ˆj|d< ˆj|d< ˆj|d< ˆj|d< ˆj|d< ˆj|d< ˆj|d< ˆj|d< ˆj|d< ˆj|d< ‡fdd„|d< t|d< ˆj|d< ||d< ˆj|d< ˆj|d< ˆj|d < ˆj|d!< ˆj |d"< ˆj!|d#< ˆj"|d$< ˆj#|d%< ˆj$|d&< ˆj%|d'< ˆj&|d(< ˆj'|d)< ˆj(|d*< ˆj)|d+< ˆj*|d,< ˆj+|d-< ˆj,|d.< ˆj-|d/< ˆj.|d0< d S )1NTr   c                       s   e Zd Z‡ fdd„ZdS )z-__RL_SAFE_ENV__.__init__.<locals>.__rl_dict__c                    sd   t |ƒdkrLt|d tƒsLzˆ  |d ¡}W n ty>   Y n0 ˆ  |¡f}tj| g|¢R i |¤ŽS ©Nr7   r   )r_   rG   ÚdictZ__real_iter__Ú	TypeErrorrA   Ú__new__)ÚclsrD   Úkwdsr   rX   r   r   r6  d  s    z5__RL_SAFE_ENV__.__init__.<locals>.__rl_dict__.__new__N)r   r	   r
   r6  r   rX   r   r   Ú__rl_dict__c  s   r9  c                   @   s   e Zd Zdd„ Zdd„ ZdS )z5__RL_SAFE_ENV__.__init__.<locals>.__rl_missing_func__c                 S   s
   || _ d S r"   )r   r8   r   r   r   r   o  s    z>__RL_SAFE_ENV__.__init__.<locals>.__rl_missing_func__.__init__c                 _   s   t d| j ƒ‚d S )Nzmissing global %s)r   r   )r4   rD   r8  r   r   r   Ú__call__q  s    z>__RL_SAFE_ENV__.__init__.<locals>.__rl_missing_func__.__call__N)r   r	   r
   r   r:  r   r   r   r   Ú__rl_missing_func__n  s   r;  ÚopenrN   c                    s   i | ]}|t ˆ |ƒ“qS r   )r<   ©rW   Ú_)Úbuiltinsr   r   Ú
<dictcomp>z  rZ   z,__RL_SAFE_ENV__.__init__.<locals>.<dictcomp>a   None False True abs bool callable chr complex divmod float hash hex id int
		isinstance issubclass len oct ord range repr round slice str tuple setattr
		classmethod staticmethod property divmod next object getattr dict iter pow list
		type max min sum enumerate zip hasattr filter map any all sorted reversed range
		set frozenset

		ArithmeticError AssertionError AttributeError BaseException BufferError BytesWarning
		DeprecationWarning EOFError EnvironmentError Exception FloatingPointError FutureWarning
		GeneratorExit IOError ImportError ImportWarning IndentationError IndexError KeyError
		KeyboardInterrupt LookupError MemoryError NameError NotImplementedError OSError
		OverflowError PendingDeprecationWarning ReferenceError RuntimeError RuntimeWarning
		StopIteration SyntaxError SyntaxWarning SystemError SystemExit TabError TypeError
		UnboundLocalError UnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateError
		UnicodeWarning UserWarning ValueError Warning ZeroDivisionError
		__build_class__c                    s$   i | ]}t tˆ|ƒƒr|ˆ |ƒ“qS r   )Úcallabler<   r=  )r;  r?  r   r   r@  Œ  rZ   rÕ   rÙ   rÚ   r°   r¿   r¶   rŸ   rA   Ú__rl_max_len__Ú__rl_max_pow_digits__r@   rh   c                    s   ˆ   | ||¡S r"   )r¬   )rC   rD   r8  rX   r   r   Ú<lambda>œ  rZ   z*__RL_SAFE_ENV__.__init__.<locals>.<lambda>r¬   r  r<   r4  ÚpowÚlistry   ÚmaxÚminÚsumra   ÚzipÚhasattrÚfilterÚmapr»   ÚallÚsortedr¼   ÚrangeÚsetÚ	frozenset)/Ú__rl_tmax__ÚtimeoutÚ__allowed_magic_methods__Úallowed_magic_methodsr?  rP  Ú__rl_gen_range__rN   r  r4  Úreal_birA   Ú
bi_replacer/  ÚupdateÚsplitÚdirÚ__rl_builtins__rÕ   rÙ   rÚ   r°   r¿   r¶   rŸ   rB  rC  r@   rh   r  Ú__rl_list__Ú__rl_type__Ú
__rl_max__Ú
__rl_min__Ú
__rl_sum__Ú__rl_enumerate__Ú
__rl_zip__Ú__rl_hasattr__Ú__rl_filter__Ú
__rl_map__Ú
__rl_any__Ú
__rl_all__Ú__rl_sorted__Ú__rl_reversed__Ú__rl_range__Ú
__rl_set__Ú__rl_frozenset__)r4   rT  rV  r9  r]  r   )r;  r?  r4   r   r   Z  sp    ÿÿÿ
þÿ































z__RL_SAFE_ENV__.__init__c                 G   s    t |ƒdkrt|Ž S tdƒ‚d S )Nr7   ztype call error)r_   ry   r   ©r4   rD   r   r   r   r_  ¶  s    z__RL_SAFE_ENV__.__rl_type__c                 C   s   |   ¡ | jkrtdƒ‚d S )NzResources exceeded)Ú__time_time__Ú__rl_limit__r   rX   r   r   r   r#  º  s    z__RL_SAFE_ENV__.__rl_check__c                 C   s   |S r"   r   )r4   Úobjr   r   r   r°   ¾  s    z__RL_SAFE_ENV__.__rl_sd__c                 C   s   t ||  | ¡d�S )N)r!  )r  Ú__weakref_ref__©r4   r   r   r   r   rA   Á  s    z__RL_SAFE_ENV__.__rl_getiter__c                 O   s*   |r|g}|  |¡ t|  |¡fi |¤ŽS r"   )ÚextendrG  Ú__rl_args_iter__©r4   r˜   rD   r8  r   r   r   r`  Ä  s    
z__RL_SAFE_ENV__.__rl_max__c                 O   s*   |r|g}|  |¡ t|  |¡fi |¤ŽS r"   )ru  rH  rv  rw  r   r   r   ra  Ê  s    
z__RL_SAFE_ENV__.__rl_min__c                 C   s   t |  |¡|ƒS r"   )rI  rv  )r4   ÚsequenceÚstartr   r   r   rb  Ð  s    z__RL_SAFE_ENV__.__rl_sum__c                 C   s   t |  |¡ƒS r"   )ra   rv  ©r4   Úseqr   r   r   rc  Ó  s    z __RL_SAFE_ENV__.__rl_enumerate__c                    s    t ‡ ‡fdd„ttˆ ƒƒD ƒŽ S )Nc                    s   g | ]}ˆ  ˆ ˆ |¡¡‘qS r   )rv  r¶   )rW   Úi©rD   r4   r   r   rY   ×  rZ   z.__RL_SAFE_ENV__.__rl_zip__.<locals>.<listcomp>)rJ  rP  r_   ro  r   r}  r   rd  Ö  s    z__RL_SAFE_ENV__.__rl_zip__c              
   C   s0   z|   ||¡ W n tttfy*   Y dS 0 dS )NFT)rŸ   ÚAttributeErrorr   r5  )r4   rr  r9   r   r   r   re  Ù  s
    z__RL_SAFE_ENV__.__rl_hasattr__c                 C   s   t ||  |¡ƒS r"   )rL  rv  ©r4   Úfr{  r   r   r   rf  à  s    z__RL_SAFE_ENV__.__rl_filter__c                 C   s   t ||  |¡ƒS r"   )rM  rv  r  r   r   r   rg  ã  s    z__RL_SAFE_ENV__.__rl_map__c                 C   s   t |  |¡ƒS r"   )r»   rv  rz  r   r   r   rh  æ  s    z__RL_SAFE_ENV__.__rl_any__c                 C   s   t |  |¡ƒS r"   )rN  rv  rz  r   r   r   ri  é  s    z__RL_SAFE_ENV__.__rl_all__c                 K   s   t |  |¡fi |¤ŽS r"   )rO  rv  )r4   r{  r8  r   r   r   rj  ì  s    z__RL_SAFE_ENV__.__rl_sorted__c                 C   s   |   t|ƒ¡S r"   )rv  r¼   rz  r   r   r   rk  ï  s    z__RL_SAFE_ENV__.__rl_reversed__c                 G   s   |   t|g|¢R Ž ¡S r"   )rA   rP  )r4   ry  rD   r   r   r   rl  ò  s    z__RL_SAFE_ENV__.__rl_range__c                 C   s   t |  |¡ƒS r"   )rQ  rv  rt  r   r   r   rm  õ  s    z__RL_SAFE_ENV__.__rl_set__c                 C   s   t |  |¡ƒS r"   )rR  rv  rt  r   r   r   rn  ø  s    z __RL_SAFE_ENV__.__rl_frozenset__c                 c   s"   ||ƒD ]}|   |||¡V  qdS )zÎProtect sequence unpacking of targets in a 'for loop'.

		The target of a for loop could be a sequence.
		For example "for a, b in it"
		=> Each object from the iterator needs guarded sequence unpacking.
		N)rh   )r4   r   rO   Ú	_getiter_rR   r   r   r   r@   û  s    z+__RL_SAFE_ENV__.__rl_iter_unpack_sequence__c                 C   sN   t |  |¡ƒ}t|ƒ|d k r"|S |d D ]\}}|  || ||¡||< q*|S )a  Protect nested sequence unpacking.

		Protect the unpacking of 'it' by wrapping it with '_getiter_'.
		Furthermore for each child element, defined by spec,
		__rl_unpack_sequence__ is called again.

		Have a look at transformer.py 'gen_unpack_spec' for a more detailed
		explanation.
		r[   rV   )rF  Z__rl__getiter__r_   rh   )r4   r   rO   r�  Úretre   Z
child_specr   r   r   rh     s    z&__RL_SAFE_ENV__.__rl_unpack_sequence__c                 C   s>   t |tƒr:|tv s.| d¡r:|dkr:|| jvr:td| ƒ‚dS )z­Check names if they are allowed.
		If ``allow_magic_methods is True`` names in `__allowed_magic_methods__`
		are additionally allowed although their names start with `_`.
		r¯   zunsafe access of %sN)rG   ÚstrTypesÚ__rl_unsafe__r³   rV  r   r8   r   r   r   Ú__rl_is_allowed_name__  s    
ÿþz&__RL_SAFE_ENV__.__rl_is_allowed_name__c                 G   s>   t |tƒr"|dkr"tdt|ƒ ƒ‚|  |¡ t||g|¢R Ž S )NÚformatz%s.format is not implemented)rG   rƒ  r   ry   r…  r<   )r4   rr  ÚarD   r   r   r   rŸ   )  s    
z__RL_SAFE_ENV__.__rl_getattr__c                 C   s„   t |ƒ| ju r`|jd ur"|| }n:|j}|j}|d u r:d}|d u rP||d … }n|||… }|S t|tƒr||  |¡ || S || S )Nr   )ry   Ú__slicetype__r�   ry  ÚstoprG   rƒ  r…  )r4   rr  r‡  Úvry  r‰  r   r   r   r¶   /  s    



z__RL_SAFE_ENV__.__rl_getitem__é   i † éd   c                 C   s:   t |dƒr2t |dƒr2t|ƒt|ƒ | jkr2tdƒ‚|| S ©NÚ__len__zexcessive length©rK  r_   rB  r   ©r4   r‡  Úbr   r   r   rÕ   F  s
    ÿz__RL_SAFE_ENV__.__rl_add__c                 C   sH   t |dƒr|t|ƒ | jks8t |dƒr@|t|ƒ | jkr@tdƒ‚|| S r�  r�  r�  r   r   r   rÙ   L  s    ÿÿz__RL_SAFE_ENV__.__rl_mult__c                 C   sP   z*|dkr(t |t|ƒ d ƒ| jkr(t‚W n   td||f ƒ‚Y n0 || S )Nr   r7   z%r**%r invalid or too large)ÚintÚ
math_log10rC  r   r�  r   r   r   rÚ   R  s    z__RL_SAFE_ENV__.__rl_pow__c                 C   sÐ   |dkr|   ||¡S |dkr$|| S |dkr8|  ||¡S |dkrH|| S |dkrX|| S |dkrl|  ||¡S |dkr|||> S |dkrŒ||? S |d	krœ||B S |d
kr¬||A S |dkr¼||@ S |dkrÌ|| S d S )Nr   r   r   r   r   r   r   r   r   r   r   r   )rÕ   rÙ   rÚ   )r4   r    rŠ  r|  r   r   r   r¿   [  s    z __RL_SAFE_ENV__.__rl_augAssign__c                 C   s^   t |dd ƒ}|r2t|tƒr2|jdv r2|  |d ¡ |dd„ |  |¡D ƒi dd„ | ¡ D ƒ¤ŽS )NÚ__self__)ÚpopÚ
setdefaultÚgetÚpopitemr   c                 S   s   g | ]}|‘qS r   r   )rW   r‡  r   r   r   rY   n  rZ   z0__RL_SAFE_ENV__.__rl_apply__.<locals>.<listcomp>c                 S   s   i | ]\}}||“qS r   r   ©rW   ÚkrŠ  r   r   r   r@  n  rZ   z0__RL_SAFE_ENV__.__rl_apply__.<locals>.<dictcomp>)r<   rG   r4  r   r…  rA   rÇ   )r4   rC   rD   r8  rr  r   r   r   r¬   i  s
    z__RL_SAFE_ENV__.__rl_apply__c                 G   sF   t |ƒdkr8|d }t|tƒr"|S t|| jƒs8|  |¡S |  t|Ž ¡S r3  )r_   rG   r  rW  rA   rN   )r4   rD   r|  r   r   r   rv  p  s    

z __RL_SAFE_ENV__.__rl_args_iter__c                 C   s   t |  |¡ƒS r"   )rF  rA   rt  r   r   r   r^  z  s    z__RL_SAFE_ENV__.__rl_list__ú<string>r«   Tc           
      C   sz   i }|st ||||| d�}nTt |||¡}	tdkrDtdt|	ƒ ƒ ||	ƒ}	tdkrdtdt|	ƒ ƒ t |	||d�}||fS )N)ÚmodeÚflagsÚdont_inheritr   zpre:
%s
z	post:
%s
©rœ  )Úcompiler#   rÑ   ré   r¨   r  )
r4   ÚsrcÚfnamerœ  r�  Úinheriträ   r-   ÚbcodeZastcr   r   r   Ú__rl_compile__}  s    z__RL_SAFE_ENV__.__rl_compile__r   c                 C   sÒ  | j |d|ddt| jd�jd�\}}	d ||fv rht |¡}
|d u rL|
j ¡ n|}|d u rb|
j ¡ n|}
n|}
|}d|
v r‚|
d fnd}| j	|
d< |  
¡ |d ur¢|n| j | _|d urÎ|rÈ|dkrÄtqÊ|ng | _g j}| j}| j}|D ]"\}}|t||ƒƒ t|||ƒ qäz‚t||
|ƒW |j}t|ƒD ]\}\}}t|||| ƒ �q$|�rV|d |
d< S ]\}\}}t|||| ƒ �qX|�rÎ|d |
d< nB|j}t|ƒD ]\}\}}t|||| ƒ �qš|�rÌ|d |
d< 0 d S )Nr›  r   Tr•   )r¢  rœ  r�  r£  rä   r+  F)r¥  r)   r…  rä   r,  r-  Úf_localsr  r.  r]  rp  rT  rq  rU  rV  r]   rX  rY  r<   Úsetattrr«   r”  ra   )r4   Úexprr0  Úlrœ  rT  rV  Ú__frame_depth__r¤  ÚnsÚGÚLZobiZsbiZbiZbirÚnÚrr|  r   r   r   Ú__rl_safe_eval__‹  sV    ÿ


ÿÿÿú üz __RL_SAFE_ENV__.__rl_safe_eval__)NN)r   )r›  r«   r   TN)NNr   )0r   r	   r
   r1   rp  ÚweakrefÚrefrs  ry   rŠ   rˆ  r   r_  r#  r°   rA   r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  r@   rh   r…  rŸ   r¶   rS  rB  rC  rÕ   rÙ   rÚ   r¿   r¬   rv  r^  r¥  r°  r   r   r   r   r2  V  sP   
\
	

r2  c                   @   s&   e Zd ZdZdZdd„ Zddd„ZdS )	r°  z&creates one environment and re-uses itr«   c                 C   s
   d | _ d S r"   )ÚenvrX   r   r   r   r   ­  s    z__rl_safe_eval__.__init__Nc              	   C   s0   | j st||d�| _ | j j|||| j||dd�S )N)rT  rV  r   )rT  rV  rª  )r³  r2  r°  rœ  )r4   r¨  r0  r©  rT  rV  r   r   r   r:  °  s
    þz__rl_safe_eval__.__call__)NNNN)r   r	   r
   r'  rœ  r   r:  r   r   r   r   r°  ª  s   r°  c                   @   s   e Zd ZdZdS )Ú__rl_safe_exec__rª   N)r   r	   r
   rœ  r   r   r   r   r´  ¶  s   r´  c                    sØ   ˆd u ri ‰ˆd u ri ‰ˆ  ¡ ‰ˆ d dddœ¡ t ˆ¡‰t ˆ¡‰t| tƒr^tj| dd�} t| tjƒrp| j	} z"tj
 ‡fdd„‰‡fdd„‰W n* ty¼   ‡fd	d„‰‡fd
d„‰Y n0 ‡ ‡‡‡fdd„‰ ˆ | ƒS )NTF)r   ÚTrueÚFalser«   rŸ  c                    s"   t | tjƒp t | tjƒo | jˆ v S r"   )rG   r#   r   rL   r€   ©r®  ©Ú
safe_namesr   r   rD  Ê  rZ   z*rl_extended_literal_eval.<locals>.<lambda>c                    s   t | tjƒr| jS ˆ | j S r"   )rG   r#   r   ri   r€   r·  r¸  r   r   rD  Ë  rZ   c                    s   t | tjƒo| jˆ v S r"   )rG   r#   rL   r€   r·  r¸  r   r   rD  Î  rZ   c                    s
   ˆ | j  S r"   )r€   r·  r¸  r   r   rD  Ï  rZ   c                    s  t | tjtjfƒr| jS t | tjƒr*| jS t | tjƒrFtt	ˆ | j
ƒƒS t | tjƒrbtt	ˆ | j
ƒƒS t | tjƒrŽt‡ fdd„t| j| jƒD ƒƒS ˆ| ƒržˆ| ƒS t | tjƒ�rt | jtjtjfƒ�rt | jtjtjtjfƒ�rˆ | jƒ}t | jtjƒ� rü|
 S | S � nþt | tjƒ�r¢t | jtjtjfƒ�r¢t | jtjtjtjfƒ�r¢t | jjtƒ�r¢t | jtjtjtfƒ�r¢ˆ | jƒ}ˆ | jƒ}t | jtjƒ�r˜|| S || S nbt | tjƒ�rt | jtj ƒ�r| jj!ˆv �rˆ| jj! ‡ fdd„| j"D ƒi ‡ fdd„| j#D ƒ¤ŽS t$dƒ‚d S )Nc                 3   s"   | ]\}}ˆ |ƒˆ |ƒfV  qd S r"   r   r™  ©Ú_convertr   r   rº   Ú  rZ   z=rl_extended_literal_eval.<locals>._convert.<locals>.<genexpr>c                    s   g | ]}ˆ |ƒ‘qS r   r   )rW   r®  rº  r   r   rY   õ  rZ   z>rl_extended_literal_eval.<locals>._convert.<locals>.<listcomp>c                    s   i | ]}|j ˆ |jƒ“qS r   )r˜   ri   )rW   Úkwrº  r   r   r@  ö  rZ   z>rl_extended_literal_eval.<locals>._convert.<locals>.<dictcomp>zBad expression)%rG   r#   r^   ÚBytesÚsrb   r®  rI   ÚtuplerM  r`   ÚListrF  r\   r4  rJ  rT   rU   ÚUnaryOpr    ÚUAddÚUSubÚoperandÚBinOprÜ   ÚSubr×   ÚcomplexrÖ   ZastBinOprK   rC   rL   r€   rD   rE   Ú
ValueError)r=   rÄ  rÖ   r×   )r»  Úsafe_callablesÚsafe_extractÚ	safe_testr   r   r»  Ð  s`    ÿÿþ

ÿþýü


ÿ
þ
ÿþz*rl_extended_literal_eval.<locals>._convert)r  rZ  ÚtypesÚMappingProxyTyperG   Ústrr#   rÑ   Ú
Expressionrn   r   r~  )r¨  rÉ  r¹  r   )r»  rÉ  rÊ  r¹  rË  r   Úrl_extended_literal_eval¹  s*    


(rÐ  )N)NN)>r,  Úosr#   Úrer±  r1   r  ÚmathrÌ  r’  Úenvironr—  ré   ÚbytesrÎ  rƒ  Úversion_infor“   rK  ZhaveNameConstantrÏ   rÈ  r   rÜ   rÆ  rÛ   ÚDivÚModrÝ   ÚLShiftÚRShiftÚBitOrÚBitXorÚBitAndÚFloorDivÚMatMultrÂ   rR  rU  r[  r„  r   ÚjoinÚMZ__rl_unsafe_re__r(   ÚNodeTransformerr)   r  r  r/  r1  Úlog10r“  ÚobjectZ__rl_undef__r2  r°  r´  rÐ  Úrl_safe_execÚrl_safe_evalr   r   r   r   Ú<module>   sX   H
ó     {
	  V
A