Ë
    pPêju ã                  óz  — d Z ddlm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
mZmZmZmZmZmZmZmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZmZ ddlm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ ddlKmLZL ddlMmNZN ddlOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ ddl[m\Z\m]Z]m^Z^ ddl_m`Z`maZa ddlbmcZc ddldmeZe ddlfmgZg ddlhmiZi ddljmkZkmlZl dd lmmnZn dd!lompZp dd"lqmrZr dd#lsmtZt dd$lumvZv dd%lwmxZx dd&lymzZz dd'l{m|Z| dd(l}m~Z~ dd)lm€Z€ e�e‚e   eƒdz  f   Z„e‚e„   Z…e‚e�eƒeƒf      Z† G d*„ d+«      Z‡ G d,„ d-e«      Zˆ	 	 dD	 	 	 	 	 	 	 	 	 	 	 	 	 dEd.„Z‰	 	 	 	 	 	 	 	 	 	 	 	 dFd/„ZŠ	 	 	 	 	 	 	 	 	 	 dGd0„Z‹	 	 	 	 	 	 	 	 	 	 	 	 dHd1„ZŒ	 	 	 	 	 	 dId2„Z�dJd3„ZŽdKd4„Z�	 	 	 	 	 	 	 	 	 	 dLd5„Z�	 	 	 	 	 	 	 	 	 	 dMd6„Z‘dNd7„Z’dOd8„Z“	 	 	 	 	 	 	 	 	 	 dPd9„Z”dQd:„Z•dRd;„Z–dSd<„Z— G d=„ d>«      Z˜ e	d?«      Z™dTd@„ZšdUdA„Z›dVdB„ZœdWdC„Z�y)XzHGenerate C code for a Python C extension module from Python source code.é    )ÚannotationsN)ÚIterable)ÚTypeVar)ÚBuildResultÚBuildSourceÚStateÚbuildÚcompute_hashÚcreate_metastoreÚget_cache_namesÚsorted_components)ÚCompileError)ÚFileSystemCache)ÚMypyFileÚTypeInfo)ÚOptions)ÚPluginÚReportConfigContext)Úhash_digestÚ
json_dumps)Úfind_class_dependenciesÚfind_implicit_op_dependencies)Úc_string_initializer)ÚEmitterÚEmitterContextÚHeaderDeclarationÚc_array_initializerÚnative_function_doc_initializer)Úgenerate_classÚgenerate_class_reuseÚgenerate_class_type_decl)Úgenerate_native_functionÚnative_function_header)Ú generate_legacy_wrapper_functionÚgenerate_wrapper_functionÚlegacy_wrapper_function_headerÚwrapper_function_header)ÚLiterals)Ú
EXT_SUFFIXÚGENERATOR_HELPER_NAMEÚIS_FREE_THREADEDÚMODULE_PREFIXÚPREFIXÚRUNTIME_C_FILESÚTOP_LEVEL_NAMEÚTYPE_VAR_PREFIXÚmodule_exec_nameÚmodule_import_state_nameÚmodule_init_nameÚmodule_init_only_nameÚmodule_lock_api_nameÚshared_lib_nameÚshort_id_from_name)Úcatch_errors)ÚErrors)	ÚLIBRT_BASE64ÚLIBRT_RANDOMÚLIBRT_STRINGSÚLIBRT_THREADINGÚ
LIBRT_TIMEÚ
LIBRT_VECSÚCapsuleÚ	HeaderDepÚ	SourceDep)ÚFuncIR)ÚModuleIRÚ	ModuleIRsÚdeserialize_modules)Ú	DeserMapsÚLoadLiteral)ÚRType)Úbuild_ir)ÚMapper)Úload_type_map)ÚNameGeneratorÚexported_name)ÚCompilerOptions)Úborrow_generator_attrs)Údo_copy_propagation)Úinsert_exception_handling)Údo_flag_elimination)Úinsert_event_trace_logging)Úlower_ir)Úinsert_ref_count_opcodes)Úinsert_spills)Úinsert_uninit_checksc                  ó   — e Zd ZdZdd„Zy)ÚMarkedDeclarationz(Add a mark, useful for topological sort.c                ó    — || _         d| _        y )NF)ÚdeclarationÚmark)Úselfr\   r]   s      ú]/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/codegen/emitmodule.pyÚ__init__zMarkedDeclaration.__init__   s   € Ø&ˆÔØˆ�	ó    N)r\   r   r]   ÚboolÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r`   © ra   r_   rZ   rZ   |   s
   „ Ù2ôra   rZ   c                  óL   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zdd„Zd	d„Zˆ xZS )
ÚMypycPlugina  Plugin for making mypyc interoperate properly with mypy incremental mode.

    Basically the point of this plugin is to force mypy to recheck things
    based on the demands of mypyc in a couple situations:
      * Any modules in the same group must be compiled together, so we
        tell mypy that modules depend on all their groupmates.
      * If the IR metadata is missing or stale or any of the generated
        C source files associated missing or stale, then we need to
        recompile the module so we mark it as stale.
    c                óÌ   •— t         ‰| �  |«       i | _        |D ]/  \  }}t        d„ |D «       «      }|D ]  }||f| j                  |<   Œ Œ1 || _        t        |d¬«      | _        y )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­w©N)Úmodule)Ú.0Úsources     r_   ú	<genexpr>z'MypycPlugin.__init__.<locals>.<genexpr>–   s   è ø€ ÒA¨v˜VŸ]�]ÑAùó   ‚F)Úparallel_worker)Úsuperr`   Ú	group_mapÚsortedÚcompiler_optionsr   Ú	metastore)	r^   Úoptionsrx   ÚgroupsÚsourcesÚnameÚmodulesÚidÚ	__class__s	           €r_   r`   zMypycPlugin.__init__�   su   ø€ ô 	‰Ñ˜Ô!ØBDˆŒØ#ò 	5‰MˆG�TÜÑA¸ÔAÓAˆGØò 5�Ø&*¨G _�—‘˜rÒ"ñ5ð	5ð
 !1ˆÔÜ)¨'À5ÔIˆ�ra   c                ó(  — |j                   |j                  |j                  }}}|| j                  vry |s| j                  |   S t	        ||| j
                  «      \  }}}t        ||| j
                  «      }	 | j                  j                  |«      }| j                  j                  |«      }	t        j                  |	«      }
t        |«      |
d   k7  ry |
d   j                  «       D ]o  \  }}	 t        t        j                  j!                  | j"                  j$                  |«      d«      5 }|j                  «       }d d d «       t        «      }||k7  sŒo y  | j                  |   S # t        $ r Y y w xY w# 1 sw Y   Œ;xY w# t        $ r Y  y w xY w)NÚ	meta_hashÚ
src_hashesÚrb)r   ÚpathÚis_checkrv   r   rz   Úget_ir_cache_namery   ÚreadÚFileNotFoundErrorÚjsonÚloadsr   ÚitemsÚopenÚosÚjoinrx   Ú
target_dir)r^   Úctxr   r…   r†   Ú	meta_pathÚ_Úir_pathÚ	meta_jsonÚir_jsonÚir_dataÚhashÚfÚcontentsÚ	real_hashs                  r_   Úreport_config_datazMypycPlugin.report_config_data�   s€  € ð !ŸV™V S§X¡X¨s¯|©|�(ˆDˆà�T—^‘^Ñ#Øñ Ø—>‘> "Ñ%Ð%ô *¨"¨d°D·L±LÓA‰ˆ	�1�aÜ# B¨¨d¯l©lÓ;ˆð	ØŸ™×+Ñ+¨IÓ6ˆIØ—n‘n×)Ñ)¨'Ó2ˆGô —*‘*˜WÓ%ˆô �yÓ! W¨[Ñ%9Ò9Øð " ,Ñ/×5Ñ5Ó7ò 	‰JˆD�$ðÜœ"Ÿ'™'Ÿ,™, t×'<Ñ'<×'GÑ'GÈÓNÐPTÓUð (ÐYZØ Ÿv™v›x�H÷(ô $ HÓ-ˆIØ�yÓ Ùð	ð �~‰~˜bÑ!Ð!øô5 !ò 	ñ ð		ú÷$(ð (ûä$ò Úðús<   Á86E) Ã/>FÄ-E8Ä>FÅ)	E5Å4E5Å8F	Å=FÆ	FÆFc                ó„   — | j                   j                  |j                  d g f«      d   D �cg c]  }d|df‘Œ	 c}S c c}w )Né   é
   éÿÿÿÿ)rv   ÚgetÚfullname)r^   Úfiler   s      r_   Úget_additional_depszMypycPlugin.get_additional_depsÎ   s<   € à'+§~¡~×'9Ñ'9¸$¿-¹-È$ÐPRÈÓ'TÐUVÑ'WÖX ��R˜’ÒXÐXùÒXs   ®=c                óh  — |j                   | j                  vr
t        «       S t        «       }|j                  j	                  «       D ]h  }|j
                  }t        |t        «      sŒ |j                  |j                   k(  sŒ:|j                  dd D ]  }|j                  |j                  «       Œ Œj |S )a=  Modules defining MRO ancestors of classes defined in this module.

        The generated C for a class (vtable arrays, getter/setter tables,
        object struct) references every inherited method/attribute of every
        ancestor, including ancestors defined in modules this module does
        not import directly. Recording them as indirect dependencies makes
        an ancestor's interface change re-trigger type checking (and hence
        C regeneration) of this module. Only top-level classes are scanned:
        mypyc rejects nested class definitions.
        rž   N)r¢   rv   ÚsetÚnamesÚvaluesÚnodeÚ
isinstancer   Úmodule_nameÚmroÚadd)r^   r£   ÚmodsÚsymr©   Úancestors         r_   Úget_additional_indirect_depsz(MypycPlugin.get_additional_indirect_depsÒ   s”   € ð �=‰= §¡Ñ.Ü“5ˆLä›ˆØ—:‘:×$Ñ$Ó&ò 	3ˆCØ—8‘8ˆDÜ˜$¤Õ)¨d×.>Ñ.>À$Ç-Á-Ó.OØ $§¡¨¨ ò 3�HØ—H‘H˜X×1Ñ1Õ2ñ3ð	3ð
 ˆra   )rz   r   rx   rO   r{   ÚGroupsrc   rd   )r‘   r   rc   z#tuple[str | None, list[str]] | None)r£   r   rc   zlist[tuple[int, str, int]])r£   r   rc   úset[str])	re   rf   rg   rh   r`   rœ   r¤   r±   Ú__classcell__)r€   s   @r_   rk   rk   „   sC   ø„ ñ	ðJØðJØ2AðJØKQðJà	õJó/"óbY÷ra   rk   c                óf  — |j                   sJ d«       ‚t        |||«      }	 t        | ||||g¬«      }|j                  j	                  «        |j
                  r9|j                  j                  j	                  «        t        |j
                  «      ‚|S # |j                  j	                  «        w xY w)Nz!strict_optional must be turned on)r|   rz   Úalt_lib_pathÚfscacheÚextra_plugins)Ústrict_optionalrk   r	   ry   ÚcloseÚerrorsÚmanagerr   )r|   rz   rx   r{   r·   r¶   Úmypyc_pluginÚresults           r_   Úparse_and_typecheckr¿   é   s£   € ð ×"Ò"ÐGÐ$GÓGÐ"Ü˜wÐ(8¸&ÓA€Lð	'ÜØØØ%ØØ'˜.ô
ˆð 	×Ñ×$Ñ$Ô&Ø‡}‚}Ø�‰× Ñ ×&Ñ&Ô(Ü˜6Ÿ=™=Ó)Ð)Ø€Møð	 	×Ñ×$Ñ$Õ&ús   ¢B ÂB0c                óT  — |j                   r0t        dj                  dj                  d„ | D «       «      «      «       t	        | |j
                  |j                  |||«      }|j                  dkD  r|S i }|j                  «       D ]/  }|j                  D ]  }|j                  sŒ|||j                  <   Œ  Œ1 |j                  «       D �]Q  }|j
                  |j                     j                  }	|j                  D ]â  }
t        |	|
j                  «      5  t!        |
|j"                  «       t%        |
|j"                  «       |
|v rt'        |
||
   «       t)        |
«       |
|v rt+        |
||
   «       |j,                  rt/        |
|«       t1        |
|«       t3        |
«      }|�|j4                  j7                  |«       t9        |
|«       t;        |
|«       ddd«       Œä |j                  D ]+  }t=        |«      }|€Œ|j4                  j7                  |«       Œ- �ŒT |S # 1 sw Y   �Œ.xY w)að  Compile an SCC into ModuleIRs.

    Any modules that this SCC depends on must have either been compiled,
    type checked, or loaded from a cache into mapper.

    Arguments:
        scc: The list of MypyFiles to compile
        result: The BuildResult from the mypy front-end
        mapper: The Mapper object mapping mypy ASTs to class and func IRs
        compiler_options: The compilation options
        errors: Where to report any errors encountered

    Returns the IR of the modules.
    zCompiling {}ú, c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrn   )r}   )rp   Úxs     r_   rr   z$compile_scc_to_ir.<locals>.<genexpr>  s   è ø€ Ò-B¸¨a¯f­fÑ-Bùrs   r   N)ÚverboseÚprintÚformatr�   rJ   ÚgraphÚtypesÚ
num_errorsr¨   ÚclassesÚenv_user_functionr¢   ÚxpathÚ	functionsr8   ÚlinerX   Ústrict_traceback_checksrR   rP   rV   rW   Ú	log_tracerT   rU   r   ÚdependenciesÚupdaterQ   rS   r   )Úsccr¾   Úmapperrx   r»   r~   Úgenerator_spill_ownersro   ÚclsÚmodule_pathÚfnÚdepsÚcls                r_   Úcompile_scc_to_irrÛ     s  € ð, ×ÒÜˆn×#Ñ# D§I¡IÑ-B¸cÔ-BÓ$BÓCÔDô �s˜FŸL™L¨&¯,©,¸Ð@PÐRXÓY€GØ×Ñ˜1ÒØˆàÐØ—.‘.Ó"ò DˆØ—>‘>ò 	DˆCØ×$Ó$Ø@CÐ& s×'<Ñ'<Ò=ñ	DðDð
 —.‘.Ó"ó !1ˆØ—l‘l 6§?¡?Ñ3×9Ñ9ˆØ×"Ñ"ò 	:ˆBÜ˜k¨2¯7©7Ó3ñ :ä$ RÐ)9×)QÑ)QÔRä)¨"Ð.>×.VÑ.VÔWØÐ/Ñ/Ü*¨2Ð/EÀbÑ/IÔJä(¨Ô,àÐ/Ñ/Ü! "Ð&<¸RÑ&@ÔAà#×-Ò-Ü.¨rÐ3CÔDô ˜Ð-Ô.ä4°RÓ8�ØÐ#Ø×'Ñ'×.Ñ.¨tÔ4ä# BÐ(8Ô9Ü# BÐ(8Ô9÷1:ð :ð	:ð8 —.‘.ò 	1ˆBÜ*¨2Ó.ˆDØÑØ×#Ñ#×*Ñ*¨4Õ0ò	1ð=!1ðF €N÷A:ñ :ús   ÄCHÈH'c                ó
  ‡ — t        i i «      }i }t        ‰ j                  «      D �]P  }t        |j                  «      D �cg c]  }‰ j                  |   ‘Œ }}|D �	cg c]4  }	|	j
                  |j                  v sŒ|	j                  sŒ)|	j                  ‘Œ6 }
}	|
sŒut        ˆ fd„|j                  D «       «      }|rt        |
‰ ||«       Œ¤t        |
‰ |||«      }|j                  |«       |j                  «       D ]z  }|j                  D ](  }|j                  j                  |j                  |«       Œ* |j                   D ]2  }|j                   j                  |j"                  j
                  |«       Œ4 Œ| �ŒS |S c c}w c c}	w )z¡Compile a collection of modules into ModuleIRs.

    The modules to compile are specified as part of mapper's group_map.

    Returns the IR of the modules.
    c              3  óN   •K  — | ]  }|‰j                   j                  v–— Œ y ­wrn   )r¼   Úrechecked_modules)rp   r   r¾   s     €r_   rr   z(compile_modules_to_ir.<locals>.<genexpr>a  s    øè ø€ ÒUÀ2�B˜fŸn™n×>Ñ>Ô>ÑUùs   ƒ"%)rG   r   rÇ   rw   Úmod_idsr   rv   ÚtreeÚallÚload_scc_from_cacherÛ   rÒ   r¨   rÊ   Ú
setdefaultr¢   rÍ   Údecl)r¾   rÔ   rx   r»   Ú	deser_ctxr~   rÓ   r   Ú
scc_statesÚstÚtreesÚfreshÚscc_irÚ	module_irrÚ   rØ   s   `               r_   Úcompile_modules_to_irrì   M  s_  ø€ ô ˜"˜bÓ!€IØ€Gô ! §¡Ó.ó CˆÜ17¸¿¹Ó1DÖE¨2�f—l‘l 2Ó&ÐEˆ
ÐEØ#-ÖW˜R°·±¸&×:JÑ:JÒ1JÈrÏwËw�—“ÐWˆÐWáØäÓUÈÏÉÔUÓUˆÙÜ  v¨v°yÕAä& u¨f°fÐ>NÐPVÓWˆFØ�N‰N˜6Ô"ð $Ÿ]™]›_ò C�	Ø#×+Ñ+ò B�BØ×%Ñ%×0Ñ0°·±¸bÕAðBà#×-Ñ-ò C�BØ×'Ñ'×2Ñ2°2·7±7·:±:¸rÕBñCòCð!Cð, €Nùò+ FùÚWs   Á E;ÁF Á:F ÂF c                óP  — | D ���ci c]:  \  }}|D ]0  }|j                   |j                  |j                      j                  “Œ2 Œ< }}}}t        | D ���cg c]  \  }}|D �cg c]  }|j                   ‘Œ c}‘Œ! c}}}|j                  ¬«      }	i }
| D ]y  \  }}|D �ci c]*  }|j                   |v r|j                   ||j                      “Œ, }}|st        ||«      |
|<   ŒMt        ||||j                  |	|«      }|j                  «       |
|<   Œ{ |
S c c}}}w c c}w c c}}}w c c}w )z•Compile a collection of ModuleIRs to C source text.

    Returns a dictionary mapping group names to a list of (file name,
    file text) pairs.
    )Úseparate)	ro   rÇ   rÌ   rM   rî   Ú_load_cached_group_filesÚGroupGeneratorrv   Úgenerate_c_for_modules)r{   r~   r¾   rÔ   rx   r|   r“   rq   Úsource_pathsr§   ÚctextÚgroup_sourcesÚ
group_nameÚgroup_modulesÚ	generators                  r_   Úcompile_ir_to_crø   s  sT  € ð !÷ð áˆG�QØòð ð 	�‰�v—|‘| F§M¡MÑ2×8Ñ8Ñ8ðØð€Lò ô ØAG×HÐH±:°7¸A gÖ	.˜Fˆ&�-‹-Ô	.ÔHØ!×*Ñ*ô€Eð 68€EØ%+ò ?Ñ!ˆ�zð (ö
àØ�}‰} Ñ'ð �M‰M˜7 6§=¡=Ñ1Ñ1ð
ˆð 
ñ
 ô !9¸ÈÓ OˆE�*ÑØÜ"Ø˜<¨°V×5EÑ5EÀuÐN^ó
ˆ	ð &×<Ñ<Ó>ˆˆjÒð#?ð& €LùôCùò 
/ùÔHùò
s#   ‡?DÁDÁ!DÁ4DÂ/D#ÄDc                óš  — | D ]’  }|j                   j                  |j                  «      }|€Œ+	 |j                  j                  j                  t        |«      «      }	 t        j                  |«      }|j                  di «      D �cg c]  }|df‘Œ c}c S  g S # t        t        f$ r Y Œ¨w xY w# t        j                  $ r Y ŒÁw xY wc c}w )a&  Read the .c/.h paths recorded for this group on the previous run.

    All modules in a group share the same src_hashes map, so the first
    readable IR cache is sufficient. Returns paths paired with empty
    content so callers can distinguish "reuse on disk" from "newly
    generated".
    rƒ   Ú )rÇ   r¡   ro   r¼   ry   rˆ   Úget_state_ir_cache_namer‰   ÚOSErrorrŠ   r‹   ÚJSONDecodeError)rô   r¾   rq   Ústater–   r—   r…   s          r_   rï   rï   £  sÊ   € ð  ò FˆØ—‘× Ñ  §¡Ó/ˆØˆ=Øð	Ø—n‘n×.Ñ.×3Ñ3Ô4KÈEÓ4RÓSˆGð	Ü—j‘j Ó)ˆGð (/§{¡{°<ÀÓ'DÖE˜t��r’
ÒEÒEðFð €Iøô "¤7Ð+ò 	Ùð	ûô ×#Ñ#ò 	Ùð	üâEs)   ¯.BÁB/ÂCÂB,Â+B,Â/CÃCc                óh   — t        | ||«      \  }}}|j                  dd«      j                  dd«      S )Nz
.meta.jsonz.ir.jsonz.meta.ff)r   Úreplace)r   r…   rz   r’   r“   s        r_   r‡   r‡   ½  s6   € Ü% b¨$°Ó8�O€Iˆq�!à×Ñ˜\¨:Ó6×>Ñ>¸zÈ:ÓVÐVra   c                óX   — t        | j                  | j                  | j                  «      S rn   )r‡   r   rÌ   rz   )rþ   s    r_   rû   rû   Ã  s   € Ü˜UŸX™X u§{¡{°E·M±MÓBÐBra   c           	     ó   — i }|j                  «       D ]'  \  }}|D ��ci c]  \  }}|t        |«      “Œ c}}||<   Œ) | j                  «       D ]Æ  \  }	}
|j                  |	   }t        |	|j                  |j
                  j                  «      \  }}}	 |j
                  j                  j                  |«      }t        |«      }|
j                  «       t        |«      |||	      dœ}|j
                  j                  j                  |t        |«      «       ŒÈ |j
                  j                  j                  «        yc c}}w # t        $ r Y Œÿw xY w)a  Write out the cache information for modules.

    Each module has the following cache information written (which is
    in addition to the cache information written by mypy itself):
      * A serialized version of its mypyc IR, minus the bodies of
        functions. This allows code that depends on it to use
        these serialized data structures when compiling against it
        instead of needing to recompile it. (Compiling against a
        module requires access to both its mypy and mypyc data
        structures.)
      * The hash of the mypy metadata cache file for the module.
        This is used to ensure that the mypyc cache and the mypy
        cache are in sync and refer to the same version of the code.
        This is particularly important if mypyc crashes/errors/is
        stopped after mypy has written its cache but before mypyc has.
      * The hashes of all the source file outputs for the group
        the module is in. This is so that the module will be
        recompiled if the source outputs are missing.
    )Úirr‚   rƒ   N)rŒ   r
   rÇ   r   rÌ   r¼   rz   ry   rˆ   rü   rû   Ú	serializer   Úwriter   Úcommit)r~   r¾   rv   ró   Úhashesr}   Úfilesr£   Údatar   ro   rç   r’   r“   Ú	meta_dataÚnewpathr—   s                    r_   Úwrite_cacher  Ç  s8  € ð4 €FØ—{‘{“}ò J‰ˆˆeØCH×I±Z°T¸4˜œl¨4Ó0Ñ0ÓIˆˆtŠðJð —m‘m“oò E‰
ˆˆFØ�\‰\˜"Ñˆä)¨"¨b¯h©h¸¿¹×8NÑ8NÓO‰ˆ	�1�að	ØŸ™×0Ñ0×5Ñ5°iÓ@ˆIô *¨"Ó-ˆà×"Ñ"Ó$Ü$ YÓ/Ø  ¨2¡Ñ/ñ
ˆð 	�‰× Ñ ×&Ñ& w´
¸7Ó0CÕDð#Eð& ‡N�N×Ñ×#Ñ#Õ%ùó- Jøô ò 	Ùð	ús   žD;Â%EÅ	EÅEc                ó(  — | D �ci c]h  }|j                   t        j                  |j                  j                  j                  t        |j                  |j                      «      «      «      d   “Œj }}t        ||«      }t        || |«       |S c c}w )zfLoad IR for an SCC of modules from the cache.

    Arguments and return are as compile_scc_to_ir.
    r  )
r¢   rŠ   r‹   r¼   ry   rˆ   rû   rÇ   rF   rL   )rÓ   r¾   rÔ   r‘   ÚkÚ
cache_datar~   s          r_   râ   râ   ü  sŽ   € ð ö	ð ð 	
�
‰
”D—J‘JØ�N‰N×$Ñ$×)Ñ)Ô*AÀ&Ç,Á,ÈqÏzÉzÑBZÓ*[Ó\ó
à
ññ 	ð€Jð ô " *¨cÓ2€GÜ�&˜#˜sÔ#Ø€Nùòs   …A-Bc                ó$  — t        «       }| j                  «       D ]r  }|j                  D ]a  }t        |t        «      r|j
                  sŒ |j                  |«       Œ2t        |t        «      sŒC|j                  |j                  «       «       Œc Œt |S )z4Collect all SourceDep dependencies from all modules.)	r¦   r¨   rÑ   rª   rB   Úinternalr­   r@   Úinternal_dep)r~   Úsource_depsro   Údeps       r_   Úcollect_source_dependenciesr    sx   € ä"%£%€KØ—.‘.Ó"ò 4ˆØ×&Ñ&ò 	4ˆCÜ˜#œyÔ)Ø—<“<Ø—O‘O CÕ(Ü˜C¤Õ)Ø—‘ × 0Ñ 0Ó 2Õ3ñ	4ð4ð Ðra   c               ót  — t        «       }| j                  «       D ]š  }|j                  D ]‰  }t        |t        t
        f«      r0|j                  |k(  sŒ)|j                  |j                  «       «       ŒI|r|j                  «       n|j                  «       }|j                  |j                  «       «       Œ‹ Œœ |S )z1Collect all header dependencies from all modules.)r¦   r¨   rÑ   rª   rB   rA   r  r­   Ú
get_headerr  Úexternal_dep)r~   r  Úheader_depsro   r  Úcapsule_deps         r_   Úcollect_header_dependenciesr    sš   € ä›E€KØ—.‘.Ó"ò :ˆØ×&Ñ&ò 	:ˆCÜ˜#¤	¬9Ð5Ô6Ø—<‘< 8Ó+Ø—O‘O C§N¡NÓ$4Õ5á4<˜c×.Ñ.Ô0À#×BRÑBRÓBT�Ø—‘ × 6Ñ 6Ó 8Õ9ñ	:ð:ð Ðra   c                óÂ  — |D ���ci c]  \  }}|D ]  }|j                   |“Œ Œ }}}}t        |«      }| j                  j                  j	                  ddd| j                  j
                  ¬«       t        | |||«      }	|j                  dkD  ri g t        i «      fS t        ||	| ||«      }
t        |	| ||
«       |	|D ��cg c]
  \  }}|
|   ‘Œ c}}|fS c c}}}w c c}}w )a=  Compile Python module(s) to the source of Python C extension modules.

    This generates the source code for the "shared library" module
    for each group. The shim modules are generated in mypyc.build.
    Each shared library module provides, for each module in its group,
    a PyCapsule containing an initialization function.
    Additionally, it provides a capsule containing an export table of
    pointers to all the group's functions and static variables.

    Arguments:
        result: The BuildResult from the mypy front-end
        compiler_options: The compilation options
        errors: Where to report any errors encountered
        groups: The groups that we are compiling. See documentation of Groups type above.

    Returns the IR of the modules and a list containing the generated files for each group.
    z<mypyc>N)ro   Úscoperz   r   )
ro   rK   r¼   r»   Úset_filerz   rì   rÉ   rø   r  )r¾   rx   r»   r{   ÚgroupÚlib_namerq   rv   rÔ   r~   ró   r“   r}   s                r_   Úcompile_modules_to_cr!  )  sð   € ð* AG×[Ð[©_¨U°HÐUZÒ[È6�—‘ Ñ(Ð[�Ð[€IÒ[Ü�IÓ€Fð ‡N�N×Ñ×"Ñ"Ø˜$ d°F·N±N×4JÑ4Jð #ô ô $ F¨FÐ4DÀfÓM€GØ×Ñ˜1ÒØ�2”v˜b“zÐ!Ð!ä˜F G¨V°VÐ=MÓN€EÜ�˜ ¨EÔ2à°×7¡W Q¨�U˜4“[Ó7¸Ð?Ð?ùô! \ùó  8s   ‡CÂ?Cc                óˆ  — t        t        | j                  |«      › d�d¬«      |j                  j                  |j                  | j                  «      <   | j                  t        k7  rÛ| j                  sÎt        | |j                  «      r\t        t        | |j                  «      › d�d¬«      |j                  j                  t        | j                  |j                  «      z   <   y t        t        | |j                  «      › d�d¬«      |j                  j                  t        | j                  |j                  «      z   <   y y y ©Nú;T©Úneeds_export)r   r#   rä   ÚcontextÚdeclarationsÚnative_function_namer}   r/   r  Úis_fastcall_supportedÚcapi_versionr'   r§   r-   Úcnamer&   )rØ   Úemitters     r_   Úgenerate_function_declarationr.  Q  sþ   € ÜJ[Ü! "§'¡'¨7Ó3Ð
4°AÐ6ÀTôK€G‡O�O× Ñ  ×!=Ñ!=¸b¿g¹gÓ!FÑGð 
‡w�w”.Ò ¨¯ªô !  W×%9Ñ%9Ô:ÜM^Ü*¨2¨w¯}©}Ó=Ð>¸aÐ@ÈtôNˆG�O‰O×(Ñ(¬°"·(±(¸7¿=¹=Ó2IÑ)IÒJô N_Ü1°"°g·m±mÓDÐEÀQÐGÐVZôNˆG�O‰O×(Ñ(¬°"·(±(¸7¿=¹=Ó2IÑ)IÒJð *5Ð ra   c                ó`   — d| v r| j                  |d|› d�«      S | j                  |d|› �«      S )zHGiven a C decl and its name, modify it to be a declaration to a pointer.ú(z(*ú)Ú*)r   )rä   r}   s     r_   Ú
pointerizer3  c  s=   € ð ˆd�{à�|‰|˜D B t f¨A ,Ó/Ð/ð �|‰|˜D A d V *Ó-Ð-ra   c                ód   — t         j                  j                  | j                  d«      dd «      S )z>Given a group name, return the relative directory path for it.ú.Nr    )rŽ   Úsepr�   Úsplit)rõ   s    r_   Ú	group_dirr8  n  s'   € ä�6‰6�;‰;�z×'Ñ'¨Ó,¨S¨bÐ1Ó2Ð2ra   c                  ó˜  — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zed d„«       Zed d„«       Zd!d„Zd"d„Zd#d„Z	d$d„Z
d$d„Zd%d	„Z	 	 	 	 	 	 	 	 d&d
„Z	 	 	 	 	 	 	 	 	 	 d'd„Z	 	 	 	 	 	 	 	 d(d„Zd)d„Z	 	 	 	 	 	 	 	 	 	 d'd„Zd(d„Z	 	 	 	 	 	 	 	 d(d„Zd*d„Zd+d„Zddœ	 	 	 	 	 	 	 d,d„Zd-d„Zd.d„Zd-d„Zd"d„Zd/d„Z	 	 	 	 	 	 	 	 d0d„Zd1d„Zd2d„Zd3d„Zy)4rð   c                óÜ   — || _         || _        t        ||j                  ||«      | _        || _        g | _        || _        |du| _        || _	        |j                  | _
        t        | _        y)a»  Generator for C source for a compilation group.

        The code for a compilation group contains an internal and an
        external .h file, and then one .c if not in multi_file mode or
        one .c file per module if in multi_file mode.

        Arguments:
            modules: (name, ir) pairs for each module in the group
            source_paths: Map from module names to source file paths
            group_name: The name of the group (or None if this is single-module compilation)
            group_map: A map of modules to their group names
            names: The name generator for the compilation
            compiler_options: Mypyc specific options, including multi_file mode
        N)r~   rò   r   rÏ   r'  r§   Úsimple_initsrõ   Úuse_shared_librx   Ú
multi_filer+   Úmulti_phase_init)r^   r~   rò   rõ   rv   r§   rx   s          r_   r`   zGroupGenerator.__init__t  su   € ð. ˆŒØ(ˆÔÜ%ØÐ#×;Ñ;¸ZÈó
ˆŒð ˆŒ
ð 46ˆÔØ$ˆŒØ(°Ð4ˆÔØ 0ˆÔØ*×5Ñ5ˆŒô !1ˆÕra   c                óN   — | j                   rdt        | j                   «      z   S dS )Nr“   rú   )rõ   rN   ©r^   s    r_   Úgroup_suffixzGroupGenerator.group_suffixœ  s!   € à7;·²ˆs”] 4§?¡?Ó3Ñ3ÐNÈBÐNra   c                ór   — | j                   r*dt        | j                   j                  d«      d   «      z   S dS )Nr“   r5  r    rú   )rõ   rN   r7  r@  s    r_   Úshort_group_suffixz!GroupGenerator.short_group_suffix   s2   € àFJÇoÂoˆs”] 4§?¡?×#8Ñ#8¸Ó#=¸bÑ#AÓBÑBÐ]Ð[]Ð]ra   c                ó  ‡ — g }‰ j                   xr ‰ j                  }‰ j                  j                  «       D ]3  }|j                  D ]"  }t        |‰ j                  j                  «       Œ$ Œ5 t        ‰ j                  «      }‰ j                  j                  rŽt        D ]  }|j                  d|› d�«       Œ t        ‰ j                  «      }t        |d„ ¬«      D ]!  }|j                  d|j                  › d�«       Œ# ‰ j                  j                   r|j                  d«       |j                  d‰ j"                  › d�«       |j                  d‰ j"                  › d�«       |}	‰ j                   r‰ j%                  «        ‰ j'                  «        ‰ j                  j)                  «       D �]Y  \  }
}|rbt        ‰ j                  ‰ j*                  |
   ¬	«      }	|	j                  d‰ j"                  › d�«       |	j                  d‰ j"                  › d�«       ‰ j-                  |
|	«       ‰ j/                  |
|	«       ‰ j1                  |j2                  |	«       |j4                  D ]  }|j6                  sŒt9        ||
|	«       Œ |j4                  D �ci c]  }|j:                  sŒ|j<                  |“Œ }}‰ j?                  |	|
|«       |j                  D ]ò  }|	j                  «        d }|j@                  j<                  tB        k(  r'|jD                  �|jG                  |jD                  «      }tI        ||	‰ j*                  |
   |
|«       |j<                  tJ        k7  sŒ‰|jL                  rŒ–|	j                  «        tO        ||	jP                  «      rtS        ||	‰ j*                  |
   |
«       ŒØtU        ||	‰ j*                  |
   |
«       Œô |s�Œd
tW        |
«      › d�}|jY                  |dj[                  |	j\                  «      f«       �Œ\ t        ‰ j                  «      }|j                  d‰ j^                  › d�«       |j                  d‰ j^                  › d�«       |j                  d«       |j                  d«       d%ˆ fd„} ||d«       t        ‰ j                  «      }|j                  d‰ j^                  › d�«       |j                  d‰ j^                  › d�«       |j                  d«       |j                  d«       ‰ j                  j                  s	 ||d«       |j                  d‰ j"                  › d�«       |j                  «        |j                  d«       |j                  «        ‰ j                  j)                  «       D ]–  \  }
}‰ ja                  |
|jb                  |«       |j4                  D ]+  }te        ||	||«       |jf                  sŒti        ||	||«       Œ- ‰ jk                  |
|jl                  |«       |j                  D ]  }to        ||«       Œ Œ˜ t        ‰ j                  jp                  «      D ]}  }tW        |«      }tW        |js                  d«      d   «      }|ju                  djw                  tx        j                  j[                  t{        |«      d
|› d�«      «      d|› d|› d�«       Œ ‰ j}                  «       }|}	‰ j                  |	«       |	j                  «        |D ]§  }|j€                  r|n|}|j€                  sp |jt                  d|j@                  d    › �g|j@                  d!d  ¢­Ž  |j‚                  r |	jt                  |j‚                  Ž  Œu |	jt                  |j@                  Ž  Œ� |jt                  |j@                  Ž  Œ© ‰ j„                  r9‰ j                  j†                  r‰ j‰                  ||	«       ‰ j‹                  |	«       |j                  d"«       |j                  d"«       ‰ j„                  rt{        ‰ j„                  «      nd}|tx        j                  j[                  |d#‰ j"                  › d�«      dj[                  |	j\                  «      ftx        j                  j[                  |d$‰ j"                  › d�«      dj[                  |j\                  «      ftx        j                  j[                  |d#‰ j"                  › d�«      dj[                  |j\                  «      fgz   S c c}w )&Nz
#include <ú>c                ó   — | j                   S rn   )r…   )Úds    r_   ú<lambda>z7GroupGenerator.generate_c_for_modules.<locals>.<lambda>¸  s
   € ÀÇÁ€ ra   )Úkeyz(#include <internal/librt_internal_api.c>z#include "__nativeú.h"z#include "__native_internal)ÚfilepathÚ	__native_z.crú   z#ifndef MYPYC_NATIVEÚ_Hz#define MYPYC_NATIVEz#include <Python.h>z#include <CPy.h>c                óà   •— |rdnd}‰j                   j                  r| j                  d|› d�«       t        ‰j                  |¬«      }t        |«      D ]  }| j                  d|› d�«       Œ y )NÚ_apirú   z!#include "internal/librt_internalrJ  )r  z
#include "ú")rx   Údepends_on_librt_internalÚ	emit_liner  r~   rw   )Údeclsr  Úsuffixr  Ú
header_depr^   s        €r_   Úemit_dep_headersz?GroupGenerator.generate_c_for_modules.<locals>.emit_dep_headersø  sj   ø€ Ù'‘V¨RˆFØ×$Ñ$×>Ò>Ø—‘Ð"CÀFÀ8È3Ð OÔPä5°d·l±lÈXÔVˆKÜ$ [Ó1ò <�
Ø—‘ *¨Z¨L¸Ð :Õ;ñ<ra   Fz#ifndef MYPYC_LIBRT_INTERNALz#define MYPYC_LIBRT_INTERNALTzint CPyGlobalsInit(void);r5  r    z#include <{}>z.hzstruct export_table_z	 exports_r$  zextern r   rž   z#endifÚ__nativeÚ__native_internal)rS  r   r  rb   rc   rd   )Fr<  r=  r~   r¨   rÍ   Úcollect_literalsr'  Úliteralsr   rx   Úinclude_runtime_filesr.   rR  r  rw   r…   rQ  rC  Údeclare_module_lock_apiÚgenerate_literal_tablesrŒ   rò   Údeclare_moduleÚdeclare_internal_globalsÚdeclare_importsÚimportsrÊ   Úis_ext_classr   Úhas_running_flagr}   Úgenerate_module_defrä   r*   Ú
class_namer¡   r"   r/   r  r*  r+  r%   r$   rN   Úappendr�   Ú	fragmentsrA  Údeclare_finalsÚfinal_namesr!   Úreuse_freed_instancer    Údeclare_type_varsÚtype_var_namesr.  Ú
group_depsr7  Ú
emit_linesrÆ   rŽ   r8  Útoposort_declarationsÚgenerate_globals_initÚis_typeÚdefnrõ   rî   Úgenerate_export_tableÚgenerate_shared_lib_init)r^   Úfile_contentsr=  ro   rØ   Úbase_emitterr}   r  Ú
source_depr-  r«   rÚ   Úrunning_flag_classesÚrunning_flag_classÚext_declarationsrV  r(  ÚlibÚelibÚ	short_libÚsorted_declsr\   rS  Ú
output_dirs   `                       r_   rñ   z%GroupGenerator.generate_c_for_modules¤  s?  ø€ ØˆØ×(Ñ(Ò<¨T¯_©_ˆ
ð —l‘l×)Ñ)Ó+ò 	<ˆFØ×&Ñ&ò <�Ü   T§\¡\×%:Ñ%:Õ;ñ<ð	<ô ˜tŸ|™|Ó,ˆð × Ñ ×6Ò6Ü'ò =�Ø×&Ñ&¨°D°6¸Ð';Õ<ð=ô 6°d·l±lÓCˆKÜ$ [Ñ6FÔGò H�
Ø×&Ñ&¨°J·O±OÐ3DÀAÐ'FÕGðHà×$Ñ$×>Ò>Ø×&Ñ&Ð'QÔRØ×ÑÐ!3°D×4KÑ4KÐ3LÈCÐPÔQØ×ÑÐ!<¸T×=TÑ=TÐ<UÐUXÐYÔZØˆà×ÒØ×(Ñ(Ô*à×$Ñ$Ô&à#'§<¡<×#5Ñ#5Ó#7ó '	IÑˆK˜ÙÜ! $§,¡,¸×9JÑ9JÈ;Ñ9WÔX�Ø×!Ñ!Ð$6°t×7NÑ7NÐ6OÈsÐ"SÔTØ×!Ñ!Ð$?À×@WÑ@WÐ?XÐX[Ð"\Ô]à×Ñ ¨WÔ5Ø×)Ñ)¨+°wÔ?Ø× Ñ  §¡°Ô9à—n‘nò =�Ø—?“?Ü" 2 {°GÕ<ð=ð ;A¿.¹.Ö#`°BÈB×L_ÓL_ B§G¡G¨R¡KÐ#`Ð Ð#`ð ×$Ñ$ W¨k¸6ÔBà×&Ñ&ò �Ø×!Ñ!Ô#Ø%)Ð"Ø—7‘7—<‘<Ô#8Ò8¸R¿]¹]Ð=VØ)=×)AÑ)AÀ"Ç-Á-Ó)PÐ&Ü(Ø˜ ×!2Ñ!2°;Ñ!?ÀÐN`ôð —7‘7œnÓ,°R·[³[Ø×%Ñ%Ô'Ü,¨R°×1EÑ1EÔFÜ1Ø ¨×):Ñ):¸;Ñ)GÈõô 9Ø ¨×):Ñ):¸;Ñ)GÈõðó$ Ø"¤=°Ó#=Ð">¸bÐA�Ø×$Ñ$ d¨B¯G©G°G×4EÑ4EÓ,FÐ%GÖHðO'	IôZ # 4§<¡<Ó0ÐØ×"Ñ"Ð%9¸$×:KÑ:KÐ9LÈBÐ#OÔPØ×"Ñ"Ð%9¸$×:KÑ:KÐ9LÈBÐ#OÔPØ×"Ñ"Ð#8Ô9Ø×"Ñ"Ð#5Ô6õ	<ñ 	Ð)¨5Ô1ä˜tŸ|™|Ó,ˆØ×ÑÐ!=¸d×>OÑ>OÐ=PÐPRÐSÔTØ×ÑÐ!=¸d×>OÑ>OÐ=PÐPRÐSÔTØ×ÑÐ4Ô5Ø×ÑÐ1Ô2à×$Ñ$×:Ò:Ù˜\¨4Ô0à×ÑÐ!3°D×4KÑ4KÐ3LÈCÐPÔQØ×ÑÔ Ø×ÑÐ:Ô;Ø×ÑÔ à#'§<¡<×#5Ñ#5Ó#7ò 	@ÑˆK˜Ø×Ñ ¨V×-?Ñ-?ÀÔNØ—n‘nò V�Ü(¨¨WÐ6FÈÔUØ×*Ó*Ü(¨¨WÐ6FÈÕUðVð ×"Ñ" ;°×0EÑ0EÀ|ÔTØ×&Ñ&ò @�Ü-¨b°,Õ?ñ@ð	@ô ˜$Ÿ,™,×1Ñ1Ó2ò 	ˆCÜ  Ó%ˆDÜ% c§i¡i°£n°RÑ&8Ó9ˆIØ×#Ñ#Ø×&Ñ&¤r§w¡w§|¡|´I¸c³NÀiÐPYÈ{ÐZ\ÐD]Ó'^Ó_Ø& t f¨I°d°V¸1Ð=õð	ð ×1Ñ1Ó3ˆàˆØ×"Ñ" 7Ô+à×ÑÔà'ò 	4ˆKØ(3×(;Ò(;Ñ$ÀˆEØ×&Ò&Ø �× Ñ  7¨;×+;Ñ+;¸AÑ+>Ð*?Ð!@ÐXÀ;×CSÑCSÐTUÐTVÐCWÓXð ×#Ò#Ø&�G×&Ñ&¨×(8Ñ(8Ò9à&�G×&Ñ&¨×(8Ñ(8Ò9à �× Ñ  +×"2Ñ"2Ò3ð	4ð �?Š?Ø×$Ñ$×-Ò-Ø×*Ñ*Ð+;¸WÔEà×)Ñ)¨'Ô2à×"Ñ" 8Ô,Ø×Ñ˜xÔ(à37·?²?”Y˜tŸ™Ô/Èˆ
Øä—‘—‘˜Z¨8°D×4KÑ4KÐ3LÈBÐ)OÓPØ—‘˜×)Ñ)Ó*ðô
 —‘—‘˜ZÐ+<¸T×=TÑ=TÐ<UÐUWÐ)XÓYØ—‘˜×.Ñ.Ó/ðô
 —‘—‘˜Z¨8°D×4KÑ4KÐ3LÈBÐ)OÓPØ—‘Ð(×2Ñ2Ó3ðð 
ñ 
ð 	
ùò] $as   Êd
Ê#d
c                óì  — | j                   j                  }| j                  d|j                  «       z  d«       t	        |j                  «       «      }| j                  dd|¬«       t	        |j                  «       «      }| j                  dd|¬«       t	        |j                  «       «      }| j                  dd|¬«       t        |j                  «       «      }| j                  dd	|¬«       t        |j                  «       «      }| j                  dd
|¬«       t        |j                  «       «      }| j                  dd|¬«       t        |j                  «       «      }| j                  dd|¬«       y)a  Generate tables containing descriptions of Python literals to construct.

        We will store the constructed literals in a single array that contains
        literals of all types. This way we can refer to an arbitrary literal by
        its index.
        zPyObject *[%d]Ú
CPyStaticszconst char * const []Ú
CPyLit_Str©ÚinitializerÚCPyLit_BytesÚ
CPyLit_Intzconst double []ÚCPyLit_FloatÚCPyLit_Complexzconst int []ÚCPyLit_TupleÚCPyLit_FrozenSetN)r'  rZ  Údeclare_globalÚnum_literalsÚc_string_array_initializerÚencoded_str_valuesÚencoded_bytes_valuesÚencoded_int_valuesr   Úencoded_float_valuesÚencoded_complex_valuesÚencoded_tuple_valuesÚencoded_frozenset_values)	r^   rZ  Úinit_strÚ
init_bytesÚinit_intÚinit_floatsÚinit_complexÚ
init_tupleÚinit_frozensets	            r_   r]  z&GroupGenerator.generate_literal_tablesP  sR  € ð —<‘<×(Ñ(ˆà×ÑÐ,¨x×/DÑ/DÓ/FÑFÈÔUä-¨h×.IÑ.IÓ.KÓLˆØ×ÑÐ3°\ÈxÐÔXä/°×0MÑ0MÓ0OÓPˆ
Ø×ÑÐ3°^ÐQ[ÐÔ\ä-¨h×.IÑ.IÓ.KÓLˆØ×ÑÐ3°\ÈxÐÔXä)¨(×*GÑ*GÓ*IÓJˆØ×ÑÐ-¨~È;ÐÔWä*¨8×+JÑ+JÓ+LÓMˆØ×ÑÐ-Ð/?È\ÐÔZä(¨×)FÑ)FÓ)HÓIˆ
Ø×Ñ˜N¨NÈ
ÐÔSä,¨X×-NÑ-NÓ-PÓQˆØ×Ñ˜NÐ,>ÈNÐÕ[ra   c                ó  — |j                   j                  }|j                  dd| j                  › d�«       |j	                  «       D ]F  \  }}|j
                  sŒ|j                  t        dj                  |j                  «      |«      «       ŒH |j                  d«       |j                  dd| j                  › d�«       |j	                  «       D ]'  \  }}|j
                  sŒ|j                  d|› d	�«       Œ) |j                  d«       y
)a·  Generate the declaration and definition of the group's export struct.

        To avoid needing to deal with deeply platform specific issues
        involving dynamic library linking (and some possibly
        insurmountable issues involving cyclic dependencies), compiled
        code accesses functions and data in other compilation groups
        via an explicit "export struct".

        Each group declares a struct type that contains a pointer to
        every function and static variable it exports. It then
        populates this struct and stores a pointer to it in a capsule
        stored as an attribute named 'exports' on the group's shared
        library's python module.

        On load, a group's init function will import all of its
        dependencies' exports tables using the capsule mechanism and
        copy the contents into a local copy of the table (to eliminate
        the need for a pointer indirection when accessing it).

        Then, all calls to functions in another group and accesses to statics
        from another group are done indirectly via the export table.

        For example, a group containing a module b, where b contains a class B
        and a function bar, would declare an export table like:
            struct export_table_b {
                PyTypeObject **CPyType_B;
                PyObject *(*CPyDef_B)(CPyTagged cpy_r_x);
                CPyTagged (*CPyDef_B___foo)(PyObject *cpy_r_self, CPyTagged cpy_r_y);
                tuple_T2OI (*CPyDef_bar)(PyObject *cpy_r_x);
                char (*CPyDef___top_level__)(void);
            };
        that would be initialized with:
            static struct export_table_b exports = {
                &CPyType_B,
                &CPyDef_B,
                &CPyDef_B___foo,
                &CPyDef_bar,
                &CPyDef___top_level__,
            };
        To call `b.foo`, then, a function in another group would do
        `exports_b.CPyDef_bar(...)`.
        rú   zstruct export_tablez {ú
ú};zstatic struct export_tablez exports = {ú&ú,N)
r'  r(  rn  rA  rŒ   r&  rR  r3  r�   rä   )r^   Údecl_emitterÚcode_emitterrS  r}   rä   s         r_   rs  z$GroupGenerator.generate_export_tablep  s÷   € ðX ×$Ñ$×1Ñ1ˆà×Ñ Ð&9¸$×:KÑ:KÐ9LÈCÐ$PÔQØŸ+™+›-ò 	O‰JˆD�$Ø× Ó Ø×&Ñ&¤z°$·)±)¸D¿I¹IÓ2FÈÓ'MÕNð	Oð 	×Ñ˜tÔ$à×Ñ Ð&@À×ARÑARÐ@SÐS`Ð$aÔbØŸ+™+›-ò 	4‰JˆD�$Ø× Ó Ø×&Ñ&¨¨4¨&° {Õ3ð	4ð 	×Ñ˜tÕ$ra   c                ó¬  — | j                   €J ‚|j                  «        t        | j                   «      j                  d«      d   }|j	                  d|› d�dddd	d
«       t        | j                   «      }|j	                  d|› d�|› d�d|› d�dddd
«       | j                  j                  ro|j	                  dj                  t        | j                   «      «      ddddddddd
d|› d�dj                  |t        | j                   «      ¬«      ddddddddd
«       | j                  D ]£  }t        |«      }| j                  r#t        |«      }d}|j                  d|› d�«       n"t        |«      }d }|j                  d!|› d�«       |j	                  d"j                  |t        | j                   «      ||«      dddd#|› |› d$�ddddd
«
       Œ¥ |j	                  d%d&d'd«       | j                  j                  rç|j	                  d
d(|› d)�dd*d+«       | j                  j                  r|j	                  d,d-d.d/dd	d0«       t!        | j                  j                  «      D ]l  }t        |«      }	|j	                  d1j                  t        |«      «      d2d3d4d5d6j                  |	t        |«      ¬7«      d8d9|	› d:�d;j                  |	¬<«      «	       Œn |j	                  d=d%d«       | j                  r|j	                  d>|› d?�d@|› dA�dBdCdDdE«       | j                  rdFnd}
|j	                  dG|› dH�dIdJt        | j                   «      › dK�dLdM|
› dN�dO«       | j                  r|j                  dP|› dN�«       |j                  dE«       | j                  r|j	                  dQ|› dR�dS|› dT�d«       y|j	                  dQ|› dR�dUdVdWdXddY|› dT�dZd[dd\|› d]�d^d_d[ddXd«       y)`a  Generate the init function for a shared library.

        A shared library contains all the actual code for a
        compilation group.

        The init function is responsible for creating Capsules that
        wrap pointers to the initialization function of all the real
        init functions for modules in this shared library as well as
        the export table containing all the exported functions and
        values from all the modules.

        These capsules are stored in attributes of the shared library.
        Nr5  r    zstatic int exec_ú(PyObject *module)ú{zint res;zPyObject *capsule;zPyObject *tmp;rú   úif (z == NULL) {z = CPyModuleLockAPI_Alloc();z == NULL) goto fail;ú}z$if (intern_strings() < 0) goto fail;z$if (CPyGlobalsInit() < 0) goto fail;z6capsule = PyCapsule_New(&exports, "{}.exports", NULL);zif (!capsule) {z
goto fail;z9res = PyObject_SetAttrString(module, "exports", capsule);zPy_DECREF(capsule);zif (res < 0) {zextern int ensure_deps_z(void);zMcapsule = PyCapsule_New((void *)ensure_deps_{sh}, "{lib}.ensure_deps", NULL);)Úshr{  z=res = PyObject_SetAttrString(module, "ensure_deps", capsule);Úexec_zextern int z(PyObject *);Úinit_zextern PyObject *z5capsule = PyCapsule_New((void *){}, "{}.{}{}", NULL);z&res = PyObject_SetAttrString(module, "z", capsule);ú	return 0;úfail:ú
return -1;zint ensure_deps_ú(void)zstatic int done = 0;zif (done) return 0;z(static PyObject *_mypyc_fromlist = NULL;zif (!_mypyc_fromlist) {z,_mypyc_fromlist = Py_BuildValue("(s)", "*");z if (!_mypyc_fromlist) return -1;zPyObject *caps;zGtmp = PyImport_ImportModuleLevel("{}", NULL, NULL, _mypyc_fromlist, 0);zif (!tmp) return -1;z.caps = PyObject_GetAttrString(tmp, "exports");zPy_DECREF(tmp);zif (!caps) return -1;zostruct export_table_{g} *pexports_{g} = (struct export_table_{g} *)PyCapsule_GetPointer(caps, "{lib}.exports");)Úgr{  zPy_DECREF(caps);zif (!pexports_z) return -1;z8memcpy(&exports_{g}, pexports_{g}, sizeof(exports_{g}));)r¯  z	done = 1;zstatic PyModuleDef_Slot slots_ú[] = {z{Py_mod_exec, exec_ú},úK{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},ú"{Py_mod_gil, Py_MOD_GIL_NOT_USED},ú
{0, NULL},rž  r   zstatic PyModuleDef module_def_z = {úPyModuleDef_HEAD_INIT,z.m_name = "ú",z.m_doc = NULL,z
.m_size = r   z.m_methods = NULL,z.m_slots = slots_úPyMODINIT_FUNC PyInit_z(void) {z$return PyModuleDef_Init(&module_def_ú);zstatic PyObject *module = NULL;zif (module) {zPy_INCREF(module);zreturn module;z%module = PyModule_Create(&module_def_zif (!module) {úreturn NULL;z	if (exec_z(module) < 0) {zPy_DECREF(module);zmodule = NULL;)rõ   rR  r6   r7  rn  r5   rx   rî   rÆ   r~   rN   r>  r1   r3   r'  rm  rw   )r^   r-  Ú
short_nameÚlock_apiÚmodr}   Úcapsule_func_nameÚcapsule_name_prefixr  ÚegroupÚsizes              r_   rt  z'GroupGenerator.generate_shared_lib_init¬  s½  € ð �‰Ð*Ð*Ð*à×ÑÔä$ T§_¡_Ó5×;Ñ;¸CÓ@ÀÑDˆ
à×ÑØ˜z˜lÐ*<Ð=ØØØ ØØô	
ô (¨¯©Ó8ˆØ×ÑØ�8�*˜LÐ)ØˆjÐ4Ð5Ø�8�*Ð0Ð1ØØ2Ø2Øô	
ð × Ñ ×)Ò)Ø×ÑØH×OÑOÜ# D§O¡OÓ4óð "ØØØKØ%Ø ØØØð *¨*¨°WÐ=Ø_×fÑfØ!¤°t·±Ó'Gð gó ð "ØØØOØ%Ø ØØØô7ð< —<‘<ò 	ˆCÜ  Ó%ˆDØ×$Ò$Ü$4°SÓ$9Ð!Ø&-Ð#Ø×!Ñ! KÐ0AÐ/BÀ-Ð"PÕQä$4°SÓ$9Ð!Ø&-Ð#Ø×!Ñ!Ð$5Ð6GÐ5HÈÐ"PÔQØ×ÑØG×NÑNØ%¤°t·±Ó'GÐI\Ð^bóð "ØØØ8Ð9LÐ8MÈdÈVÐS_Ð`Ø%Ø ØØØõð	ð: 	×Ñ˜;¨°¸sÔCà× Ñ ×)Ò)ð ×ÑØØ" : ,¨fÐ5ØØ&Ø%ôð �|‰|×&Ò&Ø×"Ñ"Ø>Ø-ØBØ6ØØ$Ø%ôô   §¡× 7Ñ 7Ó8ò �Ü& uÓ-�ð
 ×"Ñ"Ø]×dÑdÜ'¨Ó.óð +ØDØ%Ø+ð^ß^dÑ^dØ ¤o°eÓ&<ð _eó _ð 'Ø$ V H¨LÐ9ØN×UÑUÐX^ÐUÓ_õðð, ×Ñ˜{¨K¸Ô=à× Ò Ø×ÑØ0°°¸GÐDØ& z l°#Ð6Ø]Ø4ØØôð ×)Ò)‰q¨rˆØ×ÑØ,¨Z¨L¸Ð>Ø$Øœ/¨$¯/©/Ó:Ð;¸2Ð>ØØ˜˜˜aÐ Ø ô	
ð × Ò Ø×ÑÐ 1°*°¸QÐ?Ô@Ø×Ñ˜$Ôà× Ò Ø×ÑØ(¨¨°IÐ>Ø6°z°lÀ"ÐEØõð ×ÑØ(¨¨°IÐ>Ø1ØØ$Ø ØØ7¸
°|À2ÐFØ ØØØ˜J˜<Ð'7Ð8Ø$Ø ØØØ Øõ#ra   c                ó   — |j                  dddddd«       |j                  d«       | j                  D ]  \  }}|j                  |› d|› d�«       Œ d	}|j                  d
|› d�dd«       |j                  ddd«       y )Nrú   zint CPyGlobalsInit(void)r¥  zstatic int is_initialized = 0;zif (is_initialized) return 0;zCPy_Init();ú = r$  zbCPyLit_Str, CPyLit_Bytes, CPyLit_Int, CPyLit_Float, CPyLit_Complex, CPyLit_Tuple, CPyLit_FrozenSetz&if (CPyStatics_Initialize(CPyStatics, z) < 0) {r­  r§  zis_initialized = 1;r«  )rn  rR  r;  )r^   r-  ÚsymbolÚfixupr¨   s        r_   rp  z$GroupGenerator.generate_globals_initt  s¢   € Ø×ÑØØ&ØØ,Ø+Øô	
ð 	×Ñ˜-Ô(Ø!×.Ñ.ò 	6‰MˆF�EØ×Ñ  ¨¨E¨7°!Ð4Õ5ð	6ð vˆØ×ÑØ4°V°H¸IÐFÈÐVYô	
ð 	×ÑÐ0°+¸sÕCra   c                ó¬  — |j                   j                  |«      }| j                  ||||«       | j                  ||||«       | j                  r| j
                  sF| j                  r| j                  |||«       | j                  |||«       | j                  |||«       y| j
                  r'| j                  |||«       | j                  |||«       yy)zFEmit the PyModuleDef struct for a module and the module init function.N)
r§   Úprivate_nameÚemit_module_methodsÚemit_module_exec_funcr>  r<  Úemit_module_def_slotsÚemit_module_def_structÚemit_module_init_funcÚemit_init_only_func)r^   r-  r«   ro   Úmodule_prefixs        r_   rd  z"GroupGenerator.generate_module_def‰  sÄ   € àŸ™×2Ñ2°;Ó?ˆØ× Ñ  ¨+°}ÀfÔMØ×"Ñ" 7¨K¸ÈÔOð ×%Ò%¨$×*=Ò*=Ø×$Ò$Ø×*Ñ*¨7°MÀ;ÔOØ×'Ñ'¨°¸mÔLØ×&Ñ& w°¸]ÕKØ× Ò ð ×'Ñ'¨°¸mÔLØ×$Ñ$ W¨k¸=ÕIð !ra   c                óL  — |› d�}t        |«      }|j                  d|› d�«       |j                  d|› d�«       t        j                  dk\  r|j                  d«       t        j                  dk\  r|j                  d	«       |j                  d
«       |j                  d«       y )NÚ_slotszstatic PyModuleDef_Slot r°  z{Py_mod_exec, r±  )é   é   r²  )rÐ  é   r³  r´  rž  )r1   rR  ÚsysÚversion_info)r^   r-  rÍ  r«   r}   Ú	exec_names         r_   rÉ  z$GroupGenerator.emit_module_def_slots�  s§   € ð  � Ð'ˆÜ$ [Ó1ˆ	à×ÑÐ4°T°F¸'ÐBÔCØ×Ñ˜O¨I¨;°cÐ:Ô;Ü×Ñ˜wÒ&ð ×ÑØ]ôô ×Ñ˜wÒ&ð ×ÑÐBÔCØ×Ñ˜,Ô'Ø×Ñ˜$Õra   c           
     ó\  — |j                  d|› d�«       |j                  D ]Ö  }|j                  €|j                  t        k(  rŒ#|j
                  j                  rŒ:t        |j                  |j
                  j                  |j                  «      }t        ||j                  «      rd}nd}t        |«      }|j                  dj                  ||j                  |j                  «      t         ||¬«      «       ŒØ |j                  d«       |j                  d	«       |j                  «        y)
z3Emit module methods (the static PyMethodDef table).zstatic PyMethodDef zmodule_methods[] = {NÚMETH_FASTCALLÚMETH_VARARGSze{{"{name}", (PyCFunction){prefix}{cname}, {flag} | METH_KEYWORDS, PyDoc_STR({doc}) /* docstring */}},)r}   r,  ÚprefixÚflagÚdocz{NULL, NULL, 0, NULL}rž  )rR  rÍ   re  r}   r/   rä   Úis_coroutiner7   Ú	shortnamerÎ   r*  r+  r   rÆ   r,  r§   r-   )	r^   r-  r«   rÍ  ro   rØ   r}   rÚ  rÛ  s	            r_   rÇ  z"GroupGenerator.emit_module_methods²  s  € ð 	×ÑÐ/°¨Ð>SÐTÔUØ×"Ñ"ò 	ˆBØ�}‰}Ð(¨B¯G©G´~Ò,EØà�w‰w×#Ò#ØÜ% b§g¡g¨r¯w©w×/@Ñ/@À"Ç'Á'ÓJˆDÜ$ R¨×)=Ñ)=Ô>Ø&‘à%�Ü1°"Ó5ˆCØ×Ñð:ç‘&Ø R§X¡X¨g¯m©mÓ%<ÄVÐRVÐ\_ð ó õ	ð	ð( 	×ÑÐ1Ô2Ø×Ñ˜$ÔØ×ÑÕra   c                ój  — |j                  d|› d�dd|› d�dd«       | j                  r|j                  d«       n|j                  |› d	�«       | j                  r&| j                  s|› d
�}|j                  |› d�«       n|j                  d«       |j                  d«       |j                  «        y)z7Emit the static module definition struct (PyModuleDef).zstatic struct PyModuleDef z
module = {rµ  rP  r¶  zNULL, /* docstring */z:0,       /* size of per-interpreter state of the module */zNULL, /* m_methods */zmodule_methods,rÏ  z, /* m_slots */zNULL,rž  N)rn  r>  rR  r<  )r^   r-  r«   rÍ  Ú
slots_names        r_   rÊ  z%GroupGenerator.emit_module_def_structÏ  s¼   € ð 	×ÑØ(¨¨°{ÐCØ$Ø�ˆ}˜BÐØ#ØHô	
ð × Ò à×ÑÐ5Õ6à×Ñ  ¨Ð?Ô@Ø× Ò ¨×)<Ò)<Ø)˜?¨&Ð1ˆJØ×Ñ  ¨OÐ<Õ=à×Ñ˜gÔ&Ø×Ñ˜$ÔØ×ÑÕra   c           
     óR  — |j                   D �]  }|j                  €|j                  t        k(  rŒ$|j                  j
                  sŒ;| j                  |j                     }d}t        |j                  |j                  j                  |j                  «      }|j                  ||||«      }d|› �}	|j                  d|	› d|j                  › d�«       |j                  d|	› d�«       |j                  |«       |j                  d	|› d
|	› d|› d�«       |j                  |«       �Œ y)zãEmit insertion of coroutines into the module dict when the module is initialized.
        Coroutines are wrapped in CPyFunction objects to enable introspection by functions like
        inspect.iscoroutinefunction(fn).
        Nú    goto fail;Úname_ú
PyObject *z = PyUnicode_FromString("ú");úif (unlikely(!ú))zif (PyDict_SetItem(rÁ   z, (PyObject *)ú) < 0))rÍ   re  r}   r/   rä   rÜ  rò   r¢   r7   rÝ  rÎ   Úemit_cpyfunction_instancerR  )
r^   r-  ro   ÚglobalsrØ   rK  Ú
error_stmtr}   Úwrapper_nameÚname_objs
             r_   Úemit_coroutine_wrappersz&GroupGenerator.emit_coroutine_wrappersç  s  € ð
 ×"Ñ"ó 	*ˆBØ�}‰}Ð(¨B¯G©G´~Ò,EØØ—7‘7×'Ò'Øà×(Ñ(¨¯©Ñ9ˆHØ)ˆJÜ% b§g¡g¨r¯w©w×/@Ñ/@À"Ç'Á'ÓJˆDØ"×<Ñ<¸RÀÀxÐQ[Ó\ˆLØ˜|˜nÐ-ˆHØ×Ñ 
¨8¨*Ð4MÈbÏgÉgÈYÐVYÐZÔ[Ø×Ñ ¨x¨j¸Ð;Ô<Ø×Ñ˜jÔ)Ø×ÑØ% g Y¨b°°
¸.ÈÈÐV\Ð]ôð ×Ñ˜jÖ)ñ#	*ra   c                óv
  — t        |«      }d|› d�}t        |dz   «      |j                  j                  |<   |› d�}| j	                  ||«      }t        |«      }	|j                  |dt        ¬«      }
|j                  d|› d�d«       | j                  s|j                  d	d
«       | j                  j                  r3|j                  d«       |j                  d«       |j                  d«       t        |j                  v r3|j                  d«       |j                  d«       |j                  d«       t        |j                  v r3|j                  d«       |j                  d«       |j                  d«       t         |j                  v r3|j                  d«       |j                  d«       |j                  d«       t"        |j                  v r3|j                  d«       |j                  d«       |j                  d«       t$        |j                  v r3|j                  d«       |j                  d«       |j                  d«       t&        |j                  v r3|j                  d«       |j                  d«       |j                  d«       |j                  d«       | j(                  r|j                  |› d�«       |j                  d|› d�«       |j                  d|«      }|j                  |› d|› d�d|› d�d«       | j(                  r|j                  d|› d�d«       | j+                  |||«       g }|j,                  D ]š  }|j/                  |«      }|j1                  |«       |j2                  sŒ2d}|j                  d j5                  |¬!«      «       |j                  d"|› d#�|«       |j7                  |j8                  «      }|j                  d$|› d%�«       Œœ | j                  s|j                  d&d«       | j;                  ||«       |j                  d'«       |j                  d(«       |j                  d)«       | j(                  r|j                  |› d*�d+«       n|j                  d,|› d�d+«       |j<                  D ]S  \  }}|j                  ||«      }|j?                  ||d-¬.«       |jA                  |«      }|j                  |› d/|› d�«       ŒU |D ]  }|j                  d,|› d�«       Œ |j                  d«       |j                  d«       |j                  |dd0|› d1|	› d1|
› d�d«       y)2a­  Emit the module exec function.

        If we are compiling just one module, this will be the normal C API
        exec function. If we are compiling 2+ modules, we generate a shared
        library for the modules and shims that call into the shared
        library, and in this case the shared module defines an internal
        exec function for each module and these will be called by the shims
        via Capsules.
        zint r¤  r$  Ú__implN©rÙ  zstatic int r¥  zif (intern_strings() < 0)z    return -1;z"if (import_librt_internal() < 0) {r­  r§  z if (import_librt_base64() < 0) {z!if (import_librt_strings() < 0) {zif (import_librt_time() < 0) {z#if (import_librt_threading() < 0) {zif (import_librt_vecs() < 0) {z if (import_librt_random() < 0) {úPyObject* modname = NULL;z
 = module;z-modname = PyObject_GetAttrString((PyObject *)z, "__name__");ré  z = PyModule_GetDict(r¸  úif (unlikely(ú
 == NULL))rá  z"if (PyModule_AddFunctions(module, zmodule_methods) < 0)zT{t} = (PyTypeObject *)CPyType_FromTemplate((PyObject *){t}_template, NULL, modname);)Útrå  ræ  ÚCPyDef_z_trait_vtable_setup();zif (CPyGlobalsInit() < 0)zPy_DECREF(modname);r«  r¬  ú = NULL;úPy_CLEAR(modname);z	Py_CLEAR(T)Úis_xdecrÂ  zreturn CPyImport_Exec(module, z, &)!r1   r   r'  r(  Úmodule_internal_static_namer2   Ústatic_namer,   rn  r<  rx   rQ  rR  r:   rÑ   r<   r>   r=   r?   r;   r>  rí  rÊ   Útype_struct_namerf  Úis_generatedrÆ   Úname_prefixr§   Úgenerate_top_level_callri  Úemit_dec_refÚc_undefined_value)r^   r-  r«   rÍ  ro   rÕ  r\   Ú	impl_nameÚmodule_staticrþ   Úmodule_cacheÚmodule_globalsÚtype_structsrÚ   Útype_structrê  rý  r}   Útyprú  Úundefrô  s                         r_   rÈ  z$GroupGenerator.emit_module_exec_funcÿ  s'  € ô % [Ó1ˆ	Ø˜Y˜KÐ'9Ð:ˆÜ2CÀKÐRUÑDUÓ2Vˆ�‰×$Ñ$ YÑ/Ø �k Ð(ˆ	Ø×8Ñ8¸ÀgÓNˆÜ(¨Ó5ˆØ×*Ñ*¨;¸Ä]Ð*ÓSˆØ×Ñ˜[¨¨Ð3EÐFÈÔLØ×"Ò"Ø×ÑÐ:Ð<LÔMØ× Ñ ×:Ò:Ø×ÑÐBÔCØ×Ñ˜lÔ+Ø×Ñ˜cÔ"Ü˜6×.Ñ.Ñ.Ø×ÑÐ@ÔAØ×Ñ˜lÔ+Ø×Ñ˜cÔ"Ü˜F×/Ñ/Ñ/Ø×ÑÐAÔBØ×Ñ˜lÔ+Ø×Ñ˜cÔ"Ü˜×,Ñ,Ñ,Ø×ÑÐ>Ô?Ø×Ñ˜lÔ+Ø×Ñ˜cÔ"Ü˜f×1Ñ1Ñ1Ø×ÑÐCÔDØ×Ñ˜lÔ+Ø×Ñ˜cÔ"Ü˜×,Ñ,Ñ,Ø×ÑÐ>Ô?Ø×Ñ˜lÔ+Ø×Ñ˜cÔ"Ü˜6×.Ñ.Ñ.Ø×ÑÐ@ÔAØ×Ñ˜lÔ+Ø×Ñ˜cÔ"Ø×ÑÐ5Ô6Ø× Ò Ø×Ñ  ¨zÐ:Ô;Ø×ÑØ;¸M¸?È.ÐYô	
ð !×,Ñ,¨Y¸ÓDˆØ×ÑØÐÐ2°=°/ÀÐDØ˜NÐ+¨:Ð6Øô	
ð × Ò Ø×ÑØ4°]°OÐCWÐXØ ôð
 	×$Ñ$ W¨f°nÔEð #%ˆØ—.‘.ò 	QˆBØ!×2Ñ2°2Ó6ˆKØ×Ñ Ô,Ø�‹Ø-�
Ø×"Ñ"ð@ß@FÁÈÀÓ@Uôð ×"Ñ" ^°K°=ÀÐ#CÀZÔPØ Ÿn™n¨W¯]©]Ó;�Ø×!Ñ! G¨K¨=Ð8NÐ"OÕPð	Qð ×"Ò"ð ×ÑÐ:Ð<LÔMà×$Ñ$ V¨WÔ5à×ÑÐ0Ô1à×Ñ˜+Ô&Ø×Ñ˜7Ô#Ø× Ò Ø×Ñ - °Ð9Ð;OÕPà×Ñ ¨=¨/¸Ð<Ð>RÔSØ×+Ñ+ò 	;‰IˆD�#Ø!×-Ñ-¨d°KÓ@ˆKØ× Ñ  ¨c¸4Ð Ô@Ø×-Ñ-¨cÓ2ˆEØ×Ñ  ¨S°°°qÐ9Õ:ð		;ð ò 	1ˆAØ×Ñ 	¨!¨¨BÐ/Õ0ð	1à×Ñ˜,Ô'Ø×Ñ˜#Ôà×ÑØØØ,¨Y¨K°s¸5¸'ÀÀ\ÀNÐRTÐUØõ		
ra   c                ót  — t        |«      }d|› d�}t        |dz   «      |j                  j                  |<   | j	                  ||«      }|j                  |d«       |j                  d|› d�d|› d�d	|› d�d
«       |j                  |› d|› d�d	|› d�«       |j                  d
«       |j                  d«       y)zóEmit CPyInitOnly_* which creates the module object without executing the body.

        This allows the caller to set up attributes like __file__ and __package__
        before the module body runs. Used for same-group native imports.
        rã  r®  r$  r¥  r¦  ú) {ú
Py_INCREF(r¸  úreturn r§  ú = PyModule_Create(&úmodule);rú   N)r4   r   r'  r(  rù  rn  rR  )r^   r-  r«   rÍ  Úinit_only_nameÚinit_only_declr  s          r_   rÌ  z"GroupGenerator.emit_init_only_funcx  sÞ   € ô /¨{Ó;ˆØ% nÐ%5°VÐ<ˆÜ7HÈÐZ]ÑI]Ó7^ˆ�‰×$Ñ$ ^Ñ4Ø×8Ñ8¸ÀgÓNˆØ×Ñ˜>¨3Ô/Ø×ÑØ�=�/ Ð&Ø˜˜ rÐ*Ø�m�_ AÐ&Øô		
ð 	×ÑØˆoÐ1°-°ÀÐIØ�m�_ AÐ&ô	
ð 	×Ñ˜3ÔØ×Ñ˜"Õra   c                ó8
  — | j                   sd|› d�}n6t        |«      }d|› d�}t        |dz   «      |j                  j                  |<   | j
                  r>|j                  |d«       |› d�}|j                  d|› d�«       |j                  d	«       y t        |«      }| j                   r| j                  |||«       |j                  |d«       | j                  ||«      }|j                  d
«       |j                  d«       |j                  d|› d�d|› d�d|› d�d	«       |j                  |› d|› d�d|› d�d«       |j                  d|› d�«       |j                  d«       |j                  d«       | j                  r€t        | j                  «      }	|j                  d«       |j                  d«       |j                  d|	› d�«       |j                  d«       |j                  d«       |j                  d«       n-|j                  d |t        z   › d�«       |j                  d!«       |j                  d"t        › d�«       |j                  d#«       t        | j                  |   j!                  d$«      «      }
|j                  d%|
› d�«       |j                  d&|› d'�«       |j                  d(«       |j                  d)«       |j                  d«       |j                  d*|› d�«       |j                  d+«       |j                  d«       |j                  d,|› d-�«       |j                  d«       |j                  d.«       |j                  d|› d/|› d0�d«       |j                  d1«       |j                  d2«       |j                  d3«       |j                  d«       |j                  d|› d�«       |j                  d4«       |j                  d«       |j                  d5«       |j                  d6«       |j                  d7«       |j                  d8|› d�«       |j                  d9«       |j                  d:«       |j                  d;«       |j                  d<«       |j                  d=«       |j                  d>«       |j                  d?«       |j                  d@«       |j                  d:«       |j                  dA|› d�«       |j                  dB«       |j                  d	«       |j                  dC«       |j                  d	«       y )DNr·  r®  rã  r$  r¥  ro   zreturn PyModuleDef_Init(&r¸  r§  rñ  z#PyObject *initializing_spec = NULL;r¦  r
  r  r  r  r  rò  ró  rá  z modname = PyUnicode_FromString("rä  z,if (modname == NULL) CPyError_OutOfMemory();zint rv = 0;z.PyObject *mod_dict = PyImport_GetModuleDict();zPyObject *shared_lib = NULL;z(rv = PyDict_GetItemStringRef(mod_dict, "z", &shared_lib);zif (rv < 0) goto fail;zKPyObject *shared_lib_file = PyObject_GetAttrString(shared_lib, "__file__");z'if (shared_lib_file == NULL) goto fail;z2PyObject *shared_lib_file = PyUnicode_FromString("z4if (shared_lib_file == NULL) CPyError_OutOfMemory();z-PyObject *ext_suffix = PyUnicode_FromString("z/if (ext_suffix == NULL) CPyError_OutOfMemory();z__init__.pyzPy_ssize_t is_pkg = zrv = CPyImport_SetDunderAttrs(z0, modname, shared_lib_file, ext_suffix, is_pkg);zPy_DECREF(ext_suffix);zPy_DECREF(shared_lib_file);z0initializing_spec = CPyImport_BeginInitializing(zif (initializing_spec == NULL)z8if (PyObject_SetItem(PyImport_GetModuleDict(), modname, rç  r÷  r0  z) != 0)z2rv = CPyImport_EndInitializing(initializing_spec);zinitializing_spec = NULL;zif (rv < 0)r¬  z*    PyObject *exc_type, *exc_val, *exc_tb;z.    PyErr_Fetch(&exc_type, &exc_val, &exc_tb);z    if (modname == NULL) {z(        modname = PyUnicode_FromString("z4        if (modname == NULL) CPyError_OutOfMemory();z    }z8    PyObject_DelItem(PyImport_GetModuleDict(), modname);z    PyErr_Clear();z    Py_DECREF(modname);z$    if (initializing_spec != NULL) {z5        CPyImport_EndInitializing(initializing_spec);z        PyErr_Clear();z    Py_CLEAR(z-    PyErr_Restore(exc_type, exc_val, exc_tb);r¹  )r<  r3   r   r'  r(  r>  rn  rR  r1   rÌ  rù  rõ   r6   r)   Úintrò   Úendswith)r^   r-  r«   rÍ  r\   ÚnÚdef_nameÚ	exec_funcr  Úshared_lib_mod_nameÚis_pkgs              r_   rË  z$GroupGenerator.emit_module_init_func�  s"  € ð ×"Ò"Ø2°;°-¸vÐF‰Kä  Ó-ˆAØ& q c¨Ð0ˆKÜ.?ÀÈcÑ@QÓ.RˆG�O‰O×(Ñ(¨Ñ+à× Ò Ø×Ñ˜{¨CÔ0Ø'˜¨Ð/ˆHØ×ÑÐ 9¸(¸À2ÐFÔGØ×Ñ˜cÔ"Øä$ [Ó1ˆ	à×ÒØ×$Ñ$ W¨k¸=ÔIð 	×Ñ˜;¨Ô,Ø×8Ñ8¸ÀgÓNˆà×ÑÐ5Ô6Ø×ÑÐ?Ô@Ø×ÑØ�=�/ Ð&Ø˜˜ rÐ*Ø�m�_ AÐ&Øô		
ð 	×ÑØˆoÐ1°-°ÀÐIØ˜M˜?¨*Ð5Øô	
ð 	×ÑÐ<¸[¸MÈÐMÔNØ×ÑÐHÔIØ×Ñ˜-Ô(Ø�?Š?Ü"1°$·/±/Ó"BÐØ×ÑÐNÔOØ×ÑÐ<Ô=Ø×ÑØ:Ð;NÐ:OÐO_Ð`ôð ×ÑÐ6Ô7Ø×ÑØ]ôð ×ÑÐGÕHà×ÑØDÀ[ÔS]ÑE]ÐD^Ð^aÐbôð ×ÑÐTÔUØ×ÑÐIÌ*ÈÐUXÐYÔZØ×ÑÐKÔLÜ�T×&Ñ& {Ñ3×<Ñ<¸]ÓKÓLˆØ×ÑÐ0°°¸Ð:Ô;à×ÑØ,¨]¨OÐ;kÐlô	
ð 	×ÑÐ2Ô3Ø×ÑÐ7Ô8Ø×ÑÐ2Ô3ð
 	×ÑÐLÈ]ÈOÐ[]Ð^Ô_Ø×ÑÐ:Ô;Ø×ÑÐ*Ô+Ø×ÑØFÀ}ÀoÐU[Ð\ô	
ð 	×ÑÐ*Ô+Ø×ÑÐ.Ô/Ø×Ñ˜T ) ¨A¨m¨_¸GÐDÐFVÔWØ×ÑÐNÔOØ×ÑÐ5Ô6Ø×Ñ˜-Ô(Ø×ÑÐ*Ô+Ø×Ñ˜G M ?°!Ð4Ô5Ø×Ñ˜7Ô#ð 	×Ñ˜#ÔØ×ÑÐFÔGØ×ÑÐJÔKØ×ÑÐ6Ô7Ø×ÑÐDÀ[ÀMÐQTÐUÔVØ×ÑÐPÔQØ×Ñ˜'Ô"Ø×ÑÐTÔUØ×ÑÐ.Ô/Ø×ÑÐ3Ô4Ø×ÑÐ@ÔAØ×ÑÐQÔRØ×ÑÐ2Ô3Ø×Ñ˜'Ô"Ø×Ñ˜M¨-¨¸Ð;Ô<Ø×ÑÐIÔJØ×Ñ˜#ÔØ×Ñ˜.Ô)Ø×Ñ˜3Õra   c                óÂ   — t        |j                  «      D ]G  }|j                  t        k(  sŒ|j	                  d|j                  |j                  «      › d�dd«        y y)z8Generate call to function representing module top level.zchar result = z();zif (result == 2)rá  N)ÚreversedrÍ   r}   r/   rn  r)  rä   )r^   ro   r-  rØ   s       r_   rþ  z&GroupGenerator.generate_top_level_call  s_   € ô ˜6×+Ñ+Ó,ò 	ˆBØ�w‰wœ.Ó(Ø×"Ñ"Ø$ W×%AÑ%AÀ"Ç'Á'Ó%JÐ$KÈ3ÐOØ&Ø$ôñ
 ñ	ra   c                ó¸   ‡‡‡— g Ši Š| j                   j                  j                  «       D ]  \  }}t        |d«      ‰|<   Œ dˆˆˆfd„Š‰D ]
  } ‰|«       Œ ‰S )a~  Topologically sort the declaration dict by dependencies.

        Declarations can require other declarations to come prior in C (such as declaring structs).
        In order to guarantee that the C output will compile the declarations will thus need to
        be properly ordered. This simple DFS guarantees that we have a proper ordering.

        This runs in O(V + E).
        Fc                óÆ   •— ‰|    }|j                   ry t        |j                  j                  «      D ]
  } ‰|«       Œ ‰j	                  |j                  «       d|_         y )NT)r]   rw   r\   rÑ   rf  )r}   rä   ÚchildÚ_toposort_visitÚmarked_declarationsr¾   s      €€€r_   r  z=GroupGenerator.toposort_declarations.<locals>._toposort_visit  sZ   ø€ Ø& tÑ,ˆDØ�yŠyØä × 0Ñ 0× =Ñ =Ó>ò '�Ù Õ&ð'ð �M‰M˜$×*Ñ*Ô+ØˆD�Ira   )r}   Ústrrc   rd   )r'  r(  rŒ   rZ   )r^   r  Úvr}   r  r  r¾   s       @@@r_   ro  z$GroupGenerator.toposort_declarations  so   ú€ ð ˆØ<>ÐØ—L‘L×-Ñ-×3Ñ3Ó5ò 	A‰DˆAˆqÜ%6°q¸%Ó%@Ð Ò"ð	A÷		ð (ò 	"ˆDÙ˜DÕ!ð	"ð ˆra   Nrƒ  c               óò   — d|vr|› |› �}n|j                  dd«      \  }}|› |› d|› �}|sd }n	|› d|› d�g}|| j                  j                  vr(t        |› d�|¬«      | j                  j                  |<   y y )Nú[rž   rÂ  r$  ©rr  )r7  r'  r(  r   )r^   Útype_spacedr}   r„  ÚbaseÚaÚbrr  s           r_   r‹  zGroupGenerator.declare_global+  sš   € ð �kÑ!Ø!�] 4 &Ð)‰Dà×$Ñ$ S¨!Ó,‰DˆAˆqØ�S˜˜˜a ˜sÐ#ˆDáØ‰Dà�f˜C ˜}¨AÐ.Ð/ˆDØ�t—|‘|×0Ñ0Ñ0Ü.?À4À&ÈÀ
ÐQUÔ.VˆD�L‰L×%Ñ% dÒ+ð 1ra   c                óª   — |j                  d|«      }|| j                  j                  vr)t        d|› d�d¬«      | j                  j                  |<   y y )Nré  rã  r$  Tr%  )rú  r'  r(  r   )r^   r«   r-  rú  s       r_   r_  z'GroupGenerator.declare_internal_globals;  sR   € Ø×)Ñ)¨)°[ÓAˆØ˜dŸl™l×7Ñ7Ñ7Ü5FØ˜[˜M¨Ð+¸$ô6ˆD�L‰L×%Ñ% kÒ2ð 8ra   c                ó8   — |j                  |dz   d t        ¬«      S )NÚ
__internalrð  )rú  r,   )r^   r«   r-  s      r_   rù  z*GroupGenerator.module_internal_static_nameB  s   € Ø×"Ñ" ;°Ñ#=¸tÌMÐ"ÓZÐZra   c                óš  — || j                   v rv| j                  ||«      }| j                  d|d¬«       t        |«      }|| j                  j
                  vr-t        d|› d�d|› d�g¬«      | j                  j
                  |<   |j                  |d t        ¬«      }| j                  d	|«       | j                  j                  |d
f«       y )NzCPyModule *ÚNULLrƒ  zCPyImportState r$  z = {0};r$  rð  zCPyModuleCache z(CPyModuleCache)Py_None)r~   rù  r‹  r2   r'  r(  r   rú  r,   r;  rf  )r^   r«   r-  Úinternal_static_nameÚ
state_namerú  s         r_   r^  zGroupGenerator.declare_moduleE  sÏ   € ð
 ˜$Ÿ,™,Ñ&Ø#'×#CÑ#CÀKÐQXÓ#YÐ Ø×Ñ Ð/CÐQWÐÔXÜ1°+Ó>ˆJØ §¡×!:Ñ!:Ñ:Ü8IØ% j \°Ð3¸_ÈZÈLÐXaÐ;bÐ:cô9�—‘×)Ñ)¨*Ñ5ð ×)Ñ)¨+°tÄMÐ)ÓRˆØ×ÑÐ-¨{Ô;Ø×Ñ× Ñ  +Ð/HÐ!IÕJra   c                óÖ   — | j                   €J ‚t        | j                   «      }|| j                  j                  vr.t	        d|› d�d|› d�g¬«      | j                  j                  |<   y y )NzCPyModuleLockAPI *r$  rö  r$  )rõ   r5   r'  r(  r   )r^   r}   s     r_   r\  z&GroupGenerator.declare_module_lock_apiV  sk   € Ø�‰Ð*Ð*Ð*Ü# D§O¡OÓ4ˆØ�t—|‘|×0Ñ0Ñ0Ü.?Ø$ T F¨!Ð,Ð6HÈÈÈhÐ4WÐ3Xô/ˆD�L‰L×%Ñ% dÒ+ð 1ra   c                ó6   — |D ]  }| j                  ||«       Œ y rn   )r^  )r^   Úimpsr-  Úimps       r_   r`  zGroupGenerator.declare_imports^  s!   € Øò 	.ˆCØ×Ñ  WÕ-ñ	.ra   c           
     óÔ   — |D ]c  \  }}|j                  ||«      }t        |j                  |«      › |› d�| j                  ||||«      gd¬«      |j                  j
                  |<   Œe y r#  )rú  r   Úctype_spacedÚfinal_definitionr'  r(  )r^   ro   ri  r-  r}   r  rú  s          r_   rh  zGroupGenerator.declare_finalsb  sv   € ð %ò 	‰IˆD�#Ø!×-Ñ-¨d°FÓ;ˆKÜ8IØ×'Ñ'¨Ó,Ð-¨k¨]¸!Ð<Ø×&Ñ& v¨t°S¸'ÓBÐCØ!ô9ˆG�O‰O×(Ñ(¨Ò5ñ	ra   c                óz   — |j                  ||«      }|j                  |«      }|j                  |«      › |› d|› d�S )NrÂ  r$  )rú  Úc_initializer_undefined_valuer5  )r^   ro   r}   r  r-  rú  Ú	undefineds          r_   r6  zGroupGenerator.final_definitionm  sG   € Ø×)Ñ)¨$°Ó7ˆà×9Ñ9¸#Ó>ˆ	Ø×&Ñ& sÓ+Ð,¨[¨M¸¸Y¸KÀqÐIÐIra   c                óL   — |j                  |d «      }| j                  d|«       y )Nrã  )rú  r‹  )r^   Ú
identifierr-  rÃ  s       r_   Údeclare_static_pyobjectz&GroupGenerator.declare_static_pyobjects  s$   € Ø×$Ñ$ Z°Ó6ˆØ×Ñ˜L¨&Õ1ra   c                óž   — |D ]H  }|j                  ||t        ¬«      }t        d|› d�d|› d�gd¬«      |j                  j                  |<   ŒJ y )Nrð  rã  r$  rö  Fr%  )rú  r0   r   r'  r(  )r^   ro   rl  r-  r}   rú  s         r_   rk  z GroupGenerator.declare_type_varsw  s_   € Ø"ò 	ˆDØ!×-Ñ-¨d°FÄ?Ð-ÓSˆKÜ8IØ˜[˜M¨Ð+Ø˜k˜]¨(Ð3Ð4Ø"ô9ˆG�O‰O×(Ñ(¨Ò5ñ	ra   )r~   údict[str, ModuleIR]rò   zdict[str, str]rõ   ú
str | Nonerv   údict[str, str | None]r§   rM   rx   rO   rc   rd   )rc   r   )rc   úlist[tuple[str, str]])rc   rd   )r¡  r   r¢  r   rc   rd   )r-  r   rc   rd   )r-  r   r«   r   ro   rD   rc   rd   )r-  r   rÍ  r   r«   r   rc   rd   )
r-  r   r«   r   rÍ  r   ro   rD   rc   rd   )r-  r   r«   r   rÍ  r   rc   rd   )r-  r   ro   rD   ré  r   rc   rd   )ro   rD   r-  r   rc   rd   )rc   zlist[HeaderDeclaration])r%  r   r}   r   r„  r?  rc   rd   )r«   r   r-  r   rc   rd   )r«   r   r-  r   rc   r   )r2  zIterable[str]r-  r   rc   rd   )ro   r   ri  zIterable[tuple[str, RType]]r-  r   rc   rd   )
ro   r   r}   r   r  rI   r-  r   rc   r   )r;  r   r-  r   rc   rd   )ro   r   rl  z	list[str]r-  r   rc   rd   ) re   rf   rg   r`   ÚpropertyrA  rC  rñ   r]  rs  rt  rp  rd  rÉ  rÇ  rÊ  rí  rÈ  rÌ  rË  rþ  ro  r‹  r_  rù  r^  r\  r`  rh  r6  r<  rk  ri   ra   r_   rð   rð   s  s
  „ ð&1à$ð&1ð %ð&1ð ð	&1ð
 )ð&1ð ð&1ð *ð&1ð 
ó&1ðP òOó ðOð ò^ó ð^ój
óX\ó@:%óxFóPDó*Jð( Øð Ø/2ð ØADð à	ó ð*ØðØ-0ðØADðØNVðà	óð:ØðØ-0ðØADðà	óó0*ð0w
Øðw
Ø-0ðw
ØADðw
ØNVðw
à	ów
órð0o Øðo Ø-0ðo ØADðo à	óo ób
óð> IMñWØðWØ&)ðWØ;EðWà	óWó ó[óKó"ó.ð	Øð	Ø(Cð	ØNUð	à	ó	óJó2ôra   rð   ÚTc                óV   ‡ ‡‡‡— g Št        «       Šdˆ ˆˆˆfd„Š‰ D ]
  } ‰|«       Œ ‰S )zUTopologically sort a dict from item to dependencies.

    This runs in O(V + E).
    c                óx   •— | ‰v ry ‰|    D ]
  } ‰|«       Œ ‰j                  | «       ‰j                  | «       y rn   )rf  r­   )Úitemr  rÙ   r¾   ÚvisitÚvisiteds     €€€€r_   rG  ztoposort.<locals>.visitŒ  sA   ø€ Ø�7‰?Øà˜$‘Zò 	ˆEÙ�%�Lð	ð 	�‰�dÔØ�‰�DÕra   )rF  rC  rc   rd   )r¦   )rÙ   rF  r¾   rG  rH  s   ` @@@r_   ÚtoposortrI  „  s:   û€ ð
 €FÜ“e€G÷ð ð ò ˆÙˆd�ðð €Mra   c                ó|   — | j                   �0| j                  dk(  ry| j                  dk7  xr | j                  dk7  S y)NÚ__call__Tr`   Ú__new__)re  r}   )rØ   r+  s     r_   r*  r*  œ  s;   € Ø	‡}�}Ð Ø�7‰7�jÒ àà�w‰w˜*Ñ$Ò=¨¯©°IÑ)=Ð=Øra   c                ó    — | j                   D ]?  }|j                  D ].  }t        |t        «      sŒ|j	                  |j
                  «       Œ0 ŒA y)z¼Store all Python literal object refs in fn.

    Collecting literals must happen only after we have the final IR.
    This way we won't include literals that have been optimized away.
    N)ÚblocksÚopsrª   rH   Úrecord_literalÚvalue)rØ   rZ  ÚblockÚops       r_   rY  rY  ¦  sF   € ð —‘ò 2ˆØ—)‘)ò 	2ˆBÜ˜"œkÕ*Ø×'Ñ'¨¯©Õ1ñ	2ñ2ra   c                óº   — g }|j                  d«       | D ]"  }|j                  dt        |«      z   dz   «       Œ$ |j                  d«       dj                  |«      S )Nz{
z    z,
r§  rú   )rf  r   r�   )Ú
componentsr¾   Úss      r_   r�  r�  ²  sZ   € Ø€FØ
‡M�M�%ÔØò @ˆØ�‰�fÔ3°AÓ6Ñ6¸Ñ>Õ?ð@à
‡M�M�#ÔØ�7‰7�6‹?Ðra   )NN)r|   úlist[BuildSource]rz   r   rx   rO   r{   r²   r·   zFileSystemCache | Noner¶   r?  rc   r   )rÓ   úlist[MypyFile]r¾   r   rÔ   rK   rx   rO   r»   r9   rc   rE   )
r¾   r   rÔ   rK   rx   rO   r»   r9   rc   rE   )r{   r²   r~   rE   r¾   r   rÔ   rK   rx   rO   rc   ú'dict[str | None, list[tuple[str, str]]])rô   rW  r¾   r   rc   rA  )r   r   r…   r   rz   r   rc   r   )rþ   r   rc   r   )
r~   rE   r¾   r   rv   r@  ró   rY  rc   rd   )
rÓ   rX  r¾   r   rÔ   rK   r‘   rG   rc   rE   )r~   r>  rc   zset[SourceDep])r~   r>  r  rb   rc   r³   )
r¾   r   rx   rO   r»   r9   r{   r²   rc   z,tuple[ModuleIRs, list[FileContents], Mapper])rØ   rC   r-  r   rc   rd   )rä   r   r}   r   rc   r   )rõ   r   rc   r   )rÙ   zdict[T, set[T]]rc   zlist[T])rØ   rC   r+  ztuple[int, int]rc   rb   )rØ   rC   rZ  r(   rc   rd   )rU  zlist[bytes]rc   r   )žrh   Ú
__future__r   rŠ   rŽ   rÓ  Úcollections.abcr   Útypingr   Ú
mypy.buildr   r   r   r	   r
   r   r   r   Úmypy.errorsr   Úmypy.fscacher   Ú
mypy.nodesr   r   Úmypy.optionsr   Úmypy.pluginr   r   Ú	mypy.utilr   r   Úmypyc.analysis.capsule_depsr   r   Úmypyc.codegen.cstringr   Úmypyc.codegen.emitr   r   r   r   r   Úmypyc.codegen.emitclassr   r    r!   Úmypyc.codegen.emitfuncr"   r#   Úmypyc.codegen.emitwrapperr$   r%   r&   r'   Úmypyc.codegen.literalsr(   Úmypyc.commonr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Úmypyc.crashr8   Úmypyc.errorsr9   Úmypyc.ir.depsr:   r;   r<   r=   r>   r?   r@   rA   rB   Úmypyc.ir.func_irrC   Úmypyc.ir.module_irrD   rE   rF   Úmypyc.ir.opsrG   rH   Úmypyc.ir.rtypesrI   Úmypyc.irbuild.mainrJ   Úmypyc.irbuild.mapperrK   Úmypyc.irbuild.preparerL   Úmypyc.namegenrM   rN   Úmypyc.optionsrO   Ú&mypyc.transform.borrow_generator_attrsrP   Ú mypyc.transform.copy_propagationrQ   Úmypyc.transform.exceptionsrR   Ú mypyc.transform.flag_eliminationrS   Úmypyc.transform.log_tracerT   Úmypyc.transform.lowerrU   Úmypyc.transform.refcountrV   Úmypyc.transform.spillrW   Úmypyc.transform.uninitrX   ÚtupleÚlistr   ÚGroupr²   ÚFileContentsrZ   rk   r¿   rÛ   rì   rø   rï   r‡   rû   r  râ   r  r  r!  r.  r3  r8  rð   rC  rI  r*  rY  r�  ri   ra   r_   ú<module>r…     s(  ðÙ Nõ
 #ã Û 	Û 
Ý $Ý ÷	÷ 	ó 	õ %Ý (ß )Ý  ß 3ß -ß ^Ý 6÷õ ÷ cÑ bß S÷ó õ ,÷÷ ÷ ÷ ñ õ" %Ý ÷
÷ 
õ 
õ $ß GÑ Gß /Ý !Ý 'Ý 'Ý /ß 6Ý )Ý IÝ @Ý @Ý @Ý @Ý *Ý =Ý /Ý 7ð, 	ˆd�;Ñ  t¡Ð+Ñ,€Ø	ˆe‰€ð �E˜#˜s˜(‘OÑ$€÷ñ ôb�&ô bðT '+Ø#ðØðàðð &ðð ð	ð
 $ðð ðð óð4GØ	ðGàðGð ðGð &ð	Gð
 ðGð óGðT#Øð#Ø!'ð#Ø;Jð#ØTZð#àó#ðL-Øð-àð-ð ð-ð ð	-ð
 &ð-ð -ó-ð`Ø$ðØ.9ðàóó4WóCð2&Øð2&àð2&ð %ð2&ð 3ð	2&ð
 
ó2&ðjØ	ðØ!,ðØ6<ðØCLðàóó$
óð%@Øð%@Ø+:ð%@ØDJð%@ØTZð%@à1ó%@óPó$.ó3÷
Kñ Kñ\  ˆCƒL€óó0ó	2ôra   