
    Ng!                    	   d dl mZ d dlZ ej        di dedededededed	ed
ededededededededededededededededej        dej        dede d dlm	Z	 d dl
Z
d dlZd dlmZmZ d d lmZmZ d!d"lmZmZ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mZmZm Z  d!d(l!m!Z! d!d)l"m#Z#m$Z$ d*d+lm%Z% d!d,lm&Z& d!d-lm'Z' ej(        d          d.k    Z)ej*        d/k    Z+d0Z, G d1 d2e          Z-dd4Z.d5 Z/d6 Z0d7 Z1d8 Z2d9 Z3d: Z4d; Z5d<d=d>Z6d? Z7d@ Z8dA Z9dB Z:dC Z;dD Z<dE Z=dF Z>dG Z?dH Z@ ej        eA eAdI                    ZBdJ ZCdK ZDdL ZEdM ZFdN ZGdO ZHdP ZIdQ ZJdR ZKdS ZLdT ZMdU ZNdV ZOdW ZPdX ZQdY ZRdd[ZSd\ ZTd] ZUd^ ZVd_ ZWd` ZXda ZYdb ZZdc Z[dddZ\de Z]df Z^dg Z_dh Z`di ZaddkZbdl ZcddmZddn Zedo dpD             \  ZfZgdq Zhdr Zids Zjdt Zkdu Zldv Zmdw Zndx Zody ZpddzZqdd{Zrdd|Zsd} Ztd~ Zud Zvd Zw ej        eA eAd                    Zxd Zyd Zzd Z{d Z|d Z}d Z~ddZd Zd Zd Zd Zd ZddZd Zd Zd Zd Z ej        eA eAd                    Zd Zd Zd Zd Zd dZdpdZd Zd Z ej        eA eAd                    Zd Zd ZdpdZd Zd Zd Zd Zd dZd Zd Zd ZddZddZd Zd Zd ZddZddZ e-            fdZd dZddZddZd Z ej        eA eAd                    ZddZddZd Zd Zd Zd Zd Zd Zd Zd Z ej        eA eAd                    Z ej        edddddddddĜ          Z ej        eA eAdŦ                    Z ej        eAeez   eAe          z            Z ej        eA eAdƦ                    ZdǄ ZdȄ Z e-            d d d d d d fdɄZdʄ Zd˄ Z ej        eA eAd̦                    Zd̈́ Zd΄ Zdτ ZdЄ Z ej        eA eAdѦ                    Z e-            d d d d d!fd҄Zdӄ Z	 	 ddԄZdՄ Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Zd݄ Zdބ Zd߄ Zd Zd Zd Zd Zd ZؐddZِddZڐddZd Zd Zd Zd Zd Zd Zd Zde-fdZ ej        e e
j        d          j                  Zd Ze-fdZd Zd Zd ZddZd ZdS (      )absolute_importNNodes	ExprNodesEncodedStringbytes_literalStringEncodingFileSourceDescriptorlookup_unicodecharunicode_categoryFutureOptionserrorwarningBuiltin
ModuleNodeUtils_unicode_bytesresys_parse_escape_sequences_parse_escape_sequences_rawpartialreduce_IS_PY3_IS_2BYTE_UNICODE_CDEF_MODIFIERSCOMMON_BINOP_MISTAKES)StringIO)lookupcategory)r   r      )PyrexScannerr	   tentatively_scan)r   )r   )r   )r   )r   r   r   r   )r   )r   r      )r   )r   )r      i  )inlinenogilapic                   B    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d ZdS )Ctxotherprivater   NFc                 :    | j                             |           d S N)__dict__update)selfkwdss     S/var/www/html/ai-engine/env/lib/python3.11/site-packages/Cython/Compiler/Parsing.py__init__zCtx.__init__7   s    T"""""    c                     t                      }|j        }|                    | j                   |                    |           |S r/   )r+   r0   r1   )r2   r3   ctxds       r4   __call__zCtx.__call__:   s:    eeL		
r6   )__name__
__module____qualname__level
visibility	cdef_flagtypedef_flagr)   overridabler(   	namespace	templatesallow_struct_enum_decoratorr5   r:    r6   r4   r+   r+   *   se        EJIL
CKEII"'# # #    r6   r+   Expected an identifierc                     | j         dk    r5| j                            | j                  }|                                  |S |                     |           d S NIDENT)sycontextintern_ustringsystringnextr   )smessagenames      r4   p_identrS   B   sN    twy''
33		r6   c                    g }| j         dk    rq|                    | j                            | j                             |                                  | j         dk    rn|                                  | j         dk    q|S )NrJ   ,)rK   appendrL   rM   rN   rO   )rP   namess     r4   p_ident_listrX   J   sr    E
$'//QY--aj99:::	43;;	 $'// Lr6   c                 h    |                                  }| j        }|                                  ||fS r/   )positionrK   rO   )rP   posops      r4   p_binop_operatorr]   Z   s,    
**,,C	
BFFHHHs7Nr6   c                     ||           }| j         |v rjt          |           \  }} ||           }t          j        ||||          }|dk    r't          j        | j        j        v rd|_        nd |_        | j         |v j|S )N/T)	rK   r]   r   
binop_noder   divisionrL   future_directivestruedivision)rP   ops
p_sub_exprn1r\   r[   n2s          r4   p_binop_exprrh   `   s    	AB
$#++"1%%CZ]]!#r2r2299!)"==="&"& $#++ Ir6   c                    |                                  }|                                  | j        dk    rg }d x}}nt          | dd          \  }}}|                     d           t          |           }t          j        |||||          S )N:F)
terminator	annotated)argsstar_argstarstar_argresult_expr)rZ   rO   rK   p_varargslistexpectp_testr   
LambdaNode)rP   r[   rm   rn   ro   exprs         r4   	p_lambdefrv   o   s    
**,,CFFHHHts{{"&&<<'4#(0 (0 (0$hHHSMMM!99DDL   r6   c                 d    t          |           }| j        dk    r|                     d           |S )N:=zAinvalid syntax: assignment expression not allowed in this context)p_test_allow_walrus_afterrK   r   )rP   ru   s     r4   rs   rs      s4     %Q''Dtt||	STTTKr6   c                 T   | j         dk    rt          |           S |                                 }t          |           }| j         dk    r_|                                  t          |           }|                     d           t          |           }t          j        ||||          S |S )Nlambdaifelse)testtrue_val	false_val)	rK   rv   rZ   	p_or_testrO   rr   rs   r   CondExprNode)rP   r[   ru   r~   r,   s        r4   ry   ry      s    tx||
**,,CQ<<Dtt||	||	q		%ctuUUUUr6   c                    t          |           }| j        dk    rl|                                 }|j        s|                     dd           |                                  t          |           }t          j        |||          S |S )Nrx   z=Left-hand side of assignment expression must be an identifierFfatallhsrhs)	ry   rK   rZ   is_namer   rO   rs   r   AssignmentExpressionNode)rP   r   rZ   r   s       r4   p_namedexpr_testr      s     $A
&
&Ctt||::<<{ 	bGGS[`Gaaa	Qii1(MMMMJr6   orand)z||&&c                 .    t          | dt                    S )Nr   )p_rassoc_binop_expr
p_and_testrP   s    r4   r   r      s    q%444r6   c                     ||           }| j         |k    rX|                                 }| j         }|                                  t          | ||          }t	          j        ||||          }nT| j         t          v rFt          | j                  |k    r0t          |                                 d| j         d|dd           |S )NzFound the C operator 'z%', did you mean the Python operator 'z'?r"   r>   )rK   rZ   rO   r   r   r`   r   r   )rP   r\   	p_subexprrf   r[   rg   s         r4   r   r      s    	1BtrzzjjllT	 B	22!#r2r22	
&	&	&+@+F"+L+L

WXW[W[W[]_]_]_`	 	 	 	 Ir6   c                 .    t          | dt                    S )Nr   )r   
p_not_testr   s    r4   r   r      s    q&*555r6   c                     | j         dk    rK|                                 }|                                  t          j        |t          |                     S t          |           S )Nnotoperand)rK   rZ   rO   r   NotNoder   p_comparisonrP   r[   s     r4   r   r      sO    tu}}jjll	 
1>>>>Ar6   c                    t          |           }| j        t          v rl|                                 }t	          |           }t          |           }t          j        ||||          }| j        t          v rt          |           |_        |S )N)operatoroperand1operand2)	p_starred_exprrK   comparison_opsrZ   p_cmp_opr   PrimaryCmpNodep_cascaded_cmpcascade)rP   rf   r[   r\   rg   s        r4   r   r      s    			Bt~jjlla[[A%cbR9 9 94>!!'**BJIr6   c                 T    | j         dk    rt          |           S t          |           S N*)rK   r   rs   r   s    r4   p_test_or_starred_exprr      s'    ts{{a   ayyr6   c                 T    | j         dk    rt          |           S t          |           S r   )rK   r   r   r   s    r4    p_namedexpr_test_or_starred_exprr      s)    ts{{a   """r6   c                     |                                  }| j        dk    rd}|                                  nd}t          |           }|rt	          j        ||          }|S )Nr   TF)rZ   rK   rO   
p_bit_exprr   StarredUnpackingNode)rP   r[   starredru   s       r4   r   r      s]    
**,,Cts{{	a==D 9-c488Kr6   c                     |                                  }t          |           }t          |           }t          j        |||          }| j        t          v rt          |           |_        |S )N)r   r   )	rZ   r   r   r   CascadedCmpNoderK   r   r   r   )rP   r[   r\   rg   results        r4   r   r      sf    
**,,C	!B			B&s"& & &Ft~'**Mr6   c                 B   | j         dk    r,|                                  |                     d           d}n_| j         dk    r9|                                  | j         dk    r|                                  d}nd}n| j         }|                                  |dk    rd}|S )Nr   innot_inisis_not<>!=)rK   rO   rr   rP   r\   s     r4   r   r     s    tu}}			
	45==FFHHHBBBBT		TzzIr6   )
<>==>=<=r   r   r   r   r   c                 .    t          | dt                    S )N)|)rh   
p_xor_exprr   s    r4   r   r          6:...r6   c                 .    t          | dt                    S )N)^)rh   
p_and_exprr   s    r4   r   r   %  r   r6   c                 .    t          | dt                    S )N)&)rh   p_shift_exprr   s    r4   r   r   *  s    6<000r6   c                 .    t          | dt                    S )N)<<>>)rh   p_arith_exprr   s    r4   r   r   /  s    <666r6   c                 .    t          | dt                    S )N)+-)rh   p_termr   s    r4   r   r   4  s    :v...r6   c                 .    t          | dt                    S )N)r   @r_   %z//)rh   p_factorr   s    r4   r   r   9  s    5x@@@r6   c                      t          |           S r/   )	_p_factorr   s    r4   r   r   >  s    Q<<r6   c                    | j         }|dv rR| j         }|                                 }|                                  t          j        ||t          |                     S | j        s|dk    rM|                                 }|                                  t          |           }t          j        ||          S |dk    rt          |           S |dk    r| j	        dk    rt          |           S t          |           S )N)r   r   ~r   r   r   rJ   sizeof)rK   rZ   rO   r   	unop_noder   in_python_fileAmpersandNode
p_typecastrN   p_sizeofp_power)rP   rK   r\   r[   args        r4   r   r   B  s    	
B	_Tjjll	"3HQKK888 	99**,,CFFHHH1++C*3#>>>>3YYa== 7]]qzX55A;;1::r6   c                 \   |                                  }|                                  t          |           }t          |t          j                  }t          |t          j        t          j        t          j        f          }|s|s|j	        | 
                    d           t          | d          }| j        dk    r|                                  d}nd}|                     d           t          |           }|rt          j        |||          S t          j        |||||          S )	NzUnknown typer"   empty?r   r   )base_type_noder   )	base_type
declaratorr   	typecheck)rZ   rO   p_c_base_type
isinstancer   MemoryViewSliceTypeNodeTemplatedTypeNodeCConstOrVolatileTypeNodeCTupleBaseTypeNoderR   r   p_c_declaratorrK   rr   r   r   CythonArrayNodeTypecastNode)rP   r[   r   is_memsliceis_other_unnamed_typer   r   r   s           r4   r   r   U  s)   
**,,CFFHHHa  IY(EFFK&y& 3  
   0  in6L	1---Jts{{				HHSMMMqkkG Y(YPWXXXX!#	   r6   c                    |                                  }|                                  |                     d           t          |           r&t	          |           }t          j        ||          }n7t          |           }t          | d          }t          j	        |||          }|                     d           |S )N(r   r"   r   r   r   ))
rZ   rO   rr   looking_at_exprrs   r   SizeofVarNoder   r   SizeofTypeNode)rP   r[   r   noder   r   s         r4   r   r   s  s    
**,,CFFHHHHHSMMM q <))&sg>>>!!$$	#Aq111
'!
< < <HHSMMMKr6   c                    |                                  }|                                  d}| j        dk    rd}|                                  | j        dk    r/| j        t          vr!|rt	          |           nt          |           }n|r|                     d|d           d }|rt          j        ||          S t          j	        ||          S )NFfromTr   z''yield from' requires a source argumentr[   r   r   )
rZ   rO   rK   statement_terminatorsrs   
p_testlistr   r   YieldFromExprNodeYieldExprNode)rP   r[   is_yield_fromr   s       r4   p_yield_expressionr	    s    
**,,CFFHHHMtv~~	ts{{qt#888(;fQiiijmm 	*GG=5  * * * 5*3C8888&s4444r6   c                 V    t          |           }t          j        |j        |          S )Nru   )r	  r   ExprStatNoder[   )rP   
yield_exprs     r4   p_yield_statementr    s'    #A&&Jjn:>>>>r6   c                    | j         dk    r<d|j        v r|                     d           |j        | _        t          | |d          S |r|                     d           d S | j         dk    rt	          | d          S | j         d	k    r%|                                  t          | d          S |                     d
           d S )Ndefpxddef statement not allowed hereT)is_async_def7Decorators can only be followed by functions or classesforis_asyncwithz2expected one of 'def', 'for', 'with' after 'async')rK   r>   r   p_def_statementp_for_statementrO   p_with_items)rP   r8   
decoratorss      r4   p_async_statementr    s    tu}}CIGG4555)q*4@@@@	 F	IJJJJJ	
q40000	
	A----	DEEEEEr6   c                 $   | j         dk    r-|                                 d         dk    rt          |           S d }| j        dk    r(|                                 }|                                  t          |           }| j        dv rt          | |          }| j        dv |rt          j	        ||          }| j        dk    rN|                                 }|                                  t          |           }t          j        |d||          }|S )Nnewr   rJ   await)r   [.r  **)rN   peek
p_new_exprrK   rZ   rO   p_atom	p_trailerr   AwaitExprNoder   r`   )rP   	await_posrf   r[   rg   s        r4   r   r     s    zUqvvxx{g55!}}ItwJJLL			B
$/
!
!q" $/
!
! 8$YB777tt||jjll	a[[!#tR44Ir6   c                     |                                  }|                                  t          |           }t          | t	          j        ||                    S )N)cppclass)rZ   rO   r   p_callr   NewExprNode)rP   r[   r+  s      r4   r%  r%    sI    
**,,CFFHHHQH!Y*38DDDEEEr6   c                 
   |                                  }| j        dk    rt          | |          S | j        dk    rt          | |          S |                                  t          |           }t          j        |||          S )Nr   r!  )obj	attribute)rZ   rK   r,  p_indexrO   rS   r   AttributeNode)rP   node1r[   rR   s       r4   r'  r'    s~    
**,,Cts{{a	
q%   	qzz&s' ' ' 	'r6   Tc                 2   |                                  }|                                  g }g }d}d}| j        dk    r| j        dk    re|r)|                     d|                                             |                                  |                    t          |                      d}nM| j        dk    r:|                                  |                    t          |                      d}nt          |           }| j        dk    r|                                  |j        s|                     d	|j                   | j	        
                    |j                  }t          j        |j        |
          }	t          |           }|                    |	|f           nV|r|                     d|j                   |r|s|d                             |           n|                    |g           d}| j        dk    rn |                                  | j        dk    | j        dv rN|sL|sJt          |          dk    r7t          |d                   dk    rt          | |d         d                   gg}|                     d           |pg g|fS )NFr   r   %Non-keyword arg following keyword argr[   Tr#  =z!Expected an identifier before '='valuerU   r  asyncr"   r   )rZ   rO   rK   r   rV   rs   r   r   r[   rL   rM   rR   r   IdentifierStringNodelenp_genexprr   )
rP   allow_genexpr[   positional_argskeyword_argsstarstar_seenlast_was_tuple_unpackr   encoded_namekeywords
             r4   p_call_parse_argsrG    s   
**,,CFFHHHOLM!
$#++43;; S?QZZ\\RRRFFHHH""6!99---$(!!TT\\FFHHHq		*** MM"1%%Cts{{{ )GG? #  ) ) ) y77AA#8G<1 1 1Qii##WcN3333 RGGCGQQQ" 2+@ 2#B'..s3333#**C5111(-%43;;	C $#++F 	t 	I$9 	I?##q((S1C-D-D-I-I$,Q0B10E$F$F#G"HHHSMMM"rdL00r6   c                     d } fd|D             }t          t          t          j         d          |          }|r;g }g }|D ]}t	          |t
                    r5|\  }	}
|                    t          j        |	j        |	|
                     L|j	        r|
                    |j                   n|r7|                    t          j        |d         j        |d                     g }|                    |           |r5|                    t          j        |d         j        |d                     |r?t          |          dk    r|d         j	        r	|d         }nt          j         |          }||fS )	Nc                     g | ]C}t          |t                    rt          j        |           nt          j        |          DS )rm   r  )r   listr   	TupleNodeAsTupleNode.0r   r[   s     r4   
<listcomp>z,p_call_build_packed_args.<locals>.<listcomp>"  s_        /9d.C.Cl	Cc****I^_bhkIlIlIl  r6   r   r[   keyr9  r   T)key_value_pairsreject_duplicatesr"   )rB  )r   r   r   r`   r   tuplerV   DictItemNoder[   is_dict_literalextendrS  DictNoder>  MergedDictNode)r[   rA  rB  keyword_dict	subtuples	arg_tuplekwargs
dict_itemsitemrR  r9  s   `          r4   p_call_build_packed_argsra    s   L   "  I
 wy3S#>>	JJI R
  	$ 	$D$&& $!
U!!)"8SW#UZ"["["[\\\\% $!!$"67777 $MM)"4"1):Y]#_ #_ #_ ` ` `!#Jd#### 	XMM),1!:QUW W W X X X  	R6{{aF1I$=%ay  )7&QQQl""r6   c                 @   |                                  }t          |           \  }}|sKt          |          dk    r8t          |d         t                    rt          j        |||d                   S t          |||          \  }}t          j        ||||          S )Nr"   r   )functionrm   )rc  rA  rB  )	rZ   rG  r>  r   rK  r   SimpleCallNodera  GeneralCallNode)rP   rc  r[   rA  rB  r]  r[  s          r4   r,  r,  I  s    
**,,C$5a$8$8!O\ ZC00A55*_UVEWY]:^:^5'h_UVEWXXXX":3Q]"^"^	<((ILZ Z Z 	Zr6   c                    |                                  }|                                  t          |           \  }}|r=t          |d                   dk    r$|d         \  }}t	          j        ||||          }nHt          ||          }|r	|d         }	nt	          j        ||          }	t	          j        |||	          }| 	                    d           |S )Nr   r%   )basestartstoprJ  rg  index])
rZ   rO   p_subscript_listr>  r   SliceIndexNodemake_slice_nodesrL  	IndexNoderr   )
rP   rg  r[   
subscriptsis_single_valuerh  ri  r   indexesrk  s
             r4   r1  r1  Z  s    
**,,CFFHHH"21"5"5J (3z!}--22 mt)#t5 5 5 #3
33 	=AJEE'G<<<E$S( ( (HHSMMMMr6   c                     d}t          |           g}| j        dk    rOd}|                                  | j        dk    rn-|                    t          |                      | j        dk    O||fS )NTrU   Frl  )p_subscriptrK   rO   rV   )rP   rr  itemss      r4   rm  rm  n  sr    O^^E
$#++	43;;[^^$$$ $#++ /!!r6   c                    |                                  }t          | d          }| j        dk    r|gS |                                  t          | d          }| j        dk    r||gS |                                  t          | d          }|||gS )N)rj   rj   )rj   rU   rl  )rZ   p_slice_elementrK   rO   )rP   r[   rh  ri  steps        r4   ru  ru  {  s     **,,CAv&&Ets{{wFFHHH1o..Dts{{t}FFHHH1o..D4r6   c                 6    | j         |vrt          |           S d S r/   )rK   rs   )rP   
follow_sets     r4   rx  rx    s"     	t:ayytr6   c                 0    |                      d           d S )N...)rr   r   s    r4   expect_ellipsisr~    s    HHUOOOOOr6   c                     g }|D ]Q}t          |          dk    r|                    |d                    1|                    t          | g|R             R|S )Nr"   r   )r>  rV   make_slice_node)r[   rq  r   	subscripts       r4   ro  ro    sl    
 F < <	y>>QMM)A,''''MM/#:	:::;;;;Mr6   c                     |st          j        |           }|st          j        |           }|st          j        |           }t          j        | |||          S )N)rh  ri  ry  )r   NoneNode	SliceNode)r[   rh  ri  ry  s       r4   r  r    sm     ("3'' '!#&& '!#&&sd41 1 1 1r6   c                    |                                  }| j        }|dk    rw|                                  | j        dk    rt          j        |g           }n*| j        dk    rt          |           }nt          |           }|                     d           |S |dk    rt          |           S |dk    rt          |           S |dk    rt          |           S |dk    r#t          |            t          j        |          S |d	k    rt          |           S |d
k    r1| j        }|                                  t          j        ||          S |dk    r9| j        d d         }|                                  t          j        ||          S |dk    rt#          |           \  }}}|dk    rt          j        ||          S |dk    rt          j        |||          S |dk    rt          j        ||          S |dk    rt          j        ||          S |dk    rt          j        |||          S |                     d|z             d S |dk    r| j        }|dk    rt          j        |          }nl|dk    rt          j        |d          }nO|dk    rt          j        |d          }n2|dk    r| j        st          j        |          }nt9          | |          }|                                  |S |                     d           d S ) Nr   r   rJ  yieldr!  {`r}  INTFLOATr8  IMAGr:  BEGIN_STRINGcu)r9  bytes_valuebfvalues )r9  unicode_valuezinvalid string kind '%s'rJ   NoneTrueTFalseFNULLz!Expected an identifier or literal)rZ   rK   rO   r   rL  r	  p_testlist_comprr   p_list_makerp_dict_or_set_makerp_backquote_exprr~  EllipsisNodep_int_literalrN   	FloatNodeImagNodep_cat_string_literalCharNodeUnicodeNode	BytesNodeJoinedStrNode
StringNoder   r  BoolNoder   NullNodep_name)	rP   r[   rK   r   r9  kindr  r  rR   s	            r4   r&  r&    s   
**,,C	
B	Syy	43;;(R888FFTW__'**FF$Q''F		sA	s"1%%%	s"""	u%c***	uQ	w
	"36666	v
3B3	!#u5555	~		+?+B+B(k=3;;%c;????S[[(mS^____S[[&sK@@@@S[[*3GGGGRZZ'[R_````GG.566666	wz6>>',,FFV^^'4888FFW__'5999FFV^^A$4^',,FFAt__F		344444r6   c                 x   |                                  }| j        }|                                  d}d}|d         dv r)|d         dv r|dz  }n|dz  }|d d         }|d         dv )d }|rd}n|r|dk    s| j        j        d	k    rd}| j        r|rt          |d
           d}t          j        |||||          S )Nr  r:  UuLlLlLUTLLr&   z4illegal integer literal syntax in Python source fileF)is_c_literalr9  unsignedlongness)	rZ   rN   rO   rL   language_levelr   r   r   IntNode)rP   r[   r9  r  r  r  s         r4   r  r    s   
**,,CJEFFHHHHH
)w

9OHHOHcrc
 )w

 L  	  tqy71<<L  	O#MNNNS,8%*(0(0	2 2 2 2r6   c                     |                                  }| j        s7|| j        v r.| j                            |          }t	          ||          }||S t          j        ||          S )NrR   )rZ   compile_time_exprcompile_time_envlookup_herewrap_compile_time_constantr   NameNode)rP   rR   r[   r9  r   s        r4   r  r    sm    
**,,C 41+=#=#="..t44)#u55Kc----r6   c           
          t          |          }|t          j                   S |t          u rt          j                   S t          |t                    rt          j         |          S t          |t                    rt          j	         ||          S t          |t                    rt          j         ||          S t          |t                    rt          j         t          |j                  t          d|j                            }|j        rEt          j         dt          j         t          |j                  |j                  ||          }|S t          |t"                    r#t          j         t'          |                    S t          |t(                    r't+          |d          }t          j         ||          S t          |t.                    r* fd|D             }d |vrt          j         |          S d S t2          s?t          |t4                    r*t          j	         |                    d	          |          S t9           d
|d|j        j        d           d S )Nr8  )r9  constant_resultg        r   )r  asciic                 0    g | ]}t          |          S rF   )r  rN  s     r4   rP  z.wrap_compile_time_constant.<locals>.<listcomp>3  s3     " " " +344 " " "r6   rJ  r  z(Invalid type for compile-time constant: z (type r   )reprr   r  Ellipsisr  r   boolr  intr  floatr  complexr  imagrealr`   r   r  r   r   r   r  rU  rL  r   longrstripr   	__class__r;   )r[   r9  repr   bvaluerm   s   `     r4   r  r    s   
u++C}!#&&&	(		%c***	E4	 	  T!#U3333	E3		 T CGGGG	E5	!	! T"3c5IIII	E7	#	# T!#T%*-=-=wWZ\a\fOgOghhh: 	' 'S)-cej9I9I[`[efffhl %' ' 'D 	E8	$	$ T$Se0D0DEEEE	E6	"	" Tug.."3feLLLL	E5	!	! 	T" " " " " " "t&s6666 4 TE400 T CJJsOOUSSSS	##%%1113 4 4 44r6   c           	         |                                  }t          |           \  }}}|dk    s| j        dk    r|||fS |g|g|g}}}d x}}| j        dk    r|                                  }t          |           \  }}	}
|dk    rt          |d           I||k    r'||hddhddhfv rd}nt          |d|d|d	           v|                    |	           |                    |
           |                    |           | j        dk    |d
v s
|dk    r+d |vr't          t          j        |          | j                  }|dv r,t          d
                    d |D                                 }|dk    rig }t          ||          D ]V\  }}t          |t                    r||z  } |                    t          j        |t          |                               W|||fS )Nr  r  zCCannot concatenate char literal with another string or char literalr  r  r  z8Cannot mix string literals of different types, expected z'', got z'')r  r  r  r  r  c                     g | ]}||S r/   rF   )rO  r  s     r4   rP  z(p_cat_string_literal.<locals>.<listcomp>a  s    /U/U/Uaq}}}}r6   r8  )rZ   p_string_literalrK   r   rV   r   r   
join_bytessource_encodingr   joinzipr   rK  r   r  )rP   r[   r  r  r  bstringsustrings	positions	next_kindnext_bytes_valuenext_unicode_valuer  s               r4   r  r  A  sP    **,,C'7':':$D+}s{{adn,,[-//%0MM?SE	hH"&&K-
$.
 
 jjll:J1:M:M7	#%7#\]]]$i c3Z#r$;;;ccDD)))% & & &()))*+++! $.
 
 $ ~X1E1E#N$=h$G$GIZ[[y%chh/U/U8/U/U/U&V&VWWs{{(I.. 	Y 	YFAs!T"" Y" $$Y%:3mTUFVFV%W%W%WXXXXm++r6   r  c                     | j         dk    rd S |                                 }t          | |          \  }}}|dk    r|dk    r|                     d|           |S |dk    r|S |                     d           d S )Nr  r  r  zf-string not allowed herer  z#internal parser configuration error)rK   rZ   r  r   )rP   required_typer[   r  r  r  s         r4   p_opt_string_literalr  m  s    t~t
**,,C'7='I'I$D+}3;;GG/555	#			566666r6   c                 "    | D ]}|dk    r dS dS )N   TFrF   )stringr  s     r4   check_for_non_ascii_charactersr  |  s+      <<44 5r6   c                    |                                  }| j        j        dk    }d}|d         |d         |d         t          | j                  z   f}| j                            d                                          }t          |          dk    rt          t          |                    t          |          k    rt          |d           d|v rd	|v rt          |d
           d|v rd|v rt          |d           d	|v rd|v rt          |d           d|v }d|v r&t          |          dk    rt          |d           d}nd|v rd}d}nd|v rd}n	d	|v rd	}nd}|dk    r6|4t          j
        | j        j        v rt          j        | j                  }	d	}nY||dv r|}|dv rt          j                    }	n9|dk    rt          j        | j                  }	nt          j        | j                  }		 |                                  | j        }
| j        }|
dk    r+|	                    |           |r|st)          |          rd}n|
dk    rR|r=|s|d	k    s
|d         dvr+|	                    |           |r|st)          |          rd}nut+          ||	||            nb|
dk    r|	                    d           nF|
dk    rnA|
dk    r|                     d|           n!|                     d|
d| j        d            |dk    r=d }|	                                }t          |          dk    rt          |d!|z             nR|	                                \  }}|r9|r7t          j
        | j        j        v r|dk    r|                     d"|           d }|dk    rt1          | ||d|v #          }|                                  |||fS )$Nr&   Fr   r"   r%   z"'z!Duplicate string prefix characterr  r  z*String prefixes b and u cannot be combinedr  z*String prefixes b and f cannot be combinedz*String prefixes u and f cannot be combinedrr  z+Invalid string prefix for character literalTr  ub)r  r  CHARSESCAPEUuNEWLINE

END_STRINGEOFzUnclosed string literalr6  zUnexpected token rj   z in string literalzinvalid character literal: %rz0bytes can only contain ASCII literal characters.)is_raw)rZ   rL   r  r>  rN   r  lowersetr   r   unicode_literalsrb   r   StrLiteralBuilderr  UnicodeLiteralBuilderBytesLiteralBuilderrO   rK   rV   r  _append_escape_sequencegetchar
getstrings
p_f_string)rP   kind_overrider[   is_python3_source has_non_ascii_literal_charactersstring_start_poskind_stringr  r  charsrK   systrr  r  s                 r4   r  r    s    **,,C	0A5',$AAAQZ(@A*##E**0022K
;!s;  C$4$444#:;;;+#"4"4#CDDD+#"4"4#CDDD+#"4"4#CDDDKF
k {q  #DEEE									rzzm+0G19Kf0f0f01BCC$$)>)> D:"8::EERZZ"4Q5FGGEE"6q7HIIE!	T
==LL  8)I 8NlmrNsNs 83708^^ ?, ?uQxu?T?TU###$ <-M <RpqvRwRw <7;4'eUA>>>>9__LL<5[[GG-3G7777GGGAJJJ  ! ! !1!6 s{{mmoo{q  #7+EFFF%*%5%5%7%7"], 	%	*0*AQYE`*`*`s{{JPSTTTKs{{"1m5EcU`N`aaaFFHHH+}--r6   c           	      R   |d         }|dv r-|                     t          |dd          d                     d S |dv r|                    |           d S |dv r)|                    t          j        |                     d S |dk    rd S |dk    r\t          |          dk    r-|                     t          |d	d          d
                     d S |                    d|z  d           d S |dv r| dv rd}|dk    rd }	 t          |dd                   }t          |          }nH# t          $ rE |                    dt          |dd                                       d          z  d           Y nt          $ r |t          r}t          |          d	k    rjt          |d                   dk    rQt          |d                   dk    r8dt          |d                   dz
  z   dt          |d                   dz
  z   z	  }n Y nhw xY wt          |          dv r9t          |d	d          d
          }|dk    r|                    d|z             d}n|                    d|z  d           |dk    r|                    ||           d S d S |                    |           d S )Nr"   01234567   z'"\abfnrtvr  x   r%      zInvalid hex escape '%s'Fr   NUu)r  r  r  r:  Nr&   z!Unknown Unicode character name %sr  r   Csi   i   
   i   )   r
  i zInvalid unicode escape '%s')append_charvalr  rV   r   char_from_escape_sequencer>  r   r
   ordKeyErrorr  lstrip	TypeErrorr   r   append_uescape)r  builderescape_sequencerP   r  chrvaluchars          r4   r  r    s$   AKs?122#6::;;;;;	
hq	
j~?PPQQQQQ	
e	
d1$$""3qrr':B#?#?@@@@@GG-?uGMMMMM	
f//99E*?1R4+@AAU N N N;_QrT233::3??@GL  N N N N N   %*;%E

a(q22d::?OPUVWPX?Y?Y]a?a?a$E!H(>?2USTXY_I_C``FF F !!W,,,b11F5GHHHGG1OC5GQQQQ;;""6?;;;;; ; 	'''''s   &D* *AH8BH
Hc                 z    g | ]8}t          j        d |rdndz   dz                       d                    j        9S )s   (\\(?:s   \\?s]   [\\abfnrtv"\'{]|[0-7]{2,3}|N\{[^}]*\}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|[NxuU]|s   )?|\{\{?|\}\}?|[^\\{}]+)zus-ascii)r   compiledecodematch)rO  r  s     r4   rP  rP    sm     8! 8! 8!$ 	% 9;
 WW		 fZ#9 9"  #8! 8! 8!r6   )TFc                 <    | d         | d         | d         |z   dz   fS )Nr   r"   r%   rF   )r[   r  is      r4   _f_string_error_posr  ,  s#    FCFCFQJN++r6   c                 N   g }d}t          |          }t          j                    }|rt          nt          }||k     r|}	 |||          }
|
t          t          |||          d           |
                                }|
                                }|d         }|dk    r?|s't          |          dk    rt          d|||            n|
                    |           n|dk    r|dk    r|
                    d           n|j        rN|
                    t          j        ||                                                     t          j                    }t          | ||||          \  }}|                    |           nW|d	k    r<|d
k    r|
                    d	           n5t          t          |||	          d           n|
                    |           ||k     |j        r;|
                    t          j        ||                                                     |S )Nr   zInvalid escape sequence\r"   r  r  z{{r8  }z}}z#f-string: single '}' is not allowed)r>  r   r  r   r   r   r  endgroupr  rV   r  r   r  	getstringp_f_string_exprrX  )rP   r  r[   r  r  
next_startsizer  
_parse_seqr!  r  partr  
expr_nodess                 r4   r  r  0  s?    FJ}D244G06S,,<SJ
t


=*55=%c=*EEG`aaaYY[[
{{}}G99 %c$ii!mm'WdA>>>>t$$$$#XXt||s#### = EMM)"77CTCTCVCV"W"W"WXXX,BDDG)8M3PZ\b)c)c&
Jj))))#XXt||s####)#}cBB;= = = = NN4   ? t

B } Mi+Cw7H7H7J7JKKKLLLMr6   c           	         |}t          |          }d x}x}}	d }
d }d}d}|}d}d}	 ||k    rn+||         }||k    rf|dk    r$|st          t          |||          d           d}n||k    r5|r1|dz   |k     r'||dz            |k    r||dz            |k    r	d}|}|dz  }n|}n|d	v r1|}|dz   |k     r%||dz            |k    r||dz            |k    rd}|dz  }n{|d
v r|dz  }nq|dk    r
|dv r|dz  }na|dk    r t          t          |||          d           n;|dk    r5|dv r1|dz   |k     r%|dv r!||dz            dk    r|dz  }|dv r|dz  }*|}n|dz  }3|||                             dd                              dd          }|d         |d         |d         |z   dz   f}|                                st          t          |||          d           |dk    rb|dz  }||k     r?||                                         r%|dz  }||k     r||                                         %||k     r||         }|||         }|dk    r$|dz  }|dz   |k    rn||         }|dz  }||         }|dk    rd}d}d}|dz   }	 ||k    rnn||         }|s#|s!|dk    r|dz  }n|dk    r|dk    r|dz  }n|}nA|d	v r7|s0|dz   |k     r'||dz            |k    r||dz            |k    r	| }|dz  }n|s| }|dz  }u|||         }
|r||
d}|dk    r)t          t          |||          d|rd|z  ndz              t          d|z            }t          ||d         | | j        |          }t          |          }|2t          j                            |          st          |d |z             |
r&t          j        |t          | |
||          !          }	g }|r;|                    t          j        |t#          j        |          "                     |                    t          j        ||||	#                     |dz   |fS )$Ni   @r   FTr  z$backslashes not allowed in f-stringsr%   r"   z'"z{[(z}])#zformat string cannot include #z><=!:}z!=><r7  z><z
r  z(empty expression not allowed in f-string!rj   r  r   r  z'missing '}' in format string expressionz, found '%s'r  z(%s))parent_scannerr  initial_posz!invalid conversion character '%s'r  r8  )r9  conversion_charformat_spec)r>  r   r  replacestripisspacer   r#   r  r  r   FormattedValueNodefind_conversion_funcr  r  rV   r  r   r   )rP   r  r[   starting_indexr  r  r&  r0  terminal_charr1  format_spec_str	expr_textNO_CHARnested_depth
quote_charin_triple_quotesbackslash_reportedr  expr_strexpr_pos	in_stringstart_format_specbufscannerru   nodess                             r4   r$  r$  _  s     	A}D488O8mkOIGLJ+99!  Dyy) B-c=!DD@B B B%)""j# )1ut||a!e(<(A(AmTUXYTYFZ^_F_F_+0(%,
Q!(J%ZZJ1ut||a!e 4 9 9mAPQE>RVW>W>W#' Q%ZZALLQ1::ALL#XX%c=!<<24 4 4 4Q1==1ut||V Q'3..FA$YYFAM	QW+\ ^A-.66vtDDLLTSWXXHAAA 7! ;<H>> :!#}nEE8	: 	: 	: 	Q$hh=+3355hFA $hh=+3355h t88)!,M%nQ&67I 	Qq54<<+A.OFA)!,M 	E	Dyya A# I 88 A%LL#XX#a''$)()Ezz  .QUT\\mAE6Ja6O6OTabcfgbgThlmTmTm+;';$FAA) .$-IFA'	* ((9!(;< _,1H!#}a8874AI.=00rK	L 	L 	L
 6H$
%
%C3AqO`nvwwwGgD "9+G+\+\]l+m+m"h;oMNNN  g-c*QY\^d:e:efffE `Y*3n6RS\6]6]^^^___	LL-clwxxxyyyq5%<r6   c                    |                                  }|                                  | j        dk    r+|                     d           t	          j        |g           S t          |           }| j        dv r|j        r|                     d           t	          j	        ||          }t          | |          }|                     d           t	          j        |||t          j        | j        j        dk              S | j        dk    r%|                                  t!          | |          }n|g}|                     d           t	          j        ||          S )	Nrl  rJ  r;  2iterable unpacking cannot be used in comprehensionr  r&   )looprV   typehas_local_scoperU   )rZ   rO   rK   rr   r   ListNoder   
is_starredr   ComprehensionAppendNode
p_comp_forComprehensionNoder   	list_typerL   r  %p_namedexpr_test_or_starred_expr_list)rP   r[   ru   rV   rI  exprss         r4   r  r    sB   
**,,CFFHHHts{{	!#B////+A..Dt? 	JGGHIII23TBBB!V$$	*d60AI49; ; ; 	; 	ts{{	5a>>HHSMMMc....r6   c                 n    | j         dv rt          | |          S | j         dk    rt          | |          S |S )Nr;  r|   )rK   rO  	p_comp_if)rP   bodys     r4   p_comp_iterrW    sB    t!T"""	
D!!! r6   c                 .   |                                  }d}| j        dk    rd}|                                  |                     d           t	          | d|          }|                    d t          | |          |           t          j        |fi |S )NFr<  Tr  allow_testlistr  )else_clauserV  r  )	rZ   rK   rO   rr   p_for_boundsr1   rW  r   ForStatNode)rP   rV  r[   r  kws        r4   rO  rO     s    
**,,CHtw	 HHUOOO	a	A	A	ABII$[D%9%9HIMMMS''B'''r6   c                     |                                  }|                                  t          |           }t          j        |t          j        ||t          | |                    gd           S )N	conditionrV  
if_clausesr[  )rZ   rO   r   r   
IfStatNodeIfClauseNoderW  )rP   rV  r[   r~   s       r4   rU  rU  .  sw    
**,,CFFHHH Q<<DC($0;At0D0DF F F G   r6   c                 @   |                                  }|                                  | j        dk    r*|                                  t          j        |g           S g }d}d}	 | j        dv r|dk    r| j        dk    rdnd	}nA|t          | j                  k    r)|                     d
| j        d|dk    rdndd           |                                  | j        dk    r|                     d           t          |           }|                    |           d}nt          |           }|dk    r| j        dk    rd	nd}|d	k    rB| 
                    d           |}t          |           }t          j        |j        ||          }|r|d                             |           n|                    |g           d}| j        dk    r!|                                  | j        dk    rnnn| j        dv rt          |          dk    rt          |d         t                    rt          |d                   dk    r|d         d         }|d	k    rdt          |t          j                  sJ t          |                      t           j        }t          j        |j        |j        |j                  }	n't           j        }t          j        |j        |          }	t/          | |	          }
| 
                    d           t          j        ||
|	|          S t          |          dk    r1t          |d         t                    s|                     d           n| 
                    d           t          j        |g           S | 
                    d           |dk    r g }g }|D ]z}t          |t                    r|                    |           -|r6|                    t          j        |d         j        |                     g }|                    |           {|r4|                    t          j        |d         j        |                     t          |          dk    r|d         j        r|d         S t          j        ||t           j                  S g }g }|D ]z}t          |t                    r|                    |           -|r6|                    t          j        |d         j        |                     g }|                    |           {|r4|                    t          j        |d         j        |                     t          |          dk    r|d         j        r|d         S t          j        ||d          S )Nr   rS  r   FTr   r#  r   r"   r%   zunexpected zitem found in r  dictz literalzexpected expression, found '*'rj   )rR  r9  r:  rU   r;  )key_expr
value_exprr  )rI  rV   rJ  rH  rJ  )rm   rJ  )rB  rT  )rZ   rO   rK   r   rY  r>  r   r   rV   rs   rr   rV  r[   r   rK  rJ  r   	dict_typeDictComprehensionAppendNoderR  r9  set_typerN  rO  rP  rX  SetNodeis_set_literalMergedSequenceNoderW  rZ  )rP   r[   partstarget_typelast_was_simple_itemr`  rR  r9  comprehension_typerV   rI  rv  	set_itemsr(  r_  s                  r4   r  r  D  s   
**,,CFFHHHts{{	!#r::::EK #4;a#$43;;aaAAD		))DDD;!#3#3%%??A B B BFFHHHts{{8999!!$$DLL#(  !99Da#$43;;aaAaq		 -cg3eLLL# ,b	  &&&&dV$$$'+$43;;FFHHHts{{  G#J 	tu::??z%(D99?c%(mmq>P>P8A;Da!$	(>??KKdKKK%,%6"">HtxDJH H H &-%5"":48$OOOa((DHHSMMM.sfSeffff 5zzQz%(D'A'ALMMMM %c2>>>>HHSMMMa	 	# 	#D$%% #  &&&& #LL!29Q<3C)!T!T!TUUU "IT"""" 	NLL*9Q<+;)LLLMMMu::??uQx6?8O+Ce'BRSSSS 
 	# 	#D$%% #!!$'''' $LL!3JqM4EWa!b!b!bccc!#JT"""" 	\LL+JqM,=zZZZ[[[u::??uQx7?8O'%SXYYYYr6   c                    |                                  }|                                  t          |           g}| j        dk    rA|                                  |                    t          |                      | j        dk    A|                     d           t          |          dk    r	|d         }nt          j        ||          }t          j	        ||          S )NrU   r  r"   r   rJ  r  )
rZ   rO   rs   rK   rV   rr   r>  r   rL  BackquoteNode)rP   r[   rm   r   s       r4   r  r    s    
**,,CFFHHH1II;D
$#++	F1II $#++ HHSMMM
4yyA~~1g!#d333"3c2222r6   c                     |d ur|gpg }| j         t          vrP|                    t          |                      | j         dk    rn"|                                  | j         t          vP|S NrU   )rK   expr_terminatorsrV   rs   rO   rP   ru   rS  s      r4   p_simple_expr_listr}    sp    '$-2E
$&
&
&fQii!!!43;;		 $&
&
&
 Lr6   c                     |d ur|gpg }| j         t          vrP|                    t          |                      | j         dk    rn"|                                  | j         t          vP|S rz  )rK   r{  rV   r   rO   r|  s      r4   p_test_or_starred_expr_listr    ss    '$-2E
$&
&
&+A..///43;;		 $&
&
&
 Lr6   c                     |d ur|gpg }| j         t          vrP|                    t          |                      | j         dk    rn"|                                  | j         t          vP|S rz  )rK   r{  rV   r   rO   r|  s      r4   rR  rR    ss    '$-2E
$&
&
&5a8899943;;		 $&
&
&
 Lr6   c                     |                                  }t          |           }| j        dk    r:|                                  t	          | |          }t          j        ||          S |S NrU   rJ  )rZ   rs   rK   rO   r}  r   rL  rP   r[   ru   rS  s       r4   r  r    s\    
**,,C!99Dts{{	"1d++"3u5555r6   c                     |                                  }t          |           }| j        dk    r:|                                  t	          | |          }t          j        ||          S |S r  )rZ   r   rK   rO   r  r   rL  r  s       r4   p_testlist_star_exprr    s^    
**,,C!!$$Dts{{	+At44"3u5555r6   c                    |                                  }t          |           }| j        dk    r:|                                  t	          | |          }t          j        ||          S | j        dv rt          | |          S |S )NrU   rJ  r;  )rZ   r   rK   rO   rR  r   rL  r?  r  s       r4   r  r    s|    
**,,C+A..Dts{{	5a>>"3u5555	
!	!	!4   r6   c           
          t          | t          j        |j        t	          j        |j        |                              }t	          j        |j        |          S )Nr  r  )rI  )rO  r   r  r[   r   r  GeneratorExpressionNode)rP   ru   rI  s      r4   r?  r?    s]    a+0tDDDF F F G GD,TXDAAAAr6   )r   rl  r   rj   r7  r  c                     |                                  }|                                  t          |           }t          j        ||          S N)rW   )rZ   rO   rX   r   
GlobalNoderP   r[   rW   s      r4   p_global_statementr    s=    
**,,CFFHHHOOEC////r6   c                     |                                  }|                                  t          |           }t          j        ||          S r  )rZ   rO   rX   r   NonlocalNoder  s      r4   p_nonlocal_statementr    s=    
**,,CFFHHHOOEc51111r6   c           	      x   t          |           }d}| j        dk    r?|j        s|j        s|j        r*d}|                                  t          |           |_        | j        dk    r#|j        r| 	                    d|j
                   |g}| j        dk    r^|                                  | j        dk    rt          |           }nt          |           }|                    |           | j        dk    ^t          |          dk    rPt          j        d	| j                  r|d
         }t!          |t"          j                  r@t#          j        |j
        |j        t+          |j
        |j        |j                            }nFt!          |t"          j        t"          j        t"          j        f          st          |j
        d           | j        d d         }|                                  | j        dk    rt          |           }nt5          |           }t7          j        |j
        |||          S |d
         }t7          j        |j
        |          S |d         }t          |          dk    r#t7          j        |j
        |d
         ||          S t7          j        |j
        |d d         |          S )NFrj   Tr7  zqa starred assignment target must be in a list or tuple - maybe you meant to use an index assignment: var[0] = ...r6  r  r"   z([-+*/%^&|]|<<|>>|\*\*|//|@)=r   rj  z&Illegal operand for inplace operation.r:  )r   r   r   r  r%   )r   r   first)lhs_listr   ) r  rK   r   is_subscriptis_attributerO   p_annotation
annotationrM  r   r[   r	  rV   r>  r   r  r   r   rn  rp  rg  r  rh  ri  r2  r  r  r   InPlaceAssignmentNoder  SingleAssignmentNodeCascadedAssignmentNode)rP   ru   has_annotation	expr_listr   r   r   s          r4   p_expression_or_assignmentr  #  s   ""DNts{{{(9{T=N{	&q//ts{{t{ 	
 NH 	 	 	 	 I
$#++	47??%a((DD'**D $#++ 9~~84ad;; 	]A,C#y788 I)G)#'39chGGI I I  i&=y?RT]Tf%ghh IcgGHHHtCRCyHFFHHHtw(++ mm.swsX[\\\\|!$(6666
B-C
9~~)#'y|Tbcccc+CGinRUVVVVr6   c                 p   |                                  }d}|                                  | j        dk    rL|                                  t          |           }| j        dk    r|                                  | j        dv }nd }g }| j        dvrz|                    t          |                      | j        dk    rM|                                  | j        dv rd}n-|                    t          |                      | j        dk    Mt          j        ||          }t          j        ||||           S )Nr   r   rU   r  r  r"   rJ  )r]  streamappend_newline)	rZ   rO   rK   rs   rV   r   rL  r   PrintStatNode)rP   r[   ends_with_commar  rm   r]  s         r4   p_print_statementr  V  s+   
**,,COFFHHHtt||	43;;FFHHHd&88ODt%%%F1IIdckkFFHHHt)))"#KKq		""" dckk #Cd333IsF**, , , ,r6   c                    |                                  }|                                  t          |           }t          |t          j                  rFd}|j        }t          |          dvr+|                     dt          |          z  |d           |g}nd}|g}| j	        dk    r|r|                     dd           |                                  |
                    t          |                      | j	        d	k    r6|                                  |
                    t          |                      t          j        ||
          S )NT)r%   r&   z.expected tuple of length 2 or 3, got length %dFr  r   z@tuple variant of exec does not support additional 'in' argumentsr   rU   rJ  )rZ   rO   r   r   r   rL  rm   r>  r   rK   rV   rs   r   ExecStatNode)rP   r[   codetuple_variantrm   s        r4   p_exec_statementr  r  s:   
**,,CFFHHHa==D$	+,, 
yt99F""GGDs4yyP5  * * *6Dvtt|| 	!GGV  ! ! !	F1II43;;FFHHHKKq		"""c----r6   c                     |                                  }|                                  t          |           }t          j        ||          S )NrJ  )rZ   rO   r}  r   DelStatNode)rP   r[   rm   s      r4   p_del_statementr    s?    
**,,CFFHHHa  DS....r6   c                     |                                  }|                     d           |r|                     dd           t          j        |          S )NpassExpected a newlineTignore_semicolon)rZ   rr   expect_newliner   PassStatNode)rP   with_newliner[   s      r4   p_pass_statementr    sU    
**,,CHHV F	-EEEc"""r6   c                 z    |                                  }|                                  t          j        |          S r/   )rZ   rO   r   BreakStatNoder   s     r4   p_break_statementr    s-    
**,,CFFHHHs###r6   c                 z    |                                  }|                                  t          j        |          S r/   )rZ   rO   r   ContinueStatNoder   s     r4   p_continue_statementr    s-    
**,,CFFHHH!#&&&r6   c                     |                                  }|                                  | j        t          vrt	          |           }nd }t          j        ||          S )Nr8  )rZ   rO   rK   r  r  r   ReturnStatNode)rP   r[   r9  s      r4   p_return_statementr    sR    
**,,CFFHHHt(((1U3333r6   c                    |                                  }|                                  d }d }d }d }| j        t          vrt	          |           }| j        dk    rR|                                  t	          |           }| j        dk    r#|                                  t	          |           }n.| j        dk    r#|                                  t	          |           }|s|s|rt          j        |||||          S t          j        |          S )NrU   r  )exc_type	exc_valueexc_tbcause)rZ   rO   rK   r  rs   r   RaiseStatNodeReraiseStatNode)rP   r[   r  r  r  r  s         r4   p_raise_statementr    s   
**,,CFFHHHHIFEt(((!9943;;FFHHHq		Its{{TV^^FFHHH1IIE *9 * *"3!	   	 $S)))r6   c                    |                                  }| j        }|                                  t          | d          g}| j        dk    rC|                                  |                    t          | d                     | j        dk    Cg }t
          j        | j        j        v }|D ]\  }}}}|dk    rt          j
        ||||          }	nbt          j        |t          j        ||p|          t          j        |t          j        ||          |rdnd d	|v o|d u d 
                    }	|                    |	           t          j        ||          S )Nr"   
as_allowedrU   cimport)module_nameas_nameis_absoluter  r8  r   r"  )r  r>   get_top_level_module	name_listr   stats)rZ   rK   rO   p_dotted_namerV   r   r   rL   rb   r   CImportStatNoder  r   r  
ImportNoder=  StatListNode)
rP   r[   r  rv  r  r  target_namedotted_namer  stats
             r4   p_import_statementr    s   
**,,C4DFFHHH1+++,E
$#++	]1333444 $#++ E(AI,GGK27  .[+w9(''	) ) )DD -&s1GKHHH( ) >s+ V V V*4!!),);)O4"$ $ $% % %D 	Tc////r6   c           
         |                                  }|                                  | j        dv r@d}| j        dv r4|t          | j                  z  }|                                  | j        dv 4nd }|8| j        dv r/|                                  | j                            d          }}n2|t          j        | j        j        v rd}t          | d          \  }}}}| j        dvr| 
                    d           | j        }|                                  |dk    }d}	| j        d	k    rE|                                  | j                            d	          d fg}
|                                  n1| j        d
k    rd}	|                                  t          |           g}
| j        dk    rO|                                  |	r| j        dk    rn-|
                    t          |                      | j        dk    O|	r|                     d           |dk    r|s| 
                    d           n|r| 
                    d           n|
D ]\  }}}|dk    r| 
                    d|            na	 t          t          |          }n*# t          $ r | 
                    d|z  |           Y  n$w xY w| j        j                            |           t#          j        |          S |rt#          j        ||||
          S g }g }|
D ]\\  }}}|                    t)          j        ||                     |                    |t)          j        ||p|          f           ]t)          j        |
d         d         |          }t#          j        |t)          j        |t)          j        ||          ||          |          S )N)r"  r}  r   importr  r  Fr  zExpected 'import' or 'cimport'r  r   r   TrU   r   
__future__z?from __future__ imports must occur at the beginning of the filezinvalid syntaxbracesznot a chancez future feature %s is not defined)r  relative_levelimported_namesr8  r  rJ  )r  r>   r  )modulerv  )rZ   rO   rK   r>  rL   rM   r   r   rb   r  r   p_imported_namerV   rr   getattrAttributeErroraddr   r  FromCImportStatNoder   r=  r  rL  FromImportStatNoder  )rP   first_statementr[   r>   dotted_name_posr  _r  
is_cimportis_parenthesizedr  name_posrR   r  	directiveimported_name_stringsrv  import_lists                     r4   p_from_import_statementr    s6   
**,,CFFHHHt|dl""SYYEFFHHH dl"" QT%:::'(zz||QY5M5Mb5Q5Q=V3qy7RRRE/<Q5/Q/Q/Q,![!t(((	01114DFFHHH"Jts{{::<<)A)A#)F)FMN	43;;#FFHHH)!,,-
$#++	 	oa00111	 $#++
  	l"" 	;GGUVVVV 	;GG$%%%%-; 	; 	;)48##GGNH555E ' 5 5II%   GG>ExPPPEE 	+//	::::!#&&&	 ([ )+ + + 	+
 !#)7 	L 	L%XtW!((.xtDDDF F FLLy)(DIIIJL L L L(1a '<> > >')/'<S+VVV') ) )    	s   0J#J-,J-c                 p    |                                  }t          |           }t          |           }|||fS r/   )rZ   rS   	p_as_name)rP   r[   rR   r  s       r4   r  r  @  s2    
**,,C1::DllGwr6   c                 n   |                                  }t          |           }d }|g}| j        dk    rA|                                  |                    t          |                      | j        dk    A|rt          |           }||| j                            d                    |                    |fS )Nr"  )	rZ   rS   rK   rO   rV   r  rL   rM   r  )rP   r  r[   r  r  rW   s         r4   r  r  G  s    
**,,C!**KGME
$#++	WQZZ    $#++  A,,ai66tyy7G7GHH'RRr6   c                 x    | j         dk    r.| j        dk    r#|                                  t          |           S d S )NrJ   as)rK   rN   rO   rS   r   s    r4   r  r  T  s7    tw1:--	qzztr6   c                     |                                  }|                                  t          |           }| j        dk    r$|                                  t          |           }nd }t	          j        |||          S )NrU   )ra  r9  )rZ   rO   rs   rK   r   AssertStatNode)rP   r[   condr9  s       r4   p_assert_statementr  \  si    
**,,CFFHHH!99Dts{{	q		t5AAAAr6   );r  r  c                 V   |                                  }|                                  t          |           g}| j        dk    rA|                                  |                    t          |                      | j        dk    At          |           }t          j        |||          S )Nelifrb  )rZ   rO   p_if_clauserK   rV   p_else_clauser   rd  )rP   r[   rc  r[  s       r4   p_if_statementr   l  s    
**,,CFFHHHa..!J
$&..	+a..))) $&..  ""KC{< < < <r6   c                     |                                  }t          |           }t          |           }t          j        |||          S )Nr`  )rZ   r   p_suiter   re  )rP   r[   r~   rV  s       r4   r  r  x  sH    
**,,CAD1::Dc' ' ' 'r6   c                 b    | j         dk    r#|                                  t          |           S d S )Nr}   )rK   rO   r  r   s    r4   r  r    s+    tv~~	qzztr6   c                     |                                  }|                                  t          |           }t          |           }t	          |           }t          j        ||||          S )N)ra  rV  r[  )rZ   rO   r   r  r  r   WhileStatNode)rP   r[   r~   rV  r[  s        r4   p_while_statementr    se    
**,,CFFHHHAD1::D""Ks!# # # #r6   Fc                    |                                  }|                                  t          | d|          }t          |           }t	          |           }|                    |||           t          j        |fi |S )NTrY  )rV  r[  r  )rZ   rO   r\  r  r  r1   r   r]  )rP   r  r[   r^  rV  r[  s         r4   r  r    sy    
**,,CFFHHH	ax	@	@	@B1::D""KII4[8IDDDS''B'''r6   c                 D   t          |           }| j        dk    r7|                                  t          | ||          }t	          ||          S | j        s1|s.| j        dk    r$|                                  t          |           }n|d }}t          |           }|                                 }t          |           }|                                 }	t          |           }
t          |           }t          |           }|t          j        ||          }n8|j        st          |j        d           n||j        k    rt          |d           |d         |
d         k    rt          |	d	           t	          ||||
||
          S |                     d           i S )Nr   r  )targetiteratorr  r  z4Target of for-from statement must be a variable namez5Variable name in for-from range does not match targetr   z,Relation directions in for-from do not match)r	  bound1	relation1	relation2bound2ry  )p_for_targetrK   rO   p_for_iteratorri  r   r   p_for_from_relationrZ   rS   p_for_from_stepr   r  r   r   r[   rR   rr   )rP   rZ  r  r	  r
  r  rel1	name2_posname2rel2_posrel2r  ry  s                r4   r\  r\    s   !__Ftt||	!!^hGGG6H5555 #h #46>>FFHHH]]FF $TFF"1%%JJLL	

::<<"1%%Aq!!>'	%@@@FF> MfjJL L L L&+%%iKM M M7d1g(>@ @ @V# $ $#   	 	
	r6   c                     | j         t          v r| j         }|                                  |S |                     d           d S )Nz#Expected one of '<', '<=', '>' '>=')rK   inequality_relationsrO   r   r   s     r4   r  r    sB    t###T			566666r6   c                 |    | j         dk    r0| j        dk    r%|                                  t          |           }|S d S )NrJ   by)rK   rN   rO   r   )rP   ry  s     r4   r  r    s;    tw1:--	!}}tr6   )r   r   r   r   c                 l   |                                  }t          |           }| j        dk    r|                                  |g}| j        |k    rM|                    t          |                      | j        dk    rn|                                  | j        |k    Mt          j        ||          S |S r  )rZ   r   rK   rO   rV   r   rL  )rP   rk   r[   ru   rS  s        r4   p_targetr    s    
**,,C!Dts{{	dj  LL**+++ts{{FFHHH	 dj  
 "3u5555r6   c                 "    t          | d          S )Nr   )r  r   s    r4   r  r    s    Atr6   c                     |                                  }|rt          |           }nt          |           } |rt          j        nt          j        ||          S )N)sequence)rZ   r  r   r   AsyncIteratorNodeIteratorNode)rP   rZ  r  r[   ru   s        r4   r  r    sV    
**,,C !}}||O8OI''9OQT_cddddr6   c                 X   |                                  }|                                  t          |           }g }d }| j        dv r| j        dk    r-|                    t          |                      | j        dk    -| j        dk    r#|                                  t          |           }t          j        ||||          }| j        dk    r|S | j        dk    r:|                                  t          |           }t          j        |||          S | 	                    d           d S )N)exceptr}   r$  r}   )rV  except_clausesr[  finally)rV  finally_clausezExpected 'except' or 'finally')
rZ   rO   r  rK   rV   p_except_clauser   TryExceptStatNodeTryFinallyStatNoder   )rP   r[   rV  r%  r[  r'  s         r4   p_try_statementr+    s0   
**,,CFFHHH1::DNKt!!!dh!!/!"4"4555 dh46>>FFHHH!!**K&s.%' ' ' 49Kty	 '.: : : 	: 	
011111r6   c                    |                                  }|                                  d }d }d}| j        dk    rt          |           }t	          |t
          j                  r|j        }n|g}| j        dk    s&| j        dk    r?| j        dk    r4| j	        j
        dk    r$|                                  t          |           }ne| j        dk    rZ| j        dk    rO|                                  |                                  }t          |           }t          j        ||          }d}t          |           }t          j        |||||	          S )
NFrj   rU   rJ   r  r%   r  T)patternr	  rV  is_except_as)rZ   rO   rK   rs   r   r   rL  rm   rN   rL   r  rS   r  r  r   ExceptClauseNode)rP   r[   r  r  r.  pos2rR   rV  s           r4   r(  r(    s8   
**,,CFFHHHHILts{{!99h	 344 	"}HH zH43;;147??qzT/A/A y71<<FFHHHq		IITW__t!3!3FFHHH::<<D1::D!*4===IL1::D!#Y,0 0 0 0r6   c                 *   |                                  }|                                  t          | d          d         }|                     d           | j        r|}| j                            ||          }|r| j                            |           t          j
        |          5 }t          |          }t          ||| |j        | j                  }t          ||          }	d d d            n# 1 swxY w Y   |	S d S t!          j        |          S )Nr  r%   z!Syntax error in include statement)r  parse_comments)rZ   rO   r  r  compile_time_evalrL   find_include_fileincluded_filesrV   r   open_source_filer	   r#   encodingr2  p_statement_listr   r  )
rP   r8   r[   unicode_include_file_nameinclude_file_nameinclude_file_pathr  source_descs2trees
             r4   p_include_statementr?  1  sL   
**,,CFFHHH 0C 8 8 ;8999 '5I778I3OO 	##$5666'(9:: 1a23DEE!![!QZ`a`pqqq'C001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 K4!#&&&s   (>C22C69C6c                     |                                   | j        dk    r| j        st          |           }nt	          |           }|S )Ntemplate)rO   rN   r   p_with_templater  )rP   r   s     r4   p_with_statementrC  F  sC    FFHHHzZ(8q!!AKr6   c                    d}d}| j         dk    rt          |           5 }|                                  t          | |          }|                     d           | j         dk    r|                     d           ddd           n# 1 swxY w Y   | }|st          | |          }t          |           }t          |          D ]\  }}} ||fd|i|}|S )	a  
    Copied from CPython:
    | 'with' '(' a[asdl_withitem_seq*]=','.with_item+ ','? ')' ':' b=block {
        _PyAST_With(a, b, NULL, EXTRA) }
    | 'with' a[asdl_withitem_seq*]=','.with_item+ ':' tc=[TYPE_COMMENT] b=block {
        _PyAST_With(a, b, NEW_TYPE_COMMENT(p, tc), EXTRA) }
    Therefore the first thing to try is the bracket-enclosed
    version and if that fails try the regular version
    FrF   r   r   rj   r  NrV  )rK   r$   rO   p_with_items_listrr   r   r  reversed)	rP   r  brackets_succeededrv  errorsrV  clsr[   r3   s	            r4   r  r  O  s+    Ets{{a   	FFFHHH%a22EHHSMMMts{{ 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 "(Z /!!X..1::D"5// + +S$s3**T*T**Ks   ABB	B	c                     g }	 |                     t          | |                     | j        dk    rn!|                                  | j        dk    rnP|S )NTrU   r   )rV   p_with_itemrK   rO   )rP   r  rv  s      r4   rE  rE  o  s]    E[H--...43;;	43;; Lr6   c                 ,   |                                  }| j        s| j        dk    r| j        dv r|r|                     d           | j        }|                                  d }| j        dk    r8|                                  t          |           }|                     d           t          j	        |||dfS t          |           }d }| j        dk    r.| j        dk    r#|                                  t          |           }t          j        ||||dfS )	NrJ   )r(   gilzwith gil/nogil cannot be asyncr   r   )statera  r  )managerr	  r  )rZ   r   rK   rN   r   rO   rs   rr   r   GILStatNoder   WithStatNode)rP   r  r[   rN  ra  rO  r	  s          r4   rK  rK  |  s   
 **,,C eAJBR4R4R 	6GG4555
	 	43;;FFHHHq		IHHSMMM #Y'O'OOO))47??qzT11FFHHH#A&&F!3Gv[c(d(dddr6   c                    |                                  }g }|                                  |                     d           |                    | j                   |                                  | j        dk    rM|                                  |                    | j                   |                                  | j        dk    M|                     d           | j        dk    ry|                                  |                     d           |                                  t                      }||_	        t          | ||          }|                                  |S t          |d           d S )Nr!  rU   rl  rj   z-Syntax error in template function declaration)rZ   rO   rr   rV   rN   rK   r  expect_indentr+   rD   p_c_func_or_var_declarationexpect_dedentr   )rP   r[   rD   body_ctxfunc_or_vars        r4   rB  rB    s<   
**,,CIFFHHHHHSMMMQZ   FFHHH
*

	$$$	 *

 HHSMMMts{{		HIII	55&1!S(CC	cBCCCCCr6   c                 "   | j         dk    rt          |           }nr| j         dk    rt          |           }nV| j         dk    rt          |           }n:| j         dk    rt	          |           }n| j         dk    rt          |           }n| j         dk    rt          |           }n| j         dk    rt          |           }n| j         dk    rt          |           }n| j         d	k    rt          |           }n| j         d
v rt          |           }n}| j         dk    rt          | |          }n`| j         dk    rt          |           }nE| j         dk    rt          |           }n*| j         dk    rt          |           }nt          |           }|S )Nglobalnonlocalprintexecdelbreakcontinuereturnraiser  r  r  r  assertr  )rK   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )rP   r  r   s      r4   p_simple_statementrd    s   tx!!$$	
		#A&&	
 ##	
""	
q!!	
 ##	
		#A&&	
		!!$$	
 ##	
&	&	&!!$$	
&qOLLL	
 ##	
		!!$$	
"")!,,Kr6   c                    t          | |          }|j        }g }t          |t          j                  s|                    |           | j        dk    rl|                                  | j        dv rnNt          | |          }t          |t          j                  rU|                    |           d}| j        dk    l|st          j        |          }n2t          |          dk    r	|d         }nt          j	        ||          }| j        dvrLt          |t          j
                  r2|j        j        r&|j        j        dk    r|                     d	|           |                     d
           |S )Nrb  r  r  Fr"   r   r  cdefz@The 'cdef' keyword is only allowed in Cython files (pyx/pxi/pxd)z%Syntax error in simple statement list)rd  r[   r   r   r  rV   rK   rO   r>  r  r  ru   r   rR   r   r  )rP   r8   r  r  r[   r  s         r4   p_simple_statement_listrg    s{    a?CCCD
(CEdE.// T
$#++	4%%%!!GGGdE.// 	T $#++  6!#&&	UqQx!#u555t%%%dE.// 	ay  aTY^v%=%=Z\_```<===Kr6   c                 N    | j         }d| _         t          |           }|| _         |S )Nr"   )r  r  )rP   oldru   s      r4   p_compile_time_exprrj    s*    

CAa==DAKr6   c                    |                                  }| j        }|                                  t          |           }|                     d           t          |           }| j        r+|                    |          }|                    ||           | 	                    dd           t          j        |          S )Nr7  r  Tr  )rZ   r  rO   rS   rr   rj  r3  compile_time_valuedeclarer  r   r  )rP   r[   denvrR   ru   r9  s         r4   p_DEF_statementro    s    
**,,CDFFHHH1::DHHSMMMq!!D "''--T5!!!)DAAAc"""r6   c                    |                                  }| j        }|}| j        }d }	 |                                  t	          |           }|o!t          |                    |                    | _        t          | |          }| j        r|}d}| j        dk    rnt| j        dk    r/|                                  || _        t          | |          }|r|}|st          j
        |          }|| _        |S )Nr"   r   ELIFELSE)rZ   r3  r  rO   rj  r  rl  r  rK   r   r  )	rP   r8   r[   
saved_evalcurrent_evalrn  r   ru   rV  s	            r4   p_IF_statementru  	  s   
**,,C$JLDF		"1%%*RtD4K4KD4Q4Q/R/Rq# 	FL46>>	 	tv~~	*q# 	F )#C(($AMr6   c                 	   |j         }d }| j        dk    r.|j        dvr|                     d           t	          | |          S | j        dk    rt          |           S | j        dk    r4t          |                                 dd           t          | |          S | j        d	k    rv|j        d
vr|                     d           |j        | _        t          |           }|j
        s5| j        dvr,| j        dk    r| j        dk    rn4|                     d           n| j        dk    r|rt          | d          S d}| j        dk    rd}|                                  n#| j        dk    rd}d}|                                  |r|j        dvr|                     d           |j        | _        t          |  ||                    }|qt          j        t          j        t          j        f}|j
        r|t          j        t          j        fz  }t+          ||          s|                     d           ||_        |S |j        r|                     dd           d S | j        dk    rEd|j        v r |j        dk    r|                     d           |j        | _        t1          | |          S | j        dk    r.|j        d vr|                     d!           t3          | |          S | j        d"k    r.|j        dvr|                     d#           t5          | |          S |j        d$k    r%| j        dk    r| j        d%k    rt7          |           S | j        dk    r|j        d%k    rt          | d&          S |j        d'v r(t9          |           }||S |                     d(           | j        d)k    rt;          |           S | j        d*k    rt=          |           S | j        d+k    rt?          |           S | j        d,k    rtA          |           S | j        d-k    rtC          |           S | j        dk    r%|                                  tE          | ||          S | j        dk    r| j        dk    ry| j        }|                                 }	|                                  | j        dk    rtE          | ||          S |r|                     d           | #                    d||	           tI          | ||.          S )/Nctypedefr  
module_pxdz#ctypedef statement not allowed hereDEFIFzThe 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310r"   r   r   )r  classc_classrc  propertyry  c_class_pxdr,   zdecorator not allowed here)r  rf  cpdefr|  r<  rJ   r<  r  r  )r  r   rf  r  )r  ry  rc  r}  r  zcdef statement not allowed here)rB   %'api' not allowed with this statementFr   r  r  r  r  r|  )r  rc  r|  r,   z!class definition not allowed hereincludez"include statement not allowed herer}  r~  T)r  r~  z%Executable statement not allowed herer|   whiler  tryr  rb  )%r@   rK   r>   r   p_ctypedef_statementro  r   rZ   ru  p_decoratorsrE   rN   r  rO   p_cdef_statementr   CFuncDefNodeCVarDefNodeCClassDefNodeCStructOrUnionDefNodeCEnumDefNoder   r  r)   r  p_class_statementr?  p_property_declp_ignorable_statementr   r  r  r+  rC  r  put_backrg  )
rP   r8   r  r@   r  rB   r   tup
ident_name	ident_poss
             r4   p_statementr  &	  s,   IJtz9444GG9::: $As+++	
 q!!!	


CJK	M 	M 	M 	M a%%%	
9xxxGG0111)!!__
. 	S14?i3i3itw1:#8#8QRRR	
I2222Ktv~~			
		 AX9ZZZGG5666)33;#?#?#?@@!%u'8%:MNC. I3U5GHHdC(( SQRRR(DO7 3	XGG;5GIIIIITU]] ""m)C)C8999iAG"1j111TW__y HHH;<<<$Q
333TYy 888<===&q#...Y)##AJ*<T<T"1%%%TV^^	Z 7 7#AD9999y777,Q//#K?@@@tt||%a((((+++&q)))&q)))'***(C<<<47??qzW'<'<!"J !

IFFHHHtu}}0CDDD# [ YZZZJJxY???.q#WWWWr6   c                 h   |                                  }g }| j        dvrMt          | ||          }t          |t          j                  r6|                    |           d}| j        dvM|st	          j        |          S t          |          dk    r|d         S t	          j        ||          S )NDEDENTr  rb  Fr"   r   r  )	rZ   rK   r  r   r   r  rV   r>  r  )rP   r8   r  r[   r  r  s         r4   r8  r8  	  s    
**,,CE
$'
'
'1c_EEEdE.// 	T $'
'
'  6!#&&&	UqQx!#u5555r6   c                 2    t          | |d          d         S )NFwith_doc_onlyr"   )p_suite_with_docstringrP   r8   s     r4   r  r  	  s    !!S>>>qAAr6   c                    |                      d           d }| j        dk    r^|                                  |                                  |rt	          |           }t          | |          }|                                  n^|j        r|                     dd           |j	        dv rt          | |          }n&t          |           }|                     dd	           |st          |          \  }}||fS )
Nrj   r  r  Fr   )r  r|  rc  r,   zSyntax error in declarationsTr  )rr   rK   rO   rS  p_doc_stringr8  rU  r)   r   r>   rg  r  r  _extract_docstring)rP   r8   r  docrV  s        r4   r  r  	  s    HHSMMM
Cty		 	"q//C3''	7 	JGG;5GIII9@@@*1c22DD#A&&D;dSSS -&t,,	T9r6   c                 p   g }g }d}| j         |vr#| j         dk    s| j         dk    r|                     dd           d}| j         dk    r|                                 d         dk    r| j        }|                                  |                                  t          |           rt          |           }n@t          | |	          }	t          | d
          }
t          j
        |	j        |	|
          }d}t          j        |j        |          }|                    ||f           d}nt          |           rt          |           }n@t          | |	          }	t          | d
          }
t          j
        |	j        |	|
          }d}|                    |           |d
z  }t          |          dk    r|                     d|j                   | j         dk    r7| j         |vr-|r+|                     dd                    |          z             n|                                  | j         |v#||fS )z
    Parses positional and keyword arguments. end_sy_set
    should contain any s.sy that terminate the argument list.
    Argument expansion (* and **) are not allowed.

    Returns: (positional_args, keyword_args)
    r   r   r#  z$Argument expansion not allowed here.Fr   rJ   r7  rD   r"   r   r   Tr8  r5  r6  rU   zUnmatched %sz or )rK   r   r$  rN   rO   r   rs   r   r   r   CComplexBaseTypeNoder[   r   r=  rV   r>  r  )rP   
end_sy_setrD   rA  rB  pos_idxparsed_typeidentr   r   r   keyword_nodewas_keywords                r4   p_positional_and_keyword_argsr  	  se    OLG
$j
 
 43;;!$$,,GG:%GHHH47??qvvxx{c11JEFFHHHFFHHHq!! #Qii)!CCC	+Aq999
0 )
D D D"$9#'OOOLs 3444KK q!! #Qii)!CCC	+Aq999
0 )
D D D"""3'''qLG<  1$$?G  % % % 43;;t:%% FGGNV[[-D-DDEEE	S $j
 
 T L((r6   c                 ^    | j         dk    rt          | |          S t          | ||          S )Nr   r  nonemptyrD   )rK   p_c_complex_base_typep_c_simple_base_type)rP   r  rD   s      r4   r   r   	  s5    ts{{$QI>>>>#AINNNNr6   c                 r    | j         dk    r+| j        t          v r| j        }|                                  |S dS )NrJ   r  )rK   rN   calling_convention_wordsrO   )rP   r   s     r4   p_calling_conventionr  
  s8    tw1:)AAA	rr6   )	__stdcall__cdecl
__fastcallc                    |                                  }|                                  t          | |          }t          | d          }t	          j        |||          }| j        dk    r|g}| j        dk    rw|                                  | j        dk    rnWt          | |          }t          | d          }|                    t	          j        |||                     | j        dk    wt	          j        ||          }| 	                    d           | j        dk    r1t          |           rt          | |          }nt          | ||          }|S )	Nr  Tr   r   rU   r   )
componentsr!  )rZ   rO   r   r   r   r  rK   rV   r   rr   is_memoryviewslice_accessp_memoryviewslice_accessp_buffer_or_template)rP   rD   r[   r   r   	type_noder  s          r4   r  r  
  sj   
**,,CFFHHHa9555I...J*yZ9 9 9Its{{[
dckkFFHHHts{{%a9===I'666Je8yZA A A B B B dckk ,SzJJJ	HHSMMMts{{$Q'' 	F0I>>II,Q	9EEIr6   c           
      8   d}d}d}d}g }|                                  }dx}	}
| j        dk    r`| j        dk    r|	rt          |d           d}	n!| j        dk    r|
rt          |d           d}
nn|                                  | j        dk    `|	s|
rht          | ||          }t          |t          j                  r$t          j	        ||j
        |	|
	          |_
        |S t          j	        |||	|
	          S | j        dk    rt          |d
| j        z             t          |           rd}| j        dk    r?| j        t          v r1t          | j                 \  }}| j        }|                                  nIt          |           \  }}| j        dk    r*| j        t          v r| j        }|                                  nd}| j        dk    r!| j        dk    rd}|                                  nt          |           rk| j        }|                                  | j        dk    rC|                    |           |                                  t#          |           }| j        dk    Cn| j        }|                                  }|                                  |r| j        dk    r| j        dk    r|                                  }|                                  | j        dk    s/| j        dk    s$| j        dk    s| j        dk    r&| j        t$          v r|                     dd|           nS|                     dd|           |                     d||           d }n"| j        dvr|                     d||           d }t          j        ||||||||          }| j        dk    r1t+          |           rt-          | |          }nt/          | ||          }| j        dk    r:|                                  t#          |           }t          j        |||          }|S )Nr   r"   rJ   constzDuplicate 'const'volatilezDuplicate 'volatile'r  )r   is_constis_volatilez"Expected an identifier, found '%s'r  r  r"  r   r   r#  r   )r   r#  r!  r   )rR   module_pathis_basic_c_typesignedr  r  rD   r!  )r   rR   )rZ   rK   rN   r   rO   r   r   r   r   r   r   looking_at_base_typespecial_basic_c_typesp_sign_and_longnessbasic_c_type_nameslooking_at_dotted_namerV   rS   r  r  CSimpleBaseTypeNoder  r  r  CNestedBaseTypeNode)rP   r  rD   is_basicr  r  r  r  r[   r  r  r   rR   r  old_posr  s                   r4   r  r  ,
  sF   HFHGK
**,,C H{
$'//:  8s$7888HHZ:%%>E#'=>>>KK	 $'//  M; M!!h)LLL	i!>?? 	','Ec#2XS^(` (` (`I$-c(M M M 	M 	twc7!$>???A +47??qz-BBB4QZ@FH:DFFHHHH2155FHtw1:1C#C#Cz47??qzY66GFFHHH		"	" z	dckkt$$$FFHHH1::D dckk
 z::<<	 	ts{{**,,DCKK144<<143;;DGOO
>V0V0VJJtT73333JJtT7333JJxx888DD222

8T8444)#;"Vh	  I 	ts{{$Q'' 	F0I>>II,Q	9EEIts{{	qzz-cyQUVVV	r6   c                 P   |                                  }|                                  t          | d|          \  }}|                     d           | j        dk    rt          | ||          }t          j        |d |D                       }t          j	        ||||          }|S )N)rl  rl  r!  c                 L    g | ]!\  }}t          j        |j        ||           "S )rQ  )r   rV  r[   )rO  rR  r9  s      r4   rP  z(p_buffer_or_template.<locals>.<listcomp>
  s@     
 
 
U "swCuEEE
 
 
r6   rg  )rA  rB  r   )
rZ   rO   r  rr   rK   r  r   rY  r   r   )rP   r   rD   r[   rA  rB  r[  r   s           r4   r  r  
  s    
**,,CFFHHH 	&a;; "O\ HHSMMMts{{-aKK%c
 
*
 
 
  L
 $S)#') ) )F Mr6   c                     |r|s|S |s2|r0t          |           rt          | |          S t          | |d           S |s#|s#t          |           rt          | |          S |S d S d S r/   )r  r  r  )rP   r   r  r   s       r4   p_bracketed_base_typer  
  s     "X " "x "$Q'' 	A+A~>>>'>4@@@ "8 " %Q'' 	"+A~>>>!!" " " "r6   c                    | j         | j        |                                 fg}|                                  d}| j        dk    rd}n`| j         dk    rU|                    | j         | j        |                                 f           |                                  | j         dk    rd}|d d d         D ]} | j        |  |S )NFrj   Tr  r:  )rK   rN   rZ   rO   rV   r  )rP   savedretvalsvs       r4   r  r  
  s    
 dAJ

-.EFFHHHFzS	
adAJ

5666	43;;FDDbDk  
BMr6   c                 L   |                                  }|                                  t          |           \  }}|D ]*}t          |          dk     r|                     d           +|                     d           t          ||          }t          j        |||          }|S )Nr%   zDAn axis specification in memoryview declaration does not have a ':'.rl  )r   axes)	rZ   rO   rm  r>  r   rr   ro  r   r   )rP   r   r[   rq  r  r  rs  r   s           r4   r  r  
  s    
**,,CFFHHH$Q''MJ \ \	y>>AGGZ[[[HHSMMMsJ//G*3+  F Mr6   c                 4    | j         dk    o| j        t          vS rI   )rK   rN   r  r   s    r4   looking_at_namer  
  s    47?Iqz1IIIr6   c                    | j         t          v rdS | j        dk    rd}| j         }|                                 }g }|                                  | j        dk    rb|                                  |                    | j         |                                 f           |                     d           | j        dk    b| j        | j         |                                 f}| j        dk    rd}n| j        dk    s| j        dk    r(|                                  | j        dv } | j        |  ny| j        dk    r*|                                  | j        dk    } | j        |  nD| j        d	k    r9|                                  | j        d
k    pt          |            } | j        |  |	                                 |D ]-} | j        dg|R   |                     dd|d                    .|                     d||           | o|d         S dS )NFrJ   r"  Tr   r#  )r   rl  r   r!  rl  r"   r   )
rN   base_type_start_wordsrK   rZ   rO   rV   rr   r  r   reverse)rP   is_typerR   r  dotted_pathr  ps          r4   r   r   
  s   z***u	
z::<<	dckkFFHHH
AJJLL9:::HHW dckk
 aj!**,,.47??GGTS[[ADDLLFFHHHdj(GAJTS[[FFHHHdckGAJTS[[FFHHHdck;););%;GAJ 	) 	)AAJx$!$$$$JJtT1Q4((((	

8T8,,,{'uQx'tr6   c                 4    | j         dk    o| j        t          v S rI   )rK   rN   r  r   s    r4   r  r    s    47?Bqz-BBBr6   c                     | j         dk    rS| j        }|                                 }|                                  | j         dk    }|                     d||           |S dS )NrJ   r"  r   )rK   rN   rZ   rO   r  )rP   rR   r  r   s       r4   r  r    sY    twz::<<		

8T8,,,qr6   )voidcharr  r  doublebint)r   r   )r%   r   )r"   r   )
Py_UNICODEPy_UCS4	Py_hash_t
Py_ssize_tssize_tsize_t	ptrdiff_tPy_tss_t)shortr  r  r  )structunionenumpackedc                    d}d}| j         dk    ru| j        t          v rg| j        dk    rd}n,| j        dk    rd}n| j        dk    rd}n| j        d	k    r|dz  }|                                  | j         dk    r| j        t          v g||fS )
Nr"   r   rJ   r  r  r%   r  r:  r  )rK   rN   sign_and_longness_wordsrO   )rP   r  r  s      r4   r  r  7  s    FH
$'//aj,CCC:##FFZ8##FFZ7""HHZ6!!MH	 $'//aj,CCC 8r6   c                 f    t          | d          }|t          |          }| j        |_        nd }|S )Nr  )r  r   r  r7  )rP   literalcnames      r4   p_opt_cnamer  F  s:    "1c**Gg&&*Lr6   c           	         |                                  }| j        dk    r|                                  | j        dk    st          |           rCt	          j        || j                            d          d           }	t          | |||	|          }
nAt          | |||||d          }
| 
                    d           nt          | ||||||          }
|s<|
j        r5| j        dk    r*t          |                                  d|
j        z             | j        dv rb|                                  }| j        d	k    rt          | |
          }
n'|                                  t          | |||
|          }
d
}| j        dv b|
S )Nr   r   r  )rR   r  r"   )r   r  cmethod_flagr  calling_convention_allowedz&%s on something that is not a function)r!  r   r!  r   )rZ   rK   rO   r  r   CNameDeclaratorNoderL   rM   p_c_func_declaratorr   rr   p_c_simple_declaratorcalling_conventionr   p_c_array_declarator)rP   r8   r   r  r  
assignabler  r  r[   rg  r   s              r4   r   r   O  s    **,,Cts{{	43;;/!,,;,Sqy7O7OPS7T7T\`aaaD(CdLIIFF#AsEW3?/7ABD D DF HHSMMMM&q#ug|'18= =% )&*C )PSajjllD'( 	) 	) 	)
$*

jjll43;;)!V44FFFFHHH(CflKKF $*

 Mr6   c                     |                                  }|                                  | j        dk    rt          |           }nd }|                     d           t          j        |||          S )Nrl  )rg  	dimension)rZ   rO   rK   r  rr   r   CArrayDeclaratorNode)rP   rg  r[   dims       r4   r  r  r  s`    
**,,CFFHHHts{{mmHHSMMM%c$CHHHHr6   c                    t          | ||d          }t          |           }|                     d           t          |           }t	          | |j        dk              \  }}	}
|r&|
r$t          |                                 dd           |pt          |           }t          |           }t          j
        ||||||	|p|j        p|||
	  	        S )	Nr   )r  nonempty_declaratorsr   externzThe keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.r%   r   )rg  rm   has_varargsexception_valueexception_checkr(   with_gilhas_explicit_exc_clause)p_c_arg_listp_optional_ellipsisrr   p_nogilp_exception_value_clauser?   r   rZ   
p_with_gilr   CFuncDeclaratorNoder(   )rP   r[   r8   rg  r  rm   ellipsisr(   exc_val	exc_check
exc_clauser  s               r4   r  r  |  s    3|/02 2 2D"1%%HHHSMMMAJJE%=aS[A[%\%\"GY
 
 
JJLL 	
 	
 	
 	
 WQZZE!}}H$SD!Y..h8]gi i i ir6   )r   r   r   r_   r   z++z--r   r   r   r   r   r   rU   r   r   r   r   r   r   []()r-  r7  r  c           	      6   |                                  }t          |           }| j        dv r| j        dk    }	|                                  |                                  }
| j        dk    o
| j        dk    }|r|                                  t          | ||||||          }|rt          j        |
|          }|	rt          j        ||          }t          j        ||          }n| j        dk    s| j        dk    rh| j	        j
        r\| j        dk    rt          j        nt          j        }|                                  t          | ||||||          } |||          }n*d }| j        dk    r| j        }|r"t          |                                  d	           |                                  t          |           }|d
k    r0| j        dk    r%|r#|                                  t          |           }n(|r"t          |                                  d           d}d }||j        |r|j        dz   |z   }|d
k    r9|j        dk    r-|r*| j        }d |D             r|                                  |dk    r|                     d           d}np|dk    r|                     d           d}nR|dv r%| j        |k    r|dz  }|                                  n)| j        dk    r|| j        z  }|                                  |t&          vr|                     d|z  d           ||z  }nL|dk    rF| j        }|t&          vr|                     d|z  d           |dz   |z   }|                                  t          j        ||||          }||_        |S )Nrh  r#  r  rJ   )r   r  r  r   r  )rg  r   r   zDeclarator should be emptyr   r7  zEmpty declaratorr  ::r  c                     g | ]}|d v d	S )z+-*/<=>!%&|([^~,r"   rF   )rO  r  s     r4   rP  z)p_c_simple_declarator.<locals>.<listcomp>  s#    999a&8!8!8!8!8!8r6   r   r   r  r!  rl  r  )r   r   r   r   r%   z,Overloading operator '%s' not yet supported.Fr    )rR   r  default)rZ   r  rK   rO   rN   r   r   CConstDeclaratorNodeCPtrDeclaratorNoderL   cpp CppRvalueReferenceDeclaratorNodeCReferenceDeclaratorNoder   r  rs   rC   r?   rr   supported_overloaded_operatorsr  r  )rP   r8   r   r  r  r   r  r[   r  	is_ptrptr	const_posr  rg  r   
node_classr   rR   r  r\   s                      r4   r  r    s   
**,,C-a00t{DDL		JJLL	:(<QTW_ 	FFHHHaE7+7)3hH H H  	D-idCCCD 	<+Cd;;;D)#D999	
!)-?@tt||U;;QVQo
	aE7+7)3hH H H Cd+++47??:D Bajjll$@AAAFFHHHNNEz!!adckkjkQii 8ajjll$6777DE=S]686MD(4/E:#.H"<"<"<B992999 99HHSMMMBB3YYHHSMMMBB///ADBJJ!GBFFHHHHTS[[!$JBFFHHH;;;GGJRO"'  ) ) )
wZ;;;GGJRO"'  ) ) )czB*3#7 7 7 2FMr6   c                 ^    | j         dk    r!| j        dk    r|                                  dS dS )NrJ   r(   r"   r   rK   rN   rO   r   s    r4   r  r    s0    tw1:00	qqr6   c                 r    | j         dk    r+|                                  |                     d           dS dS )Nr  rM  r"   r   )rK   rO   expect_keywordr   s    r4   r  r    s8    tv~~		qqr6   c                 x   d}d}|rdnd}| j         dk    r%| j        dk    rd}|                                  d}n|| j         dk    rpd}|                                  | j         dk    rd}|                                  n7| j         dk    rd}|                                 d	         }|                                  | j         dk    rv| j        }|d
k    rD|                                 d	         |dz   k    r"t	          |                                 d           nt          | |          }|                                  n{| j         dk    r<t          j        |                                 d          }|                                  n3| j         dk    rd}|                                  nd}t          |           }|||fS )a  
    Parse exception value clause.

    Maps clauses to exc_check / exc_value / exc_clause as follows:
     ______________________________________________________________________
    |                             |             |             |            |
    | Clause                      | exc_check   | exc_value   | exc_clause |
    | ___________________________ | ___________ | ___________ | __________ |
    |                             |             |             |            |
    | <nothing> (default func.)   | True        | None        | False      |
    | <nothing> (cdef extern)     | False       | None        | False      |
    | noexcept                    | False       | None        | True       |
    | except <val>                | False       | <val>       | True       |
    | except? <val>               | True        | <val>       | True       |
    | except *                    | True        | None        | True       |
    | except +                    | '+'         | None        | True       |
    | except +*                   | '+'         | '*'         | True       |
    | except +<PyErr>             | '+'         | <PyErr>     | True       |
    | ___________________________ | ___________ | ___________ | __________ |

    Note that the only reason we need `exc_clause` is to raise a
    warning when `'except'` or `'noexcept'` is placed after the
    `'nogil'` keyword.
    FNTrJ   noexceptr$  r   r   r%   r(   r"   zf'except +nogil' defines an exception handling function. Use 'except + nogil' for the 'nogil' modifier.r8  r   )	rK   rN   rO   rZ   r   r  r   r  rs   )rP   	is_externr  r  r  plus_char_posrR   s          r4   r  r    s   2 JG",Itw1:33
				
		
	43;;IFFHHHHTS[[IJJLLOMFFHHHtwz7??zz||A-!*;;;ajjll GH H H %QooGFFHHHH#,QZZ\\FFFts{{ 	!	QiiGIz))r6   )r   r#  r}  r   rj   r_   c                     g }|}| j         t          vrY|                    t          | ||||||                     | j         dk    rn$|                                  d}| j         t          vY|S )N)r  kw_onlyrl   rU   r   )rK   c_arg_list_terminatorsrV   p_c_arg_declrO   )	rP   r8   	in_pyfuncr  r  r0  rl   rm   is_self_args	            r4   r  r  A  s     DK
$,
,
,LCK+w!# # # 	$ 	$ 	$ 43;;	 $,
,
, Kr6   c                 >    | j         dk    rt          |            dS dS )Nr}  r"   r   )rK   r~  r   s    r4   r  r  Q  s%    tu}}qqr6   c                    |                                  }dx}}	d }
d }| j        rt          j        |d g dddd|d 	  	        }nt	          | |          }t          | ||          }| j        dv r| j        s|| j        }|                                  | j        dk    r | j        dk    r|                                  n| 	                    d           |st          |d|z             |d	k    }	|d
k    }|r.| j        dk    r#|                                  t          |           }| j        dk    r|                                  d|j        v r\| j        dv r)t          j        |          }
|                                  n9d|j        v rt          |           }
n t          |d           nt          |           }
t          j        |||||	|
||          S )Nr   )rR   r  r  r  r  r  r4  rD   r  )r   r   rJ   r  zExpected 'None'z*'%s None' only allowed in Python functionsr   r   rj   r7  r  )r   r   r'   z;default values cannot be specified in pxd files, use ? or *)r   r   not_noneor_noner  r  r0  )rZ   r   r   r  r   r   rK   rO   rN   r   r  r>   r   r  	modifiersrs   CArgDeclNode)rP   r8   r3  r  r  r0  rl   r[   r8  r9  r  r  r   r   r  s                  r4   r2  r2  X  s   
**,,CHwGJ 8-cr!A&D	: : :		 "!h777	38<<<Jt}Q%5t	47??qzV33FFHHHHGG%&&& 	L#CdJKKK$,5= %QTS[[	!!__
ts{{	CItz!!#,S11S]** ))cXYYYYQiiGc   r6   c                 ^    | j         dk    r!| j        dk    r|                                  dS dS )NrJ   r)   r"   r   r(  r   s    r4   p_apir=    s0    tw1:..	qqr6   c                    |                                  }t          | |j                  |_        |j        pt	          |           |_        |j        r!|j        dvrt          |d|j        z             |j        dk    r| j        dk    rt          | ||          S | j        dk    r%|                                  t          | ||          S t          |           r.d|_
        |j        rt          |d           t          | |          S | j        dk    r'|j        rt          |d           t          | |          S | j        d	k    rA|j        d
vrt          |d           |j        rt          |d           t          | ||          S | j        dk    r| j        dk    rt!          | ||          S | j        dk    rZ| j        t"          v rL|j        d
vrt          |d           |j        r| j        dk    rt          |d           t%          | ||          S | j        dk    r| j        dk    rt'          | ||          S t)          | ||          S )N)r-   publiczCannot combine 'api' with '%s'r  r  r  r"   z$cdef blocks cannot be declared cpdefrj   r|  rx  z*Extension type definition not allowed herez(Extension types cannot be declared cpdefrJ   r+  z/C struct/union/enum definition not allowed herer  z'C struct/union cannot be declared cpdeffused)rZ   p_visibilityr?   r)   r=  r   rK   p_cdef_extern_blockrO   r  r(   rB   p_cdef_blockr>   p_c_class_definitionrN   p_cpp_class_definitionstruct_enum_unionp_struct_enump_fused_definitionrT  )rP   r8   r[   s      r4   r  r    s`   
**,,C!!S^44CNg!qCG
w J>!666#7#.HIII("""1c3///	
			"1c3///	 8	? 	?#=>>>As###	
? 	?#=>>>As###	
9444#CDDD? 	C#ABBB#AsC000	
QZ:55%ac222	
QZ+<<<9444#HIII? 	FzV##cDEEEQS)))	
QZ722!!S#...*1c3777r6   c                 6    t          |  |d                    S )Nr"   )r@   )r  r  s     r4   rC  rC    s    1cca((()))r6   c                    |j         rt          |d           d }|                     d           | j        dk    r|                                  nt          | d          d         } |dd          }| j        d	k    r/|                                  t          | d          d         |_        t          |           rd|_	        t          | |d
          \  }}t          j        |||||j                  S )Nz+cdef extern blocks cannot be declared cpdefr  r   r  r%   r"   r  )r@   r?   rC   T)include_fileverbatim_includerV  rC   )rB   r   rr   rK   rO   r  rN   rC   r  r(   r  r   CDefExternNode)rP   r[   r8   rK  rL  rV  s         r4   rB  rB    s    
 Bc@AAALHHVts{{	'3//2
#!(
3
3
3Cz[  	(C003qzz 	 4AsDAAd#+M	# # # #r6   c                 @   |                                   d}| j        j        r7| j        dk    s| j        dk    r!| j        dk    rd}|                                   | j        dk    rA| j        }|                                   t          |           }||j        |j        dz   |z   }nd x}}|r|                     d           |rD| j        dk    r9|                                   t          |           }| 	                    d	           nt          j        |d
g dddd          }| 	                    d           g }d }| j        dk    rt          | ||           nn|                                   |                                  t          |           }| j        dvrt          | ||           | j        dv|                                  |s|j        dk    rt          |d           t          j        |||||||j        |j        |j        |j        |j        dk    |          S )NFr|  rJ   r  Tr  zUnnamed scoped enum not allowedr   r   r  r"   r   )rR   r  r  r  r  r  rj   r  r  r  zDEmpty enum definition not allowed outside a 'cdef extern from' blockry  )rR   r  scopedrv  underlying_typerA   r?   create_wrapperr)   in_pxdr  )rO   rL   r   rK   rN   r  rC   r   r   rr   r   r  p_c_enum_linerS  r  rU  r?   r  rA   rB   r)   r>   )	rP   r[   r8   rO  rR   r  rP  rv  r  s	            r4   p_c_enum_definitionrT    sB   FFHHHFy} !$'//adgoo!*PXBXBX	twz	A=S]6MD(4/Eu 	7GG5666 
!$#++	'**	3"
 
 
 HHSMMME
Ctyae$$$$		1ood+++!S%((( d+++ 	
 [S^x//cYZZZ$eU'%#.GCI53@ @ @ @r6   c                    | j         dk    rWt          | ||           | j         dk    r:|                                  | j         dv rnt          | ||           | j         dk    :n|                                  |                     d           d S )Nr  rU   r  zSyntax error in enum item list)rK   p_c_enum_itemrO   r  )rP   r8   rv  s      r4   rS  rS    s    tv~~ae$$$dckkFFHHHt)))!S%(((	 dckk 	
566666r6   c                 L   |                                  }t          |           }t          |           }||j        |j        dz   |z   }d }| j        dk    r#|                                  t          |           }|                    t          j	        ||||                     d S )Nr  r7  )rR   r  r9  )
rZ   rS   r  rC   rK   rO   rs   rV   r   CEnumDefItemNode)rP   r8   rv  r[   rR   r  r9  s          r4   rV  rV  "  s    
**,,C1::DNNE}2$t+Ets{{	q			LL'UE3 3 3 4 4 4 4 4r6   c                 j   d}| j         dk    rAd}|                                  | j        dk    s| j         dk    r|                     d           | j         }|                                  t	          |           }t          |           }||j        |j        dz   |z   }d }| j        dk    r>|                                  g }| j        dk    r,|                                  |                     d	d
           n|                     d           | 	                                 t          |j                  }| j        dk    rv| j        dk    r7|                    t          | |                                 |                     n)|                                  |                     d	           | j        dk    v|                                  |s|j        dk    rt!          |d           n|                     d           t#          j        ||||||j        |j        |j        |j        dk    |
  
        S )NFr  TrJ   r  r  rj   r  r  r  r  )r?   r  r  zOEmpty struct or union definition not allowed outside a 'cdef extern from' blockz*Syntax error in struct or union definitionry  )	rR   r  r  
attributesrA   r?   r)   rR  r  )rN   rO   rK   expectedrS   r  rC   r  rr   rS  r+   r?   rV   rT  rZ   rU  r   r   r  rA   r)   r>   )	rP   r[   r8   r  r  rR   r  rZ  rV  s	            r4   p_c_struct_or_union_definitionr\  /  s5   FzX	47??ajH44JJx   :DFFHHH1::DNNE}2$t+Jts{{	
46>>FFHHH1DIIIIHHYOOcn555H$(""46>>%%3Aqzz||XNNP P P P FFHHH$$%9::: $("" OO 	jcn88#hiii	EFFF&sU4j'cng	\ 9FL L L Lr6   c                 J   |j         dvrt          |d           |                                  t          |           }|                     d           |                                  |                                  g }| j        dk    ra| j        dk    r#|                    t          |                      n|                                  |                                  | j        dk    a| 
                                 |st          |d           t          j        |||          S )z5
    c(type)def fused my_fused_type:
        ...
    rx  z&Fused type definition not allowed hererj   r  r  zNeed at least one type)rR   types)r>   r   rO   rS   rr   r  rS  rK   rV   r   rU  r   FusedTypeNode)rP   r[   r8   rR   r^  s        r4   rH  rH  [  s    y000c;<<<FFHHH1::DHHSMMMOOE
$(

46>>LLq))****FFHHH	 $(

 OO -c+,,,sU;;;;r6   c                 \    | j         dk    rt          | ||          S t          | ||          S )Nr  )rN   rT  r\  )rP   r[   r8   s      r4   rG  rG  }  s3    zV"1c3///-ac:::r6   c                     |                                  }|}| j        dk    rN| j        dv rE| j        }|dk    r$||k    r|                     d|d|dd           |                                  |S )	NrJ   )r  r?  readonlyr-   z Conflicting visibility options 'z' and ''Fr   )rZ   rK   rN   r   rO   )rP   prev_visibilityr[   r?   s       r4   rA  rA    s    
**,,C Jtw1:)IIIZ
i''J/,I,IGGG"??JJJ07<  > > >	r6   c                     | j         dk    r7| j        dv r.| j        }|                                  |gt          |           z   S g S )NrJ   )r'   )rK   rN   rO   p_c_modifiers)rP   modifiers     r4   rf  rf    sG    tw1:44:	zM!,,,,Ir6   c                 ~   |j         dv }t          |           }t          | d|j                  }t	          |  ||          |dd          }|j        |_        | j        dk    r-| j        dk    r"|j         dk    r|                                  d}nd	}| j        d
k    r:| 	                    dd           |                                  t          |            | j        dk    rt|j         dvr|j        s| 	                    d           t          | t          d                    \  }}	t          j        ||j        |||	|||j        |j        |
  
        }
n|r||_        |g}| j        dk    rT|                                  | j        dk    rn4t	          | ||dd          }|                    |           | j        dk    T| j        dz   }|                     dd           |j         dv r| j        |k    rt+          |           }nd }t          j        ||j        |||j         dv ||j        ||j        	  	        }
|
S )N)r}  r  r"   r  )r:  )r  r   r  rJ   r  	cpp_classr   ->z~Return type annotation is not allowed in cdef/cpdef signatures. Please define it before the function name, as in C signatures.Fr   rj   )r  r}  ry  r  ri  z&C function definition not allowed hererc  r   )	r?   r   r   rV  r  r:  r)   rB   is_const_methodrU   r  z&Syntax error in C variable declarationTr  )ry  r  )r?   r   declaratorsrR  r  r)   r:  rB   )r>   rf  r   rD   r   rB   rK   rN   rO   r   rs   r  r+   r   r  r?   r)   rk  rV   
start_liner  r  r  )rP   r[   r8   r  r:  r   r   rk  r  suiter   rl  doc_lines                r4   rT  rT    s   9 ::La  IaA3=IIII33#;#;#;L-.1> > >J _Jtw1:00SY+5M5M	tt||	M 	 	 	 	 	
q			ts{{9[[[dgdq[GG<===+As/D/D/DEE
U#C!#!'/-	/ 	/ 	/  	9)8J&!ldckkFFHHHty  '3|561F F FJz*** dckk <!#	ATXYYY9222q|x7O7Oq//CCC"3!%Y"??'!/+ + + Mr6   c           	      \   |                                  }|                                  t          | |j                  }t	          |           } |d|          }|rd|_        | j        dk    rt          | ||          S | j        dk    r| j        t          v rt          | ||          S | j        dk    r| j        dk    rt          | ||          S t          | d          }t          | |dd          }|                     dd	
           t          j        ||||||j        dk              S )Nr"   )rA   r?   r|  rJ   r@  r7  )r  r  z"Syntax error in ctypedef statementTr  ry  )r   r   r?   r)   rR  )rZ   rO   rA  r?   r=  r)   rK   rD  rN   rF  rG  rH  r   r   r  r   CTypeDefNoder>   )rP   r8   r[   r?   r)   r   r   s          r4   r  r    s?   
**,,CFFHHHa00J
((C
#QZ
8
8
8C
 tw#AsC000	
QZ+<<<QS)))	
QZ722!!S#...!!222	#AsaAFFF
	=PTUUU!Y##3Y,.	0 0 0 	0r6   c                     g }| j         dk    r|                                 }|                                  t          |           }|                    t          j        ||                     |                     d           | j         dk    |S )Nr   )	decoratorz"Expected a newline after decorator)rK   rZ   rO   r   rV   r   DecoratorNoder  )rP   r  r[   rs  s       r4   r  r    s    J
$#++jjll	$Q''	%-cYGGGHHH	=>>> $#++ r6   c                     | j         dk    r2|t          v r)|                     d|z  d           t          |           S |S )zqStep over incorrectly placed cdef modifiers (@see _CDEF_MODIFIERS) to provide a good error message for them.
    rJ   zTCannot use cdef modifier '%s' in Python function signature. Use a decorator instead.Fr   )rK   r   r   rS   )rP   rR   s     r4   _reject_cdef_modifier_in_pyrv    sH     	tw4?22	fimmuz{{{qzzKr6   c                    |r|d         j         n|                                 }|r|                                  |                                  t	          | t          |                     }|                     dd| j        dk    r| j        n| j        z             t          | d          \  }}}|                     d           t	          | | j                   d }| j        dk    r8|                                  t          |           }t	          | | j                   t          | t          d	                    \  }	}
|r|                                  t          j        ||||||	|
|||

  
        S )Nr   r   z~Expected '(', found '%s'. Did you use cdef syntax in a Python declaration? Use decorators and Python type annotations instead.rJ   r   )rk   rj  rc  r   )	rR   rm   rn   ro   r  rV  r  r  return_type_annotation)r[   rZ   enter_asyncrO   rv  rS   rr   rK   rN   rq   r  r  r+   
exit_asyncr   DefNode)rP   r  r  r[   rR   rm   rn   ro   rx  r  rV  s              r4   r  r    sj   )
;*Q-

qzz||C 	FFHHH&q'!**55DHH	>$'//AJJqt	56 6 6
 $1s#C#C#C D(LHHSMMM1:...!tt||	!-a#Aqz222&q#J*?*?*?@@IC 	=$TH<dz57 7 7 7r6   r   c           	         t          | dd|          }d }d }| j        dk    rt          |          dk    r|                     d           |                                  |D ]	}d|_        
| j        dk    r;|                                  |                    t          | dd|                     n | j        |k    r|                     d           | j        dk    r|                                  | j        d	k    rt          | |
          }| j        dk    r<|                                  |                    t          | ddd|                     n | j        |k    r|                     d           | j        dk    r%|                                  t          | |
          }| j        dk    r|                                  |||fS )Nr"   )r3  r  rl   r_   r   zTGot zero positional-only arguments despite presence of positional-only specifier '/'rU   z-Syntax error in Python function argument listr   rJ   )rl   )r3  r  r0  rl   r#  )r  rK   r>  r   rO   pos_onlyrX  p_py_arg_decl)rP   rk   rl   rm   rn   ro   r   s          r4   rq   rq   #  s   q$-/ / /DHLts{{t99>>GG 4 5 5 5	 	 	CCLL43;;FFHHHKKQA'(iA A A B B B BTZGGCDDDts{{	47??$Q)<<<H43;;FFHHHKKQA'(A9N N N O O O OTZGGCDDDtt||	$Q)<<<ts{{	(L))r6   c                     |                                  }t          |           }d }|r.| j        dk    r#|                                  t	          |           }t          j        |||          S )Nrj   )rR   r  )rZ   rS   rK   rO   r  r   PyArgDeclNode)rP   rl   r[   rR   r  s        r4   r~  r~  G  sa    
**,,C1::DJ %QTS[[	!!__
s4jIIIIr6   c                    |                                  }|                                  t          t          |                     }| j        |_        d }d }| j        dk    r(t          | d          \  }}t          |||          \  }}|t          j
        |g           }t          | t          d                    \  }}	t          j        ||||||	|| j        j        dk              S )	Nr   Fr@  rJ  r|  r   r&   )rR   basesrB  r  rV  r  force_py3_semantics)rZ   rO   r   rS   r  r7  rK   rG  ra  r   rL  r  r+   r   PyClassDefNoderL   r  )
rP   r  r[   
class_namer]  r[  rA  rB  r  rV  s
             r4   r  r  Q  s    
**,,CFFHHHwqzz**J+JILts{{(9!%(P(P(P%":3Q]"^"^	<'"555	&q#G*<*<*<==IC*!dzI49; ; ; ;r6   c                    |                                   g }t          |           }| j        dk    rC|                                   |                    |           t          |           }| j        dk    C|r|j        dk    rt          |d           |r:| j        dk    r/| j        dk    r$|                                   t          |           }n|}d }d }d }d }	| j        dk    r?t          | d          \  }
}|r|                     d	           t          ||
|          \  }}|t          j
        |g 
          }| j        dk    rE|j        dvr)|j        s"t          |                                 d           t          |           \  }}}	| j        dk    r2|j        dk    rd}nd}t          | t!          |                    \  }}n|                     d           d }d }|j        dk    r%|st          |d           |rt          |d           n|j        dk    r%|st          |d           |st          |d           nO|j        dk    r,|j        r$|st          |d           |st          |d           nt          |d|j        z             t%          j        ||j        |j        |j        d                    |          ||||||	|j        dk    ||          S )Nr"  r  z6Qualified class name only allowed for 'extern' C classrJ   r  r   Fr  z$C classes cannot take keyword bases.rJ  r!  )r?  r  zBName options only allowed for 'public', 'api', or 'extern' C classrj   ry  r  r}  r   z"Syntax error in C class definitionz)Module name required for 'extern' C classz?Type object name specification not allowed for 'extern' C classr?  z>Object struct name specification required for 'public' C classz<Type object name specification required for 'public' C classr-   z;Object struct name specification required for 'api' C classz9Type object name specification required for 'api' C classzInvalid class visibility '%s')r?   rA   r)   r  r  r  r  objstruct_nametypeobj_name
check_sizerR  r  rV  )rO   rS   rK   rV   r?   r   rN   rG  ra  r   rL  r)   rZ   p_c_class_optionsr>   r  r+   r  r   r  rA   r  )rP   r[   r8   r  r  r  r  r  r  r  rA  rB  r  
body_levelr  rV  s                   r4   rD  rD  h  s>   FFHHHKJ
$#++	:&&&QZZ
 $#++  Ms~11cKLLL qtw1:+=+=	!**NLEJts{{(9!%(P(P(P% 	<GG:;;;+C,OOq}#Cb111ts{{>!555cg5!**,, deee3DQ3G3G0jts{{9$$&JJ"J*1c
.C.C.CDD	TT	=>>>
~!! 	D#BCCC 	Z#XYYY	8	#	# 	Y#WXXX 	W#UVVV	9	$	$7 	X! ZcXYYY XcVWWWc2S^CDDDs^'ghh{++'#l*   r6   c                    d }d }d }|                      d           	 | j        dk    rn| j        dk    r$|                                  t	          |           }ny| j        dk    r$|                                  t	          |           }nJ| j        dk    r?|                                  t	          |           }|dvr|                     d|z             | j        d	k    rn|                                  |                      d
d           |||fS )Nr!  r"   rJ   objectrJ  r  )ignorewarnr   z/Expected one of ignore, warn or error, found %rrU   rl  z)Expected 'object', 'type' or 'check_size')rr   rK   rN   rO   rS   r   )rP   r  r  r  s       r4   r  r    s   NLJHHSMMM47??:!!FFHHH$QZZNNZ6!!FFHHH"1::LLZ<''FFHHH J!<<<IJVWWW43;;	!" HHS=>>><33r6   c                     |                                  }|                                  t          |           }t          | t	          d          d          \  }}t          j        ||||          S )Nr~  r   Tr  )rR   r  rV  )rZ   rO   rS   r  r+   r   PropertyNode)rP   r[   rR   r  rV  s        r4   r  r    sk    
**,,CFFHHH1::D&	3Z   6 6 6ICc#DAAAAr6   c                     | j         dk    rP|                                 }t          |           }|                     dd           t	          j        ||          S dS )zO
    Parses any kind of ignorable statement that is allowed in .pxd files.
    r  zSyntax error in stringTr  r  N)rK   rZ   r&  r  r   r  )rP   r[   string_nodes      r4   r  r    s^     	t~jjllQii	1DIII!#K88884r6   c                     | j         dk    rV|                                 }t          |           \  }}}|                     dd           |dv r|S t	          |d           |S d S )Nr  zSyntax error in doc stringTr  r  2Python 3 requires docstrings to be unicode strings)rK   rZ   r  r  r   )rP   r[   r  bytes_resultunicode_results        r4   r  r    sw    t~jjll-A!-D-D*lN	5MMM9!!IJJJtr6   c                 V   d}| nt          | t          j                  r/| j        j        r"| j        }t          j        | j        g           } njt          | t          j                  rP| j        rI| j        }t          |d         t          j                  r"|d         j        j        r|d         j        }|d= |d}nit          |t          j	                  rt          | j        d           |j        }n2t          |t          j                  r|j        }||j        }n|j        }|| fS )z
    Extract a docstring from a statement or from the first statement
    in a list.  Remove the statement if found.  Return a tuple
    (plain-docstring or None, node).
    Nr  r   r  )r   r   r  ru   is_string_literalr  r[   r  r   r  r   r9  r  r  )r   doc_noder  r  s       r4   r  r    s5    H|	D%,	-	- 	9& 	:yH%dhb999D	D%,	-	- $* 
eAh 233 	Qx}.  8=!H	Hi1	2	2 	D	F 	F 	Fn	Hi2	3	3 $;.Cn9r6   c                     t          |  ||          d          }| j        dk    r@|                     dt          | j                  dt          | j                  d           |S )Nr   r"   rb  r  Syntax error in statement [rU   rl  )r8  rK   r   r  rN   )rP   r>   r8   rV  s       r4   p_coder    sq    Ass5111QGGGDtu}}	JJJJQZ((((* 	+ 	+ 	+Kr6   z$^#\s*cython\s*:\s*((\w|[.])+\s*=.*)$c           
         i }| j         dk    r|                                 }t          | j                  }|r|                    d                                          }	 t          j        |d          }nM# t          $ r@}| 	                    |j
        d         d           |                                  Y d }~d }~ww xY w|D ]}||vrt          j                            |          t          u r"||xx         ||         z  cc<   ||         ||<   O||         ||         k    rt          |d|           u| 	                    d	|d
||         d||         |           d|v r | j                            |d                    d|v r|d         | j        _        |                    |           |                                  | j         dk    |S )Ncommentliner"   T)ignore_unknownr   Fr   zDuplicate directive found: z3Conflicting settings found for top-level directive z: z and r6  r  legacy_implicit_noexcept)rK   rZ   !_match_compiler_directive_commentrN   r"  r3  r   parse_directive_list
ValueErrorr   rm   rO   directive_typesgetrK  r   rL   set_language_levelr  r1   )rP   r   r[   mdirectives_stringnew_directiveserR   s           r4   p_compiler_directive_commentsr    s#   F
$-

jjll-aj99 	* !

 0 0 2 2!(!=>O`d!e!e!e   q	///
 ' 
L 
Lv%%,0066$>>4LLLN4$88LLL+1$<N4((#D)VD\99CCDD!JKKKKGGGfTlllN4,@,@BGJ  L L L L  >11	,,^<L-MNNN)^;;5CD^5_	2 MM.)))	C $-

D Ms   "A9 9
C6B>>Cc                 V   |                                  }t          |           }d| _        | j        j        d| j                            d           |d         j        r=dd l}|                    d|d         j        z  t          t          j        rdnd           |rdnd	}t          |           }t          |  ||
          d          }	| j        dk    r@|                     dt!          | j                  dt!          | j                  d           t%          |||	||          S )NF3strr   zwCython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: %sr"   r%   )
stacklevelry  r  r   rb  r  r  rU   rl  )r  rV  full_module_namedirective_comments)rZ   r  r2  rL   r  r  filenamewarningsr  FutureWarningcythoncompiledr  r8  rK   r   r  rN   r   )
rP   r  r  r8   r[   r  r  r>   r  rV  s
             r4   p_moduler  F  sF   
**,,C6q99Ay'		$$V,,,q6? 	OOOMMCEHV_U &611Q	      -LLXE
q//CAss///1EEEDtu}}	JJJJQZ((((* 	+ 	+ 	+cT)9+=? ? ? ?r6   c                     t          |           }| j        dk    r-|                     d           |                     d           d}nd}||fS )Nr7  r   FT)rS   rK   rr   )rP   rR   requireds      r4   p_template_definitionr  a  sL    1::Dts{{		>r6   c           
      4   |                                   t          |           }t          |           }||j        |j        dz   |z   }| j        dk    rt          |d           | j        dk    r|                                   t          |           g}| j        dk    rA|                                   |                    t          |                      | j        dk    A|                     d           d |D             }nd }d }| j        dk    r|                                   t          | |	          g}| j        dk    rC|                                   |                    t          | |	                     | j        dk    C|                     d
           ng }| j        dk    r"t          | 
                                d           t          |           }| j        dk    r|                                   |                     d           |                                  t          |            g }	t          |j        d|p|j                  }
||
_        | j        dk    rc| j        dk    r$|	                    t%          | |
                     n)|                                   |                     d           | j        dk    c|                                  nd }	|                     d           t+          j        |||||j        |j        dk    |	|          S )Nr  r"  z*Qualified class name not allowed C++ classr!  rU   rl  c                     g | ]\  }}|S rF   rF   )rO  rR   r  s      r4   rP  z*p_cpp_class_definition.<locals>.<listcomp>{  s    ???>4$???r6   r   r  r   z&Name options not allowed for C++ classrj   r  ri  )r?   r>   r(   r  r  r  z$Syntax error in C++ class definitionry  )rR   r  base_classesr?   rR  rZ  rD   )rO   rS   r  rC   rK   r   r  rV   rr   r   rZ   r  rS  r  r+   r?   r(   rD   p_cpp_class_attributer  rU  r   CppClassNoder>   )rP   r[   r8   r  r  rD   template_namesr  r(   rZ  rV  s              r4   rE  rE  k  s   FFHHHJNNE}2$z1ts{{c?@@@ts{{	*1--.	dckkFFHHH2155666 dckk 	
??Y???	ts{{	%a^DDDEdckkFFHHHa^ L L LMMM dckk 	
ts{{ajjllDEEEAJJEts{{			 	Q
CN+UM_VYV_```+dhtv~~!!"78"D"DEEEE  !5666 dh 	

	?@@@c#^l*   r6   c                    d }| j         dk    rt          |           }| j        dk    r#t          | |                                 |          S | j        dk    rt          | |          S | j         dk    r_| j        t          v rQ| j        dk    r#t          | |                                 |          S t          | |                                 |          S t          | |                                 |          }|qt          j
        t          j        t          j        f}|j        r|t          j        t          j        fz  }t!          ||          s|                     d           ||_        |S )Nr   r+  rw  rJ   r  r  )rK   r  rN   rE  rZ   r  rF  rG  rT  r   r  r  r  rE   r  r  r   r   r  )rP   r8   r  r   r  s        r4   r  r    sA   Jts{{!!__
zZ%as;;;	
z	!	!#As+++	
QZ+<<<:)!QZZ\\3??? AJJLL#666*1ajjllC@@!$e&79LLC. Gu2E4FFFdC(( SQRRR(DOr6   c                    d|z  }|r|                      |           |r|                      d|z             t          |          }|t          u r||                      d|d         d|d         d           t          dt	          |                    D ]}t          | ||         |dz              |                      d	|z             d S t          |t          j                  r	 |j	        }n# t          $ r |j        j        }Y nw xY w|                      |d|j        d           |j                                        D ]&\  }}	|d
k    r|dk    rt          | |	|dz   |           'd S |t           u rh|                      d           t          t	          |                    D ]}t          | ||         |dz              |                      d|z             d S |                      ||d           d S )Nz  z%s: r   r   z @ r"   r  r%   z%s)
tagr[   z[
z%s]
)writerJ  rU  ranger>  print_parse_treer   r   Noder  r  r  r;   r[   r0   rv  rK  )
r  r   r>   rR  indtr  r  rR   r9  s
             r4   r  r    s    
,C 	 	"GGFSL!!!JJ::GGGDGGGT!WWW56661c$ii(( 6 6 DGU1W5555GGGcM"""Fej)) 	.h! . . .n-.GG3331222#}2244 > >e5==TU]]$QuQw===F$YYGGENNN3t99%% 6 6 DGU1W5555GGGcM"""FGGTTT"#####s   'C/ /DDc                 t    |                                  }t          |           }t          j        ||          S )a  An annotation just has the "test" syntax, but also stores the string it came from

    Note that the string is *allowed* to be changed/processed (although isn't here)
    so may not exactly match the string generated by Python, and if it doesn't
    then it is not a bug.
    r  )rZ   rs   r   AnnotationNode)rP   r[   ru   s      r4   r  r    s2     **,,C!99D#Cd3333r6   rF   )rG   )T)NN)r  r/   )r   )F)FN)r   r   r   r"   )NF)r   r"   )r"   )r  r   r  rm  r  r  rU  ri  ior   r   r   unicodedatar    r
   r!   r   	functoolsr   r   Scanningr#   r	   r$   r  r   r   r   r   r   r   r   r   r   Errorsr   r   r   r   r   version_infor   
maxunicoder   r   r+   rS   rX   r]   rh   rv   rs   ry   r   r   r   r   r   r   r   r   r   r   r   r   	frozensetr   r   r   r   r   r   r   r   r   r   r   r	  r  r  r   r%  r'  rG  ra  r,  r1  rm  ru  rx  r~  ro  r  r&  r  r  r  r  r  r  r  r  r   r   r  r  r$  r  rW  rO  rU  r  r  r}  r  rR  r  r  r  r?  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r\  r  r  r  r  r  r  r+  r(  r?  rC  r  rE  rK  rB  rd  rg  rj  ro  ru  r  r8  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  rF  r  r  r   r  r  r#  r  r  r  r  r1  r  r  r2  r=  r  rC  rB  rT  rS  rV  r\  rH  rG  rA  rf  rT  r  r  rv  r  rq   r~  r  rD  r  r  r  r  r  r  r  r  r  r  r  r  rE  r  r  r  rF   r6   r4   <module>r     sg   ' & & & & &   B B BVV Bvv BVV B#VB4:FB$*FB?EvBX^X^B fB '-fB 5;FB EKFB v	B +1&	B 9?	B JP	B Y_X^	B
 &B
 %fB
 ?EfB
 cibhB vB '-fB 7=kkB V\U`U`B  %uB =ADB B       				 



 R R R R R R R R % % % % % % % % J J J J J J J J J J                         J J J J J J J J J J J J " " " " " " " " " " " " " "                  

1

"Nf, ,    &   0            &
 
 
    *  $511 5 5 5  "6 6 6  
 
 
  # # #
 
 
    &  	99 6 , ,  / / /
/ / /
1 1 1
7 7 7
/ / /
A A A
    &  <  (5 5 5,? ? ?F F F,  (F F F
' 
' 
',01 01 01 01f'# '# '#T
Z 
Z 
Z"  (	" 	" 	"         1 1 1 1=5 =5 =5~2 2 2@. . .& & &R), ), ),X7 7 7 7  c. c. c. c.L+( +( +(\8! 8!$  %8! 8! 8! 4 4*, , ,, , ,^P P Pt/ / /<  ( ( (  ,jZ jZ jZ\3 3 3             
 
 
B B B "6>)YY 8( .) .) * * 0 0 02 2 20W 0W 0Wf, , ,8. . .6/ / /# # # #$ $ $' ' '4 4 4* * *:0 0 0@N N N Nb     
S 
S 
S  
B 
B 
B 'y)) = 3 3   
< 
< 
<' ' '  	# 	# 	#( ( ( () ) ) )V7 7 7   &v~i < 2 2        e e e e2 2 260 0 0<' ' '*     @
 
 
e e e:D D D0       D! ! ! !F  # # #  6nX nX nX nXb6 6 6 6$ 355 B B B B   .6) 6) 6) 6)pO O O O   *6>)YY @* 6+ 6+ , ,    :_ _ _ _B  2" " "*  *   J J J' ' 'RC C C	 	 	 $V^Iyy :6 07 07 8 8  't
. 
. 
 
  )&.II ?+ 5, 5, - -  'i%&&'( (  #FN9ii 9) /* /* + +       CEE1! !a01! ! ! !FI I Ii i i0 "0	99 F < < " " N N N`    A* A* A*F (	99 >% 4& 4& ' '  #%%Qq()QA       BC*+2 2 2 2h  '8 '8 '8R* * *# # #2<@ <@ <@|
7 
7 
74 4 4*L *L *LX <  <  <D; ; ;	 	 	  > > >@0 0 02    7 7 7 7@"* "* "* "*HJ J J J; ; ;.I I IX4 4 44B B B	 	 	
 
 
     F c     %3FN6:2:+<- <--2%4 %4 !$ $ $N ,/ ? ? ? ?6  < < <|  >$ $ $ $>	4 	4 	4 	4 	4r6   