+
    VBi                       ^ RI t ] P                  ! ER/ R]bR]bR]bR]bR]bR]bR]bR	]bR
]bR]bR]bR]bR]bR]bR]bR]bR]bR]b  ^ RIt^ RIHt ^ RIt^RIHt ^RI	H
t
HtHtHtHt ^RIHt ^RIHt ^RIHt ^RIHtHt ^RIHtHtHtHtHtHtHtHtHtHtHt ^RI H!t! ^RI"H#t# ^RIH$t$ ^RIH%t% ^R IH&t& ^R!I'H(t(H)t)H*t* ^R"I+H,t,H-t- R#R$0t. ! R% R&]P^                  4      t0R' t1R( t2R) t3 ! R* R+]44      t5 ! R, R-]44      t6 ! R. R/4      t7R0 t8]8 ! R1 R24      4       t9 ! R3 R4]94      t: ! R5 R64      t; ! R7 R8]94      t< ! R9 R:]94      t= ! R; R<]=4      t> ! R= R>]94      t? ! R? R@]?4      t@ ! RA RB]?4      tA ! RC RD]?4      tB ! RE RF]B4      tC ! RG RH]B4      tD ! RI RJ]?4      tE ! RK RL]?4      tF ! RM RN]?4      tG ! RO RP]94      tH ! RQ RR]94      tI ! RS RT]94      tJ ! RU RV]I4      tK ! RW RX]I4      tL ! RY RZ]I4      tM ! R[ R\]I4      tN ! R] R^]I4      tO ! R_ R`]I4      tP ! Ra Rb]I4      tQ ! Rc Rd]I4      tR ! Re Rf]=4      tS ! Rg Rh]=4      tT ! Ri Rj]T];4      tU ! Rk Rl]=4      tV ! Rm Rn]=4      tW ! Ro Rp]=4      tX ! Rq Rr]=];4      tY ! Rs Rt]Y4      tZ ! Ru Rv]94      t[ ! Rw Rx]94      t\ ! Ry Rz]Y4      t] ! R{ R|]Y4      t^ ! R} R~]]4      t_ ! R R]_4      t` ! R R]`4      ta ! R R]`4      tb ! R R]]4      tc ! R R]=4      td ! R R]=];4      te ! R R]e4      tf ! R R]e4      tg ! R R]=4      th ! R R]=4      ti ! R R]=4      tj ! R R]=4      tk ! R R]=4      tl ! R R]=4      tm ! R R]m4      tn ! R R]m4      to ! R R]m4      tp ! R R]m4      tq ! R R]=4      tr ! R R]=4      ts ! R R]=4      tt ! R R]=4      tu ! R R]<4      tv ! R R]=4      tw ! R R]=4      tx ! R R]=4      ty ! R R]=4      tz ! R R]=4      t{ ! R R]=4      t| ! R R]=4      t} ! R R]94      t~ ! R R]=4      t ! R R]=4      t ! R R4      t ! R R]]=4      t ! R R]94      t ! R R]94      tR t ! R R]]=4      t ! R R]4      t ! R R]4      t ! R R]]=4      t ! R R]=4      t ! R R]m4      t ! R R]=4      t ! R R]94      t ! R R]=4      t ! R R]4      t ! R R]4      t ! R R]=4      t ! R R]4      t ! R R]4      t ! R R]=4      t ! R R]4      t ! R R]=]74      tR tRR RR R]/tR t ! R R]=4      t ! R R]=4      t ! R R]=4      t ! R R]94      t ! R R]=]4      t ! R R]4      t ! R ER ]4      t ! ER ER]=4      t ! ER ER]94      t]%EPF                  '       d   ERtMERt]!EPJ                  ! ERER4      t]!EPJ                  ! ER	ER4      t]!EPJ                  ! ER
ER4      t]!EPJ                  ! ERER4      t]!EPJ                  ! ERER4      t]!EPJ                  ! ERER4      t]!EPJ                  ! ERER4      t]!EPJ                  ! ERER4      tR# (      NoscopychainBuiltinerrorwarningNaming
PyrexTypespy_object_typeModuleScope
LocalScopeClosureScopeStructOrUnionScopePyClassScopeCppClassScopeUtilityCodeEncodedString
error_type)r   )r   )r   r   InternalErrorCompileErrorCannotSpecialize)r	   )r
   )	TypeSlots)r   r   )r   r   r   PropertyScoper   r   r   TemplateScopeGeneratorExpressionScopeCppScopedEnumScopepunycodify_name)r   )r   )Future)Options)
DebugFlags)has_np_pythranpythran_typeis_pythran_buffer)add_metaclassstr_to_number__init_subclass____class_getitem__c                   "    ] tR t^(t^ t^t^tRtR# )
NoGilState N)__name__
__module____qualname____firstlineno__HasGilNoGil
NoGilScope__static_attributes__r*       :/usr/lib/python3.14/site-packages/Cython/Compiler/Nodes.pyr)   r)   (   s    FE Jr3   r)   c                 B    V ^ ,          P                  4       V ^,          3# r   )get_filenametable_entryposs   &r4   relative_positionr:   0   s    F**,c!f55r3   c                 H   \         P                  '       g   V# R \        V 4      ,          pVf   \        V4      # VP                  pVe    VP                  V4       V'       g   \        V4      pM\        VR,           V,           4      pW4n        V#   \         d    Rp LDi ; i)zFile: %s (starting at line %s)N
)r   embed_pos_in_docstringr:   r   encodingencodeUnicodeEncodeError)r9   	docstringpos_liner>   docs   &&   r4   embed_positionrD   4   s    )))/2CC2HHHX&& !!H	OOH% H%HtOi78LJ " 	H	s   B B! B!c                    a a VV 3R  lpV# )c            	        < \        V 4      ^8  EdD   \        V ^,          S4      '       Ed*   V R,          w  r#RRVP                  ,          : RVP                  P                  : RS	P                  : RVP
                  R,          : R2	pVP                  4       pVP                  P                  P                  4       pV;P                  ^,          un        S	! V / VB pV;P                  ^,          un        WcP                  P                  P                  4       8w  d4   VP                  VP                  RR	^4      4       VP                  V4       V# S	! V / VB # )
   :N   Nz                    /*  z -> .rG   NNz */->z<-)len
isinstance
call_level	__class__r+   r9   insertion_pointbufferstreamtellputlnreplace)
argskwdsnodecodemarkerrQ   startrescodewriter_classfuncs
   *,      r4   fwrite_func_call.<locals>.fO   s   t9q=ZQ1ABB bJD$doo%%''	F #224OKK&&++-EOOq O%%COOq O**//11

6>>$a89%%f-J&&&r3   r*   )r_   r^   r`   s   ff r4   write_func_callrb   N   s    ', Hr3   c                   2   a a ] tR t^ht oV 3R ltRtVtV ;t# )VerboseCodeWriterc                   < ^ RI Hp ^RIHp \	        V4      pVP                  4        F%  w  rg\        Wt4      '       g   K  \        Wu4      W6&   K'  	  \        SV `%  WW#4      # )r   FunctionType)CCodeWriter)
typesrg   Coderh   dictitemsrN   rb   super__new__)	clsnamebasesattrsrg   rh   mnamemrP   s	   &&&&    r4   rn   VerboseCodeWriter.__new__k   sN    &%UHE!**.q> & ws%77r3   r*   )r+   r,   r-   r.   rn   r2   __classdictcell____classcell__rP   __classdict__s   @@r4   rd   rd   h   s     8 8r3   rd   c                   J   a a ] tR t^ut oRt]! 0 Rm4      tV 3R ltRtVt	V ;t
# )CheckAnalyserszCMetaclass to check that type analysis functions return a node.
    c                   < ^ RI Hp R p\        V4      pVP                  4        F4  w  rg\	        Wt4      '       g   K  W`P
                  9   g   K*  V! Wg4      W6&   K6  	  \        SV `  WW#4      # )r   rf   c                    a a VV 3R  lpV# )c                  L   < S! V / VB pVf   \        S: RV : RV: 24       V# )NrI   )print)rW   kwargsretvalr_   rp   s   *, r4   call3CheckAnalysers.__new__.<locals>.check.<locals>.call   s+    t.v.>dF;<r3   r*   )rp   r_   r   s   ff r4   check%CheckAnalysers.__new__.<locals>.check   s    
 Kr3   )ri   rg   rk   rl   rN   methodsrm   rn   )	ro   rp   rq   rr   rg   r   rs   rt   rP   s	   &&&&    r4   rn   CheckAnalysers.__new__~   sZ    &	 UHE!**u/C$U & ws%77r3   r*   >   analyse_typesanalyse_expressionsanalyse_target_types)r+   r,   r-   r.   __doc__	frozensetr   rn   r2   rv   rw   rx   s   @@r4   r{   r{   u   s#       G8 8r3   r{   c                   &   a  ] tR t^t o R tRtV tR# )CopyWithUpTreeRefsMixinc                "   V P                   pVP                  V4      pV P                  P                  4        FS  w  rEW@P                  9   d   VP                  \        V4      V4      pM\        P                  ! WQ4      p\        W4V4       KU  	  V# N)
rP   rn   __dict__rl   uptree_ref_attrsgetidr   deepcopysetattr)selfmemoro   resultkvs   &&    r4   __deepcopy__$CopyWithUpTreeRefsMixin.__deepcopy__   su     nnS!MM'')DA))) HHRUA&MM!*Fq! * r3   r*   N)r+   r,   r-   r.   r   r2   rv   ry   s   @r4   r   r      s      r3   r   c                 \    \         P                  '       d   \        \        4      ! V 4      # V # r   )r    debug_trace_code_generationr$   rd   )ro   s   &r4   _with_metaclassr      s$    ---./44Jr3   c                      a  ] tR t^t o ^ t^ t^ t^ t^ tRt	Rt
RtRtRtRtRtRtR tRtRtRtRR ltRtR tR tR tR	 tR
 tR tR tR tRR ltRR lt Rt!V t"R# )NodeFNc                H    Wn         V P                  P                  V4       R # r   )r9   r   update)r   r9   kws   &&,r4   __init__Node.__init__   s    R r3   	Operationc                T    \        V P                  R V P                  ,          4       R# )z%s not allowed without gilN)r   r9   gil_messager   envs   &&r4   	gil_errorNode.gil_error   s    dhh4t7G7GGHr3   c                V    VP                  4       '       g   V P                  4        R # R # r   )is_cpp	cpp_errorr   s   &&r4   	cpp_checkNode.cpp_check   s    zz||NN r3   c                T    \        V P                  R V P                  ,          4       R# )z%s only allowed in c++N)r   r9   cpp_messager   s   &r4   r   Node.cpp_error   s    dhh043C3CCDr3   c           	         \         P                   ! V 4      pVP                   FA  p\        W4      p\        V\        4      '       g   K&  \        YV Uu. uF  qDNK  	  up4       KC  	  V# u upi )a7  Clone the node. This is defined as a shallow copy, except for member lists
amongst the child attributes (from get_child_accessors) which are also
copied. Lists containing child nodes are thus seen as a way for the node
to hold multiple children directly; the list is not treated as a separate
level in the tree.)r   child_attrsgetattrrN   listr   )r   r   attrnamevaluexs   &    r4   
clone_nodeNode.clone_node   s]     4**HF-E%&&e*<e1e*<= +  +=s   
A*c                    R # r   r*   r   s   &&r4   analyse_declarationsNode.analyse_declarations      r3   c                N    \        R V P                  P                  ,          4      h)z*analyse_expressions not implemented for %sr   rP   r+   r   s   &&r4   r   Node.analyse_expressions  s$    HNN##$ % 	%r3   c                N    \        R V P                  P                  ,          4      h)z$generate_code not implemented for %sr   r   rZ   s   &&r4   generate_codeNode.generate_code  s$    BNN##$ % 	%r3   c                l    \        V \        4      '       d   V P                  P                  V4       R # R # r   )rN   	BlockNodebodyannotater   s   &&r4   r   Node.annotate  s&    dI&&IIt$ 'r3   c                    V P                   #   \         d    T P                  pT P                  '       g   Yn         Tu # T P                   Fg  p\	        Y4      pTf   K  \        T\        4      '       d%   T F  p\        YP                  4       4      pK  	  KN  \        YP                  4       4      pKi  	  Yn         Tu # i ; ir   )	_end_posAttributeErrorr9   r   r   rN   r   maxend_pos)r   r9   attrchildcs   &    r4   r   Node.end_pos  s    	==  	((C### #
((+=t,,"!#yy{3 # c==?3C )  MJ!	s    (CCA?CCc                  aaaa
 S^ 8X  d   R# Sf   \        4       o\        V 4      S9   d)   RV P                  P                  \        V 4      3,          # SP	                  \        V 4      4       VV
VV3R lo
V P
                  P                  4        UUu. uF  w  rVVS9  g   K  WV3NK  	  ppp\        V4      ^ 8X  d)   RV P                  P                  \        V 4      3,          # RV,          pRV P                  P                  \        V 4      3,          p	V F&  w  rVW: RV: RS
! Wa^,           4      : R2,          p	K(  	  V	R	V,          ,          p	V	# u uppi )
zYDebug helper method that returns a recursive string representation of this node.
        z<...nesting level cutoff...>z<%s (0x%x) -- already output>c           
        < \        V \        4      '       d   V P                  VSS^,
          S4      # \        V \        4      '       d/   RRP	                  V  Uu. uF  pS! W!4      NK  	  up4      ,          # \        V 4      # u upi )rG   z[%s], )rN   r   dumpr   joinrepr)r   levelitemcutoff
dump_childencountered
filter_outs   && r4   r   Node.dump.<locals>.dump_child4  sm    !T""vveZ;GGAt$$		q*Qqt:d+Bq*Q RRRAw +Rs   B
z<%s (0x%x)>z  z<%s (0x%x)
: r<   z%s>)setr   rP   r+   addr   rl   rM   )r   r   r   r   r   keyr   rr   indentr]   r   s   &&fff     @r4   r   	Node.dump)  s#    Q;1%Kd8{"2dnn6M6MrRVx5XXX4!	 	 150C0C0E_0E*#T^I^#0E_u:? DNN$;$;RX#FFFE\F DNN$;$;RX#FFC#
jPQ	6RSS $56>!CJ `s   E$Ec           	        V P                   '       g   R# V P                   w  r4pVP                  RRR7      pV\        ^ V^,
          4      V pVR,          pV'       d   VRV V,           WR ,           pVP                  4       R,           VR&   WvWD^,            ,          pRP	                  V4      p	RVP                  4        R	VR
 RVR
 RV	 R2	# )z[Debug helper method that returns the source code context of this node as a string.
         ASCIIignore)r>   error_handlingNz             # <<<<<<<<<<<<<<r<   "z":d:)r9   	get_linesr   rstripr   get_escaped_description)
r   mark_columnr[   source_desclinecolcontentslinescurrentrZ   s
   &&&       r4   dump_posNode.dump_posG  s     xxx!%3(('((SQQ-)dsmf,wt}<GNN$'FFb	$Av&&yy;6689D81SG2dVSUVVr3   )r   r9   r   )r   r8   d   N)Fz(#))#r+   r,   r-   r.   is_nameis_noneis_nonecheck
is_literalis_terminator
is_wrapperis_cpropertyis_templated_type_nodetempsr   outer_attrscf_statecoercion_typer   r   nogil_checkin_nogil_contextr   r   r   r   r   r   r   r   r   r   r   r  r2   rv   r   s   @r4   r   r      s      GGLJMJL"E
 K KH M! KKI KEJ%%%
*<W Wr3   r   c                   h   a  ] tR tRt o RtR.t]R 4       t]R 4       tR t	R t
R tR	 tR
 tRtV tR# )CompilerDirectivesNodeiZ  z1
Sets compiler directives for the children nodes
r   c                    \         P                  ! VP                  3/ VB pV ! VP                  WVP                  R 7      # )r   
directivesr  )r   copy_inherited_directivesr  r9   r  )ro   r   r   r  new_directivess   &&&, r4   for_directives%CompilerDirectivesNode.for_directivesc  s5     ::3>>XZX488$QUQcQcddr3   c                    \         P                  ! VP                  4      pV ! VP                  WVP                  R 7      # r  )r   copy_for_internalr  r9   r  )ro   r   r   r  s   &&& r4   for_internal#CompilerDirectivesNode.for_internalh  s0     223>>B488$QUQcQcddr3   c                    VP                   pV P                   Vn         V P                  P                  V4       W!n         R # r   )r  r   r   r   r   olds   && r4   r   +CompilerDirectivesNode.analyse_declarationsm  s-    nn		&&s+r3   c                    VP                   pV P                   Vn         V P                  P                  V4      V n        W!n         V # r   )r  r   r   r   s   && r4   r   *CompilerDirectivesNode.analyse_expressionss  s6    nnII11#6	r3   c                    VP                   pVP                  P                   pV P                   VP                  n         V P                  P                  W4       W1n         WBP                  n         R # r   )r  globalstater   generate_function_definitions)r   r   rZ   env_oldcode_olds   &&&  r4   r'  4CompilerDirectivesNode.generate_function_definitionsz  sQ    ..##..&*oo#		//: &.#r3   c                    VP                   P                  pV P                  VP                   n        V P                  P                  V4       W!P                   n        R # r   )r&  r  r   generate_execution_coder   rZ   r!  s   && r4   r,  .CompilerDirectivesNode.generate_execution_code  sC    ))&*oo#		))$/&)#r3   c                    VP                   P                  pV P                  VP                   n        V P                  P                  V4       W!P                   n        R # r   )r&  r  r   r   r-  s   && r4   r   CompilerDirectivesNode.annotate  sC    ))&*oo#		4 &)#r3   r   N)r+   r,   r-   r.   r   r   classmethodr  r  r   r   r'  r,  r   r2   rv   r   s   @r4   r  r  Z  s[      (Ke e e e/** *r3   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )r   i  c                    VP                  4       P                  pV F  pVP                  P                  V4       K   	  VR  R# )NNNN)global_scopeundeclared_cached_builtinsr&  add_cached_builtin_decl)r   r   rZ   entriesentrys   &&&  r4   generate_cached_builtins_decls(BlockNode.generate_cached_builtins_decls  s;    ""$??E44U; AJr3   c                N    VP                    F  pVP                  W4       K  	  R # r   )lambda_defsr'  )r   r   rZ   rY   s   &&& r4   generate_lambda_definitions%BlockNode.generate_lambda_definitions  s    OOD..s9 $r3   r*   N)r+   r,   r-   r.   r;  r?  r2   rv   r   s   @r4   r   r     s     : :r3   r   c                   T   a  ] tR tRt o R.t]R 4       tR tR tR t	R t
R tR	tV tR
# )StatListNodei  statsc                    \        V 3/ VB pV# r   )rB  )r9   r   r   rY   s   &&, r4   create_analysedStatListNode.create_analysed  s    C&2&r3   c                N    V P                    F  pVP                  V4       K  	  R # r   rC  r   r   r   stats   && r4   r   !StatListNode.analyse_declarations  s    JJD%%c* r3   c                p    V P                    Uu. uF  pVP                  V4      NK  	  upV n         V # u upi r   )rC  r   rI  s   && r4   r    StatListNode.analyse_expressions  s<     #'**.",$ ..s3",.
.s   3c                N    V P                    F  pVP                  W4       K  	  R # r   rC  r'  r   r   rZ   rJ  s   &&& r4   r'  *StatListNode.generate_function_definitions  s    JJD..s9 r3   c                    V P                    F/  pVP                  VP                  4       VP                  V4       K1  	  R # r   )rC  mark_posr9   r,  r   rZ   rJ  s   && r4   r,  $StatListNode.generate_execution_code  s.    JJDMM$((#((. r3   c                N    V P                    F  pVP                  V4       K  	  R # r   rC  r   rT  s   && r4   r   StatListNode.annotate      JJDMM$ r3   rC  N)r+   r,   r-   r.   r   staticmethodrE  r   r   r'  r,  r   r2   rv   r   s   @r4   rB  rB    s>      )K +
:
/   r3   rB  c                   ,   a  ] tR tRt o R tR tRtV tR# )StatNodei  c                    R # r   r*   r   r   rZ   s   &&&r4   r'  &StatNode.generate_function_definitions  r   r3   c                N    \        R V P                  P                  ,          4      h)z.generate_execution_code not implemented for %sr   r   s   &&r4   r,   StatNode.generate_execution_code  s$    LNN##$ % 	%r3   r*   N)r+   r,   r-   r.   r'  r,  r2   rv   r   s   @r4   r]  r]    s     % %r3   r]  c                   D   a  ] tR tRt o R.tR tR tR tR tR t	Rt
V tR	# )
CDefExternNodei  r   c                   VP                   p^Vn         V P                  P                  V4       W!n         V P                  '       g   V P                  '       d   V P                  P
                  pVP                  R,          '       g   RpM?V'       g   RpM4\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      pVP                  V P                  V P                  V4       R# R# )rG   preliminary_late_includes_cy28Fc              3   B   "   T F  p\        V\        4      x  K  	  R # 5ir   )rN   CVarDefNode).0rY   s   & r4   	<genexpr>6CDefExternNode.analyse_declarations.<locals>.<genexpr>  s     KUT:dK88Us   TN)	in_cincluder   r   include_fileverbatim_includerC  r  alladd_include_file)r   r   old_cinclude_flagrC  lates   &&   r4   r   #CDefExternNode.analyse_declarations  s    OO		&&s++ 5 5 5IIOOE>>"BCCsKUKsssKUKK  !2!2D4I4I4P !6r3   c                F    V P                   P                  V4      V n         V # r   r   r   r   s   &&r4   r   "CDefExternNode.analyse_expressions  s    II11#6	r3   c                <    V P                   P                  W4       R # r   r   r'  r_  s   &&&r4   r'  ,CDefExternNode.generate_function_definitions      		//:r3   c                    R # r   r*   r   s   &&r4   r,  &CDefExternNode.generate_execution_code  r   r3   c                <    V P                   P                  V4       R # r   r   r   r   s   &&r4   r   CDefExternNode.annotate      		4 r3   r1  Nr+   r,   r-   r.   r   r   r   r'  r,  r   r2   rv   r   s   @r4   rd  rd    s-     
 (KQ$
;! !r3   rd  c                   4   a  ] tR tRt o . tRtR tR tRtV t	R# )CDeclaratorNodei  r   c                    R # r   r*   r   s   &r4   declared_nameCDeclaratorNode.declared_name  s    r3   c                    R # r   r*   r   s   &r4   analyse_templates!CDeclaratorNode.analyse_templates  s    r3   r*   N)
r+   r,   r-   r.   r   calling_conventionr  r  r2   rv   r   s   @r4   r  r    s!      K r3   r  c                   :   a  ] tR tRt o R.tRtR tRR ltRtV t	R# )CNameDeclaratorNodei  defaultNc                    V P                   # r   rp   r   s   &r4   r  !CNameDeclaratorNode.declared_name!      yyr3   c                `   V'       d   V P                   R 8X  d   VP                  '       g%   VP                  '       g   VP                  '       d   \	        V P
                  R4       MHVP                  '       d   \	        V P
                  R4       MVP                  R ^^R7      V n         \        pVP                  '       d/   VP                  '       d    VP                  VP                  4      pWn        W3#   \         d+    \	        T P
                  RT P                   ,          4        L=i ; i)r   Missing argument nameJUse spam() rather than spam(void) to declare a function with no arguments.)for_displaypyrexR'%s' cannot be specialized since its type is not a fused argument to this function)rp   is_ptris_array	is_bufferr   r9   is_voiddeclaration_coder   is_fusedfused_to_specific
specializer   type)r   	base_typer   nonempty
visibilityin_pxds   &&&&&&r4   analyseCNameDeclaratorNode.analyse$  s    		R9#5#5#59L9L9Ldhh 78"""dhh lm%66rqPQ6R	*	#"7"7"7!%001F1FG	 	 $ !dhhjii !!s   C8 82D-,D-)rp   r  r   NF)
r+   r,   r-   r.   r   r  r  r  r2   rv   r   s   @r4   r  r    s"     
 +KG r3   r  c                   <   a  ] tR tRt o R.tR tR tRR ltRtV t	R# )	CPtrDeclaratorNodei;  basec                6    V P                   P                  4       # r   r  r  r   s   &r4   r   CPtrDeclaratorNode.declared_name@      yy&&((r3   c                6    V P                   P                  4       # r   r  r  r   s   &r4   r  $CPtrDeclaratorNode.analyse_templatesC      yy**,,r3   Nc                    VP                   '       d   \        V P                  R 4       \        P                  ! V4      pV P
                  P                  WbW4VR7      # )z+Pointer base type cannot be a Python objectr  r  r  )is_pyobjectr   r9   r
   
c_ptr_typer  r  )r   r  r   r  r  r  ptr_types   &&&&&& r4   r  CPtrDeclaratorNode.analyseF  sJ       $((IJ((3yy  ag hhr3   r*   r  )
r+   r,   r-   r.   r   r  r  r  r2   rv   r   s   @r4   r  r  ;  s$      (K)-i ir3   r  c                   2   a  ] tR tRt o R.tR tR tRtV tR# )_CReferenceDeclaratorBaseNodeiM  r  c                6    V P                   P                  4       # r   r  r   s   &r4   r  +_CReferenceDeclaratorBaseNode.declared_nameP  r  r3   c                6    V P                   P                  4       # r   r  r   s   &r4   r  /_CReferenceDeclaratorBaseNode.analyse_templatesS  r  r3   r*   N)	r+   r,   r-   r.   r   r  r  r2   rv   r   s   @r4   r  r  M  s     (K)- -r3   r  c                   *   a  ] tR tRt o RR ltRtV tR# )CReferenceDeclaratorNodeiW  Nc                    VP                   '       d   \        V P                  R 4       \        P                  ! V4      pV P
                  P                  WbW4VR7      # )z-Reference base type cannot be a Python objectr  )r  r   r9   r
   
c_ref_typer  r  r   r  r   r  r  r  ref_types   &&&&&& r4   r   CReferenceDeclaratorNode.analyseX  sJ       $((KL((3yy  ag hhr3   r*   r  r+   r,   r-   r.   r  r2   rv   r   s   @r4   r  r  W       i ir3   r  c                   *   a  ] tR tRt o RR ltRtV tR# ) CppRvalueReferenceDeclaratorNodei_  Nc                    VP                   '       d   \        V P                  R 4       \        P                  ! V4      pV P
                  P                  WbW4VR7      # )z4Rvalue-reference base type cannot be a Python objectr  )r  r   r9   r
   cpp_rvalue_ref_typer  r  r  s   &&&&&& r4   r  (CppRvalueReferenceDeclaratorNode.analyse`  sJ       $((RS11)<yy  ag hhr3   r*   r  r  r   s   @r4   r  r  _  r  r3   r  c                   2   a  ] tR tRt o RR.tRR ltRtV tR# )CArrayDeclaratorNodeig  r  	dimensionNc                   VP                   '       d   VP                  4       '       g%   VP                  '       g   VP                  '       d   ^RIHp \        V P                  V4      '       d   V P                  P                  pMV P                  3pV Uu. uF  qP                  V4      NK  	  p	pRV	9   d5   V	P                  R4      p
\        Wz,          P                  R4       \        pMVP                  V P                  W)4      pV P                  P!                  WW4VR7      # RpV P                  '       Ed8   V P                  P#                  V4      V n        V P                  P$                  P&                  '       g!   \        V P                  P                  R4       V P                  P$                  P(                  '       dF   V P                  P*                  P,                  R8w  d!   \        V P                  P                  R4       \        V P                  P.                  \0        4      '       d   V P                  P.                  MV P                  P3                  4       p \1        V4      pVP7                  4       '       g   \        V P                  RV,          4       VP8                  '       d   \        V P                  R	4       VP                  '       d   \        V P                  R
4       \:        P<                  ! W4      pV P                  P!                  WW4VR7      # u upi   \4         d     Li ; i)rG   	TupleNodeNzTemplate parameter not a typer  zArray dimension not integerexternz(Array dimension cannot be const variablez%Array element type '%s' is incompletez'Array element cannot be a Python objectz"Array element cannot be a function)is_cpp_classis_template_typeis_cfunctionpython_type_constructor_name	ExprNodesr  rN   r  rW   analyse_as_typeindexr   r9   r   specialize_herer  r  analyse_const_expressionr  is_intis_constr:  r  constant_resultintget_constant_c_result_code
ValueErroris_completer  r
   c_array_type)r   r  r   r  r  r  r  rW   r   valuesixsize
array_types   &&&&&&       r4   r  CArrayDeclaratorNode.analysem  sX   ###	(B(B(D(D&&&666,$..)44~~**~~6:;d'',dF;v~\\$'dhll$CD&	%55dhhL	99$$Yhfl$mm>>>!^^DDSIDN>>&&---dnn((*GH~~""+++0D0D0O0OS[0[dnn((*TU6@A_A_ad6e6eDNN22BBD 4y
 $$&&$((CiOP   $((EF!!!$((@A,,Y=
yy  8ci jjA <*  s   L*(L/ /L=<L=)r  r  r+   r,   r-   r.   r   r  r2   rv   r   s   @r4   r  r  g  s      ;'K)k )kr3   r  c                   X   a  ] tR tRt o . ROt^ t^ t^ tRtR t	R t
R	R ltR
R ltRtV tR# )CFuncDeclaratorNodei  Nc                6    V P                   P                  4       # r   r  r   s   &r4   r  !CFuncDeclaratorNode.declared_name  r  r3   c                L   \        V P                  \        4      '       Ed   ^RIHpHp V P                  P                  p\        W14      '       d   VP                  pM-\        W24      '       d   V.pM\        VP                  R4       R# . V n
        V Fe  p\        WR4      '       d<   V P                  P                  \        P                  ! VP                  4      4       KO  \        VP                  R4       Kg  	  V P                  P                  V n        V P                  # R# )rG   )r  NameNodez*Template arguments must be a list of namesN)rN   r  r  r  r  r  r  rW   r   r9   	templatesappendr
   TemplatePlaceholderTyperp   )r   r  r  template_nodetemplate_nodestemplates   &     r4   r  %CFuncDeclaratorNode.analyse_templates  s    dii!5666 II//M-33!.!3!3M44"/m'')UVDN*h11NN))**L*LX]]*[\(,,(TU	 +
 		DI>>!r3   c                H  a a Vf   / pV'       d
   V^,          p. p\        S P                  4       EFj  w  rT	P                  STV^ 8H  ;'       d$    SP                  ;'       d    RSP                  9  R7      w  rV
P
                  pW9   d   WL,          pVP                  S4      pVf   \        VP                  R4       MdV\        P                  JdO   VP                  V4      '       g8   \        S P                  P                  R4       \        VP                  R4       MTpV
P                  '       d   \        S P                  R4       V^ 8X  d1   SP                  '       d   VP                  '       d   SP                  pVP                   '       d!   \        P"                  ! VP$                  4      pVP&                  '       d   \        V	P                  R4       \        P(                  ! WV	P                  4      pV	P*                  '       d   RVn        V	P,                  '       d   RVn        VP/                  V4       V	P0                  '       d   S ;P2                  ^,          un        EK?  S P2                  '       g   EKT  \        S P                  R	4       EKm  	  R p^ pSP                  R
,          '       d]   VP4                  '       gK   S P6                  '       g9   S P8                  '       d'   VR8w  d    RS n        \;        S P                  R^R7       S P8                  R8X  dW   S P=                  S4       SP?                  R4       SP?                  R4       SP?                  R4       SP?                  R4       M+VP4                  '       d   S P8                  '       d   RS n        VP4                  '       dN   S P@                  '       g   S P8                  '       d*   S P8                  R8w  d   \        S P                  R4       EMVP4                  '       dE   S P8                  '       g3   VR8w  d,   S P6                  '       d   \;        S P                  R^4       EM=S P@                  f   S P8                  '       d   S P8                  R8w  d   VP@                  e   VR8w  d   V'       gz   SP                  '       gh   \C        S P                  \D        4      '       gH   ^RI#H$p VPK                  S P                  \M        VP@                  4      VVP@                  R7      S n         S P@                  Ee\   S P8                  R8X  d   S P@                  PO                  S4      S n         S P@                  PP                  pVPR                  '       g   VP4                  '       g   VPT                  '       d/   VPV                  P4                  '       g   VP                  '       dQ   V\        PX                  8X  d   S P@                  PZ                  R8X  g!   \        S P@                  P                  R4       S P@                  pEMRS P@                  P]                  S4      P_                  VS4      PO                  S4      S n         S P@                  Pa                  S4      pVPc                  S P@                  PP                  4      '       g!   \        S P@                  P                  R4       VR8w  d   VPd                  '       g   VPf                  '       d   S P@                  Pi                  4       '       dc    \k        VPl                  4      pS P@                  Pn                  V8X  d2   \;        S P                  RS P@                  Pn                  ,          4       S P8                  pVPT                  '       d   \        S P                  R4       \        Pr                  ! WS Pt                  S P2                  VVS P                  Pv                  S Px                  S Pz                  S P|                  S P~                  S P                  R7      pS P2                  '       d4   VP                  '       d   VV 3R lpVVnB        MS P                  VS4       SP                  R,          pV'       dB   VPv                  pV'       d'   VV8w  d    \        S P                  R V: R!V: R"24       VVn;        VPV                  P                  '       d   \;        S P                  R#^4       VP                   FP  pVPP                  P                  '       g   K!  VP                  4       '       d   K9  \;        S P                  R$^4       KR  	  S P                  P                  VSWVR%7      #   \p         d     ELi ; i)&Nr[  r  is_self_arg
Not a type2Signature does not agree with previous declarationPrevious declaration herez2Function argument cannot have C name specificationr  Tz-Non-default argument follows default argumentlegacy_implicit_noexceptr  FzdImplicit noexcept declaration is deprecated. Function declaration should contain 'noexcept' keyword.r   +iosnew	stdexcepttypeinfozAException clause not allowed for function returning Python objectz?noexcept clause is ignored for function returning Python object	ConstNoder   r  r  *zTException value must be a Python exception, or C++ function with no arguments, or *.z6Exception value incompatible with function return typez;Ambiguous exception value, same as default return value: %rz!Function cannot return a function)	optional_arg_countexception_valueexception_checkr  nogilwith_gilis_overridableis_const_methodr  c                 .   < SP                  V SV4       R # r   )declare_optional_arg_struct)	func_typefused_cnamer   r   s   &&r4   declare_opt_arg_struct;CFuncDeclaratorNode.analyse.<locals>.declare_opt_arg_structU  s    44Y[Qr3   callspeczcannot have both 'z' and 'z' calling conventionsz6Rvalue-reference as function return type not supportedz3Rvalue-reference as function argument not supportedr  r  )F	enumeraterW   r  is_c_class_scoper  rp   r  r   r9   r
   r   same_asr  cnameis_unspecifiedparent_typer  r  r  r  CFuncTypeArgnot_noneor_noner  r  r	  r  has_explicit_exc_clauser  r   r   rp  r
  rN   r  r  r  for_typestrr  r  is_errorr  return_typec_char_typer   r   	coerce_toas_exception_valueassignable_fromr  is_floathas_constant_resultfloatdefault_valuer  r  	CFuncTypehas_varargsr  r  r  overridabler  r  r  r  r  is_rvalue_referenceis_forwarding_reference)r   r%  r   r  directive_localsr  r  func_type_argsiarg_nodename_declaratorr  rp   	type_node
other_typefunc_argexc_val	exc_checkr  exc_val_typetype_default_valuer  r  r  r   args   f&f&&&&                   r4   r  CFuncDeclaratorNode.analyse  sf   #!MH$TYY/KA$,$4$4h!Vee(<(<eeWZWeWeAe %5 %h!O #''D',2	&66s;
%)--6*";";;"ll:66$))--)]^)--)DE%D$$$dhh TUAv#...43F3F3F}}}!,,T^^<|||hll$pq!..t8<<HH   $(!#' !!(+''1,''(((dhh OPI 0L 	NN566#///444((((*#(D DHHO
 3&NN3  '  '  -  ,$$$)=)=)= $)D ###)))T-A-A-A((C/$((_`$$$T-A-A-AjT\F\aea}a}a}DHH_abc##+0D0D0DI]I]adId  //;xAW`f ///
499N`8a8a8/8/A/A HHC0K0K,LS^,7,G,G 0B 0I, ##/''3.+/+?+?+X+XY\+]D(#'#7#7#<#<L(111$0$<$<$<%1%>%>%>-9-E-E-Q-Q-Q-9->->->%1Z5K5K%K)-)=)=)C)Cs)Jd2266tv"22G+/+?+?+M+Mc+R+\+\#S,**B*B3*G ("22EEcJG&66t7K7K7P7PQQd2266VX"h.!,!3!3!3{7K7K7K $ 4 4 H H J JN16{7P7P1Q.  $33CCGYY '2o(,(<(<(L(L3M !N,,I###$((?@(()9)9#66#Y#yy;;**t}}TEUEU 00nn&	 """!!!R 4J	000C@>>*-22G7h.dhh/6!B C+3I(  444DHHVXYZ>>Cxx+++C4O4O4Q4Q"WYZ[ " yy  CJ VVY  * ! !s   0f f! f!c           	        \        4       pR\        P                  ,          pVP                  V\        P
                  V P                  4       VP                  \        VP                  4      V P                  ,
          R  F7  pVP                  VP                  VP                  VP                  RRR7       K9  	  VP                  \        P                  V P                  P                  4      pVe   \        P                  ! W74      pVP!                  4       P#                  VRV^ V P                  VR7      p^Vn        ^Vn        \        P(                  ! VP                  4      Vn        R# )z
Declares the optional argument struct (the struct used to hold the
values for optional arguments). For fused cdef functions, this is
deferred as analyse_declarations is called only once (on the fused
cdef function).
z%snNT)allow_pyobjectallow_memoryviewstruct)rp   kindscopetypedef_flagr9   r  )r   r	   pyrex_prefixdeclare_varr
   
c_int_typer9   rW   rM   r	  rp   r  mangleopt_arg_prefixr  get_fused_cnamer6  declare_struct_or_uniondefined_in_pxdusedr  op_arg_struct)	r   r  r   r  rF  arg_count_memberr?  struct_cnameop_args_structs	   &&&&     r4   r  /CFuncDeclaratorNode.declare_optional_arg_structl  s!    #$ 6#6#66*J,A,A488L>>#inn"58O8O"O"PQCchh#''$aef R zz&"7"7H"%55kPL))+CC D   )*%","7"78K8K"L	r3   )r  r  r
  r  )r  rW   r
  )r   NNFr   )r+   r,   r-   r.   r   r0  r	  r  r  r  r  r  r  r2   rv   r   s   @r4   r  r    s?      6KKOI),eWNM Mr3   r  c                   0   a  ] tR tRt o R.tRR ltRtV tR# )CConstDeclaratorNodei  r  Nc                    VP                   '       d   \        V P                  R 4       \        P                  ! V4      pV P
                  P                  WbW4VR7      # )z)Const base type cannot be a Python objectr  )r  r   r9   r
   c_const_typer  r  )r   r  r   r  r  r  consts   &&&&&& r4   r  CConstDeclaratorNode.analyse  sL       $((=?''	2yy  h^d eer3   r*   r  r  r   s   @r4   rW  rW    s      (Kf fr3   rW  c                      a  ] tR tRt o . ROtRR.t^ t^ t^tRt	^ t
^ t^ t^ tRtRtRtRt^ tRtRtR t]R 4       t]R 4       tRR	 ltR
 tR tR tRR ltRtV tR# )CArgDeclNodei  r  
annotationFNc                6    V P                   P                  4       # r   
declaratorr  r   s   &r4   r  CArgDeclNode.declared_name      ,,..r3   c                6    V P                   P                  4       # r   )rp   as_c_string_literalr   s   &r4   name_cstringCArgDeclNode.name_cstring  s    yy,,..r3   c                    V P                   '       d5   \        \        P                  V P                  P
                  ,           4      # \        \        P                  V P                  P
                  ,           4      # r   )needs_conversionr   r	   
arg_prefixr:  rp   
var_prefixr   s   &r4   	hdr_cnameCArgDeclNode.hdr_cname  sL        "6#4#4tzz#FGG"6#4#4tzz#FGGr3   c                t   V'       d   V;V P                   n        V n        V P                  e   V P                  V P                  3# \	        V P
                  \        4      '       d   V P
                  P                  R8X  d   V'       d   V P                   P                  '       d/   V P                   P                  VRR7      pVP                  4       pMV P                   P                  p\        V4      V P
                  n        R V P                   n        RV P                   n        RpMRpRV P                   n        V P                   P                  WR7      p\        V P                   RR 4      pV'       d   WP
                  n        VP                  '       d   \	        V P                   \        4      '       d   \	        V P
                  \         4      '       db   V P
                  p	\	        V	P"                  \         4      '       d   V	P"                  p	K.  V P                   P$                  V	n        VP                   pV P&                  '       dR   V'       dJ   VP(                  R,          '       d1   \        V P                   RR 4      f   V P+                  V4      p
V
e   T
pV P
                  P                  WqVR7      # )	Nr   T)could_be_nameFarg_nameannotation_typingrp   r  )r  r  r  r7  rN   ra  r  rp   is_basic_c_typer  empty_declaration_coder   is_argr   r  TemplatedTypeNoder  r  array_declaratorr^  r  inject_type_from_annotations)r   r   r  r  r  rp  ro  r  base_arg_namera  arg_types   &&&&       r4   r  CArgDeclNode.analyse  s   <GGDNN&)999 ''22 doo':;;@T@TXZ@Z>>111>>11#T1JD#::<H#~~22H'4X'>$&*#16. M!M $NN**3*L	
DA#0OO 
 t~~/@AAt0DEEJZ__.BCC'__
"nn==JO!++I OOO7J(K(K DNNFD9A88=H#$	&&y&IIr3   c                .   V P                   pV'       g   R # VP                  WP                  R7      w  r4Ve   \        VP                  VRR7      V n        V'       Ed(   RV9   d8   VP                  4       pV'       d   VP                  4       '       g   MRV n        MV\        J d	   RV n        MV P                  '       d   V P                  P                  '       d{   VP                  4       '       g   VP                  '       dS   VP                  4       '       g   VP                  pV P                  '       g   \        V P                  R4       RV n        M/V P                  '       g   VP                  4       '       d   RV n        V'       d   RV n        V# )N)assigned_valueT)r  ru  ztyping.OptionalzIPEP-484 recommends 'typing.Optional[...]' for arguments that can be None.)r^  analyse_type_annotationr  CAnalysedBaseTypeNoder9   r  resolvecan_be_optionalr   r   r  equivalent_typer   r  type_from_annotation)r   r   r^  	modifiersrz  s   &&   r4   rx  )CArgDeclNode.inject_type_from_annotations  s-   __
(@@UaUa@b	2Xd<DN 8 I-#++-H$<$<$>$> #'DL^+#$,,"6"6"6H<T<T<V<VZbZrZrZr//11'77H|||DHH&qr#'DL\\\h&>&>&@&@ $(,D%r3   c                n   V P                   f   V P                  '       d   V P                  P                  '       dO   V P                  P                  V4       V P                  P                  V P                  P                  4       4      # VP                  V P                  4      V n         V P                   # r   )r-  r  r  generate_evaluation_coder  	cast_coder   get_argument_default_constr   s   &&r4   calculate_default_value_code)CArgDeclNode.calculate_default_value_code+  s~    %|||<<***LL99$?99..t||/B/B/DEE%)%D%DTYY%O"!!!r3   c                d    V P                   '       d   V P                   P                  V4       R # R # r   )r  r   r   s   &&r4   r   CArgDeclNode.annotate5  s"    <<<LL!!$' r3   c                   V P                   pVe   VP                  '       d   R # Vf   V P                  V4      pVP                  V4       VP	                  V4       V'       d   VP                  4       MVP                  V P                  4      pVP                  V: RV: R24       VP                  VP                  4       V P                  4       VP                  V4       VP                  V4       R # )N = ;)r  r  r  r  make_owned_referencer   	result_asr  rU   put_giverefgenerate_post_assignment_code
free_temps)r   rZ   targetoverloaded_assignmentr  r   s   &&&&  r4   generate_assignment_code%CArgDeclNode.generate_assignment_code9  s    ,,?g000>66t<F((.$$T*%:!@Q@QRVR[R[@\

01)4995--d34 r3   )r  r-  r  r  r   r  )r  ra  r  r^  )r   FNF) r+   r,   r-   r.   r   r  r  is_type_arg
is_genericis_special_method_optionalkw_onlypos_onlyr  r   r  r7  r-  r^  
is_dynamicdefaults_class_keyr  r  propertyrf  rl  r  rx  r  r   r  r2   rv   r   s   @r4   r]  r]    s     , GKl+KKKJ!&GHHGDOMJJ / / / H H0Jd#J"(! !r3   r]  c                   &   a  ] tR tRt o R tRtV tR# )CBaseTypeNodeiH  c                $    V P                  V4      # r   )r  r   s   &&r4   r  CBaseTypeNode.analyse_as_typeP  s    ||C  r3   r*   N)r+   r,   r-   r.   r  r2   rv   r   s   @r4   r  r  H  s     ! !r3   r  c                   .   a  ] tR tRt o . tRR ltRtV tR# )r  iT  c                    V P                   # r   r  )r   r   ro  s   &&&r4   r  CAnalysedBaseTypeNode.analyseY  r  r3   r*   NFr  r   s   @r4   r  r  T  s      K r3   r  c                   B   a  ] tR tRt o . tRt. tRtRtRt	RR lt
RtV tR# )CSimpleBaseTypeNodei]  NFc                	   R pV P                   '       dW   \        P                  ! V P                  V P                  V P
                  4      pV'       g   \        V P                  R4       EMV P
                  R8X  d   V P                  '       g	   \        pEMV P
                  f;   V P                  '       d!   VP                  '       d   VP                  pEM\        pEMTpV P                  '       EdG   V P                   F  pVP                  V4      pVeY   VP                  '       g/   VP                  '       d5   VP                   P                  '       d   VP                   P"                  pKp  V'       d!   VP$                  '       d   VP$                  pK  R p M	  Vfo   \'        V P                  4      ^8X  dU   ^RIHp VP                  V P                  ^ ,          4      pV'       d%   VP,                  '       d   V! VP,                  4      pVf'   VP/                  V P                  V P                  4      pV'       Ed9   VP                  '       d   VP1                  4       pVP3                  V P
                  4      pVe   MV'       dS   V P                  '       d    VP                  '       d   VP                  pM\        p\5        V P
                  4      V n        MV P8                  '       dd   V P
                  V P8                  9  d(   \        V P                  RV P
                  ,          4       \        P:                  ! V P
                  4      pM'\        V P                  RV P
                  ,          4       V'       d@   VP<                  '       d.   VP>                  '       d   VPA                  VP>                  4      pV PB                  '       dc   VPD                  '       d   VPF                  '       d   \        V P                  R4       \        PH                  ! V4      pVPK                  V4       M<V\(        PL                  J d)   \        PN                  pVPK                  V4       RV n!        V'       g   \        PP                  pV# )Nz&Unrecognised type modifier combinationobject)'get_known_standard_library_module_scopez'%s' is not a type identifierz#can only complexify c numeric typesT))rs  r
   simple_c_typesignedlongnessrp   r   r9   module_pathr   r  r  r  lookupr  is_typer  rF  	as_modulerM   r   r  known_standard_library_importfind_imported_moduler6  lookup_typer   rp  r  r  r  r  r  complex
is_numeric
is_complexCComplexTypecreate_declaration_utility_codecomplex_typec_double_complex_typer   )	r   r   ro  r  rF  r   r:  r  found_entrys	   &&&      r4   r  CSimpleBaseTypeNode.analysen  s    ++DKK		RDdhh HIYY("4+;+;+;!DYYC$8$8$8 &E ,,D!LL.E(***%***A*A*A %

 0 05??? % $ - =S)9)9%:a%? Q"%**T-=-=a-@"AK"{'P'P'P GHqHq r=44T5E5EtxxPEu)))!..0E((3#"'''C,@,@,@"  .$1$))$<DM~~~99DNN:!$((,Kdii,WX)AA$))Ldhh(G$))(STDMMMc&;&;&;??3#8#89D<<<???dooodhh EF**40D005W)))
 33D005DL((Dr3   )rp  r  r  )r+   r,   r-   r.   r   rp  r  rs  r  r  r  r2   rv   r   s   @r4   r  r  ]  s1      KHKOGKT Tr3   r  c                   <   a  ] tR tRt o RtRR.tR	R ltR tRtV t	R# )
MemoryViewSliceTypeNodei  
memoryviewbase_type_nodeaxesc                   V P                   P                  V4      pVP                  '       d   V# ^RIHp  VP                  WP                  4      pTP                  T P                  T4      '       g   \         T n        T P                  # \        P"                  ! Y54      T n        T P                  P%                  T P                  4       T P'                  T4       T P                  #   \         dQ   p\        TP                  TP                  4       \        P                  ! 4       T n        T P                  u Rp?# Rp?ii ; irG   
MemoryViewN)r  r  r$  r   r  get_axes_specsr  r   r   positionmessage_onlyr
   	ErrorTyper  validate_axesr9   r   MemoryViewSliceTypevalidate_memslice_dtypeuse_memview_utilities)r   r   ro  r  r  
axes_specses   &&&    r4   r  MemoryViewSliceTypeNode.analyse  s    ''//4	i/ 	#223		BJ ''*=="DI yy	 #66yMDIII--dhh7&&s+yy  	!**ann-",,.DI99	s   C( (E3AD>8E>Ec                z    ^RI Hp VP                  VP                  VP                  P
                  4      4       R# r  )r   r  use_utility_codeget_view_utility_codecontextshared_utility_qualified_name)r   r   r  s   && r4   r  -MemoryViewSliceTypeNode.use_memview_utilities  s.     ,,99	
r3   r  Nr  )
r+   r,   r-   r.   rp   r   r  r  r2   rv   r   s   @r4   r  r    s#     D#V,K.
 
r3   r  c                   0   a  ] tR tRt o R.tRR ltRtV tR# )CNestedBaseTypeNodei  r  Nc                   V P                   P                  V4      pV\        P                  J d   \        P                  # VP                  '       g.   \        V P                  R V,          4       \        P                  # VP                  P                  V P                  4      pV'       d   VP                  '       g:   \        V P                  RV: RV P                  : R24       \        P                  # VP                  # )z'%s' is not a valid type scope'rJ   z' is not a type identifier)r  r  r
   r   r  r   r9   rF  lookup_hererp   r  r  )r   r   ro  r  
type_entrys   &&&  r4   r  CNestedBaseTypeNode.analyse  s    NN**3/	
---(((%%%$((<yHI(((__00;
!3!3!3$(()TYYWX(((r3   r*   r   r  r   s   @r4   r  r    s      -K r3   r  c                   J   a  ] tR tRt o . ROtRtRtRtR tR	R lt	R t
RtV tR# )
rv  i  TNc                p   VP                   R 8H  pVP                  ;'       d    V'       * p. pV P                   F  pVP                  '       d   K  TP	                  T;'       g    \        V\        4      4      ;_uu_ 4        VP                  V4      pRRR4       Xf/   VP                  '       d   \        VP                  R4       \        pVP                  V4       K  	  VP                   '       dp   VP                   R8X  dN   \        ;QJ d&    R V P                   4       F  '       g   K   RM	  RM! R V P                   4       4      Vn        VP                  4       pMRp\!        V4       F  w  rVf   K  V'       d   VP"                  '       d#   V'       g   K/  VP%                  4       '       d   KG  VP&                  '       d'   XP)                  4       '       g   VP&                  WY&   K  \        XP                  VP                   : RV: 24       \        WY&   K  	  V#   + '       g   i     EL; i)zdataclasses.ClassVarNz!unknown type in template argumentztyping.Unionc              3   8   "   T F  qP                   x  K  	  R # 5ir   )r  )ri  r   s   & r4   rj  <TemplatedTypeNode._analyse_template_types.<locals>.<genexpr>$  s     -VAUAiiAU   TFz [...] cannot be applied to type )r  in_c_type_contextpositional_argsr  new_c_type_contextrN   r  r  r  r   r9   r   r  anycontains_noneallows_noner  r  r  r  as_cython_attribute)
r   r   r  require_python_typesr  template_typesr  ttyperequire_optional_typesr5  s
   &&&       r4   _analyse_template_types)TemplatedTypeNode._analyse_template_types  s   (EEI__11NN:N6N!11M$$$''(9(e(eZWd=eff%55c: g})))-++-PQ&E!!%( 2 11155G*-#-VAUAU-V###-VAUAU-V*V	'%.%:%:%<"%*"!.1HA}#E,=,=,=AWAW`e`u`u`w`w(((1R1R1T1T(-(=(=N%-++!>>.  )3N% 2 = gffs   H$$H5c                N   Vf   V P                   P                  V4      pVP                  '       d   V# VP                  '       d   VP	                  4       '       g   VP
                  '       d   V P                  '       dq   V P                  P                  '       dU   VP                  '       d   RMRp\        V P                  RV,          4       \        P                  V n        V P                  # V P                  W4      pVP                  V P                  W4      V n        EMVP                  '       d   ^RIHp VP%                  V P                  VV P&                  V P                  VP(                  4      p\        P*                  ! V3/ VB V n        \-        V4      '       dU   \/        V P                  4      '       d:   \        P0                  ! \3        V P                  4      V P                  4      V n        M\5        V P                  RR R7      p\7        V P&                  4      ^8  g   V P                  P                  '       d-   \        V P                  R4       \        P                  V n        MlV P&                  '       g   R p	MV P&                  ^ ,          p	\9        V P                  VV	R7      V n        V P:                  P                  W14      ^,          V n        V P                  '       df   V P                  P<                  '       dJ   VP>                  '       d8    V P                  PA                  VP>                  4      V n        V P                  # V P                  #   \B         d6    \        T P                  R	T PD                  ,          4        T P                  # i ; i)
Nzc++ templateszindexed typesz %s cannot take keyword argumentsBufferr   rp   r  zinvalid array declaration)r  r  r  )#r  r  r$  r  r  r  keyword_argskey_value_pairsr   r9   r
   r   r  r  r  r  r   r  analyse_buffer_optionsr  buffer_defaults
BufferTyper!   r#   PythranExprr"   r  rM   r  rw  r  r  r  r   rp   )
r   r   ro  r  tpr  r  optionsempty_declaratorr  s
   &&&&      r4   r  TemplatedTypeNode.analyse9  s   ++33C8Ii/###	(B(B(D(D666   T%6%6%F%F%F(1(>(>(>_Odhh BR GH&11	yy !99#IN!11$((CPDI""" 33$$!!))+G #--iC7CDIc""'8'C'C&22<		3JDIIV	  3488"DQ4''(1,0A0A0Q0Q0Qdhh ;<&11	 +++ $I $ 4 4Q 7I(<HH)'))% !1199)I!L	999+++0E0E0E! II001F1FG	 yytyy $ !dhhjii ! yy!s   "*M$ $2N$#N$c                h   . pT pVP                   '       d   VP                  '       d   \        VP                  4      ^8X  dp   V P                  P	                  V4      pVP
                  '       d.   VP                  '       d   VP                  VP                  4       VP                  ^ ,          pK  V# rG   )r  r  rM   r  r  r  modifier_namer  )r   r   r  modifier_nodemodifier_types   &&   r4   analyse_pytyping_modifiers,TemplatedTypeNode.analyse_pytyping_modifiersv  s     	222}7S7S7SX[\i\y\yXz~X //??DM999m>Y>Y>Y  !<!<=)99!<Mr3   )rw  r  )r  r  r  
dtype_node)FN)r+   r,   r-   r.   r   r  r  rp   r  r  r
  r2   rv   r   s   @r4   rv  rv    s4     1K "JD(T;z r3   rv  c                   2   a  ] tR tRt o RR.tRR ltRtV tR# )CComplexBaseTypeNodei  r  ra  c                v    V P                   P                  W4      pV P                  P                  W14      w  rEV# r   )r  r  ra  )r   r   ro  r  _r  s   &&&   r4   r  CComplexBaseTypeNode.analyse  s1    ~~%%c9//))$4r3   r*   Nr  r  r   s   @r4   r  r    s      -K r3   r  c                   0   a  ] tR tRt o R.tRR ltRtV tR# )CTupleBaseTypeNodei  
componentsc                .   . pV P                    FU  pVP                  V4      pVP                  '       d   \        VP                  R 4       \
        u # VP                  V4       KW  	  VP                  V P                  V4      pRVn        VP                  # )z/Tuple types can't (yet) contain Python objects.T)
r  r  r  r   r9   r   r  declare_tuple_typerP  r  )r   r   ro  component_typesr   r  r:  s   &&&    r4   r  CTupleBaseTypeNode.analyse  sz    A99S>DaeeNO!!""4( ! &&txxA
zzr3   r*   Nr  r  r   s   @r4   r  r    s       .K
 
r3   r  c                   8   a  ] tR tRt o Rt. tR tRR ltRtV t	R# )FusedTypeNodei  z
Represents a fused type in a ctypedef statement:

    ctypedef cython.fused_type(int, long, long long) integral

name            str                     name of this fused type
types           [CSimpleBaseTypeNode]   is the list of types to be fused
c                    V P                  V4      pVP                  V P                  W P                  4      pR Vn        R# )TN)r  declare_typedefrp   r9   rl  )r   r   r  r:  s   &&  r4   r   "FusedTypeNode.analyse_declarations  s4    ||C ##DIItXX> !r3   c                .   . pV P                    Fc  pVP                  V4      pV'       g   \        VP                  R 4       K4  WS9   d   \        VP                  R4       KR  VP	                  V4       Ke  	  \
        P                  ! W0P                  R7      # )r  zType specified multiple timesr  )ri   r  r   r9   r  r
   	FusedTyperp   )r   r   ro  ri   r8  r  s   &&&   r4   r  FusedTypeNode.analyse  sp    I,,S1Dimm\2}imm%DET" $ ##E		::r3   r*   Nr  )
r+   r,   r-   r.   r   r   r   r  r2   rv   r   s   @r4   r  r    s       K!; ;r3   r  c                   0   a  ] tR tRt o R.tRR ltRtV tR# )CConstOrVolatileTypeNodei  r  c                    V P                   P                  W4      pVP                  '       d   \        V P                  R 4       \
        P                  ! W0P                  V P                  4      # )z2Const/volatile base type cannot be a Python object)	r  r  r  r   r9   r
   c_const_or_volatile_typer  is_volatile)r   r   ro  r  s   &&& r4   r   CConstOrVolatileTypeNode.analyse  sQ    ~~%%c9$((FH224HXHXYYr3   r*   Nr  r  r   s   @r4   r"  r"    s     
 -KZ Zr3   r"  c                   :   a  ] tR tRt o RR.tRtRtRR ltRtV t	R# )rh  i  r  declaratorsNc                P   V P                   f   / V n         V'       g   TpW n        V P                  '       d#   V P                  ^ ,          P                  4       pMR pVe   V P                  R8w  d   \        V P                  R4       \        V P                  4      ^8  d(   \        V P                  ^,          P                  R4       \        RV4      pVP                  P                  Vn
        V F)  pVP                  VP                  W@P                  4       K+  	  V P                  P                  V4      pR pV P                  P                  '       d   V P                  P!                  V4      pVP"                  '       dS   V P$                  '       gA   VP&                  '       g   VP(                  '       d   \        V P                  R4       \*        # R V n        V P                  pV P                   EF,  p\        V P                  4      ^8  dG   \/        V\0        4      '       g1   VP                  R,          '       d   \3        VP                  R^4       V P4                  ;'       d$    V P                  R8H  ;'       d    VP(                  p	V	'       d   RVn        \/        V\6        4      '       d,   VP                  WQV P                   WpP$                  R	7      w  rMVP                  WQWpP$                  R
7      w  rVP9                  4       '       gS   V P                  R8X  d   VP:                  '       g0   VP<                  '       g   \        VP                  RV,          4       V P                  R8X  d)   VP>                  '       d   \        VP                  R4       V
P                  pV
P@                  pVR8X  d   \        VP                  R4        R # VPB                  '       d(   V P                  R8w  d   \        VP                  R4       VPD                  '       d(   V P                  R8w  d   \        VP                  R4       VPF                  '       d   RVP                  9   d   RVn$        VPK                  WVP                  WP                  V P$                  V PL                  V PN                  V P4                  R7	      V n        V P,                  e0   \P        PP                  ! V P                   4      V P,                  n         V	'       d:   V P,                  PR                  PU                  V4       RV P,                  n+        EKV  EKY  V P4                  '       d   \        V P                  R4       V P                   '       d   \        V P                  R4       VPY                  WVP                  WV P$                  V PL                  RVR7	      V n        \Z        P\                  '       g   EK  \_        V P                  V P`                  4      V P,                  n0        EK/  	  R # )Nr  zOnly extern functions allowedz%Can't multiply declare template typesfunc_templatezFused types not allowed herezwarn.multiple_declaratorszNon-trivial type declarators in shared declaration (e.g. mix of pointers and values). Each pointer declaration should be on its own line.F)r3  r  r  r  z Variable type '%s' is incompletez'Python object cannot be declared externr   zMissing name in declaration.z8C++ references cannot be declared; use a pointer insteadz(C++ rvalue-references cannot be declaredr[  T)r  r  r  apir  r0  z>Variables cannot be declared with 'cpdef'. Use 'cdef' instead.z,Decorators can only be followed by functions)r  r  r  r+  is_cdefpytyping_modifiers)1r3  
dest_scoper(  r  r  r   r9   rM   r   outer_scoper  declare_typerp   r  r  r  r
  r  r  r  is_module_scoper   r:  rN   r  r   r0  r  r  r  is_memoryviewslicer  r  is_referencer1  r  is_static_methoddeclare_cfunctionr+  r  r   r  create_to_py_utility_codecreate_wrapperrI  r   
docstringsrD   rC   )r   r   r.  r  template_paramr  r  r  ra  create_extern_wrapperr7  r  rp   r  s   &&&           r4   r    CVarDefNode.analyse_declarations  s     ($&D!J$((+==?II (*dhh ?@4##$q(d&&q)--/VW5C __77CN"+  !4!4nhhO #, NN**3/	 	>>000AA#FIdkkks7K7K7K7:7J7J7J$((:;
__
**JD$$%)&z3FGG'BCCNNJKLN
 &*%5%5 &= &=)-H)D&= &=),)<)< " %).
&*&9::(2(:(:T5J5JWajuju ); )w% )3(:(:z++ ); )O%##%%83I`I`I`*..*Lt*ST(*t/?/?/?jnn&OP"''D#))Erzjnn&DE   T__%@jnn&`a'''DOOx,Gjnn&PQ   !S^^3,0D)'99
OODKKDNNHXHX : Z
 ::)26))D<Q<Q2RDJJ/(JJOO==cB04DJJ- ) ###$(($de((($(($RS'33
t{{$9 4 N
 %%%%3DHHdhh%GDJJNs +r3   )r.  r3  r:  r   )
r+   r,   r-   r.   r   
decoratorsr3  r   r2   rv   r   s   @r4   rh  rh    s*      .KJ]H ]Hr3   rh  c                   B   a  ] tR tRt o R.tR	R ltR tR tR tRt	V t
R# )
CStructOrUnionDefNodeiK  
attributesNc                    VP                  V P                  V P                  W P                  V P                  V P
                  V P                  V P                  V P                  R 7	      V n	        R# ))r  r+  packedN)
rN  rp   rE  rG  r9   r  r  r+  rA  r:  r   r   rF  s   &&&r4   declareCStructOrUnionDefNode.declareY  sN    00IItyy%):):DHHJJ4??;; 1  
r3   c                L   R pV P                   e   \        V P                  4      pV P                  W4       V P                   e   V P                  '       d$   VP
                  '       g   ^V P                  n        V P                    F  pVP                  W4       K  	  V P                  R8w  dt   VP                   Fa  pVP                  pVP                  '       d   VP                  pK   W@P                  P                  8X  g   KK  \        VP                  R4       Kc  	  R # R # R # )Nr  z)Struct cannot contain itself as a member.)r?  r   rp   rC  r  rl  r:  rO  r   r  var_entriesr  r  r  r   r9   )r   r   rF  r   r  s   &&   r4   r   *CStructOrUnionDefNode.analyse_declarations_  s    ??&&tyy1ES ??&{{{3???,-

)))#5 ((*!--D99D---#~~zz.dhh(ST . + 'r3   c                    V # r   r*   r   s   &&r4   r   )CStructOrUnionDefNode.analyse_expressionsq      r3   c                    R # r   r*   r   s   &&r4   r,  -CStructOrUnionDefNode.generate_execution_codet  r   r3   r:  r   )r+   r,   r-   r.   r   rC  r   r   r,  r2   rv   r   s   @r4   r>  r>  K  s(       .K U$ r3   r>  c                   H   a  ] tR tRt o RtR tR tR tR tR t	R t
R	tV tR# )
CppClassNodeix  Nc           
     N   V P                   f   R pMV P                    UUu. uF   w  r4\        P                  ! W4'       * 4      NK"  	  ppp\        R V P                    4       4      pV'       dm   \        ;QJ d*    R V P                   R V)   4       F  '       d   K   RM	  RM! R V P                   R V)   4       4      '       g   \        V P                  R4       VP                  V P                  R V P                  V P                  . V P                  VR7      V n        R # u uppi )Nc              3   4   "   T F  w  rV'       * x  K  	  R # 5ir   r*   ri  r  requireds   &  r4   rj  'CppClassNode.declare.<locals>.<genexpr>  s     (X+!X   c              3   *   "   T F	  w  rVx  K  	  R # 5ir   r*   rR  s   &  r4   rj  rT    s     1wNv{q(Nvs   FTzGRequired template parameters must precede optional template parameters.)base_classesr  r  )r  r
   r  sumro  r   r9   declare_cpp_classrp   r  r  r:  )r   r   r  template_namerS  num_optional_templatess   &&    r4   rC  CppClassNode.declare  s    >>!!N >B^^M=K"9- )@@P\]=K  M%((X(X%X"%cc1wdnn]u_u^uNv1wccc1wdnn]u_u^uNv1w.w.wdhh ij**IItTXXtzz> + S
Ms   &D!c           
     X  a a VP                  4       '       g   \        S P                  R ^R7       S P                  f   R;r#MWS P                   UUu. uF  w  rEVNK	  	  pppS P                   UUu. uF   w  rF\        P
                  ! WF'       * 4      NK"  	  pppRpS P                  e   \        S P                  WR7      pV 3R lp\        TS P                   U	u. uF  qP                  T;'       g    T4      NK  	  up	4      p
VP                  S P                  VS P                  S P                  V
S P                  VR7      S n        S P                  f   R# ^S P                  n        Ve   S P                  P"                  Vn        . pV3R loS P                  e   S P$                  '       d$   VP&                  '       g   ^S P                  n        S P                   F:  p\+        VRR4      pV'       d   VP-                  V4       VP/                  V4       K<  	  S! S P                  4       FA  pVP1                  V4       S P                  f   K$  RR	P3                  V4      ,          Vn        KC  	  \7        S P                  VR
7      S n        VS n        R# u uppi u uppi u up	i )z0Using 'cppclass' while Cython is not in c++ moder  N)r  c                    < V P                   '       g   V P                  '       d   R # \        SP                  RV ,          4       R# )Tz&Base class '%s' not a struct or class.N)r  	is_structr   r9   )
base_classr   s   &r4   base_ok2CppClassNode.analyse_declarations.<locals>.base_ok  s1    &&&**>*>*>dhh H: UVr3   )r  r  c              3   ^  <"   V  F  p\        V\        4      '       d   Vx  K  \        V\        4      '       d'   S! VP                  P                  4       R j  xL
  K[  \        V\
        4      '       g   Ks  VP                  f   K  S! VP                  4       R j  xL
  K  	  R #  LN L5ir   )rN   CFuncDefNoder  r   rC  rO  r?  )r?  r   func_attributess   & r4   re  :CppClassNode.analyse_declarations.<locals>.func_attributes  sw     "dL11J&<==.tyy???l338S.t??? # @?s0   AB-B)B-9B-	B-B+B-+B-rC  ztemplate <typename %s>z, typename rZ  )r   r   r9   r  r
   r  r?  r   rp   filterrW  r  rY  r  r  r:  r  r  r  rl  rO  r   rC  r   r  r   template_declarationrB  r   rF  )r   r   r  template_namesrZ  r  rS  rF  ra  bbase_class_typesdefined_funcsr   rC  r_   re  s   f&             @r4   r   !CppClassNode.analyse_declarations  s-   zz||DHHF >>!.22N^DHNNSN0@mNNS=A^^M=K"9- )@@P\]=K  M??&!$))SKE	W
 "'TM^M^+_M^IIells,CM^+_`**IIudhhJJ(T__P^ + `
 ::"#

EJ	@ ??&{{{3???,-

)!$	48LL'))%0	 (
 (8$$T*>>-0H=K]K]^lKm0mD- 9 !?	
U TM ,`s   J1&J!J'
3J'
c                    V P                   P                  V P                  P                  P                  4      V n         V # r   )r   r   r:  r  rF  r   s   &&r4   r    CppClassNode.analyse_expressions  s+    II11$**//2G2GH	r3   c                z    V P                   P                  V P                  P                  P                  V4       R # r   )r   r'  r:  r  rF  r_  s   &&&r4   r'  *CppClassNode.generate_function_definitions  s$    		//

0E0EtLr3   c                <    V P                   P                  V4       R # r   r   r,  r   s   &&r4   r,  $CppClassNode.generate_execution_code      		))$/r3   c                <    V P                   P                  V4       R # r   r~  r   s   &&r4   r   CppClassNode.annotate  r  r3   )r   r:  rF  )r+   r,   r-   r.   r<  rC  r   r   r'  r,  r   r2   rv   r   s   @r4   rO  rO  x  s2      JS2hM0! !r3   rO  c                   D   a  ] tR tRt o RR.tRtR tR tR tR t	R	t
V tR# )
CEnumDefNodei  rl   underlying_typeNc                T   R p\         P                  '       d!   \        V P                  V P                  4      pVP                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  VR7	      V n        R # )N)r  scopedrG  r  r+  r7  rC   )r   r8  rD   r9   rC   declare_enumrp   r  r|  rG  r  r+  r7  r:  )r   r   rC   s   && r4   rC  CEnumDefNode.declare  sz     4884C%%IItxx**;;**DHH..C & 9
r3   c                B   R pV P                   P                  V4      pVP                  '       g!   \        V P                   P                  R4       W0P
                  P                  n         V P                  '       dR   V P                  eD   \        V P                  V4      pV P
                  P                  Vn        VP                  Vn        MTpV P                  e   V P                  '       d$   VP                  '       g   ^V P
                  n        V P                  R8g  pV'       d   ^ MR pV P                   F`  pVP!                  W P
                  V4       V'       g   K)  ^VP
                  P"                  e   VP
                  P"                  MT,           pKb  	  R # R # )Nz'underlying type is not an integral typer  )rz  r  r  r   r9   r:  r  r|  rl   r   rp   r  r  rl  rO  r  analyse_enum_declarationsenum_int_value)r   r   rF  rz  is_declared_enumnext_int_enum_valuer   s   &&     r4   r   !CEnumDefNode.analyse_declarations  s+   ..66s;%%%$&&**,UV*9

';;;4::1&tyy#6EEJ"~~EE::!{{{3???,-

)  $(:'7!T

..ujjBUV##*+59ZZ5N5N5Z

11`s+u' # "r3   c                    V # r   r*   r   s   &&r4   r    CEnumDefNode.analyse_expressions  rJ  r3   c                t   V P                   '       d   R # V P                  '       g&   V P                  '       g   V P                  R8X  g   R # VP	                  V P
                  4       VP                  P                  \        P                  RR7      pV P                  P                   F  pVP                  V: RVP                  : RVP                  W#P
                  4      : 24       VP                  V\        P                  4       VP                  RVP!                  \"        P$                  4      : RVP                  P'                  4       : RV: RVP)                  VP
                  4      : 24       VP+                  V\        P                  4       K  	  VP                  P-                  V4       R # )	NpublicT
manage_refz = PyLong_FromLong(); zif (PyDict_SetItemString(r   ) < 0) )r|  r+  rp   r  rS  r9   	funcstateallocate_tempr
   r   r:  enum_valuesrU   r  error_goto_if_null
put_gotrefname_in_module_stater	   moddict_cnamere  
error_gotoput_decref_clearrelease_temp)r   rZ   tempr   s   &&  r4   r,  $CEnumDefNode.generate_execution_code  s,   ;;;xxxdoo.I  	dhh~~++J,E,ERV+WJJ**DJJ

''hh79 : OOD*";";<JJ))&*>*>?		--/)	+ ,
 !!$
(A(AB + 	##D)r3   rM  )r+   r,   r-   r.   r   rC   rC  r   r   r,  r2   rv   r   s   @r4   ry  ry    s1      -.K
C9u>* *r3   ry  c                   ,   a  ] tR tRt o R.tR tRtV tR# )CEnumDefItemNodei0  r   c                6   V P                   '       d   V P                   P                  V4      V n         V P                   P                  P                  '       gP   V P                   P	                  \
        P                  V4      V n         V P                   P                  V4      V n         VP                  P                  '       d   VP                  : R V P                  : 2pMV P                  pTP                  V P                  VP                  V P                   V P                  TVP                  VP                  VP                  ;'       d    VP                  RJ R7      ;V n        pTpV P                   '       d   V P                   P                   '       d!   \#        V P                   P                   4      pMwV P                   P$                  '       g   V P                   P&                  '       d>   V P                   P                  '       d"   V P                   P                  P(                  pMRpVe   Wen        VP*                  P-                  V4       VP                  '       d2   VP                  P.                  P-                  VP                  4       R# R# )::N)r  r  r+  r7  )r   r  r  r  r'  r
   rJ  is_cpp_enumr  rp   declare_constr9   r  r+  r7  r:  r  r%   r  is_attributer  r  r  r  )r   r   
enum_entryincremental_int_valuer  r:  
enum_values   &&&&   r4   r  *CEnumDefItemNode.analyse_enum_declarations7  s   :::<<SADJ::??)))!ZZ11*2G2GM
!ZZ@@E
??&&& * 0 0$))<EJJE ..IIzJJ!,,*..%44PPD9P	 / R 	R
U +
:::zz$$$*4::+;+;<
**$$$

(?(?(?TZZEUEUEU!ZZ--<<
 "
!#- %%e,???OO""))%**5 r3   )r:  r   N)r+   r,   r-   r.   r   r  r2   rv   r   s   @r4   r  r  0  s     
 )K!6 !6r3   r  c                   :   a  ] tR tRt o RR.tR tR tR tRtV t	R# )	CTypeDefNodei[  r  ra  c           	        V P                   P                  V4      pV P                  P                  W!V P                  V P                  R 7      w  r4VP
                  pVP                  pVP                  WTV P                  W`P                  V P                  R7      pVP                  '       d   RVn        V P                  '       d   VP                  '       g
   ^Vn        R# R# R# )r  )r  r  r+  TN)r  r  ra  r  r  rp   r  r  r9   r+  r  rl  rO  )r   r   r  r7  r  rp   r  r:  s   &&      r4   r   !CTypeDefNode.analyse_declarationsd  s    ~~%%c* $ 7 7$//$++ !8 !G##%%##OO $ C === $E;;;s#$E   /;r3   c                    V # r   r*   r   s   &&r4   r    CTypeDefNode.analyse_expressionsu  rJ  r3   c                    R # r   r*   r   s   &&r4   r,  $CTypeDefNode.generate_execution_codex  r   r3   r*   N
r+   r,   r-   r.   r   r   r   r,  r2   rv   r   s   @r4   r  r  [  s%      -K%" r3   r  c                      a  ] tR tRt o RtRtRtRtRtRt	Rt
RtRtRt. tRtRtRtRtRtRtRtR tR tR tR tR tR	 tR
 tR tR tR tR t R t!R t"R t#R t$R t%R t&R t'Rt(V t)R# )FuncDefNodei|  NFc                d   ^ pV P                    EF  pVP                  '       d   ^pVP                  '       dN   VP                  P                  V4      Vn        VP                  P	                  VP
                  V4      Vn        Kw  VP                  '       d>   VP                  P                  '       g    \        VP                  R4       RVn        K  K  \        VP                  R4       RVn        K  VP                  '       d   ^pK  V'       g   EK  \        VP                  R4       EK  	  R# )r   z2This argument cannot have a non-None default valueNz)This argument cannot have a default valuez/Non-default argument following default argument)rW   r  r  r   r'  r  r  r  r   r9   r  )r   r   default_seenr?  s   &&  r4   analyse_default_values"FuncDefNode.analyse_default_values  s    99C{{{ >>>"%++";";C"@CK"%++"7"7#"FCK333;;...cgg'[\&* / #''#NO"&CK cggPQ! r3   c                    V P                    F7  pVP                  '       g   K  VP                  P                  V4      Vn        K9  	  V P                  '       d#   V P                  P                  V4      V n        R # R # r   )rW   r^  r   return_type_annotationr   r   r?  s   && r4   analyse_annotationsFuncDefNode.analyse_annotations  s\    99C~~~!$!=!=c!B  &&&*.*E*E*S*STW*XD' 'r3   c                   V P                   pVP                  pVP                  V9   d%   W2P                  ,          pVP                  V4      pMg\	        V\
        4      '       dP   VP                  '       d>   VP                  R ,          '       d%   VP                  pVP                  V4      pVf   V# MV# Vf   \        VP                  R4       V# V\        JdP   VP                  V4      '       g9   \        VP                  P                  R4       \        VP                  R4       V# Wbn        VP                  P                  '       d   VP                  P                  V4       V# )rq  r  r  r  )r3  r  rp   r  rN   r]  r^  r  rx  r   r9   r   r  r  r  r  )r   r   r?  r3  	orig_typer8  r9  s   &&&    r4   align_argument_typeFuncDefNode.align_argument_type  s"   00HH	88''(2I"2237J\**s~~~#..QdBeBeI99#>J!
 " J)--. 
 n,Y5F5Fz5R5R#--##%YZ)--!<= 
	 "Hxx"""88=
r3   c                    ^ # r6   r*   r   lenvs   &&r4   need_gil_acquisition FuncDefNode.need_gil_acquisition  s    r3   c                   TpVP                   '       g   VP                  '       d   VP                  pK2  V P                  '       d   V P                  '       d   \
        M\        pV! V P                  P                  VVV P                  P                  R 7      pV P                  '       g   V P                  '       d   RVn        M"\        V P                  P                  VVR7      pV P                  Vn        V P                  P                  pVP                   '       d+   VP"                  ;'       d    VP$                  '       * Vn        W@n        VP(                  Vn        V# ))rp   r/  parent_scope
scope_nameT)rp   r/  r  )is_py_class_scoper  r/  needs_closureis_generator_expressionr   r   r:  rp   r  is_generator_bodyis_generatoris_generator_scoper   r%  r  r  r  r  local_scoper  )r   r   genvro   r  r  s   &&    r4   create_local_scopeFuncDefNode.create_local_scope  s   $$$(=(=(=##D.2.J.J.J*P\CDJJOO,0-0+/::+;+;=D %%%):):):*.'4::??*.+.0D  ++zz99DMM(9DJ..r3   c                <    V P                   P                  V4       R # r   rs  r_  s   &&&r4   generate_function_body"FuncDefNode.generate_function_body  ru  r3   c                h7  a a'a(a) ^RI Hp S P                  pVP                  '       d9   VP                  '       g'   \
        P                  : R\
        P                  : 2pM\
        P                  pVP                  V4       S P                  P                  WB4       S P                  WB4       S P                  P                  R8H  ;'       d!    S P                  P                  P                  pS P                  P                  R8H  ;'       d!    S P                  P                  P                  pT;'       g    TpV'       d+   RS P                   9  d   S P                   R.,           S n        S P#                  4       p	S P$                  '       d   Rp
M{VP'                  4       p
V
'       dd   VP(                  P+                  \,        P.                  ! RR4      4       VP(                  P0                  R	,          '       d   VP3                  4        VP5                  V4       VP7                  4       Vn        VP:                  '       * VP<                  n        VPA                  S PB                  4       S PE                  WB4       VPG                  R
4       V	'       d   VPG                  V	4       S PI                  W4      ;'       g    S PJ                  pS PL                  '       d   S PL                  PO                  W+RR7       S PO                  W+R7       TpVPP                  '       g   VP                  '       d   VPR                  pK2  S PT                  '       dU   VPW                  VPX                  PZ                  P]                  \
        P                  4      4       VPG                  R4       MS P^                  '       d   VP                  '       dT   VPW                  VPX                  PZ                  P]                  \
        P                  4      4       VPG                  R4       VPW                  VPX                  PZ                  P]                  \
        P                  4      4       VPG                  R4       S Pa                  WB4       VPb                   F<  pVPd                  '       d   K  VPf                  '       d   K+  VPi                  V4       K>  	  R
pS Pj                  pVPl                  '       d   VPn                  '       d   VPp                  pVPr                  '       g   VPt                  '       d   RpM4VPv                  '       d#   RVPy                  VPz                  4      ,           pVPG                  VP]                  \
        P|                  4      : V: R24       VP                  4       pS P                  V4       S P                  pVP                   Uu. uF  qP                  '       g   K  VNK  	  ppVP:                  ;'       d!    S PT                  ;'       g    S P^                  pRo)RpV'       g	   V'       d%   VP                  4        RVP<                  n        RpMVP                  4       o)V
'       dk   VP                  4        RpS P                  '       d6   S P                  P                  V4       S P                  P                  4       pVP                  V4       V'       d   S P                  V4       VP                  4       pVP                  4       pVP<                  P>                  '       * pV'       d   S P                  V4       S PT                  '       Ed0   \        P                  ! RR4      p\        P                  ! VPX                  PZ                  P                  V4      pV'       g7   RVP                  VPX                  PZ                  P                  4      ,          pVPG                  \
        P                  : RVPX                  PZ                  P                  4       : RV: RVP                  VPX                  PZ                  P                  4      : RVP                  \
        P                  4      : R2
4       VPG                  R\
        P                  ,          4       VPG                  \
        P                  : RVPX                  PZ                  P                  R4      : R24       VP                  R\        4       VPG                  VP                  S PB                  4      4       VPG                  R4       VP                  \
        P                  VPX                  PZ                  4       VPG                  R4       S P^                  '       EdD   S P                  '       dO   VPG                  V: RVPX                  PZ                  P                  4       : R\
        P                  : R24       MMVPG                  V: RVPX                  PZ                  P                  4       : R \
        P                  : R24       VP                  '       d)   VPG                  \
        P                  : RV: R24       M\S PT                  '       dK   VP                  W\PX                  PZ                  4       VP                  W\PX                  PZ                  4       V
'       d   S P                  '       d(   \        S P                  P                  R!,           4      pMS P                  P                  pVP                  VS PB                  VP<                  P>                  '       * S PL                  RJR"7       RVP<                  n^        S P                  W4       VP                   F  pVPZ                  Pv                  '       gD   V'       g   VP                  '       d(   VPd                  '       g   VP                  V4       K^  K`  Kb  VP                  '       g   Kv  VPd                  '       d   K  VP                  VVP<                  P>                  R#7       K  	  VPb                   F  pVPf                  '       d   VP                  '       d   VPd                  '       gy   VPZ                  Pv                  '       d(   VP                  VVP<                  P>                  R#7       VP                  '       d   VP                  V4       MVP                  V4       VPZ                  P                  V4      '       g   K  VPZ                  P                  W-4       K  	  VPb                  VP                  ,            FZ  pVPZ                  P                  '       g   K!  VP                  P                  P                  '       g   KI  VP                  W4       K\  	  S P                  V4       VP                   F=  pVPZ                  P                  '       g   K!  VP                  WS PB                  4       K?  	  VP<                  P                  '       d   RpV'       d[   VP:                  '       dI   S)e$   S)P                  4        Ro)RVP<                  n        VP                  4        RVP<                  n        S P                  W4       VPA                  S PB                  RR$7       VPG                  R
4       VPG                  R%4       R&VP<                  P>                  R'VP<                  P>                  R(S)RJ /o(V3V(V)3R) llo'S Pj                  pS P                  P                  '       Eg   VPt                  '       d,   \
        P|                  pS'! R&4       VP                  VV4       MVPv                  '       gu   VPz                  pV'       d)   VPG                  \
        P|                  : RV: R24       M8VPr                  '       g'   VPG                  R*\
        P|                  ,          4       V
'       d:   VP                  \
        P|                  S PB                  VS(R&,          '       * R+7       VP                  VP                  4      '       Ed   S P                  P                  '       g   VP                  VP                  4       VP                  VP                  4       VP<                  P                  4        F)  w  ppS'! R'4       VP                  VVS(R',          R#7       K+  	  \        V4      ^ 8  p V '       d   VP(                  P+                  \        4       VPG                  R,4       VPG                  R-4       S'! R'4       VPG                  R.4       VPG                  R/4       V F  pVP                  W-4       K  	  VPG                  R04       VPv                  '       d8   ^R1I H~p! V!P                  \
        P|                  V4       \
        P|                  p"MS EP                  4       p"V
'       d   S'! R'4       VEP                  4        VPG                  R24       VEP                  S PB                  4       VPG                  R34       VP                  R4S PB                  S(R&,          '       * R57       VPG                  R64       S EP                  4       p#V"f	   V#'       d   S'! R'4       VP<                  EP                  '       dO   VPG                  R7\
        EP
                  ,          4       VPG                  R8\
        EP
                  ,          4       VEP                  S P                  EP                  4       VP<                  EP                  '       d   VPG                  R4       MmE\        S P                  PB                  R9S P                  EP                  ,          ^ 4       S'! R'4       VEP                  S P                  EP                  4       VPz                  p$V"f   V$'       d   T$p"V"e>   V"\
        P|                  8w  d(   VPG                  \
        P|                  : RV": R24       M8VPr                  '       g'   VPG                  R*\
        P|                  ,          4       V'       d   S'! R'4       S EP                  V4       VP                  4       3V'V(V 3R: llp%V '       g   V'       g   VPv                  '       d@   S(R',          '       g   VPv                  '       g   Q hVP                  VP8                  4       MV%! 4        MR; p%VP                  VP                  4      '       g#   VP                  VP                  4      '       Eg   VP                  VP                  4       V F  pS'! R&4       VP                  W-4       K  	  V'       d   S'! R&4       S EP                  V4       VPv                  '       d   VEP                  VEP                  \
        P|                  4      4      p&VPG                  R<V&,          4       S(R&,          '       g   VP                  4        VPG                  R=4       S(R&,          '       g   VP                  4        VPG                  R4       VP                  VP8                  4      '       d#   V%! 4        VP                  VP8                  4       VPb                   F  pVP                  '       d   VPd                  '       d   K)  VPZ                  EP                  '       dM   VPf                  '       d   VP                  '       g   Kl  VPZ                  EP                  '       d	   S'! R&4       M>VPZ                  EP!                  V4      '       d   VPZ                  EP#                  W-4       VEP%                  VS(R&,          R#7       K  	  VP                   F  pVPd                  '       d   K  VPZ                  Pv                  '       d   VP                  '       g   KG  MAV'       g   VP                  '       g   Kd  VPZ                  EP                  '       d	   S'! R&4       VEP%                  VS(R&,          R#7       K  	  S PT                  '       d>   S'! R&4       VEP'                  \
        P                  VPX                  PZ                  4       VP:                  '       gM   VPz                  p$S EP                  4       p"V"f   V$'       d   T$p"VEP)                  \
        P|                  V4       S P                  EP*                  '       dZ   S P                  P                  R>8X  d?   S'! R&4       VPG                  R?\
        P|                  : R@\
        P|                  : RA24       V
'       d>   RVP<                  n^        VEP-                  VP<                  P>                  '       * R57       VP<                  P                  '       dY   VEP/                  4        VEP1                  S P                  P                  VRB7       VEP3                  S(R&,          '       * R57       V'       g"   VP:                  '       d1   S(R&,          '       d"   VP                  4        RVP<                  n        VPr                  '       g'   VPG                  RC\
        P|                  ,          4       VPG                  R4       V	'       d   VPG                  RDV	,          4       VEP5                  VP<                  4       VEP7                  4        S PL                  '       d   S PL                  P                  W4       S EP9                  V4       R# u upi )ErG   r  rL   __getbuffer____releasebuffer__cython_unusedFProfilez	Profile.c	linetracer   Twith_pymethdef
proto_only)r  r  z = NULLr  Ntp_newrn   z
%s->tp_newz = ()(r   , NULL);if (unlikely(!%s)) {Py_None} else {}z) __Pyx_CyFunction_GetClosure();z) z
 (wrapper))r  is_cpdef_funchave_giltrace/* function exit code */successr   gil_state_declaredc                    < SV ,          '       g>   SR ,          '       g   SP                  4        RSR &   VP                  RR7       RSV &   R# R# )r  TFdeclare_gilstateN)r  put_ensure_gil)	code_pathrZ   	gil_ownedgilstate_decls   &&r4   
assure_gil=FuncDefNode.generate_function_definitions.<locals>.assure_gil  sQ    Y'' !566!2246:I23##U#;'+	)$ (r3   z!__Pyx_pretend_to_initialize(&%s);r%  r  z0{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;__Pyx_PyThreadState_declare__Pyx_PyThreadState_assignz5__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);z5__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}r  z#if CYTHON_USE_SYS_MONITORING#elseNULL)r  #endifzint %s = 0; /* StopIteration */
if (!%s) {z&Unraisable exception in function '%s'.c                   < SR ,          '       d   S! RV R7       M$SR,          '       d   V P                  4        RSR&   SR,          SR ,          8X  g+   Q SP                  : RSR,          : RSR ,          : 24       hR# )r  r   )rZ   Fz: error path z != success path N)put_release_ensured_gilr9   )rZ   r  r  r   s   &r4   $align_error_path_gil_to_success_pathWFuncDefNode.generate_function_definitions.<locals>.align_error_path_gil_to_success_path_	  sy    Y''wT2w''002).Ig& )Yy-AA HHHi00)I2FDH HAr3   c                      R # r   r*   r*   r3   r4   r  r  u	  s    r3   	if (%s) {zOPyErr_SetString(PyExc_TypeError, "Memoryview return value is not initialized");__hash__if (unlikely(z == -1) && !PyErr_Occurred()) z = -2;)acquire_gil
return %s;#endif /*!(%s)*/)r   r  r  is_closure_scopeis_passthroughr	   cur_scope_cnameouter_scope_cnamemangle_closure_cnamesr   r'  r?  r:  rp   rF  r  r  get_preprocessor_guardr  
is_tracingr&  r  r   load_cachedr  use_fast_gil_utility_codeenter_cfunc_scope	new_labelreturn_from_error_cleanup_labelr  r  r  rS  r9   r;  rU   needs_assignment_synthesispymethdef_requiredpy_funcgenerate_function_headerr  r/  r  putscope_classr  r  needs_outer_scopegenerate_argument_declarationsrF  
in_closureru  put_var_declarationr%  is_cv_qualifiedr  cv_base_typer  r  r2  literal_coder-  retval_cnamerQ   generate_keyword_listr  buffer_entriesrP  r  put_trace_declarationscode_objectgenerate_result_code	py_resultput_trace_frame_initgetbuffer_checkgetbuffer_initr   ConstructorSlotget_slot_functionr  typeptr_cnamert  empty_tupler  
put_increfr   r  r  is_cyfunction
self_cnamer  r	  r   put_trace_start	can_tracegenerate_argument_parsing_codearg_entriescf_is_reassignedput_var_increfput_var_incref_memoryviewslicexdecref_cleanupput_var_xincrefneeds_explicit_constructiongenerate_explicit_constructionr  
buffer_auxbuflocal_nd_varput_init_varsgenerate_argument_type_testsput_acquire_arg_bufferneeds_refnannyr  r  r  put_init_to_py_noneput_trace_return
label_usederror_labelput_gotoreturn_label	put_labelall_managed_tempsput_xdecrefrM   restore_exception_utility_codeput_release_buffer_coder  put_init_entryerror_valueput_trace_exception_propagatingput_trace_unwindcaller_will_check_exceptionserror_without_exceptionerror_without_exception_cnameput_add_tracebackqualified_namer   put_unraisablegetbuffer_error_cleanupgetbuffer_normal_cleanupunlikelyerror_conditionneeds_refcountingrefcounting_needs_gilneeds_explicit_destructiongenerate_explicit_destructionput_var_xdecref
put_decrefput_xgiveref
is_specialput_trace_exitput_declare_refcount_contextput_setup_refcount_contextput_finish_refcount_contextput_temp_declarationsexit_cfunc_scopegenerate_wrapper_functions)*r   r   rZ   r  r  r	  is_getbuffer_slotis_releasebuffer_slotis_buffer_slotpreprocessor_guardtracingr  cenvr:  initr%  tempvardecl_coder  used_buffer_entriesvar_decls_definitely_need_gilvar_decls_need_gilr#  refnanny_decl_coderefnanny_setup_coderefnanny_needs_giltp_slotslot_func_cname
trace_namelhsvalr  r  buffers_presentr  err_valr<  default_retvalr  condr  r  r  s*   f&&                                    @@@r4   r'  )FuncDefNode.generate_function_definitions  s
      )<)<)<,2,B,B,2,D,D!F !' 8 8""#45		//;((4!ZZ__? ? ?!ZZ-->> 	!%4G!G "C "C!%!1!1!B!B 	*CC.Cdnn4!%?2C!C!88:Goo'G  11++I{CE##..{;;224 	t$/3~~/?,'+zz>  	dhh++D7

2JJ)*99#D 2 211 	<<<LL11 2 F%%d%J $$$(=(=(=##DHHT%%**;;F<R<RSTJJsO###"""))..??@V@VWX

3HHT%%**;;F<T<TUVJJsO++D7%%E$$$((/ &
 &&&&&;+?+?+? &22K"""&&& ///{778Q8QRRJJ,,V-@-@A   //1""4( &&262E2ET2Euu2ET )-

(e(e8J8J8d8ddNdNd%"7!'+DNN$!% 002M335K  55d;"..88:%%k2   & .==?"224!%!9!99 %//)DG'99$:J:J:O:O:U:UW^_O"".--d.>.>.C.C.Q.QR#TJJ&&  %%<<>))$*:*:*?*?*M*MN))&*<*<=? @ JJ-0F0FFGJJ&&  %%//	:< = OOI~6JJttxx01JJz"OOF22D4D4D4I4IJJJsO!!!!!!

%$$))@@B%%' (
 

%$$))@@B%%' ( """

)?)?ARST### 13C3C3H3HI  !24D4D4I4IJ *4::??\+IJ
!ZZ__
  DHH0H0H,HX\XdXdlpXp ! r'+DNN$++C6 %%E::0005#9#9#95CSCSCS''. DT#9 '''0@0@0@33E-1^^-E-E 4 G & %%E||| 6 6 6u?O?O?O::00077151I1I 8 K(((((/''.zz55d;;

99$F & %%(8(888Ezz###(8(8(H(H(M(M(M$$U1 9
 	))$/%%Ezz###--e488D & >>((( "&$***(,,. $+/(((*',DNN$
 	##C.dhhe,

2

-. t~~//T^^-- -4"7
	
 (, 	, 	, &&yy&&&&&& ))9%((k: 333!//JJV-@-@#FG$,,,JJBVEXEXXY%%''{V_`iVjRj & l ??4++,,99***d//0NN4++,#~~??At7#  y7I J  B ""56:O  112PQ

MN

897#

78

RS0E224? 1 

RS---())&*=*=tD --**,7#446

:;%%dhh/

7#%%fdhh)IBV>V%W

8$99;I"i7#>>999$**9F<`<`` JJ|f.R.RRS&&tzz'@'@A>>999JJsO

@

112346 7###DJJ$=$=>(66N>("f111JJV-@-@'JK (((

>ATATTU 7#,,T2:>:N:N:P H H "3{7U7U7U ))[-K-K-KKKdBBC 56 = ??4,,--T__TEUEU5V5VNN4,,-,9%..t; - !9%--d3--- }}[%@%@ATAT%UV

$&( ++'')

eg ++002

 ??4??@@02NN4??@%%E:::!1!1!1zz+++<<<(>(>(>::333y)66t<<

88E  91E F & %%Ezz,,, --- . #5+A+A+A::///y)   91E F &  y!OOF22D4D4D4I4IJ zzz(66N&&(G>(f11;?::   TZZ__
%B y!JJ##V%8%8: ; ',DNN$$..*B*B&BC>>(((;;=::4::??Xj:k,,y7K3K,L4:::)I*>*>((*',DNN$"""JJ|f&9&99:

3JJ),>>? 	..t~~> 	<<<LL66sA''-Q Us   An/2An/c                   VP                   P                  '       d   \        VP                  R 4       MVP                   P	                  4       '       g`   VP                   P
                  '       gD   VP                   P                  '       g(   \        VP                  RVP                   ,          4       VP                  VP                  VP                   VP                  4      pVP                  '       d   VP                  Vn	        V# )zInvalid use of 'void'z Argument type '%s' is incomplete)
r  r  r   r9   r  r  r2  declare_argrp   r^  )r   r   r?  r:  s   &&& r4   declare_argumentFuncDefNode.declare_argument	  s    88#''23%%''1B1B1BchhFaFaFa#''=HI#((CGG<>>>"~~Er3   c                ~   VP                   P                  4       '       Ed   VP                  P                  \        P
                  ! R R4      4       VP                  VP                   4      pRVP                  P                  ,          p^ pVP                   P                  '       d3   VP                   P                  '       d   VP                  '       d   ^M^pVP                  RVVVP                  VP                  VVP                  VP                   4      3,          4       R# \#        VP                   R4       R# )ArgTypeTestFunctionArguments.c((PyObject *)%s)z8if (unlikely(!__Pyx_ArgTypeTest(%s, %s, %d, %s, %s))) %szICannot test type of extern C class without type object name specificationN)r  typeobj_is_availabler&  r  r   r  typeptr_cname_in_module_stater:  r  is_builtin_typerequire_exactr  rU   accept_nonerf  r  r9   r   )r   r?  rZ   r+  arg_codeexacts   &&&   r4   generate_arg_type_test"FuncDefNode.generate_arg_type_test	  s    88((**--''7LMO >>sxxHM)CIIOO;HExx'''CHH,B,B,B !5551JJJ!OO$$OOCGG,N. ./ #''fgr3   c           	        VP                   P                  '       d   R VP                  P                  ,          pMVP                  P                  pVP	                  RV,          4       VP	                  R\        ^\        VP                  4      4      VP                  VP                  VP                  4      3,          4       VP	                  R4       R# )z
%s.memviewz,if (unlikely(((PyObject *)%s) == Py_None)) {zKPyErr_Format(PyExc_TypeError, "Argument '%%.%ds' must not be None", %s); %sr  N)
r  r2  r:  r  rU   r   rM   rf  r  r9   )r   r?  rZ   r  s   &&& r4   generate_arg_none_check#FuncDefNode.generate_arg_none_check

  s    88&&& 399??2EIIOOE

AEIJ

dS))*+S-=-=OOCGG$h& & 	' 	

3r3   c                    R # r   r*   r   s   &&r4   rh  &FuncDefNode.generate_wrapper_functions
  r   r3   c                    VP                  V P                  4       V P                  '       g;   V P                   F(  pVP                  '       d   K  VP                  V4       K*  	  R # R # r   )rS  r9   r	  rW   r  r  r   rZ   r?  s   && r4   r,  #FuncDefNode.generate_execution_code
  sG    dhh yy~~~006 ! r3   c                    V P                   P                  ^,          p VP                  P                  P                  P
                  R,          P                  pW3#   \        \        3 d    Rp Y3# i ; i)rG   objN)r  r3  r  r  rF  r9  r   KeyError)r   	py_bufferobj_types   &  r4   _get_py_buffer_infoFuncDefNode._get_py_buffer_info&
  sr    $$003		 ~~//55==eDIIH "" ) 	H""	s   ;A A54A5c                    V P                  4       w  r#VP                  pVP                  R V,          4       VP                  R4       VP                  R4       VP                  R4       R# )zif (unlikely(%s == NULL)) {zZPyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");z
return -1;r  N)r  r  rU   )r   rZ   r  r  views   &&   r4   r'  FuncDefNode.getbuffer_check6
  sW    //1	

0478

 O 	P

< 

3r3   c                   V P                  4       w  r#VP                  pV'       dG   VP                  '       d5   VP                  R V,          V4       VP	                  R V,          V4       R# VP                  RV,          4       R# )%s->objz%s->obj = NULL;N)r  r  r  rA  r  rU   r   rZ   r  r  r  s   &&   r4   r(  FuncDefNode.getbuffer_init?
  sf    "668	,,,$$Y%5x@Y-x8JJ(4/0r3   c                `   V P                  4       w  r#VP                  pV'       dp   VP                  '       d^   VP                  R V,          4       VP	                  RV,          V4       VP                  RV,          V4       VP                  R4       R# VP                  RV,          4       R# )zif (%s->obj != NULL) {r  r  zPy_CLEAR(%s->obj);Nr  r  r  rU   r  r  r  s   &&   r4   rV  #FuncDefNode.getbuffer_error_cleanupH
  s    "668	,,,JJ/$67OOI,h7!!)d"2H=JJsOJJ+d23r3   c                4   V P                  4       w  r#VP                  pV'       dr   VP                  '       d^   VP                  R V,          4       VP	                  RV,          V4       VP                  RV,          V4       VP                  R4       R# R# R# )zif (%s->obj == Py_None) {r  r  Nr  r  s   &&   r4   rW  $FuncDefNode.getbuffer_normal_cleanupS
  sv    "668	,,,JJ2T9:OOI,h7!!)d"2H=JJsO	 -8r3   c                   V P                   P                  '       g   R # V P                   P                  p\        P                  ! V P
                  P                  4      P                  V4      pV'       g   R # VR8X  d.   V P                   P                  P                  R4      '       g   R # VR9   d)   V P                   P                  P                  '       d   R # VP                  4       # )N__long____int__r  r  )r:  ra  rp   r   get_slot_tabler  r  get_slot_by_method_namerF  r  r  preprocessor_guard_code)r   rp   slots   &  r4   r  "FuncDefNode.get_preprocessor_guard\
  s    zz$$$zz''(8(8(C(CD\\]ab:djj&6&6&B&B9&M&M99djj>N>N>_>_>_++--r3   )r  r  r  )*r+   r,   r-   r.   r  r  r  r  r  r  is_coroutineis_asyncgenr  is_async_defr  has_fused_argumentsstar_argstarstar_argr.  r#  r  r  r  r  r  r  r  r  r'  r  r  r  rh  r,  r  r'  r(  rV  rW  r  r2   rv   r   s   @r4   r  r  |  s     * GML#LKLIHLMK!KR(Y440m.^h.7# 1	4. .r3   r  c                   *  a a ] tR tRt o. ROtRR.tRtRtRtRt	Rt
RtRtRtRtR tR t]R 4       t]P&                  R	 4       tR
 tR tR tR R ltR tR tR tR tR!R ltR"R ltR tR tR t R t!R t"V 3R lt#R t$R t%R t&V 3R lt'Rt(Vt)V ;t*# )#rd  ij
  r<  py_func_statFNc                .    V P                   P                  # r   )r:  rp   r   s   &r4   unqualified_nameCFuncDefNode.unqualified_name
  s    zzr3   c                6    V P                   P                  4       # r   r`  r   s   &r4   r  CFuncDefNode.declared_name
  rc  r3   c                j    V P                   '       d   V P                   P                  # V P                  # r   )r  r#  _code_objectr   s   &r4   r#  CFuncDefNode.code_object
  s'     ,0<<<t||''NT=N=NNr3   c                    Wn         R # r   )r  )r   r#  s   &&r4   r#  r  
  s    'r3   c                   VP                   R ,          V n        VP                  V n        V P                  f   / V n        V P                  P                  VP                   P                  R/ 4      4       V P                  e   V P                  P                  V4      pVfi   V P                  P                  '       d   V P                  P                  V4      pML\        V P                  P                  R4       \        P                  pMV P                  P                  V4      pRVP                   9   ;'       d    VP!                  R4      '       * V n        \%        V P&                  \(        4      '       dJ   V P&                  P                  W!^V P*                  RJ,          V P                  V P,                  R7      w  r4M=V P&                  P                  W!^V P*                  RJ,          V P,                  R7      w  r4VP.                  '       g   \        V P                  R4       W@n        V P2                  Vn        V P&                  p\7        VR4      '       g   VP8                  pK   WPn        VP<                  V n        V P:                  P>                  pV P,                  R	8X  g   V P@                  '       d)   V'       d!   \        V P:                  P                  R
4       VPB                  R8X  dj   V P,                  R8w  dY   VPD                  e4   VPD                  PF                  '       d   \        V P                  R4       M\I        V P                  R^4       \K        V P<                  VP<                  4       EFs  w  rxV PM                  W4       VP0                  Vn        VPN                  Vn'        VPP                  Vn(        V PS                  VP0                  VP                  V4       VP0                  PT                  '       d   RV n+        VP0                  PX                  '       d)   RV PZ                  9   d   \I        VP                  R^4       VP0                  PX                  '       g    VP0                  P\                  '       g   EK  V P0                  P^                  '       d   \        VP                  R4       EKH  RV PZ                  9   g   EK\  \I        VP                  R^4       EKv  	  V PS                  VP`                  V P                  V4       VPN                  p	VPP                  p
V Pb                  Vn1        V P"                  Vn        VPe                  WV P                  WP,                  V P@                  V P*                  RJV PZ                  V P2                  V Pf                  R7
      V n4        VP`                  V n0        V P`                  Pj                  '       d(   V P,                  R8w  d   \        V P                  R4       V P`                  Pl                  '       d'   V P`                  Po                  V P                  R4       V P2                  '       ds   VPp                  '       ga   V P"                  '       gO   \s        V P<                  4      ^8  g.   V P<                  ^ ,          P0                  Pt                  '       g   RV n        V Pw                  V4       V Py                  V4       R# )c_compile_guardNlocalsr  r[  )r  r3  r  )r  r  z*Suite attached to non-function declarationrW   r  zBFunction with optional arguments may not be declared public or apir   r  z/Only extern functions can throw C++ exceptions.Tinlinez$Buffer unpacking not optimized away.zUBuffer may not be acquired without the GIL. Consider using memoryview slices instead.)r  r  r+  definingr  r0  r  zFunction cannot return an arrayzused as a return valueF)=r  r  r  is_c_class_methodr3  r   r   directive_returnsr  is_annotationr  r  r   r9   r
   r   r  r4  rN   ra  r  r   r  r  r  r0  r  hasattrr  cfunc_declaratorrW   r	  r+  r  r
  r  r   zipr  rp   r  _validate_type_visibilityr  r  r  r  is_pythran_exprr  r%  r  r5  inline_in_pxdr:  r  r  check_nullary_constructorr1  rM   r  declare_cpdef_wrapperr  )r   r   r  r7  typra  opt_arg_count
formal_argtype_argrp   r  s   &&         r4   r   !CFuncDefNode.analyse_declarations
  s   "~~.?@!$!5!5  ($&D!$$S^^%7%7"%EF!!-..>>sCI ))777 $ 6 6s ;I$0044lC * 5 5I..s3I .#.. @ h hYgIhEhdoo':;;#'??#:#:diit.C)D!%!6!64?? $; $T OS $(??#:#:diit.C)DQUQ`Q` $; $b O$((HI
 	!--__
*f--#J *OO	--@@OOx'4888$''++VX #%$//X*E"".33F3F3N3N3N dhhEG EqJ %(		388$< J$$S3&mmJO&mmJO'~~J**8==(,,L}}%%%+/(}}&&&8t~~+E
(NPQR}}&&&(--*G*G*G99???*..qs/JNN,RTUV' %=* 	&&s#F##%%"22#44**txxOOYYd*dnn((1C1C	 + E

 ??$$$H)D$((=>(((66txxAYZC$7$7$7@U@U@U499~!1):):)F)F)F#( ""3'$r3   c                   V P                   '       g   R # V P                  '       d   \        V P                  R4       V P	                  VP
                  R7      p\        P                  W!RRR7      pV P                  '       d]   ^RIH	p \        V P                  V! V P                  \        R4      R7      R7      .pV^ ,          P                  P                  V4       M. pV P                  P                  p\!        V P                  V P                  P                  V P"                  R R V P$                  \'        V P                  V.R	7      V^R
7	      V n        VP
                  V P(                  n        V P(                  P+                  V4       RV P(                  P                  n        \'        V P                  V P(                  .R	7      V n        \0        P2                  V P(                  n        V P(                  P                  V P                  n        R;V P                  n        V P                  P6                  n        V P                  VP:                  V&   V P                  P<                  '       g   VP
                  '       d   \>        P@                  '       d   V PB                  '       d<   V P                  PD                  '       g   Q hV P(                  V PB                  n        R # \G        V P                  V P(                  R7      V n!        \'        V P                  V PB                  V PH                  .R	7      V n$        R # R # R # )Nz&static cpdef methods not yet supported)r1  F)profiler  r  r[  r  	decoratorrZ  )	r9   rp   rW   r  r  rC   r   r<  r	  T)r  )%r0  r4  r   r9   call_self_noder1  r  r  r  r  DecoratorNoder   r  r   r:  rp   DefNoderW   rC   rB  r  r   r  r  r
   r   r  as_variablerP  r9  is_final_cmethodr   lookup_module_cpdefoverrideis_fused_specializedOverrideCheckNoder   )r   r   py_func_bodyr  r<  rp   s   &&    r4   r  "CFuncDefNode.declare_cpdef_wrapper  sF      $((DE**3;N;N*O-<<u = ?    +'HTXXTabpTq<rstJqM##11#6Jzz488$(JJOO$(II(,,0#'88$0,$P*4*+- (+':':$))#.,0)($,,H&55!%!3!3

8<<

$**005 JJD

+++(((G,G,G,G}}}zz66666(,% 1$((DLL Q($--9ST	 -H ,r3   c                D   V P                   R8H  ;'       g    V P                  p\        VRR4      pV'       dh   V'       d^   VP                  '       dJ   VP                   R9   g7   VP                  '       g#   VP                  '       g   \        VR4       R# R# R# R# R# R# R# )zW
Ensure that types used in cdef functions are public or api, or
defined in a C header.
r  r:  Nz:Function declared public or api may not have private types)r  r  )r  r+  r   r1  rl  r   )r   r  r9   r   public_or_apir:  s   &&&&  r4   r  &CFuncDefNode._validate_type_visibility7  s    
 H4@@gt,Us':':':$$(<<III!2!2!2cWX "3I = (;U=r3   c                   ^RI Hp V P                  P                  pV'       d*   VR\	        V4      V P                  P
                  ,
           pV Uu. uF  qUP                  NK  	  ppV'       d6   VP                  V P                  V P                  P                  R7      pTpEM4V P                  P                  '       d   V P                  P                  P                  P                  p	VP                  V P                  V	P                  R7      p
Wn	        VP                  V P                  WP                  P                  R7      pMV P                  P                  ^ ,          P                  P                  pVP                  V P                  VP                  R7      pWn	        VP                  V P                  WP                  P                  R7      pT;'       d    \        P                  '       * pTP!                  V P                  TV Uu. uF  qP                  V P                  VR7      NK!  	  upVR7      p\#        V P                  \$        P&                  VR7      # u upi u upi )rG   r  Nr  )r  	attribute)functionrW   wrapper_call)r9   r%  r   )r   r  r  rW   rM   r	  rp   r  r9   r:  r4  rF  r  AttributeNoder   r  SimpleCallNodeReturnStatNoder
   r   )r   omit_optional_argsr1  r  rW   r?  	arg_namescfunccall_arg_namesclass_entry
class_noder  r  skip_dispatchnc_calls   &&&             r4   r  CFuncDefNode.call_self_nodeC  s   yy~~ATTYY%A%AABD)-.#XX	.&&txxdjjoo&FE&NYY'''****66<<K"++DHH;;K;K+LJ*++DHH*PZPZP_P_+`E*//55J ))$(()IH'N++DHH(jjoo+^E,LL1L1LM))HH@IJ	1$$TXXA$6	J&	 * (
 $((
8Q8QY_``+ /& Ks   I'%I,c                    V P                   P                   F<  pVP                  '       g   \        VP                  R 4       V P                  W4       K>  	  R# )r  N)r  rW   rp   r   r9   r  r  s   && r4   declare_argumentsCFuncDefNode.declare_arguments_  s:    99>>C888cgg67!!#+ "r3   c                .    V P                   P                  # r   )r  r  r  s   &&r4   r  !CFuncDefNode.need_gil_acquisitione  s    yy!!!r3   c                   V P                   pVP                  pVP                  '       d   V'       g   VP                  P                  '       d   \        V P                  R 4       V P                  P                   FK  pVP                   P                  '       g   K!  VP                  '       d   K5  \        V P                  R4       KM  	  R# R# R# )z9Function with Python return type cannot be declared nogilz8Function declared nogil has Python locals or temporariesN)
r  r  r  r%  r  r   r9   r  rF  in_with_gil_block)r   r   r  r  r:  s   &&   r4   r  CFuncDefNode.nogil_checkh  s    yy==:::h+++dhhQS))55::)))%2I2I2I$(($^_ 6	 ':r3   c                |   VP                   V P                  n         V P                  e"   V P                  P                  V4      V n        MQV P                  e"   V P                  P                  V4      V n        M"V P                  V4       V P                  V4       V P                  V P                  4      V n        V # r   )	r  r  r  r   r  r  r  r  r  r   s   &&r4   r    CFuncDefNode.analyse_expressionss  s    &)nn#( $ 1 1 E Ec JD\\%<<;;C@DL'',$$S)44T5E5EFr3   c                    R # r  r*   r_  s   &&&r4   r  'CFuncDefNode.needs_assignment_synthesis  s    r3   c                   V P                   p. pV P                  pVP                  R \        VP                  4      VP                  ,
            FZ  p	V	P                  4       p
VP                  V	P                  4      pVP                  '       g
   RV
,          p
VP                  V
4       K\  	  V'       d|   V P                  '       dj   \        P                  P                  \        P                  4      pV P                  '       d   VP                  V4       MVP                  RV,          4       VP                  '       dA   V'       d9   VP                  VP                   P                  \        P"                  4      4       VP$                  '       d   VP                  R4       V'       g   R.pVf   V P&                  P(                  pVP+                  VRP-                  V4      4      pV P&                  P.                  R8X  d   RV9  d   RpMRpR pVP1                  V P&                  P2                  4      pV P4                  P                  WR	7      pV P6                  ;'       g    V P&                  P8                  pV P:                  '       dZ   V'       d7   VP<                  P>                  R
,          PA                  V P:                  4       VPA                  V P:                  4       V'       d   V PC                  4       pV'       d-   VP<                  P>                  R
,          PA                  V4       VP<                  P>                  R
,          PA                  V: V: V: R24       V'       d-   VP<                  P>                  R
,          PA                  R4       VPA                  V: V: V: R24       VP<                  PE                  V P&                  4       R # )NzCYTHON_UNUSED %sz...voidr   privater  static r   )dll_linkagemodule_declarationsz; /* proto*/r  z {)#r  r  rW   rM   r	  r  r  rp   cf_usedr  r0  r
   rJ  r	   skip_dispatch_cnamer  rQ  optional_args_cnamer/  r:  
func_cnamefunction_header_coder   r  build_function_modifiersfunc_modifiersr%  r  r
  rh  r&  partsrU   r  use_entry_utility_code)r   rZ   r  with_opt_argswith_dispatchr  rF  	arg_declsr  r?  arg_declr:  dispatch_argentitystorage_classr  r  headerneeds_protorl  s   &&&&&&              r4   r  %CFuncDefNode.generate_function_header  s     	yy99Dc$))nT-D-DDEC++-HLL*E===-8X& F T---%00AA**,L}}}  .  !3l!BC"""}T//@@A[A[\]U#I=JJ))E**5$))I2FG::  I-$e2C%MM11$**2K2KL	!!2262S,,GG

0G0G$$$  &&'<=CCDD]D]^JJt001!%!<!<!>!  &&'<=CCDVW""#89??(5y&IK!  &&'<=CCHM

	6BC//

;r3   c                   V P                   pV P                   F  pVP                  '       g   K  VP                  VP                  4      pV P
                  '       g   VP                  '       g   KX  VP                  V4      pVP                  VP                  P                  VP                  4      : R V: R24       K  	  R# )r  r  N)r  rW   r  r  rp   r  r  r  rU   r  r  r  )r   r   rZ   rF  r?  r:  r   s   &&&    r4   r  +CFuncDefNode.generate_argument_declarations  s      99C{{{SXX.===EMMM ==dCFJJ11#))<f F G r3   c                    R # r   r*   r   s   &&r4   r   "CFuncDefNode.generate_keyword_list  r   r3   c           
       aa
 ^ p^ pV P                   pV P                  P                  '       Ed   SP                  R\        P
                  ,          4       V P                   EF'  o
S
P                  '       g   K  VP                  S
P                  4      pV P                  '       g   VP                  '       d   SP                  R\        P
                  : R\        P                  : RV: R24       S
P                  p\        VR4      '       g   VP                  pK   SP                  S
P                   : R\        P
                  : RV P                  P#                  VP                  4      : R24       V^,          pV^,          pEK*  	  \%        V4       F  pSP                  R	4       K  	  SP                  R	4       V
V3R
 lp	V P                   F$  o
V	! VP'                  S
P                  4      4       K&  	  R# )r   r   if (rL   zn > ) {rp   r  r  r  c                   < V P                   '       d   SP                  '       g   SP                  V P                  : R V P                  : R24       V P
                  P                  '       d*   V P
                  P                  SV P                  R4       R# SP                  V 4       SP                  V 4       R# R# R# )r  r  TN)
r  r  rU   r  original_cnamer  r2  generate_incref_memoryviewslicer5  put_var_giveref)r:  r?  rZ   s   &r4   put_into_closureECFuncDefNode.generate_argument_parsing_code.<locals>.put_into_closure  s    

e6J6JKL::000JJ>>tU[[RVW''.((/ )4r3   N)r  r  r	  rU   r	   r  rW   r  r  rp   r  r  rH  ra  r  r  r  opt_arg_cnameranger  )r   r   rZ   r5  rP  rF  r:  ra  r  r1  r?  s   &&f       @r4   r2  +CFuncDefNode.generate_argument_parsing_code  s]     99'''JJ{V%?%??@yy;;;!LL2E}}}

$*$>$>$*$7$7$< = &)^^
")*f"="=)3J

$'IIv/I/I$(II$;$;JOO$L$N O 	FA ! 4[

3 !JJsO	0 99CU..sxx89 r3   c                    R # r   r*   r   s   &&r4   !generate_argument_conversion_code.CFuncDefNode.generate_argument_conversion_code  r   r3   c                   V P                   P                   Fk  pVP                  '       d   V P                  W!4       K(  VP                   P                  '       g   KF  VP
                  '       d   KZ  V P                  W!4       Km  	  R # r   )r  rW   needs_type_testr  r  r  r  r  s   && r4   r>  )CFuncDefNode.generate_argument_type_tests  sV     99>>C"""++C6%%%cooo,,S7	 "r3   c                "  < VP                   P                  R ,          '       d-   VP                  V P                  4       VP	                  R4       \
        SV `  V4       V P                  '       d   V P                  P                  V4       R# R# )r  r   N)r&  r  rS  r9   rU   rm   r,  r  )r   rZ   rP   s   &&r4   r,  $CFuncDefNode.generate_execution_code  sg    &&{33MM$((#JJrN'-55d; r3   c                ~    V P                   P                  '       d   R # V P                  P                  P                  # )0)r%  r  r:  r  r
  r   s   &r4   rM  CFuncDefNode.error_value  s+    '''::??222r3   c                B    V P                   P                  P                  # r   )r:  r  r  r   s   &r4   rP  )CFuncDefNode.caller_will_check_exceptions  s    zz...r3   c                   ^ pV P                   pVP                  pVP                  Ee3   V^,          pVP                  pV P                   P                  : \        P
                  : RV: 2Vn        VP                  4        V P                  V^ VP                  P                  VP                  P                  VP                  R7       V P                  P                  '       g   VP                  R4       V P                  P                  pVR\        V4      V P                  P                  ,
            Uu. uF  qfP                  NK  	  ppVP                  P                  '       d!   VP!                  \        P"                  4       M#VP                  '       d   VP!                  R4       VP                  P                  '       d!   VP!                  \        P$                  4       M#VP                  '       d   VP!                  R4       VP                  V P                   P                  : RRP'                  V4      : R	24       VP                  R
4       EKA  R# u upi )r   Nwrap_)r  r  r  return r?  r  r  r   r  r  )r:  r  
prev_entryr  r	   rH  rU   r  r  r	  r%  r  r  rW   rM   r  r  r  r  r   )r   rZ   r   r:  r  rW   r?  arglists   &&      r4   rh  'CFuncDefNode.generate_wrapper_functions  s    

JJ	*FA$$E04

0E0EvGZGZ\]^EJJL))a#jj77#jj;;&&	 * (
 ##+++#99>>D,01X#d)DII<X<X2X,YZ,YSyy,YGZzz(((v99:)))s#zz,,,v99:---v&JJDJJ$9$9499W;MNOJJsO/ + [s   8Ic                z   < \         SV `  4       pV P                  '       d   V'       d   Q hR V P                   2# V# )z#if )rm   r  r  )r   super_guardrP   s   & r4   r  #CFuncDefNode.get_preprocessor_guard&  s>    g46""?$../00r3   )r  r  rW   r   r  r  r3  r:  r  r  r4  r0  r  r  r  r%  r  )r  ra  r   r<  r  )r   r   r   )rG   rG   N)+r+   r,   r-   r.   r   r  r  r<  r3  r  r  rh  r  r  r  r  r  r  r#  setterr   r  r  r  r  r  r  r   r  r  r  r   r2  r7  r>  r,  rM  rP  rh  r  r2   rv   rw   rx   s   @@r4   rd  rd  j
  s     0 TK0KMJHOLL/ O O ( (h%T-U^
Ya8,"	`1<fG#:L8<3/> r3   rd  c                   2   a  ] tR tRt o . tRtRtR tRtV t	R# )PyArgDeclNodei.  Fc                <    V P                   P                  W4       R # r   )r:  r'  r_  s   &&&r4   r'  +PyArgDeclNode.generate_function_definitions9  s    

00;r3   r*   N)
r+   r,   r-   r.   r   r  r  r'  r2   rv   r   s   @r4   rN  rN  .  s       KKK< <r3   rN  c                       ] tR tRtR.tRtR# )r  i=  r  r*   Nr+   r,   r-   r.   r   r2   r*   r3   r4   r  r  =  s     -Kr3   r  c                     a  ] tR tRt o . ROtRR.tRtRtRtRt	^ t
^ tRtRtRt^ t^ tRtRtRtRtRtRtRtRtRtRtR tRR	 ltR
 tR tR tR t R t!R t"R t#R t$R t%R t&R R lt'R t(R t)R t*R!R lt+R t,R t-R t.R t/Rt0V t1R# )"r  iD  r<  r  FNr?  Tc                t   \         P                  ! W3/ VB  ^ ;p;p;rVV P                   Fq  pVP                  '       d
   V^,          pVP                  '       d%   V^,          pVP
                  '       g
   V^,          pVP
                  '       d   Kh  V^,          pKs  	  W0n        W@n        WPn        W`n	        R# )r   N)
r  r   rW   r  r  r  num_posonly_argsnum_kwonly_argsnum_required_kw_argsnum_required_args)r   r9   rX   pr   rkrr?  s   &&,     r4   r   DefNode.__init__v  s    T/$/A99C|||Q{{{Q{{{!GB;;;Q  !" $&!!"r3   c
                t   V P                   '       d!   \        V P                   P                  R 4       V P                  '       d!   \        V P                  P                  R4       T;'       g    Rw  rT;'       g    T	pVf   . pV P                   Fd  pVP                  V^R7      w  rVP                  \        P                  ! VP                  RVP                  \        VP                  R7      4       Kf  	  \        P                  ! \        VRRVVV	VR7      p\        V P                  VR7      pEM/Vf   VP                  pVP                  pVP                   '       d   Rp\#        V P                  4      \#        VP                  4      8w  g   VP$                  '       d-   \        V P                  R	4       \        VP                  R
4       \'        \)        V P                  VP                  4      4       Fg  w  pw  ppTP                  T^V^ 8H  ;'       d    VP*                  R7      w  rVe   V\        P                  J g   KP  VP                  Vn        Wn        Ki  	  V
fe   VP.                  eW   ^RIHp VP5                  V P                  \7        VP.                  4      VP8                  VP.                  P:                  R7      p
\=        V P                  \?        V P                  V P                  RR7      V P                  RVP                   V
VVP@                  VPB                  R7	      p\E        V P                  T;'       g    . \G        V P                  VP8                  R7      VV PH                  V PJ                  VPL                  VVP@                  VPB                  RR\O        VR/ 4      VR7      # )z'cdef function cannot have star argumentz+cdef function cannot have starstar argumentNFrr  )rp   r  r^  r  r9   )r%  rW   r/  r
  r  r  r  r  r  Tzwrong number of argumentszprevious declaration herer  r  r  r  )r  rW   r/  r  r
  r!  r  r  r  r3  )r  r  ra  r   rC   r0  r  r  r  r  r+  r3  r  r  )(r  r   r9   r  rW   r  r  r
   r  rp   r^  r   r.  rh  rF  r  r  rM   r/  r  r  r  r7  r
  r  r  r"  r#  r%  python_valuer  r  r  r  rd  r  r   rC   r  r   )r   r  rF  r0  returns
except_valr!  r  r  r  r
  r  
cfunc_argsr  r7  r  
cfunc_typer5  r  r  ra  s   &&&&&&&&&&           r4   as_cfunctionDefNode.as_cfunction  s   ===$--##%NO$##'')VW+5+F+F(!!=J"ii
(2(:(:51(:(M%!!*"9"9?S?S@DEOEZEZ?M>Hnn	#N O ( $--.3=:?>B>M497?=HJJ  z:E}J))) +/'499~Z__!559O9O9Odhh ;<eii!<=-6s499joo7V-W))J(2(:(:51HIQHiHiSXSiSi ); )l%<4:+D+D#D&.mmJO1@. .X "z'A'A'M,'00J$>$> ?jF\F\ * : : G G 1 IO ).A$((QUQZQZbf.g.2ii5:9C9S9S9HCZ2<2E2E/9/?/?A
 DHH&/oo2&;DHH:KaKa&b'1!% $(2(A(A!+%/%8%8","2"2'0 %-4U<NPR-S.57 	7r3   c                z    V P                   '       d   R# V P                  '       g   V P                  '       d   R# R# )zDetermines if the function's signature is compatible with a
cdef function.  This can be used before calling
.as_cfunction() to see if that will be successful.
FT)r  r  r  r   s   &r4   is_cdef_func_compatibleDefNode.is_cdef_func_compatible  s-    
 ===D---r3   c                r   V P                   '       d   V P                    Fo  pVP                  pVP                  '       g   K#  V ;P                  VP                  R 8H  ,          un        V ;P
                  VP                  R8H  ,          un        Kq  	  V P                  '       d   VP                  R 4      '       d   RV n        V P
                  '       d   VP                  R4      '       d   RV n        VP                  '       g   VP                  '       Ed   V P                  R8X  d   VP                  '       d	   RV n        MV P                  R8X  d*   VP                  '       d   \        V P                  R4       MV P                  \        9   d   V P                  '       gu   RV n        ^RIHp V P                   ;'       g    . V n         V P                   P                  ^ \        V P                  V! V P                  \!        R 4      R7      R	7      4       V P#                  V4       V P                  R
8X  d   V P%                  V4       MV P'                  V4       V P)                  V4       V P*                  P,                  P/                  4       V n        V P.                  \0        J d   V P2                  '       ds   VP4                  R,          '       dZ   V P*                  P6                  '       g>   V P2                  P9                  V4      w  rVV'       d   VP:                  '       d   W`n        V P=                  V4       \?        V P                  V V P*                  P                  V P@                  V PB                  V PD                  V P.                  R7      V n#        V PF                  PI                  V4       R# )r2  r[  Frn   Tr&   z7'__init_subclass__' is not supported by extension classr  r  r  z<lambda>rq  )r  rp   rW   r  r  r%  N)%r<  r  r  is_classmethodrp   is_staticmethodr  r  r  r   r9   IMPLICIT_CLASSMETHODSr  r  insertr  r   analyse_argument_typesdeclare_lambda_functiondeclare_pyfunctionanalyse_signaturer:  	signaturer%  r   r  r  ra  r~  r  r  DefNodeWrapperrW   r  r  
py_wrapperr   )r   r   r  r_   r  r  r%  s   &&     r4   r   DefNode.analyse_declarations  s   ???!__	 **<<<''499+EE'((DII,GG(	 - 3??=#A#A"'DCOON$C$C#(D    C$8$8$8yyI%#*?*?*?'+$11c6J6J6Jdhh YZ33D<O<O<O&*#/"&//"7"7R&&q-HHm@\(]+_ ` 	##C(99
"((-##C(s#:://;;=~-$2M2M2M~~1224::;P;P;P!%!<!<!T!TUX!Y;#:#:#:'2$$(HH]]**((* 	,,S1r3   c                   VP                   P                  R / 4      V n        VP                   R,          pVP                  pRVn        V P                   EF  p\        VR4      '       d   RpMVP                  P                  V4      p\        V4      '       d5   VP                  '       d#   \        P                  ! VVP                  .4      pVP                  P                  Wa4      w  rWVP                  Vn        Wtn        V P!                  W4       V'       d)   VP"                  '       d   \%        V P&                  R4       VP                  P)                  4       Vn        RVn        ^ Vn        ^ Vn        ^Vn        VP                  P2                  '       g9   VP                  P4                  '       g   VP                  P6                  '       d   VP8                  '       d
   RVn        EM?VP<                  '       d
   RVn        EM$VP                  P>                  '       gU   VP                  P@                  '       g9   VP                  P4                  '       g   VP                  P6                  '       d:   VPB                  '       d!   VPB                  PD                  f	   RVn        MW$n        M{RVn        MsVP                  PF                  '       gX   RVn        VP<                  '       d   \%        VP&                  R4       VP8                  '       d   \%        VP&                  R4       VP                  PH                  '       g   EK  RV n%        EK   	  W1n        \        V4      '       dO   \M        V P                  4       UU	u. uF%  w  rV	P                  PN                  '       g   K#  VNK'  	  up	pV n(        R# . V n(        R# u up	pi )	r  allow_none_for_extension_argsNrp   z9Python function argument cannot have C name specificationTFz.Only Python type arguments can have 'not None'z-Only Python type arguments can have 'or None'))r  r   r3  r  rW   r  r  r  r!   r  r
   r  
org_bufferra  rp   r  r  r  r   r9   as_argument_typehdr_typeri  r:  r  r  r  r2  r   r  r  is_extension_typer  r  r  r$  r  r  r  is_numpy_buffernp_args_idx)
r   r   rv  f2sr?  r7  r  r  r5  as
   &&        r4   rm  DefNode.analyse_argument_types  s    # 2 28R @(+7V(W%## $99CsF##"&MM11#6	 "#&&9+D+D+D * 4 4!!,,6. !/I
 NN**9: &*//$$S.?#8#8#8dhh [\xx002CHCL#$C "#CCNxx###sxx'9'9'9SXX=X=X=X;;;&*CO\\\&+COhh000CHH4L4L4L88---1L1L1L{{{s{{'B'B'J*. +H '+COXX&&&"&<<<#''#ST;;;#''#RSxx   +/(c d !$#-6tyy-A\-AcaQVVE[E[-A\D!D  ]s    O*Oc                   V P                   P                  '       d   V P                  '       d   \        V P                  R 4       \        V P                  4      ^8H  ;'       d&    V P                  ;'       g    V P                  '       * V P                   n	        EM0V P                  '       Eg   V P                  '       Eg   VP                  R,          '       d6   \        V P                   Uu. uF  q"P                  NK  	  up4      '       Ed   V P                   P                  \        P                  J d   \        V P                  4      ^ 8X  d"   \        P                   V P                   n        EMY\        V P                  4      ^8X  db   V P                  ^ ,          P"                  fC   V P                  ^ ,          P$                  '       g    \        P&                  V P                   n        MV P                   P                  \        P(                  J d   \        V P                  4      ^8X  d!   \        P*                  V P                   n        M{\        V P                  4      ^8X  db   V P                  ^,          P"                  fC   V P                  ^,          P$                  '       g    \        P,                  V P                   n        V P                   P                  pVP/                  4       pVP1                  4       pV\        P(                  J d^   V^8X  dW   \        V P                  4      ^ 8X  d=   V P                  '       d+   \        P                  ;q0P                   n        ^V n        ^ ;rEV P4                  '       dY   VP6                  '       dG   ^ ;rERV n        \8        P8                  ! V4      ;V P                   n        pRVn        RVn        RVn        V P>                  '       g   V P4                  '       d<   V P@                  '       d*   VP6                  '       d   V PB                  PD                  R \G        \I        V\        V P                  4      4      4       EF>  pV P                  V,          p^ Vn%        We8  d   RVn&        VPO                  V4      '       dq   V P4                  '       g_   V P>                  '       d%   ^Vn(        \R        PT                  ;Vn+        Vn,        M^Vn'        VPZ                  ;Vn+        Vn,        ^ Vn.        K  VP_                  V4      Vn+        VPX                  Pa                  VPV                  4      '       d   K  VPV                  Pb                  '       d'   VPX                  Pb                  '       d   ^Vn2        EK7  ^Vn.        EKA  	  V\        V P                  4      8  d   V Pg                  4        R# V\        V P                  4      8  d   VP<                  '       g   V Pg                  4        V P                   FX  pVPJ                  '       g   K  VPX                  Ph                  '       g   VPX                  Pj                  '       g   KQ  ^Vn2        KZ  	  VPm                  4       pV'       d   \        Pn                  V9   d   V P                   P                  '       g   V P                  '       di   RpV P                   FU  pVPJ                  '       g   K  VP$                  '       d   K+  VPN                  '       d   K?  VPP                  '       d   KS  RpKW  	  MRpV'       g#   VPq                  4       ;q0P                   n        R# R# R# R# R# u upi )z8special functions of cdef classes cannot have decoratorsalways_allow_keywordsNTr  r5  F)9r:  ra  r<  r   r9   rM   rW   r  r  trivial_signaturer  ro  r  rq  r   pyfunction_signaturepyfunction_noargsr  r  pyfunction_oneargpymethod_signature	unaryfuncibinaryfuncmax_num_fixed_argsmin_num_fixed_argsself_in_starargrj  r  r   fixed_arg_formathas_generic_argsri  r  decorator_indirectionrC  r4  minr  r  r  r  r   	type_typery  r  r  ri  fixed_arg_typer  r  r:  bad_signaturerz  r  method_flagsmethod_varargswith_fastcall)	r   r   r?  signfixed
min_nfixedr5  mfuses_args_tuples	   &&       r4   rp  DefNode.analyse_signatureU  s   ::   dhh Z[+.tyy>Q+>+k+kHjHjY]YjYjCkDJJ(---4#4#4#4NN#:;;		:		:;;zz##y'E'EEtyy>Q&+4+F+FDJJ(^q(yy|++3DIIaL<P<P<P/8/J/J

,%%)E)EEtyy>Q&+4+>+>DJJ(^q(yy|++3DIIaL<P<P<P/8/D/D

,jj""'')++-
9///FaKtyy>Q&4=== *3)G)GGC**&#$D "##FC$8$8$8"##F#'D )-37DJJ 3#&C "&C#'C    D$8$8$8(((S-A-A-A**003s63tyy>23A))A,CCN15.q!!$*>*>*>&&&&'CO.5.?.??CL38&'CO.1oo=CL38'($"11!4xx''55||///CHH4H4H4H./+/0,' 4* DII& c$))n$'''""$yy>>>sxx'A'A'ASXXE]E]E]*+C' ! )**b09N9N9N }}}"&99Cs{{{ #*/	 % #("-0->->-@@jj* #! :O02[ ;s   -]-c           	        V P                   P                  pR VP                  4       ,          pVP                  '       d   VR,          pM0VP                  '       d   VRVP                  4       ,          ,          pV P                  pV P                   P                  '       d   RpMRp\        V P                  RW@P                  \        V P                  4      V3,          4       R# )z%dz or morez to %dzSpecial methodMethodz>%s %s has wrong number of arguments (%d declared, %s expected)N)r:  rq  r  r  optional_object_arg_countr  rp   ra  r   r9   rM   rW   )r   r  expected_strrp   descs   &    r4   r  DefNode.bad_signature  s    jj""c4466J&L***Hs'='='???Lyy::   #DDdhhX))S^\\; ; 	<r3   c                   V P                   pVP                  V4      pV'       d   VP                  '       d3   VP                  P                  '       g   \        V P                  R 4       VP                  P                  '       d<   VP                  '       g*   V P                  '       g   \        V P                  R^4       VP                  W P                  V P                  '       * R7      pW0n        VP                  VP                  4      p\!        \"        P$                  V,           V,           4      V P                  n        \(        P*                  '       d   \-        V P                  V P.                  4      Vn        \!        \"        P0                  V,           V,           4      Vn        VP4                  '       d   VP                   \6        P8                  9   g=   VP.                  '       d+   VP                   R9   d#   VP:                  R,          '       d
   RVn        R# \!        \"        P>                  V,           V,           4      Vn        R# R# RVn        R# )z:Only final types can have final Python (def/cpdef) methodszOverriding a c(p)def method with a def method. This can lead to different methods being called depending on the call context. Consider using a cpdef method for both.)allow_redefine__getattr__fast_getattrN) rp   r  r  r  is_final_typer   r9   r  r  is_builtin_cmethodr	  r   ro  r:  next_idscope_prefixr   r	   pyfunc_prefixpyfunc_cnamer   r8  rD   rC   funcdoc_prefix	doc_cnamera  r   	invisibler  wrapperbase_cnamewrapperbase_prefix)r   r   rp   r:  prefixs   &&   r4   ro  DefNode.declare_pyfunction  s   yy%%%%coo.K.K.Kdhh \]zz&&&u/G/G/GPTP_P_P_ #PQRT &&tXX$//FY&Z
S--."1&2F2F2ORV2V"W

&txx:EI-f.C.Cf.Lt.STEO::!4!44EIII

m3~8V8V.2E+.=f>W>WZ`>`cg>g.hE+   EIr3   c                    VP                  V P                  V P                  4      pR Vn        W n        VP
                  V P                  n        R # r   )rn  lambda_namer9   rC   r:  r  r  )r   r   r:  s   && r4   rn  DefNode.declare_lambda_function  s:    ++D,<,<dhhG	
"'++

r3   c                z   V P                    F  pVP                  '       g   \        VP                  R 4       VP                  '       de   VP                  VP                  VP                  VP                  4      Vn        VP                  P                  '       d   RVP                  n	        MV P                  W4      Vn        ^VP                  n        ^VP                  n        VP                  VP                  n        K  	  V P                  WP                  4       V P                  WP                   4       R# )r  r?  N)rW   rp   r   r9   ri  rI  r  r:  r  ro  r  ru  rP  r  declare_python_argr  r  r  s   && r4   r  DefNode.declare_arguments  s    99C888cgg67###OOCHHchhH	88'''%(CIIN 11#;	 CIICIIN$'OOCII!  	]]3%6%67r3   c                   V'       dz   VP                   R ,          R8w  d   \        P                  pM\        pVP	                  VP
                  W2P                  4      p^Vn        ^Vn        RVn	        ^Vn
        WBn        R# R# )infer_typesFr?  N)r  r
   unspecified_typer   rI  rp   r9   ru  rP  ro  r7  r:  )r   r   r?  r  r:  s   &&&  r4   r  DefNode.declare_python_arg  se    ~~m,5!22%OOCHHdGG<EELEJEJ$%E!I r3   c                   VP                   V P                  n         V P                  V4       V P                  V4       V P	                  V4      '       gP   V P
                  '       d>   V P
                  R R R1,           F#  pVP                  P                  V4      Vn        K%  	  V P                  P                  V4       V # )Nr   )
r  r  r  r  r  r<  r  r   rs  prepare_argument_coercion)r   r   r  s   && r4   r   DefNode.analyse_expressions	  s    &)nn###C(  %..s33!__TrT22	&/&9&9&M&Mc&R	# 3 	11#6r3   c                .   V P                   '       d   R # V P                  '       g   V P                  P                  '       d   R# V P                  '       d   R# V P                  P
                  '       d   R# V P                  P                  '       d   R # VP                  '       g   VP                  '       d?   Vf   V P                  P                  R,          # VP                  P                  R,          # VP                  ;'       g    VP                  # )TFbinding)rj  specialized_cpdefsr:  r  no_assignment_synthesisra  is_anonymousr1  r  r  r  r&  r  r  r_  s   &&&r4   r  "DefNode.needs_assignment_synthesis  s    """djj&E&E&E'''::   ::"""#"6"6"6|''229==''229==$$<<(<(<<r3   c                B    V P                   P                  P                  # r   )r:  rq  rM  r   s   &r4   rM  DefNode.error_value'  s    zz##///r3   c                B    V P                   P                  P                  # r   )r:  rq  r  r   s   &r4   rP  $DefNode.caller_will_check_exceptions*  s    zz##333r3   c                |   V P                   '       dB   VP                  4       p\        P                  V P                   V4      pVP	                  W24       V P
                  '       dA   V P                  P                  V P                  n        V P                  P	                  W4       \        P	                  WV4       R # r   )
defaults_getterr6  r  r  r'  py_wrapper_requiredr:  r  rs  r  )r   r   rZ   module_scopedirectives_nodes   &&&  r4   r'  %DefNode.generate_function_definitions-  s    ++-L4AA$BVBVXdeO99,M ###)-)>)>DOO&OO99#D11$TBr3   c                   V'       d1   V P                   '       d   V P                  P                  WR 4       R# . pV P                  P                  P
                  '       dD   R\        P                  ,          pV P                  '       g
   RV,           pVP                  V4       R pV P                   F  pVP                  V! V4      4       K  	  V P                  '       d"   VP                  V! V P                  4      4       V P                  '       d"   VP                  V! V P                  4      4       V'       d   RP                  V4      pMRpV P                  P                  V P                  P                   4      p	VP"                  R,          p
V P%                  4       pV'       d   V
P'                  V4       V
P'                  RV	: R	V: R
24       V'       d   V
P'                  R4       VP'                  RV	: R	V: R24       R# )TNPyObject *%sCYTHON_UNUSED c                     V P                   pVP                  '       d   VP                  pMVP                  pVP                  P                  V4      pVP                  '       g
   R V,           pV# )r  )r:  r  r.  r  r  r  r  )r?  r:  r  decls   &   r4   arg_decl_code7DefNode.generate_function_header.<locals>.arg_decl_codeH  sW    IIE,,::..u5D==='$.Kr3   r   r  declsr  r  z); /* proto */r  r,  )r  rs  r  r:  rq  has_dummy_argr	   r/  r  r  rW   r  r  r   r%  r  r  r&  r  rU   )r   rZ   r  r  arg_code_listself_argr  r?  r  dc
decls_coderl  s   &&&&        r4   r   DefNode.generate_function_header;  s   '''88$0::---%(9(99H)))+h6  *		 99C  s!34 ===  t}}!=>  t/@/@!AByy/HH..tzz/F/FG%%g.
!88:/0,.9	;X&

H56r3   c                    R # r   r*   r_  s   &&&r4   r  &DefNode.generate_argument_declarationsi  r   r3   c                    R # r   r*   r   s   &&r4   r   DefNode.generate_keyword_listl  r   r3   c                   a V3R  lpV P                    F  pV! VP                  4       K  	  V P                  V P                  3 F  pV'       g   K  V! VP                  4       K!  	  R# )c                   < V P                   '       Edi   V P                  P                  '       d   V P                  P                  f   Q hSP                  P                  \        P                  ! RR4      4       SP                  RP                  V P                  V P                  4      4       M-SP                  V P                  : RV P                  : R24       V P                  P                  '       d*   V P                  P                  SV P                  R4       R # V P                  '       d%   SP                  V 4       SP!                  V 4       R # SP#                  V 4       SP%                  V 4       R # R # )NIncludeStringHzStringTools.czmemcpy({0}, {1}, sizeof({0}));r  r  T)r  r  r  r  r&  r  r   r  rU   formatr  r.  r2  r/  r7  r8  put_var_xgiverefr5  r0  )r:  rZ   s   &r4   r1  @DefNode.generate_argument_parsing_code.<locals>.put_into_closureq  s   ::&&& !::??666$$55k6M6MN^`o6pqJJ?FFu{{TYThThijJJU[[%:N:NOP::000 JJ>>tU[[RVW*** ((/))%0''.((/+  r3   N)rW   r:  r  r  )r   r   rZ   r1  r?  s   &&f  r4   r2  &DefNode.generate_argument_parsing_codeo  sN    	0. 99CSYY' ==$"3"33Cs + 4r3   c                    R # r   r*   r   s   &&r4   r>  $DefNode.generate_argument_type_tests  r   r3   )r<  r3  r:  r  ri  rj  r|  rV  rU  rX  rW  rs  r%  r  )rW   r  r  r   r<  r  )	NNTNNFNFFr   r6   )2r+   r,   r-   r.   r   r  rj  ri  r  reqd_kw_flags_cnamer	  r  r<  r  r:  r  r  py_cfunc_noderequires_classobjdefaults_structrC   fused_py_funcr  rs  r  r  r  r   rc  rf  r   rm  rp  r  ro  rn  r  r  r   r  rM  rP  r'  r  r  r   r2  r>  r2   rv   r   s   @r4   r  r  D  s     , gK!9:KONKJJ!EKOMO
CMJJO#$I7V	52n>"@eAN<6.8 
=$04C,7\,> r3   r  c                      a  ] tR tRt o RtRtRtR tR tR t	R t
R tR	 tR
 tR R ltR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!Rt"V t#R# )!rr  i  NFc                V   \         P                  ! V .VO5/ VB  V P                  P                  V n        V P                  P                  V n        V P                  P
                  V n        V P                  P                  V n        V P                  P                  V n        R V n        R # r   )	r  r   r  rU  rV  rW  rX  r  rq  )r   rW   r   s   &*,r4   r   DefNodeWrapper.__init__  s{    T3D3F3 $ < <#{{::$(KK$D$D!!%!>!>#{{::r3   c                   V P                   P                  pV P                  pVP                  VP                  4      p\        \        P                  V,           V,           4      Vn        \        \        P                  V,           V,           4      Vn
        VP                  V n        V P                   P                  V n        R # r   )r  r:  rp   r  r  r   r	   pywrap_prefixr  pymethdef_prefixpymethdef_cnamerq  r|  )r   r   target_entryrp   r  s   &&   r4   r   #DefNodeWrapper.analyse_declarations  s    {{((yyS--."1&2F2F2ORV2V"W'6v7N7NQW7WZ^7^'_$%//;;22r3   c                   V P                    F  pVP                  P                  '       g&   VP                  P                  V4      '       g   KB  KD  VP                  '       g   KX  VP                  P                  '       d   Kv  VP                  P                  V4      '       d   K  K  	  V P                  '       d   V P                  P                  P                  '       gv   V P                  P                  p^Vn	        VP                   FF  pVP                  '       d   K  VP                  P                  '       g   K5  RVP                  n        KH  	  R# R# R# )rG   TN)rW   r  r  create_from_py_utility_codery  r6  r  r:  r  r7  cf_assignmentsru  rz  r  cf_maybe_null)r   r   r?  r:  asss   &&   r4   r  (DefNodeWrapper.prepare_argument_coercion  s    
 99C88'''xx;;C@@ Acll&>&>&>||==cBB  T%6%6%<%<%D%D%D %%++E$%E!++zzzcggooo,0CGG) , &Er3   c                    \        V P                  4      pV^ 8X  gN   V^8X  dI   V P                  ^ ,          P                  '       g$   V P                  ^ ,          P                  '       d   ^ # ^# r6   )rM   rW   r  r  )r   argcounts   & r4   signature_has_nongeneric_args,DefNodeWrapper.signature_has_nongeneric_args  sJ    tyy>q=A499Q<#;#;#;#'99Q<#;#;#;r3   c                .    V P                   P                  # r   )rq  r  r   s   &r4   signature_has_generic_args)DefNodeWrapper.signature_has_generic_args  s    ~~...r3   c                N   . pV P                   P                  '       d    VP                  \        P                  4       V P
                   EFJ  pVP                  P                  '       d_   VP                  P                  \        P                  ! R R4      4       VP                  RVP                  P                  ,          4       K~  VP                  '       d   VP                  P                  '       gz   VP                  P                   '       g^   VP                  P"                  '       gB   VP                  VP                  P%                  VP                  P                  4      4       EK%  VP                  VP                  P                  4       EKM  	  V P&                  '       d0   VP                  V P&                  P                  P                  4       V P(                  '       d0   VP                  V P(                  P                  P                  4       RP+                  V4      pV P,                  P.                  '       g'   VP1                  R\        P2                  ,          4       VP5                  V P6                  P                  P8                  : RV: R24       R# )MoveIfSupportedCppSupport.cpp__PYX_STD_MOVE_IF_SUPPORTED(%s)r   z%s = r  r  N)rq  r  r  r	   r/  rW   r  r  r&  r  r   r  r:  r  ry  r2  r_  r  r  r  r  r   r%  r  r  r  rU   r  r  )r   rZ   rW   r?  s   &&  r4   r  %DefNodeWrapper.generate_function_body  s   >>'''KK))*99Cxx$$$   11++,=?OPR=		OPsxx'B'B'B%(XX%7%7%7%(XX%8%8%8CHH..syy?@CIIOO,  ===KK++112KK))//556yy'''HHWv2223

KK**D2 	3r3   c                d
   V P                   P                  pVP                  V P                  4       VP	                  R 4       VP	                  R4       V P                   P                  4       pV'       d   VP	                  V4       VP                  V4       VP                  4       Vn        V P                   P                  W4      ;'       g    V P                   P                  pV P                  W%4       V P                  W24       VP                  4       pV P                  P                  '       d   RpMR pV P                  P                   '       g@   VP	                  V P                  P#                  \$        P&                  4      : V: R24       VP)                  4        VP+                  \-        RV P.                  ,          4      4       V P1                  W2V4       V P3                  V4       V P5                  V4       VP7                  VP8                  4       VP                  V P                  4       VP	                  R 4       VP	                  R4       VP                  R4      pVP;                  VP<                  4      '       d   VP?                  VP@                  4       VPC                  VP<                  4       VP8                  PE                  4        F  w  rVPG                  W4       K  	  V PI                  4       pVe(   VP	                  \$        P&                  : RV: R24       V PK                  V4       VP?                  V4       VPC                  VP@                  4       V PK                  V4       VPC                  V4       VPL                   FM  pVPN                  '       g   K  VPP                  '       d   VPS                  V4       K<  VPU                  V4       KO  	  \W        VPL                  4      pV PX                   F  pVPZ                  P                  '       d   K!  VP\                  V9  g   K4  VP\                  PP                  '       d   VPS                  VP\                  4       Km  VPU                  VP\                  4       K  	  VP_                  4        V P                  P                   '       g'   VP	                  R	\$        P&                  ,          4       VP	                  R
4       VPa                  4        V'       d   VP	                  RV,          4       R# R# )r   z/* Python wrapper */z = 0r  z%s (wrapper)r  
cleaned_upNr  r  r  r  )1r  r  rS  r9   rU   r  r  r  r  r  r  r  r  rQ   r%  r  r  r  r	   r  rc  rd  r   rp   r2  r>  r  rf  r  rC  rD  rE  rF  rG  rH  rI  rM  %generate_argument_values_cleanup_coderF  ru  r7  r^  put_var_decrefr   rW   r  r:  re  rg  )r   r   rZ   r  rl  r  rp  retval_initvalues_cleaned_up_labelr  r  r}  r:  var_entries_setr?  s   &&&            r4   r'  ,DefNodeWrapper.generate_function_definitions  s   {{&&dhh

2

)*![[??AJJ)*t$/3~~/?,++@@K 9 9++88 	%%d;++D7//1''' KK'''JJ  11&2E2EF  	))+''ntyy6P(QR++D8HI))$/##D) 	..t~~>dhh

2

-. #'..">??4++,,MM$++,NN4++,#~~??A  -  B&&(G"

)<)<gFG 66t<MM12 	t(()2248./%%E|||(((((/''. & d../99C88'''CII_,L 99,,,((3''		2  	((*'''JJ|f&9&99:

3JJ),>>? r3   c                
   . pV P                   pVP                  '       g   V P                  '       dD   R \        P                  ,          pVP                  '       g
   RV,           pVP                  V4       V P                   F  pVP                  '       d   K  VP                  '       g   VP                  '       d%   VP                  R VP                  ,          4       K_  VP                  VP                  P                  VP                  4      4       K  	  V P                  P                  pVP                  '       g6   VP!                  4       \"        P$                  .8X  d   VP                  R4       VP&                  '       d   R\        P(                  : R\        P*                  : 2p	VP,                  '       dT   R\        P(                  : R\        P.                  : R\        P*                  : 2p
VP                  RV
: RV	: R	24       MVP                  V	4       VP                  '       dM   \1        \3        V P                  4      VP5                  4       4       F  pVP                  R
V,          4       K  	  RP7                  V4      pRpVP8                  R9   d!   VP:                  P<                  '       d   RpRpV P>                  P                  VP@                  4      pV: RV: RV: R2pVPC                  RV,          4       V'       dF   V P                  PD                  '       d(   V P                  PD                  PG                  WRR7       R# \H        PJ                  '       EdJ   VPL                  '       Ed7   V P                  PD                  '       Eg   VP:                  PN                  '       g   VP                  '       d   VPP                  '       d   VPL                  pVPR                  '       d   VPU                  4       pVP                  '       d   VP8                  R9   g3   VPC                  RVPV                  : RVPY                  4       : R24       VP                  '       dE   VPC                  R4       VPC                  RVPP                  ,          4       VPC                  R4       V'       g   V P                  PD                  '       dK   VP[                  RVP\                  ,          4       VP_                  V P                  P                  RRR7       VPC                  RV,          4       R# )r  r  zCYTHON_UNUSED PyObject *unusedz
PyObject *, PyObject *zPyObject *const *z, Py_ssize_t z
#if CYTHON_METH_FASTCALL
z
#else
z
#endif
z%CYTHON_UNUSED PyObject *unused_arg_%sr   r   Fr  r  r  z%s; /*proto*/T)r  NzPyDoc_STRVAR(r   #if CYTHON_UPDATE_DESCRIPTOR_DOCzstruct wrapperbase %s;r  zstatic PyMethodDef %s = r  )
allow_skipz%s {r  )0rq  r  r  r	   r/  r  rW   r  r  r  rl  ry  r  r  r:  ra  r  r   method_noargsr  
args_cname
kwds_cnameuse_fastcallnargs_cnamer4  rM   r  r   rp   rF  r  r%  r  rU   r  r  r   r8  rC   is_property_scoper  
is_unicodeas_utf8_stringr  re  r  r  put_pymethoddef)r   rZ   r  r  r  r  r  r?  r:  varargs_argsfastcall_argsr  r  r  r#  docstrs   &&&&            r4   r  'DefNodeWrapper.generate_function_header@  s   nn 4 4 4%(9(99H$$$+h6  *99C>>>???cooo!((#--)GH!((55cmmDF  !!C$4$4$69;R;R:S$S  !AB%%v'8'8:L))6+=+=v?P?P!R$$%|56 $$\23tyy>3+A+A+CD$$%Lq%PQ E99]+ JJ@@KK000!B"N..u/?/?@&("h7

?V+,{{((( ))BBT C ;5999KK---KK111%%%)@)@)@YYF   ..0$$$7])]

OO..02 3 

=>

,u/F/FFH

8$T[[666HH*U-B-BBD  !2!2CE J

6F?#r3   c                   V P                    Fh  pVP                  '       g   K  VP                  '       d%   VP                  R VP                  ,          4       KM  VP                  VP                  4       Kj  	  VP                   F(  pVP                  '       g   K  VP                  V4       K*  	  V P                  4       '       dy   R\        P                  ,          pV P                  P                  '       d5   VP                  R4       VP                  V4       VP                  R4       MVP                  V4       VP                  R\        P                  ,          4       R# )zPyObject *%s = 0;zCYTHON_UNUSED Py_ssize_t %s;#if !CYTHON_METH_FASTCALLr  z"CYTHON_UNUSED PyObject *const *%s;N)rW   r  ri  rU   rl  r  r:  rF  ru  r  r	   r  rq  r  kwvalues_cname)r   r   rZ   r?  r:  
nargs_codes   &&&   r4   r  -DefNodeWrapper.generate_argument_declarations  s    99C~~~'''JJ2S]]BC,,SYY7  __E|||((/ %
 **,,7&:L:LLJ~~***

67

:&

8$

:& 	

7&:O:OOPr3   c           
     
   VP                  4       pVP                  pVP                  R 4      pV P                  ^ 8  pV P                  RJ;'       g    V P
                  RJ;'       g    TpV P                   FD  p	V	P                  P                  '       d   K!  V	P                  P                  V4      '       d   KD  KF  	  V P                  4       '       Ed2   V P                  P                  '       d   VP                  R4       VP                  R4       VP                  \        P                  : R\        P                   : R24       VP                  R4       VP                  \        P                  : R\        P                   : RVP#                  R	\        P                  ,          4      : R
V P%                  4       : R24       VP                  R4       V P                  P                  '       d   VP                  R4       VP&                  P)                  \*        P,                  ! RR4      4       VP                  \        P.                  : RV P                  P0                  : R\        P                   : R\        P                  : R24       V P                  4       '       g1   V'       d   \3        V P4                  R4       V P7                  V4       MKV P9                  4       '       g   V P;                  V4       M#V P=                  V P                  W#4       RV n        WBn        VPA                  V4      '       Ed   VPC                  V4       VPE                  V4       V PG                  V4       V'       d   V PI                  V P                  V4       V P
                  '       dr   V P
                  PJ                  PL                  '       d'   VPO                  V P
                  PJ                  4       M%VPQ                  V P
                  PJ                  4       V P                   FZ  p	V	P                  P                  '       d   K!  V	P                  PR                  '       g   K?  VPU                  V	PJ                  4       K\  	  VPW                  V PX                  PJ                  PZ                  4       VP]                  4        VP                  RV P%                  4       ,          4       VPE                  V4       R# )argument_unpacking_doneNr%  z#if CYTHON_ASSUME_SAFE_SIZEz = PyTuple_GET_SIZE(r  r  z = PyTuple_Size(z); if (z%s < 0z	) return r  r  fastcallr  z = __Pyx_KwValues_r  r   z.This method cannot have * or keyword argumentsTr  )/new_error_labelrD  r  rV  r  r  rW   r  r  r  r  rq  r  rU   r	   r  r  rX  rM  r&  r  r   r  r&  fastvarr   r9   r7  r  generate_stararg_copy_code'generate_tuple_and_keyword_parsing_codeneeds_values_cleanuprC  rE  rG  r  generate_arg_decrefr:  r7  put_var_xdecref_clearput_var_decref_clearrZ  r^  rS  r  rT  re  )
r   r   rZ   	decl_codeold_error_labelour_error_label	end_labelhas_kwonly_argshas_star_or_kw_argsr?  s
   &&&&      r4   r2  -DefNodeWrapper.generate_argument_parsing_code  s    ..0**NN#<=	..2"mm47 @ @  ,@ @0? 	 99C88'''xx;;C@@  **,,~~***

67JJ45JJ""F$5$57 8JJw JJ""!!h););;<  "	  JJx ~~***

8$))##J0EF	H

!!4>>#9#96;L;LfN`N`b 	c ..00"dhh PQ22483355 ++D1 88DT(,D%*???++MM)$NN?+66t<"((=$$$((..>>>2243D3D3J3JK11$2C2C2I2IJyyxx+++0J0J0J ((3	 !
 ""4;;#4#4#C#CD,,.JJ|d&6&6&889y!r3   c                P    V'       d   VP                  VP                  4       R # R # r   )r2  r:  r   r?  rZ   s   &&&r4   generate_arg_xdecref#DefNodeWrapper.generate_arg_xdecref  s    &&syy1 r3   c                P    V'       d   VP                  VP                  4       R # R # r   )r3  r:  r<  s   &&&r4   r1  "DefNodeWrapper.generate_arg_decref  s    %%cii0 r3   c                :   R V P                  4        R2pV P                  P                  4       pV P                  '       gk   VP                  P                  \        P                  ! RR4      4       VP                  R\        P                   RV R\        P                   RV R2	4       TP                  R	\        P                   R
V P                  '       d   RMR R\        P                   RV P                  P                   R\        P                   R24       VP                  R\        P                   RV 24       V P                  '       Ed   VP                  R\        P                   R24       VP                  P                  \        P                  ! RR4      4       VP                  RV R\        P                   RV 24       V P                  P                   P"                  '       Ed&   RV P                  P                   n        V P                  P                   P&                  pVP                  V RV P                  P                   R\        P                   R\        P(                   R24       VP                  RV RV 24       VP+                  V P                  P                   4       VP                  R4       VP                  V R24       VP                  RV RV 24       VP+                  V P                  P                   4       VP                  R4       MjVP                  P                  \        P                  ! RR4      4       VP                  R\        P                   R V R\        P                   RV R2	4       V P,                  '       Ed   V P.                  P0                  '       Eg   V P                  P2                  '       d   Q hV P                  P                   P&                  pVP                  V R!\        P                   R"VP5                  WPP6                  4       24       VP+                  V P                  P                   4       VP9                  \        P:                  \<        4       VP?                  \        P:                  \<        4       VP                  VPA                  R#V R$\        P:                   R%2V P6                  4      4       VPB                  PE                  \F        PH                  RR&7      pVP                  R'V R(V R)\        P                   R*V R+2	4       VP                  R,\        PJ                   RV R24       VP                  R-4       VP                  VP5                  R.V P6                  4      4       VP                  R/4       VP9                  R.\<        4       VP?                  R.\<        4       VP                  VPA                  R#V RV R02V P6                  4      4       VP                  R4       VPB                  PM                  V4       ^ V P                  P                   n        R1# V P                  '       d   V P                  P2                  '       d   Q hV P                  P                   P&                  pVP9                  \        PJ                  \<        4       VP                  V R
\        PJ                   R24       ^ V P                  P                   n        R1# R1# )2rE  r  RaiseArgTupleInvalidr  r  z$ > 0)) { __Pyx_RaiseArgtupleInvalid(z, 1, 0, 0, r   }const Py_ssize_t r  r   rX  r  ) ? __Pyx_NumKwargs_) : 0;z < 0)) r+  z > 0) {KeywordStringCheckz'if (unlikely(__Pyx_CheckKeywordStrings(r   z
) == -1)) Fz = __Pyx_KwargsAsDict_r  if (unlikely(!z)) r  z = PyDict_New();r  RejectKeywordsz > 0)) {__Pyx_RejectKeywords(z = PyTuple_New(z + 1); z__Pyx_PyTuple_SET_ITEM(z, 0, r  r  for (=0;  < ; ++) {z(PyObject* item = __Pyx_PyTuple_GET_ITEM(z#if !CYTHON_ASSUME_SAFE_MACROSr   r  z	+1, item)N)'rM  rp   re  r  r&  r  r   r  rU   r	   r  kwds_len_cnamer  r  rq  r-  r:  r  r7  r  r&  put_var_gotrefr  r  rj  r  r  r9   r-  r/  r   r  error_goto_if_negr  r  r
   c_py_ssize_t_typer  r  )r   rZ   
goto_errorfunction_namestarstar_arg_cnamestar_arg_cnamer  s   &&     r4   r.  )DefNodeWrapper.generate_stararg_copy_code  s   t//12!4
		557}}}--''(>@UVXJJ 2 23 4//<o[I[I[H\\_,  	

 5 56c&&&rJ7q9J9J8K L#~~556a8I8I7J&R	

 	

]6#8#8"9MNJJf334H=>--''(<>STVJJ9-6K\K\J]]ghrgst
   &&...:?!!''7%)%6%6%<%<%B%B"

)**@AWAW@XXY(()F,A,A+B
 

^,>+?s:,OP##D$5$5$;$;<

:&

011ABC

^,>+?s:,OP##D$5$5$;$;<JJsO --''(8:OPRJJ 5 56 7((5b9J9J8K3,	 (C(C(C~~22222!]]0066NJJ!"/&2D2D1EW**>88DEG  3 34OOF--~>V..?JJ&&)@@PPUV\VgVgUhhi'jlpltltuw>>//
0L0LY^/_DJJvT$s6+=+=*>bfMOJJ:6;L;L:MRPTvUWXZJJ78JJt..vtxx@AJJx OOFN3V^4JJ&&)@@PPRSWRXXa'bdhdldlmoJJsONN''-23DMM/]]]~~22222!]]0066NOOF--~>JJ!"#f&7&7%8:<23DMM/ r3   c                   VP                   P                  \        P                  ! R R4      4       V P                  P                  4       pVP                  R4      pVP                  V P                  4      p. p. p. p	^ ;rV F  pVP                  '       g   K  VP                  '       g   VP                  '       d   K=  VP                  '       d(   VP                  '       d   T	MTP                  V4       Kv  VP                  V4       VP                  '       g   K  V
^,          p
VP                  '       d   K  V^,          pK  	  W,           pV P                   V P"                  ,
          p\%        V4      ^ 8  d<   V^ ,          P                  '       g   V^ ,          P                  '       d
   V^,          p\%        V4      pV P&                  '       * ;'       d    W8H  p\)        V4      pV P*                  '       g   V P&                  '       d   V P-                  W4       \/        V4      \/        V4      ,           pV Uu. uF  qP                  '       d   K  VNK  	  ppT;'       g    V P*                  pVP1                  R4       V'       dx   RP3                  V Uu. uF+  pRVP5                  VP6                  P                  4       2NK-  	  upR.,           4      pVP1                  R\8        P:                  : RV: R	24       V P=                  VW#4       TP1                  R
\8        P>                   RV'       d   RMR R\8        P@                   RV PB                  PD                   R\8        P@                   R24       VP1                  R\8        P>                   RV 24       \8        P>                   R2pV P"                  ^ 8  d
   RV,          pVP1                  RV,          4       V'       g[   VP                   P                  \        P                  ! RR4      4       VP1                  RV R\8        P@                   RV 24       EMrV PG                  WVVVWR4       V PI                  VVV4       V PK                  VV4       W8  d   VP                   P                  \        P                  ! RR4      4       VP1                  R\8        PL                   RV R24       VP1                  RV RVR RVR RVR R V R!24       VP1                  R"4       V P"                  '       d   VP                   P                  \        P                  ! R#R4      4       VP1                  RV RWP"                  ,            R24       VP1                  R$V R%\8        P:                   R&V
 R'V R!2	4       VP1                  R"4       V P"                  '       d   V^ 8  g   W8X  dX   W8X  d   V P&                  '       g   R(pMR)pVP1                  R*\8        PL                  VV3,          4       VPO                  V4       V P"                  '       d   W8  dL   V P&                  '       g:   VP1                  R+\8        PL                  V3,          4       VPO                  V4       VP1                  R,4       V F  pVP                  '       d   K  VP                   P                  \        P                  ! R#R4      4       VP5                  VP6                  P                  4      pVP1                  R-V RV RV 24        EM}	  EMyVP1                  R,4       W8X  do   \Q        V4       F]  w  ppVP1                  R.V R/V PB                  PD                   R\8        PR                   RV R02	4       VP1                  R1V R2V 24       K_  	  EMVP1                  R3\8        PL                   R424       V P&                  '       d   VP1                  R54       \U        \Q        V4      4      R6R6RA1,          pV F  w  ppVV^,
          8  dD   VV^ ,          ^ ,          8w  d   VP1                  R74       VP1                  R8V^,           R9 R:24       VP1                  R.V R/V PB                  PD                   R\8        PR                   RV R02	4       VP1                  R1V R2V 24       K  	  V^ 8X  d#   VP1                  R74       VPW                  R;4       VP1                  R<4       V P&                  '       dL   V'       dC   \Y        V^,
          RARA4       F  pVP1                  R8VR9 R:24       K  	  VPO                  V4       M"VPW                  R=4       VPO                  V4       VP1                  R"4       V PK                  VV4       VP1                  R"4       \Q        V4       F  w  ppV P[                  VR.V R>2V4       K  	  VP1                  R"4       VP]                  V4      '       d   VP                  R?4      pVPO                  V4       VP_                  V4       VP                   P                  \        P                  ! RR4      4       VP1                  R@VVW\8        PL                  V3,          4       VP_                  V4       R6# R6# u upi u upi )Br+  r  argtuple_error{,&r?  zPyObject ** const z[] = {};rD  r  r   rX  r  rE  rF  r  r  z > 0z
likely(%s)r   rI  z__Pyx_RejectKeywords(r   r  rB  zfor (Py_ssize_t i = z; i < z; i++) {z7if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid(r   z, i); rC  r  RaiseKeywordRequiredz7if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired(z, *(z[i - z])); z!=<z } else if (unlikely(%s %s %d)) {z} else if (unlikely(%s > %d)) {r  z__Pyx_RaiseKeywordRequired(values[] = __Pyx_ArgRef_r  3if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[])) switch (r,  default:NCYTHON_FALLTHROUGH;case 2dr   	case  0: break;	default: ]skipz2__Pyx_RaiseArgtupleInvalid(%s, %d, %d, %d, %s); %sr   )0r&  r  r   r  rp   re  r  r  r9   r  r  r  r  r  r  r  rX  rW  rM   r  boolr  generate_stararg_init_codetuplerU   r   intern_identifierr:  r	   pykwdlist_cname#generate_argument_values_setup_coderO  r  rq  r-  generate_posargs_unpacking_codegenerate_keyword_unpacking_code*generate_argument_defaults_assignment_coder  rE  r  r  r   r  r4  generate_arg_assignmentrC  rG  )r   rW   rZ   r4  self_name_csafeargtuple_error_labelrS  r  required_kw_only_argsoptional_kw_only_argsnum_pos_only_argsnum_required_pos_only_argsr?  kw_only_argsmin_positional_argsmax_positional_argshas_fixed_positional_counthas_kw_only_argsall_argsnon_posonly_argsaccept_kwd_argsnon_pos_args_idkw_unpacking_conditioncomparepystring_cnamer5  reversed_argsskip_error_handlings   &&&&                        r4   r/  6DefNodeWrapper.generate_tuple_and_keyword_parsing_codeh  s	   ))##J0EF	H ))779#~~.>?__TXX.
 " "9::C>>>#///{{{*-+++&;PXXY\]&&s+<<<%*%;;;2a72 " -D"44t7P7PPt9q=d1g111T!W5H5H5H1$!/2)-%6 &7 &76 	#-++,?F)E,,??+3H8C<<CC8H*??d.?.?

3!hh+(+C D**399>>:;<+( ( O JJ&&! " 	004K 	

 5 56c$r*5Qv7H7H6I J#~~556a8I8I7J&R	

 	

]6#8#8"9MN$*$9$9#:$!?$$q(%14J%J" 	

;!778--''(8:OPRJJ..?r&BSBSATTWXbWcde 00#*,<hH\d 00#Xt5 ;;HdK #?  11++,BDYZ\

1&2D2D1EVL_K``ijk

2&'r1!4B*1-R*1- .!l #
 

3(((  11++,BDYZ\

12E1FfM`c|c|M|L}  ~G  H  I

2&' (//06G5H I!l # 

3 %%%*=*AFYFp #9$---JJ9""G-@=B B CMM./$$$"8

<&&(;@= = >23JJz"#{{{$$55#//0FH]^`%)%;%;CIINN%KNJJ!<_<MRP^O__bcmbnop $ JJz""9 (8FAsJJ!!$5dnn6L6L5MQvO`O`NaacdecffhikJJ!TUVTWW[\f[ghi 9 

Xf&8&8%9>?===JJz* $Y%? @2 F+FAs/11a 0 33 JJ'<=

U1Q3r(!#45JJ!!$5dnn6L6L5MQvO`O`NaacdecffhikJJ!TUVTWW[\f[ghi , '!+JJ45HH[)

8$===*!&':1'<b"!EA JJqfA7 "F&:;HH[)MM"67

3 ;;HdK

3
  )FAs((s!ndC * 	

3??/00"&.."8MM-.NN/0--''(>@UVXJJK!;#""	O   NN./ 1_ I
(s   >j7j71j<c                   VP                   P                  '       d   VP                   P                  '       dW   VP                   P                  R
9   d<   VP                   P	                  W1P
                  W!P                  VP                  4       VP                  '       d1   \        P                  ! VP                   \        P                  V4      pVP                  pVP                  VP                  : RV: R24       R	# VP                   P                  '       Ed"   VP                   '       d   VP                  RV,          4       VP                  VP                   P#                  W!P                  P                  VP
                  V4      4       VP                   '       d   VP                  R4       VP                  VP                  P                  : RVP%                  V4      : R24       VP                   P&                  '       d   VP)                  VP                  RR7       VP                  R4       R	# R	# \+        VP
                  RVP                   ,          4       R	# )r  r  r  r   r  Tr  r  2Cannot convert Python object argument to type '%s'N)r  r,  )r  r  r  rp   convert_to_basetyper9   r  rf  r  r
   typecastr   r:  rU   r  from_py_functionr  from_py_call_coder  r2  r6  r   )r   r?  r   rZ   r:  s   &&&& r4   rw  &DefNodeWrapper.generate_arg_assignmentR  s   88xx'''CHHMM=M,M,,T77D//SVScScd~~~!**388Z5N5NPTUIIEJJU[[$78xx(((;;;JJ{T12

38855))//377D: ;;;;JJz*JJ		88> @ A xx222;;CIIPT;UJJsO  cggSVYV^V^^_r3   c                    V P                   '       d   V P                   P                  P                  '       d   ^ V P                   P                  n        VP	                  V P                   P                  P
                  : RV P                   P                  P
                  : RV P                  4       : R24       VP                  V P                   P                  4       V P                  '       Ed   ^ V P                  P                  n        V^ 8X  d   V P                  P                  '       d   Q hVP                  \        P                  \        4       VP	                  V P                  P                  P
                  : R\        P                  : R24       R# VP	                  V P                  P                  P
                   RV P                  P                   R\        P                   RV R\        P                    R2
4       VP	                  R	V P                  P                  P"                  P%                  V P                  P                  P
                  4       R
24       V P                   '       d&   VP'                  V P                   P                  4       VP)                  4        VP	                  RV P                  4        R24       VP	                  R4       VP                  V P                  P                  4       R# R# )r   z = PyDict_New(); if (unlikely(!z
)) return r  r  z = __Pyx_ArgsSlice_r  r   r  rH  )) {rE  r  N)r  r:  r  r7  rU   r  rM  rP  r  rq  r  r-  r	   r  r   r-  r  r  nullcheck_stringr3  re  )r   r  rZ   s   &&&r4   ro  )DefNodeWrapper.generate_stararg_init_codem  s5   !2!2!8!8!@!@!@67D##3JJ!!''--!!''--  "$ %  1 1 7 78===23DMM/"a'  >>66666 1 1>B

)<)<)B)BFDUDUVW
 

}}**0011DT^^E[E[D\\]((),?+@6CUCUBV
 

$T]]%8%8%=%=%N%Nt}}ObObOhOh%i$jjopr$$$--d.?.?.E.EF002

WT%5%5%7$8:;

3##DMM$7$781 r3   c                   \        V4      pVP                  R VRP                  RV,          4      3,          4       V P                  P                  '       di   VP                  RV P                  P                  : R\
        P                  : RV P                  P                  : R\
        P                  : R2	4       R# R# )	zPyObject* values[%d] = {%s};r[  r?  struct z *z$ = __Pyx_CyFunction_Defaults(struct r   r  N)rM   rU   r   r  r  r	   dynamic_args_cnamer/  )r   rW   rZ   r4  max_argss   &&&& r4   rs  2DefNodeWrapper.generate_argument_values_setup_code  s    t9 	6chhs8|,:. . 	/ ;;&&&JJ++V-F-F++V->->@ A 'r3   c                   \        V4       F|  w  r4VP                  '       g   K  VP                  P                  '       g   K7  VP	                  V4      pVP                  R V RV RVP                  P                  V4       R24       K~  	  R# )zif (!values[z
]) values[z] = __Pyx_NewRef(r  N)r  r  r  r  r  rU   as_pyobject)r   rW   rZ   r5  r?  r-  s   &&&   r4   rv  9DefNodeWrapper.generate_argument_defaults_assignment_code  sn    oFA{{{sxx333 # @ @ F

\!Jqc9J388K_K_`mKnJooqrs &r3   c           	         V P                   '       g   R # \        P                  pVP                  RV RV RV R24       VP                  RV R24       VP                  R4       R # )Nzfor (Py_ssize_t rK  z5 < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++r,  zPy_XDECREF(values[z]);r  )r0  r	   quick_temp_cnamerU   )r   rZ   loop_vars   && r4   r  4DefNodeWrapper.generate_argument_values_cleanup_code  sm    (((**

%hZtH:=rs{r|  }A  B  	C

'z56

3r3   c                   ^ pV F4  p	V	P                   '       g   K  V	P                  '       d   K+  V^,          pK6  	  VP                  R\        P                  ,          4       V P
                  '       d   VP                  R4       \        V^,
          V^,
          R4       F  p
VP                  RV
^,           R R24       VP                  RV
 RV P                  P                   R\        P                   R	V
 R
2	4       VP                  RV
 RVP                  V P                  4       24       VP                  R4       K  	  V^ 8  d   VP                  RVR R24       \        V^,
          RR4       Fs  p
VP                  RV
 RV P                  P                   R\        P                   R	V
 R
2	4       VP                  RV
 RVP                  V P                  4       24       Ku  	  VP                  R4       \        V^,
          RR4       F1  p
VP                  RV
^,           R R24       VP                  R4       K3  	  VP                  R4       V^ 8X  d   VP                  R4       MVP                  V4       V P
                  '       g#   VP                  R4       VP                  V4       VP                  R4       R# )r   switch (%s) {re  rg  rh  r   r`  ra  r  r   r  rb  rc  rf  r   rj  ri  rk  r  Nr   )r  r  rU   r	   r  r  r4  rq  r-  r  r  r9   r  rE  )r   r  r  r  r  r  ry  rZ   num_required_posonly_argsr?  r5  s   &&&&&&&&   r4   rt  .DefNodeWrapper.generate_posargs_unpacking_code  sm    %&!C|||CKKK)Q.) 
 	

?V%7%778===JJz"*1,.G.I2NAJJqs2ha()JJ#4T^^5K5K4LAfN_N_M``bcdbeeghiJJLQCtTXTcTcdhdldlTmSnopJJ,-	 O
 %q(HHu6r:"=>4Q6B?

WQC'89O9O8PPQRXRcRcQddfghfiiklm

PQRPSSWX\XgXghlhphpXqWrst @ JJx 02B;AJJqs2ha()JJ,- < 	$)JJx  MM./}}}HH[!MM./

3r3   c                   ^ pV F   pVP                   '       g   K  V^,          pK"  	  V^ 8  d:   VP                  R\        P                  V\        P                  V3,          4       M-V^ 8  d'   VP                  R\        P                  ,          4       V^ 8X  d   RpM7V P                  '       d$   W,
          pVP                  RV RV R24       RpMRp^ Tu;8  d   \        V4      8  d
   M MR	V 2pMR
pV P                  P                  4       p	VP                  P                  \        P                  ! RR4      4       TP                  V P                  R\        P                   R\        P                   R\        P                    RV P"                  '       d!   V P"                  P$                  P&                  MR RV RV R\        P(                   RV	 RV P"                  RJR R24       R# )r   zBconst Py_ssize_t kwd_pos_args = (unlikely(%s < %d)) ? 0 : %s - %d;z#const Py_ssize_t kwd_pos_args = %s;r?  z1const Py_ssize_t used_pos_args = (kwd_pos_args < z) ? kwd_pos_args : r  used_pos_argskwd_pos_argsz	values + r  ParseKeywordsr  z__Pyx_ParseKeywords(r   Nr   r  )r  rU   r	   r  r  rM   rp   re  r&  r  r   r  put_error_if_negr9   r  r&  rr  r  r:  r  rO  )
r   r  r  rZ   r|  r?  pos_arg_count
max_kwargsvalues_arrayrx  s
   &&&&      r4   ru  .DefNodeWrapper.generate_keyword_unpacking_code  s    C|||!Q&!  q  JJ[""$5""$5_   !1$JJ<v?Q?QQR!#M]]] -@JJJJ:,Vijtiuuvwx+M*M 03x=0&'8&9:L#L))779))##O5JK	MHH"  !F$9$9#:"V=S=S<TTV040A0A0At  &&,,sK2nBoR$$%Rr  ,a0	
r3   c                v    V P                    F(  pVP                  '       g   K  V P                  W!4       K*  	  R # r   )rW   ri  generate_arg_conversionr  s   && r4   r7  0DefNodeWrapper.generate_argument_conversion_code  s,     99C###,,S7 r3   c                x   VP                   pVP                  pVP                  '       d|   VP                  '       d$   VP	                  R VP
                  ,          4       M"VP	                  RVP
                  ,          4       V P                  W4       VP	                  R4       R# VP                  '       d   V P                  W4       R# VP                  V4      '       d:   VP	                  VP                  P                  : RVP
                  : R24       R# \        VP                  RV: RV: R24       R# )	r   zassert(%s); {r  r  r  z Cannot convert 1 argument from 'z' to 'r  N)ry  r  r  r  rU   rl  %generate_arg_conversion_from_pyobject#generate_arg_conversion_to_pyobjectr)  r:  r  r   r9   )r   r?  rZ   old_typenew_types   &&&  r4   r  &DefNodeWrapper.generate_arg_conversion  s    <<88{{{

;67

?S]]:;66sAJJsO!!!44S?''11

#--HIcggPXZbcdr3   c                   VP                   pVP                  '       dN   VP                  VP                  VP                  VP
                  P                  VP                  V4      4       R# \        VP                  R V,          4       R# )r  N)	r  r  rU   r  rl  r:  r  r9   r   )r   r?  rZ   r  s   &&& r4   r  4DefNodeWrapper.generate_arg_conversion_from_pyobject-  sc    88$$$JJx11			  #''ORZZ[r3   c                   VP                   pVP                  pV'       d   VP                  VP                  P                  : R V: RVP
                  : RVP                  VP                  P                  VP                  4      : 24       VP                  VP                  4       R# \        VP                  RV,          4       R# )r  r  r  z5Cannot convert argument of type '%s' to Python objectN)
ry  to_py_functionrU   r:  r  rl  r  r9   rP  r   )r   r?  rZ   r  r_   s   &&&  r4   r  2DefNodeWrapper.generate_arg_conversion_to_pyobject:  s    <<&&JJ		''		A	C D
 		*#''RU]]^r3   c                   V P                    F  pVP                  '       d   V P                  W!4       K(  VP                  '       d   K<  VP                  P
                  '       g;   VP                  P                  '       g   VP                  P                  '       g   K  V P                  W!4       K  	  V P                  P                  P                  '       d   \        \        \        V P                   4      V P                  P!                  4       4      4       F  pVP#                  R VR R24       VP#                  RV P                  P                  P$                  P'                  4        RV P                  P!                  4        RVR RVP)                  V P*                  4       24       VP#                  R4       K  	  R# R# )zif (unlikely(unused_arg_r    != Py_None)) {z_PyErr_Format(PyExc_TypeError, "%.200s() takes %zd arguments but %zd were given", (const char*) z, (Py_ssize_t) r  r  N)rW   r:  r  r  r  r  r  r2  r  r  r:  ra  reversedr4  rM   rq  r  rU   rT  re  r  r9   )r   rZ   r?  r  s   &&  r4   r>  +DefNodeWrapper.generate_argument_type_testsG  sS    99C"""++C6___#((*>*>*>*-((*<*<*<*-((*E*E*E,,S7  ;;'''eC		NDNN4U4U4WXY 

5aU:JKL

&&*kk&7&7&F&F&Z&Z&\%] ^%%)^^%F%F%H$I J%%&qE$//$((34	6 

3 Z (r3   c                .    V P                   P                  # r   )rq  rM  r   s   &r4   rM  DefNodeWrapper.error_valueb  s    ~~)))r3   )r0  r|  rV  rU  rX  rW  r  rq  r6   )$r+   r,   r-   r.   defnoder  r0  r   r   r  r  r  r  r'  r  r  r2  r=  r1  r.  r/  rw  ro  rs  rv  r  rt  ru  r7  r  r  r  r>  rM  r2   rv   r   s   @r4   rr  rr    s      GF 	31,/36U@nQ$fQ2M"^21c4Jh0T`6!9FAt&P;
z8e&\_ 6* *r3   rr  c                      a a ] tR tRt oRtRtRtRt]P                  R.,           t	V 3R lt
V 3R ltR tV 3R	 ltR
tVtV ;t# )GeneratorDefNodeif  TF	Generatorgbodyc                L   < \        V. R R7      VR&   \        SV `  ! V3/ VB  R# )T)rC  r  r   N)rB  rm   r   r   r9   r   rP   s   &&,r4   r   GeneratorDefNode.__init__s  s'    %c4Hv''r3   c                   < \         SV `  V4       V P                  V P                  n        V P                  P                  V4       R # r   )rm   r   r  r  r   r   rP   s   &&r4   r   %GeneratorDefNode.analyse_declarationsx  s4    $S)!%!1!1



'',r3   c                   V P                   P                  P                  pVP                  V P                  4      pVP                  V P
                  4      pVP                  V P                  4      pV P                  P                  V4       VP                  R 4       VP                  RV P                   RV RV P                  P                  4        R\        P                   RV RV RV RVP                  RV P                  4       24       VP!                  \        P                  \"        4       V P$                  '       dV   RpVP                  V: R\        P&                  : R	24       VP)                  V\"        4       VP+                  V\"        4       VP-                  4        VP                  R
4       VP                  R4       R# )rZ  z#__pyx_CoroutineObject *gen = __Pyx_z_New((__pyx_coroutine_body_t) r   , (PyObject *) r  genzgen->classobjz  = __Pyx_CyFunction_GetClassObj(r  zreturn (PyObject *) gen;r  N)r  r:  r  rq  rp   qualnamemodule_namer#  r$  rU   gen_type_namer%  r	   r  r  r9   r_  r   r  r/  r-  r  re  )r   r   rZ   
body_cnamerp   r  r  classobj_cnames   &&&     r4   r  'GeneratorDefNode.generate_function_body}  s}   ZZ%%00
%%dii0))$--8,,T-=-=>--d3

3

1$2D2D1E F((2| 4  **,- .#334 5vRzK=$))%:;=	
 	..?!!!,NJJ 1 13 4OONN;^^<((*

-.

3r3   c                   < VP                  \        P                  ! V P                  R 4      4       V P                  P                  VRR7       \        SV `  W4       V P                  P                  W4       R# )Coroutine.cT)protoN)r  r   r  r  r  r  rm   r'  )r   r   rZ   rP   s   &&&r4   r'  .GeneratorDefNode.generate_function_definitions  sZ    [44T5G5GWX

++D+=-c8

00;r3   r*   )r+   r,   r-   r.   r  is_iterable_coroutiner  r  r  r   r   r   r  r'  r2   rv   rw   rx   s   @@r4   r  r  f  sG      L!MM%%	1K(
-
:< <r3   r  c                       ] tR tRtRtRtRtR# )AsyncDefNodei  	CoroutineTr*   N)r+   r,   r-   r.   r  r  r2   r*   r3   r4   r  r    s    MLr3   r  c                       ] tR tRtRtRtRtR# )IterableAsyncDefNodei  IterableCoroutineTr*   N)r+   r,   r-   r.   r  r  r2   r*   r3   r4   r  r    s    'M r3   r  c                       ] tR tRtRtRtRtR# )AsyncGenNodei  AsyncGenTr*   N)r+   r,   r-   r.   r  r  r2   r*   r3   r4   r  r    s    MKr3   r  c                   f   a a ] tR tRt oRtRtRtRtRtRV 3R llt	R t
R tRR ltR	 tR
tVtV ;t# )GeneratorBodyDefNodei  TFNc                6   < \         SV `  WVVVR . R R R7	       R # )N)	r9   r   rp   is_coroutine_bodyis_async_gen_bodyrC   rW   r  r  )rm   r   )r   r9   rp   r   r  r  rP   s   &&&&&&r4   r   GeneratorBodyDefNode.__init__  s*    T//24	 	 	Ar3   c                <   VP                  VP                  4      pVP                  R 4      p\        P                  V,           V,           pVP	                  R\
        V P                  VRR7      pWEn        \        V P                  4      Vn
        RVn        WPn        R# )	generatorNr  )r  r  T)r  r  r	   genbody_prefixrI  r   r9   r  r   rp   rT  rP  r:  )r   r   r  rp   r  r:  s   &&    r4   declare_generator_body+GeneratorBodyDefNode.declare_generator_body  s    S--.{{;'%%.5ndhh&+	   C ,TYY7 

r3   c                J    V P                  V4       V P                  V4       R # r   )rm  r  r   s   &&r4   r   )GeneratorBodyDefNode.analyse_declarations  s    ##C(##C(r3   c           	        R V P                   P                  : R\        P                  : R\        P                  : R\        P
                  : R2	pV'       d   VP                  RV,          4       R# VP                  RV,          4       R# )zstatic PyObject *z(__pyx_CoroutineObject *z, CYTHON_UNUSED PyThreadState *r  r  z%s; /* proto */z%s /* generator body */
{N)r:  r  r	   generator_cnamelocal_tstate_cnamesent_value_cnamerU   )r   rZ   r  r#  s   &&& r4   r  -GeneratorBodyDefNode.generate_function_header  sZ    JJ!!""%%##	%
 JJ(612JJ3f<=r3   c           
        V P                   pV P                  P                  W24       VP                  V4       VP	                  4       Vn        VP                  V P                  4       V P                  W24       VP                  R 4       V P                  V4       VP                  4       pVP                  R\        P                  ,          4       VP                  4       pVP                  4        TP                  V P                   P"                  ;'       g    V P                   P$                  4       VP'                  4       pV'       d$   VP)                  RR7       RVP*                  n        V P.                  P1                  V4       VP*                  P3                  VP4                  P6                  P8                  4       VP                  4       pVP	                  R4      pVP;                  V4       VP=                  V4       V'       dQ   VP*                  P>                  '       g   Q hVPA                  V P                   P$                  V P                  RR7       V PB                  '       d;   VP                  VPE                  \        PF                  V P                  4      4       MVP                  R\        PF                   R24       V PH                  '       d   Rp	MV PJ                  '       d   Rp	MR	p	VP                  R\        PF                   R
V	 R24       VP                  VPM                  V P                  4      4       VP                  R4       V PB                  '       d   V PN                  e   V PN                  p
V
\P        PR                  J d   RpM@V
\P        PT                  J d   RpM)V
\P        PV                  J d   RpM\Y        RV
,          4      hVP                  \        P                  : RV: RVPE                  \        P                  V P                  4      : 24       VP[                  \        P                  \\        4       V P_                  W4       VP4                  P6                  P8                  P`                  '       d   VP                  VP4                  P6                  Pc                  \        Pd                  4      : RVP4                  P6                  Pg                  R\        Ph                  ,          4      : R24       VP                  R\        Pd                  ,          4       V'       dK   V P                  Pj                  '       g/   RVP*                  n        VPm                  RV P                  R7       VP                  V P                  4       VP                  R 4       VP                  R4       V PB                  '       gA   V P                  Pj                  '       g%   VPo                  \        P                  \\        4       VPq                  VPr                  4      '       Ed   V P                  Pj                  '       g   VPu                  VPv                  4       VP=                  VPr                  4       V PB                  '       d3   V PN                  e%   VPy                  \        P                  \\        4       VP*                  P{                  4        F  w  rVP}                  W4       K  	  VP                  R4       V'       d   VP                  4        \        P                  VP                  P                  9   d\   VP                  P                  \        P                  ! RR4      4       VP                  R\        V PH                  4      ,          4       VP                  V P                   P$                  4       V'       d   VP                  V P                  4       VP                  R4       VP=                  VPv                  4       VP                  \        P                  \\        4       V'       d   VP                  4        VP                  R4       VP                  R \        Ph                  ,          4       VP                  R!4       VP                  R"\        Ph                  ,          4       VP                  R#\        Ph                  ,          4       VP                  4        VP                  R$\        P                  ,          4       VP                  R4       VP                  VP*                  4       VP                  R%\        Ph                  ,          4       VP                  R&V,          4       VP                   F  w  rVP                  R'W3,          4       K   	  VP                  R(4       V'       dP   VPA                  V P                   P$                  V P                  RR7       VPm                  RV P                  R7       VP                  4        VP                  R)4       VP                  R4       VP                  4        R# )*r   zPyObject *%s = NULL;T)r  	first_runr  r  zasync generator	coroutiner  zQ)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started z");r  NzPyList_New(0)zPySet_New(NULL)zPyDict_New()z)invalid type of inlined comprehension: %sr  rM  z%s->closurer  zCYTHON_MAYBE_UNUSED_VAR(%s);Fr  r8   r  zif (__Pyx_PyErr_Occurred()) {pep479r  z*__Pyx_Generator_Replace_StopIteration(%d);z#if !CYTHON_USE_EXC_INFO_STACKz+__Pyx_Coroutine_ResetAndClearException(%s);r  z%s->resume_label = -1;z%__Pyx_Coroutine_clear((PyObject*)%s);r  zswitch (%s->resume_label) {zcase 0: goto %s;zcase %d: goto %s;z2default: /* CPython raises the right error here */zreturn NULL;)Qr  r   r'  r  r  r  rS  r9   r;  rU   r  rQ   r	   r  rc  rd  r:  rp   rT  r  r"  r  r1  r#  r$  init_closure_tempsr  r  rF  	use_labelrG  r  r0  
is_inlinedr  r  r  r  r  inlined_comprehension_typer   	list_typeset_type	dict_typer   r  r   r  rF  r  r  r  r  r  rB  rA  rC  rD  rE  rF  put_xdecref_clearrH  rI  rN  r   generator_stopr  future_directivesr&  r  r   r  rn  rS  rO  r`  rb  re  rf  yield_labelsrg  )r   r   rZ   r  closure_init_coderp  rm  resume_codefirst_run_label	coro_typetarget_type	comp_initr  r  r5  labels   &&&             r4   r'  2GeneratorBodyDefNode.generate_function_definitions  s|    			//; 	t$/3~~/?, 	dhh++D7

2%%d+ 002

)F,?,??@//1))+''

(T(T4::;T;TU//#333F'+DNN$--d3 	))$*:*:*?*?*E*EF**,..5''>>+++++  !:!:DHHSW X???JJt..v/F/FQRJJv'>'>&??OPQ%%%-	''''	'	JJ 7 78 9cclbmmpt JJttxx01JJsO ???t>>J99Kg///+	 0 00-	 1 11*	#?+MO OJJ##Y''(;(;TXXFH I OOF//@ 	##C.  &&222##  %%66v7M7MN  %%//060F0F1G H%I J
 JJ58N8NNO499222',DNN$!!)!: 	dhh

2

-. tyy'>'>'> $$V%8%8.I ??4++,,99***d//0NN4++,4#B#B#N&&v':':NK#~~??A  -  BJJ67446$$(E(EE  11+2I2I(Ta2bc

G$tOeOeJffg""4::#<#<=%%dhh/JJsO 	t(()&--~>! 	

34

@6CYCYYZ

8

+f.D.DDE

:V=S=SST((*

<&"5"556

3 	..t~~>7--/ 	0 	,>?))HA1QJ>? *NO''

(A(A488Z^'_(((A//1.)#r3   rM  )NNNFFr  )r+   r,   r-   r.   r  r  r  r  r   r   r  r   r  r'  r2   rv   rw   rx   s   @@r4   r  r    sE      J!%A)	>_  _ r3   r  c                   6   a  ] tR tRt o R.tRtR tR tRtV t	R# )r  i  r   Nc                   VP                   V n        V P                  P                  '       d   ^ pM^p^RIHp VP                  V P                  \        4      V n	        TP                  V P                  V P                  V P                  VR  Uu. uF*  pVP                  V P                  VP                  R7      NK,  	  upR7      pVP                  P                  '       g   VP                  P                  '       dJ   \!        V P                  \#        V P                  VR7      \%        V P                  RR7      .R7      V n        M\%        V P                  VR7      V n        V P&                  P)                  V4      V n        V # u upi )r   r  Nr  r  rW   )exprr   rZ  )r3  rW   r  r1  r   r  RawCNameExprNoder9   r   	func_noder  r  rp   r%  r  is_returncoderB  ExprStatNoder  r   r   )r   r   	first_argr  r?  	call_nodes   &&    r4   r   %OverrideCheckNode.analyse_expressions  s*   OO	<<'''II"33DHHnM,,HHt~~!YYyz242c $$TXXCHH$=24 - 5	 ??"""coo&C&C&C$TXXTXXI6txxt466 7DI 'txxyADIII11#6	4s   0Fc                `   V P                   P                  '       d!   V P                   P                  P                  MV P                   P                  pVP                  VP                  4      pV P                   P
                  '       d   R \        P                  ,          pM$R V P                  ^ ,          P                  ,          pVP                  R4       VP                  R\        P                  ,          4       VP                  R4       V P                   P
                  '       g6   V P                   P                  P                  P                  R4      '       d   VP                  R4       MVP                  R4       VP                  R4       VP                  V P                   P                  P                  P                  P                   4      pVP                  RV R	V R
24       VP                  RV R24       VP                  R4       VP                  RV RV R24       VP                  R4       VP                  R4       VP                  R4       VP"                  P%                  \&        P(                  ! RR4      4       VP                  R\        P*                  : R\        P,                  : R24       VP                  RV: R\        P*                  : R\        P,                  : R24       VP                  R\        P.                  : RV: R24       VP                  R4       VP0                  P3                  \4        RR7      pV P6                  P9                  V4       VP"                  P%                  \&        P(                  ! R R4      4       VP                  V: R!V: RV: R"VP;                  W`P<                  4      : 24       VP?                  V\4        4       VP                  R#V: R$VP@                  : R%24       V PB                  PE                  V4       VP                  R&4       VP                  R4       VP                  \        P*                  : RV: R24       VP                  \        P,                  : R'V: R24       VP                  R(\        P.                  : R)\        P*                  : R%24       VP                  \        P*                  : R*\        P,                  : R24       VP                  R&4       VP                  R4       VPG                  V\H        P4                  4       VP0                  PK                  V4       VP                  R4       VP                  R&4       VP                  R4       VP                  R&4       R+# ),r  z /* Check if called by wrapper */zif (unlikely(%s)) ;z#/* Check if overridden in Python */r   zelse {z	else if (z#if !CYTHON_USE_TYPE_SLOTSzunlikely(Py_TYPE(z) != z &&z __Pyx_PyType_HasFeature(Py_TYPE(z), Py_TPFLAGS_HAVE_GC))r  z9)->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(z3), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))r  r,  zQ#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTSPyDictVersioningObjectHandling.czstatic PY_UINT64_T z = __PYX_DICT_VERSION_INIT, z = __PYX_DICT_VERSION_INIT;z0if (unlikely(!__Pyx_object_dict_version_matches(r   z))) {zPY_UINT64_T z = __Pyx_get_tp_dict_version(r  Tr  PyObjectGetAttrStrz = __Pyx_PyObject_GetAttrStr(r  zif (!__Pyx_IsSameCFunction(z, (void(*)(void)) r  r  z! = __Pyx_get_object_dict_version(r   != r  N)&r  r  r:  rq  rp   r1  r	   module_cnamerW   r  rU   r  rF  r  r  r  r+  r&  r  r   r  tp_dict_version_tempobj_dict_version_temptype_dict_guard_tempr  r  r   r  	set_cnamer  r9   r  r  r   r,  r  r
   r  )r   rZ   method_entryinterned_attr_cnamer  r+  func_node_temps   &&     r4   r,  )OverrideCheckNode.generate_execution_code  s*   ;?<<;U;U;Ut||1177[_[g[g[m[m"44\5F5FG <<''')F,?,??H)DIIaL,>,>>H

56

(6+E+EEF

89<<'''4<<+=+=+C+C+O+OPZ+[+[JJx JJ{#JJ34
 !55dll6H6H6N6N6Z6Z6h6hiMJJ*8*E(/. /JJ9(CZ[\JJwJJ*8* 5::BCvx yJJx JJu

fg))##$68JK	M 	

'')E)EG 	H

f1163O3OQ 	R

''3 	4

855nQU5V  0))##$8:LM	O

H&9##NHH=? 	@ 	7

n^j^u^uvw		))$/

3
 	

fg

''3 	4

(((4 	5 	

'')D)DF 	G

'')E)EG 	H

3

8nj.G.GH##N3

fg

3

8

3r3   )rW   r   r  )
r+   r,   r-   r.   r   r   r   r,  r2   rv   r   s   @r4   r  r    s$      (KD*X Xr3   r  c                       ] tR tRtRtR# )ClassDefNodei  r*   Nr+   r,   r-   r.   r2   r*   r3   r4   r+  r+        r3   r+  c                      a  ] tR tRt o . ROtRtRtRtRtRt	Rt
RtRR ltR tR tR t]P"                  ! ]P$                  ]P&                  ! R]P$                  R4      .4      tR	 tR
 tR tRtV tR# )PyClassDefNodei  rq   NFc	           
     L   \         P                  W4       W n        W@n        WPn        W`n        W0n        ^RIHp	 V P                  '       dp   \        P                  '       dZ   \        V P                  V P                  4      pV	P                  WR7      p
V	P                  \        R4      \         VR7      V n        MRp
V'       * pV'       d   RpRV n        VP&                  '       d   VP(                  '       d   \+        \-        VP(                  4      4      RRR1,           Fd  w  rVP.                  P0                  R8X  g   K"  V P2                  e   \5        VP                  R	4       VP0                  V n        VP(                  V Kf  	  Wpn        M'V P2                  f   Q hMV	P9                  V4      V n        V'       g7   V P                  '       g%   V P6                  '       g   V P2                  '       d   V P2                  f   V'       d    VP&                  '       g   V P6                  pMRpV'       g:   V P                  P:                  '       d   V P                  P<                  '       g   MV	P?                  WR
7      V n        RpMRpV	PA                  WWR7      V n!        V	PE                  WW
VVVR7      V n#        M0V	PI                  V. R7      V n!        V	PK                  WW
R7      V n#        V	P                  WR7      V n&        V	PO                  V P                  4      V n(        R# )rG   r  r  r   )rp   r  r9   NFT	metaclassz2keyword argument 'metaclass' passed multiple times)class_def_node)rp   rC   r2  )rp   r2  rC   calculate_metaclassallow_py2_metaclass
force_typer  )rp   r2  rC   r  r   ))r]  r   rp   rC   r   r<  rq   r   r  r   r8  rD   r9   UnicodeNoder  r   r   doc_nodeis_py3_style_classis_dict_literalr  r   r  r   r   r1  r   mkw	ProxyNodeis_sequence_constructorrW   PyClassMetaclassNodePyClassNamespaceNoderk   Py3ClassNodeclassobjDictNode	ClassNoder  ClassCellInjectorNode
class_cell)r   r9   rp   rq   rC   r   r<  r  force_py3_semanticsr  r8  r4  r5  r   mkdictneeds_metaclass_calculations   &&&&&&&&&       r4   r   PyClassDefNode.__init__   s   $$		$
888*** 4884C ,,S,<H%..M)4LSagj.kDMH"55"'&*D#+++///#'	,2N2N(O#PQUSUQU#V#V88>>[8#~~9 %dhh0d e .2ZZDN , < <Q ? $W  ,H>>555 %..|<$***DNNN~~%(D(D(D!XXF!F

::: JJOOO%.%C%C &D &2DN.3+.2+!66H 7 CDI%22t$?$7.	 3 DM "**3*CDI%//t 0 CDM  (((8#99$((Cr3   c                `   V P                   '       d#   \        V P                  P                  R4       R# ^RIHp \        V P                  RRV P                  V P                  ;'       g    VP                  V P                  . R7      V P                  V P                  RV P                  R7	      # )z?
Return this node as if it were declared as an extension class
z7Python3 style class could not be represented as C classNr  r  rW   F)r  r  
class_namerq   r<  r   r  rC   )r9  r   rA  r9   r   r  CClassDefNoderp   rq   r  r<  r   rC   r   r  s   & r4   	as_cclassPyClassDefNode.as_cclassi  s     """$--##%^_TXX(1)-(,		#'::#W#W1D1DTXXTV1D1W(,"&))$)!%+ 	+r3   c                    TpVP                   '       g   VP                  '       d   VP                  pK2  \        V P                  VR 7      ;q0n        V# ))rp   r/  )r  r  r/  r   rp   rF  )r   r   r  rn  s   &&  r4   create_scopePyClassDefNode.create_scope|  sC    $$$(=(=(=##D(diiTJJzr3   c                D   V P                   ;r#V P                  '       dK   ^RIHp V P                  RRR1,           F#  pV! VP                  VP
                  V.R7      pK%  	  RV n        W0n        V P                  '       d   V P                  P                  V4       V P                  '       d   V P                  P                  V4       V P                  P                  V4       V P                  P                  V4       V P                  V4      pVP                  Vn        V P                  P                  P                  Vn        V P"                  '       d   V P"                  P                  V4       V P$                  P                  V4       VP'                  V4       R# )rG   )r  Nr  r   )rA  r<  r  r  r9   r  class_resultrq   r   r;  r  analyse_target_declarationrR  r  r:  r  class_obj_cnamer8  r   r  )r   r   unwrapped_class_resultrU  r  r  rn  s   &&     r4   r   #PyClassDefNode.analyse_declarations  s-   04=???1!__TrT22	-MM&00& ) 3
 #DO(:::JJ++C0888HH))#...s3..s3  %..#{{0066===MM44T:		&&t,2248r3   c           	        V P                   '       d   V P                   P                  '       d%   \        V P                   P                  4      ^ 8X  gl   ^RIHpHp V P                   P                  V4      pV! VP                  RV P                  \        P                  ! RR4      V! V4      .R7      V n         W@n        V P                   '       d!   V P                   P                  V4      V n         V P                  '       d!   V P                  P                  V4      V n        V P                  '       d!   V P                  P                  V4      V n        V P                  P                  V4      V n        V P                   P                  V4      V n        V P"                  pV P$                  P                  V4      V n        V P&                  P)                  WP*                  4      V n        V P,                  P                  V4      V n        V # )r   )PythonCapiCallNode	CloneNode__Pyx_PEP560_update_basesPy3UpdateBasesr  )rT  r  utility_coderW   )rq   r=  rM   rW   r  r[  r\  r   r9   update_bases_functyper   r  
orig_basesr;  r1  rk   rU  rF  r   r  analyse_target_expressionrA  rE  )r   r   r[  r\  ra  rn  s   &&    r4   r   "PyClassDefNode.analyse_expressions  sh   :::tzzAAAc$**//FZ^_F_@77<J+JNN944(445EGYZ
+,	.DJ
 )O:::77<DJ888xx33C8DH>>>!^^??DDNII11#6	 --AA#FzzII11$7	kk;;CO//==dCr3   c                    V P                  V P                  V4       V P                  P                  V P                  V4       R # r   )r?  rF  r   r'  r_  s   &&&r4   r'  ,PyClassDefNode.generate_function_definitions  s.    ((T:		//

DAr3   c           	        VP                  V P                  4       VP                  P                  V 4       V P                  pV P
                  '       d   V P
                  P                  V4       V P                  '       d   V P                  P                  V4       V P                  '       d   V P                  P                  V4       V P                  '       d   V P                  P                  V4       V P                  P                  V4       V P
                  '       d   VP                  R V P                  P                  4       : RV P
                  P                  4       : R24       VP                  VP                  RV P                  P                  4       : RV P
                  P                  4       : R2V P                  4      4       VP                  R4       V P
                  P                  V4       V P
                  P                  V4       V P                  P                  4       ;Vn        Vn        V P$                  pVe   VP&                  '       g   RpVe   VP                  V4       V P(                  P+                  V4       V P,                  P                  V4       Ve*   VP/                  WP,                  P                  4       4       Ve#   VP                  V4       VP                  V4       V P0                  P                  4       ;Vn        Vn        V P2                  P5                  V P,                  V4       V P                  P                  V4       V P                  P                  V4       V P                  '       d7   V P                  P                  V4       V P                  P                  V4       V P                  '       d7   V P                  P                  V4       V P                  P                  V4       V P                  '       d7   V P                  P                  V4       V P                  P                  V4       VP                  P7                  4        R# )r+  r   r,  zPyDict_SetItemString(z, "__orig_bases__", r  r  N)rS  r9   pyclass_stackr  rF  ra  r  rq   r;  r1  rk   rU   r   rQ  generate_disposal_coder  namespace_cnamerW  rE  	is_activer   r,  rU  generate_injection_coderA  r  r  pop)r   rZ   rn  rE  s   &&  r4   r,  &PyClassDefNode.generate_execution_code  s
   dhh!!$'zz???OO44T::::JJ//5888HH--d3>>>NN33D9		**40???JJDJJ,=,=,?AWAWAYZ[JJ&&II$$&(>(>(@(BHH
 JJsOOO2248OO&&t,6:ii6F6F6HHt3__
!**>*>*>J!//5		))$/2248!..''..02!--d3!!$'6:mm6J6J6LLt3,,T->->E		((.		T">>>NN11$7NN%%d+888HH++D1HH%:::JJ--d3JJ!!$' r3   )rq   r   rE  rU  rA  r<  rk   rC   r8  r9  r1  r;  rp   ra  rF  r  )r8  r   rk   r1  r;  rq   rU  r  rE  r<  ra  )NNF)r+   r,   r-   r.   r   r<  rU  r9  r1  r;  r8  ra  r   rO  rR  r   r
   r.  r   r  r`  r   r'  r,  r2   rv   r   s   @r4   r/  r/    s     (GKJLI
CHJGDR+&92 '00!!##Gj.G.GN$

2B6! 6!r3   r/  c                      a  ] tR tRt o R.tRtRtRtRtRt	Rt
RtRtRt]R 4       tR tR tR tR	 tR
 tR tR t]RR l4       tR tRtV tR# )rM  i  r   NFc                ,    \        V P                  4      # r   )r   rL  r   s   &r4   punycode_class_name!CClassDefNode.punycode_class_name  s    t//r3   c                    \        V R 4      '       g[   ^RIHp V P                  '       d<   VP	                  V P
                  V. V P                  RR7      V n        V P                  # RV n        V P                  # )_buffer_defaultsr  F)need_completeN)r  r   r  buffer_defaults_noder  buffer_defaults_posrs  )r   r   r  s   && r4   r  CClassDefNode.buffer_defaults  su    t/00 ((((.(E(E,,T66"' )F ))% $$$ )-%$$$r3   c                   V P                   '       dS   V P                  R 8w  dB   V P                   P                  R4      pVP                  W P                  4      pV'       g   R# MTpVP                  V P                  V P                  ^ ^ V P                   RV P                  V P                  V P                  V P                  V P                  V P                  V P                  V4      V P                  R7      V n        V P                  '       dD   \!        V P                  P"                  4      ^8  d   RV P                  P$                  n        R# R# R# )r  rJ   N)rp   r9   r  implementingr  r  objstruct_cnametypeobj_cnamer  rG  
check_sizer+  r  shadowT)r  r  splitr  r9   declare_c_classrL  objstruct_nametypeobj_namerG  r|  r+  r  r}  r:  rq   rM   rW   r  multiple_bases)r   r   r  
home_scopes   &&  r4   rC  CClassDefNode.declare(  s   8 ;**005K11+xxHJ  J//(( //++** 005;; 0  
 :::#djjoo.2-1DJJOO* 3:r3   c                   / pV P                   '       g   V# ^RIHp . pV P                    EF
  pVP                  pRp\	        WcP
                  4      '       d   TpVP                  p\        P                  ! Wa4      pVR8X  d&   V'       d   \        VP                  R4       RVR&   K}  VR8X  dv   Rp	/ p
V'       dc   \	        WsP                  4      '       d   VP                  p	M:VP                  P                  p	VP                  pV'       d   VP                  4       p
W3W(&   K  VP!                  V4       EK  	  V'       d   \        V^ ,          P                  R4       W@n         V# )	rG   r  Nzfunctools.total_orderingz total_ordering cannot be called.Ttotal_orderingdataclasses.dataclassz8Cdef functions/classes cannot take arbitrary decorators.)r<  r   r  r  rN   CallNoder  r   'exprnode_to_known_standard_library_namer   r9   r  rW   r  r  as_python_dictr  )r   r   extra_directivesr  remaining_decoratorsoriginal_decoratorr  decorator_call
known_namerW   rX   kwds_s   &&          r4   _handle_cclass_decorators'CClassDefNode._handle_cclass_decoratorsC  sA   ##!"&//*44I "N)%7%788!*%..	 HHXJ77!.,,.PQ59 !1266!!.2J2JKK-22-==BB . ; ; #(#7#7#9D04| , ''(:;9 #2:  &q)--/ij.r3   c                D  a a SP                   '       d)   S P                  '       g   \        S P                  R 4       S P	                  S4      pRS n        S P                  '       d   RS n        SP                   F'  pVP                  S P                  8X  g   K   VS n        K)  	  S P                  fS   \        S P                  RSP                  4      S n        ^S P                  n        SP                  S P                  4       S P                  P                  '       Ed   S P                  P                  ^ ,          pVP!                  S4      pV\"        P$                  J d   SP'                  R4      P(                  pM_V\"        P*                  J d   SP'                  R4      P(                  pM/V\"        P,                  J d   SP'                  R4      P(                  pVf*   \        VP                  RS P.                  ,          4       EMiV\0        J d   RpEM[VP2                  '       gD   VP4                  '       d   VP6                  '       g    \        VP                  RV,          4       EMVP9                  4       '       g5   \        VP                  RVP                  : RS P.                  : R	24       MVP:                  '       dY   VP:                  P<                  '       d=   VP>                  '       d+   \        VP                  RV: RS P.                  : R
24       MRVP4                  '       d:   VP                  R#9   d)   \        VP                  RVP                  ,          4       MVS n        SP<                  PA                  R^ 4      ^ 8  d-   V\"        P0                  8w  d   \C        S P                  R^4       S PD                  RJpV'       d[   S P
                  '       dI   S P
                  P:                  '       g-   S P
                  PF                  PI                  VV 3R l4       R# S P                  '       dT   S PJ                  R8w  dC   S P                  PM                  R4      pSPO                  VS P                  4      p	V	'       g   R# MSp	S PJ                  R8X  dq   S P                  R8X  d`   S P.                  \P        PR                  9   dA   SPT                  R,          R8w  d)   \C        S P                  RS P.                  ,          ^4       T	PW                  S P.                  S P                  T;'       d    S PX                  T;'       d    S PX                  '       * S P                  S P
                  S P                  S PZ                  S P\                  S PJ                  S P^                  S P`                  S Pc                  S4      S Pd                  R7      S n3        S P                  '       d@   \i        S P                  P                  4      ^8  d   RS Pf                  P(                  n5        S Pd                  '       d+   S Pf                  V	P'                  S P.                  4      n6        V	SJdC   S PJ                  R8X  d2   SPo                  S P.                  S Pf                  S P                  4       S Pf                  P(                  P:                  ;S n        p
V
e   V'       d<   SP<                  Pq                  4       V
n        V
P<                  Ps                  V4       MSP<                  V
n        RV
P<                  9   ds   RpV
P<                  R,          pV'       dE   V^,          pVPA                  R4      pT;'       d!    VPt                  ;'       d    VPv                  pV'       d   RMRV
n<        S Pz                  '       d<   \|        P~                  '       d&   \        S P                  S Pz                  4      V
n=        V'       d   S PD                  P                  V
4       S P:                  P                  R4      pV'       d   VP                  '       dv   V
P                  '       gd   V
P                  '       gR   S P:                  P                  R4      VnG        S P:                  P                  RVPz                  VP                  4       S PX                  '       d	   ^V
nD        M^V
nE        \i        S P                  P                  4      ^8  Ed0   V'       d   S PX                  '       d2   \        S P                  P                  ^,          P                  R4       S P                  P                  R,           F2  pVP!                  S4      '       g   K  \        VP                  R4       K4  	  ^ S Pf                  P(                  nI        ^RIJHKp VP                  S P                  VP                  S P                  S P.                  R 7      S P                  VP                  S P                  . R!7      .R"7      S nO        MS P
                  '       dV   S P
                  P                  ;'       g    S P
                  P                  S Pf                  P(                  nI        RS nO        M"^S Pf                  P(                  nI        RS nO        SP                  S Pf                  4       S Pf                  P(                  PF                   F
  pV! 4        K  	  R# )$zTObject struct name specification required for C class defined in 'extern from' blockNr  r,  r  z+First base of '%s' is not an extension typez'%s' is not an extension typezBase class 'z' of type 'z' is incompletez
' is finalzGinheritance from PyVarObject types like '%s' is not currently supportedfreelistzIfreelists cannot be used on subtypes, only the base class can manage themc                  &   < SP                  S 4      # r   )r   )r   r   s   r4   <lambda>4CClassDefNode.analyse_declarations.<locals>.<lambda>  s    @Y@YZ]@^r3   r  rJ   __builtin__:N   Nzcpython.z %s already a builtin Cython type)rp   r9   r  ry  r  r  rz  r{  r|  r  rG  r+  r  r}  Tr  Ffrozenr   __dict__getterz'Only declare first base in declaration.rK   z+Only one extension type base class allowed.r  r  r6  rK  )rp  bytes)Rrl  r  r   r9   r  r  r  modulecimported_modulesrp   r   r  has_extern_classadd_imported_modulerq   rW   r  r
   rJ  r  r  c_float_typer  rL  r   rz  r  rz  r  rF  r  r  r   r   r   defered_declarationsr  r  r~  r  r   builtin_typesrT  r  r  r  r|  rG  r+  r  r}  r:  rM   r  r  add_imported_entryr   r   r  r   is_c_dataclass_scoperC   r   r8  rD   r   r  is_variabledefinedimplementedmangle_internalgetter_cnamedeclare_property
early_initr   r  r  IdentifierStringNoderB  type_init_argsis_externalallocate_vtable_names)r   r   r  r  r  r  base_class_scopehas_bodyr  r  rF  	is_frozendataclass_configdecorator_kwargsfrozen_flag
dict_entry
other_baser  thunks   ff                 r4   r   "CClassDefNode.analyse_declarationsn  s   
 ???4#6#6#6$((rs99#> DK//;;$"2"22"(DK 0 {{")$*:*:D#++N/0,''4::???::??1%D,,S1I J111JJu-22	j555JJw/44	j>>>JJy166	 dhh MPTP_P_ _`n,#' 000#333	8Q8Q8Qdhh ?) KL**,,dhhNNDOO!5 6Y__%?%?%?,,,dhht!0 1***^^'99dhh i!!' ( "+~~!!*a014jF_F_9_"mopq99D(t~~/C/C/C NN//667^_8 ;**005K11+txxHJ  J??h&  M1OOw'<'<<&&r*j8"Dt"VXYZ//--$++!55$++o((nn //++** 005;; 0  
 :::#djjoo.2-1DJJOO*;;;=AZZJdoo.:S T__%@""4??DJJI!ZZ__222
U#&>>#6#6#8   ''(89#&>> &%*:*::!	#(#3#34K#L #'7':$"2"6"6x"@K + \ \0F0F \ \;K\K\I9BX*888***&txx:EIII**51//
;Jj444emmmTYTeTeTe*.***D*DEU*V
'

++J

W{{{ !$%!tzz!#t{{{djjooa(,,.WX #jjoob11
--c22*..*WX 2 *+DJJOO&#"+"5"544TXXT__4Ujj((2(FH #6 #ID
 ^^^)-)C)C)`)`t~~G`G`DJJOO&"&D)*DJJOO&"&D!!$**-ZZ__99EG :r3   c                   V P                   '       dA   V P                  P                  P                  pV P                   P	                  V4      V n         V P
                  '       d   V P
                  P	                  V4       V # r   )r   r:  r  rF  r   r  rB  s   && r4   r   !CClassDefNode.analyse_expressions  sY    999JJOO))E		55e<DI33C8r3   c                    V P                   '       dE   V P                  V P                  V4       V P                   P                  V P                  V4       R # R # r   )r   r?  rF  r'  r_  s   &&&r4   r'  +CClassDefNode.generate_function_definitions  s<    999,,TZZ>II33DJJE r3   c                   VP                  V P                  4       V P                  P                  P                  '       Eg   R pV P
                  '       Ed   VP                  P                  \        P                  RR7      pV P
                  P                  V4       VP                  V: RV P
                  P                  4       : R24       VP                  VP                  RV 2V P                  4      4       VP                  V\        P                  4       VP                  P                  \        P                   RR7      pVP                  V RV R24       VP                  VP                  RV 2V P                  4      4       VP                  P                  \        P                  RR7      pVP                  R	4       VP                  R
4       VP                  P                  \        P                  RR7      pVP                  V R24       VP                  VP#                  WPP                  4      4       VP%                  V\        4       VP                  P                  \        P                  RR7      pVP                  V R24       VP                  VP#                  W`P                  4      4       VP%                  V\        4       VP                  P                  \        P                  RR7      pVP                  V RV RV P
                  P                  4        R24       VP                  VP#                  WpP                  4      4       VP%                  V\        4       VP                  V RV RV R24       WVV3 F>  pVP'                  V\        P                  4       VP                  P)                  V4       K@  	  VP                  R4       VP                  R4       VP                  V: RV P
                  P                  4       : R24       VP                  VP#                  W@P                  4      4       VP%                  V\        4       VP                  RV: RV: R24       RV,          p	VP                  RV	,          4       VP                  RV,          4       VP                  R4       VP                  R4       VP                  R4       VP                  R4       VP                  VP+                  V P                  4      4       VP                  R4       VP                  V R 24       VP                  P)                  V4       VP'                  V\        P                  4       VP                  P)                  V4       V P
                  P-                  V4       V P
                  P/                  V4       V P1                  V P                  WRR!7       Ve<   VP'                  V\        P                  4       VP                  P)                  V4       V P2                  '       d   V P2                  P5                  V4       R # R # )"NTr  z = __Pyx_PyTuple_GET_ITEM(z, 1);z!CYTHON_ASSUME_SAFE_MACROS && !Fz* = ((PyTypeObject*)__Pyx_PyTuple_GET_ITEM(z, 0));zM#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000z/if (__Pyx_get_runtime_version() < 0x030A0000) {z> = PyObject_GetAttrString((PyObject*)&PyType_Type, "__new__");z, = PyTuple_Pack(1, (PyObject*)&PyType_Type);z = PyNumber_Add(r   r  z = PyObject_Call(r  z} elser  zE = __Pyx_PyType_GetSlot(&PyType_Type, tp_new, newfunc)(&PyType_Type, z)if (__Pyx_PyType_GetSlot((PyTypeObject*) z, tp_base, PyTypeObject*) != r,  z@__Pyx_PyType_GetSlot((PyTypeObject*) %s, tp_base, PyTypeObject*)zB__Pyx_TypeName base_name = __Pyx_PyType_GetFullyQualifiedName(%s);zB__Pyx_TypeName type_name = __Pyx_PyType_GetFullyQualifiedName(%s);zxPyErr_Format(PyExc_TypeError, "best base '" __Pyx_FMT_TYPENAME "' must be equal to first base '" __Pyx_FMT_TYPENAME "'",z#             base_name, type_name);z!__Pyx_DECREF_TypeName(base_name);z!__Pyx_DECREF_TypeName(type_name);r  z = NULL;)bases_tuple_cnamecheck_heap_type_bases)rS  r9   r:  r  r  r  r  r  r
   r   r  rU   r   error_goto_ifr-  r   r  r  r  r  r  r  rh  r  generate_type_ready_coder   r,  )
r   rZ   rq   
first_base
trial_typetype_new
type_tuple
args_tupler  trial_type_bases
   &&        r4   r,  %CClassDefNode.generate_execution_code  s    	dhhzz)))E"""44Z5N5N[_4`##<<TB

E4K^K^KeKeKghi

4--0OPUw.WY]YaYabcz'@'@A!^^99':K:KX]9^


j\)STYSZZ`ab

4--0OPZ|.\^b^f^fgh "^^99*:S:S`d9e


jk

LM>>77
8Q8Q^b7c

hZ'efg

4228XXFG.9!^^99*:S:S`d9e


j\)UVW

422:xxHI
N;!^^99*:S:S`d9e


j\)9*RH[H[HbHbHdGeeghi

422:xxHI
N;

j\):8*BzlRZ[\%:>D))$
0I0IJNN//5 ? 

8$

8$

 3 3 : : <> ?

422:xxHI
N;


, - #egq"q

_bqqr

_bllm

 w x

@A

>?

>?

4??48845

3

j\23++J7%%j*2K2KL++J7##::4@##..t4))$**dko)p %%eZ-F-FG++E2999II--d3 r3   c                ~   V P                   p\        P                   R VP                   2pVP                  pV'       g   R# V P
                  R8X  dV   VP                  '       dB   VP                  '       d   Q hVP                  VP                  : RVP                  : R24       R# V'       g   Q hVP                  '       g   Q hRVP                  ,          pVP                  R4       RpV'       g   VP                  P                  '       d   VP                  P                  \        RR7      pVP                  V: R	VP                  VP                  P                  4      : R
VP                  WP                  4      : 24       VP!                  V\        4       V'       g
   V'       Ed8   V'       d   VP"                  P%                  \&        P(                  ! RR4      4       TP+                  V P                  RV: R\,        P.                  ! RVP0                  4      P3                  V4      : RT;'       g    T: R24       TP                  V: R\        P4                  : RV: RT;'       g    T: R24       V'       d3   VP7                  V\        R7       VP                  P9                  V4       VP                  VP                  WPP                  4      4       MGVP                  V: R\        P4                  : RV: RVP                  WPP                  4      : 24       \,        P.                  ! RVP"                  P0                  4      p	V	P;                  V4      '       Eg   VP                  R4       VP                  V: R V	P<                  : RV	P3                  V4      : R24       RZ F  p
\,        P>                  ! VP"                  P0                  4      PA                  V
4      p	V	P3                  V4      R8X  g   KT  \,        PB                  ! Wi4      '       d   Kr  VP                  RV: RV	P<                  : RV: RV: RV	P<                  : R 24       VP                  V: RV	P<                  : RV: RV	P<                  : R24       VP                  R!4       K  	  VP                  R"4       VP                  R#4       VP                  R$4       VP                  R%4       VP                  R&4       VP                  R'4       VP                  R(4       VP"                  P%                  \&        P(                  ! R)R4      4       VP+                  V P                  R*V: RV: R24       VP                  R&4       V'       dP   VPE                  V\        4       VPG                  V\        4       VP                  VP                  : R+V: R24       VP                  V: RVP                  : R24       VP                  R(4       VP                  pV'       Ed   VPH                  '       d   VPJ                  R,8w  d   TP                  R-VPL                  '       d   R.MR/: VPJ                  : R0VPL                  '       d   R.MR/: VPJ                  : R124       VP"                  P%                  \&        P(                  ! R2R4      4       VP                  VP                  4      pVP+                  V P                  R3V,          4       VP                  R!4       MVP                  pEK  VP                  R4       \,        P>                  ! VP"                  P0                  4       F  pVPO                  Wa4       K  	  VP                  R(4       VP                  R44       VP"                  P%                  \&        P(                  ! R5R4      4       VP+                  V P                  R6V,          4       VP                  R(4       VPQ                  R7V 24       \,        PR                  ! VR84      p\,        PR                  ! VR4      pVR8X  dm   VR8X  df   VP                  R4       VP                  R9V: R:V: R;24       VP                  R<V,          4       VP                  R!4       VP                  R(4       V P                   P                  PT                   EF  pVPV                  RZ9   pVPX                  '       g   K'  \Z        P\                  '       g   K?  VP^                  '       g   KS  V'       d   K]  \,        P>                  ! V P                   P                  P0                  4      PA                  VPV                  4      pV'       d   VPa                  4       MRpV'       d   VP                  V4       VP                  R=4       VP                  R>4       VP                  R?V: R@VPV                  : RAVP                  RBV P                  4      : 24       VP                  RC4       VP                  RDVP^                  ,          4       VP                  VP^                  : REVPb                  : R24       VP                  RFVP^                  ,          4       VP                  R!4       VP                  R!4       VP                  R(4       V'       g   EK   VP                  R(4       EK  	  VPd                  '       d   VP"                  P%                  \&        P(                  ! RGRH4      4       VP+                  V P                  RIV: RVPf                  : R24       VP"                  P%                  \&        P(                  ! RJRH4      4       VP+                  V P                  RKV,          4       VP                  Ph                  '       g|   VP                  P0                  Pk                  RL4      '       gQ   VP+                  V P                  RM\        P4                  : RVPm                  VPn                  4      : RNV: R24       VPp                  '       g   VPs                  RO4      MRpV'       d   VP                   \        J d   RPV,          pVPL                  '       d   VPJ                  pMRQVPJ                  ,          pVP                  RR4       VP                  RSV: RTV: RUV: RVPt                  : R2	4       VP                  R(4       M\w        VP                  RV4       VPp                  '       g   VPs                  RW4      '       dZ   MMUVP"                  P%                  \&        P(                  ! RXR4      4       VP+                  V P                  RYV,          4       R# R# R# )[rL   Nr   = &r  z%s_specz#if CYTHON_USE_TYPE_SPECSTr  z = PyTuple_Pack(1, (PyObject *)r  ValidateBasesTuplezExtensionTypes.cz__Pyx_validate_bases_tuple(z.name, tp_dictoffsetr   r  z3 = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(, &r  r  z	, NULL); tp_as_bufferz$#if !CYTHON_COMPILING_IN_LIMITED_APIr  r?  zif (!z->tp_as_buffer-> && z->tp_base->tp_as_buffer && z->tp_base->tp_as_buffer->r,  r  z>#elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)zB/* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */z#elif defined(_MSC_VER)zU#pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")r  zL#warning "The buffer protocol is not supported in the Limited C-API < 3.11."r  FixUpExtensionTypez'__Pyx_fix_up_extension_type_from_spec(&z.tp_bases = PyTypeObjectzif (sizeof(r   r  z) != sizeof(r  ValidateExternBasez__Pyx_validate_extern_base(%s)z#if !CYTHON_USE_TYPE_SPECSPyType_Readyz__Pyx_PyType_Ready(%s)(PyObject*)tp_getattrozCif ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!z->tp_dictoffset && z,->tp_getattro == PyObject_GenericGetAttr)) {z*%s->tp_getattro = PyObject_GenericGetAttr;r  rZ  z7PyObject *wrapper = PyObject_GetAttrString((PyObject *)z, "z"); wrapperz3if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {z0%s = *((PyWrapperDescrObject *)wrapper)->d_base;z.doc = z0((PyWrapperDescrObject *)wrapper)->d_base = &%s;	SetVTableImportExport.cz__Pyx_SetVtable(MergeVTablesz__Pyx_MergeVtables(%s)internalzPyObject_SetAttr(r  __weakref__z%s->tp_weaklistoffsetz	struct %sz#if CYTHON_USE_TYPE_SLOTSr+  z == 0) z = offsetof(z)__weakref__ slot must be of type 'object'__reduce_cython__SetupReducez#__Pyx_setup_reduce((PyObject *) %s)r  )<r  r	   modulestatevalue_cnamer+  rF  r  r{  rU   r  r  r  r  r   r  r  r9   r  r&  r  r   r  r  r   get_slot_by_namer  	slot_coder!  r  r  is_empty	slot_namer  r  get_base_slot_functionr-  r  r  rz  rG  generate_dynamic_init_codeput_make_object_deferredget_slot_code_by_namepyfunc_entriesrp   ra  r   r8  r  r  r  vtable_cnamevtabptr_cnameis_internalr   rq  rL  is_closure_class_scoper  r  r   )r:  rZ   r  r  r  r+  rF  typespec_cname
tuple_tempbuffer_slotbuffer_method_namer  base_typeptr_cnamer  getattr_slot_funcdictoffset_slot_funcr_   r  rl  weakref_entrytp_weaklistoffset	objstructs   &&&&                  r4   r  &CClassDefNode.generate_type_ready_codeh  s
    zz!889D<N<N;OP

x' !!!-----

&&&&   ! =%%%%%&););;NJJ23J$):):)D)D)D!^^99.UY9Z


66u7H7H7R7RS++J		B 
 
N; JJ($$55#//0DFXY[))%))&!22?EDTDTU__`ef)77Z76  

!''"%333	  **:N*KNN//
;

422=))LM

%++&//yyI	 $44^TEUEUE`E`aK''..

AB

!))))%0  +Q&"+":":((33#55L5LM_5`  ",,U3s:9CcCcdiCwCw

 *;+@+@));+@+@$  

);+@+@);+@+@$  

3 +Q  

[\

_`

45

tu

7#

kl

8$--''(<>PQS!!%))./ 0 JJw  1>B  !2NC

$2D2DFWXYJJ""  JJx I)(((Y-F-F.-X JJ"///Y>@T@T'444)CYE^E^ ` a $$55#//0DFXY[)-)K)KDNN)[&))%))5U*6, -JJsO%//	JJ=>!001A1A1L1LM//< NJJx JJ34--''8JKM!!%))-E-UVJJx ))K*GH !* ? ?} U#,#B#B5/#Z  C',@C,G

AB

!=2 3 

G!" #

3

8$
 

((77 II)OO	OOO(:(:(:...yy$33

((3355L5LTYY5W KO)E)E)GUY&)

#56JJABJJsOJJ) II 33IuyyIKL
 JJMOJJJ 2245 JJ*.*@*@$..QSJJJ 2245 JJsOJJsOJJx())

8,= 8@      11++K9IJL%%eii!&&2    11++N<LMO%%eii1IM1YZ::)))$**2G2G2K2KJ2W2W %%eii''**5+;+;<!2  EJD`D`D`E--m<fjM %%7(?-(O%((($($8$8	$/$2F2F$F	JJ:;JJ))!%++	 - .
 JJx(-++-XY=B=Y=Y=Yu  !455_c   11++M;MNP%%eii1VYf1fg `d5r3   c                    V P                   '       d   V P                   P                  V4       V P                  '       d   V P                  P                  V4       R # R # r   )r  r   r   r   s   &&r4   r   CClassDefNode.annotateX  sB    ((.999IIt$ r3   )rs  r  r   r<  r:  r  rF  r  r  )r+   r,   r-   r.   r   ru  rv  rG  r+  r  r  r|  r<  r}  r  rp  r  rC  r  r   r   r'  r,  r[  r  r   r2   rv   r   s   @r4   rM  rM    s     , (KL
CNLJJF0 0
%26) V]~F
K4\ mh mh^% %r3   rM  c                   D   a  ] tR tRt o R.tR tR tR tR tR t	Rt
V tR	# )
PropertyNodei_  r   c                    VP                  V P                  V P                  V P                  4      V n        V P
                  P                  V P                  P                  4       R # r   )r  rp   rC   r9   r:  r   r   rF  r   s   &&r4   r   !PropertyNode.analyse_declarationsi  s@    ))$))TXXtxxH
		&&tzz'7'78r3   c                F    V P                   P                  V4      V n         V # r   ru  r   s   &&r4   r    PropertyNode.analyse_expressionsm      II11#6	r3   c                <    V P                   P                  W4       R # r   rx  r_  s   &&&r4   r'  *PropertyNode.generate_function_definitionsq  rz  r3   c                    R # r   r*   r   s   &&r4   r,  $PropertyNode.generate_execution_codet  r   r3   c                <    V P                   P                  V4       R # r   r~  r   s   &&r4   r   PropertyNode.annotatew  r  r3   r   r:  Nr  r   s   @r4   r  r  _  s,      (K9;! !r3   r  c                   \   a  ] tR tRt o RtR.tRt]R 4       tR t	R t
R tR	 tR
 tRtV tR# )CPropertyNodei{  zADefinition of a C property, backed by a CFuncDefNode getter.
    r   Tc                    V P                   P                  pV'       d   \        V^ ,          \        4      '       g   Q V4       hV^ ,          # r6   )r   rC  rN   rd  )r   rC  s   & r4   r  CPropertyNode.cfunc  s6    		E!Hl;;BUB;Qxr3   c                P   \        V P                  VR 7      pV P                  P                  V4       VP	                  V P                  V P
                  V P                  V P                  P                  VR7      ;q0n	        V P                  P                  P                  Vn        R# ))class_scope)ctypeproperty_scopeN)r   rp   r   r   r  rC   r9   r  r%  r:  r  r  )r   r   rF  r:  s   &&  r4   r   "CPropertyNode.analyse_declarations  s|    diiS9		&&u- 11IItxx1G1GX] 2 _ 	_
!ZZ--33r3   c                F    V P                   P                  V4      V n         V # r   ru  r   s   &&r4   r   !CPropertyNode.analyse_expressions  r  r3   c                <    V P                   P                  W4       R # r   rx  r_  s   &&&r4   r'  +CPropertyNode.generate_function_definitions  rz  r3   c                    R # r   r*   r   s   &&r4   r,  %CPropertyNode.generate_execution_code  r   r3   c                <    V P                   P                  V4       R # r   r~  r   s   &&r4   r   CPropertyNode.annotate  r  r3   r  N)r+   r,   r-   r.   r   r   r
  r  r  r   r   r'  r,  r   r2   rv   r   s   @r4   r
  r
  {  sH      (KL 
4;! !r3   r
  c                   6   a  ] tR tRt o . tR tR tR tRtV t	R# )
GlobalNodei  c                b    V P                    F  pVP                  W P                  4       K   	  R # r   )namesdeclare_globalr9   r   r   rp   s   && r4   r   GlobalNode.analyse_declarations  s"    JJDtXX. r3   c                    V # r   r*   r   s   &&r4   r   GlobalNode.analyse_expressions  rJ  r3   c                    R # r   r*   r   s   &&r4   r,  "GlobalNode.generate_execution_code  r   r3   r*   Nr  r   s   @r4   r  r    s      
 K/ r3   r  c                   6   a  ] tR tRt o . tR tR tR tRtV t	R# )NonlocalNodei  c                b    V P                    F  pVP                  W P                  4       K   	  R # r   )r  declare_nonlocalr9   r  s   && r4   r   !NonlocalNode.analyse_declarations  s"    JJD  xx0 r3   c                    V # r   r*   r   s   &&r4   r    NonlocalNode.analyse_expressions  rJ  r3   c                    R # r   r*   r   s   &&r4   r,  $NonlocalNode.generate_execution_code  r   r3   r*   Nr  r   s   @r4   r&  r&    s      
 K1 r3   r&  c                   N   a  ] tR tRt o R.tR tR tR tRtR t	R t
R	 tR
tV tR# )r  i  r  c                   ^RI Hp V P                  p\        W2P                  4      '       d   VP
                  P                  4       pVR8X  d   VP                  4       w  rV\        V4      '       d   \        VP                  R4       VP                   FZ  w  rxVP                  V4      p	V	f   \        VP                  R4       K2  VP                  VP                  WP                  RR7       K\  	  \        V n        R# R# \#        VRR4      ed   VP$                  '       d   VP'                  V4       \        V n        R# VP(                  '       g   VP*                  '       d   \        V n        R# R# R# )	rG   r  rC  z!Variable names must be specified.NUnknown typeT)r,  r^  )r   r  r  rN   GeneralCallNoder  r  explicit_args_kwdsrM   r   r9   r  r  rI  r   PassStatNoderP   r   r  declare_from_annotationr  is_subscript)
r   r   r  r  r_   rW   rX   varr8  r  s
   &&        r4   r   !ExprStatNode.analyse_declarations  s   yyd5566==446Dy !446
t99$(($GH&*&:&:NC$44S9D|imm^<		4$O '; ". ! T<.:|||,,S1!-"""d&7&7&7!- '8 ;r3   c                    R V P                   n        V P                   P                  V4      V n         R V P                   n        V # r  )r  result_is_usedr   r   s   &&r4   r    ExprStatNode.analyse_expressions  s5    #(		 II11#6	#(		 r3   c                    V P                   P                  P                  '       d5   V P                   P                  4       '       d   V P	                  4        R # R # R # r   )r  r  r  result_in_tempr   r   s   &&r4   r  ExprStatNode.nogil_check  s;    99>>%%%$))*B*B*D*DNN +E%r3   zDiscarding owned Python objectc                B   VP                  V P                  4       R V P                  n        V P                  P	                  V4       V P                  P                  4       '       g   V P                  P                  4       '       db   V P                  P                  4       pV P                  P                  P                  '       g
   RV,          pVP                  RV,          4       V P                  P                  V4       V P                  P                  V4       R# )Fz
(void)(%s)%s;N)rS  r9   r  r9  r  r<  r   r  r  rU   rh  r  )r   rZ   r   s   && r4   r,  $ExprStatNode.generate_execution_code  s    dhh#(		 		**40yy''))dii.>.>.@.@YY%%'F99>>)))%.JJuv~&		((.		T"r3   c                <    V P                   P                  W4       R # r   )r  r'  r_  s   &&&r4   r'  *ExprStatNode.generate_function_definitions  rz  r3   c                <    V P                   P                  V4       R # r   )r  r   r   s   &&r4   r   ExprStatNode.annotate  r  r3   )rP   r  N)r+   r,   r-   r.   r   r   r   r  r   r,  r'  r   r2   rv   r   s   @r4   r  r    s8     
 (K.2 3K
#;! !r3   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )AssignmentNodei  c                L   VP                   pVP                   pVP                  '       dz   VP                  P                  '       d\   VP                  '       dH   VP                  P                  '       g*   \	        V P
                  R P                  WC4      ^R7       R# R# R# R# R# )z4Assigning to '{}' from '{}' discards const qualifierr  N)r  r  r  r  r   r9   r  )r   rz  rhsrhs_tlhs_ts   &&&  r4   _warn_on_const_assignment(AssignmentNode._warn_on_const_assignment  so    <<<EOO444eooNfNfNfDHHT[[\aiqrs Og4<r3   c                    \        V\        4      '       d)   V P                  VP                  VP                  4       R # R # r   )rN   rF  rK  rz  rH  )r   rY   s   &&r4   _check_const_assignment&AssignmentNode._check_const_assignment  s,    dN++**488TXX> ,r3   c                Z   V P                  V4      pV P                  V4       \        V\        4      '       ds   \        V\        4      '       g]   VP
                  P                  P                  '       d7   VP
                  P                  4       '       d   \        V P                  R 4       V# )z9Storing unsafe C derivative of temporary Python reference)r   rN  rN   rF  ParallelAssignmentNoderH  r  is_unowned_viewis_ephemeralr   r9   )r   r   rY   s   && r4   r   "AssignmentNode.analyse_expressions  st    !!#&$$T*dN++JtE[4\4\xx}},,,1F1F1H1Hdhh [\r3   c                    VP                  V P                  4       V P                  V4       V P                  V4       R # r   )rS  r9   generate_rhs_evaluation_coder  r   s   &&r4   r,  &AssignmentNode.generate_execution_code$  s.    dhh))$/%%d+r3   r*   N)
r+   r,   r-   r.   rK  rN  r   r,  r2   rv   r   s   @r4   rF  rF    s     t?, ,r3   rF  c                      a  ] tR tRt o RR.tRtRtRtRtRt	R t
RR ltR tR tR	 tR
 tR tRR ltR tR tRtV tR# )SingleAssignmentNodei*  rz  rH  Fc           	     l   ^RI Hp \        V P                  VP                  4      '       Ede   V P                  P
                  P                  4       pV'       Ed8   V P                  P                  4       w  rEVR9   Ed	   \        V4      ^8  d    \        V^,          P                  R4       R# VeB   VP                  R4      pVR8X  g   RV9  d   \        VP                  R4       R# VR,          pMRpV^ ,          P                  V4      pVf    \        V^ ,          P                  R	4       R# V P                  p	VR8X  d   \        WP                  4      '       d   V	P                  V	P                  3.p
Md\        WP                   4      '       d2   V	P"                   Uu. uF  qP                  VP                  3NK  	  p
pM\        V	P                  R
4       R# V
 F  w  rVP%                  WVRVR7       K  	  \        V4      ^8X  d   V^,          V n        EMvRV n        EMmRV n        \        WP                  4      '       g   \        V	P                  R4       VP)                  V	P                  WP                  RR7       EMVR9   Ed}   RV n        \        V4      ^ 8  g   Vf#   \        V P                  P                  R4       R# . pVP*                   FY  w  rVP                  V4      pVf   \        VP                  R	4       K2  VP-                  VP.                  WP                  34       K[  	  \        V4      \        VP*                  4      8  d   R# \        V P                  VP                  4      '       g!   \        V P                  P                  R4       V P                  P                  p\1        V4      pVP3                  VVVRV P                  P                  4       V F  w  rpVP%                  WV4       K  	  MVR8X  d   RV n        V'       d+   \        V P                  P
                  P                  R4       \5        V P                  P                  V P                  P                  VR7      pVP7                  V4       V P&                  '       d   R# V P8                  '       d   V P                  P;                  V4       R# V P                  P=                  V4       V P                  P>                  '       g   V P                  P@                  '       d   V P                  PB                  '       dj   V P                  PB                  PD                  '       gB   V P                  PG                  4       pV'       d   VV P                  PB                  n"        R# R# R# R# R# u upi )rG   r  rC  typedefzInvalid positional argument.Nr  zInvalid keyword argument.r  r0  zInvalid declarationT)r,  r  zInvalid declaration.)r  z.Struct or union members must be given by name.F
fused_typez*fused_type does not take keyword arguments)rp   ri   )rC  r[  )rD  union)$r   r  rN   rH  r  r  r  r2  rM   r   r9   compile_time_valuer  rz  r  rp   r  rW   rI  declaration_onlyr  r  r  r   r   rN  r  r   is_assignment_expression0analyse_assignment_expression_target_declarationrV  r  r  r:  r  !get_known_standard_library_import)r   r   r  	func_namerW   rX   kwdictr  r  rz  varsr6  r9   membersmemberr8  rp   rF  	fusednodestdlib_import_names   &&                  r4   r   )SingleAssignmentNode.analyse_declarations?  sI    dhh	 2 233))==?Iy!XX88:
 664y1}d1gkk+IJ'!%!8!8!>$	1\5O!$((,GH"%+L%9
%.
72237D|d1gkk>:((C I-%c+=+=>>%(XXsww$7#8D'-@-@AACF88#L8CXXsww$78D#LD!#''+@A"(,HCOOCsDU_O` )-t9>'+AwDH48D104-)#/A/ABB!#''+AB++CHHdHHQZ+["55,0D)4y1}dhhll,\] G-1-A-A)(88=<!)--@#NNFLL$

+KL .B 7|c$*>*>&??%dhh	0B0BCCdhhll,BC88==D.t4E//itxx||\-4)c))&< .5 ,.,0D)dhh//33JL !.dhhll3788==!NI2237   ,,,II#N33C8 HH)))TXX-=-=-=488>>>Z^ZbZbZhZh  [G  [G  [G)-)S)S)U&)GYD * [G>-=y $Ms   ! V1c                	   ^RI Hp V P                  P                  V4      V n        V P                  P
                  '       d   V P                  P                  P                  P                  '       d   VP                  '       ds   V P                  P                  P                  fQ   V P                  P                  4       '       d1   V P                  P                  V P                  P                  n
        M.\        V P                  RV P                  P                   R24       V P!                  V4      pV'       d   V# V P                  P#                  V4      V n        V P                  P%                  V4       V P'                  V4      pV'       d   V# \)        V P                  VP*                  4      '       dQ   V P                  P-                  V P                  4       V P                  P/                  V P                  4      V n        MV P                  P                  P0                  '       dp   \)        V P                  VP2                  4      '       gJ   VP3                  V P                  P                  V P                  RRR7      pVP#                  V4      V n        V P                  P                  P4                  '       Ed   VP7                  V P                  RV P                  P                  V P                  P                  .4      pV'       d   V P                  pRV n        VP                  P:                  V n        VP                  P<                  V n        V P:                  R8X  d5   V P<                  f'   VP?                  \@        PB                  ! R	R
4      4       MaV P                  PE                  V P                  P                  V4      pM0V P                  PE                  V P                  P                  V4      pV'       gS   VPF                  '       gA   VP
                  '       gA   VPH                  '       g/   VP                  PJ                  '       d   VPM                  V4      pM-VP                  PJ                  '       d   VPO                  V4      pWpn        V PP                  '       d>   V P                  P                  P                  '       g   \S        V P                  R^4       V # )rG   r  NzAssignment to const 'r  )r  r\   stop=Tr   CppExceptionConversionr  zHAssignment in pxd file will not be executed. Suggest declaring as const.)*r   r  rH  r   rz  r  r:  r  r  r1  ro  r+  r  r   r9   rp   
unroll_rhsr   gil_assignment_check
unroll_lhsrN   MemoryViewIndexNodeanalyse_broadcast_operation$analyse_as_memview_scalar_assignmentr  SliceIndexNoder  lookup_operator_for_typesis_overloaded_assignmentr  r
  r  r   r  r'  r  r  r  coerce_to_tempcoerce_to_simplefrom_pxd_cvardefr   )r   r   use_tempr  unrolled_assignmentrz  oprH  s   &&&     r4   r   "SingleAssignmentNode.analyse_types  s=   88))#.88 3 3 < < <"""txx~~':':'BtxxGcGcGeGe&*hh&>&>#dhh"7a HI"ooc2&&88005%%c*"ooc2&&dhh	 = =>>HH00:xxDDTXXNDHXX]]###dhh	(@(@AA..txx||$((RV]a.b33C888==%%%..txxtxx}}dhhmm>\]Bhh04-')ww'>'>$')ww'>'>$''3.43G3G3O(()@)@AY[k)lmhh((<(($$TXX]]C8Cs'''KKK$$$$$S)CXX!!!&&s+C   )?)?)?Z r3   c           
        ^RI HpHp TpR;p;p;rVP                  P                  '       d   VP                  P
                  pEMVP                  P                  '       g   VP                  P                  '       EdU   \        WP                  4      '       d4   VP                  '       g"   VP                  '       g   VP                  ;raKN  \        WP                  4      '       Ed   VP                  pVP                  pV'       d!   VP                  \        P                  V4      pVP                  pV'       d"   VP                  \        P                  V4      pMVP                  P                  '       d   VP                  P
                  '       d   TP!                  V P"                  \%        VP                  P
                  4      \        VP                  P
                  \&        4      '       d   VP                  P
                  MVP(                  R7      pM\+        V P"                  R4       R# V	'       d!   V	P                  \        P                  V4      p	R p V! VR4      V! V^ 4      ,
          V! V	^4      ,          pMOVP                  P                  '       d0   VP                  P
                  p\        V\&        4      '       g   R# MR# R# W8w  d!   \+        V P"                  RV: RV: 24       R# . pVP/                  V4      pV.pV'       d5   VP0                  '       g#   VP/                  V4      pVP3                  V4       V'       d5   VP0                  '       g#   VP/                  V4      pVP3                  V4       V	'       d5   V	P0                  '       g#   VP/                  V	4      p	VP3                  V	4       \5        V4       EF  pVP                   P7                  V P"                  V4      pV	e   \        V	P8                  \&        4      '       dE   VP8                  V	P8                  ,          pVP                   P7                  V P"                  V4      pMVP;                  V P"                  R	V	VR
7      pVe   \        VP8                  \&        4      '       d[   VP=                  4       '       dE   VP8                  VP8                  ,           pVP                   P7                  V P"                  V4      pMVP?                  V P"                  RVVR
7      pVP3                  VPA                  V P"                  VVPC                  V4      R7      4       EK  	  WV3#   \,         d    \+        T P"                  R4        R# i ; i)rG   )r  	UtilNodesN)r   r  z*C array iteration requires known end indexc                 h    V f   V# V P                  4       '       d   V P                  # \        R4      h)NzNot a constant.)r+  r  r  )rY   
none_values   &&r4   	get_const.SingleAssignmentNode.unroll.<locals>.get_const  s4    |))1133#333():;;r3   z5C array assignment currently requires known endpointsz3Assignment to/from slice of wrong length, expected z, got r  )operatoroperand1operand2r   )r  r  )"r   r  r  r  	is_ctupler  r  r  rN   ru  r\   rl  r  r'  r
   rR  IntNoder9   r#  r  constant_value_not_setr   r  
LetRefNoder  r  r4  for_sizer  MulNoder+  AddNode	IndexNoder   )r   rY   target_sizer   r  r  r  
start_node	stop_node	step_node
check_node
slice_sizer  rl   refsr  ix_node
step_valueindex_values   &&&&               r4   unrollSingleAssignmentNode.unroll  s+   *:>>
>Y>99JYY!3!3!3T#;#;<<djjjTXT]T]T]"ii't$ 8 899yy!ZZ
!+!5!5j6R6RTW!XJ II	 ) 3 3J4P4PRU VIyy)))diinnn$-$5$5 HHC		,??I$))..Z]?^?^TYY^^2;2R2R %6 %U	
 dhh(TU ) 3 3J4P4PRU VI<"+It"<yUV?W"W[denpq[r!rJ
 ###!YY^^
!*c22 3  $$((K) *##D)vj333"--j9JKK
#Y111!,,Y7IKK	"Y111!,,Y7IKK	"$B''002>G$i77==!(!8!89;T;T!TJ'//88:NG'//3QZel/mG%j88#>>7C^C^C`C`")"9"9J<V<V"VK'//88;OG'//3g 0 WGLL,,TXXDH]H]^aHb,cd %  &&a " $(($[\s    %U# #!VVc           
     t   ^RI Hp . p\        W44       F6  w  rVP                  \	        V P
                  WV P                  R7      4       K8  	  \        V P
                  VR7      P                  V4      p
V'       d   \        V P
                  W*.R7      p
VRRR1,           F  pVP                  W4      p
K  	  V
# )rG   )r  )rz  rH  first)r9   rC  Nr   )r   r  r  r  rY  r9   r  rQ  r   rB  LetNode)r   r  r  lhs_listrhs_listr   r  assignmentsrz  rH  rY   refs   &&&&&&      r4   unroll_assignments'SingleAssignmentNode.unroll_assignments8  s    H/HC3DHH#VZV`V`ab 0%$((+FZZ[^_DHHZ4FGD"::C$$S/D r3   c                   ^RI Hp \        V P                  VP                  4      '       g   R# \
        ;QJ d0    R V P                  P                   4       F  '       g   K   RM%	  RM!! R V P                  P                   4       4      '       d   R# V P                  V P                  \        V P                  P                  4      V4      pV'       g   R# Vw  rEpV P                  WTV P                  P                  Wa4      # )rG   r  Nc              3   8   "   T F  qP                   x  K  	  R # 5ir   )
is_starred)ri  r?  s   & r4   rj  2SingleAssignmentNode.unroll_rhs.<locals>.<genexpr>H  s     7#~~r  TF)r   r  rN   rz  r  r  rW   r  rH  rM   r  )r   r   r  unrolledr  r  rH  s   &&     r4   ro  SingleAssignmentNode.unroll_rhsD  s    $((I$7$7883773337777;;txxTXX]]);SA (
#&&tQQr3   c                   V P                   P                  P                  '       d   R # ^RIHp \        V P                  VP                  4      '       g   R # V P                  V P                   \        V P                  P                  4      V4      pV'       g   R # Vw  rEpV P                  WTW`P                  P                  V4      # )Nr  )rz  r  r  r   r  rN   rH  r  r  rM   rW   r  )r   r   r  r  r  r  rz  s   &&     r4   rq  SingleAssignmentNode.unroll_lhsQ  s    88=="""$((I$7$788;;txxTXX]]);SA (
#&&thhmmSQQr3   c                <    V P                   P                  V4       R # r   rH  r  r   s   &&r4   rV  1SingleAssignmentNode.generate_rhs_evaluation_code_      ))$/r3   c                
   V P                   '       dK   V P                  P                  V P                  VV P                   V P                  V P
                  R 7       R# V P                  P                  V P                  V4       R# ))r  r  r
  N)rw  rz  r  rH  r  r
  )r   rZ   r  s   &&&r4   r  -SingleAssignmentNode.generate_assignment_codeb  sd    (((HH--&*&C&C $ 4 4 $ 4 4 . 6 HH--dhh=r3   c                <    V P                   P                  W4       R # r   rH  r'  r_  s   &&&r4   r'  2SingleAssignmentNode.generate_function_definitionsm      ..s9r3   c                r    V P                   P                  V4       V P                  P                  V4       R # r   rz  r   rH  r   s   &&r4   r   SingleAssignmentNode.annotatep  &    $$r3   )r_  r  r
  rw  rz  rH  Nr6   r  )r+   r,   r-   r.   r   r  rw  r`  r_  rz  r   r   r  r  ro  rq  rV  r  r'  r   r2   rv   r   s   @r4   rY  rY  *  sl      %.KE$$\Z|<|['z
RR0	>:   r3   rY  c                   f   a  ] tR tRt o . ROtRtRtRtR tR t	RR lt
R tRR ltR tR	 tR
tV tR# )CascadedAssignmentNodeiu  Nc                    \        V\        4      '       d1   VP                   F  pV P                  W!P                  4       K   	  R # R # r   )rN   r  r  rK  rH  )r   rY   rz  s   && r4   rN  .CascadedAssignmentNode._check_const_assignment  s5    d233}}..sHH= % 4r3   c                N    V P                    F  pVP                  V4       K  	  R # r   )r  rV  )r   r   rz  s   && r4   r   +CascadedAssignmentNode.analyse_declarations  s    ==C**3/ !r3   c                ~   ^RI HpHp \        4       p\	        V P
                  4       FP  w  rgVP                  V4      ;qpP
                  V&   VP                  V4       VP                  VP                  4       KR  	  V P                  P                  V4      p\        V4      ^8X  d   \        \        V4      4      P                  '       dH   VP!                  RXV P                  .4      p	V	'       g!   VP#                  VP%                  4       V4      pM VP#                  VP%                  4       V4      pVP&                  '       g[   VP(                  '       gI   V'       g/   VP*                  '       g   VP                  P,                  '       d   VP/                  V4      pMVP1                  V4      pVP3                  4       '       d	   V! V4      MTV n
        . V n        / p
. V n        V P
                   F  pVP                  P                  ;'       d    VP!                  RWpP                  .4      pV P6                  P9                  V4       VP                  V
9  g   Kl  VP                  VP                  8w  g   K  V! V P                  4      pV'       g   VP#                  VP                  V4      pV P4                  P9                  V4       WVP                  &   K  	  . V n        V P
                   FJ  pV
P=                  VP                  V P                  4      pV P:                  P9                  V! V4      4       KL  	  V # )rG   )r\  r<  rm  )r  r\  r<  r   r  r  r   rp  r   r  rH  r   rM   nextiterr  lookup_operatorr'  rl  r  r  r  r  rx  ry  r<  coerced_valuesassignment_overloadsr  cloned_valuesr   )r   r   r{  r\  r<  	lhs_typesr5  rz  rH  r}  r  
overloadeds   &&&         r4   r   $CascadedAssignmentNode.analyse_types  s]   3 E	.FA%(%=%=c%BBC--"$$S)MM#((# /
 hh$$S)y>QDO$111((sDHHo>--	=CmmIMMOS9{{{3>>>C,,,0D0D0D$$S)C&&s+C%(%7%7%9%99S>s !$&!==C..\\33F3FsSRZRZO3\J%%,,Z8xx~-#((chh2F)!--#6C##**3/+.sxx( !  ==C $$SXXtxx8C%%in5 ! r3   c                <    V P                   P                  V4       R # r   r  r   s   &&r4   rV  3CascadedAssignmentNode.generate_rhs_evaluation_code  r  r3   c                   V P                    F  pVP                  V4       K  	  \        V P                  V P                  V P
                  4       F*  w  rCpVP                  V4       VP                  W1VR 7       K,  	  V P                    F%  pVP                  V4       VP                  V4       K'  	  V P                  P                  V4       V P                  P                  V4       R# ))r  N)
r  r  r  r  r  r  r  rh  r  rH  )r   rZ   r  rH  rz  overload	rhs_values   &&&    r4   r  /CascadedAssignmentNode.generate_assignment_code  s    &&C((. ' #&dmmT5G5GIbIb"cCh((.((((S #d ,,I,,T2  & - 	''-D!r3   c                <    V P                   P                  W4       R # r   r  r_  s   &&&r4   r'  4CascadedAssignmentNode.generate_function_definitions  r  r3   c                   V P                    F  pVP                  V4       K  	  \        V P                  V P                  4       F'  w  r2VP                  V4       VP                  V4       K)  	  V P
                  P                  V4       R # r   )r  r   r  r  r  rH  )r   rZ   rH  rz  s   &&  r4   r   CascadedAssignmentNode.annotate  sg    &&CLL 'DMM4+=+=>HCLLLL ? 	$r3   )r  r  r  rH  )r  rH  r  r  r6   r  )r+   r,   r-   r.   r   r  r  r  rN  r   r   rV  r  r'  r   r2   rv   r   s   @r4   r  r  u  sF      IKMN>
0/b0":   r3   r  c                   D   a  ] tR tRt o R.tR tR tR tR tR t	Rt
V tR	# )
rQ  i  rC  c                N    V P                    F  pVP                  V4       K  	  R # r   rH  rI  s   && r4   r   +ParallelAssignmentNode.analyse_declarations  s    JJD%%c* r3   c                    V P                    Uu. uF  pVP                  V^R7      NK  	  upV n         V P                    F  pVP                  V4       K  	  V # u upi )rG   )r{  )rC  r   rN  rI  s   && r4   r   *ParallelAssignmentNode.analyse_expressions  s]    "&**.",$ ((q(9",.
 JJD((. .s   Ac                    VP                  V P                  4       V P                   F  pVP                  V4       K  	  V P                   F  pVP	                  V4       K  	  R # r   )rS  r9   rC  rV  r  rT  s   && r4   r,  .ParallelAssignmentNode.generate_execution_code  sJ    dhhJJD--d3 JJD))$/ r3   c                N    V P                    F  pVP                  W4       K  	  R # r   rO  rP  s   &&& r4   r'  4ParallelAssignmentNode.generate_function_definitions	  s    JJD..s9 r3   c                N    V P                    F  pVP                  V4       K  	  R # r   rW  rT  s   && r4   r   ParallelAssignmentNode.annotate  rY  r3   rZ  Nr+   r,   r-   r.   r   r   r   r,  r'  r   r2   rv   r   s   @r4   rQ  rQ    s,      )K+0:   r3   rQ  c                   F   a  ] tR tRt o RR.tR tR tR tR tR t	R	t
V tR
# )InPlaceAssignmentNodei  rz  rH  c                <    V P                   P                  V4       R # r   rz  rV  r   s   &&r4   r   *InPlaceAssignmentNode.analyse_declarations&      ++C0r3   c                0   V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  P                  '       g   V P                  P
                  '       d8   V P                   P                  V P                  P                  V4      V n         V # V P                  P                  P                  '       dA   V P                  R 9   d0   V P                   P                  \        P                  V4      V n         V # )z+-)rH  r   rz  r   is_memview_indexis_buffer_accessr'  r  	is_stringr  r
   rR  r   s   &&r4   r   #InPlaceAssignmentNode.analyse_types)  s    88))#.88005 88$$$(A(A(Axx))$((--=DH  XX]]$$$$)>xx))**F*FLDHr3   c                   VP                  V P                  4       V P                  V P                  r2VP	                  V4       VP                  V4       V P                  pVR 8X  d   RpMVR8X  d   \        V P                  R4       VP                  '       g   VP                  '       d   VP                  P                  '       d   \        V P                  R4       VR9   dV   VP                  P                  '       d:   VP                  P                  R,          '       g   \        V P                  R4       VP                  W1V4       MbVP                   '       d   \        V P                  R4       M9VP#                  VP%                  4       : RV: R	VP%                  4       : R
24       VP'                  V4       VP)                  V4       VP+                  V4       VP-                  V4       R# )z///z**zNo C inplace power operatorzAIn-place operators not allowed on object buffers in this release.	cdivisionz;In-place non-c divide operators not allowed on int buffers.z4Inplace operators not supported on memoryview slicesrI   z= r  N)r  %)rS  r9   rz  rH  r   generate_subexpr_evaluation_coder  r   r  r  r  r  r  r&  r  generate_buffer_setitem_codeis_memview_slicerU   r   generate_subexpr_disposal_codefree_subexpr_tempsrh  r  )r   rZ   rz  rH  c_ops   &&   r4   r,  -InPlaceAssignmentNode.generate_execution_code5  sZ   dhh88TXXS$$T*,,T2}}4<DT\$((9:3#7#7#7xx###dhh cdz!chhoood>N>N>Y>YZe>f>fdhh ]^,,S=!!!$((RS JJszz|T3::<HI**40t$""4(tr3   c                r    V P                   P                  V4       V P                  P                  V4       R # r   r  r   s   &&r4   r   InPlaceAssignmentNode.annotateP  r  r3   c                    ^RI Hp VP                  V P                  V P                  V P
                  V P                  4      # )rG   r  )r   r  
binop_noder9   r  rz  rH  rN  s   & r4   create_binop_node'InPlaceAssignmentNode.create_binop_nodeT  s,    ##DHHdmmTXXtxxPPr3   rz  rH  N)r+   r,   r-   r.   r   r   r   r,  r   r  r2   rv   r   s   @r4   r  r    s0     $ %.K1
6 Q Qr3   r  c                   \   a  ] tR tRt o RR.tR t]P                  tRt	R t
R tR tR	tV tR
# )PrintStatNodeiY  	arg_tuplerS   c                   V P                   '       d2   V P                   P                  V4      pVP                  V4      V n         V P                  P                  V4      pVP                  V4      V n        VP	                  \
        4       \        V P                  P                  4      ^8X  d(   V P                  '       d   VP	                  \        4       V # r  )
rS   r   coerce_to_pyobjectr 	  r  printing_utility_coderM   rW   append_newlineprinting_one_utility_code)r   r   rS   r 	  s   &&  r4   r   !PrintStatNode.analyse_expressionsb  s    ;;;[[44S9F 33C8DKNN66s;	"55c:23t~~""#q(T-@-@-@  !:;r3   zPython print statementc           
     J   VP                  V P                  4       V P                  '       d7   V P                  P                  V4       V P                  P	                  4       pMR p\        V P                  P                  4      ^8X  d   V P                  '       d   V P                  P                  ^ ,          pVP                  V4       VP                  RV: RVP	                  4       : RVP                  V P                  4      : 24       VP                  V4       VP                  V4       MV P                  P                  V4       VP                  RVV P                  P	                  4       V P                  VP                  V P                  4      3,          4       V P                  P                  V4       V P                  P                  V4       V P                  '       d9   V P                  P                  V4       V P                  P                  V4       R# R# )r?  zif (__Pyx_PrintOne(r   r  z#if (__Pyx_Print(%s, %s, %d) < 0) %sN)rS  r9   rS   r  r%  rM   r 	  rW   r	  rU   r  rh  r  )r   rZ   stream_resultr?  s   &&  r4   r,  %PrintStatNode.generate_execution_codep  s   dhh;;;KK006 KK113MMt~~""#q(T-@-@-@..%%a(C((.JJ!MMOOODHH-/0
 &&t,NN4 NN33D9JJ5!NN,,.''OODHH-	9/ /0 NN11$7NN%%d+;;;KK..t4KK""4( r3   c                    V P                   '       d   V P                   P                  W4       V P                  P                  W4       R # r   )rS   r'  r 	  r_  s   &&&r4   r'  +PrintStatNode.generate_function_definitions  s/    ;;;KK55c@44S?r3   c                    V P                   '       d   V P                   P                  V4       V P                  P                  V4       R # r   )rS   r   r 	  r   s   &&r4   r   PrintStatNode.annotate  s/    ;;;KK  &%r3   )r 	  rS   N)r+   r,   r-   r.   r   r   r   r   r  r   r,  r'  r   r2   rv   r   s   @r4   r  r  Y  s<      )K	 ..K*K)B@
& &r3   r  c                   T   a  ] tR tRt o R.tR t]P                  tRt	R t
R tRtV tR# )	ExecStatNodei  rW   c                    \        V P                  4       F5  w  r#VP                  V4      pVP                  V4      pW0P                  V&   K7  	  VP	                  \
        P                  4       V # r   )r  rW   r   r	  r  r   pyexec_utility_coder   r   r5  r?  s   &&  r4   r    ExecStatNode.analyse_expressions  s]    		*FA))#.C((-CIIaL + 	W889r3   zPython exec statementc           	        VP                  V P                  4       . pV P                   F3  pVP                  V4       VP	                  VP                  4       4       K5  	  \        VR R .R^\        V4      ,
           ,           4      pVP                  P                  \        P                  RR7      pVP                  RV3V,           ,          4       V P                   F%  pVP                  V4       VP                  V4       K'  	  VP                  VP                  W@P                  4      4       VP!                  V\        4       VP#                  V\        4       VP                  P%                  V4       R# )r?  NTr  z%s = __Pyx_PyExec3(%s, %s, %s);)rS  r9   rW   r  r  r%  rp  rM   r  r  r
   r   rU   rh  r  r  r  r  r  )r   rZ   rW   r?  temp_results   &&   r4   r,  $ExecStatNode.generate_execution_code  s   dhh99C((.KK(  TS#J|#d)445nn22:3L3LY]2^

48MNO99C&&t,NN4   	

##K:	<^4k>:##K0r3   c                N    V P                    F  pVP                  V4       K  	  R # r   rW   r   r  s   && r4   r   ExecStatNode.annotate      99CLL r3   r*   N)r+   r,   r-   r.   r   r   r   r   r  r   r,  r   r2   rv   r   s   @r4   r	  r	    s2     
 (K ..K)K1$ r3   r	  c                   L   a  ] tR tRt o R.tRtR tR tR tRt	R t
R	 tR
tV tR# )DelStatNodei  rW   Fc                N    V P                    F  pVP                  V4       K  	  R # r   )rW   rV  r  s   && r4   r    DelStatNode.analyse_declarations  s    99C**3/ r3   c                j   \        V P                  4       EF  w  r#VP                  VR 4      ;q0P                  V&   VP                  P                  '       g/   VP
                  '       dg   VP                  P                  '       dK   VP
                  '       d7   VP                  P                  '       d   \        VP                  R4       K  K  K  VP                  P                  '       d;   VP                  P                  P                  '       d   V P                  V4       EK  VP                  P                  '       d   \        VP                  R4       EKE  VP                  '       d,   VP                   P                  \"        P$                  J d   EK  \        VP                  R4       EK  	  V # )NzDeletion of global C variablezDeletion of non-heap C++ objectz&Deletion of non-Python, non-C++ object)r  rW   rb  r  r  r  r2  r:  
is_cglobalr   r9   r  r  r  r   r5  r  r   bytearray_typer	  s   &&  r4   r   DelStatNode.analyse_expressions  s   		*FA!$!>!>sD!IIC))A,xx###8S8S8S;;;399#7#7#7#''#BC $8;SXX%7%7%D%D%Ds#&&&cgg@A!!!chhmmw7M7M&McggGH + r3   c                    V P                    F1  pVP                  P                  '       g   K!  V P                  4        K3  	  R # r   )rW   r  r  r   r  s   && r4   r  DelStatNode.nogil_check  s*    99Cxx###  r3   zDeleting Python objectc                   VP                  V P                  4       V P                   EF3  pVP                  P                  '       gW   VP                  P
                  '       g;   VP                  '       dG   VP                  P                  \        P                  J d   VP                  WP                  R 7       K  VP                  P                  '       g   K  VP                  P                  P                  '       g   K  VP                  V4       VP!                  RVP#                  4       ,          4       VP%                  V4       VP'                  V4       EK6  	  R# ))ignore_nonexistingz
delete %s;N)rS  r9   rW   r  r  r2  r5  r  r   r!	  generate_deletion_coder&	  r  r  r  r  rU   r   rh  r  r  s   && r4   r,  #DelStatNode.generate_execution_code  s    dhh99C$$$HH///$$$':P:P)P**-D-D + FSXX%7%7%D%D%D,,T2

<#**,67**40t$ r3   c                N    V P                    F  pVP                  V4       K  	  R # r   r	  r  s   && r4   r   DelStatNode.annotate  r	  r3   r*   N)r+   r,   r-   r.   r   r&	  r   r   r  r   r,  r   r2   rv   r   s   @r4   r	  r	    s9     
 (K0"!
 +K% r3   r	  c                   0   a  ] tR tRt o . tR tR tRtV tR# )r3  i  c                    V # r   r*   r   s   &&r4   r    PassStatNode.analyse_expressions  rJ  r3   c                    VP                   P                  R ,          '       d   VP                  V P                  4       R# R# )r  N)r&  r  rS  r9   r   s   &&r4   r,  $PassStatNode.generate_execution_code  s.    &&{33MM$((# 4r3   r*   N)	r+   r,   r-   r.   r   r   r,  r2   rv   r   s   @r4   r3  r3    s      K$ $r3   r3  c                   6   a a ] tR tRt oRtV 3R ltRtVtV ;t# )IndirectionNodei
  zz
This adds an indirection so that the node can be shared and a subtree can
be removed at any time by clearing self.stats.
c                L   < \         SV `  V^ ,          P                  VR7       R# )r   rZ  N)rm   r   r9   )r   rC  rP   s   &&r4   r   IndirectionNode.__init__  s    qU3r3   r*   )	r+   r,   r-   r.   r   r   r2   rv   rw   rx   s   @@r4   r1	  r1	  
  s     
4 4r3   r1	  c                   4   a  ] tR tRt o . tRtR tR tRtV t	R# )BreakStatNodei  Tc                    V # r   r*   r   s   &&r4   r   !BreakStatNode.analyse_expressions  rJ  r3   c                    VP                  V P                  4       VP                  '       g   \        V P                  R 4       R# VP	                  VP                  4       R# )zbreak statement not inside loopN)rS  r9   break_labelr   rE  r   s   &&r4   r,  %BreakStatNode.generate_execution_code  s?    dhh$((=>MM$**+r3   r*   N
r+   r,   r-   r.   r   r  r   r,  r2   rv   r   s   @r4   r5	  r5	    s     KM, ,r3   r5	  c                   4   a  ] tR tRt o . tRtR tR tRtV t	R# )ContinueStatNodei$  Tc                    V # r   r*   r   s   &&r4   r   $ContinueStatNode.analyse_expressions)  rJ  r3   c                    VP                   '       g   \        V P                  R 4       R# VP                  V P                  4       VP	                  VP                   4       R# )z"continue statement not inside loopN)continue_labelr   r9   rS  rE  r   s   &&r4   r,  (ContinueStatNode.generate_execution_code,  sB    """$((@Adhhd))*r3   r*   Nr;	  r   s   @r4   r=	  r=	  $  s     KM+ +r3   r=	  c                   ^   a  ] tR tRt o R.tRtRtRtRtR t	R t
RtR tR	 tR
 tR tRtV tR# )r  i4  r   TFc                v   VP                   pW n         V'       g   \        V P                  R 4       V # V P                  '       Ed(   V P                  '       d   \        V P                  R4       V P                  P                  V4      V n        VP                  '       g   VP                  '       d#   \        V P                  P                  R4       V # V P                  P                  VP                   V4      V n        VP                  R,          '       g   VP                  R,          '       d;   VP                  '       g)   VP                  V4      '       d   VP                  V4       V # VP                  '       g;   VP                  '       g)   VP                  '       g   \        V P                  R4       V # )z!Return not inside a function bodyz$Return with value in async generatorz"Return with value in void functionr  r  zReturn value required)r%  r   r9   r   in_async_genr   r  r  r'  r  r  can_coerce_to_pyobjectr6  )r   r   r%  s   && r4   r   "ReturnStatNode.analyse_expressionsD  s:   oo&$((?@K:::   dhh FG11#6DJ"""k&?&?&?djjnn&JK  "ZZ11#//3G
>>),,{0K0K&222{7Y7YZ]7^7^#==cB 	  ''''333'555dhh 78r3   c                b    V P                   P                  '       d   V P                  4        R # R # r   )r%  r  r   r   s   &&r4   r  ReturnStatNode.nogil_check\  s#    '''NN (r3   zReturning Python objectc           	     "   VP                  V P                  4       V P                  '       g   R # V P                  pV P                  P                  '       dG   VP                  \        P                  V P                  4       V'       d   VP                  '       d   R pV'       d   VP                  V4       V P                  P                  '       d\   ^RIHp VP                  \        P                  V P                  VP                  VVV P                  R7       VP                  V4       MbVP!                  V4       VP#                  \        P                  : RVP%                  V P                  4      : R24       VP                  V4       VP'                  V4       MV P                  P                  '       d,   VP)                  \        P                  V P                  4       MAV P                  P*                  '       d&   V P-                  WP                  P.                  4       VP0                  P2                  R,          '       g$   VP0                  P2                  R,          '       dQ   VP5                  \        P                  V P                  V P                  VP6                  P8                  '       * R7       VP6                  P;                  4        F  w  rEVP=                  WE4       K  	  VP?                  VP@                  4       R # )Nr  )	lhs_cnamelhs_typelhs_posrH  rZ   r  r  r  r  r  r  )!rS  r9   r%  r   r  rI  r	   r  r  r  r2  r   r  put_acquire_memoryviewslicer  r  r  rU   r  r  rA  r  
put_returnr-  r&  r  rB  r  r  temps_holding_referencer  rE  rF  )r   rZ   r   r  r  r  s   &&    r4   r,  &ReturnStatNode.generate_execution_codeb  s1   dhh

'''V00$2B2BC**40222(66$11!--!II!22 7 4 33D9**40

''OOD$4$457 8 33D9T"+++(()<)<d>N>NO!!///&6&6&D&DE&&y11T5E5E5P5PQ\5]5]!!## ,,..222	 "   >>AACKE!!%. D 	d''(r3   c                    V P                   '       d   VP                  R 4       VP                  \        P                  : RV: R24       R# )z%#pragma omp critical(__pyx_returning)r  r  N)in_parallelputln_openmprU   r	   r  )r   rZ   r   s   &&&r4   rO	  ReturnStatNode.put_return  s4    EF

!4!4e<=r3   c                \    V P                   e   V P                   P                  W4       R # R # r   )r   r'  r_  s   &&&r4   r'  ,ReturnStatNode.generate_function_definitions  s#    ::!JJ44S? "r3   c                d    V P                   '       d   V P                   P                  V4       R # R # r   )r   r   r   s   &&r4   r   ReturnStatNode.annotate  s"    :::JJ% r3   )r%  r   N)r+   r,   r-   r.   r   r  in_generatorrE	  rS	  r   r  r   r,  rO	  r'  r   r2   rv   r   s   @r4   r  r  4  sP      )KMLL K0 ,K1)f>
@& &r3   r  c                   l   a  ] tR tRt o . ROtRtRtRtRtR t	]
P                  tRtR tR tR	 tR
tV tR# )RaiseStatNodei  TNFc                B   V P                   '       d2   V P                   P                  V4      pVP                  V4      V n         V P                  '       d   V P                  P                  V4      pV P                  '       dy   VP
                  \        P                  J g   VP
                  P                  '       g?   ^RI	H
p V! VP                  VP                  V4      .RR7      pVP                  VRR7      pVP                  V4      V n        V P                  '       d2   V P                  P                  V4      pVP                  V4      V n        V P                  '       d2   V P                  P                  V4      pVP                  V4      V n        V P                   '       Edv   V P                  '       Egc   V P                  '       EgP   T P                   p^RIH	p \        WxP                   4      '       dI   VP"                  '       g7   VP$                  e   VP$                  P"                  '       g   VP&                  pVP(                  '       d   VP*                  P,                  '       d   ^RIHp	 VP0                  V n        V P2                  R8X  d
   RV n         V # V P2                  R	8X  dk   VP4                  '       dY   VP0                  R
8X  dH   VP6                  '       d6   VP6                  P8                  '       d   V P:                  '       g   RV n         V # )rG   r  T)rW   slow)skip_childrenr  N)SymtabMemoryErrorStopIteration__next__)exc_typer   r	  	exc_valuewrap_tuple_valuer  r   
tuple_typer  r  r  r9   exc_tbcauser   rN   r  rW   r 	  r  r  r:  
is_builtinr`	  rp   builtin_exc_nameis_local_scoper  r  in_try_block)
r   r   rd	  re	  r  rh	  ri	  excr  r`	  s
   &&        r4   r   !RaiseStatNode.analyse_expressions  s&   ===}}2237H$77<DM>>>44S9I$$$>>W%7%77y~~?]?]?]4 ))--y?[?[\_?`>ahl mI ) 7 74 7 PI&99#>DN;;;[[..s3F 33C8DK:::JJ,,S1E11#6DJ===--C#3 8 899cmm&?CMMDVDVDVll{{{syy333$(+%((M9$(DM  ++>***sxx:/E(((S-=-=-N-N-N --- %)DMr3   Raising exceptionc                H   VP                  V P                  4       V P                  R 8X  d4   VP                  RVP	                  V P                  4      ,          4       R# V P                  R8X  ds   V P
                  '       ga   VP                  R\        P                  ,          4       VP                  RVP	                  R4      ,          4       RVP                  n	        R# V P
                  '       d   V P
                  P                  V4       V P
                  P                  4       pV P
                  P                  '       d0   VP                  P                  V P
                  P                  4       MRpV P                   '       d7   V P                   P                  V4       V P                   P                  4       pMRpV P"                  '       d7   V P"                  P                  V4       V P"                  P                  4       pMRpV P$                  '       d7   V P$                  P                  V4       V P$                  P                  4       pMRpVP                  P'                  \(        4       VP                  RV: R	V: R	V: R	V: R
2	4       V P
                  V P                   V P"                  V P$                  3 F/  pV'       g   K  VP+                  V4       VP-                  V4       K1  	  VP                  VP	                  V P                  4      4       R# )ra	  zPyErr_NoMemory(); %sNrb	  z%s = 1;r?  Tr?  z__Pyx_Raise(r   r  )rS  r9   rk	  rU   r  rd	  r	   rR  r  rQ  r  r%  r  r&  r  r:  re	  rh	  ri	  r  raise_utility_coderh  r  )r   rZ   	type_code
value_codetb_code
cause_coder  s   &&     r4   r,  %RaiseStatNode.generate_execution_code  s$   dhh  M1JJ-0IIJ""o5dmmmJJy6#G#GGHJJutt44559DNN2===MM2248//1I}}$$$  778K8KLI>>>NN33D9113JJ;;;KK006kk++-GG:::JJ//5--/JJ))*<=

		 MM4>>4;;

KCs**40t$ L 	

OODHH%	'r3   c                R   V P                   e   V P                   P                  W4       V P                  e   V P                  P                  W4       V P                  e   V P                  P                  W4       V P                  e   V P                  P                  W4       R # R # r   )rd	  r'  re	  rh	  ri	  r_  s   &&&r4   r'  +RaiseStatNode.generate_function_definitions  sw    ==$MM77B>>%NN88C;;"KK55c@::!JJ44S? "r3   c                r   V P                   '       d   V P                   P                  V4       V P                  '       d   V P                  P                  V4       V P                  '       d   V P                  P                  V4       V P                  '       d   V P                  P                  V4       R # R # r   )rd	  r   re	  rh	  ri	  r   s   &&r4   r   RaiseStatNode.annotate  ss    ===MM""4(>>>NN##D);;;KK  &:::JJ% r3   )rk	  ri	  rh	  rd	  re	  )rd	  re	  rh	  ri	  )r+   r,   r-   r.   r   r  rk	  rf	  rm	  r   r   r   r  r   r,  r'  r   r2   rv   r   s   @r4   r\	  r\	    sN      ?KML(T ..K%K.'`@& &r3   r\	  c                   P   a  ] tR tRt o . tRtR t]P                  t	Rt
R tRtV tR# )ReraiseStatNodei&  Tc                    V # r   r*   r   s   &&r4   r   #ReraiseStatNode.analyse_expressions+  rJ  r3   rp	  c           	     R   VP                  V P                  4       VP                  P                  pV'       d   VP                  P                  \        4       VP                  V^ ,          \        4       VP                  V^,          \        4       VP                  V^,          \        4       VP                  R\        V4      ,          4       TP                  RP                  V Uu. uF  q3 R2NK	  	  up4      4       MAVP                  P                  \        P                  ! RR4      4       VP                  R4       VP                  4       '       d   VP!                  V P                  RR7       VP                  VP#                  V P                  4      4       R	# u upi )
r   &__Pyx_ErrRestoreWithState(%s, %s, %s);rI   z = 0; ReRaiseExceptionExceptions.cz__Pyx_ReraiseException();TreraiseN)rS  r9   r  exc_varsr&  r  rJ  r  r   r`  rU   rp  r   r   r  r  put_trace_exceptionr  )r   rZ   re  varnames   &&  r4   r,  'ReraiseStatNode.generate_execution_code1  s*   dhh~~&&--.LMT!Wn5T!Wn5d1g~6JJ?%+MNJJsxx4 H49F!34 HIJ--''(:NKMJJ23??$$TXXt$<

4??488,- !Is   +F$r*   N)r+   r,   r-   r.   r   r  r   r   r   r  r   r,  r2   rv   r   s   @r4   r}	  r}	  &  s.     KM ..K%K. .r3   r}	  c                   J   a  ] tR tRt o . R	OtRtR tR tR tR t	R t
RtV tR# )
AssertStatNodeiE  Nc                    V P                   e   Q R4       hV P                  f   Q R4       hV P                  P                  V4       R # )Nz0Message should have been replaced in PostParse())r   	exceptionr   r   s   &&r4   r   #AssertStatNode.analyse_declarationsO  s@    zz!U#UU!~~)]+]])++C0r3   c                    V P                   P                  V4      V n         V P                  P                  V4      V n        V # r   )	conditionanalyse_temp_boolean_expressionr	  r   r   s   &&r4   r   "AssertStatNode.analyse_expressionsT  s3    GGL;;C@r3   c                   VP                   P                  \        P                  ! R R4      4       VP	                  R4       VP	                  R4       VP                  V P                  4       V P                  P                  V4       VP	                  RV P                  P                  4       ,          4       V P                  P                  V4       VP	                  R4       V P                  P                  V4       V P                  P                  V4       VP	                  R4       VP	                  R4       VP	                  RVP                  V P                  RR	7      ,          4       VP	                  R
4       R# )AssertionsEnabledr	  z!#ifndef CYTHON_WITHOUT_ASSERTIONSz+if (unlikely(__pyx_assertions_enabled())) {r  r  r  zif ((1)); else %sF)rP  r  N)r&  r  r   r  rU   rS  r9   r	  r  r   r	  r,  rh  r  r  r   s   &&r4   r,  &AssertStatNode.generate_execution_codeY  s   ))##$7H	J

67

@Adhh//5

"T^^%:%:%<<	>..t4

	--d3!!$'

	

7

&)NNO

8r3   c                r    V P                   P                  W4       V P                  P                  W4       R # r   )r	  r'  r	  r_  s   &&&r4   r'  ,AssertStatNode.generate_function_definitionsn  s&    44S?44S?r3   c                r    V P                   P                  V4       V P                  P                  V4       R # r   )r	  r   r	  r   s   &&r4   r   AssertStatNode.annotater  s&    %%r3   )r	  r	  )r	  r   r	  )r+   r,   r-   r.   r   r	  r   r   r,  r'  r   r2   rv   r   s   @r4   r	  r	  E  s0      6KI1

*@& &r3   r	  c                   F   a  ] tR tRt o RR.tR tR tR tR tR t	R	t
V tR
# )
IfStatNodeiw  
if_clauseselse_clausec                    V P                    F  pVP                  V4       K  	  V P                  '       d   V P                  P                  V4       R # R # r   )r	  r   r	  r   r   	if_clauses   && r4   r   IfStatNode.analyse_declarations  sC    I**3/ )11#6 r3   c                    V P                    Uu. uF  q"P                  V4      NK  	  upV n         V P                  '       d!   V P                  P                  V4      V n        V # u upi r   )r	  r   r	  r	  s   && r4   r   IfStatNode.analyse_expressions  sU    OS_)88=_#//CCCHD `s   A$c                ,   VP                  V P                  4       VP                  4       p\        V P                  4      pV P
                  '       g
   V^,          p\        V P                  4       F  w  rEVP                  WWC8H  R7       K  	  V P
                  '       dc   VP                  V P
                  P                  4       VP                  R4       V P
                  P                  V4       VP                  R4       VP                  V4       R# )rG   )is_last
/*else*/ {r  N)
rS  r9   r  rM   r	  r	  r  r,  rU   rG  )r   rZ   r7  lastr5  r	  s   &&    r4   r,  "IfStatNode.generate_execution_code  s    dhhNN$	4??#AID%doo6LA--dqy-Q 7MM$**../JJ|$44T:JJsOy!r3   c                    V P                    F  pVP                  W4       K  	  V P                  e   V P                  P                  W4       R # R # r   )r	  r'  r	  )r   r   rZ   clauses   &&& r4   r'  (IfStatNode.generate_function_definitions  sC    ooF00; &'::3E (r3   c                    V P                    F  pVP                  V4       K  	  V P                  '       d   V P                  P                  V4       R # R # r   )r	  r   r	  )r   rZ   r	  s   && r4   r   IfStatNode.annotate  sC    It$ )%%d+ r3   )r	  r	  Nr  r   s   @r4   r	  r	  w  s0       /K7"F, ,r3   r	  c                   J   a  ] tR tRt o RR.tRtR tR tR tR t	R	 t
R
tV tR# )IfClauseNodei  r	  r   Nc                <    V P                   P                  V4       R # r   )r   r   r   s   &&r4   r   !IfClauseNode.analyse_declarations  s    		&&s+r3   c                    V P                   P                  V4      V n         V P                  P                  V4      V n        V # r   )r	  r	  r   r   r   s   &&r4   r    IfClauseNode.analyse_expressions  s3    GGLII11#6	r3   c                   V P                   P                  V4       VP                  V P                  4       V P                   P	                  4       pV P
                  '       d   V P
                  : R V: R2pVP                  RV,          4       V P                   P                  V4       V P                   P                  V4       V P                  P                  V4       VP                  V P                  RR7       V'       g.   V P                  P                  '       g   VP                  V4       VP                  R4       R# )r  r  r   Fr  r  N)r	  r  rS  r9   r   branch_hintrU   rh  r  r   r,  r  rE  )r   rZ   r7  r	  r	  s   &&&& r4   r,  $IfClauseNode.generate_execution_code  s    //5dhhNN))+	$($4$4i@I

;*+--d3!!$'		))$/dhhe,499222MM)$

3r3   c                r    V P                   P                  W4       V P                  P                  W4       R # r   )r	  r'  r   r_  s   &&&r4   r'  *IfClauseNode.generate_function_definitions  s&    44S?		//:r3   c                r    V P                   P                  V4       V P                  P                  V4       R # r   )r	  r   r   r   s   &&r4   r   IfClauseNode.annotate  s&    %		4 r3   )r   r	  )r+   r,   r-   r.   r   r	  r   r   r,  r'  r   r2   rv   r   s   @r4   r	  r	    s4      'KK,
;! !r3   r	  c                   @   a  ] tR tRt o RR.tR tR tR tR tRt	V t
R	# )
SwitchCaseNodei  
conditionsr   c                N    V P                    F  pVP                  V4       K  	  R # r   )r	  r  r   rZ   r  s   && r4   "generate_condition_evaluation_code1SwitchCaseNode.generate_condition_evaluation_code  s    OOD))$/ $r3   c                   \        V P                  4      pVP                  P                  R ,          p\	        V P                  ^4       Fi  w  rEVP                  RVP                  4       ,          4       VP                  VP                  4       V'       g   KP  WB8  g   KX  VP                  R4       Kk  	  V P                  P                  V4       VP                  V P                  RR7       VP                  R4       R# )r  zcase %s:rf  Fr  rj  N)rM   r	  r&  r  r  rU   r   rS  r9   r   r,  )r   rZ   num_conditionsline_tracing_enabledr5  r  s   &&    r4   r,  &SwitchCaseNode.generate_execution_code  s    T__-#//::;G !4GAJJzDKKM12MM$((###(:

01 5 			))$/dhhe,

8r3   c                    V P                    F  pVP                  W4       K  	  V P                  P                  W4       R # r   )r	  r'  r   )r   r   rZ   r  s   &&& r4   r'  ,SwitchCaseNode.generate_function_definitions  s0    OOD..s9 $		//:r3   c                    V P                    F  pVP                  V4       K  	  V P                  P                  V4       R # r   )r	  r   r   r	  s   && r4   r   SwitchCaseNode.annotate  s.    OODMM$ $		4 r3   r*   N)r+   r,   r-   r.   r   r	  r,  r'  r   r2   rv   r   s   @r4   r	  r	    s*       (K0;
! !r3   r	  c                   :   a  ] tR tRt o . ROtR tR tR tRtV t	R# )SwitchStatNodei  c                   V P                   P                  V4       V P                   F  pVP                  V4       K  	  VP	                  V P
                  4       VP                  R V P                   P                  4       ,          4       V P                   F  pVP                  V4       K  	  V P                  e?   VP                  R4       V P                  P                  V4       VP                  R4       MVP                  R4       VP                  R4       V P                   P                  V4       V P                   P                  V4       R# )r  Nre  rj  zdefault: break;r  )testr  casesr	  rS  r9   rU   r   r,  r	  rh  r  r   rZ   cases   && r4   r,  &SwitchStatNode.generate_execution_code  s    		**40 JJD33D9 dhh

?TYY%5%5%778JJD((. 'JJz"44T:JJx 
 JJ()

3		((.		T"r3   c                    V P                   P                  W4       V P                   F  pVP                  W4       K  	  V P                  e   V P                  P                  W4       R # R # r   )r	  r'  r	  r	  )r   r   rZ   r	  s   &&& r4   r'  ,SwitchStatNode.generate_function_definitions  sU    		//:JJD..s9 '::3E (r3   c                    V P                   P                  V4       V P                   F  pVP                  V4       K  	  V P                  e   V P                  P                  V4       R # R # r   )r	  r   r	  r	  r	  s   && r4   r   SwitchStatNode.annotate  sS    		4 JJDMM$ '%%d+ (r3   r*   N)r	  r	  r	  )
r+   r,   r-   r.   r   r,  r'  r   r2   rv   r   s   @r4   r	  r	    s!      3K#.F, ,r3   r	  c                       ] tR tRtRtR# )LoopNodei#  r*   Nr,  r*   r3   r4   r	  r	  #  r-  r3   r	  c                   F   a  ] tR tRt o . R	OtR tR tR tR tR t	Rt
V tR# )
WhileStatNodei'  c                    V P                   P                  V4       V P                  '       d   V P                  P                  V4       R # R # r   )r   r   r	  r   s   &&r4   r   "WhileStatNode.analyse_declarations0  s9    		&&s+11#6 r3   c                   V P                   '       d!   V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  '       d!   V P                  P                  V4      V n        V # r   )r	  r	  r   r   r	  r   s   &&r4   r   !WhileStatNode.analyse_expressions5  sa    >>>!^^KKCPDNII11#6	#//CCCHDr3   c                v   VP                  V P                  4       VP                  4       pVP                  R 4       V P                  '       d   V P                  P                  V4       V P                  P                  V4       VP                  RV P                  P                  4       ,          4       V P                  P                  V4       V P                  P                  V4       VP                  VP                  4       VP                  R4       VP                  pVP                  V4       V P                  '       dc   VP                  V P                  P                  4       VP                  R4       V P                  P                  V4       VP                  R4       VP                  V4       R# )zwhile (1) {zif (!%s) break;r  r	  N)rS  r9   new_loop_labelsrU   r	  r  rh  r   r  r   r,  rG  rA	  r9	  set_loop_labelsr	  )r   rZ   old_loop_labelsr9	  s   &&  r4   r,  %WhileStatNode.generate_execution_code=  s2   dhh..0

	>>>NN33D9NN11$7JJ!DNN$9$9$;;=NN%%d+		))$/t**+

3&&_-MM$**../JJ|$44T:JJsO{#r3   c                    V P                   '       d   V P                   P                  W4       V P                  P                  W4       V P                  e   V P                  P                  W4       R # R # r   )r	  r'  r   r	  r_  s   &&&r4   r'  +WhileStatNode.generate_function_definitionsT  sT    >>>NN88C		//:'::3E (r3   c                    V P                   '       d   V P                   P                  V4       V P                  P                  V4       V P                  '       d   V P                  P                  V4       R # R # r   )r	  r   r   r	  r   s   &&r4   r   WhileStatNode.annotate[  sT    >>>NN##D)		4 %%d+ r3   )r   r	  r	  N)r	  r   r	  r  r   s   @r4   r	  r	  '  s+      7K7
$.F, ,r3   r	  c                   X   a  ] tR tRt o . ROtR;ttR;ttR;t	t
R tR tR tR tRtV tR# )	DictIterationNextNodeic  Nc                t    \         P                  WP                  VVVVVVVR \        P                  R7       R# )T)	dict_objexpected_sizepos_index_var
key_targetvalue_targettuple_targetis_dict_flagis_tempr  Nr   r   r9   r
   c_bint_type)r   r	  r	  r	  r	  r	  r	  r	  s   &&&&&&&&r4   r   DictIterationNextNode.__init__o  s;    ,,''!%%%'' 	 
	)r3   c                   ^RI Hp V P                  P                  V4      V n        V P                  P                  V4      V n        V P
                  '       d!   V P
                  P                  V4      V n        V P                  '       d   V P                  P                  V4      V n        VP                  V P                  P                  \        P                  4      V n        V P                  P                  V P                  P                  V4      V n        V P                   '       d   V P                   P                  V4      V n        VP                  V P                   P                  \        P                  R7      V n        V P"                  P                  V P                   P                  V4      V n        V P&                  '       d   V P&                  P                  V4      V n        VP                  V P&                  P                  \        P                  4      V n        V P(                  P                  V P&                  P                  V4      V n        V P,                  P                  V4      V n        V # rG   r  r  )r   r  r	  r   r	  r	  r	  r   TempNoder9   r
   r   key_refr'  r  coerced_key_varr	  	value_refcoerced_value_varr	  	tuple_refcoerced_tuple_varr	  r   r   r  s   && r4   r   )DictIterationNextNode.analyse_expressions}  s   33C8!//==cB!%!3!3!A!A#!FD???"ooBB3GDO$--doo.A.A:C\C\]DL#'<<#9#9$//:N:NPS#TD  $ 1 1 F Fs KD&//0A0A0E0EJLeLe/fDN%)^^%=%=d>O>O>T>TVY%ZD" $ 1 1 F Fs KD&//0A0A0E0EzG`G`aDN%)^^%=%=d>O>O>T>TVY%ZD" --;;C@r3   c                <    V P                   P                  W4       R # r   )r	  r'  r_  s   &&&r4   r'  3DictIterationNextNode.generate_function_definitions  s    33C>r3   c                h   VP                   P                  \        P                  ! R R4      4       V P                  P                  V4       . p. pV P                  V P                  V P                  3V P                  V P                  V P                  3V P                  V P                  V P                  33 FY  w  rEpVf   RpM;VP                  WEV34       VP!                  V4       RVP#                  4       ,          pVP                  V4       K[  	  VP$                  P'                  \(        P*                  R4      pVP-                  V: RV P                  P/                  4       : RV P0                  P#                  4       : RV P2                  P#                  4       : RV^ ,          : RV^,          : RV^,          : RV P4                  P#                  4       : R	24       VP-                  R
V,          4       VP-                  VP7                  RV,          V P8                  4      4       VP$                  P;                  V4       V F  w  rEpVP=                  V4       K  	  V F  w  rEpVP                  V4       K  	  V F(  w  rEpVP?                  WQ4       VPA                  V4       K*  	  R# )	dict_iter
Optimize.cNr  &%sFz = __Pyx_dict_iter_next(r   r  r  if (unlikely(%s == 0)) break;%s == -1)!r&  r  r   r  r	  r  r	  r	  r	  r	  r	  r	  r	  r	  r	  r  allocater   r  r  r
   rJ  rU   r%  r	  r	  r	  r  r9   r  generate_gotrefr  release)	r   rZ   r  temp_addressesr6  r   r  addrresult_temps	   &&       r4   r,  -DictIterationNextNode.generate_execution_code  s-   ))+*A*A+|*\]..t4%)\\43G3G$Y%)^^T5K5KTM^M^$_%)^^T5K5KTM^M^$_$aC ~""C#89T"szz|+!!$'$a nn22:3H3H%P

MM##%%%'%%'111$$&	
 		 	

2[@A

4%%j;&>IJ##K0 $/C% $/#.C++D1 $/#.C++F9KK $/r3   )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,  r2   rv   r   s   @r4   r	  r	  c  sH     QK !%$Og$((	$((	)*?' 'r3   r	  c                   H   a  ] tR tRt o . ROtR;ttR tR tR t	R t
RtV tR# )	SetIterationNextNodei  Nc                p    \         P                  WP                  VVVVVR \        P                  R7	       R# )T)set_objr	  r	  r	  is_set_flagr	  r  Nr	  )r   r
  r	  r	  r	  r
  s   &&&&&&r4   r   SetIterationNextNode.__init__  s5    ++''%#'' 	 	)r3   c                0   ^RI Hp V P                  P                  V4      V n        V P                  P                  V4      V n        V P
                  P                  V4      V n        V P                  P                  V4      V n        VP                  V P                  P                  \        P                  R7      V n        V P                  P                  V P                  P                  V4      V n        V P                   P                  V4      V n        V # r	  )r   r  r
  r   r	  r	  r	  r   r	  r9   r
   r   r	  r'  r  r	  r
  r	  s   && r4   r   (SetIterationNextNode.analyse_expressions  s    ||11#6!//==cB!//==cB --BB3G"++D,=,=,A,A
HaHa+b!%!9!9$:K:K:P:PRU!V++99#>r3   c                <    V P                   P                  W4       R # r   )r
  r'  r_  s   &&&r4   r'  2SetIterationNextNode.generate_function_definitions  s    223=r3   c                   VP                   P                  \        P                  ! R R4      4       V P                  P                  V4       V P                  pVP                  V4       VP                  P                  \        P                  R4      pVP                  V: RV P                  P                  4       : RV P                  P                  4       : RV P                   P                  4       : RVP                  4       : RV P"                  P                  4       : R24       VP                  RV,          4       VP                  VP%                  RV,          V P&                  4      4       VP                  P)                  V4       VP+                  V4       V P,                  P                  V4       V P.                  P1                  V P,                  V4       VP3                  V4       R	# )
set_iterr
  Fz = __Pyx_set_iter_next(r   r  r  r
  r
  N)r&  r  r   r  r
  r  r	  r
  r  r  r
   rJ  rU   r%  r	  r   r	  r
  r  r9   r  r	
  r	  r	  r  r

  )r   rZ   r	  r
  s   &&  r4   r,  ,SetIterationNextNode.generate_execution_code  sd   ))+*A*A*l*[\--d3NN	4 nn22:3H3H%P

LL""$%%'%%'##%
 	 	

2[@A

4%%j;&>IJ##K0 	!!$'77=2243I3I4P$r3   )r	  r	  r
  r	  r
  r	  r	  )r
  r	  r	  r	  r	  r
  )r+   r,   r-   r.   r   r	  r	  r   r   r'  r,  r2   rv   r   s   @r4   r
  r
    s3     GK %)(		)	>   r3   r
  c                     R V9   d2   VR ,          P                   '       d   \        V 3/ VB # \        V 3/ VB # \        V 3/ VB # )iterator)is_asyncAsyncForStatNodeForInStatNodeForFromStatNode)r9   r   s   &,r4   ForStatNoder"
    sJ    Rj>"""#C.2.. +++s)b))r3   c                   T   a  ] tR tRt o . ROtRtRtR tR tR t	R t
R tR	 tR
tV tR# )_ForInStatNodei  NFc                    \        R 4      h)z!must be implemented by subclasses)NotImplementedErrorr   s   &r4   _create_item_node _ForInStatNode._create_item_node  s    !"EFFr3   c                    V P                   P                  V4       V P                  P                  V4       V P                  '       d   V P                  P                  V4       V P                  4        R # r   )r  rV  r   r   r	  r'
  r   s   &&r4   r   #_ForInStatNode.analyse_declarations  sR    ..s3		&&s+11#6 r3   c                0   V P                   P                  V4      V n         V P                  P                  V4      V n        V P	                  4        V P
                  P                  V4      V n        V P                  '       g   V P                  P                  P                  '       g'   V P                  P                  P                  '       dA   V P                   P                  P                  V P                  P                  4      '       d   M5V P
                  P                  V P                   P                  V4      V n        V P                  P                  V4      V n        V P                  '       d!   V P                  P                  V4      V n        V # r   )r  r   r
  r   r'
  r   r
  r  r  r  r)  r'  r   r	  r   s   &&r4   r   "_ForInStatNode.analyse_expressions  s   kk66s;99#> II11#6	##***dmm.@.@.I.I.I  001C1CDD		++DKK,<,<cBDIII11#6	#//CCCHDr3   c                L   VP                  V P                  4       VP                  4       pV P                  P	                  V4       VP                  R 4       V P                  P                  V4       VP                  R4       V P                  P	                  V4       V P                  P                  V P                  V4       VP                  V P                  4       V P                  P                  V4       VP                  V P                  4       VP                  VP                  4       VP                  R4       V P                  P!                  V4       V P"                  '       d   VP%                  R4      MRpVP%                  R4      pTP'                  VP(                  .V.T;'       g    TV P                  R7      pVP                  V P                  4       V F  pV P                  P!                  V4       K   	  VP+                  V4       V P                  P-                  V4       V P"                  '       dO   VP                  R4       VP                  V4       V P"                  P                  V4       VP                  R4       VP                  V4       R# )rJ  r,  r  for_elseNfor_end)skip_to_labelr9   r	  )rS  r9   r	  r
  r  r  generate_for_loop_headerrU   r   r  r  write_trace_liner   r,  rG  rA	  rh  r	  r  label_interceptorr9	  r	  r  )r   rZ   r	  
else_labelr7  label_interceptsr  s   &&     r4   r,  &_ForInStatNode.generate_execution_code.  s   dhh..0..t4..t4

5		**40,,TYY=dhh'		))$/dhht**+

3 	,,T2373C3C3CT^^J/
NN9-	11K$11		 2 
 	dhh!AMM006 " 	_-  &JJ|$NN:&44T:JJsOy!r3   c                    V P                   P                  W4       V P                  P                  W4       V P                  P                  W4       V P                  e   V P                  P                  W4       R # R # r   )r  r'  r
  r   r	  r_  s   &&&r4   r'  ,_ForInStatNode.generate_function_definitionsX  s]    11#<33C>		//:'::3E (r3   c                8   V P                   P                  V4       V P                  P                  V4       V P                  P                  V4       V P                  '       d   V P                  P                  V4       V P
                  P                  V4       R # r   )r  r   r
  r   r	  r   r   s   &&r4   r   _ForInStatNode.annotate_  sj    T"t$		4 %%d+		4 r3   )r   r	  r   r
  r  )r  r   r
  r   r	  )r+   r,   r-   r.   r   r   r
  r'
  r   r   r,  r'  r   r2   rv   r   s   @r4   r$
  r$
    s=      HKDHG!"("TF! !r3   r$
  c                   *   a  ] tR tRt o RtR tRtV tR# )r 
  ih  Fc                @    ^RI Hp V! V P                  4      V n        R# )rG   )NextNodeN)r  r=
  r
  r   )r   r=
  s   & r4   r'
  ForInStatNode._create_item_nodem  s    'T]]+	r3   )r   N)r+   r,   r-   r.   r
  r'
  r2   rv   r   s   @r4   r 
  r 
  h  s      H, ,r3   r 
  c                   0   a  ] tR tRt o RtR tR tRtV tR# )r
  ir  Tc                    R V9  g   Q h^RI Hp VP                  VR,          P                  RR7      VR &   \        P
                  ! W3/ VB  R# )r   r  r
  Nr?  )r   r  AwaitIterNextExprNoder9   r$
  r   )r   r9   r   r  s   &&, r4   r   AsyncForStatNode.__init__z  sI    R44R
^5G5GT4R6
0R0r3   c                f    ^RI Hp VP                  V P                  4      V P                  n        R# )rG   r  N)r   r  AsyncNextNoder
  r   r?  rN  s   & r4   r'
  "AsyncForStatNode._create_item_node  s    !//>		r3   r*   N)	r+   r,   r-   r.   r
  r   r'
  r2   rv   r   s   @r4   r
  r
  r  s      H1? ?r3   r
  c                   z   a  ] tR tRt o . ROtRtRtRtRtRt	R t
R tR tR tR	 tR
RRRRRRR/tR tR tRtV tR# )r!
  i  FNz&For-loop using object bounds or targetc                    V P                   V P                  V P                  3 F1  pVP                  P                  '       g   K!  V P                  4        K3  	  R # r   )r  bound1bound2r  r  r   )r   r   r   s   && r4   r  ForFromStatNode.nogil_check  s9    ++t{{DKK8Avv!!!  9r3   c                    V P                   P                  V4       V P                  P                  V4       V P                  '       d   V P                  P                  V4       R # R # r   )r  rV  r   r   r	  r   s   &&r4   r   $ForFromStatNode.analyse_declarations  sK    ..s3		&&s+11#6 r3   c                6   ^RI Hp V P                  P                  V4      V n        V P                  P                  V4      V n        V P                  P                  V4      V n        V P                  eh   \        V P                  VP                  4      '       d"   \        V P                  P                  R^4       V P                  P                  V4      V n        V P                  V4       V P                  P                  pVP                  '       g3   VP                  '       g!   \!        V P                  P                  R4       V P"                  P%                  V4      V n        V P&                  '       d!   V P&                  P%                  V4      V n        V # )rG   r  zdProbable infinite loop in for-from-by statement. Consider switching the directions of the relations.z>for-from loop variable must be c numeric type or Python object)r   r  r  r   rI
  r   rJ
  steprN   UnaryMinusNoder   r9   set_up_loopr  r  r  r   r   r   r	  )r   r   r  r  s   &&  r4   r   #ForFromStatNode.analyse_expressions  s!   kk66s;kk//4kk//499 $))Y%=%=>>		 (NOPR		//4DIkk&&''';+A+A+A$++//#cdII11#6	#//CCCHDr3   c                   ^RI Hp V P                  P                  pVP                  '       d   TpEMbVP
                  '       d!   \        V P                  P                  R4       VP                  '       d   \        P                  M\        P                  pV P                  P                  P                  '       g+   \        P                  ! W@P                  P                  4      pV P                  P                  P                  '       g+   \        P                  ! W@P                  P                  4      pV P                  eQ   V P                  P                  P                  '       g+   \        P                  ! W@P                  P                  4      pV P                  P!                  WA4      V n        V P                  P!                  WA4      V n        V P                  P"                  '       g!   V P                  P%                  V4      V n        V P                  e]   V P                  P!                  WA4      V n        V P                  P"                  '       g!   V P                  P%                  V4      V n        VP                  '       g   VP
                  '       d^   RV n        \)        V P                  VP*                  4      '       d   \-        V P                  R4      hV P                  V n        RV n        R# RV n        VP3                  V P                  WA4      pWPn        VP5                  V4      P7                  V4      V n        R# )rG   r  zWInteger loops over enum values are fragile. Please cast to a safe integer type instead.NFzEBuffer or memoryview slicing/indexing not allowed as for-loop target.T)r   r  r  r  r  is_enumr   r9   r  r
   c_long_typerJ  rI
  widest_numeric_typerJ
  rO
  r'  r  rx  is_py_targetrN   BufferIndexNoder   loopvar_nodepy_loopvar_noder	  r\  r	  )r   r   r  r  	loop_typec_loopvar_nodes   &&    r4   rQ
  ForFromStatNode.set_up_loop  s1   kk&&!!!#I"""qs2=2I2I2I
..zOdOdI;;##///&::9kkFVFVW	;;##///&::9kkFVFVW	yy$TYY^^-G-G-G&::9iinnU	kk++I;kk++I;{{%%%++44S9DK99 		++I;DI99''' II44S9	!!![%8%8%8 %D$++y'@'@AADHH&mnn $D#'D  $D&//)IN .#,#6#6~#F#Y#YZ]#^D r3   c                   VP                  V P                  4       VP                  4       pV P                  pV P                  P                  V4       V P                  P                  V4       V P                  V P                  ,          w  rEV P                  eG   V P                  P                  V4       V P                  P                  4       pV^ ,          : RV: 2pMRp^RIHp \        V P                  VP                  4      '       d   V P                  P!                  V4       \        V P"                  VP                  4      '       d   V P"                  P!                  V4       V P$                  P&                  P(                  '       d   \*        P,                  MV P$                  P&                  pV'       d0   V P.                  '       g   VP0                  P3                  VR4      p	MV P                  P                  4       p	VP4                  '       d   VP6                  '       g   V P8                  ^ ,          R8X  dt   VP;                  RV	: RV P                  P                  4       : V: RV: R	V	: R
V P8                  : R
V P                  P                  4       : RV: RV	: V: R24       MjVP;                  RV	: RV P                  P                  4       : V: R	V	: R
V P8                  : R
V P                  P                  4       : R	V	: V: R24       V P"                  p
V
f/   V'       d'   VP=                  V P$                  P                  W4      p
V
e-   V
P                  V4       V P$                  P?                  W4       VPA                  V P                  4       V PB                  PE                  V4       VPG                  VPH                  4       V'       Eg   V P"                  '       Ed   V P$                  PJ                  PL                  '       Ed   VPO                  V P$                  P                  R 4      pVP!                  V4       VPQ                  V P$                  PJ                  PR                  4      pV P$                  PJ                  PT                  PV                  '       d4   VPX                  P[                  \\        P^                  ! RR4      4       RpMiVPX                  P[                  \\        P^                  ! RR4      4       RPa                  V P$                  PJ                  PT                  Pb                  4      pVP;                  VVP                  4       VVPe                  VP                  4       V P$                  P                  4      3,          4       VPg                  V4       MV P$                  pVPi                  V P                  P&                  WP$                  PJ                  PT                  4      pWn5        VPm                  V4       V P$                  PJ                  PL                  '       d<   VPo                  VP                  4       VP&                  4       VPq                  V4       VP;                  R4       V'       gT   V P"                  '       dB   V P"                  P                  V4       V P$                  P?                  V P"                  V4       V'       d.   V P.                  '       g   VP0                  Ps                  V	4       VPt                  pVPw                  V4       V Px                  '       d>   VP;                  R4       V Px                  PE                  V4       VP;                  R4       VPG                  V4       V P                  P{                  V4       V P                  P}                  V4       V P                  P{                  V4       V P                  P}                  V4       \        V P                  VP                  4      '       d   V P                  Pq                  V4       \        V P"                  VP                  4      '       d   V P"                  Pq                  V4       V P                  e9   V P                  P{                  V4       V P                  P}                  V4       R # R # )Nrm  1r  F>rJ  r  z + rM  rI   z; ) { r  r,  GetModuleGlobalNamer  z%__Pyx_GetModuleGlobalName(%s, %s); %sGetNameInClassz$__Pyx_GetNameInClass(%s, {}, %s); %sr  r	  )?rS  r9   r	  
from_rangerI
  r  rJ
  relation_table	relation1rO
  r   r   r  rN   rY
  r	  r
  rZ
  r  r  rT
  r
   rU
  rW
  r  r  r  r  	relation2rU   r  r  r2
  r   r,  rG  rA	  r:  is_pyglobal
PyTempNoderq  rp   rF  r1  r&  r  r   r  r  ri  r  r	
  CoerceFromPyTypeNode	temp_coder$  r_  r

  r  r9	  r	  r	  rh  r  )r   rZ   r	  rc
  offsetincoprO
  r  loopvar_typeloopvar_namecoerced_loopvar_nodetarget_nodeinterned_cnamelookup_funcfrom_py_noder9	  s   &&              r4   r,  'ForFromStatNode.generate_execution_code  s9   dhh..0__
,,T2,,T2++DNN;99 II..t499##%D$Qxx.EDd''););<<&&t,d**I,>,>??  ))$/151A1A1I1I1Iz--t{{O_O_d///>>77eLL,,335L|':':':t~~a?PTW?W JJ""$fddnndkk.@.@.BDe	% & JJ""$fdnndkk.@.@.Be	% &  $33'J#,#=#=dkkoo|#j + 99$?KK001ELdhh'		))$/t**+zd222 {{  ,,,'224;;??DI$$T*!%!7!78I8I8N8N!O;;$$**:::$$55#//0EGYZ\"IK$$55#//0@BTUW"H"O"O))//??#AK

;&&("++K,>,>,@$++//R*T T U ++D1"kk$99!!&&[[5F5F5L5LNL%1"--d3{{  ,,, 2 2 4k6F6FG##D)

3d222   99$?KK001E1EtLd///NN''5&&_-JJ|$44T:JJsO{#**40t$**40t$d''););<<%%d+d**I,>,>??  ((.99 II,,T2II  & !r3   z<=r_  z>=r`
  c                   V P                   P                  W4       V P                  P                  W4       V P                  P                  W4       V P                  e   V P                  P                  W4       V P
                  P                  W4       V P                  e   V P                  P                  W4       R # R # r   )r  r'  rI
  rJ
  rO
  r   r	  r_  s   &&&r4   r'  -ForFromStatNode.generate_function_definitionsa  s    11#<11#<11#<99 II33C>		//:'::3E (r3   c                   V P                   P                  V4       V P                  P                  V4       V P                  P                  V4       V P                  '       d   V P                  P                  V4       V P
                  P                  V4       V P                  '       d   V P                  P                  V4       R # R # r   )r  r   rI
  rJ
  rO
  r   r	  r   s   &&r4   r   ForFromStatNode.annotatek  s    T"T"T"999IIt$		4 %%d+ r3   )	r   rI
  rJ
  r	  rW
  rY
  rZ
  rO
  r  )r  rI
  rJ
  rO
  r   r	  )r   ++)z+1ry
  )r   --)z-1rz
  )r+   r,   r-   r.   r   rW
  rY
  rZ
  rc
  r   r  r   r   rQ
  r,  rd
  r'  r   r2   rv   r   s   @r4   r!
  r!
    sp     $ PKLLOJ:K!
7*$_Lp'h 	llllNF, ,r3   r!
  c                   L   a  ] tR tRt o Rt. R	OtRtRtR tR t	R t
R tRtV tR# )
WithStatNodeiv  a  
Represents a Python with statement.

Implemented by the WithTransform as follows:

    MGR = EXPR
    EXIT = MGR.__exit__
    VALUE = MGR.__enter__()
    EXC = True
    try:
        try:
            TARGET = VALUE  # optional
            BODY
        except:
            EXC = False
            if not EXIT(*EXCINFO):
                raise
    finally:
        if EXC:
            EXIT(None, None, None)
        MGR = EXIT = VALUE = None
Nc                    V P                   P                  V4       V P                  P                  V4       V P                  P                  V4       R # r   )managerr   
enter_callr   r   s   &&r4   r   !WithStatNode.analyse_declarations  s8    ))#.,,S1		&&s+r3   c                   V P                   P                  V4      V n         V P                   P                  P                  '       d%   \        P                  V 4      P                  V4      # V P                  P                  V4      V n        V P                  '       d=   ^RI	H
p V! V P                  P                  V P                  P                  4      V n        V P                  P                  V4      V n        V # )rG   )r	  )r~
  r   r  is_cython_lock_typeCythonLockStatNodefrom_withstatr   r
  r  r  r	  r9   target_tempr   )r   r   r	  s   && r4   r    WithStatNode.analyse_expressions  s    ||11#6<<000%33D9MMcRR//77<;;;+'(;(;T__=Q=QRDII11#6	r3   c                    V P                   P                  W4       V P                  P                  W4       V P                  P                  W4       R # r   )r~
  r'  r
  r   r_  s   &&&r4   r'  *WithStatNode.generate_function_definitions  s8    223=55c@		//:r3   c                   VP                  V P                  4       VP                  R 4       V P                  P	                  V4       VP
                  P                  \        RR7      V n        VP                  P                  \        P                  ! RR4      4       TP                  V P                  : RV P                  P                  4       : RTP                  \        V P                   '       d   RMR4      4      : R	VP#                  V P                  V P                  4      : 24       VP%                  V P                  \        4       VP'                  4       pVP(                  pV P*                  P	                  V4       V P,                  '       d   V P.                  P1                  V4       V P*                  P3                  V4       VP                  V P.                  P5                  4       : R
V P*                  P5                  4       : R24       V P*                  P7                  V4       MV P*                  P9                  V4       V P*                  P;                  V4       V P                  P9                  V4       V P                  P;                  V4       W!n        V P<                  P?                  V4       VPA                  V4      '       du   VPC                  4       pVPE                  V4       VPG                  V4       VPI                  V P                  \        4       VPE                  V4       VPG                  V4       VP
                  PK                  V P                  4       VP                  R4       R# )z/*with:*/ {Fr  PyObjectLookupSpecialr  z  = __Pyx_PyObject_LookupSpecial(r   	__aexit____exit__r  r  r  r  N)&rS  r9   rU   r~
  r  r  r  r   exit_varr&  r  r   r  r%  rq  r   r
  r  r  r,  rD  r
  r  r
  r
  r  r   r  rh  r  r   r,  rC  r  rE  rG  r  r  )r   rZ   r5  intermediate_error_labelstep_over_labels   &&   r4   r,  $WithStatNode.generate_execution_code  se   dhh

=!--d344^PU4V))##$;=OP	R

MMLL""$""=S]#^_##DMM488<	 	 	~6 ..0#'#3#3 006;;; %%d+OO006JJT%5%5%<%<%>@V@V@XYZOO99$?OO2248""4(++D1%*		))$/??344"nn.OMM/*NN34!!$--@MM/*NN?+##DMM2

3r3   )r   r
  r
  r~
  r
  )r~
  r
  r  r   )r+   r,   r-   r.   r   r   r
  r
  r   r   r'  r,  r2   rv   r   s   @r4   r|
  r|
  v  s4     8 >KJK,

;
. .r3   r|
  c                   H   a  ] tR tRt o RR.tRtRtR tR tR t	R t
R	tV tR# )
WithTargetAssignmentStatNodei  rH  rz  Nc                <    V P                   P                  V4       R # r   r  r   s   &&r4   r   1WithTargetAssignmentStatNode.analyse_declarations  r  r3   c                    V P                   P                  V4      V n         V P                   P                  V4       V P                  P                  P                  V P                   P                  V4      V n        V # r   )rz  r   rp  	with_noder
  r'  r  rH  r   s   &&r4   r   0WithTargetAssignmentStatNode.analyse_expressions  sU    88005%%c*>>--77sKr3   c                    V P                   P                  V4       V P                  P                  V P                   V4       V P                  P
                  P                  V4       R # r   )rH  r  rz  r  r
  r
  r

  r   s   &&r4   r,  4WithTargetAssignmentStatNode.generate_execution_code  sD    ))$/))$((D9""**40r3   c                r    V P                   P                  V4       V P                  P                  V4       R # r   r  r   s   &&r4   r   %WithTargetAssignmentStatNode.annotate  r  r3   r  )r+   r,   r-   r.   r   r
  rH  r   r   r,  r   r2   rv   r   s   @r4   r
  r
    s3      %.KI
C11
   r3   r
  c                   f   a  ] tR tRt o . ROtRtR tR t]P                  t
RtR tR tR tR	tV tR
# )TryExceptStatNodei    Fc                    V P                   P                  V4       V P                   F  pVP                  V4       K  	  V P                  '       d   V P                  P                  V4       R # R # r   )r   r   except_clausesr	  )r   r   except_clauses   && r4   r   &TryExceptStatNode.analyse_declarations
   sW    		&&s+!00M..s3 111#6 r3   c                   V P                   P                  V4      V n         ^ p\        V P                  4       FX  w  r4VP                  V4      ;q@P                  V&   V'       d   \	        VP
                  R4       VP                  '       d   KV  ^pKZ  	  W n        V P                  '       d!   V P                  P                  V4      V n        V # )r   zdefault 'except:' must be last)	r   r   r  r
  r   r9   patternhas_default_clauser	  )r   r   default_clause_seenr5  r
  s   &&   r4   r   %TryExceptStatNode.analyse_expressions   s    II11#6	 )$*=*= >A5B5V5VWZ5[[M//2"m'')IJ (((&'# !? #6#//CCCHDr3   zTry-except statementc           
       aa SP                  V P                  4       SP                  R 4       SP                  pSP                  pSP
                  pSP                  4       pSP                  pSP                  R4      pSP                  R4      pSP                  R4      p	SP                  R4      p
V'       d   SP                  R4      MRpV'       d   SP                  R4      MRpSP                  R4      p\        ^4       Uu. uF#  pSP                  P                  \        R	4      NK%  	  upoSP                  4       pSP                  R
4       V
Sn        VSn        VSn        V P                  P                  S4       SP                  V P                  R	R7       SP                  R4       SP                  P!                  4       pSP#                  V4      pV'       d   SP$                  P'                  \(        4       V P*                  '       g#   VP                  R4       VP                  R4       TP                  RRP-                  S Uu. uF  pRV,          NK  	  up4      ,          4       S F  pVP/                  V\        4       K  	  VV3R lpMBS Uu. uF  pRV,          NK  	  ppVP                  RRP-                  V4      ,          4       R pVSn        V	Sn        V P                  P0                  pV P2                  '       d   SP                  V P2                  P                  4       SP                  R4       V P2                  P                  S4       SP                  R4       V'       g   V P2                  P0                  pV'       Ed   V'       g1   S F  pSP5                  V\        4       K  	  SP7                  V4       SP9                  V4       V F  w  ppSP5                  VV4       K  	  SP;                  4       '       d   SP=                  4        SP                  P>                  pV SP                  n        V P@                   F  pVPC                  SV4       K  	  VSP                  n        V PD                  '       g   SP7                  V4       SPG                  WWV	.WSWBV.V'       g   SP#                  V4      '       g   TMRV P                  R	R7      pV F  pV'       g   K  V! 4        K  	  SP#                  V4      '       dQ   V'       g)   SP#                  V4      '       g   SP7                  V4       SP9                  V4       V'       d   V! 4        SP#                  V4      '       d   SP9                  V4       SP                  R4       S F  pSP                  PI                  V4       K   	  VSn        VSn        VSn        VSn        R# u upi u upi u upi )rZ  exception_handledexcept_errorexcept_return
try_return	try_breakNtry_continuetry_endF
/*try:*/ {r  r  r  r  z__Pyx_ExceptionSave(%s);r   r
  c                     < S F  p SP                  V \        4       K  	  SP                  R RP                  S4      ,          4       R# )z__Pyx_ExceptionReset(%s);r   N)r`  r   rU   r   )rp   rZ   exc_save_varss    r4   restore_saved_exceptionJTryExceptStatNode.generate_execution_code.<locals>.restore_saved_exceptionM   s=    )D%%dN; *

699]34 5r3   z	(void)%s;z%s /* mark used */rI   c                      R # r   r*   r*   r3   r4   r
  r
  X   s    r3   z/*else:*/ {)r0
  r9   r  )%rS  r9   rU   rF  r9	  rA	  r,  rD  r  r4  r  r  r   rQ   r   r,  all_free_managed_tempsrC  r&  r  reset_exception_utility_coderZ	  r   put_xgotrefr  r	  r  rE  rG  r  rN  current_exceptr
  generate_handling_coder
  r3
  r  )r   rZ   old_return_labelold_break_labelold_continue_labelr5  r6  except_end_labelexcept_error_labelexcept_return_labeltry_return_labeltry_break_labeltry_continue_labeltry_end_labelr  save_exctemps_to_clean_up	can_raiser6  r
  mark_vars_usednormal_case_terminates	temp_name	temp_typeouter_exceptr
  r5
  r  r
  s   &f                          @r4   r,  )TryExceptStatNode.generate_execution_code"   s   dhh

3,,**!00..0**>>*=>!^^N;"nn_=>>,79H$..5d?QT^^N;W[y1 #((,"*Q 55neL"*,'')

	,*0		))$/dhhe,

	 NNAACOOO4	--.JK$$$<=;<NN5		-@-353;;-@AC D$$$S.9 %5 <II=CkC//=NINN/#((>2JJK ./!%!8!8MM$**../JJ44T:JJ))-)9)9)G)G&9)(C**3? )m,NN?+(9$	9&&y)< ):   446>>88L,0DNN)!%!4!444T;KL "5,8DNN)***01112DXkl/AUef/Edoo^kNlNl-rv 2 
 "Ay') " ??+,,)$//-2P2Pm,NN+,')??=))NN=)

3"ENN''. # -*0*O,, A Js   )W.W3!W8c                    V P                   P                  W4       V P                   F  pVP                  W4       K  	  V P                  e   V P                  P                  W4       R # R # r   )r   r'  r
  r	  )r   r   rZ   r
  s   &&& r4   r'  /TryExceptStatNode.generate_function_definitions   sW    		//:!00M77B 1'::3E (r3   c                    V P                   P                  V4       V P                   F  pVP                  V4       K  	  V P                  '       d   V P                  P                  V4       R # R # r   )r   r   r
  r	  )r   rZ   except_nodes   && r4   r   TryExceptStatNode.annotate   sW    		4 ..K  & /%%d+ r3   )r   r	  r
  N)r   r
  r	  )r+   r,   r-   r.   r   rZ	  r   r   r   r   r  r   r,  r'  r   r2   rv   r   s   @r4   r
  r
      sB      <KL7 ..K(Kx+tF, ,r3   r
  c                   ^   a  ] tR tRt o . ROtRtRtRtR tR t	R t
R tR tR	 tR
 tRtV tR# )ExceptClauseNodei   NFc                    V P                   '       dI   T P                   P                  V4       ^RIHp V! V P                  V P                  V4      4      V n        V P                  P                  V4       R# )rG   )ExcValueNodeN)	r  rV  r  r
  r9   infer_exception_typere	  r   r   )r   r   r
  s   && r4   r   %ExceptClauseNode.analyse_declarations   sO    ;;;KK2237/)$((D4M4Mc4RSDN		&&s+r3   c                   VP                   V n        V P                  '       dN   \        V P                  4       F4  w  r#VP	                  V4      pVP                  V4      V P                  V&   K6  	  V P                  '       d+   V P                  P                  WP                  4      V n        V P                  P	                  V4      V n	        V # r   )
rT  rT  r
  r  r   r	  r  rb  re	  r   )r   r   r5  r
  s   &&  r4   r   $ExceptClauseNode.analyse_expressions   s     //<<<'5
!55c:")"<"<S"AQ 6 ;;;++??^^TDKII11#6	r3   c                   V P                   '       d   \        V P                   4      ^8X  d   V P                   ^ ,          pVP                  '       d^   VP                  VP                  4      pV'       d;   VP
                  '       d)   VP                  P                  '       d   VP                  # \        P                  R,          # )rG   BaseException)r
  rM   r  r  rp   r  rF  is_builtin_scoper  r   r  )r   r   r
  r:  s   &&  r4   r
  %ExceptClauseNode.infer_exception_type   sx    <<<C-2ll1oG

7<<0U]]]u{{/K/K/K ::%$$_55r3   c                J    ^RI Hp V! 4       pV! V P                  4      '       * # )rG   )HasNoExceptionHandlingVisitor)ParseTreeTransformsr
  r   )r   r
  tree_has_no_exceptionss   &  r4   body_may_need_exception(ExceptClauseNode.body_may_need_exception   s     F!>!@)$))444r3   c           	     <  a VP                  V P                  4       V P                  '       Ed   \        ;QJ d&    R  V P                   4       F  '       d   K   RM	  RM! R  V P                   4       4      '       * pV'       d   \	        ^4       Uu. uF$  pVP
                  P                  \        RR7      NK&  	  ppVP                  P                  \        P                  ! RR4      4       VP                  R\        V4      ,          4       V^ ,          oMR;poV P                   F  pVP                  V4       K  	  V P                   Uu. uF  qfP                  4       NK  	  pp. pS'       d   VP                  P                  \        P                  ! RR	4      4       \!        V4      ^8X  d.   VP#                  R
S: RV^ ,          : RV^,          : R24       MVP%                  V3R lV 4       4       M\!        V4      ^8X  dZ   VP                  P                  \        P                  ! RR	4      4       VP#                  RV^ ,          : RV^,          : R24       MHVP                  P                  \        P                  ! RR4      4       VP%                  R V 4       4       VP
                  P                  \&        P(                  RR7      p	VP                  V	: RRP+                  V4      : R24       V P                   F%  pVP-                  V4       VP/                  V4       K'  	  V'       d}   VP                  R\        V4      ,          4       TP                  RP+                  V U
u. uF  p
RV
,          NK  	  up
4      4       V F  pVP
                  P1                  V4       K   	  VP                  RV	,          4       VP
                  P1                  V	4       MVP                  R4       VP3                  4       pV P4                  RJ;'       g'    V P6                  RJ;'       g    V P9                  4       pV'       g	   V'       d   VP;                  V P<                  4       V'       d   VP?                  V P                  4       V'       d   VP                  P                  \@        4       \	        ^4       Uu. uF$  pVP
                  P                  \        RR7      NK&  	  ppR\        V4      ,          pVP                  RV: RVPC                  V P                  4      : 24       V F  p
VPE                  V
\        4       K  	  MAVP                  P                  \        P                  ! RR4      4       VP                  R4       V'       d   VP                  R4       V P4                  '       dd   V PF                  PI                  X^,          4       V PF                  P                  V4       V P4                  PK                  V PF                  V4       V P6                  e<   \M        XV P6                  PN                  4       F  w  ppVPI                  V4       K  	  VPQ                  R4      pV'       d(   VP
                  PR                  pXVP
                  n)        V PT                  PW                  V4       V'       d   XVP
                  n)        V PT                  PX                  '       g9   V'       d    X F  p
VP[                  V
\        4       K  	  VP]                  V4       V'       d   VP_                  VPa                  4       V4       FZ  pVPc                  X^ ,          \        4       VPc                  V^,          \        4       VP[                  V^,          \        4       K\  	  X F  pVP
                  P1                  V4       K   	  VPe                  V4       VP                  R4       R# u upi u upi u up
i u upi ) c              3      "   T FF  pVP                   ;'       g.    VP                  4       ;'       d    VP                  4       '       * x  KH  	  R # 5ir   )r  	is_simpler<  ri  r
  s   & r4   rj  :ExceptClauseNode.generate_handling_code.<locals>.<genexpr>   sE      '-+G ""ZZg&7&7&9&Z&Z'BXBXBZ>ZZ+s   AAAFTr  PyErrFetchRestorer	  z__Pyx_ErrFetch(&%s, &%s, &%s);NFastTypeChecksModuleSetupCode.cz#__Pyx_PyErr_GivenExceptionMatches2(r   r  c              3   :   <"   T F  pR S: RV: R2x  K  	  R# 5i)z"__Pyx_PyErr_GivenExceptionMatches(r   r  Nr*   )ri  r
  rd	  s   & r4   rj  r
  !  s       %'/G HPQXY'/s   z__Pyx_PyErr_ExceptionMatches2(PyErrExceptionMatchesc              3   4   "   T F  pR V,          x  K  	  R# 5i)z __Pyx_PyErr_ExceptionMatches(%s)Nr*   r
  s   & r4   rj  r
  !  s      !#+ 7@@#+rU  r  z || r  __Pyx_ErrRestore(%s, %s, %s);rI   %s = 0;r   z/*except:*/ {z&%s, &%s, &%szif (__Pyx_GetException(r  z__Pyx_ErrRestore(0,0,0);z__Pyx_TraceExceptionDone();except_r  )3rS  r9   r
  ro  r4  r  r  r   r&  r  r   r  rU   rp  r  r%  rM   r  extendr
   rJ  r   rh  r  r  r  r  excinfo_targetr
  rS  rT  put_trace_exception_handledget_exception_utility_coder  r
  re	  set_varr  r  rW   r	  r	  r   r,  r  r  rE  r3
  get_loop_labelsr  r	  )r   rZ   r7  has_non_literalsr  r	  r
  patterns	exc_tests
match_flagr6  r  rm  needs_exceptionexc_argstempvarrY   r	  old_exc_varsrd	  s   &&&                @r4   r
  'ExceptClauseNode.generate_handling_code   sX   dhh<<<#&3 '-#||'-333 '-#||'- $-  -   &+1X/%- !NN88TX8Y%-  /  11+2I2IJ]_m2no

;eHoMN#A;&**8<<006 (;?<<H<))+<HHI  11++,<>QRTx=A%$$ (1++x{{&  $$ %'/%  X!#  11++,<>QRT  QKK!"    11++,C^TV   !#+! 
 55j6K6KX]5^JJJZY1GHI<<..t4""4( ( 

:U8_LM

388$IY__$IJK$DNN//5 % JJ  NN''
3JJ'//#KKt# + +t++ +((* 	 g""4#5#56,,TXX6 --.HI!&q+!)A 44^PT4U!)  +&x8HJJ$//$((35 6  n5   --k.E.EFY[i.jkJJ12JJ45;;;NN""8A;/NN33D9KK00F*!$Xt/B/B/G/G!HW% "I ..y9>>22L&.DNN#		))$/&2DNN#yy&&&#C **3? $ MM)$++D,@,@,BOT%%hqk>B%%hqk>B&&x{NC	 U !++D1 ! 	_-

	E/ IJ %J:+s   *`
`8`*`c                    V P                   e   V P                   P                  W4       V P                  P                  W4       R # r   )r  r'  r   r_  s   &&&r4   r'  .ExceptClauseNode.generate_function_definitionsu!  s0    ;;"KK55c@		//:r3   c                   V P                   '       d%   V P                    F  pVP                  V4       K  	  V P                  '       d   V P                  P                  V4       V P                  P                  V4       R # r   )r
  r   r  r   )r   rZ   r
  s   && r4   r   ExceptClauseNode.annotatez!  sT    <<<<<  & (;;;KK  &		4 r3   )r   re	  rT  r  )r
  r  r   re	  )r+   r,   r-   r.   r   re	  r
  is_except_asr   r   r
  r
  r
  r'  r   r2   rv   r   s   @r4   r
  r
     sE     " =KINL,65
M^;
! !r3   r
  c                      a  ] tR tRt o . ROt^tRtRtRtRt	Rt
]R 4       tR tR t]P                   tRtR	 tR
 tRR ltRR ltR tR tRtV tR# )TryFinallyStatNodei!  TNFc                     \        WVR 7      pV# )r   finally_clause)r  )r9   r   r   r
  rY   s   &&&& r4   rE  "TryFinallyStatNode.create_analysed!  s    !#Pr3   c                    V P                   P                  V4       \        P                  ! V P                  4      V n        V P
                  P                  V4       V P                  P                  V4       R # r   )r   r   r   r   r
  finally_except_clauser   s   &&r4   r   'TryFinallyStatNode.analyse_declarations!  sS    		&&s+%)]]43F3F%G"""77<005r3   c                D   V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  P                  V4      V n        VP                  '       d.   VP                  P
                  '       g   VP                  V n        V # r   )r   r   r
  r  r%  r  func_return_typer   s   &&r4   r   &TryFinallyStatNode.analyse_expressions!  st    II11#6	"11EEcJ%)%?%?%S%STW%X"???3??#:#:#:$'OOD!r3   zTry-finally statementc           
       a  VP                  S P                  4       VP                  R 4       VP                  pVP	                  4       pVP                  4       pVP                  pS P                  '       g   W!n        VP                  4       pS P                  P                  V4       VP                  R4       VP                  P                  4       pVP                  S P                  P                  4       VP                  R4       VP                  V4       S P                  .3V 3R llpS P                  ;'       d    VP                  V4      p	S P                  P                   '       * p
S P                  P                   '       gf   VP                  R4       V! 4       P                  V4       S P                  P                   '       g   VP#                  V4       VP                  R4       V	'       EdQ   VP%                  V4       VP                  R4       S P&                  '       g   VP                  R4       S P(                  '       d   VP+                  4        V
'       d   \-        \/        ^4       Uu. uF.  pVP                  P1                  \2        P4                  RR7      NK0  	  up4      pVP                  P1                  \2        P6                  ! \2        P8                  ! \2        P:                  4      4      RR7      pMR	;r\-        \/        ^4       Uu. uF$  pVP                  P1                  \<        RR7      NK&  	  up4      pVP?                  4       '       d,   VPA                  4        VPC                  S P                  4       S PE                  WWV4       VP	                  4       pVP                  R
4       VP                  PF                  pVR,          VP                  n#        S PH                  P                  V4       VVP                  n#        VP                  R4       V
'       d   S PK                  WW4       V'       d%   V F  pVP                  PM                  V4       K   	  V'       d   VP                  PM                  V4       VP?                  4       '       d   VPO                  S P                  RR7       VP#                  V4       VPQ                  VP                  4       V4       F  pS PS                  W4       K  	  V F  pVP                  PM                  V4       K   	  VP                  R4       VP                  V4       VPT                  pRp\W        \Y        WC4      4       EF  w  pw  ppVP                  V4      '       g   K#  VV8X  d   V	'       d   K4  VP                  RV,          4       R	pVV8X  d   S P                  P                   '       g   S PZ                  '       d   S P(                  '       g   \]        S P                  \^        4      '       g   VP                  P1                  S PZ                  RR7      pVP                  V: R\`        Pb                  : R24       S PZ                  Pd                  '       d'   VP                  R\`        Pb                  ,          4       V! 4       P                  V4       VV8X  d   V'       dw   VP                  \`        Pb                  : RV: R24       S PZ                  Pd                  '       d   VP                  RV,          4       VP                  PM                  V4       S P                  P                   '       g   VP#                  V4       VP                  R4       EK!  	  VP%                  V4       VP                  R4       R	# u upi u upi )r
  r  z/*finally:*/ {c                 v   < V ^ ,          p\         P                  ! V4      pVSP                  J d   W ^ &   V# TpV# r6   )r   r   r
  )_nextrY   	node_copyr   s   &  r4   fresh_finally_clauseHTryFinallyStatNode.generate_execution_code.<locals>.fresh_finally_clause!  sB    8Dd+It***$a K !Kr3   z/*normal exit:*/{z/*exception exit:*/{r  Fr  NrZ  N   NTr	  z%s: {r  r  r
  r*   )3rS  r9   rU   rD  all_new_labelsget_all_labelshandle_error_caser  r   r,  r  r
  r
  set_all_labelspreserve_exceptionrC  r  rE  rG  rZ	  is_try_finally_in_nogilr  rp  r4  r  r
   rJ  CPtrTyperY  r&  r   r  rN  r
  put_error_catcherr	  r  put_error_uncatcherr  r	  r3
  put_error_cleanerrF  r  r  r  rN   GILExitNoder	   r  r  )r   rZ   r5  
old_labels
new_labelsr,  catch_labelr
  r  preserve_errorneeds_success_cleanupr  exc_lineno_cnamesexc_filename_cnamer	  finally_old_labelsr
  r  rF  r5  r  	old_labelret_temps   f&                     r4   r,  *TryFinallyStatNode.generate_execution_code!  s   dhh

< **((*
((*
**%%%.nn&		))$/

3 NNAACd))--.

#$ 	J'(,(;(;'< 	 00UUT___5U$($7$7$E$E Eyy&&&JJ*+ "::4@&&444k*JJsO>NN?+JJ-.$$$

89+++%%'$$)"1X+'% NN001F1FSX0Y%+' %(! &*^^%A%A''
(?(?
@V@V(WX$ &B &&" :>=!q#!A ,,^,N!# $H   44600:""FXZ!%!4!4!6JJsO>>22L&.rlDNN#&&>>tD&2DNN#JJsO$((9J_$!233E: "3%NN//0BC??$$,,TXXt,Do.++D,?,?,ACUV&&t6 W "++E2 "JJsOJ'(( *33z3N)O%A%	9??9--O+JJw*+HL(**888--- $ < < < *4+>+> L L#'>>#?#? 11e $@ $E

6;N;N#OP00<<< JJy63F3F'FG "::4@L(JJV-@-@(KL,,888

9x#78NN//9&&444i(JJsO? *PD 	{#

	i+'#s   :4_*_c                    V P                   P                  W4       V P                  P                  W4       V P                  '       d   V P                  P                  W4       R # R # r   )r   r'  r
  r  r_  s   &&&r4   r'  0TryFinallyStatNode.generate_function_definitions="  sM    		//:99#D%%%&&DDSO &r3   c                   VP                   P                  \        4       VP                   P                  \        4       VP                   P                  \        4       V P
                  '       d   VP                  R R7       VP                  R4       TP                  RP                  V Uu. uF  pRV,          NK  	  up4      4       V F  w  rxVP                  Wx4       K  	  VP                  RVR,          ,          4       VP                  RVR,          ^,          ,          4       V F  pVP                  V\        4       K  	  V'       db   VP                  V^ ,          : R	\        P                  : R
V^,          : R	\        P                  : R
V: R	\        P                  : R24       V P
                  '       d   VP!                  4        R# R# u upi )Fr  r  rI   r
  z$ __Pyx_ExceptionSwap(&%s, &%s, &%s);r  NNzTif ( unlikely(__Pyx_GetException(&%s, &%s, &%s) < 0)) __Pyx_ErrFetch(&%s, &%s, &%s);r  r  rM  r  N)r&  r  rJ  r
  swap_exception_utility_coder  r  rU   r   r  r
  r   r	   lineno_cnameclineno_cnamefilename_cnamer  )	r   rZ   r
  r	  r*  r+  r6  r
  r  s	   &&&&&&   r4   r!  $TryFinallyStatNode.put_error_catcherC"  st   ))*HI))*DE))*EF'''7

/0

388AY__ABC0OI""93  1
 	

9HRLHI

 4 8@|a7G	I 	J
 CS.1 JJ!!$$f&9&9!!$$f&:&:"F$9$9; <
 '''((* () Bs   -Gc                   VP                   P                  \        4       VP                   P                  \        4       V P                  '       d$   VP                  R R7       VP                  R4       VR,           F  pVP                  V\        4       K  	  VP                  RVR,          ,          4       VR,           F  pVP                  V\        4       K  	  VP                  RVR,          ,          4       V P                  '       d   VP                  4        TP                  RP                  V Uu. uF  pRV,          NK  	  up4      4       V'       dd   VP                  \        P                  : R	V^ ,          : R
\        P                  : R	V^,          : R
\        P                  : R	V: R24       R# R# u upi )Fr  r  r3  !__Pyx_ExceptionReset(%s, %s, %s);r  r
  rI   r
  r  rM  r  N)r&  r  rJ  r
  r  r  rU   r`  r   r  r   r	   r5  r6  r7  )r   rZ   r	  r*  r+  r6  s   &&&&& r4   r"  &TryFinallyStatNode.put_error_uncatcherd"  sY   ))*HI))*FG'''7JJ34 B<<Cc>2  

6"EFB<<Cc>2  

2Xb\AB'''((*

388AY__ABCJJ##%6q%9%9$$&7&:&:%%'9; <  Bs   :Gc                4   VP                   P                  \        4       V P                  '       d$   VP	                  R R7       VP                  R4       VR,           F  pVP                  V\        4       K  	  VP                  RVR,          ,          4       VR,           F  pVP                  V\        4       K  	  V P                  '       d   VP                  4        VP                  RP                  R.^,          4      VR,          ,          4       R# )	Fr  r  r3  r:  r  rI   r
  N)r&  r  r
  r  r  rU   r`  r   r  r  r   )r   rZ   r	  r6  s   &&& r4   r#  $TryFinallyStatNode.put_error_cleaner"  s    ))*FG'''7JJ34 B<<Cc>2  

6"EFB<<C""37  '''((*

388YKM*Xb\9:r3   c                r    V P                   P                  V4       V P                  P                  V4       R # r   )r   r   r
  r   s   &&r4   r   TryFinallyStatNode.annotate"  s(    		4 $$T*r3   )r   r
  r  r  )r   r
  r  )NN)r+   r,   r-   r.   r   r  r  r  r  r  rZ	  r[  rE  r   r   r   r   r  r   r,  r'  r!  r"  r#  r   r2   rv   r   s   @r4   r  r  !  s      FK  #L 6 ..K)KHTP+B<8;$+ +r3   r  c                   "    ] tR tRtRtRtRtRtR# )NogilTryFinallyStatNodei"  zB
A try/finally statement that may be used in nogil code sections.
FNr*   )r+   r,   r-   r.   r   r  r  r2   r*   r3   r4   rA  rA  "  s     Kr3   rA  c                   ~   a a ] tR tRt oR.]P
                  ,           tRtRtRR ltR t	V 3R lt
R tR	 tR
tVtV ;t# )GILStatNodei"  r	  NTc                    W n         W@n        V P                  WV4       \        P	                  WV\        WV P                  R 7      R7       R# ))state
state_tempr	  N)rE  r	  create_state_temp_if_neededr  r   r$  rF  )r   r9   rE  r   r	  s   &&&&&r4   r   GILStatNode.__init__"  sF    
"((T:##&T__> 	$ 	?r3   c                    ^RI Hp V! 4       pVP                  V4       VP                  '       g   R# VR8X  d   \        P
                  pM\        P                  p^RIHp VP                  W4      V n
        R# )rG   YieldNodeCollectorNgilr  )r
  rK  visitchildrenyieldsr
   c_gilstate_typec_threadstate_ptr_typer   r  r	  rF  )r   r9   rE  r   rK  	collectorr
  r  s   &&&&    r4   rG  'GILStatNode.create_state_temp_if_needed"  s\    ;&(	%E>"22I"99I#,,S<r3   c                   < V P                   R 8H  Vn        V P                   R 8X  d   RVn        V P                  e   V P                  P	                  V4       \
        SV `  V4      # )rL  T)rE  _in_with_gil_blockhas_with_gil_blockr	  r   rm   r  s   &&r4   r    GILStatNode.analyse_declarations"  sT    "&**"5::%)C">>%NN//4w+C00r3   c                $   VP                  \        P                  ! R R4      4       V P                  e!   V P                  P	                  V4      V n        VP
                  pV P                  R8H  Vn        \        P	                  W4      pW!n        V# )ForceInitThreadsr
  r  )r  r   r  r	  r   r  rE  r  )r   r   	was_nogilrY   s   &&  r4   r   GILStatNode.analyse_expressions"  sx    ##$68KL	N >>%!^^??DDNII	JJ')	!55d@	r3   c                   VP                  V P                  4       VP                  4        V P                  '       dK   V P                  '       g   Q hV P                  P                  V4       V P                  P                  4       pMR pVP                  P                  pV P                  R8X  d%   VP                  VR7       RVP                  n        M2VP                  W P                  '       * R7       RVP                  n        \        P                  W4       V P                  '       d   V P                  P                  V4       W1P                  n        VP                  4        R # )NrL  )variableT)r\  unknown_gil_stateF)rS  r9   begin_blockrF  scope_gil_state_knownr
  r   r  r  rE  r  put_release_gilr  r,  r

  	end_block)r   rZ   r\  old_gil_configs   &&  r4   r,  #GILStatNode.generate_execution_code"  s    dhh??? -----OO$$T*--/HH11::2'+DNN$  (JdJdFd e',DNN$224>???OO##D)#1 r3   )r	  rE  rF  r   )r+   r,   r-   r.   rA  r   rF  r_  r   rG  r   r   r,  r2   rv   rw   rx   s   @@r4   rC  rC  "  sC      -"9"E"EEKJ ?=1 r3   rC  c                   <   a  ] tR tRt o Rt. tRtRtR tR t	Rt
V tR# )r$  i"  z
Used as the 'finally' block in a GILStatNode

state   string   'gil' or 'nogil'
#   scope_gil_state_known  bool  For nogil functions this can be False, since they can also be run with gil
#                           set to False by GilCheck transform
NTc                    V # r   r*   r   s   &&r4   r   GILExitNode.analyse_expressions#  rJ  r3   c                    V P                   '       d   V P                   P                  4       pMR pV P                  R8X  d   VP                  V4       R # VP	                  W P
                  '       * R7       R # )NrL  )r]  )rF  r   rE  r  put_acquire_gilr_  )r   rZ   r\  s   && r4   r,  #GILExitNode.generate_execution_code#  sV    ???--/HH::((2  A[A[=[ \r3   r*   )r+   r,   r-   r.   r   r   rF  r_  r   r,  r2   rv   r   s   @r4   r$  r$  "  s-      KJ 	] 	]r3   r$  c                   *   a  ] tR tRt o RtR tRtV tR# )EnsureGILNodei#  zA
Ensure the GIL in nogil functions for cleanup before returning.
c                *    VP                  R R7       R# )Fr  N)r  r   s   &&r4   r,  %EnsureGILNode.generate_execution_code#  s    U3r3   r*   N)r+   r,   r-   r.   r   r,  r2   rv   r   s   @r4   rk  rk  #  s     4 4r3   rk  c                      a a ] tR tRt oRtR.]P                  ,           tRtRtRt	V 3R lt
R tV 3R ltV 3R	 ltR
 tR tRtVtV ;t# )CriticalSectionStatNodei#  z
Represents a freethreading Python critical section.
In non-freethreading Python, this is a no-op.

args    list of ExprNode    1 or 2 elements, must be object, pymutex or pymutex*
rW   NFc               *  < \        V4      ^8  d   \        P                  V n        M\        P                  V n        \        V4      ^8  d   \        \        V4      4      MRV n        \        SV `   ! V3RVRVR\        WP                  R7      /VB  R# )rG   r   rW   r   r
  )
length_tagN)
rM   r
   c_py_critical_section2_typevar_typec_py_critical_section_typer#  rq  rm   r   CriticalSectionExitNode)r   r9   rW   r   rX   rP   s   ""&&,r4   r    CriticalSectionStatNode.__init__+#  s    t9q=&BBDM&AADM,/IM#c$i.r	
	
 	
 31		
 	
r3   c                    ^RI Hp V! 4       pVP                  V P                  4       VP                  '       d   \        V P                  R4       R# R# )rG   rJ  z0Cannot yield while in a cython.critical_section.N)r
  rK  rM  r   rN  r   r9   )r   rK  rQ  s   &  r4   check_for_yields(CriticalSectionStatNode.check_for_yields<#  s?    ;&(			*$((NP r3   c                j   < V P                    F  pVP                  V4       K  	  \        SV `  V4      # r   )rW   r   rm   )r   r   r?  rP   s   && r4   r   ,CriticalSectionStatNode.analyse_declarationsC#  s/    99C$$S) w+C00r3   c                  < V P                  4        \        P                  ! 4       p^ p\        V P                  4       F  w  rEVP                  V4      pVP                  V8X  g8   VP                  P                  '       d-   VP                  P                  V8X  d   V^,          pRV n	        MDVP                  P                  '       d   VP                  V4      pM\        VP                  R4       WPP                  V&   K  	  V^ 8w  d1   V\        V P                  4      8w  d   \        V P                  R4       \        SV `  V4      # )r   TzRArguments to cython.critical_section must be Python objects, pymutex, or pymutex*.zHArguments to cython.critical_section must not mix objects and pymutexes.)rx  r
   get_cy_pymutex_typer  rW   r   r  r  r  is_pymutex_critical_sectionr  rx  r   r9   rM   rm   )r   r   cy_pymutex_typemutex_countr5  r?  rP   s   &&    r4   r   +CriticalSectionStatNode.analyse_expressionsH#  s   $88:		*FA))#.CO+HHOOO(:(:o(Mq 370%%% ((-
 GGh IIaL+ +, !s499~ =Z w*3//r3   c                T   V P                   '       d4   VP                  P                  \        P                  ! R R4      4       RpM2VP                  P                  \        P                  ! RR4      4       RpVP                  V P                  4       VP                  4        \        P                  pVP                  V P                  P                  V4       R24       V P                   F  pVP                  V4       K  	  V P                   '       dL   V P                   Uu. uF4  qDP                  P                   '       d   RMR VP#                  4        2NK6  	  ppM,V P                   Uu. uF  pRVP#                  4        2NK  	  ppVP                  RV P$                   R	V R
V RRP'                  V4       R2	4       \(        P+                  W4       V P                   F%  pVP-                  V4       VP/                  V4       K'  	  VP1                  4        R# u upi u upi )CriticalSectionsMutexSynchronization.cMutexCriticalSectionsr   r  r\  r  __Pyx_PyCriticalSection_Beginz(&r   r  N)r~  r&  r  r   r  rS  r9   r^  r	   critical_section_variablerU   rs  r  rW   r  r  r  r   rq  r   r  r,  rh  r  ra  )r   rZ   mutexr\  r?  rW   s   &&    r4   r,  /CriticalSectionStatNode.generate_execution_codei#  s   +++--''(?ATUWE--''(:<OPREdhh33

dmm44X>?qAB99C((. +++RVR[R[]R[3hhooo37

~FR[D]D=AYYHYc{3::<.1YDH

%doo%6fUG2hZrRVR[R[\`RaQbbde	
 	224>99C&&t,NN4   	 ^Hs   $:H /H%c                2    \        V P                  R 4       R# )z!Critical sections require the GILN)r   r9   r   s   &&r4   r  #CriticalSectionStatNode.nogil_check#  s    dhh;<r3   )r~  rq  rs  )r+   r,   r-   r.   r   r  r   rs  r  r~  r   rx  r   r   r,  r  r2   rv   rw   rx   s   @@r4   ro  ro  #  sV      (/;;;KH"'
"Q1
0BB= =r3   ro  c                   :   a  ] tR tRt o Rt. tR.tR tR tRt	V t
R# )ru  i#  z?
critical_section - the CriticalSectionStatNode that owns this
critical_sectionc                    V # r   r*   r   s   &&r4   r   +CriticalSectionExitNode.analyse_expressions#  rJ  r3   c                f    VP                  R V P                   R\        P                   R24       R# )r  z_End(&r  N)rU   rq  r	   r  r   s   &&r4   r,  /CriticalSectionExitNode.generate_execution_code#  s-    

%doo%6ff>^>^<__ab	
r3   r*   Nr+   r,   r-   r.   r   r   r   r   r,  r2   rv   r   s   @r4   ru  ru  #  s)      K*+
 
r3   ru  c                      a a ] tR tRt oRtR.]P                  ,           tRtRtRt	]
R 4       tV 3R ltV 3R ltR	 tR
tVtV ;t# )r
  i#  zo
Represents
    with l:
        ...
where l in a cython.pymutex or cython.pythread_type_lock.

arg    ExprNode
r?  NFc                   ^RI Hp \        VP                  \        4      '       g   Q h\        VP                  P                  \
        4      '       g   Q hV ! VP                  VP                  VP                  P                  P                  \        VP                  4      VP                  VP                  \        P                  ! VP                  P                  4      4      R7      pW3P                  n        VP                  Vn        V# )rG   r  )r?  r   r
  	lock_temp)r   r  rN   r   r  r
  r9   r~
  CythonLockExitNoder	  r
   r   r  r
  lock_stat_noder  )ro   rY   r  r   s   &&  r4   r
   CythonLockStatNode.from_withstat#  s    $))%78888$))..*;<<<<HH$$/ "**488Z5H5HIZIZ5[\
 06,'-'<'<$r3   c                X   < V P                   P                  V4       \        SV `  V4      # r   )r?  r   rm   r  s   &&r4   r   'CythonLockStatNode.analyse_declarations#  s%    %%c*w+C00r3   c                   < V P                   P                  V4      V n         V P                  p\        V\        4      '       d.   \        VP                  4      ^8  d   VP                  ^ ,          p\        SV `  V4      # r  )r?  r   r   rN   rB  rM   rC  rm   )r   r   r   rP   s   && r4   r   &CythonLockStatNode.analyse_expressions#  s[    88//4yydL))c$**o.B::a=Dw*3//r3   c           	        VP                   P                  V P                  P                  P	                  4       4       VP                  V P                  4       VP                  4        V P                  P                  V4       V P                  P                  4       pV P                  P                  V4       VP                  V R V P                  P                  4        R24       V P                  \        P                  8X  d   RpM$V P                  \        P                   8X  d   RpMRpVP                  RV P                  P                  P"                   RV RV R24       \$        P'                  W4       V P                  P)                  V4       V P                  P+                  V4       V P                  P-                  V4       VP/                  4        R	# )
r  r  Nogilr   Gil__Pyx_Locks__Lockz(*r  N)r&  r  r?  r  get_usage_utility_coderS  r9   r^  r  r
  r   r  rU   r  r)   r0   r1   
cname_partr  r,  rh  r  r

  ra  )r   rZ   r
  gil_strs   &&  r4   r,  *CythonLockStatNode.generate_execution_code#  sT   ))$((--*N*N*PQdhh%NN))+	))$/

i[TXX__%6$7q9:  J$4$44G""j&;&;;GG

\$((--":":!;5	I;VXYZ224>''-D!t$r3   rA
  )r+   r,   r-   r.   r   r  r   r  r  r  r2  r
  r   r   r,  r2   rv   rw   rx   s   @@r4   r
  r
  #  sU      '.:::KIK $10 r3   r
  c                   :   a  ] tR tRt o Rt. tR.tR tR tRt	V t
R# )r  i#  zA
lock_stat_node   CythonLockStatNode   the associated with block
r  c                    V # r   r*   r   s   &&r4   r   &CythonLockExitNode.analyse_expressions#  rJ  r3   c                    V P                   P                  P                  P                  pVP	                  R V RV P                   P
                  P                  4        R24       R# )r  z	_Unlock(*r  N)r  r?  r  r  rU   r  r   )r   rZ   r  s   && r4   r,  *CythonLockExitNode.generate_execution_code#  sQ    ((,,11<<


\*Yt7J7J7T7T7[7[7]6^^`abr3   r*   Nr  r   s   @r4   r  r  #  s+      K()c cr3   r  c                 D    ^RI Hp VP                  V P                  4      # )rG   r  )r   r  r  r  )r  r  s   & r4   cython_view_utility_coder  #  s    ++G,Q,QRRr3   zcpython.arrayc                 0    \         P                  ! R R4      # ArrayAPIzarrayarray.hr   r  r  s   &r4   r  r   $      k.E.EjR`.ar3   zcpython.array.arrayc                 0    \         P                  ! R R4      # r  r  r  s   &r4   r  r  $  r  r3   zcython.viewc                 h   VP                   P                  P                  P                   EF  pVP                  V P
                  8w  d   K!  VP                  R 4      pVP                  R4      pT;'       d    VP                  ;'       g    T;'       d    VP                  pV'       g   V'       g   K  V'       d   K  V'       g   K  VP                  P                  '       g   K  \        V P                  R^ 4       VP                   P                  \        P                  ! RR4      4        R# 	  R# )import_array_import_arrayzx'numpy.import_array()' has been added automatically since 'numpy' was cimported but 'numpy.import_array' was not called.NumpyImportArrayzNumpyImportArray.cN)r&  module_noderF  r  rp   r  r  rP  r  r  r   r9   r  r   r  )rY   rZ   modr  r  rP  s   &&    r4   cimport_numpy_checkr  $  s     ++11CC88t''' ~6822!2!2]]8\8\-J\J\]]}!3!3!@!@!@ #_`ac  11++,>@TU ' Dr3   c                   :   a  ] tR tRt o . tRtR tR tR tRt	V t
R# )CImportStatNodei$  Fc                F   VP                   '       g   \        V P                  R 4       R# TP                  V P                  V P                  V P
                  '       d   ^ MRR7      pRV P                  9   Ed    V P                  P                  R4       Uu. uF  p\        V4      NK  	  ppV^ ,          pVP                  P                  V4      pTpVR,           F2  pVP                  V4      pVP                  W7V P                  4       TpK4  	  V P                  '       d(   VP                  V P                  W P                  4       M{VP                  V4       VP                  WVV P                  4       MMV P                  ;'       g    V P                  pVP                  W2V P                  4      pV P                  Vn        V P                  \        9   dC   VP                  \        V P                  ,          ! VP                  P                   4      4       R# R# u upi )$cimport only allowed at module levelNrelative_levelrJ   rK   r   )r1  r   r9   find_moduler  is_absoluter~  r   r  find_submoduledeclare_moduleas_namer  r  utility_code_for_cimportsr  r  )	r   r   r  rp   r  top_nametop_module_scopesubmodule_scoper:  s	   &&       r4   r   $CImportStatNode.analyse_declarations($  s   """$((BCdhhD<L<L<LqRT ' V$"""595E5E5K5KC5PQ5PT]4(5PEQQxH"{{99(C+Lb		"."="=d"C++D488L. " |||""4<<xxH''5""8txxH<<334#3#3D&&t488DE262B2BE/88  !:4;K;K!LS[[M`M`!ab 9# Rs   Hc                    V # r   r*   r   s   &&r4   r   #CImportStatNode.analyse_expressionsC$  rJ  r3   c                B    V P                   R 8X  d   \        W4       R# R# numpyNr  r  r   s   &&r4   r,  'CImportStatNode.generate_execution_codeF$      w&+ 'r3   r*   N)r+   r,   r-   r.   r   r  r   r   r,  r2   rv   r   s   @r4   r  r  $  s&      KKc6, ,r3   r  c                   H   a  ] tR tRt o . tRtRtRtR tR t	R t
R tRtV tR# )FromCImportStatNodeiK$  Nc           	     |   VP                   '       g   \        V P                  R 4       R# VP                  P	                  R4      ^,           pV P
                  '       de   V P
                  V8  d   \        V P                  R4       R# V P
                  V8X  d+   VP                  '       g   \        V P                  R4       R# VP                  V P                  V P                  V P
                  R7      pV'       g   R# VP                  pVP                  V4       V P                   EF<  w  rVpVR8X  dA   \        VP                  P                  4       4       F  w  rVP                  WV4       K  	  KN  VP                  V4      p	V	'       d	   ^V	n        MV P
                  RJ;'       d    V P
                  ^ 8  p
VP"                  P                  WcV P                  RV
R7      pV'       g   K  VP$                  VJ d(   TP'                  T;'       g    TWP                  4       M\        VR	V: R
V: R24       V	'       g   EK  T;'       g    TpVP                  WV4       EK?  	  VP)                  R4      '       g   VP)                  R4      '       d   V\*        9   d7   VP-                  \*        V,          ! VP"                  P.                  4      4       V P                   FR  w  rpV: RV: 2pV\*        9   g   K  VP-                  \*        V,          ! VP"                  P.                  4      4       KT  	  R# R# )r  NrJ   z3relative cimport beyond main package is not allowedz:relative cimport from non-package directory is not allowedr  r  F)from_moduler9   absolute_fallbackrelative_importzName 'z' not declared in module 'r  cpythoncython)r1  r   r9   rT  countr  
is_packager  r  r  imported_namesr   r9  rl   r  r  rP  r  parent_moduler  
startswithr  r  r  )r   r   qualified_name_componentsr  r  r9   rp   r  
local_namer:  is_relative_importr  r  fqnames   &&            r4   r   (FromCImportStatNode.analyse_declarationsW$  s   """$((BC$'$6$6$<$<S$AA$E!""%>>dhh UV$$(AA#...dhh \]t'7'7RVReRef"11-"&"5"5Cws{)-l.B.B.H.H.J)K%J**:cB *L %++D1!"EJ)-)<)<D)H)d)dTM`M`cdMd&&)kk&=&=DHHX]  pB '> 'CO* &44D**7??dOXXVcdT_#`a5!(DJ**:cB+ #6. !!),,0F0Fx0P0P77$$%>{%KCKKL_L_%`a"11
$/666(()B6)J3;;K^K^)_` 2 1Qr3   c                    VP                   '       g   ^ # VP                  pVR8X  d   VP                  '       g   ^ #  ^# VP                  '       g   ^ # W#P                  8w  d   ^ # ^# )r   class)r  r  rz  is_struct_or_unionrE  )r   r:  rE  r  s   &&& r4   declaration_matches'FromCImportStatNode.declaration_matches$  sX    }}}zz7?))) * 	 ***yy r3   c                    V # r   r*   r   s   &&r4   r   'FromCImportStatNode.analyse_expressions$  rJ  r3   c                B    V P                   R 8X  d   \        W4       R# R# r  r  r   s   &&r4   r,  +FromCImportStatNode.generate_execution_code$  r  r3   r*   )r+   r,   r-   r.   r   r  r  r  r   r  r   r,  r2   rv   r   s   @r4   r  r  K$  s6      KKNN0ad, ,r3   r  c                   <   a  ] tR tRt o R.t^ tR tR tR tRt	V t
R# )FromImportStatNodei$  r  c                   V P                    F  w  r#VR 8X  d<   VP                  '       g   \        V P                  R4        R# ^Vn        ^V n        KG  VP                  V4       VP                  '       dV   VP                  4       fB   \        V P                  P                  P                  : RV: 24      VP                  n        K  K  RVP                  n        K  	  R# )r  z%import * only allowed at module levelNrJ   r   )rl   r1  r   r9   has_import_starimport_starrV  r:  rb  r   r  r  r   r  )r   r   rp   r  s   &&  r4   r   'FromImportStatNode.analyse_declarations$  s     JJLDs{***$(($KL&'##$ 11#6<<<??AIER'+{{'>'>'D'DdKFMB J
 BDFLL> 'r3   c                   ^RI Hp V P                  P                  V4      V n        VP	                  V P
                  \        4      V n        . V n        V P                   EF  w  r4VR8X  d   VP                  P                  4        F^  w  rVVP                  '       d   K  VP                  P                  '       g   K7  VP                  \        P                   ! RR4      4        K  	  K  VP#                  VP$                  4      pVP                  '       d   VP                  P$                  V8X  d   \'        VP                  R4      '       d   VP                  P(                  V P                  P(                  P*                  8X  d   EK+   VP-                  V P                  P(                  P*                  V P
                  V P                  P.                  R7      pVP                  P(                  VP0                  8X  d   EK   VP5                  VR4      pVP                  \        J d   RpM&V P                  P7                  VP                  V4      pV P                  P9                  W4V34       EK  	  V #   \2         d     Li ; i)rG   r  r  ExtTypeTestr  r  )r9   r  N)r   r  r  r   r  r9   r   r   interned_itemsrl   r9  r  r  rz  r  r   r  r  rp   r  r  r   r  r   rT  r   rb  r'  r  )	r   r   r  rp   r  r  r:  r  coerced_items	   &&       r4   r   &FromImportStatNode.analyse_expressions$  s   kk55c:..txxH	  JJLDs{ # 1 1 3HA ===UZZ-I-I-I,,[-D-D]Tf-gh !4
 

6;;/MMMejjoo&=#EJJ>>zz--1H1H1N1NN !$1H1H1N1NTXT\T\@D@Q@Q "1 "S ::11V5J5JJ$ K  99#tD;;.0#'L#'99#6#6v{{C#HL##**D,+GH7 '8  * s   A5I77JJc                r
   VP                  V P                  4       V P                  P                  V4       V P                  '       d^   VP                  R \        P                  : RV P                  P                  4       : RVP                  V P                  4      : R24       V P                  '       EdC   VP                  R4       VP                  P                  \        P                  ! RR4      4       VP                  P                  \         P"                  RR7      pVP                  P                  \$        R	R7      pV P&                  P)                  V4       V P                   UUu. uF  w  p pVP+                  V4      NK  	  pppVP                  R
RP-                  V4       R24       . p. p. p	\/        V P                  4       F  w  p
w  rKpVe   V	P1                  WW34       K"  VP2                  '       dy   VP4                  V8X  dh   VP6                  '       dV   VP6                  P8                  '       d:   VP6                  P:                  P<                  '       d   VP1                  V
4       K  VP1                  WV34       K  	  \?        T;'       g    T	4      p\A        V4      ^8  d)   VP                  RV RV R\A        V4       RV R2	4       MVP                  V R24       VP                  V RV P                  P                  4        RV RVPC                  W0P                  4       24       VPE                  V\$        4       V'       d   VP                  RV R24       V FH  w  rpVP                  RV
 R24       VPG                  V P&                  V4       VP                  R4       KJ  	  V	 FN  w  rrVP                  RV
 R24       VP                  V4       VPG                  W4       VP                  R4       KP  	  VP                  R4       V'       dF   VPI                  \        PJ                  4      pVPM                  V P                  RV RV RV R24       V'       d   VP                  R 4       VPO                  V\$        4       VP                  R 4       VP                  PQ                  V4       VP                  PQ                  V4       VP                  R 4       V P                  PS                  V4       V P                  PU                  V4       R# u uppi )!r+  r  r  r  rZ  
ImportFromr  Fr  Tz*PyObject* const __pyx_imported_names[] = {r[  r]  NrJ  rK  rL  rM  rN  z = 0; {z = __Pyx_ImportFrom(z, __pyx_imported_names[z]); rd  r,  rg  r   rj  z	default:;zPyDict_SetItem(z], r  r  )+rS  r9   r  r  r  rU   r	   r%  r  r  r&  r  r   r  r  r  r
   rR  r   r   r%  rq  r   r  r  r  rp   r:  rg
  rF  r1  rn  rM   r  r  r  r  r  r  r  r  rh  r  )r   rZ   counter_var	item_temprp   r  r  simple_pyglobalsdirect_assignmentscoerced_assignmentsr5  r  r  needs_specific_assignmentsmodule_dicts   &&             r4   r,  *FromImportStatNode.generate_execution_code$  sX   dhh,,T2JJ&&KK))+OODHH-/0 JJsO--''6FGI ..66z7S7S`e6fK44^PT4UIII	* #'"5"5"5JD!Q &&t,"5   JJDSXXnE]D^^abc  "!#"$3<T=P=P3Q//D,+'../NO>>>fkkT&9|||(@(@(@V\\EWEWEgEgEg(//2 "))1F*;< 4R *..@.W.WDW)X&>"Q&

U;-tK=CDWCXXZ[fZggmno 

k](34JJ+1$++2G2G2I1JJabmannr**9hh?@B OOI~6 *

Xk]$78'9OAVJJqc|,33DIItDJJx( (:
 6I1AVJJqc|, 99$?33LGJJx(	 6I 

;'"778L8LM%%HH%k]2I+VYZcYddefh *

3!!)^<JJsONN''	2NN''4JJsO**40t$Ks   0T3)r  r  r   r  N)r+   r,   r-   r.   r   r  r   r   r,  r2   rv   r   s   @r4   r  r  $  s+      *KKD&!FX% X%r3   r  c                       ] tR tRtRtRtRtR# )ParallelNodei<%  z,
Base class for cython.parallel constructs.
Nr*   )r+   r,   r-   r.   r   r  r2   r*   r3   r4   r  r  <%  s     Kr3   r  c                     a a ] tR tRt oRt. R"OtRtRtRtRt	Rt
RtRt]P                  ]P                  ]P                   3t]P$                  ]P&                  ]P(                  3t]P,                  ]P.                  ]P0                  3t^ tV 3R ltR tR tR tR	 tR
 t R t!R t"R t#R t$R#R lt%R t&R t'R t(R t)R$R lt*R t+R t,R t-R%R lt.Rt/Rt0R]/: R]0: R2t1R t2R t3R  t4R!t5Vt6V ;t7# )&ParallelStatNodeiD%  a  
Base class for 'with cython.parallel.parallel():' and 'for i in prange():'.

assignments     { Entry(var) : (var.pos, inplace_operator_or_None) }
                assignments to variables in this parallel section

parent          parent ParallelStatNode or None
is_parallel     indicates whether this node is OpenMP parallel
                (true for #pragma omp parallel for and
                          #pragma omp parallel)

is_parallel is true for:

    #pragma omp parallel
    #pragma omp parallel for

sections, but NOT for

    #pragma omp for

We need this to determine the sharing attributes.

privatization_insertion_point   a code insertion point used to make temps
                                private (esp. the "nsteps" temp)

args         tuple          the arguments passed to the parallel construct
kwargs       DictNode       the keyword arguments passed to the parallel
                            construct (replaced by its compile time value)
NFc                   < \         SV `  ! V3/ VB  VP                  R 4      ;'       g    / V n        \	        4       V n        / V n        . V n        R# )r  N)rm   r   r   r  r   seen_closure_varsprivatesassigned_nodesr  s   &&,r4   r   ParallelStatNode.__init__%  sO    '' "::m4:: "%
  !r3   c                j   V P                   P                  V4       R V n        R V n        V P                  '       Ed   . p\        4       pV P                  P                   EF  pVP                  P                  V9   d2   \        V P                  RVP                  P                  ,          4       VP                  VP                  P                  4       VP                  P                  R8X  d2   VP                  P                  '       g   VP                  V n        K  K  VP                  P                  R8X  d4   VP                  P                  '       g   VP                  V n        EK  EK  V P                  '       dO   VP                  P                  R8X  d4   VP                  P                  '       g   VP                  V n        EKl  EKo  VP                  V4       EK  	  W P                  n         V P                  P!                  V4      V n        M/ V n        V P                  P%                  4        F@  w  rgW`P&                  9  d    \        V P                  RV,          4       K4  \)        WV4       KB  	  R #   \"         d+   p\        T P                  P                  R4        R p?LR p?ii ; i)Nz$Duplicate keyword argument found: %snum_threadsuse_threads_if	chunksizez=Only compile-time values may be supplied as keyword argumentszInvalid keyword argument: %s)r   r   r  threading_conditionr   r   r  r   r   r   r9   r   r  	is_pranger  r  r^  	Exceptionrl   valid_keyword_argumentsr   )r   r   pairsseendictitemr  r   r{  s   &&      r4   r   %ParallelStatNode.analyse_declarations%  s   		&&s+#' ;;;E5D KK77<<%%-$(($JX\\M_M_$_`++,<<%%6#>>111+3>>( 2\\''+;;#>>1113;>>0 2^^^(:(:k(I#>>111)1 2 LL* 8  +0KK'H"kk<<SA
 DK{{((*GB555dhh > CD#&	 +  Hdkkoo (G H HHs   5 I= =J2 J--J2c                @   V P                   '       d!   V P                   P                  V4      V n         V P                  '       dJ   V P                  '       d"   V P                  P                  V4      V n        M\	        V P
                  R 4       V P                  '       d!   V P                  P                  V4      V n        V P                  P                  V4      V n        V P                  V4       V P                   Ee   V P                  '       dL   V P                  P                   e4   V P                  P                  '       g   \	        V P
                  R4       MV P                  '       d4   V P                  P                  '       g   \	        V P
                  R4       MxV P                   P                  P                  '       dS   V P                   P                  '       d7   V P                   P                  V4      ^ 8:  d   \	        V P
                  R4       V P                   P                  4       '       d'   V P                   P                  P                   '       d?   V P                   P#                  \$        P&                  V4      P)                  V4      V n         V # )z@'use_threads_if' must de declared in the parent parallel sectionz-num_threads already declared in outer sectionz;num_threads must be declared in the parent parallel sectionz.argument to num_threads must be greater than 0)r  r   r  is_parallelr   r9   r  r   analyse_sharing_attributesparentr  r  r  r  r^  r
  r  r'  r
   rJ  rx  r   s   &&r4   r   $ParallelStatNode.analyse_expressions%  s   #//CCCHD###+/+C+C+W+WX[+\(dhh bc>>>!^^??DDNII11#6	'','{{{t{{66B4;;K`K`K`dhh OPT[[%:%:%:dhh ]^""''...$$///$$77<Adhh PQ##--//43C3C3H3H3T3T3T#'#3#3#=#=))3$00>s0C  r3   c                ^   V P                   P                  4        F  w  pw  r4V P                  '       d;   V P                  '       g)   W P                  P                   9   d   \        VR4       KT  V P                  '       g   V'       d   \        VR4       K|  V P                  W#V4       K  	  R# )z
Analyse the privates for this block and set them in self.privates.
This should be called in a post-order fashion during the
analyse_expressions phase
z0Cannot assign to private of outer parallel blockz*Reductions not allowed for parallel blocksN)r  rl   r  r  r  r   propagate_var_privatization)r   r   r:  r9   r}  s   &&   r4   r  +ParallelStatNode.analyse_sharing_attributes%  s     !% 0 0 6 6 8E9C~~~d&6&6&6 KK333#QR>>>bcGH ,,U<# !9r3   c                t   W0P                   V&   VP                  P                  '       d   \        VR4       R# V P                  '       dn   V P
                  '       g2   WP                  P                  9  d   V P                  P                  pMV P                  pV'       d   VP                  WV4       R# R# R# )a  
Propagate the sharing attributes of a variable. If the privatization is
determined by a parent scope, done propagate further.

If we are a prange, we propagate our sharing attributes outwards to
other pranges. If we are a prange in parallel block and the parallel
block does not determine the variable private, we propagate to the
parent of the parent. Recursion stops at parallel blocks, as they have
no concept of lastprivate or reduction.

So the following cases propagate:

    sum is a reduction for all loops:

        for i in prange(n):
            for j in prange(n):
                for k in prange(n):
                    sum += i * j * k

    sum is a reduction for both loops, local_var is private to the
    parallel with block:

        for i in prange(n):
            with parallel:
                local_var = ... # private to the parallel
                for j in prange(n):
                    sum += i * j

Nested with parallel blocks are disallowed, because they wouldn't
allow you to propagate lastprivates or reductions:

    #pragma omp parallel for lastprivate(i)
    for i in prange(n):

        sum = 0

        #pragma omp parallel private(j, sum)
        with parallel:

            #pragma omp parallel
            with parallel:

                #pragma omp for lastprivate(j) reduction(+:sum)
                for j in prange(n):
                    sum += i

            # sum and j are well-defined here

        # sum and j are undefined here

    # sum and j are undefined here
z9Memoryview slices can only be shared in parallel sectionsN)	r  r  r2  r   r  r  r  r  r   )r   r:  r9   r}  r  s   &&&& r4   r   ,ParallelStatNode.propagate_var_privatization%  s    j  "e::(((#RS>>>###[[5L5L(L++225rB  r3   c                   V P                   '       d   V P                   P                  W4      # VP                  V P                  9   d   VP                  # VP                  P                  VP                  R4      pV P                  P                  VP                  4       V P                  P                  V4       V P                  P                  W"P                  34       VP                  V: RVP                  : R24       W2n        R# )zW
Helper function that allocate a temporary for a closure variable that
is assigned to.
Tr  r  N)r  _allocate_closure_tempr  r
  r  r  r  r   modified_entriesr  rU   )r   rZ   r:  r  s   &&& r4   r%  'ParallelStatNode._allocate_closure_temp>&  s    
 ;;;;;55dBB;;$000;;,,UZZ> 	""5;;/""5)$$e[[%9:

45r3   c                    V P                   pVP                  P                  pW3P                  n        VP                  V4       WCP                  n        VP	                  4       # r   )1begin_of_parallel_control_block_point_after_declsr  ownerr  r   )r   rZ   r  r   r*  s   &&&  r4   evaluate_before_block&ParallelStatNode.evaluate_before_blockT&  sL    BB !!%%a(!{{}r3   c                    V P                   e4   VP                  RV P                  WP                   4      ,          4       R# R# )zC
Write self.num_threads if set as the num_threads OpenMP directive
Nz num_threads(%s))r  r  r+  r   s   &&r4   put_num_threads ParallelStatNode.put_num_threads`&  s8     'HH'$*D*DTK[K[*\\] (r3   c                    . V n         \        V P                  4       F:  pVP                  '       g   VP                  '       g   K)  V P                  W4       K<  	  R# )z
If a variable is in a scope object, we need to allocate a temp and
assign the value from the temp to the variable in the scope object
after the parallel section. This kind of copying should be done only
in the outermost parallel section.
N)r&  sortedr  from_closurer  r%  )r   rZ   r:  s   && r4   declare_closure_privates)ParallelStatNode.declare_closure_privatesh&  sF     !#D,,-E!!!U%5%5%5++D8 .r3   c                    V P                    FS  w  r#VP                  V: RVP                  : R24       VP                  P	                  VP                  4       W2n        KU  	  R# )z
Release any temps used for variables in scope objects. As this is the
outermost parallel block, we don't need to delete the cnames from
self.seen_closure_vars.
r  r  N)r&  rU   r  r  r  )r   rZ   r:  r.  s   &&  r4   release_closure_privates)ParallelStatNode.release_closure_privatesu&  sG     &*%:%:!EJJ^U[[ABNN''4(K &;r3   c                   V P                   pRV n         V P                  '       Ed   VP                  P                  4       ;V n        p. . re\        V4       FM  w  rxVP                  '       g   VP                  '       d   VP                  V4       K<  VP                  V4       KO  	  V'       d(   VP                  RRP                  V4      ,          4       V'       d(   VP                  RRP                  V4      ,          4       V P                  '       d   \        P                  .p	V P                  '       d   V	P                  V P                   4       VP"                  P%                  \&        P(                  ! RR4      4       VP                  R\        P*                   R24       VP                  R	V P,                  ,          4       VP                  R
RP                  V	4      ,          4       R# R# R# )zz
Make any used temporaries private. Before the relevant code block
code.start_collecting_temps() should have been called.
Nz private(%s)r    firstprivate(%s)SharedInFreeThreadingr  z' __Pyx_shared_in_cpython_freethreading(r  z private(%s, %s, %s)z shared(%s))privatization_insertion_pointr  r  stop_collecting_tempsr  r1  r  r2  r  r  r   breaking_label_usedr	   parallel_whyerror_label_usedr
  parallel_excr&  r  r   r  parallel_freethreading_mutexpos_info)
r   rZ   exclude_tempsr   r  r  firstprivatesr  r  shared_varss
   &&&       r4   privatize_temps ParallelStatNode.privatize_temps&  s{   
 ..-1*!%!E!E!GGDJ&("m$Um
###t'>'>'>!((.OOD)	 , ntyy'::;)DIIm,DDE'''%223(((&&t'8'89MM22#//3/12 EECFDgDgChhijkEE04==@Amdii&<<= ( r3   c                    V P                   '       dY   V P                  '       gE   VP                  R 4       \        V P                  4       F  w  r#VP                  W#RR7       K  	  R# R# R# )z/* Clean up any temporaries */Tr  N)r  is_nested_prangerU   r1  r  r  )r   rZ   r  r  s   &&  r4   cleanup_tempsParallelStatNode.cleanup_temps&  sV    D$9$9$9JJ78$TZZ0
&&tD&A 1 %:r3   c                @   VP                  4       V n        VP                  4       V n        VP                  V n        VP                  RR7      Vn        VP                  4        VP                  4       V n	        VP                  4       V n
        V P                  V4       R# )a  
Sets up a block that surrounds the parallel block to determine
how the parallel section was exited. Any kind of return is
trapped (break, continue, return, exceptions). This is the idea:

{
    int why = 0;

    #pragma omp parallel
    {
        return # -> goto new_return_label;
        goto end_parallel;

    new_return_label:
        why = 3;
        goto end_parallel;

    end_parallel:;
        #pragma omp flush(why) # we need to flush for every iteration
    }

    if (why == 3)
        goto old_return_label;
}
returnr  N)r	  r	  r,  r5  rF  r
  r  r^  rQ   %begin_of_parallel_control_block_pointr)  "undef_builtin_expect_apple_gcc_bugr   s   &&r4   !setup_parallel_control_flow_block2ParallelStatNode.setup_parallel_control_flow_block&  s    4  $335#335 $ 1 1 NNN9595I5I5K2AEAUAUAW>//5r3   c                0    VP                  4       V n        R# )ad  
Each OpenMP thread in a parallel section that contains a with gil block
must have the thread-state initialized. The call to
PyGILState_Release() then deallocates our threadstate. If we wouldn't
do this, each with gil block would allocate and deallocate one, thereby
losing exception information before it can be saved before leaving the
parallel section.
N)rQ   begin_of_parallel_blockr   s   &&r4   begin_parallel_block%ParallelStatNode.begin_parallel_block&  s     (,';';'=$r3   c                V   V P                   pRV n         V P                  '       Ed   TpVP                  R4       VP                  RR7       VP                  R4       VP                  R4       VP                  R4       VP                  R4       VP                  R4       VP	                  R	4       VP                  4        VP                  R4       V P                  V4       VP                  4        VP                  R
4       VP	                  R4       VP                  R4       R# R# )a^  
To ensure all OpenMP threads have thread states, we ensure the GIL
in each thread (which creates a thread state if it doesn't exist),
after which we release the GIL.
On exit, reacquire the GIL and release the thread state.

If compiled without OpenMP support (at the C level), then we still have
to acquire the GIL to decref any object temporaries.
N#ifdef _OPENMPTr  Py_BEGIN_ALLOW_THREADS#endif /* _OPENMP */Py_END_ALLOW_THREADSr  z{
z#ifndef _OPENMPz}
)rS  r?  rU   r  put_saferJ  r  )r   rZ   
begin_codeend_codes   &&  r4   end_parallel_block#ParallelStatNode.end_parallel_block&  s     11
'+$   H-.%%t%<5634NN+,NN12NN7#e$##%NN12x(,,.NN,-e$NN12% !r3   c                   VP                  4       pVP                  4       pRV n        RV n        RV n        . V n        VP                  4       pV FJ  pVP                  V4      '       g   K  V P                  ;'       g    WaP                  8g  V n        RV n        KL  	  V P                  '       d   VP                  V4       \        V4       F  w  rvVP                  V4      '       g   K  WaP                  8H  pVP                  V4       V'       d	   V'       gX   WaP                  8X  d   RV n        V P                  V4       VP                  R\        P                  V^,           3,          4       VP                  V4       K  	  V P                  '       dX   VP                  V4       V'       d=   V P                  '       d)   VP!                  R\        P                  ,          4       R# R# R# R# )a  
Trap any kind of return inside a parallel construct. 'should_flush'
indicates whether the variable should be flushed, which is needed by
prange to skip the loop. It also indicates whether we need to register
a continue (we need this for parallel blocks, but not for prange
loops, as it is a direct jump there).

It uses the same mechanism as try/finally:
    1 continue
    2 break
    3 return
    4 error
FTz%s = %d;#pragma omp flush(%s)N)r  any_label_usedr=  r?  parallel_private_tempsr  rC  rA	  rE  r  rG  rD  fetch_parallel_exceptionrU   r	   r>  rT	  )	r   rZ   should_flushsave_lastprivates_labeldont_return_label
all_labelsr  r5  is_continue_labels	   &&&      r4   trap_parallel_exit#ParallelStatNode.trap_parallel_exit&  s    #'.."2 NN,##(  %&(#((*
  Eu%%,0,D,D -I -I,15H5H,H (&*#	   MM+,!*-HA??5)) %)<)< <NN5! %6,,,,0D)11$7

:)<)<a!e(DDEMM+, .  NN,- 8 8 8!!"9F<O<O"OP !9| r3   c                   VP                  4        VP                  RR7       VP                  4        VP                  R\        P
                  ,          4       VP                  R\        P
                  ,          4       VP                  RV P                  ,          4       \        \        V P                  V P                  4      !  pRVP                  n        VP                  R\        V4      ,          4       VP                  \        P
                  \         4       VP                  R4       VP#                  4        VP%                  4        VP'                  4        R# )	a  
As each OpenMP thread may raise an exception, we need to fetch that
exception from the threadstate and save it for after the parallel
section where it can be re-raised in the master thread.

Although it would seem that __pyx_filename, __pyx_lineno and
__pyx_clineno are only assigned to under exception conditions (i.e.,
when we have the GIL), and thus should be allowed to be shared without
any race condition, they are in fact subject to the same race
conditions that they were previously when they were global variables
and functions were allowed to release the GIL:

    thread A                thread B
        acquire
        set lineno
        release
                                acquire
                                set lineno
                                release
        acquire
        fetch exception
        release
                                skip the fetch

        deallocate threadstate  deallocate threadstate
Tr  ra  r  z'__Pyx_ErrFetchWithState(&%s, &%s, &%s);%s = %s; %s = %s; %s = %s;r  N)r^  r  put_acquire_freethreading_lockrT	  r	   parallel_exc_typerU   r@  r   r  parallel_pos_inforB  r  uses_error_indicatorrp  r  r   put_release_freethreading_lockr  ra  r   rZ   rB  s   && r4   rd  )ParallelStatNode.fetch_parallel_exception4'  s    6 	T2++-1F4L4LLM

6333	5 	

<t?P?PPQ#d44dmmDE.2+

/%/AB00.A

	 	++-$$&r3   c                   VP                  4        VP                  RR7       VP                  4        VP                  \        P
                  \        4       VP                  RV P                  ,          4       \        \        V P                  V P                  4      !  pVP                  R\        V4      ,          4       VP                  4        VP                  4        VP!                  4        R# )zRe-raise a parallel exceptionTr  r	  rm  N)r^  r  rn  r  r	   ro  r   rU   r@  r   r  rB  rp  rp  rr  r  ra  rs  s   && r4   restore_parallel_exception+ParallelStatNode.restore_parallel_exceptiond'  s    T2++-11>B

;d>O>OOP#dmmT-C-CDE

/%/AB++-$$&r3   c                v    VP                  V P                  V P                  V P                  3,           4       R# )z
Restore all old labels. Call this before the 'else' clause to for
loops and always before ending the parallel control flow block.
N)r  r	  r
  r5  r   s   &&r4   restore_labelsParallelStatNode.restore_labelss'  s8    
 	D00D4I4I484H4H4J J 	Kr3   c                   V P                   pRV n         RV n        V P                  e7   V P                  P                  V4       V P                  P	                  V4       VP                  4       '       d   VP                  R4       V P                  '       d   VP                  RV P                  ,          4       VP                  RV P                  ,          4       VP                  R4       VP                  R\        P                   R24       VP                  R4       VP                  R	\        P                  ,          4       VP                  R
4       VP                  R\        P                  ,          4       VP                  R4       V'       d   V P                  pMV P                  pV'       Ed   VP                  R\        P                  ,          4       VP                  R\        P                  ,          4       VP                  R	\        P                  ,          4       V P                    F:  w  rxp	V	P"                  '       d
   RV,          pVP                  V: RV: R24       K<  	  VP                  R\        P                  ,          4       V'       d-   VP%                  R4       VP'                  VP(                  4       V'       d-   VP%                  R4       VP'                  VP*                  4       V'       d-   VP%                  R4       VP'                  VP,                  4       V P                  '       d]   VP.                  P1                  \2        4       VP                  R4       V P5                  V4       VP'                  VP6                  4       VP                  R4       VP                  R4       VP9                  4        V P;                  V4       R# )a  
This ends the parallel control flow block and based on how the parallel
section was exited, takes the corresponding action. The break_ and
continue_ parameters indicate whether these should be propagated
outwards:

    for i in prange(...):
        with cython.parallel.parallel():
            continue

Here break should be trapped in the parallel block, and propagated to
the for loop.
N$__Pyx_TurnOffSysMonitoringInParallelz*const char *%s = NULL; int %s = 0, %s = 0;z,PyObject *%s = NULL, *%s = NULL, *%s = NULL;z-#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADINGzPyMutex z = {0};r  r   zg/* This may have been overridden by a continue, break or return in another thread. Prefer the error. */z%s = 4;r  zint %s;r
  r	  r  r  r  z    case 1: z    case 2: z    case 3: z    case 4:)rN  r)  r  rh  r  r  rU   r?  rp  r@  r	   rA  ro  r>  rb  r=  rc  r  r  rE  rA	  r9	  rF  r&  r  rJ  rv  rD  ra  "redef_builtin_expect_apple_gcc_bug)
r   rZ   break_	continue_return_r   rb  
temp_cnameprivate_cnamer
  s
   &&&&&     r4   end_parallel_control_flow_block0ParallelStatNode.end_parallel_control_flow_block{'  s    66592AE>'33D9''-<<>> GG:;    GG@4CYCYYZGGBTEVEVVWGGCDGGhvBBC9MNGGHJJf6668JJ Q RJJy6#6#667JJ !00N!55N>GGI 3 334GGI 3 334JJf1113 9=8S8S4
9)))!BZ!OJ


CD	 9T JJ)<)<<=(d112(d../(d//0$$$  112PQ

=)//5d../JJsOJJ 	//5r3   z((defined(__APPLE__) || defined(__OSX__))zQ(defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))r  r  r  c                d    V P                   '       g   VP                  V P                  4       R# R# )zM
A bug on OS X Lion disallows __builtin_expect macros. This code avoids them
N)r  undef_builtin_expectredef_conditionr   s   &&r4   rO  3ParallelStatNode.undef_builtin_expect_apple_gcc_bug'  s&     {{{%%d&:&:; r3   c                d    V P                   '       g   VP                  V P                  4       R # R # r   )r  redef_builtin_expectr  r   s   &&r4   r}  3ParallelStatNode.redef_builtin_expect_apple_gcc_bug'  s$    {{{%%d&:&:; r3   c                    \        W#4       FF  w  rEVf   K  VP                  P                  '       g   K)  \        VP                  RV,          4       KH  	  R # )Nz6%s may not be a Python object as we don't have the GIL)r  r  r  r   r9   )r   r   r  nodesrp   rY   s   &&&&  r4   _parameters_nogil_check(ParallelStatNode._parameters_nogil_check'  sE    e+JDDII$9$9$9dhh !;=A!B C ,r3   )rb  r  r  rS  rN  r)  r   r=  r  r?  r   r&  r  r5  r	  r
  rc  r  r;  r
  r  r  )r   r  r  )r*   r  )FFF)8r+   r,   r-   r.   r   r   r   r  rI  r?  r  r  r  r	   ro  parallel_exc_valueparallel_exc_tbr@  parallel_filenameparallel_linenoparallel_clinenorp  r7  r5  r6  rB  critical_section_counterr   r   r   r  r   r%  r+  r.  r3  r6  rF  rJ  rP  rT  r^  rj  rd  rv  ry  r  buggy_platform_macro_conditionhave_expect_conditionr  rO  r}  r  r2   rv   rw   rx   s   @@r4   r  r  D%  sS    < AKDIKI 	  !!L 	   	H  !!"('T>=2CCJ,
^9	)!>FB#6J	>3B7Qr.`KX6v &P"[&DF[\O<<C Cr3   r  c                   R   a a ] tR tRt oRtRR.tRtRtV 3R ltR t	R t
R	tVtV ;t# )
ParallelWithBlockNodei'  zA
This node represents a 'with cython.parallel.parallel():' block
r  r  Nc                z   < \         SV `  V4       V P                  '       d   \        V P                  R 4       R# R# )z=cython.parallel.parallel() does not take positional argumentsN)rm   r   rW   r   r9   r  s   &&r4   r   *ParallelWithBlockNode.analyse_declarations'  s1    $S)999$(( 3 4 r3   c                   V P                   e   V P                   P                  V4       V P                  V4       V P                  V4       VP	                  R4       VP                  R4       V P                   e1   VP                  RV P                   P                  4       ,          4       V P                  '       d{   V P                   Uu. uF-  pVP                  P                  '       d   K!  VP                  NK/  	  ppV'       d0   RP                  \        V4      4      pVP                  RV R24       VP                  4       V n        V P                  V4       VP	                  R4       VP	                  R4       VP!                  4        V P#                  V4       VP$                  P'                  4        V P(                  P+                  V4       V P-                  V4       V P/                  V4       V P1                  V4       VP3                  4        VP5                  VP6                  4      pVP5                  VP8                  4      pVP5                  VP:                  4      pV P=                  V4       V P?                  WVVR	7       V P                   e7   V P                   PA                  V4       V P                   PC                  V4       V PE                  V4       R # u upi )
NrW  z#pragma omp parallel zif(%s) r   zfirstprivate(r  r   rY  )r~  r  r  )#r  r  r3  rP  rU   r  r   r  r  r  r  r   r1  rQ   r;  r.  r^  rT  r  start_collecting_tempsr   r,  rj  rF  r^  ra  rC  rA	  r9	  rF  ry  r  rh  r  r6  )r   rZ   r  r  joined_privatesr  r~  r  s   &&      r4   r,  -ParallelWithBlockNode.generate_execution_code'  sE   ##/$$==dC%%d+..t4

#$()##/HHY!9!9!@!@!BBC ===)- 3A vv11  H 3"&))F8,<"==(9;<-1-A-A-C*T"

2

)*!!$'--/		))$/%T"%OOD$7$78	!1!12//$"3"34D! 	,,T7@5< 	- 	> ##/$$;;DA$$//5%%d+I3s   K&/K&c                D    V P                  VR .V P                  .4       R# )r  N)r  r  r   s   &&r4   r  !ParallelWithBlockNode.nogil_check4(  s!    $$S+;*<t?W?W>XYr3   )r;  )r+   r,   r-   r.   r   r  r  r  r   r,  r  r2   rv   rw   rx   s   @@r4   r  r  '  s:       -.>?K44,lZ Zr3   r  c                      a a ] tR tRt oRt. ROtR;t;t;tt	R;t
;ttRtRtRt. ROt ! R R]4      tV 3R ltV 3R ltV 3R	 ltR
 tR tR tRtVtV ;t# )ParallelRangeNodei8(  z
This node represents a 'for i in cython.parallel.prange():' construct.

target       NameNode       the target iteration variable
else_clause  Node or None   the else clause of this loop
NTc                       ] tR tRtR.tRtR# )#ParallelRangeNode.DummyIteratorNodeiN(  rW   r*   NrR  r*   r3   r4   DummyIteratorNoder  N(  s	    hr3   r  c                l   < \         SV `  ! V3/ VB  V P                  WP                  R 7      V n        R# )rK  N)rm   r   r  rW   r
  )r   r9   rX   rP   s   &&,r4   r   ParallelRangeNode.__init__Q(  s0    %% ..s.Cr3   c                  < \         SV `  V4       V P                  P                  V4       V P                  e   V P                  P                  V4       V P
                  '       d   \        V P
                  4      ^8  d   \        V P                  R4       R # \        V P
                  4      ^8X  d   V P
                  w  V n	        MS\        V P
                  4      ^8X  d   V P
                  w  V n
        V n	        MV P
                  w  V n
        V n	        V n        V P                  R9  d'   \        V P                  RV P                  : 24       R # R # )Nz0Invalid number of positional arguments to prangez%Invalid schedule argument to prange: )Nstaticdynamicguidedruntime)rm   r   r  rV  r	  rW   rM   r   r9   rl  r\   rO
  scheduler  s   &&r4   r   &ParallelRangeNode.analyse_declarationsW(  s    $S)..s3'11#6yyyC		NQ.$((NOtyy>QJDI^q $(II!DJ	/3yy,DJ	49== PP$((XY Qr3   c                	  < VP                   pV P                   '       d   R Vn         V P                  f   \        V P                  R4       V # V P                  P	                  V4      V n        V P                  P
                  P                  '       gx   V P                  P
                  P                  '       g<   \        V P                  P                  RV P                  P
                  ,          4       \        P                  V n
        MV P                  P
                  V n
        R
V n        V P                  V P                  V P                  3p\        W0P                  4       F  w  rEVf   K  VP!                  V4       VP
                  P                  '       g    \        VP                  RV,          4       KW  VP"                  '       g   VP%                  V4      p\'        WV4       \        P(                  ! V P                  VP
                  4      V n
        K  	  V P*                  e!   V P*                  P-                  V4      V n        \/        V P                  RR4      pV'       d:   V P                  P                  R3V P0                  V P                  P2                  &   \4        SV `Y  V4      pVP6                  '       Ed&   VP8                  '       g"   \        VP6                  P                  R4       MVP8                  R8X  d"   \        VP6                  P                  R4       MVP6                  P
                  P:                  '       d]   VP6                  P"                  '       dA   VP6                  P=                  V4      ^ 8:  d!   \        VP6                  P                  R	4       VP6                  P?                  \        P@                  V4      P%                  V4      Vn        VP                   '       d   W!n         VPB                  ;'       d    VPB                  PD                  Vn#        VPF                  '       d   TpVPB                  '       d+   VPB                  PD                  '       d   VPB                  pK<  VP0                  PI                  VP0                  4       VPJ                  PI                  VPJ                  4       VPL                  PO                  VPL                  4       V# )TNz/prange() can only be used as part of a for loopzMust be of numeric type, not %sz%s argument must be numericr:  z$Must provide schedule with chunksizer  z,Chunksize not valid for the schedule runtimezChunksize must not be negative)r\   rl  rO
  )(r  r  r   r9   r   r  r  r  r
   rR  
index_typer  r\   rl  rO
  r  r   r  rx  r   rV
  r	  r   r   r  r:  rm   r  r  r  r^  r'  rJ  r  r  rI  r   r  r  r
  )	r   r   rY  start_stop_steprY   rp   r  r  rP   s	   &&      r4   r   %ParallelRangeNode.analyse_expressionsk(  sh   II	:::CI;;$((MNKkk66s;{{*** ;;##///dkkoo7$++:J:JJL )::DO"kk..DO -
**dii:ozz:JD""3'yy+++$(($AD$HI..s3DD- #-"@"@OOTYY#0 ;  '#//CCCHD t{{GT:26++//42GDT[[../w*3/>>>===dnn((<>)+dnn((DF..%%,,,..+++..33C8A=dnn((*JK!^^55%%s,,:N3,? N :::!I $ E E0E0E   F---FMM$;$;$;%%d&6&67OO""4==1!!(()<)<=r3   c                    RpV P                   V P                  V P                  V P                  V P                  3pV P                  WV4       R# )r\   N)r\   rl  rO
  r  r  )r\   rl  rO
  r  r  r  )r   r   r  r  s   &&  r4   r  ParallelRangeNode.nogil_check(  s=    C

DIItyy$++t?W?WW$$S7r3   c                &   V P                  V4       V P                  P                  P                  pRVRV P                  P                  P                  4       /pV P                  V P                  V P                  3pRp\        W@P                  V4       FU  w  rgpVf   Tp	MDVP                  '       d   VP                  4       p	M!VP                  V4       VP                  4       p	WV&   KW  	  V P                  e   V P                  P                  V4       VP                   P#                  V P$                  R4      VR&   VP                   P#                  V P$                  R4      VR&   V P                  eS   V P                  P'                  4       '       d3   V P                  P(                  ^ 8X  d   \+        XP,                  R4       MLVR,          P/                  4       '       d   \1        VR,          4      ^ 8X  d   VP3                  R	V,          4       V P5                  V4       VP6                  P9                  \:        P<                  ! R
R4      4       VP3                  RV,          4       VP3                  RV,          4       VP?                  4        V PA                  W4       VPC                  4        V PE                  V4       V PF                  '       d   V PH                  '       d'   VPK                  R\L        PN                  ,          4       VP?                  4        VP3                  R4       V PF                  PQ                  V4       VPC                  4        V PS                  V4       W@PT                  V P                  3,            F+  p
V
f   K	  V
PW                  V4       V
PY                  V4       K-  	  VP                   P[                  VR,          4       VP                   P[                  VR,          4       V P]                  V4       R# )a\  
Generate code in the following steps

    1)  copy any closure variables determined thread-private
        into temporaries

    2)  allocate temps for start, stop and step

    3)  generate a loop that calculates the total number of steps,
        which then computes the target iteration variable for every step:

            for i in prange(start, stop, step):
                ...

        becomes

            nsteps = (stop - start) / step;
            i = start;

            #pragma omp parallel for lastprivate(i)
            for (temp = 0; temp < nsteps; temp++) {
                i = start + step * temp;
                ...
            }

        Note that accumulation of 'i' would have a data dependency
        between iterations.

        Also, you can't do this

            for (i = start; i < stop; i += step)
                ...

        as the '<' operator should become '>' for descending loops.
        'for i from x < i < y:' does not suffer from this problem
        as the relational operator is known at compile time!

    4) release our temps and write back any private closure variables
r  r  NFr5  nstepsz!Iteration with step 0 is invalid.rO
  zif (((%(step)s) == 0)) abort();IncludeStdlibHr
  zS%(nsteps)s = (%(stop)s - %(start)s + %(step)s - %(step)s/abs(%(step)s)) / %(step)s;zif (%(nsteps)s > 0)if (%s < 2)z
/* else */)r?  r?  r_
  )/r3  r  r:  r  r  rt  r\   rl  rO
  r  r  r  r  r  r   r  r  r  r  r+  r  r   r9   isdigitr  rU   rP  r&  r  r   r  r^  generate_loopra  ry  r	  r=  r  r	   r>  r,  r  r  rh  r  r  r6  )r   rZ   target_index_cnamefmt_dictr  defaultsrY   rp   r  r   r  s   &&         r4   r,  )ParallelRangeNode.generate_execution_code(  s"   P 	%%d+ "[[..44
 (4;;++BBD
 **dii: #&

H#MD| 88:--d3#TN $N ##/$$==dC44T__eL!^^99$//5Q 99 TYY%B%B%D%DIbIbfgIg$((?@&!))++s8F3C/D/IJJ88CD..t4 	))+*A*ABRTg*hi

hksst 	

(8344*D!''')<)<<=JJ|$44T:NN 	,,T2 $~~t7O7O&PPPD++D1% Q
 	##HSM2##HX$67%%d+r3   c                |	   V P                   '       d   VP                  R 4       MVP                  R4       V P                  '       g>   VP                  R4       VP	                  4       V n        V P                  P
                  pMVP                  R4       V P                  e1   VP                  RV P                  P                  4       ,          4       VP	                  4       V n        V P
                  pVP                  R4       VP                  R4       VP                  4        V P                  V4       V P                   '       d   VP                  R 4       MVP                  R4       VP                  R4       \        V P                  P                  4       4       F  w  rEV'       d|   VR9   du   W@P                  P                  8w  d[   VP                   P"                  '       d   \%        V P&                  R	4       Kb  VP                  R
V: RVP(                  : R24       K  VP                   P"                  '       d   K  VP                  RVP(                  ,          4       VP                  RVP(                  ,          4       K  	  V P*                  '       d[   V P,                  '       d$   RV P/                  WP,                  4      ,          pMRpVP                  RV P*                  : V: R24       V P1                  V4       VP                  R4       VP                  R4       VP                  RV,          4       VP                  4        VP	                  4       pVP                  4        VP                  RV,          4       V P                  '       d-   V P                   '       g   VP2                  P5                  4        V P6                  P9                  V4       V P;                  VRR7       V P                  '       d$   V P                   '       g   V P=                  V4       V P>                  '       d'   VP                  R\@        PB                  ,          4       VPE                  4        VPE                  4        V P                  '       d$   V PG                  V4       VPE                  4        R# R# )z#if 0rW  z#pragma omp forz#pragma omp parallelNz if(%s)r   rY  z+*-&^|z#Python objects cannot be reductionsz reduction(r   r  r9  z lastprivate(%s)z, %sz
 schedule(z,for (%(i)s = 0; %(i)s < %(nsteps)s; %(i)s++)z=%(target)s = (%(target_type)s)(%(start)s + %(step)s * %(i)s);T)re  r  )$rI  rU   r  r  rQ   r;  r  r  r   r^  rT  r1  r  rl   r  r:  r  r  r   r9   r  r  r  r+  r.  r  r  r   r,  rj  rF  r=  r	   r>  ra  r^  )r   rZ   r  reduction_codepointr:  r}  r  guard_around_body_codepoints   &&&     r4   r  ParallelRangeNode.generate_loop@)  s^      JJwJJ'(HH&'151E1E1GD."&++"K"KHH+,''3T%=%=%D%D%FFG151E1E1GD."&"D"DJJrNJJ-. %%d+$$$

7#

+,HH&' 3 3 56IEbHn++2C2C)C::)))$(($IJ (++795;; GI zz---HH05;;>?HH/%++=> 7 ===~~~"T%?%?nn%UU		HH$--CD01

2

)*?(JK&*&:&:&<# 	

RU]]^D$9$9$9NN113		))$/48D$9$9$9  &### (--mf>Q>Q.QR##D)NN r3   )	r	  r  r
  r  r;  r\   rO
  rl  r  )r   r  r	  rW   r  r  r  )r  r  r  r  r  )r+   r,   r-   r.   r   r   r   r  r	  rW   r\   rl  rO
  r  r  r  r  r   r  r   r   r   r  r,  r  r2   rv   rw   rx   s   @@r4   r  r  8(  s     7K *.-D-6-K$ED4IEHaD DZ(Tl8
x,t\ \r3   r  c                   H   a  ] tR tRt o RtR.tR tR tR tR t	R t
R	tV tR
# )CnameDecoratorNodei)  a  
This node is for the cname decorator in CythonUtilityCode:

    @cname('the_cname')
    cdef func(...):
        ...

In case of a cdef class the cname specifies the objstruct_cname.

node        the node to which the cname decorator is applied
cname       the cname the node should get
rY   c                   V P                   P                  V4       V P                   p\        V\        4      '       d   VP                  P
                  ^ ,          p\        V\        \        34      V n        \        V\        \        34      pVP                  pV P                  '       ds   V P                  Vn        V P                  Vn        RVn        VP                  '       d6   RVP                  9   d#   V P!                  VP                  4      Vn        R# R# R# V'       d%   V P                  ;Vn        VP"                  n        R# VP$                  pV P                  Vn        V P                  R,           VP"                  n        \(        P*                  V P                  ,           VP"                  n        V P                  R,           VP"                  n        VP"                  P.                  VP"                  P$                  n        VP"                  P.                  VP2                  n        V P                  R,           Vn        VP6                  P9                  4        Fk  w  rgVP                  '       d!   V P!                  VP                  4      Vn        VP                  '       g   KK  V P!                  VP                  4      Vn        Km  	  R# )r   TrJ   _obj_typer  N)rY   r   rN   r  r   rC  r  rh  is_functionr>  ry  r:  r  r  rP  r  rK  r  rF  rz  r	   typeobj_prefixr{  r+  ri  r  r  r9  rl   )r   r   rY   is_struct_or_enumr  rF  rp   r:  s   &&      r4   r   'CnameDecoratorNode.analyse_declarations)  s   		&&s+yyd23399??1%D%d[+,FG&t.C\-RSJJjjAG::ALAF~~~#"7!%Q^^!< #8~%)ZZ/AGafflJJEjjAG%)ZZ&%8AFF"#)#8#84::#EAFF #'::#7AFF +,66+?+?AFFLL("#&&"6"6AMM!%c!1E$}}224###'+{{5;;'?E$%%%)-U5G5G)HE&	  5r3   c                f    R V9   d   VP                  R 4      R,          pV P                  : RV: 2# )rJ   r  r   )r~  r  )r   r  s   &&r4   rK  CnameDecoratorNode.mangle)  s+    %<KK$R(E**e,,r3   c                F    V P                   P                  V4      V n         V # r   )rY   r   r   s   &&r4   r   &CnameDecoratorNode.analyse_expressions)  r  r3   c                   V P                   '       d   VP                  '       d   VP                  R,          p\        V P                  \
        4      '       d    V P                  P                  VRRR7       Mb^RIHp V P                  P                  pVP                  pVP                  Vn
        VP                  VVP                  4       VRR7       Wen
        V P                  P                  W4       R# )z=Ensure a prototype for every @cname method in the right placeutility_code_protoFTr  )
ModuleNode)
definitionN)r  r  r&  rN   rY   r  r  r   r  r:  r  r  generate_cfunction_declarationr6  r'  )r   r   rZ   h_coder  r:  r  s   &&&    r4   r'  0CnameDecoratorNode.generate_function_definitions)  s     4 4 4%%&:;F$))W--		225T 3 C )		#..99$$&#	 : % $		//:r3   c                <    V P                   P                  V4       R # r   )rY   r,  r   s   &&r4   r,  *CnameDecoratorNode.generate_execution_code)  ru  r3   )r  rY   N)r+   r,   r-   r.   r   r   r   rK  r   r'  r,  r2   rv   r   s   @r4   r  r  )  s3      (K$IL-;20 0r3   r  c                       ] tR tRtRt. tRtR# )	ErrorNodei)  z
Node type for things that we want to get through the parser
(especially for things that are being scanned in "tentative_scan"
blocks), but should immediately raise and error afterwards.

what    str
r*   N)r+   r,   r-   r.   r   r   r2   r*   r3   r4   r  r  )  s     Kr3   r  aC  
/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
z1
#define likely(x)   (x)
#define unlikely(x) (x)
Printz
Printing.cPrintOner
  r	  RaiseExceptionGetExceptionSwapExceptionSaveResetExceptionAddTracebackr*   )r  rC  r  r   	itertoolsr   enumr   r   Errorsr   r   r   r   r   r	   r
   r   r   r   r`	  r   r   r   r   r   r   r   r   r   r   r   rj   r   StringEncodingr   r   r   r    Pythranr!   r"   r#   Utilsr$   r%   rk  IntEnumr)   r:   rD   rb   r  rd   r{   r   r   r   r  r   rB  r]  rd  r  r  r  r  r  r  r  r  rW  r]  r  r  r  r  r  rv  r  r  r  r"  rh  r>  rO  ry  r  r  r  rd  rN  r  r  rr  r  r  r  r  r  r  r+  r/  rM  r  r
  r  r&  r  rF  rY  r  rQ  r  r  r	  r	  r3  r1	  r5	  r=	  r  r\	  r}	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r"
  r$
  r 
  r
  r!
  r|
  r
  r
  r
  r  rA  rC  r$  rk  ro  ru  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  gcc_branch_hintsbranch_prediction_macrosr  r	  r	  rJ  rr	  r
  r4  r
  traceback_utility_coder*   r3   r4   <module>r     s     "& "v "V ""%+"5;"DJ"W]"$"28"EK"Z`" #)" 8>" $	" 28	" HN	"
 !"     Q Q    2: : : :  )    D D 0 -.AB  644
8 
88T 84 ( lW lW lW^2*T 2*j: :" 4 " J%t %*%!X %!Pd 2 /  Fi i$-O -i< ii'D i/k? /kdqM/ qMh
f? 
fk!4 k!\	!D 	!D e- eN"
m "
J- ,B BJ	= 	 $$;M $;NZ} ZpH( pHf*H *ZZ!() Z!zX*8 X*v(6x (6V8 Bk.(I k.\A; AH<D < D  K	k K	\Q*[ Q*h8<w 8<v# 
!< !
< 
M 7 M `{ {|	8Y 	r!\ r!je	%L e	%P!8 !8#!H #!L $8 $=!8 =!@",X ",JH > H V
h ^ h V/ ^ / dDQN DQN@&H @&F&8 &R5( 5p
$8 
$4l 4,H , +x + l&X l&^@&H @&F.h .>/&X /&d-, -,`&!4 &!R!!X !!H,,X ,,^	 	9,Hh 9,xYD Yx9 4 9 x*`!Xx `!F,N ,?~ ?(m,h m,`f8 fR >  Bh, h,VU!t U!pQ+ Q+h0 U) Up]( ]84K 4n=0 n=b
h 
I+ IXc#: cS aa6 2*,h *,ZQ,( Q,hZ% Z%z4 f
Cx f
CTGZ, GZTd( dNZ0 Z0z " 
   $//F '33JM  "-!8!89Ln!]  ,,-=~N (44^^T )55o~V *667K^\ $00P r3   