Ë
    ›2ÚiÏa  ã                   óš  — d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! ddlm"Z" ejF                  Z$ddg d¢dd	d
dddœZ%i di dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d“d"d“d#d““dd$“dd%“dd&“dg “dd“d'd“d(d“dd)“dg “dd“d*d“dg “dd“d+d“d,d“dd-“ddd.d/d0d1dddd2d3d4d5e	d6 ee	«      did7œ¥d8ed9id:ed;igd<ed=id>gd? ee ee«       ee«      «      d@œedAidBdCdDedEidFedGigd<ed=idHdIgdJedKœdLdMdNdOed9idPedQigdRd<ed=idHd>dSgedTœdUdVe	d6igdWedXœedJdYœgZ& eee«      dZi eee«      dZiedUi eee«      d[e	d6igi eee«      d[e	d6igiedV ee	e«      d6 ee	e«      d\igi eee«      d]i eee«      d]idd^œ	 eee«      d_ ee ee«      «      d`e
daed_i eee«      db ee ee«      «      dce
dbedbi eee«      dS ee ee«      «      dde
ddedSi eee
e«      dSiedeiedfiedgidhœ ee«      dii eee e!dj«      «      diedkiedli ee e ee«      e«      «      dmi ee e ee«       ee«      «      «      dni ee eee«      «      doi ee ee ee«      «      «      dpiged<d>gied=igedqœedriedsigedtieduiedSig eee«      ddvœedwidxedyigdSdIed=idHg eee«      dzœed{ied|ied}iged~ieduig eee«      ddvœdd€e
dd�œed‚iedƒ ee«      d„id…g ee
e eee«      «      dd†œedkid‡edˆid‰edŠigd‹edSig ee
e«      dzœd]edŒœg
Z'i Z(d�„ Z)dŽ„ Z*y�)�aK  

Build call-back mechanism for f2py2e.

Copyright 2000 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
$Date: 2005/07/20 11:27:58 $
Pearu Peterson

é   )Ú__version__)Ú
applyrulesÚ	debugcapiÚ
dictappendÚerrmessÚgetargsÚhasnoteÚisarrayÚ	iscomplexÚiscomplexarrayÚiscomplexfunctionÚ
isfunctionÚ
isintent_cÚisintent_hideÚisintent_inÚisintent_inoutÚisintent_nothideÚisintent_outÚ
isoptionalÚ
isrequiredÚisscalarÚisstringÚisstringfunctionÚissubroutineÚl_andÚl_notÚl_orÚoutmessÚreplaceÚ
stripcommaÚthrow_error)ÚcfuncszPtypedef #rctype#(*#name#_typedef)(#optargs_td##args_td##strarglens_td##noargs#);a^  
#begintitle#
typedef struct {
    PyObject *capi;
    PyTupleObject *args_capi;
    int nofargs;
    jmp_buf jmpbuf;
} #name#_t;

#if defined(F2PY_THREAD_LOCAL_DECL) && !defined(F2PY_USE_PYTHON_TLS)

static F2PY_THREAD_LOCAL_DECL #name#_t *_active_#name# = NULL;

static #name#_t *swap_active_#name#(#name#_t *ptr) {
    #name#_t *prev = _active_#name#;
    _active_#name# = ptr;
    return prev;
}

static #name#_t *get_active_#name#(void) {
    return _active_#name#;
}

#else

static #name#_t *swap_active_#name#(#name#_t *ptr) {
    char *key = "__f2py_cb_#name#";
    return (#name#_t *)F2PySwapThreadLocalCallbackPtr(key, ptr);
}

static #name#_t *get_active_#name#(void) {
    char *key = "__f2py_cb_#name#";
    return (#name#_t *)F2PyGetThreadLocalCallbackPtr(key);
}

#endif

/*typedef #rctype#(*#name#_typedef)(#optargs_td##args_td##strarglens_td##noargs#);*/
#static# #rctype# #callbackname# (#optargs##args##strarglens##noargs#) {
    #name#_t cb_local = { NULL, NULL, 0 };
    #name#_t *cb = NULL;
    PyTupleObject *capi_arglist = NULL;
    PyObject *capi_return = NULL;
    PyObject *capi_tmp = NULL;
    PyObject *capi_arglist_list = NULL;
    int capi_j,capi_i = 0;
    int capi_longjmp_ok = 1;
#decl#
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_start_clock();
#endif
    cb = get_active_#name#();
    if (cb == NULL) {
        capi_longjmp_ok = 0;
        cb = &cb_local;
    }
    capi_arglist = cb->args_capi;
    CFUNCSMESS("cb:Call-back function #name# (maxnofargs=#maxnofargs#(-#nofoptargs#))\n");
    CFUNCSMESSPY("cb:#name#_capi=",cb->capi);
    if (cb->capi==NULL) {
        capi_longjmp_ok = 0;
        cb->capi = PyObject_GetAttrString(#modulename#_module,"#argname#");
        CFUNCSMESSPY("cb:#name#_capi=",cb->capi);
    }
    if (cb->capi==NULL) {
        PyErr_SetString(#modulename#_error,"cb: Callback #argname# not defined (as an argument or module #modulename# attribute).\n");
        goto capi_fail;
    }
    if (F2PyCapsule_Check(cb->capi)) {
    #name#_typedef #name#_cptr;
    #name#_cptr = F2PyCapsule_AsVoidPtr(cb->capi);
    #returncptr#(*#name#_cptr)(#optargs_nm##args_nm##strarglens_nm#);
    #return#
    }
    if (capi_arglist==NULL) {
        capi_longjmp_ok = 0;
        capi_tmp = PyObject_GetAttrString(#modulename#_module,"#argname#_extra_args");
        if (capi_tmp) {
            capi_arglist = (PyTupleObject *)PySequence_Tuple(capi_tmp);
            Py_DECREF(capi_tmp);
            if (capi_arglist==NULL) {
                PyErr_SetString(#modulename#_error,"Failed to convert #modulename#.#argname#_extra_args to tuple.\n");
                goto capi_fail;
            }
        } else {
            PyErr_Clear();
            capi_arglist = (PyTupleObject *)Py_BuildValue("()");
        }
    }
    if (capi_arglist == NULL) {
        PyErr_SetString(#modulename#_error,"Callback #argname# argument list is not set.\n");
        goto capi_fail;
    }
#setdims#
#ifdef PYPY_VERSION
#define CAPI_ARGLIST_SETITEM(idx, value) PyList_SetItem((PyObject *)capi_arglist_list, idx, value)
    capi_arglist_list = PySequence_List(capi_arglist);
    if (capi_arglist_list == NULL) goto capi_fail;
#else
#define CAPI_ARGLIST_SETITEM(idx, value) PyTuple_SetItem((PyObject *)capi_arglist, idx, value)
#endif
#pyobjfrom#
#undef CAPI_ARGLIST_SETITEM
#ifdef PYPY_VERSION
    CFUNCSMESSPY("cb:capi_arglist=",capi_arglist_list);
#else
    CFUNCSMESSPY("cb:capi_arglist=",capi_arglist);
#endif
    CFUNCSMESS("cb:Call-back calling Python function #argname#.\n");
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_start_call_clock();
#endif
#ifdef PYPY_VERSION
    capi_return = PyObject_CallObject(cb->capi,(PyObject *)capi_arglist_list);
    Py_DECREF(capi_arglist_list);
    capi_arglist_list = NULL;
#else
    capi_return = PyObject_CallObject(cb->capi,(PyObject *)capi_arglist);
#endif
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_stop_call_clock();
#endif
    CFUNCSMESSPY("cb:capi_return=",capi_return);
    if (capi_return == NULL) {
        fprintf(stderr,"capi_return is NULL\n");
        goto capi_fail;
    }
    if (capi_return == Py_None) {
        Py_DECREF(capi_return);
        capi_return = Py_BuildValue("()");
    }
    else if (!PyTuple_Check(capi_return)) {
        capi_return = Py_BuildValue("(N)",capi_return);
    }
    capi_j = PyTuple_Size(capi_return);
    capi_i = 0;
#frompyobj#
    CFUNCSMESS("cb:#name#:successful\n");
    Py_DECREF(capi_return);
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_stop_clock();
#endif
    goto capi_return_pt;
capi_fail:
    fprintf(stderr,"Call-back #name# failed.\n");
    Py_XDECREF(capi_return);
    Py_XDECREF(capi_arglist_list);
    if (capi_longjmp_ok) {
        longjmp(cb->jmpbuf,-1);
    }
capi_return_pt:
    ;
#return#
}
#endtitle#
)zsetjmp.hÚ
CFUNCSMESSÚF2PY_THREAD_LOCAL_DECLz#maxnofargs#z#nofoptargs#zF    def #argname#(#docsignature#): return #docreturn#\n\
#docstrsigns#zc
{{}\verb@def #argname#(#latexdocsignature#): return #docreturn#@{}}
#routnote#

#latexdocstrsigns#z1def #argname#(#docsignature#): return #docreturn#)Ú
cbtypedefsÚbodyÚneedÚ
maxnofargsÚ
nofoptargsÚdocstrÚlatexdocstrÚdocstrshortÚseparatorsforÚdeclú
Úargsú,ÚoptargsÚ Ú	pyobjfromÚfreememÚargs_tdÚ
optargs_tdÚargs_nmÚ
optargs_nmÚ	frompyobjÚsetdimsÚdocstrsignsz\n"
"ÚlatexdocstrsignsÚlatexdocstrreqÚlatexdocstroptÚlatexdocstroutÚlatexdocstrcbsz/*decl*/z/*pyobjfrom*/z/*frompyobj*/ÚreturnÚ
strarglensz/*freemem*/Ústrarglens_tdÚstrarglens_nmÚnoargsz/*setdims*/z    Required arguments:z    Optional arguments:z    Return objects:z    Call-back functions:z\noindent Required arguments:z\noindent Optional arguments:z\noindent Return objects:z\noindent Call-back functions:z
--- #note#)r<   r=   Ú	docstrreqÚ	docstroptÚ	docstroutÚ	docstrcbsÚ	docreturnÚdocsignÚ
docsignoptr>   r?   r@   rA   Úroutnotez    #ctype# return_value = 0;z,    CFUNCSMESS("cb:Getting return_value->");a‡      if (capi_j>capi_i) {
        GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#,
          "#ctype#_from_pyobj failed in converting return_value of"
          " call-back function #name# to C #ctype#\n");
    } else {
        fprintf(stderr,"Warning: call-back function #name# did not provide"
                       " return value (index=%d, type=#ctype#)\n",capi_i);
    }z8    fprintf(stderr,"#showvalueformat#.\n",return_value);z#ctype#_from_pyobjr#   ÚGETSCALARFROMPYTUPLEz    return return_value;)r.   r:   r'   rB   Ú_checkzB    fprintf(stderr,"debug-capi:cb:#name#:%d:\n",return_value_len);z)#ctype# return_value,int return_value_lenzreturn_value,&return_value_lenz#ctype# ,intz.    CFUNCSMESS("cb:Getting return_value->\"");a      if (capi_j>capi_i) {
        GETSTRFROMPYTUPLE(capi_return,capi_i++,return_value,return_value_len);
    } else {
        fprintf(stderr,"Warning: call-back function #name# did not provide"
                       " return value (index=%d, type=#ctype#)\n",capi_i);
    }z:    fprintf(stderr,"#showvalueformat#\".\n",return_value);zstring.hÚGETSTRFROMPYTUPLEzreturn;)r4   r0   r8   r6   r:   r'   rB   rP   z<
#ifndef F2PY_CB_RETURNCOMPLEX
#ctype# *return_value
#endif
z3
#ifndef F2PY_CB_RETURNCOMPLEX
return_value
#endif
z0
#ifndef F2PY_CB_RETURNCOMPLEX
#ctype# *
#endif
zH
#ifdef F2PY_CB_RETURNCOMPLEX
    #ctype# return_value = {0, 0};
#endif
a      if (capi_j>capi_i) {
#ifdef F2PY_CB_RETURNCOMPLEX
        GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#,
          "#ctype#_from_pyobj failed in converting return_value of call-back"
          " function #name# to C #ctype#\n");
#else
        GETSCALARFROMPYTUPLE(capi_return,capi_i++,return_value,#ctype#,
          "#ctype#_from_pyobj failed in converting return_value of call-back"
          " function #name# to C #ctype#\n");
#endif
    } else {
        fprintf(stderr,
                "Warning: call-back function #name# did not provide"
                " return value (index=%d, type=#ctype#)\n",capi_i);
    }zÈ#ifdef F2PY_CB_RETURNCOMPLEX
    fprintf(stderr,"#showvalueformat#.\n",(return_value).r,(return_value).i);
#else
    fprintf(stderr,"#showvalueformat#.\n",(*return_value).r,(*return_value).i);
#endif
zP
#ifdef F2PY_CB_RETURNCOMPLEX
    return return_value;
#else
    return;
#endif
z#ctype#)r2   r9   r7   r.   r:   rB   r'   rP   z        #pydocsignout#z"\item[]{{}\verb@#pydocsignout#@{}}z#rname#,)rI   r@   rK   rP   )rP   rB   z        #pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.z
#varname#,)	rH   rG   rI   r?   r>   r@   rL   rM   Údependz#ctype# #varname_i#z#ctype# *#varname_i#_cb_capiz#ctype# *#varname_i#z#varname_i#z#varname_i#_cb_capiz	#ctype# *z,int #varname_i#_cb_lenz,intz,#varname_i#_cb_len)r0   r8   r6   r'   rC   rD   rE   z/    #ctype# #varname_i#=(*#varname_i#_cb_capi);z8intent(c,out) is forbidden for callback scalar argumentsz)    CFUNCSMESS("cb:Getting #varname#->");zÏ    if (capi_j>capi_i)
        GETSCALARFROMPYTUPLE(capi_return,capi_i++,#varname_i#_cb_capi,#ctype#,"#ctype#_from_pyobj failed in converting argument #varname# of call-back function #name# to C #ctype#\n");z7    fprintf(stderr,"#showvalueformat#.\n",#varname_i#);z@    fprintf(stderr,"#showvalueformat#.\n",*#varname_i#_cb_capi);zK    fprintf(stderr,"#showvalueformat#.\n",(#varname_i#).r,(#varname_i#).i);z]    fprintf(stderr,"#showvalueformat#.\n",(*#varname_i#_cb_capi).r,(*#varname_i#_cb_capi).i);)r.   Úerrorr:   r'   rP   z„    if (cb->nofargs>capi_i)
        if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1(#varname_i#)))
            goto capi_fail;zŽ    if (cb->nofargs>capi_i)
        if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#_cb_capi)))
            goto capi_fail;zpyobj_from_#ctype#1zpyarr_from_p_#ctype#1)r4   r'   rP   Ú	_optionalz+    CFUNCSMESS("cb:Getting #varname#->\"");zf    if (capi_j>capi_i)
        GETSTRFROMPYTUPLE(capi_return,capi_i++,#varname_i#,#varname_i#_cb_len);zP    fprintf(stderr,"#showvalueformat#\":%d:.\n",#varname_i#,#varname_i#_cb_len);)r:   r'   rP   ze    fprintf(stderr,"debug-capi:cb:#varname#=#showvalueformat#:%d:\n",#varname_i#,#varname_i#_cb_len);z›    if (cb->nofargs>capi_i)
        if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1size(#varname_i#,#varname_i#_cb_len)))
            goto capi_fail;zÜ    if (cb->nofargs>capi_i) {
        int #varname_i#_cb_dims[] = {#varname_i#_cb_len};
        if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#,#varname_i#_cb_dims)))
            goto capi_fail;
    }zpyobj_from_#ctype#1sizez6    npy_intp #varname_i#_Dims[#rank#] = {#rank*[-1]#};z    #cbsetdims#;)r.   r;   rP   Ú_dependz0    fprintf(stderr,"debug-capi:cb:#varname#\n");a€      if (cb->nofargs>capi_i) {
        /* tmp_arr will be inserted to capi_arglist_list that will be
           destroyed when leaving callback function wrapper together
           with tmp_arr. */
        PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,
          #rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,#elsize#,
          NPY_ARRAY_CARRAY,NULL);
a€      if (cb->nofargs>capi_i) {
        /* tmp_arr will be inserted to capi_arglist_list that will be
           destroyed when leaving callback function wrapper together
           with tmp_arr. */
        PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,
          #rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,#elsize#,
          NPY_ARRAY_FARRAY,NULL);
z•
        if (tmp_arr==NULL)
            goto capi_fail;
        if (CAPI_ARGLIST_SETITEM(capi_i++,(PyObject *)tmp_arr))
            goto capi_fail;
})r4   rP   rT   zì    if (capi_j>capi_i) {
        PyArrayObject *rv_cb_arr = NULL;
        if ((capi_tmp = PyTuple_GetItem(capi_return,capi_i++))==NULL) goto capi_fail;
        rv_cb_arr =  array_from_pyobj(#atype#,#varname_i#_Dims,#rank#,F2PY_INTENT_INz|F2PY_INTENT_Ca8  ,capi_tmp);
        if (rv_cb_arr == NULL) {
            fprintf(stderr,"rv_cb_arr is NULL\n");
            goto capi_fail;
        }
        MEMCOPY(#varname_i#,PyArray_DATA(rv_cb_arr),PyArray_NBYTES(rv_cb_arr));
        if (capi_tmp != (PyObject *)rv_cb_arr) {
            Py_DECREF(rv_cb_arr);
        }
    }z    fprintf(stderr,"<-.\n");ÚMEMCOPY)rK   rP   c                 óœ   — g t         | d   <   | d   D ]8  }|d   dk(  sŒ|d   D ]%  }|rt        || d   «       Œt        d| d   z  «       Œ' Œ: y )NÚnamer&   ÚblockÚ	interfacezwarning: empty body for %s
)Úcb_mapÚbuildcallbackr   )ÚmÚbiÚbs      úJ/var/www/html/acx/venv/lib/python3.12/site-packages/numpy/f2py/cb_rules.pyÚbuildcallbacksra     si   € Ø„Fˆ1ˆV‰9ÑØ�‰iò JˆØˆg‰;˜+Ó%Ø˜‘Zò J�ÙÜ! ! Q v¡YÕ/äÐ:¸aÀ¹iÑHÕIñ	JñJó    c                 ó‚	  — ddl m} t        d| d   ›d|›d�«       t        | «      \  }}||_        | d   }|j                  | |«      }t        i |«      }t        |   j                  | d   |d   g«       t        D ]/  }d|v r |d   | «      sd|vsŒt        ||| «      }	t        ||	«      }Œ1 i }
t        |«      D ]}  \  }}|j                  |||   |¬	«      }||
|<   t        D ]S  }d
|v rŒd|v rt        ||   «      rŒd|v r |d   ||   «      sd|vsŒ2t        ||||   «      }	t        ||	«      }d|v sŒS Œ} Œ |D ]g  }|
|   }t        D ]W  }d
|v rŒd|vsd|v rt        ||   «      rŒd|v r |d   ||   «      sd|vsŒ6t        ||||   «      }	t        ||	«      }d|v sŒW Œg Œi |D ]U  }|
|   }t        D ]E  }d
|vrŒd|v rŒd|v r |d   ||   «      sd|vsŒ$t        ||||   «      }	t        ||	«      }d|v sŒE ŒU ŒW d|v r;d|v r7t!        |d   t"        «      r$|d   dgz   |d<   |d   dgz   |d<   |d   dgz   |d<   t!        |d   t"        «      rt%        t'        dd|d   i«      «      |d<   t%        t'        dd|d   i«      «      }|dk(  rt%        t'        dd|d   i«      «      |d<   nt'        d|d   |dœ«      |d<   |d   j'                  dd«      |d<   |d   j'                  dd «      |d<   g |d!<   g |d"<   d#D ]g  }||v r!t!        ||   t"        «      r|d!   ||   z   |d!<   d$|z   }||v sŒ2t!        ||   t"        «      sŒF|d"   ||   d%d z   d&gz   ||   dd  z   d'gz   |d"<   Œi d|vrd|d<   d|d(<   d|d)<   |j)                  d«      s'|j)                  d«      s|j)                  d*«      sd+|d,<   t        t*        |«      }	|	d-   t,        j.                  |d   <   t!        |	d.   t0        «      r	|	d.   g|	d.<   d.|v r?t,        j2                  j5                  «       D ]  }||d.   v sŒ|	d.   j                  |«       Œ  |	d/   t,        j6                  |d   d0z   <   |	d.   j                  |d   d0z   «       |	d.   t,        j8                  |d   <   |	d1   |	d2   |	d3   |	d4   |d5   d6œ|j:                  |d   <   t        d7|	d8   z  «       y )9Nr   )Ú	capi_mapsz(    Constructing call-back function "cb_rX   Ú_in_z"
ÚvarsrP   )ÚindexrU   rT   Ú_breakr0   r2   z(
#ifndef F2PY_CB_RETURNCOMPLEX
,
#endif
r9   r7   rK   z#docreturn#z#docsignopt#rM   r3   z	#docsign#rL   Údocsignaturez#docsign#[#docsignopt#])rL   rM   Ú_z\_Úlatexdocsignaturer1   z, r<   r=   )rG   rH   rI   rJ   Úlatexé    z\begin{description}z\end{description}r6   r8   rC   ÚvoidrF   r&   r'   r%   Ú_typedefr(   r)   r*   r+   Úargname)r(   r)   r*   r+   rp   z	      %s
r,   )r3   rd   r   r   ÚdepargsÚcb_routsign2mapr   r[   ÚappendÚcb_rout_rulesr   Ú	enumerateÚcb_sign2mapÚcb_arg_rulesr   r   Ú
isinstanceÚlistr    r   ÚgetÚcb_routine_rulesr"   Ú	callbacksÚstrÚtypedefsÚkeysÚtypedefs_generatedÚneedsÚlcb2_map)ÚroutÚumrd   r0   rq   ÚvarÚvrdÚrdÚrÚarÚsavevrdÚiÚar2   ÚkÚts                   r`   r\   r\     s  € ÝåØ�&‹\š2ðô  ä˜D“M�M€Dˆ'Ø€IÔØ
ˆv‰,€CØ
×
#Ñ
# D¨"Ó
-€CÜ	�B˜Ó	€BÜ
ˆ2�J×Ñ�t˜F‘| R¨¡ZÐ0Ô1Üò $ˆØ˜‰M˜k˜a ™k¨$Ô/°XÀQÒ5FÜ˜A˜s DÓ)ˆBÜ˜B Ó#‰Bð$ð €GÜ˜$“ò ‰ˆˆ1Ø×#Ñ# A s¨1¡v°QÐ#Ó7ˆØˆ�‰
Üò 		ˆAØ˜A‰~ØØ˜aÑ¤J¨s°1©vÔ$6ØØ˜A‘ + ! H¡+¨c°!©fÔ"5¸8È1Ò;LÜ  3¨¨A©Ó/�Ü  BÓ'�Ø˜q’=Ùñ		ðð ò ˆØ�a‰jˆÜò 		ˆAØ˜A‰~ØØ 1Ñ$¨+¸Ñ*:¼zÈ#ÈaÉ&Ô?QØØ˜A‘ + ! H¡+¨c°!©fÔ"5¸8È1Ò;LÜ  3¨¨A©Ó/�Ü  BÓ'�Ø˜q’=Ùñ		ðð ò ˆØ�a‰jˆÜò 		ˆAØ Ñ!ØØ˜aÑØØ˜A‘ + ! H¡+¨c°!©fÔ"5¸8È1Ò;LÜ  3¨¨A©Ó/�Ü  BÓ'�Ø˜q’=Ùñ		ðð ��|˜	 R™Ü�b˜‘m¤TÔ*Ø˜y™Mð .ð -ñ ˆBˆy‰Mð
  " ,Ñ/ð 4ð 3ñ  ˆBˆ|Ñð
  " ,Ñ/ð 4ð 3ñ  ˆBˆ|Ñô
 �"�[‘/¤4Ô(Ü$Ü�M K°°K±Ð#AÓBóDˆˆ;‰äœ Ø".°°<Ñ0@Ð!Aó#ó $€Gð �"‚}Ü'Ü�K )¨R°	©]Ð!;Ó<ó>ˆˆ>Òô %Ð%>Ø13°I±Ø4;ñ&(ó)ˆˆ>Ñð ! Ñ0×8Ñ8¸¸eÓD€BÐÑØ Ð!4Ñ5×=Ñ=¸cÀ4ÓH€BÐÑØ€B€}ÑØ€BÐÑØAò 'ˆØ�‰7”z " Q¡%¬Ô.Ø " =Ñ 1°B°q±EÑ 9ˆBˆ}ÑØ�a‰KˆØ�Š7”z " Q¡%¬Õ.Ø%'Ð(:Ñ%;¸bÀ¹eÀAÀa¸jÑ%HØ'Ð(ñ&)Ø+-¨a©5°°¨9ñ&5à%Ð&ñ&'ˆBÐ!Ò"ð'ð �RÑØˆˆ6‰
Øˆˆ9‰Øˆˆ9‰Ø�F‰F�6ŒN˜bŸf™f YÔ/°2·6±6¸,Ô3GØˆˆ8‰ä	Ô$ bÓ	)€BØ#% f¡:„F×Ñ�R˜‘ZÑ Ü�"�V‘*œcÔ"Ø˜‘j�\ˆˆ6‰
à��|Ü—‘×%Ñ%Ó'ò 	%ˆAØ�B�v‘JŠØ�6‘
×!Ñ! !Õ$ð	%ð :<¸LÑ9I„F×Ñ˜b ™j¨:Ñ5Ñ6Ø€v�J×Ñ�b˜‘j :Ñ-Ô.Ø! &™z„F‡L�L��F‘Ñà46°|Ñ4DØ46°|Ñ4DØ02°8±Ø57¸Ñ5FØ13°I±ñ	&(€I×Ñ�r˜&‘zÑ"ô ˆL˜B˜}Ñ-Ñ.Ô/Ø
rb   N)+Ú__doc__r3   r   Úauxfuncsr   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"   ÚversionÚf2py_versionr{   rt   rw   r[   ra   r\   © rb   r`   ú<module>r”      sé  ðñõ ÷÷ ÷ ÷ ÷ ÷ ÷ ÷ õ à×"Ñ"€ð eð[òx AØ Ø ððð
 GñSjÐ ðXØð 	˜& $ð 	Ø  #ð	Ø'0°"ð	Ø6AÀ4ð	ØIRÐTXð	à# Sð	à*6¸ð	ð $ Sð	ð +7¸ð	ð & tð		ð .7¸ð		ð
 (¨ð	ð -¨dð	ð +¨Dð	ð 3CÀDð	ð +¨Dð	ð 3CÀDð	ðð 	�
ðð (¨ðð ;FÀðð 	�ðð ˜rðð $,¨Rðð 2>¸rðð DMÈmðð 	�2ðð $ Rðð *9¸"ðð 	�2ðð $ Rðð *9¸"ðð 	�"ðð  	�=ð!ð" ¨rØ.Ø.Ø*Ø/Ø B°bØ:Ø:Ø6Ø;Ø˜l©E°'«N¸BÐ?ò7ð: 0àÐFÐGð	ð ØHðJð
ð &¨	°<Ð'@ÐBXÐYØ,Ù˜
¡EÐ*:Ó$;¹UÐCTÓ=UÓVñ%ð*  Ð!fÐgØ;Ø3Ø!àÐIÐJð	ð ØKðMð
ð &¨	°<Ð'@ØÐ0ð2àØ"ñ)ð.ð
ð
ð
ð ÐFÐGð	ð  ð ð ð%
ð4ð &¨	°<Ð'@ØÐ3°Yð@à#ñq9ðt +Ø>Ø  ,Ð/ð1àØñ	ð
  yÑ1ðMG€ñV ˜JÐ(8Ó9Ð;PÐQÙ˜JÐ(8Ó9Ð;PÐQØ"Ð$<Ð=Ù  Ð-=Ó>ÐAdØBIÈ<ÐAXðAZð [á  Ð-=Ó>ÐAdØBIÈ<ÐAXðAZð [à'Ð*PÙ+0°¸-Ó+HÈ,Ù+0°Ð:JÓ+KÐM]ð+_ð*`ð añ ˜*Ð&6Ó7¸ÐFÙ˜ZÐ)9Ó:¸LÐIØññ" �(˜JÓ'Ð)>Ù�(™E *Ó-Ó.Ð0NØÐ+ØÐ+ð	
ñ �(˜JÓ'¨Ù�(™E *Ó-Ó.Ð0EØ�]Ø�mð	
ñ �(˜JÓ'¨Ù�(™E *Ó-Ó.°Ø�[Ø�ið	
ñ �h ¨Ó2°IÐ>àÐ!:Ð;Ø" FÐ+à"Ð$9Ð:ñ1ñ6 �zÓ"Ð$UÐVÙ˜
 LÙ#Ð$^Ó_óaàðð !Ð"MÐNØ#ð kðlá˜Y©©e°IÓ.>À
Ó(KÓLØTðVá˜Y©©e°IÓ.>ÁÀzÓ@RÓ(SÓTØ]ð_á˜Y©¨i¸Ó(DÓEØhðjá˜Y©¨i¹À
Ó9KÓ(LÓMØzð|ðð Ð!5Ð7MÐ NÐOØ˜\Ð*ð,àñ'ð* #ð %ð  ð &ð (ð  ð	!ð Ð4Ð5Ø Ð"9Ð:Ø˜YÐ'ð)ñ ˜Ð"2Ó3Øñð !Ð"PÐQðSà Økðmðð Ð/Ø˜\Ð*¨Jð8á˜ ,Ó/ñ
ð ð9ð;ð ð ð  ð &ð (	ð 
ðð Ð8Ð9Ø Ð"9Ð:ð<á˜Ð"2Ó3Øñ%ð, IØ%ØØñ	ð !Ð"UÐVØ!ð $ñ ˜ZÓ(ð +ðð&ð)ñ4 ˜Ð!1±4¸À^Ó3TÓUØñ9ð< !Ð"MÐNðXð "Ð#3Ð4ð		ð !Ð"AÐBð!ð$ ˜^¨YÐ7Ð8Ù˜ Ó.ñ)ð, "ØñðGg€ðT 
€òJó|rb   