Ë
    øÿæi¦ ã                  ó˜
  — 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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"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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP ddlQmRZRmSZS ddlTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z] ddl^m_Z_ ddl`maZambZb ddlcmdZd ddlemfZf ddlgmhZhmiZimjZjmkZkmlZl ddlmmnZo ddlpmqZq ddlrmsZsmtZt ddlumvZv ddlwmxZxmyZymzZz ddl{m|Z| ddl}m~Z~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z…m†Z†m‡Z‡mˆZˆm‰Z‰mŠZŠm‹Z‹mŒZŒm�Z�mŽZŽm�Z�m�Z�m‘Z‘m’Z’m“Z“m”Z”m•Z•m–Z–m—Z—m˜Z˜m™Z™mšZšm›Z›mœZœm�Z�mžZžmŸZŸm Z m¡Z¡m¢Z¢m£Z£m¤Z¤m¥Z¥m¦Z¦m§Z§m¨Z¨m©Z©mªZª ddlm«Z«m¬Z¬m­Z­m®Z®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ÄmÅZÅ erddlÆmÇZÇ dZÈdeÉd <   	 ddlÊZËer$dd!lÆmÍZÍmÎZÎmÏZÏ dd"lÐmÑZÑ dd#lÒmÓZÓ dd$lÔmÕZÕmÖZÖ dd%l×mØZØ  e$d&«      ZÙ e�j´                  eÛ«      ZÜe&�jº                  �j½                  eÛd'«      Zße&�jº                  �j½                  eÛd(«      Zàe&�jº                  �j½                  eÛd)«      Záe&�jº                  �j½                  eÛd*«      Zâd+Zãdqd,„Zä G d-„ d.e_«      Zå G d/„ d0«      Zædrd1„Zçe�jÐ                  dsd2„«       Zédaêd3eÉd4<   dtd5„Zëdud6„Zìe&�jÚ                  �jÜ                  �jÞ                  Zïdvd7„Zð	 dw	 	 	 	 	 	 	 dxd8„Zñdyd9„Zòdzd:„Zód{d;„Zô	 	 	 	 	 	 	 	 	 	 	 	 	 	 d|d<„Zõd}d=„Zöd~d>„Z÷dd?„Zød€d@„Zù e�jô                  dA¬B«       G dC„ dD«      «       Zû	 	 	 	 	 	 	 	 	 	 	 	 d�dF„Züd‚dG„Zýe�jô                   G dH„ dI«      «       Zþ G dJ„ dEe�jþ                  «      �Z e�jÐ                  dƒdK„«       �Z G dL„ dMeY«      �Z G dN„ dO«      �Zd‚dP„�Z G dQ„ dReæ«      �Ze�jô                   G dS„ dT«      «       �Ze�jô                   G dU„ dV«      «       �Z G dW„ dX«      �Ze�jÐ                  d„dY„«       �Z	 G dZ„ d[e�j                  «      �Zd…d\„�Z	 	 	 	 	 	 d†d]„�Z G d^„ d_«      �Zd‡d`„�Zdˆda„�Zdˆdb„�Z	 	 	 	 d‰dc„�Z e#dd�e�e�ef   «      �Z	 	 	 	 	 	 dŠde„�Zd‹df„�Z	 	 	 	 dŒdg„�Z	 	 	 	 	 	 	 	 	 	 d�dh„�Z	 dŽ	 	 	 	 	 	 	 	 	 	 	 	 	 d�di„�Z	 dŽ	 	 	 	 	 	 	 	 	 d�dj„�Z	 	 	 	 d‘dk„�Z	 	 	 	 	 	 	 	 	 	 	 	 d’dl„�Z e|�e«       d“dm„�Z	 	 	 	 	 	 d”dn„�Z ddoœd•dp„�Z!y# eÌ$ r dZËY �ŒDw xY w)–aî  
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Ú
NamedTupleÚNoReturnÚOptionalÚTYPE_CHECKINGÚUnion)ÚLiteralStringÚTypeAliasTypeÚTypeVar)ÚReferenceType)Úcode_framelocals_names)Úcheck_obj_idÚcheck_type_idÚClosureGuardAccessorÚCodeGuardAccessorÚdict_versionÚDictGetItemGuardAccessorÚDictGuardManagerÚFuncDefaultsGuardAccessorÚFuncKwDefaultsGuardAccessorÚGetAttrGuardAccessorÚGetGenericDictGuardAccessorÚGuardAccessorÚGuardDebugInfoÚGuardManagerÚ install_no_tensor_aliasing_guardÚinstall_object_aliasing_guardÚ!install_storage_overlapping_guardÚinstall_symbolic_shape_guardÚ	LeafGuardÚprofile_guard_managerÚRelationalGuardÚRootGuardManagerÚTupleGetItemGuardAccessorÚTypeDictGuardAccessorÚTypeGuardAccessorÚTypeMROGuardAccessor)
Úget_global_source_nameÚget_local_source_nameÚIndexedSourceÚ$is_from_flatten_script_object_sourceÚis_from_local_sourceÚis_from_optimizer_sourceÚis_from_skip_guard_sourceÚ.is_from_unspecialized_builtin_nn_module_sourceÚTensorPropertyÚTensorPropertySource)ÚCompileEventLoggerÚget_metrics_context)	ÚCompileContextÚ	CompileIdÚDuplicateInputsÚGuardÚGuardBuilderBaseÚGuardEnvExprÚGuardSourceÚSourceÚStorageOverlap©ÚIndentedBuffer)Úget_opaque_obj_infoÚis_opaque_value_type)Ú
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ÚCellContentsSourceÚChainedSourceÚClosureSourceÚ
CodeSourceÚConstantSourceÚConstDictKeySourceÚCurrentStreamSourceÚDataclassFieldsSourceÚDefaultsSourceÚDictGetItemSourceÚDictSubclassGetItemSourceÚDynamicScalarSourceÚFlattenScriptObjectSourceÚFloatTensorSourceÚFSDPNNModuleSourceÚGenericAttrSourceÚGetItemSourceÚGlobalSourceÚGlobalStateSourceÚGlobalWeakRefSourceÚ
GradSourceÚImportSourceÚListGetItemSourceÚLocalSourceÚNamedTupleFieldsSourceÚNNModuleSourceÚNonSerializableSetGetItemSourceÚNumpyTensorSourceÚOptimizerSourceÚScriptObjectQualifiedNameSourceÚShapeEnvSourceÚSubclassAttrListSourceÚTorchFunctionModeStackSourceÚTupleIteratorGetItemSourceÚTypeDictSourceÚTypeMROSourceÚ
TypeSourceÚ"UnspecializedBuiltinNNModuleSourceÚUnspecializedNNModuleSourceÚUnspecializedParamBufferSourceÚWeakRefCallSource)Ú
CacheEntryÚDynamoFrameTypeÚ
ExtraStateÚGuardedCodeÚ	GuardFailÚGuardFilterEntryÚGuardFn)Úbuiltin_dict_keysÚcommon_constant_typesÚdataclass_fieldsÚ	dict_keysÚget_current_streamÚ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_signature)ÚCallablez(Optional[Callable[[Any, Any, Any], Any]]Úguard_manager_testing_hook_fn)Ú	GeneratorÚKeysViewÚSequence)ÚSymbol)ÚDispatchKeySet)ÚOutputGraphCommonÚOutputGraphGuardsState©ÚSerializedCodeÚTÚguardsÚ
recompilesÚrecompiles_verboseÚverbose_guards)Ú__defaults__Ú__kwdefaults__Ú__code__Ú__closure__Ú__annotations__Ú__func__Ú__mro__c                ó\   — t        | «      }t        |«      |j                  |«      z
  dz
  }|S ©NrQ   )Ú&code_framelocals_names_reversed_cachedÚlenÚindex)ÚcodeÚvar_nameÚframelocals_names_reversedÚframelocals_idxs       úi/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torch/_dynamo/guards.pyÚget_framelocals_idxr¾   ð   s=   € ô "HÈÓ!MÐäÐ&Ó'Ð*D×*JÑ*JÈ8Ó*TÑTÐWXÑXð ð Ðó    c                  ó*   ‡ — e Zd Zdd„Zddˆ fd„Zˆ xZS )ÚIndentedBufferWithPrefixc                ó:   — d| j                   | j                  z  z  S )Nz| )Ú_indentÚtabwidth©Úselfs    r½   ÚprefixzIndentedBufferWithPrefix.prefixÿ   s   € Ø�t—|‘| d§m¡mÑ3Ñ4Ð4r¿   c                óN   •— |rt         ‰| �  |«       y t         ‰| �  d|z   «       y )Nz+- )ÚsuperÚ	writeline)rÆ   ÚlineÚskip_prefixÚ	__class__s      €r½   rÊ   z"IndentedBufferWithPrefix.writeline  s$   ø€ ÙÜ‰GÑ˜dÕ#ä‰GÑ˜e d™lÕ+r¿   ©ÚreturnÚstr©F)rË   rÐ   rÌ   ÚboolrÏ   ÚNone)Ú__name__Ú
__module__Ú__qualname__rÇ   rÊ   Ú__classcell__©rÍ   s   @r½   rÁ   rÁ   þ   s   ø„ ó5÷,ò ,r¿   rÁ   c                  óÊ   — e Zd ZdZddd„Zedd„«       Zdd„Zdd„Zdd„Z	dd„Z
dd	„Z	 	 	 	 dd
„Zdd„Z	 d	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zd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_guardsrM   Údiff_guard_sources)rÆ   rÝ   s     r½   Ú__init__zGuardManagerWrapper.__init__  s‚   € Øˆ<Ü(Ó*ˆD�IàˆDŒIà;?ˆÔØ6:ˆÔØ)-ˆŒ	Ø%'ˆŒØ7;ˆÔØ6:ˆÔØDHˆÔØ15ˆÔØ15ˆÔØACˆÔØ57ˆÔ'ä?B»uˆÔ&ä3=³<ˆÕr¿   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                óp   ‡ ‡‡‡— dˆ ˆfd„Šdˆ ˆfd„Š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ð ô -3Ø×+Ñ+Ó-×3Ñ3Ó5ö-Ñ(�Ñ(�w ð #¡e¨G£n±u¸W³~Ñ&EÑEÑ"ð-ñ
 "Ø×'Ñ'×+Ñ+¨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_managerH  s�   ø€ Ü! $Ô(8Ô9Ð9Ð9ð —‘Ó! T×%<Ñ%<Ð<ÒUÀÇÁÓ@QÐTUÑ@Uð ð "×4Ñ4Ö6�	Ø"¡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>.visitV  s,   ø€ Øˆ|ØÜ˜$Ô 0Ô1Ù)¨$Ó/Ð/Ù  Ó&Ð&r¿   )rø   r   rÏ   rÒ   )rø   r   rÏ   rÒ   )rÝ   rë   )rÆ   rý   rþ   r  s   `@@@r½   Úcollect_diff_guard_sourcesz.GuardManagerWrapper.collect_diff_guard_sources0  s,   û€ ö	&ö	&ö	'ñ 	ˆd�i‰iÔà×&Ñ&Ð&r¿   c                óz   — t         j                  rt        d«      r| j                  «        | j	                  «        y )Nz3pytorch/compiler:use_recursive_dict_tags_for_guards)rR   Ú"use_recursive_dict_tags_for_guardsrF   Úfind_tag_safe_rootsÚprepare_diff_guard_managerrÅ   s    r½   ÚfinalizezGuardManagerWrapper.finalizea  s/   € Ü×4Ò4¼ØAô:
ð ×$Ñ$Ô&Ø×'Ñ'Õ)r¿   c                óD   — | j                  «        | j                  «        y rÜ   )r  Úpopulate_diff_guard_managerrÅ   s    r½   r  z.GuardManagerWrapper.prepare_diff_guard_managerh  s   € Ø×'Ñ'Ô)Ø×(Ñ(Õ*r¿   c                ó   ‡‡‡‡— 	 	 	 	 	 	 dd„Šdˆfd„Šdˆˆfd„Šdˆˆfd„Š ‰| j                   «      }|D ]E  }t        |j                  «       t        j                  j
                  «      sŒ6|j                  «        ŒG y)	uB  
        Identify ``tag safe nodes`` and ``tag safe roots`` within a guard tree.

        -----------------------------------------------------------------------
        tag safe node
        -----------------------------------------------------------------------
        A *tag safe node* is a ``GuardManager`` whose guarded value satisfies one
        of the following conditions:

        1. Immutable value - The value is intrinsically immutable according to
        ``is_immutable_object``. Tensors are considered immutable. To ensure
        that symbolic guards run, we also check that the GuardManager has no
        accessors.

        2. Nested tag safe dictionary - The value is a ``dict`` whose keys and
        values are all tag safe nodes  (checked recursively).  Such dictionaries
        allow entire nested structures to be skipped once their identity tag
        matches.

        3. Pure ``nn.Module`` - The value is an ``nn.Module`` whose sole
        accessor is ``GetGenericDictGuardAccessor``â€”i.e., it only exposes its
        ``__dict__`` and nothing else that could mutate between runs.

        For every tag safe node, verifying the identity/tag of just the top-level
        dictionary is enough to guarantee the entire subtree is unchanged, enabling
        a *fast-path* guard check.

        -----------------------------------------------------------------------
        tag safe root
        -----------------------------------------------------------------------
        A ``tag safe root`` is a tag safe node whose parent is not tag safe.
        These boundary nodes mark the points where guard evaluation can safely
        prune traversal: if a tag-safe root's dictionary tag matches, the entire
        subtree beneath it is skipped.

        One strong requirement for tag safe root is for the guarded object to
        support weakref. Refer to more details in the Recursive dict tag
        matching note. In short, we need to save the weakref of the object on
        first invocation, and check if it is still valid in later iterations, to
        apply recursive dict tag optimizations. `dict` objects do NOT support
        weakref. Therefore, as of now, we only mark nn module related guard
        managers as tag safe roots.

        Algorithm
        ---------
        The search runs in post-order traversal

        1. Visit leaves and classify them as tag safe or not.
        2. Propagate tag-safety upward: a parent dictionary becomes tag safe only if
        all of its children are already tag-safe.
        3. Propagate tag-safe-rootness upward: if the whole subtree is tag safe,
        the current node becomes the new tag safe root, otherwise propagate the
        subtree tag safe roots.
        4. Collect every tag safe node and, by inspecting parent tags, label the
        subset that are tag safe roots.
        c                ó€   ‡— | j                  «       }| j                  «       }t        ˆfd„t        ||«      D «       «      S )Nc              3  ó`   •K  — | ]%  \  }}t        |‰«      xr |j                  «       –— Œ' y ­wrÜ   )r   Úis_tag_safe)Ú.0ÚaccessorÚmgrÚaccepted_accessorss      €r½   Ú	<genexpr>zTGuardManagerWrapper.find_tag_safe_roots.<locals>.check_tag_safety.<locals>.<genexpr>«  s4   øè ø€ ð á%?‘M�H˜cô ˜8Ð%7Ó8ÒN¸S¿_¹_Ó=NÓNÙ%?ùs   ƒ+.)Úget_accessorsr  ÚallÚzip)rø   r  Ú	accessorsÚ
child_mgrss    `  r½   Úcheck_tag_safetyzAGuardManagerWrapper.find_tag_safe_roots.<locals>.check_tag_safety¦  sB   ø€ ð ×*Ñ*Ó,ˆIØ×0Ñ0Ó2ˆJÜó ä%(¨°JÔ%?óó ð r¿   c                óÂ  •— t        | j                  «       t        «      sJ ‚g }d}t        | j	                  «       j                  «       «      D ],  \  }\  }}|� ‰|«       |€Œ|j                   ‰|«      «       Œ. | j	                  «       j                  «       D ]0  \  }}|r||j                  «       z  }|sŒ||j                  «       z  }Œ2 |r| j                  «        |S ©NT)
Ú
issubclassÚget_type_of_guarded_valueÚdictrô   rõ   rö   ÚextendÚvaluesr  Úmark_tag_safe)rø   Útag_safe_rootsÚis_subtree_tag_saferú   rû   rü   rý   s         €r½   rþ   zCGuardManagerWrapper.find_tag_safe_roots.<locals>.visit_dict_manager°  sé   ø€ ô ˜d×<Ñ<Ó>ÄÔEÐEÐEàˆNØ"&Ðô -3Ø×+Ñ+Ó-×3Ñ3Ó5ö-Ñ(�Ñ(�w ð Ð&Ù˜'”NØÑ&Ø"×)Ñ)©%°«.Õ9ð-ð %)×$?Ñ$?Ó$A×$HÑ$HÖ$JÑ �˜ÙØ'¨7×+>Ñ+>Ó+@Ñ@Ð'âØ'¨7×+>Ñ+>Ó+@Ñ@Ñ'ð %Kñ #Ø×"Ñ"Ô$Ø!Ð!r¿   c                óØ  •— t        | t        «      rJ ‚g }| j                  «       D ]  }|j                   ‰|«      «       Œ | j	                  «       rlt        | j                  «       t        j                  «      r2| j                  «       r2| j                  «       s"| j                  «        |S | j                  «        |S t        | j                  «       t        «      rP| j                  «       }| j                  «       }t        d„ t        ||«      D «       «      }|r| j                  «        |S t        | j                  «       t        j                   j"                  «      r* ‰| t$        t&        f«      }|r| j                  «        | gS |S | j                  «       t(        j*                  t(        j,                  t.        t0        fv r…t2        j4                  ru ‰| t6        t8        t:        t<        t>        f«      }| j                  «       D ],  }t        |t>        «      sŒ||jA                  «       tB        v z  }Œ. |r| j                  «        |S t        | j                  «       t(        jD                  «      rE ‰| t>        f«      }|t        d„ | j                  «       D «       «      z  }|r| j                  «        |S t        | j                  «       tF        «      rU| jI                  «       jK                  tB        «      r2t2        j4                  r" ‰| tL        f«      }|r| j                  «        |S t        | j                  «       tN        «      r% ‰| tP        tR        f«      }|r| j                  «        |S )Nc              3  óf   K  — | ])  \  }}t        |t        «      xr |j                  «       –— Œ+ y ­wrÜ   )r   r   r  )r  r  r  s      r½   r  zQGuardManagerWrapper.find_tag_safe_roots.<locals>.visit_manager.<locals>.<genexpr>à  s3   è ø€ ð *á)C™˜ #ô ˜xÔ)AÓBÒXÀsÇÁÓGXÓXÙ)Cùó   ‚/1c              3  óf   K  — | ])  }t        |t        «      xr |j                  «       d k(  –— Œ+ y­w)Úcell_contentsN)r   r   Úget_attr_name)r  r  s     r½   r  zQGuardManagerWrapper.find_tag_safe_roots.<locals>.visit_manager.<locals>.<genexpr>  s?   è ø€ ð +ñ %9˜ô ˜xÔ)=Ó>ò DØ ×.Ñ.Ó0°OÑCóDá$8ùr*  )*r   r   r  r#  Úis_guarded_value_immutabler   r!  ÚtorchÚTensorÚhas_no_accessorsÚhas_object_aliasing_guardr%  r"  r  r  r  ÚnnÚModuler   r*   ÚtypesÚFunctionTypeÚ
MethodTypeÚstaticmethodÚclassmethodrR   Ú)assume_dunder_attributes_remain_unchangedr   r   r   r   r   r-  Údunder_attrs_assumed_constantsÚCellTypeÚtuplerò   Úendswithr(   Útyper)   r+   )	rø   r&  r  r  r  r'  r  r  rý   s	          €€r½   r  z>GuardManagerWrapper.find_tag_safe_roots.<locals>.visit_managerÌ  s@  ø€ Ü! $Ô(8Ô9Ð9Ð9ð  ˆNØ!×4Ñ4Ö6�	Ø×%Ñ%¡e¨IÓ&6Õ7ð 7ð ×.Ñ.Ô0ô ˜d×<Ñ<Ó>ÄÇÁÔMØ×,Ñ,Ô.°t×7UÑ7UÔ7WØ×*Ñ*Ô,ð| "Ð!ðy ×&Ñ&Ô(ðx "Ð!ôw ˜D×:Ñ:Ó<¼dÔCØ ×.Ñ.Ó0�	Ø!×4Ñ4Ó6�
Ü&)ñ *ä),¨Y¸
Ô)Có*ó 'Ð#ñ 'Ø×&Ñ&Ô(ðf "Ð!ôe ˜D×:Ñ:Ó<¼e¿h¹h¿o¹oÔNÙ&6ØÔ6Ô8IÐJó'Ð#ñ 'Ø×&Ñ&Ô(ð ðð ðT "Ð!ðM ×.Ñ.Ó0ä×&Ñ&Ü×$Ñ$Ü Üð	ñô ×DÒDñ '7Øä)Ü,Ü1Ü3Ü,ðó	'Ð#ð !%× 2Ñ 2Ö 4�HÜ! (Ô,@ÕAØ+Ø$×2Ñ2Ó4Ô8VÐVñÑ+ð !5ñ 'Ø×&Ñ&Ô(ðJ "Ð!ôI ˜D×:Ñ:Ó<¼e¿n¹nÔMÙ&6°tÔ>RÐ=TÓ&UÐ#à#¤sñ +ð %)×$6Ñ$6Ô$8ó+ó (ñ Ð#ñ
 'Ø×&Ñ&Ô(ð6 "Ð!ô3 ˜4×9Ñ9Ó;¼UÔCØ—O‘OÓ%×.Ñ.Ô/MÔNÜ×DÒDñ '7ØÔ4Ð6ó'Ð#ñ 'Ø×&Ñ&Ô(ð "Ð!ô ˜D×:Ñ:Ó<¼dÔCÙ&6ØÔ0Ô2FÐGó'Ð#ñ 'Ø×&Ñ&Ô(à!Ð!r¿   c                óL   •— | €g S t        | t        «      r ‰| «      S  ‰| «      S rÜ   r  r  s    €€r½   rý   z6GuardManagerWrapper.find_tag_safe_roots.<locals>.visit:  s.   ø€ Øˆ|Ø�	Ü˜$Ô 0Ô1Ù)¨$Ó/Ð/Ù  Ó&Ð&r¿   N)rø   r   r  ztuple[type[GuardAccessor], ...]rÏ   rÒ   )rø   r   rÏ   úlist[GuardManager])rø   r   rÏ   rA  )rÝ   r   r!  r/  r3  r4  Úmark_tag_safe_root)rÆ   r&  rø   r  rý   rþ   r  s      @@@@r½   r
  z'GuardManagerWrapper.find_tag_safe_rootsl  ss   û€ ðt	Øð	Ø4Sð	àó	õ	"ö8l	"ö\	'ñ ˜tŸy™yÓ)ˆÛ"ˆDÜ˜$×8Ñ8Ó:¼E¿H¹H¿O¹OÕLØ×'Ñ'Õ)ñ #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_managerF  s=   € Ø#×=Ñ=¸d×>UÑ>UÓVˆÔð ×ÒØ×Ñ×;Ñ;Õ=ð r¿   c                óF   ‡— 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_fnV  s   ø€ Ø×&Ñ&Ó(¨NÐ:Ð:r¿   )rH  r   rÏ   rÒ   )rÝ   Úclone_manager)rÆ   rI  rJ  s    ` r½   rD  z-GuardManagerWrapper.clone_with_chosen_sourcesS  s   ø€ õ	;ð �y‰y×&Ñ& yÓ1Ð1r¿   c                ó†   — |j                   j                  }|j                  «       }|D �cg c]
  }|dz   |z   ‘Œ }}|S c c}w )Nú: )rÍ   rÔ   râ   )rÆ   ÚguardÚ
guard_nameÚpartsÚparts        r½   Úget_guard_linesz#GuardManagerWrapper.get_guard_lines[  sG   € Ø—_‘_×-Ñ-ˆ
Ø×(Ñ(Ó*ˆÙ6;Ó<±e¨d�˜dÑ" TÓ)°eˆÐ<Øˆùò =s   «>c                óò   — |j                  «       }|j                  j                  }|dz   |z   }|r|d|z   z  }|d|j                  «       › �z  }|d|j	                  «       › d|j                  «       › d�z  }|S )Nz	: source=ú, z, type=z, tag_safe=(Ú))rò   rÍ   rÔ   r!  r  Úis_tag_safe_root)rÆ   Úguard_managerÚaccessor_strÚsourceÚtÚss         r½   Úget_manager_linez$GuardManagerWrapper.get_manager_linea  s‘   € ð ×)Ñ)Ó+ˆØ×#Ñ#×,Ñ,ˆØ�‰O˜fÑ$ˆÙØ�˜Ñ$Ñ$ˆAØ	ˆw�}×>Ñ>Ó@ÐAÐBÑBˆØ	ˆ|˜M×5Ñ5Ó7Ð8¸¸=×;YÑ;YÓ;[Ð:\Ð\]Ð^Ñ^ˆØˆ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ö   rÊ   Úindentr\  Úconstruct_manager_string)rÆ   r  ÚbodyÚidxrû   rü   s         r½   Úconstruct_dict_manager_stringz1GuardManagerWrapper.construct_dict_manager_stringm  s¾   € ô (.¨c×.HÑ.HÓ.J×.PÑ.PÓ.RÖ'SÑ#ˆCÑ#�'˜7Ø�N‰NÐ;¸C¸5ÐAÔBØ—‘•ÙØ—N‘N \°$×2GÑ2GÈÓ2PÐ1QÐ#RÔSØ×1Ñ1°'¸4Ô@áØ—N‘N ^°D×4IÑ4IÈ'Ó4RÐ3SÐ#TÔUØ×1Ñ1°'¸4Ô@÷ �ñ (Tç�ús   ÁA/CÃC	c           
     óè  — |j                  «       5  |j                  «       D ]£  }t        |t        «      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   r&   rê   r÷   Ú
writelinesrR  rÍ   rÔ   r   rb  r  r  r  rÊ   r\  Úreprr_  )rÆ   r  r`  rN  r  r  s         r½   r_  z,GuardManagerWrapper.construct_manager_string{  s,  € ð �[‰[�]Ø×,Ñ,Ö.�Ü˜e¤_Ô5Ø D×$BÑ$BÑBØ×6Ñ6×:Ñ:¸5ÔAàŸ™¨×(<Ñ(<¸UÓ(CÕDàŸ™à %§¡× 8Ñ 8ðõð —O‘O D×$8Ñ$8¸Ó$?Õ@ð /ô  ˜#Ô/Ô0Ø×2Ñ2°3¸Ô=ô (+Ø×!Ñ!Ó# S×%;Ñ%;Ó%=ö(Ñ#�˜)ð —‘Ø×)Ñ)¨)°|ÀHÇMÁMÃOÐCTÐ5UÓVôð ×-Ñ-¨i¸Õ>ñ(÷+ �]‰]ús   ‘EE(Å(E1c                óà  — | j                  «       5  t        «       }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)NrQ   Ú T)rÌ   zTREE_GUARD_MANAGER:r'   Úget_epilogue_lambda_guards)rî   rÁ   rÄ   rÊ   r_  rÝ   Úhasattrri  re  rR  Úgetvalue)rÆ   r`  rN  s      r½   Ú__str__zGuardManagerWrapper.__str__›  s²   € Ø×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�EØ—O‘O D×$8Ñ$8¸Ó$?Õ@ð Dà—=‘=“?÷ 8×7Ò7ús   ‘C	C$Ã$C-c                ó8   — | j                   j                  |«      S rÜ   )rÝ   Úcheck©rÆ   Úxs     r½   rn  zGuardManagerWrapper.check¨  s   € à�y‰y�‰˜qÓ!Ð!r¿   c                ó8   — | j                   j                  |«      S rÜ   )rÝ   Úcheck_verbosero  s     r½   rr  z!GuardManagerWrapper.check_verbose¬  s   € à�y‰y×&Ñ& qÓ)Ð)r¿   c                ó^   ‡ ‡‡‡— t        «       Šdd„Š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´  sP   € ØˆJØ%/×%BÑ%BÖ%DÐ!Ø-×3Ñ3°CÓ8¸Ñ;×BÑBÓD�	Ø×!Ñ! )Õ,ð &Eð Ðr¿   c                ó<  •— | j                  «       D ]k  }t        |t        «      r8|‰vsŒ‰j                  j	                   ‰|«      «       ‰j                  |«       ŒK‰j                  j	                   ‰|«      «       Œm | j                  «       D ]
  } ‰|«       Œ y rÜ   )rd  r   r&   rá   r#  r÷   r  )r  rN  r  r|  Úrelational_guards_seenrÆ   rý   s      €€€€r½   rý   zDGuardManagerWrapper.populate_code_parts_for_debugging.<locals>.visit»  s‚   ø€ à×,Ñ,Ö.�Ü˜e¤_Ô5ØÐ$:Ò:ØŸ™×.Ñ.©~¸eÓ/DÔEØ.×2Ñ2°5Õ9à—O‘O×*Ñ*©>¸%Ó+@ÕAð /ð !×3Ñ3Ö5�	Ù�iÕ ñ 6r¿   )ry  r$   rÏ   ú	list[str])r  r   rÏ   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Ý   zOptional[RootGuardManager]rÏ   rÓ   )rÏ   zGenerator[None, None, None])rÏ   úOrderedSet[str]©rÏ   rÓ   )rI  r�  rÏ   r'   )rN  r$   rÏ   r  )rW  r   rX  úOptional[str]rÏ   rÐ   )r  r   r`  rÁ   rÏ   rÓ   )r  r   r`  rÁ   rÏ   rÓ   rÎ   ©rp  r   rÏ   rÒ   )rp  r   rÏ   r   )rÔ   rÕ   rÖ   Ú__doc__rì   r   rî   r  r  r  r
  r  rD  rR  r\  rb  r_  rl  rn  rr  r€  © r¿   r½   rÚ   rÚ   	  sÎ   „ ñô@ð, ò3ó ð3ó/'ób*ó+óX*ót>ð2Ø-ð2à	ó2óð JNð
Ø)ð
Ø9Fð
à	ó
ðAØ#ðAØ+CðAà	óAð?Øð?Ø'?ð?à	ó?ó@#ó"ó*ô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�  Ë  sE   € ô 
�‰×	/Ñ	/Õ	1ä%/°´B·J±JÄÇ
Á
Ð3KÔ%LŒu�‰˜qÔ!ÐRS÷ 
2×	1Ò	1ú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.polyfillsÚ_dynamoÚexternal_utilsÚ	polyfillsÚtorch._dynamo.polyfills.loaderr‘  r#  ÚinspectÚgetfile)r/  Úmodsr‘  Úms       r½   Úuninteresting_filesrœ  Õ  sY   € ã'Û"à�M‰M×(Ñ(¨%¯-©-×*AÑ*AÐB€DåAð 	‡K�KÐ"Ô#á(,Ó-© 1ŒG�O‰O˜AÕ¨Ñ-Ð-ùÒ-s   ÁA/ú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d„ “dt        “dt        “dt        j                  “dt         €d nt         j                  “dt#        d«      “dt$        j&                  “t(        j*                  j,                  t(        j.                  t0        t(        j2                  t(        t4        dœ¥a t         S )NÚ___check_type_idÚ___check_obj_idÚ___odict_getitemÚ___key_to_idÚ___dict_versionÚ___dict_containsc                ó.   — t         j                  || «      S rÜ   )r"  Ú__contains__)rŽ  Úbs     r½   Ú<lambda>z#_get_closure_vars.<locals>.<lambda>ð  s   € ¬T×->Ñ->¸qÀ!Ô-Dr¿   Ú___tuple_iterator_lenÚ___normalize_range_iterÚ___tuple_iterator_getitemÚ___dataclass_fieldsÚ___namedtuple_fieldsc                ó   — | j                   S rÜ   ©Ú_fields©rp  s    r½   r©  z#_get_closure_vars.<locals>.<lambda>õ  s   € ¨a¯iªir¿   Ú#___get_torch_function_mode_stack_atÚ___get_current_streamÚ__math_isnanÚ__numpy_isnanÚinfÚ__load_module)Úutils_deviceÚdeviceÚ___from_numpyÚ___as_tensorr/  r˜  )rž  r   r   ÚcollectionsÚOrderedDictÚ__getitem__r•   r   rš   r–   r™   rŒ   r‘   rŽ   ÚmathÚisnanrŠ  ÚfloatÚ	importlibÚimport_moduler/  ÚutilsÚ_devicerº  r�  Ú_as_tensor_fullprecr˜  r†  r¿   r½   Ú_get_closure_varsrÈ  ç  s8  € äÐð
Ø¤ð
àœ|ð
ð ¤× 7Ñ 7× CÑ Cð
ð œIð	
ð
 œ|ð
ð Ñ Dð
ð $Ô%7ð
ð &Ô';ð
ð (Ô)?ð
ð "Ô#3ð
ð #Ñ$7ð
ð 2Ô3Sð
ð $Ô%7ð
ð œDŸJ™Jð
ð ¤R Z™T´R·X±Xð
ð  ”5˜“<ð!
ð" œY×4Ñ4ð#
ô$ "ŸK™K×/Ñ/Ü—l‘lÜ'Ü!×5Ñ5ÜÜò/
ˆô2 Ðr¿   c                óL   — t        j                  | «      j                  dd«      S )NÚ
rh  )ÚastÚunparseÚreplace)rø   s    r½   Ú_ast_unparserÎ    s   € Ü�;‰;�tÓ×$Ñ$ T¨2Ó.Ð.r¿   c                ó~  — d}|�³|j                   r_t        |j                   «      D ]F  }|j                  t        «       vsŒdt	        |d¬«      › �}t        |«      dkD  rdt	        |«      › �} nJ nH|j                  r<|j                  j                  «       }t        |«      dkD  rdt	        |d   «      › �}nd}| d	›|› �S )
Nrh  z  # T)rË   i   r   éÿÿÿÿz  # <unknown>z<60)Ú
user_stackÚreversedÚfilenamerœ  rN   r·   ÚstackÚsummary)r{  rN  ÚextraÚfsrÕ  s        r½   Úget_verbose_code_partrØ    sÅ   € Ø€EØÐØ×ÒÜ˜u×/Ñ/Ö0�Ø—;‘;Ô&9Ó&;Ò;Ø"¤<°¸Ô#>Ð"?Ð@�EÜ˜5“z DÒ(ð #'¤|°BÓ'7Ð&8Ð 9˜Ùñ 1ð �[Š[Ø—k‘k×)Ñ)Ó+ˆGÜ�7‹|˜aÒØœ|¨G°B©KÓ8Ð9Ð:‘à'�Ø˜ˆ_˜U˜GÐ$Ð$r¿   c                óè   — t        | t        «      s| g} | D �cg c]  }t        ||«      ‘Œ }}|�"t        |j                  «      }|r|r|› d|› �n|}|r|D �cg c]
  }|› d|› d�‘Œ }}|S c c}w c c}w )NrT  ú (HINT: rU  )r   ÚlistrØ  Ú_get_closure_var_hintÚoriginating_source)rá   rN  Úrecompile_hintr{  râ   Úclosure_hintrQ  s          r½   Úget_verbose_code_partsrà  %  s²   € ô
 �j¤$Ô'Ø �\ˆ
ñ BLóÙAK°IÔ˜i¨Õ/Àð ð ð ÐÜ,¨U×-EÑ-EÓFˆÙá7E�<�.  >Ð"2Ñ3È<ð ñ á;Mó
Ù;M°4ˆtˆf�H˜^Ð,¨AÒ.Ð;Mð 	ð 
ð Ðùò'ùò
s   ˜A*ÁA/c                óø   — | €y| j                   }| }|�gt        |t        «      r6|j                  r*|t	        |j                   «      d }d|j                  › d|› �S t        |t
        «      r|j                  nd}|�Œgy)z‘
    Walk up the source chain to find a CellContentsSource ancestor.
    Returns a hint like 'guard on "varname".attr' or None if not found.
    Nz
guard on "Ú")Únamer   rZ   Úfreevar_namer·   r[   Úbase)rY  Ú	full_nameÚcurrentÚpath_suffixs       r½   rÜ  rÜ  C  s†   € ð
 €~Øà—‘€IØ &€GØ
Ð
Ü�gÔ1Ô2°w×7KÒ7Kð
 $¤C¨¯©Ó$5Ð$7Ð8ˆKØ × 4Ñ 4Ð5°Q°{°mÐDÐDÜ",¨W´mÔ"D�'—,’,È$ˆð Ñ
ð r¿   c                óŽ   — | €y t        | «      s| S t        | t        j                  «      sJ ‚| j                  j                  «       S rÜ   )rJ   r   r/  ÚSymIntrø   Úmaybe_as_int)Údims    r½   Úconvert_int_to_concrete_valuesrí  Y  s>   € Ø
€{ØÜ�sÔØˆ
ä˜#œuŸ|™|Ô,Ð,Ð,Ø�x‰x×$Ñ$Ó&Ð&r¿   c                ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w rÜ   )rí  )Úsize_or_striderì  s     r½   Úconvert_to_concrete_valuesrð  c  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(rT  z	, device=z, requires_grad=z, size=z	, stride=rU  )	r/  Ú_CÚ_dispatch_tls_local_include_setÚ_dispatch_tls_local_exclude_setÚdtyperº  r¸   Úrequires_gradrÖ   )Úvaluerã  ÚsizesÚstridesÚpytypeÚdispatch_keysÚdispatch_keyrõ  Údevice_indexrö  Ú	guard_strs              r½   Úget_tensor_guard_code_partrÿ  g  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Û  rŠ   r¸   )ÚdctÚkeys     r½   Úget_key_indexr  |  s    € ô
 Ô! #Ó&Ó'×-Ñ-¨cÓ2Ð2r¿   c                ó   — d| › d|› d�S )Núlist(dict.keys(ú))[Ú]r†  )rY  r¸   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).)Ú	TypeErrorr?  )Úobjs    r½   Úraise_local_type_errorr  ˆ  s8   € Ü
Ø
”�S“	ˆ{˜, s eÐ+<Ð=Ø
Lñ	Mà
Lñ	Móð r¿   c                ó”   — t        | t        j                  j                  «      xr# t        j
                  xs t        | «      t        u S rÜ   )r   r/  r3  r4  rR   Úinline_inbuilt_nn_modulesr�   r›   )r÷  s    r½   Ú$should_optimize_getattr_on_nn_moduler  �  s=   € ô �eœUŸX™XŸ_™_Ó-ò Ü×(Ñ(ò 	DÜ˜eÓ$Ô(CÐCð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)ÚNNModuleAttrAccessorInfoFrÒ   Úpresent_in_generic_dictNrƒ  Úl1_keyÚl2_key)rÔ   rÕ   rÖ   r  r±   r  r  r†  r¿   r½   r  r  š  s'   … ð %*Ð˜TÓ)ð !€FˆMÓ ð !€FˆMÔ r¿   r  ÚGuardManagerTypec                ón  — | 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        «      sN|j                  ||| j                  t        j                  ¬«      j                  | j                  |› d|›�gd «       |j!                  ||	||¬«      S )NÚ[r  ©r¸   rY  Úexample_valueÚguard_manager_enumú == )rå  rã  r   r¸   r_   r"  r  r  rÛ  rŠ   ÚintrÐ   Úget_key_managerr  ÚGUARD_MANAGERÚadd_equals_match_guardÚget_value_manager)
rY  Úbase_guard_managerÚbase_example_valuer  r   Úbase_source_namer¸   Ú
key_sourceÚkey_example_valueÚvalue_sources
             r½   Úgetitem_on_dict_managerr-  ©  s9  € ð —{‘{×'Ñ'ÐÜ�&—,‘,Ô 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Àdô
ð ×/Ñ/ØØØ#Ø-ð	 0ó ð r¿   c                ó¤   — | j                   }t        |t        «      ry| j                  «       ry|j	                  «       xr t        |t
        «       S ©NFT)rÝ  r   ru   Úis_specialized_nn_moduleÚis_dict_keyrn   )rN  rY  s     r½   Úmatch_on_id_for_tensorr2  Ö  sJ   € Ø×%Ñ%€Fô �&Ô+Ô,Øà×%Ñ%Ô'Øà×ÑÓÒF¬
°6¼:Ó(FÐ$FÐFr¿   c                  ó"   — e Zd ZU ded<   ded<   y)ÚGuardCodeListr  Ú	code_listr;   rN  N©rÔ   rÕ   rÖ   r±   r†  r¿   r½   r4  r4  å  s   … àÓØ„Lr¿   r4  c                  ó   — e Zd ZdZdZy)r  rQ   é   N)rÔ   rÕ   rÖ   r$  ÚDICT_GUARD_MANAGERr†  r¿   r½   r  r  ë  s   „ Ø€MØÑr¿   c                ó<   — t        t        t        | «      «      «      S rÜ   )rÛ  rÒ  r   )r¹   s    r½   r¶   r¶   ð  s   € ä”Ô/°Ó5Ó6Ó7Ð7r¿   c                  óÆ  — e Zd Z	 	 	 d<	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d=d„Z	 	 	 	 	 	 d>d„Zd?d„Zed@d„«       Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dAd„ZdBd„Z		 	 	 	 	 	 dCd„Z
dDd	„ZdEd
„ZdFd„ZdGd„Z	 	 dH	 	 	 	 	 	 	 	 	 dId„Z	 dJ	 	 	 	 	 dKd„ZdLd„Z	 	 	 	 	 	 	 	 dMd„ZdNd„Z	 dJ	 	 	 	 	 dOd„ZdNd„ZdNd„ZdPd„ZdQd„ZdNd„ZdNd„ZdJdRd„Z	 dJ	 	 	 	 	 dRd„ZdJdSd„ZdNd„ZdNd„ZdNd„Z dNd„Z!dNd „Z"dNd!„Z#dNd"„Z$dJdRd#„Z%dNd$„Z&dNd%„Z'dNd&„Z(dNd'„Z)dNd(„Z*dNd)„Z+dNd*„Z,dNd+„Z-dNd,„Z.dNd-„Z/dTd.„Z0dNd/„Z1dNd0„Z2dNd1„Z3dNd2„Z4dNd3„Z5dNd4„Z6dNd5„Z7dNd6„Z8dNd7„Z9dNd8„Z:dNd9„Z;dJdSd:„Z<	 	 dU	 	 	 	 	 	 	 	 	 dVd;„Z=y)WÚGuardBuilderNc                ó@  — || _         || _        || _        || _        ||dœ| _        t        j                  «       | _        |
xs || _        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 | _        || _        i | _        |	| _        || _        t9        «       | _        | j0                  j<                  €J ‚| j0                  j<                  j>                  D ]7  }| jA                  |«      }| j:                  jC                  tE        |«      «       Œ9 i | _#        i | _$        t9        «       | _%        g | _&        tN        jP                  xr tS        d«      | _(        tU        «       | _+        y )	N©ÚLÚGÚ__builtins__Ú>Ú_Ú<Ú.Ú_dot_ú!pytorch/compiler:guard_nn_modules),Úf_codeÚid_refÚ
source_refÚlookup_weakrefsÚscopeÚweakrefÚWeakKeyDictionaryÚsrc_get_value_cacheÚruntime_global_scopeÚbuiltinsÚ__dict__Úcopyr/  ÚpackageÚpackage_importerÚ_package_imported_modulesrö   rÍ  rW  Úargnamesr¹   Úshape_env_codeÚno_tensor_aliasing_namesÚ!no_tensor_aliasing_guard_managersÚcheck_fn_managerÚguard_tree_valuesÚsave_guardsÚguard_filter_fnré   Úkey_order_guarded_dict_idsÚoutput_graphÚguard_on_key_orderÚgetr÷   Úidrç   Ú_cached_guard_managersÚ_cached_duplicate_input_guardsÚobject_aliasing_guard_codesrR   Úguard_nn_modulesrF   rM   Úalready_added_code_parts)rÆ   rH  rI  rJ  rK  Úlocal_scoperã   rW  r[  r]  rP  r^  rã  Úpackage_modulerY  Údict_objs                   r½   rì   zGuardBuilder.__init__ö  sö  € ð ˆŒØˆŒØ$ˆŒØ.ˆÔØ9DÈ<Ñ3XˆŒ
ä×%Ñ%Ó'ð 	Ô ð %9Ò$H¸LˆÔ!Ü%-×%6Ñ%6×%;Ñ%;Ó%=ˆ�
‰
�>Ñ"ô �]‰]×+Ñ+×EÑE×KÑKÖMñ
ØØà—<‘<  SÓ)×1Ñ1°#°sÓ;×CÑCÀCÈÓQˆDà/=ˆD�J‰J�~Ñ& tÑ,à-ˆD�J‰J�tÒð Nð +ˆÔà#%ˆŒà)+ˆŒ	ð
 46ˆÔð 46ˆÔ%ØEGˆÔ.à6FˆÔà13ˆÔØ&ˆÔØ.ˆÔô +.«%ˆÔ'Ø×$Ñ$×1Ñ1Ð=Ð=Ð=Ø×+Ñ+×8Ñ8×KÔKˆFØ—x‘x Ó'ˆHØ×+Ñ+×/Ñ/´°8³Õ=ð Lð BDˆÔð @BˆÔ#ÜDGÃEˆÔ+ØBDˆÔ(Ü &× 7Ñ 7ò !
¼OØ/ó=
ˆÔô :D»ˆÕ%r¿   c                óT  — | 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 )r¸   r  r  ©r  rY  r  r   )
Úget_guard_managerr   r   ÚNotImplementedErrorrã  rÝ  rŠ   rc   Úget_guard_manager_typeÚdict_getitem_manager)	rÆ   r  rN  Údict_mgrÚdict_sourcer  r÷  r,  r   s	            r½   Ú#guard_on_dict_keys_and_ignore_orderz0GuardBuilder.guard_on_dict_keys_and_ignore_orderF  sÅ   € ð ×)Ñ)¨%Ó0ˆÜ�hÔ 0Ô1Ü%ðFØFKÇjÁjÀ\ðSóð ð ×.Ñ.×3Ñ3ˆô % ]Ö3ˆCØ! #Ñ&ˆEÜ,¨U×-EÑ-EÈSÔQˆLØ!%×!<Ñ!<Ø˜mó"Ðð ×)Ñ)ØØ%˜ a¨ w¨aÐ0Ø#Ø#5ð	 *õ ñ 4r¿   c                ó4  — | j                  |«      }t        |t        «      st        d|j                  › �«      ‚t        |t        «      sJ ‚t        t        |«      «      D ]¶  \  }}t        |j                  |«      }|j                  |||t        j                  ¬«      }t        |«      rA| j                  ||«      }|j                  |t        d|› d|› d�|«      |j                  «       Œ‹|j!                  |t        |› d|›�|«      |j                  «       Œ¸ y )Nz_Expecting a DictGuardManager. Seems like Dynamo forgot to set the right guard manager enum for r  z__check_obj_id(rT  rU  r!  )rn  r   r   ro  rã  Ú	enumeraterŠ   r  r#  r  r$  r”   rI  Úadd_id_match_guardrà  rÑ  r%  )	rÆ   r÷  rN  rr  ra  r  r*  Úkey_managerÚid_vals	            r½   Úguard_on_dict_keys_and_orderz)GuardBuilder.guard_on_dict_keys_and_orderd  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ØÜ*¨j¨\¸¸c¸WÐ+EÀuÓMØ×$Ñ$õñ) <r¿   c                ó¨   — t         j                  rAt        j                  dk\  r.t        j                  dk  rt	        j
                  dt        «       y | S )N)é   é   )r|  r}  rQ   zMGuards may run slower on Python 3.13.0. Consider upgrading to Python 3.13.1+.)rR   Ú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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}}|rPt        |j                  |«      }|j                  }|
|   }| j!                  ||«      }|}|}| j!                  ||«      }n|}|}| j!                  ||«      }|j#                  || j%                  |
«      t&        j(                  ¬
«      } |||||
||¬«      }|r|�|€J ‚ |||||||¬«      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        «      rdt        ||«      }d|› d|›d�}| j                  |||t        j
                  ¬«      j                  ||› d|›�gd «       | j                  ||||¬«      S | j                  ||||¬«      S )Nr  r  r  r  r!  rm  )	r   r   r  r#  r  r$  r%  r&  rq  )r  r  Úsource_namer(  r  r   r¸   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ÈDÔQð ×,Ñ,ØØ&Ø"/Ø'9ð	 -ó ð ð ×/Ñ/ØØ&Ø"/Ø'9ð	 0ó ð r¿   FNTÚ_parametersÚ_buffersÚ_modules©ÚattrrY  r  r   ú	.__dict__©rY  r  r   )r  r  r‡  r(  r  r   )r  r   r  r   r‡  rÐ   r(  r   r  r   r   r  rÏ   r   )ÚmemberrR  ré   r˜  ÚgetmrorÍ   ÚupdateÚkeysr  r  Úgetattr_managerr  r  rW   rå  rã  rp  Úget_generic_dict_managerr„  r  r$  )rÆ   rY  r'  r(  r  r)  r‡  r   rˆ  Ú	attr_nameÚmod_dictÚall_class_attribute_namesrp  Ú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#	Øð#	àð#	ð ð#	ð !$ð	#	ð
 ð#	ð !1ð#	ð ó#	ðJ —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Ó;�	Ø!*§¡�Ø# FÑ+�ð )-×(CÑ(CÀIÈxÓ(XÐ%à!,�Ø(�Ø(,×(CÑ(CØ˜Mó)Ñ%ð "-�Ø(�Ø(,×(CÑ(CØ˜Mó)Ð%ð (:×'RÑ'RØ&Ø"×JÑJÈ8ÓTÜ#3×#AÑ#Að (Só (Ð$ñ )Ø,ØØ*Ø#+Ø&Ø#8ôˆFñ Ø%Ð1Ð6KÐ6WÐWÐWÙ*ØØØ .Ø'/Ø"*Ø'<ôð ð ˆMr¿   c                óv   — |j                   }|dk(  ryt        | j                  |«      «      }|| j                  v S )Nrh  F)rã  rc  rb  r_  )rÆ   rY  r‡  Úobj_ids       r½   Úrequires_key_order_guardingz(GuardBuilder.requires_key_order_guarding:  s:   € Ø—k‘kˆØ˜"ÒØÜ�D—H‘H˜VÓ$Ó%ˆØ˜×8Ñ8Ð8Ð8r¿   c                ó   — t         j                  }| j                  |«      rlt        |t        «      rt         j
                  }|S t        |t        t        f«      rt         j                  }|S t        |t        «      sJ ‚t         j
                  }|S rÜ   )	r  r$  r§  r   r�   r9  ré   Ú	frozensetr"  )rÆ   rY  r  r   s       r½   rp  z#GuardBuilder.get_guard_manager_typeA  s‡   € ô .×;Ñ;ÐØ×+Ñ+¨FÔ3ä˜-¬Ô3Ü%5×%HÑ%HÐ"ð "Ð!ô ˜M¬C´Ð+;Ô<ô &6×%CÑ%CÐ"ð "Ð!ô " -´Ô6Ð6Ð6Ü%5×%HÑ%HÐ"Ø!Ð!r¿   c                ó(   — |t         j                  k(  S rÜ   )r  r9  )rÆ   Úmgr_enums     r½   Úmanager_guards_on_keysz#GuardBuilder.manager_guards_on_keysW  s   € ØÔ+×>Ñ>Ñ>Ð>r¿   c                óž   — | j                   j                  j                  | j                  d| j                  d   t
        j                  ¬«      S )Nr@  )Ú	f_globalsrY  r  r   )rW  rÝ   Úglobals_dict_managerrP  rL  r  r$  rÅ   s    r½   Úget_global_guard_managerz%GuardBuilder.get_global_guard_managerZ  sF   € Ø×!Ñ!×&Ñ&×;Ñ;Ø×/Ñ/ØØŸ*™* S™/Ü/×=Ñ=ð	 <ó 
ð 	
r¿   c           	     ó¾  ‡— | j                   j                  }d }‰j                  }|dk7  r|| j                  v r| j                  |   S |dk7  r)| j	                  ‰«      }|| j
                  t        |«      <   | j                  ‰|«      }d }d }d }t        j                  }	t        ‰t        «      rh‰j                  j                  }| j	                  ‰j                  «      }| j                  ‰j                  «      }| j                  ‰j                  |«      }	t        ‰t        «      rCt!        | j"                  ‰j$                  «      }
|j'                  ‰j$                  |
f|||¬«      }�	n[t        ‰t(        «      r/| j+                  «       j-                  ‰j.                  |||¬«      }�	nt        ‰t0        «      r/| j+                  «       j3                  ‰j.                  |||¬«      }�nÝt        ‰t4        «      r|S t        ‰t6        «      r|S t        ‰t8        «      r|sJ ‚|j;                  |||¬«      }�n�t        ‰t<        «      r|sJ ‚|j?                  |||¬«      }�net        ‰t@        «      r|sJ ‚|jC                  |||¬«      }�n;t        ‰tD        tF        tH        tJ        tL        f«      r|sJ ‚|}�nt        ‰tN        «      r9tQ        jR                  ‰jT                  «      }|jW                  |fd„|||¬«      }�nÅt        ‰tX        «      r|jW                  ˆfd„|||¬«      }�n›t        ‰tZ        «      r|jW                  ˆfd„|||¬«      }�nqt        ‰t\        «      r|sJ ‚|j_                  |||¬«      }�nGt        ‰t`        «      r%|sJ ‚|jc                  ‰jd                  |||¬	«      }�nt        ‰tf        th        tj        f«      r_|sJ ‚t        ‰tf        «      sJ ‚tm        |«      r|sJ ‚| jo                  ‰||||||«      }�n¹|jq                  ‰jd                  |||¬	«      }�n˜t        ‰tr        tt        f«      r¸|sJ ‚t        |tv        tx        jz                  f«      sJ ‚t        ‰tr        tt        f«      sJ ‚t        |t|        «      r$| j                  |	«      sJ ‚t�        ‰||||«      }�nt        ‰j‚                  t„        «      rt‡        d
«      ‚|j-                  ‰j‚                  |||¬«      }�nÊt        ‰tˆ        «      rH t‹        |d‰jŒ                  j                  j�                  «       › d�«      ‰j�                  |||¬«      }�nrt        ‰t’        «      r%|sJ ‚|j•                  ‰j�                  |||¬«      }�n=t        ‰t–        «      r%|sJ ‚|j™                  ‰j‚                  |||¬«      }�nt        ‰tš        «      rä|sJ ‚t        |tv        tx        jz                  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§                  ||||¬«      }�nt        ‰t¨        «      rÖ|sJ ‚|sJ ‚t«        |«      sJ ‚‰j¬                  sK|j¯                  ||j°                  t        j                  ¬«      j§                  ‰j²                  |||¬«      }�n˜|j´                  }|€J ‚|dz   }|j·                  ||t        j                  ¬«      }t        |t|        «      rJ ‚|j-                  ‰j²                  |||¬«      }�n.t        ‰t¸        «      r|sJ ‚|jW                  tº        |||¬«      }�nÿt        ‰t¼        «      r|sJ ‚|jW                  d„ |||¬«      }�nÓt        ‰t¾        «      r|sJ ‚|jW                  d„ |||¬«      }�n§t        ‰tÀ        «      r|sJ ‚|jW                  d„ |||¬«      }�n{t        ‰tÂ        «      r|sJ ‚|jW                  d„ |||¬«      }�nOt        ‰tÄ        «      r|sJ ‚|jW                  d„ |||¬«      }�n#t        ‰tÆ        «      r|sJ ‚|jW                  d„ |||¬«      }�n÷t        ‰tÈ        «      r%|sJ ‚|jË                  ‰j‚                  |||¬«      }�nÂt        ‰t„        «      r<t        |t|        «      stÍ        d«      ‚|jÏ                  ‰j‚                  |||¬«      }�nvt        ‰tÐ        «      r%|sJ ‚|jÓ                  ‰j‚                  |||¬«      }�nAt        ‰tÔ        «      r|sJ ‚|j×                  |||¬«      }�nt        ‰tØ        «      r|sJ ‚|jÛ                  |||¬«      }nît        ‰tÜ        «      r|sJ ‚|jW                  d„ |||¬«      }nÃt        ‰tÞ        «      r|sJ ‚|jW                  d„ |||¬«      }n˜t        ‰tà        «      r|sJ ‚|jã                  |||¬«      }not        ‰tä        «      r|sJ ‚|jç                  |||¬«      }nFt        ‰tè        «      r|sJ ‚|jW                  d„ |||¬«      }ntÍ        d‰› d‰j                  › �«      ‚|| j                  ‰j                  <   |S )Nrh  rm  )Úglobal_namerY  r  r   r�  c                ó   — |S rÜ   r†  )rC  r›  s     r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Â  s   € ±!r¿   )Úpython_lambdarY  r  r   c                ó6   •— t        ‰j                  «       «      S rÜ   )r‘   Ú
_get_index©rC  rY  s    €r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>É  s   ø€ Ô(HØ×%Ñ%Ó'ô)r¿   c                ó.   •— t        ‰j                  «      S rÜ   )rŽ   rº  r·  s    €r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Ò  s   ø€ Ô(:¸6¿=¹=Ô(Ir¿   rŒ  zUExpecting clean index here. Likely Dynamo forgot to mark a dict as guard_on_key_orderÚtensor_property_Ú_manager)ra  rY  r  r   zUse DictGetItemSourcez.__kwdefaults__c                ó(   — | j                  «       d   S rñ   ©Ú__tensor_flatten__r²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>|  s   € ¨×(<Ñ(<Ó(>¸qÒ(Ar¿   c                ó"   — | j                  «       S rÜ   )Ú__obj_flatten__r²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>„  s   € ¨×(9Ñ(9Ô(;r¿   c                ó>   — | j                  «       j                  «       S rÜ   )Ú_typeÚqualified_namer²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Œ  s   € ¨¯©«	×(@Ñ(@Ô(Br¿   c                ó"   — | j                  «       S rÜ   )Úget_baser²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>”  s
   € ¨¯
©
¬r¿   c                ó"   — | j                  «       S rÜ   )Úitemr²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>œ  s
   € ¨¯©¬r¿   c                ó,   — t        j                  | «      S rÜ   )r/  rÇ  r²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>¤  s   € ¬×(AÑ(AÀ!Ô(Dr¿   r  z4ConstDictKeySource can only work on DictGuardManagerc                ó   — t        | «      S rÜ   )rŒ   r²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Õ  s
   € Ô(8¸Ô(;r¿   c                ó   — | j                   S rÜ   r°  r²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Ý  s   € ¨¯	ª	r¿   c                ó   — t        | «      S rÜ   )r"  r²  s    r½   r©  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>ó  s   € ¬¨A¬r¿   zmissing guard manager builder z - )urW  rÝ   rã  rd  rb  r\  rc  rp  r  r$  r   r[   rå  Úget_guard_manager_from_sourcer“   rq   r¾   rH  Ú
local_nameÚframelocals_managerrk   r°  rq  r²  rm   Úglobal_weakref_managerrl   rx   r~   Útype_managerr|   Útype_dict_managerr}   Útype_mro_managerrv   rs   r€   r   rh   ro   rÃ  rÄ  Úmodule_nameÚlambda_managerrz   r`   rn   Úgrad_managerri   Úgeneric_getattr_managerr�  rW   rZ   r�   r  r¤  r”  rc   rd   r"  r½  r¾  r   r¬  r-  r¸   r_   ÚRuntimeErrorr5   ÚgetattrÚpropÚlowerra  r.   Úindexed_managerrp   Úlist_getitem_managerrj   rÛ  Úindex_is_slicer=  Útuple_getitem_managerÚunpack_sliceÚgetitem_managerrb   ÚcallableÚis_kwÚfunc_defaults_managerr­   Úidx_keyr®   Úfunc_kwdefaults_managerru   r�  ry   rf   rw   rV   rY   rg   r{   Útuple_iterator_getitem_managerÚAssertionErrorr#  rt   Úset_getitem_managerr‚   Úweakref_call_managerrX   Úcall_function_no_args_managerra   rr   r]   Úcode_managerr\   Úclosure_managerre   )rÆ   rY  Úroot_guard_managerr  r‡  r   r)  r(  r'  Úbase_guard_manager_enumr¼   ÚoutÚmoduler¸   Ú
kwdefaultsÚ	kw_sourcerr  s    `               r½   rË  z*GuardBuilder.get_guard_manager_from_sourceb  sð  ø€ Ø!×/Ñ/×4Ñ4ÐàˆØ—k‘kˆà˜"Ò °×0KÑ0KÑ!KØ×.Ñ.¨{Ñ;Ð;à˜"ÒØ ŸH™H VÓ,ˆMØ8EˆD×"Ñ"¤2 mÓ#4Ñ5à!×8Ñ8¸ÀÓOÐð  ÐØ!ÐØ!ÐÜ"2×"@Ñ"@ÐÜ�fœmÔ,Ø%Ÿ{™{×/Ñ/ÐØ!%§¡¨&¯+©+Ó!6ÐØ!%×!CÑ!CÀFÇKÁKÓ!PÐØ&*×&AÑ&AØ—‘Ð/ó'Ð#ô
 �&œ+Ô&Ü1°$·+±+¸v×?PÑ?PÓQˆOØ$×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ô
 �FœNÔ+Ù%Ð%Ð%Ø$×6Ñ6Ø"Ø+Ø#5ð 7ó ŠCô
 �FœMÔ*Ù%Ð%Ð%Ø$×5Ñ5Ø"Ø+Ø#5ð 6ó ŠCô
 ØäÜÜ+Ü2Ü"ðô	
ñ &Ð%Ð%Ø$ŠCÜ�FœLÔ)Ü×,Ñ,¨V×-?Ñ-?Ó@ˆFØ$×3Ñ3Ø*0Ò3Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ8Ô9Ø$×3Ñ3óð #Ø+Ø#5ð 4ó ŠCô �FÔ/Ô0Ø$×3Ñ3ÛIØ"Ø+Ø#5ð	 4ó ŠCô �FœJÔ'Ù%Ð%Ð%Ø$×1Ñ1Ø"Ø+Ø#5ð 2ó ŠCô
 �FÔ-Ô.Ù%Ð%Ð%Ø$×<Ñ<Ø—]‘]Ø"Ø+Ø#5ð	 =ó ŠCô Ø”ZÔ!3Ô5SÐTô
ñ &Ð%Ð%Ü˜f¤jÔ1Ð1Ð1Ü3Ð4FÔGÙ'Ð'Ð'Ø×/Ñ/ØØ&Ø&Ø!Ø$ØØ&ó’ð )×8Ñ8ØŸ™Ø&Ø"/Ø'9ð	 9ó ’ô �FÔ.Ô0IÐJÔKÙ%Ð%Ð%ÜÐ0´4¼×9PÑ9PÐ2QÔRÐRÐRÜ˜fÔ'8Ô:SÐ&TÔUÐUÐUÜÐ,Ô.>Ô?Ø×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Ô;Ô<Ù%Ð%Ð%Ø$×8Ñ8Ø—l‘lØ"Ø+Ø#5ð	 9ó ŠCô �FÔ-Ô.Ù%Ð%Ð%Ø$×9Ñ9Ø"Ø+Ø#5ð :ó ŠCô
 �FÔ4Ô5Ù%Ð%Ð%Ø$×BÑBØ"Ø+Ø#5ð Có ‰Cô
 �FÔ1Ô2Ù%Ð%Ð%Ø$×3Ñ3Ù;Ø"Ø+Ø#5ð	 4ó ‰Cô �FÔ2Ô3Ù%Ð%Ð%Ø$×3Ñ3Ù1Ø"Ø+Ø#5ð	 4ó ‰Cô �FœJÔ'Ù%Ð%Ð%Ø$×1Ñ1Ø"Ø+Ø#5ð 2ó ‰Cô
 �FœMÔ*Ù%Ð%Ð%Ø$×4Ñ4Ø"Ø+Ø#5ð 5ó ‰Cô
 �FÔ/Ô0Ù%Ð%Ð%Ø$×3Ñ3Ù.Ø"Ø+Ø#5ð	 4ó ‰Cô !Ø0°°¸¸F¿K¹K¸=ÐIóð ð 47ˆ×#Ñ# F§K¡KÑ0Øˆ
r¿   c                ó8   — | j                  |j                  «      S rÜ   )rË  rÝ  ©rÆ   rN  s     r½   rn  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                  |
|d «       y | j                  j                  j                  |
|d «       y )NrT  r@  zPython shape guard function:
%sÚ___make_guard_fn)rÈ  Újoinr“  Úbuild_guard_functionrL  Ú
guards_logÚdebugÚexecr$  rW  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ÐSWÕXr¿   c                óª   — t        |t        «      r|}n|j                  }|€
t        «       }|j	                  | j
                  || j                  «      }|S rÜ   )r   r?   rÝ  rÈ  Ú	get_valuerL  rO  )rÆ   Úguard_or_sourcerß   ÚsrcÚrets        r½   rb  zGuardBuilder.get(  sM   € ô
 �o¤vÔ.Ø!‰Cà!×4Ñ4ˆCØÐÜ,Ó.ˆLØ�m‰m˜DŸJ™J¨°d×6NÑ6NÓOˆØˆ
r¿   c                ó8  — t        |t        «      r|}n|j                  }t        |«      }|| j                  vrat
        j                  j                  j                  |«      }|r6|dk(  rt        j                  d|«       | j                  j                  |«       |S )Nr8  zinvalid var name: %s)r   rÐ   rã  Ústrip_function_callrW  r/  rò  r”  Úis_valid_var_nameÚlogÚwarningrx  )rÆ   rN  rã  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                óÎ   — |dk(  rt        |j                  «      }nt        |j                  |«      }t        |||j                  |j
                  ¬«      }|j                  | «       y )Nr¯   )rÔ  rÑ  )r]   rÝ  rW   r;   rÔ  rÑ  Úcreate)rÆ   rN  r–  r  Úattr_sourceÚ	new_guards         r½   Ú_guard_on_attributez GuardBuilder._guard_on_attributeK  s[   € ð ˜
Ò"Ü$ U×%=Ñ%=Ó>‰Kä$ U×%=Ñ%=¸yÓIˆKäØ˜¨¯©À×AQÑAQô
ˆ	ð 	×Ñ˜Õr¿   c           	     óž  — |j                   }t        |t        «      r|j                  }t        |t        «      ry t        |t
        «      sJ d|j                  › �«       ‚|j                  }|j                  }|j                  }| j                  |«      }t        | j                  |«      |«      }d }|r
d|› d|›d�}n	d|› d|›d�}|| j                  v ry | j                  ||g| j                  |«      ¬«       | j                  |«      }	|r�| j                  |«      }
| j                  |«      }| j                  ||
«      }t        |«      r"| j!                  ||	||
||j                  |«       nG|	j#                  ||j                  |
|¬«       n'|	j%                  |t'        ||«      |j(                  «       | j                  j+                  |«       y )Nzinvalid source úhasattr(rT  rU  znot hasattr()Úprovided_guarded_objectrŒ  )rÝ  r   rs   rå  r]   rW   rã  r�  r  rj  rb  rh  Ú_set_guard_export_inforË  rp  r  r¤  r”  Úadd_no_hasattr_guardrà  rÑ  r÷   )rÆ   rN  rY  Úbase_sourcerå  r�  ÚrefÚvalr¹   Úbase_managerr  r(  r   s                r½   ÚHASATTRzGuardBuilder.HASATTR\  sÌ  € Ø×)Ñ)ˆÜ�fœnÔ-Ø—[‘[ˆFÜ�fœjÔ)àÜ˜&¤*Ô-ÐM°ÀÇÁÀÐ/MÓMÐ-Ø—k‘kˆØ×ÑˆØ�}‰}ˆà�l‰l˜4Ó ˆÜ�d—h‘h˜{Ó+¨TÓ2ˆØˆÙØ˜c˜U " T H¨AÐ.‰Dà! #  b¨¨°Ð2ˆDà�4×0Ñ0Ñ0Øà×#Ñ#Ø�D�6°4·8±8¸KÓ3Hð 	$ô 	
ð ×9Ñ9¸+ÓFˆÙð !ŸH™H VÓ,ˆMØ!%§¡¨+Ó!6ÐØ!%×!<Ñ!<¸VÀ]Ó!SÐô 4Ð4FÔGØ×)Ñ)ØØ Ø&Ø!ØØ—K‘KØ&õð ×,Ñ,ØØ Ÿ:™:Ø"/Ø'9ð	 -õ ð ×-Ñ-ØÔ,¨T°5Ó9¸5×;KÑ;Kôð 	×%Ñ%×)Ñ)¨$Õ/r¿   c                ó¼  — |€J ‚| j                  |«      }| j                  |«      }| j                  |«      }d|›d|› d�}|| j                  v ry |j                  › d�}|j                  || j                  |j                  «      t        j                  ¬«      }|j                  d|t        ||«      |j                  «       | j                  j                  |«       y )Nznot ___dict_contains(rT  z
.__dict__)rŽ  r�  F)r  rb  rn  rh  rã  r•  r„  rR  r  r$  Úadd_dict_contains_guardrà  rÑ  r÷   )	rÆ   rN  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‹oˆà×-Ñ-¨eÓ4ˆà& t h¨b°°°ZÐ@ˆØ�4×0Ñ0Ñ0Øà"ŸZ™Z˜L¨	Ð2ˆØ#/×#HÑ#HØ"Ø×FÑFÀsÇ|Á|ÓTÜ/×=Ñ=ð $Ió $
Ð ð 	!×8Ñ8ØØÜ" 4¨Ó/Ø×Ñô		
ð 	×%Ñ%×)Ñ)¨$Õ/r¿   c           	     ó0  — | j                  |«      }t        |t        j                  j                  «      r|j
                  r|j
                  }nt        |«      }|j                  |j                  k7  rd|_	        | j                  |d|j                  › d�«      }t        |«      }d| j                  |«      › d|› d|› �}| j                  ||g«       | j                  |«      j!                  |t#        ||d|j                  › �¬«      |j$                  «       y )	NTútype(rU  z___check_type_id(rT  ú), type=ztype )rÞ  )rb  r   r/  Ú_subclassesÚ
FakeTensorrú  r?  rÖ   rÔ   Ú_unserializablerI  rã  rf  r  r  rn  Úadd_type_match_guardrà  rÑ  )rÆ   rN  r÷  rZ  r¦  Ú	type_reprr¹   s          r½   Ú
TYPE_MATCHzGuardBuilder.TYPE_MATCH´  só   € à—‘˜“ˆÜ�eœU×.Ñ.×9Ñ9Ô:¸u¿|º|Ø—‘‰Aä�U“ˆAà�>‰>˜QŸZ™ZÒ'ð %)ˆEÔ!à—‘˜Q %¨¯
©
 |°1Ð 5Ó6ˆÜ˜“Gˆ	Ø" 4§<¡<°Ó#6Ð"7°r¸&¸ÀÈ)ÈÐUˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×:Ñ:ØÜ"Ø�e¨e°A·N±NÐ3CÐ,Dôð ×Ñõ	
r¿   c                ó  — | j                  |«      }| j                  |«      }t        | j                  |«      «      }d|› d|› �}| j                  ||g«       | j	                  |«      j                  |t        ||«      |j                  «       y )Nz___dict_version(ú) == )r  rb  r   r  rn  Úadd_dict_version_guardrà  rÑ  )rÆ   rN  r  r  Úversionr¹   s         r½   ÚDICT_VERSIONzGuardBuilder.DICT_VERSIONÎ  sƒ   € à�l‰l˜5Ó!ˆØ�h‰h�u‹oˆÜ˜tŸx™x¨›Ó/ˆØ! #  e¨G¨9Ð5ˆØ×#Ñ# E¨D¨6Ô2ð 	×Ñ˜uÓ%×<Ñ<ØÔ'¨¨eÓ4°e×6FÑ6Fõ	
r¿   c                ó2  — | j                  |«      }|rdnd}|› d|›d|› d�}|| j                  v ry | j                  ||g«       | j                  |«      j	                  | |t        ||«      |j                  «       | j                  j                  |«       y )Núnot rh  z___dict_contains(rT  rU  )r  rh  r  rn  r   rà  rÑ  r÷   )rÆ   rN  r  ÚinvertÚdict_refÚ	maybe_notr¹   s          r½   ÚDICT_CONTAINSzGuardBuilder.DICT_CONTAINSÜ  sŸ   € Ø—<‘< Ó&ˆá$‘F¨"ˆ	Ø�Ð-¨c¨W°B°x°jÀÐBˆØ�4×0Ñ0Ñ0ØØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×=Ñ=ØˆJØÜ" 4¨Ó/Ø×Ñô		
ð 	×%Ñ%×)Ñ)¨$Õ/r¿   c                ó*  — | j                  |«      }|}| }d|› d|›d�}|| j                  v ry | j                  ||g«       | j                  |«      j	                  ||t        ||«      |j                  «       | j                  j                  |«       y )Nzset.__contains__(rT  rU  )r  rh  r  rn  Úadd_set_contains_guardrà  rÑ  r÷   )rÆ   rN  r  r2  Úset_refrÆ  Úcontainsr¹   s           r½   ÚSET_CONTAINSzGuardBuilder.SET_CONTAINSí  s›   € Ø—,‘,˜uÓ%ˆØˆØ�:ˆà" 7 )¨2¨d¨X°QÐ7ˆØ�4×0Ñ0Ñ0Øà×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×<Ñ<ØØÜ" 4¨Ó/Ø×Ñô		
ð 	×%Ñ%×)Ñ)¨$Õ/r¿   c                óz  — | j                  |«      }| j                  |«      }t        |t        «      sJ ‚|› d|›�g}| j	                  ||«       |r6| j                  |«      j                  t        ||«      |j                  «       y | j                  |«      j                  t        ||«      |j                  «       y )Nr!  )
r  rb  r“   rÒ   r  rn  Úadd_true_match_guardrà  rÑ  Úadd_false_match_guard©rÆ   rN  r  r  r¹   s        r½   Ú
BOOL_MATCHzGuardBuilder.BOOL_MATCH   s«   € à�l‰l˜5Ó!ˆØ�h‰h�u‹oˆÜ�cœ4Ô Ð Ð Ø�%�t˜C˜7Ð#Ð$ˆØ×#Ñ# E¨4Ô0áØ×"Ñ" 5Ó)×>Ñ>Ü& t¨UÓ3°U×5EÑ5Eõð ×"Ñ" 5Ó)×?Ñ?Ü& t¨UÓ3°U×5EÑ5Eõr¿   c                óê   — | j                  |«      }| j                  |«      }|�J ‚|› d�g}| j                  ||«       | j                  |«      j	                  t        ||«      |j                  «       y )Nz is None)r  rb  r  rn  Úadd_none_match_guardrà  rÑ  r>  s        r½   Ú
NONE_MATCHzGuardBuilder.NONE_MATCH  sq   € à�l‰l˜5Ó!ˆØ�h‰h�u‹oˆØˆ{Ðˆ{Ø�%�xÐ Ð!ˆØ×#Ñ# E¨4Ô0à×Ñ˜uÓ%×:Ñ:Ü" 4¨Ó/°×1AÑ1Aõ	
r¿   c                ó&   — | j                  ||«      S rÜ   )Úid_match_unchecked)rÆ   rN  rÞ  s      r½   ÚID_MATCHzGuardBuilder.ID_MATCH  s   € ð ×&Ñ& u¨nÓ=Ð=r¿   c                ó6  — t        |j                  t        «      r=| j                  t	        |j                  j
                  t        j                  «      «      S | j                  |«      }| j                  |«      }| j                  ||j                  «      }	 t        |«      }d|› d|› d|› �}| j                  ||gd¬«       | j!                  |«      j#                  |t%        |||«      |j&                  «       t        |j                  t(        «      r_t        |t*        j,                  j.                  «      r:|j                  j0                  }| j3                  |«      }	|	�|	| j4                  |<   y y y y # t        $ r dt        |«      j                  › d�}Y Œõw xY w)NrD  rB  z___check_obj_id(rT  r$  rE  )Úprovided_func_name)r   rÝ  r~   r*  r;   rå  r<  r  rb  rI  rã  rf  Ú	Exceptionr?  rÔ   r  rn  rw  rà  rÑ  rq   r/  r3  r4  rÌ  rK  rç   )
rÆ   rN  rÞ  r  r  ry  r)  r¹   rÌ  Úweak_ids
             r½   rD  zGuardBuilder.id_match_unchecked&  sz  € ô �e×.Ñ.´
Ô;à—?‘?Ü�e×.Ñ.×3Ñ3´\×5LÑ5LÓMóð ð �l‰l˜5Ó!ˆØ�h‰h�u‹oˆØ—‘˜S %§*¡*Ó-ˆð	2Ü˜S›	ˆIð
 " #  b¨¨°¸¸ÐDˆØ×#Ñ# E¨D¨6ÀjÐ#ÔQØ×Ñ˜uÓ%×8Ñ8ØÜ" 4¨°Ó?Ø×Ñô	
ô �e×.Ñ.´Ô<ô ˜#œuŸx™xŸ™Ô/Ø"×5Ñ5×@Ñ@�
Ø×.Ñ.¨sÓ3�ØÐ&Ø7>�D×(Ñ(¨Ò4ð 'ð 0ð	 =øô ò 	2ð œD ›I×.Ñ.Ð/¨qÐ1ŠIð	2ús   ÂE3 Å3"FÆFc                ó  — | j                  |«      }| j                  |«      }t        |t        j                  «      sJ ‚|› d�}| j                  ||g«       | j                  |«      j                  t        ||«      |j                  «       y ©Nz is not None)
r  rb  r   r/  r0  r  rn  Úadd_not_none_guardrà  rÑ  )rÆ   rN  r÷  r  r  r¹   s         r½   ÚNOT_NONE_MATCHzGuardBuilder.NOT_NONE_MATCHM  sz   € Ø�l‰l˜5Ó!ˆØ�h‰h�u‹oˆÜ˜#œuŸ|™|Ô,Ð,Ð,Ø��lÐ#ˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×8Ñ8Ü" 4¨Ó/°×1AÑ1Aõ	
r¿   c                ó  — | j                  |«      }| j                  |«      }t        |t        j                  j
                  «      sJ ‚|› d|›d�}| j                  |«      j                  |t        ||«      |j                  «       y )Nz.raw_repr() == z.raw_repr())
r  rb  r   r/  rò  r£   rn  Úadd_dispatch_key_set_guardrà  rÑ  )rÆ   rN  r  r  rá   s        r½   ÚDISPATCH_KEY_SET_MATCHz#GuardBuilder.DISPATCH_KEY_SET_MATCHX  sx   € Ø�l‰l˜5Ó!ˆØ�h‰h�u‹oˆÜ˜#œuŸx™x×6Ñ6Ô7Ð7Ð7Ø�u˜O¨C¨7°+Ð>ˆ
à×Ñ˜uÓ%×@Ñ@ØÜ" :¨uÓ5Ø×Ñõ	
r¿   c                ó  — | j                   j                  €J ‚| j                   j                  j                  }d|› �g}| j                  ||«       | j                  j
                  j                  |t        ||«      |j                  «       y )Nz,torch.autograd.forward_ad._current_level == )	r[  r`  Ú
dual_levelr  rW  rÝ   Úadd_dual_level_match_guardrà  rÑ  )rÆ   rN  rR  r¹   s       r½   Ú
DUAL_LEVELzGuardBuilder.DUAL_LEVELd  s‚   € ð ×$Ñ$×1Ñ1Ð=Ð=Ð=Ø×*Ñ*×7Ñ7×BÑBˆ
Ø>¸z¸lÐKÐLˆØ×#Ñ# E¨4Ô0Ø×Ñ×Ñ×:Ñ:ØÜ" 4¨Ó/Ø×Ñõ	
r¿   c                ó¼  ‡‡— | j                   j                  €J ‚| j                   j                  j                  }|D �cg c]  }|j                  «       ‘Œ c}Šd‰› d�g}| j	                  ||«       t
        j                  j                  j                  Šdˆˆfd„}| j                  j                  j                  |t        ||«      |j                  «       y c c}w )Nz5torch._functorch.pyfunctorch.compare_functorch_state(rU  c                ó   •—  ‰‰«      S rÜ   r†  )rp  Ú
compare_fnÚstatess    €€r½   Úfnz.GuardBuilder.FUNCTORCH_STACK_MATCH.<locals>.fn}  s   ø€ Ù˜fÓ%Ð%r¿   r„  )r[  r`  Úfunctorch_layersÚ	get_stater  r/  Ú
_functorchÚpyfunctorchÚcompare_functorch_staterW  rÝ   rü  rà  rÑ  )rÆ   rN  ÚcisÚcir¹   rY  rW  rX  s         @@r½   ÚFUNCTORCH_STACK_MATCHz"GuardBuilder.FUNCTORCH_STACK_MATCHq  sÃ   ù€ ð ×$Ñ$×1Ñ1Ð=Ð=Ð=Ø×#Ñ#×0Ñ0×AÑAˆÙ+.Ó/©3 R�"—,‘,•.¨3Ñ/ˆØGÈÀxÈqÐQÐRˆØ×#Ñ# E¨4Ô0ô ×%Ñ%×1Ñ1×IÑIˆ
ö	&ð 	×Ñ×Ñ×0Ñ0ØÔ& t¨UÓ3°U×5EÑ5Eõ	
ùò 0s   ¿Cc                ó¨  ‡‡‡‡— t         j                  j                  j                  j                  Št         j                  j                  j                  j
                  Š	 	 	 	 dˆfd„Š ‰ ‰«       «      Šd‰› �g}| j                  ||«       dˆˆˆfd„}| j                  j                  j                  |t        ||«      |j                  «       y )Nc                óH   •—  ‰| «      sy t        t        t        | «      «      S rÜ   )r=  Úmaprc  )ÚhooksÚare_inline_hookss    €r½   Úhooks_ids_fnz?GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS.<locals>.hooks_ids_fnŠ  s!   ø€ ñ $ EÔ*ØäœœR ›Ó(Ð(r¿   zCtorch._functorch.aot_autograd.utils.top_saved_tensors_hooks ids == c                ó$   •— ‰ ‰ ‰«       «      k(  S rÜ   r†  )rp  Ú	get_hooksÚguard_hooks_idsrg  s    €€€r½   rY  z5GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS.<locals>.fn™  s   ø€ Ø"¡l±9³;Ó&?Ñ?Ð?r¿   )re  zCtuple[Callable[[torch.Tensor], Any], Callable[[Any], torch.Tensor]]rÏ   zOptional[tuple[int, ...]]r„  )r/  r\  Ú_aot_autogradrÅ  Útop_saved_tensors_hooksÚ"saved_tensors_hooks_are_inlineabler  rW  rÝ   rü  rà  rÑ  )rÆ   rN  r¹   rY  rf  ri  rj  rg  s       @@@@r½   ÚAUTOGRAD_SAVED_TENSORS_HOOKSz)GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS„  sÂ   û€ Ü×$Ñ$×2Ñ2×8Ñ8×PÑPˆ	ä×Ñ×*Ñ*×0Ñ0×SÑSð 	ð	)ØVð	)à&õ	)ñ '¡y£{Ó3ˆð RÐRaÐQbÐcð
ˆð 	×#Ñ# E¨4Ô0÷	@ð 	×Ñ×Ñ×0Ñ0ØÔ& t¨UÓ3°U×5EÑ5Eõ	
r¿   c                ó’  ‡‡— | j                  |«      }t        | j                  |«      j                  «       d   «      Št        |d«      rt	        |«       t        |«      Šdˆˆfd„}ndˆfd„}dt        |«      › dt        j                  «       › �}| j                  |«      j                  |t        ||«      |j                  «       y )NrQ   Ú__metadata_guard__c                óJ   •— ‰j                  ‰| j                  «       d   «      S rµ   )rp  r½  )rp  ÚclsÚoriginal_metadatas    €€r½   Úmetadata_checkerzEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checker§  s)   ø€ Ø×-Ñ-Ø% q×';Ñ';Ó'=¸aÑ'@óð r¿   c                ó0   •— | j                  «       d   ‰k(  S rµ   r¼  )rp  rs  s    €r½   rt  zEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checker®  s   ø€ Ø×+Ñ+Ó-¨aÑ0Ð4EÑEÐEr¿   Ú___check_metadata_Ú_cr„  )rb  r   r½  rj  rœ   r?  rc  r8   Úcurrent_compile_idrn  rü  rà  rÑ  )rÆ   rN  r÷  rt  r²  rr  rs  s        @@r½   ÚTENSOR_SUBCLASS_METADATA_MATCHz+GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH   s¬   ù€ Ø—‘˜“ˆÜ$ T§X¡X¨e£_×%GÑ%GÓ%IÈ!Ñ%LÓMÐÜ�5Ð.Ô/Ü% eÔ,Ü�u“+ˆC÷õFð +¬2Ð.>Ó+?Ð*@ÀÄ>×CdÑCdÓCfÐBgÐhˆØ×Ñ˜uÓ%×6Ñ6ØÜ" ;°Ó6Ø×Ñõ	
r¿   c                óÎ   ‡— t        | j                  |«      «      Šdˆfd„}dt        |«      › �}| j                  |«      j	                  |t        ||«      |j                  «       y )Nc                ó*   •— | j                  ‰d¬«      S )NT)Úskip_shapes)Ú_check_equals)rp  r÷  s    €r½   r  z1GuardBuilder.DTENSOR_SPEC_MATCH.<locals>.guard_fn½  s   ø€ Ø—?‘? 5°d�?Ó;Ð;r¿   Ú__dtensor_spec_r„  )r   rb  rc  rn  rü  rà  rÑ  )rÆ   rN  r  r¹   r÷  s       @r½   ÚDTENSOR_SPEC_MATCHzGuardBuilder.DTENSOR_SPEC_MATCH¸  s\   ø€ ô ˜Ÿ™ %›Ó)ˆõ	<ð !¤ H£ Ð/ˆØ×Ñ˜uÓ%×6Ñ6ØÔ,¨T°5Ó9¸5×;KÑ;Kõ	
r¿   c                ód  ‡‡— | j                  |«      }t        t        |«      «      Š‰r‰j                  syt	        ‰j                  |«      «      Šdˆˆfd„}dt        |«      › dt        j                  «       › �}| j                  |«      j                  |t        ||«      |j                  «       y)z=Guard on the values returned by the opaque object's guard_fn.Nc                ó0   •— ‰j                  | «      }|‰k(  S rÜ   )r  )rp  Úcurrent_valuesÚopaque_infoÚoriginal_valuess     €€r½   Úopaque_guard_checkerzDGuardBuilder.OPAQUE_OBJ_GUARD_FN_MATCH.<locals>.opaque_guard_checkerÐ  s#   ø€ Ø(×1Ñ1ØóˆNð " _Ñ4Ð4r¿   Ú___check_opaque_guard_fn_rw  r„  )rb  rC   r?  r  r   rc  r8   rx  rn  rü  rà  rÑ  )rÆ   rN  r÷  r…  r²  rƒ  r„  s        @@r½   ÚOPAQUE_OBJ_GUARD_FN_MATCHz&GuardBuilder.OPAQUE_OBJ_GUARD_FN_MATCHÅ  sœ   ù€ ð —‘˜“ˆÜ)¬$¨u«+Ó6ˆá +×"6Ò"6Øä" ;×#7Ñ#7¸Ó#>Ó?ˆö	5ð 2´"Ð5IÓ2JÐ1KÈ2Ìn×NoÑNoÓNqÐMrÐsˆØ×Ñ˜uÓ%×6Ñ6Ø Ü" ;°Ó6Ø×Ñõ	
r¿   c                óÊ  — | 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,        t.        j0                  t.        j2                  t.        j4                  j6                  j2                  h	|£|£z  «      }t.        j8                  j;                  «       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)} tU        ||«      sB |jV                  t%        |«      «      s'tY        t%        |«      «      sJ dt%        |«      › �«       ‚t[        |t\        «      rgt_        j`                  |«      rRd|› d|› d	�g}| jc                  ||«       | je                  |«      jg                  ti        ||«      |jj                  «       y t[        |tl        «      rgt        j`                  |«      rRd|› d
|› d	�g}| jc                  ||«       | je                  |«      jo                  ti        ||«      |jj                  «       y |› d|›�g}t[        ||«      rtq        |«      }ti        ||«      }|r|D �cg c]
  }|› d|› d�‘Œ }}| je                  |«      js                  |||jj                  «       | jc                  ||«       y c c}w )Nr†  r   )Ú
DeviceMesh)Ú_StridedShardÚPartialÚ	ReplicateÚShard)Ú_IntWrapperzUnexpected type z(type(z) is float and __math_isnan(z))z) is complex and __numpy_isnan(r!  rÚ  rU  ):r  rb  rŠ  Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64rÛ  ré   r=  r‹   r?  r©  ÚsliceÚranger�   r/  ÚSizeÚStreamÚcudaÚstreamsÚdistributedÚis_availableÚtorch.distributed.device_meshr‰  Ú(torch.distributed.tensor.placement_typesrŠ  r‹  rŒ  r�  Útorch.export.dynamic_shapesrŽ  Útorch.utils._pytreerÅ  rL   r   Úis_constant_classrD   r“   rÂ  rÀ  rÁ  r  rn  Úadd_float_is_nan_guardrà  rÑ  ÚcomplexÚadd_complex_is_nan_guardr   r%  )rÆ   rN  rÞ  r  r  Únp_typesÚok_mutable_typesÚok_typesr‰  rŠ  r‹  rŒ  r�  rŽ  Úpytreer¹   râ   rQ  s                     r½   ÚEQUALS_MATCHzGuardBuilder.EQUALS_MATCHÝ  s  € Ø�l‰l˜5Ó!ˆØ�h‰h�u‹oˆÝä—‘Ü—‘Ü—‘Ü—‘Ü—‘Ü—	‘	Ü—	‘	Ü—	‘	Ü—
‘
Ü—
‘
Ü—
‘
ð/‰Hð ˆHä ¤#˜;ÐäÜ!äÜÜÜÜÜÜ—
‘
Ü—‘Ü—
‘
×"Ñ"×)Ñ)ðð ðð "ðñó
ˆô" ×Ñ×)Ñ)Ô+Ý@÷ó ð  ØØØØØð#ñ ˆHõ 	<à˜{˜nÑ,ˆç,Ð,ô �s˜HÔ%Ø'ˆv×'Ñ'¬¨S«	Ô2Ü#¤D¨£IÔ.ð	*ð œd 3›i˜[Ð)ó		*ð/ô �#”uÔ¤$§*¡*¨S¤/Ø˜S˜EÐ!=¸c¸UÀ"ÐEÐFˆDØ×'Ñ'¨¨tÔ4à×"Ñ" 5Ó)×@Ñ@Ü& t¨UÓ3Ø× Ñ ôð ô �#”wÔ¤B§H¡H¨S¤MØ˜S˜EÐ!@ÀÀÀRÐHÐIˆDØ×'Ñ'¨¨tÔ4à×"Ñ" 5Ó)×BÑBÜ& t¨UÓ3Ø× Ñ ôð ð �%�t˜C˜7Ð#Ð$ˆÜ�#Ð'Ô(ô ˜3“-ˆCä3°D¸%Ó@ÐÙá?Qó"Ù?Q°t�4�&˜ Ð 0°Ò2Ð?Qð ð "ð 	×Ñ˜uÓ%×<Ñ<ØÐ# U×%5Ñ%5ô	
ð 	×#Ñ# E¨4Ô0Øùò"s   ÌM c                ó  — | j                  |«      }t        |t        «      r| j                  |«       y |€| j	                  |«       y t        |t
        j                  «      r| j                  |«       y | j                  |«       y rÜ   )	rb  r“   rÒ   r?  rB  r5  ÚCodeTyperE  r®  ©rÆ   rN  r  s      r½   ÚCONSTANT_MATCHzGuardBuilder.CONSTANT_MATCHL	  s^   € Ø�h‰h�u‹oˆÜ�#”tÔØ�O‰O˜EÕ"Øˆ[Ø�O‰O˜EÕ"Ü�CœŸ™Ô(Ø�M‰M˜%Õ à×Ñ˜eÕ$r¿   c                óF  — | j                  |d«       | j                  |«      }t        |d«      rKt        |j                  t
        «      sJ ‚| j                  s"| j                  |dt        j                  «       y y t        j                  dddt        |«      › d�dg¬«       y )	Nz%[inline-inbuilt-nn-modules-candidate]Útrainingz-Attempted to guard on uninitialized nn.Modulerh  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)rE  rb  rj  r“   r´  rÒ   rg  r  r<  r²  rT   Úunimplementedr?  r±  s      r½   Ú	NN_MODULEzGuardBuilder.NN_MODULEW	  s˜   € à�‰�eÐDÔEØ�h‰h�u‹oˆÜ�3˜
Ô#Ü˜#Ÿ,™,¬Ô-Ð-Ð-Ø×(Ò(à×(Ñ(¨°
¼L×<WÑ<WÕXð )ô ×ÑØGØð'Ü'+¨C£y k°ð5ð `ðör¿   c                ó$   — | j                  |«      S )z0things like torch.add and user defined functions)rE  ró  s     r½   ÚFUNCTION_MATCHzGuardBuilder.FUNCTION_MATCHk	  s   € ð �}‰}˜UÓ#Ð#r¿   c                ó¢   — | j                  |«      }t        j                  |«      st        |j                  › d�«      ‚| j                  |«       y)zNEquals ID_MATCH on classes - better readability than directly calling ID_MATCHz( is not a class, but CLASS_MATCH is usedN)rb  r˜  Úisclassræ  rã  rD  r±  s      r½   ÚCLASS_MATCHzGuardBuilder.CLASS_MATCHp	  sG   € à�h‰h�u‹oˆÜ�‰˜sÔ#Ü Ø—:‘:�,ÐFÐGóð ð 	×Ñ Õ&r¿   c                ó¢   — | j                  |«      }t        j                  |«      st        |j                  › d�«      ‚| j                  |«       y)zNEquals ID_MATCH on modules - better readability than directly calling ID_MATCHz* is not a module, but MODULE_MATCH is usedN)rb  r˜  Úismoduleræ  rã  rD  r±  s      r½   ÚMODULE_MATCHzGuardBuilder.MODULE_MATCHy	  sI   € à�h‰h�u‹oˆÜ×Ñ Ô$Ü Ø—:‘:�,ÐHÐIóð ð 	×Ñ Õ&r¿   c                ó  — | j                  |«      }t        |«      t        j                  u rOt	        |d«      rC| j                  |dt        j                  «       | j                  |dt        j                  «       y| j                  |«       y)z!matches a closure by __code__ id.r¯   N)
rb  r?  r5  r6  rj  r  r<  r  r²  r¼  r±  s      r½   ÚCLOSURE_MATCHzGuardBuilder.CLOSURE_MATCH‚	  sj   € ð �h‰h�u‹oˆä�‹9œ×*Ñ*Ñ*¬w°s¸JÔ/GØ×$Ñ$ U¨J¼×8LÑ8LÔMØ×$Ñ$ U¨J¼×8SÑ8SÕTà×Ñ Õ&r¿   c                óâ   — | j                   rSt        |j                  t        «      r9| j                  j
                  j                  |j                  j                  «       | j                  |«      S rÜ   )	r]  r   rÝ  rc   r[  Úused_builtin_varsr÷   r¸   rD  ró  s     r½   ÚBUILTIN_MATCHzGuardBuilder.BUILTIN_MATCH�	  sX   € Ø×Òä˜%×2Ñ2Ô4EÔFØ×%Ñ%×7Ñ7×;Ñ;Ø×,Ñ,×2Ñ2ôð ×&Ñ& uÓ-Ð-r¿   c                óV  — | j                  |«      }| j                  |«      }t        |t        «      s| j	                  |«       g }t        |«      dk(  r|j                  d|› �«       n |j                  d|› dt        |«      › �«       | j                  ||«       t        |t        «      r@| j                  |«      j                  t        |«      t        ||«      |j                  «       y | j                  |«      j                  t        |«      t        ||«      |j                  «       y )Nr   r1  zlen(r,  )r  rb  r   r"  r*  r·   rx  r  rn  Úadd_dict_length_check_guardrà  rÑ  Úadd_length_check_guard©rÆ   rN  r  r÷  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“
Ü& t¨UÓ3Ø× Ñ õð ×"Ñ" 5Ó)×@Ñ@Ü�E“
Ü& t¨UÓ3Ø× Ñ õr¿   c                óœ  — | j                  |«      }| j                  |«      }t        |«      }g }|j                  d|› dt	        |«      › �«       | j                  ||«       t        |«      }| j                  |d|j                  › d�«      }| j                  |«      j                  t	        |«      |t        ||«      |j                  «       y )Nz___tuple_iterator_len(r,  r#  rU  )r  rb  r?  rx  rš   r  rI  rã  rn  Úadd_tuple_iterator_length_guardrà  rÑ  )rÆ   rN  r  r÷  rZ  r¹   r¦  s          r½   ÚTUPLE_ITERATOR_LENzGuardBuilder.TUPLE_ITERATOR_LEN´	  s¹   € Ø�l‰l˜5Ó!ˆØ—‘˜“ˆÜ�‹KˆàˆØ�‰Ð,¨S¨E°Ô7IÈ%Ó7PÐ6QÐRÔSØ×#Ñ# E¨4Ô0ä�‹KˆØ—‘˜Q %¨¯
©
 |°1Ð 5Ó6ˆà×Ñ˜uÓ%×EÑEÜ˜uÓ%ØÜ" 4¨Ó/Ø×Ñõ		
r¿   c           
     óž  — | j                  |«      }| j                  |«      }t        |«      }g }t        |«      }|j	                  d|› d|› �«       | j                  ||«       t        |«      }| j                  |d|j                  › d�«      }|\  }}	}
| j                  |«      j                  ||	|
|t        ||«      |j                  «       y )Nz___normalize_range_iter(r,  r#  rU  )r  rb  r?  r–   rx  r  rI  rã  rn  Úadd_range_iterator_match_guardrà  rÑ  )rÆ   rN  r  r÷  rZ  r¹   Únormalized_range_iterr¦  ÚstartÚstopÚsteps              r½   ÚRANGE_ITERATOR_MATCHz!GuardBuilder.RANGE_ITERATOR_MATCHÇ	  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¨Ó/Ø×Ñõ	
r¿   c                ó’  — t        |j                  «      st        |«      ry | j                  rdt        |«      x}r%| j                  j
                  j                  |«       t        |«      x}r%| j                  j                  j                  |«       | 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                  r2|d   }t!        ||«      d   }	| j"                  j%                  ||	f«       y t'        | j)                  |«      | j+                  |«      t!        ||«      |j,                  «       y )Nú is r   )r2   rÝ  r]  r-   r[  Úadditional_used_local_varsr÷   r,   Úadditional_used_global_varsr  rã  r1   re  r  rR   Ú#use_lamba_guard_for_object_aliasingrà  rf  rx  r!   rn  rË  rÑ  )
rÆ   rN  Úsource_brã  Úref_aÚref_br  r¹   r{  rz  s
             r½   ÚDUPLICATE_INPUTzGuardBuilder.DUPLICATE_INPUTß	  s�  € Ü$Ø×$Ñ$ô
ä& xÔ0Øà×ÒÜ,¨XÓ6Ð6ˆtÐ6Ø×%Ñ%×@Ñ@×DÑDÀTÔJÜ-¨hÓ7Ð7ˆtÐ7Ø×%Ñ%×AÑA×EÑEÀdÔKà—‘˜UÓ#ˆØ—‘˜XŸ]™]Ó+ˆä#Ø×$Ñ$ô
ä% hÔ/Øð �eˆnˆØ�$×5Ñ5Ñ5Øà×+Ñ+×/Ñ/°¸°Ô?Ø×+Ñ+×/Ñ/°¸°Ô?à�'˜˜e˜WÐ%Ð&ˆØ×#Ñ# E¨4Ô0ä×5Ò5ð ˜Q™ˆIÜ 6°yÀ%Ó HÈÑ KÐØ×,Ñ,×3Ñ3°YÐ@QÐ4RÕSä)Ø×&Ñ& uÓ-Ø×2Ñ2°8Ó<Ü& t¨UÓ3Ø× Ñ õ	r¿   c                ó¼   — | j                  |«      › d�g}| j                  ||«       | j                  |«      j                  t	        ||«      |j
                  «       y rK  )r  r  rn  rL  rà  rÑ  ©rÆ   rN  r¹   s      r½   ÚWEAKREF_ALIVEzGuardBuilder.WEAKREF_ALIVE
  sV   € Ø—<‘< Ó&Ð' |Ð4Ð5ˆà×#Ñ# E¨4Ô0Ø×Ñ˜uÓ%×8Ñ8Ü" 4¨Ó/°×1AÑ1Aõ	
r¿   c           	     ó$  — | j                  |«      }| j                  |«      }g }|j                  d|› dt        |j	                  «       «      › �«       | j                  ||«       | j                  |«      j                  |||j                  «       y)z7Guard on the key order of types.MappingProxyType objectzlist(z.keys()) == N)	r  rb  rx  rÛ  r“  r  rn  Úadd_mapping_keys_guardrÑ  rË  s        r½   ÚMAPPING_KEYS_CHECKzGuardBuilder.MAPPING_KEYS_CHECK
  s}   € à�l‰l˜5Ó!ˆØ—‘˜“ˆàˆØ�‰�e˜C˜5 ¬T°%·*±*³,Ó-?Ð,@ÐAÔBØ×#Ñ# E¨4Ô0Ø×Ñ˜uÓ%×<Ñ<Ø�4˜×)Ñ)õ	
r¿   c           
     óÔ  — | 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  rb  r/  rÅ  rL   ÚSUPPORTED_NODESr/  rÌ  rx  rÛ  rŠ   r  r§  rÝ  rz  rt  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)rR   Úskip_nnmodule_hook_guardsrÌ  ró  s     r½   ÚEMPTY_NN_MODULE_HOOKS_DICTz'GuardBuilder.EMPTY_NN_MODULE_HOOKS_DICT:
  s   € ä×+Ò+àØ×Ñ˜UÕ#r¿   c                 ó   — y rÜ   r†  ró  s     r½   Ú	GRAD_MODEzGuardBuilder.GRAD_MODEA
  ó   € Ør¿   c                 ó   — y rÜ   r†  ró  s     r½   ÚDETERMINISTIC_ALGORITHMSz%GuardBuilder.DETERMINISTIC_ALGORITHMSD
  rî  r¿   c                 ó   — y rÜ   r†  ró  s     r½   ÚFSDP_TRAINING_STATEz GuardBuilder.FSDP_TRAINING_STATEG
  rî  r¿   c                ó$  — | j                   j                  }|€J ‚|j                  }|| j                   _        d| j                   j                  j	                  «       › �g}| j
                  j                  j                  |||j                  «       y )Nz ___check_global_state() against )	r[  r`  Úglobal_state_guardÚglobal_stateÚ__getstate__rW  rÝ   Úadd_global_state_guardrÑ  )rÆ   rN  r`  rõ  r¹   s        r½   ÚGLOBAL_STATEzGuardBuilder.GLOBAL_STATEJ
  sŠ   € Ø×,Ñ,×9Ñ9ˆØÐ'Ð'Ð'Ø#×6Ñ6ˆØ-9ˆ×ÑÔ*ð /¨t×/DÑ/D×/QÑ/Q×/^Ñ/^Ó/`Ð.aÐbð
ˆð 	×Ñ×Ñ×6Ñ6Ø˜$ × 0Ñ 0õ	
r¿   c                ó  — | j                   j                  €J ‚t        | j                   j                  «      | j                   _        | j                  j
                  j                  | j                   j                  dg|j                  «       y )Nz$___check_torch_function_mode_stack())r[  Útorch_function_mode_stackÚ$make_torch_function_mode_stack_guardÚ"torch_function_mode_stack_check_fnrW  rÝ   Ú#add_torch_function_mode_stack_guardrÑ  ró  s     r½   ÚTORCH_FUNCTION_STATEz!GuardBuilder.TORCH_FUNCTION_STATEX
  sy   € Ø×$Ñ$×>Ñ>ÐJÐJÐJä0Ø×%Ñ%×?Ñ?óð 	×ÑÔ@ð
 	×Ñ×Ñ×CÑCØ×!Ñ!×;Ñ;Ø3Ð4Ø×Ñõ	
r¿   c                óF  — |j                   t        j                  u sJ ‚| j                  j                  €J ‚d| j                  j                  j
                  ›�g}| j                  ||«       | j                  |«      j                  t        ||«      |j                  «       y)z/Guard on CURRENT_DEVICE per torch.utils._deviceNzutils_device.CURRENT_DEVICE == )rY  r>   ÚGLOBALr[  r`  Úcurrent_devicer  rn  Úadd_default_device_guardrà  rÑ  rá  s      r½   ÚDEFAULT_DEVICEzGuardBuilder.DEFAULT_DEVICEe
  s“   € à�|‰|œ{×1Ñ1Ñ1Ð1Ð1à×$Ñ$×1Ñ1Ð=Ð=Ð=à-¨d×.CÑ.C×.PÑ.P×._Ñ._Ð-bÐcð
ˆð 	×#Ñ# E¨4Ô0à×Ñ˜uÓ%×>Ñ>Ü" 4¨Ó/°×1AÑ1Aõ	
r¿   c                ó°  ‡ ‡%‡&‡'‡(— ddl m} |j                  dk(  sJ ‚‰ j                  j                  Š(‰(€J ‚‰ j                  j
                  �T‰ j                  j
                  }|j                  }|j                  }|j                  �|j                  }|j                  }�ntt        ‰(|«      sJ ‚‰(j                  €J ‚‰(j                  j                  xs g Š&‰&D �cg c]  }|j                  ‘Œ c}Š'dˆ(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 t1        ||t3        |j5                  «       «      |d¬«      Š%nd Š%dˆ%ˆ&ˆ'ˆ(ˆ fd„}t6        j8                  r	  |d	«      \  }}}d}nd
} |d«      \  }}‰(j&                  s‰(j                  j=                  «        ‰ j>                  rstA        «       jC                  d«      }|�t        |tD        «      sJ ‚|€g n"t3        |jF                  jI                  «       «      }tK        |||||¬«      ‰ j                  _        |jL                  D ]  }‰ jO                  ||g«       Œ tQ        jR                  «       x}r%|jT                  jW                  |jL                  «       g }g }|s·sJ ‚|jL                  |jF                  }}|sy |jY                  «       D ]…  \  }}t        |tZ        «      rd
}Œ‰ jC                  |i t\        ¥t_        «       ¥¬«      }t        |t`        «      r|jc                  ||f«       Œ`t        |td        «      r|jc                  ||f«       Œ„d
}Œ‡ |�sŠdd l3}ddl4m5} sJ ‚|jL                  |jF                  }}tm        ||z   «      }	 to        |«      D ��cg c]   \  }}‰ jq                  ts        ||«      «      ‘Œ" }}}dju                  d„ to        |«      D «       «      } dju                  d„ to        |«      D «       «      }!| rd| › d�} |!rd|!› d�}!tw        jx                  d| › d|!› ddju                  |«      › d�«      }"tz        j}                  d|"|jL                  «       |j                  |"«      }#|j�                  |#j‚                  |j„                  «      j†                  }$|$sJ ‚	 t‰        |t‹        |«      t‹        |«      |$|#|jL                  |jŒ                  «       y |jL                  r9‰ j•                  |jL                  |jL                  i t\        ¥t_        «       ¥¬«       y y c c}w # t:        $ r d
} |d«      \  }}Y �Œ²w xY wc c}}w # t$        jŽ                  j�                  j’                  $ r Y Œ—w xY w)Nr   ©r¤   rh  c                óz   •— ‰j                   |    D �cg c]  }t        |t        j                  |«      ‘Œ c}S c c}w rÜ   )Útracked_fakes_id_to_sourcer5   r4   ÚSIZE)Út_idrì  rY  r`  s      €r½   Úget_sourcesz+GuardBuilder.SHAPE_ENV.<locals>.get_sourcesŠ
  sG   ø€ ð #/×"IÑ"IÈ$Ò"Oóñ #P˜ô )¨´×1DÑ1DÀcÕJà"Oñð ùò 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
                   | ¬«      S c c}w c c}w )N)Úinput_contextsÚequalities_inputsrJ  Úignore_staticÚlangs)Ú	shape_envÚproduce_guards_verboseÚfakerY  rJ  Úexport)r  rŽ  r  r×  r  r`  rÆ   s     €€€€€r½   Ú_get_code_partsz/GuardBuilder.SHAPE_ENV.<locals>._get_code_parts´
  sr   ø€ à#×-Ñ-×DÑDÙ%'Ó(¡R �Q—V“V RÑ(Ù')Ó*¡r !�Q—X“X rÑ*Ø#1Ø&7Ø#Ÿ™ð (4×':Ñ':Ð#:Øð Eó 
ð 
ùÚ(ùÚ*s
   ›A)´A.
)ÚpythonÚverbose_pythonÚcppT)r  r  Úcpp_code_parts)Úpython_code_partsrâ   r  Úpython_fallbackÚshape_env_sources)rß   )ÚCppCodeCacherT  c              3  ó8   K  — | ]  \  }\  }}|› d |› d�–— Œ y­w)z = int_values[r  Nr†  ©r  ÚirC  Úsymbols       r½   r  z)GuardBuilder.SHAPE_ENV.<locals>.<genexpr>)  s-   è ø€ ð ,á*I™˜™;˜A˜vð �h˜n¨Q¨C¨qÔ1Ù*Iùó   ‚c              3  ó8   K  — | ]  \  }\  }}|› d |› d�–— Œ y­w)z = float_values[r  Nr†  r#  s       r½   r  z)GuardBuilder.SHAPE_ENV.<locals>.<genexpr>-  s.   è ø€ ð .á*K™˜™;˜A˜vð �hÐ.¨q¨c°Ô3Ù*Kùr&  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)r	  r"  rì  r"  rÏ   úlist[Source])r  útuple[str, ...]rÏ   zlist[_ShapeGuardsHelper])KÚtorch._dynamo.output_graphr¤   rã  r[  r`  Úshape_code_partsr  râ   r  r  r   r  Útracked_fakesÚsymbolic_contextÚexport_constraintsré   r	  r  r/  r  Údynamic_shapesÚ_process_equalitiesr  r  rI   rÛ  r$  rR   Ú enable_cpp_symbolic_shape_guardsÚOverflowErrorÚfreezer]  Úlocalsrb  rG   Úsource_to_symbolr“  ÚShapeCodePartsÚexprsr  r8   Útry_getÚshape_env_guardsr#  rö   r^   rK   rÈ  r"  rx  rÂ  ÚctypesÚtorch._inductor.codecacher!  r"  rv  rË  r.   rö  ÚtextwrapÚdedentrø  rù  ÚloadÚcastrN  Úc_void_pr÷  r#   r·   rÑ  Ú	_inductorrT   ÚInvalidCxxCompilerr  ))rÆ   rN  r¤   r,  r  râ   r  r  rŽ  r
  Únamesr  r  r  r  Ú
constraintr  Úmaybe_cpp_code_partsÚmaybe_shape_env_sourcesr¹   Úcompile_contextÚint_source_to_symbolÚfloat_source_to_symbolrá   r6  rY  r%  r  r;  r!  r$  Úguard_managersÚint_symbols_strÚfloat_symbols_strÚfunc_strÚclibÚcguardr  r×  r  r`  s)   `                                    @@@@r½   Ú	SHAPE_ENVzGuardBuilder.SHAPE_ENVs
  s9  ü€ Ý@à�z‰z˜RÒÐÐØ×,Ñ,×9Ñ9ˆØÐ'Ð'Ð'Ø× Ñ ×1Ñ1Ð=Ø#×4Ñ4×EÑEÐØ 0× BÑ BÐØ!1×!DÑ!DÐØ×.Ñ.Ð:Ø!1×!@Ñ!@�Ø.×>Ñ>ŠOô ˜lÐ,=Ô>Ð>Ð>Ø×)Ñ)Ð5Ð5Ð5Ø×'Ñ'×5Ñ5Ò;¸ˆBÙ:<Ó=¹"°Q˜a×0Ó0¸"Ñ=ˆNõð ×.Ò.Ø46�Ø<>�ð ð #ð 68�Ü/2«u�Ø".×"AÔ"A�JØ!—‘¨,×*QÑ*QÑQÜŸ™×3Ñ3×GÑGØ&Ø'Ø(×2Ñ2Ø!Ø(Ø.Ø+Ø+õ	ô Ÿ™Ð$QÕRð #Bô %7Ø!-Ø'9Ü$(¨×)?Ñ)?Ó)AÓ$BØ$3Ø#ô%Ñ!ð %)Ð!÷ñ ô ×6Ò6ðñ (Ð(KÓLñ JÐ%Ð'9¸>ð ',‘Oð #'�Ù8GØ0ó9Ñ5Ð!Ð#5ð  ×&Ò&Ø×&Ñ&×-Ñ-Ô/à×Òô $*£8§<¡<Ð0@Ó#AÐ Ø'Ð/´:Ø$Ô&;ô4ð ð ð
 (Ð/ñ äÐ.×?Ñ?×DÑDÓFÓGð $ô
 6DØ"3Ø#5Ø3Ø /Ø"9ô6ˆD×!Ñ!Ô2ð &×+Ô+ˆDØ×'Ñ'¨°¨vÕ6ð ,ô -×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õ ð #ùò{ >øôB %ò à&*�OÙ<KØ4ó=Ñ9Ð%Ó'9ðüóv"øô^ —?‘?×&Ñ&×9Ñ9ò áðús=   ÃVÇV Ï(V+ Ï6%V%ÐC)V+ ÖV"Ö!V"Ö%V+ Ö+'W×Wc                ó8  — t         j                  r|j                  «       ry t        |«      r| j	                  |«       y t        |t        «      r |«       }|�|n| 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&                  «      rht)        «       }|j+                  «       rN|j-                  d|j/                  «       «       |j-                  d|j0                  «       |j-                  dd«       | j3                  |«      }g }| j4                  j6                  €J ‚| j4                  j6                  j8                  r¾| j;                  |«       g d¢}|D ]¢  }	t=        |j>                  |	«      }
|	dk(  rd}	tA        |
«      }
| j                  |
«      }tC        |t        jD                  t        jF                  f«      r$|jI                  d|› d	|	› d
tK        |«      ›�«       ŒŠ|jI                  |› d	|	› d|› �«       Œ¤ �n†| jM                  |«      }t         jN                  r9tC        |t        j$                  j&                  «      setQ        |j>                  «      sPt        |j>                  tR        «      s6| jT                  jI                  |«       | jV                  jI                  |«       | j4                  j6                  }|jX                  |j>                     }t[        |d   «      }t[        |d   «      }t]        t_        ||||||«      |«      }|j`                  }|jc                  ||||||||«       t        |t        j$                  j&                  «      s/| jd                  jf                  ji                  |jj                  «       |jl                  €J ‚to        |d|j>                  ¬«      \  }}|�stq        |d«      r`|jr                  }d|› d|› d|› d�}|jI                  |«       | jM                  |«      ju                  |t]        ||«      |j`                  «       nMd|› d�}|jI                  |«       | jM                  |«      jw                  dt]        ||«      |j`                  «       ty        |dd «      x}rVd|› d|›d|› d�}|jI                  |«       | jM                  |«      j{                  |fd„t]        ||«      |j`                  «       t}        |«      dkD  r| j                  ||«       y y )NÚparam_numelÚparam_bytesÚparam_countrQ   )rõ  rº  rö  Ú
ndimensionrV  zndimension()zstr(rE  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') == FalseÚ_dynamo_shape_idsz
((getattr(z , '_dynamo_shape_ids', None) == z) if hasattr(z(, '_dynamo_unbacked_indices') else True)c                ó>   — t        | d«      rt        | dd «      |k(  S dS )NÚ_dynamo_unbacked_indicesr\  T)rj  r×  )rp  Úexpecteds     r½   r©  z+GuardBuilder.TENSOR_MATCH.<locals>.<lambda>3  s.   € ä& qÐ*DÔEô $ AÐ':¸DÓAÀXÑMð &à!%ð&r¿   r   )@rR   Ú_unsafe_skip_fsdp_module_guardsÚis_fsdp_moduler2  rE  r   rP   rb  r?  r/  rò  Ú_dispatch_keysr%  r&  rú  rû  r0  Úlog_compilation_metricsr3  Ú	Parameterr7   Úin_progressÚ	incrementÚnumelÚnbytesr  r[  r`  r  r*  rW   rÝ  rX   r“   rº  rõ  rx  rÐ   rn  Ú,skip_no_tensor_aliasing_guards_on_parametersr3   ru   rY  rZ  Úinput_source_to_sizes_stridesrð  rà  rÿ  rÑ  Úadd_tensor_match_guardrW  rë   r÷   rã  rY  r˜   rj  r[  Úadd_dynamic_indices_guardr  r×  rü  r·   r  )rÆ   rN  r÷  rú  rû  Úmetrics_contextÚtensor_namer¹   ÚtermsÚtermÚterm_srcÚ
real_valuerW  r`  ÚmetadatarW  rX  râ   rÑ  ÚstaticÚ_reasonÚdynamic_indicesr{  Ú	shape_idss                           r½   ÚTENSOR_MATCHzGuardBuilder.TENSOR_MATCHl  s  € Ü×1Ò1°e×6JÑ6JÔ6LØô " %Ô(Ø�M‰M˜%Õ ä˜%¤Ô/Ù›�à"Ð.‘E°D·H±H¸U³Oˆ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�Ø"×.Ñ.Ô0Ø#×-Ñ-¨m¸U¿[¹[»]ÔKØ#×-Ñ-¨m¸U¿\¹\ÔJØ#×-Ñ-¨m¸QÔ?àŸ,™, uÓ-ˆKð, !ˆDØ×(Ñ(×5Ñ5ÐAÐAÐAØ×$Ñ$×1Ñ1×8Ò8Ø—‘ Ô&ò�ó "�DÜ)¨%×*BÑ*BÀDÓI�HØ˜|Ò+Ø-˜Ü#;¸HÓ#E˜Ø!%§¡¨(Ó!3�JÜ˜j¬5¯<©<¼¿¹Ð*EÔFàŸ™ d¨;¨-°q¸¸¸eÄCÈ
ÃOÐCVÐ$WÕXàŸ™ { m°1°T°F¸$¸z¸lÐ$KÕLò "ð !%× 6Ñ 6°uÓ =�ô ×GÒGä˜u¤e§h¡h×&8Ñ&8Ô9ÜIØ!×4Ñ4ôô % 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�ä%;Ü.ØØ#ØØØØ%óð ó
&Ð"ð #×-Ñ-�
Ø×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Ø'Ü.¨y¸%Ó@Ø×(Ñ(õð # ; -Ð/TÐUð ð —K‘K 	Ô*Ø×*Ñ*¨5Ó1×FÑFØ1Ü.¨y¸%Ó@Ø×(Ñ(ôô !(¨Ð/BÀDÓ IÐI�9ÐIØ",¨[¨MÐ9YÐZcÐYfÐfsÐtð  tAð  Aið  !j�IØ—K‘K 	Ô*Ø×*Ñ*¨5Ó1×BÑBØ+4ò ô
 /¨y¸%Ó@Ø×(Ñ(ôô �4‹y˜1Š}Ø×+Ñ+¨E°4Õ8ð r¿   c                ó8  — t        «       }|€J ‚|j                  }~|€J ‚|xs |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  }|rDt        |	t        j                  t        t        j                   f«      st        j                  |	«      }|j#                  ||
||«       y )NzH_produce_guard_code must be called from inside GuardedCode. Called from Ú__weakrefoffset__r   )r   Úf_backrH  Úco_namerÍ   rR  rã  rb  rM  r  r?  r×  r   ÚenumÚEnumr=  Ú
ProxyTypesÚset_export_info)rÆ   rN  r5  r  rG  Ú	cur_frameÚcallerÚ	func_namerã  Úguarded_objectÚguarded_object_typeÚobj_refÚsupports_weakrefs                r½   r  z#GuardBuilder._set_guard_export_infoA  s-  € ô !“Nˆ	ØÐ$Ð$Ð$Ø×!Ñ!ˆØØÐ!Ð!Ð!Ø&Ò?¨&¯-©-×*?Ñ*?ˆ	Øà˜DŸN™N×3Ñ3Ñ3ð 	
ØVÐW`ÐVaÐbó	
Ð3ð
 #Ð*Ø—:‘:ˆDÙ)-™T°4·8±8¸E³?‰Nà4ˆNð 2@Ð1KŒG�K‰Kœ˜^Ó,Ô-ÐQUð 	ð ˆô �N×,Ñ,Ð.AÀ1ÓEÈÑJð 	ñ ¤JØœTŸY™Y¬¬w×/AÑ/AÐBô%
ô —k‘k .Ó1ˆGà×ÑØØØØõ		
r¿   )FNN)rH  útypes.CodeTyperI  zCallable[[object, str], int]rJ  zCallable[[Source], str]rK  z1Callable[[object], Optional[weakref.ref[object]]]ri  údict[str, object]rã   r‰  rW  rÚ   r[  ÚCheckFunctionManagerr]  rÒ   rP  r�  r^  ú=Callable[[Sequence[GuardFilterEntry]], Sequence[bool]] | NonerÏ   rÓ   )r  údict[Any, Any]rN  r;   rÏ   rÓ   )r÷  rŒ  rN  r;   rÏ   rÓ   )r  r   rÏ   úOptional[Any])rY  rW   r'  r   r(  r   r  r   r)  rÐ   r‡  rÐ   r   r  rÏ   r   )rY  r?   rÏ   rÒ   )rY  r?   r  zHOptional[Union[KeysView[Any], set[Any], frozenset[Any], dict[Any, Any]]]rÏ   r  )r«  r  rÏ   rÒ   )rÏ   r   )rY  r?   rÏ   r   )rN  r;   rÏ   r   r  )
rá   r  râ   r  rß   r�  rý  rÒ   rÏ   rÓ   rÜ   )r  zGuard | Sourcerß   úOptional[dict[str, Any]]rÏ   r   )rN  zUnion[str, Guard]rÏ   rÐ   )rN  r;   r–  rÐ   r  z(Callable[[GuardBuilderBase, Guard], Any]rÏ   rÓ   )rN  r;   rÏ   rÓ   )rN  r;   r�  r�  rÏ   rÓ   )rN  r;   r  rÐ   r2  rÒ   rÏ   rÓ   )rN  r;   r  r   r2  rÒ   rÏ   rÓ   )rN  r;   rÞ  rƒ  rÏ   rÓ   )rN  r;   r÷  r�  rÏ   rÓ   )rN  r;   rÜ  r?   rÏ   rÓ   )NN)
rN  r;   r5  r  r  r�  rG  rƒ  rÏ   rÓ   )>rÔ   rÕ   rÖ   rì   rt  rz  r8  r„  r¤  r§  rp  r¬  r°  rË  rn  r  rb  r  r  r  r!  r*  r/  r5  r:  r?  rB  rE  rD  rM  rP  rT  ra  rn  ry  r  r‡  r®  r²  rº  r¼  r¿  rÂ  rÄ  rÇ  rÌ  rÏ  rÖ  rß  râ  rå  rè  rë  rí  rð  rò  rø  rþ  r  rQ  rx  r  r†  r¿   r½   r<  r<  õ  sc  „ ð "Ø<@àðNFàðNFð -ðNFð ,ð	NFð
 KðNFð 'ðNFð (ðNFð +ðNFð /ðNFð ðNFð :ðNFððNFð 
óNFð`Ø+ðØ49ðà	óó<'ðR òó ðð"YàðYð )ðYð  ð	Yð
 ðYð ðYð ðYð -ðYð 
óYóv9ð"àð"ð
ð"ð 
ó"ó,?ó
ó\ó|Lð 59Ø ðYàðYð &ðYð 2ð	Yð
 ðYð 
óYðP 26ðà'ðð /ðð 
ó	ó&ð àðð ðð ;ð	ð
 
óó":0ðz 37ð0Øð0Ø"/ð0à	ó0ó8
ó4
ó0ó"0ó&ó"

ô>ð =Að%?Øð%?Ø,9ð%?à	ó%?ôN	
ó

ó
ó
ó&
ó8
ó0
ó
ô0mó^	%óó($ó
'ó'ó	'ó.óó<
ó&
ó0,ó\
ó

óCó2$óóóó
ó
ó
ówôrR9ðr 26Ø,0ð1
àð1
ð ð1
ð "/ð	1
ð
 *ð1
ð 
ô1
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)ÚPyExprCSEPassrQ   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_nameNr6  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Æ   rR   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“  rÎ  rÉ   rý   )rÆ   rø   rÍ   s     €r½   rý   zPyExprCSEPass.ExprCounter.visit—  s>   ø€ Ü˜$¤× @Ñ @ÔAØ—‘×'Ñ'¬°TÓ(:Ó;¸qÑ@Ó;Ü‰G‰M˜$Õr¿   )rR   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Æ   rR   Ú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›  rÎ  r™  r“  ÚUSE_THRESHOLDr”  rÉ   rý   r¢  r£  rx  rË  ÚNameÚLoad)rÆ   rø   ÚexprÚnode_Úexpr_rº   rÍ   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¿   )rR   r’  r¤  zCallable[[], str]rÏ   rÓ   )rø   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½   r©  z(PyExprCSEPass.__init__.<locals>.<lambda>Ä  s   € °qr¿   )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Ç   rã  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ý   rË  ÚparseÚSyntaxErrorr  Ú	exceptionÚlineno)rÆ   r8  ÚcounterÚeÚexs        r½   ÚcountzPyExprCSEPass.countÌ  sd   € Ø×"Ñ" 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ý   rË  r´  r£  rÎ  )rÆ   r©  ÚreplacerÚnew_nodes       r½   rÍ  zPyExprCSEPass.replaceÕ  sF   € Ø—=‘= §¡¨t¯}©}Ó=ˆØ—>‘>¤#§)¡)¨D£/Ó2ˆØ×Ñ¤¨hÓ!7Ð7Ð7r¿   Nr‚  )Ú_var)rÇ   rÐ   rÏ   rÐ   )r8  r  rÏ   rÓ   ©r©  rÐ   rÏ   ztuple[list[str], str])rÔ   rÕ   rÖ   r¦  rË  Ú	AttributeÚCallÚ	Subscriptr›  ÚdataclassesÚ	dataclassr•  ÚNodeVisitorrž  ÚNodeTransformerr¬  rì   r²  r»  rÍ  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Ý  rb   rR   Ú guard_nn_modules_using_dict_tagsÚ	create_fnr<  rº  )rN  s    r½   Úmust_add_nn_module_guardsrË  Û  s@   € ô
 	�5×+Ñ+¬^Ó<ò 	
ô ×3Ñ3ò :Ø—‘¤<×#9Ñ#9Ð9ðr¿   c                  ó(   ‡ — e Zd Zdˆ fd„Zd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Õ   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
)r7  rH   r  râ   zOptional[_CppShapeGuardsHelper]r  rÒ   r  r)  r   Nr6  r†  r¿   r½   r7  r7  ò  s    … à)Ó)Ø*Ó*Ø3Ó3ØÓØ#Ô#r¿   r7  c                  ó"   — e Zd ZU ded<   ded<   y)ÚGuardsStater¥   r`  úOptional[ShapeCodeParts]r,  Nr6  r†  r¿   r½   rÔ  rÔ  û  s   … à(Ó(Ø.Ô.r¿   rÔ  c                  ó.   — e Zd Zddd„Zdd„Zdd„Zd	d„Zy)
Ú_MissingNc                ó   — || _         y rÜ   ©ru  )rÆ   rÐ  s     r½   rì   z_Missing.__init__  s	   € Øˆ�r¿   c                ó"   — d| j                   › d�S ©Nz	_Missing(rU  rÙ  rÅ   s    r½   Ú__repr__z_Missing.__repr__  ó   € Ø˜4Ÿ<™<˜.¨Ð*Ð*r¿   c                ó"   — d| j                   › d�S rÛ  rÙ  rÅ   s    r½   rl  z_Missing.__str__  rÝ  r¿   c                ó   — t        «       S rÜ   )r×  )rÆ   rà   Úkwargss      r½   Ú__call__z_Missing.__call__  s
   € Ü‹zÐr¿   rÜ   )rÐ  rƒ  rÏ   rÓ   rÎ   )rà   r   rà  r   rÏ   r   )rÔ   rÕ   rÖ   rì   rÜ  rl  rá  r†  r¿   r½   r×  r×    s   „ ôó+ó+ô
r¿   r×  c                 óÌ   — t         j                  j                  t        j                  f} 	 | t         j                  j
                  j                  fz  } | S # t        $ r Y | S w xY wrÜ   )r/  rò  r�  rM  r   Ú_distributed_c10dÚProcessGroupÚAttributeError)r  s    r½   Ú_get_unsupported_typesræ    sa   € ô 	�‰�‰Ü×Ñð€CðØ”—‘×*Ñ*×7Ñ7Ð9Ñ9ˆð €Jøô ò ØØ€Jðús   ¬(A Á	A#Á"A#c                  ó  ‡ — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zedd„«       Ze	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zedd„«       Zedd„«       Z	e	 	 	 	 dd„«       Z
e	 	 	 	 dd„«       Zedd	„«       Ze	 	 	 	 dd
„«       Ze	 	 	 	 dd„«       Zed d„«       Zed!d„«       Zed"d„«       Zed#d„«       Zed$d„«       Ze	 	 	 	 	 	 d%d„«       Zed&d„«       Ze	 	 	 	 	 	 	 	 	 	 	 	 d'd„«       Z	 	 	 	 d(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_converterr\  Úempty_valuesÚmissing_values)rÆ   r\  rï  rð  rà   rà  rÍ   s         €r½   rì   zGuardsStatePickler.__init__   sb   ø€ ô 	‰Ñ˜$Ð) &Ò)Ü×*Ñ*×9Ñ9Ó;ˆŒÜ %× 1Ñ 1× =Ñ =× QÑ QÓ SˆÔØ!2ˆÔØ(ˆÔØ,ˆÕr¿   c                ód   — t         j                  j                  «       }|j                  |«       |S rÜ   )r/  r3  r4  Ú__setstate__)rr  Ú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Úgrad)	rr  Úmeta_tensorrº  rú  Údispatch_keys_rawrù  rë  rî  r  s	            r½   Ú_unpickle_tensorz#GuardsStatePickler._unpickle_tensor5  sv   € ô ×%Ñ%×4Ñ4Ó6ˆ	Ü ×,Ñ,×8Ñ8×LÑLÓNÐØ×3Ñ3ØØØØÜ�H‰H×#Ñ#×1Ñ1Ð2CÓDó
ˆð ˆŒØˆ
r¿   c                ó  — i }|D ]  \  }}	}
 |	|
Ž ||<   Œ |j                   |j                  «       }}t        |«      j                  ||||«      }||_        t
        j                  j                  j                  |«      |_	        |S rÜ   )
ÚshaperX  r?  Ú__tensor_unflatten__rú  r/  rò  r£   rø  rû  )rr  rú  rº  rú  rû  ÚctxÚ
inner_dataÚinner_tensorsr�  Úunpickle_funcÚunpickle_func_argsÚ
outer_sizeÚouter_striderî  s                 r½   Ú$_unpickle_traceable_wrapper_subclassz7GuardsStatePickler._unpickle_traceable_wrapper_subclassJ  s�   € ð ˆÛ7AÑ3ˆD�-Ð!3Ù"/Ð1CÐ"DˆM˜$Òð 8Bð $/×#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Ü   )rÃ  rÄ  )rr  Úaliass     r½   Ú_unpickle_python_modulez*GuardsStatePickler._unpickle_python_modulea  s   € ä×&Ñ& uÓ-Ð-r¿   c                óT   — t         j                  j                  j                  |«      S rÜ   )r/  rò  r£   rø  )rr  Úraw_reprs     r½   Ú_unpickle_dispatch_key_setz-GuardsStatePickler._unpickle_dispatch_key_sete  s   € ä�x‰x×&Ñ&×4Ñ4°XÓ>Ð>r¿   c                óh   — t         j                  j                  j                  j	                  |«      S rÜ   )r/  rò  r\  ÚCInterpreterÚdeserialize)rr  Újsons     r½   Ú_unpickle_functorch_interpreterz2GuardsStatePickler._unpickle_functorch_interpreteri  s%   € ô �x‰x×"Ñ"×/Ñ/×;Ñ;¸DÓAÐAr¿   c                ó,   — t        j                  |«      S rÜ   )r5  ÚMappingProxyType)rr  Úds     r½   Ú_unpickle_mapping_proxyz*GuardsStatePickler._unpickle_mapping_proxyo  s   € ô ×%Ñ% aÓ(Ð(r¿   c                óH   — t         j                  |«      j                  «       S rÜ   )r"  Úfromkeysr“  )rr  Úelemss     r½   Ú_unpickle_dict_keysz&GuardsStatePickler._unpickle_dict_keysu  s   € ä�}‰}˜UÓ#×(Ñ(Ó*Ð*r¿   c                ó€   — t         j                  j                  j                  j                  j	                  «       |   S rÜ   )r/  r   ÚfsdpÚ_fully_shardÚget_cls_to_fsdp_cls)rr  Úoriginal_types     r½   Ú_unpickle_fsdp_module_typez-GuardsStatePickler._unpickle_fsdp_module_typey  s5   € ô × Ñ ×%Ñ%×2Ñ2×?Ñ?×SÑSÓUØñ
ð 	
r¿   c                óÄ   — t         j                  j                  j                  }|j	                  |«      }t         j                  j
                  j                  ||«       |S rÜ   )r/  r3  ÚparallelÚDistributedDataParallelÚ__new__r4  rò  )rr  ró  ÚtyÚddps       r½   Ú_unpickle_ddp_modulez'GuardsStatePickler._unpickle_ddp_module�  sC   € ô �X‰X×Ñ×6Ñ6ˆØ�j‰j˜‹nˆÜ�‰�‰×$Ñ$ S¨%Ô0Øˆ
r¿   c                óJ   — t        t        j                  j                  |«      S rÜ   )r×  r/  Úopsrò  )rr  rã  s     r½   Ú_unpickle_c_opz!GuardsStatePickler._unpickle_c_opŠ  s   € ä”u—y‘y—|‘| TÓ*Ð*r¿   c                ó^   — t        t        t        t        j                  |«      |«      |«      S rÜ   )r×  r/  r)  )rr  Ú	namespaceÚopnameÚoverloadnames       r½   Ú_unpickle_opzGuardsStatePickler._unpickle_opŽ  s!   € ä”wœw¤u§y¡y°)Ó<¸fÓEÀ|ÓTÐTr¿   c                ó.   — t        j                  ||«      S rÜ   )r5  r7  )rr  Úfuncrå  s      r½   Ú_unpickle_bound_methodz)GuardsStatePickler._unpickle_bound_method’  s   € ä×Ñ  dÓ+Ð+r¿   c                ó^   — t        t        j                  j                  j                  | «      S rÜ   )r×  r/  r3  Ú	attentionÚ
SDPBackend©rã  s    r½   Ú_unpickle_sdp_backendz(GuardsStatePickler._unpickle_sdp_backend–  s!   € ô ”u—x‘x×)Ñ)×4Ñ4°dÓ;Ð;r¿   c                óJ   ‡— dˆfd„}|j                   €J ‚|j                   d   S )Nc                 ó   •— ‰ S rÜ   r†  )r  s   €r½   rC  z,GuardsStatePickler._unpickle_cell.<locals>._�  s   ø€ ØˆJr¿   r   )rÏ   r   )r°   )rr  r  rC  s    ` r½   Ú_unpickle_cellz!GuardsStatePickler._unpickle_cell›  s)   ø€ õ	ð �}‰}Ð(Ð(Ð(Ø�}‰}˜QÑÐr¿   c                ó.   — t        j                  ||«      S rÜ   )r½  Ú
namedtuple)rr  rã  Úfieldss      r½   Ú_unpickle_named_tuple_typez-GuardsStatePickler._unpickle_named_tuple_type£  s   € ô
 ×%Ñ% d¨FÓ3Ð3r¿   c                ó2   — ddl m}  |j                  |«      S )Nr   r¦   )Útorch._dynamo.packager§   Úto_code_object)rr  Úserialized_coder§   s      r½   Ú_unpickle_codez!GuardsStatePickler._unpickle_codeª  s   € å8à,ˆ~×,Ñ,¨_Ó=Ð=r¿   c                ór   — t        j                  |«      j                  }t        j                  |||||«      S rÜ   )rÃ  rÄ  rR  r5  r6  )rr  r¹   rï  ÚqualnameÚargdefsÚclosurer®  s          r½   Ú_unpickle_nested_functionz,GuardsStatePickler._unpickle_nested_function°  s3   € ô ×+Ñ+¨FÓ3×<Ñ<ˆ	Ü×!Ñ! $¨	°8¸WÀgÓNÐNr¿   c                ó  — dd l }t        |«      | j                  v r!t        |«      j                  t        |«      ffS t        j                  |«      r.ddlm} t        | «      j                   |j                  |«      ffS t        |«      | j                  v rt        dfS t        |t        j                  «      �r|j                   j                  dk7  �rñddlm} t        |«      | j&                  vrt        dfS  ||«      ròg }|j)                  «       \  }}|D ]h  }t+        ||«      }	t        |	t        j                  «      r|	| j&                  t        |	«      <   | j-                  |	«      \  }
}|j/                  ||
|f«       Œj t        | «      j0                  t        j2                  |d¬«      |j                   t        |«      t        j4                  j7                  |«      j9                  «       ||ffS t        |«      }t        |t        j:                  j<                  «      r(|j>                  �|j>                  nt        j                  }t        | «      j@                  t        j2                  |d|jB                  ¬«      |j                   |t        j4                  j7                  |«      j9                  «       |jD                  ffS t        |t        jF                  jH                  «      �r–t        |«      | j&                  vrt        d	fS |jJ                  jM                  «       D ]s  }t        |t        j                  t        jF                  jH                  f«      rŒ8t        |«      | j&                  v rŒPtO        |«      rŒ\|| j                  t        |«      <   Œu t        |t        jF                  jP                  jR                  «      r&t        | «      jT                  |jW                  «       ffS t        |«      jX                  t        |«      jZ                  k(  rt\        S |j^                  jV                  t        jF                  jH                  jV                  k(  �rXt        | «      j`                  |jW                  «       ffS t        jb                  |«      r"t        | «      jd                  |jZ                  ffS t        |t        j4                  jf                  «      r&t        | «      jh                  |j9                  «       ffS t        |t        j4                  jj                  jl                  «      r&t        | «      jn                  |jq                  «       ffS t        jr                  |«      rItu        ||jv                  «      r3ty        |d
«      r'ty        |d«      sJ ‚|jz                  |j|                  ffS t        jr                  |«      rbtu        |t~        «      rRty        |d«      rF|jX                  |jZ                  k7  r-t        | «      j€                  |jZ                  |j‚                  ffS t        |t        j„                  «      rt‡        d|› d|jˆ                  › d�«      ‚t        |tŠ        jŒ                  «      r&t        | «      jŽ                  |j‘                  «       ffS t        |t        j’                  j”                  j–                  «      r!t        | «      j˜                  t›        |«      ffS t        |t        jœ                  jž                  «      r=|j                   j£                  d«      r"t        | «      j¤                  |jZ                  ffS t        |t        jœ                  j¦                  «      r8t        | «      j¨                  |jª                  |j¬                  |j®                  ffS |j^                  j°                  dk(  r!|j^                  jZ                  dk(  rt        dfS t        |t³        «       «      rt        dfS t        j´                  |«      rÏd|jX                  v rNt        | «      j¶                  |j¸                  |j°                  |jX                  |jº                  |j¼                  ffS |j°                  t¾        jÀ                  v �r"t¾        jÀ                  |j°                     }|jX                  jÃ                  d«      D ]  }t+        ||d «      }Œ ||urÔt        dfS t        jÄ                  |«      rl|jÆ                  }
|jÈ                  }t+        ||
jZ                  «      }t        jÄ                  |«      r|jÆ                  }|
|urdt        | «      jÊ                  |
|ffS t        |t         d„ d«      j¼                  d   «      «      r"t        | «      jÌ                  |jÎ                  ffS ty        t        jÐ                  d«      rMt        |t        jÐ                  jÒ                  jÔ                  «      rt        |«      | j&                  vrt        dfS t        |t        jF                  jÖ                  jØ                  «      r"t        | «      jÚ                  |jÜ                  ffS t        |«      jX                  t        |«      jZ                  k7  rOt        |t~        «      s?t        j’                  jÞ                  já                  dt        |«      › d|› d�dz   dz   «      ‚t        jr                  |«      �rty        t        jÐ                  d «      rõtu        |t        jÐ                  jâ                  jä                  jæ                  «      r½|t        jÐ                  jâ                  jä                  jæ                  ur�|jè                  d!   }tu        |t        jF                  jH                  «      sJ ‚|t        jÐ                  jâ                  jä                  jä                  jë                  «       v sJ ‚t        | «      jì                  |ffS t\        S )"Nr   r¦   )zmissing valuesÚmeta)Úis_traceable_wrapper_subclass)ztensor guard tree)rº  )rº  rö  )zmodule guard treeÚ_torch_handler_nameÚ_torch_unpicklerr±  zCannot serialize SymInt z (node: rU  z_C::rQ  Ú	PyCapsule)Úcapsule)Úunsupportedz<locals>rE  )zfqn mismatchc                ó   ‡ — ˆ fd„S )Nc                 ó   •— ‰ S rÜ   r†  r²  s   €r½   r©  zGGuardsStatePickler.reducer_override.<locals>.<lambda>.<locals>.<lambda>a  s   ø€ ±Qr¿   r†  r²  s   `r½   r©  z5GuardsStatePickler.reducer_override.<locals>.<lambda>a  s   ø€ ¬Yr¿   Údistributed_c10d)zdistributed_c10d.Workr
  r  r  r  r  r  r8  )wÚsympyrc  rï  r?  r$  r˜  Úiscoder@  r§   rC  Úfrom_code_objectrð  r×  r   r/  r0  rº  Útorch.utils._python_dispatchrK  r\  r½  r×  Úreducer_overriderx  r  Ú
empty_likerò  rb  r  r%  r&  rú  rü  rö  rù  r3  r4  rR  r$  rà  r"  r#  r'  rö  rÖ   rÔ   ÚNotImplementedrÍ   rõ  rÁ  r
  r£   r  r\  r  r  Ú	serializer¾  r   ÚFunctionrj  rM  rL  r=  r>  r±  rê  rÖ  rø   r5  r  r  rS  r”  rÅ  r�   r  rÛ  Ú_opsÚOpOverloadPacketÚ_qualified_op_nameÚ
startswithr*  Ú
OpOverloadr/  r,  Ú_opnameÚ_overloadnamerÕ   ræ  Ú
isfunctionrH  r¯   r­   r°   r  Úmodulesrv  Úismethodr²   Ú__self__r2  r:  r,  r   rS  ÚWorkr4  r5  r7  rã  rT   ÚPackageErrorr  r  Ú
FSDPModuler³   r  r   )rÆ   r  rT  r§   rK  r  Úattrsr   r�  Úinnerr1  Ú
args_tuplerú  Úfrã  Úmethod_selfÚ
inner_funcr  s                     r½   rX  z#GuardsStatePickler.reducer_override½  sS	  € ó 	äˆc‹7�d×'Ñ'Ñ'Ü˜“9×$Ñ$¤t¨C£y lÐ2Ð2ä�>‰>˜#ÔÝ<ä˜“:×,Ñ,Ð/N¨~×/NÑ/NÈsÓ/SÐ.UÐUÐUäˆc‹7�d×)Ñ)Ñ)ÜÐ0Ð0Ð0ä�cœ5Ÿ<™<Õ(¨S¯Z©Z¯_©_ÀÓ-FÝRä�#‹w˜d×4Ñ4Ñ4ÜÐ!7Ð7Ð7á,¨SÔ1ð  �
Ø ×3Ñ3Ó5‘
��sã!�DÜ# C¨Ó.�EÜ! %¬¯©Ô6Ø<A˜×.Ñ.¬r°%«yÑ9Ø'+×'<Ñ'<¸UÓ'CÑ$�D˜*Ø×%Ñ% t¨T°:Ð&>Õ?ð "ô ˜D“z×FÑFÜ×$Ñ$ S°Ô8Ø—J‘JÜ˜“IÜ—H‘H×+Ñ+¨CÓ0×9Ñ9Ó;ØØðIð ð ô ˜#“YˆFÜ˜#œu×0Ñ0×;Ñ;Ô<Ø'*§z¡zÐ'=˜ŸšÄ5Ç<Á<�ä˜“:×.Ñ.Ü× Ñ  ¨VÀ3×CTÑCTÔUØ—
‘
ØÜ—‘×'Ñ'¨Ó,×5Ñ5Ó7Ø—‘ð1ð ð ô ˜œUŸX™XŸ_™_Õ-Ü�#‹w˜d×4Ñ4Ñ4ÜÐ!7Ð7Ð7àŸ™×+Ñ+Ö-�Ü˜d¤U§\¡\´5·8±8·?±?Ð$CÔDØÜ�d“8˜t×5Ñ5Ñ5ØÜ˜D”>ØØ04�×#Ñ#¤B t£HÒ-ð .ô ˜#œuŸx™x×0Ñ0×HÑHÔIÜ˜D“z×6Ñ6¸×9IÑ9IÓ9KÐ8MÐMÐMä�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ô �O‰O˜CÔ Ü˜3¤Ô&Ü˜˜YÔ'Ø× Ñ  C§L¡LÒ0ä˜“:×8Ñ8¸3¿<¹<ÈÏÉÐ:UÐUÐUä˜œUŸ\™\Ô*ÜÐ!9¸#¸¸hÀsÇxÁxÀjÐPQÐRÓSÐSä˜œU×3Ñ3Ô4Ü˜“:×5Ñ5¸¿¹»
°}ÐDÐDä˜œUŸ]™]×0Ñ0×:Ñ:Ô;Ü˜“:×1Ñ1´D¸³I°<Ð?Ð?äØ”—‘×,Ñ,ô
à×$Ñ$×/Ñ/°Ô7Ü˜“:×,Ñ,¨s¯|©|¨oÐ=Ð=ä˜œUŸZ™Z×2Ñ2Ô3Ü˜“:×*Ñ*Ø—‘Ø—‘Ø×!Ñ!ð-ð ð ð �M‰M×$Ñ$¨
Ò2Ø—‘×&Ñ&¨+Ò5ô ˜\Ð)Ð)ä˜Ô3Ó5Ô6ÜÐ-Ð-Ð-ä×Ñ Ô$Ø˜S×-Ñ-Ñ-Ü˜D“z×;Ñ;Ø—L‘LØ—N‘NØ×$Ñ$Ø×$Ñ$Ø—O‘Oð>ð ð ð �~‰~¤§¡Ò,Ü—K‘K §¡Ñ/�Ø×,Ñ,×2Ñ2°3Ö7�DÜ  4¨Ó.‘Að 8à˜C‘<Ü#Ð%6Ð6Ð6Ü×Ñ˜cÔ"Ø—<‘<ˆDØŸ,™,ˆKÜ  ¨d¯m©mÓ<ˆJÜ×Ñ 
Ô+Ø'×0Ñ0�
Ø˜:Ñ%Ü˜D“z×8Ñ8¸4ÀÐ:MÐMÐMä˜œTÒ#6¸Ó":×"FÑ"FÀqÑ"IÓJÔKÜ˜“:×,Ñ,¨s×/@Ñ/@Ð.BÐBÐBä”5×$Ñ$Ð&8Ô9¼jØ”×"Ñ"×3Ñ3×8Ñ8ô?
ô �#‹w˜d×4Ñ4Ñ4ÜÐ!;Ð;Ð;ä�cœ5Ÿ8™8×-Ñ-×8Ñ8Ô9Ü˜“:×3Ñ3°c·h±h°[Ð@Ð@ä�‹9×!Ñ!¤T¨#£Y×%7Ñ%7Ò7Ä
È3ÔPUÔ@VÜ—-‘-×#Ñ#×0Ñ0Øœ˜S›	�{ ,¨s¨eÐ3DÐEØTñUàTñUóð ô �O‰O˜CÕ Üœ×)Ñ)¨6Ô2Ü˜3¤× 1Ñ 1× 6Ñ 6× CÑ C× NÑ NÔOàœ%×+Ñ+×0Ñ0×=Ñ=×HÑHÑHØ #§¡¨A¡�Ü! -´·±·±ÔAÐAÐAà!Ü×(Ñ(×-Ñ-×:Ñ:×GÑG×[Ñ[Ó]ñ^ðð^ô ˜D“z×<Ñ<¸}Ð>NÐNÐNäÐr¿   )r\  údict[int, Any]rï  rq  rð  rq  rà   r   rà  r   rÏ   rÓ   )ró  r   rÏ   ztorch.nn.Module)rú  útorch.Tensorrº  útorch.devicerú  r?  rû  r"  rù  rr  rÏ   rr  )rú  rr  rº  rs  rú  r?  rû  r"  r   r   r  z5list[tuple[str, Callable[..., Any], tuple[Any, ...]]]rÏ   rr  )r	  rÐ   rÏ   ztypes.ModuleType)r  r"  rÏ   ztorch._C.DispatchKeySet)r  ÚbytesrÏ   z torch._C._functorch.CInterpreter)r  rŒ  rÏ   z types.MappingProxyType[Any, Any])r  ú	list[Any]rÏ   r   )r  útype[torch.nn.Module]rÏ   rv  )ró  zdict[str, Any]rÏ   z)torch.nn.parallel.DistributedDataParallel)rã  rÐ   rÏ   r   )r,  rÐ   r-  rÐ   r.  rÐ   rÏ   r   )r1  r   rå  r   rÏ   r   )rã  rÐ   rÏ   ztorch.nn.attention.SDPBackend)r  r   rÏ   r   )rã  rÐ   r=  r*  rÏ   ztype[NamedTuple])rB  r§   rÏ   rˆ  )r¹   rˆ  rï  rÐ   rE  rÐ   rF  ztuple[object, ...] | NonerG  z!tuple[types.CellType, ...] | NonerÏ   ztypes.FunctionType)r  r   rÏ   z6Union[tuple[Callable[..., Any], tuple[Any, ...]], Any])rÔ   rÕ   rÖ   rì   r9  rõ  rü  r  r
  r  r  r  r  r   r'  r*  r/  r2  r8  r7  r:  r>  rC  rH  rX  r×   rØ   s   @r½   rè  rè    sá  ø„ ð-à)ð-ð %ð-ð 'ð	-ð
 ð-ð ð-ð 
õ-ð òó ðð
 ðà!ðð ðð ð	ð
 ðð ðð 
òó ðð( ðà!ðð ðð ð	ð
 ðð ðð Jðð 
òó ðð, ò.ó ð.ð ò?ó ð?ð ðBØðBà	)òBó ðBð
 ð)Øð)à	)ò)ó ð)ð
 ò+ó ð+ð ð
Ø1ð
à	ò
ó ð
ð ðØ"ðà	2òó ðð ò+ó ð+ð òUó ðUð ò,ó ð,ð ò<ó ð<ð ò ó ð ð ð4Øð4Ø /ð4à	ò4ó ð4ð ò>ó ð>ð
 ð	Oàð	Oð ð	Oð ð		Oð
 +ð	Oð 3ð	Oð 
ò	Oó ð	OðEØðEà	?÷Er¿   rè  c           	     óB  — t        «       }t        | j                  «      }|dk(  rd}|}n	 |j                  | «      }d}t	        | j
                  «      d u}t        |||| j                  «       | j                  rt        | j                  «      nd|| ¬«      S #  |}d}Y Œ`xY w)Nrh  FTr†  )rã  Ú	has_valuer÷  Ú
guard_typeÚderived_guard_typesÚ	is_globalÚ
orig_guard)
ÚobjectÚstrip_local_scoperã  rb  r,   rÝ  rˆ   Úcreate_fn_nameÚguard_typesr=  )rN  ÚbuilderÚMISSINGrã  rx  r÷  r{  s          r½   Úmake_guard_filter_entryrƒ  …  s«   € Ü‹h€GÜ˜UŸZ™ZÓ(€DØˆr‚zØˆ	Ø‰ð		ð
 —K‘K Ó&ˆEØˆIô ' u×'?Ñ'?Ó@ÈÐL€IÜØØØØ×'Ñ'Ó)Ø9>×9JÒ9JœU 5×#4Ñ#4Ô5ÐPRØØôð øð		ØˆEØŠIús   «B ÂBc                ó¼  — t        j                  «       }i }i }|j                  }t        j                  | j
                  j                  «      }|D ]Œ  }t        j                  |«      rYt        |d«      rM|j                  }t        |«      |vsŒ>	 t        |«      j                  t        |«      «       ||t        |«      <   Œqt        |«      |vsŒ||t        |«      <   ŒŽ t        ||||«      }	t        t         j"                  j%                  | j
                  j&                  D �
cg c]  }
t)        |
|«      ‘Œ c}
«      «      r*t+        «       | j
                  _        i | j
                  _        	 |	j1                  | «       |j=                  «       S #  Y �ŒBxY wc c}
w # t2        $ r8}t         j4                  j6                  j9                  t;        |«      «      |‚d }~ww xY w)Nrg  )ÚioÚBytesIOr\  r­  Útree_leavesr`  ri  r˜  rf  rj  rg  rc  r?  r$  rè  r  r/  ÚcompilerÚkeep_portable_guards_unsafer©   rƒ  ré   ra  rã   Údumprå  r”  rT   ri  rÐ   rk  )ró  r�  Úbufrï  rð  r\  ÚleavesÚleafrå  ÚpicklerrN  r¹  s               r½   Úpickle_guards_stater�  ¢  sž  € ô �*‰*‹,€CØ€LØ€NØ×1Ñ1Ðä×Ñ × 2Ñ 2× >Ñ >Ó?€FÛˆÜ×Ñ˜DÔ!¤g¨d°JÔ&?Ø—=‘=ˆDÜ�$‹xÐ0Ò0ðÜ˜“J×&Ñ&¤t¨D£zÔ2Ø-1�L¤ D£Ò*ô �‹XÐ.Ò.ð (,ˆNœ2˜d›8Ò$ð ô !Ð!2°LÀ.ÐRUÓV€Gä
Ü�‰×2Ñ2ð #×/Ñ/×6Ò6óá6�Eô (¨¨wÕ7Ø6ñó	
ôô 14³ˆ×ÑÔ-Ø*,ˆ×ÑÔ'ð<Ø�‰�UÔð �<‰<‹>Ðøð1Úüòøô ò <Ü�m‰m×Ñ×,Ñ,¬S°«VÓ4¸!Ð;ûð<ús*   Â1FÄ#FÅ,F ÆFÆ	GÆ#3GÇGc                  óÈ   — e Zd ZU 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„ZdZded<   	 	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zdd	„Z	dd
„Z
dd„Zy)rŠ  Nc
           	     ó¬  ‡ ‡‡— |r|j                   nd }
i ‰ _        t        |«      }|‰ _        ‰ j                  €J ‚|‰ _        |r|j
                  nd ‰ _        t        «       ‰ _        t        «       ‰ _        t        «       ‰ _	        |‰ _
        d ‰ _        d ‰ _        t        d«      st        j                  d«       t         j"                  j$                  j&                  r|xs d„ Šdˆfd„}t)        |
xs dt*        j,                  ¬«      }|rˆ‰ j/                  ||||d«      \  }} ||D �cg c]  }t1        ||«      ‘Œ c}«      }t3        |«      t3        |«      k(  sJ ‚t5        d„ |D «       «      sJ ‚t7        |«      D ��cg c]  \  }}||   sŒ|‘Œ }}}‰ j/                  ||||||¬	«      \  }}|‰ _        ‰ j;                  |||«       |j<                  ‰ j8                  _        t>        jA                  d
‰ j8                  «       |j<                  ‰ j8                  _        dŠ|jB                  sý|jD                  sñ‰ j8                  jG                  |jH                  «      sCtK        ‰ j8                  |jH                  tM        jN                  «       d ¬«      }tQ        d|› �«      ‚tR        �!tS        ‰ j8                  |jH                  |«       tU        ‰ j8                  jV                  |jH                  d«      Št>        jA                  d‰d›«       tY        jZ                  dt]        ‰«      «       d ‰ _/        |rAddl0m1} te        ‰ j                  |«      sJ ‚	 ‰ jg                  ||‰ j                  «      ‰ _/        t         jx                  j{                  dˆˆ fd„¬«       ‰ j                  j}                  «        d ‰ _        y c c}w c c}}w # th        jj                  $ r|}t         j"                  j$                  jl                  s|	r|‚‰ j                  jo                  dtq        |«      › �ts        jt                  «       jw                  d«      ¬«       Y d }~ŒÜd }~ww xY w)NrG  z9guard_nn_modules is turned off using justknobs killswitchc                ó,   — | D �cg c]  }d‘Œ c}S c c}w r  r†  )ÚgsÚgs     r½   r©  z/CheckFunctionManager.__init__.<locals>.<lambda>þ  s   € ÉRÓ>PÉRÈºtÈRÒ>PùÒ>Ps   …	c                ól  •— g }t         ‰| «      | «      D ]›  \  }}|s|j                  d«       Œ|j                  dv sd|j                  v sd|j                  v rGt        j                  d|j                  |j                  j                  «       |j                  d«       Œ‹|j                  d«       Œ� |S )NF)rE  rÄ  râ  r/  rE  r/  z7%s guard on %s is dropped with caching_precompile=True.T)r  rx  ry  rz  r  r  r|  rã  )r©   r  Úkeepr”  Ú_guard_filter_fns       €r½   r^  z6CheckFunctionManager.__init__.<locals>.guard_filter_fn   s¦   ø€ Ø�Ü"Ñ#3°FÓ#;¸VÖD‘G�D˜!ÙØŸ
™
 5Õ)àŸ™ðñð &¨×)>Ñ)>Ñ>Ø)¨Q×-BÑ-BÑBäŸ™ØUØŸL™LØŸL™L×-Ñ-ôð
 Ÿ
™
 5Õ)àŸ
™
 4Õ(ð+  Eð, �
r¿   r†  )r  Fc              3  ó>   K  — | ]  }t        |«      t        u –— Œ y ­wrÜ   )r?  rÒ   )r  rp  s     r½   r  z0CheckFunctionManager.__init__.<locals>.<genexpr>+  s   è ø€ Ð?±¨1”t˜A“w¤$”±ùs   ‚)r^  ú%sg        )ÚbackendziGuard failed on the same frame it was created. This is a bug - please create an issue.Guard fail reason: rQ   zGuard eval latency = %s usú.2fÚguard_latency_usr   r  zGuard evaluation failed: rÊ  )Ú	tracebackÚdynamo_cpp_guards_strc                 ó*   •— ‰j                   › d‰ d›d�S )Nz
Guard latency = r›  z us)rW  )ÚlatencyrÆ   s   €€r½   r©  z/CheckFunctionManager.__init__.<locals>.<lambda>‹  s   ø€  $×"4Ñ"4Ð!5Ð5GÈÐPSÀ}ÐTWÑXr¿   ©Ú
payload_fn)r©   zSequence[GuardFilterEntry]rÏ   zSequence[bool])?r©   Ú	_weakrefsÚ5update_diff_guard_managers_for_existing_cache_entriesr`  r,  rú  rM   rÆ  rÙ  rÚ  rP  rõ  rü  rF   r  r  r/  r”  rR   Úcaching_precompilerô   r;   Úsort_keyÚbuild_guardsrƒ  r·   r  rv  rW  Úcompile_check_fnrç   rø  rù  Úskip_guards_checkr  rn  ri  Úget_guard_fail_reason_helperr8   rx  ræ  rž   r%   rÝ   r6   Úincrement_toplevelr"  Úguards_stater+  r¤   r   Úserialize_guardsrT   ri  Ústrict_precompileÚbypass_packagerÐ   r�  Ú
format_excrv  Ú_loggingÚtrace_structuredÚclear)rÆ   rH  r`  rå   rä   r^  r,  rP  r]  Ústrict_errorr©   Úexisting_diff_guard_sourcesÚsorted_guardsr�  rW  rN  Úfilter_resultsr$  Úreasonsr¤   r¹  r—  r   s   `                    @@r½   rì   zCheckFunctionManager.__init__Ô  s  ú€ ñ )5�×$Ò$¸$ˆØ;=ˆŒô BÀ+ÓNð 	$ð :FˆÔØ× Ñ Ð,Ð,Ð,ð !1ˆÔñ
 7CˆL×2Ò2Èð 	Ô&ô 3=³,ˆÔÜ;E»<ˆÔ'Ü<F»LˆÔ(Ø$8ˆÔ!ØPTˆÔØPTˆÔ/äÐBÔCÜ�K‰KÐSÔTô �=‰=×Ñ×2Ò2Ø.ÒQÑ3PÐõô4 ˜vš|¨´·±Ô@ˆáð &*×%6Ñ%6ØØ+ØØØó&Ñ"ˆG�]ñ -ÙFSÓTÁm¸UÔ(¨°Õ8ÀmÑTóˆNô �~Ó&¬#¨mÓ*<Ò<Ð<Ð<ÜÑ?±Ó?Ô?Ð?Ð?ä&/°Ô&>ôÙ&>™(˜!˜UÀ.ÐQRÓBS’Ð&>ð ñ ð
 "&×!2Ñ!2ØØ'ØØØØ+ð "3ó "
Ñˆ�ð +ˆÔØ×Ñ˜g }°mÔDð .5×-DÑ-Dˆ×ÑÔ*ä×Ñ˜˜t×1Ñ1Ô2Ø-4×-DÑ-Dˆ×ÑÔ*ð ˆà×-Ò-°l×6IÒ6IØ×%Ñ%×+Ñ+¨L×,DÑ,DÔEÜ6Ø×&Ñ&Ø ×,Ñ,Ü"×5Ñ5Ó7Ø ô	�ô %ð*Ø*1¨ð4óð ô
 -Ð8Ü-Ø×&Ñ&¨×(@Ñ(@À'ôô ,Ø×"Ñ"×'Ñ'¨×)AÑ)AÀ1óˆGô ×ÑÐ9¸gÀc¸]ÔLô ×1Ñ1Ð2DÄcÈ'ÃlÔSà-1ˆÔÙÝDä˜d×/Ñ/Ð1BÔCÐCÐCð
Ø$(×$9Ñ$9Ø˜]¨D×,=Ñ,=ó%�Ô!ô 	�‰×'Ñ'Ø#ÜXð 	(ô 	
ð 	�‰×ÑÔØ ˆÕùò] Uùóøôh ×#Ñ#ò Ü—=‘=×'Ñ'×9Ò9¹\Ø�GØ×!Ñ!×0Ñ0Ø/´°A³¨xÐ8Ü'×2Ñ2Ó4×:Ñ:¸4Ó@ð 1÷ ñ ûðús+   Ä)N9Å>N>ÆN>Í"O ÏQÏA2QÑQ)r/  rº  rE  r¼  r¿  rÂ  rÄ  râ  ztuple[LiteralString, ...]Ú%UNSUPPORTED_SERIALIZATION_GUARD_TYPESc                ó  ‡‡‡‡— |D ]â  }|j                  «       }|j                  rt        |j                  «      nd}|dv r*|j                  sŒG|j	                  |«      }t        |«       Œd|t        j                  v r,t        j                  j                  j                  |› d�«      ‚t        d„ |D «       d «      x}sŒ¸t        j                  j                  j                  |› d�«      ‚ |j                  xs dŠt        «       Št        «       Šdˆˆˆfd„}	|j                  «       }
|D ]`  }t!        |j"                  t$        «      r2| j&                  sJ ‚| j&                  j(                  D ]
  } |	|«       Œ ŒO |	|j"                  «       Œb |j*                  D ]
  } |	|«       Œ dd„Š|
j,                  j/                  «       D ��ci c]  \  }}|‰v s|| j0                  v r||“Œ }}}|
j,                  ‰   j/                  «       D ��ci c]  \  }}|| j2                  v r||“Œ c}}|‰<   t5        j6                  |
|
j8                  j/                  «       D ��ci c]  \  }}|‰v s|| j:                  v r||“Œ c}}|t        j<                  j?                  tA        ˆfd„|D «       «      «      tC        jD                  tF        |
jH                  «      d	¬
«      }
tK        |
| j&                  ¬«      }tM        ||«      S c c}}w c c}}w c c}}w )Nr†  )r*  rÇ  z guard cannot be serialized.c              3  óD   K  — | ]  }|t         j                  v r|–— Œ y ­wrÜ   )rŠ  r¹  )r  r$  s     r½   r  z8CheckFunctionManager.serialize_guards.<locals>.<genexpr>»  s'   è ø€ ð á0˜ØÔ0×VÑVÑVô Ù0ùs   ‚ rh  c                óÖ   •— t        | «      x}r*t        |t        «      sJ ‚|‰k7  r‰j                  |«       y y t	        | «      x}r$t        |t        «      sJ ‚‰j                  |«       y y rÜ   )r,   r   rÐ   r÷   r-   )rY  rã  Úbuiltins_dict_nameÚused_global_varsÚused_local_varss     €€€r½   Úprune_variablez=CheckFunctionManager.serialize_guards.<locals>.prune_variableË  st   ø€ Ü-¨fÓ5Ð5ˆtÐ5Ü! $¬Ô,Ð,Ð,ð Ð-Ò-Ø$×(Ñ(¨Õ.ð .ä.¨vÓ6Ð6�Ð6Ü! $¬Ô,Ð,Ð,Ø×#Ñ# DÕ)ð 7r¿   c                ó8  ‡— t        | t        j                  «      rxdd„Š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   rP   rM  r  r²  s    r½   Ú_refzPCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn.<locals>._refç  s!   € Ü! !¤m´W·[±[Ð%AÔBÙ ›s˜
Ø�Hr¿   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wrÜ   r†  )r  rŽ  rÃ  s     €r½   r  zUCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn.<locals>.<genexpr>ì  s   øè ø€ Ð 9±&¨Q¡ a§±&ùs   ƒ)rp  r   rÏ   r   )r   Ú	functoolsÚpartialr=  rà   Úkeywordsrö   r1  )rp  Únew_argsÚkÚvÚnew_keywordsrÃ  s        @r½   Únormalize_create_fnzBCheckFunctionManager.serialize_guards.<locals>.normalize_create_fnä  s‡   ø€ Ü˜!œY×.Ñ.Ô/óô
 !Ó 9°!·&²&Ó 9Ó9�Ø78·z±z×7GÑ7GÔ7IÔJÑ7I©t¨q°! ¡4¨£7¡
Ð7I�ÑJÜ ×(Ñ(¨¯©ÐK°(ÒK¸lÑKÐKàˆHùó  Ks   ÁBc           	   3  óp   •K  — | ]-  }t        j                  |d d  ‰|j                  «      ¬«      –— Œ/ y ­w)N)Úobj_weakrefÚguarded_class_weakrefrÊ  )rÄ  rÍ  rÊ  )r  rN  rÌ  s     €r½   r  z8CheckFunctionManager.serialize_guards.<locals>.<genexpr>  sB   øè ø€ ð ñ "/˜ô  ×'Ñ'ØØ$(Ø.2Ù"5°e·o±oÓ"F÷	ð ñ "/ùs   ƒ36T)ri  rã   Ú_guardsrj  r©  )r`  r,  )rY  r?   rÏ   rÓ   )rp  úCallable[..., None]rÏ   rÑ  )'r  r€  r=  r'  rb  r  rŠ  r¹  r/  r”  rT   ri  ÚnextÚ%name_of_builtins_dict_key_in_fglobalsré   Údump_guards_stater   rÝ  rx   r,  r   ra  rã   rö   rÚ  rÆ  rÄ  rÍ  ri  rÙ  rÐ  Ú	GuardsSetrM   r­  Útree_maprí  rj  rÔ  r�  )rÆ   r�  r¶  r`  rN  ry  rz  r  ÚfailedrÀ  Úoutput_graph_guards_staterY  rÉ  rÊ  Úglobal_scope_stater¬  r½  rÌ  r¾  r¿  s                   @@@@r½   r­  z%CheckFunctionManager.serialize_guards£  s*  û€ ó #ˆEØ×-Ñ-Ó/ˆJØ>C×>OÒ>O¤%¨×(9Ñ(9Ô":ÐUWÐð Ð<Ñ<Ø×(Ó(à!Ÿ+™+ eÓ,�CÜ*¨3Õ/àÔ2×XÑXÑXä—m‘m×'Ñ'×4Ñ4Ø!�lÐ">Ð?óð ô  ñá0óð
 óð �ñ ô —m‘m×'Ñ'×4Ñ4Ø�hÐ:Ð;óð ð3 #ð: *×OÑOÒUÐSUÐÜ›5ÐÜ›%ˆ÷
	*ð %1×$BÑ$BÓ$DÐ!ã"ˆEÜ˜%×2Ñ2´NÔCØ×,Ò,Ð,Ð,Ø"×3Ñ3×EÔE�FÙ" 6Õ*ñ Fñ ˜u×7Ñ7Õ8ð #ð #×5Ô5ˆFÙ˜6Õ"ð 6ó	ð  2×>Ñ>×DÑDÔFô
áF‘��1ØÐ$Ñ$¨¨T×-MÑ-MÑ(Mð ˆq‰DØFð 	ñ 
ð 2×>Ñ>Ø"ñç‰e‹gðô2
ñ‘��1ð �D×*Ñ*Ñ*ð ˆq‰Dðò2
ÐÐ-Ñ.ô %0×$7Ñ$7Ø%ð 6×AÑA×GÑGÔIôáI‘D�A�qØ˜Ñ'¨1°×0OÑ0OÑ+Oð �1‘ØIòð
 ,Ü—M‘M×+Ñ+Üó ñ "/óó ó
ô +1¯/©/Ü.Ø)×GÑGó+ð #ô/%
Ð!ô2 #Ø2Ø!×2Ñ2ô
ˆô
 # <°Ó9Ð9ùóW
ùó
2
ùós   ÇK8È	K>ÉLc                ó  ‡— t        «       }||_        d Šdˆfd„}t        || j                  || j                  |j
                  |j                  || || j                  |¬«      }	d	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>   ÚCONSTANTrã  r  )rY  rÜ  Ú	r_builderÚ	w_builders      €r½   rJ  z5CheckFunctionManager.build_guards.<locals>.source_ref.  sV   ø€ Ø!×.Ñ.ˆLØœ{×3Ñ3Ñ3à—{‘{Ð"ÙÐ�9Ù!›ˆIØÐ(Ð(Ð(Ø×$Ñ$ V§[¡[Ó1Ð1r¿   )rP  r^  c                ó&   —  | «       }|rd |_         y y rÜ   )rL  )Úweak_br¨  s     r½   Úcleanup_builderz:CheckFunctionManager.build_guards.<locals>.cleanup_builderG  s   € Ù“ˆAÙØ�•ð r¿   rG  r­   r®   re  )rY  r?   rÏ   rÐ   )rá  zweakref.ref[GuardBuilder]rÏ   rÓ   )rÚ   rë   r<  rI  rK  ri  rã   rP  rM  r  rR   rg  rF   r0  rã  rê  r  )rÆ   r¶  rµ  rH  r`  r]  r^  rW  rJ  r�  râ  Úguard_on_nn_modulesrN  rß  s                @r½   r§  z!CheckFunctionManager.build_guards  sÿ   ø€ ô ,Ó-ˆØ+FˆÔ(àˆ	õ	2ô ØØ�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 Š| j                  j                  j                  t        t        j                  «       «      «       d | _	        	 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d «       t(        j*                  rA|j,                  r5t/        t0        t3        |j,                  Ž «      \  }}|j5                  ||«       | j6                  r| j6                  j8                  ng }|D �]N  }t;        |t<        «      rk|j>                  }|j@                  }|jB                  › d	|jB                  › �}tE        |jG                  |«      |jG                  |«      |gd «        ||d d«       Œt;        |tH        «      r´|jJ                  D �cg c]  }|jG                  |«      ‘Œ }}|jL                  D �cg c]  }|jG                  |«      ‘Œ }}d
dj'                  d„ |jJ                  D «       «      › ddj'                  d„ |jL                  D «       «      › d�}tO        |||gd «        ||d d«       �ŒCtQ        d|› �«      ‚ |jR                  D ]'  }|j                  D ]  } |||j                  d«       Œ Œ) ‰r$tT        jV                  jY                  dˆfd„¬«       tZ        j\                  €t[        j^                  «       j`                  }ntc        | jd                  dd «      }|
||| jf                  dœth        ¥tk        «       ¥}| j                  jm                  «        d|jn                  d   i}t!        ‰«      dk(  sJ ‚|| j                  _8        || j                  _9        | j                  ju                  «        ‰| j                  _;        || j                  _<        || j                  _=        d | j                  _>        d | j                  _?        |	| j                  _@        y c c}w c c}w )Nz**___kwargs_ignoredzGUARDS: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 )Nr™  c                 óä   •— ‰ ‰r9‰j                   r-t        j                  ‰j                   j                  «       «      nd ‰r-‰j                  r!t        j                  ‰j                  «      dœS d dœS )N)r¹   rÔ  rÑ  )rÔ  rE   Úfrom_tracebackrÕ  rÑ  )r{  rN  s   €€r½   r©  zNCheckFunctionManager.compile_check_fn.<locals>.add_code_part.<locals>.<lambda>‚  sc   ø€ Ø%ñ ! U§[¢[ô #×1Ñ1°%·+±+×2EÑ2EÓ2GÔHà!ñ ! U×%5Ò%5ô #×1Ñ1°%×2BÑ2BÓCòð "òr¿   rh  z
Stack:
z
User stack:
zGuard: %s%s%s)rØ  rø  rù  rx  Úverbose_guards_logÚisEnabledForÚloggingÚDEBUGrÔ  rö  ÚformatrÑ  )	r{  rN  Úlog_onlyrz  Úmaybe_stackÚmaybe_user_stackrá   Ústructured_guard_fnsrâ   s	   ``    €€€r½   Úadd_code_partz<CheckFunctionManager.compile_check_fn.<locals>.add_code_part{  sù   ú€ ô !6°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¿   TrQ   zcheck_no_aliasing(rT  rU  rØ  zcheck_overlapping(overlapping=[c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrÜ   r6  ©r  r[  s     r½   r  z8CheckFunctionManager.compile_check_fn.<locals>.<genexpr>ï  s   è ø€ Ð/ZÑ@Y¸1°·µÑ@Yùó   ‚z], non_overlapping=[c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrÜ   r6  ró  s     r½   r  z8CheckFunctionManager.compile_check_fn.<locals>.<genexpr>ð  s   è ø€ Ð3bÑDa¸q°A·FµFÑDaùrô  z])zUnknown GuardEnvExpr: Údynamo_guardsc                 ó8   •— ‰D � cg c]	  }  | «       ‘Œ c} S c c} w rÜ   r†  )rn  rð  s    €r½   r©  z7CheckFunctionManager.compile_check_fn.<locals>.<lambda>  s   ø€ ÑBVÓ4WÑBV¸Q±QµSÐBVÒ4WùÒ4Ws   †r¡  rn  )Ú___check_tensorsÚ___check_tensors_verboseÚ___check_global_stateÚ"___check_torch_function_mode_stackr@  r   rÑ   )r{  rÐ   rN  úOptional[Guard]rí  rÒ   rÏ   rÓ   )ArW  rø  rù  rW  rÝ   Úattach_compile_idrÐ   r8   rx  rú  ré   r¹   r5  rN  r÷   rY  r·   r    rZ  rö  rR   rÛ  rf  rd  rÛ  r  r  r`  Úaotautograd_guardsr   r:   Úinput_source_aÚinput_source_brã  r!   rË  r@   Úoverlapping_sourcesÚnon_overlapping_sourcesr"   rÖ  rX  r/  r±  r²  rS   Úinitial_global_stateÚGlobalStateGuardrn  r×  rõ  rü  rK   rÈ  r  rL  rß   rà   r€  râ   rã   rä   rå   ræ   rè   )rÆ   r�  Ú
guards_outrä   Úlargsrñ  ÚseenÚgclr¹   rY  Úcheck_tensors_fnÚcheck_tensors_verbose_fnÚaliasing_code_partsÚaliasing_verbose_code_partsrþ  rN  Úsource_arÜ  r{  r[  Úoverlapping_guard_managersÚnon_overlapping_guard_managersÚcheck_global_staterß   r  rá   rð  râ   s                            @@@r½   r¨  z%CheckFunctionManager.compile_check_fnb  s³  ú€ ð × Ñ ˆØÐ'Ð(Ñ(ˆä×Ñ˜Ô#ð ˆ
ØÐØCEÐð 	×Ñ×Ñ×1Ñ1Ü”×1Ñ1Ó3Ó4ô	
ð
 *.ˆÔ&ð FKð)	=Øð)	=Ø#2ð)	=Ø>Bð)	=à÷)	=ôV ‹uˆØ—<”<ˆCØŸœ�Ø˜tÒ#ñ " $¨¯	©	°4Ô8Ø—H‘H˜T•Nñ &ð  ð $+×#CÑ#CÐ ØÐØ#'Ð äÐ'Ó(¨1Ò,ô -Ø×9Ñ9Ø(Ø%¨¯	©	Ð2JÓ(KÑKÈcÑQÐRØô	ô" ×6Ò6Ø×3Ò3ä?BÜ”c˜7×>Ñ>Ð?ó@Ñ<ÐÐ!<ð ×8Ñ8Ø#Ð%@ôð
 59×4EÒ4EˆD×Ñ×0Ò0È2ð 	ô (ˆEÜ˜%¤Ô1Ø ×/Ñ/�Ø ×/Ñ/�Ø'Ÿ}™}˜o¨T°(·-±-°ÐA�	Ü-Ø×9Ñ9¸(ÓCØ×9Ñ9¸(ÓCØ�KØô	ñ ˜i¨¨tÕ4Ü˜E¤>Ô2ð #×6Ò6ó.á6˜ð ×9Ñ9¸!Õ<Ø6ð +ð .ð #×:Ò:ó2á:˜ð ×9Ñ9¸!Õ<Ø:ð /ð 2ð
&Ø&*§i¡iÑ/ZÀ×@YÒ@YÓ/ZÓ&ZÐ%[ð \*Ø*.¯)©)Ñ3bÀE×DaÒDaÓ3bÓ*bÐ)cÐceðið ô
 2Ø.Ø2Ø�KØô	ñ ˜i¨¨tÖ4ä"Ð%;¸E¸7Ð#CÓDÐDðE (ðL ×)Ô)ˆCØŸœ�ñ ˜d C§I¡I¨tÕ4ñ &ð *ñ  Ü�N‰N×+Ñ+ØÓ,Wð ,ô ô ×-Ñ-Ð5ä!.×!?Ñ!?Ó!A×!GÑ!GÑä!(¨×):Ñ):¸GÀTÓ!JÐà 0Ø(@Ø%7Ø26×2YÑ2Yñ	
ô
 ð
ô  Ó!ð
ˆð 	×Ñ×#Ñ#Ô%à # W§]¡]°3Ñ%7Ð8Ðô �:‹ !Ò#Ð#Ð#à*6ˆ×ÑÔ'Ø"'ˆ×ÑÔØ×Ñ×<Ñ<Ô>Ø0Bˆ×ÑÔ-à*>ˆ×ÑÔ'Ø+8ˆ×ÑÔ(ð *.ˆ×ÑÔ&Ø)-ˆ×ÑÔ&Ø8Pˆ×ÑÕ5ùòK.ùò2s   È?RÉ'R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 )NrW  zCache line invalidated because z got deallocated)	rj  r   rW  rÍ  rå   ræ   rƒ   r…   Ú
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  )	rc  r£  rM  r  r  rÅ  rÆ  r  r  )rÆ   r  r  s      r½   rI  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)rc  r£  )rÆ   r  s     r½   rK  z$CheckFunctionManager.lookup_weakrefsN  s(   € äˆc‹7�d—n‘nÑ$Ø—>‘>¤" S£'Ñ*Ð*Ør¿   )NNNNNFF)rH  rˆ  r`  r¤   rå   úOptional[CacheEntry]rä   ú%Optional[Callable[[GuardFail], None]]r^  r‹  r,  rÕ  rP  rŽ  r]  rÒ   r´  rÒ   rÏ   rÓ   )r�  r<  r¶  úlist[Guard]r`  r¤   rÏ   rt  rÜ   )r¶  r  rµ  r�  rH  rˆ  r`  r¥   r]  rÒ   r^  r‹  rÏ   z(tuple[GuardBuilder, GuardManagerWrapper])r�  r<  r  r  rä   r  rÏ   rÓ   )r  rÐ   rÏ   rÓ   )r  r}  r  rÐ   rÏ   r"  )r  r}  rÏ   zOptional[weakref.ref[object]])rÔ   rÕ   rÖ   rì   r¹  r±   r­  r§  r¨  r  rI  rK  r†  r¿   r½   rŠ  rŠ  Ó  sj  … ð
 -1Ø?CàØ59Ø9=Ø!Ø"ðB!àðB!ð (ðB!ð *ð	B!ð
 =ðB!ððB!ð 3ðB!ð 7ðB!ð ðB!ð ðB!ð 
óB!ðH	HÐ)Ð+Dó 	ðz:àðz:ð #ðz:ð (ð	z:ð
 
óz:ðH ðA&à"ðA&ð &5ðA&ð ð	A&ð
 -ðA&ð ðA&ððA&ð 
2óA&ðFHQàðHQð  ðHQð =ð	HQð
 
óHQóT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   rA   c                ó&   •— ‰j                  | «      S rÜ   )rÍ  )r©  Úcsepasss    €r½   rÍ  z%build_guard_function.<locals>.replace\  s   ø€ Ø—?‘? 4Ó(Ð(r¿   c                ó
   — g | fS rÜ   r†  )r©  s    r½   rÍ  z%build_guard_function.<locals>.replaceb  s   € Ø�t�8ˆOr¿   zif not (z):zreturn Falsezdef guard(L):zreturn Truezdef ___make_guard_fn(zreturn guardrÀ  )
Útorch._inductor.utilsrB   r�  r»  ÚRecursionErrorre  rÊ   r^  Úsplicerk  )
rá   Úclosure_argsrB   rÍ  Ú
guard_bodyr©  r£  rN  Úmake_guard_fnr  s
            @r½   r÷  r÷  U  se  ø€ Ý4ä‹o€Gð
Ø�‰�jÔ!õ	)ñ  Ó!€JÛˆÙ ›‰ˆ�Ø×Ñ˜gÔ&Ø×Ñ˜x¨ v¨RÐ0Ô1Ø×ÑÕ Ø× Ñ  Ô0÷ !Ð ð	 ñ Ó€EØ	‡O�O�OÔ$Ø	�‰�Ø�‰�ZÔ Ø�‰˜Ô&÷ 
ñ #Ó$€MØ×ÑÐ3°L°>ÀÐDÔEØ	×	Ñ	Õ	Ø×Ñ˜UÔ#Ø×Ñ Ô/÷ 
 ð ×ÑÓ  -×"8Ñ"8Ó":Ð:Ð:øô? ò ö	ðú÷ !Ñ ú÷ 
ˆú÷ 
 Ð	ú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                óP   ‡— | D �cg c]  }t        |«      ‘Œ c}Šdˆfd„}|S c c}w )Nc                 ó�   •— t        «       } t        | «      t        ‰«      k7  ryt        ‰| «      D ]  \  }}|t        |«      usŒ y yr/  )r�   r·   r  r?  )Ú	cur_stackr%  Úmoder5  s      €r½   Úcheck_torch_function_mode_stackzMmake_torch_function_mode_stack_guard.<locals>.check_torch_function_mode_stack�  sG   ø€ Ü1Ó3ˆ	äˆy‹>œS ›ZÒ'Øä˜E 9Ö-‰HˆB�Øœ˜d›Ò#Ùð .ð r¿   ©rÏ   rÒ   )r?  )Úinitial_stackrp  r0  r5  s      @r½   rû  rû  Š  s/   ø€ ñ ,Ó,™m˜ŒT�!�W˜mÑ,€Eõ
ð +Ð*ùò -s   †#ÚScopec                ó|  — | j                   €J ‚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__rQ   rT  zDuplicate tensors found: )rã   r"  r½  r°  rÛ  rè   rc  Úevalrx  r·   rö  )	rW  rL  rã   Úids_to_sourcerZ  Ú	tensor_idr  Úduplicate_tensorsrÐ  s	            r½   Ú1recompilation_reason_for_no_tensor_aliasing_guardr:  ¡  sÙ   € ð ×%Ñ%Ð1Ð1Ð1Ü˜×2Ñ2Ó3€LÜ×+Ñ+¬DÓ1€MØ&×AÔAˆØ-:ˆÐ)Ñ*Ü”t˜M¨<¸Ó?Ó@ˆ	Ø�iÑ ×'Ñ'¨Õ6ð Bñ ,9óÙ+8 C¼CÀÈcÑ@RÓ<SÐVWÓ<Wˆ=˜ÑÐ
Ñ¨=ð ð ð �Y‰YÐ(Ó)€FØ'¨ xÐ0Ð1Ð1ùòs   ÂB9ÂB9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½   r~  r~  ´  s   € ó à+€GØ�6‰6�'˜5 !Ó$Ð$r¿   c           	     óR  — | �t        | «      dk(  ryg }| D ]  }|j                  }|j                  }|j                  }|j                  r|j                  j                  «       nd}|j                  d|› d|› d|› �«       |sŒl|j                  d|› �«       Œ� dj                  |«      S )zÅ
    Format the user stack trace for display in guard failure messages.

    Returns a formatted string representation of the stack trace,
    or an empty string if no user stack is available.
    r   rh  z  File "z", line z, in ú    rÊ  )r·   rÓ  r·  rã  rË   Ústriprx  rö  )rÑ  ÚlinesÚframerÓ  r·  rã  Úsource_lines          r½   Úformat_user_stack_tracerE  Á  s¢   € ð ÐœS ›_°Ò1Øà€EÛˆØ—>‘>ˆØ—‘ˆØ�z‰zˆØ,1¯JªJ�e—j‘j×&Ñ&Ô(¸BˆØ�‰�x ˜z¨°&°¸¸t¸fÐEÔFÚØ�L‰L˜4 ˜}Ð-Õ.ð ð �9‰9�UÓÐr¿   c                ó   — | j                   €J ‚| j                  €J ‚|| j                   d   dœ}|j                  | j                  «       g }d}| j                  r| j                  j                  }d}g }| j                  |«      }	d}
|	j                  sJ|	j                  }t        |«      dk(  rd|d   v rd	}n|}g }|	j                  rBt        |	j                  «      }
n,||k7  rd
}|j                  |«       nd}|j                  |«       |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 t        |«      dk(  r|› d|d   › �}n|› d�dj+                  |«      z   }|
r|d|
› �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.
    Nr@  r>  Frh  rQ   zDuplicate tensor foundr   Ta  BACKEND_MATCH failure: torch.compile detected different backend callables. If this is unexpected, wrap your backend in functools.partial (or reuse the same cached backend) to avoid creating a new backend function each time. More details: https://github.com/pytorch/pytorch/issues/168373z»Unexpected recompilation: runtime guards failed even though they passed during recompilation-reason analysis. Please open an issue with a minimal repro: https://github.com/pytorch/pytorchr5  rM  z; z
User stack trace:
)rã   rß   r’  rå   rš  rr  Úresultrâ   r·   rÑ  rE  rx  r:  r"  rO   r6  rH  r+  r   rÒ   rÐ   rö  r~  )rW  Úf_localsÚ
compile_idrš  rL  r¸  Úcache_entry_backendÚno_tensor_aliasing_check_failedrâ   Úguard_debug_infoÚuser_stack_strrÐ  rQ  rã   Úfail_reasonÚ
reason_strs                   r½   rª  rª  Ù  sH  € ð ×%Ñ%Ð1Ð1Ð1Ø×%Ñ%Ð1Ð1Ð1Ø ×!;Ñ!;¸CÑ!@ÑA€EØ	‡L�L�×+Ñ+Ô,Ø€GàÐØ× Ò Ø+×7Ñ7×?Ñ?Ðà&+Ð#à$&ÐØ$×2Ñ2°8Ó<ÐØ€Nð
 ×"Ò"Ø-×@Ñ@Ðô Ð!Ó" aÒ'Ø'Ð+=¸aÑ+@Ñ@Ø26Ñ/à,�Ø%'Ð"ð ×&Ò&Ü4Ð5E×5PÑ5PÓQ‰NØ	 Ò	'ðNð 	ð 	�‰�vÕð2ð 	ð 	�‰�vÔá&ÜCØ˜5ó
‰ó 'ˆDÜ × :Ñ :Ó;ˆLØ15ˆLÐ-Ñ.Ü/Õ1ðÜ"& t¨\¸5Ó"A‘K÷ 2ô ˜+¤tÔ,±[Ø"�Ü˜+¤sÕ+Ø—‘˜{Ô+Ü4Õ6Ùð' 'ô. ˆ7ƒ|�qÒØ"�| 2 g¨a¡j \Ð2‰
à"�| 2Ð&¨¯©°7Ó);Ñ;ˆ
ÙØÐ-¨nÐ-=Ð>Ñ>ˆ
Ü˜ZÓ(Ð(øô/ !ò Ü4Ô6Ø ÷ 2Ð1ð ð	ú÷ 2Ð1ús*   ÅHÅG"Ç"HÇ5HÇ?HÈHÈH	c                óZ  — t        | t        «      r|› d| j                  › �S t        | |||«      }|r|S t        t
        |      j                  |«       	 | j                  �&| j                  t        |xs dt
        |   «      «       |S # t        $ r t        j                  d«       Y |S w xY w)NrM  zunknown reasonzVFailure in guard_fail_fn callback - raising here will cause a NULL Error on guard eval)r   rÍ  rÏ  rª  r’   r—   rx  rä   r‡   rH  r  r¶  )rW  r¹   rH  rI  rš  Úskip_loggingrO  s          r½   Úget_guard_fail_reasonrR  D  sÁ   € ô �-Ô!;Ô<Ø�˜R × AÑ AÐBÐCÐCÜ-Ø�x ¨Wó€Jñ ØÐÜ”= Ñ&Ñ'×.Ñ.¨zÔ:ð
Ø×&Ñ&Ð2Ø×'Ñ'Ü˜*Ò8Ð(8¼-ÈÑ:MÓNôð Ðøô ò 
Ü�‰Ødõ	
ð Ðð
ús   Á2B ÂB*Â)B*c                ód  ‡
— g Š
| �Zt        | j                  | j                  |j                  | j                  ||«      }|r‰
j                  |«       | j                  } | �ŒZ|j                  }|r‰
S 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^  )r  r$  rÐ  s      r½   r  z:get_and_maybe_log_recompilation_reasons.<locals>.<genexpr>‡  s5   è ø€ ð #á!3‘I�A�vð ˜˜˜<Ð(¬8¯?©?¸6À4Ó+HÕHÙ!3ùs   ‚*,rÊ  rU  z-triggered by the following guard failure(s):
zRecompiling function z in Ú:r@  Úartifactc                 ó   — dddœS )NÚrecompile_reasonsr  )rã  Úencodingr†  r†  r¿   r½   r©  z9get_and_maybe_log_recompilation_reasons.<locals>.<lambda>ž  s   € Ø'Øò
r¿   c                 ó.   •— t        ‰ «      dk(  r‰ d   S ‰ S )NrQ   r   )r·   )r¸  s   €r½   r©  z9get_and_maybe_log_recompilation_reasons.<locals>.<lambda>¢  s   ø€ ¬¨W«¸Ò):˜7 1™:ÐGÀÐGr¿   )Úmetadata_fnr¢  )rR  rW  r¹   rH  rI  rx  rÒ  rH  r)  r+  rR   Úerror_on_recompilerö  rv  r=  r^  r|  Úco_filenameÚco_firstlinenoÚrecompiles_verbose_logrù  Úrecompiles_logrT   ÚRecompileErrorr/  r±  r²  )rå   rC  rš  rQ  rÐ  r¹   Údo_recompiles_logÚfailuresÚguard_failure_detailsÚmessager¸  s             @r½   Ú'get_and_maybe_log_recompilation_reasonsrg  c  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×#Ñ#Øñ
ó Hð $ô ð €Nr¿   c                ó  — | }t        «       }| �8|j                  | j                  j                  «       «       | j                  } | �Œ8|} | �:|| j                  _        | j                  j                  «        | j                  } | �Œ:|S rÜ   )rM   r’  rW  r  rÒ  rë   r  )rå   Úfirst_cache_entryÚacc_diff_guard_sourcess      r½   r¤  r¤  ¨  s—   € ð $Ðô
 /9«lÐØ
Ð
!Ø×%Ñ%Ø×%Ñ%×@Ñ@Ó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 Ú rV  zlambda rT  z and
  r?  zMalformed guard:
)
Úprintr|  r^  r_  rö  rà   rá   rß   r6  rã   )rW  r¹   rH  r¸   Úlastri  rN  s          r½   Úguard_error_hookro  Ã  sË   € ô 
Ø
 §¡˜~¨Q¨t×/?Ñ/?Ð.@ÀÀ$×BUÑBUÐAVÐWôô 
ˆ)�d—i‘i × 2Ñ 2Ó3Ñ
3°cÑ
9Ô:Ü	ˆ#ˆz�‰˜}×7Ñ7Ó8Ô9ä	ˆ-Ôà˜Ð? M×$>Ñ$>Ð?€KØ×)Ô)ˆð	0Ü�˜×2Ñ2°KÕ@ñ *øð	0ÜÐ& u gÐ.Ö/ús   Â-CÃCc              #  ób   K  — t        «       }| D ]  }||vsŒ|–— |j                  |«       Œ y ­wrÜ   )ré   r÷   )Úseqr  rp  s      r½   Úuniquerr  Ý  s.   è ø€ Ü‹5€DÛˆØ�DŠ=ØŠGØ�H‰H�Q�Kñ ùs   ‚/—/c                ó  — |rŠ|| k7  r…t        |«      }t        | «      }t        |«      st        | «      r/t        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Ü  )	r0   r/   rT   ÚUnsafeScriptObjectErrorrã  rÅ  rÆ  r<  rß  )Ú
obj_sourceÚdupe_sourceÚser_source_is_localÚsource_is_locals       r½   Úmake_dupe_guardry  å  s“   € ñ �{ jÒ0Ü2°;Ó?ÐÜ.¨zÓ:ˆÜ/Øô
ä1°*Ô=Ü×-Ñ-Ø—?‘?Ð# =°×1AÑ1AÐ0Bð C>ð ?óð ð  /Ò1ô ×$Ñ$¤\×%AÑ%AÈKÔXÐXØr¿   )Úskipc                óv  — ddl m} t        j                  t        j
                  «      xs# t        j                  t        j
                  «      }|j                  «       j                  j                  j                  }|D ]8  }t        |t        «      sJ ‚t        |j                  «      rŒ+ |||| 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   )ÚTracingContextrQ   )Úcollect_debug_stackrz  N)Útorch._guardsr|  rø  ré  rê  rë  rè  rb  Úguards_contextrö  r÷   r   r;   r2   rÝ  )rz  r©   r|  r}  r÷   rN  s         r½   Úinstall_guardr€  	  s–   € õ -ä$×1Ñ1Ü�‰óò 8ä	×	(Ñ	(¬¯©Ó	7ð ð ×
Ñ
Ó
×
-Ñ
-×
;Ñ
;×
?Ñ
?€CÛˆÜ˜%¤Ô'Ð'Ð'Ü$ U×%=Ñ%=Ô>ØÙˆEÐ':ÀÈÁÖJñ	 r¿   )r¹   rˆ  rº   rÐ   rÏ   r"  )rŽ  r   rÏ   rr  )rÏ   zset[str])rÏ   r‰  )rø   rœ  rÏ   rÐ   )r{  rÐ   rN  rü  rÏ   rÐ   rÜ   )rá   zUnion[str, list[str]]rN  rü  rÞ  rƒ  rÏ   r  )rY  zOptional[Source]rÏ   rƒ  )rì  r   rÏ   zOptional[int])rï  ru  rÏ   úlist[Optional[int]])r÷  rr  rã  rÐ   rø  r�  rù  r�  rú  r?  rû  r£   rÏ   rÐ   )r  rŒ  r  r   rÏ   r"  )rY  r   r¸   r   rÏ   rÐ   )r  r   rÏ   r	   )r÷  r   rÏ   rÒ   )rY  z3Union[DictGetItemSource, DictSubclassGetItemSource]r'  r   r(  r   r  r   r   r  rÏ   r   )rN  r;   rÏ   rÒ   )r¹   rˆ  rÏ   r  )rÏ   ztuple[type, ...])rN  r;   r�  r<  rÏ   rˆ   )ró  rÔ  r�  r<  rÏ   rt  )rá   r  r!  rÐ   rÏ   ztuple[str, str]r1  )r2  z'list[torch.overrides.TorchFunctionMode]rÏ   zCallable[[], bool])rW  rÚ   rL  r3  rÏ   r  )r[  rÐ   rÏ   rÐ   )rÑ  ztraceback.StackSummary | NonerÏ   rÐ   )
rW  rÚ   rH  r‰  rI  zOptional[CompileId]rš  zOptional[Callable]rÏ   rÐ   rÑ   )rW  rÚ   r¹   rˆ  rH  r‰  rI  r9   rš  r�   rQ  rÒ   rÏ   rÐ   )
rå   r  rC  r„   rš  r�   rQ  rÒ   rÏ   r  )rå   r  rÏ   r�  )rW  r‰   r¹   rˆ  rH  r‰  r¸   r"  rn  rÒ   rÏ   rÓ   )rq  zSequence[T]rÏ   zGenerator[T, None, None])ru  r?   rv  zSource | NonerÏ   z Optional[functools.partial[Any]])r©   r;   rz  r"  rÏ   rÓ   ("  r…  Ú
__future__r   rË  rQ  r½  rÄ  r}  rÅ  rÃ  r˜  r…  rê  rÀ  Úpickler  r=  r�  r5  r�  rM  Ú
contextlibr   rS  r   r   Útypingr   r   r	   r
   r   r   Útyping_extensionsr   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   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Útorch._dynamo.sourcer,   r-   r.   r/   r0   r1   r2   r3   r4   r5   Útorch._dynamo.utilsr6   r7   r~  r8   r9   r:   r;   r<   r=   r>   r?   r@   r  rB   Útorch._library.opaque_objectrC   rD   Útorch._loggingrE   Útorch._utils_internalrF   Ú%torch.fx.experimental.symbolic_shapesrG   rH   rI   rJ   rK   Útorch.utilsrL   r­  Útorch.utils._ordered_setrM   Útorch.utils._tracebackrN   rO   Útorch.utils.weakrP   rh  rR   rS   rT   Ú
eval_framerU   rY  rV   rW   rX   rY   rZ   r[   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€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rÅ  rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   Úcollections.abcr�   rž   r±   ÚnumpyrŠ  ÚModuleNotFoundErrorrŸ   r    r¡   rT  r¢   Útorch._Cr£   r+  r¤   r¥   r@  r§   r¨   Ú	getLoggerrÔ   r  r±  ÚgetArtifactLoggerrø  ra  r`  rè  r;  r¾   rÁ   rÚ   r�  Úcacherœ  rž  rÈ  rÎ  rò  r”  r
  rØ  rà  rÜ  rí  rð  rÿ  r  r  r  r  rÅ  r  r-  r2  r4  r~  r  r¶   r<  r�  rË  rÍ  r7  rÔ  r×  ræ  ÚPicklerrè  rƒ  r�  rŠ  r÷  r)  r+  rû  r"  rÐ   r}  r3  r:  r~  rE  rª  rR  rg  r¤  ro  rr  ry  r€  r†  r¿   r½   Ú<module>rž     sq  ðòõ" #ã 
Û Û Û Û Û Û Û Û 	Û Û Û Û 
Û Û Û Û Û Ý %Ý Ý  ß L× Lß CÑ CÝ !ã Û Û Ý >÷÷ ÷ ÷ ÷ ÷ ÷ ÷8÷ ÷ ÷ H÷
÷ 
õ 
õ 1ß RÝ %Ý 1÷õ õ *Ý /ß OÝ *ç (Ñ (Ý ,÷.÷ .÷ .÷ .÷ .÷ .÷ .÷ .÷ .÷ .÷ .õ .÷^÷ ñ ÷÷ ÷ ÷ ÷ ñ ñ. Ý(ð KOÐ ÐGÓ NðÛñ
 ß=Ñ=åå'ßTÝ4áˆCƒL€Ø€g×Ò˜Ó!€Ø�^Š^×-Ò-¨h¸ÓA€
Ø—’×1Ò1°(¸LÓI€ØŸš×9Ò9ØÐ"óÐ ð —^’^×5Ò5°hÐ@PÓQÐ ð"Ð óô,˜~ô ,÷ñ óDTð ‡‚ò.ó ð.ð .2€Ð*Ó 1óó>/ð —h’h×&Ò&×:Ò:Ð ó%ð6 %)ðØ%ðàðð "ðð ó	ó<ó,'óKðØðà
ðð ðð !ð	ð
 ðð "ðð 	óó*3ó1óóð €×Ò˜dÔ#÷!ð !ó $ð!ð*Ø?ð*à(ð*ð ð*ð ð	*ð
 )ð*ð ó*óZ
Gð ×Ò÷ð ó ðô
�t—y’yõ ð
 ‡‚ò8ó ñ8ô}!
Ð#õ }!
÷bDR8ò R8ôjô$Ð!4õ $ð ×Ò÷$ð $ó ñ$ð ×Ò÷/ð /ó ñ/÷
ò ð  ‡‚ò
ó ñ
ôc˜Ÿšõ côLð:)Øð)àð)ð ô)÷b	ò 	ôD);ôXPôXð
+Ø:ð+àô+ñ( 	�g™t¡C© KÑ0Ó1�ð2Ø&ð2Ø/4ð2àô2ô&
%ðØ-ðàôð0h)Ø&ðh)àðh)ð $ðh)ð
  ðh)ð 	ôh)ðd ðØ&ðà
ðð  ðð ð	ð ðð ðð 	ôðH ðBØ%ðBàðBð ð	Bð
 ðBð ôBðJ"Ø%ð"àô"ð60Øð0à
ð0ð  ð0ð ð	0ð
 ð0ð 
ô0ñ. Ñ%Ô &ôð!Øð!Ø%2ð!à%ô!ðH /0÷ KøðwQ ò Ø	ƒBðús   È T> Ô>U	ÕU	