ó
    CC˜j¸ ã                   ó‚  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
Jr  SSKJrJr  SSKrSSKJr  SSKJrJrJr  SS	KJrJrJrJrJrJrJr  SS
KJ r J!r!J"r"  SSK#J$r$  SSK%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SSK-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<  SSK=J>r>J?r?J@r@JArA  SSKBJCrC  SSKDJErE  SSKFJGrG  \(       a  SSKHJIrI  SSKJJKrK  SSS\R˜                  Rš                  S\N\A   S\O\P\A4   SS4
S jrQ\
S\PS\SSS\R˜                  Rš                  S\4
S j5       rRS\S-  S\R˜                  Rš                  SS4S jrSS \S\R˜                  Rš                  S!\S"\R¨                  \   SS4
S# jrUS \S\R˜                  Rš                  S$\S%\SS4
S& jrV " S' S(\A5      rW " S) S*\G5      rX " S+ S,\X5      rY " S- S.\X5      rZg)/aQ  
This module implements variable tracking for PyTorch nn.Module instances during Dynamo tracing.

It provides specialized handling for different types of nn.Module instances through several key classes:

- NNModuleVariable: Handles instance-specific module tracing, specializing on module id() and placing
  parameters directly on the torch.fx.GraphModule. This creates one graph per module instance.

- UnspecializedNNModuleVariable: Provides class-level module tracing, treating nn.Modules like other
  user-defined objects and passing parameters as inputs to the FX graph. This creates one graph per
  module class.

- UnspecializedBuiltinNNModuleVariable: Specifically handles built-in PyTorch modules (e.g. nn.Linear)
  with appropriate optimizations.

- FSDPManagedNNModuleVariable: Special handling for FSDP-wrapped modules with modified guarding behavior
  and parameter handling.

The module integrates with Dynamo's broader tracing functionality to handle module method calls,
parameter access, hooks, and other nn.Module behaviors while maintaining proper scoping and guarding
of module state.
é    N)ÚIterable)ÚcontextmanagerÚnullcontext)ÚAnyÚTYPE_CHECKING)ÚSourceé   )Úgraph_break_hintsÚtrace_rulesÚ	variables)Úhandle_observed_exceptionÚObservedAttributeErrorÚraise_observed_exceptionÚraise_type_errorÚunimplementedÚUnspecializeRestartAnalysisÚUnsupported)ÚGuardBuilderÚinstall_guardÚmake_dupe_guard)ÚGenerationTracker)Ú
AttrSourceÚConstDictKeySourceÚDictGetItemSourceÚFSDPNNModuleSourceÚGetItemSourceÚNNModuleSourceÚUnspecializedNNModuleSource)Ú"enumerate_items_with_dict_positionÚget_custom_getattrÚget_fake_valueÚis_lazy_moduleÚis_namedtupleÚis_safe_constantÚistensorÚistypeÚnnmodule_has_hooksÚobject_has_getattributeÚproxy_args_kwargsÚraise_args_mismatchÚset_example_valueÚunpatched_nn_module_callÚunpatched_nn_module_call_implé   )ÚMethodÚtypestrÚValueMutationNewÚVariableTracker)Úinvoke_and_store_as_constant)ÚLazyVariableTracker)ÚUserDefinedObjectVariable)ÚInstructionTranslatorBase©ÚConstantVariableÚtxr6   ÚmodÚargsÚkwargsÚreturnc                 ó‚  ^ ^• [         R                  " USS5      by  S[        S[        4UU 4S jjm[        X#5      u  pEU Vs/ s H  nT" U5      PM     nnUR	                  5        VV	s0 s H  u  p‰UT" U	5      _M     n
nn	 UR                  XU
5        ggs  snf s  sn	nf ! [         a    [        [        T S/S9   gf = f)aj  
Fairly coupled helper used by NNModuleVariable and UnspecializedNNModuleVariable.

Used to cause lazy module to be initialized (and delete its init hook) before tracing. Especially
useful now that 'allowed' modules graph-break on hooks, calling this first ensures there is no hook
by the time we trace __call__ and thus no graph-break for lazy allowed modules.
Ú_initialize_hookNÚxr=   c                 ó¦  >• [        U 5      (       a  [        U 5      " U4S jU  5       6 $ [        U [        5      (       a,  U R	                  5        VVs0 s H  u  pUT" U5      _M     snn$ [        U [
        [        [        45      (       a  [        U 5      " U4S jU  5       5      $ [        U [        R                  R                  5      (       a÷  [        U R                  T5      n[        U[        R                  5      (       aÀ  [        S UR                   5       5      (       aŸ  UR                   Vs/ s H:  n[        U[        R                   5      (       a  UR                  R"                  OUPM<     nn[%        S U 5       5      (       d  ['        SU 35      e[        R(                  " XSR*                  UR,                  S9$ U$ U $ s  snnf s  snf )Nc              3   ó4   >#   • U  H  nT" U5      v •  M     g 7f©N© ©Ú.0ÚelemÚconvert_to_fakes     €Ú¯C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/_dynamo/variables/nn_module.pyÚ	<genexpr>ÚBinitialize_lazy_module.<locals>.convert_to_fake.<locals>.<genexpr>h   s   øé € Ð EÂ1¸4¡°×!6Ð!6Â1ùó   ƒc              3   ó4   >#   • U  H  nT" U5      v •  M     g 7frC   rD   rE   s     €rI   rJ   rK   l   s   øé € ÐCÂ¸™¨t×4Ð4ÂùrL   c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frC   )Ú
isinstanceÚtorchÚSymInt©rF   Úss     rI   rJ   rK   o   s!   é € ð :Ú9C°A”J˜q¤%§,¡,×/Ð/ºùs   ‚')c              3   óB   #   • U  H  n[        U[        5      v •  M     g 7frC   )rO   ÚintrR   s     rI   rJ   rK   x   s   é € ÐAº5°aœz¨!¬S×1Ð1º5ùs   ‚z*expected all shape entries to be int, got )ÚdtypeÚdevice)r#   ÚtyperO   ÚdictÚitemsÚlistÚtupleÚsetrP   ÚfxÚProxyr!   ÚnodeÚTensorÚanyÚshaperQ   ÚhintÚallÚAssertionErrorÚemptyrV   rW   )r@   ÚkÚvÚfakerS   rc   rH   r9   s         €€rI   rH   Ú/initialize_lazy_module.<locals>.convert_to_fakef   sw  ø€ Ü˜Q×ÑÜ˜A”wÔ EÁ1Ó EÐFÐFÜ˜Aœt×$Ñ$Ø:;¿'¹'¼)ÔDº)±$°!˜™?¨1Ó-Ò-¹)ÒDÐDÜ˜A¤¤e¬SÐ1×2Ñ2Ü˜A”wÔCÁÓCÓCÐCÜ˜AœuŸx™xŸ~™~×.Ñ.Ü% a§f¡f¨bÓ1�Ü˜d¤E§L¡L×1Ñ1´cñ :Ø9=¿ºó:÷ 7ñ 7ð "&§¢óâ!+˜Aô (2°!´U·\±\×'BÑ'B˜Ÿ™ŸšÈÒIÙ!+ð ð ô ÑA¹5ÓA×AÑAÜ,ØHÈÈÐPóð ô !Ÿ;š;Ø§Z¡Z¸¿¹ñð ð �à�ùó/ Eùòs   ÁGÄ3AGz0AttributeError during lazy module initialization©r;   )ÚinspectÚgetattr_staticr   r)   rZ   Ú_infer_parametersÚAttributeErrorr   )r9   r:   r;   r<   Ú
proxy_argsÚproxy_kwargsÚargÚ	fake_argsrh   ri   Úfake_kwargsrH   s   `          @rI   Úinitialize_lazy_modulerv   W   sÑ   ù€ ô ×Ò˜cÐ#5°tÓ<ÑHð	œsð 	¤s÷ 	ð 	ô: $5°TÓ#BÑ ˆ
Ù5?Ó@²Z¨c‘_ SÖ)±Zˆ	Ð@Ø9E×9KÑ9KÔ9MÔNÒ9M±°�q™/¨!Ó,Ò,Ñ9MˆÑNð	Ø×!Ñ! #°+Õ>ðG Iùò@ AùÛNøô ó 	ä$ÜØØHÐIôð	ús   ÁBÁ)BÂB! Â!B>Â=B>Ú
module_keyÚsourcec              #   óJ  #   • UR                   n[        R                  " SSU5      nUR                  R	                  US5      nUS:”  a  U  SU 3OU n  XCR
                  4UR                  U '   US-   UR                  U'   S v •  UR                  U 	 g ! UR                  U 	 f = f7f)Nz9\._(?:modules|parameters|buffers)\[(['\"])([^'\"\]]+)\1\]z.\2r   Ú@r.   )ÚnameÚreÚsubÚ	num_callsÚgetÚ	__class__Únn_module_stack)rw   rx   r9   r:   Úfully_qualified_namer~   s         rI   Úrecord_nn_module_stackrƒ   ‘   s¨   é € ð "Ÿ;™;ÐäŸ6š6ØDØØóÐð
 —‘× Ñ Ð!5°qÓ9€IØ09¸A³�J�<˜q  Ñ,À:€Jð+Ø*>ÇÁÐ)Nˆ×Ñ˜:Ñ&Ø-6¸©]ˆ�‰Ð)Ñ*Ûà×Ñ˜zÑ*øˆB×Ñ˜zÑ*üs   ‚AB#Á0B ÂB#ÂB Â B#c           	      óh  • U (       Ga*  SUR                   ;   aÞ  [        UR                   S   5      (       aÁ  UR                   S   n[        U S5      n[        U5      [        R
                  L a5  [        US5      n[        UR                  [        R                  5      5        g [        U[        R                  5      (       a  [        XX25        g [        UR                  [        R                  5      5        g [        U R                  [        R                  " [        R                  SS95      5        g g )NÚforwardÚ__func__©Úattr)Ú__dict__Úcallabler   rX   ÚtypesÚ
MethodTyper   Ú
make_guardr   ÚCLOSURE_MATCHrO   Ú	functoolsÚpartialÚ.guard_to_detect_forward_partial_monkeypatchingÚNOT_PRESENT_IN_GENERIC_DICT)rx   r:   ÚfwdÚforward_sources       rI   Ú&guard_to_detect_forward_monkeypatchingr•   ©   sè   € ÷  Ø˜Ÿ™Ó$¬°#·,±,¸yÑ2I×)JÑ)Jà—,‘,˜yÑ)ˆCÜ'¨°	Ó:ˆNÜ�C‹yœE×,Ñ,Ò,Ü!+¨N¸JÓ!G�Ü˜n×7Ñ7¼×8RÑ8RÓSÕTÜ˜C¤×!2Ñ!2×3Ñ3Ü>Ø õô ˜n×7Ñ7¼×8RÑ8RÓSÕTô Ø×!Ñ!Ü×%Ò%Ü$×@Ñ@Àyñóõð! ó    Úmodule_sourceÚpartial_sourceÚpartial_objc           	      óR  • [        UR                  [        R                  5      5        [	        US5      n[        UR                  [        R                  5      (       a  [        XXCR                  5        O([        UR                  [        R                  5      5        [	        US5      n[        UR                  [        R                  5      5        [        UR                  5       H  u  pg[        X[        XV5      U5        M     [	        US5      nUR                   c)  [        UR                  [        R"                  5      5        g [        UR                  [        R$                  5      5        UR                   R'                  5        H  u  pš[        X[)        X‰5      U
5        M     g )NÚfuncr;   Úkeywords)r   r�   r   Ú
TYPE_MATCHr   rO   r›   r�   r�   r‘   rŽ   ÚSEQUENCE_LENGTHÚ	enumerater;   Ú%guard_to_detect_forward_partial_valuer   rœ   Ú
NONE_MATCHÚDICT_KEYS_MATCHrZ   r   )r—   r:   r˜   r™   Úfunc_sourceÚargs_sourceÚirs   Úkeywords_sourceÚkeyÚvalues              rI   r‘   r‘   Ò   s?  € ô �.×+Ñ+¬L×,CÑ,CÓDÔEä˜^¨VÓ4€KÜ�+×"Ñ"¤I×$5Ñ$5×6Ñ6Ü6Ø ×-=Ñ-=õ	
ô 	�k×,Ñ,¬\×-GÑ-GÓHÔIä˜^¨VÓ4€KÜ�+×(Ñ(¬×)EÑ)EÓFÔGÜ˜K×,Ñ,Ö-‰ˆÜ-Ø¤¨kÓ =¸sö	
ñ .ô
 ! °Ó<€OØ×ÑÑ#Ü�o×0Ñ0´×1HÑ1HÓIÔJØä�/×,Ñ,¬\×-IÑ-IÓJÔKØ!×*Ñ*×0Ñ0Ö2‰
ˆÜ-ØÔ 1°/Ó GÈö	
ò 3r–   Úvalue_sourcer¨   c                 ó*  • X1L a=  [        X 5      n[        UR                  U=(       d    [        R                  5      5        g [        U[        R                  5      (       a  [        XX#5        g [        U5      [        R                  L a)  [        UR                  [        R                  5      5        g [        U5      (       a)  [        UR                  [        R                  5      5        g [        UR                  [        R                  5      5        g rC   )r   r   r�   r   ÚID_MATCHrO   r�   r�   r‘   rX   r‹   ÚFunctionTyperŽ   r$   ÚCONSTANT_MATCH)r—   r:   r©   r¨   Ú
dupe_guards        rI   r    r    õ   s»   € ð ‚|Ü$ \ÓAˆ
Ü�l×-Ñ-¨j×.Q¼L×<QÑ<QÓRÕSÜ	�Eœ9×,Ñ,×	-Ñ	-Ü6Ø õ	
ô 
ˆe‹œ×*Ñ*Ò	*Ü�l×-Ñ-¬l×.HÑ.HÓIÕJÜ	˜%×	 Ñ	 Ü�l×-Ñ-¬l×.IÑ.IÓJÕKä�l×-Ñ-¬l×.CÑ.CÓDÕEr–   c                   ó†  ^ • \ rS rSrSSSS1\R
                  krS\S\S\R                  R                  S\SS4
U 4S	 jjrS\4S
 jrS\SS4S jrS\4S jrSSS\S-  4S jrS\4S jrSSS\4S jrSSS\4S jrSSS\S\R                  R                  S\S\SS4S jrSSS\\   4S jrSSS\SS4S jrSSS\4S jrSDS jrS\R                  R                  SSS\S\S\S-  4
S  jrSSS\S\4U 4S! jjrSSS"\\   S\ \\4   S\4S# jr!      SES$ jr"SSS\4S% jr#\$S\S\S\4S& j5       r%SSS\S"\S\S\4
S' jr&SSS\S"\S\SS4
S( jr'SSS\S"\S\S)\S\ \\4   4S* jr(SSS+\)\*\\4      SS,4S- jr+SSS\S.\SS/4S0 jr,SSS"\\   S\ \\4   S\4S1 jr-SSS"\\   S\ \\4   S\4S2 jr.SSS"\\   S\ \\4   S\4S3 jr/SSS"\\   S\ \\4   S\4S4 jr0SSS"\\   S\ \\4   S\4S5 jr1SSS"\\   S\ \\4   S\4S6 jr2SSS"\\   S\ \\4   S\4S7 jr3SSS"\\   S\ \\4   S\4S8 jr4SSS"\\   S\ \\4   S\4S9 jr5SSS"\\   S\ \\4   S\4S: jr6SSS"\\   S\ \\4   S\4S; jr7SSS"\\   S\ \\4   S\4S< jr8SSS"\\   S\ \\4   S\4S= jr9SSS"\\   S\ \\4   S\4S> jr:\;" \-5      \;" \-5      \;" \.5      \;" \/5      \;" \05      \;" \15      \;" \25      \;" \35      \;" \45      \;" \55      \;" \65      \;" \75      \;" \85      \;" \95      \;" \:5      S?.r< SFSSS\S"\\   S\ \\4   S@\S\4U 4SA jjjr=SGSB jr>SCr?U =r@$ )HÚNNModuleVariablei
  Úmodule_typerw   r¨   Únn_module_stack_sourcer<   r=   Nc                 óŽ   >• [         TU ]  " S0 UD6  Xl        X l        X0l        U R
                  U l        U R
                  U l        g )NrD   )ÚsuperÚ__init__r±   rw   r¨   rx   r²   )Úselfr±   rw   r¨   r<   r€   s        €rI   rµ   ÚNNModuleVariable.__init__  s>   ø€ ô 	‰ÒÑ"˜6Ò"Ø&ÔØ$ŒØŒ
ð #Ÿk™kˆŒØ&*§k¡kˆÕ#r–   c                 óh   • U R                   =(       d    U R                  nU(       d  [        S5      eU$ ©Nz'nn_module_stack_source must not be None©r²   rx   rf   ©r¶   Úress     rI   Úget_nn_module_stack_sourceÚ+NNModuleVariable.get_nn_module_stack_source   ó*   € Ø×)Ñ)×8¨T¯[©[ˆÞÜ Ð!JÓKÐKØˆ
r–   rx   c                 ó   • Xl         g rC   ©r²   ©r¶   rx   s     rI   Úset_nn_module_stack_sourceÚ+NNModuleVariable.set_nn_module_stack_source&  ó   € Ø&,Õ#r–   c                 ó   • U R                   $ rC   )r±   ©r¶   s    rI   Úpython_typeÚNNModuleVariable.python_type)  s   € Ø×ÑÐr–   r9   r6   c                 ó^   • [        UR                  R                  U R                  5      5      $ rC   )ÚidÚoutputÚget_submodulerw   )r¶   r9   s     rI   Úget_idÚNNModuleVariable.get_id,  s    € Ü�"—)‘)×)Ñ)¨$¯/©/Ó:Ó;Ð;r–   c                 ó   • U R                   $ rC   )r¨   rÇ   s    rI   Úget_real_python_backed_valueÚ-NNModuleVariable.get_real_python_backed_value/  s   € Ø�z‰zÐr–   c                 óŽ   • SSK Jn  UR                  R                  U R                  5      nUR
                  " [        U5      5      $ )a1  nb_bool for nn.Module.

nn.Module itself has no __bool__ or __len__, so bare modules are always
truthy.  Subclasses like ModuleList/ModuleDict define __len__, so
bool(module) calls PyObject_IsTrue which falls through nb_bool (NULL)
to sq_length/mp_length.  We evaluate on the real module to capture this.
r.   r7   )Úconstantr8   rÌ   rÍ   rw   ÚcreateÚbool)r¶   r9   r8   r:   s       rI   Únb_bool_implÚNNModuleVariable.nb_bool_impl2  s4   € õ 	/à�i‰i×%Ñ% d§o¡oÓ6ˆØ×&Ò&¤t¨C£yÓ1Ð1r–   c                 óŒ   • UR                   R                  U R                  5      n[        R                  " U[        U5      5      $ rC   )rÌ   rÍ   rw   r2   ÚbuildÚrepr©r¶   r9   r:   s      rI   Útp_repr_implÚNNModuleVariable.tp_repr_impl?  s1   € Ø�i‰i×%Ñ% d§o¡oÓ6ˆÜ×$Ò$ R¬¨c«Ó3Ð3r–   ÚsubmodÚ	key_extraÚoptionsc                 ó   • g rC   rD   )r¶   r9   rx   rß   rà   rá   s         rI   Ú_wrap_submoduleÚ NNModuleVariable._wrap_submoduleC  s   € ð 	r–   c                 ób  • UR                   R                  U R                  5      n/ n[        U[        R
                  R                  5      (       a…  UR                  5        Ho  u  pE[        R                  " X5      nUR                   R                  UU R                  U[        [        U R                  U5      5      S9  UR                  U5        Mq     U$ [        U[        R
                  R                  [        R
                  R                   [        R
                  R"                  45      (       d  [%        S['        U5       35      e[)        U5       HW  u  puUR                  UR                   R                  UU R                  U[        [        U R                  U5      5      S95        MY     U$ )N©rx   z7Expected ModuleList, ParameterList, or Sequential, got )rÌ   rÍ   rw   rO   rP   ÚnnÚ
ModuleDictrZ   r2   rÚ   Úregister_attr_or_moduler   r   rx   ÚappendÚ
ModuleListÚParameterListÚ
Sequentialrf   r0   rŸ   )r¶   r9   ÚbaseÚresultr{   rß   Úname_varÚidxs           rI   Úunpack_var_sequenceÚ$NNModuleVariable.unpack_var_sequenceM  sW  € ð �y‰y×&Ñ& t§¡Ó7ˆØ(*ˆÜ�dœEŸH™H×/Ñ/×0Ñ0Ø $§
¡
¦‘�Ü*×0Ò0°Ó:�Ø—	‘	×1Ñ1ØØ—O‘OØÜ)¬-¸¿¹ÀTÓ*JÓKð	 2ñ ð —‘˜hÖ'ñ !-ð ˆMäØ”5—8‘8×&Ñ&¬¯©×(>Ñ(>ÄÇÁ×@SÑ@SÐT÷
ñ 
ô !ØIÌ'ÐRVË-ÈÐYóð ô % Tž?‰KˆCØ�M‰MØ—	‘	×1Ñ1ØØ—O‘OØÜ)¬-¸¿¹ÀSÓ*IÓJð	 2ð öñ +ð ˆr–   r{   r8   c           	      ó  • UR                   R                  U R                  5      n[        X25      n[	        U R
                  R                  [        R                  " [        R                  US95      5        [        R                  " X5      $ )Nr‡   )rÌ   rÍ   rw   Úhasattrr   rx   r�   r�   r�   r   ÚHASATTRr2   rÚ   )r¶   r9   r{   r:   rï   s        rI   Úcall_obj_hasattrÚ!NNModuleVariable.call_obj_hasattrp  sg   € ð �i‰i×%Ñ% d§o¡oÓ6ˆÜ˜Ó#ˆÜØ�K‰K×"Ñ"¤9×#4Ò#4´\×5IÑ5IÐPTÑ#UÓVô	
ô ×$Ò$ RÓ0Ð0r–   c                 óf   • UR                   R                  U R                  5      n[        USS5      $ )NÚtrainingF)rÌ   rÍ   rw   ÚgetattrrÜ   s      rI   Úis_trainingÚNNModuleVariable.is_trainingz  s)   € Ø�i‰i×%Ñ% d§o¡oÓ6ˆÜ�s˜J¨Ó.Ð.r–   c                 óö   • UR                   R                  U R                  5      n[        R                  " U5        UR
                  R                  S:w  a  [        R                  " [        U5      5        [        e)zIRestart analysis treating this module as an UnspecializedNNModuleVariablerµ   )
rÌ   rÍ   rw   r   ÚtagÚf_codeÚco_nameÚmark_class_dynamicrX   r   rÜ   s      rI   Úconvert_to_unspecializedÚ)NNModuleVariable.convert_to_unspecialized~  sT   € à�i‰i×%Ñ% d§o¡oÓ6ˆÜ×Ò˜cÔ"ð �9‰9×Ñ 
Ó*Ü×0Ò0´°c³Ô;Ü)Ð)r–   rî   Ú
obj_sourcec                 óà  • [        U5      (       a{  [        R                  " [        U5      S5      nU(       a  [	        US5      OSn [
        R                  " UU US9R                  U[
        R                  R                  U5      /0 5      $ [!        US
S9nUc  g[#        U[$        R&                  5      (       d#  [        SSU  SU 3SS/[        R                  QS	9  S[	        US5      0n[
        R                  " Xp40 UD6R                  U[(        R*                  " X#5      /0 5      $ ! [         a    [        U5         N²[         a&    [        SSU  SU 3SS/[        R                  QS	9   Nàf = f)zDCheck for a __getattr__ and handle it specially if it is implementedÚ__getattribute__Nræ   z5Custom __getattribute__ in nn.Module attribute accessútp_getattro_impl Ú zXDynamo could not trace through the custom `__getattribute__` method on this `nn.Module`.z[Simplify your `__getattribute__` implementation, or replace it with a targeted `@property`.©Úgb_typeÚcontextÚexplanationÚhintsT)Úignore_nn_module_getattrz6torch.nn.Module with a non-function custom __getattr__zîDynamo detected a nn.Module object with a custom `__getattr__` method, but this method is not a standard Python function (e.g., it might be implemented in C/C++). Dynamo cannot currently trace into such non-standard `__getattr__` methods.z—Avoid using objects with non-standard __getattr__ methods within the compiled region. If possible, implement __getattr__ as a standard Python function.rx   Ú__getattr__)r(   rm   rn   rX   r   r   ÚUserMethodVariableÚcall_functionr8   rÕ   r   r   r   r   r
   ÚSUPPORTABLEr    rO   r‹   r¬   r2   rÚ   )	r¶   rî   r9   r{   r  Úgetattribute_fnÚ
new_sourceÚ
getattr_fnrá   s	            rI   Ú_custom_getattr_fallbackÚ)NNModuleVariable._custom_getattr_fallbackˆ  sŽ  € ô # 4×(Ñ(Ü%×4Ò4´T¸$³ZÐASÓTˆOæ>H”
˜:Ð'9Ô:Èdð ðÜ ×3Ò3Ø#ØØ%ñ÷  ‘- ¤Y×%?Ñ%?×%FÑ%FÀtÓ%LÐ$MÈrÓRð	Sô( (¨ÀtÑLˆ
ØÑØä˜*¤e×&8Ñ&8×9Ñ9ÜØPØ+¨D¨6°°4°&Ð9ð-ðAðô '×2Ñ2ð	òð$ œZ¨
°MÓBÐCˆä×+Ò+¨JÑHÀÑH×VÑVØ”×&Ò& rÓ0Ð1°2ó
ð 	
øôQ *ó .Ü)¨"Ö-Üó ÜØSØ/°¨v°Q°t°fÐ=ð!EðEðô +×6Ñ6ðô
ðús   ÁAD' Ä'E-Ä>,E-Å,E-c                 óü  >• U R                   =(       a    [        U R                   U5      nUR                  R                  U R                  5      n[
        R                  US5      nSn[        5       n[        R                  " UR                  5       H,  nUR                  UR                  R                  5       5        M.     U R                   (       d"  [        SSU  SU 3S/ [        R                   QS9  US:X  a  U R#                  U5      $ S n	X%;   a  XR   n	OcSU;   a  X%S   ;   a  X';  a	  US   U   n	OGS	U;   a  X%S	   ;   a	  US	   U   n	O0S
U;   a  X%S
   ;   a	  US
   U   n	O [        R$                  " XB5      n	SnUS:X  a  [1        U R                   U5        US:X  a&  U(       d  [2        R4                  " XR                  US9$ U(       af  [2        R4                  " X[7        U5      5      n[9        U[:        [<        45      (       a)  UR?                  [        U RA                  5       U5      5        U$ [C        U	[D        5      (       am  U R                   (       a,  [        [        U R                   S5      U5      n[        US5      n[F        RH                  " U	RJ                  US9RM                  X/0 5      $ [C        U	[N        5      (       a=  [F        RP                  " U	RR                  [F        RT                  " [-        U5      5      US9$ [C        U	[V        5      (       a$  [F        RH                  " U	RY                  U5      US9$ [C        U	[Z        R\                  5      (       a  [F        RP                  " X�US9$ [_        U	5      (       d  [a        U	5      (       a   [2        R4                  " X[7        U5      5      $ [        SS[c        U5       SU S[c        U	5       3S[c        U	5       S3SU S[c        U	5       S[c        U5       S3S/[        Rd                  QS9  [f        TU ]Ñ  X5      $ ! [&         aO    U R)                  XAX R                   S9n
U
b  U
s $ [+        [&        US[-        U5      R.                   SU S3/S9   GNÿf = f)Nr‰   Tzgetattr with no sourcer  r	  zŒDynamo does not know how to access an attribute on an `nn.Module` instance that lacks a source. This is usually an internal error in Dynamo.r
  Ú_modulesÚ_parametersÚ_buffersF)rî   r9   r{   r  Ú'ú' object has no attribute 'rl   r…   r€   ræ   Úfgetz$Unsupported nn.Module attribute typeznn.Module subclass: z, name: z, attribute type: z>Dynamo does not support tracing nn.Module attributes of type `Ú`zRefactor your code so that `z	` (type `z`) is not an attribute of `zqCurrently supported attribute types are methods, classmethods, staticmethods, properties, constants, and tensors.)5rx   r   rÌ   rÍ   rw   Úobjectr  r]   rm   Úgetmror€   Úupdater‰   Úkeysr   r
   Ú
DYNAMO_BUGÚget_dict_vtrn   rp   r  r   rX   Ú__name__r•   r2   rÚ   r   rO   r°   ÚUnspecializedNNModuleVariablerÃ   r½   r&   Úpropertyr   ÚUserFunctionVariabler  r  Úclassmethodr  r†   r5   ÚstaticmethodÚ__get__r‹   r¬   r$   r%   r0   r  r´   Útp_getattro_impl)r¶   r9   r{   rx   rî   Ú	base_dictÚobject_memberÚall_class_attribute_namesr@   Úsubobjrï   Úoutr€   s               €rI   r.  Ú!NNModuleVariable.tp_getattro_implÇ  s;  ø€ ð —‘×>¤¨D¯K©K¸Ó!>ˆà�y‰y×&Ñ& t§¡Ó7ˆô ×+Ñ+¨D°*Ó=ˆ	ØˆÜ$'£EÐ!Ü—’ §¡Ö/ˆAØ%×,Ñ,¨Q¯Z©Z¯_©_Ó->Ö?ñ 0ð �{�{ÜØ0Ø+¨D¨6°°4°&Ð9ð7ð 6Ô)×4Ñ4Ð5òð �:ÓØ×#Ñ# BÓ'Ð'àˆØÓØ‘_‰Fà˜)Ó#Ø *Ñ-Ó-ØÓ5à˜zÑ*¨4Ñ0‰FØ˜iÓ'¨D¸mÑ4LÓ,LØ˜}Ñ-¨dÑ3‰FØ˜9Ó$¨¸:Ñ1FÓ)FØ˜zÑ*¨4Ñ0‰FðÜ ×/Ò/°Ó;�Ø %�ð �9ÓÜ2°4·;±;ÀÔEà�;Ó¦}Ü"×(Ò(¨¯^©^ÀFÑKÐKæÜ!×'Ò'¨´NÀ6Ó4JÓKˆCä˜#Ô 0Ô2OÐP×QÑQð ×.Ñ.Ü˜t×>Ñ>Ó@À$ÓGôð ˆJô �fœh×'Ñ'Ø—;—;ä'¬
°4·;±;ÀÓ(LÈdÓS�Fä'¨°Ó7�FÜ ×5Ò5Ø—K‘KØ!ñ÷  ‘-  H¨bÓ1ð2ô ˜¤×,Ñ,Ü ×3Ò3Ø—O‘OÜ×7Ò7¼¸T»
ÓCØ!ñð ô
 ˜¤×-Ñ-Ü ×5Ò5Ø—N‘N 4Ó(Ø!ñð ô ˜¤× 2Ñ 2×3Ñ3Ü ×3Ò3°FÈÑPÐPÜ! &×)Ñ)¬X°f×-=Ñ-=ä&×,Ò,¨R¼ÈÓ9OÓPÐPäØBØ2´7¸4³=°/ÀÈ$ÈÐOaÔbiÐjpÓbqÐarÐsØ"`ÔahÐioÓapÐ`qÐqrÐ sà6°t°f¸IÄgÈfÃoÐEVÐVqÔryÐz~Órð  rAð  ABð  Cð>ðô +×6Ñ6ð	ò	
ô ‰wÑ'¨Ó1Ð1øôQ "ó à×6Ñ6Ø¨4¿K¹Kð 7ð �ð Ñ%Ø!’Mä(Ü"ØØœd 4›j×1Ñ1Ð2Ð2MÈdÈVÐSTÐUÐVõðús   Å#P" Ð")Q;Ñ*Q;Ñ:Q;r;   c                 ól  • UR                   R                  U R                  5      n[        U R                  U R	                  5       X5         [        U5      n[        U[        R                  R                  5      (       Ga&  UR                  R                  [        R                  R                  R                  L aë  [        U5      (       a  U R                  U5        U(       a  [        S5      eU(       a  [        USS[!        U5       S35        Uu  nUR"                  R%                  5        Hj  u  pxUR'                  UR                   R)                  UU R                  U[+        [-        U R.                  U5      5      S9U/0 5        UR1                  5       nMl     UsS S S 5        $ U(       a*  UR2                  b  UR2                  U l        [7        XX#5        UR                   R9                  5       (       a–  UR:                  R=                  S5      (       av  UR:                  S:w  af  [        USSS	9(       a  U R                  U5        S
SKJ n	  U	" UUR                   RB                  " SU R                  /[E        X#5      Q76 S9sS S S 5        $ [        U[        RF                  RH                  5      (       a#  UR                  n
[-        U R.                  S5      nO"URJ                  n
[-        U R.                  S5      n[M        U
[N        RP                  5      (       a(  U
RR                  n
[-        US5      nU /[U        U5      -   nO6[M        U
[N        RV                  5      (       d  [        S[Y        U
5       35      eUR[                  [\        R^                  " X«S9UUSS9sS S S 5        $ ! , (       d  f       g = f)Nz3Expected lazy sequential isn't a valid combination?ztorch.nn.Module.Sequentialz0 kwargsú kwargsræ   )z	torch.nn.z	torch.ao.ztorch.nn.utils.parametrizeT)Úcheck_forward_hooksÚcheck_backward_hooksr.   ©Úwrap_fx_proxyÚcall_module©r9   Úproxyr…   Ú
_call_implr†   úExpected FunctionType, got ©Úallow_nested_graph_breaks)0rÌ   rÍ   rw   rƒ   r½   r"   rO   rP   rç   rí   r€   r…   r'   r  rf   r*   Úlenr  rZ   r  ré   r   r   rx   ÚpopÚcls_to_becomer±   rv   Úis_root_tracerÚ
__module__Ú
startswithÚbuilderr:  Úcreate_proxyr)   r^   ÚGraphModuler>  r&   r‹   rŒ   r†   r[   r¬   rX   Úinline_user_function_returnr   r*  )r¶   r9   r;   r<   r:   Úis_lazyrs   Ú
child_namerß   r:  ÚfnÚ	fn_sources               rI   r  ÚNNModuleVariable.call_function>  s  € ð �i‰i×%Ñ% d§o¡oÓ6ˆä#Ø�O‰O˜T×<Ñ<Ó>Àõ
ô % SÓ)ˆGä˜3¤§¡× 3Ñ 3×4Ò4Ø—M‘M×)Ñ)¬U¯X©X×-@Ñ-@×-HÑ-HÒHä% c×*Ñ*ð ×1Ñ1°"Ô5ö Ü(ØMóð ö Ü'ØØ4Ø"Ü˜v›;˜- wÐ/ô	ð ‘�à*-¯,©,×*<Ñ*<Ö*>Ñ&�JØ×$Ñ$ØŸ	™	×9Ñ9Ø"Ø ŸO™OØ&Ü#1´*¸T¿[¹[È*Ó2UÓ#Vð	 :ð ð ˜Øô	ð Ÿ&™&›(’Cñ +?ð ÷Q
ñ 
öT à×$Ñ$Ñ0Ø'*×'8Ñ'8�DÔ$ô
 ' r°Ô=ð —	‘	×(Ñ(×*Ñ*Ø—N‘N×-Ñ-Ð.H×IÑIØ—N‘NÐ&BÓBä%Ø¨TÈ÷ð ×1Ñ1°"Ô5å2á$ØØŸ)™)×0Ò0Ø%ØŸ™ðô +¨4Ó8òñ÷Q
ñ 
ôb ˜c¤5§8¡8×#7Ñ#7×8Ñ8ð Ÿ™�BÜ *¨4¯;©;¸	Ó B‘IàŸ™�BÜ *¨4¯;©;¸Ó E�IÜ˜"œe×.Ñ.×/Ñ/ØŸ™�BÜ *¨9°jÓ A�IØ ˜6¤D¨£JÑ.‘Dä! "¤e×&8Ñ&8×9Ñ9Ü,Ð/JÌ4ÐPRË8È*Ð-UÓVÐVØ×5Ñ5Ü×2Ò2°2ÑHØØØ.2ð	 6ð ÷C
÷ 
÷ 
ús   ÁEN%Æ'CN%ÊDN%Î%
N3c                 ó–  • SSK Jn  SSKJn  UR                  R                  U R                  5      n[        R                  R                  R                  [        R                  R                  R                  [        R                  R                  R                  [        R                  R                  R                  [        R                  R                  R                  4n[        U5      R                  U;  aæ  UR!                  5       (       a)  [#        UR%                  5       [&        [(        45      (       d  [+        SSU  SU 3SU S3S	/S
9  UR                  R,                  n[#        U[.        R0                  5      (       d  [3        S[        U5       35      e[5        [5        U R6                  S5      S5      nUR9                  [:        R<                  " XxS9X/0 SS9$ [#        X#5      (       Ga*  UR                  R>                  (       aþ  / n	[A        [C        [E        U5      5      5      UR%                  5          n
[G        XRR%                  5          5       HR  u  p¼X«   n[I        [K        U R6                  U5      5      nU	RM                  UR                  RO                  UUUS95        MT     XRR%                  5          nUR                  RO                  UU  S3[I        [K        U R6                  UR%                  5       5      5      S9nU$ U RQ                  U5        Sn[#        X$5      (       a  URS                  UR                  5      nO8UR!                  5       (       a  UR%                  5       nO[+        SSU  SU 3S/ S
9  UU   nUR                  RO                  UU R                  U[I        [K        U R6                  U5      5      S9$ )Nr.   )ÚSliceVariable)ÚSymNodeVariablez6Invalid or non-const argument in nn.Module __getitem__zmp_subscript_impl: r	  zFDynamo does not support calling method `__getitem__` of ``nn.Module`` z+ with a non-constant or non-(str, int) key.z9Use constant arguments of type str or int for __getitem__r
  r?  Ú__getitem__r†   ræ   Tr@  z.__getitem__(slice)r   z.Unsupported key type for nn.Module.__getitem__zEDynamo does not support getitem on `nn.Module` with non-constant key.)*ÚlistsrR  ÚtensorrS  rÌ   rÍ   rw   rP   rç   rè   rT  rë   ÚParameterDictrì   rí   rX   Úis_python_constantrO   Úas_python_constantÚstrrU   r   r†   r‹   r¬   rf   r   rx   rK  r   r*  Úexportr[   ÚrangerB  rŸ   r   r   rê   ré   r  Úevaluate_expr)r¶   r9   r§   rR  rS  ÚmoduleÚbuiltin_supportedrN  Úsrcrï   r$  rñ   rß   rh   Ú
new_moduleÚnew_module_variableÚ	key_values                    rI   Úmp_subscript_implÚ"NNModuleVariable.mp_subscript_impl®  sI  € õ 	)Ý+à—‘×(Ñ(¨¯©Ó9ˆô �H‰H×Ñ×+Ñ+Ü�H‰H×Ñ×+Ñ+Ü�H‰H×"Ñ"×.Ñ.Ü�H‰H×"Ñ"×.Ñ.Ü�H‰H×Ñ×+Ñ+ð
Ðô �‹<×#Ñ#Ð+<Ó<à×&Ñ&×(Ñ(Ü˜s×5Ñ5Ó7¼#¼s¸×DÑDäØTØ1°$°°q¸¸Ð>ð!=Ø=C¸HÐDoð!qàVÐWòð ×#Ñ#×,Ñ,ˆBä˜b¤%×"4Ñ"4×5Ñ5Ü$Ð'BÄ4ÈÃ8À*Ð%MÓNÐNäœZ¨¯©°]ÓCÀZÓPˆCØ×1Ñ1Ü×.Ò.¨rÑ>Ø�ØØ*.ð	 2ð ð ô �c×)Ò)ð �y‰y××Ø�ÜœE¤# f£+Ó.Ó/°×0FÑ0FÓ0HÑI�Ü#,¨V×4JÑ4JÓ4LÑ-MÖ#N‘K�CØ™	�AÜ(¬°t·{±{ÀAÓ)FÓG�CØ—M‘MØŸ	™	×9Ñ9Ø"ØØ#&ð :ð öñ $Oð $×$:Ñ$:Ó$<Ñ=�
Ø&(§i¡i×&GÑ&GØØ�fÐ/Ð0Ü)Ü% d§k¡k°3×3IÑ3IÓ3KÓLóð 'Hð 'Ð#ð +Ð*ð ×-Ñ-¨bÔ1àˆ	Ü�c×+Ñ+Ø×)Ñ)¨"¯)©)Ó4‰IØ×#Ñ#×%Ñ%Ø×.Ñ.Ó0‰IäØHØ-¨d¨V°1°S°EÐ:ð5àòð ˜	Ñ"ˆØ�y‰y×0Ñ0ØØ�O‰OØÜ!¤-°·±¸YÓ"GÓHð	 1ð 
ð 	
r–   c                 óJ   • SSK Jn  U" U R                  U5      [        5       S9$ )Nr.   )ÚListIteratorVariable©Úmutation_type)Ú rg  rò   r1   )r¶   r9   rg  s      rI   Útp_iter_implÚNNModuleVariable.tp_iter_impl  s&   € Ý*á#Ø×$Ñ$ RÓ(Ô8HÓ8Jñ
ð 	
r–   c                 ó¶   • UR                  S5      nUS   S:X  a  U $ [        U5      S:”  a-  UR                  S5      n[        X5      n [        U5      S:”  a  M-  U $ )NÚ.r   rj  )ÚsplitrB  rC  r   )rx   r{   Ú
name_splitr@   s       rI   Ú_gen_sourceÚNNModuleVariable._gen_source  sY   € à—Z‘Z “_ˆ
Ø�a‰=˜BÓØˆMÜ�*‹o Ó!Ø—‘˜qÓ!ˆAÜ Ó*ˆFô �*‹o Õ!ð ˆr–   c           
      ó6  • UR                   R                  U R                  5      nUR                   R                  SU R                  S0 5      n[	        UR
                  U5        [        X45      u  pxSSKJn	  U	" UUR                   R                  SX&/UQ7US9S9$ )NÚget_attrrD   r.   r9  Úcall_method)r;   r<   r<  )	rÌ   rÍ   rw   rI  r+   r`   r)   rH  r:  )
r¶   r9   r{   r;   r<   r^  Ú	mod_proxyrq   rr   r:  s
             rI   Ú_generic_call_method_helperÚ,NNModuleVariable._generic_call_method_helper!  sŽ   € ð
 —‘×(Ñ(¨¯©Ó9ˆØ—I‘I×*Ñ*¨:°t·±ÈÈBÓOˆ	Ü˜)Ÿ.™.¨&Ô1Ü#4°TÓ#BÑ ˆ
Ý*áØØ—)‘)×(Ñ(Ø˜tÐ*B°zÑ*BÈ<ð )ð ñ
ð 	
r–   c                 ó   • [        S [        R                  " X4R                  5       5       5       5      (       dE  UR                  R                  U R                  5      n[        SSU  SU SU SU 3SU SU S3/ S9  g g )	Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7frC   )rX  ©rF   r@   s     rI   rJ   ÚANNModuleVariable._assert_all_args_kwargs_const.<locals>.<genexpr>6  s   é € ð 
Ú,R q× Ñ ×"Ð"Ò,Rùó   ‚z&non-const argument in nn.Module methodúcall_method: r	  z(Dynamo does not support calling method `z` of ``nn.Module`` z with non-constant arguments.r
  )re   Ú	itertoolsÚchainÚvaluesrÌ   rÍ   rw   r   )r¶   r9   r{   r;   r<   r^  s         rI   Ú_assert_all_args_kwargs_constÚ.NNModuleVariable._assert_all_args_kwargs_const3  s�   € ô ñ 
Ü,5¯OªO¸DÇ-Á-Ã/Ô,Ró
÷ 
ñ 
ð —Y‘Y×,Ñ,¨T¯_©_Ó=ˆFÜØ@Ø'¨ v¨Q¨t¨f°A°d°V¸1¸V¸HÐEðØ˜&Ð 3°F°8Ð;XðZàóð	
r–   Únamesc                 óò  • U R                  XX45        UR                  R                  U R                  5      n[	        Xb5      n[
        R                  " U5      R                  " U Vs/ s H  oˆR                  5       PM     sn0 UR                  5        V	V
s0 s H  u  pšXšR                  5       _M     sn
n	D6nUR                  5         UR                  nU V	s0 s H  o™X¹   _M	     sn	$ s  snf s  sn
n	f s  sn	f rC   )r‚  rÌ   rÍ   rw   rû   rm   Ú	signatureÚbindrY  rZ   Úapply_defaultsÚ	arguments)r¶   r9   r{   r;   r<   r„  r^  rN  r@   rh   ri   Ú
bound_argss               rI   Ú_get_kwargsÚNNModuleVariable._get_kwargsB  sÕ   € ð 	×*Ñ*¨2°TÔBØ—‘×(Ñ(¨¯©Ó9ˆÜ�VÓ"ˆÜ×&Ò& rÓ*×/Ò/Ù/3Ó4ªt¨!×#Ñ#Ö%©tÑ4ð
à5;·\±\´^ÔD²^©T¨Qˆq×&Ñ&Ó(Ò(±^ÒDñ
ˆ
ð 	×!Ñ!Ô#Ø×)Ñ)ˆ
Ù*/Ó0ª% Q�:‘=Ò ©%Ñ0Ð0ùò 5ùÛDùò 1s   Á'C)ÂC.ÃC4rZ   zvariables.ListIteratorVariablec                 ó  • / nU H]  u  pEUR                  UR                  R                  UU R                  U[	        U R                  U R                  U5      5      S95        M_     [        R                  " U[        5       S9$ )Nræ   rh  )
rê   rÌ   ré   rw   r   rq  rx   r   rg  r1   )r¶   r9   rZ   rï   r{   rß   s         rI   Ú_wrap_valuesÚNNModuleVariable._wrap_valuesU  sw   € ð )+ˆÛ!‰LˆDØ�M‰MØ—	‘	×1Ñ1ØØ—O‘OØÜ)¨$×*:Ñ*:¸4¿;¹;ÈÓ*MÓNð	 2ð öñ "ô ×-Ò-¨fÔDTÓDVÑWÐWr–   Úobjzvariables.TupleVariablec                 óè   • [         R                  " [        R                  " X5      UR                  R                  UU R                  U[        U R                  U R                  U5      5      S9/5      $ )Nræ   )
r   ÚTupleVariabler2   rÚ   rÌ   ré   rw   r   rq  rx   )r¶   r9   r{   r�  s       rI   Ú_named_embedÚNNModuleVariable._named_embedd  sg   € ô ×&Ò&ä×%Ò% bÓ/Ø—	‘	×1Ñ1ØØ—O‘OØÜ)¨$×*:Ñ*:¸4¿;¹;ÈÓ*MÓNð	 2ð ðó

ð 
	
r–   c                 ó&   • U R                  XU5      $ rC   )r  )r¶   r9   r;   r<   s       rI   r>  ÚNNModuleVariable._call_impls  s   € ð ×!Ñ! "¨FÓ3Ð3r–   c                 óò   • UR                   R                  U R                  5      n[        U R                  U R	                  5       X5         U R                  USX#5      sS S S 5        $ ! , (       d  f       g = f)Nr…   )rÌ   rÍ   rw   rƒ   r½   rw  ©r¶   r9   r;   r<   r^  s        rI   r…   ÚNNModuleVariable.forward}  s\   € ð —‘×(Ñ(¨¯©Ó9ˆÜ#Ø�O‰O˜T×<Ñ<Ó>Àõ
ð ×3Ñ3°B¸	À4ÓP÷
÷ 
÷ 
ús   ÁA(Á(
A6c                 ó2  • UR                   R                  U R                  5      nUS   R                  5       (       d  [	        USU S35        [        US   [        R                  5      (       d  [	        USU S35        US   R                  US   R                  5          n[        U[        5      (       a  U$ UR                  nUR                   R                  U5      nUR                   R                  XvU[        [        U R                  U5      5      S9$ )Nr.   z``nn.Module`` zB's call method _get_item_by_idx requires a constant index argumentr   zB's call method _get_item_by_idx requires a tuple as first argumentræ   )rÌ   rÍ   rw   rX  r   rO   r   r’  rZ   rY  r(  ré   r   r   rx   )r¶   r9   r;   r<   r^  Úmod_varr§   rß   s           rI   Ú_get_item_by_idxÚ!NNModuleVariable._get_item_by_idx‹  sþ   € ð —‘×(Ñ(¨¯©Ó9ˆØ�A‰w×)Ñ)×+Ñ+ÜØØ   Ð(jÐkôô ˜$˜q™'¤9×#:Ñ#:×;Ñ;ÜØØ   Ð(jÐkôð �q‘'—-‘-  Q¡× :Ñ :Ó <Ñ=ˆÜ�gÔ<×=Ñ=ØˆNØ× Ñ ˆØ—‘×(Ñ(¨Ó-ˆØ�y‰y×0Ñ0Ø˜¤^´MÀ$Ç+Á+ÈsÓ4SÓ%Tð 1ð 
ð 	
r–   c           
      óØ  • UR                   R                  U R                  5      nUR                   R                  R	                  [        U R                  S5      5        U(       d  U(       a&  [        USS[        U5       S[        U5       S35        / nUR                  5        H&  u  pgUR                  U R                  XU5      5        M(     [        R                  " U[        5       S9$ )Nr  Únamed_childrenú0 args and 0 kwargsú
 args and r6  rh  )rÌ   rÍ   rw   Úguard_on_key_orderÚaddr   rx   r*   rB  rŸ  rê   r“  r   rg  r1   ©r¶   r9   r;   r<   r^  rï   Únrß   s           rI   rŸ  ÚNNModuleVariable.named_children¥  s¹   € ð —‘×(Ñ(¨¯©Ó9ˆØ
�	‰	×$Ñ$×(Ñ(¬°D·K±KÀÓ)LÔMÞ–6ÜØØ Ø%Ü�t“9�+˜Z¬¨F« }°GÐ<ô	ð )+ˆØ×.Ñ.Ö0‰IˆAØ�M‰M˜$×+Ñ+¨B°6Ó:Ö;ñ 1ä×-Ò-¨fÔDTÓDVÑWÐWr–   c                 óž  • UR                   R                  U R                  5      nUR                   R                  R	                  [        U R                  S5      5        U R                  USX#SS5      n/ nUR                  " S0 UD6 H&  u  pxUR                  U R                  XU5      5        M(     [        R                  " U[        5       S9$ )Nr  Únamed_parametersÚprefixÚrecurserh  rD   )rÌ   rÍ   rw   r¢  r£  r   rx   r‹  r¨  rê   r“  r   rg  r1   )	r¶   r9   r;   r<   r^  Úkwrï   r¥  Úparams	            rI   r¨  Ú!NNModuleVariable.named_parameters¹  s§   € ð —‘×(Ñ(¨¯©Ó9ˆØ
�	‰	×$Ñ$×(Ñ(¬°D·K±KÀÓ)OÔPØ×Ñ˜bÐ"4°dÀHÈiÓXˆØ(*ˆØ×/Ò/Ñ5°"Ô5‰HˆAØ�M‰M˜$×+Ñ+¨B°5Ó9Ö:ñ 6ä×-Ò-¨fÔDTÓDVÑWÐWr–   c           	      ó   • UR                   R                  U R                  5      nUR                   R                  R	                  [        U R                  S5      5        U R                  USX#SSS5      n/ nUR                  " S0 UD6 H&  u  pxUR                  U R                  XU5      5        M(     [        R                  " U[        5       S9$ )Nr  Únamed_buffersr©  rª  Úremove_duplicaterh  rD   )rÌ   rÍ   rw   r¢  r£  r   rx   r‹  r¯  rê   r“  r   rg  r1   )	r¶   r9   r;   r<   r^  r«  rï   r¥  Úbuffers	            rI   r¯  ÚNNModuleVariable.named_buffersÇ  s®   € ð —‘×(Ñ(¨¯©Ó9ˆØ
�	‰	×$Ñ$×(Ñ(¬°D·K±KÀÓ)LÔMØ×ÑØ� ¨x¸ÐDVó
ˆð )+ˆØ×-Ò-Ñ3°Ô3‰IˆAØ�M‰M˜$×+Ñ+¨B°6Ó:Ö;ñ 4ä×-Ò-¨fÔDTÓDVÑWÐWr–   c           	      ó   • UR                   R                  U R                  5      nUR                   R                  R	                  [        U R                  S5      5        U R                  USX#SSS5      n/ nUR                  " S0 UD6 H&  u  pxUR                  U R                  XU5      5        M(     [        R                  " U[        5       S9$ )Nr  Únamed_modulesÚmemor©  r°  rh  rD   )rÌ   rÍ   rw   r¢  r£  r   rx   r‹  r´  rê   r“  r   rg  r1   )	r¶   r9   r;   r<   r^  r«  rï   r¥  rß   s	            rI   r´  ÚNNModuleVariable.named_modules×  s®   € ð —‘×(Ñ(¨¯©Ó9ˆØ
�	‰	×$Ñ$×(Ñ(¬°D·K±KÀÓ)LÔMØ×ÑØ� ¨v°xÐASó
ˆð )+ˆØ×-Ò-Ñ3°Ô3‰IˆAØ�M‰M˜$×+Ñ+¨B°6Ó:Ö;ñ 4ä×-Ò-¨fÔDTÓDVÑWÐWr–   c           
      ód  • UR                   R                  U R                  5      nUR                   R                  R	                  [        U R                  S5      5        U(       d  U(       a&  [        USS[        U5       S[        U5       S35        U R                  XR                  5       5      $ )Nr  Úchildrenr   r¡  r6  )rÌ   rÍ   rw   r¢  r£  r   rx   r*   rB  rŽ  rŸ  r˜  s        rI   r¸  ÚNNModuleVariable.childrenç  s‰   € ð —‘×(Ñ(¨¯©Ó9ˆØ
�	‰	×$Ñ$×(Ñ(¬°D·K±KÀÓ)LÔMÞ–6ÜØØØ%Ü�t“9�+˜Z¬¨F« }°GÐ<ô	ð × Ñ  ×%:Ñ%:Ó%<Ó=Ð=r–   c                 óü   • UR                   R                  U R                  5      nUR                   R                  R	                  [        U R                  S5      5        U R                  XR                  5       5      $ )Nr  )	rÌ   rÍ   rw   r¢  r£  r   rx   rŽ  r´  r˜  s        rI   ÚmodulesÚNNModuleVariable.modulesø  sY   € ð —‘×(Ñ(¨¯©Ó9ˆØ
�	‰	×$Ñ$×(Ñ(¬°D·K±KÀÓ)LÔMØ× Ñ  ×%9Ñ%9Ó%;Ó<Ð<r–   c                 ó(  • UR                   R                  U R                  5      nUR                   R                  R	                  [        U R                  S5      5        U R                  USX#S5      nU R                  XR                  " S0 UD65      $ )Nr  Ú
parametersrª  rD   )
rÌ   rÍ   rw   r¢  r£  r   rx   r‹  rŽ  r¨  ©r¶   r9   r;   r<   r^  r«  s         rI   r¾  ÚNNModuleVariable.parameters  st   € ð —‘×(Ñ(¨¯©Ó9ˆØ
�	‰	×$Ñ$×(Ñ(¬°D·K±KÀÓ)OÔPØ×Ñ˜b ,°¸iÓHˆØ× Ñ  ×%<Ò%<Ñ%B¸rÑ%BÓCÐCr–   c                 ó(  • UR                   R                  U R                  5      nUR                   R                  R	                  [        U R                  S5      5        U R                  USX#S5      nU R                  XR                  " S0 UD65      $ )Nr  Úbuffersrª  rD   )
rÌ   rÍ   rw   r¢  r£  r   rx   r‹  rŽ  r¯  r¿  s         rI   rÂ  ÚNNModuleVariable.buffers  st   € ð —‘×(Ñ(¨¯©Ó9ˆØ
�	‰	×$Ñ$×(Ñ(¬°D·K±KÀÓ)LÔMØ×Ñ˜b )¨T¸9ÓEˆØ× Ñ  ×%9Ò%9Ñ%?¸BÑ%?Ó@Ð@r–   c           
      óN  • UR                   R                  U R                  5      nU(       d  U(       a&  [        USS[	        U5       S[	        U5       S35        / nU H(  nUR                  [        R                  " X5      5        M*     [        R                  " U[        5       S9$ )Nr$  r   r¡  r6  rh  )rÌ   rÍ   rw   r*   rB  rê   r2   rÚ   r   rg  r1   )r¶   r9   r;   r<   r^  rï   Útmps          rI   r$  ÚNNModuleVariable.keys  s‰   € ð —‘×(Ñ(¨¯©Ó9ˆÞ–6ÜØØØ%Ü�t“9�+˜Z¬¨F« }°GÐ<ô	ð )+ˆãˆCØ�M‰Mœ/×/Ò/°Ó8Ö9ñ ä×-Ò-¨fÔDTÓDVÑWÐWr–   c           
      óò   • UR                   R                  U R                  5      nU(       d  U(       a&  [        USS[	        U5       S[	        U5       S35        U R                  XR                  5       5      $ )Nr�  r   r¡  r6  )rÌ   rÍ   rw   r*   rB  rŽ  rZ   r˜  s        rI   r�  ÚNNModuleVariable.values,  sc   € ð —‘×(Ñ(¨¯©Ó9ˆÞ–6ÜØØØ%Ü�t“9�+˜Z¬¨F« }°GÐ<ô	ð × Ñ  §\¡\£^Ó4Ð4r–   c           
      óf  • UR                   R                  U R                  5      nU(       d  U(       a&  [        USS[	        U5       S[	        U5       S35        / nUR                  5        H&  u  pgUR                  U R                  XU5      5        M(     [        R                  " U[        5       S9$ )NrZ   r   r¡  r6  rh  )rÌ   rÍ   rw   r*   rB  rZ   rê   r“  r   rg  r1   r¤  s           rI   rZ   ÚNNModuleVariable.items<  s“   € ð —‘×(Ñ(¨¯©Ó9ˆÞ–6ÜØØØ%Ü�t“9�+˜Z¬¨F« }°GÐ<ô	ð )+ˆØŸ™ž‰IˆAØ�M‰M˜$×+Ñ+¨B°6Ó:Ö;ñ (ä×-Ò-¨fÔDTÓDVÑWÐWr–   )r>  Ú_wrapped_call_implr…   rœ  rŸ  r¨  r¯  r´  r¸  r»  r¾  rÂ  r$  r�  rZ   rÔ   c                 ó:  >• SSK Jn  UR                  R                  U R                  5      nUS:X  aU  [
        R                  " [        R                  " UR                  R                  5      5      (       a  UR                  " S5      $ U(       a4  [        Xr5      nUR                  R                   SU S3n	[        XX“U5      $ US:X  a  U R                  U5      $ US:X  a–  [!        U["        R$                  R&                  ["        R$                  R(                  45      (       aS  U(       aL  US	   R+                  5       (       a4  [,        R.                  " XS	   R1                  5       UR2                  ;   5      $ US
:X  d†  [!        U["        R$                  R4                  R6                  R8                  5      (       a  US:X  dC  [!        U["        R$                  R4                  R6                  R:                  5      (       am  US:X  ag  [        Xr5      R<                  n[?        [?        U R@                  U5      S5      n
URC                  [D        RF                  " XŠS9U /[I        U5      -   U5      $ X RJ                  ;  a‹  X'R                  RL                  ;   ar  [O        UR                  RL                  U   5      (       aK  [Q        S [R        RT                  " X4RW                  5       5       5       5      (       a  U RY                  XX45      $ [Z        TU ]¹  X[I        U5      U5      $ )Nr.   r7   Ú_check_input_dimTÚ_Ú_resultÚ__iter__Ú__contains__r   Ú_get_abs_string_indexÚ_conv_forwardÚ_output_paddingr†   ræ   c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frC   )Ú	is_tensorr{  s     rI   rJ   Ú/NNModuleVariable.call_method.<locals>.<genexpr>œ  s   é € ÐRÒ+Q a—K‘K—M�MÒ+Qùr}  )/rÔ   r8   rÌ   rÍ   rw   r   Úis_torch_inline_allowedrm   Úgetfiler€   rÍ  rÕ   rû   r'  r3   rk  rO   rP   rç   rè   rW  rX  r2   rÚ   rY  r  r»  ÚconvÚ_ConvNdÚ_ConvTransposeNdr†   r   rx   rK  r   r*  r[   Ú
tp_methodsr‰   rŠ   re   r  r€  r�  rw  r´   ru  )r¶   r9   r{   r;   r<   rÔ   r8   r^  rN  Ú
const_namerO  r€   s              €rI   ru  ÚNNModuleVariable.call_methoda  sn  ø€ õ 	/à—‘×(Ñ(¨¯©Ó9ˆàÐ%Ó%¬+×*MÒ*MÜ�OŠO˜F×,Ñ,×=Ñ=Ó>÷+
ñ +
ð $×*Ò*¨4Ó0Ð0æÜ˜Ó&ˆBØ"×,Ñ,×5Ñ5Ð6°a¸°v¸WÐEˆJÜ/°¸
È&ÓQÐQà�:ÓØ×$Ñ$ RÓ(Ð(à�NÓ"Ü˜6¤E§H¡H×$7Ñ$7¼¿¹×9OÑ9OÐ#P×QÑQÞØ�Q‘×*Ñ*×,Ñ,ä"×(Ò(Ø˜‘G×.Ñ.Ó0°F·O±OÑCóð ð Ð+Ó+ä˜6¤5§8¡8×#3Ñ#3×#8Ñ#8×#@Ñ#@×AÑAØ˜OÓ+ô ˜6¤5§8¡8×#3Ñ#3×#8Ñ#8×#IÑ#I×JÑJØÐ-Ó-ô ˜Ó&×/Ñ/ˆBÜ"¤:¨d¯k©k¸4Ó#@À*ÓMˆIØ×1Ñ1Ü×.Ò.¨rÑDØ�œ˜d›Ñ#Øóð ð Ÿ™Ó'Ø×(Ñ(×1Ñ1Ó1Ü˜×)Ñ)×2Ñ2°4Ñ8×9Ñ9ÜÑR¬9¯?ª?¸4ÇÁÃÔ+QÓR×RÑRà×3Ñ3°B¸dÓKÐKä‘7Ñ& r´°d³¸VÓDÐDr–   c                 óŒ   • UR                   R                  U R                  5      n[        R                  " U[        U5      5      $ )z<Sequence length for container modules (e.g., nn.Sequential).)rÌ   rÍ   rw   r2   rÚ   rB  )r¶   r9   r^  s      rI   Úsq_length_implÚNNModuleVariable.sq_length_impl¢  s1   € à—‘×(Ñ(¨¯©Ó9ˆÜ×$Ò$ R¬¨V«Ó5Ð5r–   )rw   r±   r²   rx   r¨   )r9   r6   r=   N)r9   r6   r§   r2   r=   r2   )F)r9   r6   r=   r2   )Ar'  rF  Ú__qualname__Ú__firstlineno__r2   Ú_nonvar_fieldsrX   rZ  rP   rç   ÚModuler   rµ   r   r½   rÃ   rÈ   rU   rÎ   r!  rÑ   r×   rÝ   rã   r[   rò   r÷   rÖ   rü   r  r  r.  rY   r  rd  rk  r,  rq  rw  r‚  r‹  r   r\   rŽ  r“  r>  r…   rœ  rŸ  r¨  r¯  r´  r¸  r»  r¾  rÂ  r$  r�  rZ   r/   rÝ  ru  rá  Ú__static_attributes__Ú__classcell__©r€   s   @rI   r°   r°   
  s§  ø† àØØØ ð	ð
 
×	'Ñ	'ð€Nð2Øð2Ø-0ð2Ø9>¿¹¿¹ð2ØTWð2à	÷2ð¨Fô ð-°ð -¸Dô -ð ˜Tô  ð<Ð4ð <¸¸t¹ô <ð¨fô ð2Ð:ð 2¸ô 2ð4Ð:ð 4¸ô 4ðà'ðð ðð —‘—‘ð	ð
 ðð ðð 
ôð!Ø-ð!à	ˆoÑ	ô!ðF1Ø-ð1Ø58ð1à	ô1ð/Ð9ð /¸dô /ô*ð=
à�h‰h�o‰oð=
ð (ð=
ð ð	=
ð
 ð=
ð 
˜4Ñ	ô=
ð~u2Ø-ðu2Ø58ðu2à	÷u2ðnnà'ðnð �?Ñ#ðnð �S˜/Ð)Ñ*ð	nð
 
ônð``
à'ð`
ð ð`
ð 
ô	`
ðD
Ð:ð 
¸ô 
ð ð˜Fð ¨#ð °&ó ó ðð
Ø-ð
Ø58ð
Ø@Cð
ØMPð
à	ô
ð$Ø-ðØ58ðØ@CðØMPðà	ôð1à'ð1ð ð1ð ð	1ð
 ð1ð ð1ð 
ˆc�3ˆh‰ô1ð&XØ-ðXØ6>¸uÀSÈ#ÀX¹Ñ6OðXà	)ôXð
Ø-ð
Ø58ð
Ø?Bð
à	"ô
ð4à'ð4ð �?Ñ#ð4ð �S˜/Ð)Ñ*ð	4ð
 
ô4ðQà'ðQð �?Ñ#ðQð �S˜/Ð)Ñ*ð	Qð
 
ôQð
à'ð
ð �?Ñ#ð
ð �S˜/Ð)Ñ*ð	
ð
 
ô
ð4Xà'ðXð �?Ñ#ðXð �S˜/Ð)Ñ*ð	Xð
 
ôXð(Xà'ðXð �?Ñ#ðXð �S˜/Ð)Ñ*ð	Xð
 
ôXðXà'ðXð �?Ñ#ðXð �S˜/Ð)Ñ*ð	Xð
 
ôXð Xà'ðXð �?Ñ#ðXð �S˜/Ð)Ñ*ð	Xð
 
ôXð >à'ð>ð �?Ñ#ð>ð �S˜/Ð)Ñ*ð	>ð
 
ô>ð"=à'ð=ð �?Ñ#ð=ð �S˜/Ð)Ñ*ð	=ð
 
ô=ð	Dà'ð	Dð �?Ñ#ð	Dð �S˜/Ð)Ñ*ð		Dð
 
ô	Dð	Aà'ð	Að �?Ñ#ð	Að �S˜/Ð)Ñ*ð		Að
 
ô	AðXà'ðXð �?Ñ#ðXð �S˜/Ð)Ñ*ð	Xð
 
ôXð(5à'ð5ð �?Ñ#ð5ð �S˜/Ð)Ñ*ð	5ð
 
ô5ð Xà'ðXð �?Ñ#ðXð �S˜/Ð)Ñ*ð	Xð
 
ôXñ( ˜ZÓ(Ù$ ZÓ0Ù˜'“?Ù"Ð#3Ó4Ù  Ó0Ù"Ð#3Ó4Ù Ó.Ù Ó.Ù˜8Ó$Ù˜'“?Ù˜ZÓ(Ù˜'“?Ù�t“Ù˜“.Ù˜“ñ€Jð0 ñ?Eà'ð?Eð ð?Eð �?Ñ#ð	?Eð
 �S˜/Ð)Ñ*ð?Eð ð?Eð 
÷?Eð ?E÷B6ò 6r–   r°   c            
       óÀ  ^ • \ rS rSrSSS1\R
                  kr S\R                  R                  S\	SS4U 4S	 jjr
S
\S\4S jrS\4S jrS\SS4S jr\\R"                  S\\   4S j5       5       rSSS\\   4U 4S jjrSSS\\   S\\\4   S\4S jrSSS\S\\   S\\\4   S\4
U 4S jjrSSS\S\S\S-  4S jrSSS\S\4U 4S jjrSSS\S\4S jrSrU =r $ )r(  i¨  Ú
value_typeÚis_state_mutatedr²   r¨   r<   r=   Nc                 ó¾   >• SU;   a,  [        US   SS 5      n[        U5      UL a  [        U5      US'   [        TU ]  " SSU0UD6  SU l        U R
                  U l        g )Nrë  rD  r¨   FrD   )rû   rX   r´   rµ   rì  rx   r²   )r¶   r¨   r<   Úlazy_value_to_becomer€   s       €rI   rµ   Ú&UnspecializedNNModuleVariable.__init__¸  sh   ø€ Ø˜6Ó!Ü#*¨6°,Ñ+?ÀÐRVÓ#WÐ Ü�E‹{Ð2Ò2ô
 (,¨E£{��|Ñ$ä‰ÒÑ/˜uÐ/¨Ò/Ø %ˆÔð '+§k¡kˆÕ#r–   Úattr_sourcec                 ó   • U$ rC   rD   ©r¶   rð  s     rI   Ú_wrap_sourceÚ*UnspecializedNNModuleVariable._wrap_sourceÌ  ó   € àÐr–   c                 óh   • U R                   =(       d    U R                  nU(       d  [        S5      eU$ r¹   rº   r»   s     rI   r½   Ú8UnspecializedNNModuleVariable.get_nn_module_stack_sourceÐ  r¿   r–   rx   c                 ó   • Xl         g rC   rÁ   rÂ   s     rI   rÃ   Ú8UnspecializedNNModuleVariable.set_nn_module_stack_sourceÖ  rÅ   r–   c                  óÂ  • [         R                  R                  R                  [         R                  R                  R                  [         R                  R                  R
                  1n [         R                  R                  R                  R                  5        Vs1 s H2  n[        US5      (       d  M  X;  d  M  [        UR                  5      iM4     sn$ s  snf )NÚ__code__)rP   rç   ræ  Ú__setattr__rµ   Ú__delattr__r‰   r�  rõ   rË   rû  )Ú	supportedr@   s     rI   Ú_nn_module_method_idsÚ3UnspecializedNNModuleVariable._nn_module_method_idsÙ  s›   € ô
 �H‰H�O‰O×'Ñ'Ü�H‰H�O‰O×$Ñ$Ü�H‰H�O‰O×'Ñ'ð
ˆ	ô —X‘X—_‘_×-Ñ-×4Ñ4Ô6ó
â6�Ü�q˜*×%ó à*+Ñ*<ó ŒBˆq�z‰zŽNÙ6ñ
ð 	
ùò 
s   Â CÂ9CÃ Cr9   r6   c                 óä  >•  [         R                  " U R                  S5      nU[
        R                  R                  R                  [
        R                  R                  R                  [
        R                  R                  R                  4;   a7  UR                  [        R                  " X5      U /0 5      R                  U5      $ [        TU ]9  U5      $ ! [         a  n[        UeS nAff = f)NrÐ  )rm   rn   rë  rp   ÚNotImplementedErrorrP   rç   rë   rÐ  rì   rí   rK  r2   rÚ   rò   r´   )r¶   r9   rN  Úer€   s       €rI   rò   Ú1UnspecializedNNModuleVariable.unpack_var_sequenceè  sÏ   ø€ ð	-Ü×'Ò'¨¯©¸ÓDˆBð Ü�H‰H×Ñ×(Ñ(Ü�H‰H×"Ñ"×+Ñ+Ü�H‰H×Ñ×(Ñ(ð
ó 
ð ×1Ñ1Ü×%Ò% bÓ-àðð ó÷ "Ñ! "Ó%ð&ô ‰wÑ*¨2Ó.Ð.øô' ó 	-Ü%¨1Ð,ûð	-ús   ƒ!C Ã
C/Ã#C*Ã*C/r;   c                 óˆ  ^ ^^^• T R                   n[        U5      (       a+  UR                  b  UR                  T l        [	        TXBU5        [        U[        R                  R                  5      (       d  Sn[        T R                  U5      nOSn[        T R                  U5      n[        UR                  [        R                  5      (       Ga(  [        UR                  [        R                  5      (       aÿ  UR                  R                  [         L aâ  UR                  R                  ["        L aÅ  T R%                  TS5      (       d®  [&        R(                  " US5      n[        U[        R*                  5      (       ax  TR,                  mS[.        S[0        S[2        4U4S jjm[5        UU 4S jS	 5       5      =(       d    [5        UU4S
 jS 5       5      nU(       d  SnT R                  R6                  nT R8                  (       a  T R;                  TU5      n	OS n	[=        T R8                  U5        T R8                  (       a.  [?        [1        [A        U5      5      T RC                  5       TU5      O	[E        5       n
U
   [        U[        R*                  [        RF                  RH                  45      (       d?  [.        RJ                  " TXiSS9nURM                  TT /[O        U5      -   U5      sS S S 5        $ [P        RR                  " XiS9RM                  TT /[O        U5      -   U5      sS S S 5        $ ! , (       d  f       g = f)NÚ__call__r>  r…   r�  rˆ   r=   c                 óŽ   >• U R                  TU5      n[        US5      (       a  UR                  5       OUnUR                  5       $ )NÚrealize)r.  rõ   r  rB  )r�  rˆ   Úvtr9   s      €rI   Ú_hooks_dict_lenÚDUnspecializedNNModuleVariable.call_function.<locals>._hooks_dict_len%  s9   ø€ Ø×-Ñ-¨b°$Ó7�BÜ)0°°Y×)?Ñ)?˜Ÿ™œÀR�BØŸ6™6›8�Or–   c              3   ó6   >#   • U  H  nT" TU5      v •  M     g 7frC   rD   )rF   rˆ   r
  r¶   s     €€rI   rJ   Ú>UnspecializedNNModuleVariable.call_function.<locals>.<genexpr>*  s&   øé € ð 
 ò!˜ñ $ D¨$×/Ð/ò!ùó   ƒ)Ú_backward_hooksÚ_backward_pre_hooksÚ_forward_hooksÚ_forward_hooks_with_kwargsÚ_forward_pre_hooksÚ_forward_pre_hooks_with_kwargsc              3   ó6   >#   • U  H  nT" TU5      v •  M     g 7frC   rD   )rF   rˆ   r
  Ú
globals_vts     €€rI   rJ   r  4  s&   øé € ð ò!˜ñ $ J°×5Ð5ò!ùr  )Ú_global_backward_pre_hooksÚ_global_backward_hooksÚ_global_forward_hooksÚ_global_forward_pre_hooksT©rx   r  ræ   )*r¨   r"   rD  rë  rv   rO   rP   r^   rJ  rû   r&   r  r‹   rŒ   r>  r†   r,   r-   Úhas_key_in_generic_dictrm   rn   r¬   Únn_modules_globals_vtr2   rZ  rU   rb   r…   rx   Úget_source_by_walking_mror•   rƒ   rË   r½   r   ÚjitÚScriptFunctionrÚ   r  r[   r   r*  )r¶   r9   r;   r<   r:   r{   rN  Úforward_methodÚ	has_hooksrx   ÚctxÚfn_vtr
  r  s   ``          @@rI   r  Ú+UnspecializedNNModuleVariable.call_function  s‡  û€ ð �j‰jˆä˜#×ÑØ× Ñ Ñ,Ø"%×"3Ñ"3�”Ü" 2 s°&Ô9ä˜#œuŸx™x×3Ñ3×4Ñ4ØˆDÜ˜Ÿ™¨$Ó/‰BàˆDÜ˜Ÿ™¨$Ó/ˆBô
 �3—<‘<¤×!1Ñ!1×2Ò2Ü�s—~‘~¤u×'7Ñ'7×8Ñ8Ø—‘×%Ñ%Ô)AÒAØ—‘×'Ñ'Ô+HÒHð ×0Ñ0°°Y×?Ñ?ä$×3Ò3°C¸ÓCˆNÜ˜.¬%×*<Ñ*<×=Ñ=Ø×5Ñ5�
ð$¬ð $Äð $Ì÷ $ô
  õ 
 ñ!ó
 ó 
÷ ô õ ñ!óó ð ö( !Ø$�DØŸ™×0Ñ0�Bà�;�;Ø×3Ñ3°B¸Ó=‰FàˆFä.¨t¯{©{¸CÔ@ð �{�{ô #Ü”B�s“G“Ø×/Ñ/Ó1ØØô	ô “ð 	ò Ü˜b¤5×#5Ñ#5´u·y±y×7OÑ7OÐ"P×QÑQÜ'×-Ò-¨b°"ÈTÑR�Ø×*Ñ*¨2°¨v¼¸T»
Ñ/BÀFÓK÷ ‰Sô !×5Ò5°bÑH×VÑVØ˜˜¤ d£Ñ+¨Vó÷ �S�Sús   É?A/L3Ë81L3Ì3
Mr{   c                 ó  >• US;   ap  [        U R                  U5      nU R                  (       a  U R                  X5      nOS n[        R
                  " XUSS9nUR                  X/[        U5      -   U5      $ U R                  X5      (       GdÑ   [        R                  " [        U R                  5      U5      n[        U[        5      (       aM  [!        U R                  X5      S5      n[        R
                  " XR"                  USS9nUR                  XU5      $ [%        US5      (       a`  ['        UR(                  5      U R+                  5       ;   a9  [-        SSU  SU SU SU 3S	U S
U R                   3S/[.        R0                  QS9  US:X  Ga  SU R                  R2                  ;   aò  US   R5                  5       n	US   n
U
R7                  5       (       a+  U
R9                  5       [:        R<                  R>                  L d  X�R                  R2                  S   ;   a  SU l         OvX�R                  R2                  S   ;   a  SU l         OR[        U
[B        RD                  [B        RF                  45      (       d  X�R                  R2                  S   ;   a  SU l         U[:        R<                  RH                  RJ                  L a"  [        US   [B        RL                  5      (       d'  U[:        R<                  RH                  RN                  L aP  [        R
                  " U[:        R<                  RH                  RN                  5      nUR                  XUS   /U5      $ [P        TU ]¥  X[        U5      U5      $ ! [         a    S n GNÏf = f)N)r>  rË  Tr  r†   rû  z,UnspecializedNNModuleVariable missing methodr~  r	  z'Dynamo does not support tracing method z of nn.Module z@Dynamo does not really define unspecialized nn.Module very well.r
  rü  r  r   r.   r  r  )*rû   rë  rx   r  r2   rÚ   r  r[   r  rm   rn   rX   r¨   rp   rO   r,  r   r†   rõ   rË   rû  rÿ  r   r
   Ú	DIFFICULTr‰   rY  rÖ  rÈ   rP   rç   Ú	Parameterrì  r   r°   r(  ræ  rü  ÚDeletedVariablerý  r´   ru  )r¶   r9   r{   r;   r<   rN  rx   r$  ÚmethodÚ	attr_namer¨   r€   s              €rI   ru  Ú)UnspecializedNNModuleVariable.call_method`  s
  ø€ ð Ð7Ó7Ü˜Ÿ™¨$Ó/ˆBØ�{�{Ø×7Ñ7¸ÓA‘à�ä#×)Ò)¨"¸ÈÑNˆEØ×&Ñ& r¨6´D¸³JÑ+>ÀÓGÐGà×+Ñ+¨B×5Ò5ðÜ ×/Ò/´°T·Z±ZÓ0@À$ÓG�ô ˜&¤,×/Ñ/Ü#Ø×2Ñ2°2Ó<¸jó�ô (×-Ò-ØŸ™°Àñ�ð ×*Ñ*¨2°VÓ<Ð<ô ˜ 
×+Ñ+Ü�v—‘Ó'¨4×+EÑ+EÓ+GÓGäØJØ+¨D¨6°°4°&¸¸$¸¸qÀÀÐIØ"IÈ$ÈÈ~Ð^b×^hÑ^hÐ]iÐ jàZðä*×4Ñ4ðò	ð �}Ô$¨¸$¿*¹*×:MÑ:MÓ)Mð ! ™G×6Ñ6Ó8�	Ø˜Q™�ð
 —O‘O×%Ñ%¨%×*;Ñ*;Ó*=ÄÇÁ×ASÑASÒ*SØ§*¡*×"5Ñ"5°mÑ"DÓDà,0�DÕ)Ø§*¡*×"5Ñ"5°jÑ"AÓAà,0�DÕ)äØä%×6Ñ6Ü%×CÑCð÷ñ ð !§J¡J×$7Ñ$7¸
Ñ$CÓCð -1�DÔ)ð œ%Ÿ(™(Ÿ/™/×5Ñ5Ò5Ü˜t A™w¬	×(AÑ(A×BÑBØœ5Ÿ8™8Ÿ?™?×6Ñ6Ò6ô (×-Ò-¨b´%·(±(·/±/×2MÑ2MÓN�Ø×*Ñ*¨2°d¸1±g¨ÀÓGÐGä‰wÑ" 2¬T°$«Z¸Ó@Ð@øôQ "ó Ø“ðús   Â*M: Í:N
Î	N
ÚfieldÚname_vtc                 óÜ   • U R                  X5      n[        U[        R                  5      (       a  UR                  n[        U[        R
                  5      (       a  UR                  U5      $ g rC   )r.  rO   r   ÚUserDefinedDictVariableÚ_base_vtÚConstDictVariableÚmaybe_getitem_const)r¶   r9   r-  r.  Údict_vts        rI   Úgetattr_helperÚ,UnspecializedNNModuleVariable.getattr_helper¾  sY   € ð ×'Ñ'¨Ó2ˆÜ�gœy×@Ñ@×AÑAØ×&Ñ&ˆGÜ�gœy×:Ñ:×;Ñ;Ø×.Ñ.¨wÓ7Ð7Ør–   c           
      ór  >^^^• TR                   R                  R                  U 5      (       aT  US;   aN  U R                  (       a=  TR                   R                  R	                  U 5      (       a  [        SSU  SU S3S/ S9  US;   Ga  TR                   R                  R                  X5      (       dØ  [        U R                  U5      n[        U[        5      (       a­  [        U5      S	:X  až  U R                  (       a  [        U R                  U5      OS nU(       a(  [        UR                  [         R"                  5      5        [        U[$        R&                  5      (       a  [(        R*                  O[(        R,                  nU" 0 US
9$ U R                  (       Ga  US;   Ga  TR                   R                  R                  X5      (       dÚ  [        U R                  U5      n[        U R                  U5      m[        TR                  [         R.                  5      5        TR                   R0                  R3                  T5        S[4        S[6        S[6        S[8        [:        [:        4   4UU4S jjm[        U4S j[=        U5       5       5      n[(        R>                  " UTS
9$ [@        T	U ]…  TU5      $ )N)r¨  r¾  r¯  rÂ  r´  r»  z,getattr() on nn.Module with pending mutationzgetattr(z, Ú)zPIntentionally graph breaking on getattr() on a nn.Module with a pending mutationr
  )r  r  r  r  r  r  r   ræ   )r  r  r  r  r¥   rh   ri   r=   c                 ó’   >• [         R                  " TU5      n[        TU 5      n[        TU5      n[        R
                  " X%TS9nX64$ )N)r9   )r2   rÚ   r   r   r4   rÕ   )	r¥   rh   ri   r§   Ú
source_keyÚsource_valuer¨   Úhooks_dict_sourcer9   s	          €€rI   Úbuild_key_valueÚGUnspecializedNNModuleVariable.tp_getattro_impl.<locals>.build_key_value  sM   ø€ ô &×+Ò+¨B°Ó2�ô 0Ð0AÀ1ÓE�
Ü0Ð1BÀJÓO�Ü+×2Ò2°1ÀrÑJ�Ø�zÐ!r–   c              3   ó<   >#   • U  H  u  pnT" XU5      v •  M     g 7frC   rD   )rF   r¥   rh   ri   r=  s       €rI   rJ   ÚAUnspecializedNNModuleVariable.tp_getattro_impl.<locals>.<genexpr>!  s&   øé € ð âM‘G�A˜!ñ    a×(Ð(ÚMùs   ƒ)"rÌ   Úside_effectsÚis_attribute_mutationrì  Úhas_pending_mutationr   Úhas_pending_mutation_of_attrrû   r¨   rO   rY   rB  rx   r   r   r�   r   ÚEMPTY_NN_MODULE_HOOKS_DICTÚcollectionsÚOrderedDictr   ÚOrderedDictVariabler2  rž   r¢  r£  rU   r   r\   r2   r   ÚNNModuleHooksDictVariabler´   r.  )
r¶   r9   r{   Ú
hooks_dictÚhooks_sourceÚhooks_vt_clsrï   r=  r<  r€   s
    `     @@€rI   r.  Ú.UnspecializedNNModuleVariable.tp_getattro_implÈ  sK  û€ ð �I‰I×"Ñ"×8Ñ8¸×>Ñ>Øðóð ×%×%Ø—	‘	×&Ñ&×;Ñ;¸D×AÑAäØFØ" 4 &¨¨4¨&°Ð2ð*àòð ð 
ô 
ð —9‘9×)Ñ)×FÑFÀt×RÑRÜ$ T§Z¡Z°Ó6�
Ü˜j¬$×/Ñ/´C¸
³OÀqÓ4Hà9=¿¿œ
 4§;¡;°Ô5È$ð !ö $Ü%Ø(×3Ñ3Ü ,× GÑ Góôô & j´+×2IÑ2I×JÑJô "×5Ò5ä&×8Ñ8ð !ñ
 (¨°<Ñ@Ð@ð �K�KˆKØðôð —I‘I×*Ñ*×GÑGÈ×SÑSä  §¡¨TÓ2ˆJÜ *¨4¯;©;¸Ó =ÐÜÐ+×6Ñ6´|×7SÑ7SÓTÔUØ�I‰I×(Ñ(×,Ñ,Ð->Ô?ð"Üð"Üð"Ü#&ð"ä”¬Ð7Ñ8÷"ð "ô ô äAÀ*ÔMóó ˆFô
 ×6Ò6°vÐFWÑXÐXÜ‰wÑ'¨¨DÓ1Ð1r–   c           	      óD  • SSK Jn  UR                  X5      nU R                  USU5      nUc  U R                  USU5      nUc  U R                  USU5      nUc4  [	        [
        US[        U R                  5      R                   SU S3/S9  Uc  [        S	U S35      eU$ )
zå
Dynamo tracing of nn.Module __getattr__ can be expensive if the model
has deep submodule hierarchy. Since the __getattr__ is stable, we can
directly look into the underlying datastructures. This saves a lot of
compilation time.
r.   )ÚSourcelessBuilderr  r  r  r  r  rl   z;manually_trace_nn_module_getattr failed to find attribute ')
rH  rO  rÕ   r5  r   rp   rX   r¨   r'  rf   )r¶   r9   r{   rO  r.  r3  s         rI   Ú manually_trace_nn_module_getattrÚ>UnspecializedNNModuleVariable.manually_trace_nn_module_getattr)  sÁ   € õ 	/à#×*Ñ*¨2Ó4ˆØ×!Ñ! " m°WÓ=ˆØ‰;Ø×%Ñ% b¨*°gÓ>ˆCØ‰;Ø×%Ñ% b¨*°gÓ>ˆCØ‰;Ü$ÜØàœ˜TŸZ™ZÓ(×1Ñ1Ð2Ð2MÈdÈVÐSTÐUðòð ‰;Ü ØMÈdÈVÐSTÐUóð ð ˆ
r–   )rì  r²   rë  )!r'  rF  rã  rä  r5   rå  rP   rç   ræ  r   rµ   r   ró  r½   rÃ   r,  r�   Úcacher]   rU   rÿ  r[   r2   rò   rY   rZ  r  ru  r5  r.  rP  rç  rè  ré  s   @rI   r(  r(  ¨  sÀ  ø† àØØ ðð 
#×	1Ñ	1ð	€Nðð2˜eŸh™hŸo™oð 2¸ð 2À÷ 2ð(¨ð °6ô ð¨Fô ð-°ð -¸Dô -ð Ø‡_�_ð
 3 s¡8ó 
ó ó ð
ð/Ø-ð/à	ˆoÑ	÷/ð4\à'ð\ð �?Ñ#ð\ð �S˜/Ð)Ñ*ð	\ð
 
ô\ð|\Aà'ð\Að ð\Að �?Ñ#ð	\Að
 �S˜/Ð)Ñ*ð\Að 
÷\Að|Ø-ðØ69ðØDSðà	˜4Ñ	ôð_2Ø-ð_2Ø58ð_2à	÷_2ðBØ-ðØ58ðà	÷ò r–   r(  c                   ó*   • \ rS rSrSrS\S\4S jrSrg)Ú$UnspecializedBuiltinNNModuleVariableiI  z_
Differentiates between builtin nn modules (e.g. torch.nn.Linear) and user defined nn modules.
rð  r=   c                 ó   • U$ rC   rD   rò  s     rI   ró  Ú1UnspecializedBuiltinNNModuleVariable._wrap_sourceN  rõ  r–   rD   N)r'  rF  rã  rä  Ú__doc__r   ró  rç  rD   r–   rI   rT  rT  I  s   † ñð¨ð °6÷ r–   rT  c                   óv   ^ • \ rS rSrSrS\R                  R                  S\SS4U 4S jjr	S\S\4S	 jr
S
rU =r$ )ÚFSDPManagedNNModuleVariableiS  aÜ  
Tracing behavior: trace into submodules and treat them as Unspecialized, do not
register parameters to the top-level, treat them as function inputs.

Guards behavior: if 'skip_fsdp_guards', many guards that would be installed
by a vanilla UnspecializedNNModuleVariable are simply dropped, on the basis
that a user wrapping their model in FSDP(model) is already opting into a
requirement to not modify internal model state, which would already break FSDP without
compilation.
r¨   r<   r=   Nc                 ót   >• UR                  S5      nUc  [        S5      e[        TU ]  " SSU0UD6  X0l        g )Nrx   zMFSDPManagedNNModule depends on having an accurate source to control guarding.r¨   rD   )r   rf   r´   rµ   rx   )r¶   r¨   r<   rx   r€   s       €rI   rµ   Ú$FSDPManagedNNModuleVariable.__init___  sB   ø€ Ø—‘˜HÓ%ˆØ‰>Ü Ø_óð ô 	‰ÒÑ/˜uÐ/¨Ò/Ø�r–   rð  c                 óº   • [        U[        [        45      (       d?  [        R                  R
                  R                  (       a  [        U5      $ [        U5      $ U$ rC   )rO   r   r   rP   Ú_dynamoÚconfigÚskip_fsdp_guardsrò  s     rI   ró  Ú(FSDPManagedNNModuleVariable._wrap_sourcei  sL   € ÜØÔ,Ô.IÐJ÷
ñ 
ô �}‰}×#Ñ#×4×4Ü)¨+Ó6Ð6ä2°;Ó?Ð?ØÐr–   ræ   )r'  rF  rã  rä  rW  rP   rç   ræ  r   rµ   ró  rç  rè  ré  s   @rI   rY  rY  S  sB   ø† ñ	ð˜eŸh™hŸo™oð ¸ð À÷ ð¨ð °÷ ò r–   rY  )[rW  rF  r�   rm   r  r|   r‹   Úcollections.abcr   Ú
contextlibr   r   Útypingr   r   Útorch.nnrP   Útorch._guardsr   rj  r
   r   r   Úexcr   r   r   r   r   r   r   Úguardsr   r   r   Úmutation_guardr   rx   r   r   r   r   r   r   r   Úutilsr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   rî   r/   r0   r1   r2   Ú	functionsr3   Úlazyr4   Úuser_definedr5   Útorch._dynamo.symbolic_convertr6   rÔ   r8   rç   ræ  r[   rY   rZ  rv   rƒ   r•   r�   r‘   r    r°   r(  rT  rY  rD   r–   rI   Ú<module>rn     s  ðñó. Û Û Û Û 	Û Ý $ß 2ß %ã Ý  ç 8Ñ 8÷÷ ñ ÷ BÑ AÝ .÷÷ ñ ÷÷ ÷ ÷ ñ ÷" EÓ DÝ 3Ý %Ý 3ö ÝHå*ð7Ø#ð7à	�‰�‰ð7ð ˆÑ
ð7ð ��oÐ%Ñ&ð	7ð
 
ô7ðt ð+Øð+àð+ð 	$ð+ð 
�‰�‰ð	+ð
 	ó+ó ð+ð.&Ø�T‰Mð&Ø %§¡§¡ð&à	ô&ðR 
Øð 
à	�‰�‰ð 
ð ð 
ð ×"Ñ" 3Ñ'ð	 
ð
 
ô 
ðFFØðFà	�‰�‰ðFð ðFð ð	Fð
 
ôFô*[6�ô [6ô|^Ð$=ô ^ôBÐ+Hô ôÐ"?õ r–   