§
    1@Äjã ã                   óh  — d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Z
d dlmZ d dlmZmZmZmZmZmZmZ ej        Zej        Zej        Zej        dk     rej        Z G d„ d	e¦  «        Z e¦   «         Z  e¦   «         Z! e¦   «         Z"e j#        Z$e!j#        Z%e"j#        Z& G d
„ d edd¦  «        ¦  «        Z' G d„ d edd¦  «        ¦  «        Z( G d„ d edd¦  «        ¦  «        Z) G d„ de¦  «        Z* G d„ de¦  «        Z+ edd¦  «        Z, G d„ de¦  «        Z- G d„ d¦  «        Z.dS )é    )Ú
namedtupleN)Úir)ÚConstant)Ú
_helperlib)ÚtypesÚutilsÚconfigÚloweringÚcgutilsÚimputilsÚ	serialize)é   é   c                   ó"   — e Zd Zd„ Zd„ Zdd„ZdS )Ú	_Registryc                 ó   — i | _         d S ©N)Ú	functions©Úselfs    úEC:\Projects\Historical\venv\Lib\site-packages\numba/core/pythonapi.pyÚ__init__z_Registry.__init__   s   € ØˆŒˆˆó    c                 óN   ‡ ‡— t          ‰t          j        ¦  «        sJ ‚ˆ ˆfd„}|S )Nc                 óR   •— ‰‰j         v rt          d‰›�¦  «        ‚| ‰j         ‰<   | S )Nzduplicate registration for )r   ÚKeyError)Úfuncr   Ú	typeclasss    €€r   Ú	decoratorz%_Registry.register.<locals>.decorator   s6   ø€ Ø˜DœNÐ*Ð*Ý�hÀ)À)ÐMÑNÔNÐNØ(,ˆDŒN˜9Ñ%ØˆKr   )Ú
issubclassr   ÚType)r   r   r   s   `` r   Úregisterz_Registry.register   sB   øø€ Ý˜)¥U¤ZÑ0Ô0Ð0Ð0Ð0ð	ð 	ð 	ð 	ð 	ð 	ð
 Ðr   Nc                 ó’   — t          |t          j        ¦  «        sJ ‚|j        D ]"}| j                             |¦  «        }|�|c S Œ#|S r   )r    r   r!   Ú__mro__r   Úget)r   r   ÚdefaultÚclsr   s        r   Úlookupz_Registry.lookup%   sZ   € Ý˜)¥U¤ZÑ0Ô0Ð0Ð0Ð0ØÔ$ð 	ð 	ˆCØ”>×%Ò% cÑ*Ô*ˆDØÐØ���ð  àˆr   r   )Ú__name__Ú
__module__Ú__qualname__r   r"   r(   © r   r   r   r      sF   € € € € € ðð ð ðð ð ðð ð ð ð ð r   r   c                   ó   — e Zd ZdZdZd„ ZdS )Ú_BoxContextz<
    The facilities required by boxing implementations.
    r,   c                 óD   — | j                              ||| j        ¦  «        S r   ©ÚpyapiÚfrom_native_valueÚenv_manager©r   ÚtypÚvals      r   Úboxz_BoxContext.box=   ó   € ØŒz×+Ò+¨C°°dÔ6FÑGÔGÐGr   N)r)   r*   r+   Ú__doc__Ú	__slots__r7   r,   r   r   r.   r.   6   s9   € € € € € ðð ð €IðHð Hð Hð Hð Hr   r.   )ÚcontextÚbuilderr1   r3   c                   ó   — e Zd ZdZdZd„ ZdS )Ú_UnboxContextz>
    The facilities required by unboxing implementations.
    r,   c                 ó8   — | j                              ||¦  «        S r   )r1   Úto_native_value)r   r5   Úobjs      r   Úunboxz_UnboxContext.unboxH   s   € ØŒz×)Ò)¨#¨sÑ3Ô3Ð3r   N)r)   r*   r+   r9   r:   rB   r,   r   r   r>   r>   A   s4   € € € € € ðð ð €Ið4ð 4ð 4ð 4ð 4r   r>   )r;   r<   r1   c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )Ú_ReflectContextz@
    The facilities required by reflection implementations.
    r,   c                 óZ   — | j                              | j        t          j        ¦  «         d S r   )r<   ÚstoreÚis_errorr   Útrue_bitr   s    r   Ú	set_errorz_ReflectContext.set_errorU   s%   € ØŒ×Ò˜4œ=­'Ô*:Ñ;Ô;Ð;Ð;Ð;r   c                 óD   — | j                              ||| j        ¦  «        S r   r0   r4   s      r   r7   z_ReflectContext.boxX   r8   r   c                 óD   — | j                              ||| j        ¦  «        S r   )r1   Úreflect_native_valuer3   r4   s      r   Úreflectz_ReflectContext.reflect[   s   € ØŒz×.Ò.¨s°C¸Ô9IÑJÔJÐJr   N)r)   r*   r+   r9   r:   rI   r7   rM   r,   r   r   rD   rD   L   sZ   € € € € € ðð ð €Ið<ð <ð <ðHð Hð HðKð Kð Kð Kð Kr   rD   )r;   r<   r1   r3   rG   c                   ó   — e Zd ZdZdd„ZdS )ÚNativeValuez™
    Encapsulate the result of converting a Python object to a native value,
    recording whether the conversion was successful and how to cleanup.
    Nc                 óL   — || _         |�|nt          j        | _        || _        d S r   )Úvaluer   Ú	false_bitrG   Úcleanup)r   rQ   rG   rS   s       r   r   zNativeValue.__init__e   s'   € ØˆŒ
Ø$,Ð$8˜˜½gÔ>OˆŒØˆŒˆˆr   ©NN)r)   r*   r+   r9   r   r,   r   r   rO   rO   _   s2   € € € € € ðð ð
ð ð ð ð ð r   rO   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚEnvironmentManagerc                 óv   — t          |t          j        ¦  «        sJ ‚|| _        || _        || _        || _        d S r   )Ú
isinstancer
   ÚEnvironmentr1   ÚenvÚenv_bodyÚenv_ptr)r   r1   rZ   r[   r\   s        r   r   zEnvironmentManager.__init__m   s;   € Ý˜#�xÔ3Ñ4Ô4Ð4Ð4Ð4ØˆŒ
ØˆŒØ ˆŒØˆŒˆˆr   c                 ó  — t          |t          ¦  «        rt          j        |¦  «        }t	          | j        j        ¦  «        D ]\  }}||u r n9Œt          | j        j        ¦  «        }| j        j                             |¦  «         |S )zF
        Add a constant to the environment, return its index.
        )	rX   ÚstrÚsysÚinternÚ	enumeraterZ   ÚconstsÚlenÚappend)r   ÚconstÚindexr6   s       r   Ú	add_constzEnvironmentManager.add_constt   s‡   € õ
 �e�SÑ!Ô!ð 	&Ý”J˜uÑ%Ô%ˆEÝ# D¤H¤OÑ4Ô4ð 	*ð 	*‰JˆE�3Ø�eˆ|ˆ|Ø�ð õ ˜œœÑ(Ô(ˆEØŒHŒO×"Ò" 5Ñ)Ô)Ð)Øˆr   c                 ób  — |t          | j        j        ¦  «        k     sJ ‚| j        j        }| j        j        }t          j        || j        j        d¬¦  «        }| 	                    t          j
        ||¦  «        ¦  «        5 \  }}|5  | j                             ||¦  «        }|                     ||¦  «         ddd¦  «         n# 1 swxY w Y   |5  | j                             dd¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |                     |¦  «        S )zå
        Look up constant number *index* inside the environment body.
        A borrowed reference is returned.

        The returned LLVM value may have NULL value at runtime which indicates
        an error at runtime.
        T©ÚzfillNÚPyExc_RuntimeErrorz$`env.consts` is NULL in `read_const`)rc   rZ   rb   r1   r<   r[   r   Úalloca_onceÚpyobjÚif_elseÚis_not_nullÚlist_getitemrF   Úerr_set_stringÚload)r   rf   r<   rb   ÚretÚbr_not_nullÚbr_nullÚgetitems           r   Ú
read_constzEnvironmentManager.read_constƒ   sà  € ð •s˜4œ8œ?Ñ+Ô+Ò+Ð+Ð+Ð+à”*Ô$ˆØ”Ô%ˆÝÔ! '¨4¬:Ô+;À4ÐHÑHÔHˆØ�_Š_�WÔ0°¸&ÑAÔAÑBÔBð 	Ù&�˜gØð ,ð ,Øœ*×1Ò1°&¸%Ñ@Ô@�Ø—’˜g sÑ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ð ð ð ”
×)Ò)Ø(Ø:ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �|Š|˜CÑ Ô Ð sZ   ÂDÂ2CÂ9DÃC		Ã	DÃC		ÃDÃC:Ã.DÃ:C>	Ã>DÄC>	ÄDÄDÄDN)r)   r*   r+   r   rg   rw   r,   r   r   rV   rV   k   sA   € € € € € ðð ð ðð ð ð!ð !ð !ð !ð !r   rV   Ú_IteratorLoop)rQ   Údo_breakc                   óœ  — e Zd ZdZd„ Zd„ Z	 	 d³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ej        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&„ Z&d'„ Z'd(„ Z(d)„ Z)d*„ Z*d+„ Z+d,„ Z,d-„ Z-d.„ Z.d/„ Z/d0„ Z0d1„ Z1d2„ Z2dµd3„Z3dµd4„Z4dµd5„Z5dµd6„Z6dµd7„Z7dµd8„Z8dµd9„Z9dµd:„Z:dµd;„Z;dµd<„Z<dµd=„Z=dµd>„Z>dµd?„Z?dµd@„Z@dA„ ZAdB„ ZBdC„ ZCdD„ ZDdE„ ZEdF„ ZFdG„ ZGdH„ ZHdI„ ZIdJ„ ZJdK„ ZKdL„ ZLdM„ ZMdN„ ZNdO„ ZOdP„ ZPdQ„ ZQdR„ ZRdS„ ZSdT„ ZTdU„ ZUdV„ ZVdW„ ZWdX„ ZXdY„ ZYd´dZ„ZZd[„ Z[d\„ Z\d]„ Z]d^„ Z^d_„ Z_ej        d`„ ¦   «         Z`da„ Zadb„ Zbdc„ Zcdd„ Zdde„ Zedf„ Zfdg„ Zgdh„ Zhdi„ Zid·dk„Zjd¸dl„Zkdm„ Zldn„ Zmdo„ Zndp„ Zodq„ Zpdr„ Zqds„ Zrdt„ Zsdu„ Ztdv„ Zudw„ Zvdx„ Zwdy„ Zxdz„ Zyd{„ Zzd|„ 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‘„ Z�d’„ Z‘d“„ Z’ej        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´d£„Z¢d¤„ Z£d´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S )¹Ú	PythonAPIz^
    Code generation facilities to call into the CPython C API (and related
    helpers).
    c                 ó¤  — || _         || _        |j        j        j        | _        	 | j        j         n# t          $ r i | j        _        Y nw xY w| j                              t          j	        ¦  «        | _
        | j
                             ¦   «         | _        t          j        t          j        d¦  «        ¦  «        | _        t          j        t#          j        t"          j        ¦  «        dz  ¦  «        | _        | j        | _        t          j        t#          j        t"          j        ¦  «        dz  ¦  «        | _        | j        | _        t          j        ¦   «         | _        | j                              t          j        ¦  «        | _        t          j        t          j        d¦  «        ¦  «        | _        t          j        t>          j         dz  ¦  «        | _!        t          j"        t          j        d¦  «        t>          j#        ¦  «        | _$        | j        | _%        t>          j&        | _&        t>          j'        | _'        t>          j(        | _(        dS )zL
        Note: Maybe called multiple times when lowering a function
        é   N))r;   r<   Úbasic_blockÚfunctionÚmoduleÚ_PythonAPI__serializedÚAttributeErrorÚget_argument_typer   Úpyobjectrm   Ú
as_pointerÚpyobjptrr   ÚPointerTypeÚIntTypeÚvoidptrÚctypesÚsizeofÚc_longÚlongÚulongÚc_ulonglongÚlonglongÚ	ulonglongÚ
DoubleTypeÚdoubleÚget_value_typeÚintpÚ
py_ssize_tÚcstringr   Úpy_gil_state_sizeÚ	gil_stateÚ	ArrayTypeÚpy_buffer_sizeÚpy_buffer_tÚ	py_hash_tÚpy_unicode_1byte_kindÚpy_unicode_2byte_kindÚpy_unicode_4byte_kind)r   r;   r<   s      r   r   zPythonAPI.__init__¨   s§  € ð ˆŒØˆŒàÔ)Ô2Ô9ˆŒð	*ØŒKÔ$Ð$Ð$øÝð 	*ð 	*ð 	*Ø')ˆDŒKÔ$Ð$Ð$ð	*øøøð ”\×3Ò3µE´NÑCÔCˆŒ
Øœ
×-Ò-Ñ/Ô/ˆŒÝ”~¥b¤j°¡m¤mÑ4Ô4ˆŒÝ”J�vœ}­V¬]Ñ;Ô;¸aÑ?Ñ@Ô@ˆŒ	Ø”YˆŒ
Ýœ
¥6¤=µÔ1CÑ#DÔ#DÀqÑ#HÑIÔIˆŒØœˆŒÝ”m‘o”oˆŒØœ,×5Ò5µe´jÑAÔAˆŒÝ”~¥b¤j°¡m¤mÑ4Ô4ˆŒÝœ¥JÔ$@À1Ñ$DÑEÔEˆŒÝœ<­¬
°1©¬µzÔ7PÑQÔQˆÔØœˆŒÝ%/Ô%EˆÔ"Ý%/Ô%EˆÔ"Ý%/Ô%EˆÔ"Ð"Ð"s   ¦3 ³AÁAc                 ó&   — t          | |||¦  «        S r   )rV   )r   rZ   r[   r\   s       r   Úget_env_managerzPythonAPI.get_env_managerÈ   s   € Ý! $¨¨X°wÑ?Ô?Ð?r   FÚ c                 óÞ  — t          j        | j        |¦  «        }t          j        | j        |¦  «        5  |rn| j        j        j        j        }|j        | j        k    sJ ‚|  	                    dd|› �¦  «         | j         
                    |                      ¦   «         ¦  «         n/| j        j                             | j        t          d|› �f¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z;Emits LLVM code to ensure the `envptr` is not NULL
        rk   zmissing Environment: N)r   Úis_nullr<   Úif_unlikelyr   ÚtypeÚpointeeÚreturn_typerm   rq   rs   Úget_null_objectr;   Ú	call_convÚreturn_user_excÚRuntimeError)r   ÚenvptrÚreturn_pyobjectÚ	debug_msgr¥   Úfntys         r   Úemit_environment_sentryz!PythonAPI.emit_environment_sentryË   s=  € õ ”/ $¤,°Ñ7Ô7ˆÝÔ  ¤¨wÑ7Ô7ð 	ð 	Øð Ø”|Ô,Ô1Ô9�ØÔ'¨4¬:Ò5Ð5Ð5Ð5Ø×#Ò#Ø(Ð*MÀ)Ð*MÐ*Mñô ð ð ”× Ò  ×!5Ò!5Ñ!7Ô!7Ñ8Ô8Ð8Ð8à”Ô&×6Ò6Ø”L¥,Ø8¨YÐ8Ð8Ð:ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   µB C"Ã"C&Ã)C&c                 óÄ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «         d S )NÚ	Py_IncRef©Úname©r   ÚFunctionTypeÚVoidTyperm   Ú_get_functionr<   Úcall©r   rA   r±   Úfns       r   ÚincrefzPythonAPI.increfä   óU   € ÝŒ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò ¨;ÐÑ7Ô7ˆØŒ×Ò˜"˜s˜eÑ$Ô$Ð$Ð$Ð$r   c                 óÄ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «         d S )NÚ	Py_DecRefrµ   r·   r¼   s       r   ÚdecrefzPythonAPI.decrefé   r¿   r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚnumba_py_typerµ   ©r   r¸   rm   rº   r<   r»   r¼   s       r   Úget_typezPythonAPI.get_typeî   sK   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ót  — t          j        t          j        d¦  «        ¦  «        }t          j        |¦  «        }| j        | j        ||g}t          j        t          j        d¦  «        |d¬¦  «        }	|                      |	d¬¦  «        }
| j                             |
||||gt          |¦  «        z   ¦  «        S )Nr}   é    T©Úvar_argÚPyArg_ParseTupleAndKeywordsrµ   ©	r   r‡   rˆ   rm   r¸   rº   r<   r»   Úlist)r   ÚargsÚkwsÚfmtÚkeywordsÚobjsÚcharptrÚ
charptraryÚargtypesr±   r½   s              r   Úparse_tuple_and_keywordsz"PythonAPI.parse_tuple_and_keywords÷   s�   € Ý”.¥¤¨A¡¤Ñ/Ô/ˆÝ”^ GÑ,Ô,ˆ
Ø”J ¤
¨G°ZÐ@ˆÝŒ�rœz¨"™~œ~¨xÀÐFÑFÔFˆØ×Ò Ð+HÐÑIÔIˆØŒ|× Ò   d¨C°°hÐ%?Å$ÀtÁ*Ä*Ñ%LÑMÔMÐMr   c                 ó:  — t          j        t          j        d¦  «        ¦  «        }| j        |g}t          j        t          j        d¦  «        |d¬¦  «        }|                      |d¬¦  «        }| j                             |||gt          |¦  «        z   ¦  «        S )Nr}   rÈ   TrÉ   ÚPyArg_ParseTuplerµ   rÌ   )r   rÎ   rÐ   rÒ   rÓ   rÕ   r±   r½   s           r   Úparse_tuplezPythonAPI.parse_tupleÿ   sƒ   € Ý”.¥¤¨A¡¤Ñ/Ô/ˆØ”J Ð(ˆÝŒ�rœz¨"™~œ~¨xÀÐFÑFÔFˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   d¨C [µ4¸±:´:Ñ%=Ñ>Ô>Ð>r   c                 óR  — t          j        t          j        d¦  «        ¦  «        }| j        || j        | j        g}t          j        t          j        d¦  «        |d¬¦  «        }|                      |d¬¦  «        }	t          | j        t          |¦  «        ¦  «        }t          | j        t          |¦  «        ¦  «        }t          |t          ¦  «        r%| j                             | j        j        |¦  «        }| j                             |	||||gt!          |¦  «        z   ¦  «        S )Nr}   rÈ   TrÉ   ÚPyArg_UnpackTuplerµ   )r   r‡   rˆ   rm   r–   r¸   rº   r   ÚintrX   r^   r;   Úinsert_const_stringr<   r€   r»   rÍ   )
r   rÎ   r¶   Ún_minÚn_maxrÒ   rÓ   rÕ   r±   r½   s
             r   Úunpack_tuplezPythonAPI.unpack_tuple  sí   € Ý”.¥¤¨A¡¤Ñ/Ô/ˆØ”J ¨¬¸$¼/ÐJˆÝŒ�rœz¨"™~œ~¨xÀÐFÑFÔFˆØ×Ò Ð+>ÐÑ?Ô?ˆÝ˜œ­#¨e©*¬*Ñ5Ô5ˆÝ˜œ­#¨e©*¬*Ñ5Ô5ˆÝ�d�CÑ Ô ð 	OØ”<×3Ò3°D´LÔ4GÈÑNÔNˆDØŒ|× Ò   d¨D°%¸Ð%?Å$ÀtÁ*Ä*Ñ%LÑMÔMÐMr   c                 óš   — t          j        | j        d¦  «        }|                      |d¬¦  «        }| j                             |d¦  «        S )Nr,   ÚPyErr_Occurredrµ   rÅ   ©r   r±   r½   s      r   Úerr_occurredzPythonAPI.err_occurred  sF   € ÝŒ˜tœz¨2Ñ.Ô.ˆØ×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   RÑ(Ô(Ð(r   c                 ó²   — t          j        t          j        ¦   «         d¦  «        }|                      |d¬¦  «        }| j                             |d¦  «        S )Nr,   ÚPyErr_Clearrµ   )r   r¸   r¹   rº   r<   r»   rã   s      r   Ú	err_clearzPythonAPI.err_clear  sI   € ÝŒ�rœ{™}œ}¨bÑ1Ô1ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   RÑ(Ô(Ð(r   c                 óŒ  — t          j        t          j        ¦   «         | j        | j        g¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r|                      |¦  «        }t          |t          ¦  «        r | j	         
                    | j        |¦  «        }| j                             |||f¦  «        S )NÚPyErr_SetStringrµ   )r   r¸   r¹   rm   r—   rº   rX   r^   Úget_c_objectr;   rÝ   r€   r<   r»   )r   ÚexctypeÚmsgr±   r½   s        r   rq   zPythonAPI.err_set_string  s¨   € ÝŒ�rœ{™}œ}¨t¬z¸4¼<Ð.HÑIÔIˆØ×Ò Ð+<ÐÑ=Ô=ˆÝ�g�sÑ#Ô#ð 	1Ø×'Ò'¨Ñ0Ô0ˆGÝ�c�3ÑÔð 	EØ”,×2Ò2°4´;ÀÑDÔDˆCØŒ|× Ò   g¨s ^Ñ4Ô4Ð4r   c                 ó°  — t          j        t          j        ¦   «         | j        | j        gd¬¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r|                      |¦  «        }t          |t          ¦  «        r | j	         
                    | j        |¦  «        }| j                             |||ft          |¦  «        z   ¦  «        S )NTrÉ   ÚPyErr_Formatrµ   )r   r¸   r¹   rm   r—   rº   rX   r^   rê   r;   rÝ   r€   r<   r»   Útuple)r   rë   rì   Úformat_argsr±   r½   s         r   Ú
err_formatzPythonAPI.err_format(  sº   € ÝŒ�rœ{™}œ}¨t¬z¸4¼<Ð.HÐRVÐWÑWÔWˆØ×Ò ¨>ÐÑ:Ô:ˆÝ�g�sÑ#Ô#ð 	1Ø×'Ò'¨Ñ0Ô0ˆGÝ�c�3ÑÔð 	EØ”,×2Ò2°4´;ÀÑDÔDˆCØŒ|× Ò   g¨s ^µe¸KÑ6HÔ6HÑ%HÑIÔIÐIr   Nc                 óì   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }|€|                      ¦   «         }| j                             ||f¦  «        S )z˜
        Raise an arbitrary exception (type or value or (type, args)
        or None - if reraising).  A reference to the argument is consumed.
        Únumba_do_raiserµ   )r   r¸   r¹   rm   rº   Ú	make_noner<   r»   )r   Úexcr±   r½   s       r   Úraise_objectzPythonAPI.raise_object1  sf   € õ
 Œ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò Ð+;ÐÑ<Ô<ˆØˆ;Ø—.’.Ñ"Ô"ˆCØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó"  — t          j        t          j        ¦   «         | j        | j        g¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r|                      |¦  «        }| j         	                    |||f¦  «        S )NÚPyErr_SetObjectrµ   ©
r   r¸   r¹   rm   rº   rX   r^   rê   r<   r»   )r   rë   Úexcvalr±   r½   s        r   Úerr_set_objectzPythonAPI.err_set_object<  s}   € ÝŒ�rœ{™}œ}¨t¬z¸4¼:Ð.FÑGÔGˆØ×Ò Ð+<ÐÑ=Ô=ˆÝ�g�sÑ#Ô#ð 	1Ø×'Ò'¨Ñ0Ô0ˆGØŒ|× Ò   g¨vÐ%6Ñ7Ô7Ð7r   c                 ó  — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r|                      |¦  «        }| j         	                    ||f¦  «        S )NÚPyErr_SetNonerµ   rù   )r   rë   r±   r½   s       r   Úerr_set_nonezPythonAPI.err_set_noneC  st   € ÝŒ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò ¨?ÐÑ;Ô;ˆÝ�g�sÑ#Ô#ð 	1Ø×'Ò'¨Ñ0Ô0ˆGØŒ|× Ò   g ZÑ0Ô0Ð0r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚPyErr_WriteUnraisablerµ   r·   r¼   s       r   Úerr_write_unraisablezPythonAPI.err_write_unraisableJ  sP   € ÝŒ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò Ð+BÐÑCÔCˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 óÊ   — t          j        t          j        ¦   «         | j        gdz  ¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )Nr   ÚPyErr_Fetchrµ   )r   r¸   r¹   r†   rº   r<   r»   )r   ÚptyÚpvalÚptbr±   r½   s         r   Ú	err_fetchzPythonAPI.err_fetchO  sY   € ÝŒ�rœ{™}œ}¨t¬}¨oÀÑ.AÑBÔBˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   c¨4°Ð%5Ñ6Ô6Ð6r   c                 óÊ   — t          j        t          j        ¦   «         | j        gdz  ¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )Nr   ÚPyErr_Restorerµ   r·   )r   Útyr6   Útbr±   r½   s         r   Úerr_restorezPythonAPI.err_restoreT  sX   € ÝŒ�rœ{™}œ}¨t¬z¨l¸QÑ.>Ñ?Ô?ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   b¨#¨r ]Ñ3Ô3Ð3r   c              #   ó.  ‡ K  — ˆ fd„t          d¦  «        D ¦   «         \  }}}‰                      |||¦  «         dV — ‰ j                             |¦  «        }‰ j                             |¦  «        }‰ j                             |¦  «        }|rðt	          j        ‰ j        ‰                      ¦   «         ¦  «        }‰ j                             |d¬¦  «        5 \  }	}
|	5  ‰                      |¦  «         ‰                      |¦  «         ‰                      |¦  «         ddd¦  «         n# 1 swxY w Y   |
5  ‰  	                    |||¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS ‰  	                    |||¦  «         dS )a  
        Temporarily push the current error indicator while the code
        block is executed.  If *keep_new* is True and the code block
        raises a new error, the new error is kept, otherwise the old
        error indicator is restored at the end of the block.
        c                 óN   •— g | ]!}t          j        ‰j        ‰j        ¦  «        ‘Œ"S r,   )r   rl   r<   rm   )Ú.0Úir   s     €r   ú
<listcomp>z&PythonAPI.err_push.<locals>.<listcomp>a  s:   ø€ ð -ð -ð -Øõ "Ô-¨d¬l¸D¼JÑGÔGð -ð -ð -r   r   NF©Úlikely)
Úranger  r<   rr   r   ro   rä   rn   rÂ   r  )r   Úkeep_newr  r  r  r
  r6   r  Ú	new_errorÚif_errorÚif_oks   `          r   Úerr_pushzPythonAPI.err_pushY  sb  øè è € ð-ð -ð -ð -Ý#(¨¡8¤8ð-ñ -ô -‰ˆˆT�3à�Š�s˜D #Ñ&Ô&Ð&ØˆˆˆØŒ\×Ò˜sÑ#Ô#ˆØŒl×Ò Ñ%Ô%ˆØŒ\×Ò˜sÑ#Ô#ˆØð 	*ÝÔ+¨D¬L¸$×:KÒ:KÑ:MÔ:MÑNÔNˆIØ”×%Ò% i¸Ð%Ñ>Ô>ð 2ÑBSÀ8ÈUØð $ð $à—K’K ‘O”O�OØ—K’K Ñ$Ô$Ð$Ø—K’K ‘O”O�Oð	$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð
 ð 2ð 2à×$Ò$ R¨¨bÑ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2ð ×Ò˜R  bÑ)Ô)Ð)Ð)Ð)s[   ÃE1ÃA D(ÄE1Ä(D,	Ä,E1Ä/D,	Ä0E1Ä5EÅE1ÅE	ÅE1Å E	Å!E1Å1E5Å8E5c                 ó\   — | j                              | j        | j        j        |d¬¦  «        S )zÌ
        Get a Python object through its C-accessible *name*
        (e.g. "PyExc_ValueError").  The underlying variable must be
        a `PyObject *`, and the value of that pointer is returned.
        T)Ú	dllimport)r;   Úget_c_valuer<   rm   r¨   )r   r¶   s     r   rê   zPythonAPI.get_c_objectv  s3   € ð Œ|×'Ò'¨¬°d´jÔ6HÈ$Ø26ð (ñ 8ô 8ð 	8r   c                 ó|   — d|z  }| j                              | j        |¦  «        }|                      d|¦  «         d S )Nzglobal name '%s' is not definedÚPyExc_NameError©r;   rÝ   r€   rq   ©r   r¶   rì   Úcstrs       r   Úraise_missing_global_errorz$PythonAPI.raise_missing_global_error�  sB   € Ø/°$Ñ6ˆØŒ|×/Ò/°´¸SÑAÔAˆØ×ÒÐ-¨tÑ4Ô4Ð4Ð4Ð4r   c                 ó|   — d|z  }| j                              | j        |¦  «        }|                      d|¦  «         d S )Nzname '%s' is not definedr  r  r   s       r   Úraise_missing_name_errorz"PythonAPI.raise_missing_name_error†  sB   € Ø(¨4Ñ/ˆØŒ|×/Ò/°´¸SÑAÔAˆØ×ÒÐ-¨tÑ4Ô4Ð4Ð4Ð4r   c                 ó8  — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }|j                             d¦  «         | j                             | j	        |¦  «        }| j
                             ||f¦  «         d S )NÚPy_FatalErrorrµ   Únoreturn)r   r¸   r¹   r—   rº   Ú
attributesÚaddr;   rÝ   r€   r<   r»   )r   rì   r±   r½   r!  s        r   Úfatal_errorzPythonAPI.fatal_error‹  s„   € ÝŒ�rœ{™}œ}¨t¬|¨nÑ=Ô=ˆØ×Ò ¨?ÐÑ;Ô;ˆØ
Œ×Ò˜*Ñ%Ô%Ð%ØŒ|×/Ò/°´¸SÑAÔAˆØŒ×Ò˜"˜t˜gÑ&Ô&Ð&Ð&Ð&r   c                 óö   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             | j        |¦  «        }| j         	                    |||g¦  «        S )úFLookup name inside dict

        Returns a borrowed reference
        ÚPyDict_GetItemStringrµ   )
r   r¸   rm   r—   rº   r;   rÝ   r€   r<   r»   )r   Údicr¶   r±   r½   r!  s         r   Údict_getitem_stringzPythonAPI.dict_getitem_string–  sn   € õ
 Œ˜tœz¨D¬J¸¼Ð+EÑFÔFˆØ×Ò Ð+AÐÑBÔBˆØŒ|×/Ò/°´¸TÑBÔBˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 ó¶   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )r,  ÚPyDict_GetItemrµ   rÅ   )r   r.  r¶   r±   r½   s        r   Údict_getitemzPythonAPI.dict_getitem   sU   € õ
 Œ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   r   c           	      óŒ  — |dk    rLt          j        | j        d¦  «        }|                      |d¬¦  «        }| j                             |d¦  «        S t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |t          | j        t          |¦  «        ¦  «        g¦  «        S )Nr   r,   Ú
PyDict_Newrµ   Ú_PyDict_NewPresized)	r   r¸   rm   rº   r<   r»   r–   r   rÜ   )r   Úpresizer±   r½   s       r   Údict_newzPythonAPI.dict_new©  s¶   € Ø�aŠ<ˆ<Ý”? 4¤:¨rÑ2Ô2ˆDØ×#Ò# D¨|Ð#Ñ<Ô<ˆBØ”<×$Ò$ R¨Ñ,Ô,Ð,å”? 4¤:°´Ð/@ÑAÔAˆDØ×#Ò# DÐ/DÐ#ÑEÔEˆBØ”<×$Ò$ RÝ&.¨t¬ÅÀGÁÄÑ&MÔ&MÐ%NñPô Pð Pr   c                 óÞ   — t          j        t          j        d¦  «        | j        | j        | j        f¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )NrÈ   ÚPyDict_SetItemrµ   ©r   r¸   rˆ   rm   rº   r<   r»   )r   ÚdictobjÚnameobjÚvalobjr±   r½   s         r   Údict_setitemzPythonAPI.dict_setitem´  sg   € ÝŒ�rœz¨"™~œ~°´
¸D¼JØ04´
ð0<ñ =ô =ˆà×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   g¨w¸Ð%?Ñ@Ô@Ð@r   c                 ó  — t          j        t          j        d¦  «        | j        | j        | j        f¦  «        }|                      |d¬¦  «        }| j                             | j        |¦  «        }| j	         
                    ||||f¦  «        S )NrÈ   ÚPyDict_SetItemStringrµ   )r   r¸   rˆ   rm   r—   rº   r;   rÝ   r€   r<   r»   )r   r;  r¶   r=  r±   r½   r!  s          r   Údict_setitem_stringzPythonAPI.dict_setitem_stringº  s€   € ÝŒ�rœz¨"™~œ~°´
¸D¼LØ04´
ð0<ñ =ô =ˆà×Ò Ð+AÐÑBÔBˆØŒ|×/Ò/°´¸TÑBÔBˆØŒ|× Ò   g¨t°VÐ%<Ñ=Ô=Ð=r   c                 óÈ   — |                       ¦   «         }|                      |¦  «        5  |D ]\  }}|                      |||¦  «         Œ	 ddd¦  «         n# 1 swxY w Y   |S )zb
        Args
        -----
        keyvalues: iterable of (str, llvm.Value of PyObject*)
        N)r7  Úif_object_okrA  )r   Ú	keyvaluesr;  ÚkÚvs        r   Ú	dict_packzPythonAPI.dict_packÁ  s´   € ð —-’-‘/”/ˆØ×Ò˜wÑ'Ô'ð 	8ð 	8Ø!ð 8ð 8‘��1Ø×(Ò(¨°!°QÑ7Ô7Ð7Ð7ð8ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð ˆs   ª AÁAÁAc                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyFloat_FromDoublerµ   )r   r¸   rm   r“   rº   r<   r»   )r   Úfvalr±   r½   s       r   Úfloat_from_doublezPythonAPI.float_from_doubleÑ  sL   € ÝŒ˜tœz¨D¬K¨=Ñ9Ô9ˆØ×Ò Ð+?ÐÑ@Ô@ˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 óà   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }|                      d¦  «        }| j                             |||g¦  «        S )NÚPyNumber_AsSsize_trµ   ÚPyExc_OverflowError)r   r¸   r–   rm   rº   rê   r<   r»   )r   Únumobjr±   r½   Ú	exc_classs        r   Únumber_as_ssize_tzPythonAPI.number_as_ssize_tÖ  sh   € ÝŒ˜tœ°´¸T¼ZÐ0HÑIÔIˆØ×Ò Ð+?ÐÑ@Ô@ˆà×%Ò%Ð&;Ñ<Ô<ˆ	ØŒ|× Ò   f¨iÐ%8Ñ9Ô9Ð9r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyNumber_Longrµ   rÅ   ©r   rO  r±   r½   s       r   Únumber_longzPythonAPI.number_longÝ  sK   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyLong_AsUnsignedLongLongrµ   ©r   r¸   r‘   rm   rº   r<   r»   rT  s       r   Úlong_as_ulonglongzPythonAPI.long_as_ulonglongâ  sL   € ÝŒ˜tœ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+FÐÑGÔGˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyLong_AsLongLongrµ   rX  rT  s       r   Úlong_as_longlongzPythonAPI.long_as_longlongç  sL   € ÝŒ˜tœ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+>ÐÑ?Ô?ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )z–
        Convert the given Python integer to a void*.  This is recommended
        over number_as_ssize_t as it isn't affected by signedness.
        ÚPyLong_AsVoidPtrrµ   ©r   r¸   r‰   rm   rº   r<   r»   rT  s       r   Úlong_as_voidptrzPythonAPI.long_as_voidptrì  sN   € õ
 Œ˜tœ|¨d¬j¨\Ñ:Ô:ˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 óp  — t          j        | j        |g¦  «        }|                      ||¬¦  «        }t	          j        | j        | j        ¦  «        }|                      ||¬¦  «        }| j                             | j                             ||g¦  «        |¦  «         | j         	                    |¦  «        S )Nrµ   )
r   r¸   rm   rº   r   rl   r<   rF   r»   rr   )r   ÚivalÚ	func_nameÚnative_int_typeÚsignedr±   r½   Úresptrs           r   Ú_long_from_native_intzPythonAPI._long_from_native_intõ  s    € åŒ˜tœz¨OÐ+<Ñ=Ô=ˆØ×Ò ¨9ÐÑ5Ô5ˆÝÔ$ T¤\°4´:Ñ>Ô>ˆØ×Ò ¨9ÐÑ5Ô5ˆØŒ×Ò˜4œ<×,Ò,¨R°$°Ñ8Ô8¸&ÑAÔAÐAàŒ|× Ò  Ñ(Ô(Ð(r   c                 ó¬   — d}t          j        | j        | j        g¦  «        }|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyLong_FromLongrµ   ©r   r¸   rm   r�   rº   r<   r»   )r   rb  rc  r±   r½   s        r   Úlong_from_longzPythonAPI.long_from_longÿ  sP   € Ø%ˆ	ÝŒ˜tœz¨D¬I¨;Ñ7Ô7ˆØ×Ò ¨9ÐÑ5Ô5ˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 ó>   — |                       |d| j        d¬¦  «        S )NÚPyLong_FromUnsignedLongF©re  )rg  r�   ©r   rb  s     r   Úlong_from_ulongzPythonAPI.long_from_ulong  s.   € Ø×)Ò)¨$Ð0IØ*.¬)¸Eð *ñ Cô Cð 	Cr   c                 ó>   — |                       |d| j        d¬¦  «        S )NÚPyLong_FromSsize_tTrn  )rg  r–   ro  s     r   Úlong_from_ssize_tzPythonAPI.long_from_ssize_t	  s.   € Ø×)Ò)¨$Ð0DØ*.¬/À$ð *ñ Hô Hð 	Hr   c                 ó>   — |                       |d| j        d¬¦  «        S )NÚPyLong_FromLongLongTrn  )rg  r�   ro  s     r   Úlong_from_longlongzPythonAPI.long_from_longlong  s.   € Ø×)Ò)¨$Ð0EØ*.¬-Àð *ñ Fô Fð 	Fr   c                 ó>   — |                       |d| j        d¬¦  «        S )NÚPyLong_FromUnsignedLongLongFrn  )rg  r‘   ro  s     r   Úlong_from_ulonglongzPythonAPI.long_from_ulonglong  s.   € Ø×)Ò)¨$Ð0MØ*.¬.Àð *ñ Hô Hð 	Hr   c                 óJ  — |j         j        }|| j        j        k    r3|                      | j                             || j        ¦  «        ¦  «        S || j        j        k    r3|                      | j                             || j        ¦  «        ¦  «        S t          d|z  ¦  «        ‚)zH
        Return a Python integer from any native integer value.
        úinteger too big (%d bits))	r§   Úwidthr�   rk  r<   Úsextr�   rv  ÚOverflowError©r   rb  Úbitss      r   Úlong_from_signed_intzPythonAPI.long_from_signed_int  s�   € ð ŒyŒˆØ�4”9”?Ò"Ð"Ø×&Ò& t¤|×'8Ò'8¸¸t¼yÑ'IÔ'IÑJÔJÐJØ�T”]Ô(Ò(Ð(Ø×*Ò*¨4¬<×+<Ò+<¸TÀ4Ä=Ñ+QÔ+QÑRÔRÐRåÐ ;¸tÑ DÑEÔEÐEr   c                 óJ  — |j         j        }|| j        j        k    r3|                      | j                             || j        ¦  «        ¦  «        S || j        j        k    r3|                      | j                             || j        ¦  «        ¦  «        S t          d|z  ¦  «        ‚)zH
        Same as long_from_signed_int, but for unsigned values.
        r{  )	r§   r|  rŽ   rp  r<   Úzextr‘   ry  r~  r  s      r   Úlong_from_unsigned_intz PythonAPI.long_from_unsigned_int!  s‘   € ð ŒyŒˆØ�4”:Ô#Ò#Ð#Ø×'Ò'¨¬×(9Ò(9¸$ÀÄ
Ñ(KÔ(KÑLÔLÐLØ�T”^Ô)Ò)Ð)Ø×+Ò+¨D¬L×,=Ò,=¸dÀDÄNÑ,SÔ,SÑTÔTÐTåÐ ;¸tÑ DÑEÔEÐEr   c                 ó†   — t          j        | j        | j        | j        g¦  «        }|                      |d|z  ¬¦  «        }|S )NzPyNumber_%srµ   )r   r¸   rm   rº   )r   r¶   r±   r½   s       r   Ú_get_number_operatorzPythonAPI._get_number_operator-  s@   € ÝŒ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò ¨=¸4Ñ+?ÐÑ@Ô@ˆØˆ	r   c                 ót   — |rd|z   }|                       |¦  «        }| j                             |||g¦  «        S )NÚInPlace)r†  r<   r»   )r   r¶   ÚlhsÚrhsÚinplacer½   s         r   Ú_call_number_operatorzPythonAPI._call_number_operator2  sC   € Øð 	$Ø˜tÑ#ˆDØ×&Ò& tÑ,Ô,ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó4   — |                       d|||¬¦  «        S )NÚAdd©r‹  ©rŒ  ©r   r‰  rŠ  r‹  s       r   Ú
number_addzPythonAPI.number_add8  ó   € Ø×)Ò)¨%°°cÀ7Ð)ÑKÔKÐKr   c                 ó4   — |                       d|||¬¦  «        S )NÚSubtractr�  r�  r‘  s       r   Únumber_subtractzPythonAPI.number_subtract;  ó   € Ø×)Ò)¨*°c¸3ÈÐ)ÑPÔPÐPr   c                 ó4   — |                       d|||¬¦  «        S )NÚMultiplyr�  r�  r‘  s       r   Únumber_multiplyzPythonAPI.number_multiply>  r—  r   c                 ó4   — |                       d|||¬¦  «        S )NÚ
TrueDivider�  r�  r‘  s       r   Únumber_truedividezPythonAPI.number_truedivideA  s   € Ø×)Ò)¨,¸¸SÈ'Ð)ÑRÔRÐRr   c                 ó4   — |                       d|||¬¦  «        S )NÚFloorDivider�  r�  r‘  s       r   Únumber_floordividezPythonAPI.number_floordivideD  s   € Ø×)Ò)¨-¸¸cÈ7Ð)ÑSÔSÐSr   c                 ó4   — |                       d|||¬¦  «        S )NÚ	Remainderr�  r�  r‘  s       r   Únumber_remainderzPythonAPI.number_remainderG  s   € Ø×)Ò)¨+°s¸CÈÐ)ÑQÔQÐQr   c                 ó4   — |                       d|||¬¦  «        S )NÚMatrixMultiplyr�  r�  r‘  s       r   Únumber_matrix_multiplyz PythonAPI.number_matrix_multiplyJ  s    € Ø×)Ò)Ð*:¸CÀÈgÐ)ÑVÔVÐVr   c                 ó4   — |                       d|||¬¦  «        S )NÚLshiftr�  r�  r‘  s       r   Únumber_lshiftzPythonAPI.number_lshiftM  ó   € Ø×)Ò)¨(°C¸ÀgÐ)ÑNÔNÐNr   c                 ó4   — |                       d|||¬¦  «        S )NÚRshiftr�  r�  r‘  s       r   Únumber_rshiftzPythonAPI.number_rshiftP  rª  r   c                 ó4   — |                       d|||¬¦  «        S )NÚAndr�  r�  r‘  s       r   Ú
number_andzPythonAPI.number_andS  r“  r   c                 ó4   — |                       d|||¬¦  «        S )NÚOrr�  r�  r‘  s       r   Ú	number_orzPythonAPI.number_orV  s   € Ø×)Ò)¨$°°SÀ'Ð)ÑJÔJÐJr   c                 ó4   — |                       d|||¬¦  «        S )NÚXorr�  r�  r‘  s       r   Ú
number_xorzPythonAPI.number_xorY  r“  r   c                 óà   — t          j        | j        | j        gdz  ¦  «        }|rdnd}|                      ||¦  «        }| j                             ||||                      ¦   «         g¦  «        S )Nr   ÚPyNumber_InPlacePowerÚPyNumber_Power)r   r¸   rm   rº   r<   r»   Úborrow_none)r   r‰  rŠ  r‹  r±   Úfnamer½   s          r   Únumber_powerzPythonAPI.number_power\  so   € ÝŒ˜tœz¨D¬J¨<¸!Ñ+;Ñ<Ô<ˆØ+2ÐHÐ'Ð'Ð8HˆØ×Ò  eÑ,Ô,ˆØŒ|× Ò   c¨3°×0@Ò0@Ñ0BÔ0BÐ%CÑDÔDÐDr   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚPyNumber_Negativerµ   rÅ   r¼   s       r   Únumber_negativezPythonAPI.number_negativeb  óL   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò Ð+>ÐÑ?Ô?ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚPyNumber_Positiverµ   rÅ   r¼   s       r   Únumber_positivezPythonAPI.number_positiveg  rÀ  r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyNumber_Floatrµ   rÅ   )r   r6   r±   r½   s       r   Únumber_floatzPythonAPI.number_floatl  sL   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚPyNumber_Invertrµ   rÅ   r¼   s       r   Únumber_invertzPythonAPI.number_invertq  sL   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò Ð+<ÐÑ=Ô=ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyFloat_AsDoublerµ   )r   r¸   r“   rm   rº   r<   r»   )r   Úfobjr±   r½   s       r   Úfloat_as_doublezPythonAPI.float_as_doublev  sL   € ÝŒ˜tœ{¨T¬Z¨LÑ9Ô9ˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 ól   — | j                              || j        ¦  «        }|                      |¦  «        S )z8
        Get a Python bool from a LLVM boolean.
        )r<   rƒ  r�   Úbool_from_long)r   ÚbvalÚlongvals      r   Úbool_from_boolzPythonAPI.bool_from_bool{  s1   € ð ”,×#Ò# D¨$¬)Ñ4Ô4ˆØ×"Ò" 7Ñ+Ô+Ð+r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyBool_FromLongrµ   rj  )r   rb  r±   r½   s       r   rÏ  zPythonAPI.bool_from_long‚  sL   € ÝŒ˜tœz¨D¬I¨;Ñ7Ô7ˆØ×Ò Ð+<ÐÑ=Ô=ˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 óæ   — t          j        | j        t          j        ¦   «         t          j        ¦   «         g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NÚPyComplex_FromDoublesrµ   )r   r¸   rm   r’   rº   r<   r»   )r   ÚrealvalÚimagvalr±   r½   s        r   Úcomplex_from_doubleszPythonAPI.complex_from_doubles‡  s\   € ÝŒ˜tœz­B¬M©O¬O½R¼]¹_¼_Ð+MÑNÔNˆØ×Ò Ð+BÐÑCÔCˆØŒ|× Ò   g¨wÐ%7Ñ8Ô8Ð8r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyComplex_RealAsDoublerµ   ©r   r¸   r’   rm   rº   r<   r»   ©r   Úcobjr±   r½   s       r   Úcomplex_real_as_doublez PythonAPI.complex_real_as_doubleŒ  óP   € ÝŒ�rœ}™œ°´°Ñ=Ô=ˆØ×Ò Ð+CÐÑDÔDˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyComplex_ImagAsDoublerµ   rÜ  rÝ  s       r   Úcomplex_imag_as_doublez PythonAPI.complex_imag_as_double‘  rà  r   c                 ó–  — t          j        | j        | j        ¦  «        }t          j        | j        | j        ¦  «        }t          j        | j        | j        ¦  «        }t	          j        t	          j        d¦  «        | j        g| j                             ¦   «         gdz  z   ¦  «        }|  	                    |d¬¦  «        }| j         
                    |||||f¦  «        }| j                             |¦  «        }| j                             |¦  «        }	| j                             |¦  «        }
t          j        | j        |¦  «        ||	|
fS )z»
        Read the members of a slice of integers.

        Returns a (ok, start, stop, step) tuple where ok is a boolean and
        the following members are pointer-sized ints.
        rÈ   r   Únumba_unpack_slicerµ   )r   rl   r<   r–   r   r¸   rˆ   rm   r…   rº   r»   rr   r¥   )r   rA   ÚpstartÚpstopÚpstepr±   r½   ÚresÚstartÚstopÚsteps              r   Úslice_as_intszPythonAPI.slice_as_ints™  s  € õ Ô$ T¤\°4´?ÑCÔCˆÝÔ# D¤L°$´/ÑBÔBˆÝÔ# D¤L°$´/ÑBÔBˆÝŒ�rœz¨"™~œ~Ø $¤
˜|¨t¬×/IÒ/IÑ/KÔ/KÐ.LÈqÑ.PÑPñRô Rˆà×Ò Ð+?ÐÑ@Ô@ˆØŒl×Ò  S¨&°%¸Ð$?Ñ@Ô@ˆØ”×!Ò! &Ñ)Ô)ˆØŒ|× Ò  Ñ'Ô'ˆØŒ|× Ò  Ñ'Ô'ˆÝŒ˜tœ|¨SÑ1Ô1°5¸$ÀÐDÐDr   c                 óÄ   — t          j        | j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )NÚPySequence_GetSlicerµ   ©r   r¸   rm   r–   rº   r<   r»   )r   rA   rê  rë  r±   r½   s         r   Úsequence_getslicezPythonAPI.sequence_getslice°  sa   € ÝŒ˜tœz¨D¬J¸¼Ø,0¬Oð,=ñ >ô >ˆà×Ò Ð+@ÐÑAÔAˆØŒ|× Ò   c¨5°$Ð%7Ñ8Ô8Ð8r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPySequence_Tuplerµ   rÅ   r¼   s       r   Úsequence_tuplezPythonAPI.sequence_tuple¶  óL   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ó¶   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NÚPySequence_Concatrµ   rÅ   )r   Úobj1Úobj2r±   r½   s        r   Úsequence_concatzPythonAPI.sequence_concat»  sS   € ÝŒ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+>ÐÑ?Ô?ˆØŒ|× Ò   d¨D \Ñ2Ô2Ð2r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚ
PyList_Newrµ   rð  )r   Úszvalr±   r½   s       r   Úlist_newzPythonAPI.list_newÀ  sL   € ÝŒ˜tœz¨D¬OÐ+<Ñ=Ô=ˆØ×Ò ¨<ÐÑ8Ô8ˆØŒ|× Ò   e WÑ-Ô-Ð-r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyList_Sizerµ   ©r   r¸   r–   rm   rº   r<   r»   )r   Úlstr±   r½   s       r   Ú	list_sizezPythonAPI.list_sizeÅ  sK   € ÝŒ˜tœ°´°Ñ=Ô=ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÐ   — t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÈ   ÚPyList_Appendrµ   r:  )r   r  r6   r±   r½   s        r   Úlist_appendzPythonAPI.list_appendÊ  sX   € ÝŒ�rœz¨"™~œ~°´
¸D¼JÐ/GÑHÔHˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óÞ   — t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||||g¦  «        S )z6
        Warning: Steals reference to ``val``
        rÈ   ÚPyList_SetItemrµ   ©r   r¸   rˆ   rm   r–   rº   r<   r»   )r   r  Úidxr6   r±   r½   s         r   Úlist_setitemzPythonAPI.list_setitemÏ  sh   € õ Œ�rœz¨"™~œ~°´
¸D¼OØ04´
ð0<ñ =ô =ˆà×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   c¨3° _Ñ5Ô5Ð5r   c                 ó*  — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r%| j                             t          j
        |¦  «        }| j                             |||g¦  «        S )z/
        Returns a borrowed reference.
        ÚPyList_GetItemrµ   )r   r¸   rm   r–   rº   rX   rÜ   r;   Úget_constantr   r•   r<   r»   )r   r  r
  r±   r½   s        r   rp   zPythonAPI.list_getitemØ  s€   € õ Œ˜tœz¨D¬J¸¼Ð+HÑIÔIˆØ×Ò Ð+;ÐÑ<Ô<ˆÝ�c�3ÑÔð 	=Ø”,×+Ò+­E¬J¸Ñ<Ô<ˆCØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó  — |€|                       ¦   «         }t          j        t          j        d¦  «        | j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||||f¦  «        S )NrÈ   ÚPyList_SetSlicerµ   )	rª   r   r¸   rˆ   rm   r–   rº   r<   r»   )r   r  rê  rë  rA   r±   r½   s          r   Úlist_setslicezPythonAPI.list_setsliceâ  s†   € Øˆ;Ø×&Ò&Ñ(Ô(ˆCÝŒ�rœz¨"™~œ~°´
¸D¼OØ04´ÀÄð0Mñ Nô Nˆà×Ò Ð+<ÐÑ=Ô=ˆØŒ|× Ò   c¨5°$¸Ð%<Ñ=Ô=Ð=r   c                 ó   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             t          j        |¦  «        }| j	         
                    |||g¦  «        S )z"
        Borrow reference
        ÚPyTuple_GetItemrµ   )r   r¸   rm   r–   rº   r;   r  r   r•   r<   r»   )r   Útupr
  r±   r½   s        r   Útuple_getitemzPythonAPI.tuple_getitemï  sn   € õ Œ˜tœz¨D¬J¸¼Ð+HÑIÔIˆØ×Ò Ð+<ÐÑ=Ô=ˆØŒl×'Ò'­¬
°CÑ8Ô8ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó>  — t          j        | j        | j        gd¬¦  «        }|                      |d¬¦  «        }| j                             t          j        t          |¦  «        ¦  «        }|g}| 
                    |¦  «         | j                             ||¦  «        S )NTrÉ   ÚPyTuple_Packrµ   )r   r¸   rm   r–   rº   r;   r  r   r•   rc   Úextendr<   r»   )r   Úitemsr±   r½   ÚnrÎ   s         r   Ú
tuple_packzPythonAPI.tuple_packø  s‡   € ÝŒ˜tœz¨D¬OÐ+<ÀdÐKÑKÔKˆØ×Ò ¨>ÐÑ:Ô:ˆØŒL×%Ò%¥e¤jµ#°e±*´*Ñ=Ô=ˆØˆsˆØ�Š�EÑÔÐØŒ|× Ò   TÑ*Ô*Ð*r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyTuple_Sizerµ   r  )r   r  r±   r½   s       r   Ú
tuple_sizezPythonAPI.tuple_size   sK   € ÝŒ˜tœ°´°Ñ=Ô=ˆØ×Ò ¨>ÐÑ:Ô:ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÎ   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||                      |¦  «        g¦  «        S )NÚPyTuple_Newrµ   rð  )r   Úcountr±   r½   s       r   Ú	tuple_newzPythonAPI.tuple_new  sY   € ÝŒ˜tœz¨D¬OÐ+<Ñ=Ô=ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   d§o¢o°eÑ&<Ô&<Ð%=Ñ>Ô>Ð>r   c                 ó  — t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }|                      |¦  «        }| j                             ||||g¦  «         dS )z/
        Steals a reference to `item`.
        rÈ   ÚPyTuple_SetItemrµ   Nr	  )r   Ú	tuple_valrf   Úitemr±   Ú
setitem_fns         r   Útuple_setitemzPythonAPI.tuple_setitem
  s€   € õ Œ�rœz¨"™~œ~Ø $¤
¨D¬O¸T¼ZÐHñJô Jˆà×'Ò'¨Ð3DÐ'ÑEÔEˆ
Ø—’ Ñ&Ô&ˆØŒ×Ò˜* y°%¸Ð&>Ñ?Ô?Ð?Ð?Ð?r   c                 óÔ   — |€|                       ¦   «         }t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚ	PySet_Newrµ   )rª   r   r¸   rm   rº   r<   r»   )r   Úiterabler±   r½   s       r   Úset_newzPythonAPI.set_new  sb   € ØÐØ×+Ò+Ñ-Ô-ˆHÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨;ÐÑ7Ô7ˆØŒ|× Ò   h ZÑ0Ô0Ð0r   c                 óÐ   — t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÈ   Ú	PySet_Addrµ   r:  )r   ÚsetrQ   r±   r½   s        r   Úset_addzPythonAPI.set_add  sX   € ÝŒ�rœz¨"™~œ~°´
¸D¼JÐ/GÑHÔHˆØ×Ò ¨;ÐÑ7Ô7ˆØŒ|× Ò   c¨5 \Ñ2Ô2Ð2r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NrÈ   ÚPySet_Clearrµ   r:  ©r   r/  r±   r½   s       r   Ú	set_clearzPythonAPI.set_clear$  sQ   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚ
PySet_Sizerµ   r  r3  s       r   Úset_sizezPythonAPI.set_size)  sK   € ÝŒ˜tœ°´°Ñ=Ô=ˆØ×Ò ¨<ÐÑ8Ô8ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÐ   — t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÈ   Ú_PySet_Updaterµ   r:  )r   r/  r+  r±   r½   s        r   Ú
set_updatezPythonAPI.set_update.  sX   € ÝŒ�rœz¨"™~œ~°´
¸D¼JÐ/GÑHÔHˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   c¨8 _Ñ5Ô5Ð5r   c                 óX  — t          j        t          j        d¦  «        | j        | j                             ¦   «         | j                             ¦   «         | j                             ¦   «         g¦  «        }|                      |d¬¦  «        }| j         	                    |||||f¦  «        S )NrÈ   Ú_PySet_NextEntryrµ   )
r   r¸   rˆ   rm   r–   r…   r�   rº   r<   r»   )r   r/  ÚposptrÚkeyptrÚhashptrr±   r½   s          r   Úset_next_entryzPythonAPI.set_next_entry3  s—   € ÝŒ�rœz¨"™~œ~Ø $¤
¨D¬O×,FÒ,FÑ,HÔ,HØ $¤
× 5Ò 5Ñ 7Ô 7¸¼×9RÒ9RÑ9TÔ9Tð VñWô Wˆð ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨6°6¸7Ð%CÑDÔDÐDr   c              #   óD  ‡	‡
K  — | j         Š
t          j        ‰
| j        d¬¦  «        }t          j        ‰
| j        d¬¦  «        }t          j        ‰
t          | j        d¦  «        d¬¦  «        }‰
                     d¦  «        }‰
                     d¦  «        Š	‰
 	                    |¦  «         ˆ	ˆ
fd„}‰
 
                    |¦  «        5  |                      ||||¦  «        }t          j        ‰
|¦  «        }‰
                     |d	¬
¦  «        5  ‰
 	                    ‰	¦  «         d d d ¦  «         n# 1 swxY w Y   t          ‰
                     |¦  «        |¦  «        V — ‰
 	                    |¦  «         d d d ¦  «         n# 1 swxY w Y   ‰
                     ‰	¦  «         d S )Nr?  rµ   r>  r   r=  Úbb_bodyÚbb_endc                  ó2   •— ‰                      ‰ ¦  «         d S r   )Úbranch)rC  r<   s   €€r   ry   z'PythonAPI.set_iterate.<locals>.do_breakH  s   ø€ Ø�NŠN˜6Ñ"Ô"Ð"Ð"Ð"r   Fr  )r<   r   rl   r�   rm   Úalloca_once_valuer   r–   Úappend_basic_blockrE  Ú
goto_blockr@  r¥   Úif_thenrx   rr   Úposition_at_end)r   r/  r?  r>  r=  rB  ry   ÚrÚfinishedrC  r<   s            @@r   Úset_iteratezPythonAPI.set_iterate:  s&  øøè è € à”,ˆåÔ% g¨t¬~ÀIÐNÑNÔNˆÝÔ$ W¨d¬j¸xÐHÑHÔHˆÝÔ*¨7Ý+3°D´OÀQÑ+GÔ+GØ08ð:ñ :ô :ˆð ×,Ò,¨YÑ7Ô7ˆØ×+Ò+¨HÑ5Ô5ˆà�Š�wÑÔÐð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð ×Ò Ñ(Ô(ð 	$ð 	$Ø×#Ò# C¨°¸ÑAÔAˆAÝ” w°Ñ2Ô2ˆHØ—’ °%�Ñ8Ô8ð 'ð 'Ø—’˜vÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'å §¢¨VÑ 4Ô 4°hÑ?Ô?Ð?Ð?Ð?Ø�NŠN˜7Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	×Ò Ñ'Ô'Ð'Ð'Ð's7   ÃAF ÄD/Ä#F Ä/D3	Ä3F Ä6D3	Ä7=F Æ FÆFc                 ó(  — t          j        | j        ¦  «        }t          j        t          j        ¦   «         |g¦  «        }|                      |d¦  «        }t          j        | j        | j        ¦  «        }| j         	                    ||g¦  «         |S )zk
        Ensure the GIL is acquired.
        The returned value must be consumed by gil_release().
        Únumba_gil_ensure)
r   r‡   r™   r¸   r¹   rº   r   rl   r<   r»   )r   Úgilptrtyr±   r½   Úgilptrs        r   Ú
gil_ensurezPythonAPI.gil_ensureY  sy   € õ
 ”> $¤.Ñ1Ô1ˆÝŒ�rœ{™}œ}¨x¨jÑ9Ô9ˆØ×Ò Ð&8Ñ9Ô9ˆÝÔ$ T¤\°4´>ÑBÔBˆØŒ×Ò˜"˜v˜hÑ'Ô'Ð'Øˆr   c                 óæ   — t          j        | j        ¦  «        }t          j        t          j        ¦   «         |g¦  «        }|                      |d¦  «        }| j                             ||g¦  «        S )zg
        Release the acquired GIL by gil_ensure().
        Must be paired with a gil_ensure().
        Únumba_gil_release)r   r‡   r™   r¸   r¹   rº   r<   r»   )r   ÚgilrP  r±   r½   s        r   Úgil_releasezPythonAPI.gil_releasee  s^   € õ
 ”> $¤.Ñ1Ô1ˆÝŒ�rœ{™}œ}¨x¨jÑ9Ô9ˆØ×Ò Ð&9Ñ:Ô:ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óš   — t          j        | j        g ¦  «        }|                      |d¬¦  «        }| j                             |g ¦  «        S )zj
        Release the GIL and return the former thread state
        (an opaque non-NULL pointer).
        ÚPyEval_SaveThreadrµ   )r   r¸   r‰   rº   r<   r»   rã   s      r   Úsave_threadzPythonAPI.save_threado  sH   € õ
 Œ˜tœ|¨RÑ0Ô0ˆØ×Ò Ð+>ÐÑ?Ô?ˆØŒ|× Ò   RÑ(Ô(Ð(r   c                 óÄ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «         dS )zH
        Restore the given thread state by reacquiring the GIL.
        ÚPyEval_RestoreThreadrµ   N)r   r¸   r¹   r‰   rº   r<   r»   )r   Úthread_stater±   r½   s       r   Úrestore_threadzPythonAPI.restore_threadx  sX   € õ Œ�rœ{™}œ}¨t¬|¨nÑ=Ô=ˆØ×Ò Ð+AÐÑBÔBˆØŒ×Ò˜"˜|˜nÑ-Ô-Ð-Ð-Ð-r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚnumba_get_pyobject_private_datarµ   r_  r¼   s       r   Úobject_get_private_dataz!PythonAPI.object_get_private_data…  sL   € ÝŒ˜tœ|¨d¬j¨\Ñ:Ô:ˆØ×Ò Ð+LÐÑMÔMˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 óÎ   — t          j        t          j        ¦   «         | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||f¦  «        S )NÚnumba_set_pyobject_private_datarµ   )r   r¸   r¹   rm   r‰   rº   r<   r»   )r   rA   Úptrr±   r½   s        r   Úobject_set_private_dataz!PythonAPI.object_set_private_dataŠ  sW   € ÝŒ�rœ{™}œ}¨t¬z¸4¼<Ð.HÑIÔIˆØ×Ò Ð+LÐÑMÔMˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚ!numba_reset_pyobject_private_datarµ   r·   r¼   s       r   Úobject_reset_private_dataz#PythonAPI.object_reset_private_data�  sP   € ÝŒ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò Ð+NÐÑOÔOˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyImport_ImportModulerµ   ©r   r¸   rm   r—   rº   r<   r»   )r   Úmodnamer±   r½   s       r   Úimport_modulezPythonAPI.import_module™  sL   € ÝŒ˜tœz¨D¬L¨>Ñ:Ô:ˆØ×Ò Ð+BÐÑCÔCˆØŒ|× Ò   g YÑ/Ô/Ð/r   c                 ó>  — t          j        | j        | j        gd¬¦  «        }|                      |d¬¦  «        }|gt	          |¦  «        z   }|                     | j                             t          j	        ¦  «        ¦  «         | j
                             ||¦  «        S )NTrÉ   ÚPyObject_CallFunctionObjArgsrµ   )r   r¸   rm   rº   rÍ   rd   r;   Úget_constant_nullr   r„   r<   r»   )r   ÚcalleeÚobjargsr±   r½   rÎ   s         r   Úcall_function_objargszPythonAPI.call_function_objargsž  s…   € ÝŒ˜tœz¨D¬J¨<ÀÐFÑFÔFˆØ×Ò Ð+IÐÑJÔJˆØˆx�$˜w™-œ-Ñ'ˆØ�Š�D”L×2Ò2µ5´>ÑBÔBÑCÔCÐCØŒ|× Ò   TÑ*Ô*Ð*r   r,   c                 ó  — | j                              | j        |¦  «        }t          j        | j        | j        | j        | j        gd¬¦  «        }|                      |d¬¦  «        }dt          |¦  «        z  }| j                              | j        |¦  «        }|||g}	|r|	 	                    |¦  «         |	 
                    | j                              t          j        ¦  «        ¦  «         | j                             ||	¦  «        S )NTrÉ   ÚPyObject_CallMethodrµ   ÚO)r;   rÝ   r€   r   r¸   rm   r—   rº   rc   r  rd   ro  r   r„   r<   r»   )
r   rp  Úmethodrq  Úcnamer±   r½   rÐ   ÚcfmtrÎ   s
             r   Úcall_methodzPythonAPI.call_method¥  së   € Ø”×0Ò0°´¸fÑEÔEˆÝŒ˜tœz¨D¬J¸¼ÀdÄlÐ+SØ%)ð+ñ +ô +ˆà×Ò Ð+@ÐÑAÔAˆØ•C˜‘L”LÑ ˆØŒ|×/Ò/°´¸SÑAÔAˆØ˜˜tÐ$ˆØð 	!Ø�KŠK˜Ñ Ô Ð Ø�Š�D”L×2Ò2µ5´>ÑBÔBÑCÔCÐCØŒ|× Ò   TÑ*Ô*Ð*r   c                 óF  — |d u x}r|                       d¦  «        }|€|                      ¦   «         }t          j        | j        | j        gdz  ¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        }|r|                      |¦  «         |S )Nr   r   ÚPyObject_Callrµ   )	r"  rª   r   r¸   rm   rº   r<   r»   rÂ   )r   rp  rÎ   rÏ   Úargs_was_noner±   r½   Úresults           r   r»   zPythonAPI.call²  s«   € Ø  D˜LÐ(ˆ=ð 	%Ø—>’> !Ñ$Ô$ˆDØˆ;Ø×&Ò&Ñ(Ô(ˆCÝŒ˜tœz¨D¬J¨<¸!Ñ+;Ñ<Ô<ˆØ×Ò ¨?ÐÑ;Ô;ˆØ”×"Ò" 2¨°°cÐ':Ñ;Ô;ˆØð 	Ø�KŠK˜ÑÔÐØˆr   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )zJEmit a call to ``PyObject_Type(obj)`` to get the type of ``obj``.
        ÚPyObject_Typerµ   rÅ   r¼   s       r   Úobject_typezPythonAPI.object_type¾  sM   € õ Œ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NrÈ   ÚPyObject_IsTruerµ   r:  r¼   s       r   Úobject_istruezPythonAPI.object_istrueÅ  sR   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+<ÐÑ=Ô=ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NrÈ   ÚPyObject_Notrµ   r:  r¼   s       r   Ú
object_notzPythonAPI.object_notÊ  sQ   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò ¨>ÐÑ:Ô:ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÆ  — g d¢}||v r¨|                      |¦  «        }t          j        | j        | j        | j        t          j        d¦  «        g¦  «        }|                      |d¬¦  «        }| j                             t          j	        |¦  «        }| j
                             ||||f¦  «        S |dk    r1| j
                             d||¦  «        }	|                      |	¦  «        S |dk    r1| j
                             d||¦  «        }	|                      |	¦  «        S |d	v �rœt          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d
¬¦  «        }| j
                             |||f¦  «        }
| j                             t          j	        d¦  «        }| j
                             d|
|¦  «        }t          j        | j
        t!          | j        d¦  «        ¦  «        }t          j        | j
        |¦  «        5  |dk    r| j
                             |
¦  «        }
| j
                             |
t          j        d¦  «        ¦  «        }| j
                             |                      |¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   | j
                             |¦  «        S t-          d                     |¬¦  «        ¦  «        ‚)zd
        Refer to Python source Include/object.h for macros definition
        of the opid.
        )ú<z<=ú==ú!=ú>z>=rÈ   ÚPyObject_RichComparerµ   Úisr‰  zis notrŠ  )Úinúnot inÚPySequence_ContainséÿÿÿÿNr�  é   zUnknown operator {op!r})Úop)rf   r   r¸   rm   rˆ   rº   r;   r  r   Úint32r<   r»   Úicmp_unsignedrÒ  r   rF  r   Ú	if_likelyÚnot_ÚtruncrF   rr   ÚNotImplementedErrorÚformat)r   r‰  rŠ  ÚopstrÚopsÚopidr±   r½   ÚlopidÚbitflagÚstatusÚnegoneÚis_goodÚoutptrÚ	truncateds                  r   Úobject_richcomparezPythonAPI.object_richcompareÏ  sè  € ð
 1Ð0Ð0ˆØ�Cˆ<ˆ<Ø—9’9˜UÑ#Ô#ˆDÝ”? 4¤:°´
¸D¼JÍÌ
ÐSUÉÌÐ/WÑXÔXˆDØ×#Ò# DÐ/EÐ#ÑFÔFˆBØ”L×-Ò-­e¬k¸4Ñ@Ô@ˆEØ”<×$Ò$ R¨#¨s°EÐ):Ñ;Ô;Ð;Ø�dŠ]ˆ]Ø”l×0Ò0°°s¸CÑ@Ô@ˆGØ×&Ò& wÑ/Ô/Ð/Ø�hÒÐØ”l×0Ò0°°s¸CÑ@Ô@ˆGØ×&Ò& wÑ/Ô/Ð/ØÐ&Ð&Ñ&Ý”?¥2¤:¨b¡>¤>°D´JÀÄ
Ð3KÑLÔLˆDØ×#Ò# DÐ/DÐ#ÑEÔEˆBØ”\×&Ò& r¨C°¨:Ñ6Ô6ˆFØ”\×.Ò.­u¬{¸BÑ?Ô?ˆFØ”l×0Ò0°°v¸vÑFÔFˆGåÔ.¨t¬|Ý/7¸¼
ÀDÑ/IÔ/IñKô KˆFõ Ô" 4¤<°Ñ9Ô9ð +ð +Ø˜HÒ$Ð$Ø!œ\×.Ò.¨vÑ6Ô6�Fà œL×.Ò.¨vµr´zÀ!±}´}ÑEÔE�	Ø”×"Ò" 4×#6Ò#6°yÑ#AÔ#AØ#)ñ+ô +ð +ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð ”<×$Ò$ VÑ,Ô,Ð,å%Ð&?×&FÒ&FØð 'Gñ 'ô 'ñ ô ð s   ÈA<JÊJÊ"Jc                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyIter_Nextrµ   rÅ   )r   Úiterobjr±   r½   s       r   Ú	iter_nextzPythonAPI.iter_nextø  sK   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   g YÑ/Ô/Ð/r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyObject_GetIterrµ   rÅ   r¼   s       r   Úobject_getiterzPythonAPI.object_getiterý  rõ  r   c                 óö   — | j                              | j        |¦  «        }t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j         	                    |||g¦  «        S )NÚPyObject_GetAttrStringrµ   )
r;   rÝ   r€   r   r¸   rm   r—   rº   r<   r»   )r   rA   Úattrr!  r±   r½   s         r   Úobject_getattr_stringzPythonAPI.object_getattr_string  sl   € ØŒ|×/Ò/°´¸TÑBÔBˆÝŒ˜tœz¨D¬J¸¼Ð+EÑFÔFˆØ×Ò Ð+CÐÑDÔDˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 ó¶   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NÚPyObject_GetAttrrµ   rÅ   )r   rA   r¯  r±   r½   s        r   Úobject_getattrzPythonAPI.object_getattr  sS   € ÝŒ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 ó  — | j                              | j        |¦  «        }t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j	         
                    ||||g¦  «        S )NrÈ   ÚPyObject_SetAttrStringrµ   )r;   rÝ   r€   r   r¸   rˆ   rm   r—   rº   r<   r»   )r   rA   r¯  r6   r!  r±   r½   s          r   Úobject_setattr_stringzPythonAPI.object_setattr_string  sy   € ØŒ|×/Ò/°´¸TÑBÔBˆÝŒ�rœz¨"™~œ~°´
¸D¼LÈ$Ì*Ð/UÑVÔVˆØ×Ò Ð+CÐÑDÔDˆØŒ|× Ò   c¨4°Ð%5Ñ6Ô6Ð6r   c                 óÞ   — t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||||g¦  «        S )NrÈ   ÚPyObject_SetAttrrµ   r:  )r   rA   r¯  r6   r±   r½   s         r   Úobject_setattrzPythonAPI.object_setattr  s`   € ÝŒ�rœz¨"™~œ~°´
¸D¼JÈÌ
Ð/SÑTÔTˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨4°Ð%5Ñ6Ô6Ð6r   c                 óT   — |                       |||                      ¦   «         ¦  «        S r   )r¶  rª   ©r   rA   r¯  s      r   Úobject_delattr_stringzPythonAPI.object_delattr_string  s(   € ð ×)Ò)¨#¨t°T×5IÒ5IÑ5KÔ5KÑLÔLÐLr   c                 óT   — |                       |||                      ¦   «         ¦  «        S r   )r¹  rª   r»  s      r   Úobject_delattrzPythonAPI.object_delattr  s(   € ð ×"Ò" 3¨¨d×.BÒ.BÑ.DÔ.DÑEÔEÐEr   c                 ó¶   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||f¦  «        S )z!
        Return obj[key]
        ÚPyObject_GetItemrµ   rÅ   ©r   rA   Úkeyr±   r½   s        r   Úobject_getitemzPythonAPI.object_getitem"  sU   € õ Œ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óÞ   — t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )z 
        obj[key] = val
        rÈ   ÚPyObject_SetItemrµ   r:  )r   rA   rÂ  r6   r±   r½   s         r   Úobject_setitemzPythonAPI.object_setitem*  sa   € õ Œ�rœz¨"™~œ~°´
¸D¼JÈÌ
Ð/SÑTÔTˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨3° _Ñ5Ô5Ð5r   c                 óÐ   — t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||f¦  «        S )z
        del obj[key]
        rÈ   ÚPyObject_DelItemrµ   r:  rÁ  s        r   Úobject_delitemzPythonAPI.object_delitem2  s[   € õ Œ�rœz¨"™~œ~°´
¸D¼JÐ/GÑHÔHˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó¬   — t          j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyUnicode_AsUTF8rµ   ©r   r¸   r—   rm   rº   r<   r»   )r   Ústrobjr±   r»  r½   s        r   Ústring_as_stringzPythonAPI.string_as_string:  sP   € ÝŒ˜tœ|¨d¬j¨\Ñ:Ô:ˆØ"ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 ó´  — t          j        | j        | j        ¦  «        }t	          j        | j        | j        | j                             ¦   «         g¦  «        }d}|  	                    ||¬¦  «        }| j         
                    |||g¦  «        }| j                             dt          |j        d¦  «        |¦  «        }||| j                             |¦  «        fS )zô
        Returns a tuple of ``(ok, buffer, length)``.
        The ``ok`` is i1 value that is set if ok.
        The ``buffer`` is a i8* of the output buffer.
        The ``length`` is a i32/i64 (py_ssize_t) of the length of the buffer.
        ÚPyUnicode_AsUTF8AndSizerµ   rŠ  N)r   rl   r<   r–   r   r¸   r—   rm   r…   rº   r»   r•  r   r§   rr   )r   rÍ  Úp_lengthr±   r»  r½   ÚbufferÚoks           r   Ústring_as_string_and_sizez#PythonAPI.string_as_string_and_size@  sÏ   € õ Ô& t¤|°T´_ÑEÔEˆÝŒ˜tœ|¨d¬jØ.2¬o×.HÒ.HÑ.JÔ.Jð.Lñ Mô Mˆà)ˆØ×Ò ¨5ÐÑ1Ô1ˆà”×"Ò" 2¨°Ð'9Ñ:Ô:ˆØŒ\×'Ò'¨Ý(0°´¸dÑ(CÔ(CØ(.ñ0ô 0ˆð �F˜DœL×-Ò-¨hÑ7Ô7Ð8Ð8r   c           	      ó  — t          j        | j        | j        ¦  «        }t          j        | j        t	          j        d¦  «        ¦  «        }t          j        | j        t	          j        d¦  «        ¦  «        }t          j        | j        | j        ¦  «        }t	          j        | j        | j	        | j         
                    ¦   «         t	          j        d¦  «         
                    ¦   «         t	          j        d¦  «         
                    ¦   «         | j         
                    ¦   «         g¦  «        }d}|                      ||¬¦  «        }| j                             ||||||g¦  «        }	| j                             dt          |	j        d¦  «        |	¦  «        }
|
|	| j                             |¦  «        | j                             |¦  «        | j                             |¦  «        | j                             |¦  «        fS )aŽ  
        Returns a tuple of ``(ok, buffer, length, kind)``.
        The ``ok`` is i1 value that is set if ok.
        The ``buffer`` is a i8* of the output buffer.
        The ``length`` is a i32/i64 (py_ssize_t) of the length of the buffer.
        The ``kind`` is a i32 (int32) of the Unicode kind constant
        The ``hash`` is a long/uint64_t (py_hash_t) of the Unicode constant hash
        rÈ   Únumba_extract_unicoderµ   rŠ  N)r   rl   r<   r–   r   rˆ   r�   r¸   r—   rm   r…   rº   r»   r•  r   r§   rr   )r   rÍ  rÑ  Úp_kindÚp_asciiÚp_hashr±   r»  r½   rÒ  rÓ  s              r   Ústring_as_string_size_and_kindz(PythonAPI.string_as_string_size_and_kindT  s¥  € õ Ô& t¤|°T´_ÑEÔEˆÝÔ$ T¤\µ2´:¸b±>´>ÑBÔBˆÝÔ% d¤lµB´J¸r±N´NÑCÔCˆÝÔ$ T¤\°4´>ÑBÔBˆÝŒ˜tœ|¨d¬jØ.2¬o×.HÒ.HÑ.JÔ.JÝ.0¬j¸©n¬n×.GÒ.GÑ.IÔ.IÝ.0¬j¸©n¬n×.GÒ.GÑ.IÔ.IØ.2¬n×.GÒ.GÑ.IÔ.Ið	.Kñ Lô Lˆð
 (ˆØ×Ò ¨5ÐÑ1Ô1ˆà”×"Ò"Ø�˜ 6¨7°FÐ;ñ=ô =ˆàŒ\×'Ò'¨Ý(0°´¸dÑ(CÔ(CØ(.ñ0ô 0ˆð �F˜DœL×-Ò-¨hÑ7Ô7Ø”×!Ò! &Ñ)Ô)¨4¬<×+<Ò+<¸WÑ+EÔ+EØ”×!Ò! &Ñ)Ô)ð+ð 	+r   c                 óº   — t          j        | j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             |||g¦  «        S )NÚPyString_FromStringAndSizerµ   ©r   r¸   rm   r—   r–   rº   r<   r»   ©r   ÚstringÚsizer±   r»  r½   s         r   Ústring_from_string_and_sizez%PythonAPI.string_from_string_and_sizer  sW   € ÝŒ˜tœz¨D¬L¸$¼/Ð+JÑKÔKˆØ,ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   f¨d ^Ñ4Ô4Ð4r   c                 ó¬   — t          j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyUnicode_FromStringrµ   rj  )r   rß  r±   r»  r½   s        r   Ústring_from_stringzPythonAPI.string_from_stringx  sP   € ÝŒ˜tœz¨D¬L¨>Ñ:Ô:ˆØ&ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 óâ   — t          j        | j        t          j        d¦  «        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||||g¦  «        S )NrÈ   ÚPyUnicode_FromKindAndDatarµ   )	r   r¸   rm   rˆ   r—   r–   rº   r<   r»   )r   Úkindrß  rà  r±   r»  r½   s          r   Ústring_from_kind_and_dataz#PythonAPI.string_from_kind_and_data~  sd   € ÝŒ˜tœz­B¬J°r©N¬N¸D¼LÈ$Ì/Ð+ZÑ[Ô[ˆØ+ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   d¨F°DÐ%9Ñ:Ô:Ð:r   c                 ó¬   — t          j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyBytes_AsStringrµ   rÌ  ©r   rA   r±   r»  r½   s        r   Úbytes_as_stringzPythonAPI.bytes_as_string„  sP   € ÝŒ˜tœ|¨d¬j¨\Ñ:Ô:ˆØ"ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óŒ  — t          j        t          j        d¦  «        | j        | j                             ¦   «         | j                             ¦   «         g¦  «        }d}|                      ||¬¦  «        }| j         	                    ||||g¦  «        }| j         
                    dt          |j        d¦  «        |¦  «        }|S )NrÈ   ÚPyBytes_AsStringAndSizerµ   rŠ  r‘  )r   r¸   rˆ   rm   r—   r…   r–   rº   r<   r»   Úicmp_signedr   r§   )	r   rA   Úp_bufferrÑ  r±   r»  r½   r}  rÓ  s	            r   Úbytes_as_string_and_sizez"PythonAPI.bytes_as_string_and_sizeŠ  s­   € ÝŒÝŒJ�r‰NŒNØŒZ˜œ×0Ò0Ñ2Ô2°D´O×4NÒ4NÑ4PÔ4PÐQñ
ô 
ˆð *ˆØ×Ò ¨5ÐÑ1Ô1ˆØ”×"Ò" 2¨¨X°xÐ'@ÑAÔAˆØŒ\×%Ò% d­H°V´[À"Ñ,EÔ,EÀvÑNÔNˆØˆ	r   c                 óº   — t          j        | j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             |||g¦  «        S )NÚPyBytes_FromStringAndSizerµ   rÝ  rÞ  s         r   Úbytes_from_string_and_sizez$PythonAPI.bytes_from_string_and_size•  sW   € ÝŒ˜tœz¨D¬L¸$¼/Ð+JÑKÔKˆØ+ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   f¨d ^Ñ4Ô4Ð4r   c                 ó¬   — t          j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyObject_Hashrµ   )r   r¸   r�   rm   rº   r<   r»   rë  s        r   Úobject_hashzPythonAPI.object_hash›  sP   € ÝŒ˜tœ~°´
¨~Ñ>Ô>ˆØˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyObject_Strrµ   rÅ   r¼   s       r   Ú
object_strzPythonAPI.object_str¡  sK   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨>ÐÑ:Ô:ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óX   — |                       ¦   «         }|                      |¦  «         |S r   )rº  r¾   ©r   rA   s     r   rô   zPythonAPI.make_none¦  s*   € Ø×ÒÑ Ô ˆØ�Š�CÑÔÐØˆ
r   c                 ó,   — |                       d¦  «        S )NÚ_Py_NoneStruct)rê   r   s    r   rº  zPythonAPI.borrow_none«  s   € Ø× Ò Ð!1Ñ2Ô2Ð2r   c                 óÊ   — t          j        t          j        ¦   «         | j        gd¬¦  «        }|                      |d¬¦  «        }| j                             ||f|z   ¦  «        S )NTrÉ   ÚPySys_FormatStdoutrµ   )r   r¸   r¹   r—   rº   r<   r»   )r   rÐ   rÎ   r±   r½   s        r   Úsys_write_stdoutzPythonAPI.sys_write_stdout®  sY   € ÝŒ�rœ{™}œ}¨t¬|¨nÀdÐKÑKÔKˆØ×Ò Ð+?ÐÑ@Ô@ˆØŒ|× Ò   c V¨d¡]Ñ3Ô3Ð3r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )zL
        Dump a Python object on C stderr.  For debugging purposes.
        Ú_PyObject_Dumprµ   r·   r¼   s       r   Úobject_dumpzPythonAPI.object_dump³  sR   € õ Œ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 óì  — | j         j        s
J d¦   «         ‚t          j        d¦  «        }|                      |                      |j        ¦  «        ¦  «        }t          j        | j        | j	        | j        ||| j        g¦  «        }|  
                    |d¬¦  «        }|j        d                              d¦  «         | j                              t          j        |j        ¦  «        }| j                              t          j        t#          |j        ¦  «        ¦  «        }	t'          j        | j        |¦  «        }
| j                             || j                             |
| j	        ¦  «        |||	|g¦  «        S )NzNRT requiredrÈ   Ú"NRT_adapt_ndarray_to_python_acqrefrµ   r   úcaptures(none))r;   Ú
enable_nrtr   rˆ   ÚunserializeÚserialize_objectÚbox_typer¸   rm   r‰   rº   rÎ   Úadd_attributer  r   r”  ÚndimrÜ   Úmutabler   rF  r<   r»   Úbitcast)r   ÚarytyÚaryÚdtypeptrÚinttyÚserial_aryty_pytyper±   r½   r  ÚwritableÚaryptrs              r   Únrt_adapt_ndarray_to_pythonz%PythonAPI.nrt_adapt_ndarray_to_python¿  sI  € ØŒ|Ô&Ð6Ð6¨Ñ6Ô6Ð&å”
˜2‘”ˆà"×.Ò.¨t×/DÒ/DÀUÄ^Ñ/TÔ/TÑUÔUÐåŒ˜tœzØ $¤¨d¬j¸%ÀÈÌ
ÐSñUô Uˆà×Ò Ð+OÐÑPÔPˆØ
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2àŒ|×(Ò(­¬°e´jÑAÔAˆØ”<×,Ò,­U¬[½#¸e¼mÑ:LÔ:LÑMÔMˆåÔ*¨4¬<¸Ñ=Ô=ˆØŒ|× Ò   d¤l×&:Ò&:¸6Ø;?¼<ñ'Iô 'Ià&9Ø&*¨H°hð&@ñ Aô Að 	Ar   c                 óž  — | j         j        }t          j        t          j        t          j        t          j        g¦  «        }t	          j        ||d¦  «        }|j        d                              d¦  «         |j        d                              d¦  «         |j	                             d¦  «         | j          
                    |||g¦  «        S )za
        Allocate a new MemInfo with data payload borrowed from a python
        object.
        ÚNRT_meminfo_new_from_pyobjectr   r  r’  Únoalias)r<   r€   r   r¸   r   Ú	voidptr_tÚget_or_insert_functionrÎ   r  Úreturn_valuer»   )r   Údatarm   Úmodr±   r½   s         r   Únrt_meminfo_new_from_pyobjectz'PythonAPI.nrt_meminfo_new_from_pyobjectÔ  sº   € ð
 ŒlÔ!ˆÝŒÝÔÝÔ¥Ô 1Ð2ñô ˆõ Ô+ØØØ+ñô ˆð
 	Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2Ø
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2Ø
Œ×%Ò% iÑ0Ô0Ð0ØŒ|× Ò   d¨E ]Ñ3Ô3Ð3r   c                 óü   — | j         j        }t          j        | j        t
          j        g¦  «        }t          j        ||d¦  «        }|j         	                    d¦  «         | j          
                    ||g¦  «        S )NÚNRT_meminfo_as_pyobjectr  )r<   r€   r   r¸   rm   r   r  r  r  r  r»   )r   Úmiptrr  r±   r½   s        r   Únrt_meminfo_as_pyobjectz!PythonAPI.nrt_meminfo_as_pyobjectè  sz   € ØŒlÔ!ˆÝŒØŒJÝÔÐñ
ô 
ˆõ Ô+ØØØ%ñ
ô 
ˆð
 	Œ×%Ò% iÑ0Ô0Ð0ØŒ|× Ò   e WÑ-Ô-Ð-r   c                 óü   — | j         j        }t          j        t          j        | j        g¦  «        }t	          j        ||d¦  «        }|j         	                    d¦  «         | j          
                    ||g¦  «        S )NÚNRT_meminfo_from_pyobjectr  )r<   r€   r   r¸   r   r  rm   r  r  r  r»   )r   Úmiobjr  r±   r½   s        r   Únrt_meminfo_from_pyobjectz#PythonAPI.nrt_meminfo_from_pyobjectö  sy   € ØŒlÔ!ˆÝŒÝÔØŒZˆLñ
ô 
ˆõ Ô+ØØØ'ñ
ô 
ˆð
 	Œ×%Ò% iÑ0Ô0Ð0ØŒ|× Ò   e WÑ-Ô-Ð-r   c                 ól  — | j         j        sJ ‚t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }|j        d          	                    d¦  «         |j        d          	                    d¦  «         | j
                             |||f¦  «        S )NrÈ   ÚNRT_adapt_ndarray_from_pythonrµ   r   r  r’  ©r;   r  r   r¸   rˆ   rm   r‰   rº   rÎ   r  r<   r»   ©r   r  rc  r±   r½   s        r   Únrt_adapt_ndarray_from_pythonz'PythonAPI.nrt_adapt_ndarray_from_python  s    € ØŒ|Ô&Ð&Ð&Ð&ÝŒ�rœz¨"™~œ~°´
¸D¼LÐ/IÑJÔJˆØ×Ò Ð+JÐÑKÔKˆØ
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2Ø
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2ØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óŽ  — | j         j        sJ ‚t          j        t          j        ¦   «         t          j        | j        ¦  «        | j        g¦  «        }|                      |d¬¦  «        }|j	        d          
                    d¦  «         |j	        d          
                    d¦  «         | j                             |||f¦  «        S )NÚNRT_adapt_buffer_from_pythonrµ   r   r  r’  )r;   r  r   r¸   r¹   r‡   rœ   r‰   rº   rÎ   r  r<   r»   ©r   Úbufrc  r±   r½   s        r   Únrt_adapt_buffer_from_pythonz&PythonAPI.nrt_adapt_buffer_from_python  s°   € ØŒ|Ô&Ð&Ð&Ð&ÝŒ�rœ{™}œ}­r¬~¸dÔ>NÑ/OÔ/OØ/3¬|ð/=ñ >ô >ˆà×Ò Ð+IÐÑJÔJˆØ
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2Ø
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2ØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óp   — t          j        | j        ||¦  «        }| j                             |¦  «         |S r   )r   r  r€   r;   Úapply_target_attributes)r   r±   r¶   r½   s       r   rº   zPythonAPI._get_function  s3   € ÝÔ+¨D¬K¸¸tÑDÔDˆØŒ×,Ò,¨RÑ0Ô0Ð0Øˆ	r   c                 ó@   — | j                              | j        ¦  «        S r   )r<   Úallocarm   r   s    r   Ú
alloca_objzPythonAPI.alloca_obj  s   € ØŒ|×"Ò" 4¤:Ñ.Ô.Ð.r   c                 ó`   — t          j        | j        t          | j        d¦  «        ¦  «        }|S )zT
        Return a pointer to a stack-allocated, zero-initialized Py_buffer.
        N)r   rF  r<   r   rœ   )r   rc  s     r   Úalloca_bufferzPythonAPI.alloca_buffer  s1   € õ
 Ô'¨¬Ý(0°Ô1AÀ4Ñ(HÔ(HñJô Jˆàˆ
r   c              #   ó¨   K  — t          j        | j        t          j        | j        |¦  «        ¦  «        5  d V — d d d ¦  «         d S # 1 swxY w Y   d S r   )r   r–  r<   ro   rü  s     r   rC  zPythonAPI.if_object_ok(  sž   è è € åÔ˜tœ|Ý&Ô2°4´<ÀÑEÔEñGô Gð 	ð 	àˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   µAÁAÁAc                 óð   — |                       |¦  «        }|                      |¦  «        }| j                             | j        d¦  «        }|                      ||¦  «         |                      |¦  «         d S )Nz%s)rú  rÎ  r;   rÝ   r€   r  rÂ   )r   rA   rÍ  r!  rÐ   s        r   Úprint_objectzPythonAPI.print_object.  sm   € Ø—’ Ñ%Ô%ˆØ×$Ò$ VÑ,Ô,ˆØŒl×.Ò.¨t¬{¸DÑAÔAˆØ×Ò˜c 4Ñ(Ô(Ð(Ø�Š�FÑÔÐÐÐr   c                 óp   — | j                              | j        |¦  «        }|                      |¦  «         d S r   )r;   rÝ   r€   r  )r   ÚtextrÐ   s      r   Úprint_stringzPythonAPI.print_string5  s5   € ØŒl×.Ò.¨t¬{¸DÑAÔAˆØ×Ò˜cÑ"Ô"Ð"Ð"Ð"r   c                 ó,   — t          | j        d ¦  «        S r   )r   rm   r   s    r   rª   zPythonAPI.get_null_object9  s   € Ý˜œ
 DÑ)Ô)Ð)r   c                 ób   — |                       ¦   «         }| j                             |¦  «         d S r   )rô   r<   rs   )r   Únones     r   Úreturn_nonezPythonAPI.return_none<  s-   € Ø�~Š~ÑÔˆØŒ×Ò˜ÑÔÐÐÐr   c                 óÎ  — t          |¦  «        }|                      | j                             t          j        |¦  «        ¦  «        }|                      |¦  «        5  t          |¦  «        D ]_}| j                             t          j        |¦  «        }|                      ||         ¦  «         |  	                    ||||         ¦  «         Œ`	 d d d ¦  «         n# 1 swxY w Y   |S r   )
rc   rþ  r;   r  r   r•   rC  r  r¾   r  )r   r  r  Úseqr  r
  s         r   Ú	list_packzPythonAPI.list_pack@  s
  € Ý�‰JŒJˆØ�mŠm˜DœL×5Ò5µe´jÀ!ÑDÔDÑEÔEˆØ×Ò˜sÑ#Ô#ð 	6ð 	6Ý˜1‘X”Xð 6ð 6�Ø”l×/Ò/µ´
¸AÑ>Ô>�Ø—’˜E !œHÑ%Ô%Ð%Ø×!Ò! # s¨E°!¬HÑ5Ô5Ð5Ð5ð6ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð
 ˆ
s   ÁA0CÃCÃ!Cc                 ó  — t          j        | j        | j        t          j        d¦  «        | j        f¦  «        }|                      |d¬¦  «        }| j                             | j                             |¦  «        d¦  «        }| j                             | j                             |¦  «        d¦  «        }| j                             | j                             |¦  «        d¦  «        }| j         	                    ||||f¦  «        S )z«
        Unserialize some data.  *structptr* should be a pointer to
        a {i8* data, i32 length, i8* hashbuf, i8* func_ptr, i32 alloc_flag}
        structure.
        rÈ   Únumba_unpicklerµ   r   r’  é   )
r   r¸   rm   r‰   rˆ   rº   r<   Úextract_valuerr   r»   )r   Ú	structptrr±   r½   rc  r  Úhasheds          r   r	  zPythonAPI.unserializeJ  sÞ   € õ Œ˜tœzØ"œl­B¬J°r©N¬N¸D¼LÐIñKô Kˆà×Ò Ð+;ÐÑ<Ô<ˆØŒl×(Ò(¨¬×):Ò):¸9Ñ)EÔ)EÀqÑIÔIˆØŒL×&Ò& t¤|×'8Ò'8¸Ñ'CÔ'CÀQÑGÔGˆØ”×+Ò+¨D¬L×,=Ò,=¸iÑ,HÔ,HÈ!ÑLÔLˆØŒ|× Ò   c¨1¨fÐ%5Ñ6Ô6Ð6r   c                 ó¶   — t          j        | j        | j        | j        f¦  «        }|                      |d¬¦  «        }| j                             |||f¦  «        S )zÉ
        Serialize some data at runtime. Returns a pointer to a python tuple
        (bytes_data, hash) where the first element is the serialized data as
        bytes and the second its hash.
        Ú"numba_runtime_build_excinfo_structrµ   rÅ   )r   Ú	struct_gvÚexc_argsr±   r½   s        r   Úbuild_dynamic_excinfo_structz&PythonAPI.build_dynamic_excinfo_structX  sV   € õ Œ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+OÐÑPÔPˆØŒ|× Ò   i°Ð%:Ñ;Ô;Ð;r   c                 ó^   — t          j        |¦  «        }|                      |¦  «        \  }}|S )zÊ
        Same as serialize_object(), but don't create a global variable,
        simply return a literal for structure:
        {i8* data, i32 length, i8* hashbuf, i8* func_ptr, i32 alloc_flag}
        )r   ÚdumpsÚ_serialize_data)r   rA   r  ÚstructÚ_digests        r   Úserialize_uncachedzPythonAPI.serialize_uncachedb  s/   € õ Œ˜sÑ#Ô#ˆØ×.Ò.¨tÑ4Ô4‰ˆ�Øˆr   c                 ó  — t          |¦  «        dk     sJ ‚t          j        |¦  «                             ¦   «         }t          j        dk    r|                     ¦   «         nd}d|z  }t          j        |¦  «        }t          j        |¦  «        }| j	         
                    | j        ||¦  «        }| j	         
                    | j        |› d�|¦  «        }t          j        |                     | j        ¦  «        t          t!          j        d¦  «        |j        j        j        ¦  «        |                     | j        ¦  «        t          j        | j        ¦  «        t          t!          j        d¦  «        d¦  «        g¦  «        }	|	|fS )a  
        Build a pickled-data struct literal from already-pickled ``data``
        bytes. Returns ``(struct, digest)`` so that callers needing the
        SHA1 digest (for example, to derive a deterministic name for the
        enclosing global) can reuse it without re-hashing.
        l        r   ÚDIFF_IRz.const.pickledata.%sz.sha1rÈ   )rc   ÚhashlibÚsha1Údigestr	   rY  Úhexr   Úmake_bytearrayr;   Úinsert_unique_constr€   r   Úliteral_structr  r‰   r   rˆ   r§   r¨   r!  Úget_null_value)
r   r  r\  Úsuffixr¶   ÚbdatarL  ÚarrÚhasharrrU  s
             r   rT  zPythonAPI._serialize_datal  sK  € õ �4‰yŒy˜5Ò Ð Ð Ð õ ”˜dÑ#Ô#×*Ò*Ñ,Ô,ˆõ "(¤°1Ò!4Ð!4�—’‘”�¸)ˆØ%¨Ñ.ˆÝÔ& tÑ,Ô,ˆÝÔ'¨Ñ/Ô/ˆØŒl×.Ò.¨t¬{¸DÀ%ÑHÔHˆØ”,×2Ò2ØŒK˜D˜˜˜¨ñ
ô 
ˆõ Ô(Ø�KŠK˜œÑ%Ô%Ý•R”Z ‘^”^ S¤XÔ%5Ô%;Ñ<Ô<Ø�OŠO˜DœLÑ)Ô)ÝÔ" 4¤<Ñ0Ô0Ý•R”Z ‘^”^ QÑ'Ô'ð*ñ ô ˆð �vˆ~Ðr   c                 ó\  — 	 | j         j        |         }n—# t          $ rŠ t          j        |¦  «        }|                      |¦  «        \  }}t          j        dk    r|                     ¦   «         nd}d|z  }| j	         
                    | j         ||¦  «        }|| j         j        |<   Y nw xY w|S )zñ
        Serialize the given object in the bitcode, and return it
        as a pointer to a
        {i8* data, i32 length, i8* hashbuf, i8* fn_ptr, i32 alloc_flag},
        structure constant (suitable for passing to unserialize()).
        r   rY  z.const.picklebuf.%s)r€   r�   r   r   rS  rT  r	   rY  r]  r;   r_  )r   rA   Úgvr  rU  r\  rb  r¶   s           r   r
  zPythonAPI.serialize_object�  s¹   € ð	/Ø”Ô)¨#Ô.ˆBˆBøÝð 
	/ð 
	/ð 
	/Ý”? 3Ñ'Ô'ˆDØ!×1Ò1°$Ñ7Ô7‰NˆF�Fõ &,¤^°qÒ%8Ð%8�V—Z’Z‘\”\�\¸iˆFØ(¨6Ñ1ˆDØ”×1Ò1°$´+¸tÀVÑLÔLˆBà,.ˆDŒKÔ$ SÑ)Ð)Ð)ð
	/øøøð ˆ	s   ‚ •BB)Â(B)c                 óZ   — t          j        | j        |                      ¦   «         ¦  «        S r   )r   ro   r<   rä   r   s    r   Úc_api_errorzPythonAPI.c_api_error£  s#   € ÝÔ" 4¤<°×1BÒ1BÑ1DÔ1DÑEÔEÐEr   c                 óž   — ddl m} t                               |j        |¦  «        }t          | j        | j        | ¦  «        } ||||¦  «        S )zn
        Unbox the Python object as the given Numba type.
        A NativeValue instance is returned.
        r   )Úunbox_unsupported)Únumba.core.boxingrk  Ú	_unboxersr(   Ú	__class__r>   r;   r<   )r   r5   rA   rk  ÚimplÚcs         r   r@   zPythonAPI.to_native_value¦  sW   € ð
 	8Ð7Ð7Ð7Ð7Ð7å×Ò ¤Ð/@ÑAÔAˆÝ˜$œ,¨¬°dÑ;Ô;ˆØˆt�C˜˜aÑ Ô Ð r   c                 ó|   — t          |t          j        ¦  «        r
J d¦   «         ‚|                      |||¦  «        }|S )Nz;callconv should have prevented the return of optional value)rX   r   ÚOptionalr2   )r   r5   r6   r3   Úouts        r   Úfrom_native_returnzPythonAPI.from_native_return±  sP   € Ý˜c¥5¤>Ñ2Ô2ð 	Eð 	Eð 5Eñ 	Eô 	EÐ2ð ×$Ò$ S¨#¨{Ñ;Ô;ˆØˆ
r   c                 ó    — ddl m} t                               |j        |¦  «        }t          | j        | j        | |¦  «        } ||||¦  «        S )zÒ
        Box the native value of the given Numba type.  A Python object
        pointer is returned (NULL if an error occurred).
        This method steals any native (NRT) reference embedded in *val*.
        r   )Úbox_unsupported)rl  rv  Ú_boxersr(   rn  r.   r;   r<   )r   r5   r6   r3   rv  ro  rp  s          r   r2   zPythonAPI.from_native_value¸  sV   € ð 	6Ð5Ð5Ð5Ð5Ð5å�~Š~˜cœm¨_Ñ=Ô=ˆå˜œ d¤l°D¸+ÑFÔFˆØˆt�C˜˜aÑ Ô Ð r   c                 ó6  — t                                |j        ¦  «        }|€t          j        S t          j        | j        t          j        ¦  «        }t          | j        | j        | ||¦  «        } ||||¦  «         | j         	                    |j
        ¦  «        S )z�
        Reflect the native value onto its Python original, if any.
        An error bit (as an LLVM value) is returned.
        )Ú_reflectorsr(   rn  r   rR   rF  r<   rD   r;   rr   rG   )r   r5   r6   r3   ro  rG   rp  s          r   rL   zPythonAPI.reflect_native_valueÅ  sˆ   € õ
 ×!Ò! #¤-Ñ0Ô0ˆØˆ<åÔ$Ð$åÔ,¨T¬\½7Ô;LÑMÔMˆÝ˜DœL¨$¬,¸¸kØ$ñ&ô &ˆàˆˆS�#�qÑÔÐØŒ|× Ò  ¤Ñ,Ô,Ð,r   c                 óº   — t          j        | j                             |¦  «        ¦  «        }| j                             | j        ||¦  «        }t          |¦  «        S )zy
        Extract the generator structure pointer from a generator *obj*
        (a _dynfunc.Generator instance).
        )r   r‡   r;   Úget_data_typeÚget_generator_stater<   rO   )r   rA   r5   Ú
gen_ptr_tyrQ   s        r   Úto_native_generatorzPythonAPI.to_native_generatorÕ  sL   € õ
 ”^ D¤L×$>Ò$>¸sÑ$CÔ$CÑDÔDˆ
Ø”×0Ò0°´¸sÀJÑOÔOˆÝ˜5Ñ!Ô!Ð!r   c           	      ó  — | j                              |¦  «        }|j        rJ ‚| j                              |¦  «        }| j                              |¦  «        }t          j        | j        | j        | j        | j        g¦  «        }|                      ||j	        ¬¦  «        }t          j        t          j
        ¦   «         | j        g¦  «        }	|j        r|                      |	|j        ¬¦  «        }
n"t          t          j        |	¦  «        d¦  «        }
t          j        | j        | j        | j        t          j        |¦  «        t          j        |	¦  «        | j        g¦  «        }|                      |d¬¦  «        }t          | j        |¦  «        }| j                             || j        ¦  «        }|€|                      ¦   «         }| j                             || j        ¦  «        }| j                             |||||
|f¦  «        S )zÝ
        Make a Numba generator (a _dynfunc.Generator instance) from a
        generator structure pointer *val*.
        *env* is an optional _dynfunc.Environment instance to be wrapped
        in the generator.
        rµ   NÚnumba_make_generator)r;   r{  Ú
is_pointerÚget_abi_sizeofÚget_generator_descr   r¸   rm   rº   Úllvm_cpython_wrapper_namer¹   r‰   Úhas_finalizerÚllvm_finalizer_namer   r‡   r–   r<   r  rª   r»   )r   r6   r5   rZ   ÚlltyÚgen_struct_sizeÚgendescÚgenfntyÚgenfnÚfinalizertyÚ	finalizerr±   r½   Ú
state_sizeÚinitial_states                  r   Úfrom_native_generatorzPythonAPI.from_native_generatorÞ  sÒ  € ð Œ|×)Ò)¨#Ñ.Ô.ˆØ”?Ð"Ð"Ð"Øœ,×5Ò5°dÑ;Ô;ˆà”,×1Ò1°#Ñ6Ô6ˆõ ”/ $¤*¨t¬z¸4¼:ÀtÄzÐ.RÑSÔSˆØ×"Ò" 7°Ô1RÐ"ÑSÔSˆõ ”o¥b¤k¡m¤m°d´l°^ÑDÔDˆØÔð 	DØ×*Ò*¨;¸WÔ=XÐ*ÑYÔYˆIˆIå ¥¤°Ñ!<Ô!<¸dÑCÔCˆIõ Œ˜tœz¨D¬OØ,0¬LÝ,.¬N¸7Ñ,CÔ,CÝ,.¬N¸;Ñ,GÔ,GØ,0¬Lð	,:ñ ;ô ;ˆð
 ×Ò Ð+AÐÑBÔBˆå˜dœo¨Ñ?Ô?ˆ
Øœ×,Ò,¨S°$´,Ñ?Ô?ˆØˆ;Ø×&Ò&Ñ(Ô(ˆCØŒl×"Ò" 3¨¬Ñ5Ô5ˆàŒ|× Ò  Ø",¨m¸UÀIÈsÐ!SñUô Uð 	Ur   c                 ól  — | j         j        rJ ‚t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }|j        d          	                    d¦  «         |j        d          	                    d¦  «         | j
                             |||f¦  «        S )NrÈ   Únumba_adapt_ndarrayrµ   r   r  r’  r+  r,  s        r   Únumba_array_adaptorzPythonAPI.numba_array_adaptor  s    € Ø”<Ô*Ð*Ð*Ð*ÝŒ�rœz¨"™~œ~°´
¸D¼LÐ/IÑJÔJˆØ×Ò Ð+@ÐÑAÔAˆØ
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2Ø
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2ØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ór  — t          j        t          j        ¦   «         t          j        | j        ¦  «        | j        g¦  «        }|                      |d¬¦  «        }|j        d                              d¦  «         |j        d                              d¦  «         | j	         
                    |||f¦  «        S )NÚnumba_adapt_bufferrµ   r   r  r’  )r   r¸   r¹   r‡   rœ   r‰   rº   rÎ   r  r<   r»   r0  s        r   Únumba_buffer_adaptorzPythonAPI.numba_buffer_adaptor  sŸ   € ÝŒ�rœ{™}œ}Ý œn¨TÔ-=Ñ>Ô>ÀÄÐMñOô Oˆà×Ò Ð+?ÐÑ@Ô@ˆØ
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2Ø
Œ�Œ
× Ò Ð!1Ñ2Ô2Ð2ØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óÐ   — t          j        t          j        d¦  «        | j        |j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÈ   Únumba_complex_adaptorrµ   )r   r¸   rˆ   rm   r§   rº   r<   r»   )r   rÞ  Úcmplxr±   r½   s        r   Úcomplex_adaptorzPythonAPI.complex_adaptor  sY   € ÝŒ�rœz¨"™~œ~°´
¸E¼JÐ/GÑHÔHˆØ×Ò Ð+BÐÑCÔCˆØŒ|× Ò   d¨E ]Ñ3Ô3Ð3r   c                 óÚ   — t          j        | j        | j        t          j        | j        ¦  «        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NÚnumba_extract_record_datarµ   )	r   r¸   r‰   rm   r‡   rœ   rº   r<   r»   ©r   rA   Úpbufr±   r½   s        r   Úextract_record_datazPythonAPI.extract_record_data  se   € ÝŒ˜tœ|Ø $¤
­B¬N¸4Ô;KÑ,LÔ,LÐMñOô Oˆà×Ò Ð+FÐÑGÔGˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 óô   — t          j        t          j        d¦  «        | j        t          j        | j        ¦  «        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÈ   Únumba_get_bufferrµ   )	r   r¸   rˆ   rm   r‡   rœ   rº   r<   r»   r�  s        r   Ú
get_bufferzPythonAPI.get_buffer"  sk   € ÝŒ�rœz¨"™~œ~Ø $¤
­B¬N¸4Ô;KÑ,LÔ,LÐMñOô Oˆà×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 óä   — t          j        t          j        ¦   «         t          j        | j        ¦  «        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚnumba_release_bufferrµ   )r   r¸   r¹   r‡   rœ   rº   r<   r»   )r   rž  r±   r½   s       r   Úrelease_bufferzPythonAPI.release_buffer(  s\   € ÝŒ�rœ{™}œ}­r¬~¸dÔ>NÑ/OÔ/OÐ.PÑQÔQˆØ×Ò Ð+AÐÑBÔBˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )Né@   Únumba_extract_np_datetimerµ   r:  r¼   s       r   Úextract_np_datetimezPythonAPI.extract_np_datetime-  sR   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+FÐÑGÔGˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )Nr§  Únumba_extract_np_timedeltarµ   r:  r¼   s       r   Úextract_np_timedeltazPythonAPI.extract_np_timedelta2  sR   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+GÐÑHÔHˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óH  — t          t          j        d¦  «        t          |¦  «        ¦  «        }t          j        | j        t          j        d¦  «        t          j        d¦  «        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÈ   r§  Únumba_create_np_datetimerµ   ©	r   r   rˆ   rÜ   r¸   rm   rº   r<   r»   ©r   r6   Ú	unit_coder±   r½   s        r   Úcreate_np_datetimezPythonAPI.create_np_datetime7  s}   € Ý�RœZ¨™^œ^­S°©^¬^Ñ<Ô<ˆ	ÝŒ˜tœz­B¬J°r©N¬N½B¼JÀr¹N¼NÐ+KÑLÔLˆØ×Ò Ð+EÐÑFÔFˆØŒ|× Ò   c¨9Ð%5Ñ6Ô6Ð6r   c                 óH  — t          t          j        d¦  «        t          |¦  «        ¦  «        }t          j        | j        t          j        d¦  «        t          j        d¦  «        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÈ   r§  Únumba_create_np_timedeltarµ   r¯  r°  s        r   Úcreate_np_timedeltazPythonAPI.create_np_timedelta=  s}   € Ý�RœZ¨™^œ^­S°©^¬^Ñ<Ô<ˆ	ÝŒ˜tœz­B¬J°r©N¬N½B¼JÀr¹N¼NÐ+KÑLÔLˆØ×Ò Ð+FÐÑGÔGˆØŒ|× Ò   c¨9Ð%5Ñ6Ô6Ð6r   c                 ól  — t          j        | j        t          j        t          j        d¦  «        ¦  «        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }|                     |                     |¦  «        ¦  «        }| j         	                    ||||g¦  «        S )Nr}   rÈ   Únumba_recreate_recordrµ   )
r   r¸   rm   r‡   rˆ   rº   rw   rg   r<   r»   )r   Úpdatarà  Údtyper3   r±   r½   Ú	dtypeaddrs           r   Úrecreate_recordzPythonAPI.recreate_recordC  s›   € ÝŒ˜tœz­B¬N½2¼:Àa¹=¼=Ñ,IÔ,IÝ,.¬J°r©N¬N¸D¼Jð,Hñ Iô Iˆà×Ò Ð+BÐÑCÔCˆØ×*Ò*¨;×+@Ò+@ÀÑ+GÔ+GÑHÔHˆ	ØŒ|× Ò   e¨T°9Ð%=Ñ>Ô>Ð>r   c                 óÒ   — | j                              | j        |¦  «        }| j                              t          j        t          |¦  «        ¦  «        }|                      ||¦  «        S r   )r;   rÝ   r€   r  r   r•   rc   rá  )r   rß  r!  Úszs       r   Ústring_from_constant_stringz%PythonAPI.string_from_constant_stringJ  sP   € ØŒ|×/Ò/°´¸VÑDÔDˆØŒ\×&Ò&¥u¤zµ3°v±;´;Ñ?Ô?ˆØ×/Ò/°°bÑ9Ô9Ð9r   c           	      óÀ  — | j         }| j                             |||¦  «        }|j        j        }|j        }||k    r!t
                               d|› d|› d�¦  «        ‚| j                             ||j        ||¦  «        \  }}	t          j
        |t          j        d¬¦  «        }
| j                             |j        ¦  «        }t          j
        ||d¬¦  «        }|                     |j        ¦  «        5 \  }}|5  |                     |j        |
¦  «         | j        j                             || |¦  «         ddd¦  «         n# 1 swxY w Y   |5  t%          j        | j        ||||	¦  «        }	|                     |	|¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |                     |
¦  «        }|                     |¦  «        }	||	fS )aP  Calls into Numba jitted code and propagate error using the Python
        calling convention.

        Parameters
        ----------
        func : function
            The Python function to be compiled. This function is compiled
            in nopython-mode.
        sig : numba.typing.Signature
            The function signature for *func*.
        args : Sequence[llvmlite.binding.Value]
            LLVM values to use as arguments.

        Returns
        -------
        (is_error, res) :  2-tuple of llvmlite.binding.Value.
            is_error : true iff *func* raised an exception.
            res : Returned value from *func* iff *is_error* is false.

        If *is_error* is true, this method will adapt the nopython exception
        into a Python exception. Caller should return NULL to Python to
        indicate an error.
        zmismatching signature z != z.
Tri   N)r<   r;   Úcompile_subroutineÚ	signaturer©   ÚerrorsÚLoweringErrorÚcall_internal_no_propagateÚfndescr   rl   Úbool_tr”   rn   rG   rF   r«   Úraise_errorr   Úfix_returning_optionalrr   )r   r   ÚsigrÎ   r<   ÚcresÚ	got_rettyÚrettyr   ré  Úis_error_ptrÚres_typeÚres_ptrÚhas_errÚno_errrG   s                   r   Úcall_jit_codezPythonAPI.call_jit_codeO  s­  € ð2 ”,ˆØŒ|×.Ò.¨w¸¸cÑBÔBˆØ”NÔ.ˆ	Ø”ˆØ˜ÒÐõ ×&Ò&ØB¨ÐBÐB¸ÐBÐBÐBñô ð ð ”l×=Ò=Ø�T”[ # tñ
ô 
‰ˆ�õ Ô*¨7µG´NÈ$ÐOÑOÔOˆØ”<×.Ò.¨s¬Ñ?Ô?ˆÝÔ% g¨x¸tÐDÑDÔDˆð �_Š_˜Vœ_Ñ-Ô-ð 
	,Ñ1B°'¸6Øð Jð JØ—’˜fœo¨|Ñ<Ô<Ð<à”Ô&×2Ò2°7¸DÀ&ÑIÔIÐIðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð ð ,ð ,åÔ5Ø”L '¨3°¸ñô �ð —’˜c 7Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð
	,ð 
	,ð 
	,ñ 
	,ô 
	,ð 
	,ð 
	,ð 
	,ð 
	,ð 
	,ð 
	,øøøð 
	,ð 
	,ð 
	,ð 
	,ð —<’< Ñ-Ô-ˆØ�lŠl˜7Ñ#Ô#ˆØ˜ˆ}ÐsZ   Ã4F'Ã:=EÄ7F'ÅE	ÅF'Å
E	ÅF'Å4FÆF'ÆF	ÆF'ÆF	ÆF'Æ'F+Æ.F+)Fr£   r   )F)r   )r,   rT   )²r)   r*   r+   r9   r   r¢   r²   r¾   rÂ   rÆ   rÖ   rÙ   rà   rä   rç   rq   rñ   rö   rû   rþ   r  r  r  Ú
contextlibÚcontextmanagerr  rê   r"  r$  r*  r/  r2  r7  r>  rA  rG  rK  rQ  rU  rY  r\  r`  rg  rk  rp  rs  rv  ry  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  rp   r  r  r  r  r"  r(  r,  r0  r4  r7  r:  r@  rM  rR  rV  rY  r]  r`  rd  rg  rl  rr  ry  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  rº   r7  r9  rC  r<  r?  rª   rC  rF  r	  rQ  rW  rT  r
  ri  r@   rt  r2   rL   r~  r�  r“  r–  rš  rŸ  r¢  r¥  r©  r¬  r²  rµ  r»  r¾  rÒ  r,   r   r   r{   r{   ¢   s\  € € € € € ðð ð
Fð Fð Fð@@ð @ð @ð ?DØ*,ðð ð ð ð2%ð %ð %ð
%ð %ð %ð
,ð ,ð ,ðNð Nð Nð?ð ?ð ?ð	Nð 	Nð 	Nð)ð )ð )ð
)ð )ð )ð
5ð 5ð 5ðJð Jð Jð	-ð 	-ð 	-ð 	-ð8ð 8ð 8ð1ð 1ð 1ð-ð -ð -ð
7ð 7ð 7ð
4ð 4ð 4ð
 Ôð*ð *ð *ñ Ôð*ð8	8ð 	8ð 	8ð5ð 5ð 5ð
5ð 5ð 5ð
'ð 'ð 'ð2ð 2ð 2ð2ð 2ð 2ð	Pð 	Pð 	Pð 	PðAð Að Að>ð >ð >ð
ð 
ð 
ð -ð -ð -ð
:ð :ð :ð/ð /ð /ð
/ð /ð /ð
/ð /ð /ð
/ð /ð /ð)ð )ð )ð-ð -ð -ðCð Cð CðHð Hð HðFð Fð FðHð Hð Hð
Fð 
Fð 
Fð
Fð 
Fð 
Fðð ð ð
1ð 1ð 1ð 1ðLð Lð Lð LðQð Qð Qð QðQð Qð Qð QðSð Sð Sð SðTð Tð Tð TðRð Rð Rð RðWð Wð Wð WðOð Oð Oð OðOð Oð Oð OðLð Lð Lð LðKð Kð Kð KðLð Lð Lð LðEð Eð Eð Eð-ð -ð -ð
-ð -ð -ð
,ð ,ð ,ð
-ð -ð -ð
-ð -ð -ð
,ð ,ð ,ð-ð -ð -ð
9ð 9ð 9ð
-ð -ð -ð
-ð -ð -ðEð Eð Eð.9ð 9ð 9ð,ð ,ð ,ð
3ð 3ð 3ð
.ð .ð .ð
,ð ,ð ,ð
1ð 1ð 1ð
6ð 6ð 6ð1ð 1ð 1ð>ð >ð >ð1ð 1ð 1ð+ð +ð +ð,ð ,ð ,ð
?ð ?ð ?ð
@ð @ð @ð1ð 1ð 1ð 1ð3ð 3ð 3ð
,ð ,ð ,ð
,ð ,ð ,ð
6ð 6ð 6ð
Eð Eð Eð Ôð(ð (ñ Ôð(ð<
ð 
ð 
ð,ð ,ð ,ð)ð )ð )ð.ð .ð .ð-ð -ð -ð
1ð 1ð 1ð
-ð -ð -ð0ð 0ð 0ð
+ð +ð +ð+ð +ð +ð +ð
ð 
ð 
ð 
ð-ð -ð -ð,ð ,ð ,ð
,ð ,ð ,ð
'ð 'ð 'ðR0ð 0ð 0ð
,ð ,ð ,ð
2ð 2ð 2ð2ð 2ð 2ð
7ð 7ð 7ð7ð 7ð 7ð
Mð Mð Mð
Fð Fð Fð
1ð 1ð 1ð6ð 6ð 6ð1ð 1ð 1ð/ð /ð /ð9ð 9ð 9ð(+ð +ð +ð<5ð 5ð 5ð/ð /ð /ð;ð ;ð ;ð,ð ,ð ,ð	ð 	ð 	ð5ð 5ð 5ð-ð -ð -ð,ð ,ð ,ð
ð ð ð
3ð 3ð 3ð4ð 4ð 4ð
-ð -ð -ðAð Að Að*4ð 4ð 4ð(.ð .ð .ð.ð .ð .ð1ð 1ð 1ð1ð 1ð 1ðð ð ð
/ð /ð /ðð ð ð Ôðð ñ Ôðð
ð ð ð#ð #ð #ð*ð *ð *ðð ð ðð ð ð7ð 7ð 7ð<ð <ð <ðð ð ðð ð ðBð ð ð,Fð Fð Fð	!ð 	!ð 	!ðð ð ð!ð !ð !ð !ð-ð -ð -ð -ð "ð "ð "ð'Uð 'Uð 'Uð 'UðR1ð 1ð 1ð1ð 1ð 1ð4ð 4ð 4ð
2ð 2ð 2ð2ð 2ð 2ð-ð -ð -ð
,ð ,ð ,ð
,ð ,ð ,ð
7ð 7ð 7ð7ð 7ð 7ð?ð ?ð ?ð:ð :ð :ð
;ð ;ð ;ð ;ð ;r   r{   c                   ó4   — e Zd ZdZd„ Zd„ Zed„ ¦   «         ZdS )ÚObjModeUtilszHInternal utils for calling objmode dispatcher from within NPM code.
    c                 ó   — || _         d S r   )r1   )r   r1   s     r   r   zObjModeUtils.__init__�  s   € ØˆŒ
ˆ
ˆ
r   c                 ó  — | j         j        }| j         j        }|j        }t	          j        || j         j        |                     d¦  «        ¬¦  «        }|j         	                    d ¦  «        |_
        d|_        |                     d¦  «        }t          j        |j        ¦  «        rŸ| j                              |j        t#          |¦  «        f¦  «        }| j                              |¦  «        }	t'          j        ||	¦  «        }
|                     |
¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «        }|                     t'          j        ||¦  «        ¦  «        5  t          j        |j        ¦  «        r—t          | ¦  «        }| j                              | j                              |j        ¦  «        ¦  «        }| j                              ||	g¦  «        }| j                              |¦  «         | j                              |	¦  «         nL|j                             t#          |¦  «        ¦  «        }|                     |t;          |¦  «        d¬¦  «        }| j                              |¦  «         |                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «         |                      |¦  «         |                     |¦  «        }|S )NÚcached_objmode_dispatcherrµ   ÚinternalrC  Úwith_objectmode)Úinfo)!r1   r<   r;   r€   r   ÚGlobalVariablerm   Úget_unique_namer§   r¨   ÚinitializerÚlinkagerG  r   Úis_serializableÚ
dispatcherr
  rï   r	  r   r¥   rI  rE  rr   Ú_call_objmode_dispatcherrr  rÂ   ÚcompileÚadd_dynamic_addrÚidr¾   rF   rJ  )r   r±   rÕ   r<   ÚtyctxÚmrg  rC  Úserialized_dispatcherÚcompile_argsÚfailed_unserÚcachedr'   Úcompilerrp  Úentry_pts                   r   Úload_dispatcherzObjModeUtils.load_dispatcher“  s5  € Ø”*Ô$ˆØ”
Ô"ˆØŒNˆõ ÔØˆtŒzÔØ×"Ò"Ð#>Ñ?Ô?ð
ñ 
ô 
ˆð œŸš¨Ñ.Ô.ˆŒØˆŒ
ð ×+Ò+¨HÑ5Ô5ˆåÔ$ T¤_Ñ5Ô5ð 		'Ø$(¤J×$?Ò$?Ø”¥%¨¡/¤/Ð2ñ%ô %Ð!ð  œ:×1Ò1Ð2GÑHÔHˆLå"œ?¨7°LÑAÔAˆLØ—’ Ñ.Ô.ð 'ð 'à—’˜vÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð —’˜bÑ!Ô!ˆØ�_Š_�Wœ_¨W°fÑ=Ô=Ñ>Ô>ð 	&ð 	&ÝÔ(¨¬Ñ9Ô9ð Ý˜4‘j”j�Øœ:×1Ò1Ø”J×/Ò/°Ô0LÑMÔMñô �ð œ×9Ò9Ø˜|˜nñô �ð ”
×!Ò! (Ñ+Ô+Ð+Ø”
×!Ò! ,Ñ/Ô/Ð/Ð/àœ?×2Ò2µ5¸±?´?ÑCÔC�Ø×/Ò/Ø�R ™\œ\Ð0Að 0ñ ô �ð ŒJ×Ò˜fÑ%Ô%Ð%Ø�MŠM˜& "Ñ%Ô%Ð%ð'	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð* 	�Š�vÑÔÐà×Ò Ñ'Ô'Ð'Ø—’˜bÑ!Ô!ˆØˆs%   ÄD<Ä<E ÅE ÆD-J=Ê=KËKc                 ó:   — | \  }}|                      |¦  «        }|S r   )rä  )rê  râ  rÕ   Úentrypts       r   rã  z%ObjModeUtils._call_objmode_dispatcherÊ  s$   € à+Ñˆ
�HØ×$Ò$ XÑ.Ô.ˆØˆr   N)r)   r*   r+   r9   r   rï  Ústaticmethodrã  r,   r   r   rÖ  rÖ  �  sX   € € € € € ðð ðð ð ð5ð 5ð 5ðn ðð ñ „\ðð ð r   rÖ  )/Úcollectionsr   rÓ  ÚpicklerZ  r_   Úllvmliter   Úllvmlite.irr   rŠ   Únumbar   Ú
numba.corer   r   r	   r
   r   r   r   rž   ÚPY_UNICODE_1BYTE_KINDrŸ   ÚPY_UNICODE_2BYTE_KINDr    ÚPY_UNICODE_4BYTE_KINDÚversion_infoÚpy_unicode_wchar_kindÚPY_UNICODE_WCHAR_KINDÚobjectr   rw  rm  ry  r"   r7   rB   rM   r.   r>   rD   rO   rV   rx   r{   rÖ  r,   r   r   ú<module>r      s  ðØ "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ô8Ð Ø"Ô8Ð Ø"Ô8Ð ØÔ�gÒÐØ&Ô<Ððð ð ð ð �ñ ô ð ð. ˆ)‰+Œ+€ØˆI‰KŒK€	Øˆi‰kŒk€àÔ€ØÔ€Ø
Ô
€ðHð Hð Hð Hð H�*�*˜]Ø@ñBô Bñ Hô Hð Hð4ð 4ð 4ð 4ð 4�J�J˜Ø3ñ5ô 5ñ 4ô 4ð 4ðKð Kð Kð Kð K�j�jÐ!2ð#ñ$ô $ñ Kô Kð Kð&	ð 	ð 	ð 	ð 	�&ñ 	ô 	ð 	ð1!ð 1!ð 1!ð 1!ð 1!˜ñ 1!ô 1!ð 1!ðh �
˜?Ð,AÑBÔB€ðhð hð hð hð h�ñ hô hð hðV/Að Að Að Að Añ Aô Að Að Að Ar   