Ë
    pPêjYG  ã                  óø  — d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZmZmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# dd	l$m%Z%m&Z&m'Z'm(Z( dd
l)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@ 	 	 	 	 	 	 d!d„ZAd"d„ZBd#d„ZCd$d„ZDd%d„ZEd%d„ZFd&d„ZG	 	 	 	 	 	 	 	 	 	 	 	 d'd„ZH	 	 	 	 	 	 	 	 	 	 d(d„ZId)d„ZJd*d„ZKd*d„ZLd*d„ZMd)d„ZNd)d„ZOd%d„ZPy )+a  Generate IR for generator functions.

A generator function is represented by a class that implements the
generator protocol and keeps track of the generator state, including
local variables.

The top-level logic for dealing with generator functions is in
mypyc.irbuild.function.
é    )Úannotations)ÚCallable)ÚARG_OPTÚFuncDefÚVar)ÚENV_ATTR_NAMEÚGENERATOR_ATTRIBUTE_PREFIXÚGENERATOR_HELPER_NAMEÚNEXT_LABEL_ATTR_NAME)ÚClassIR)ÚFuncDeclÚFuncIR)ÚNO_TRACEBACK_LINE_NOÚ
BasicBlockÚBranchÚCallÚGetAttrÚGotoÚIntegerÚLoadErrorValueÚ
MethodCallÚRaiseStandardErrorÚRegisterÚReturnÚSetAttrÚTupleSetÚUnreachableÚValue)Ú	RInstanceÚint32_rprimitiveÚobject_pointer_rprimitiveÚobject_rprimitive)Ú	IRBuilderÚcalculate_arg_defaultsÚgen_arg_defaults)ÚFuncInfo)Úadd_generator_argsÚadd_vars_to_envÚfinalize_env_classÚload_env_registersÚload_outer_envsÚsetup_func_for_recursive_call)ÚExceptNonlocalControlÚgen_generator_func_cleanup)ÚAssignmentTargetAttr)Úerror_catch_opÚexc_matches_opÚraise_exception_with_tb_opÚreraise_exception_opÚrestore_exc_info_opc                ó¨  — t        | «       t        | t        ¬«       t        | «       | j                  j                  «       r*t        | «      }|| j                  _        t        | d¬«      }nt        | d¬«      }t        | «      }t        | ||d¬«       | j                  t        |«      «       | j                  «       \  }}}}} ||||«      \  }	}
|	|
fS )zAGenerate IR for generator function that returns generator object.©ÚprefixF)Úadd_argsT©Úreassign)Úsetup_generator_classr*   r	   r%   Úfn_infoÚ#can_merge_generator_and_env_classesÚinstantiate_generator_classÚ_curr_env_regr)   r'   Úaddr   Úleave)ÚbuilderÚgen_func_irÚgenÚenv_regÚargsÚ_ÚblocksÚret_typer<   Úfunc_irÚfunc_regs              ú\/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/irbuild/generator.pyÚgen_generator_funcrM   E   s¹   € ô ˜'Ô"Ü�wÔ'AÕBÜ�WÔØ‡�×:Ñ:Ô<Ü)¨'Ó2ˆØ(+ˆ�‰Ô%Ü$ W°uÔ=‰ä$ W°uÔ=ˆÜ)¨'Ó2ˆÜ�w  W°tÕ<Ø‡K�K”�s“Ôà)0¯©«Ñ&€Dˆ!ˆV�X˜wÙ# D¨&°'Ó:Ñ€GˆXØ�HÐÐó    c           	     ó
  — | j                  |t        ¬«       t        | «       t        | | j                  j
                  «       | j                  «       }|j                  }| j                  j                  r?t        |t        «      r/|r-|j                  r!t        | || j                  j
                  «       t        «       }| j                  j                  |«       t!        | «       t#        | |j$                  «       t'        | t(        ¬«       | j+                  |j,                  «       | j/                  «        | j                  j1                  «        | j3                  |«       t5        | |j$                  «       | j7                  t9        | j7                  t;        t        «      «      «      «       t=        | «       | j>                  d   }| jA                  «       \  }}}	}
}tC        | |||	|jD                  «       tG        | |||«       y)a  Generate IR based on the body of a generator function.

    Add "__next__", "__iter__" and other generator methods to the generator
    class that implements the function (each function gets a separate class).

    Return the symbol table for the body.
    )rI   r6   éÿÿÿÿN)$Úenterr"   Úsetup_env_for_generator_classr+   r<   Úgenerator_classÚtop_level_fn_infoÚfitemÚ	is_nestedÚ
isinstancer   Úadd_nested_funcs_to_envr,   r   rB   Úpush_error_handlerÚ!create_switch_for_generator_classÚ-add_raise_exception_blocks_to_generator_classÚliner(   r	   ÚacceptÚbodyÚmaybe_add_implicit_returnÚpop_error_handlerÚactivate_blockr.   r@   r   r   Ú#populate_switch_for_generator_classÚ	symtablesrA   Úadd_methods_to_generator_classÚis_coroutiner$   )rB   r<   rK   Ú	top_levelrU   Úcleanup_on_errorÚsymtablerF   rG   rH   rI   s              rL   Úgen_generator_func_bodyri   ^   s|  € ð ‡M�M�'Ô$5€MÔ6Ü! 'Ô*ä�G˜WŸ_™_×<Ñ<Ô=Ø×)Ñ)Ó+€IØ�M‰M€Eà�‰×!Ò!Ü�uœgÔ&ÙØ×-Ò-ä% g¨u°g·o±o×6UÑ6UÔVÜ!“|ÐØ‡O�O×&Ñ&Ð'7Ô8Ü% gÔ.Ü1°'¸5¿:¹:ÔFä�GÔ$>Õ?à‡N�N�5—:‘:ÔØ×%Ñ%Ô'Ø‡O�O×%Ñ%Ô'à×ÑÐ+Ô,Ü˜w¨¯
©
Ô3Ø‡K�K”�w—{‘{¤>Ô2CÓ#DÓEÓFÔGä'¨Ô0ð × Ñ  Ñ$€Hà)0¯©«Ñ&€Dˆ!ˆV�X˜wä" 7¨G°T¸6À5×CUÑCUÔVô ˜7 G¨X°xÕ@rN   c                ó^  — | j                   j                  }| j                  t        | j                   j                  j
                  j                  g |j                  «      «      }| j                   j                  «       sx| j                   j                  r!| j                   j                  j                  }n| j                   j                  }| j                  t        |t        ||j                  «      «       t        d«      }| j                  t        |t        ||j                  «      «       |S )Nr   )r<   rU   r@   r   rS   ÚirÚctorr\   r=   rV   Úcallable_classÚcurr_env_regr   r   r   r   )rB   rU   Úgenerator_regrn   Úzeros        rL   r>   r>   ‘   sÒ   € Ø�O‰O×!Ñ!€EØ—K‘K¤ W§_¡_×%DÑ%D×%GÑ%G×%LÑ%LÈbÐRW×R\ÑR\Ó ]Ó^€Mà�?‰?×>Ñ>Ô@ð
 �?‰?×$Ò$Ø"Ÿ?™?×9Ñ9×FÑF‰Là"Ÿ?™?×7Ñ7ˆLð 	�‰”G˜M¬=¸,ÈÏ
É
ÓSÔTô �1‹:€DØ‡K�K”˜Ô';¸TÀ5Ç:Á:ÓNÔOØÐrN   c                ój  — | j                   }t        | j                  j                  t        «      sJ | j                  j                  «       ‚|j
                  | j                  j                     }d|_        d|_        | j                  j                  «       r|| j                  _	        not        | j                  j                  «      |j                  t        <   | j                  j                  j                  s|j                  j                  t        «       | j                   j#                  |«       |S )NT)ÚmapperrW   r<   rU   r   Úfdef_to_generatorÚhas_running_flagÚhas_private_generator_framer=   Ú	env_classr   Ú
attributesr   re   Ú!attrs_to_keep_alive_on_completionr@   ÚclassesÚappend)rB   rr   Úgenerator_class_irs      rL   r;   r;   ª   sß   € Ø�^‰^€FÜ�g—o‘o×+Ñ+¬WÔ5ÐL°w·±×7LÑ7LÓLÐ5Ø×1Ñ1°'·/±/×2GÑ2GÑHÐØ*.ÐÔ'Ø59ÐÔ2Ø‡�×:Ñ:Ô<Ø$6ˆ�‰Õ!ä7@ÀÇÁ×AZÑAZÓ7[Ð×%Ñ%¤mÑ4Ø�‰×$Ñ$×1Ò1ð
 ×@Ñ@×DÑDÄ]ÔSà‡O�O×ÑÐ-Ô.ØÐrN   c                ó  — | j                  t        | j                  j                  j                  «      «       t        «       }| j                  j                  j                  j                  |«       | j                  |«       y ©N)	r@   r   r<   rS   Úswitch_blockr   Úcontinuation_blocksrz   ra   )rB   Úblocks     rL   rZ   rZ   ¿   sV   € Ø‡K�K”�W—_‘_×4Ñ4×AÑAÓBÔCÜ‹L€EØ‡O�O×#Ñ#×7Ñ7×>Ñ>¸uÔEØ×Ñ˜5Õ!rN   c                ó  — | j                   j                  }| j                   j                  j                  }| j	                  |j
                  «       t        |j                  «      D ]Z  \  }}t        «       }| j                  |j                  t        |«      d|«      }| j                  |||«       | j	                  |«       Œ\ | j                  t        t        j                  d |«      «       | j                  t!        «       «       y )Nz==)r<   rS   rU   r\   ra   r~   Ú	enumerater   r   Ú	binary_opÚnext_label_regr   Úadd_bool_branchr@   r   ÚSTOP_ITERATIONr   )rB   Úclsr\   ÚlabelÚ
true_blockÚfalse_blockÚ
comparisons          rL   rb   rb   Æ   sÎ   € Ø
�/‰/×
)Ñ
)€CØ�?‰?× Ñ ×%Ñ%€Dà×Ñ˜3×+Ñ+Ô,Ü& s×'>Ñ'>Ó?ò ,ÑˆˆzÜ “lˆØ×&Ñ& s×'9Ñ'9¼7À5»>È4ÐQUÓVˆ
Ø×Ñ 
¨J¸ÔDØ×Ñ˜{Õ+ð	,ð ‡K�KÔ"Ô#5×#DÑ#DÀdÈDÓQÔRØ‡K�K”“ÕrN   c                ó¨  — | j                   j                  }|j                  €J ‚|j                  \  }}}t        «       }t        «       }| j	                  || j                  «       d|«      }| j                  |||«       | j                  |«       | j                  t        |||g|«       | j                  t        «       «       | j                  |«       y)zÛAdd error handling blocks to a generator class.

    Generates blocks to check if error flags are set while calling the
    helper method for generator functions, and raises an exception if
    those flags are set.
    Nzis not)r<   rS   Úexc_regsr   Útranslate_is_opÚnone_objectr…   ra   Úcall_cr2   r@   r   Úgoto_and_activate)	rB   r\   r‡   Úexc_typeÚexc_valÚexc_tbÚerror_blockÚok_blockr‹   s	            rL   r[   r[   Õ   s·   € ð �/‰/×
)Ñ
)€CØ�<‰<Ð#Ð#Ð#Ø #§¡Ñ€Hˆg�vô “,€KÜ‹|€HØ×(Ñ(¨°7×3FÑ3FÓ3HÈ(ÐTXÓY€JØ×Ñ˜J¨°XÔ>à×Ñ˜;Ô'Ø‡N�NÔ-°¸'À6Ð/JÈDÔQØ‡K�K”“ÔØ×Ñ˜hÕ'rN   c                ó¼   — t        | |||«      }t        | ||«       t        | ||«       t        | |«       t	        | ||«       t        | |«       |rt        | |«       y y r}   )Úadd_helper_to_generator_classÚadd_next_to_generator_classÚadd_send_to_generator_classÚadd_iter_to_generator_classÚadd_throw_to_generator_classÚadd_close_to_generator_classÚadd_await_to_generator_class)rB   r<   Úarg_regsrH   re   Úhelper_fn_decls         rL   rd   rd   ì   s^   € ô 3°7¸HÀfÈgÓV€NÜ ¨°.ÔAÜ ¨°.ÔAÜ ¨Ô1Ü  ¨'°>ÔBÜ  ¨'Ô2ÙÜ$ W¨gÕ6ð rN   c                ó~  — |j                   j                  j                  t           }t	        ||||j
                  j                  |j
                  j                  ¬«      }||j                   j                  j                  t        <   | j                  j                  |«       ||j                   j                  _        |S )zRGenerates a helper method for a generator class, called by '__next__' and 'throw'.)Útraceback_name)rS   rk   Úmethod_declsr
   r   rU   r\   ÚnameÚmethodsÚ	functionsrz   Úenv_user_function)rB   rŸ   rH   r<   r    Úhelper_fn_irs         rL   r˜   r˜   ý   sœ   € ð ×,Ñ,×/Ñ/×<Ñ<Ô=RÑS€NÜØ˜ &¨'¯-©-×*<Ñ*<ÈWÏ]É]×M_ÑM_ô€Lð AM€G×Ñ×Ñ×&Ñ&Ô'<Ñ=Ø×Ñ×Ñ˜\Ô*ð 4@€G×Ñ×ÑÔ0àÐrN   c                óÖ   — | j                  |j                  j                  dt        |«      5  | j	                  t        | j                  «       «      «       ddd«       y# 1 sw Y   yxY w)z6Generates the '__iter__' method for a generator class.Ú__iter__N©Úenter_methodrS   rk   r"   r@   r   Úself©rB   r<   s     rL   r›   r›     sP   € à	×	Ñ	˜g×5Ñ5×8Ñ8¸*ÔFWÐY`Ó	añ ,Ø�‰”F˜7Ÿ<™<›>Ó*Ô+÷,÷ ,ñ ,úó   ­)AÁA(c                ó~  — | j                  |j                  j                  dt        |«      5  | j	                  «       }| j                  t        || j                  «       ||||t        dt        «      g|j                  j                  «      «      }| j                  t        |«      «       ddd«       y# 1 sw Y   yxY w)z6Generates the '__next__' method for a generator class.Ú__next__r   N)r¬   rS   rk   r"   r�   r@   r   r­   r   r!   rU   r\   r   )rB   r<   Úfn_declÚnone_regÚresults        rL   r™   r™     s¦   € à	×	Ñ	˜g×5Ñ5×8Ñ8¸*ÔFWÐY`Ó	añ $Ø×&Ñ&Ó(ˆà—‘ÜØà—L‘L“NØØØØÜ˜AÔ8Ó9ðð —‘×"Ñ"óó
ˆð 	�‰”F˜6“NÔ#÷#$÷ $ñ $ús   ­A=B3Â3B<c                óÈ  — | j                  |j                  j                  dt        |«      5  | j	                  dt        «      }| j                  «       }| j                  t        || j                  «       |||| j                  |«      t        dt        «      g|j                  j                  «      «      }| j                  t        |«      «       ddd«       y# 1 sw Y   yxY w)z2Generates the 'send' method for a generator class.ÚsendÚargr   N)r¬   rS   rk   r"   Úadd_argumentr�   r@   r   r­   Úreadr   r!   rU   r\   r   )rB   r<   r²   r·   r³   r´   s         rL   rš   rš   *  sÂ   € à	×	Ñ	˜g×5Ñ5×8Ñ8¸&ÔBSÐU\Ó	]ñ $Ø×"Ñ" 5Ô*;Ó<ˆØ×&Ñ&Ó(ˆà—‘ÜØà—L‘L“NØØØØ—L‘L Ó%Ü˜AÔ8Ó9ðð —‘×"Ñ"óó
ˆð 	�‰”F˜6“NÔ#÷%$÷ $ñ $ús   ­B"CÃC!c                ó  ‡— | j                  |j                  j                  dt        |«      5  | j	                  dt        «      }| j	                  dt        t
        «      }| j	                  dt        t
        «      }| j                  «       Š| j                  |ˆfd„|j                  j                  «       | j                  |ˆfd„|j                  j                  «       | j                  t        || j                  «       | j                  |«      | j                  |«      | j                  |«      ‰t        dt        «      g|j                  j                  «      «      }| j                  t!        |«      «       ddd«       y# 1 sw Y   yxY w)	z3Generates the 'throw' method for a generator class.ÚthrowÚtypeÚvalueÚ	tracebackc                 ó   •— ‰ S r}   © ©r³   s   €rL   ú<lambda>z.add_throw_to_generator_class.<locals>.<lambda>L  s   ø€ ¨H€ rN   c                 ó   •— ‰ S r}   rÀ   rÁ   s   €rL   rÂ   z.add_throw_to_generator_class.<locals>.<lambda>M  s   ø€ ¨8€ rN   r   N)r¬   rS   rk   r"   r¸   r   r�   Úassign_if_nullrU   r\   r@   r   r­   r¹   r   r!   r   )rB   r<   r²   ÚtypÚvalÚtbr´   r³   s          @rL   rœ   rœ   A  s=  ø€ à	×	Ñ	˜g×5Ñ5×8Ñ8¸'ÔCTÐV]Ó	^ñ $Ø×"Ñ" 6Ô+<Ó=ˆØ×"Ñ" 7Ô,=¼wÓGˆØ×!Ñ! +Ô/@Ä'ÓJˆð
 ×&Ñ&Ó(ˆØ×Ñ˜sÓ$4°g·m±m×6HÑ6HÔIØ×Ñ˜rÓ#3°W·]±]×5GÑ5GÔHð —‘ÜØà—L‘L“NØ—L‘L Ó%Ø—L‘L Ó%Ø—L‘L Ó$ØÜ˜AÔ8Ó9ðð —‘×"Ñ"óó
ˆð 	�‰”F˜6“NÔ#÷7$÷ $ñ $ús   ®E
FÆF
c                óJ  — | j                  |j                  j                  dt        |«      5  t	        «       t	        «       }}| j
                  j                  |«       | j                  t	        «       «       | j                  d|j                  j                  «      }| j                  t        | j                  «       d|| j                  «       | j                  «       g|j                  j                  «      «       | j                  |«       | j
                  j!                  «        | j#                  |«       | j%                  t&        g |j                  j                  «      }| j(                  j+                  t-        | j(                  d   |«      «       | j                  d|j                  j                  «      }| j                  t/        ||g|j                  j                  «      «      }| j%                  t0        |g|j                  j                  «      }t	        «       t	        «       }
}	| j                  t3        ||	|
t2        j4                  «      «       | j#                  |	«       | j%                  t6        | j9                  |«      g|j                  j                  «       | j                  t;        | j                  «       «      «       | j#                  |
«       | j%                  t<        g t>        «       | j                  tA        «       «       | j(                  jC                  «        | j#                  |«       | j                  tE        tD        jF                  d|j                  j                  «      «       | j                  tA        «       «       ddd«       y# 1 sw Y   yxY w)z7Generates the '__close__' method for a generator class.Úclosezbuiltins.GeneratorExitr»   rP   zbuiltins.StopIterationzgenerator ignored GeneratorExitN)$r¬   rS   rk   r"   r   rB   rY   r‘   Úload_module_attr_by_fullnamerU   r\   r@   r   r­   r�   Úgotor`   ra   r�   r0   Únonlocal_controlrz   r-   r   r1   r   ÚBOOLr4   r¹   r   r3   r   r   Úpopr   ÚRUNTIME_ERROR)rB   r<   Úexcept_blockÚ
else_blockÚgenerator_exitÚold_excÚstop_iterationÚ
exceptionsÚmatchesÚmatch_blockÚnon_match_blocks              rL   r�   r�   a  s«  € à	×	Ñ	˜g×5Ñ5×8Ñ8¸'ÔCTÐV]Ó	^ñ 2#Ü#-£<´³�jˆØ�‰×*Ñ*¨<Ô8Ø×!Ñ!¤*£,Ô/Ø ×=Ñ=Ø$ g§m¡m×&8Ñ&8ó
ˆð 	�‰ÜØ—‘“ØØ ×!4Ñ!4Ó!6¸×8KÑ8KÓ8MÐNØ—‘×"Ñ"ó	ô	
ð 	�‰�ZÔ Ø�‰×)Ñ)Ô+à×Ñ˜|Ô,Ø—.‘.¤°°W·]±]×5GÑ5GÓHˆØ× Ñ ×'Ñ'Ü! '×":Ñ":¸2Ñ">ÀÓHô	
ð !×=Ñ=Ø$ g§m¡m×&8Ñ&8ó
ˆð —[‘[¤¨>¸>Ð*JÈGÏMÉM×L^ÑL^Ó!_Ó`ˆ
Ø—.‘.¤°*°¸w¿}¹}×?QÑ?QÓRˆä'1£|´Z³\�_ˆØ�‰”F˜7 K°Ä&Ç+Á+ÓNÔOà×Ñ˜{Ô+Ø�‰Ô*¨W¯\©\¸'Ó-BÐ,CÀWÇ]Á]×EWÑEWÔXØ�‰”F˜7×.Ñ.Ó0Ó1Ô2à×Ñ˜Ô/Ø�‰Ô+¨RÔ1EÔFØ�‰”K“MÔ"à× Ñ ×$Ñ$Ô&à×Ñ˜zÔ*Ø�‰ÜÜ"×0Ñ0Ø1Ø—‘×"Ñ"óô	
ð 	�‰”K“MÔ"÷e2#÷ 2#ñ 2#ús   ­M#NÎN"c                óÖ   — | j                  |j                  j                  dt        |«      5  | j	                  t        | j                  «       «      «       ddd«       y# 1 sw Y   yxY w)z7Generates the '__await__' method for a generator class.Ú	__await__Nr«   r®   s     rL   rž   rž   ˜  sP   € à	×	Ñ	˜g×5Ñ5×8Ñ8¸+ÔGXÐZaÓ	bñ ,Ø�‰”F˜7Ÿ<™<›>Ó*Ô+÷,÷ ,ñ ,úr¯   c                óÄ  — | j                   j                  }| j                   j                  }| j                  |j                  «      }| j                  t        d«      t        d¬«      }| j                  t        d«      t        d¬«      }| j                  t        d«      t        d¬«      }| j                  t        d«      t        d¬«      }| j                  t        d«      t        d¬«      }|||f|_	        ||_
        ||_        | j                  ||j                  «      |_        t        |j                  j                   t"        <   |j                  j$                  j'                  t"        «       t)        |j                  t"        «      }	| j+                  t        t"        «      |	«      |_        | j                   j/                  «       r|j                  |_        n9| j'                  t3        |j                  t4        |j                  «      «      |_        t7        | |j                  |j0                  d¬	«       | j                  |j,                  |j                  «      |_        y
)z0Populates the environment for a generator class.r¼   T)Úis_argr½   r¾   r·   Ústop_iter_ptrFr9   N)r<   rU   rS   Úadd_self_to_envrk   Ú	add_localr   r"   r!   r�   Úsend_arg_regÚstop_iter_value_regr¹   r\   Úself_regr    rw   r   Úattrs_with_defaultsr@   r/   Ú
add_targetÚnext_label_targetr=   rn   r   r   r'   r„   )
rB   rU   r‡   Úself_targetr’   r“   r”   Úexc_argÚstop_iter_value_argrå   s
             rL   rR   rR   ž  s×  € à�O‰O×!Ñ!€EØ
�/‰/×
)Ñ
)€CØ×)Ñ)¨#¯&©&Ó1€Kð × Ñ ¤ V£Ô.?ÈÐ ÓM€HØ×Ñ¤ G£Ô.?ÈÐÓM€GØ×Ñœs ;Ó/Ô1BÈ4ÐÓP€Fà×Ñ¤ E£
Ô,=ÀdÐÓK€Gð "×+Ñ+ÜˆOÓÔ7Àð ,ó Ðð ˜g vÐ.€C„LØ€CÔØ1€CÔà—<‘< ¨U¯Z©ZÓ8€C„Lô
 /?€C‡F�F×ÑÔ*Ñ+Ø‡F�F×Ñ×"Ñ"Ô#7Ô8Ü,¨S¯\©\Ô;OÓPÐØ#×.Ñ.¬sÔ3GÓ/HÐJ[Ó\€CÔà‡�×:Ñ:Ô<ØŸ<™<ˆÕà"Ÿ;™;¤w¨s¯|©|¼]ÈEÏJÉJÓ'WÓXˆÔô �w §¡¨c×.>Ñ.>ÈÕOð !Ÿ™ c×&;Ñ&;¸U¿Z¹ZÓH€CÕrN   N)rB   r#   rC   zSCallable[[list[Register], list[BasicBlock], FuncInfo], tuple[FuncIR, Value | None]]Úreturnztuple[FuncIR, Value | None])rB   r#   r<   r&   rK   zValue | Noneré   ÚNone)rB   r#   ré   r   )rB   r#   ré   r   )rB   r#   ré   rê   )rB   r#   r\   Úintré   rê   )rB   r#   r<   r&   rŸ   úlist[Register]rH   úlist[BasicBlock]re   Úboolré   rê   )
rB   r#   rŸ   rì   rH   rí   r<   r&   ré   r   )rB   r#   r<   r&   ré   rê   )rB   r#   r<   r&   r²   r   ré   rê   )QÚ__doc__Ú
__future__r   Úcollections.abcr   Ú
mypy.nodesr   r   r   Úmypyc.commonr   r	   r
   r   Úmypyc.ir.class_irr   Úmypyc.ir.func_irr   r   Úmypyc.ir.opsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úmypyc.ir.rtypesr   r    r!   r"   Úmypyc.irbuild.builderr#   r$   r%   Úmypyc.irbuild.contextr&   Úmypyc.irbuild.env_classr'   r(   r)   r*   r+   r,   Úmypyc.irbuild.nonlocalcontrolr-   r.   Úmypyc.irbuild.targetsr/   Úmypyc.primitives.exc_opsr0   r1   r2   r3   r4   rM   ri   r>   r;   rZ   rb   r[   rd   r˜   r›   r™   rš   rœ   r�   rž   rR   rÀ   rN   rL   ú<module>rþ      sG  ðñõ #å $ç ,Ñ ,÷ó õ &ß -÷÷ ÷ ÷ ó ÷$ó ÷ VÑ UÝ *÷÷ ÷ \Ý 6÷õ ðØðððð
 !óó20Aófó2ó*"óó(ð.7Øð7àð7ð ð7ð ð	7ð
 ð7ð 
ó7ð"ØðØ"0ðØ:JðØU]ðàóó",ó$ó,$ó.$ó@4#ón,ô*IrN   