Ë
    òÍ:jÊ9 ã                  ó  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddlmZ ddl
mZ ddlmZmZmZmZmZmZ ddlm Z  ddl!Z!ddl"Z!ddl#Z!dd	l$m%Z% dd
l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJ ddlKmLZLmMZMmNZNmOZOmPZP ddlQmRZS ddlTmUZU ddlVmWZWmXZX ddlYmZZZ ddl[m\Z\m]Z]m^Z^ ddl_m`Z` ddlambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{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ˆm‰Z‰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œm�Z�mžZž dZŸde d<   	 ddl¡Z¢erddl¤m¥Z¥ ddl¦m§Z§  e�jP                  e©«      Zªe!�jV                  �jY                  e©d«      Z­e!�jV                  �jY                  e©d «      Z®e!�jV                  �jY                  e©d!«      Z¯e!�jV                  �jY                  e©d"«      Z° G d#„ d$«      Z±d%„ Z²e�jf                  d&„ «       Z´daµd'e d(<   d)„ Z¶d]d*„Z·e!�jp                  �jr                  �jt                  Zºd^d+„Z»	 	 	 	 	 	 d_d,„Z¼d`d-„Z½d.„ Z¾d/„ Z¿d0„ ZÀd1„ ZÁdad2„ZÂ e�j†                  d3¬4«       G d5„ d6«      «       ZÄd7„ ZÅd8„ ZÆe�j†                   G d9„ d:«      «       ZÇ G d;„ d<e�j�                  «      ZÉe�jf                  dbd=„«       ZÊ G d>„ d?eB«      ZË G d@„ dA«      ZÌdB„ ZÍ G dC„ dDe±«      ZÎe�j†                   G dE„ dF«      «       ZÏe�j†                   G dG„ dH«      «       ZÐ G dI„ dJe�j¢                  «      ZÒdcdK„ZÓ G dL„ dM«      ZÔdddN„ZÕdO„ ZÖdP„ Z×dQ„ ZØdR„ ZÙdedS„ZÚ	 	 	 	 	 	 	 	 dfdT„ZÛ	 	 	 	 	 	 	 	 	 	 dgdU„ZÜ	 	 	 	 dhdV„ZÝdW„ ZÞ	 	 	 	 	 	 	 	 	 	 didX„Zß e`eß«       dY„ ZàdZ„ Zádd[œd\„Zây# e£$ r dZ¢Y �ŒXw xY w)jaî  
Core guard system for Dynamo that detects when compiled code needs to be recompiled due to
changes in program state. Guards are conditions that must remain true for previously-compiled
code to be valid for reuse.

This module provides the infrastructure for creating, managing and checking guards, including:
- Guard creation and composition
- Guard state management and invalidation
- Guard checking and failure handling
- Utilities for guard optimization and debugging
- Integration with Dynamo's compilation caching

The guard system is critical for Dynamo's ability to efficiently reuse compiled code while
maintaining correctness by detecting when recompilation is necessary due to changes in
program state, tensor properties, or control flow.
é    )ÚannotationsN)Úcontextmanager)Údeepcopy)Úcurrentframe)ÚAnyÚCallableÚNoReturnÚOptionalÚTYPE_CHECKINGÚUnion)ÚReferenceType)Úcode_framelocals_names)
Úcheck_obj_idÚcheck_type_idÚdict_versionÚDictGuardManagerÚ install_no_tensor_aliasing_guardÚinstall_object_aliasing_guardÚ!install_storage_overlapping_guardÚinstall_symbolic_shape_guardÚprofile_guard_managerÚRootGuardManager)Úget_global_source_nameÚget_local_source_nameÚIndexedSourceÚ$is_from_flatten_script_object_sourceÚis_from_local_sourceÚis_from_optimizer_sourceÚTensorPropertyÚTensorPropertySource)ÚCompileEventLoggerÚget_metrics_context)	ÚCompileContextÚ	CompileIdÚDuplicateInputsÚGuardÚGuardBuilderBaseÚGuardEnvExprÚGuardSourceÚSourceÚStorageOverlap)Ú
structured)Újustknobs_check)Ú_CppShapeGuardsHelperÚ_ShapeGuardsHelperÚEqualityConstraintÚis_symbolicÚSYMPY_INTERP)Ú_pytree)Ú
OrderedSet)Úformat_frameÚreport_compile_source_on_error)ÚTensorWeakRefé   )ÚconfigÚconvert_frameÚexc)Úset_guard_error_hook)#ÚAttrProxySourceÚ
AttrSourceÚCallFunctionNoArgsSourceÚCallMethodItemSourceÚChainedSourceÚConstantSourceÚConstDictKeySourceÚDataclassFieldsSourceÚDefaultsSourceÚDictGetItemSourceÚDictSubclassGetItemSourceÚFlattenScriptObjectSourceÚFloatTensorSourceÚFSDPNNModuleSourceÚGenericAttrSourceÚGetItemSourceÚGlobalSourceÚGlobalStateSourceÚGlobalWeakRefSourceÚ
GradSourceÚListGetItemSourceÚLocalSourceÚNNModuleSourceÚNumpyTensorSourceÚOptimizerSourceÚScriptObjectQualifiedNameSourceÚShapeEnvSourceÚSubclassAttrListSourceÚTorchFunctionModeStackSourceÚTupleIteratorGetItemSourceÚ
TypeSourceÚ"UnspecializedBuiltinNNModuleSourceÚUnspecializedNNModuleSourceÚUnspecializedParamBufferSourceÚWeakRefCallSource)Ú
CacheEntryÚDynamoFrameTypeÚ
ExtraStateÚGuardedCodeÚ	GuardFailÚGuardFilterEntryÚGuardFn)Úbuiltin_dict_keysÚcommon_constant_typesÚdataclass_fieldsÚ	dict_keysÚget_custom_getattrÚget_torch_function_mode_stackÚ get_torch_function_mode_stack_atÚguard_failuresÚistypeÚ	key_is_idÚ	key_to_idÚnormalize_range_iterÚorig_code_mapÚtensor_always_has_static_shapeÚtuple_iterator_getitemÚtuple_iterator_lenÚunpatched_nn_module_getattrÚverify_guard_fn_signaturez#Optional[Callable[[Any, Any], Any]]Úguard_manager_testing_hook_fn)ÚSymbol)ÚOutputGraphGuardsStateÚguardsÚ
recompilesÚrecompiles_verboseÚverbose_guardsc                  ór   — e Zd ZdZdd„Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zdd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGuardManagerWrappera  
    A helper class that contains the root guard manager. An instance of this
    class is stored in the Dynamo cache entry, so that the cache entry can
    access the RootGuardManager stored in the "root" attribute and directly call
    the check_nopybind from C++.
    Nc                ó  — |€t        «       | _        n|| _        d | _        d | _        d | _        g | _        d | _        d | _        d | _        d | _	        d | _
        i | _        g | _        t        «       | _        t        «       | _        y ©N)r   ÚrootÚdiff_guard_rootÚclosure_varsÚargsÚ
code_partsÚverbose_code_partsÚglobal_scopeÚguard_fail_fnÚcache_entryÚextra_stateÚid_matched_objsÚno_tensor_aliasing_sourcesÚsetÚprinted_relational_guardsr4   Údiff_guard_sources)Úselfr„   s     úi/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torch/_dynamo/guards.pyÚ__init__zGuardManagerWrapper.__init__Æ   s‚   € Øˆ<Ü(Ó*ˆD�IàˆDŒIà#ˆÔØ ˆÔØˆŒ	ØˆŒØ"&ˆÔØ ˆÔØ!ˆÔØˆÔØˆÔØ!ˆÔØ*,ˆÔ'ä),«ˆÔ&ä3=³<ˆÕó    c              #  óz   K  — t        «       | _        	 d –— t        «       | _        y # t        «       | _        w xY w­wrƒ   )r�   r‘   ©r“   s    r”   Ú#_preserve_printed_relational_guardsz7GuardManagerWrapper._preserve_printed_relational_guardsÜ   s,   è ø€ ä),«ˆÔ&ð	3Ûä-0«UˆDÕ*ø¬S«UˆDÕ*üs   ‚;“' —;§8¸;c                ój   ‡ ‡‡‡— ˆ ˆfd„Šˆ ˆfd„Šˆˆfd„Š ‰‰ j                   «       ‰ j                  S )Nc                óL  •— | j                  «       ‰j                  v xs | j                  «       dkD  }t        | j	                  «       j                  «       «      D ]  \  }\  }}| ‰|«       ‰|«      z  z  }Œ |r)‰j                  j                  | j                  «       «       |S ©Nr   )Ú
get_sourcer’   Ú
fail_countÚsortedÚget_key_value_managersÚitemsÚadd)ÚnodeÚis_diff_guard_nodeÚidxÚkey_mgrÚval_mgrr“   Úvisits        €€r”   Úvisit_dict_managerzJGuardManagerWrapper.collect_diff_guard_sources.<locals>.visit_dict_managerî   s¦   ø€ à—‘Ó! T×%<Ñ%<Ð<ÒUÀÇÁÓ@QÐTUÑ@Uð ô ,2Ø×+Ñ+Ó-×3Ñ3Ó5ó,ò FÑ'�Ñ'�g˜wð #¡e¨G£n±u¸W³~Ñ&EÑEÑ"ðFñ
 "Ø×'Ñ'×+Ñ+¨D¯O©OÓ,=Ô>à%Ð%r–   c                ó$  •— t        | t        «      rJ ‚| j                  «       ‰j                  v xs | j	                  «       dkD  }| j                  «       D ]  }| ‰|«      z  }Œ |r)‰j                  j                  | j                  «       «       |S rœ   )Ú
isinstancer   r�   r’   rž   Úget_child_managersr¢   )r£   r¤   Ú	child_mgrr“   r¨   s      €€r”   Úvisit_managerzEGuardManagerWrapper.collect_diff_guard_sources.<locals>.visit_managerü   s’   ø€ Ü! $Ô(8Ô9Ð9Ð9ð —‘Ó! T×%<Ñ%<Ð<ÒUÀÇÁÓ@QÐTUÑ@Uð ð "×4Ñ4Ó6ò 7�	Ø"¡e¨IÓ&6Ñ6Ñ"ð7ñ "Ø×'Ñ'×+Ñ+¨D¯O©OÓ,=Ô>à%Ð%r–   c                óJ   •— | €yt        | t        «      r ‰| «      S  ‰| «      S )NF)r«   r   )r£   r©   r®   s    €€r”   r¨   z=GuardManagerWrapper.collect_diff_guard_sources.<locals>.visit
  s,   ø€ Øˆ|ØÜ˜$Ô 0Ô1Ù)¨$Ó/Ð/Ù  Ó&Ð&r–   )r„   r’   )r“   r¨   r©   r®   s   `@@@r”   Úcollect_diff_guard_sourcesz.GuardManagerWrapper.collect_diff_guard_sourcesä   s,   û€ õ	&õ	&õ	'ñ 	ˆd�i‰iÔà×&Ñ&Ð&r–   c                óD   — | j                  «        | j                  «        y rƒ   )r°   Úpopulate_diff_guard_managerr˜   s    r”   ÚfinalizezGuardManagerWrapper.finalize  s   € Ø×'Ñ'Ô)Ø×(Ñ(Õ*r–   c                ó’   — | j                  | j                  «      | _        | j                  r| j                  j	                  «        y y rƒ   )Úclone_with_chosen_sourcesr’   r…   rŒ   Úupdate_diff_guard_root_managerr˜   s    r”   r²   z/GuardManagerWrapper.populate_diff_guard_manager  s=   € Ø#×=Ñ=¸d×>UÑ>UÓVˆÔð ×ÒØ×Ñ×;Ñ;Õ=ð r–   c                óD   ‡— ˆfd„}| j                   j                  |«      S )Nc                ó(   •— | j                  «       ‰v S rƒ   )r�   )Únode_mgrÚchosen_sourcess    €r”   Ú	filter_fnz@GuardManagerWrapper.clone_with_chosen_sources.<locals>.filter_fn'  s   ø€ Ø×&Ñ&Ó(¨NÐ:Ð:r–   )r„   Úclone_manager)r“   rº   r»   s    ` r”   rµ   z-GuardManagerWrapper.clone_with_chosen_sources&  s   ø€ ô	;ð �y‰y×&Ñ& yÓ1Ð1r–   c                ó†   — |j                   j                  }|j                  «       }|D �cg c]
  }|dz   |z   ‘Œ }}|S c c}w )Nú: )Ú	__class__Ú__name__r‰   )r“   ÚguardÚ
guard_nameÚpartsÚparts        r”   Úget_guard_linesz#GuardManagerWrapper.get_guard_lines,  sF   € Ø—_‘_×-Ñ-ˆ
Ø×(Ñ(Ó*ˆØ6;Ö<¨d�˜dÑ" TÓ)Ð<ˆÐ<Øˆùò =s   «>c                óv   — |j                  «       }|j                  j                  }|dz   |z   }|r|d|z   z  }|S )Nz	: source=ú, )r�   r¿   rÀ   )r“   Úguard_managerÚaccessor_strÚsourceÚtÚss         r”   Úget_manager_linez$GuardManagerWrapper.get_manager_line2  sF   € Ø×)Ñ)Ó+ˆØ×#Ñ#×,Ñ,ˆØ�‰O˜fÑ$ˆÙØ�˜Ñ$Ñ$ˆAØˆr–   c                ó¶  — t        |j                  «       j                  «       «      D ]£  \  }\  }}|j                  d|› �«       |j	                  «       5  |r5|j                  d| j                  |«      › �«       | j                  ||«       |r5|j                  d| j                  |«      › �«       | j                  ||«       d d d «       Œ¥ y # 1 sw Y   Œ°xY w)NzKeyValueManager pair at index=zKeyManager: zValueManager: )rŸ   r    r¡   Ú	writelineÚindentrÍ   Úconstruct_manager_string)r“   ÚmgrÚbodyr¥   r¦   r§   s         r”   Úconstruct_dict_manager_stringz1GuardManagerWrapper.construct_dict_manager_string:  sÔ   € Ü'-¨c×.HÑ.HÓ.J×.PÑ.PÓ.RÓ'Sò 		AÑ#ˆCÑ#�'˜7Ø�N‰NÐ;¸C¸5ÐAÔBØ—‘“ñ AÙØ—N‘N \°$×2GÑ2GÈÓ2PÐ1QÐ#RÔSØ×1Ñ1°'¸4Ô@áØ—N‘N ^°D×4IÑ4IÈ'Ó4RÐ3SÐ#TÔUØ×1Ñ1°'¸4Ô@÷Að Añ		A÷Að Aús   ÁA/CÃC	c           
     ó8  — |j                  «       5  |j                  «       D ]Ë  }t        |t        j                  j
                  j                  j                  «      rq|| j                  vr<| j                  j                  |«       |j                  | j                  |«      «       Œ…|j                  |j                  j                  g«       Œ¬|j                  | j                  |«      «       ŒÍ t        |t        «      r| j                  ||«       t!        |j#                  «       |j%                  «       «      D ]I  \  }}|j'                  | j)                  |d|j+                  «       › �«      «       | j-                  ||«       ŒK 	 d d d «       y # 1 sw Y   y xY w)Nzaccessed_by=)rÐ   Úget_leaf_guardsr«   ÚtorchÚ_CÚ_dynamor|   ÚRelationalGuardr‘   r¢   Ú
writelinesrÅ   r¿   rÀ   r   rÔ   ÚzipÚget_accessorsr¬   rÏ   rÍ   ÚreprrÑ   )r“   rÒ   rÓ   rÁ   Úaccessorr­   s         r”   rÑ   z,GuardManagerWrapper.construct_manager_stringF  sW  € Ø�[‰[‹]ñ 	?Ø×,Ñ,Ó.ò A�Ü˜e¤U§X¡X×%5Ñ%5×%<Ñ%<×%LÑ%LÔMØ D×$BÑ$BÑBØ×6Ñ6×:Ñ:¸5ÔAØŸ™¨×(<Ñ(<¸UÓ(CÕDàŸ™à %§¡× 8Ñ 8ðõð —O‘O D×$8Ñ$8¸Ó$?Õ@ðAô ˜#Ô/Ô0Ø×2Ñ2°3¸Ô=ô (+Ø×!Ñ!Ó# S×%;Ñ%;Ó%=ó(ò ?Ñ#�˜)ð —‘Ø×)Ñ)¨)°|ÀHÇMÁMÃOÐCTÐ5UÓVôð ×-Ñ-¨i¸Õ>ñ?÷)	?÷ 	?ñ 	?ús   ‘E5FÆFc                óü  — ddl m}  G d„ d|«      }| j                  «       5   |«       }d|_        |j	                  dd¬«       |j	                  d	d¬«       |j	                  d
«       | j                  | j                  |«       t        | j                  d«      r?| j                  j                  «       D ]"  }|j                  | j                  |«      «       Œ$ |j                  «       cd d d «       S # 1 sw Y   y xY w)Nr   ©ÚIndentedBufferc                  ó&   ‡ — e Zd Zd„ Zdˆ fd„	Zˆ xZS )ú=GuardManagerWrapper.__str__.<locals>.IndentedBufferWithPrefixc                ó:   — d| j                   | j                  z  z  S )Nz| )Ú_indentÚtabwidthr˜   s    r”   ÚprefixzDGuardManagerWrapper.__str__.<locals>.IndentedBufferWithPrefix.prefixg  s   € Ø˜tŸ|™|¨d¯m©mÑ;Ñ<Ð<r–   c                óN   •— |rt         ‰| �  |«       y t         ‰| �  d|z   «       y )Nz+- )ÚsuperrÏ   )r“   ÚlineÚskip_prefixr¿   s      €r”   rÏ   zGGuardManagerWrapper.__str__.<locals>.IndentedBufferWithPrefix.writelinej  s$   ø€ ÙÜ‘GÑ% dÕ+ä‘GÑ% e¨d¡lÕ3r–   ©F)rÀ   Ú
__module__Ú__qualname__rè   rÏ   Ú__classcell__©r¿   s   @r”   ÚIndentedBufferWithPrefixrä   f  s   ø„ ò=÷4ñ 4r–   rò   r8   Ú T)rì   zTREE_GUARD_MANAGER:r   Úget_epilogue_lambda_guards)Útorch._inductor.utilsrâ   r™   rç   rÏ   rÑ   r„   Úhasattrrô   rÛ   rÅ   Úgetvalue)r“   râ   rò   rÓ   rÁ   s        r”   Ú__str__zGuardManagerWrapper.__str__c  sÒ   € Ý8ô	4 ~ô 	4ð ×5Ñ5Ó7ñ 
	#Ù+Ó-ˆDØˆDŒMØ�N‰N˜2¨4ˆNÔ0Ø�N‰NÐ0¸dˆNÔCØ�N‰NÐ-Ô.Ø×)Ñ)¨$¯)©)°TÔ:Ü�t—y‘yÐ">Ô?Ø!ŸY™Y×AÑAÓCò A�EØ—O‘O D×$8Ñ$8¸Ó$?Õ@ðAà—=‘=“?÷
	#÷ 
	#ò 
	#ús   ¢CC2Ã2C;c                ó8   — | j                   j                  |«      S rƒ   )r„   Úcheck©r“   Úxs     r”   rú   zGuardManagerWrapper.check|  s   € à�y‰y�‰˜qÓ!Ð!r–   c                ó8   — | j                   j                  |«      S rƒ   )r„   Úcheck_verboserû   s     r”   rþ   z!GuardManagerWrapper.check_verbose€  s   € à�y‰y×&Ñ& qÓ)Ð)r–   c                óZ   ‡ ‡‡‡— t        «       Šd„ Šˆˆˆ ˆfd„Š ‰‰ j                  «       y )Nc                óš   — g }| j                  «       D ]5  }|j                  d«      d   j                  «       }|j                  |«       Œ7 |S )Nú#r   )r‰   ÚsplitÚrstripÚappend)Ú
leaf_guardrˆ   Úverbose_code_partÚ	code_parts       r”   Úget_code_partszMGuardManagerWrapper.populate_code_parts_for_debugging.<locals>.get_code_partsˆ  sT   € ØˆJØ%/×%BÑ%BÓ%Dò -Ð!Ø-×3Ñ3°CÓ8¸Ñ;×BÑBÓD�	Ø×!Ñ! )Õ,ð-ð Ðr–   c                óŒ  •— | j                  «       D ]“  }t        |t        j                  j                  j
                  j                  «      r8|‰vsŒ@‰j                  j                   ‰|«      «       ‰j                  |«       Œs‰j                  j                   ‰|«      «       Œ• | j                  «       D ]
  } ‰|«       Œ y rƒ   )rÖ   r«   r×   rØ   rÙ   r|   rÚ   rˆ   Úextendr¢   r¬   )rÒ   rÁ   r­   r  Úrelational_guards_seenr“   r¨   s      €€€€r”   r¨   zDGuardManagerWrapper.populate_code_parts_for_debugging.<locals>.visit�  s¤   ø€ à×,Ñ,Ó.ò B�Ü˜e¤U§X¡X×%5Ñ%5×%<Ñ%<×%LÑ%LÔMØÐ$:Ò:ØŸ™×.Ñ.©~¸eÓ/DÔEØ.×2Ñ2°5Õ9à—O‘O×*Ñ*©>¸%Ó+@ÕAðBð !×3Ñ3Ó5ò !�	Ù�iÕ ñ!r–   )r�   r„   )r“   r  r  r¨   s   `@@@r”   Ú!populate_code_parts_for_debuggingz5GuardManagerWrapper.populate_code_parts_for_debugging„  s#   û€ ä!$£Ðò	÷	!ñ 	ˆd�i‰iÕr–   rƒ   )rÀ   rî   rï   Ú__doc__r•   r   r™   r°   r³   r²   rµ   rÅ   rÍ   rÔ   rÑ   rø   rú   rþ   r  © r–   r”   r�   r�   ¾   s_   „ ñó@ð, ñ3ó ð3ò/'òb+ò>ò2òóò
Aò?ò:#ò2"ò*ór–   r�   c                óì   — t         j                  j                  «       5  t        | t        j
                  t        j                  f«      rt        j                  | «      n| cd d d «       S # 1 sw Y   y xY wrƒ   )r×   Ú	overridesÚ_enable_torch_functionr«   ÚnpÚgenericÚndarrayÚ	as_tensor)Úas    r”   Ú
from_numpyr  Ÿ  sR   € ô 
�‰×	/Ñ	/Ó	1ñ TÜ%/°´B·J±JÄÇ
Á
Ð3KÔ%LŒu�‰˜qÔ!ÐRS÷T÷ Tò Tús   ŸAA*Á*A3c                 óè   — dd l } dd l} | j                  j                  | j                  j                  g}ddlm} |j                  |«       |D �ch c]  }t        j                  |«      ’Œ c}S c c}w )Nr   )ÚPOLYFILLED_MODULES)
Útorch._dynamo.external_utilsÚtorch._dynamo.polyfillsrÙ   Úexternal_utilsÚ	polyfillsÚtorch._dynamo.polyfills.loaderr  r
  ÚinspectÚgetfile)r×   Úmodsr  Úms       r”   Úuninteresting_filesr#  ¨  sS   € ã'Û"à�M‰M×(Ñ(¨%¯-©-×*AÑ*AÐB€DåAà‡K�KÐ"Ô#à(,Ö- 1ŒG�O‰O˜AÕÒ-Ð-ùÒ-s   ÁA/zOptional[dict[str, object]]Ú_CLOSURE_VARSc                 ó  — t         €ôi dt        “dt        “dt        j                  j
                  “dt        “dt        “dd„ “dt        “d	t        “d
t        “dt        “dt        “dt        j                  “dt        €d nt        j                  “dt!        d«      “dt"        j$                  “dt&        j(                  j*                  “dt&        j,                  “t.        t&        j0                  t&        t2        dœ¥a t         S )NÚ___check_type_idÚ___check_obj_idÚ___odict_getitemÚ___key_to_idÚ___dict_versionÚ___dict_containsc                ó.   — t         j                  || «      S rƒ   )ÚdictÚ__contains__)r  Úbs     r”   ú<lambda>z#_get_closure_vars.<locals>.<lambda>Â  s   € ¬T×->Ñ->¸qÀ!Ó-D€ r–   Ú___tuple_iterator_lenÚ___normalize_range_iterÚ___tuple_iterator_getitemÚ___dataclass_fieldsÚ#___get_torch_function_mode_stack_atÚ__math_isnanÚ__numpy_isnanÚinfÚ__load_moduleÚutils_deviceÚdevice)Ú___from_numpyÚ___as_tensorr×   r  )r$  r   r   ÚcollectionsÚOrderedDictÚ__getitem__rq   r   rv   rr   ru   ri   rm   ÚmathÚisnanr  ÚfloatÚ	importlibÚimport_moduler×   ÚutilsÚ_devicer;  r  Ú_as_tensor_fullprecr  r  r–   r”   Ú_get_closure_varsrI  ¹  s0  € äÐð
Ø¤ð
àœ|ð
ð ¤× 7Ñ 7× CÑ Cð
ð œIð	
ð
 œ|ð
ð Ñ Dð
ð $Ô%7ð
ð &Ô';ð
ð (Ô)?ð
ð "Ô#3ð
ð 2Ô3Sð
ð œDŸJ™Jð
ð ¤R Z™T´R·X±Xð
ð ”5˜“<ð
ð œY×4Ñ4ð
ð  œEŸK™K×/Ñ/ð!
ð" ”e—l‘lð#
ô$ (Ü!×5Ñ5ÜÜò+
ˆô. Ðr–   c                óL   — t        j                  | «      j                  dd«      S )Nú
ró   )ÚastÚunparseÚreplace)r£   s    r”   Ú_ast_unparserO  Ö  s   € Ü�;‰;�tÓ×$Ñ$ T¨2Ó.Ð.r–   c                óF  — d}|�—|j                   rCt        |j                   «      D ]*  }|j                  t        «       vsŒdt	        |d¬«      › �} nJ nH|j
                  r<|j
                  j                  «       }t        |«      dkD  rdt	        |d   «      › �}nd}| d›|› �S )	Nró   z  # T)rë   r   éÿÿÿÿz  # <unknown>z<60)Ú
user_stackÚreversedÚfilenamer#  r5   ÚstackÚsummaryÚlen)r  rÁ   ÚextraÚfsrV  s        r”   Úget_verbose_code_partrZ  Ý  sª   € Ø€EØÐØ×ÒÜ˜u×/Ñ/Ó0ò �Ø—;‘;Ô&9Ó&;Ò;Ø"¤<°¸Ô#>Ð"?Ð@�EÙñð �[Š[Ø—k‘k×)Ñ)Ó+ˆGÜ�7‹|˜aÒØœ|¨G°B©KÓ8Ð9Ð:‘à'�Ø˜ˆ_˜U˜GÐ$Ð$r–   c                óf   — t        | t        «      s| g} | D �cg c]  }t        ||«      ‘Œ c}S c c}w rƒ   )r«   ÚlistrZ  )rˆ   rÁ   r  s      r”   Úget_verbose_code_partsr]  î  s1   € ô �j¤$Ô'Ø �\ˆ
ØEOÖP¸	Ô! )¨UÕ3ÒPÐPùÒPs   ˜.c                óŽ   — | €y t        | «      s| S t        | t        j                  «      sJ ‚| j                  j                  «       S rƒ   )r1   r«   r×   ÚSymIntr£   Úmaybe_as_int)Údims    r”   Úconvert_int_to_concrete_valuesrb  ö  s>   € Ø
€{ØÜ�sÔØˆ
ä˜#œuŸ|™|Ô,Ð,Ð,Ø�x‰x×$Ñ$Ó&Ð&r–   c                ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w rƒ   )rb  )Úsize_or_stridera  s     r”   Úconvert_to_concrete_valuesre     s   € Ø;IÖJ°CÔ*¨3Õ/ÒJÐJùÒJs   …c                ó,  — |t         j                  j                  «       z  t         j                  j                  «       z
  }| j                  }| j
                  j                  }| j                  }	d|› d|j                  › d|› d|› d|› d|	› d|› d|› d�}
|
S )Nzcheck_tensor(rÇ   z	, device=z, requires_grad=z, size=z	, stride=ú))	r×   rØ   Ú_dispatch_tls_local_include_setÚ_dispatch_tls_local_exclude_setÚdtyper;  ÚindexÚrequires_gradrï   )ÚvalueÚnameÚsizesÚstridesÚpytypeÚdispatch_keysÚdispatch_keyrj  Údevice_indexrl  Ú	guard_strs              r”   Úget_tensor_guard_code_partrv    s©   € àœŸ™×@Ñ@ÓBÑBÜ�‰×0Ñ0Ó2ñ3€Lð �K‰K€EØ—<‘<×%Ñ%€LØ×'Ñ'€Mà
˜�v˜R × 3Ñ 3Ð4°B°|°nÀBÀuÀgð NØ�Ð/°¨¸gÀeÀWÈIÐV]ÐU^Ð^_ð	að ð Ðr–   c                óH   — t        t        | «      «      j                  |«      S rƒ   )r\  rg   rk  )ÚdctÚkeys     r”   Úget_key_indexrz    s    € ô
 Ô! #Ó&Ó'×-Ñ-¨cÓ2Ð2r–   c                ó   — d| › d|› d�S )Núlist(dict.keys(ú))[ú]r  )rÊ   rk  s     r”   Úget_key_index_sourcer    s   € Ø˜V˜H C¨ w¨aÐ0Ð0r–   c                óD   — t        dt        | «      › d| › d�dz   dz   «      ‚)NúType ú for object ú cannot be saved ú@into torch.compile() package since it's defined in local scope. ú@Please define the class at global scope (top level of a module).)Ú	TypeErrorÚtype)Úobjs    r”   Úraise_local_type_errorr‰    s8   € Ü
Ø
”�S“	ˆ{˜, s eÐ+<Ð=Ø
Lñ	Mà
Lñ	Móð r–   T)Úfrozenc                  ó8   — e Zd ZU dZded<   dZded<   dZded<   y)ÚNNModuleAttrAccessorInfoFÚboolÚpresent_in_generic_dictNúOptional[str]Úl1_keyÚl2_key)rÀ   rî   rï   rŽ  Ú__annotations__r�  r‘  r  r–   r”   rŒ  rŒ  &  s'   … ð %*Ð˜TÓ)ð !€FˆMÓ ð !€FˆMÔ r–   rŒ  c                ót  — | j                   j                  «       }t        | j                  t        «      r| j                  j                  }n(t        |t
        «      sJ ‚t        || j                  «      }t        ||«      }t        t        |«      «      |   }t        |t        t        f«      r	|› d|›d�}	n|› d|› d�}	t        | j                  t        «      sM|j                  ||| j                  t        j                  ¬«      j                  | j                  |› d|›�g«       |j!                  ||	||¬«      S )Nú[r~  ©rk  rÊ   Úexample_valueÚguard_manager_enumú == )Úbasern  r«   rk  rC   r-  rz  r  r\  rg   ÚintÚstrÚget_key_managerÚGuardManagerTypeÚGUARD_MANAGERÚadd_equals_match_guardÚget_value_manager)
rÊ   Úbase_guard_managerÚbase_example_valuer–  r—  Úbase_source_namerk  Ú
key_sourceÚkey_example_valueÚvalue_sources
             r”   Úgetitem_on_dict_managerr§  5  s:  € ð —{‘{×'Ñ'Ó)ÐÜ�&—,‘,Ô 2Ô3Ø—‘×"Ñ"‰äÐ,¬dÔ3Ð3Ð3ÜÐ0°&·,±,Ó?ˆä%Ð&6¸Ó>€Jô Ô.Ð/AÓBÓCÀEÑJÐÜÐ#¤c¬3 ZÔ0Ø*Ð+¨1Ð->Ð,AÀÐC‰à*Ð+¨1¨Z¨L¸Ð:ˆÜ�f—l‘lÔ$6Ô7ð 	×*Ñ*ØØØ Ÿ,™,Ü/×=Ñ=ð	 	+ó 	
÷
 !Ñ
 Ø�L‰L˜j˜\¨Ð.?Ð-BÐCÐDô
ð ×/Ñ/ØØØ#Ø-ð	 0ó ð r–   c                ó¤   — | j                   }t        |t        «      ry| j                  «       ry|j	                  «       xr t        |t
        «       S ©NFT)Úoriginating_sourcer«   rT   Úis_specialized_nn_moduleÚis_dict_keyrP   )rÁ   rÊ   s     r”   Úmatch_on_id_for_tensorr­  ^  sJ   € Ø×%Ñ%€Fô �&Ô+Ô,Øà×%Ñ%Ô'Øà×ÑÓÒF¬
°6¼:Ó(FÐ$FÐFr–   c                  ó"   — e Zd ZU ded<   ded<   y)ÚGuardCodeListú	list[str]Ú	code_listr&   rÁ   N©rÀ   rî   rï   r’  r  r–   r”   r¯  r¯  m  s   … àÓØ„Lr–   r¯  c                  ó   — e Zd ZdZdZy)r�  r8   é   N)rÀ   rî   rï   rž  ÚDICT_GUARD_MANAGERr  r–   r”   r�  r�  s  s   „ Ø€MØÑr–   r�  c                ó<   — t        t        t        | «      «      «      S rƒ   )r\  rS  r   )Úcodes    r”   Ú&code_framelocals_names_reversed_cachedr¸  x  s   € ä”Ô/°Ó5Ó6Ó7Ð7r–   c                  óÈ  — e Zd Z	 d6	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d7d„Zd„ Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd8d„Z	 	 d9d„Zd6d:d„Zd;d„Zd<d„Zd8d„Zd6d=d„Zd=d„Zd8d„Zd>d„Zd8d„Zd8d„Zd8d„Zd6d8d„Zd8d„Zd8d„Zd8d„Zd8d„Zd8d„Z d8d„Z!d6d?d „Z"d8d!„Z#d8d"„Z$d8d#„Z%d8d$„Z&d8d%„Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d8d.„Z0d8d/„Z1d8d0„Z2d8d1„Z3d8d2„Z4d8d3„Z5d6d8d4„Z6d6d5„Z7y)@ÚGuardBuilderNc
           	     óT  — || _         || _        || _        || _        ||dœ| _        t
        j                  j                  «       | j                  d<   t        j                  j                  j                  j                  «       D ]X  \  }
}|
j                  dd«      j                  dd«      j                  dd«      }
|| j                  d   |
<   || j                  |
<   ŒZ || _        g | _        g | _        g | _        g | _        g | _        || _        t+        «       | _        | j(                  j.                  j0                  D ]C  }| j,                  j3                  t5        | j7                  |j9                  «       «      «      «       ŒE i | _        i | _        t+        «       | _        |	| _         y )N©ÚLÚGÚ__builtins__ú>Ú_ú<ú.Ú_dot_)!Úf_codeÚid_refÚ
source_refÚlookup_weakrefsÚscopeÚbuiltinsÚ__dict__Úcopyr×   ÚpackageÚpackage_importerÚ_package_imported_modulesr¡   rN  rÈ   Úargnamesr·  Úshape_env_codeÚno_tensor_aliasing_namesÚ!no_tensor_aliasing_guard_managersÚcheck_fn_managerr�   Úkey_order_guarded_dict_idsÚoutput_graphÚguard_on_key_orderr¢   ÚidÚgetrn  rŽ   Ú_cached_guard_managersÚ_cached_duplicate_input_guardsÚserialization_mode)r“   rÅ  rÆ  rÇ  rÈ  Úlocal_scoperŠ   rÈ   rÔ  rÜ  rn  Úpackage_modulerÊ   s                r”   r•   zGuardBuilder.__init__~  sŠ  € ð ˆŒØˆŒØ$ˆŒØ.ˆÔØ9DÈ<Ñ3XˆŒ
Ü%-×%6Ñ%6×%;Ñ%;Ó%=ˆ�
‰
�>Ñ"ô �]‰]×+Ñ+×EÑE×KÑKÓMò	.ñ 
ØØà—<‘<  SÓ)×1Ñ1°#°sÓ;×CÑCÀCÈÓQˆDà/=ˆD�J‰J�~Ñ& tÑ,à-ˆD�J‰J�tÒð	.ð +ˆÔà#%ˆŒà)+ˆŒ	ð
 46ˆÔð 46ˆÔ%ØLNˆÔ.à6FˆÔô +.«%ˆÔ'Ø×+Ñ+×8Ñ8×KÑKò 	MˆFØ×+Ñ+×/Ñ/´°4·8±8¸F¿K¹K»MÓ3JÓ0KÕLð	Mð BDˆÔð
 ð 	Ô#ô EHÃEˆÔ+Ø"4ˆÕr–   c                ó\  — | j                  |«      }t        |t        «      rt        d|j                  › �«      ‚|j
                  j	                  «       }t        |«      D ]K  }||   }t        |j
                  |¬«      }| j                  ||«      }|j                  ||› d|›d�||¬«       ŒM y )NzsNot expecting a DictGuardManager. Seems like Dynamo incorrectly added the dict to tx.output.guard_on_key_order for )rk  r”  r~  ©ry  rÊ   r–  r—  )
Úget_guard_managerr«   r   ÚNotImplementedErrorrn  rª  rg   rF   Úget_guard_manager_typeÚdict_getitem_manager)	r“   r–  rÁ   Údict_mgrÚdict_sourcery  rm  r¦  r—  s	            r”   Ú#guard_on_dict_keys_and_ignore_orderz0GuardBuilder.guard_on_dict_keys_and_ignore_order¿  sË   € Ø×)Ñ)¨%Ó0ˆÜ�hÔ 0Ô1Ü%ðFØFKÇjÁjÀ\ðSóð ð ×.Ñ.×3Ñ3Ó5ˆô % ]Ó3ò 	ˆCØ! #Ñ&ˆEÜ,¨U×-EÑ-EÈSÔQˆLØ!%×!<Ñ!<Ø˜mó"Ðð ×)Ñ)ØØ%˜ a¨ w¨aÐ0Ø#Ø#5ð	 *õ ñ	r–   c                ó  — | j                  |«      }t        |t        «      st        d|j                  › �«      ‚t        |t        «      sJ ‚t        t        |«      «      D ]   \  }}t        |j                  |«      }|j                  |||t        j                  ¬«      }t        |«      r6| j                  ||«      }|j                  |t        d|› d|› d�|«      «       Œ€|j                  |t        |› d|›�|«      «       Œ¢ y )Nz_Expecting a DictGuardManager. Seems like Dynamo forgot to set the right guard manager enum for r•  z__check_obj_id(rÇ   rg  r˜  )rá  r«   r   râ  rn  Ú	enumeraterg   r  rœ  r�  rž  rp   rÆ  Úadd_id_match_guardr]  rŸ  )	r“   rm  rÁ   rå  r¥   ry  r¤  Úkey_managerÚid_vals	            r”   Úguard_on_dict_keys_and_orderz)GuardBuilder.guard_on_dict_keys_and_orderÛ  s  € ð ×)Ñ)¨%Ó0ˆÜ˜(Ô$4Ô5Ü%ð;Ø;@¿:¹:¸,ðHóð ô ˜(Ô$4Ô5Ð5Ð5ô "Ô"3°EÓ":Ó;ò 	‰HˆC�Ü-¨e¯j©j¸#Ó>ˆJØ"×2Ñ2ØØ!Ø!Ü#3×#AÑ#Að	 3ó ˆKô ˜Œ~àŸ™ S¨*Ó5�Ø×.Ñ.ØÜ*Ø)¨*¨°R¸°x¸qÐAÀ5óõð ×2Ñ2ØÔ/°:°,¸dÀ3À'Ð0JÈEÓRõñ'	r–   c                ó¨   — t         j                  rAt        j                  dk\  r.t        j                  dk  rt	        j
                  dt        «       y | S )N)é   é   )rï  rð  r8   zMGuards may run slower on Python 3.13.0. Consider upgrading to Python 3.13.1+.)r9   Úissue_3_13_0_warningÚsysÚversion_infoÚwarningsÚwarnÚRuntimeWarning)r–  s    r”   Ú'_get_generic_dict_manager_example_valuez4GuardBuilder._get_generic_dict_manager_example_value  sF   € ô ×'Ò'Ü× Ñ  GÒ+Ü× Ñ  :Ò-ä�M‰MØ_Üôð ØÐr–   c                óþ  — d„ }|j                   }	|j                  }
t        «       }t        j                  |j
                  «      D ]+  }|j                  |j                  j                  «       «       Œ- t        ddd«      }|	|
v rt        d|	d«      }nNd|
v r|	|
d   v rt        dd|	«      }n5d|
v r|	|
d   v rt        dd|	«      }n|	|vrd|
v r|	|
d   v rt        dd|	«      }|j                  s|j                  |j                   |||¬«      S |j                  sJ ‚|j                  }|j                  }|› d	�}dx}}dx}}dx}}|rTt        |j                  |«      }|j                  «       }|
|   }| j!                  ||«      }|}|}| j!                  ||«      }n|}|}| j!                  ||«      }|j#                  || j%                  |
«      t&        j(                  ¬
«      } |||||
||¬«      }|r |||||||¬«      S |S )a(  
        This tries to avoid calling the expensive nn module custom getattr method by
        checking if the attribute is accessible via __dict__. For attributes that
        are not accessible via __dict__ (like descriptors), we fallback to
        PyObject_GetAttr.

        There are two cases that we optimize for
        1) attributes present directly in __dict__, e.g training.
        2) parameters/buffers/modules - they can be accessed via _parameters,
        _buffers, _modules keys in __dict__. For example, mod.linear can be
        accessed as mod.__dict__["_parameters"]["linear"]

        The most common and expensive case for nn module guards is of type
        mod.submod1.submod2.submod3.training. We avoid the python getattr of nn
        modules by going through the __dict__.
        c                ó  — t        | t        «      rct        ||«      }d|› d|›d�}| j                  |||t        j
                  ¬«      j                  ||› d|›�g«       | j                  ||||¬«      S | j                  ||||¬«      S )Nr|  r}  r~  r•  r˜  rà  )	r«   r   rz  rœ  r�  rž  rŸ  r   rä  )rÒ   ry  Úsource_namer¢  r–  r—  rk  r¤  s           r”   Úgetitem_on_dict_mgrz>GuardBuilder.getattr_on_nn_module.<locals>.getitem_on_dict_mgr.  sÂ   € ô ˜#Ô/Ô0ô &Ð&8¸#Ó>�ð  /¨{¨m¸3¸u¸iÀqÐI�
Ø×#Ñ#ØØ%Ø"%Ü'7×'EÑ'Eð	 $ó ÷
 )Ñ(¨°*°¸TÀ#ÀÐ/IÐ.JÔKð ×,Ñ,ØØ&Ø"/Ø'9ð	 -ó ð ð ×/Ñ/ØØ&Ø"/Ø'9ð	 0ó ð r–   FNTÚ_parametersÚ_buffersÚ_modules©ÚattrrÊ   r–  r—  ú	.__dict__©rÊ   r–  r—  )rÒ   ry  rú  r¢  r–  r—  )ÚmemberrË  r�   r  Úgetmror¿   ÚupdateÚkeysrŒ  rŽ  Úgetattr_managerr�  r‘  r>   r™  rn  rã  Úget_generic_dict_managerr÷  r�  rž  )r“   rÊ   r¡  r¢  r–  r£  rú  r—  rû  Ú	attr_nameÚmod_dictÚall_class_attribute_namesrü   Úaccessor_infor�  r‘  Úmod_dict_sourceÚl1_source_nameÚl2_source_nameÚl1_valueÚl2_valueÚl1_guard_manager_enumÚl2_guard_manager_enumÚ	l1_sourceÚmod_generic_dict_managerÚl1_mgrs                             r”   Úgetattr_on_nn_modulez!GuardBuilder.getattr_on_nn_module  s}  € ò6	ð@ —M‘Mˆ	Ø%×.Ñ.ˆä.1«eÐ!Ü—‘Ð 2× <Ñ <Ó=ò 	@ˆAØ%×,Ñ,¨Q¯Z©Z¯_©_Ó->Õ?ð	@ô 1°¸¸dÓCˆà˜Ñ Ü4°T¸9ÀdÓK‰MØ˜hÑ&¨9¸ÀÑ8OÑ+OÜ4°T¸=È)ÓT‰MØ˜8Ñ#¨	°X¸jÑ5IÑ(IÜ4°T¸:ÀyÓQ‰MàÐ6Ñ6Ø˜hÑ&Ø˜X jÑ1Ñ1ô 5°T¸:ÀyÓQˆMà×4Ò4ð &×5Ñ5Ø—]‘]Ø"Ø+Ø#5ð	 6ó ð ð !×'Ò'Ð'Ð'Ø"×)Ñ)ˆFØ"×)Ñ)ˆFð "2Ð 2°)Ð<ˆOØ.2Ð2ˆN˜^Ø"&Ð&ˆH�xØ<@Ð@Ð!Ð$9ÙÜ& v§{¡{°FÓ;�	Ø!*§¡Ó!1�Ø# FÑ+�ð )-×(CÑ(CÀIÈxÓ(XÐ%à!,�Ø(�Ø(,×(CÑ(CØ˜Mó)Ñ%ð "-�Ø(�Ø(,×(CÑ(CØ˜Mó)Ð%ð (:×'RÑ'RØ&Ø"×JÑJÈ8ÓTÜ#3×#AÑ#Að (Só (Ð$ñ )Ø,ØØ*Ø#+Ø&Ø#8ôˆFñ Ù*ØØØ .Ø'/Ø"*Ø'<ôð ð ˆMr–   c                ó~   — |j                  «       }|dk(  ryt        | j                  |«      «      }|| j                  v S )Nró   F)rn  rØ  rÙ  rÕ  )r“   rÊ   rú  Úobj_ids       r”   Úrequires_key_order_guardingz(GuardBuilder.requires_key_order_guarding¨  s<   € Ø—k‘k“mˆØ˜"ÒØÜ�D—H‘H˜[Ó)Ó*ˆØ˜×8Ñ8Ð8Ð8r–   c                óÐ   — t         j                  }| j                  |«      rDt        |t        «      rt         j
                  }|S t        |t        «      sJ ‚t         j
                  }|S rƒ   )r�  rž  r  r«   rj   rµ  r-  )r“   rÊ   r–  r—  s       r”   rã  z#GuardBuilder.get_guard_manager_type¯  s^   € Ü-×;Ñ;ÐØ×+Ñ+¨FÔ3ä˜-¬Ô3Ü%5×%HÑ%HÐ"ð "Ð!ô " -´Ô6Ð6Ð6Ü%5×%HÑ%HÐ"Ø!Ð!r–   c                ó(   — |t         j                  k(  S rƒ   )r�  rµ  )r“   Úmgr_enums     r”   Úmanager_guards_on_keysz#GuardBuilder.manager_guards_on_keysº  s   € ØÔ+×>Ñ>Ñ>Ð>r–   c                ó¤   — | j                   j                  j                  | j                  d   d| j                  d   t        j
                  ¬«      S )Nr¾  )Ú	f_globalsrÊ   r–  r—  )rÈ   r„   Úglobals_dict_managerrÉ  r�  rž  r˜   s    r”   Úget_global_guard_managerz%GuardBuilder.get_global_guard_manager½  sH   € Ø×!Ñ!×&Ñ&×;Ñ;Ø—j‘j ‘oØØŸ*™* S™/Ü/×=Ñ=ð	 <ó 
ð 	
r–   c           	     óp  ‡— | j                   j                  }d }‰j                  «       }|dk7  r|| j                  v r| j                  |   S |dk7  r| j	                  |«      }| j                  ‰|«      }d }d }d }t        j                  }	t        ‰t        «      rb‰j                  j                  «       }| j	                  |«      }| j                  ‰j                  «      }| j                  ‰j                  |«      }	t        ‰t        «      rbt        | j                  «      }
t!        |
«      |
j#                  ‰j$                  «      z
  dz
  }|j'                  ‰j$                  |f|||¬«      }�n«t        ‰t(        «      r/| j+                  «       j-                  ‰j.                  |||¬«      }�nlt        ‰t0        «      r/| j+                  «       j3                  ‰j.                  |||¬«      }�n-t        ‰t4        «      r|S t        ‰t6        «      r|S t        ‰t8        «      r|sJ ‚|j;                  |||¬«      }�nßt        ‰t<        t>        t@        tB        tD        f«      r|sJ ‚|}�n²t        ‰tF        «      r|jI                  ˆfd„|||¬«      }�nˆt        ‰tJ        «      r|sJ ‚|jM                  |||¬«      }�n^t        ‰tN        «      r%|sJ ‚|jQ                  ‰jR                  |||¬«      }�n)t        ‰tT        tV        f«      rs|sJ ‚t        |tX        jZ                  j\                  «      r*t_        |«      t`        u r| jc                  ‰||||||«      }�nÁ|je                  ‰jR                  |||¬«      }�n t        ‰tf        th        f«      r |sJ ‚t        |tj        tl        jn                  f«      sJ ‚t        |tp        «      r$| js                  |	«      sJ ‚tu        ‰||||«      }�n0t        ‰j"                  tv        «      rty        d	«      ‚|j-                  ‰j"                  |||¬«      }�nêt        ‰tz        «      rH t}        |d
‰j~                  j                  j�                  «       › d�«      ‰j‚                  |||¬«      }�n’t        ‰t„        «      r%|sJ ‚|j‡                  ‰j‚                  |||¬«      }�n]t        ‰tˆ        «      r%|sJ ‚|j‹                  ‰j"                  |||¬«      }�n(t        ‰tŒ        «      rä|sJ ‚t        |tj        tl        jn                  f«      rJ d«       ‚t        |tŽ        «      r-‰j�                  s!|j‹                  ‰j"                  |||¬«      }�n°t        |t’        «      r-‰j�                  s!|j•                  ‰j"                  |||¬«      }�ns‰j"                  }‰j�                  r‰j—                  «       }|j™                  ||||¬«      }�n4t        ‰tš        «      rÒ|sJ ‚t�        |«      sJ ‚‰jž                  sK|j¡                  ||j¢                  t        j                  ¬«      j™                  ‰j¤                  |||¬«      }�n¼|j¦                  }|€J ‚|dz   }|j©                  ||t        j                  ¬«      }t        |tp        «      rJ ‚|j-                  ‰j¤                  |||¬«      }�nRt        ‰tª        «      r|sJ ‚|jI                  t¬        |||¬«      }�n#t        ‰t®        «      r|sJ ‚|jI                  d„ |||¬«      }�n÷t        ‰t°        «      r|sJ ‚|jI                  d„ |||¬«      }�nËt        ‰t²        «      r|sJ ‚|jI                  d„ |||¬«      }�nŸt        ‰t´        «      r|sJ ‚|jI                  d„ |||¬«      }�nst        ‰t¶        «      r|sJ ‚|jI                  d„ |||¬«      }�nGt        ‰t¸        «      r|sJ ‚|jI                  d„ |||¬«      }�nt        ‰tº        «      r$|sJ ‚|j½                  ‰j"                  |||¬«      }nçt        ‰tv        «      r;t        |tp        «      st¿        d«      ‚|jÁ                  ‰j"                  |||¬«      }nœt        ‰tÂ        «      r|sJ ‚|jÅ                  |||¬«      }nst        ‰tÆ        «      r|sJ ‚|jÉ                  |||¬«      }nJt        ‰tÊ        «      r|sJ ‚|jI                  d„ |||¬«      }nt¿        d‰› d‰j                  «       › �«      ‚|| j                  ‰j                  «       <   |S )Nró   r8   rà  )Úglobal_namerÊ   r–  r—  r  c                ó6   •— t        ‰j                  «       «      S rƒ   )rm   Ú
_get_index)rÁ  rÊ   s    €r”   r0  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>"  s   ø€ Ô(HØ×%Ñ%Ó'ó)€ r–   )Úpython_lambdarÊ   r–  r—  rÿ  zUExpecting clean index here. Likely Dynamo forgot to mark a dict as guard_on_key_orderÚtensor_property_Ú_manager)r¥   rÊ   r–  r—  zUse DictGetItemSourcez.__kwdefaults__c                ó(   — | j                  «       d   S rœ   ©Ú__tensor_flatten__©rü   s    r”   r0  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Í  s   € ¨×(<Ñ(<Ó(>¸qÑ(A€ r–   c                ó"   — | j                  «       S rƒ   )Ú__obj_flatten__r-  s    r”   r0  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Õ  s   € ¨×(9Ñ(9Ó(;€ r–   c                ó>   — | j                  «       j                  «       S rƒ   )Ú_typeÚqualified_namer-  s    r”   r0  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Ý  s   € ¨¯©«	×(@Ñ(@Ó(B€ r–   c                ó"   — | j                  «       S rƒ   )Úget_baser-  s    r”   r0  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>å  s   € ¨¯
©
«€ r–   c                ó"   — | j                  «       S rƒ   )Úitemr-  s    r”   r0  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>í  s   € ¨¯©«€ r–   c                ó,   — t        j                  | «      S rƒ   )r×   rH  r-  s    r”   r0  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>õ  s   € ¬×(AÑ(AÀ!Ó(D€ r–   r•  z4ConstDictKeySource can only work on DictGuardManagerc                ó   — t        | «      S rƒ   )ri   r-  s    r”   r0  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>  s   € Ô(8¸Ó(;€ r–   zmissing guard manager builder z - )frÈ   r„   rn  rÚ  rÙ  rã  r�  rž  r«   rA   r™  Úget_guard_manager_from_sourcero   rR   r¸  rÅ  rW  rk  Ú
local_nameÚframelocals_managerrM   r"  rä  r$  rO   Úglobal_weakref_managerrN   rW   r[   Útype_managerrU   rS   r]   r\   rJ   rY   Úlambda_managerrP   Úgrad_managerrK   Úgeneric_getattr_managerr  r>   r^   r×   ÚnnÚModulerk   rw   r  r  rF   rG   r-  r>  r?  r   r  r§  rC   ÚRuntimeErrorr    ÚgetattrÚpropÚlowerr¥   r   Úindexed_managerrQ   Úlist_getitem_managerrL   r\  Úindex_is_sliceÚtupleÚtuple_getitem_managerÚunpack_sliceÚgetitem_managerrE   ÚcallableÚis_kwÚfunc_defaults_managerÚ__defaults__Úidx_keyÚ__kwdefaults__Úfunc_kwdefaults_managerrT   r  rX   rH   rV   r=   r@   rI   rZ   Útuple_iterator_getitem_managerÚAssertionErrorrœ  r_   Úweakref_call_managerr?   Úcall_function_no_args_managerrD   )r“   rÊ   Úroot_guard_managerr–  rú  r—  r£  r¢  r¡  Úbase_guard_manager_enumÚframelocals_names_reversedÚframelocals_idxÚoutrk  Ú
kwdefaultsÚ	kw_sourcerå  s    `               r”   r9  z*GuardBuilder.get_guard_manager_from_sourceÅ  s	
  ø€ Ø!×/Ñ/×4Ñ4ÐàˆØ—k‘k“mˆà˜"Ò °×0KÑ0KÑ!KØ×.Ñ.¨{Ñ;Ð;à˜"ÒØ ŸH™H [Ó1ˆMà!×8Ñ8¸ÀÓOÐð  ÐØ!ÐØ!ÐÜ"2×"@Ñ"@ÐÜ�fœmÔ,Ø%Ÿ{™{×/Ñ/Ó1ÐØ!%§¡Ð*:Ó!;ÐØ!%×!CÑ!CÀFÇKÁKÓ!PÐØ&*×&AÑ&AØ—‘Ð/ó'Ð#ô
 �&œ+Ô&ô *PØ—‘ó*Ð&ô Ð.Ó/Ø,×2Ñ2°6×3DÑ3DÓEñFàñð ð
 %×8Ñ8Ø×&Ñ&¨Ð8Ø"Ø+Ø#5ð	 9ó ŠCô �FœLÔ)ð ×/Ñ/Ó1×FÑFØ×&Ñ&Ø"Ø+Ø#5ð	 Gó ŠCô �FÔ/Ô0Ø×/Ñ/Ó1×HÑHØ"×.Ñ.Ø"Ø+Ø#5ð	 Ió ŠCô �FÔ-Ô.ð &Ð%Ü�FœNÔ+Ø%Ð%Ü�FœJÔ'Ù%Ð%Ð%Ø$×1Ñ1Ø"Ø+Ø#5ð 2ó ŠCô
 ØäÜÜ+Ü2Ü"ðô	
ñ &Ð%Ð%Ø$ŠCÜ�FÔ8Ô9Ø$×3Ñ3óð #Ø+Ø#5ð 4ó ŠCô �FœJÔ'Ù%Ð%Ð%Ø$×1Ñ1Ø"Ø+Ø#5ð 2ó ŠCô
 �FÔ-Ô.Ù%Ð%Ð%Ø$×<Ñ<Ø—]‘]Ø"Ø+Ø#5ð	 =ó ŠCô �FœZÔ)GÐHÔIÙ%Ð%Ð%ô Ð-¬u¯x©x¯©Ô?Ü&Ð'9Ó:Ü.ñ/ð ×/Ñ/ØØ&Ø&Ø!Ø$ØØ&ó’ð )×8Ñ8ØŸ™Ø&Ø"/Ø'9ð	 9ó ’ô �FÔ.Ô0IÐJÔKÙ%Ð%Ð%ÜÐ0´4¼×9PÑ9PÐ2QÔRÐRÐRÜÐ,Ô.>Ô?Ø×2Ñ2Ð3JÔKÐKÐKÜ-ØØ&Ø&Ø!Ø&ó’ô ˜fŸl™lÔ,>Ô?Ü&ð8óð ð )×=Ñ=ØŸ™Ø&Ø"/Ø'9ð	 >ó ’ô �FÔ0Ô1ð”'Ø"Ø" 6§;¡;×#3Ñ#3×#9Ñ#9Ó#;Ð"<¸HÐEóð —J‘JØ"Ø+Ø#5ôŠCô �FœMÔ*Ù%Ð%Ð%à$×4Ñ4Ø—J‘JØ"Ø+Ø#5ð	 5ó ŠCô �FÔ-Ô.Ù%Ð%Ð%Ø$×9Ñ9Ø—L‘LØ"Ø+Ø#5ð	 :ó ŠCô �FœMÔ*Ù%Ð%Ð%Ü!Ø"¤T¬;×+BÑ+BÐ$Côð 'à&ó'ð ô Ð,¬dÔ3¸F×<QÒ<QØ(×=Ñ=ØŸ™Ø&Ø"/Ø'9ð	 >ó ’ô Ð.´Ô6¸v×?TÒ?TØ(×>Ñ>ØŸ™Ø&Ø"/Ø'9ð	 ?ó ’ð Ÿ™�Ø×(Ò(Ø"×/Ñ/Ó1�EØ(×8Ñ8ØØ&Ø"/Ø'9ð	 9ó ’ô �FœNÔ+Ù%Ð%Ð%ÜÐ.Ô/Ð/Ð/Ø—<’<Ø(×>Ñ>Ø+Ø"4×"AÑ"AÜ'7×'EÑ'Eð ?ó ÷ "‘/ØŸ™Ø&Ø"/Ø'9ð	 "ó ò	 ð 0×>Ñ>�
Ø'Ð3Ð3Ð3Ø,Ð/@Ñ@�	ð .×EÑEØ$Ø",Ü'7×'EÑ'Eð Fó �ô
 & hÔ0@ÔAÐAÐAà×3Ñ3ØŸ™Ø&Ø"/Ø'9ð	 4ó ’ô �FÔ-Ô.Ù%Ð%Ð%Ø$×3Ñ3Ü(Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ2Ô3Ù%Ð%Ð%Ø$×3Ñ3ÙAØ"Ø+Ø#5ð	 4ó ŠCô �FÔ5Ô6Ù%Ð%Ð%Ø$×3Ñ3Ù;Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ;Ô<Ù%Ð%Ð%Ø$×3Ñ3ÙBØ"Ø+Ø#5ð	 4ó ŠCô �FœOÔ,Ù%Ð%Ð%Ø$×3Ñ3Ù4Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ0Ô1Ù%Ð%Ð%Ø$×3Ñ3Ù0Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ-Ô.Ù%Ð%Ð%Ø$×3Ñ3ÙDØ"Ø+Ø#5ð	 4ó ŠCô �FÔ6Ô7Ù%Ð%Ð%Ø$×CÑCØ—l‘lØ"Ø+Ø#5ð	 Dó ‰Cô ˜Ô 2Ô3ÜÐ0Ô2BÔCÜ$ØJóð ð %×4Ñ4Ø—l‘lØ"Ø+Ø#5ð	 5ó ‰Cô �FÔ-Ô.Ù%Ð%Ð%Ø$×9Ñ9Ø"Ø+Ø#5ð :ó ‰Cô
 �FÔ4Ô5Ù%Ð%Ð%Ø$×BÑBØ"Ø+Ø#5ð Có ‰Cô
 �FÔ1Ô2Ù%Ð%Ð%Ø$×3Ñ3Ù;Ø"Ø+Ø#5ð	 4ó ‰Cô !Ø0°°¸¸F¿K¹K»M¸?ÐKóð ð 69ˆ×#Ñ# F§K¡K£MÑ2Øˆ
r–   c                ó8   — | j                  |j                  «      S rƒ   )r9  rª  ©r“   rÁ   s     r”   rá  zGuardBuilder.get_guard_manager+  s   € Ø×1Ñ1°%×2JÑ2JÓKÐKr–   c                ó®  — |€
t        «       }dj                  |j                  «       «      }t        ||«      \  }}i }d| j                  d   i}	t
        j                  d|«       t        ||	|«        |d   |j                  «       Ž }
|r'| j                  j                  j                  |
|«       y | j                  j                  j                  |
|«       y )NrÇ   r¾  zPython shape guard function:
%sÚ___make_guard_fn)rI  Újoinr  Úbuild_guard_functionrÉ  Ú
guards_logÚdebugÚexecÚvaluesrÈ   r„   Úadd_epilogue_lambda_guardÚadd_lambda_guard)r“   rˆ   r‰   r†   Úis_epilogueÚmake_guard_fn_argsÚ_guard_bodyÚpycoder]  Úglobals_for_guard_fnÚguard_fns              r”   Ú$add_python_lambda_leaf_guard_to_rootz1GuardBuilder.add_python_lambda_leaf_guard_to_root.  sÓ   € ð ÐÜ,Ó.ˆLð "ŸY™Y |×'8Ñ'8Ó':Ó;ÐÜ2°:Ð?QÓRÑˆ�VØ ˆØ # T§Z¡Z°¡_Ð5ÐÜ×ÑÐ;¸VÔDÜˆVÐ)¨3Ô/Ø*�3Ð)Ñ*¨L×,?Ñ,?Ó,AÐBˆÙð ×Ñ×#Ñ#×=Ñ=ØÐ,õð ×Ñ×#Ñ#×4Ñ4°XÐ?QÕRr–   c                óH   — |€
t        «       }t        || j                  |«      S rƒ   )rI  ÚevalrÉ  )r“   rn  r†   s      r”   rÙ  zGuardBuilder.getQ  s#   € ØÐÜ,Ó.ˆLÜ�D˜$Ÿ*™* lÓ3Ð3r–   c                ó8  — t        |t        «      r|}n|j                  }t        |«      }|| j                  vrat
        j                  j                  j                  |«      }|r6|dk(  rt        j                  d|«       | j                  j                  |«       |S )Nr´  zinvalid var name: %s)r«   r›  rn  Ústrip_function_callrÐ  r×   rØ   rÙ   Úis_valid_var_nameÚlogÚwarningr  )r“   rÁ   rn  r™  Úis_valids        r”   Úarg_refzGuardBuilder.arg_ref[  sz   € ä�eœSÔ!Ø‰Dà—:‘:ˆDÜ" 4Ó(ˆØ�t—}‘}Ñ$Ü—x‘x×'Ñ'×9Ñ9¸$Ó?ˆHÙØ˜q’=Ü—K‘KÐ 6¸Ô>Ø—‘×$Ñ$ TÔ*àˆr–   c                ó˜   — t        |j                  |«      }t        |||j                  |j                  ¬«      }|j                  | «       y )N)rU  rR  )r>   rª  r&   rU  rR  Úcreate)r“   rÁ   r	  rq  Úattr_sourceÚ	new_guards         r”   Ú_guard_on_attributez GuardBuilder._guard_on_attributek  sA   € Ü  ×!9Ñ!9¸9ÓEˆäØ˜¨¯©À×AQÑAQô
ˆ	ð 	×Ñ˜Õr–   c           	     ó�  — |j                   }t        |t        «      r|j                  }t        |t        «      sJ d|j
                  › �«       ‚|j                  }|j                  «       }|j                  }| j                  |«      }t        | j                  |«      |«      }d }|r
d|› d|›d�}n	d|› d|›d�}| j                  ||g| j                  |«      ¬«       | j                  |«      }	|r¼| j                  |j                  «       «      }
| j                  |«      }| j                  ||
«      }t        |t        j                  j                  «      r6t!        |«      t"        u r%| j%                  ||	||
||j                  «       |«      S |	j'                  ||j
                  |
|¬«       y |	j)                  |t+        ||«      «       y )Nzinvalid source úhasattr(rÇ   rg  znot hasattr()Úprovided_guarded_objectrÿ  )rª  r«   rS   r™  r>   rn  r  r{  rö   rÙ  Ú_set_guard_export_infor9  rã  r×   rA  rB  rk   rw   r  r  Úadd_no_hasattr_guardr]  )r“   rÁ   rÊ   Úbase_sourcer™  r   ÚrefÚvalr·  Úbase_managerr–  r¢  r—  s                r”   ÚHASATTRzGuardBuilder.HASATTRt  s¸  € Ø×)Ñ)ˆÜ�fœnÔ-Ø—[‘[ˆFÜ˜&¤*Ô-ÐM°ÀÇÁÀÐ/MÓMÐ-Ø—k‘kˆØ×ÑÓ!ˆØ�}‰}ˆà�l‰l˜4Ó ˆÜ�d—h‘h˜t“n dÓ+ˆØˆÙØ˜c˜U " T H¨AÐ.‰Dà! #  b¨¨°Ð2ˆDØ×#Ñ#Ø�D�6°4·8±8¸D³>ð 	$ô 	
ð ×9Ñ9¸+ÓFˆÙð !ŸH™H V§[¡[£]Ó3ˆMØ!%§¡¨$£ÐØ!%×!<Ñ!<¸VÀ]Ó!SÐô
 Ð-¬u¯x©x¯©Ô?Ü&Ð'9Ó:Ü.ñ/ð ×0Ñ0ØØ Ø&Ø!ØØ—K‘K“MØ&óð ð ×,Ñ,ØØ Ÿ:™:Ø"/Ø'9ð	 -õ ð ×-Ñ-¨dÔ4JÈ4ÐQVÓ4WÕXr–   c                ó²  — |€J ‚| j                  |«      }| j                  |j                  «      }t        |t        j
                  j                  «      sJ ‚| j                  |«      }|j                  › d�}|j                  || j                  |j                  «      t        j                  ¬«      }d|›d|› d�}|j                  d|t        ||«      «       y )Nr  r  znot ___dict_contains(rÇ   z
.__dict__)F)r{  rÙ  rn  r«   r×   rA  rB  rá  r  r÷  rË  r�  rž  Úadd_dict_contains_guardr]  )	r“   rÁ   r   r‡  rˆ  r‰  r  r  r·  s	            r”   ÚNOT_PRESENT_IN_GENERIC_DICTz(GuardBuilder.NOT_PRESENT_IN_GENERIC_DICTª  sÎ   € ØÐÐÐØ�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜#œuŸx™xŸ™Ô/Ð/Ð/à×-Ñ-¨eÓ4ˆà"ŸZ™Z˜L¨	Ð2ˆØ#/×#HÑ#HØ"Ø×FÑFÀsÇ|Á|ÓTÜ/×=Ñ=ð $Ió $
Ð ð ' t h¨b°°°ZÐ@ˆØ ×8Ñ8Ø�4Ô/°°eÓ<õ	
r–   c                ó  — | j                  |j                  «      }t        |t        j                  j
                  «      r|j                  r|j                  }nt        |«      }| j                  dk(  r$|j                  |j                  k7  rt        |«       | j                  |d|j                  › d�«      }d| j                  |«      › d|› d�}| j                  ||g«       | j                  |«      j!                  |t#        ||«      «       y )NÚsaveútype(rg  z___check_type_id(rÇ   )rÙ  rn  r«   r×   Ú_subclassesÚ
FakeTensorrq  r‡  rÜ  rï   rÀ   r‰  rÆ  r{  r„  rá  Úadd_type_match_guardr]  )r“   rÁ   rm  rË   r  r·  s         r”   Ú
TYPE_MATCHzGuardBuilder.TYPE_MATCH¾  sÛ   € à—‘˜Ÿ™Ó$ˆÜ�eœU×.Ñ.×9Ñ9Ô:¸u¿|º|Ø—‘‰Aä�U“ˆAà×"Ñ" fÒ,Ø�~‰~ §¡Ò+Ü& uÔ-à—‘˜Q %¨¯
©
 |°1Ð 5Ó6ˆØ" 4§<¡<°Ó#6Ð"7°r¸&¸ÀÐCˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×:Ñ:ØÔ*¨4°Ó7õ	
r–   c                ó   — | j                   dk(  r)t        j                  j                  j	                  d«      ‚| j                  |«      }| j                  |j                  «      }t        | j                  |j                  «      «      }d|› d|› �}| j                  ||g«       | j                  |«      j                  |t        ||«      «       y )Nr�  z(DICT_VERSION guard cannot be serialized.z___dict_version(ú) == )rÜ  r×   rÙ   r;   ÚPackageErrorr{  rÙ  rn  r   r„  rá  Úadd_dict_version_guardr]  )r“   rÁ   r‡  rˆ  Úversionr·  s         r”   ÚDICT_VERSIONzGuardBuilder.DICT_VERSIONÒ  sµ   € Ø×"Ñ" fÒ,Ü—-‘-×#Ñ#×0Ñ0Ø:óð ð �l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜tŸx™x¨¯
©
Ó3Ó4ˆØ! #  e¨G¨9Ð5ˆØ×#Ñ# E¨D¨6Ô2ð 	×Ñ˜uÓ%×<Ñ<ØÔ'¨¨eÓ4õ	
r–   c                óÈ   — | j                  |«      }|rdnd}|› d|›d|› d�}| j                  ||g«       | j                  |«      j                  | |t	        ||«      «       y )Núnot ró   z___dict_contains(rÇ   rg  )r{  r„  rá  rŒ  r]  )r“   rÁ   ry  ÚinvertÚdict_refÚ	maybe_notr·  s          r”   ÚDICT_CONTAINSzGuardBuilder.DICT_CONTAINSä  sn   € Ø—<‘< Ó&ˆá$‘F¨"ˆ	Ø�Ð-¨c¨W°B°x°jÀÐBˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×=Ñ=ØˆJ˜Ô3°D¸%Ó@õ	
r–   c                ób  — | j                  |«      }| j                  |j                  «      }t        |t        «      sJ ‚|› d|›�g}| j                  ||«       |r+| j                  |«      j                  t        ||«      «       y | j                  |«      j                  t        ||«      «       y )Nr˜  )
r{  rÙ  rn  ro   r�  r„  rá  Úadd_true_match_guardr]  Úadd_false_match_guard©r“   rÁ   r‡  rˆ  r·  s        r”   Ú
BOOL_MATCHzGuardBuilder.BOOL_MATCHï  s    € à�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ�cœ4Ô Ð Ð Ø�%�t˜C˜7Ð#Ð$ˆØ×#Ñ# E¨4Ô0áØ×"Ñ" 5Ó)×>Ñ>Ü& t¨UÓ3õð ×"Ñ" 5Ó)×?Ñ?Ü& t¨UÓ3õr–   c                óè   — | j                  |«      }| j                  |j                  «      }|�J ‚|› d�g}| j                  ||«       | j	                  |«      j                  t        ||«      «       y )Nz is None)r{  rÙ  rn  r„  rá  Úadd_none_match_guardr]  r¤  s        r”   Ú
NONE_MATCHzGuardBuilder.NONE_MATCH   sn   € à�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆØˆ{Ðˆ{Ø�%�xÐ Ð!ˆØ×#Ñ# E¨4Ô0à×Ñ˜uÓ%×:Ñ:Ü" 4¨Ó/õ	
r–   c                ó2  — | j                   dk(  r)t        j                  j                  j	                  d«      ‚t        |j                  t        «      r=| j                  t        |j                  j                  t        j                  «      «      S | j                  |«      }| j                  |j                  «      }| j                  ||j                  «      }d|› d|› d�}| j!                  ||g«       | j#                  |«      j%                  |t'        ||«      «       t        |j                  t(        «      r_t        |t        j*                  j,                  «      r:|j                  j.                  }| j1                  |«      }|�|| j2                  |<   y y y y )Nr�  z$ID_MATCH guard cannot be serialized.z___check_obj_id(rÇ   rg  )rÜ  r×   rÙ   r;   r—  r«   rª  r[   r”  r&   r™  rº  r{  rÙ  rn  rÆ  r„  rá  rê  r]  rR   rA  rB  r:  rÈ  rŽ   )r“   rÁ   r‡  rˆ  rì  r·  r:  Úweak_ids           r”   ÚID_MATCHzGuardBuilder.ID_MATCH  sW  € Ø×"Ñ" fÒ,Ü—-‘-×#Ñ#×0Ñ0Ð1WÓXÐXä�e×.Ñ.´
Ô;à—?‘?Ü�e×.Ñ.×3Ñ3´\×5LÑ5LÓMóð ð �l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆØ—‘˜S %§*¡*Ó-ˆØ! #  b¨¨°Ð2ˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×8Ñ8ØÔ*¨4°Ó7ô	
ô �e×.Ñ.´Ô<ô ˜#œuŸx™xŸ™Ô/Ø"×5Ñ5×@Ñ@�
Ø×.Ñ.¨sÓ3�ØÐ&Ø7>�D×(Ñ(¨Ò4ð 'ð 0ð	 =r–   c                ó  — | j                  |«      }| j                  |j                  «      }t        |t        j
                  «      sJ ‚|› d�}| j                  ||g«       | j                  |«      j                  t        ||«      «       y )Nú is not None)
r{  rÙ  rn  r«   r×   ÚTensorr„  rá  Úadd_not_none_guardr]  )r“   rÁ   rm  r‡  rˆ  r·  s         r”   ÚNOT_NONE_MATCHzGuardBuilder.NOT_NONE_MATCH,  sw   € Ø�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜#œuŸ|™|Ô,Ð,Ð,Ø��lÐ#ˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×8Ñ8Ü" 4¨Ó/õ	
r–   c                ó  — | j                  |«      }| j                  |j                  «      }t        |t        j
                  j                  «      sJ ‚|› d|›d�}| j                  |«      j                  |t        ||«      «       y )Nz.raw_repr() == z.raw_repr())
r{  rÙ  rn  r«   r×   rØ   ÚDispatchKeySetrá  Úadd_dispatch_key_set_guardr]  )r“   rÁ   r‡  rˆ  rˆ   s        r”   ÚDISPATCH_KEY_SET_MATCHz#GuardBuilder.DISPATCH_KEY_SET_MATCH7  st   € Ø�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜#œuŸx™x×6Ñ6Ô7Ð7Ð7Ø�u˜O¨C¨7°+Ð>ˆ
à×Ñ˜uÓ%×@Ñ@ØÔ'¨
°EÓ:õ	
r–   c                óF   — | j                  |dt        j                  «       y )NrÀ   )r€  rº  ÚEQUALS_MATCHra  s     r”   Ú
NAME_MATCHzGuardBuilder.NAME_MATCHA  s   € Ø× Ñ  ¨
´L×4MÑ4MÕNr–   c                ó  ‡‡— | j                   j                  j                  Šd‰› �g}| j                  ||g«       t        j
                  j                  Šˆˆfd„}| j                  j                  j                  |t        ||«      «       y )Nz,torch.autograd.forward_ad._current_level == c                ó"   •— ‰j                   ‰k(  S rƒ   )Ú_current_level)rü   Ú
dual_levelÚ
forward_ads    €€r”   Úfnz#GuardBuilder.DUAL_LEVEL.<locals>.fnM  s   ø€ Ø×,Ñ,°
Ñ:Ð:r–   )rÔ  rÖ  r»  r„  r×   Úautogradr¼  rÈ   r„   rk  r]  )r“   rÁ   r·  r½  r»  r¼  s       @@r”   Ú
DUAL_LEVELzGuardBuilder.DUAL_LEVELD  sz   ù€ ð ×*Ñ*×7Ñ7×BÑBˆ
Ø>¸z¸lÐKÐLˆØ×#Ñ# E¨D¨6Ô2ä—^‘^×.Ñ.ˆ
õ	;ð 	×Ñ×Ñ×0Ñ0ØÔ& t¨UÓ3õ	
r–   c                ót  ‡‡— | j                   j                  j                  }|D �cg c]  }|j                  «       ‘Œ c}Šd‰› d�g}| j	                  ||«       t
        j                  j                  j                  Šˆˆfd„}| j                  j                  j                  |t        ||«      «       y c c}w )Nz5torch._functorch.pyfunctorch.compare_functorch_state(rg  c                ó   •—  ‰‰«      S rƒ   r  )rü   Ú
compare_fnÚstatess    €€r”   r½  z.GuardBuilder.FUNCTORCH_STACK_MATCH.<locals>.fn_  s   ø€ Ù˜fÓ%Ð%r–   )rÔ  rÖ  Úfunctorch_layersÚ	get_stater„  r×   Ú
_functorchÚpyfunctorchÚcompare_functorch_staterÈ   r„   rk  r]  )r“   rÁ   ÚcisÚcir·  r½  rÂ  rÃ  s         @@r”   ÚFUNCTORCH_STACK_MATCHz"GuardBuilder.FUNCTORCH_STACK_MATCHT  sŸ   ù€ ð ×#Ñ#×0Ñ0×AÑAˆØ+.Ö/ R�"—,‘,•.Ò/ˆØGÈÀxÈqÐQÐRˆØ×#Ñ# E¨4Ô0ô ×%Ñ%×1Ñ1×IÑIˆ
õ	&ð 	×Ñ×Ñ×0Ñ0ØÔ& t¨UÓ3õ	
ùò 0s   §B5c                ó†  ‡‡‡‡— t         j                  j                  j                  j                  Št         j                  j                  j                  j
                  Šˆfd„Š ‰ ‰«       «      Šd‰› �g}| j                  ||«       ˆˆˆfd„}| j                  j                  j                  |t        ||«      «       y )Nc                óR   •—  ‰| «      sy | \  }}t        t        t        | «      «      S rƒ   )rJ  ÚmaprØ  )ÚhooksÚ	pack_hookÚunpack_hookÚare_inline_hookss      €r”   Úhooks_ids_fnz?GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS.<locals>.hooks_ids_fnl  s)   ø€ Ù# EÔ*Øà%*Ñ"ˆI�{ÜœœR ›Ó(Ð(r–   zCtorch._functorch.aot_autograd.utils.top_saved_tensors_hooks ids == c                ó$   •— ‰ ‰ ‰«       «      k(  S rƒ   r  )rü   Ú	get_hooksÚguard_hooks_idsrÓ  s    €€€r”   r½  z5GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS.<locals>.fnz  s   ø€ Ø"¡l±9³;Ó&?Ñ?Ð?r–   )r×   rÆ  Ú_aot_autogradrF  Útop_saved_tensors_hooksÚ"saved_tensors_hooks_are_inlineabler„  rÈ   r„   rk  r]  )r“   rÁ   r·  r½  rÒ  rÕ  rÖ  rÓ  s       @@@@r”   ÚAUTOGRAD_SAVED_TENSORS_HOOKSz)GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKSf  sª   û€ Ü×$Ñ$×2Ñ2×8Ñ8×PÑPˆ	ä×Ñ×*Ñ*×0Ñ0×SÑSð 	ô	)ñ '¡y£{Ó3ˆð RÐRaÐQbÐcð
ˆð 	×#Ñ# E¨4Ô0ö	@ð 	×Ñ×Ñ×0Ñ0ØÔ& t¨UÓ3õ	
r–   c                óŠ  ‡‡— | j                  |j                  «      Št        | j                  |j                  «      j                  «       d   «      Št	        ‰d«      rt        ‰«       ˆˆfd„}nˆfd„}dt        |«      › dt        j                  «       › �}| j                  |«      j                  |t        ||«      «       y )Nr8   Ú__metadata_guard__c                óJ   •— ‰j                  ‰| j                  «       d   «      S ©Nr8   )rÜ  r,  )rü   Úoriginal_metadatarm  s    €€r”   Úmetadata_checkerzEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checker‡  s)   ø€ Ø×/Ñ/Ø% q×';Ñ';Ó'=¸aÑ'@óð r–   c                ó0   •— | j                  «       d   ‰k(  S rÞ  r+  )rü   rß  s    €r”   rà  zEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checkerŽ  s   ø€ Ø×+Ñ+Ó-¨aÑ0Ð4EÑEÐEr–   Ú___check_metadata_Ú_c)rÙ  rn  r   r,  rö   rx   rØ  r#   Úcurrent_compile_idrá  rk  r]  )r“   rÁ   rà  r$  rß  rm  s       @@r”   ÚTENSOR_SUBCLASS_METADATA_MATCHz+GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH�  s¤   ù€ Ø—‘˜Ÿ™Ó$ˆÜ$ T§X¡X¨e¯j©jÓ%9×%LÑ%LÓ%NÈqÑ%QÓRÐÜ�5Ð.Ô/Ü% eÔ,öôFð +¬2Ð.>Ó+?Ð*@ÀÄ>×CdÑCdÓCfÐBgÐhˆØ×Ñ˜uÓ%×6Ñ6ØÔ4°[À%ÓHõ	
r–   c                ó¸  — | j                  |«      }| j                  |j                  «      }t        r¨t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f}nd}t        t         f}t#        t$        t&        t"        t(        t*        t,        t.        t0        j2                  h|£|£z  «      }t0        j4                  j7                  «       rddlm} ddlm}	m }
m!}m"} ||||
||	fz   }ddl#m$} ||fz   }dd l%m&c m'} tQ        ||«      s. |jR                  t'        |«      «      sJ dt'        |«      › �«       ‚tQ        |tT        «      r†tW        jX                  |«      rq| j[                  |«       g }|j]                  d|› d�«       | j_                  ||«       | ja                  |«      jc                  te        «       d	   tg        ||«      «       y tQ        |th        «      r†t        jX                  |«      rq| j[                  |«       g }|j]                  d
|› d�«       | j_                  ||«       | ja                  |«      jc                  te        «       d   tg        ||«      «       y |› d|›�g}tQ        ||«      rtk        |«      }tg        ||«      }|r|D �cg c]
  }|› d|› d�‘Œ }}| ja                  |«      jm                  ||«       | j_                  ||«       y c c}w )Nr  r   )Ú
DeviceMesh)Ú_StridedShardÚPartialÚ	ReplicateÚShard)Ú_IntWrapperzUnexpected type z__math_isnan(rg  r6  z__numpy_isnan(r7  r˜  z (HINT: )7r{  rÙ  rn  r  Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64r\  r�   rJ  rh   r‡  Ú	frozensetÚsliceÚrangerj   r×   ÚSizeÚdistributedÚis_availableÚtorch.distributed.device_meshrç  Ú(torch.distributed.tensor.placement_typesrè  ré  rê  rë  Útorch.export.dynamic_shapesrì  Útorch.utils._pytreerF  r3   ro   Úis_constant_classrC  rA  rB  r”  r  r„  rá  rk  rI  r]  Úcomplexr   rŸ  )r“   rÁ   Úrecompile_hintr‡  rˆ  Únp_typesÚok_mutable_typesÚok_typesrç  rè  ré  rê  rë  rì  Úpytreer·  r‰   rÄ   s                     r”   r¶  zGuardBuilder.EQUALS_MATCH–  s÷  € Ø�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÝä—‘Ü—‘Ü—‘Ü—‘Ü—‘Ü—	‘	Ü—	‘	Ü—	‘	Ü—
‘
Ü—
‘
Ü—
‘
ð/‰Hð ˆHä ¤#˜;ÐäÜ!äÜÜÜÜÜÜ—
‘
ð
ð ð
ð "ð
ñó
ˆô ×Ñ×)Ñ)Ô+Ý@÷ó ð  ØØØØØð#ñ ˆHõ 	<à˜{˜nÑ,ˆç,Ð,ä�c˜8Ô$Ð(@¨×(@Ñ(@ÄÀcÃÔ(Kð 	
Øœt C›y˜kÐ*ó	
ÐKô
 �#”uÔ¤$§*¡*¨S¤/Ø�O‰O˜EÔ"ØˆDØ�K‰K˜-¨ u¨AÐ.Ô/Ø×'Ñ'¨¨tÔ4à×"Ñ" 5Ó)×:Ñ:Ü!Ó# NÑ3Ü& t¨UÓ3ôð ô �#”wÔ¤B§H¡H¨S¤MØ�O‰O˜EÔ"ØˆDØ�K‰K˜.¨¨¨QÐ/Ô0Ø×'Ñ'¨¨tÔ4à×"Ñ" 5Ó)×:Ñ:Ü!Ó# OÑ4Ü& t¨UÓ3ôð ð �%�t˜C˜7Ð#Ð$ˆÜ�#Ð'Ô(ô ˜3“-ˆCä3°D¸%Ó@ÐÙà?Qö"Ø7;�4�&˜ Ð 0°Ò2ð"Ðð "ð 	×Ñ˜uÓ%×<Ñ<¸SÐBTÔUØ×#Ñ# E¨4Ô0Øùò"s   ÌMc                ó   — | j                  |j                  «      }t        |t        «      r| j	                  |«       y |€| j                  |«       y t        |t        j                  «      r| j                  |«       y | j                  |«       y rƒ   )
rÙ  rn  ro   r�  r¥  r¨  ÚtypesÚCodeTyper«  r¶  ©r“   rÁ   rˆ  s      r”   ÚCONSTANT_MATCHzGuardBuilder.CONSTANT_MATCH  sc   € Ø�h‰h�u—z‘zÓ"ˆÜ�#”tÔØ�O‰O˜EÕ"Øˆ[Ø�O‰O˜EÕ"Ü�CœŸ™Ô(Ø�M‰M˜%Õ à×Ñ˜eÕ$r–   c                ó®  — | j                   dk(  r)t        j                  j                  j	                  d«      ‚| j                  |«       | j                  |j                  «      }t        |d«      r>t        |j                  t        «      sJ ‚| j                  |dt        j                  «       y t        j                  dddt!        |«      › d�dg¬	«       y )
Nr�  z%NN_MODULE guard cannot be serialized.Útrainingz-Attempted to guard on uninitialized nn.Moduleró   zKAttempted to setup an NN_MODULE guard on uninitialized nn.Module subclass `z`.zIEnsure the `nn.Module` subclass instance has called `super().__init__()`.)Úgb_typeÚcontextÚexplanationÚhints)rÜ  r×   rÙ   r;   r—  r«  rÙ  rn  rö   ro   r  r�  r€  rº  r  Úunimplemented_v2r‡  r  s      r”   Ú	NN_MODULEzGuardBuilder.NN_MODULE  sº   € à×"Ñ" fÒ,Ü—-‘-×#Ñ#×0Ñ0Ø7óð ð 	�‰�eÔØ�h‰h�u—z‘zÓ"ˆÜ�3˜
Ô#Ü˜#Ÿ,™,¬Ô-Ð-Ð-Ø×$Ñ$ U¨J¼×8SÑ8SÕTä× Ñ ØGØð'Ü'+¨C£y k°ð5ð `ðör–   c                ó”   — | j                   dk(  r)t        j                  j                  j	                  d«      ‚| j                  |«      S )z0things like torch.add and user defined functionsr�  z*FUNCTION_MATCH guard cannot be serialized.)rÜ  r×   rÙ   r;   r—  r«  ra  s     r”   ÚFUNCTION_MATCHzGuardBuilder.FUNCTION_MATCH#  sC   € ð ×"Ñ" fÒ,Ü—-‘-×#Ñ#×0Ñ0Ø<óð ð �}‰}˜UÓ#Ð#r–   c                ó¢  — | j                   dk(  r)t        j                  j                  j	                  d«      ‚| j                  |j                  «      }t        |«      t        j                  k(  rOt        |d«      rC| j                  |dt        j                  «       | j                  |dt        j                  «       y| j                  |«       y)z!matches a closure by __code__ id.r�  z)CLOSURE_MATCH guard cannot be serialized.Ú__code__N)rÜ  r×   rÙ   r;   r—  rÙ  rn  r‡  r
  ÚFunctionTyperö   r€  rº  rŠ  r  r  s      r”   ÚCLOSURE_MATCHzGuardBuilder.CLOSURE_MATCH,  sŸ   € ð ×"Ñ" fÒ,Ü—-‘-×#Ñ#×0Ñ0Ø;óð ð �h‰h�u—z‘zÓ"ˆä�‹9œ×*Ñ*Ò*¬w°s¸JÔ/GØ×$Ñ$ U¨J¼×8LÑ8LÔMØ×$Ñ$ U¨J¼×8SÑ8SÕTà×Ñ Õ&r–   c                ó$   — | j                  |«      S rƒ   )r  ra  s     r”   ÚBUILTIN_MATCHzGuardBuilder.BUILTIN_MATCH;  s   € Ø×"Ñ" 5Ó)Ð)r–   c                ó>  — | j                  |«      }| j                  |j                  «      }t        |t        «      s| j                  |«       g }t        |«      dk(  r|j                  d|› �«       n |j                  d|› dt        |«      › �«       | j                  ||«       t        |t        «      r5| j                  |«      j                  t        |«      t        ||«      «       y | j                  |«      j                  t        |«      t        ||«      «       y )Nr   rœ  zlen(r–  )r{  rÙ  rn  r«   r-  r”  rW  r  r„  rá  Úadd_dict_length_check_guardr]  Úadd_length_check_guard©r“   rÁ   r‡  rm  r·  s        r”   ÚSEQUENCE_LENGTHzGuardBuilder.SEQUENCE_LENGTH>  sé   € ð �l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆä˜%¤Ô&à�O‰O˜EÔ"àˆÜˆu‹:˜Š?Ø�K‰K˜$˜s˜e˜Õ%à�K‰K˜$˜s˜e 5¬¨U«¨Ð5Ô6à×#Ñ# E¨4Ô0Ü�eœTÔ"Ø×"Ñ" 5Ó)×EÑEÜ�E“
Ô2°4¸Ó?õð ×"Ñ" 5Ó)×@Ñ@Ü�E“
Ô2°4¸Ó?õr–   c                óš  — | j                  |«      }| j                  |j                  «      }t        |«      }g }|j	                  d|› dt        |«      › �«       | j                  ||«       t        |«      }| j                  |d|j                  › d�«      }| j                  |«      j                  t        |«      |t        ||«      «       y )Nz___tuple_iterator_len(r–  r�  rg  )r{  rÙ  rn  r‡  r  rv   r„  rÆ  rá  Úadd_tuple_iterator_length_guardr]  )r“   rÁ   r‡  rm  rË   r·  r  s          r”   ÚTUPLE_ITERATOR_LENzGuardBuilder.TUPLE_ITERATOR_LENX  s´   € Ø�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆÜ�‹KˆàˆØ�‰Ð,¨S¨E°Ô7IÈ%Ó7PÐ6QÐRÔSØ×#Ñ# E¨4Ô0ä�‹KˆØ—‘˜Q %¨¯
©
 |°1Ð 5Ó6ˆà×Ñ˜uÓ%×EÑEÜ˜uÓ% vÔ/EÀdÈEÓ/Rõ	
r–   c           
     óœ  — | j                  |«      }| j                  |j                  «      }t        |«      }g }t	        |«      }|j                  d|› d|› �«       | j                  ||«       t        |«      }| j                  |d|j                  › d�«      }|\  }}	}
| j                  |«      j                  ||	|
|t        ||«      «       y )Nz___normalize_range_iter(r–  r�  rg  )r{  rÙ  rn  r‡  rr   r  r„  rÆ  rá  Úadd_range_iterator_match_guardr]  )r“   rÁ   r‡  rm  rË   r·  Únormalized_range_iterr  ÚstartÚstopÚsteps              r”   ÚRANGE_ITERATOR_MATCHz!GuardBuilder.RANGE_ITERATOR_MATCHh  sÅ   € Ø�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆÜ�‹KˆàˆÜ 4°UÓ ;ÐØ�‰Ð.¨s¨e°5Ð9NÐ8OÐPÔQØ×#Ñ# E¨4Ô0ä�‹KˆØ—‘˜Q %¨¯
©
 |°1Ð 5Ó6ˆà1Ñˆˆt�TØ×Ñ˜uÓ%×DÑDØ�4˜˜vÔ'=¸dÀEÓ'Jõ	
r–   c                óN  — | j                   dk(  r)t        j                  j                  j	                  d«      ‚| j                  |«      }| j                  |j                  «       «      }t        |j                  «      st        |«      ry ||f}|| j                  v ry | j                  j                  ||f«       | j                  j                  ||f«       |› d|› �g}| j                  ||«       t        | j                  |«      | j                  |«      t        ||«      «       y )Nr�  z/DUPLICATE_INPUT guard cannot be serialized yet.ú is )rÜ  r×   rÙ   r;   r—  r{  rn  r   rª  rÛ  r¢   r„  r   rá  r9  r]  )r“   rÁ   Úsource_bÚref_aÚref_bry  r·  s          r”   ÚDUPLICATE_INPUTzGuardBuilder.DUPLICATE_INPUT{  s  € Ø×"Ñ" fÒ,Ü—-‘-×#Ñ#×0Ñ0ØAóð ð —‘˜UÓ#ˆØ—‘˜XŸ]™]›_Ó-ˆä#Ø×$Ñ$ô
ä% hÔ/Øð �eˆnˆØ�$×5Ñ5Ñ5Øà×+Ñ+×/Ñ/°¸°Ô?Ø×+Ñ+×/Ñ/°¸°Ô?à�'˜˜e˜WÐ%Ð&ˆØ×#Ñ# E¨4Ô0ä%Ø×"Ñ" 5Ó)Ø×.Ñ.¨xÓ8Ü" 4¨Ó/õ	
r–   c                ó  — | j                   dk(  r)t        j                  j                  j	                  d«      ‚| j                  |«      › d�g}| j                  ||«       | j                  |«      j                  t        ||«      «       y )Nr�  z)WEAKREF_ALIVE guard cannot be serialized.r­  )
rÜ  r×   rÙ   r;   r—  r{  r„  rá  r¯  r]  ©r“   rÁ   r·  s      r”   ÚWEAKREF_ALIVEzGuardBuilder.WEAKREF_ALIVE™  s~   € Ø×"Ñ" fÒ,Ü—-‘-×#Ñ#×0Ñ0Ø;óð ð —<‘< Ó&Ð' |Ð4Ð5ˆà×#Ñ# E¨4Ô0Ø×Ñ˜uÓ%×8Ñ8Ü" 4¨Ó/õ	
r–   c           	     ó"  — | j                  |«      }| j                  |j                  «      }g }|j                  d|› dt	        |j                  «       «      › �«       | j                  ||«       | j                  |«      j                  ||«       y)z7Guard on the key order of types.MappingProxyType objectzlist(z.keys()) == N)	r{  rÙ  rn  r  r\  r  r„  rá  Úadd_mapping_keys_guardr!  s        r”   ÚMAPPING_KEYS_CHECKzGuardBuilder.MAPPING_KEYS_CHECK¥  sw   € à�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆàˆØ�‰�e˜C˜5 ¬T°%·*±*³,Ó-?Ð,@ÐAÔBØ×#Ñ# E¨4Ô0Ø×Ñ˜uÓ%×<Ñ<¸UÀDÕIr–   c           
     óè  — | j                  |«      }| j                  |j                  «      }|t        j                  j
                  j                  u r| j                  |«       y| j                  |«       g }|j                  d|› dt        t        |«      «      ›�«       | j                  ||«       | j                  |j                  «      r| j                  ||«       y| j!                  ||«       y)z6Insert guard to check that the keys of a dict are sameNr|  z)) == )r{  rÙ  rn  r×   rF  r3   ÚSUPPORTED_NODESrš  r"  r  r\  rg   r„  r  rª  rí  rç  r!  s        r”   ÚDICT_KEYS_MATCHzGuardBuilder.DICT_KEYS_MATCH¯  sÉ   € à�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆà”E—K‘K×'Ñ'×7Ñ7Ñ7à×Ñ˜eÔ$Øà×Ñ˜UÔ#àˆð
 	�‰�o c U¨&´Ô6GÈÓ6NÓ1OÐ0RÐSÔTØ×#Ñ# E¨4Ô0à×+Ñ+¨E×,DÑ,DÔEØ×-Ñ-¨e°UÕ;à×4Ñ4°U¸EÕBr–   c                óH   — t         j                  ry| j                  |«       y)z\Special guard to skip guards on empty hooks. This is controlled by skip_nnmodule_hook_guardsN)r9   Úskip_nnmodule_hook_guardsr"  ra  s     r”   ÚEMPTY_NN_MODULE_HOOKS_DICTz'GuardBuilder.EMPTY_NN_MODULE_HOOKS_DICTÈ  s   € ä×+Ò+àØ×Ñ˜UÕ#r–   c                 ó   — y rƒ   r  ra  s     r”   Ú	GRAD_MODEzGuardBuilder.GRAD_MODEÏ  ó   € Ør–   c                 ó   — y rƒ   r  ra  s     r”   ÚDETERMINISTIC_ALGORITHMSz%GuardBuilder.DETERMINISTIC_ALGORITHMSÒ  rA  r–   c                 ó   — y rƒ   r  ra  s     r”   ÚTORCH_FUNCTION_STATEz!GuardBuilder.TORCH_FUNCTION_STATEÕ  rA  r–   c                 ó   — y rƒ   r  ra  s     r”   ÚFSDP_TRAINING_STATEz GuardBuilder.FSDP_TRAINING_STATEØ  rA  r–   c                ó   — |j                   t        j                  u sJ ‚d| j                  j                  j
                  ›�g}| j                  ||«       | j                  |«      j                  t        ||«      «       y)z/Guard on CURRENT_DEVICE per torch.utils._devicezutils_device.CURRENT_DEVICE == N)
rÊ   r)   ÚGLOBALrÔ  rÖ  Úcurrent_devicer„  rá  Úadd_default_device_guardr]  r4  s      r”   ÚDEFAULT_DEVICEzGuardBuilder.DEFAULT_DEVICEÛ  su   € à�|‰|œ{×1Ñ1Ñ1Ð1Ð1ð .¨d×.CÑ.C×.PÑ.P×._Ñ._Ð-bÐcð
ˆð 	×#Ñ# E¨4Ô0à×Ñ˜uÓ%×>Ñ>Ü" 4¨Ó/õ	
r–   c                óš  ‡ ‡$‡%‡&‡'— |j                   dk(  sJ ‚‰ j                  j                  Š'‰ j                  dk(  rl‰ j                  j                  €J ‚‰ j                  j                  }|j
                  }|j                  }|j                  �|j                  }|j                  }�n\‰'j                  Š%‰%D �cg c]  }|j                  ‘Œ c}Š&ˆ'fd„}‰'j                  r³i }	g }
g }i }t        «       }‰'j                  D ]j  }|j                  ‰'j                  v r;t        j                   j"                  j%                  ||‰'j&                  |	|
|||«       ŒVt(        j+                  d«       Œl t-        |
|t/        |j1                  «       «      |d¬«      Š$nd Š$ˆ$ˆ%ˆ&ˆ'ˆ fd„}t2        j4                  r	  |d«      \  }}}d}nd	} |d
«      \  }}‰ j                  j                  j                   s‰'j&                  j9                  «        ‰ j                  dk(  rst;        «       j=                  d«      }|�t?        |t@        «      sJ ‚|€g n"t/        |jB                  jE                  «       «      }tG        |||||¬«      ‰ j                  _        |jH                  D ]  }‰ jK                  ||g«       Œ tM        jN                  «       x}r%|jP                  jS                  |jH                  «       g }g }|sÅsJ ‚|jH                  |jB                  }}|sy |jU                  «       D ]“  \  }}t?        |tV        «      rd	}Œ‰ j=                  |j                  «       i tX        ¥t[        «       ¥¬«      }t?        |t\        «      r|j_                  ||f«       Œnt?        |t`        «      r|j_                  ||f«       Œ’d	}Œ• |�sdd l1}ddl2m3} sJ ‚|jH                  |jB                  }}ti        ||z   «      }	 tk        |«      D ��cg c]   \  }}‰ jm                  to        ||«      «      ‘Œ" }}}djq                  d„ tk        |«      D «       «      }djq                  d„ tk        |«      D «       «      } |rd|› d�}| rd| › d�} ts        jt                  d|› d| › ddjq                  |«      › d�«      }!tv        jy                  d|!|jH                  «       |j{                  |!«      }"|j}                  |"j~                  |j€                  «      j‚                  }#|#sJ ‚	 t…        |t‡        |«      t‡        |«      |#|"|jH                  «       y |jH                  r9‰ j�                  |jH                  |jH                  i tX        ¥t[        «       ¥¬«       y y c c}w # t6        $ r d	} |d
«      \  }}Y �ŒÌw xY wc c}}w # t        jˆ                  jŠ                  jŒ                  $ r Y Œ—w xY w)Nró   Úloadc                óz   •— ‰j                   |    D �cg c]  }t        |t        j                  |«      ‘Œ c}S c c}w rƒ   )Útracked_fakes_id_to_sourcer    r   ÚSIZE)Út_idra  rÊ   rÖ  s      €r”   Úget_sourcesz+GuardBuilder.SHAPE_ENV.<locals>.get_sourcesû  s?   ø€ ð
 #/×"IÑ"IÈ$Ñ"Oöàô )¨´×1DÑ1DÀcÕJòð ùò s   “"8z+Untracked tensor used in export constraintsF)Úsource_pairsÚderived_equalitiesÚphantom_symbolsÚrelaxed_sourcesÚ	warn_onlyc           	     ó  •— ‰j                   j                  ‰D �cg c]  }|j                  ‘Œ c}‰D �cg c]  }|j                  ‘Œ c}‰‰‰j                  ‰j
                  j                  j                   | ¬«      S c c}w c c}w )N)Úinput_contextsÚequalities_inputsrÇ  Úignore_staticÚlangs)Ú	shape_envÚproduce_guards_verboseÚfakerÊ   rÇ  rÔ  rÖ  Úexport)r]  r  r[  rY  rZ  rÖ  r“   s     €€€€€r”   Ú_get_code_partsz/GuardBuilder.SHAPE_ENV.<locals>._get_code_parts#  st   ø€ Ø#×-Ñ-×DÑDØ%'Ö( �Q—V“VÒ(Ø')Ö* !�Q—X“XÒ*Ø#1Ø&7Ø#Ÿ™à'+×'<Ñ'<×'IÑ'I×'PÑ'PÐ#PØð Eó 	ð 	ùÚ(ùÚ*s
   ›A=´B
)ÚpythonÚverbose_pythonÚcppT)rc  rd  r�  Úcpp_code_parts)Úpython_code_partsr‰   rf  Úpython_fallbackÚshape_env_sources)r†   r   )ÚCppCodeCacherÇ   c              3  ó8   K  — | ]  \  }\  }}|› d |› d�–— Œ y­w)z = int_values[r~  Nr  ©Ú.0ÚirÁ  Úsymbols       r”   ú	<genexpr>z)GuardBuilder.SHAPE_ENV.<locals>.<genexpr>’  s-   è ø€ ò ,á&˜™;˜A˜vð �h˜n¨Q¨C¨qÔ1ñ,ùó   ‚c              3  ó8   K  — | ]  \  }\  }}|› d |› d�–— Œ y­w)z = float_values[r~  Nr  rl  s       r”   rp  z)GuardBuilder.SHAPE_ENV.<locals>.<genexpr>–  s.   è ø€ ò .á&˜™;˜A˜vð �hÐ.¨q¨c°Ô3ñ.ùrq  zint64_t ú;zdouble aä  
                #include <algorithm>
                #include <cstdint>
                #include <cmath>
                #include <c10/util/generic_math.h>

                #if defined(_MSC_VER)
                #  define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport)
                #else
                #  define EXTERN_DLL_EXPORT extern "C"
                #endif

                EXTERN_DLL_EXPORT int8_t guard(int64_t *int_values, double *float_values) {
                  z
                  z
                  return (z) && (z%);
                }
                zC++ shape guard function: %s %s)Hrn  rÔ  rÖ  rÜ  Úshape_code_partsrg  r‰   rf  rh  Útracked_fakesÚsymbolic_contextÚexport_constraintsr�   rR  rP  r×   ra  Údynamic_shapesÚ_process_equalitiesr^  rx  ry  r0   r\  ri  r9   Ú enable_cpp_symbolic_shape_guardsÚOverflowErrorÚfreezeÚlocalsrÙ  r«   r.   Úsource_to_symbolr  ÚShapeCodePartsÚexprsr„  r#   Útry_getÚshape_env_guardsr
  r¡   rB   r2   rI  rš  r  rC  ÚctypesÚtorch._inductor.codecacherj  r-  ré  r9  r   rd  ÚtextwrapÚdedentrf  rg  rN  ÚcastrÁ   Úc_void_prm  r   rW  Ú	_inductorr;   ÚInvalidCxxCompilerrr  )(r“   rÁ   rt  rg  r‰   rf  rh  r  rS  ÚnamesrT  rU  rV  rW  Ú
constraintrb  Úmaybe_cpp_code_partsÚmaybe_shape_env_sourcesr·  Úcompile_contextÚint_source_to_symbolÚfloat_source_to_symbolrˆ   r~  rÊ   ro  r–  rƒ  rj  rn  Úguard_managersÚint_symbols_strÚfloat_symbols_strÚfunc_strÚclibÚcguardr[  rY  rZ  rÖ  s(   `                                   @@@@r”   Ú	SHAPE_ENVzGuardBuilder.SHAPE_ENVè  s#  ü€ Ø�z‰z˜RÒÐÐØ×,Ñ,×9Ñ9ˆØ×"Ñ" fÒ,Ø×(Ñ(×9Ñ9ÐEÐEÐEØ#×4Ñ4×EÑEÐØ 0× BÑ BÐØ!1×!DÑ!DÐØ×.Ñ.Ð:Ø!1×!@Ñ!@�Ø.×>Ñ>ŠOð ×+Ñ+ˆBØ:<Ö=°Q˜a×0Ó0Ò=ˆNôð ×.Ò.Ø46�Ø<>�ð ð #ð 68�Ü/2«u�Ø".×"AÑ"Aò S�JØ!—‘¨,×*QÑ*QÑQÜŸ™×3Ñ3×GÑGØ&Ø'Ø(×2Ñ2Ø!Ø(Ø.Ø+Ø+õ	ô Ÿ™Ð$QÕRðSô %7Ø!-Ø'9Ü$(¨×)?Ñ)?Ó)AÓ$BØ$3Ø#ô%Ñ!ð %)Ð!÷
ð 
ô ×6Ò6ðñ (Ð(KÓLñ JÐ%Ð'9¸>ð ',‘Oð #'�Ù8GØ0ó9Ñ5Ð!Ð#5ð ×(Ñ(×5Ñ5×<Ò<Ø×&Ñ&×-Ñ-Ô/à×"Ñ" fÒ,ô $*£8§<¡<Ð0@Ó#AÐ Ø'Ð/´:Ø$Ô&;ô4ð ð ð
 (Ð/ñ äÐ.×?Ñ?×DÑDÓFÓGð $ô
 6DØ"3Ø#5Ø3Ø /Ø"9ô6ˆD×!Ñ!Ô2ð &×+Ñ+ò 	7ˆDØ×'Ñ'¨°¨vÕ6ð	7ô -×4Ñ4Ó6Ð6ˆ?Ð6Ø×,Ñ,×3Ñ3Ð4F×4LÑ4LÔMà!ÐØ!#ÐáÙ!Ð!�>à×$Ñ$Ø×/Ñ/ð )ˆJñ
 Øà"2×"8Ñ"8Ó":ò /‘�˜Ü˜f¤nÔ5Ø&*‘Oà$(§H¡HØŸ™›Ø%L¬Ð%LÔ8IÓ8KÐ%Lð %-ó %�Mô " -´Ô5Ø,×3Ñ3°V¸VÐ4DÕEÜ# M´5Ô9Ø.×5Ñ5°v¸vÐ6FÕGð +/™ð/ò" Ûå>á!Ð!�>à×$Ñ$Ø×/Ñ/ð )ˆJô
  $Ð$8Ð;QÑ$QÓRÐð<ô &/Ð/?Ó%@÷"á!˜˜6ð ×6Ñ6´}ÀVÈQÓ7OÕPð"�ñ "ð
 #'§)¡)ñ ,ä*3Ð4HÓ*Iô,ó #�ð %)§I¡Iñ .ä*3Ð4JÓ*Kô.ó %Ð!ñ
 #Ø(0°Ð0AÀÐ&C�OÙ$Ø*1Ð2CÐ1DÀAÐ(FÐ%ä#Ÿ?™?ðð #Ð#ð $Ø$Ð%ð &Ø#Ÿ=™=¨Ó4Ð5ð 6ðó�ô( × Ñ Ø5ØØ&×,Ñ,ôð
 $×(Ñ(¨Ó2�ØŸ™ T§Z¡Z°·±ÓA×GÑG�Ù�‘vô
 -Ø"ÜÐ,Ó-ÜÐ.Ó/ØØØ&×,Ñ,ôð ð
 ×"Ò"Ø×5Ñ5Ø!×'Ñ'Ø"×(Ñ(ØD¤ÐDÔ0AÓ0CÐDð 6õ ð #ùòi >øôz %ò à&*�OÙ<KØ4ó=Ñ9Ð%Ó'9ðüón"øô^ —?‘?×&Ñ&×9Ñ9ò áðús=   Â8U8Æ.U= Ï(V  Ï6%VÐC)V  Õ=VÖVÖV  Ö 'W
×	W
c                ó|	  — t         j                  r|j                  «       ry t        |«      r| j	                  |«       y t        |t        «      r |«       }|�|n| j                  |j                  «      }t        |«      }t        j                  j                  |«      }t        |t        j                  j                  «      r0|j                  �|j                  }|j                   �|j                   }t        |t        j"                  «      sJ ‚t         j$                  r|t        |t        j&                  j(                  «      rXt+        «       }|j-                  d|j/                  «       «       |j-                  d|j0                  «       |j-                  dd«       | j3                  |«      }g }| j4                  j6                  j8                  rœ| j;                  |«       g d¢}|D ]€  }	| j                  |dz   |	z   «      }
t=        |
t        j>                  t        j@                  f«      r$|jC                  d|› d|	› dtE        |
«      ›�«       Œh|jC                  |› d|	› d	|
› �«       Œ‚ �nd| jG                  |«      }t         jH                  r$t=        |t        j&                  j(                  «      sPt        |jJ                  tL        «      s6| jN                  jC                  |«       | jP                  jC                  |«       | j4                  j6                  }|jR                  |jJ                     }tU        |d
   «      }tU        |d   «      }tW        tY        ||||||«      |«      }|j[                  |||||||«       t        |t        j&                  j(                  «      s/| j\                  j^                  ja                  |j                  «       |jb                  €J ‚te        |d|jJ                  ¬«      \  }}|s£tg        |d«      rU|jh                  }d|› d|› d|› d�}|jC                  |«       | jG                  |«      jk                  |tW        ||«      «       nBd|› d�}|jC                  |«       | jG                  |«      jm                  dtW        ||«      «       to        |«      dkD  r| jq                  ||«       y y )NÚparam_numelÚparam_bytesÚparam_countr8   )rj  r;  rl  zndimension()rÃ  zstr(r–  r˜  ÚsizeÚstrideT)Ú	is_tensorÚtensor_sourceÚ_dynamo_dynamic_indicesz((z"._dynamo_dynamic_indices.issubset(z)) if hasattr(z', '_dynamo_dynamic_indices') else True)r‚  z%, '_dynamo_dynamic_indices') == Falser   )9r9   Ú_unsafe_skip_fsdp_module_guardsÚis_fsdp_moduler­  r«  r«   r7   rÙ  rn  r‡  r×   rØ   Ú_dispatch_keysr‘  r’  rq  rr  r®  Úlog_compilation_metricsrA  Ú	Parameterr"   Ú	incrementÚnumelÚnbytesr{  rÔ  rÖ  ra  r”  ro   r;  rj  r  r›  rá  Ú,skip_no_tensor_aliasing_guards_on_parametersrª  rT   rÒ  rÓ  Úinput_source_to_sizes_stridesre  r]  rv  Úadd_tensor_match_guardrÈ   r’   r¢   rÊ   rt   rö   r¡  Úadd_dynamic_indices_guardr…  rW  r„  )r“   rÁ   rm  rq  rr  Úmetrics_contextÚtensor_namer·  ÚtermsÚtermÚ
real_valuerÈ   rÖ  Úmetadatar�  rž  r‰   ÚstaticÚ_reasonÚdynamic_indicesr  s                        r”   ÚTENSOR_MATCHzGuardBuilder.TENSOR_MATCHÔ  s(  € Ü×1Ò1°e×6JÑ6JÔ6LØô " %Ô(Ø�M‰M˜%Õ ä˜%¤Ô/Ù›�à"Ð.‘E°D·H±H¸U¿Z¹ZÓ4HˆEä˜%“[ˆFÜ!ŸH™H×3Ñ3°EÓ:ˆMÜ˜%¤×!2Ñ!2×!=Ñ!=Ô>Ø—<‘<Ð+Ø"Ÿ\™\�FØ×&Ñ&Ð2Ø$)×$7Ñ$7�Mä˜e¤U§\¡\Ô2Ð2Ð2ä×-Ò-´*¸UÄEÇHÁH×DVÑDVÔ2WÜ"5Ó"7�Ø×)Ñ)¨-¸¿¹»ÔGØ×)Ñ)¨-¸¿¹ÔFØ×)Ñ)¨-¸Ô;àŸ,™, uÓ-ˆKð, !ˆDØ×$Ñ$×1Ñ1×8Ò8Ø—‘ Ô&ò�ð "ò M�DØ!%§¡¨+¸Ñ*;¸dÑ*BÓ!C�JÜ˜j¬5¯<©<¼¿¹Ð*EÔFàŸ™ d¨;¨-°q¸¸¸eÄCÈ
ÃOÐCVÐ$WÕXàŸ™ { m°1°T°F¸$¸z¸lÐ$KÕLòMð !%× 6Ñ 6°uÓ =�ô ×GÒGÜ˜u¤e§h¡h×&8Ñ&8Ô9Ü$ U×%=Ñ%=Ô?PÔQð ×1Ñ1×8Ñ8¸ÔEØ×:Ñ:×AÑAÀ-ÔPà#×4Ñ4×AÑA�Ø'×EÑEØ×,Ñ,ñ�ô 2°(¸6Ñ2BÓC�Ü3°H¸XÑ4FÓG�ä%;Ü.Ø˜{¨D°&¸&À-óð ó	&Ð"ð ×4Ñ4ØØØØØ&ØØ!ôô " %¬¯©×);Ñ);Ô<Ø×&Ñ&×9Ñ9×=Ñ=¸e¿j¹jÔIð< —<‘<Ð+Ð+Ð+Ü<Ø °U×5MÑ5Mô‰OˆF�Gñ Ü˜5Ð";Ô<Ø&+×&CÑ&C�OØ"$ [ MÐ1SÐTcÐSdÐdrÐs~Ðrð  @gð  !h�IØ—K‘K 	Ô*Ø×*Ñ*¨5Ó1×KÑKØ'Ô)?À	È5Ó)Qõð # ; -Ð/TÐUð ð —K‘K 	Ô*Ø×*Ñ*¨5Ó1×FÑFØ1Ü.¨y¸%Ó@ôô �4‹y˜1Š}Ø×+Ñ+¨E°4Õ8ð r–   c                ó  — t        «       }|€J ‚|j                  }~|€J ‚|j                  j                  }~|| j                  j
                  v s
J d|› �«       ‚|€"|j                  }|sd n| j                  |«      }n|}|�t        j                  t        |«      «      nd }	d }
t        |j                  dd«      dk7  }|r5t        |t        j                  t        f«      st        j                  |«      }
|j!                  ||	||
«       y )NzH_produce_guard_code must be called from inside GuardedCode. Called from Ú__weakrefoffset__r   )r   Úf_backrÅ  Úco_namer¿   rË  rn  rÙ  Úweakrefr‡  r‡  rD  r«   ÚenumÚEnumrJ  Úset_export_info)r“   rÁ   r±  rƒ  Ú	cur_frameÚcallerÚ	func_namern  Úguarded_objectÚguarded_object_typeÚobj_refÚsupports_weakrefs               r”   r„  z#GuardBuilder._set_guard_export_info‚	  s  € ô !“Nˆ	ØÐ$Ð$Ð$Ø×!Ñ!ˆØØÐ!Ð!Ð!Ø—M‘M×)Ñ)ˆ	Øà˜DŸN™N×3Ñ3Ñ3ð 	
ØVÐW`ÐVaÐbó	
Ð3ð
 #Ð*Ø—:‘:ˆDÙ)-™T°4·8±8¸D³>‰Nà4ˆNð 2@Ð1KŒG�K‰Kœ˜^Ó,Ô-ÐQUð 	ð ˆô �N×,Ñ,Ð.AÀ1ÓEÈÑJð 	ñ ¤J¨~ÄÇ	Á	Ì5Ð?QÔ$RÜ—k‘k .Ó1ˆGà×ÑØØØØõ		
r–   rƒ   )rÅ  útypes.CodeTyperÆ  zCallable[[Any, str], str]rÇ  zCallable[[Source], str]rÈ  z)Callable[[object], ReferenceType[object]]rÝ  údict[str, object]rŠ   rÈ  rÈ   r�   rÔ  ÚCheckFunctionManagerrÜ  r�  )rÁ   r&   )NT)rn  r›  r†   zOptional[dict[str, Any]]Úreturnr   )rÁ   zUnion[str, Guard]rÊ  r›  )rÁ   r&   r	  r›  )rÁ   r&   rÊ  ÚNone)rÁ   r&   ry  r›  r�  r�  )rÁ   r&   r  r�  )8rÀ   rî   rï   r•   rç  rí  Ústaticmethodr÷  r  r  rã  r  r"  r9  rá  rr  rÙ  r{  r€  rŠ  r�  r”  rš  r   r¥  r¨  r«  r°  r´  r·  r¿  rË  rÚ  rå  r¶  r  r  r  r  r  r"  r%  r,  r2  r5  r8  r;  r>  r@  rC  rE  rG  rL  r˜  r·  r„  r  r–   r”   rº  rº  }  s�  „ ð -1ð?5àð?5ð *ð?5ð ,ð	?5ð
 Cð?5ð 'ð?5ð (ð?5ð +ð?5ð /ð?5ð *ó?5òBò8$ðL ñó ðò"Sòj9ò	"ò?ò
òdóLLð ØóSôF4óó ó4Yôl
ó(
ó(
ó$	
óó"

ó?ô@	
ó
óOó
ó 
ó$
ó6
ô*jóX	%óó,$ó'ó*òò4
ò 
ò&
ò<

òJòCò2$óóóóó
ójôXk9ô\)
r–   rº  c                  óþ   — e Zd ZdZej
                  ej                  ej                  fZe	j                   G d„ d«      «       Z G d„ dej                  «      Z G d„ dej                  «      Zdd„Zddd	„Zdd
„Zdd„Zy)ÚPyExprCSEPassr8   c                  ó"   — e Zd ZU ded<   ded<   y)úPyExprCSEPass.Configzdict[str, int]Ú
expr_countzdict[str, str]Úexpr_to_nameNr²  r  r–   r”   ÚConfigrÐ  Ç	  s   … à"Ó"Ø$Ô$r–   rÓ  c                  ó(   ‡ — e Zd Zdd„Zdˆ fd„Zˆ xZS )úPyExprCSEPass.ExprCounterc                ó   — || _         y rƒ   )Ú_config)r“   r9   s     r”   r•   z"PyExprCSEPass.ExprCounter.__init__Í	  s	   € Ø!ˆD�Lr–   c                ó¬   •— t        |t        j                  «      r*| j                  j                  t        |«      xx   dz  cc<   t        ‰| �  |«       y rÞ  )r«   rÎ  ÚALLOWED_NODE_TYPESr×  rÑ  rO  rê   r¨   )r“   r£   r¿   s     €r”   r¨   zPyExprCSEPass.ExprCounter.visitÐ	  s>   ø€ Ü˜$¤× @Ñ @ÔAØ—‘×'Ñ'¬°TÓ(:Ó;¸qÑ@Ó;Ü‰G‰M˜$Õr–   )r9   rÐ  rÊ  rË  ©r£   úast.ASTrÊ  r   ©rÀ   rî   rï   r•   r¨   rð   rñ   s   @r”   ÚExprCounterrÕ  Ì	  s   ø„ ó	"÷	 ñ 	 r–   rÝ  c                  ó8   ‡ — e Zd Z	 	 	 	 	 	 dˆ fd„Zdˆ fd„Zˆ xZS )úPyExprCSEPass.Replacerc                óL   •— t         ‰| �  «        || _        || _        g | _        y rƒ   )rê   r•   r×  Ú	_gen_nameÚpreface)r“   r9   Úgen_namer¿   s      €r”   r•   zPyExprCSEPass.Replacer.__init__Ö	  s%   ø€ ô
 ‰GÑÔØ!ˆDŒLØ%ˆDŒNØ&(ˆD�Lr–   c                ó:  •— t        |t        j                  «      ròt        |«      }| j                  j
                  |   t        j                  kD  r½|| j                  j                  vrdt        ‰| �%  |«      }t        |«      }| j                  «       }| j                  j                  |› d|› �«       || j                  j                  |<   n| j                  j                  |   }t        j                  |t        j                  «       «      S t        ‰| �%  |«      S )Nz = )r«   rÎ  rÙ  rO  r×  rÑ  ÚUSE_THRESHOLDrÒ  rê   r¨   rá  râ  r  rL  ÚNameÚLoad)r“   r£   ÚexprÚnode_Úexpr_Úvar_namer¿   s         €r”   r¨   zPyExprCSEPass.Replacer.visità	  sß   ø€ Ü˜$¤× @Ñ @ÔAÜ# DÓ)�ð —<‘<×*Ñ*¨4Ñ0´=×3NÑ3NÒNØ 4§<¡<×#<Ñ#<Ñ<ô !&¡¡¨dÓ 3˜Ü ,¨UÓ 3˜Ø#'§>¡>Ó#3˜ØŸ™×+Ñ+¨x¨j¸¸E¸7Ð,CÔDØ:B˜Ÿ™×1Ñ1°$Ò7à#'§<¡<×#<Ñ#<¸TÑ#B˜ÜŸ8™8 H¬c¯h©h«jÓ9Ð9ä‘7‘= Ó&Ð&r–   )r9   rÐ  rã  zCallable[[], str]rÊ  rË  rÚ  rÜ  rñ   s   @r”   ÚReplacerrß  Õ	  s.   ø„ ð	)à(ð	)ð (ð	)ð õ		)÷	'ñ 	'r–   rì  c                ój   — d| _         | j                  t        j                  d„ «      i ¬«      | _        y )Nr   c                  ó   — yrœ   r  r  r–   r”   r0  z(PyExprCSEPass.__init__.<locals>.<lambda>ý	  s   � r–   )rÑ  rÒ  )Ú_counterrÓ  r>  Údefaultdictr×  r˜   s    r”   r•   zPyExprCSEPass.__init__ú	  s.   € ØˆŒØ—{‘{Ü"×.Ñ.©yÓ9Èð #ó 
ˆ�r–   c                óP   — |› | j                   › �}| xj                   dz  c_         |S rÞ  )rï  )r“   rè   rn  s      r”   Ú_new_varzPyExprCSEPass._new_var 
  s'   € Ø�˜$Ÿ-™-˜Ð)ˆØ�Š˜Ñ�Øˆr–   c                óø   — | j                  | j                  «      }|D ]'  }	 |j                  t        j                  |«      «       Œ) y # t
        $ r'}t        j                  d|j                  |«       ‚ d }~ww xY w)Nz#Failed to visit expr at line %s.
%s)	rÝ  r×  r¨   rL  ÚparseÚSyntaxErrorrx  Ú	exceptionÚlineno)r“   r€  ÚcounterÚeÚexs        r”   ÚcountzPyExprCSEPass.count
  si   € Ø×"Ñ" 4§<¡<Ó0ˆØò 	ˆAðØ—‘œcŸi™i¨›lÕ+ñ	øô ò Ü—‘ÐDÀbÇiÁiÐQRÔSØûðús   ¢$A	Á		A9Á"A4Á4A9c                óÄ   — | j                  | j                  | j                  «      }|j                  t	        j
                  |«      «      }|j                  t        |«      fS rƒ   )rì  r×  rò  r¨   rL  rô  râ  rO  )r“   rè  ÚreplacerÚnew_nodes       r”   rN  zPyExprCSEPass.replace
  sF   € Ø—=‘= §¡¨t¯}©}Ó=ˆØ—>‘>¤#§)¡)¨D£/Ó2ˆØ×Ñ¤¨hÓ!7Ð7Ð7r–   N)rÊ  rË  )Ú_var)rè   r›  rÊ  r›  )r€  r°  rÊ  rË  ©rè  r›  rÊ  ztuple[list[str], str])rÀ   rî   rï   rå  rL  Ú	AttributeÚCallÚ	SubscriptrÙ  ÚdataclassesÚ	dataclassrÓ  ÚNodeVisitorrÝ  ÚNodeTransformerrì  r•   rò  rû  rN  r  r–   r”   rÎ  rÎ  ¿	  sx   „ ð €Mð Ÿ-™-¨¯©°3·=±=ÐAÐà×Ñ÷%ð %ó ð%ô �c—o‘oô  ô#'�3×&Ñ&ô #'óJ
ôó
ô8r–   rÎ  c                ó–   — t        | j                  t        «      xs. t        j                  xr | j
                  t        j                  u S rƒ   )r«   rª  rE   r9   Ú guard_nn_modules_using_dict_tagsÚ	create_fnrº  r  )rÁ   s    r”   Úmust_add_nn_module_guardsr  
  s@   € ô
 	�5×+Ñ+¬^Ó<ò 	
ô ×3Ñ3ò :Ø—‘¤<×#9Ñ#9Ð9ðr–   c                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚDeletedGuardManagerWrapperc                ó0   •— t         ‰| �  «        || _        y rƒ   )rê   r•   Úinvalidation_reason)r“   Úreasonr¿   s     €r”   r•   z#DeletedGuardManagerWrapper.__init__#
  s   ø€ Ü‰ÑÔØ#)ˆÕ r–   c                ó   — d | _         y rƒ   )r…   r˜   s    r”   r²   z6DeletedGuardManagerWrapper.populate_diff_guard_manager'
  s
   € Ø#ˆÕr–   )rÀ   rî   rï   r•   r²   rð   rñ   s   @r”   r  r  "
  s   ø„ ô*ö$r–   r  c                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   y
)r  r/   rg  r‰   zOptional[_CppShapeGuardsHelper]rf  r�  rh  zlist[Source]ri  Nr²  r  r–   r”   r  r  +
  s    … à)Ó)Ø*Ó*Ø3Ó3ØÓØ#Ô#r–   r  c                  ó"   — e Zd ZU ded<   ded<   y)ÚGuardsStater{   rÖ  úOptional[ShapeCodeParts]rt  Nr²  r  r–   r”   r  r  4
  s   … à(Ó(Ø.Ô.r–   r  c                  óš   ‡ — e Zd Zˆ fd„Zed„ «       Zed„ «       Zed„ «       Zed
d„«       Zedd„«       Z	edd„«       Z
ed„ «       Zd	„ Zˆ xZS )ÚGuardsStatePicklerc                óÄ   •— t        ‰| �  |i |¤Ž t        j                  j	                  «       | _        t        j                  j                  j                  «       | _        y rƒ   )	rê   r•   r×   r‘  ÚFakeTensorModeÚ	fake_modeÚfake_tensorÚFakeTensorConverterÚtensor_converter)r“   r‡   Úkwargsr¿   s      €r”   r•   zGuardsStatePickler.__init__;
  sH   ø€ Ü‰Ñ˜$Ð) &Ò)Ü×*Ñ*×9Ñ9Ó;ˆŒÜ %× 1Ñ 1× =Ñ =× QÑ QÓ SˆÕr–   c                ód   — t         j                  j                  «       }|j                  |«       |S rƒ   )r×   rA  rB  Ú__setstate__)ÚclsÚstateÚmods      r”   Ú_unpickle_modulez#GuardsStatePickler._unpickle_module@
  s%   € ä�h‰h�o‰oÓˆØ×Ñ˜ÔØˆ
r–   c           	     ó  — t         j                  j                  «       }t         j                  j                  j	                  «       }|j                  ||||t         j                  j                  j                  |«      «      S rƒ   )	r×   r‘  r  r  r  Úfrom_meta_and_devicerØ   r²  Úfrom_raw_repr)r!  Úmeta_tensorr;  rq  Údispatch_keys_rawr  r  s          r”   Ú_unpickle_tensorz#GuardsStatePickler._unpickle_tensorF
  si   € ä×%Ñ%×4Ñ4Ó6ˆ	Ü ×,Ñ,×8Ñ8×LÑLÓNÐØ×4Ñ4ØØØØÜ�H‰H×#Ñ#×1Ñ1Ð2CÓDó
ð 	
r–   c                ó  — i }|D ]  \  }}	}
 |	|
Ž ||<   Œ |j                   |j                  «       }}t        |«      j                  ||||«      }||_        t
        j                  j                  j                  |«      |_	        |S rƒ   )
Úshaperž  r‡  Ú__tensor_unflatten__rq  r×   rØ   r²  r'  rr  )r!  r(  r;  rq  r)  ÚctxÚ
inner_dataÚinner_tensorsr   Úunpickle_funcÚunpickle_func_argsÚ
outer_sizeÚouter_strider]  s                 r”   Ú$_unpickle_traceable_wrapper_subclassz7GuardsStatePickler._unpickle_traceable_wrapper_subclassR
  s–   € ð
 ˆØ7Aò 	EÑ3ˆD�-Ð!3Ù"/Ð1CÐ"DˆM˜$Òð	Eð $/×#4Ñ#4°k×6HÑ6HÓ6J�Lˆ
Ü�;Ó×4Ñ4Ø˜3 
¨Ló
ˆð ˆŒ
Ü!ŸH™H×3Ñ3×AÑAÐBSÓTˆÔØˆ
r–   c                ó,   — t        j                  |«      S rƒ   )rD  rE  )r!  Úaliass     r”   Ú_unpickle_python_modulez*GuardsStatePickler._unpickle_python_modulec
  s   € ä×&Ñ& uÓ-Ð-r–   c                óT   — t         j                  j                  j                  |«      S rƒ   )r×   rØ   r²  r'  )r!  Úraw_reprs     r”   Ú_unpickle_dispatch_key_setz-GuardsStatePickler._unpickle_dispatch_key_setg
  s   € ä�x‰x×&Ñ&×4Ñ4°XÓ>Ð>r–   c                óh   — t         j                  j                  j                  j	                  |«      S rƒ   )r×   rØ   rÆ  ÚCInterpreterÚdeserialize)r!  Újsons     r”   Ú_unpickle_functorch_interpreterz2GuardsStatePickler._unpickle_functorch_interpreterk
  s#   € ä�x‰x×"Ñ"×/Ñ/×;Ñ;¸DÓAÐAr–   c                ó,   — t        j                  |«      S rƒ   )r
  ÚMappingProxyType)r!  Úds     r”   Ú_unpickle_mapping_proxyz*GuardsStatePickler._unpickle_mapping_proxyo
  s   € ä×%Ñ% aÓ(Ð(r–   c                óŒ  — dd l }t        |t        j                  «      �rV|j                  j
                  dk7  �r<ddlm}  ||«      rÀg }|j                  «       \  }}|D ]6  }t        ||«      }| j                  |«      \  }	}
|j                  ||	|
f«       Œ8 t        | «      j                  t        j                  |d¬«      |j                  t        |«      t        j                  j                  |«      j!                  «       ||ffS t        | «      j"                  t        j                  |d¬«      |j                  t        |«      t        j                  j                  |«      j!                  «       ffS t        |t        j$                  j&                  «      r“t        |«      j(                  t        |«      j*                  k(  rt,        S |j.                  j0                  t        j$                  j&                  j0                  k(  �rÏt        | «      j2                  |j1                  «       ffS t5        j6                  |«      r"t        | «      j8                  |j*                  ffS t        |t        j                  j:                  «      r&t        | «      j<                  |j!                  «       ffS t        |t        j                  j>                  j@                  «      r&t        | «      jB                  |jE                  «       ffS t5        jF                  |«      rItI        ||jJ                  «      r3tM        |d«      r'tM        |d«      sJ ‚|jN                  |jP                  ffS t        |t        jR                  «      rtU        d|› d|jV                  › d	�«      ‚t        |tX        jZ                  «      r&t        | «      j\                  |j_                  «       ffS t        |«      j(                  t        |«      j*                  k7  r?t        j`                  jb                  je                  d
t        |«      › d|› d�dz   dz   «      ‚t,        S )Nr   Úmeta)Úis_traceable_wrapper_subclass)r;  Ú_torch_handler_nameÚ_torch_unpicklerzCannot serialize SymInt z (node: rg  r�  r‚  rƒ  r„  r…  )3Úsympyr«   r×   r®  r;  r‡  Útorch.utils._python_dispatchrG  r,  rD  Úreducer_overrider  r5  Ú
empty_likerØ   r¤  r:  r*  rA  rB  rï   rÀ   ÚNotImplementedr¿   Ú__getstate__r$  r  Úismoduler8  r²  r;  rÆ  r=  r@  Ú	serializeÚisclassÚ
issubclassÚFunctionrö   rI  rH  r_  rC  r£   r
  rB  rD  rÌ  rÙ   r;   r—  )r“   rˆ  rJ  rG  r/  Úattrsr.  r   ÚinnerÚfuncÚ
args_tuples              r”   rL  z#GuardsStatePickler.reducer_overrides
  sc  € Ûä�cœ5Ÿ<™<Õ(¨S¯Z©Z¯_©_ÀÓ-FÝRá,¨SÔ1ð  �
Ø ×3Ñ3Ó5‘
��sà!ò @�DÜ# C¨Ó.�EØ'+×'<Ñ'<¸UÓ'CÑ$�D˜*Ø×%Ñ% t¨T°:Ð&>Õ?ð@ô
 ˜D“z×FÑFÜ×$Ñ$ S°Ô8Ø—J‘JÜ˜“IÜ—H‘H×+Ñ+¨CÓ0×9Ñ9Ó;ØØðIð ð ô ˜“:×.Ñ.Ü× Ñ  ¨VÔ4Ø—
‘
Ü�S“	Ü—‘×'Ñ'¨Ó,×5Ñ5Ó7ð	1ð ð ô ˜œUŸX™XŸ_™_Ô-Ü�C‹y×%Ñ%¬¨c«×);Ñ);Ò;Ü%Ð%Ø�}‰}×)Ñ)¬U¯X©X¯_©_×-IÑ-IÓIÜ˜D“z×2Ñ2°S×5EÑ5EÓ5GÐ4IÐIÐIä×Ñ˜cÔ"Ü˜“:×5Ñ5¸¿¹°ÐFÐFä˜œUŸX™X×4Ñ4Ô5Ü˜“:×8Ñ8¸3¿<¹<»>Ð:KÐKÐKä˜œUŸX™X×0Ñ0×=Ñ=Ô>Ü˜“:×=Ñ=ÀÇÁÃÐ?QÐQÐQô �O‰O˜CÔ Ü˜3 §¡Ô/Ü˜Ð2Ô3ä˜3Ð 2Ô3Ð3Ð3Ø×'Ñ'¨#×*AÑ*AÐ)CÐCÐCä˜œUŸ\™\Ô*ÜÐ!9¸#¸¸hÀsÇxÁxÀjÐPQÐRÓSÐSä˜œU×3Ñ3Ô4Ü˜“:×5Ñ5¸¿¹»
°}ÐDÐDä�‹9×!Ñ!¤T¨#£Y×%7Ñ%7Ò7Ü—-‘-×#Ñ#×0Ñ0Øœ˜S›	�{ ,¨s¨eÐ3DÐEØTñUàTñUóð ô Ðr–   )r7  r›  )r:  rš  )r?  Úbytes)rÀ   rî   rï   r•   Úclassmethodr$  r*  r5  r8  r;  r@  rD  rL  rð   rñ   s   @r”   r  r  :
  s�   ø„ ôTð
 ñó ðð
 ñ	
ó ð	
ð ñó ðð  ò.ó ð.ð ò?ó ð?ð òBó ðBð ñ)ó ð)öFr–   r  c                ó  — t        j                  «       }t        |«      }	 |j                  | «       |j                  «       S # t        $ r8}t
        j                  j                  j                  t        |«      «      |‚d }~ww xY wrƒ   )ÚioÚBytesIOr  ÚdumpÚAttributeErrorr×   rÙ   r;   r—  r›  r÷   )r"  ÚbufÚpicklerrù  s       r”   Úpickle_guards_staterb  ¼
  si   € Ü
�*‰*‹,€CÜ  Ó%€Gð<Ø�‰�UÔð �<‰<‹>Ðøô ò <Ü�m‰m×Ñ×,Ñ,¬S°«VÓ4¸!Ð;ûð<ús   ¡A Á	BÁ3A>Á>Bc                  óR   — e Zd Z	 	 	 	 	 	 d	 	 	 	 	 	 	 d	d„Z	 d
d„Zd„ Zd„ Zd„ Zd„ Zy)rÉ  Nc                ó*
  ‡ ‡‡‡‡— |r|j                   nd }i ‰ _        t        |«      }	|‰ _        |‰ _        |r|j
                  nd ‰ _        |‰ _        t        d«      st        j                  d«       t        |xs dt        j                  ¬«      }
‰ j                  |
|	|||rd n‰ j                  «      \  Š}|r“ˆfd„} ||
D �cg c]
  } ||«      ‘Œ c}«      }t        |«      t        |
«      k(  sJ ‚t        d„ |D «       «      sJ ‚t!        |
«      D ��cg c]  \  }}||   sŒ|‘Œ }
}}‰ j                  |
|	||‰ j                  «      \  Š}|‰ _        ‰ j%                  ‰|
|«       ‰j&                  ‰ j"                  _        t(        j+                  d‰ j"                  «       ‰j&                  ‰ j"                  _        dŠ|j,                  sý‰ j                  d	k7  rî‰ j"                  j/                  |j0                  «      sAt3        ‰ j"                  |j0                  t5        j6                  «       «      }t9        d
|› �«      ‚t:        � t;        ‰ j"                  |j0                  «       t=        ‰ j"                  j>                  |j0                  d«      Št(        j+                  d‰d›«       tA        jB                  dtE        ‰«      «       d ‰ _#        ‰ j                  dk(  �rÔtI        «       ŠtI        «       Šˆˆfd„}‰ j                  jK                  «       }|
D ]`  }tM        |jN                  tP        «      r2‰ j                  sJ ‚‰ j                  jR                  D ]
  } ||«       Œ ŒO ||jN                  «       Œb ‰ j                  jT                  D ]
  } ||«       Œ d„ }tW        jX                  ||j0                  j[                  «       D ��ci c]  \  }}|‰v r||“Œ c}}|j\                  j[                  «       D ��ci c]  \  }}|‰v r||“Œ c}}t^        j`                  jc                  |
D �ch c]+  }tW        jX                  |d d  ||jd                  «      ¬«      ’Œ- c}«      tg        jh                  tj        |jl                  «      ¬«      }to        |‰ j                  ¬«      }tq        |«      ‰ _#        t^        jr                  ju                  dˆˆ fd„¬«       ‰ j                  jw                  «        d ‰ _        y c c}w c c}}w c c}}w c c}}w c c}w )Nú!pytorch/compiler:guard_nn_modulesz9guard_nn_modules is turned off using justknobs killswitchr  )ry  c           	     ó°  •— t        «       }t        | j                  «      }|dk(  rd}|}nd}‰j                  | j                  «      }t	        | j
                  «      d u}| j                  }t        |t        j                  «      r| j                  j                  }t        ||||j                  | j                  rt        | j                  «      nd|| ¬«      S )Nró   FTr  )rn  Ú	has_valuerm  Ú
guard_typeÚderived_guard_typesÚ	is_globalÚ
orig_guard)ÚobjectÚstrip_local_scopern  rÙ  r   rª  r
  r«   Ú	functoolsÚpartialrW  re   rÀ   Úguard_typesrJ  )rÁ   ÚMISSINGrn  rg  rm  rj  rq  Úbuilders          €r”   Úmake_guard_filter_entryz>CheckFunctionManager.__init__.<locals>.make_guard_filter_entryø
  s¿   ø€ Ü ›(�Ü(¨¯©Ó4�Ø˜2’:Ø %�IØ#‘Eà $�IØ#ŸK™K¨¯
©
Ó3�EÜ2°5×3KÑ3KÓLÐTXÐX�	Ø Ÿ?™?�Ü˜h¬	×(9Ñ(9Ô:Ø$Ÿ™×3Ñ3�HÜ'ØØ'ØØ'×0Ñ0à×(Ò(ô ).¨e×.?Ñ.?Ô(@àØ'Ø$ô
ð 
r–   c              3  ó@   K  — | ]  }t        |«      t        k(  –— Œ y ­wrƒ   )r‡  r�  )rm  rü   s     r”   rp  z0CheckFunctionManager.__init__.<locals>.<genexpr>  s   è ø€ Ò?¨1”t˜A“w¤$•Ñ?ùs   ‚ú%sg        rN  zGuard check failed: r8   zGuard eval latency = %s usú.2fÚguard_latency_usr�  c                óÊ   •— t        | «      x}r$t        |t        «      sJ ‚‰j                  |«       y t	        | «      x}r$t        |t        «      sJ ‚‰j                  |«       y y rƒ   )r   r«   r›  r¢   r   )rÊ   rn  Úused_global_varsÚused_local_varss     €€r”   Úprune_variablez5CheckFunctionManager.__init__.<locals>.prune_variable_  sd   ø€ Ü1°&Ó9Ð9�4Ð9Ü% d¬CÔ0Ð0Ð0Ø$×(Ñ(¨Õ.Ü2°6Ó:Ð:�TÐ:Ü% d¬CÔ0Ð0Ð0Ø#×'Ñ'¨Õ-ð ;r–   c                ó6  ‡— t        | t        j                  «      rwd„ Št        ˆfd„| j                  D «       «      }| j
                  j                  «       D ��ci c]  \  }}| ‰|«      “Œ }}}t        j                  | j                  g|¢­i |¤ŽS | S c c}}w )Nc                óT   — t        | t        t        j                  f«      r | «       S | S rƒ   )r«   r7   r¼  r‡  r-  s    r”   Ú_refzHCheckFunctionManager.__init__.<locals>.normalize_create_fn.<locals>._refw  s!   € Ü% a¬-¼¿¹Ð)EÔFÙ#$£3˜JØ ˜r–   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wrƒ   r  )rm  r  r~  s     €r”   rp  zMCheckFunctionManager.__init__.<locals>.normalize_create_fn.<locals>.<genexpr>|  s   øè ø€ Ò$=°¡T¨!§WÑ$=ùs   ƒ)r«   rn  ro  rJ  r‡   Úkeywordsr¡   rW  )rü   Únew_argsÚkÚvÚnew_keywordsr~  s        @r”   Únormalize_create_fnz:CheckFunctionManager.__init__.<locals>.normalize_create_fnt  s„   ø€ Ü˜a¤×!2Ñ!2Ô3ò!ô
  %Ó$=°a·f±fÔ$=Ó=�HØ;<¿:¹:×;KÑ;KÓ;M×#N±4°1°a A¡t¨A£w¡JÐ#N�LÑ#NÜ$×,Ñ,¨Q¯V©VÐO°hÒOÀ,ÑOÐOà�ùó $Os   ÁB)Úobj_weakrefÚguarded_class_weakrefr
  )rÝ  rŠ   Ú_guardsr«  )rÖ  rt  Údynamo_cpp_guards_strc                 ó*   •— ‰j                   › d‰ d›d�S )Nz
Guard latency = rv  z us)rÈ   )Úlatencyr“   s   €€r”   r0  z/CheckFunctionManager.__init__.<locals>.<lambda>§  s    ø€  $×"4Ñ"4Ð!5Ð5GÈÐPSÀ}ÐTWÐX€ r–   ©Ú
payload_fn)<r|   Ú	_weakrefsÚ5update_diff_guard_managers_for_existing_cache_entriesrÖ  rt  Útorch_function_mode_stackÚguards_serialization_moder-   rx  ry  rŸ   r&   Úsort_keyÚbuild_guardsrW  Úallré  rÈ   Úcompile_check_fnrŽ   rf  rg  ra  rú   rÝ  Úget_guard_fail_reason_helperr#   rä  rV  ry   r   r„   r!   Úincrement_toplevelrš  Úguards_stater�   Údump_guards_stater«   rª  rW   ri  r×  r  rN  r¡   rŠ   r×   rˆ  Ú	GuardsSetr
  r  Útree_maprb  r«  r  rb  Ú_loggingÚtrace_structuredÚclear)r“   rÅ  rÖ  rŒ   r‹   Úguard_filter_fnr‘  rt  r|   Úexisting_diff_guard_sourcesÚsorted_guardsrÈ   rs  rÁ   Úfilter_resultsrn  Úreasonsr{  Úoutput_graph_guards_staterÊ   r…  r‚  rƒ  r˜  rr  r‹  ry  rz  s   `                       @@@@r”   r•   zCheckFunctionManager.__init__Ì
  sà  ü€ ñ )5�×$Ò$¸$ˆØ;=ˆŒô BÀ+ÓNð 	$ð )ˆÔð !1ˆÔñ
 7CˆL×2Ò2Èð 	Ô&ð *CˆÔ&äÐBÔCÜ�K‰KÐSÔTä˜vš|¨´·±Ô@ˆØ!%×!2Ñ!2ØØ'ØØÙ#‰D¨×)GÑ)Gó"
Ñˆ�ñ ôñ2 -Ø=JÖK°EÑ(¨Õ/ÒKóˆNô �~Ó&¬#¨mÓ*<Ò<Ð<Ð<ÜÑ?°Ô?Ô?Ð?Ð?ä&/°Ó&>÷Ù"˜!˜UÀ.ÐQRÓBS’ðˆMñ ð &*×%6Ñ%6ØØ+ØØØ×.Ñ.ó&Ñ"ˆG�]ð +ˆÔØ×Ñ˜g }°mÔDð .5×-DÑ-Dˆ×ÑÔ*ä×Ñ˜˜t×1Ñ1Ô2Ø-4×-DÑ-Dˆ×ÑÔ*ð ˆØ×"Ò" t×'EÑ'EÈÒ'OØ×%Ñ%×+Ñ+¨L×,DÑ,DÔEÜ6Ø×&Ñ&Ø ×,Ñ,Ü"×5Ñ5Ó7ó�ô
 %Ð';¸G¸9Ð%EÓFÐFä,Ð8Ü-Ø×&Ñ&¨×(@Ñ(@ôô ,Ø×"Ñ"×'Ñ'¨×)AÑ)AÀ1óˆGô ×ÑÐ9¸gÀc¸]ÔLô ×1Ñ1Ð2DÄcÈ'ÃlÔSà-1ˆÔØ×)Ñ)¨VÓ3Ü"›uÐÜ!›eˆOõ.ð )-×(9Ñ(9×(KÑ(KÓ(MÐ%à&ò =�Ü˜e×6Ñ6¼ÔGØ×0Ò0Ð0Ð0Ø"&×"7Ñ"7×"IÑ"Iò /˜Ù& vÕ.ñ/ñ # 5×#;Ñ#;Õ<ð=ð ×+Ñ+×>Ñ>ò '�Ù˜vÕ&ð'òô )4×(;Ñ(;Ø)ð !:× EÑ E× KÑ KÓ M÷á˜˜1Ø˜OÑ+ð �q‘Dóð !:× FÑ F× LÑ LÓ N÷á˜˜1ØÐ,Ñ,ð �q‘Dóô
 Ÿ™×/Ñ/ð &3öð "ô $×+Ñ+Ø!Ø(,Ø26Ù&9¸%¿/¹/Ó&Jö	òó
ô /5¯o©oÜ2Ø-×KÑKó/ô/)Ð%ô8 'Ø6Ø!%×!6Ñ!6ôˆLô !4°LÓ AˆDÔô 	�‰×'Ñ'Ø#ÜXð 	(ô 	
ð 	�‰×ÑÔØ ˆÕùòA Lùóùó\ùó
ùòs$   ÃS9ÄS>Ä#S>Ï
TÏ;T
Ð,0Tc                óè  ‡— t        «       }||_        d Šˆfd„}t        || j                  || j                  |j
                  |j                  || |«	      }d„ }	t        j                  ||	«      Št        j                  xr t        d«      }
|D ]`  }|
sK|j                  «       r;d|j                  vr-d|j                  vrt        j                  sd|j                  vrŒP|j                  |«       Œb ||fS )Nc                óÄ   •— | j                  «       }|t        j                  u r| j                  «       S ‰sJ ‚ ‰«       }|€J ‚|j	                  | j                  «       «      S rƒ   )Úguard_sourcer)   ÚCONSTANTrn  r{  )rÊ   r§  Ú	r_builderÚ	w_builders      €r”   rÇ  z5CheckFunctionManager.build_guards.<locals>.source_refÁ  s]   ø€ Ø!×.Ñ.Ó0ˆLØœ{×3Ñ3Ñ3à—{‘{“}Ð$ÙÐ�9Ù!›ˆIØÐ(Ð(Ð(Ø×$Ñ$ V§[¡[£]Ó3Ð3r–   c                ó&   —  | «       }|rd |_         y y rƒ   )rÉ  )Úweak_br/  s     r”   Úcleanup_builderz:CheckFunctionManager.build_guards.<locals>.cleanup_builderØ  s   € Ù“ˆAÙØ�•ð r–   re  rQ  rS  rÏ  )r�   r’   rº  rÆ  rÈ  rÝ  rŠ   r¼  r‡  r9   Úguard_nn_modulesr-   r«  rn  r=  r}  )r“   r¡  r   rÅ  rÖ  rÜ  rÈ   rÇ  rr  r­  Úguard_on_nn_modulesrÁ   rª  s               @r”   r“  z!CheckFunctionManager.build_guards´  sø   ø€ ô ,Ó-ˆØ+FˆÔ(àˆ	ô	4ô ØØ�K‰KØØ× Ñ Ø×$Ñ$Ø×%Ñ%ØØØó

ˆò	ô —K‘K ¨Ó9ˆ	ä$×5Ñ5ò 
¼/Ø/ó;
Ðð #ò 	"ˆEá'Ø×2Ñ2Ô4ð #¨%¯*©*Ñ4Ø$¨E¯J©JÑ6Ü×5Ò5¸ÈÏ
É
Ñ9Ràà�L‰L˜Õ!ð	"ð ˜Ð%Ð%r–   c                ó¬  ‡‡‡— |j                   }|dgz  }t        j                  d«       g Šg Šg Št        | j                  «      }| j
                  j                  j                  dg«       | j
                  j                  j                  | j                  dg«       d | _        dˆˆˆfd„	}t        «       }|j                  D ]=  }|j                  D ],  }	|	|vsŒ ||	|j                  d«       |j                  |	«       Œ. Œ? |j                  }
d }d }t        |
«      dkD  r-t!        |j"                  |
dd	j%                  |
«      z   d
z   g«       | j&                  r| j&                  j(                  ng }|D �]T  }t+        |t,        «      rr|j.                  }|j0                  }|j3                  «       › d|j3                  «       › �}t5        |j7                  |«      |j7                  |«      |g«        ||d d«       Œ†t+        |t8        «      r³|j:                  D �cg c]  }|j7                  |«      ‘Œ }}|j<                  D �cg c]  }|j7                  |«      ‘Œ }}dd	j%                  d„ |j:                  D «       «      › dd	j%                  d„ |j<                  D «       «      › d�}t?        |||g«        ||d d«       �ŒItA        d|› �«      ‚ |jB                  D ]'  }|j                  D ]  }	 ||	|j                  d«       Œ Œ) ‰r$tD        jF                  jI                  dˆfd„¬«       tJ        jL                  }|€tK        jN                  «       }|||jP                  |dœtR        ¥tU        «       ¥}| j
                  jW                  «        d|jX                  d   i}t        ‰«      dk(  sJ ‚|| j
                  _-        || j
                  _.        | j
                  j_                  «        ‰| j
                  _0        || j
                  _1        || j
                  _2        d | j
                  _3        d | j
                  _4        |
| j
                  _5        y c c}w c c}w )Nz**___kwargs_ignoredzGUARDS:z___check_global_state()z$___check_torch_function_mode_stack()c                ó$  •‡ ‡— t        ‰ ‰«      }t        j                  d|«       ‰j                  ˆ ˆfd„«       t        j                  t        j                  «      rŽd}d}‰�p‰j                  r,ddj                  ‰j                  j                  «       «      › �}‰j                  r,ddj                  ‰j                  j                  «       «      › �}t        j                  d‰ ||«       |s#‰j                  ‰ «       ‰j                  |«       y y )Nru  c                 óä   •— ‰ ‰r9‰j                   r-t        j                  ‰j                   j                  «       «      nd ‰r-‰j                  r!t        j                  ‰j                  «      dœS d dœS )N)r·  rU  rR  )rU  r,   Úfrom_tracebackrV  rR  )r  rÁ   s   €€r”   r0  zNCheckFunctionManager.compile_check_fn.<locals>.add_code_part.<locals>.<lambda>  sg   ø€ Ø%ñ ! U§[¢[ô #×1Ñ1°%·+±+×2EÑ2EÓ2GÔHà!ñ ! U×%5Ò%5ô #×1Ñ1°%×2BÑ2BÓCñ€ ð "ñ€ r–   ró   z
Stack:
z
User stack:
zGuard: %s%s%s)rZ  rf  rg  r  Úverbose_guards_logÚisEnabledForÚloggingÚDEBUGrU  rd  ÚformatrR  )	r  rÁ   Úlog_onlyr  Úmaybe_stackÚmaybe_user_stackrˆ   Ústructured_guard_fnsr‰   s	   ``    €€€r”   Úadd_code_partz<CheckFunctionManager.compile_check_fn.<locals>.add_code_part  s÷   ú€ Ü 5°iÀÓ GÐÜ×Ñ˜TÐ#4Ô5à ×'Ñ'ôôô  "×.Ñ.¬w¯}©}Ô=Ø �Ø#%Ð ØÐ$Ø—{’{Ø(2°2·7±7¸5¿;¹;×;MÑ;MÓ;OÓ3PÐ2QÐ&R˜Ø×'Ò'à-¨b¯g©g°e×6FÑ6F×6MÑ6MÓ6OÓ.PÐ-QÐRð )ô #×(Ñ(Ø#ØØØ$ô	ñ Ø×!Ñ! )Ô,Ø"×)Ñ)Ð*;Õ<ð r–   Tr8   zcheck_no_aliasing(rÇ   rg  r.  zcheck_overlapping(overlapping=[c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrƒ   ©rn  ©rm  rÌ   s     r”   rp  z8CheckFunctionManager.compile_check_fn.<locals>.<genexpr>h  s   è ø€ Ò/\¸Q°·±·Ñ/\ùó   ‚z], non_overlapping=[c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrƒ   r¿  rÀ  s     r”   rp  z8CheckFunctionManager.compile_check_fn.<locals>.<genexpr>i  s   è ø€ Ò3dÀ°A·F±F·HÑ3dùrÁ  z])zUnknown GuardEnvExpr: Údynamo_guardsc                 ó8   •— ‰D � cg c]	  }  | «       ‘Œ c} S c c} w rƒ   r  )Úfr¼  s    €r”   r0  z7CheckFunctionManager.compile_check_fn.<locals>.<lambda>  s   ø€ ÐBVÖ4W¸Q±QµSÒ4W€ ùÒ4Ws   †rŒ  )Ú___check_tensorsÚ___check_tensors_verboseÚ___check_global_stateÚ"___check_torch_function_mode_stackr¾  r   rí   )6rÐ  rf  rg  Ú$make_torch_function_mode_stack_guardr�  rÈ   r„   Úadd_global_state_guardÚ#add_torch_function_mode_stack_guardr�   r·  r±  rÁ   r¢   rÒ  rW  r   rÓ  rd  rÖ  Úaotautograd_guardsr«   r%   Úinput_source_aÚinput_source_brn  r   r9  r+   Úoverlapping_sourcesÚnon_overlapping_sourcesr   rC  rÑ  r×   rœ  r�  r:   Úinitial_global_stateÚGlobalStateGuardrú   r2   rI  r³   rÉ  r†   r‡   r  r‰   rŠ   r‹   rŒ   r�   r�   )r“   rr  Ú
guards_outr‹   ÚlargsÚ"torch_function_mode_stack_check_fnr½  ÚseenÚgclr·  rÒ  Úcheck_tensors_fnÚcheck_tensors_verbose_fnrÍ  rÁ   Úsource_ar/  r  rÌ   Úoverlapping_guard_managersÚnon_overlapping_guard_managersÚglobal_stater†   rp  rˆ   r¼  r‰   s                           @@@r”   r•  z%CheckFunctionManager.compile_check_fnó  si  ú€ à× Ñ ˆØÐ'Ð(Ñ(ˆä×Ñ˜Ô#àˆ
ØÐØCEÐä-QØ×*Ñ*ó.
Ð*ð
 	×Ñ×Ñ×6Ñ6Ð8QÐ7RÔSà×Ñ×Ñ×CÑCØ×*Ñ*Ø3Ð4ô	
ð
 *.ˆÔ&÷'	=ôR ‹uˆØ—<‘<ò 	#ˆCØŸ™ò #�Ø˜tÒ#ñ " $¨¯	©	°4Ô8Ø—H‘H˜T•Nñ#ð	#ð $+×#CÑ#CÐ ØÐØ#'Ð äÐ'Ó(¨1Ò,ô -Ø×9Ñ9Ø(Ø%¨¯	©	Ð2JÓ(KÑKÈcÑQÐRôð 59×4EÒ4EˆD×Ñ×0Ò0È2ð 	ð (ó  	EˆEÜ˜%¤Ô1Ø ×/Ñ/�Ø ×/Ñ/�Ø'Ÿ}™}›Ð/¨t°H·M±M³OÐ3DÐE�	Ü-Ø×9Ñ9¸(ÓCØ×9Ñ9¸(ÓCØ�Kôñ
 ˜i¨¨tÕ4Ü˜E¤>Ô2ð #×6Ñ6ö.àð ×9Ñ9¸!Õ<ð.Ð*ð .ð #×:Ñ:ö2àð ×9Ñ9¸!Õ<ð2Ð.ð 2ð
&Ø&*§i¡iÑ/\À%×B[ÑB[Ô/\Ó&\Ð%]ð ^*Ø*.¯)©)Ñ3dÀe×FcÑFcÔ3dÓ*dÐ)eÐegðkð ô
 2Ø.Ø2Ø�Kôñ
 ˜i¨¨tÖ4ä"Ð%;¸E¸7Ð#CÓDÐDðA 	EðH ×)Ñ)ò 	5ˆCØŸ™ò 5�ñ ˜d C§I¡I¨tÕ4ñ5ð	5ñ  Ü�N‰N×+Ñ+ØÓ,Wð ,ô ô %×9Ñ9ˆØÐä(×9Ñ9Ó;ˆLà 0Ø(@Ø%1×%7Ñ%7Ø2Tñ	
ô
 ð
ô  Ó!ð
ˆð 	×Ñ×#Ñ#Ô%à # W§]¡]°3Ñ%7Ð8Ðô �:‹ !Ò#Ð#Ð#à*6ˆ×ÑÔ'Ø"'ˆ×ÑÔØ×Ñ×<Ñ<Ô>Ø0Bˆ×ÑÔ-à*>ˆ×ÑÔ'Ø+8ˆ×ÑÔ(ð *.ˆ×ÑÔ&Ø)-ˆ×ÑÔ&Ø8Pˆ×ÑÕ5ùòG.ùò2s   ÈQÈ?Qc                óT  — t        | d«      rœt        | j                  t        «      s�| j                  j                  x}�h| j                  j
                  x}�Ot        |t        «      sJ ‚t        |t        «      sJ ‚d|› d�}t        |«      }|j                  ||«       || _        y y y y y )NrÈ   zCache line invalidated because z got deallocated)	rö   r«   rÈ   r  rŒ   r�   r`   rb   Ú
invalidate)r“   Úobj_strrŒ   r�   r  Údeleted_guard_managers         r”   rà  zCheckFunctionManager.invalidate£  s·   € ô
 �D˜/Ô*Ü˜t×1Ñ1Ô3MÔNØ $× 2Ñ 2× >Ñ >Ð>�ÐKØ $× 2Ñ 2× >Ñ >Ð>�ÐKä˜k¬:Ô6Ð6Ð6Ü˜k¬:Ô6Ð6Ð6Ø6°w°iÐ?OÐPˆFÜ$>¸vÓ$FÐ!Ø×"Ñ" ;Ð0EÔFØ!6ˆDÕð Lð Lð Oð +r–   c                ó:  — 	 t        |«      | j                  vr`t        j                  |«      | j                  t        |«      <   t        j                  |t        j                  | j                  |¬«      «       t        |«      S # t        $ r Y t        |«      S w xY w)zadd a weakref, return the id)rá  )	rØ  rŽ  r¼  r‡  r³   rn  ro  rà  r†  )r“   rˆ  rá  s      r”   rÆ  zCheckFunctionManager.id_ref´  s€   € ð
	Ü�#‹w˜dŸn™nÑ,ô +2¯+©+°cÓ*:�—‘œr #›wÑ'Ü× Ñ Øœ×*Ñ*¨4¯?©?ÀGÔLôô
 �#‹wˆøô ò 	ØÜ�#‹wˆð	ús   ‚A7B Â	BÂBc                ób   — t        |«      | j                  v r| j                  t        |«         S y)zFLookup the _weakrefs created in id_ref function for ID_MATCH'd objectsN)rØ  rŽ  )r“   rˆ  s     r”   rÈ  z$CheckFunctionManager.lookup_weakrefsÃ  s(   € äˆc‹7�d—n‘nÑ$Ø—>‘>¤" S£'Ñ*Ð*Ør–   )NNNNNN)r‹   z%Optional[Callable[[GuardFail], None]]rŸ  z8Optional[Callable[[list[GuardFilterEntry]], list[bool]]]r‘  r�  rt  r  rƒ   )	rÀ   rî   rï   r•   r“  r•  rà  rÆ  rÈ  r  r–   r”   rÉ  rÉ  Ë
  sm   „ ð ØØ?Cð Ø37Ø59ðf!ð
 =ðf!ð
ðf!ð $1ðf!ð 3óf!ð\  ó=&ò~nQò`7ò"ór–   rÉ  c                ó,  ‡	— ddl m} t        «       Š		 ‰	j                  | «       dˆ	fd„} |«       }| D ]]  } ||«      \  }}|j                  |«       |j                  d|› d�«       |j                  «       5  |j                  d«       d d d «       Œ_  |«       }|j                  d«       |j                  «       5  |j                  |«       |j                  d	«       d d d «        |«       }|j                  d
|› d�«       |j                  «       5  |j                  |«       |j                  d«       d d d «       |j                  «       |j                  «       fS # t        $ r dd„}Y �ŒCw xY w# 1 sw Y   �ŒHxY w# 1 sw Y   Œ¡xY w# 1 sw Y   ŒVxY w)Nr   rá   c                ó&   •— ‰j                  | «      S rƒ   )rN  )rè  Úcsepasss    €r”   rN  z%build_guard_function.<locals>.replaceÑ  s   ø€ Ø—?‘? 4Ó(Ð(r–   c                ó
   — g | fS rƒ   r  )rè  s    r”   rN  z%build_guard_function.<locals>.replaceÖ  s   € Ø�t�8ˆOr–   zif not (z):zreturn Falsezdef guard(L):zreturn Truezdef ___make_guard_fn(zreturn guardr   )
rõ   râ   rÎ  rû  ÚRecursionErrorrÛ   rÏ   rÐ   Úsplicer÷   )
rˆ   Úclosure_argsrâ   rN  Ú
guard_bodyrè  râ  rÁ   Úmake_guard_fnrç  s
            @r”   re  re  Ê  s‚  ø€ Ý4ä‹o€Gð	Ø�‰�jÔ!õ	)ñ  Ó!€JØò 1ˆÙ ›‰ˆ�Ø×Ñ˜gÔ&Ø×Ñ˜x¨ v¨RÐ0Ô1Ø×ÑÓ ñ 	1Ø× Ñ  Ô0÷	1ð 	1ð	1ñ Ó€EØ	‡O�O�OÔ$Ø	�‰‹ñ 'Ø�‰�ZÔ Ø�‰˜Ô&÷'ñ #Ó$€MØ×ÑÐ3°L°>ÀÐDÔEØ	×	Ñ	Ó	ñ 0Ø×Ñ˜UÔ#Ø×Ñ Ô/÷0ð ×ÑÓ  -×"8Ñ"8Ó":Ð:Ð:øô? ò ö	ðú÷	1ñ 	1ú÷'ð 'ú÷0ð 0ús5   “E Á7E1Â;#E>Ä#F
ÅE.Å-E.Å1E;	Å>FÆ
Fc                 óh   — t         j                  j                  j                  j	                  d«      S )Nr}   ©r×   rœ  Ú	_internalÚ	log_stateÚis_artifact_enabledr  r–   r”   Úis_recompiles_enabledró  õ  s#   € Ü�>‰>×#Ñ#×-Ñ-×AÑAÀ,ÓOÐOr–   c                 óh   — t         j                  j                  j                  j	                  d«      S )Nr~   rï  r  r–   r”   Úis_recompiles_verbose_enabledrõ  ù  s$   € Ü�>‰>×#Ñ#×-Ñ-×AÑAÐBVÓWÐWr–   c                óN   ‡— | D �cg c]  }t        |«      ‘Œ c}Šˆfd„}|S c c}w )Nc                 ó’   •— t        «       } t        | «      t        ‰«      k7  ryt        ‰| «      D ]  \  }}|t        |«      k7  sŒ y yr©  )rl   rW  rÜ   r‡  )Ú	cur_stackÚtyÚmoder
  s      €r”   Úcheck_torch_function_mode_stackzMmake_torch_function_mode_stack_guard.<locals>.check_torch_function_mode_stack  sL   ø€ Ü1Ó3ˆ	äˆy‹>œS ›ZÒ'Øä˜E 9Ó-ò 	‰HˆB�Ø”T˜$“ZÓÙð	ð r–   )r‡  )Úinitial_stackrü   rû  r
  s      @r”   rÊ  rÊ  þ  s)   ø€ Ø+Ö,˜ŒT�!�WÒ,€Eô
ð +Ð*ùò -s   †"c                ó`  — t        | j                  «      }t        j                  t        «      }| j
                  D ]1  }||d<   t        t        |||«      «      }||   j                  |«       Œ3 |D �cg c]  }t        ||   «      dkD  sŒ||   › ‘Œ }}dj                  |«      }d|› �gS c c}w )NÚ__compile_source__r8   rÇ   zDuplicate tensors found: )r-  rŠ   r>  rð  r\  r�   rØ  rt  r  rW  rd  )	rÈ   rÉ  rŠ   Úids_to_sourcer   Ú	tensor_idry  Úduplicate_tensorsr  s	            r”   Ú1recompilation_reason_for_no_tensor_aliasing_guardr    sÈ   € Ü˜×2Ñ2Ó3€LÜ×+Ñ+¬DÓ1€MØ&×AÑAò 7ˆØ-:ˆÐ)Ñ*Ü”t˜M¨<¸Ó?Ó@ˆ	Ø�iÑ ×'Ñ'¨Õ6ð7ð ,9öØ$'¼CÀÈcÑ@RÓ<SÐVWÓ<Wˆ=˜ÑÐ
ÑðÐð ð �Y‰YÐ(Ó)€FØ'¨ xÐ0Ð1Ð1ùòs   Á3B+Â
B+c                ó4   — ddl }d}|j                  |d| «      S )z®
    Replace occurrences of L[...] with just the inner content.
    Handles both single and double quotes.

    This is to generate user friendly recompilation messages.
    r   NzL\[\s*['\"](.*?)['\"]\s*\]z\1)ÚreÚsub)rÌ   r  Úpatterns      r”   rm  rm     s   € ó à+€GØ�6‰6�'˜5 !Ó$Ð$r–   c                óº  — || j                   d   dœ}|j                  | j                  «       g }d}g }| j                  |«      }|j                  s(|j
                  }t        |«      dk(  rd|d   v rd}n|}g }|rt        | |«      }n…|D ]€  }t        | j                   «      }	||	d<   t        «       5  	 t        ||	|«      }
	 d	d	d	«       t        
t        «      r|
s|}
t        |
t        «      sŒd|j!                  |
«       t        «       rŒ€ n |› d
�dj#                  |«      z   }t%        |«      S # t        $ r t        «       r
Y d	d	d	«       ŒÂ‚ w xY w# 1 sw Y   Œ‘xY w)z­
    Return the reason why `guard_manager` failed.
    Updates `guard_failures` with the generated reason.
    Only the first failed check of guard_manager is reported.
    r¾  r¼  Fr8   zDuplicate tensor foundr   Trþ  Nr¾   z; )rŠ   r  r†   rþ   Úresultr‰   rW  r  r-  r6   rt  Ú	Exceptionrõ  r«   r�  r›  r  rd  rm  )rÈ   Úf_localsÚ
compile_idrÉ  r£  Úno_tensor_aliasing_check_failedr‰   Úguard_debug_inforÄ   rŠ   Úfail_reasonÚ
reason_strs               r”   r–  r–  -  s�  € ð  ×!;Ñ!;¸CÑ!@ÑA€EØ	‡L�L�×+Ñ+Ô,Ø€Gà&+Ð#à$&ÐØ$×2Ñ2°8Ó<Ðð ×"Ò"Ø-×@Ñ@Ðô Ð!Ó" aÒ'Ø'Ð+=¸aÑ+@Ñ@Ø26Ñ/à,�Ø%'Ð"á&ÜCØ˜5ó
‰ð 'ò 	ˆDÜ × :Ñ :Ó;ˆLØ15ˆLÐ-Ñ.Ü/Ó1ñ ðÜ"& t¨\¸5Ó"A‘K÷ô ˜+¤tÔ,±[Ø"�Ü˜+¤sÕ+Ø—‘˜{Ô+Ü4Õ6Ùð'	ð* �<˜rÐ" T§Y¡Y¨wÓ%7Ñ7€JÜ˜ZÓ(Ð(øô! !ò Ü4Ô6Ø ÷ð ð ð	ú÷ð ús*   Â1EÂ3D/Ä/EÅEÅEÅEÅE	c                óP  — t        | t        «      r|› d| j                  › �S t        | ||«      }t        t
        |      j                  |«       	 | j                  �&| j                  t        |xs dt
        |   «      «       |S # t        $ r t        j                  d«       Y |S w xY w)Nr¾   zunknown reasonzVFailure in guard_fail_fn callback - raising here will cause a NULL Error on guard eval)r«   r  r  r–  rn   rs   r  r‹   rd   r	  rx  rö  )rÈ   r·  r
  r  r  s        r”   Úget_guard_fail_reasonr  p  s±   € ô �-Ô!;Ô<Ø�˜R × AÑ AÐBÐCÐCÜ-¨m¸XÀzÓR€JÜ”= Ñ&Ñ'×.Ñ.¨zÔ:ð
Ø×&Ñ&Ð2Ø×'Ñ'Ü˜*Ò8Ð(8¼-ÈÑ:MÓNôð Ðøô ò 
Ü�‰Ødõ	
ð Ðð
ús   Á2B ÂB%Â$B%c                óX  ‡— g Š| �Xt        | j                  | j                  |j                  | j                  «      }|r‰j                  |«       | j                  } | �ŒX|j                  }t        «       xs
 t        «       }|st        j                  ròt        «       r"dj                  d„ t        ‰«      D «       «      }n%t        j                  dj                  ‰«      d«      }d|› �}d|j                   › d|j"                  › d|j$                  › dt        j                  |d	«      › �}|r5t        «       rt&        j)                  |«       nt*        j)                  |«       t        j                  rt-        j.                  |«      ‚t0        j2                  j5                  d
d„ ˆfd„¬«       ‰S )zÒ
    Return the list of guard failure reasons using cache_entry.
    Logs the recompilation reason if `recompiles` logging is enabled.
    Raises a RecompileError if `config.error_on_recompile` is enabled.
    z

c              3  ó\   K  — | ]$  \  }}d |› d�t        j                  |d«      z   –— Œ& y­w)zguard z failures:
ú- N)r…  rÐ   )rm  rn  r  s      r”   rp  z:get_and_maybe_log_recompilation_reasons.<locals>.<genexpr>£  s5   è ø€ ò #á�A�vð ˜˜˜<Ð(¬8¯?©?¸6À4Ó+HÕHñ#ùs   ‚*,rK  r  z-triggered by the following guard failure(s):
zRecompiling function z in ú:z    Úartifactc                 ó   — dddœS )NÚrecompile_reasonsr?  )rn  Úencodingr  r  r–   r”   r0  z9get_and_maybe_log_recompilation_reasons.<locals>.<lambda>º  s   € Ø'Øñ
€ r–   c                 ó   •— ‰ S rƒ   r  )r£  s   €r”   r0  z9get_and_maybe_log_recompilation_reasons.<locals>.<lambda>¾  s   ø€ ˜7€ r–   )Úmetadata_fnr�  )r  rÈ   r·  r
  r  r  ÚnextrÅ  ró  rõ  r9   Úerror_on_recompilerd  ré  r…  rÐ   r»  Úco_filenameÚco_firstlinenoÚrecompiles_verbose_logrg  Úrecompiles_logr;   ÚRecompileErrorr×   rœ  r�  )	rŒ   Úframer  r·  Údo_recompiles_logÚfailuresÚguard_failure_detailsÚmessager£  s	           @r”   Ú'get_and_maybe_log_recompilation_reasonsr(  ˆ  s�  ø€ ð €GØ
Ð
!Ü&Ø×%Ñ%Ø×ÑØ�N‰NØ×"Ñ"ó	
ˆñ Ø�N‰N˜6Ô"Ø!×&Ñ&ˆð Ñ
!ð �<‰<€Dô .Ó/ÒRÔ3PÓ3RÐáœF×5Ò5Ü(Ô*Ø—{‘{ñ #ä!*¨7Ó!3ô#ó ‰Hô
  —‘ t§y¡y°Ó'9¸4Ó@ˆHà<¸X¸JÐGð 	ð $ D§L¡L >°°d×6FÑ6FÐ5GÀqÈ×I\ÑI\ÐH]Ð]_Ü�‰Ð4°fÓ=Ð>ð@ð 	ñ Ü,Ô.Ü&×,Ñ,¨WÕ5ä×$Ñ$ WÔ-Ü×$Ò$Ü×$Ñ$ WÓ-Ð-ä	‡N�N×#Ñ#Øñ
ó #ð $ô ð €Nr–   c                ó  — | }t        «       }| �8|j                  | j                  j                  «       «       | j                  } | �Œ8|} | �:|| j                  _        | j                  j                  «        | j                  } | �Œ:|S rƒ   )r�   r  rÈ   r°   r  r’   r²   )rŒ   Úfirst_cache_entryÚacc_diff_guard_sourcess      r”   r�  r�  Ä  s•   € Ø#Ðô
 !›UÐØ
Ð
!Ø×%Ñ%Ø×%Ñ%×@Ñ@ÓBô	
ð "×&Ñ&ˆð	 Ñ
!ð $€KØ
Ð
!Ø7Mˆ×!Ñ!Ô4Ø×!Ñ!×=Ñ=Ô?Ø!×&Ñ&ˆð Ñ
!ð "Ð!r–   c                ó¸  — t        d|j                  › d|j                  › d|j                  › �«       t        ddj	                  | j
                  «      z   dz   «       t        ddj	                  | j                  «      «       t        | «       d|i| j                  ¥}| j                  D ]  }	 t        || j                  |«       Œ y #  t        d|› �«       Y Œ0xY w)	NzERROR RUNNING GUARDS ú r  zlambda rÇ   z and
  r½  zMalformed guard:
)
Úprintr»  r  r  rd  r‡   rˆ   r†   rt  rŠ   )rÈ   r·  r
  rk  ÚlastrÝ  rÁ   s          r”   Úguard_error_hookr0  Ý  sÐ   € ô 
Ø
 §¡˜~¨Q¨t×/?Ñ/?Ð.@ÀÀ$×BUÑBUÐAVÐWôô 
ˆ)�d—i‘i × 2Ñ 2Ó3Ñ
3°cÑ
9Ô:Ü	ˆ#ˆz�‰˜}×7Ñ7Ó8Ô9ä	ˆ-Ôà˜Ð? M×$>Ñ$>Ð?€KØ×)Ñ)ò 0ˆð	0Ü�˜×2Ñ2°KÕ@ñ0øð	0ÜÐ& u gÐ.Ö/ús   Â-CÃCc              #  ób   K  — t        «       }| D ]  }||vsŒ|–— |j                  |«       Œ y ­wrƒ   )r�   r¢   )Úseqr×  rü   s      r”   Úuniquer3  ÷  s3   è ø€ Ü‹5€DØò ˆØ�DŠ=ØŠGØ�H‰H�Q�Kñùs   ‚/—/c                ó,  — |r’|| k7  r�t        |«      }t        | «      }t        |«      st        | «      r7t        j                  | j	                  «       › d|j	                  «       › d�«      ‚||k(  r%t        j                  t        j                  |¬«      S y )Nz is aliasing zC. This is not supported. Please do a clone for corresponding input.)r/  )	r   r   r;   ÚUnsafeScriptObjectErrorrn  rn  ro  rº  r2  )Ú
obj_sourceÚdupe_sourceÚser_source_is_localÚsource_is_locals       r”   Úmake_dupe_guardr:  ÿ  s™   € ñ �{ jÒ0Ü2°;Ó?ÐÜ.¨zÓ:ˆÜ/Øô
ä1°*Ô=Ü×-Ñ-Ø—?‘?Ó$Ð% ]°;×3CÑ3CÓ3EÐ2Fð G>ð ?óð ð  /Ò1ô ×$Ñ$¤\×%AÑ%AÈKÔXÐXØr–   )Úskipc                óJ  — ddl m} t        j                  t        j
                  «      xs# t        j                  t        j
                  «      }|j                  «       j                  j                  j                  }|D ]"  }t        |t        «      sJ ‚ |||| dz   ¬«       Œ$ y)z«
    Add dynamo guards to the current tracing context.

    Args:
        guards: guard(s) to add
        skip: number of stack frames to ignore for debug stack trace
    r   )ÚTracingContextr8   )Úcollect_debug_stackr;  N)Útorch._guardsr=  rf  rµ  r¶  r·  r´  rÙ  Úguards_contextrÃ  r¢   r«   r&   )r;  r|   r=  r>  r¢   rÁ   s         r”   Úinstall_guardrA  !  sŒ   € õ -ä$×1Ñ1Ü�‰óò 8ä	×	(Ñ	(¬¯©Ó	7ð ð ×
Ñ
Ó
×
-Ñ
-×
;Ñ
;×
?Ñ
?€CØò KˆÜ˜%¤Ô'Ð'Ð'ÙˆEÐ':ÀÈÁÖJñKr–   )r£   rÛ  rÊ  r›  )r  r›  rÁ   r&   rÊ  r›  )rˆ   zUnion[str | list[str]]rÁ   r&   rÊ  r°  )rÊ  zOptional[int])rˆ  r   rÊ  r	   )r·  rÇ  )r"  r  rÊ  rY  )rÊ  ztuple[str, str])rÌ   r›  rÊ  r›  )rÈ   rf   r
  rÈ  r  r$   rÊ  r›  )
rÈ   rf   r·  rÇ  r
  rÈ  r  r$   rÊ  r›  )r#  ra   rÊ  r°  )
rÈ   rf   r·  rÇ  r
  rÈ  rk  rš  r/  r�  )ãr  Ú
__future__r   rL  rÊ  r>  r  r½  rn  rD  r  r\  r¶  rA  Úpicklerò  r…  r
  rô  r¼  Ú
contextlibr   rÌ  r   r   Útypingr   r   r	   r
   r   r   r   r×   Útorch.overridesÚtorch.utils._deviceÚtorch._C._dynamo.eval_framer   Útorch._C._dynamo.guardsr   r   r   r   r   r   r   r   r   r   Útorch._dynamo.sourcer   r   r   r   r   r   r   r    Útorch._dynamo.utilsr!   r"   r?  r#   r$   r%   r&   r'   r(   r)   r*   r+   Útorch._loggingr,   Útorch._utils_internalr-   Ú%torch.fx.experimental.symbolic_shapesr.   r/   r0   r1   r2   Útorch.utilsr3   r  Útorch.utils._ordered_setr4   Útorch.utils._tracebackr5   r6   Útorch.utils.weakr7   ró   r9   r:   r;   Ú
eval_framer<   rÊ   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rF  rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   r’  Únumpyr  ÚModuleNotFoundErrorrJ  rz   Útorch._dynamo.output_graphr{   Ú	getLoggerrÀ   rx  rœ  ÚgetArtifactLoggerrf  r!  r   r´  r�   r  Úcacher#  r$  rI  rO  rØ   rÙ   rv  rZ  r]  rb  re  rv  rz  r  r‰  r  rŒ  r§  r­  r¯  r¾  r�  r¸  rº  rÎ  r  r  r  r  ÚPicklerr  rb  rÉ  re  ró  rõ  rÊ  r  rm  r–  r  r(  r�  r0  r3  r:  rA  r  r–   r”   ú<module>r[     sc  ðòõ" #ã 
Û Û Û Û Û Û Û Û 	Û Û Û Û 
Û Û Û Û Ý %Ý Ý  ß J× JÝ !ã Û Û Ý >÷÷ ÷ ÷	÷ 	ó 	÷ H÷
÷ 
õ 
õ &Ý 1÷õ õ *Ý /ß OÝ *ç (Ñ (Ý ,÷$÷ $÷ $÷ $÷ $÷ $÷ $÷ $÷ $ñ $÷J÷ ñ ÷÷ ÷ ÷ ÷ ð, FJÐ ÐBÓ IðÛñ
 ÝåAð €g×Ò˜Ó!€Ø�^Š^×-Ò-¨h¸ÓA€
Ø—’×1Ò1°(¸LÓI€ØŸš×9Ò9ØÐ"óÐ ð —^’^×5Ò5°hÐ@PÓQÐ ÷^ñ ^òBTð ‡‚ñ
.ó ð
.ð .2€Ð*Ó 1òó:/ð —h’h×&Ò&×:Ò:Ð ó%ð"QØ&ðQØ/4ðQàóQó'òKòò3ò1óð €×Ò˜dÔ#÷!ð !ó $ð!ò&òR
Gð ×Ò÷ð ó ðô
�t—y’yô ð
 ‡‚ò8ó ð8ôn
Ð#ô n
÷D:R8ñ R8òjô$Ð!4ô $ð ×Ò÷$ð $ó ð$ð ×Ò÷/ð /ó ð/ô
˜Ÿšô óD÷|ñ |ó~(;òVPòXò
+ò$2ó 
%ð@)Øð@)àð@)ð ð@)ð 	ó	@)ðFØðà
ðð  ðð ð	ð
 	óð09Ø'ð9àó9òx"ð20Øð0à
ð0ð  ð0ð ð	0ð
 ó0ñ. Ð%Ô &òòðD !"õ Køðmk ò Ø	ƒBðús   Æ"O4 Ï4O?Ï>O?