§
    ƒÛgËû  ã                   ó,  — d dl mZmZ d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlm Z  d dl!m"Z" d d	l#m$Z$m%Z% d d
l&m'Z'  edd¦  «        Z( G d„ de)¦  «        Z* G d„ de*¦  «        Z+d„ Z,dS )é    )Ú
namedtupleÚdefaultdictN)Úpartial)ÚConstantÚ	IRBuilder)ÚtypingÚutilsÚtypesÚirÚ	debuginfoÚfuncdescÚ
generatorsÚconfigÚir_utilsÚcgutilsÚremoverefctpassÚtargetconfig)ÚLoweringErrorÚnew_error_contextÚTypingErrorÚLiteralTypingErrorÚUnsupportedErrorÚNumbaDebugInfoWarning)Údefault_mangler)ÚEnvironment)Úcompute_use_defsÚmust_use_alloca)Úget_func_body_first_linenoÚ_VarArgItem)ÚvarargÚindexc                   ó¼   — e Zd ZdZdd„Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zdd„Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú	BaseLowerz
    Lower IR to LLVM
    Nc                 ód  — || _         || _        t          j        |j                             ¦   «         ¦  «        | _        || _        |j        | _        || _        t          j
                             ¦   «         | _        | j                              | j        j        ¦  «        | _        t!          j        | j        ¦  «        | _        i | _        i | _        i | _        t-          | j                             ¦   «         ¦  «        | _        d| _        |                     | j        | j        ¬¦  «        | _        | j        j        r| j        j        nt<          j        }|                       ¦   «         | _!        | j        j"        } || j        |j        j#        ||¬¦  «        | _        |  $                    ¦   «          d S )Néÿÿÿÿ)ÚenvironmentÚfndesc)ÚmoduleÚfilepathÚcgctxÚdirectives_only)%Úlibraryr'   r	   Ú	SortedMapÚblocksÚitemsÚfunc_irÚgenerator_infoÚmetadatar   ÚConfigStackÚtop_or_noneÚflagsÚcreate_ir_moduleÚunique_namer(   r   Úfrom_fndescÚenvÚblkmapÚpending_phisÚvarmapÚminÚkeysÚfirstblkÚlocÚ	subtargetÚcontextÚenable_debuginfoÚ	DIBuilderr   ÚDummyDIBuilderÚ_compute_def_locationÚdefn_locÚdbg_directives_onlyÚfilenameÚinit)ÚselfrB   r,   r'   r0   r2   Údibuilderclsr+   s           úI/granary/edev/quantum/lib/python3.11/site-packages/numba/core/lowering.pyÚ__init__zBaseLower.__init__   sx  € ØˆŒØˆŒÝ”o g¤n×&:Ò&:Ñ&<Ô&<Ñ=Ô=ˆŒØˆŒØ%Ô4ˆÔØ ˆŒÝ!Ô-×9Ò9Ñ;Ô;ˆŒ
ð ”l×3Ò3°D´KÔ4KÑLÔLˆŒõ Ô*¨4¬;Ñ7Ô7ˆŒð ˆŒØˆÔØˆŒÝ˜DœK×,Ò,Ñ.Ô.Ñ/Ô/ˆŒØˆŒð
 ×(Ò(°T´XØ04´ð )ñ =ô =ˆŒð
  œ<Ô8ð6˜œÔ.Ð.å&Ô5ð 	ð
 ×2Ò2Ñ4Ô4ˆŒàœ*Ô8ˆØ%˜¨T¬[Ø/6¬{Ô/CØ,3Ø6EðGñ Gô GˆŒð 	�	Š	‰Œˆˆˆó    c                 ó   — | j         j        S ©N)rB   Ú	call_conv©rK   s    rM   rR   zBaseLower.call_convK   s   € àŒ|Ô%Ð%rO   c                 ó   — d S rQ   © rS   s    rM   rJ   zBaseLower.initO   s   € ØˆrO   c                 óì   — | j         �dS | j                             | j        ¦  «        | _         | j                             | j        ¦  «        | _        | j        j        | _        | j        j        | _        dS )ze
        Init the Python API and Environment Manager for the function being
        lowered.
        N)	ÚpyapirB   Úget_python_apiÚbuilderÚget_env_managerÚenv_managerÚenv_bodyÚenv_ptrÚenvargrS   s    rM   Ú
init_pyapizBaseLower.init_pyapiR   sd   € ð
 Œ:Ð!ØˆFØ”\×0Ò0°´Ñ>Ô>ˆŒ
ð  œ<×7Ò7¸¼ÑEÔEˆÔØÔ(Ô1ˆŒØÔ&Ô.ˆŒˆˆrO   c                 óz  — | j         j                             | j         j        j        dz   ¦  «        }| j        j        r}| j         j        j        }t          |¦  «        }|�%|dz
  }| j         j                             |¦  «        }n6d| j         j        j        › d�}t          j
        t          |¦  «        ¦  «         |S )Né   z$Could not find source for function: z+. Debug line information may be inaccurate.)r0   r@   Úwith_linenoÚlinerB   rC   Úfunc_idÚfuncr   ÚwarningsÚwarnr   )rK   rG   ÚfnÚoptional_lnoÚoffsetÚmsgs         rM   rF   zBaseLower._compute_def_location`   s»   € ð ”<Ô#×/Ò/°´Ô0@Ô0EÈÑ0IÑJÔJˆØŒ<Ô(ð 	:Ø”Ô%Ô*ˆBÝ5°bÑ9Ô9ˆLØÐ'à%¨Ñ)�Øœ<Ô+×7Ò7¸Ñ?Ô?��ð,Øœ,Ô.Ô3ð,ð ,ð ,�õ ”Õ3°CÑ8Ô8Ñ9Ô9Ð9ØˆrO   c                 óH  — d| _         | j                             | j        j        | j        j        | j        j        | j        j        | j	        j
        ¬¦  «         | j        j        j        }| j        j        o| j        j         }|rd|vr|                     d¦  «         dS dS dS )z4
        Called before lowering all blocks.
        N)ÚfunctionÚqualnameÚargnamesÚargtypesrc   ÚalwaysinlineÚnoinline)rW   r   Úmark_subprogramrY   rm   r'   rn   Úargsrp   rG   rc   Ú
attributesr5   rH   Úadd)rK   ru   Ú
full_debugs      rM   Ú	pre_lowerzBaseLower.pre_lowers   s´   € ð ˆŒ
ØŒ×&Ò&°´Ô0EØ04´Ô0DØ04´Ô0@Ø04´Ô0DØ,0¬MÔ,>ð	 	'ñ 	@ô 	@ð 	@ð ”\Ô*Ô5ˆ
Ø”ZÔ)ÐP°$´*Ô2PÐ.Pˆ
Øð 	'˜.°
Ð:Ð:Ø�NŠN˜:Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'Ð:Ð:rO   c                 ó8   — | j                              ¦   «          dS )z5
        Called after all blocks are lowered
        N)r   ÚfinalizerS   s    rM   Ú
post_lowerzBaseLower.post_lower‰   s   € ð 	Œ×ÒÑ!Ô!Ð!Ð!Ð!rO   c                 ó   — dS )z1
        Called before lowering a block.
        NrU   ©rK   Úblocks     rM   Ú	pre_blockzBaseLower.pre_block�   ó   € € € rO   c                 ó   — dS )z0
        Called after lowering a block.
        NrU   r}   s     rM   Ú
post_blockzBaseLower.post_block”   r€   rO   c                 ón   — | j                              | j        ||||| j        j        j        ¬¦  «         d S )N©r@   Ú	func_name)rR   Úreturn_dynamic_user_excrY   r0   rd   r…   )rK   Ú	exc_classÚexc_argsÚnb_typesr@   s        rM   Úreturn_dynamic_exceptionz"BaseLower.return_dynamic_exception™   sC   € ØŒ×.Ò.ØŒL˜) X¨xØ˜tœ|Ô3Ô=ð 	/ñ 	
ô 	
ð 	
ð 	
ð 	
rO   c                 ól   — | j                              | j        |||| j        j        j        ¬¦  «         dS )z+Propagate exception to the caller.
        r„   N)rR   Úreturn_user_excrY   r0   rd   r…   ©rK   r‡   rˆ   r@   s       rM   Úreturn_exceptionzBaseLower.return_exceptionŸ   sC   € ð 	Œ×&Ò&ØŒL˜) XØ˜tœ|Ô3Ô=ð 	'ñ 	
ô 	
ð 	
ð 	
ð 	
rO   c                 ól   — | j                              | j        |||| j        j        j        ¬¦  «         dS )z5Set exception state in the current function.
        r„   N)rR   Úset_static_user_excrY   r0   rd   r…   r�   s       rM   Úset_exceptionzBaseLower.set_exception§   sC   € ð 	Œ×*Ò*ØŒL˜) XØ˜tœ|Ô3Ô=ð 	+ñ 	
ô 	
ð 	
ð 	
ð 	
rO   c                 ó„   — | j                              | j        ¦  «        }| j                              | j        |¦  «         dS )z7Emit a pointer to hold the Environment object.
        N)rB   Úget_env_namer'   Údeclare_env_globalr(   )rK   Úenvnames     rM   Úemit_environment_objectz!BaseLower.emit_environment_object¯   s;   € ð ”,×+Ò+¨D¬KÑ8Ô8ˆØŒ×'Ò'¨¬°WÑ=Ô=Ð=Ð=Ð=rO   c           
      óX  — |                       ¦   «          | j        €"d | _        |                      | j        ¦  «         n…|                      | ¦  «        | _        | j        j        | _        | j                             | ¦  «         | j                             | ¦  «         | j        j	        r| j         
                    | ¦  «         t          j        rÞt          d| j        z                       dd¦  «        ¦  «         t          j        r„	 ddlm} ddlm} ddlm} ddlm} t           || j                             ¦   «          |¦   «          | |¦   «         ¬	¦  «        ¦  «        ¦  «         n3# t4          $ r d
}t7          |¦  «        ‚w xY wt          | j        ¦  «         t          d¦  «         | j        j        r-| j        €&t=          j        | j         | j        | j        ¬¦  «         | j         !                    | j        | j"        ¦  «         | j"         #                    | j        ¦  «         d S )NzLLVM DUMP %séP   ú-r   )Ú	highlight)Ú	LlvmLexer)ÚTerminal256Formatter)Úby_colorscheme)Ústylez0Please install pygments to see highlighted dumpszP================================================================================)rB   r'   )$r–   r1   ÚgenlowerÚlower_normal_functionr'   ÚGeneratorLowerÚgentypeÚlower_init_funcÚlower_next_funcÚhas_finalizerÚlower_finalize_funcr   Ú	DUMP_LLVMÚprintÚcenterÚHIGHLIGHT_DUMPSÚpygmentsrš   Úpygments.lexersr›   Úpygments.formattersrœ   Únumba.misc.dump_styler�   r(   Ú__repr__ÚImportErrorÚ
ValueErrorrB   Ú
enable_nrtr   Úremove_unnecessary_nrt_usagerm   Úpost_loweringr,   Úadd_ir_module)rK   rš   Úlexerrœ   r�   rk   s         rM   ÚlowerzBaseLower.lower¶   sh  € à×$Ò$Ñ&Ô&Ð&ØÔÐ&Ø ˆDŒMØ×&Ò& t¤{Ñ3Ô3Ð3Ð3à ×/Ò/°Ñ5Ô5ˆDŒMØœ=Ô0ˆDŒLàŒM×)Ò)¨$Ñ/Ô/Ð/ØŒM×)Ò)¨$Ñ/Ô/Ð/ØŒ|Ô)ð 8Ø”×1Ò1°$Ñ7Ô7Ð7åÔð 	Ý�> D¤KÑ/×7Ò7¸¸CÑ@Ô@ÑAÔAÐAÝÔ%ð #ð
*Ø2Ð2Ð2Ð2Ð2Ð2ØBÐBÐBÐBÐBÐBØHÐHÐHÐHÐHÐHØDÐDÐDÐDÐDÐDÝ˜)˜) D¤K×$8Ò$8Ñ$:Ô$:¸E¸E¹G¼GØ$8Ð$8Ø.<¨nÑ.>Ô.>ð%@ñ %@ô %@ñAô Añ Bô Bð Bð Bøõ #ð *ð *ð *ØL�CÝ$ S™/œ/Ð)ð*øøøõ �d”kÑ"Ô"Ð"Ý�(‰OŒOˆOð Œ<Ô"ð 	M tÔ':Ð'BÝÔ8¸¼ØAEÄØ@DÄðMñ Mô Mð Mð
 	Œ×"Ò" 4¤;°´Ñ=Ô=Ð=ð 	Œ×"Ò" 4¤;Ñ/Ô/Ð/Ð/Ð/s   ÄA#E+ Å+Fc                 óz   — | j                              | j        | j        j        | j        ¦  «        | _        | j        S rQ   )rR   Údecode_argumentsrY   r'   rp   rm   ÚfnargsrS   s    rM   Úextract_function_argumentsz$BaseLower.extract_function_argumentsã   s8   € Ø”n×5Ò5°d´lØ6:´kÔ6JØ6:´mñEô EˆŒð Œ{ÐrO   c                 ól  — |                       |¦  «         |                      ¦   «          |                      ¦   «         }t          j        | j        ¦  «        5  | j                             |¦  «         | j                             | j        | j	                 ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z/
        Lower non-generator *fndesc*.
        N)
Úsetup_functionr»   Úlower_function_bodyr   Úsuspend_emissionrY   Úposition_at_endÚbranchr:   r?   )rK   r'   Úentry_block_tails      rM   r    zBaseLower.lower_normal_functioné   sí   € ð 	×Ò˜FÑ#Ô#Ð#ð 	×'Ò'Ñ)Ô)Ð)Ø×3Ò3Ñ5Ô5Ðõ
 Ô'¨¬Ñ5Ô5ð 	<ð 	<ØŒL×(Ò(Ð)9Ñ:Ô:Ð:ØŒL×Ò ¤¨D¬MÔ :Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   ÁAB)Â)B-Â0B-c                 ó4  — | j         D ])}d|z  }| j                             |¦  «        | j        |<   Œ*|                      ¦   «          | j        j        }|                      d                     | j	        j
        ¦  «        ¦  «         t          | j                              ¦   «         ¦  «        D ]Y\  }}| j        |         }| j                             |¦  «         |                      d|› �¦  «         |                      |¦  «         ŒZ|                      ¦   «          |S )zP
        Lower the current function's body, and return the entry block.
        zB%sz# function begin: {0}z# lower block: )r.   rm   Úappend_basic_blockr:   rx   rY   Úbasic_blockÚdebug_printÚformatr'   r7   Úsortedr/   rÀ   Úlower_blockr{   )rK   rj   ÚbnamerÂ   r~   Úbbs         rM   r¾   zBaseLower.lower_function_bodyú   s$  € ð
 ”kð 	Jð 	JˆFØ˜F‘NˆEØ"&¤-×"BÒ"BÀ5Ñ"IÔ"IˆDŒK˜ÑÐà�ŠÑÔÐàœ<Ô3Ðà×ÒÐ0×7Ò7ØŒKÔ#ñ%ô %ñ 	&ô 	&ð 	&õ $ D¤K×$5Ò$5Ñ$7Ô$7Ñ8Ô8ð 	$ð 	$‰MˆF�EØ”˜VÔ$ˆBØŒL×(Ò(¨Ñ,Ô,Ð,Ø×ÒÐ7¨vÐ7Ð7Ñ8Ô8Ð8Ø×Ò˜UÑ#Ô#Ð#Ð#Ø�ŠÑÔÐØÐrO   c                 óF  — |                       |¦  «         |j        D ]n}|j        | _        t          t          | j        ¬¦  «        }t          d|| j        |¬¦  «        5  |                      |¦  «         ddd¦  «         n# 1 swxY w Y   Œo|                      |¦  «         dS )z(
        Lower the given block.
        ©r@   zlowering "{inst}" at {loc})Úinstr@   Úerrcls_N)r   Úbodyr@   r   r   r   Ú
lower_instr‚   )rK   r~   rÎ   Údefaulterrclss       rM   rÉ   zBaseLower.lower_block  sê   € ð 	�Š�uÑÔÐØ”Jð 	&ð 	&ˆDØ”xˆDŒHÝ#¥M°t´xÐ@Ñ@Ô@ˆMÝ"Ð#?ÀdØ'+¤x¸ðHñ Hô Hð &ð &à—’ Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &øð 	�Š˜ÑÔÐÐÐs   ÁB Â B	ÂB	Fc                 óê   — | j         r8| j                             | j        | j         j        | j        | j        |¬¦  «         | j                             | j        | j        | j        | j        |¬¦  «         dS )zP
        Create CPython wrapper(s) around this function (or generator).
        )Úrelease_gilN)rŸ   rB   Úcreate_cpython_wrapperr,   Úgendescr9   Úcall_helperr'   )rK   rÔ   s     rM   rÕ   z BaseLower.create_cpython_wrapper   s�   € ð Œ=ð 	IØŒL×/Ò/°´Ø04´Ô0EØ04´¸$Ô:JØ<Gð 0ñ Iô Ið Ið 	Œ×+Ò+¨D¬L¸$¼+Ø,0¬H°dÔ6FØ8Cð 	,ñ 	Eô 	Eð 	Eð 	Eð 	ErO   c                 ó”   — | j         rt          d¦  «        ‚| j                             | j        | j        | j        | j        ¦  «         dS )z8
        Create C wrapper around this function.
        z(generator as a first-class function typeN)rŸ   r   rB   Úcreate_cfunc_wrapperr,   r'   r9   r×   rS   s    rM   rÙ   zBaseLower.create_cfunc_wrapper-  sY   € ð Œ=ð 	OÝ"Ð#MÑNÔNÐNØŒ×)Ò)¨$¬,¸¼Ø*.¬(°DÔ4Dñ	Fô 	Fð 	Fð 	Fð 	FrO   c                 ó”  — | j                              | j        |¦  «        | _        | j        j        r:| j        j        }d|vr*|                     d¦  «         |                     d¦  «         | j                             d¦  «        | _	        t          | j	        ¦  «        | _        | j                             | j        ¦  «        | _        d S )Nrq   Úoptnonerr   Úentry)rB   Údeclare_functionr(   rm   r5   Údbg_optnoneru   rv   rÄ   Úentry_blockr   rY   rR   Úinit_call_helperr×   )rK   r'   Úattrsets      rM   r½   zBaseLower.setup_function6  s­   € àœ×5Ò5°d´kÀ6ÑJÔJˆŒØŒ:Ô!ð 	(Ø”mÔ.ˆGØ WÐ,Ð,Ø—’˜IÑ&Ô&Ð&Ø—’˜JÑ'Ô'Ð'Øœ=×;Ò;¸GÑDÔDˆÔÝ  Ô!1Ñ2Ô2ˆŒØœ>×:Ò:¸4¼<ÑHÔHˆÔÐÐrO   c                 ó&   — | j         j        |         S rQ   )r'   Útypemap)rK   Úvarnames     rM   ÚtypeofzBaseLower.typeofB  s   € ØŒ{Ô" 7Ô+Ð+rO   c                 ó‚   — t           j        r2| j                             | j        d| j        j        › d|› �¦  «         d S d S )Nz
DEBUGJIT [z]: )r   Ú	DEBUG_JITrB   rÆ   rY   r'   rn   )rK   rk   s     rM   rÆ   zBaseLower.debug_printE  s`   € ÝÔð 	KØŒL×$Ò$Ø”ÐI¨4¬;Ô+?ÐIÐIÀCÐIÐIñKô Kð Kð Kð Kð	Kð 	KrO   c                 óH  — t          j        |¦  «        | j        j        |         f}| j                             ¦   «         |                      |¦  «        f}t          j        t           j	        g|¢R Ž }| j         
                    t          |¦  «        } || j        |¦  «         dS )zðHelper to emit ``print(msg, varname)`` for debugging.

        Parameters
        ----------
        msg : str
            Literal string to be printed.
        varname : str
            A variable name whose value will be printed.
        N)r
   Úliteralr'   rã   rB   Úget_dummy_valueÚloadvarr   Ú	signatureÚnoneÚget_functionr¨   rY   )rK   rk   rä   Úargtysrt   ÚsigÚimpls          rM   Úprint_variablezBaseLower.print_variableJ  s›   € õ ŒM˜#ÑÔØŒKÔ Ô(ð
ˆð
 ŒL×(Ò(Ñ*Ô*Ø�LŠL˜Ñ!Ô!ð
ˆõ Ô�uœzÐ3¨FÐ3Ð3Ð3ˆàŒ|×(Ò(­°Ñ4Ô4ˆØˆˆTŒ\˜4Ñ Ô Ð Ð Ð rO   rQ   )NN)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rN   ÚpropertyrR   rJ   r_   rF   rx   r{   r   r‚   rŠ   rŽ   r‘   r–   r·   r»   r    r¾   rÉ   rÕ   rÙ   r½   rå   rÆ   rò   rU   rO   rM   r#   r#      sº  € € € € € ðð ð,ð ,ð ,ð ,ð\ ð&ð &ñ „Xð&ðð ð ð/ð /ð /ðð ð ð&'ð 'ð 'ð,"ð "ð "ðð ð ð
ð ð ð

ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð>ð >ð >ð+0ð +0ð +0ðZð ð ð<ð <ð <ð" ð  ð  ð2ð ð ðEð Eð Eð EðFð Fð Fð
Ið 
Ið 
Ið,ð ,ð ,ðKð Kð Kð
!ð !ð !ð !ð !rO   r#   c                   ó  ‡ — e Zd Zej        Zˆ fd„Zed„ ¦   «         Zd„ Zˆ fd„Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd&d„Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d&d „Z$d!„ Z%d"„ Z&d&d#„Z'd$„ Z(d%„ Z)ˆ xZ*S )'ÚLowerc                 óp   •— t          ¦   «                              ¦   «          |                      ¦   «          d S rQ   )ÚsuperrJ   Ú_find_singly_assigned_variable)rK   Ú	__class__s    €rM   rJ   z
Lower.inite  s,   ø€ Ý‰Œ�Š‰Œˆà×+Ò+Ñ-Ô-Ð-Ð-Ð-rO   c                 óF   — | j         €dS | j         j        o| j         j         S )a  Flags that the SROA like optimisation that Numba performs (which
        prevent alloca and subsequent load/store for locals) should be disabled.
        Currently, this is conditional solely on the presence of a request for
        the emission of debug information.NF)r5   r   rH   rS   s    rM   Ú_disable_sroa_like_optzLower._disable_sroa_like_optj  s)   € ð Œ:ÐØ�5àŒzÔ#ÐJ¨D¬JÔ,JÐ(JÐJrO   c                 óR  ‡— | j         }|j        }t          ¦   «         }| j         j        j        �sit          |¦  «        }t          |¦  «        }t          t          ¦  «        }|j         	                    ¦   «         D ]%\  }}|D ]Š|‰          
                    |¦  «         ŒŒ&t          t          ¦  «        }	|j         	                    ¦   «         D ]%\  }}|D ]Š|	‰          
                    |¦  «         ŒŒ&|D ]¢Š‰|vrœt          |‰         ¦  «        dk    rƒt          |	‰         ¦  «        dk    rj|‰         \  }
| j        |
                              t          j        ¦  «        }ˆfd„|D ¦   «         }t          |¦  «        dk    r| 
                    ‰¦  «         Œ£|| _        i | _        d S )Nra   r   c                 ó4   •— g | ]}|j         j        ‰k    ¯|‘ŒS rU   )ÚtargetÚname)Ú.0ÚstmtÚvars     €rM   ú
<listcomp>z8Lower._find_singly_assigned_variable.<locals>.<listcomp>”  s2   ø€ ð #?ð #?ð #?¨DØ&*¤kÔ&6¸#Ò&=Ð&=ð $(Ø&=Ð&=Ð&=rO   )r0   r.   Úsetrd   Úis_generatorr   r   r   Údefmapr/   rv   ÚusemapÚlenÚ
find_instsr   ÚAssignÚ_singly_assigned_varsÚ_blk_local_varmap)rK   r0   r.   ÚsavÚuse_defsÚalloca_varsÚvar_assign_mapÚblkÚvlÚvar_use_mapÚdefblkÚassign_stmtsÚassignsr  s                @rM   rü   z$Lower._find_singly_assigned_variableu  s×  ø€ Ø”,ˆØ”ˆå‰eŒeˆàŒ|Ô#Ô0ñ 	)Ý'¨Ñ/Ô/ˆHÝ)¨&Ñ1Ô1ˆKõ )­Ñ-Ô-ˆNØ#œ?×0Ò0Ñ2Ô2ð 1ð 1‘��RØð 1ð 1�CØ" 3Ô'×+Ò+¨CÑ0Ô0Ð0Ð0ð1õ &¥cÑ*Ô*ˆKØ#œ?×0Ò0Ñ2Ô2ð .ð .‘��RØð .ð .�CØ Ô$×(Ò(¨Ñ-Ô-Ð-Ð-ð.ð &ð )ð )�Ø˜kÐ)Ð)­c°.ÀÔ2EÑ.FÔ.FÈ!Ò.KÐ.Kå˜; sÔ+Ñ,Ô,°Ò1Ð1ð $2°#Ô#6™˜Ø'+¤{°6Ô':×'EÒ'EÅbÄiÑ'PÔ'P˜ð#?ð #?ð #?ð #?°Lð #?ñ #?ô #?˜å˜w™<œ<¨1Ò,Ð,ØŸGšG C™LœL˜Løà%(ˆÔ"Ø!#ˆÔÐÐrO   c                 ó†  •— ddl m} t          t          | ¦  «                             |¦  «         || _        || j        k    rË| j        | j                 }| j         	                    |¦  «         t          ¦   «         }| j                             ¦   «         D ]G}|                     t          j        ¦  «        D ]%}|j        |vr|                     |j        ¦  «         Œ&ŒH|D ]-}|                      |¦  «        }|                      ||¦  «         Œ.|                     d¬¦  «        D ]�}t+          j        t*          j        | j        |j        ¦  «        }	|	�ot5          |	t          j        ¦  «        rU|	j        |j        u rGt5          |j        t          j        ¦  «        r(| j        |j        j                 }
d|
i| j        _          d S Œžd S )Nr   )ÚehÚcall)Úopr  )!Únumba.core.unsafer  rû   rù   r   Ú_cur_ir_blockr?   r:   rY   rÀ   r  r.   Úvaluesr  r   ÚDelÚvaluerv   rå   Ú_alloca_varÚ
find_exprsr   ÚguardÚget_definitionr0   re   Ú
isinstanceÚGlobalÚexception_checkÚ
terminatorÚBranchÚtruebrÚ_in_try_block)rK   r~   r  rË   Ú	all_namesÚxr  Úfetyper  ÚdefnÚ	targetblkrý   s              €rM   r   zLower.pre_blockœ  sË  ø€ Ø(Ð(Ð(Ð(Ð(Ð(å�e�TÑÔ×$Ò$ UÑ+Ô+Ð+Ø"ˆÔà�D”MÒ!Ð!ð
 ”˜Tœ]Ô+ˆBØŒL×(Ò(¨Ñ,Ô,Ð,Ý™œˆIØœ×+Ò+Ñ-Ô-ð /ð /�Ø×)Ò)­"¬&Ñ1Ô1ð /ð /�AØ”w iÐ/Ð/Ø!Ÿš a¤gÑ.Ô.Ð.øð/ð "ð /ð /�ØŸš TÑ*Ô*�Ø× Ò   vÑ.Ô.Ð.Ð.ð ×$Ò$¨Ð$Ñ/Ô/ð 	ð 	ˆDÝ”>ÝÔ'¨¬°t´yñô ˆDð Ð¥J¨tµR´YÑ$?Ô$?ÐØ”: Ô!3Ð3Ð3Ý! %Ô"2µB´IÑ>Ô>ð Ø$(¤K°Ô0@Ô0GÔ$H˜	ð 7?À	Ð5J˜œÔ2Ø˜˜øð	ð 	rO   c                 ó8   — 	 | j         `d S # t          $ r Y d S w xY wrQ   )rY   r.  ÚAttributeErrorr}   s     rM   r‚   zLower.post_blockÂ  s7   € ð	Ø”Ð*Ð*Ð*øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ‹
˜c                 ó¦  — | j                              | j        | j        j        ¦  «         |                      t          |¦  «        ¦  «         t          |t          j	        ¦  «        r³|  
                    |j        j        ¦  «        }|                      ||¦  «        }d }t          |j        t          j        ¦  «        r9| j                              | j        | j        j        ¦  «         |j        j        dz   }|                      ||j        j        |¬¦  «         d S t          |t          j        ¦  «        ræ|                      |j        j        ¦  «        }| j        |j                 }| j        |j                 }|  
                    |j        j        ¦  «        }| j                             | j        ||t6          j        ¦  «        }	|	j        t<          j                             d¦  «        k    sJ d|	j        z  ¦   «         ‚| j                              |	||¦  «         d S t          |t          j!        ¦  «        r.| j        |j                 }
| j         "                    |
¦  «         d S t          |t          j#        ¦  «        �r| j$        r| j%         &                    | ¦  «         d S |                      |j        j        ¦  «        }|  
                    |j        j        ¦  «        }| j'        j(        }t          |t6          j)        ¦  «        r$| j*         +                    | j        |||¦  «         d S ||k    sJ d ,                    ||¦  «        ¦   «         ‚| j         -                    | j        ||¦  «        }| j*         .                    | j        |¦  «         d S t          |t          j/        ¦  «        rd S t          |t          j0        ¦  «        �r| j'        j1        |         }|€J ‚	 | j         2                    d|¦  «        }|                      |j        j        ¦  «        }
|                      |j        j        ¦  «        }|  
                    |j        j        ¦  «        }| j                             | j        |||j3        d         ¦  «        } || j        |
|j        |f¦  «        S # th          $ r* |  5                    |j        |j6        |j        |¦  «        cY S w xY wt          |t          j7        ¦  «        r|  8                    |¦  «         d S t          |t          j9        ¦  «        r=| j'        j1        |         }|€J ‚|  5                    |j        |j        |j        |¦  «        S t          |t          j:        ¦  «        r=| j'        j1        |         }|€J ‚|  5                    |j;        |j<        |j        |¦  «        S t          |t          j=        ¦  «        �rQ|                      |j        j        ¦  «        }
|                      |j        j        ¦  «        }|  
                    |j        j        ¦  «        }|  
                    |j        j        ¦  «        }| j'        j1        |         }|€J ‚t|          j?        }| j        j@         A                    |¦  «        }| B                    | j        j@        |j3        i ¦  «        }| j         2                    ||¦  «        }||j3        d         k    sJ ‚| j                             | j        |||j3        d         ¦  «        } || j        |
|f¦  «        S t          |t          jC        ¦  «        r|  D                    |j        ¦  «         d S t          |t          jE        ¦  «        �r|                      |j        j        ¦  «        }
|                      |j        j        ¦  «        }| j'        j1        |         }|  
                    |j        j        ¦  «        }|  
                    |j        j        ¦  «        }|€J ‚|j3        d         |k    sJ ‚| j         F                    |jG        |¦  «        }| j                             | j        |||j3        d         ¦  «        } || j        |
|f¦  «        S t          |t          jH        ¦  «        r|  I                    |¦  «         d S t          |t          jJ        ¦  «        r|  K                    |¦  «         d S t          |t          jL        ¦  «        r|  M                    |¦  «         d S t          |t          jN        ¦  «        r|  O                    |¦  «         d S ti          t;          |¦  «        ¦  «        ‚)Nra   )Úargidxzcond is not i1: %sz)type '{}' does not match return type '{}'Ústatic_setitemé   r   )Pr   Úmark_locationrY   r@   rc   rÆ   Ústrr(  r   r  rå   r  r  Úlower_assignr#  ÚArgrG   r!   Ústorevarr,  rë   Úcondr:   r-  ÚfalsebrrB   Úcastr
   ÚbooleanÚtypeÚllvmliteÚIntTypeÚcbranchÚJumprÁ   ÚReturnr1   rŸ   Úreturn_from_generatorr'   ÚrestypeÚOptionalrR   Úreturn_optional_valuerÇ   Úget_return_valueÚreturn_valueÚPopBlockÚStaticSetItemÚ	calltypesrî   rt   ÚNotImplementedErrorÚlower_setitemÚ	index_varÚPrintÚlower_printÚSetItemÚStoreMapÚdctÚkeyÚDelItemÚoperatorÚdelitemÚtyping_contextÚresolve_value_typeÚget_call_typer"  ÚdelvarÚSetAttrÚget_setattrÚattrÚDynamicRaiseÚlower_dynamic_raiseÚDynamicTryRaiseÚlower_try_dynamic_raiseÚStaticRaiseÚlower_static_raiseÚStaticTryRaiseÚlower_static_try_raise)rK   rÎ   ÚtyÚvalr7  r?  ÚtrÚflÚcondtyÚpredr  ÚotyÚretvalrì   rñ   r#  Úvaluetyr!   ÚtargettyÚindextyr  ÚfnopÚcallsigs                          rM   rÑ   zLower.lower_instÉ  sT  € àŒ×$Ò$ T¤\°4´8´=ÑAÔAÐAØ×Ò�˜T™œÑ#Ô#Ð#Ý�d�BœIÑ&Ô&ð E	2Ø—’˜Tœ[Ô-Ñ.Ô.ˆBØ×#Ò# B¨Ñ-Ô-ˆCØˆFõ ˜$œ*¥b¤fÑ-Ô-ð .à”×,Ò,¨T¬\¸4¼=Ô;MÑNÔNÐNØœÔ)¨AÑ-�Ø�MŠM˜#˜tœ{Ô/¸ˆMÑ?Ô?Ð?Ð?Ð?å˜�bœiÑ(Ô(ð y	2Ø—<’< ¤	¤Ñ/Ô/ˆDØ”˜Tœ[Ô)ˆBØ”˜Tœ\Ô*ˆBà—[’[ ¤¤Ñ0Ô0ˆFØ”<×$Ò$ T¤\°4¸ÅÄÑOÔOˆDØ”9¥¤× 3Ò 3°AÑ 6Ô 6Ò6Ð6Ð6Ø%¨¬	Ñ1ñ 7Ô6Ð6àŒL× Ò   r¨2Ñ.Ô.Ð.Ð.Ð.å˜�bœgÑ&Ô&ð n	2Ø”[ ¤Ô-ˆFØŒL×Ò Ñ'Ô'Ð'Ð'Ð'å˜�bœiÑ(Ô(ñ j	2ØÔ"ð à”×3Ò3°DÑ9Ô9Ð9Ø�Ø—,’,˜tœzœÑ/Ô/ˆCØ—+’+˜dœjœoÑ.Ô.ˆCØ”Ô$ˆBÝ˜"�eœnÑ-Ô-ð à”×4Ò4°T´\À2ÀsÈCÑPÔPÐPØ�Ø˜’9�9�9Ø;×BÒBÀ3ÈÑKÔKñ ”9�9à”\×2Ò2°4´<ÀÀSÑIÔIˆFØŒN×'Ò'¨¬°fÑ=Ô=Ð=Ð=Ð=å˜�bœkÑ*Ô*ð Y	2ØˆDå˜�bÔ.Ñ/Ô/ñ V	2ØœÔ-¨dÔ3ˆIØÐ(Ð(Ð(ðGØ”|×0Ò0Ð1AÀ9ÑMÔM�ð
 Ÿš d¤kÔ&6Ñ7Ô7�ØŸš T¤Z¤_Ñ5Ô5�ØŸ+š+ d¤j¤oÑ6Ô6�Øœ×)Ò)¨$¬,¸¸wØ*3¬.¸Ô*;ñ=ô =�à�t˜DœL¨6°4´:¸uÐ*EÑFÔFÐFøõ 'ð Að Að AØ×)Ò)¨$¬+°t´~Ø*.¬*°iñAô Að Að Að AðAøøøõ ˜�bœhÑ'Ô'ð F	2Ø×Ò˜TÑ"Ô"Ð"Ð"Ð"å˜�bœjÑ)Ô)ð C	2ØœÔ-¨dÔ3ˆIØÐ(Ð(Ð(Ø×%Ò% d¤k°4´:¸t¼zØ&/ñ1ô 1ð 1õ ˜�bœkÑ*Ô*ð =	2ØœÔ-¨dÔ3ˆIØÐ(Ð(Ð(Ø×%Ò% d¤h°´¸$¼*ÀiÑPÔPÐPå˜�bœjÑ)Ô)ñ 8	2Ø—\’\ $¤+Ô"2Ñ3Ô3ˆFØ—L’L ¤¤Ñ1Ô1ˆEà—{’{ 4¤;Ô#3Ñ4Ô4ˆHØ—k’k $¤*¤/Ñ2Ô2ˆGàœÔ-¨dÔ3ˆIØÐ(Ð(Ð(åÔ!ˆBØ”<Ô.×AÒAÀ"ÑEÔEˆDØ×(Ò(Ø”Ô+¨Y¬^¸Rñô ˆGð ”<×,Ò,¨T°7Ñ;Ô;ˆDà˜yœ~¨aÔ0Ò0Ð0Ð0Ð0Ø”L×%Ò% d¤l°E¸7Ø&/¤n°QÔ&7ñ9ô 9ˆEð �4˜œ v¨u oÑ6Ô6Ð6å˜�bœfÑ%Ô%ð !	2Ø�KŠK˜œ
Ñ#Ô#Ð#Ð#Ð#å˜�bœjÑ)Ô)ñ 	2Ø—\’\ $¤+Ô"2Ñ3Ô3ˆFØ—L’L ¤¤Ñ1Ô1ˆEØœÔ-¨dÔ3ˆIà—{’{ 4¤;Ô#3Ñ4Ô4ˆHØ—k’k $¤*¤/Ñ2Ô2ˆGØÐ(Ð(Ð(Ø”> !Ô$¨Ò0Ð0Ð0Ð0Ø”<×+Ò+¨D¬I°yÑAÔAˆDð ”L×%Ò% d¤l°E¸7Ø&/¤n°QÔ&7ñ9ô 9ˆEð �4˜œ v¨u oÑ6Ô6Ð6å˜�bœoÑ.Ô.ð 	2Ø×$Ò$ TÑ*Ô*Ð*Ð*Ð*å˜�bÔ0Ñ1Ô1ð 
	2Ø×(Ò(¨Ñ.Ô.Ð.Ð.Ð.å˜�bœnÑ-Ô-ð 	2Ø×#Ò# DÑ)Ô)Ð)Ð)Ð)å˜�bÔ/Ñ0Ô0ð 	2Ø×'Ò'¨Ñ-Ô-Ð-Ð-Ð-õ &¥d¨4¡j¤jÑ1Ô1Ð1s   ÏR Ò1SÓSc                 óÔ  — |                       |j        ¦  «        }|                       |j        ¦  «        }|                       |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }	|                      |j        ¦  «        }
t          j        }| j        j                             |¦  «        }|                     | j        j        |j	        i ¦  «        }| j         
                    ||¦  «        }t          |t          j        ¦  «        r(| j                             | j        |||j        ¦  «        }n1t          j        } ||¦  «         ||j	        d         ¦  «        k    sJ ‚| j                             | j        ||
|j	        d         ¦  «        }| j                             | j        ||	|j	        d         ¦  «        } || j        |||f¦  «        S )Nr   ra   r9  )rë   r  rå   r\  ÚsetitemrB   r^  r_  r`  rt   rî   r(  r
   rK  rA  rY   rC  Ú	unliteral)rK   Ú
target_varrT  Ú	value_varrì   r  r#  r!   rv  ru  rw  r  rx  ry  rñ   Úuls                   rM   rS  zLower.lower_setitemT  s®  € Ø—’˜jœoÑ.Ô.ˆØ—’˜Yœ^Ñ,Ô,ˆØ—’˜Yœ^Ñ,Ô,ˆà—;’;˜zœÑ/Ô/ˆØ—+’+˜iœnÑ-Ô-ˆØ—+’+˜iœnÑ-Ô-ˆåÔˆØŒ|Ô*×=Ò=¸bÑAÔAˆØ×$Ò$ØŒLÔ'¨¬¸ñ
ô 
ˆð Œ|×(Ò(¨¨wÑ7Ô7ˆõ �h¥¤Ñ/Ô/ð 	9Ø”\×&Ò& t¤|°V¸XØ'/¤}ñ6ô 6ˆFˆFõ ”ˆBØ�2�h‘<”< 2 2 i¤n°QÔ&7Ñ#8Ô#8Ò8Ð8Ð8Ð8à”×!Ò! $¤,°°wØ"+¤.°Ô"3ñ5ô 5ˆà”×!Ò! $¤,°°wØ"+¤.°Ô"3ñ5ô 5ˆð ˆt�D”L 6¨5°%Ð"8Ñ9Ô9Ð9rO   c                 ó0   — |                       |¦  «         d S rQ   )rl  ©rK   rÎ   s     rM   rh  zLower.lower_try_dynamic_raises  s   € ð 	×#Ò# DÑ)Ô)Ð)Ð)Ð)rO   c                 óÆ  — |j         }g }g }|D ]•}t          |t          j        ¦  «        rK|                      |j        ¦  «        }|                      |j        ¦  «        }|                      ||¦  «         nd }|}|                     |¦  «         |                     |¦  «         Œ–|  	                    |j
        t          |¦  «        t          |¦  «        | j        ¬¦  «         d S ©NrÍ   )rˆ   r(  r   ÚVarrå   r  rë   ÚincrefÚappendrŠ   r‡   Útupler@   )rK   rÎ   rˆ   rt   r‰   Úexc_argÚtyprn  s           rM   rf  zLower.lower_dynamic_raisex  sé   € Ø”=ˆØˆØˆØð 
	ð 
	ˆGÝ˜'¥2¤6Ñ*Ô*ð à—k’k '¤,Ñ/Ô/�Ø—l’l 7¤<Ñ0Ô0�Ø—’˜C Ñ%Ô%Ð%Ð%à�Ø�Ø�OŠO˜CÑ Ô Ð Ø�KŠK˜ÑÔÐÐà×%Ò% d¤nµe¸D±k´kÝ&+¨H¡o¤o¸4¼8ð 	&ñ 	Eô 	Eð 	Eð 	Eð 	ErO   c                 óž   — |j         €|                      d | j        ¬¦  «         d S |                      |j         |j        | j        ¬¦  «         d S rƒ  )r‡   rŽ   r@   rˆ   r�  s     rM   rj  zLower.lower_static_raise‹  sR   € ØŒ>Ð!à×!Ò! $¨D¬HÐ!Ñ5Ô5Ð5Ð5Ð5à×!Ò! $¤.°$´-ÀTÄXÐ!ÑNÔNÐNÐNÐNrO   c                 óž   — |j         €|                      d | j        ¬¦  «         d S |                      |j         |j        | j        ¬¦  «         d S rƒ  )r‡   r‘   r@   rˆ   r�  s     rM   rl  zLower.lower_static_try_raise’  sR   € ØŒ>Ð!à×Ò˜t¨¬ÐÑ2Ô2Ð2Ð2Ð2à×Ò˜tœ~¨t¬}À$Ä(ÐÑKÔKÐKÐKÐKrO   c                 ó   — |j         }t          |t          j        t          j        t          j        f¦  «        r>| j                             | j        ||j         ¦  «        }|  	                    ||¦  «         |S t          |t          j
        ¦  «        r|                      ||¦  «        S t          |t          j        ¦  «        rn|                      |j        ¦  «        }|                      |j        ¦  «        }| j                             | j        |||¦  «        }|  	                    ||¦  «         |S t          |t          j        ¦  «        �r!t%          j        | j        ¦  «        5  |                      d|j        z   ¦  «        }t          |t(          j        ¦  «        rl|j         }| j        j        }	|	                     |¦  «        }
| j                             | j        |
|¦  «        }| j                             | j        ||
|¦  «        }n4| j        |j                 }| j                             | j        |||¦  «        }|  	                    ||¦  «         |cd d d ¦  «         S # 1 swxY w Y   nHt          |t          j        ¦  «        r.|                      ||¦  «        }|  	                    ||¦  «         |S t9          t;          |¦  «        |¦  «        ‚)Nzarg.)r#  r(  r   ÚConstr)  ÚFreeVarrB   Úget_constant_genericrY   r…  ÚExprÚ
lower_exprr„  rë   r  rå   rA  r=  r   r¿   r
   ÚOmittedr^  Ú!resolve_value_type_prefer_literalrº   r!   ÚYieldÚlower_yieldrR  rC  )rK   rm  rÎ   r#  Úresrn  rs  ÚargtyÚpyvalÚtyctxÚvaltyÚconsts               rM   r<  zLower.lower_assign™  sµ  € Ø”
ˆå�e�bœh­¬	µ2´:Ð>Ñ?Ô?ð +	Ø”,×3Ò3°D´LÀ"Ø49´KñAô AˆCà�KŠK˜˜CÑ Ô Ð ØˆJå˜�rœwÑ'Ô'ð %	Ø—?’? 2 uÑ-Ô-Ð-å˜�rœvÑ&Ô&ð "	Ø—,’,˜uœzÑ*Ô*ˆCØ—+’+˜eœjÑ)Ô)ˆCØ”,×#Ò# D¤L°#°s¸BÑ?Ô?ˆCØ�KŠK˜˜CÑ Ô Ð ØˆJå˜�rœvÑ&Ô&ñ 	õ Ô+¨D¬LÑ9Ô9ð ð ð Ÿš F¨U¬ZÑ$7Ñ8Ô8�Ý˜e¥U¤]Ñ3Ô3ð JØ!œK�EØ œLÔ7�EØ!×CÒCÀEÑJÔJ�Eà œL×=Ò=Øœ e¨Uñô �Eð œ,×+Ò+¨D¬L¸%ÀÈÑKÔK�C�Càœ+ e¤kÔ2�CØœ,×+Ò+¨D¬L¸#¸uÀbÑIÔI�CØ—’˜B Ñ$Ô$Ð$Øð%ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð õ( ˜�rœxÑ(Ô(ð 	Ø×"Ò" 2 uÑ-Ô-ˆCØ�KŠK˜˜CÑ Ô Ð ØˆJå!¥$ u¡+¤+¨uÑ5Ô5Ð5s   Å#C/IÉI#É&I#c                 óh  — | j         j        |j                 }|j        |u sJ ‚t	          j        | ||j        ¦  «        }|                     ¦   «          |                      |j	        j
        ¦  «        }|                      |j	        j
        ¦  «        }| j        j        }| j                             | j        |||¦  «        }| j                             | j        ||¦  «        }	| j                             | j        |	¦  «         |                     ¦   «          | j                             | j        |d ¦  «        S rQ   )r1   Úyield_pointsr!   rÎ   r   Ú
LowerYieldÚ	live_varsÚlower_yield_suspendrë   r#  r  rå   r¢   Ú
yield_typerB   rA  rY   rM  rR   rN  Úlower_yield_resumer�  )
rK   ÚrettyrÎ   ÚypÚyrn  r‰  Úactual_rettypÚyretrt  s
             rM   r•  zLower.lower_yieldË  s  € ØÔ Ô-¨d¬jÔ9ˆØŒw˜$ˆˆˆˆÝÔ! $¨¨B¬LÑ9Ô9ˆØ	×ÒÑÔÐà�lŠl˜4œ:œ?Ñ+Ô+ˆØ�kŠk˜$œ*œ/Ñ*Ô*ˆØœÔ/ˆð Œ|× Ò  ¤¨s°C¸ÑGÔGˆð ”×.Ò.ØŒL˜-¨ñ
ô 
ˆð
 	Œ×#Ò# D¤L°&Ñ9Ô9Ð9ð 	
×ÒÑÔÐàŒ|×0Ò0°´¸uÀdÑKÔKÐKrO   c                 ó  ‡ ‡‡‡— ‰ j         j                             ‰¦  «        Š|j        }|j        }|j        }|j        }‰                      |j        ¦  «        }‰                      |j        ¦  «        }	‰  	                    |j        ¦  «        }‰  	                    |j        ¦  «        }‰ j
        j        |         Š‰ j                              ‰ j        ||‰j        d         ¦  «        }‰ j                              ‰ j        ||	‰j        d         ¦  «        }ˆˆ ˆfd„}
ˆˆ ˆfd„} |t          |¦  «        t          |¦  «        f||f¦  «        }|� |
|¦  «        S  |t          |¦  «        |	f||f¦  «        }|� |
|¦  «        S  ||t          |¦  «        f||f¦  «        }|� |
|¦  «        S ‰                     ‰ j         j        ‰j        i ¦  «        }‰ j                              ‰|¦  «        } |‰ j        ||f¦  «        } |
|¦  «        S )Nr   ra   c                 óR   •— ‰j                              ‰j        | ‰j        ‰¦  «        S rQ   )rB   rA  rY   Úreturn_type)r–  ÚrestyrK   rì   s    €€€rM   Úcast_resultz&Lower.lower_binop.<locals>.cast_resultù  s.   ø€ Ø”<×$Ò$ T¤\°3Ø%.Ô%:¸EñCô Cð CrO   c                 ó‚  •— t          d„ |D ¦   «         ¦  «        rd S 	 t          ‰t          j        ¦  «        r"‰                     ‰j        j        | i ¦  «        }nt          j        ‰j	        g| ¢R Ž }n# t          $ r Y d S w xY w	 ‰j                             ‰|¦  «        } |‰j        |¦  «        S # t          $ r Y d S w xY w)Nc              3   ó2   K  — | ]}|t           j        u V — Œd S rQ   )r   Ú	UNDEFINED©r  Úas     rM   ú	<genexpr>z=Lower.lower_binop.<locals>.try_static_impl.<locals>.<genexpr>ÿ  s)   è è € Ð3Ð3¨�1�œÐ$Ð3Ð3Ð3Ð3Ð3Ð3rO   )Úanyr(  r
   ÚFunctionr`  rB   r^  r   rì   rª  r   rî   rY   rR  )Útysrt   Ú
static_sigÚstatic_implr  rK   rì   s       €€€rM   Útry_static_implz*Lower.lower_binop.<locals>.try_static_implþ  sö   ø€ ÝÐ3Ð3¨dÐ3Ñ3Ô3Ñ3Ô3ð Ø�tðÝ˜b¥%¤.Ñ1Ô1ð OØ!#×!1Ò!1°$´,Ô2MØ25°rñ";ô ";�J�Jõ "(Ô!1°)Ô2GÐ!NÈ#Ð!NÐ!NÐ!N�JøøÝð ð ð Ø�t�tðøøøðØ"œl×7Ò7¸¸JÑGÔG�Ø"�{ 4¤<°Ñ6Ô6Ð6øÝ&ð ð ð Ø�t�tðøøøs$   žAA2 Á2
B Á?B Â+B0 Â0
B>Â=B>)rB   r^  r_  ÚlhsÚrhsÚ
static_lhsÚ
static_rhsrå   r  rë   r'   rQ  rA  rY   rt   Ú_lit_or_omittedr`  rî   )rK   r«  Úexprr  r¹  rº  r»  r¼  ÚltyÚrtyr¬  r¸  r–  rð   rñ   rì   s   `` `           @rM   Úlower_binopzLower.lower_binopå  sV  øøøø€ ð Œ\Ô(×;Ò;¸BÑ?Ô?ˆàŒhˆØŒhˆØ”_ˆ
Ø”_ˆ
Ø�kŠk˜#œ(Ñ#Ô#ˆØ�kŠk˜#œ(Ñ#Ô#ˆØ�lŠl˜3œ8Ñ$Ô$ˆØ�lŠl˜3œ8Ñ$Ô$ˆð ”KÔ)¨$Ô/ˆ	ØŒl×Ò ¤¨c°3¸	¼ÀqÔ8IÑJÔJˆØŒl×Ò ¤¨c°3¸	¼ÀqÔ8IÑJÔJˆð	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð
	ð 	ð 	ð 	ð 	ð 	ð 	ð" ˆoÝ˜ZÑ(Ô(­/¸*Ñ*EÔ*EÐFØ˜Ð$ñ
ô 
ˆð ˆ?Ø�;˜sÑ#Ô#Ð#àˆoÝ˜ZÑ(Ô(¨#Ð.Ø˜Ðñ
ô 
ˆð ˆ?Ø�;˜sÑ#Ô#Ð#àˆoØ•/ *Ñ-Ô-Ð.Ø�*Ðñ
ô 
ˆð ˆ?Ø�;˜sÑ#Ô#Ð#ð ×Ò˜tœ|Ô:¸I¼NÈBÑOÔOˆØŒ|×(Ò(¨¨SÑ1Ô1ˆØˆd�4”< # s Ñ,Ô,ˆØˆ{˜3ÑÔÐrO   c                 óh  ‡ — ‰                       |j        ¦  «        }‰                       |j        ¦  «        }t          j        }‰ j        j                             |¦  «        }	|	                     ‰ j        j        |j        i ¦  «        }
‰ j         	                    |	|
¦  «        }||f}‰  
                    |j        ¦  «        ‰  
                    |j        ¦  «        f}ˆ fd„t          |||j        ¦  «        D ¦   «         } |‰ j        |¦  «        }‰ j                             ‰ j        ||j        |¦  «        S )Nc                 ó\   •— g | ](\  }}}‰j                              ‰j        |||¦  «        ‘Œ)S rU   ©rB   rA  rY   )r  ÚavÚatÚftrK   s       €rM   r  z'Lower.lower_getitem.<locals>.<listcomp>9  sG   ø€ ð ;ð ;ð ;Ù"˜˜B ð ”L×%Ò% d¤l°B¸¸BÑ?Ô?ð ;ð ;ð ;rO   )rë   r  r\  ÚgetitemrB   r^  r_  r`  rt   rî   rå   ÚziprY   rA  rª  )rK   r«  r¾  r#  r!   rì   ÚbasevalÚindexvalr  rx  ry  rñ   ÚargvalsÚargtypsÚcastvalsr–  s   `               rM   Úlower_getitemzLower.lower_getitem+  s1  ø€ Ø—,’,˜uœzÑ*Ô*ˆØ—<’< ¤
Ñ+Ô+ˆåÔˆØŒ|Ô*×=Ò=¸bÑAÔAˆØ×$Ò$ØŒLÔ'¨¬¸ñ
ô 
ˆð Œ|×(Ò(¨¨wÑ7Ô7ˆà˜HÐ%ˆØ—;’;˜uœzÑ*Ô*Ø—;’;˜uœzÑ*Ô*ð,ˆð;ð ;ð ;ð ;Ý&)¨'°7Ø*3¬.ñ':ô ':ð;ñ ;ô ;ˆð ˆd�4”< Ñ*Ô*ˆØŒ|× Ò  ¤¨sØ!*Ô!6Ø!&ñ(ô (ð 	(rO   c                 ó¨  — t          |t          ¦  «        rh|                      |j        j        ¦  «        |j                 }| j                             |                      |j        j        ¦  «        |j        ¦  «        }n4|                      |j        ¦  «        }|                      |j        ¦  «        }| j	         
                    | j        |||¦  «        S )zh
        Cast a Numba IR variable to the given Numba type, returning a
        low-level value.
        )r(  r   rå   r    r  r!   rY   Úextract_valuerë   rB   rA  )rK   r  rm  Úvartyrn  s        rM   Ú	_cast_varzLower._cast_varA  s¨   € õ
 �c�;Ñ'Ô'ð 	)Ø—K’K ¤
¤Ñ0Ô0°´Ô;ˆEØ”,×,Ò,¨T¯\ª\¸#¼*¼/Ñ-JÔ-JØ-0¬Yñ8ô 8ˆCˆCð —K’K ¤Ñ)Ô)ˆEØ—,’,˜sœxÑ(Ô(ˆCØŒ|× Ò  ¤¨s°E¸2Ñ>Ô>Ð>rO   c                 óÀ  ‡ ‡‡— ‰ra‰                       ‰j        ¦  «        }t          |t          j        ¦  «        sJ ‚|ˆfd„t          t          |¦  «        ¦  «        D ¦   «         z   }‰j        }|€6|rt          d|›�¦  «        ‚ˆ fd„t          |‰j
        ¦  «        D ¦   «         }n8ˆ ˆfd„}	ˆ ˆfd„}
ˆ ˆfd„}t          j        ||t          |¦  «        |	|
|¦  «        }|S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rU   )r   )r  Úir    s     €rM   r  z(Lower.fold_call_args.<locals>.<listcomp>U  s9   ø€ ð #Cð #Cð #CØ'(õ $/¨v°qÑ#9Ô#9ð #Cð #Cð #CrO   z+unsupported keyword arguments when calling c                 óB   •— g | ]\  }}‰                      ||¦  «        ‘ŒS rU   ©rÓ  ©r  r  ÚsigtyrK   s      €rM   r  z(Lower.fold_call_args.<locals>.<listcomp>^  sA   ø€ ð Hð Hð HÙ%˜3 ð —~’~ c¨5Ñ1Ô1ð Hð Hð HrO   c                 óF   •— ‰                      |‰j        |          ¦  «        S rQ   )rÓ  rt   )r!   Úparamr  rK   rì   s      €€rM   Únormal_handlerz,Lower.fold_call_args.<locals>.normal_handlera  s   ø€ Ø—~’~ c¨9¬>¸%Ô+@ÑAÔAÐArO   c                 ó\   •— ‰j                              ‰j        ‰j        |          |¦  «        S rQ   )rB   r�  rY   rt   )r!   rÜ  ÚdefaultrK   rì   s      €€rM   Údefault_handlerz-Lower.fold_call_args.<locals>.default_handlerd  s0   ø€ Ø”|×8Ò8Ø”L )¤.°Ô"7¸ñBô Bð BrO   c                 óÒ   •— ‰j         |          }t          |t          j        ¦  «        s
J |¦   «         ‚ˆfd„t	          ||¦  «        D ¦   «         }t          j        ‰j        |¦  «        S )Nc                 óB   •— g | ]\  }}‰                      ||¦  «        ‘ŒS rU   rØ  rÙ  s      €rM   r  zALower.fold_call_args.<locals>.stararg_handler.<locals>.<listcomp>k  sA   ø€ ð Cð Cð CÙ(˜c 5ð Ÿ.š.¨¨eÑ4Ô4ð Cð Cð CrO   )rt   r(  r
   Ú	BaseTuplerÉ  r   Úmake_anonymous_structrY   )r!   rÜ  ÚvarsÚ
stararg_tyr!  rK   rì   s        €€rM   Ústararg_handlerz-Lower.fold_call_args.<locals>.stararg_handlerh  s}   ø€ Ø&œ^¨EÔ2�
Ý! *­e¬oÑ>Ô>ÐJÐJÀ
ÑJÔJÐJðCð Cð Cð CÝ,/°°jÑ,AÔ,AðCñ Cô C�åÔ4°T´\À6ÑJÔJÐJrO   )rå   r  r(  r
   rã  Úranger  ÚpysigrR  rÉ  rt   r   Úfold_argumentsÚdict)rK   Úfntyrì   Úpos_argsr    Úkw_argsÚ	tp_varargré  rÌ  rÝ  rà  rç  s   ` ` `       rM   Úfold_call_argszLower.fold_call_argsO  s•  øøø€ Øð 	Cð Ÿš F¤KÑ0Ô0ˆIÝ˜i­¬Ñ9Ô9Ð9Ð9Ð9Øð #Cð #Cð #Cð #CÝ,1µ#°i±.´.Ñ,AÔ,Að#Cñ #Cô #Cñ CˆHð ”ˆØˆ=Øð GÝ)Ð)Ø?C¸tð+Fñ Gô Gð GðHð Hð Hð HÝ),¨X°y´~Ñ)FÔ)FðHñ Hô HˆGˆGðBð Bð Bð Bð Bð BðBð Bð Bð Bð Bð BðKð Kð Kð Kð Kð Kõ Ô+¨EØ,4µd¸7±m´mØ,:Ø,;Ø,;ñ	=ô =ˆGð
 ˆrO   c                 ó´  — | j         j        |         }|j        t          j        k    sJ ‚| j        j                             t          ¦  «        }t          |j
        ¦  «        }t          |j
        ¦  «        }t          t          |¦  «        ¦  «        D ]D}||j        v r9|j        |         }t          |t          ¦  «        rt          j        |¦  «        ||<   ŒEt#          j        |j        g|¢R Ž }|                     |j        ¬¦  «        }|                      ||||j        i ¦  «        }	| j                             t          |¦  «        }
 |
| j        |	¦  «         dS )z$
        Lower a ir.Print()
        )ré  N)r'   rQ  rª  r
   rí   rB   r^  r_  r¨   Úlistrt   rè  r  Úconstsr(  r;  ré   r   rì   Úreplaceré  rð  r    rî   rY   )rK   rÎ   rð   rì  Úpos_tysrí  rÖ  r˜  Ú	fixed_sigrÌ  rñ   s              rM   rV  zLower.lower_printv  s7  € ð ŒkÔ# DÔ)ˆØŒ¥%¤*Ò,Ð,Ð,Ð,ØŒ|Ô*×=Ò=½eÑDÔDˆõ �s”x‘.”.ˆÝ˜œ	‘?”?ˆÝ•s˜8‘}”}Ñ%Ô%ð 	6ð 	6ˆAØ�D”KÐÐØœ Aœ�Ý˜e¥SÑ)Ô)ð 6Ý!&¤¨uÑ!5Ô!5�G˜A‘JøåÔ$ S¤_Ð?°wÐ?Ð?Ð?ˆ	Ø×%Ò%¨C¬IÐ%Ñ6Ô6ˆ	à×%Ò% d¨C°¸4¼;ÈÑKÔKˆØŒ|×(Ò(­°	Ñ:Ô:ˆØˆˆTŒ\˜7Ñ#Ô#Ð#Ð#Ð#rO   c                 ó"  — | j         j        |         }|                      d                     |¦  «        ¦  «         t	          |j        t          j        ¦  «        r| j         	                    ¦   «         S |  
                    |j        j        ¦  «        }t	          |t          j        ¦  «        r|                      |||¦  «        }nßt	          |t          j        ¦  «        r|                      |||¦  «        }n­t	          |t          j        ¦  «        r|                      |||¦  «        }n{t	          |t          j        ¦  «        r|                      |||¦  «        }nIt	          |t          j        ¦  «        r|                      |||¦  «        }n|                      |||¦  «        }|€E|j        t          j        k    r| j         	                    ¦   «         }nt3          d| j        ¬¦  «        ‚| j                             | j        ||j        |¦  «        S )Nz# lower_call: expr = {0}z2non-void function returns None from implementation)rk   r@   )r'   rQ  rÆ   rÇ   r(  rª  r
   ÚPhantomrB   rê   rå   re   r  ÚObjModeDispatcherÚ_lower_call_ObjModeDispatcherÚExternalFunctionÚ_lower_call_ExternalFunctionÚExternalFunctionPointerÚ#_lower_call_ExternalFunctionPointerÚRecursiveCallÚ_lower_call_RecursiveCallÚFunctionTypeÚ_lower_call_FunctionTypeÚ_lower_call_normalÚvoidr   r@   rA  rY   )rK   r«  r¾  rì   rì  r–  s         rM   Ú
lower_callzLower.lower_call“  sô  € Ø”KÔ)¨$Ô/ˆ	Ø×ÒÐ3×:Ò:¸4Ñ@Ô@ÑAÔAÐAÝ�iÔ+­U¬]Ñ;Ô;ð 	2Ø”<×/Ò/Ñ1Ô1Ð1à�{Š{˜4œ9œ>Ñ*Ô*ˆå�d�EÔ3Ñ4Ô4ð 	AØ×4Ò4°T¸4ÀÑKÔKˆCˆCå˜�eÔ4Ñ5Ô5ð 	AØ×3Ò3°D¸$À	ÑJÔJˆCˆCå˜�eÔ;Ñ<Ô<ð 	AØ×:Ò:Ø�d˜Iñ'ô 'ˆCˆCõ ˜�eÔ1Ñ2Ô2ð 	AØ×0Ò0°°t¸YÑGÔGˆCˆCå˜�eÔ0Ñ1Ô1ð 	AØ×/Ò/°°d¸IÑFÔFˆCˆCð ×)Ò)¨$°°iÑ@Ô@ˆCð
 ˆ;ØÔ$­¬
Ò2Ð2Ø”l×2Ò2Ñ4Ô4��å#ØLØœðñ ô ð ð
 Œ|× Ò  ¤¨s°IÔ4IØ!&ñ(ô (ð 	(rO   c                 ó¦  ‡ — ddl m} ‰                      ¦   «          ‰ j                             ¦   «         }d„ |j        D ¦   «         }ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }t          ||¦  «        D ]\  }	}
‰                      |
|	¦  «         Œˆ fd„t          ||¦  «        D ¦   «         } |‰ j        ¦  «                             ||¦  «        }‰ j         	                    ||¦  «        }t          j        ‰ j        |¦  «        }‰ j                             |¦  «        5 \  }}|5  |D ]}‰ j                             |¦  «         Œ‰ j                             |¦  «         ‰ j                             ‰ j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |5  ‰ j                             |j        j        |¦  «        }|j        }‰ j                             |¦  «         |D ]}‰ j                             |¦  «         Œt-          |j        ¦  «        r|                     ¦   «          ‰ j                             |¦  «         ‰ j                             |j        ¦  «        5  ‰ j                             ‰ j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |cd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )ÚObjModeUtilsc                 ó   — g | ]	}|j         ‘Œ
S rU   ©r  r°  s     rM   r  z7Lower._lower_call_ObjModeDispatcher.<locals>.<listcomp>Ä  s   € Ð.Ð.Ð.˜q�A”FÐ.Ð.Ð.rO   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rU   )rå   ©r  r±  rK   s     €rM   r  z7Lower._lower_call_ObjModeDispatcher.<locals>.<listcomp>Å  s#   ø€ Ð5Ð5Ð5 q�D—K’K ‘N”NÐ5Ð5Ð5rO   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rU   )rë   r  s     €rM   r  z7Lower._lower_call_ObjModeDispatcher.<locals>.<listcomp>Æ  s#   ø€ Ð7Ð7Ð7¨�T—\’\ !‘_”_Ð7Ð7Ð7rO   c                 óX   •— g | ]&\  }}‰j                              ||‰j        ¦  «        ‘Œ'S rU   )rW   Úfrom_native_valuer[   )r  ÚatypÚavalrK   s      €rM   r  z7Lower._lower_call_ObjModeDispatcher.<locals>.<listcomp>Ë  sK   ø€ ð ?ð ?ð ?á!�t˜Tð ”:×/Ò/°°dØ04Ô0@ñBô Bð ?ð ?ð ?rO   )Únumba.core.pythonapir  r_   rW   Ú
gil_ensurert   rÉ  r…  Úload_dispatcherÚcall_function_objargsr   Úis_nullrY   Úif_elseÚdecrefÚgil_releaserR   Ú
return_excÚto_native_valueÚ
dispatcherÚoutput_typesr#  ÚcallableÚcleanupÚif_thenÚis_error)rK   rì  r¾  rì   r  Ú	gil_statero   rp   Ú	argvaluesÚvrm  ÚargobjsÚcalleeÚret_objÚhas_exceptionÚthenÚorelseÚobjÚnativeÚoutputs   `                   rM   rú  z#Lower._lower_call_ObjModeDispatcher½  s!  ø€ Ø5Ð5Ð5Ð5Ð5Ð5à�ŠÑÔÐà”J×)Ò)Ñ+Ô+ˆ	à.Ð. D¤IÐ.Ñ.Ô.ˆØ5Ð5Ð5Ð5¨HÐ5Ñ5Ô5ˆØ7Ð7Ð7Ð7¨hÐ7Ñ7Ô7ˆ	Ý˜ HÑ-Ô-ð 	ð 	‰EˆAˆrà�KŠK˜˜AÑÔÐÐð?ð ?ð ?ð ?å%(¨°9Ñ%=Ô%=ð?ñ ?ô ?ˆð
 �˜dœjÑ)Ô)×9Ò9¸$ÀÑIÔIˆà”*×2Ò2°6¸7ÑCÔCˆÝœ¨¬°gÑ>Ô>ˆØŒ]×"Ò" =Ñ1Ô1ð '	±^°d¸Fð ð 	8ð 	8à"ð +ð +�CØ”J×%Ò% cÑ*Ô*Ð*Ð*ð ”
×&Ò& yÑ1Ô1Ð1ð ”×)Ò)¨$¬,Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð ð ð àœ×3Ò3Ø”OÔ0Øñô �ð  œ�ð ”
×!Ò! 'Ñ*Ô*Ð*Ø"ð +ð +�CØ”J×%Ò% cÑ*Ô*Ð*Ð*õ ˜FœNÑ+Ô+ð %Ø—N’NÑ$Ô$Ð$ð ”
×&Ò& yÑ1Ô1Ð1ð ”\×)Ò)¨&¬/Ñ:Ô:ð <ð <Ø”N×-Ò-¨d¬lÑ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð ð1ð ð ð ñ ô ð ð'	ð '	ð '	ð '	ñ '	ô '	ð '	ð '	ðð ð ð øøøð ð ð ð ð ð'	ð '	ð '	ñ '	ô '	ð '	ð '	ð '	ð '	ð '	ð '	ð '	øøøð '	ð '	ð '	ð '	ð '	ð '	s€   ÄKÄ#AFÅ<KÆF	ÆKÆF	ÆKÆCJ-É JÉ<J-ÊJÊJ-ÊJÊJ-ÊKÊ-J1	Ê1KÊ4J1	Ê5KËK
ËK
c                 ór  — |                       d¦  «         |                      |||j        |j        |j        ¦  «        }t          j        |j        |j        j	        |j        j        ¦  «        }| j
                             | j        j        |¦  «        }| j
                             | j        ||j        |¦  «        S )Nz# external function)rÆ   rð  rt   r    Úkwsr   ÚExternalFunctionDescriptorÚsymbolrð   rª  rB   Údeclare_external_functionrY   r(   Úcall_external_functionrp   )rK   rì  r¾  rì   rÌ  r'   re   s          rM   rü  z"Lower._lower_call_ExternalFunctioný  s«   € à×ÒÐ.Ñ/Ô/Ð/Ø×%Ò%Ø�)˜TœY¨¬°T´Xñ
ô 
ˆõ Ô4ØŒK˜œÔ-¨t¬x¬}ñ>ô >ˆàŒ|×5Ò5ØŒLÔ ñ)ô )ˆàŒ|×2Ò2ØŒL˜$ ¤°ñ
ô 
ð 	
rO   c                 óœ  — |                       d¦  «         |                      |||j        |j        |j        ¦  «        }|                      |j        j        ¦  «        }|j        �r@|  	                    ¦   «          | j
                             ¦   «         }g }g }t          |j        j        |j        |¦  «        D ]�\  }	}
}|	t          j        k    rb|                      |
|¦  «         | j
                             |
|| j        ¦  «        }|                     |¦  «         |                     |¦  «         Œx|                     |¦  «         ŒŽ| j                             | j        |||j        ¦  «        }|D ]}| j
                             |¦  «         Œ| j
                             |¦  «         n'| j                             | j        |||j        ¦  «        }|S )Nz## calling external function pointer)rÆ   rð  rt   r    r.  rë   re   r  Úrequires_gilr_   rW   r  rÉ  rð   r
   Úffi_forced_objectr…  r  r[   r†  rB   Úcall_function_pointerrY   Úcconvr  r  )rK   rì  r¾  rì   rÌ  Úpointerr!  Ú
newargvalsÚpyvalsÚexptypÚgottypr  r*  r–  s                 rM   rþ  z)Lower._lower_call_ExternalFunctionPointer  sØ  € à×ÒÐ>Ñ?Ô?Ð?Ø×%Ò%Ø�)˜TœY¨¬°T´Xñ
ô 
ˆð —,’,˜tœyœ~Ñ.Ô.ˆàÔñ "	Ø�OŠOÑÔÐàœ
×-Ò-Ñ/Ô/ˆIàˆJØˆFÝ(+¨D¬H¬M¸9¼>Ø,3ñ)5ô )5ð ,ð ,Ñ$�˜ ð �UÔ4Ò4Ð4Ø—K’K ¨Ñ-Ô-Ð-Øœ*×6Ò6Ø  dÔ&6ñô �Cð ×%Ò% cÑ*Ô*Ð*Ø—M’M #Ñ&Ô&Ð&Ð&à×%Ò% dÑ+Ô+Ð+Ð+ð ”,×4Ò4Ø”˜g z°4´:ñô ˆCð ð 'ð '�Ø”
×!Ò! #Ñ&Ô&Ð&Ð&ð ŒJ×"Ò" 9Ñ-Ô-Ð-Ð-ð ”,×4Ò4Ø”˜g w°´
ñô ˆCð ˆ
rO   c                 óà  — |                       |||j        |j        |j        ¦  «        }|                     |j        ¦  «        }| j        j        pt          }| j        j	        } ||j
        |j        ||j        ¬¦  «        }| j        j        j                             |¦  «        r(| j                             | j        | j        ||¦  «        }	n"| j                             | j        |||¦  «        }	|	S )N)Úabi_tagsÚuid)rð  rt   r    r.  Úget_overloadsrB   Úmanglerr   r'   r>  rn   r?  rY   rm   r  Ú
startswithÚcall_internalÚcall_unresolved)
rK   rì  r¾  rì   rÌ  Úrec_ovrA  r>  Úmangled_namer–  s
             rM   r   zLower._lower_call_RecursiveCall8  sñ   € à×%Ò%Ø�)˜TœY¨¬°T´Xñ
ô 
ˆð ×#Ò# I¤NÑ3Ô3ˆØ”,Ô&Ð9­/ˆØ”;Ô'ˆØ�w˜vœ°	´Ø(0°f´jðBñ Bô Bˆð Œ<Ô Ô%×0Ò0°Ñ>Ô>ð 	Ø”,×,Ò,Ø”˜dœk¨9°gñô ˆCˆCð ”,×.Ò.Ø”˜l¨I°wñô ˆCð ˆ
rO   c                 ó¶  — |                       d¦  «         t          j        |¦  «        }|                     |¦  «        s't	          d|› dt          j        |¦  «        › �¦  «        ‚|j        }|                      |||j        |j	        |j
        ¦  «        }|                      ||j        j        |¬¦  «        }| j                             |||j        ¬¦  «        }|S )Nz## calling first-class function typez%mismatch of function types: expected z	 but got )rð   )r7  )rÆ   r
   r|  Úcheck_signaturer   r  Úftyperð  rt   r    r.  Ú_Lower__get_function_pointerre   r  rY   r  r7  )	rK   rì  r¾  rì   rð   rI  rÌ  Úfunc_ptrr–  s	            rM   r  zLower._lower_call_FunctionTypeM  só   € Ø×ÒÐ>Ñ?Ô?Ð?ÝŒo˜iÑ(Ô(ˆØ×#Ò# IÑ.Ô.ð 	Gå"ðFØ!ðFð FÝ,1Ô,>¸sÑ,CÔ,CðFð FñGô Gð Gð ”
ˆØ×%Ò%Ø�#�t”y $¤+¨t¬xñ
ô 
ˆð ×.Ò.¨u°d´i´nÈ#Ð.ÑNÔNˆØŒl×Ò ¨'¸¼ÐÑDÔDˆØˆ
rO   Nc           	      óB  — ddl m} | j                             |¦  «        }|                      |¦  «        }| j                             |dd|z  ¬¦  «        }t          j        | j        |d|z  ¬¦  «        }| j         	                    t          j
        | j        |¦  «        d¬¦  «        5 \  }	}
|	5  |                      ¦   «          | j                             ¦   «         }| j                             |dd	|z  ¬¦  «        } || j        | j        ||d
¬¦  «        }| j                             t          j
        | j        |¦  «        d¬¦  «        5  |                      t           |› d�f| j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   | j                             |¦  «        }| j                             | j                             ||¦  «        |¦  «         | j                             |¦  «         | j                             |¦  «         d d d ¦  «         n# 1 swxY w Y   |
5  | j                             | j                             ||¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   | j                             |¦  «        S )Nr   )Úlower_get_wrapper_addressz
addr_of_%sr	  z
fptr_of_%sF)Úlikelyra   zpyaddr_of_%sÚignore)Úfailure_modez function address is null)rˆ   r@   )Ú numba.experimental.function_typerM  rB   Úget_value_typerë   rY   rÑ  r   Úalloca_oncer  r  r_   rW   r  r  rŽ   ÚRuntimeErrorr@   Úlong_as_voidptrÚstoreÚbitcastr  r  Úload)rK   rI  Úfnamerð   rM  ÚlltyÚfstructÚaddrÚfptrr(  r)  r!  ÚpyaddrÚaddr1Úaddr2s                  rM   Ú__get_function_pointerzLower.__get_function_pointer]  sÐ  € ØNÐNÐNÐNÐNÐNàŒ|×*Ò*¨5Ñ1Ô1ˆØ—,’,˜uÑ%Ô%ˆØŒ|×)Ò)¨'°1Ø/;¸uÑ/Eð *ñ Gô Gˆõ Ô" 4¤<°Ø(4¸Ñ(>ð@ñ @ô @ˆàŒ\×!Ò!Ý” ¤¨dÑ3Ô3Øð "ñ ô ð 	Ká!/ $¨Øð 2ð 2Ø—’Ñ!Ô!Ð!à œJ×1Ò1Ñ3Ô3�	Øœ×3Ò3Ø˜QØ'¨5Ñ1ð 4ñ 3ô 3�ð 2Ð1Ø”L $¤,°¸Ø!)ð+ñ +ô +�ð ”\×)Ò)Ýœ¨¬°eÑ<Ô<ÀUð *ñ Lô Lð &ð &à×)Ò)Ý$Ø%*Ð"EÐ"EÐ"EÐ!GØ œHð *ñ &ô &ð &ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð œ
×2Ò2°5Ñ9Ô9�Ø”×"Ò" 4¤<×#7Ò#7¸¸tÑ#DÔ#DÀdÑKÔKÐKØ”
×!Ò! %Ñ(Ô(Ð(Ø”
×&Ò& yÑ1Ô1Ð1ð-2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð. ð Kð KØ”×"Ò" 4¤<×#7Ò#7¸¸dÑ#CÔ#CÀTÑJÔJÐJðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð5	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð8 Œ|× Ò  Ñ&Ô&Ð&s€   Â)I<Â/BHÅ'E>Å2HÅ>FÆHÆFÆBHÈI<ÈH	ÈI<ÈH	ÈI<È$5I%ÉI<É%I)	É)I<É,I)	É-I<É<J ÊJ c                 ó”  — |                       d                     |¦  «        ¦  «         |                       d                     |¦  «        ¦  «         t          |t          j        ¦  «        r|j        j        }n(|                      |||j        |j        |j	        ¦  «        }|j
        }|�4ddlm}  ||¦  «        }|j        j        }|                     ||¦  «        }	n| j                             ||¦  «        }	|j        r2|                      |j        j        ¦  «        }
|
gt)          |¦  «        z   } |	| j        || j        ¦  «        }|S )Nz# calling normal function: {0}z# signature: {0}r   )Úresolve_dispatcher_from_str)rÆ   rÇ   r(  r
   rù  re   rt   rð  r    r.  r  Únumba.core.target_extensionrc  ÚtargetdescrÚtarget_contextrî   rB   Úrecvrrë   r  rò  rY   r@   )rK   rì  r¾  rì   rÌ  Útnamerc  ÚdispÚhw_ctxrñ   Úthe_selfr–  s               rM   r  zLower._lower_call_normal…  sG  € à×ÒÐ9×@Ò@ÀÑFÔFÑGÔGÐGØ×ÒÐ+×2Ò2°9Ñ=Ô=Ñ>Ô>Ð>Ý�d�EÔ3Ñ4Ô4ð 	Ø”i”nˆGˆGà×)Ò)Ø�i ¤¨D¬K¸¼ñô ˆGð ”ˆØÐØOÐOÐOÐOÐOÐOØ.Ð.¨uÑ5Ô5ˆDØÔ%Ô4ˆFØ×&Ò& t¨YÑ7Ô7ˆDˆDà”<×,Ò,¨T°9Ñ=Ô=ˆDØŒ?ð 	1ð —|’| D¤I¤NÑ3Ô3ˆHà�j¥4¨¡=¤=Ñ0ˆGàˆd�4”< ¨$¬(Ñ3Ô3ˆØˆ
rO   c                 óœ  ‡ ‡— |j         dk    r‰                      ‰||j        ¦  «        S |j         dk    r^‰                      |j        j        ¦  «        }|j        r‰                      ‰||j        ¦  «        S ‰                      ‰||j        ¦  «        S |j         dk    r÷‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }‰ j
        j                             |j        ¦  «        }‰ j        j        |         }‰ j
                             ||¦  «        }‰ j
                             ‰ j        |||j        d         ¦  «        } |‰ j        |g¦  «        }	‰ j
                             ‰ j        |	|j        ‰¦  «        }	|	S |j         dk    r‰                      ‰|¦  «        }	|	S |j         dk    rw‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
‰ j
                             ‰ j        ||
¦  «        }	‰                      ‰|	¦  «         |	S |j         dk    rw‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
‰ j
                             ‰ j        ||
¦  «        }	‰                      ‰|	¦  «         |	S |j         dv rÖ‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
‰ j        j        |         }‰ j
                             |j         |¦  «        }|j        \  }‰ j
                             ‰ j        ||
|¦  «        } |‰ j        |f¦  «        }	‰ j
                             ‰ j        |	|j        ‰¦  «        }	|	S |j         d	k    �r‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
t1          |
t2          j        ¦  «        r.‰ j
                             ‰ j        ||
|
j        ¦  «        }|
j        }
t1          |
t2          j        ¦  «        r |
‰k    sJ ‚‰                      |
|¦  «         |S |
j        j        }‰ j
                             ‰¦  «        }t3          j         |t2          j!        ¦  «        }tE          j#        |
j        |
¦  «        }‰ j
                             d
|¦  «        }tE          j#        ||
j        ¦  «        }‰ j
                             d|¦  «        } |‰ j        |f¦  «        }tI          |j%        ¦  «        D ]Ý} |‰ j        |f¦  «        }‰ j
                             ‰ j        ||¦  «        }tM          j'        ‰ j        ‰ j         (                    |¦  «        ¦  «        5  ‰  )                    tT          ‰ j+        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   ‰ j
                             ‰ j        ||¦  «        }‰ j         ,                    |||¦  «        }ŒÞ |‰ j        |f¦  «        }‰ j
                             ‰ j        ||¦  «        }tM          j'        ‰ j        |¦  «        5  ‰  )                    tT          ‰ j+        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   ‰  -                    |
j        |¦  «         |S |j         dk    �r_‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
t1          ‰t2          j.        ¦  «        re‰ j
                             ‰ j        ||
‰j/        ¦  «        }‰ j
         0                    ‰ j        |‰j/        ¦  «        }	‰                      ‰|	¦  «         |	S ‰ j
         1                    |
|j2        ¦  «        }‰ j
        j         3                    |
|j2        ¦  «        }|€‰ j
         4                    ¦   «         S  |‰ j
        ‰ j        |
||j2        ¦  «        }	‰ j
                             ‰ j        |	|‰¦  «        }	|	S |j         dk    rãtE          j#        ‰‰                      |j	        j        ¦  «        tk          |j6        ¦  «        ¦  «        }	 ‰ j
                             d|¦  «        } |‰ j        ‰                      |j	        j        ¦  «        |j6        f¦  «        S # tn          $ r@ |j8        €‚ ‰ j        j        |         }‰  9                    ‰||j	        |j8        |¦  «        cY S w xY w|j         dk    r¸tE          j#        ‰‰                      |j	        j        ¦  «        ‰                      |j6        j        ¦  «        ¦  «        }‰ j
                             d|¦  «        } |‰ j        ‰                      |j	        j        ¦  «        ‰                      |j6        j        ¦  «        f¦  «        S |j         dk    r5‰ j        j        |         }‰  9                    ‰||j	        |j6        |¦  «        S |j         dk    r|ˆ fd„|j:        D ¦   «         }ˆ fd„|j:        D ¦   «         }ˆ fd„tw          |‰|¦  «        D ¦   «         }‰ j
         <                    ‰ j        ‰|¦  «        }‰                      ‰|¦  «         |S |j         dk    rðˆ fd„|j:        D ¦   «         }ˆ fd„|j:        D ¦   «         }t1          ‰t2          j=        ¦  «        rrˆ fd„tw          |‰j        |¦  «        D ¦   «         }‰ j
         <                    ‰ j        t3          j>        ‰j        ¦  «        |¦  «        }‰                      ‰|¦  «         |S ˆˆ fd„tw          ||¦  «        D ¦   «         }‰ j
         ?                    ‰ j        ‰|¦  «        S |j         dk    rj|j:        d d d…         }ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }ˆˆ fd„tw          ||¦  «        D ¦   «         }‰ j
         @                    ‰ j        ‰|¦  «        S |j         dk    �r+|j:        }g g } }g g }"}!|D ]Á\  }#}$‰                      |#j        ¦  «        }%‰                      |#j        ¦  «        }&‰                      |$j        ¦  «        }‰                      |$j        ¦  «        }'| A                    |%¦  «         |  A                    |¦  «         |! A                    |&¦  «         |" A                    |'¦  «         ŒÂ‰ j
         B                    ‰ j        ‰t‡          tw          |!|"¦  «        ¦  «        t‡          tw          || ¦  «        ¦  «        ¦  «        S |j         d k    rx‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
‰ j
                             ‰ j        ||
‰¦  «        }‰                      ‰|¦  «         |S |j         d!k    rt‰          d"¦  «        ‚|j         d#k    r‰ j
         E                    ‰¦  «        S |j         ‰ j
        jF        v r# ‰ j
        jF        |j                  ‰ |¦  «        }	|	S to          |¦  «        ‚)$NÚbinopÚinplace_binopÚunaryr   r  Ú
pair_firstÚpair_second)ÚgetiterÚiternextÚexhaust_iterrr  rs  rÍ   ÚgetattrÚstatic_getitemÚtyped_getitemrÈ  Úbuild_tuplec                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rU   ©rë   r  ©r  rÖ  rK   s     €rM   r  z$Lower.lower_expr.<locals>.<listcomp>F  ó'   ø€ ÐAÐAÐA°˜Ÿš Q¤VÑ,Ô,ÐAÐAÐArO   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rU   ©rå   r  r{  s     €rM   r  z$Lower.lower_expr.<locals>.<listcomp>G  ó'   ø€ Ð?Ð?Ð?¨q�t—{’{ 1¤6Ñ*Ô*Ð?Ð?Ð?rO   c                 ó\   •— g | ](\  }}}‰j                              ‰j        |||¦  «        ‘Œ)S rU   rÄ  ©r  rn  ÚtotyÚfromtyrK   s       €rM   r  z$Lower.lower_expr.<locals>.<listcomp>H  sM   ø€ ð Pð Pð PÙ-˜C  vð œ×)Ò)¨$¬,¸¸VÀTÑJÔJð Pð Pð PrO   Ú
build_listc                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rU   rz  r{  s     €rM   r  z$Lower.lower_expr.<locals>.<listcomp>O  r|  rO   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rU   r~  r{  s     €rM   r  z$Lower.lower_expr.<locals>.<listcomp>P  r  rO   c                 ó\   •— g | ](\  }}}‰j                              ‰j        |||¦  «        ‘Œ)S rU   rÄ  r�  s       €rM   r  z$Lower.lower_expr.<locals>.<listcomp>R  sM   ø€ ð Cð Cð CÙ 1  T¨6ð !œL×-Ò-¨d¬l¸CÀÈÑNÔNð Cð Cð CrO   c                 ód   •— g | ],\  }}‰j                              ‰j        ||‰j        ¦  «        ‘Œ-S rU   ©rB   rA  rY   Údtype©r  rn  rƒ  r«  rK   s      €€rM   r  z$Lower.lower_expr.<locals>.<listcomp>[  sR   ø€ ð Gð Gð Gá +  Vð !œL×-Ò-¨d¬l¸CÀØ.3¬kñ;ô ;ð Gð Gð GrO   Ú	build_setr%   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rU   rz  r{  s     €rM   r  z$Lower.lower_expr.<locals>.<listcomp>c  s'   ø€ Ð<Ð<Ð<°˜Ÿš Q¤VÑ,Ô,Ð<Ð<Ð<rO   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rU   r~  r{  s     €rM   r  z$Lower.lower_expr.<locals>.<listcomp>d  s'   ø€ Ð:Ð:Ð:¨q�t—{’{ 1¤6Ñ*Ô*Ð:Ð:Ð:rO   c                 ód   •— g | ],\  }}‰j                              ‰j        ||‰j        ¦  «        ‘Œ-S rU   r‰  r‹  s      €€rM   r  z$Lower.lower_expr.<locals>.<listcomp>e  sR   ø€ ð Cð Cð Cá'˜C ð œ×)Ò)¨$¬,¸¸VØ*/¬+ñ7ô 7ð Cð Cð CrO   Ú	build_maprA  ÚphizPHI not strippedÚnull)Gr  rÁ  rh   rå   r¹  r  ÚmutableÚimmutable_fnrë   r#  rB   r^  r_  r'   rQ  rî   rA  rY   rt   rª  r  rp  r…  rq  r(  r
   rK  rC  rã  Úiterator_typer¡  Úget_constant_undefÚPairrB  r   rì   rè  Úcountr   Úif_unlikelyÚnot_rŽ   r±   r@   Úinsert_valuer  ÚBoundFunctionÚthisÚget_bound_functionÚget_getattrrd  Úresolve_getattrrê   r½  r!   rR  rT  rÏ  r/   rÉ  Ú
make_tupleÚLiteralListÚTupler„  rŒ  r†  r�  rò  r   Úget_constant_nullÚspecial_ops)(rK   r«  r¾  r¿  rn  r‰  Úfunc_tyrì   rñ   r–  rm  ÚftyÚcastvalÚitemtyÚtupÚpairtyÚgetiter_sigÚgetiter_implÚiternext_sigÚiternext_implÚiterobjrÖ  ÚpairÚis_validÚitemÚcastedÚattrtyÚitemvalsÚitemtysrÎ  r/   r>   r!  Ú	key_typesÚvalue_typesÚkr#  rZ  ÚkeytypeÚvaltypes(   ``                                      rM   r‘  zLower.lower_expr¡  s•  øø€ ØŒ7�gÒÐØ×#Ò# E¨4°´Ñ9Ô9Ð9ØŒW˜Ò'Ð'Ø—+’+˜dœhœmÑ,Ô,ˆCØŒ{ð HØ×'Ò'¨¨t°T´WÑ=Ô=Ð=ð ×'Ò'¨¨t°TÔ5FÑGÔGÐGØŒW˜ÒÐØ—,’,˜tœzœÑ/Ô/ˆCØ—+’+˜dœjœoÑ.Ô.ˆCØ”lÔ1×DÒDÀTÄWÑMÔMˆGàœÔ-¨dÔ3ˆIØ”<×,Ò,¨W°iÑ@Ô@ˆDà”,×#Ò# D¤L°#°s¸I¼NÈ1Ô<MÑNÔNˆCØ�$�t”| c UÑ+Ô+ˆCØ”,×#Ò# D¤L°#Ø$-Ô$9¸5ñBô BˆCàˆJàŒW˜ÒÐØ—/’/ %¨Ñ.Ô.ˆCØˆJàŒW˜Ò$Ð$Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBØ”,×)Ò)¨$¬,¸¸RÑ@Ô@ˆCØ�KŠK˜˜sÑ#Ô#Ð#ØˆJàŒW˜Ò%Ð%Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBØ”,×*Ò*¨4¬<¸¸bÑAÔAˆCØ�KŠK˜˜sÑ#Ô#Ð#ØˆJàŒWÐ/Ð/Ð/Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBØœÔ-¨dÔ3ˆIØ”<×,Ò,¨T¬W°iÑ@Ô@ˆDØ”N‰EˆSØ”l×'Ò'¨¬°c¸2¸sÑCÔCˆGØ�$�t”| g ZÑ0Ô0ˆCØ”,×#Ò# D¤L°#°yÔ7LØ$)ñ+ô +ˆCàˆJàŒW˜Ò&Ñ&Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBå˜"�eœnÑ-Ô-ð Ø”l×'Ò'¨¬°c¸2¸r¼wÑGÔG�Ø”W�õ ˜"�eœoÑ.Ô.ð Ø˜U’{�{�{�{Ø—’˜B Ñ$Ô$Ð$Ø�
àÔ%Ô0ˆFØ”,×1Ò1°%Ñ8Ô8ˆCÝ”Z ­¬Ñ6Ô6ˆFÝ Ô*¨2Ô+;¸RÑ@Ô@ˆKØœ<×4Ò4°YØ5@ñBô BˆLå!Ô+¨F°BÔ4DÑEÔEˆLØ œL×5Ò5°jØ6BñDô DˆMà"�l 4¤<°#°Ñ8Ô8ˆGå˜4œ:Ñ&Ô&ð 	>ð 	>�Ø$�} T¤\°G°:Ñ>Ô>�Øœ<×3Ò3°D´LØ48¸&ñBô B�åÔ(¨¬Ø)-¬×):Ò):¸8Ñ)DÔ)DñFô Fð Dð Dà×)Ò)­*¸$¼(Ð)ÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dð ”|×.Ò.¨t¬|Ø/3°Vñ=ô =�à”l×/Ò/°°T¸1Ñ=Ô=��ð !�= ¤°¨zÑ:Ô:ˆDØ”|×/Ò/°´Ø04°fñ>ô >ˆHåÔ$ T¤\°8Ñ<Ô<ð @ð @Ø×%Ò%¥j°d´hÐ%Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð �KŠK˜Ô(¨'Ñ2Ô2Ð2ØˆJàŒW˜	Ò!Ñ!Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBå˜%¥Ô!4Ñ5Ô5ð ð œ×*Ò*¨4¬<¸¸bÀ%Ä*ÑMÔM�Ø”l×5Ò5°d´lÀFØ6;´jñBô B�à—’˜E 3Ñ'Ô'Ð'Ø�
à”|×/Ò/°°D´IÑ>Ô>�ØœÔ4×DÒDÀRØEIÄYñPô P�ð �<àœ<×7Ò7Ñ9Ô9Ð9à˜$˜tœ|¨T¬\¸2¸sÀDÄIÑNÔN�Cð ”l×'Ò'¨¬°c¸6À5ÑIÔI�Ø�
àŒWÐ(Ò(Ð(ÝÔ(ØØ—’˜DœJœOÑ,Ô,Ý ¤
Ñ+Ô+ñô ˆIð
Eð ”|×0Ò0Ð1AÀ9ÑMÔM�Ø�t˜DœLØ!Ÿ\š\¨$¬*¬/Ñ:Ô:¸D¼JÐGñIô Ið Iøå&ð Eð Eð EØ”>Ð)Øð !œKÔ1°$Ô7�	Ø×)Ò)¨%°°t´zØ*.¬.¸)ñEô Eð Eð Eð EðEøøøð ŒW˜Ò'Ð'ÝÔ(ØØ—’˜DœJœOÑ,Ô,Ø—’˜DœJœOÑ,Ô,ñô ˆIð
 ”<×,Ò,¨_¸iÑHÔHˆDØ�4˜œ t§|¢|°D´J´OÑ'DÔ'DØŸš T¤Z¤_Ñ5Ô5ð'7ñ 8ô 8ð 8àŒW˜	Ò!Ð!ØœÔ-¨dÔ3ˆIØ×%Ò% e¨T°4´:¸t¼zØ&/ñ1ô 1ð 1ð ŒW˜Ò%Ð%ØAÐAÐAÐA°d´jÐAÑAÔAˆHØ?Ð?Ð?Ð?°D´JÐ?Ñ?Ô?ˆGðPð Pð Pð PÝ14°X¸uÀgÑ1NÔ1NðPñ Pô PˆHà”,×)Ò)¨$¬,¸¸xÑHÔHˆCØ�KŠK˜˜sÑ#Ô#Ð#ØˆJàŒW˜Ò$Ð$ØAÐAÐAÐA°d´jÐAÑAÔAˆHØ?Ð?Ð?Ð?°D´JÐ?Ñ?Ô?ˆGÝ˜%¥Ô!2Ñ3Ô3ð NðCð Cð Cð CÝ58¸À5Ä;Ø9@ñ6Bô 6BðCñ Cô C�ð ”l×-Ò-¨d¬lÝ.3¬k¸%¼+Ñ.FÔ.FØ.6ñ8ô 8�ð —’˜E 3Ñ'Ô'Ð'Ø�
ðGð Gð Gð Gð Gå/2°8¸WÑ/EÔ/EðGñ Gô G�ð ”|×.Ò.¨t¬|¸UÀHÑMÔMÐMàŒW˜Ò#Ð#à”J˜t˜t ˜tÔ$ˆEØ<Ð<Ð<Ð<°eÐ<Ñ<Ô<ˆHØ:Ð:Ð:Ð:°EÐ:Ñ:Ô:ˆGðCð Cð Cð Cð Cå+.¨x¸Ñ+AÔ+AðCñ Cô CˆHð ”<×)Ò)¨$¬,¸¸xÑHÔHÐHàŒW˜Ò#Ñ#Ø”JˆEØ˜r�&ˆDØ%'¨�{ˆIØð ,ð ,‘��1Ø—l’l 1¤6Ñ*Ô*�ØŸ+š+ a¤fÑ-Ô-�Ø—l’l 1¤6Ñ*Ô*�ØŸ+š+ a¤fÑ-Ô-�Ø—’˜CÑ Ô Ð Ø—’˜cÑ"Ô"Ð"Ø× Ò  Ñ)Ô)Ð)Ø×"Ò" 7Ñ+Ô+Ð+Ð+Ø”<×)Ò)¨$¬,¸Ý*.­s°9¸kÑ/JÔ/JÑ*KÔ*KÝ*.­s°4¸Ñ/@Ô/@Ñ*AÔ*AñCô Cð Cð ŒW˜ÒÐØ—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBØ”l×'Ò'¨¬°c¸2¸uÑEÔEˆGØ�KŠK˜˜wÑ'Ô'Ð'ØˆNàŒW˜ÒÐÝÐ 2Ñ3Ô3Ð3àŒW˜ÒÐØ”<×1Ò1°%Ñ8Ô8Ð8àŒW˜œÔ0Ð0Ð0Ø3�$”,Ô*¨4¬7Ô3°D¸$Ñ?Ô?ˆCØˆJå! $Ñ'Ô'Ð's8   Ö#"W×W	×W	Ù'"ZÚZÚZá9Ac	 ã	Adädc                 ó€   — || j         v rdS || j        vs| j        r"|                      ||¦  «        }|| j         |<   dS dS )zT
        Ensure the given variable has an allocated stack slot (if needed).
        N)r<   r  rÿ   Úalloca)rK   r  r1  Úptrs       rM   r$  zLower._alloca_varŽ  s`   € ð �4”;ÐÐàˆFð ˜Ô3Ð3Ð3ØÔ+ð 4ð —+’+˜d FÑ+Ô+ˆCà #ˆDŒK˜ÑÐÐð 4Ð3rO   c                 óV   — | j         s|| j        vsJ ‚|| j        vsJ ‚| j        |         S )z=
        Get a pointer to the given variable's slot.
        )rÿ   r  r  r<   )rK   r  s     rM   ÚgetvarzLower.getvarž  sD   € ð Ô*ð 	:Ø˜tÔ5Ð5Ð5Ð5Ð5Ø˜tÔ9Ð9Ð9Ð9Ð9ØŒ{˜4Ô Ð rO   c                 óP  — || j         v r| j        s| j         |         S |                      |¦  «        }|| j        j        v rMt          j        | j        ¦  «        5  | j                             |¦  «        cddd¦  «         S # 1 swxY w Y   dS | j                             |¦  «        S )z2
        Load the given variable's value.
        N)	r  rÿ   rÁ  r0   Ú	arg_namesr   r¿   rY   rX  )rK   r  r¿  s      rM   rë   zLower.loadvar§  sí   € ð �4Ô)Ð)Ð)°$Ô2MÐ)ØÔ)¨$Ô/Ð/Ø�kŠk˜$ÑÔˆð �4”<Ô)Ð)Ð)ÝÔ+¨D¬LÑ9Ô9ð .ð .Ø”|×(Ò(¨Ñ-Ô-ð.ð .ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .ð ”<×$Ò$ SÑ)Ô)Ð)s   ÁBÂBÂBc           
      óZ  — |                       |¦  «        }|                      ||¦  «         || j        v r| j        s|| j        |<   dS |€+|                      |¦  «        }|                      ||¦  «         |                      |¦  «        }|j        |j        j	        k    r(d 
                    ||||¬¦  «        }t          |¦  «        ‚|�Çt          j        | j        ¦  «        5  | j                             ||¦  «         ddd¦  «         n# 1 swxY w Y   | j        }| j                             |¦  «        }	| j                             |	¦  «        }
| j        j        |         }| j                             | j        |||	|
|j        ||¬¦  «         dS | j                             ||¦  «         dS )z:
        Store the value into the given variable.
        NzNStoring {value.type} to ptr of {ptr.type.pointee} ('{name}'). FE type {fetype})r#  r¿  r1  r  )r  ÚlltypeÚsizerc   Ú	datamodelr7  )rå   r$  r  rÿ   r  rë   r  rÁ  rC  ÚpointeerÇ   ÚAssertionErrorr   r¿   rY   rV  rG   rB   rR  Úget_abi_sizeofÚdata_model_managerÚmark_variablerc   )rK   r#  r  r7  r1  Úoldr¿  rk   r@   rÅ  ÚsizeofrÇ  s               rM   r>  zLower.storevar¹  s  € ð —’˜TÑ"Ô"ˆà×Ò˜˜vÑ&Ô&Ð&ð �DÔ.Ð.Ð.ØÔ/ð /à+0ˆDÔ" 4Ñ(Ð(Ð(àˆ~ð —l’l 4Ñ(Ô(�Ø—’˜F CÑ(Ô(Ð(ð —+’+˜dÑ#Ô#ˆCØŒz˜SœXÔ-Ò-Ð-ð6ß7=²vÀEØBEØEKØCGð 8>ñ 8Iô 8Ið õ
 % SÑ)Ô)Ð)ð
 Ð!ÝÔ/°´Ñ=Ô=ð 3ð 3Ø”L×&Ò& u¨cÑ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3à”m�Øœ×4Ò4°VÑ<Ô<�Øœ×4Ò4°VÑ<Ô<�Ø œLÔ;¸FÔC�	Ø”×,Ò,¨T¬\¸3ÀTØ4:ÀØ25´(ÀiØ4:ð -ñ <ô <ð <ð <ð <ð
 ”×"Ò" 5¨#Ñ.Ô.Ð.Ð.Ð.s   Ã"D
Ä
DÄDc                 ó  — |                       |¦  «        }|| j        vr*| j        s#|| j        v r| j                             |¦  «         |                      ||¦  «         || j        v r,| j        s%| j        |         }|                      ||¦  «         dS |                      |¦  «        }|                      || j         	                    |¦  «        ¦  «         | j         
                    t          |j        j        d¦  «        |¦  «         dS )z,
        Delete the given variable.
        N)rå   r  rÿ   r  Údiscardr$  r  rÁ  rY   rX  rV  r   rC  rÈ  )rK   r  r1  Úllvalr¿  s        rM   ra  zLower.delvarç  s  € ð —’˜TÑ"Ô"ˆð ˜Ô.Ð.Ð.ØÔ/ð /à�tÔ1Ð1Ð1ØÔ*×2Ò2°4Ñ8Ô8Ð8ð 	×Ò˜˜vÑ&Ô&Ð&à�4Ô)Ð)Ð)°$Ô2MÐ)ØÔ*¨4Ô0ˆEØ�KŠK˜ Ñ&Ô&Ð&Ð&Ð&à—+’+˜dÑ#Ô#ˆCØ�KŠK˜ ¤× 1Ò 1°#Ñ 6Ô 6Ñ7Ô7Ð7àŒL×Ò�x¨¬Ô(8¸$Ñ?Ô?ÀÑEÔEÐEÐEÐErO   c                 óŠ   — | j                              |¦  «        }| j         j        |         }|                      |||¬¦  «        S )N)rÇ  )rB   rR  rË  Úalloca_lltype)rK   r  rC  rÅ  rÇ  s        rM   r¾  zLower.alloca   sA   € Ø”×,Ò,¨TÑ2Ô2ˆØ”LÔ3°DÔ9ˆ	Ø×!Ò! $¨¸)Ð!ÑDÔDÐDrO   c           	      ó   — |                      d¦  «         }t          j        | j        ||d¬¦  «        }|rX|| j        j        vrJ| j                             |¦  «        }| j         	                    | j        ||||| j
        j        |¬¦  «         |S )Nú$F)r  Úzfill)r  rÅ  rÆ  rc   rÇ  )rB  r   rS  rY   r0   rÃ  rB   rÊ  r   rÌ  r@   rc   )rK   r  rÅ  rÇ  Ú
is_uservarÚaptrrÎ  s          rM   rÓ  zLower.alloca_lltype  sª   € àŸš¨Ñ-Ô-Ð-ˆ
åÔ" 4¤<°Ø(,°Eð;ñ ;ô ;ˆð ð 		Cð ˜4œ<Ô1Ð1Ð1Øœ×4Ò4°VÑ<Ô<�Ø”×,Ò,¨T¬\¸4ÀdØ4:ÀØ26´(´-Ø7@ð -ñ Cô Cð Cð ˆrO   c                 ón   — | j         j        sd S | j         j                             | j        ||¦  «         d S rQ   )rB   r²   Únrtr…  rY   ©rK   r‰  rn  s      rM   r…  zLower.incref  s9   € ØŒ|Ô&ð 	ØˆFàŒÔ×Ò ¤¨c°3Ñ7Ô7Ð7Ð7Ð7rO   c                 óÒ   — | j         j        sd S t          j        | j        ¦  «        5  | j         j                             | j        ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rQ   )rB   r²   r   r¿   rY   rÚ  r  rÛ  s      rM   r  zLower.decref  s¬   € ØŒ|Ô&ð 	ØˆFõ
 Ô'¨¬Ñ5Ô5ð 	<ð 	<ØŒLÔ×#Ò# D¤L°#°sÑ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   ¨'AÁA Á#A rQ   )+ró   rô   rõ   r   r¡   rJ   r÷   rÿ   rü   r   r‚   rÑ   rS  rh  rf  rj  rl  r<  r•  rÁ  rÏ  rÓ  rð  rV  r  rú  rü  rþ  r   r  rJ  r  r‘  r$  rÁ  rë   r>  ra  r¾  rÓ  r…  r  Ú__classcell__)rý   s   @rM   rù   rù   b  sœ  ø€ € € € € ØÔ.€Nð.ð .ð .ð .ð .ð
 ðKð Kñ „XðKð%$ð %$ð %$ðN$ð $ð $ð $ð $ðLð ð ðI2ð I2ð I2ðV:ð :ð :ð>*ð *ð *ð
Eð Eð Eð&Oð Oð OðLð Lð Lð06ð 06ð 06ðdLð Lð Lð4D ð D ð D ðL(ð (ð (ð,?ð ?ð ?ð%ð %ð %ðN$ð $ð $ð:((ð ((ð ((ðT>ð >ð >ð@
ð 
ð 
ð+ð +ð +ðZð ð ð*ð ð ð &'ð &'ð &'ð &'ðPð ð ð8k(ð k(ð k(ðZ$ð $ð $ð !ð !ð !ð*ð *ð *ð$,/ð ,/ð ,/ð ,/ð\Fð Fð Fð2Eð Eð Eð
ð ð ð ð(8ð 8ð 8ð<ð <ð <ð <ð <ð <ð <rO   rù   c                 ót   — 	 t          j        | ¦  «        S # t          $ r t          j        | ¦  «        cY S w xY w)zjReturns a Literal instance if the type of value is supported;
    otherwise, return `Omitted(value)`.
    )r
   ré   r   r’  )r#  s    rM   r½  r½  *  sH   € ð$ÝŒ}˜UÑ#Ô#Ð#øÝð $ð $ð $ÝŒ}˜UÑ#Ô#Ð#Ð#Ð#ð$øøøs   ‚ –7¶7)-Úcollectionsr   r   r\  rf   Ú	functoolsr   Úllvmlite.irrD  r   r   Ú
numba.corer   r	   r
   r   r   r   r   r   r   r   r   r   Únumba.core.errorsr   r   r   r   r   r   Únumba.core.funcdescr   Únumba.core.environmentr   Únumba.core.analysisr   r   Únumba.misc.firstlinefinderr   r   Úobjectr#   rù   r½  rU   rO   rM   ú<module>ré     s$  ðØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ð&ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 0Ð /Ð /Ð /Ð /Ð /Ø .Ð .Ð .Ð .Ð .Ð .Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ AÐ AÐ AÐ AÐ AÐ Að ˆj˜Ð(;Ñ<Ô<€ðG!ð G!ð G!ð G!ð G!�ñ G!ô G!ð G!ðT
E<ð E<ð E<ð E<ð E<ˆIñ E<ô E<ð E<ðP&$ð $ð $ð $ð $rO   