Ë
    P/æjºÇ ã                  óè  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	mZ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# d dlm$Z$ d dl%Z%d dl&Z%d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d d	l0m1Z1m2Z2m3Z3m4Z4m5Z5 d d
l6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZF d dlGmHZHmIZI d dlJmKZK ddlLmMZMmNZNmOZOmPZP ddlQmRZR ddlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZm ddlmnZnmoZompZpmqZqmrZr ddlsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm€Z€m�Z� 	 d dl‚Zƒe"rd dl…m†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� G d„ d«      Z�d„ Z‘ e�j$                  d«      d„ «       Z“i de)“d e(“d!e�j(                  �j*                  “d"e{“d#e*“d$d%„ “d&e“d'e~“d(e�j,                  “d)eƒ€dneƒ�j,                  “d* e—d*«      “d+e�j0                  “d,e%jæ                  �j2                  “d-e%�j4                  “d.e‘“d/e%�j6                  “d0e%“d1e	i¥Zœe�j:                  dd2 d3k  r	 d dlžZžd_d4„ZŸd5Z nd5Z d_d7„ZŸd8„ Z¢d9„ Z£d`d:„Z¤	 	 	 	 	 	 dad;„Z¥d<„ Z¦d=„ Z§d>„ Z¨d?„ Z© e�jT                  d5¬@«       G dA„ dB«      «       Z«dC„ Z¬dD„ Z­e�jT                   G dE„ dF«      «       Z® G dG„ dHe�j^                  «      Z° G dI„ dJe;«      Z± G dK„ dL«      Z²dM„ Z³ G dN„ dO«      Z´ G dP„ dQ«      ZµdbdR„Z¶dS„ Z·dT„ Z¸dU„ Z¹dV„ Zº	 	 	 	 	 	 	 	 dcdW„Z»	 	 	 	 	 	 	 	 	 	 dddX„Z¼	 	 	 	 dedY„Z½	 	 	 	 	 	 	 	 	 	 dfdZ„Z¾ eRe¾«       d[„ Z¿d\„ ZÀd d]œd^„ZÁy# e„$ r dZƒY �Œ†w xY w# e¡$ r d6Z Y �Œw xY w)gé    )ÚannotationsN)Úcontextmanager)Údeepcopy)ÚcurrentframeÚgetframeinfo)
ÚAnyÚCallableÚDictÚListÚOptionalÚSetÚTupleÚTypeÚTYPE_CHECKINGÚUnion)ÚReferenceType)Úcheck_obj_idÚcheck_type_idÚdict_versionÚDictGuardManagerÚ install_no_tensor_aliasing_guardÚinstall_object_aliasing_guardÚRootGuardManagerÚTensorGuards)Ú$is_from_flatten_script_object_sourceÚis_from_local_sourceÚis_from_optimizer_sourceÚTensorPropertyÚTensorPropertySource)ÚCompileContextÚ	CompileIdÚDuplicateInputsÚGuardÚGuardBuilderBaseÚGuardEnvExprÚGuardSourceÚSource)Ú
structured)Újustknobs_check)ÚEqualityConstraintÚis_symbolicÚSYMPY_INTERP)Úformat_frameÚreport_compile_source_on_error)ÚTensorWeakRefé   )ÚconfigÚconvert_frameÚexcÚmutation_guard)Úset_guard_error_hook)ÚAttrProxySourceÚ
AttrSourceÚChainedSourceÚConstDictKeySourceÚDefaultsSourceÚFlattenScriptObjectSourceÚFSDPNNModuleSourceÚGetItemSourceÚGlobalSourceÚGlobalStateSourceÚGlobalWeakRefSourceÚ
GradSourceÚLocalSourceÚNNModuleSourceÚNumpyTensorSourceÚODictGetItemSourceÚOptimizerSourceÚScriptObjectQualifiedNameSourceÚShapeEnvSourceÚSubclassAttrListSourceÚTupleIteratorGetItemSourceÚ
TypeSourceÚ"UnspecializedBuiltinNNModuleSourceÚUnspecializedNNModuleSourceÚUnspecializedParamBufferSourceÚWeakRefCallSource)Ú
CacheEntryÚ
ExtraStateÚGuardedCodeÚ	GuardFailÚGuardFn)Úcommon_constant_typesÚdict_keys_reprÚget_custom_getattrÚget_torch_function_mode_stackÚguard_failuresÚistypeÚ	key_is_idÚ	key_to_idÚorig_code_mapÚtensor_always_has_static_shapeÚtuple_iterator_getitemÚtuple_iterator_lenÚunpatched_nn_module_getattrÚverify_guard_fn_signature)ÚSymbolÚguardsÚ
recompilesÚrecompiles_verboseÚverbose_guardsc                  óX   — e Zd ZdZd„ Zed„ «       Zd„ Zdd„Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚGuardManagera  
    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++.
    c                ó¼   — t        «       | _        d | _        d | _        g | _        d | _        d | _        d | _        d | _        d | _	        d | _
        g | _        d| _        y ©NT)r   Ú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Úprint_no_tensor_aliasing_guard©Úselfs    úW/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/guards.pyÚ__init__zGuardManager.__init__™   sb   € Ü$Ó&ˆŒ	à ˆÔØˆŒ	ØˆŒØ"&ˆÔØ ˆÔØ!ˆÔØˆÔØˆÔØ#ˆÔØ*,ˆÔ'à.2ˆÕ+ó    c              #  óJ   K  — d| _         	 d –— d| _         y # d| _         w xY w­wrk   )rw   rx   s    rz   Ú'_preserve_print_no_tensor_aliasing_flagz4GuardManager._preserve_print_no_tensor_aliasing_flag©   s&   è ø€ à.2ˆÔ+ð	7Ûà26ˆDÕ/ø°$ˆDÕ/üs   ‚#‹ �#—	  #c                ó†   — |j                   j                  }|j                  «       }|D �cg c]
  }|dz   |z   ‘Œ }}|S c c}w )Nú: )Ú	__class__Ú__name__rp   )ry   ÚguardÚ
guard_nameÚpartsÚparts        rz   Úget_guard_lineszGuardManager.get_guard_lines±   sF   € Ø—_‘_×-Ñ-ˆ
Ø×(Ñ(Ó*ˆØ6;Ö<¨d�˜dÑ" TÓ)Ð<ˆÐ<Øˆùò =s   «>Nc                óv   — |j                  «       }|j                  j                  }|dz   |z   }|r|d|z   z  }|S )Nz	: source=ú, )Ú
get_sourcer�   r‚   )ry   Úguard_managerÚaccessor_strÚsourceÚtÚss         rz   Úget_manager_linezGuardManager.get_manager_line·   sF   € Ø×)Ñ)Ó+ˆØ×#Ñ#×,Ñ,ˆØ�‰O˜fÑ$ˆÙØ�˜Ñ$Ñ$ˆAØˆr|   c                ó¶  — t        |j                  «       j                  «       «      D ]£  \  }\  }}|j                  d|› �«       |j	                  «       5  |r5|j                  d| j                  |«      › �«       | j                  ||«       |r5|j                  d| j                  |«      › �«       | j                  ||«       d d d «       Œ¥ y # 1 sw Y   Œ°xY w)NzKeyValueManager pair at index=zKeyManager: zValueManager: )ÚsortedÚget_key_value_managersÚitemsÚ	writelineÚindentr�   Úconstruct_manager_string)ry   ÚmgrÚbodyÚidxÚkey_mgrÚval_mgrs         rz   Úconstruct_dict_manager_stringz*GuardManager.construct_dict_manager_string¿   sÔ   € Ü'-¨c×.HÑ.HÓ.J×.PÑ.PÓ.RÓ'Sò 		AÑ#ˆCÑ#�'˜7Ø�N‰NÐ;¸C¸5ÐAÔBØ—‘“ñ AÙØ—N‘N \°$×2GÑ2GÈÓ2PÐ1QÐ#RÔSØ×1Ñ1°'¸4Ô@áØ—N‘N ^°D×4IÑ4IÈ'Ó4RÐ3SÐ#TÔUØ×1Ñ1°'¸4Ô@÷Að Añ		A÷Að Aús   ÁA/CÃC	c           
     ó  — |j                  «       5  |j                  «       D ]µ  }t        |t        j                  j
                  j                  j                  «      r[| j                  r(d| _        |j                  | j                  |«      «       Œo|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)NFzaccessed_by=)r–   Úget_leaf_guardsÚ
isinstanceÚtorchÚ_CÚ_dynamord   ÚNO_TENSOR_ALIASINGrw   Ú
writelinesr‡   r�   r‚   r   r�   ÚzipÚget_accessorsÚget_child_managersr•   r�   Úreprr—   )ry   r˜   r™   rƒ   ÚaccessorÚ	child_mgrs         rz   r—   z%GuardManager.construct_manager_stringË   sF  € Ø�[‰[‹]ñ 	?Ø×,Ñ,Ó.ò A�Ü˜e¤U§X¡X×%5Ñ%5×%<Ñ%<×%OÑ%OÔPØ×:Ò:Ø>C˜Ô;ØŸ™¨×(<Ñ(<¸UÓ(CÕDàŸ™à %§¡× 8Ñ 8ðõð —O‘O D×$8Ñ$8¸Ó$?Õ@ðAô ˜#Ô/Ô0Ø×2Ñ2°3¸Ô=ô (+Ø×!Ñ!Ó# S×%;Ñ%;Ó%=ó(ò ?Ñ#�˜)ð —‘Ø×)Ñ)¨)°|ÀHÇMÁMÃOÐCTÐ5UÓVôð ×-Ñ-¨i¸Õ>ñ?÷)	?÷ 	?ñ 	?ús   ‘EE:Å:Fc                óÐ  — ddl m}  G d„ d|«      }| j                  «       5   |«       }d|_        |j	                  dd¬«       |j	                  d	d¬«       |j	                  d
«       | j                  | j                  |«       | j                  j                  «       D ]"  }|j                  | j                  |«      «       Œ$ |j                  «       cd d d «       S # 1 sw Y   y xY w)Nr   ©ÚIndentedBufferc                  ó&   ‡ — e Zd Zd„ Zdˆ fd„	Zˆ xZS )ú6GuardManager.__str__.<locals>.IndentedBufferWithPrefixc                ó:   — d| j                   | j                  z  z  S )Nz| )Ú_indentÚtabwidthrx   s    rz   Úprefixz=GuardManager.__str__.<locals>.IndentedBufferWithPrefix.prefixì   s   € Ø˜tŸ|™|¨d¯m©mÑ;Ñ<Ð<r|   c                óN   •— |rt         ‰| �  |«       y t         ‰| �  d|z   «       y )Nz+- )Úsuperr•   )ry   ÚlineÚskip_prefixr�   s      €rz   r•   z@GuardManager.__str__.<locals>.IndentedBufferWithPrefix.writelineï   s$   ø€ ÙÜ‘GÑ% dÕ+ä‘GÑ% e¨d¡lÕ3r|   ©F)r‚   Ú
__module__Ú__qualname__r´   r•   Ú__classcell__©r�   s   @rz   ÚIndentedBufferWithPrefixr°   ë   s   ø„ ò=÷4ñ 4r|   r¾   r0   Ú T)r¸   zTREE_GUARD_MANAGER:r   )Útorch._inductor.utilsr®   r~   r³   r•   r—   rl   Úget_epilogue_lambda_guardsr¥   r‡   Úgetvalue)ry   r®   r¾   r™   rƒ   s        rz   Ú__str__zGuardManager.__str__è   sÁ   € Ý8ô	4 ~ô 	4ð ×9Ñ9Ó;ñ 		#Ù+Ó-ˆDØˆDŒMØ�N‰N˜2¨4ˆNÔ0Ø�N‰NÐ0¸dˆNÔCØ�N‰NÐ-Ô.Ø×)Ñ)¨$¯)©)°TÔ:ØŸ™×=Ñ=Ó?ò =�Ø—‘ × 4Ñ 4°UÓ ;Õ<ð=à—=‘=“?÷		#÷ 		#ò 		#ús   ¢B0CÃC%c                ó8   — | j                   j                  |«      S ©N)rl   Úcheck©ry   Úxs     rz   rÆ   zGuardManager.check   s   € à�y‰y�‰˜qÓ!Ð!r|   c                ó8   — | j                   j                  |«      S rÅ   )rl   Úcheck_verboserÇ   s     rz   rÊ   zGuardManager.check_verbose  s   € à�y‰y×&Ñ& qÓ)Ð)r|   c                óJ   ‡ ‡‡‡— dŠd„ Šˆˆ ˆˆfd„Š ‰‰ j                   «       y )NFc                óš   — g }| j                  «       D ]5  }|j                  d«      d   j                  «       }|j                  |«       Œ7 |S )Nú#r   )rp   ÚsplitÚrstripÚappend)Ú
leaf_guardro   Úverbose_code_partÚ	code_parts       rz   Úget_code_partszFGuardManager.populate_code_parts_for_debugging.<locals>.get_code_parts  sT   € ØˆJØ%/×%BÑ%BÓ%Dò -Ð!Ø-×3Ñ3°CÓ8¸Ñ;×BÑBÓD�	Ø×!Ñ! )Õ,ð-ð Ðr|   c                ój  •— | j                  «       D ]‚  }t        |t        j                  j                  j
                  j                  «      r'‰rŒ>‰j                  j                   ‰|«      «       dŠŒb‰j                  j                   ‰|«      «       Œ„ | j                  «       D ]
  } ‰|«       Œ y rk   )
rŸ   r    r¡   r¢   r£   rd   r¤   ro   Úextendr¨   )r˜   rƒ   r«   rÔ   ry   Útensor_aliasing_guard_seenÚvisits      €€€€rz   rØ   z=GuardManager.populate_code_parts_for_debugging.<locals>.visit  s–   ø€ à×,Ñ,Ó.ò B�Ü˜e¤U§X¡X×%5Ñ%5×%<Ñ%<×%OÑ%OÔPÚ5ØŸ™×.Ñ.©~¸eÓ/DÔEØ59Ñ2à—O‘O×*Ñ*©>¸%Ó+@ÕAðBð !×3Ñ3Ó5ò !�	Ù�iÕ ñ!r|   )rl   )ry   rÔ   r×   rØ   s   `@@@rz   Ú!populate_code_parts_for_debuggingz.GuardManager.populate_code_parts_for_debugging  s!   û€ à%*Ð"ò	÷	!ñ 	ˆd�i‰iÕr|   rÅ   )r‚   rº   r»   Ú__doc__r{   r   r~   r‡   r�   r�   r—   rÃ   rÆ   rÊ   rÙ   © r|   rz   ri   ri   ‘   sI   „ ñò3ð  ñ7ó ð7òóò
Aò?ò:#ò0"ò*ór|   ri   c                ó„   — t        | t        j                  t        j                  f«      rt	        j
                  | «      S | S rÅ   )r    ÚnpÚgenericÚndarrayr¡   Ú	as_tensor)Úas    rz   Ú
from_numpyrâ   #  s,   € ä!+¨A´·
±
¼B¿J¹JÐ/GÔ!HŒ5�?‰?˜1ÓÐOÈaÐOr|   c                 óˆ   — dd l } | j                  j                  g}|D �ch c]  }t        j                  |«      ’Œ c}S c c}w ©Nr   )Útorch._dynamo.external_utilsr£   Úexternal_utilsÚinspectÚgetfile)r¡   ÚmodsÚms      rz   Úuninteresting_filesrë   )  s:   € ã'ð 	�‰×$Ñ$ð€Dð )-Ö- 1ŒG�O‰O˜AÕÒ-Ð-ùÒ-s    ?Ú___check_type_idÚ___check_obj_idÚ___odict_getitemÚ___key_to_idÚ___dict_versionÚ___dict_containsc                ó
   — | |v S rÅ   rÛ   )rá   Úbs     rz   ú<lambda>rô   9  s
   €  Q¨! V€ r|   Ú___tuple_iterator_lenÚ___tuple_iterator_getitemÚ__math_isnanÚ__numpy_isnanÚinfÚ__load_moduleÚutils_deviceÚdeviceÚ___from_numpyÚ___as_tensorr¡   rç   é   )é   é   c                óL   — t        j                  | «      j                  dd«      S ©Nú
r¿   )Ú
astunparseÚunparseÚreplace©Únodes    rz   Ú_ast_unparser
  P  s    € Ü×%Ñ% dÓ+×3Ñ3°D¸"Ó=Ð=r|   TFc                óL   — t        j                  | «      j                  dd«      S r  )Úastr  r  r  s    rz   r
  r
  Y  s   € Ü�{‰{˜4Ó ×(Ñ(¨¨rÓ2Ð2r|   c                óÄ   — t        j                  d«      }d}| D ]:  }|dv rd}Œ
|dv r(|sŒ|dk7  sŒ|j                  |«      sŒ)t        |«      c S ||z  }Œ< t	        | «      S )zð
    "___odict_getitem(a, 1)" => "a"
    "a.layers[slice(2)][0]._xyz" ==> "a"
    "getattr(a.layers[slice(2)][0]._abc, '0')" ==> "a"
    "getattr(getattr(a.x[3], '0'), '3')" ==> "a"
    "a.layers[slice(None, -1, None)][0]._xyz" ==> "a"
    z[A-Za-z_].*r¿   z (z),[]ÚNone)ÚreÚcompileÚmatchÚstrip_function_callÚstrip_getattr_getitem)ÚnameÚ
valid_nameÚcurrÚchars       rz   r  r  ]  sp   € ô —‘˜MÓ*€JØ€DØò ˆØ�4‰<Ø‰DØ�V‰^Ú˜ ›¨:×+;Ñ+;¸DÕ+AÜ*¨4Ó0Ò0à�D‰L‰Dðô ! Ó&Ð&r|   c                ó4   — t        j                  d| «      d   S )z*
    "a[1]" => "a"
    "a.foo" => "a"
    z[.\[]r   )r  rÎ   )r  s    rz   r  r  t  s   € ô
 �8‰8�H˜dÓ# AÑ&Ð&r|   c                ó  — d}|j                   rCt        |j                   «      D ]*  }|j                  t        «       vsŒdt	        |d¬«      › �} n7 n5|j
                  r)dt	        |j
                  j                  «       d   «      › �}| d›|› �S )Nr¿   z  # T)r·   éÿÿÿÿz<60)Ú
user_stackÚreversedÚfilenamerë   r-   ÚstackÚsummary)rÓ   rƒ   ÚextraÚfss       rz   Úget_verbose_code_partr"  |  s�   € Ø€EØ×ÒÜ˜5×+Ñ+Ó,ò 	ˆBØ�{‰{Ô"5Ó"7Ò7Øœ|¨B°TÔ:Ð;Ð<�Ùñ	ð 
�ŠØ”| E§K¡K×$7Ñ$7Ó$9¸"Ñ$=Ó>Ð?Ð@ˆà˜ˆ_˜U˜GÐ$Ð$r|   c                óf   — t        | t        «      s| g} | D �cg c]  }t        ||«      ‘Œ c}S c c}w rÅ   )r    Úlistr"  )ro   rƒ   rÓ   s      rz   Úget_verbose_code_partsr%  ‰  s1   € ô �j¤$Ô'Ø �\ˆ
ØEOÖP¸	Ô! )¨UÕ3ÒPÐPùÒPs   ˜.c                óÜ   — g }| D ]d  }t        |«      s|j                  |«       Œ t        |t        j                  «      sJ ‚|j                  |j
                  j                  «       «       Œf |S rÅ   )r+   rÐ   r    r¡   ÚSymIntr	  Úmaybe_as_int)Úsize_or_strideÚ	convertedÚdims      rz   Úconvert_to_concrete_valuesr,  ‘  sc   € Ø%'€IØò 6ˆÜ˜3ÔØ×Ñ˜SÕ!ä˜c¤5§<¡<Ô0Ð0Ð0Ø×Ñ˜SŸX™X×2Ñ2Ó4Õ5ð6ð Ðr|   c                ó|  — t        | «      }t        j                  j                  | «      t        j                  j	                  «       z  t        j                  j                  «       z
  }| j                  }| j                  j                  }| j                  }d|› d|j                  › d|› d|› d|› d|› d|› d|› d�}	|	S )Nzcheck_tensor(r‰   z	, device=z, requires_grad=z, size=z	, stride=ú))Útyper¡   r¢   Ú_dispatch_keysÚ_dispatch_tls_local_include_setÚ_dispatch_tls_local_exclude_setÚdtyperü   ÚindexÚrequires_gradr»   )
Úvaluer  ÚsizesÚstridesÚpytypeÚdispatch_keyr3  Údevice_indexr5  Ú	guard_strs
             rz   Úget_tensor_guard_code_partr=  œ  sÁ   € Ü�%‹[€Fä�‰×Ñ Ó&¬¯©×)QÑ)QÓ)SÑSÜ�‰×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                óR   — t        | j                  «       «      j                  |«      S rÅ   )r$  Úkeysr4  )ÚdctÚkeys     rz   Úget_key_indexrB  «  s   € Ü�—‘“
Ó×!Ñ! #Ó&Ð&r|   c                ó   — d| › d|› d�S )Núlist(ú	.keys())[ú]rÛ   )r�   r4  s     rz   Úget_key_index_sourcerG  ¯  s   € Ø�6�(˜) E 7¨!Ð,Ð,r|   )Úfrozenc                  ó8   — e Zd ZU dZded<   dZded<   dZded<   y)ÚNNModuleAttrAccessorInfoFÚboolÚpresent_in_generic_dictNzOptional[str]Úl1_keyÚl2_key)r‚   rº   r»   rL  Ú__annotations__rM  rN  rÛ   r|   rz   rJ  rJ  ³  s'   … ð %*Ð˜TÓ)ð !€FˆMÓ ð !€FˆMÔ r|   rJ  c                óž  — | j                   j                  «       }| j                  «       }t        | j                  t        «      r| j                  j                  }n(t        |t
        «      sJ ‚t        || j                  «      }t        ||«      }t        |j                  «       «      |   }	t        |	t        t        f«      r	|› d|	›d�}
n|› d|› d�}
t        | j                  t        «      sM|j                  ||| j                  t        j                  ¬«      j                  | j                  |› d|	›�g«       |j!                  ||
||¬«      S )Nú[rF  ©r4  r�   Úexample_valueÚguard_manager_enumú == )Úbaser  r    r4  r9   ÚdictrB  rG  r$  r?  ÚintÚstrÚget_key_managerÚGuardManagerTypeÚGUARD_MANAGERÚadd_equals_match_guardÚget_value_manager)r�   Úbase_guard_managerÚbase_example_valuerS  rT  Úbase_source_nameÚsource_namer4  Ú
key_sourceÚkey_example_valueÚvalue_sources              rz   Úgetitem_on_dict_managerrf  Â  sF  € ð —{‘{×'Ñ'Ó)ÐØ—+‘+“-€KÜ�&—,‘,Ô 2Ô3Ø—‘×"Ñ"‰äÐ,¬dÔ3Ð3Ð3ÜÐ0°&·,±,Ó?ˆä%Ð&6¸Ó>€JÜÐ/×4Ñ4Ó6Ó7¸Ñ>ÐÜÐ#¤c¬3 ZÔ0Ø*Ð+¨1Ð->Ð,AÀÐC‰à*Ð+¨1¨Z¨L¸Ð:ˆÜ�f—l‘lÔ$6Ô7ð 	×*Ñ*ØØØ Ÿ,™,Ü/×=Ñ=ð	 	+ó 	
÷
 !Ñ
 Ø�L‰L˜j˜\¨Ð.?Ð-BÐCÐDô
ð ×/Ñ/ØØØ#Ø-ð	 0ó ð r|   c                ó`   — | j                   }|j                  «       xr t        |t        «       S rÅ   )Úoriginating_sourceÚis_dict_keyr    rA   )rƒ   r�   s     rz   Úmatch_on_id_for_tensorrj  ç  s+   € Ø×%Ñ%€FØ×ÑÓÒF¬
°6¼:Ó(FÐ$FÐFr|   c                  ó"   — e Zd ZU ded<   ded<   y)ÚGuardCodeListú	List[str]Ú	code_listr#   rƒ   N©r‚   rº   r»   rO  rÛ   r|   rz   rl  rl  î  s   … àÓØ„Lr|   rl  c                  ó   — e Zd ZdZdZdZy)r[  r0   rÿ   r   N)r‚   rº   r»   r\  ÚDICT_GUARD_MANAGERÚDICT_SUBCLASS_GUARD_MANAGERrÛ   r|   rz   r[  r[  ô  s   „ Ø€MØÐØ"#Ñr|   r[  c                  ó¤  — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 d5d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd6d
„Zedfd„Zd7d„Zd8d„Zd9d„Zd6d„Zd:d;d„Zd;d„Zd6d„Zd<d„Zd6d„Zd:d6d„Zd6d„Zd6d„Zd6d„Zd6d„Zd6d„Zd6d„Zd6d„Zd6d„Z d6d „Z!d6d!„Z"d6d"„Z#d6d#„Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d6d+„Z,d6d,„Z-d6d-„Z.d6d.„Z/d6d/„Z0d6d0„Z1d6d1„Z2d:d6d2„Z3d=d3„Z4d:d4„Z5y)>ÚGuardBuilderc                ó8  — || _         || _        || _        ||dœ| _        t        j
                  j                  «       | j                  d<   t        j                  j                  j                  j                  «       D ]X  \  }}	|j                  dd«      j                  dd«      j                  dd«      }|	| j                  d   |<   |	| j                  |<   ŒZ || _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        || _        t-        «       | _        | j*                  j0                  j2                  D ]5  }
| j.                  j5                  t7        | j9                  |
«      «      «       Œ7 i | _        i | _        t-        «       | _        y )N©ÚLÚGÚ__builtins__ú>Ú_ú<ú.Ú_dot_) Úid_refÚ
source_refÚlookup_weakrefsÚscopeÚbuiltinsÚ__dict__Úcopyr¡   ÚpackageÚpackage_importerÚ_package_imported_modulesr”   r  r‹   ÚargnamesÚcodeÚshape_env_codeÚtensor_check_namesÚtensor_check_examplesÚtensor_check_guardsÚtensor_check_guard_managersÚcheck_fn_managerÚsetÚkey_order_guarded_dict_idsÚoutput_graphÚguard_on_key_orderÚaddÚidÚgetru   Ú_cached_guard_managersÚ_cached_duplicate_input_guards)ry   r  r€  r�  Úlocal_scoperq   r‹   r�  r  Úpackage_modulerb  s              rz   r{   zGuardBuilder.__init__û  s…  € ð ˆŒØ$ˆŒØ.ˆÔØ9DÈ<Ñ3XˆŒ
Ü%-×%6Ñ%6×%;Ñ%;Ó%=ˆ�
‰
�>Ñ"ô �]‰]×+Ñ+×EÑE×KÑKÓMò	.ñ 
ØØà—<‘<  SÓ)×1Ñ1°#°sÓ;×CÑCÀCÈÓQˆDà/=ˆD�J‰J�~Ñ& tÑ,à-ˆD�J‰J�tÒð	.ð +ˆÔà#%ˆŒà)+ˆŒ	ð
 46ˆÔð .0ˆÔØ9;ˆÔ"Ø02ˆÔ Ø?AˆÔ(à6FˆÔô +.«%ˆÔ'Ø×0Ñ0×=Ñ=×PÑPò 	KˆKØ×+Ñ+×/Ñ/´°4·8±8¸KÓ3HÓ0IÕJð	Kð BDˆÔð
 ð 	Ô#ô EHÃEˆÕ+r|   c                óf  — | j                  |«      }t        |t        «      rt        d|j                  › �«      ‚|j
                  j	                  «       }|j                  «       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 )r4  rQ  rF  ©rA  r�   rS  rT  )
Úget_guard_managerr    r   ÚNotImplementedErrorr  rh  r?  r=   Úget_guard_manager_typeÚdict_getitem_manager)	ry   rS  rƒ   Údict_mgrÚdict_sourcerA  r6  re  rT  s	            rz   Ú#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Ó5ˆØ ×%Ñ%Ó'ò 	ˆCØ! #Ñ&ˆEÜ(¨×)AÑ)AÈÔMˆLØ!%×!<Ñ!<Ø˜mó"Ðð ×)Ñ)ØØ%˜ a¨ w¨aÐ0Ø#Ø#5ð	 *õ ñ	r|   c                ó  — | j                  |«      }t        |t        «      st        d|j                  › �«      ‚t        |t        «      sJ ‚t        |j                  «       «      D ]Ÿ  \  }}t        |j                  |«      }|j                  |||t        j                  ¬«      }t        |«      r5| j                  |«      }|j                  |t        d|› d|› d�|«      «       Œ|j                  |t        |› d|›�|«      «       Œ¡ y )Nz_Expecting a DictGuardManager. Seems like Dynamo forgot to set the right guard manager enum for rR  z__check_obj_id(r‰   r.  rU  )rž  r    r   rŸ  r  Ú	enumerater?  rG  rZ  r[  r\  r[   r  Úadd_id_match_guardr%  r]  )	ry   r6  rƒ   r¢  rš   rA  rc  Úkey_managerÚid_vals	            rz   Úguard_on_dict_keys_and_orderz)GuardBuilder.guard_on_dict_keys_and_order]  s  € ð ×)Ñ)¨%Ó0ˆÜ˜(Ô$4Ô5Ü%ð;Ø;@¿:¹:¸,ðHóð ô ˜(Ô$4Ô5Ð5Ð5ä! %§*¡*£,Ó/ò 	‰HˆC�Ü-¨e¯j©j¸#Ó>ˆJØ"×2Ñ2ØØ!Ø!Ü#3×#AÑ#Að	 3ó ˆKô ˜Œ~àŸ™ SÓ)�Ø×.Ñ.ØÜ*Ø)¨*¨°R¸°x¸qÐAÀ5óõð ×2Ñ2ØÔ/°:°,¸dÀ3À'Ð0JÈEÓRõñ'	r|   c                óà  — d„ }|j                   }	|j                  }
t        «       }t        j                  |j
                  «      D ]+  }|j                  |j                  j                  «       «       Œ- t        ddd«      }|	|
v rt        d|	d«      }nNd|
v r|	|
d   v rt        dd|	«      }n5d|
v r|	|
d   v rt        dd|	«      }n|	|vrd|
v r|	|
d   v rt        dd|	«      }|j                  s|j                  |j                   |||¬«      S |j                  sJ ‚|j                  }|j                  }|› d	�}dx}}dx}}dx}}|rTt        |j                  |«      }|j                  «       }|
|   }| j!                  ||«      }|}|}| j!                  ||«      }n|}|}| j!                  ||«      }|j#                  ||
t$        j&                  ¬
«      } |||||
||¬«      }|r |||||||¬«      S |S )a(  
        This tries to avoid calling the expensive nn module custom getattr method by
        checking if the attribute is accessible via __dict__. For attributes that
        are not accessible via __dict__ (like descriptors), we fallback to
        PyObject_GetAttr.

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

        The most common and expensive case for nn module guards is of type
        mod.submod1.submod2.submod3.training. We avoid the python getattr of nn
        modules by going through the __dict__.
        c                ó  — t        | t        «      rct        ||«      }d|› d|›d�}| j                  |||t        j
                  ¬«      j                  ||› d|›�g«       | j                  ||||¬«      S | j                  ||||¬«      S )NrD  rE  rF  rR  rU  r�  )	r    r   rB  rZ  r[  r\  r]  r^  r¡  )r˜   rA  rb  r`  rS  rT  r4  rc  s           rz   Úgetitem_on_dict_mgrz>GuardBuilder.getattr_on_nn_module.<locals>.getitem_on_dict_mgrš  sÂ   € ô ˜#Ô/Ô0ô &Ð&8¸#Ó>�ð  % [ M°¸5¸)À1ÐE�
Ø×#Ñ#ØØ%Ø"%Ü'7×'EÑ'Eð	 $ó ÷
 )Ñ(¨°*°¸TÀ#ÀÐ/IÐ.JÔKð ×,Ñ,ØØ&Ø"/Ø'9ð	 -ó ð ð ×/Ñ/ØØ&Ø"/Ø'9ð	 0ó ð r|   FNTÚ_parametersÚ_buffersÚ_modules©Úattrr�   rS  rT  ú	.__dict__©r�   rS  rT  )r˜   rA  rb  r`  rS  rT  )Úmemberr„  r‘  rç   Úgetmror�   Úupdater?  rJ  rL  Úgetattr_managerrM  rN  r7   rV  r  r   Úget_generic_dict_managerr[  r\  )ry   r�   r_  r`  rS  ra  rb  rT  r­  Ú	attr_nameÚmod_dictÚall_class_attribute_namesrÈ   Úaccessor_inforM  rN  Ú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                             rz   Úgetattr_on_nn_modulez!GuardBuilder.getattr_on_nn_module  sr  € ò6	ð@ —M‘Mˆ	Ø%×.Ñ.ˆä.1«eÐ!Ü—‘Ð 2× <Ñ <Ó=ò 	@ˆAØ%×,Ñ,¨Q¯Z©Z¯_©_Ó->Õ?ð	@ô 1°¸¸dÓCˆà˜Ñ Ü4°T¸9ÀdÓK‰MØ˜hÑ&¨9¸ÀÑ8OÑ+OÜ4°T¸=È)ÓT‰MØ˜8Ñ#¨	°X¸jÑ5IÑ(IÜ4°T¸:ÀyÓQ‰MàÐ6Ñ6Ø˜hÑ&Ø˜X jÑ1Ñ1ô 5°T¸:ÀyÓQˆMà×4Ò4ð &×5Ñ5Ø—]‘]Ø"Ø+Ø#5ð	 6ó ð ð !×'Ò'Ð'Ð'Ø"×)Ñ)ˆFØ"×)Ñ)ˆFð "2Ð 2°)Ð<ˆOØ.2Ð2ˆN˜^Ø"&Ð&ˆH�xØ<@Ð@Ð!Ð$9ÙÜ& v§{¡{°FÓ;�	Ø!*§¡Ó!1�Ø# FÑ+�ð )-×(CÑ(CÀIÈxÓ(XÐ%à!,�Ø(�Ø(,×(CÑ(CØ˜Mó)Ñ%ð "-�Ø(�Ø(,×(CÑ(CØ˜Mó)Ð%ð (:×'RÑ'RØ&Ø&Ü#3×#AÑ#Að (Só (Ð$ñ )Ø,ØØ*Ø#+Ø&Ø#8ôˆFñ Ù*ØØØ .Ø'/Ø"*Ø'<ôð ð ˆMr|   c                ó~   — |j                  «       }|dk(  ryt        | j                  |«      «      }|| j                  v S )Nr¿   F)r  r–  r—  r’  )ry   r�   rb  Úobj_ids       rz   Úrequires_key_order_guardingz(GuardBuilder.requires_key_order_guarding  s<   € Ø—k‘k“mˆØ˜"ÒØÜ�D—H‘H˜[Ó)Ó*ˆØ˜×8Ñ8Ð8Ð8r|   c                ó  — t         j                  }| j                  |«      r^t        |t        «      sJ ‚t        |«      j                  t        i «      j                  u rt         j                  }|S t         j                  }|S rÅ   )	r[  r\  rË  r    rW  r/  r?  rq  rr  )ry   r�   rS  rT  s       rz   r   z#GuardBuilder.get_guard_manager_type  sq   € Ü-×;Ñ;ÐØ×+Ñ+¨FÔ3Ü˜m¬TÔ2Ð2Ð2ô �MÓ"×'Ñ'¬4°«8¯=©=Ñ8Ü%5×%HÑ%HÐ"ð "Ð!ô &6×%QÑ%QÐ"Ø!Ð!r|   c                óR   — |t         j                  k(  xs |t         j                  k(  S rÅ   )r[  rq  rr  )ry   Úmgr_enums     rz   Úmanager_guards_on_keysz#GuardBuilder.manager_guards_on_keys'  s+   € àÔ(×;Ñ;Ñ;ò HØÔ+×GÑGÑGð	
r|   c                óÀ   — | j                   sJ ‚| j                   j                  j                  | j                  d   d| j                  d   t        j
                  ¬«      S )Nrx  )Ú	f_globalsr�   rS  rT  )r‹   rl   Úglobals_dict_managerr‚  r[  r\  rx   s    rz   Úget_global_guard_managerz%GuardBuilder.get_global_guard_manager-  sW   € Ø×!Ò!Ð!Ð!Ø×!Ñ!×&Ñ&×;Ñ;Ø—j‘j ‘oØØŸ*™* S™/Ü/×=Ñ=ð	 <ó 
ð 	
r|   c           	     ó¸  — | j                   sJ ‚| j                   j                  }d }|j                  «       }|dk7  r|| j                  v r| j                  |   S |dk7  r| j	                  |«      }| j                  ||«      }d }d }d }t        j                  }	t        |t        «      rb|j                  j                  «       }| j	                  |«      }| j                  |j                  «      }| j                  |j                  |«      }	t        |t        «      r!|j                  |j                  |||¬«      }
�nt        |t         «      r/| j#                  «       j                  |j$                  |||¬«      }
�nÄt        |t&        «      r/| j#                  «       j)                  |j$                  |||¬«      }
�n…t        |t*        «      r|S t        |t,        «      r|S t        |t.        «      r|sJ ‚|j1                  |||¬«      }
�n7t        |t2        t4        t6        t8        t:        f«      r|sJ ‚|}
�n
t        |t<        «      r|sJ ‚|j?                  |||¬«      }
�nàt        |t@        tB        f«      rs|sJ ‚t        |tD        jF                  jH                  «      r*tK        |«      tL        u r| jO                  |||||||«      }
�nx|jQ                  |jR                  |||¬«      }
�nWt        |tT        «      �rW|sJ ‚t        |tV        tX        jZ                  f«      rzt        |t\        «      r$| j_                  |	«      sJ ‚ta        |||||«      }
�nît        |jb                  td        «      rtg        d«      ‚|j                  |jb                  |||¬«      }
�n¨t        |th        «      r-|jj                  s!|jm                  |jb                  |||¬«      }
�nkt        |tn        «      r-|jj                  s!|jq                  |jb                  |||¬«      }
�n.|jb                  }|jj                  r|js                  «       }|ju                  ||||¬«      }
�nït        |tv        «      rYt        |t\        «      r$| j_                  |	«      sJ ‚ta        |||||«      }
�n«|sJ ‚|j                  |jb                  |||¬«      }
�n†t        |tx        «      rÒ|sJ ‚t{        |«      sJ ‚|j|                  sK|j                  ||j€                  t        j                  ¬«      ju                  |j‚                  |||¬«      }
�n|j„                  }|€J ‚|dz   }|j‡                  ||t        j                  ¬«      }t        |t\        «      rJ ‚|j                  |j‚                  |||¬«      }
�n¤t        |tˆ        «      r|sJ ‚|j‹                  tŒ        |||¬«      }
�nut        |tŽ        «      r|sJ ‚|j‹                  d	„ |||¬«      }
�nIt        |t�        «      r|sJ ‚|j‹                  d
„ |||¬«      }
�nt        |t’        «      r|sJ ‚|j‹                  d„ |||¬«      }
nòt        |t”        «      r|sJ ‚|j‹                  d„ |||¬«      }
nÇt        |t–        «      r$|sJ ‚|j™                  |jb                  |||¬«      }
n“t        |td        «      r;t        |t\        «      st›        d«      ‚|j�                  |jb                  |||¬«      }
nHt        |tž        «      r|sJ ‚|j¡                  |||¬«      }
nt›        d|› d|j                  «       › �«      ‚|
| j                  |j                  «       <   |
S )Nr¿   r�  )Úglobal_namer�   rS  rT  r´  r±  zUExpecting clean index here. Likely Dynamo forgot to mark a dict as guard_on_key_orderz.__kwdefaults__)Úpython_lambdar�   rS  rT  c                ó(   — | j                  «       d   S rä   ©Ú__tensor_flatten__©rÈ   s    rz   rô   z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>  s   € ¨×(<Ñ(<Ó(>¸qÑ(A€ r|   c                ó"   — | j                  «       S rÅ   )Ú__obj_flatten__rÚ  s    rz   rô   z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>   s   € ¨×(9Ñ(9Ó(;€ r|   c                ó>   — | j                  «       j                  «       S rÅ   )Ú_typeÚqualified_namerÚ  s    rz   rô   z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>(  s   € ¨¯©«	×(@Ñ(@Ó(B€ r|   c                ó"   — | j                  «       S rÅ   )Úget_baserÚ  s    rz   rô   z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>0  s   € ¨¯
©
«€ r|   rR  z4ConstDictKeySource can only work on DictGuardManagerzmissing guard manager builder z - )Qr‹   rl   r  r˜  r—  r   r[  r\  r    r8   rV  Úget_guard_manager_from_sourcerZ   rB   r¡  Ú
local_namer>   rÓ  rÕ  r@   Úglobal_weakref_managerr?   rH   rK   Útype_managerrF   rC   rM   rL   r<   rA   Úgrad_managerr7   rN   r¡   ÚnnÚModulerW   ra   rÈ  r¸  rµ  r=   rW  ÚcollectionsÚOrderedDictr   rÏ  rf  r4  r9   ÚRuntimeErrorr$  Úindex_is_sliceÚlist_getitem_managerÚtupleÚtuple_getitem_managerÚunpack_sliceÚgetitem_managerrE   r:   ÚcallableÚis_kwÚfunc_defaults_managerÚ__defaults__Úidx_keyÚ__kwdefaults__Úfunc_kwdefaults_managerrD   Úlambda_managerrâ   rI   r;   rG   r6   rJ   Útuple_iterator_getitem_managerÚAssertionErrorrZ  rO   Úweakref_call_manager)ry   r�   Úroot_guard_managerrS  rb  rT  ra  r`  r_  Úbase_guard_manager_enumÚoutr4  Ú
kwdefaultsÚ	kw_sourcer¢  s                  rz   râ  z*GuardBuilder.get_guard_manager_from_source6  sè  € Ø×!Ò!Ð!Ð!Ø!×/Ñ/×4Ñ4ÐàˆØ—k‘k“mˆà˜"Ò °×0KÑ0KÑ!KØ×.Ñ.¨{Ñ;Ð;à˜"ÒØ ŸH™H [Ó1ˆMà!×8Ñ8¸ÀÓOÐð  ÐØ!ÐØ!ÐÜ"2×"@Ñ"@ÐÜ�fœmÔ,Ø%Ÿ{™{×/Ñ/Ó1ÐØ!%§¡Ð*:Ó!;ÐØ!%×!CÑ!CÀFÇKÁKÓ!PÐØ&*×&AÑ&AØ—‘Ð/ó'Ð#ô
 �&œ+Ô&ð %×9Ñ9Ø×%Ñ%Ø"Ø+Ø#5ð	 :ó ŠCô �FœLÔ)ð ×/Ñ/Ó1×FÑFØ×&Ñ&Ø"Ø+Ø#5ð	 Gó ŠCô �FÔ/Ô0Ø×/Ñ/Ó1×HÑHØ"×.Ñ.Ø"Ø+Ø#5ð	 Ió ŠCô �FÔ-Ô.ð &Ð%Ü�FœNÔ+Ø%Ð%Ü�FœJÔ'Ù%Ð%Ð%Ø$×1Ñ1Ø"Ø+Ø#5ð 2ó ŠCô
 ØäÜÜ+Ü2Ü"ðô	
ñ &Ð%Ð%Ø$ŠCÜ�FœJÔ'Ù%Ð%Ð%Ø$×1Ñ1Ø"Ø+Ø#5ð 2ó ŠCô
 �FœZÔ)GÐHÔIÙ%Ð%Ð%ô Ð-¬u¯x©x¯©Ô?Ü&Ð'9Ó:Ü.ñ/ð ×/Ñ/ØØ&Ø&Ø!Ø$ØØ&ó’ð )×8Ñ8ØŸ™Ø&Ø"/Ø'9ð	 9ó ’ô �FœMÕ*Ù%Ð%Ð%ÜÐ,¬t´[×5LÑ5LÐ.MÔNô Ð0Ô2BÔCØ×6Ñ6Ð7NÔOÐOÐOÜ1ØØ*Ø*Ø%Ø*ó’Cô " &§,¡,Ô0BÔCÜ*ð<óð ð -×AÑAØ"ŸL™LØ*Ø&3Ø+=ð	 Bó ’Cô Ð.´Ô5¸f×>SÒ>SØ(×=Ñ=ØŸ™Ø&Ø"/Ø'9ð	 >ó ’ô Ð.´Ô6¸v×?TÒ?TØ(×>Ñ>ØŸ™Ø&Ø"/Ø'9ð	 ?ó ’ð Ÿ™�Ø×(Ò(Ø"×/Ñ/Ó1�EØ(×8Ñ8ØØ&Ø"/Ø'9ð	 9ó ’ô �FÔ.Ô/ÜÐ,Ô.>Ô?Ø×2Ñ2Ð3JÔKÐKÐKÜ-ØØ&Ø&Ø!Ø&ó’ñ *Ð)Ð)Ø(×=Ñ=ØŸ™Ø&Ø"/Ø'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Ô6Ô7Ù%Ð%Ð%Ø$×CÑCØ—l‘lØ"Ø+Ø#5ð	 Dó ‰Cô ˜Ô 2Ô3ÜÐ0Ô2BÔCÜ$ØJóð ð %×4Ñ4Ø—l‘lØ"Ø+Ø#5ð	 5ó ‰Cô ˜Ô 1Ô2Ù%Ð%Ð%Ø$×9Ñ9Ø"Ø+Ø#5ð :ó ‰Cô !Ø0°°¸¸F¿K¹K»M¸?ÐKóð ð 69ˆ×#Ñ# F§K¡K£MÑ2Øˆ
r|   c                ó8   — | j                  |j                  «      S rÅ   )râ  rh  ©ry   rƒ   s     rz   rž  zGuardBuilder.get_guard_managerW  s   € Ø×1Ñ1°%×2JÑ2JÓKÐKr|   Tc                ó†  — dj                  |j                  «       «      }t        ||«      \  }}i }d| j                  d   i}	t	        ||	|«        |d   |j                  «       Ž }
| j                  sJ ‚|r'| j                  j                  j                  |
|«       y | j                  j                  j                  |
|«       y )Nr‰   rx  Ú___make_guard_fn)
Újoinr?  Úbuild_guard_functionr‚  ÚexecÚvaluesr‹   rl   Úadd_epilogue_lambda_guardÚadd_lambda_guard)ry   ro   rp   rm   Úis_epilogueÚmake_guard_fn_argsÚ
guard_bodyÚpycoderÿ  Úglobals_for_guard_fnÚguard_fns              rz   Ú$add_python_lambda_leaf_guard_to_rootz1GuardBuilder.add_python_lambda_leaf_guard_to_rootZ  sÁ   € ð "ŸY™Y |×'8Ñ'8Ó':Ó;ÐÜ1°*Ð>PÓQÑˆ
�FØ ˆØ # T§Z¡Z°¡_Ð5ÐÜˆVÐ)¨3Ô/Ø*�3Ð)Ñ*¨L×,?Ñ,?Ó,AÐBˆØ×!Ò!Ð!Ð!Ùð ×Ñ×#Ñ#×=Ñ=ØÐ,õð ×Ñ×#Ñ#×4Ñ4°XÐ?QÕRr|   c                ó8   — t        || j                  t        «      S rÅ   )Úevalr‚  ÚCLOSURE_VARS)ry   r  s     rz   r—  zGuardBuilder.get{  s   € Ü�D˜$Ÿ*™*¤lÓ3Ð3r|   c                óB  — t        |t        «      r|}n|j                  }t        t	        |«      «      }|| j
                  vr]t        j                  d|«      rGt        j                  d|«      rt        j                  d|«       | j
                  j                  |«       |S )Nz[a-zA-Z0-9_]+z^\d+$zinvalid var name: %s)r    rY  r  r  r  r‰  r  r  ÚlogÚwarningrÐ   )ry   rƒ   r  rV  s       rz   Úarg_refzGuardBuilder.arg_refƒ  sy   € ä�eœSÔ!Ø‰Dà—:‘:ˆDÜ$Ô%8¸Ó%>Ó?ˆØ�t—}‘}Ñ$Ü�x‰xÐ(¨$Ô/Ü—8‘8˜H dÔ+Ü—K‘KÐ 6¸Ô>Ø—‘×$Ñ$ TÔ*àˆr|   c                ó˜   — t        |j                  |«      }t        |||j                  |j                  ¬«      }|j                  | «       y )N)r  r  )r7   rh  r#   r  r  Úcreate)ry   rƒ   rº  r  Úattr_sourceÚ	new_guards         rz   Ú_guard_on_attributez GuardBuilder._guard_on_attribute’  sA   € Ü  ×!9Ñ!9¸9ÓEˆäØ˜¨¯©À×AQÑAQô
ˆ	ð 	×Ñ˜Õr|   c           	     óØ  — |j                   }t        |t        «      r|j                  }t        |t        «      sJ d|j
                  › �«       ‚|j                  }|j                  «       }|j                  }| j                  |«      }t        | j                  |«      |«      }d }|r
d|› d|›d�}n	d|› d|›d�}| j                  ||g| j                  |«      ¬«       t        j                  rì| j                  |«      }	|r¼| j                  |j                  «       «      }
| j                  |«      }| j                  ||
«      }t        |t        j                   j"                  «      r6t%        |«      t&        u r%| j)                  ||	||
||j                  «       |«      S |	j+                  ||j
                  |
|¬«       y |	j-                  |t/        ||«      «       y | j1                  ||g«       y )Nzinvalid source úhasattr(r‰   r.  znot hasattr()Úprovided_guarded_objectr±  )rh  r    rC   rV  r7   r  rµ  r  Úhasattrr—  Ú_set_guard_export_infor1   Úenable_cpp_guard_managerrâ  r   r¡   rç  rè  rW   ra   rÈ  r¸  Úadd_no_hasattr_guardr%  Ú_produce_guard_code)ry   rƒ   r�   Úbase_sourcerV  r²  ÚrefÚvalrŠ  Úbase_managerrS  r`  rT  s                rz   ÚHASATTRzGuardBuilder.HASATTR›  s×  € Ø×)Ñ)ˆÜ�fœnÔ-Ø—[‘[ˆFÜ˜&¤*Ô-ÐM°ÀÇÁÀÐ/MÓMÐ-Ø—k‘kˆØ×ÑÓ!ˆØ�}‰}ˆà�l‰l˜4Ó ˆÜ�d—h‘h˜t“n dÓ+ˆØˆÙØ˜c˜U " T H¨AÐ.‰Dà! #  b¨¨°Ð2ˆDØ×#Ñ#Ø�D�6°4·8±8¸D³>ð 	$ô 	
ô ×*Ò*Ø×=Ñ=¸kÓJˆLÙð !%§¡¨¯©«Ó 7�Ø%)§X¡X¨d£^Ð"Ø%)×%@Ñ%@ÀÈÓ%WÐ"ô
 Ð1´5·8±8·?±?ÔCÜ*Ð+=Ó>Ü2ñ3ð  ×4Ñ4ØØ$Ø*Ø%ØØŸ™›Ø*óð ð !×0Ñ0Ø!Ø$Ÿz™zØ&3Ø+=ð	 1õ ð ×1Ñ1ØÔ0°°uÓ=õð ×$Ñ$ U¨T¨FÕ3r|   Nc                ó”  — |€J ‚| j                  |«      }| j                  |j                  «      }t        |t        j
                  j                  «      sJ ‚| j                  |«      }|j                  › d�}|j                  ||j                  t        j                  ¬«      }d|›d|› d�}|j                  d|t        ||«      «       y )Nr³  r´  znot ___dict_contains(r‰   z
.__dict__)F)r  r—  r  r    r¡   rç  rè  rž  r¹  r„  r[  r\  Úadd_dict_contains_guardr%  )	ry   rƒ   r²  r(  r)  r*  r¾  rÆ  rŠ  s	            rz   ÚNOT_PRESENT_IN_GENERIC_DICTz(GuardBuilder.NOT_PRESENT_IN_GENERIC_DICTÖ  sÃ   € ØÐÐÐØ�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜#œuŸx™xŸ™Ô/Ð/Ð/à×-Ñ-¨eÓ4ˆà"ŸZ™Z˜L¨	Ð2ˆØ#/×#HÑ#HØ"ØŸ,™,Ü/×=Ñ=ð $Ió $
Ð ð ' t h¨b°°°ZÐ@ˆØ ×8Ñ8Ø�4Ô/°°eÓ<õ	
r|   c                ób  — t        | j                  |j                  «      «      }| j                  |«      }d| j	                  |«      › d|› d�}| j                  ||g«       t        j                  r,| j                  |«      j                  |t        ||«      «       y | j                  ||g«       y )Nú___check_type_id(r‰   r.  )r/  r—  r  r  r  r#  r1   r$  rž  Úadd_type_match_guardr%  r&  )ry   rƒ   rŽ   rÊ  rŠ  s        rz   Ú
TYPE_MATCHzGuardBuilder.TYPE_MATCHê  s™   € ä�—‘˜%Ÿ*™*Ó%Ó&ˆØ—‘˜Q“ˆØ" 4§<¡<°Ó#6Ð"7°r¸&¸ÀÐCˆØ×#Ñ# E¨D¨6Ô2ä×*Ò*Ø×"Ñ" 5Ó)×>Ñ>ØÔ.¨t°UÓ;õð ×$Ñ$ U¨T¨FÕ3r|   c                óx  — | j                  |«      }| j                  |j                  «      }t        | j                  |j                  «      «      }d|› d|› �}| j	                  ||g«       t
        j                  r,| j                  |«      j                  |t        ||«      «       y | j                  ||g«       y )Nz___dict_version(ú) == )r  r—  r  r   r#  r1   r$  rž  Úadd_dict_version_guardr%  r&  )ry   rƒ   r(  r)  ÚversionrŠ  s         rz   ÚDICT_VERSIONzGuardBuilder.DICT_VERSIONø  s¢   € à�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜tŸx™x¨¯
©
Ó3Ó4ˆØ! #  e¨G¨9Ð5ˆØ×#Ñ# E¨D¨6Ô2ä×*Ò*ð ×"Ñ" 5Ó)×@Ñ@ØÔ+¨D°%Ó8õð ×$Ñ$ U¨T¨FÕ3r|   c                ó  — | j                  |«      }|rdnd}|› d|›d|› d�}| j                  ||g«       t        j                  r.| j	                  |«      j                  | |t        ||«      «       y | j                  ||g«       y )Núnot r¿   z___dict_contains(r‰   r.  )r  r#  r1   r$  rž  r-  r%  r&  )ry   rƒ   rA  ÚinvertÚdict_refÚ	maybe_notrŠ  s          rz   ÚDICT_CONTAINSzGuardBuilder.DICT_CONTAINS	  s‹   € Ø—<‘< Ó&ˆá$‘F¨"ˆ	Ø�Ð-¨c¨W°B°x°jÀÐBˆØ×#Ñ# E¨D¨6Ô2ä×*Ò*Ø×"Ñ" 5Ó)×AÑAØ�
˜CÔ!7¸¸eÓ!Dõð ×$Ñ$ U¨T¨FÕ3r|   c                óô  — t        |j                  t        «      r=| j                  t	        |j                  j
                  t        j                  «      «      S | j                  |«      }| j                  |j                  «      }| j                  |«      }d|› d|› d�}| j                  ||g«       t        j                  r,| j                  |«      j                  |t!        ||«      «       n| j#                  ||g«       t        |j                  t$        «      r_t        |t&        j(                  j*                  «      r:|j                  j,                  }| j/                  |«      }|�|| j0                  |<   y y y y )Nz___check_obj_id(r‰   r.  )r    rh  rK   r2  r#   rV  rt  r  r—  r  r  r#  r1   r$  rž  r§  r%  r&  rB   r¡   rç  rè  rã  r�  ru   )ry   rƒ   r(  r)  r©  rŠ  rã  Úweak_ids           rz   ÚID_MATCHzGuardBuilder.ID_MATCH  sD  € ä�e×.Ñ.´
Ô;à—?‘?Ü�e×.Ñ.×3Ñ3´\×5LÑ5LÓMóð ð �l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆØ—‘˜SÓ!ˆØ! #  b¨¨°Ð2ˆØ×#Ñ# E¨D¨6Ô2ä×*Ò*Ø×"Ñ" 5Ó)×<Ñ<ØÔ.¨t°UÓ;õð ×$Ñ$ U¨T¨FÔ3ô �e×.Ñ.´Ô<ô ˜#œuŸx™xŸ™Ô/Ø"×5Ñ5×@Ñ@�
Ø×.Ñ.¨sÓ3�ØÐ&Ø7>�D×(Ñ(¨Ò4ð 'ð 0ð	 =r|   c                ó`  — | j                  |«      }| j                  |j                  «      }t        |t        j
                  «      sJ ‚|› d�}| j                  ||g«       t        j                  r+| j                  |«      j                  t        ||«      «       y | j                  ||g«       y ©Nz is not None)r  r—  r  r    r¡   ÚTensorr#  r1   r$  rž  Úadd_not_none_guardr%  r&  )ry   rƒ   r6  r(  r)  rŠ  s         rz   ÚNOT_NONE_MATCHzGuardBuilder.NOT_NONE_MATCH8  s”   € Ø�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜#œuŸ|™|Ô,Ð,Ð,Ø��lÐ#ˆØ×#Ñ# E¨D¨6Ô2ä×*Ò*Ø×"Ñ" 5Ó)×<Ñ<Ü& t¨UÓ3õð ×$Ñ$ U¨T¨FÕ3r|   c                óF   — | j                  |dt        j                  «       y )Nr‚   )r  rt  ÚEQUALS_MATCHr  s     rz   Ú
NAME_MATCHzGuardBuilder.NAME_MATCHF  s   € Ø× Ñ  ¨
´L×4MÑ4MÕNr|   c                óˆ  — t         j                  s| j                  |«       | j                  |j                  «      }| j                  |«      › d|j                  «       › �}| j                  ||g«       t         j                  r,| j                  |«      j                  |t        ||«      «       y | j                  ||g«       y )Nz.data_ptr() == )r1   r$  r2  r—  r  r  Údata_ptrr#  rž  Úadd_data_ptr_guardr%  r&  )ry   rƒ   ÚobjrŠ  s       rz   ÚDATA_PTR_MATCHzGuardBuilder.DATA_PTR_MATCHI  s¡   € ô ×.Ò.Ø�O‰O˜EÔ"à�h‰h�u—z‘zÓ"ˆØ—,‘,˜uÓ%Ð& o°c·l±l³nÐ5EÐFˆØ×#Ñ# E¨D¨6Ô2ä×*Ò*Ø×"Ñ" 5Ó)×<Ñ<ØÔ+¨D°%Ó8õð ×$Ñ$ U¨T¨FÕ3r|   c                ó„  ‡‡— t         j                  j                  j                  Šd‰› �g}| j	                  ||g«       t
        j                  r_t         j                  j                  Šˆˆfd„}| j                  sJ ‚| j                  j                  j                  |t        ||«      «       y | j                  ||«       y )Nz,torch.autograd.forward_ad._current_level == c                ó"   •— ‰j                   ‰k(  S rÅ   )Ú_current_level)rÈ   Ú
dual_levelÚ
forward_ads    €€rz   Úfnz#GuardBuilder.DUAL_LEVEL.<locals>.fnd  s   ø€ Ø!×0Ñ0°JÑ>Ð>r|   )r¡   ÚautogradrR  rP  r#  r1   r$  r‹   rl   r  r%  r&  )ry   rƒ   rŠ  rS  rQ  rR  s       @@rz   Ú
DUAL_LEVELzGuardBuilder.DUAL_LEVELZ  s¢   ù€ ô —^‘^×.Ñ.×=Ñ=ˆ
Ø>¸z¸lÐKÐLˆØ×#Ñ# E¨D¨6Ô2Ü×*Ò*äŸ™×2Ñ2ˆJõ?ð ×%Ò%Ð%Ð%Ø×Ñ×#Ñ#×4Ñ4ØÔ*¨4°Ó7õð ×$Ñ$ U¨DÕ1r|   c                óæ  ‡‡— t         j                  j                  j                  «       }|D �cg c]  }|j	                  «       ‘Œ c}Šd‰› d�g}| j                  ||«       t        j                  rit         j                  j                  j                  Šˆˆfd„}| j                  sJ ‚| j                  j                  j                  |t        ||«      «       y | j                  ||«       y c c}w )Nz5torch._functorch.pyfunctorch.compare_functorch_state(r.  c                ó   •—  ‰‰«      S rÅ   rÛ   )rÈ   Ú
compare_fnÚstatess    €€rz   rS  z.GuardBuilder.FUNCTORCH_STACK_MATCH.<locals>.fnz  s   ø€ Ù! &Ó)Ð)r|   )r¡   Ú
_functorchÚpyfunctorchÚ#retrieve_all_functorch_interpretersÚ	get_stater#  r1   r$  Úcompare_functorch_stater‹   rl   r  r%  r&  )ry   rƒ   ÚcisÚcirŠ  rS  rX  rY  s         @@rz   ÚFUNCTORCH_STACK_MATCHz"GuardBuilder.FUNCTORCH_STACK_MATCHn  sÊ   ù€ ô ×Ñ×*Ñ*×NÑNÓPˆØ+.Ö/ R�"—,‘,•.Ò/ˆØGÈÀxÈqÐQÐRˆØ×#Ñ# E¨4Ô0ä×*Ò*ä×)Ñ)×5Ñ5×MÑMˆJõ*ð ×%Ò%Ð%Ð%Ø×Ñ×#Ñ#×4Ñ4ØÔ*¨4°Ó7õð ×$Ñ$ U¨DÕ1ùò! 0s   ¯C.c                ó@  ‡‡— | j                  |j                  «      Št        | j                  |j                  «      j                  «       d   «      Št	        ‰d«      rt        ‰«       ˆˆfd„}nˆfd„}dt        |«      › dt        j                  «       › �}t        j                  r,| j                  |«      j                  |t        ||«      «       y | j                  d«      }|||<   |› d| j                  |j                  «      › d	�g}| j                  ||«       y )
Nr0   Ú__metadata_guard__c                óJ   •— ‰j                  ‰| j                  «       d   «      S ©Nr0   )rc  rÙ  )rÈ   Úoriginal_metadatar6  s    €€rz   Úmetadata_checkerzEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checkerŠ  s)   ø€ Ø×/Ñ/Ø% q×';Ñ';Ó'=¸aÑ'@óð r|   c                ó0   •— | j                  «       d   ‰k(  S re  rØ  )rÈ   rf  s    €rz   rg  zEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checker‘  s   ø€ Ø×+Ñ+Ó-¨aÑ0Ð4EÑEÐEr|   Ú___check_metadata_Ú_crx  ú(r.  )r—  r  r   rÙ  r"  rb   r–  r    Úcurrent_compile_idr1   r$  rž  r  r%  r&  )ry   rƒ   rg  rÕ  rq   rŠ  rf  r6  s         @@rz   ÚTENSOR_SUBCLASS_METADATA_MATCHz+GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH„  sù   ù€ Ø—‘˜Ÿ™Ó$ˆÜ$ T§X¡X¨e¯j©jÓ%9×%LÑ%LÓ%NÈqÑ%QÓRÐÜ�5Ð.Ô/Ü% eÔ,öôFð +¬2Ð.>Ó+?Ð*@ÀÄ>×CdÑCdÓCfÐBgÐhˆÜ×*Ò*Ø×"Ñ" 5Ó)×:Ñ:Ø Ô"8¸ÀeÓ"Lõð  Ÿ8™8 C›=ˆLØ(8ˆL˜Ñ%Ø"�m 1 T§X¡X¨e¯j©jÓ%9Ð$:¸!Ð<Ð=ˆDØ×$Ñ$ U¨DÕ1r|   c                ól	  ‡— | j                  |«      }| j                  |j                  «      }t        |«      }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.        j0                  h|£|£z  «      Št.        j2                  j5                  «       rddlm} ddlm}m}	m }
 ‰|
|	||fz   ŠtC        |tD        «      rFtG        ˆfd„tI        jJ                  |jM                  «       |jO                  «       «      D «       «      s$J ‚tC        |‰«      sJ dt        |«      › d‰› �«       ‚tC        |tP        «      r¥tS        jT                  |«      r�| jW                  |«       g }|jY                  d|› d	�«       | j[                  ||«       t\        j^                  r3| ja                  |«      jc                  td        d
   tg        ||«      «       y | ji                  ||«       y tC        |tj        «      r¥t	        jT                  |«      r�| jW                  |«       g }|jY                  d|› d	�«       | j[                  ||«       t\        j^                  r3| ja                  |«      jc                  td        d   tg        ||«      «       y | ji                  ||«       y t\        j^                  r]|› d|›�g}tC        ||«      rtm        |«      }| ja                  |«      jo                  |tg        ||«      «       | j[                  ||«       y g }tC        |t         t$        f«      rX| jq                  |«       ts        |«      D ]8  \  }}|jY                  d|› d|› d| ju                  t        |«      «      › d	�«       Œ: n| jW                  |«       tC        |t.        j0                  «      rt%        |«      }tC        |tv        jx                  «      rJ ‚|jY                  |› d|›�«       | ji                  ||«       | j[                  ||«       y )NrÛ   r   )Ú
DeviceMesh)ÚPartialÚ	ReplicateÚShardc              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wrÅ   )rZ   )Ú.0rÈ   Úok_typess     €rz   ú	<genexpr>z,GuardBuilder.EQUALS_MATCH.<locals>.<genexpr>Ô  s   øè ø€ ò Ø()”�q˜(×#ñùs   ƒzUnexpected type z	, not in z__math_isnan(r.  r÷   z__numpy_isnan(rø   rU  r0  rQ  z], )=r  r—  r  r/  rÝ   Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64r$  r‘  rî  rU   Ú	frozensetÚsliceÚranger¡   ÚSizeÚdistributedÚis_availableÚtorch.distributed.device_meshro  Ú(torch.distributed.tensor.placement_typesrp  rq  rr  rZ   rW  ÚallÚ	itertoolsÚchainr?  r	  ÚfloatÚmathÚisnanr2  rÐ   r#  r1   r$  rž  r  r  r%  r&  Úcomplexr   r]  ÚSEQUENCE_LENGTHr¦  r  ÚtypesÚCodeType)ry   rƒ   r(  r)  rŽ   Únp_typesÚok_mutable_typesro  rp  rq  rr  rŠ  rš   Úelemru  s                 @rz   rG  zGuardBuilder.EQUALS_MATCHŸ  s  ø€ Ø�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ�‹IˆÝä—‘Ü—‘Ü—‘Ü—‘Ü—‘Ü—	‘	Ü—	‘	Ü—	‘	Ü—
‘
Ü—
‘
Ü—
‘
ð/‰Hð ˆHä ¤#˜;ÐäÜ!äÜÜÜÜÜ—
‘
ð	ð ð	ð "ð	ñ
ó
ˆô ×Ñ×)Ñ)Ô+Ý@÷ñ ð  ØØØØð	#ñ ˆHô �#”tÔÜó Ü-6¯_©_¸S¿X¹X»ZÈÏÉËÓ-Vôô ð ð ô ØØôð Að "¤$ s£) ¨I°h°ZÐ@óAð ô �#”uÔ¤$§*¡*¨S¤/Ø�O‰O˜EÔ"ØˆDØ�K‰K˜-¨ u¨AÐ.Ô/Ø×'Ñ'¨¨tÔ4ä×.Ò.Ø×&Ñ& uÓ-×>Ñ>Ü  Ñ0Ô2HÈÈuÓ2Uôð
 ð ×(Ñ(¨°Ô5Øô �#”wÔ¤B§H¡H¨S¤MØ�O‰O˜EÔ"ØˆDØ�K‰K˜.¨¨¨QÐ/Ô0Ø×'Ñ'¨¨tÔ4ä×.Ò.Ø×&Ñ& uÓ-×>Ñ>Ü  Ñ1Ô3IÈ$ÐPUÓ3Vôð
 ð ×(Ñ(¨°Ô5Øä×*Ò*à�e˜4 ˜wÐ'Ð(ˆDÜ�cÐ+Ô,ô ˜s“m�Ø×"Ñ" 5Ó)×@Ñ@ØÔ+¨D°%Ó8ôð ×'Ñ'¨¨tÔ4Øàˆô �#œœe�}Ô%à× Ñ  Ô'ä& s›^ò ‘	��TØ—‘Ø'¨ u¨A¨c¨U°#°d·k±kÄ$ÀtÃ*Ó6MÐ5NÈaÐPõñð �O‰O˜EÔ"ä�#”u—z‘zÔ"Ü˜“*ˆCô ˜#œuŸ~™~Ô.Ð.Ð.ð
 	�‰�s�e˜4 ˜wÐ'Ô(Ø× Ñ  ¨Ô-Ø×#Ñ# E¨4Õ0r|   c                óÔ   — | j                  |j                  «      }t        |t        t	        d «      t
        j                  f«      r| j                  |«       y | j                  |«       y rÅ   )	r—  r  rZ   rK  r/  r’  r“  r@  rG  ©ry   rƒ   r)  s      rz   ÚCONSTANT_MATCHzGuardBuilder.CONSTANT_MATCH'  sG   € Ø�h‰h�u—z‘zÓ"ˆÜ�#œœd 4›j¬%¯.©.Ð9Ô:Ø�M‰M˜%Õ à×Ñ˜eÕ$r|   c                ó2  — | j                  |«       | j                  |j                  «      }t        |d«      r>t	        |j
                  t        «      sJ ‚| j                  |dt        j                  «       y t        j                  dt        |«      › �«       y )NÚtrainingz$Guard setup for uninitialized class )r@  r—  r  r"  rZ   r›  rK  r  rt  r™  r3   Úunimplementedr/  r˜  s      rz   Ú	NN_MODULEzGuardBuilder.NN_MODULE.  sp   € Ø�‰�eÔØ�h‰h�u—z‘zÓ"ˆÜ�3˜
Ô#Ü˜#Ÿ,™,¬Ô-Ð-Ð-Ø×$Ñ$ U¨J¼×8SÑ8SÕTä×ÑÐ DÄTÈ#ÃYÀKÐPÕQr|   c                ó$   — | j                  |«      S )z0things like torch.add and user defined functions)r@  r  s     rz   ÚFUNCTION_MATCHzGuardBuilder.FUNCTION_MATCH7  s   € à�}‰}˜UÓ#Ð#r|   c                ó2  — | j                  |j                  «      }t        |«      t        j                  k(  rOt        |d«      rC| j                  |dt        j                  «       | j                  |dt        j                  «       y| j                  |«       y)z!matches a closure by __code__ id.Ú__code__N)
r—  r  r/  r’  ÚFunctionTyper"  r  rt  r+  rŸ  r˜  s      rz   ÚCLOSURE_MATCHzGuardBuilder.CLOSURE_MATCH;  sm   € à�h‰h�u—z‘zÓ"ˆä�‹9œ×*Ñ*Ò*¬w°s¸JÔ/GØ×$Ñ$ U¨J¼×8LÑ8LÔMØ×$Ñ$ U¨J¼×8SÑ8SÕTà×Ñ Õ&r|   c                ó$   — | j                  |«      S rÅ   ©rŸ  r  s     rz   ÚBUILTIN_MATCHzGuardBuilder.BUILTIN_MATCHE  ó   € Ø×"Ñ" 5Ó)Ð)r|   c                ó$   — | j                  |«      S rÅ   r¥  r  s     rz   ÚPYMODULE_MATCHzGuardBuilder.PYMODULE_MATCHH  r§  r|   c                óº  — | j                  |«      }| j                  |j                  «      }t        |«      }t        j
                  rt        |t        «      s| j                  |«       g }t        |«      dk(  r|j                  d|› �«       n |j                  d|› dt        |«      › �«       | j                  ||«       t        j
                  rzt        |t        «      r5| j                  |«      j                  t        |«      t        ||«      «       y | j                  |«      j                  t        |«      t        ||«      «       y | j!                  ||«       y )Nr   r9  zlen(r4  )r  r—  r  r/  r1   r$  r    rW  r2  ÚlenrÐ   r#  rž  Úadd_dict_length_check_guardr%  Úadd_length_check_guardr&  ©ry   rƒ   r(  r6  rŽ   rŠ  s         rz   r‘  zGuardBuilder.SEQUENCE_LENGTHK  s  € ð �l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆÜ�‹Kˆä×/Ò/´J¸uÄdÔ4Kà�O‰O˜EÔ"àˆÜˆu‹:˜Š?Ø�K‰K˜$˜s˜e˜Õ%à�K‰K˜$˜s˜e 5¬¨U«¨Ð5Ô6à×#Ñ# E¨4Ô0Ü×*Ò*Ü˜%¤Ô&Ø×&Ñ& uÓ-×IÑIÜ˜“JÔ 6°t¸UÓ Cõð ×&Ñ& uÓ-×DÑDÜ˜“JÔ 6°t¸UÓ Cõð ×$Ñ$ U¨DÕ1r|   c                ó  — | j                  |«      }| j                  |j                  «      }t        |«      }t        j
                  s| j                  |«       g }|j                  d|› dt        |«      › �«       | j                  ||«       t        j
                  rRt        |«      }| j                  |«      }| j                  |«      j                  t        |«      |t        ||«      «       y | j                  ||«       y )Nz___tuple_iterator_len(r4  )r  r—  r  r/  r1   r$  r2  rÐ   r`   r#  r  rž  Úadd_tuple_iterator_length_guardr%  r&  )ry   rƒ   r(  r6  rŽ   rŠ  rÊ  s          rz   ÚTUPLE_ITERATOR_LENzGuardBuilder.TUPLE_ITERATOR_LENi  sÕ   € Ø�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆÜ�‹Kˆä×.Ò.à�O‰O˜EÔ"àˆØ�‰Ð,¨S¨E°Ô7IÈ%Ó7PÐ6QÐRÔSØ×#Ñ# E¨4Ô0ä×*Ò*Ü�U“ˆAØ—[‘[ “^ˆFà×"Ñ" 5Ó)×IÑIÜ" 5Ó)¨6Ô3IÈ$ÐPUÓ3Võð ×$Ñ$ U¨DÕ1r|   c                ó$  — | j                  |«      }| j                  |j                  «       «      }t        |j                  «      st        |«      ry |› d|› �g}| j	                  ||«       t
        j                  rƒ||f}|| j                  v ry | j                  j                  ||f«       | j                  j                  ||f«       t        | j                  |«      | j                  |«      t        ||«      «       y | j                  ||«       y )Nú is )r  r  r   rh  r#  r1   r$  r™  r•  r   rž  râ  r%  r&  )ry   rƒ   Úsource_bÚref_aÚref_brŠ  rA  s          rz   ÚDUPLICATE_INPUTzGuardBuilder.DUPLICATE_INPUT�  sö   € Ø—‘˜UÓ#ˆØ—‘˜XŸ]™]›_Ó-ˆä#Ø×$Ñ$ô
ä% hÔ/Øà�'˜˜e˜WÐ%Ð&ˆØ×#Ñ# E¨4Ô0ä×*Ò*à˜%�.ˆCØ�d×9Ñ9Ñ9ØØ×/Ñ/×3Ñ3°U¸E°NÔCØ×/Ñ/×3Ñ3°U¸E°NÔCä)Ø×&Ñ& uÓ-Ø×2Ñ2°8Ó<Ü& t¨UÓ3õð ×$Ñ$ U¨DÕ1r|   c                óv  — | j                  |«      }| j                  |j                  «      }t        |«      }| j	                  |«       g }t        d„ |j                  «       D «       «      }t        t        |«      t        |j                  «      ¬«      }|r|j                  d|› d|› �«       n|j                  d|› d|› �«       | j                  ||«       t        j                  rA| j                  |j                  «      r| j!                  ||«       y | j#                  ||«       y | j%                  ||«       y )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrÅ   )r[   )rt  Úks     rz   rv  z)GuardBuilder.DICT_KEYS.<locals>.<genexpr>¥  s   è ø€ Ò?¨QœI aŸLÑ?ùs   ‚)Úlocalz___key_to_id(r4  rD  ú.keys()) == )r  r—  r  r/  r2  Úanyr?  rV   r\   r   rh  rÐ   r#  r1   r$  rË  rª  r¤  r&  )ry   rƒ   r(  r6  rŽ   rŠ  Úany_key_is_idÚconst_keys_reprs           rz   Ú	DICT_KEYSzGuardBuilder.DICT_KEYS�  s  € à�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆÜ�‹Kˆà�‰˜ÔØˆÜÑ?°%·*±*³,Ô?Ó?ˆÜ(Ü�eÓÜ& u×'?Ñ'?Ó@ô
ˆñ Ø�K‰K˜-¨ u¨E°/Ð1BÐCÕDà�K‰K˜% ˜u L°Ð0AÐBÔCà×#Ñ# E¨4Ô0Ü×*Ò*Ø×/Ñ/°×0HÑ0HÔIØ×1Ñ1°%¸Õ?à×8Ñ8¸ÀÕFà×$Ñ$ U¨DÕ1r|   c                óì   — | j                  |«      › d�g}| j                  ||«       t        j                  r+| j	                  |«      j                  t        ||«      «       y | j                  ||«       y rB  )r  r#  r1   r$  rž  rD  r%  r&  )ry   rƒ   rŠ  s      rz   ÚWEAKREF_ALIVEzGuardBuilder.WEAKREF_ALIVE¸  si   € Ø—<‘< Ó&Ð' |Ð4Ð5ˆà×#Ñ# E¨4Ô0Ü×*Ò*Ø×"Ñ" 5Ó)×<Ñ<Ü& t¨UÓ3õð ×$Ñ$ U¨DÕ1r|   c           	     óþ  — | j                  |«      }| j                  |j                  «      }t        |«      }t        j
                  s| j                  |«       g }|j                  d|› dt        |j                  «       «      ›�«       | j                  ||«       t        j
                  rA| j                  |j                  «      r| j                  ||«       y| j                  ||«       y| j                  ||«       y)zConstant keys matchrD  r¼  N)r  r—  r  r/  r1   r$  r2  rÐ   r$  r?  r#  rË  rh  rª  r¤  r&  r®  s         rz   ÚDICT_CONST_KEYSzGuardBuilder.DICT_CONST_KEYSÃ  sÇ   € à�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆÜ�‹Kˆä×.Ò.à�O‰O˜EÔ"àˆØ�‰�e˜C˜5 ¬T°%·*±*³,Ó-?Ð,BÐCÔDØ×#Ñ# E¨4Ô0ä×*Ò*Ø×/Ñ/°×0HÑ0HÔIØ×1Ñ1°%¸Õ?à×8Ñ8¸ÀÕFà×$Ñ$ U¨DÕ1r|   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)r1   Úskip_nnmodule_hook_guardsr‘  r  s     rz   ÚEMPTY_NN_MODULE_HOOKS_DICTz'GuardBuilder.EMPTY_NN_MODULE_HOOKS_DICTÙ  s   € ä×+Ò+àØ×Ñ˜UÕ#r|   c                óv   — t        j                  | j                  |j                  «      | j                  «       y rÅ   )r4   Úwatchr—  r  r�  r  s     rz   ÚOBJECT_MUTATIONzGuardBuilder.OBJECT_MUTATIONà  s%   € Ü×Ñ˜TŸX™X e§j¡jÓ1°4×3HÑ3HÕIr|   c                 ó   — y rÅ   rÛ   r  s     rz   Ú	GRAD_MODEzGuardBuilder.GRAD_MODEã  ó   € Ør|   c                 ó   — y rÅ   rÛ   r  s     rz   ÚDETERMINISTIC_ALGORITHMSz%GuardBuilder.DETERMINISTIC_ALGORITHMSæ  rÍ  r|   c                 ó   — y rÅ   rÛ   r  s     rz   ÚTORCH_FUNCTION_STATEz!GuardBuilder.TORCH_FUNCTION_STATEé  rÍ  r|   c                 ó   — y rÅ   rÛ   r  s     rz   ÚFSDP_TRAINING_STATEz GuardBuilder.FSDP_TRAINING_STATEì  rÍ  r|   c                ó0  — |j                   t        j                  u sJ ‚ddlmc m} d|j                  ›�g}| j                  ||«       t        j                  r+| j                  |«      j                  t        ||«      «       y| j                  ||«       y)z/Guard on CURRENT_DEVICE per torch.utils._devicer   Nzutils_device.CURRENT_DEVICE == )r�   r&   ÚGLOBALÚtorch.utils._deviceÚutilsÚ_deviceÚCURRENT_DEVICEr#  r1   r$  rž  Úadd_default_device_guardr%  r&  )ry   rƒ   rê   rŠ  s       rz   ÚDEFAULT_DEVICEzGuardBuilder.DEFAULT_DEVICEï  s„   € à�|‰|œ{×1Ñ1Ñ1Ð1Ð1ß'Ð'à1°!×2BÑ2BÐ1EÐFÐGˆØ×#Ñ# E¨4Ô0ä×*Ò*Ø×"Ñ" 5Ó)×BÑBÜ& t¨UÓ3õð ×$Ñ$ U¨DÕ1r|   c           
     ó~  ‡— |j                   dk(  sJ ‚| j                  j                  Š‰j                  }|D �cg c]  }|j                  ‘Œ }}ˆfd„}‰j
                  r§i }g }g }i }	‰j
                  D ]i  }
|
j                  ‰j                  v r:t        j                  j                  j                  |
|‰j                  ||||	«       ŒUt        j                  d«       Œk t        ||t!        |	j#                  «       «      d¬«      }nd }‰j                  j%                  |D �cg c]  }|j&                  ‘Œ c}|D �cg c]  }|j(                  ‘Œ c}||| j*                  | j                  j                  j                   ¬«      }| j                  j                  j                  s‰j                  j-                  «        |D ]  }| j/                  ||g«       Œ t0        j2                  r-|}| j5                  |t7        ||«      i t8        ¥t:        ¥¬«       y |D ]  }| j=                  ||gd¬	«       Œ y c c}w c c}w c c}w )
Nr¿   c                óz   •— ‰j                   |    D �cg c]  }t        |t        j                  |«      ‘Œ c}S c c}w rÅ   )Útracked_fakes_id_to_sourcer   r   ÚSIZE)Út_idr+  r�   r“  s      €rz   Úget_sourcesz+GuardBuilder.SHAPE_ENV.<locals>.get_sources  s?   ø€ ð
 +×EÑEÀdÑKöàô % V¬^×-@Ñ-@À#ÕFòð ùò s   “"8z+Untracked tensor used in export constraintsF)Úsource_pairsÚderived_equalitiesÚphantom_symbolsÚ	warn_only)Úinput_contextsÚequalities_inputsr€  Úignore_static)rm   T)Ú	shape_env)r  r�  r“  Útracked_fakesÚsymbolic_contextÚexport_constraintsrà  rÞ  r¡   ÚexportÚdynamic_shapesÚ_process_equalitiesré  r  r  r*   r$  r	  Úproduce_guardsÚfaker�   r€  Úfreezer#  r1   r$  r  r%  r,   r  r&  )ry   rƒ   r!  rá   ræ  rá  Únamesrâ  rã  rä  Ú
constraintrç  rd   Úshape_guardro   r“  s                  @rz   Ú	SHAPE_ENVzGuardBuilder.SHAPE_ENVþ  s7  ø€ ð �z‰z˜RÒÐÐØ×,Ñ,×9Ñ9ˆà×'Ñ'ˆØ68Ö9°˜!×,Ó,Ð9ˆÐ9ô	ð ×*Ò*Ø02ˆEØ8:ˆLð ð ð 24ˆOØ*×=Ñ=ò O�
Ø—?‘? l×&MÑ&MÑMÜ—L‘L×/Ñ/×CÑCØ"Ø#Ø$×.Ñ.ØØ$Ø*Ø'õô —K‘KÐ MÕNðOô !3Ø)Ø#5Ü $ _×%;Ñ%;Ó%=Ó >Øô	!Ñð !%ÐØ×'Ñ'×6Ñ6ØÖ ˜ˆQ�V‹VÒ Ø!Ö"˜!ˆQ�X‹XÒ"Ø)Ø/Ø—‘à#×4Ñ4×AÑA×HÑHÐHð 7ó 
ˆð ×$Ñ$×1Ñ1×8Ò8Ø×"Ñ"×)Ñ)Ô+à!ò 	>ˆKØ×'Ñ'¨°¨}Õ=ð	>ô ×*Ò*ð  ˆJØ×5Ñ5ØÜ& z°5Ó9Ø=¤Ð=´Ð=ð 6õ ð  &ò O�Ø×(Ñ(¨°°ÈÐ(ÕNñOùòE :ùòN !ùÚ"s   ¹H0Ä!H5Ä:H:
c                ód  — |j                  «       ry |j                  «       rt        |j                  t        «      rt        |«      r| j                  |«       y t        |t        «      r |«       }|�|n| j                  |j                  «      }t        |t        j                  «      sJ ‚| j                  |«      }g }| j                  j                  j                  rœ| j!                  |«       g d¢}|D ]€  }| j                  |dz   |z   «      }t#        |t        j$                  t        j&                  f«      r$|j)                  d|› d|› dt+        |«      ›�«       Œh|j)                  |› d|› d|› �«       Œ‚ �n| j,                  j)                  |«       | j.                  j)                  |«       | j0                  j)                  |«       t2        j4                  r¤| j7                  |«      }| j8                  j)                  |«       | j                  j                  }	|	j:                  |j                     }
t=        |
d   «      }t=        |
d   «      }t?        tA        ||||«      |«      }|jC                  |||||«       |jD                  €J ‚tG        |d|j                  ¬	«      \  }}|sÃtI        |d
«      re|jJ                  }d|› d|› d|› d�}|j)                  |«       t2        j4                  r~| j7                  |«      jM                  |t?        ||«      «       nRd|› d�}|j)                  |«       t2        j4                  r+| j7                  |«      jO                  d
t?        ||«      «       tQ        |«      dkD  r6| jS                  ||«       t2        j4                  s| jU                  ||«       y y y )N)r3  rü   r5  zndimension()r}  zstr(r4  rU  ÚsizeÚstrideT)Ú	is_tensorÚtensor_sourceÚ_dynamo_dynamic_indicesz((z"._dynamo_dynamic_indices.issubset(z)) if hasattr(z', '_dynamo_dynamic_indices') else True)r   z%, '_dynamo_dynamic_indices') == Falser   )+Úis_fsdp_moduleÚis_specialized_nn_moduler    rh  rD   rj  r@  r/   r—  r  r¡   rC  r  r�  r“  rí  r2  rZ   rü   r3  rÐ   rY  r�  rŒ  rŽ  r1   r$  rž  r�  Úinput_source_to_sizes_stridesr,  r%  r=  Úadd_tensor_match_guardr�   r^   r"  rü  Úadd_dynamic_indices_guardr%  r«  r#  r&  )ry   rƒ   r6  Útensor_namerŠ  ÚtermsÚtermÚ
real_valuer‹   r“  Úmetadatarø  rù  rp   ÚstaticÚreasonÚdynamic_indicesrÓ   s                     rz   ÚTENSOR_MATCHzGuardBuilder.TENSOR_MATCHK  ss  € ð ×ÑÔ!Øð ×*Ñ*Ô,Ü˜u×7Ñ7Ô9JÔKÜ# EÔ*Ø�M‰M˜%Õ ä˜%¤Ô/Ù›�à"Ð.‘E°D·H±H¸U¿Z¹ZÓ4HˆEÜ˜e¤U§\¡\Ô2Ð2Ð2àŸ,™, uÓ-ˆKð, !ˆDØ×$Ñ$×1Ñ1×8Ò8Ø—‘ Ô&ò�ð "ò M�DØ!%§¡¨+¸Ñ*;¸dÑ*BÓ!C�JÜ˜j¬5¯<©<¼¿¹Ð*EÔFàŸ™ d¨;¨-°q¸¸¸eÄCÈ
ÃOÐCVÐ$WÕXàŸ™ { m°1°T°F¸$¸z¸lÐ$KÕLòMð ×*Ñ*×1Ñ1°%Ô8Ø×'Ñ'×.Ñ.¨{Ô;Ø×(Ñ(×/Ñ/°Ô6ä×2Ò2Ø$(×$:Ñ$:¸5Ó$A�Mð ×4Ñ4×;Ñ;¸MÔJà#'×#8Ñ#8×#EÑ#E�LØ+×IÑIØ×0Ñ0ñ �Hô 6°h¸vÑ6FÓG�DÜ7¸ÀÑ8JÓK�Fä)?Ü2°5¸+ÀtÈVÓTØó*Ð&ð "×8Ñ8ØØØØ#Ø*ôðH —<‘<Ð+Ð+Ð+Ü;Ø °U×5MÑ5Mô‰NˆF�Fñ Ü˜5Ð";Ô<Ø&+×&CÑ&C�OØ"$ [ MÐ1SÐTcÐSdÐdrÐs~Ðrð  @gð  !h�IØ—K‘K 	Ô*Ü×6Ò6Ø×.Ñ.¨uÓ5×OÑOØ+Ô-CÀIÈuÓ-Uõð # ; -Ð/TÐUð ð —K‘K 	Ô*Ü×6Ò6Ø×.Ñ.¨uÓ5×JÑJØ5Ü2°9¸eÓDôô �4‹y˜1Š}Ø×+Ñ+¨E°4Ô8Ü×6Ò6Ø×,Ñ,¨U°DÕ9ð 7ð r|   c                óÂ   — t         j                  rJ ‚|r&| j                  j                  t	        ||«      «       y | j
                  j                  t	        ||«      «       y rÅ   )r1   r$  r‹  rÐ   rl  rŠ  )ry   rƒ   rn  ré  s       rz   r&  z GuardBuilder._produce_guard_codeã  sH   € Ü×2Ò2Ð2Ð2ÙØ×Ñ×&Ñ&¤}°YÀÓ'FÕGà�I‰I×Ñœ]¨9°eÓ<Õ=r|   c                ó"  — t        «       }|€J ‚|j                  }~|€J ‚t        |«      d   }~|t        | j                  «      v s
J d|› �«       ‚|€?|j
                  d uxr |j
                  dk7  }|r| j                  |j
                  «      nd }n|}|�t        j                  t        |«      «      nd }	d }
t        |j                  d«      r/t        |t        j                  «      st        j                  |«      }
|j                  ||	||
«       y )Nrÿ   zH_produce_guard_code must be called from inside GuardedCode. Called from r¿   Ú__weakref__)r   Úf_backr   Údirr�   r  r—  Úweakrefr(  r/  r"  r    ÚenumÚEnumÚset_export_info)ry   rƒ   rn  r!  Ú	cur_frameÚcallerÚ	func_nameÚ
name_validÚguarded_objectÚguarded_object_typeÚobj_refs              rz   r#  z#GuardBuilder._set_guard_export_infoë  s*  € ô !“Nˆ	ØÐ$Ð$Ð$Ø×!Ñ!ˆØØÐ!Ð!Ð!Ü  Ó(¨Ñ+ˆ	ØàœCØ�N‰Nó
ñ 
ð 	bàUÐV_ÐU`Ðaó	bð 
ð
 #Ð*ØŸ™¨4Ð/ÒD°E·J±JÀ"Ñ4DˆJá5?˜TŸX™X e§j¡jÔ1ÀT‰Nà4ˆNð 2@Ð1KŒG�K‰Kœ˜^Ó,Ô-ÐQUð 	ð ˆô �>×+Ñ+¨]Ô;ÄJØœDŸI™IôE
ô —k‘k .Ó1ˆGà×ÑØØØØõ		
r|   )r  zCallable[[Any], str]r€  zCallable[[Source], str]r�  z)Callable[[object], ReferenceType[object]]rš  úDict[str, object]rq   r  r‹   zOptional[GuardManager]r�  ÚCheckFunctionManager)rƒ   r#   )r  rY  Úreturnr   )rƒ   zUnion[str, Guard]r  rY  )rƒ   r#   rº  rY  rÅ   )rƒ   r#   r  r  )rƒ   r#   rA  rY  r:  rK  r¹   )6r‚   rº   r»   r{   r¤  rª  rÈ  rË  r   rÏ  rÓ  râ  rž  r  r  r—  r  r  r+  r.  r2  r7  r=  r@  rE  rH  rM  rU  ra  rm  rG  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|   rz   rt  rt  ú  sn  „ ðIJà$ðIJð ,ðIJð Cð	IJð
 'ðIJð (ðIJð .ðIJð /óIJòVò. òDSòj9ò
"ò
ò
ò_óB	Lð "ØóSóB4óóó94ôv
ó(4ó4ó"4ó?ôB4óOó4ó"2ó(2ó,2ó6F1óP%óRó$ó'ó*ó*ò2ò<2ò02ò82ò6	2ò2ò,$óJóóóóó2óKOôZU:óp>ô(
r|   rt  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)ÚPyExprCSEPassr0   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_nameNro  rÛ   r|   rz   ÚConfigr!  /  s   … à"Ó"Ø$Ô$r|   r$  c                  ó(   ‡ — e Zd Zdd„Zdˆ fd„Zˆ xZS )úPyExprCSEPass.ExprCounterc                ó   — || _         y rÅ   )Ú_config)ry   r1   s     rz   r{   z"PyExprCSEPass.ExprCounter.__init__5  s	   € Ø!ˆD�Lr|   c                ó¬   •— t        |t        j                  «      r*| j                  j                  t        |«      xx   dz  cc<   t        ‰| �  |«       y re  )r    r  ÚALLOWED_NODE_TYPESr(  r"  r
  r¶   rØ   )ry   r	  r�   s     €rz   rØ   zPyExprCSEPass.ExprCounter.visit8  s>   ø€ Ü˜$¤× @Ñ @ÔAØ—‘×'Ñ'¬°TÓ(:Ó;¸qÑ@Ó;Ü‰G‰M˜$Õr|   )r1   r!  r  r  ©r	  úast.ASTr  r   ©r‚   rº   r»   r{   rØ   r¼   r½   s   @rz   ÚExprCounterr&  4  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)ry   r1   Úgen_namer�   s      €rz   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Ø   r2  r3  rÐ   r  ÚNameÚLoad)ry   r	  ÚexprÚnode_Úexpr_Úvar_namer�   s         €rz   rØ   zPyExprCSEPass.Replacer.visitH  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|   )r1   r!  r4  zCallable[[], str]r  r  r+  r-  r½   s   @rz   ÚReplacerr0  =  s.   ø„ ð	)à(ð	)ð (ð	)ð õ		)÷	'ñ 	'r|   r=  c                ój   — d| _         | j                  t        j                  d„ «      i ¬«      | _        y )Nr   c                  ó   — yrä   rÛ   rÛ   r|   rz   rô   z(PyExprCSEPass.__init__.<locals>.<lambda>e  s   � r|   )r"  r#  )Ú_counterr$  ré  Údefaultdictr(  rx   s    rz   r{   zPyExprCSEPass.__init__b  s.   € ØˆŒØ—{‘{Ü"×.Ñ.©yÓ9Èð #ó 
ˆ�r|   c                óP   — |› | j                   › �}| xj                   dz  c_         |S re  )r@  )ry   r´   r  s      rz   Ú_new_varzPyExprCSEPass._new_varh  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)ry   ÚexprsÚcounterÚeÚexs        rz   ÚcountzPyExprCSEPass.countm  si   € Ø×"Ñ" 4§<¡<Ó0ˆØò 	ˆAðØ—‘œcŸi™i¨›lÕ+ñ	øô ò Ü—‘ÐDÀbÇiÁiÐQRÔSØûðús   ¢$A	Á		A9Á"A4Á4A9c                óÄ   — | j                  | j                  | j                  «      }|j                  t	        j
                  |«      «      }|j                  t        |«      fS rÅ   )r=  r(  rC  rØ   r  rE  r3  r
  )ry   r9  ÚreplacerÚnew_nodes       rz   r  zPyExprCSEPass.replacev  sF   € Ø—=‘= §¡¨t¯}©}Ó=ˆØ—>‘>¤#§)¡)¨D£/Ó2ˆØ×Ñ¤¨hÓ!7Ð7Ð7r|   N)r  r  )Ú_var)r´   rY  r  rY  )rI  rm  r  r  ©r9  rY  r  zTuple[List[str], str])r‚   rº   r»   r6  r  Ú	AttributeÚCallÚ	Subscriptr*  ÚdataclassesÚ	dataclassr$  ÚNodeVisitorr.  ÚNodeTransformerr=  r{   rC  rM  r  rÛ   r|   rz   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    rh  r:   r1   Ú guard_nn_modules_using_dict_tagsÚ	create_fnrt  r�  )rƒ   s    rz   Úmust_add_nn_module_guardsr]  |  s@   € ô
 	�5×+Ñ+¬^Ó<ò 	
ô ×3Ñ3ò :Ø—‘¤<×#9Ñ#9Ð9ðr|   c                  ó   — e Zd Zy)ÚDeletedGuardFnN)r‚   rº   r»   rÛ   r|   rz   r_  r_  Š  s   „ Ør|   r_  c                  ó4   — e Zd Z	 	 d	 dd„Zd„ Zd„ Zd„ Zd„ Zy)	r  Nc           	     ó¦  ‡ ‡
— |r|j                   nd }i ‰ _        d ‰ _        t        j                  rt        «       ‰ _        |‰ _        d Š
|r|j                  nd ‰ _        ˆ
fd„}t        ‰ j                  |‰ j                  |j                  |j                  ‰ j                  ‰ «      }d„ }t        j                  ||«      Š
t        j                  xr t!        d«      }t!        d«      st"        j%                  d«       t'        |xs g t(        j*                  ¬«      D ]`  }|sK|j-                  «       r;d|j.                  vr-d|j.                  vrt        j0                  sd|j.                  vrŒP|j3                  |«       Œb ‰ j5                  |||«      ‰ _        |j8                  ‰ j6                  _        t        j                  rðt:        j<                  j?                  d	ˆ fd
„¬«       t@        jC                  d‰ j                  «       ‰ j                  sJ ‚|j8                  ‰ j                  _        ‰ j                  ‰ _        |jD                  sf‰ j                  jG                  |j                  «      sAtI        ‰ j                  |j                  tK        jL                  «       «      }	tO        d|	› �«      ‚‰ j                  jQ                  «        d ‰ _        y )Nc                óÄ   •— | j                  «       }|t        j                  u r| j                  «       S ‰sJ ‚ ‰«       }|€J ‚|j	                  | j                  «       «      S rÅ   )Úguard_sourcer&   ÚCONSTANTr  r  )r�   rc  Ú	r_builderÚ	w_builders      €rz   r€  z1CheckFunctionManager.__init__.<locals>.source_ref¥  s]   ø€ Ø!×.Ñ.Ó0ˆLØœ{×3Ñ3Ñ3à—{‘{“}Ð$ÙÐ�9Ù!›ˆIØÐ(Ð(Ð(Ø×$Ñ$ V§[¡[£]Ó3Ð3r|   c                ó&   —  | «       }|rd |_         y y rÅ   )r‚  )Úweak_bró   s     rz   Úcleanup_builderz6CheckFunctionManager.__init__.<locals>.cleanup_builderº  s   € Ù“ˆAÙØ�•ð r|   z!pytorch/compiler:guard_nn_modulesz9guard_nn_modules is turned off using justknobs killswitch)rA  rõ  r÷  ÚhooksÚdynamo_cpp_guards_strc                 ó.   •— t        ‰ j                  «      S rÅ   )rY  r‹   rx   s   €rz   rô   z/CheckFunctionManager.__init__.<locals>.<lambda>æ  s   ø€ ¼CÀ×@RÑ@RÓ<S€ r|   ©Ú
payload_fnú%szGuard check failed: ))rd   Ú	_weakrefsr‹   r1   r$  ri   r“  Útorch_function_mode_stackrt  r  r�  rš  rq   r  r(  Úguard_nn_modulesr)   r  r  r’   r#   Úsort_keyrþ  r  rÆ  r  Úcompile_check_fnÚcheck_fnru   r¡   Ú_loggingÚtrace_structuredÚ
guards_logÚdebugrí  rÆ   Úget_guard_fail_reason_helperr    rl  rû  Úclear)ry   r“  rr   rd   r€  Úbuilderri  Úguard_on_nn_modulesrƒ   Úreasonsrf  s   `         @rz   r{   zCheckFunctionManager.__init__”  sg  ù€ ñ
 )5�×$Ò$¸$ˆØ;=ˆŒØ!ˆÔÜ×*Ò*Ü!-£ˆDÔØ(ˆÔØˆ	ñ 7CˆL×2Ò2Èð 	Ô&ô	4ô Ø�K‰KØØ× Ñ Ø×$Ñ$Ø×%Ñ%Ø×ÑØó
ˆò	ô —K‘K ¨Ó9ˆ	ä$×5Ñ5ò 
¼/Ø/ó;
Ðô ÐBÔCÜ�K‰KÐSÔTä˜FšL b¬e¯n©nÔ=ò 	"ˆEá'Ø×2Ñ2Ô4ð #¨%¯*©*Ñ4Ø$¨E¯J©JÑ6Ü×5Ò5¸ÈÏ
É
Ñ9Ràà�L‰L˜Õ!ð	"ð ×-Ñ-¨g°v¸}ÓMˆŒð )0×(?Ñ(?ˆ�‰Ô%ä×*Ò*ä�N‰N×+Ñ+Ø'Ó4Sð ,ô ô ×Ñ˜T 4×#5Ñ#5Ô6Ø×%Ò%Ð%Ð%Ø18×1HÑ1HˆD×ÑÔ.Ø ×.Ñ.ˆDŒMð  ×&Ò&Ø×)Ñ)×/Ñ/°×0HÑ0HÔIÜ:Ø×*Ñ*Ø$×0Ñ0Ü&×9Ñ9Ó;ó�Gô
 )Ð+?À¸yÐ)IÓJÐJð 	�‰×ÑÔØ ˆÕr|   c                ó¤  ‡,‡-‡.— |j                   }|dgz  }t        j                  d«       g Š,g Š.g Š-t        | j                  «      }t
        j                  r}ddlm} | j                  sJ ‚| j                  j                  j                  dg«       | j                  j                  j                  | j                  t        |«      dg«       d | _        nHd}‰,j                  |«       ‰.j                  |«       d}‰,j                  |«       ‰.j                  |«       d ˆ,ˆ-ˆ.fd„	}	t        «       }
|j                   D ]K  }|j"                  D ]:  }||
vsŒ |	||j$                  t
        j                  «       |
j'                  |«       Œ< ŒM |j(                  }d }d }|�r\t
        j                  �sK|j*                  }| j,                  j.                  rJ d«       ‚|j0                  }g }g }t3        ||«      D ]b  \  }}| j,                  j4                  |j6                     }|j                  t9        |d	   «      «       |j                  t9        |d
   «      «       Œd t;        |||dœŽ}|j<                  }|j>                  }djA                  |dgz   «      }‰,j                  d|› d�«       ‰.j                  d|› d�«       tC        |«      D ]0  \  }}||   }||   }||   }tE        ||||«      } |	|||   d¬«       Œ2 tG        |«      dkD  r=t
        j                  r-tI        |jJ                  |ddjA                  |«      z   dz   g«       | j,                  r*| j,                  jL                  jN                  jP                  ng }|D ]¯  }tS        |tT        «      r�|jV                  } |jX                  }!| j[                  «       › d|!j[                  «       › �}t
        j                  r,t]        |j_                  | «      |j_                  |!«      |g«        |	|d t
        j                  «       Œ£ta        d|› �«      ‚ |jb                  D ]5  }|j"                  D ]$  } |	||j$                  t
        j                  «       Œ& Œ7 ‰-r$td        jf                  ji                  dˆ-fd„¬«       tj        jl                  }"|"€tk        jn                  «       }"|||"j<                  ||dœtp        ¥tr        ¥}#d|jt                  d   i}$t
        j                  r*| j                  sJ ‚| j                  }%tG        ‰,«      dk(  s™J ‚t        tw        ‰,«      «      }&djA                  |#jy                  «       «      }'t{        |&|'«      \  }(})t|        j~                  j�                  dd «      dk(  rtƒ        d|(«       i }*	 t…        |)|$|*«        |*d   |#j�                  «       Ž }%|#|%_H        ||%_I        t
        j                  r|%j•                  «        n‰,|%_K        ‰.|%_L        |$|%_M        ||%_N        d |%_O        d |%_P        ||%_Q        |%S # t†        $ r'}+tˆ        j‹                  d|+jŒ                  |)«       ‚ d }+~+ww xY w)!Nz**___kwargs_ignoredzGUARDS:r0   ©ÚIGNORED_MODESz___check_global_state()z$___check_torch_function_mode_stack()c                ó$  •‡ ‡— t        ‰ ‰«      }t        j                  d|«       ‰j                  ˆ ˆfd„«       t        j                  t        j                  «      rŽd}d}‰�p‰j                  r,ddj                  ‰j                  j                  «       «      › �}‰j                  r,ddj                  ‰j                  j                  «       «      › �}t        j                  d‰ ||«       |s#‰j                  ‰ «       ‰j                  |«       y y )Nro  c                 óÜ   •— ‰ ‰j                   r-t        j                  ‰j                   j                  «       «      nd ‰j                  r!t        j                  ‰j                  «      dœS d dœS )N)rŠ  r  r  )r  r(   Úfrom_tracebackr  r  )rÓ   rƒ   s   €€rz   rô   zNCheckFunctionManager.compile_check_fn.<locals>.add_code_part.<locals>.<lambda>1	  s_   ø€ Ø%à—{’{ô (×6Ñ6°u·{±{×7JÑ7JÓ7LÔMàà×'Ò'ô #-×";Ñ";¸E×<LÑ<LÓ"Mñ€ ð ñ€ r|   r¿   z
Stack:
z
User stack:
zGuard: %s%s%s)r"  rx  ry  rÐ   Úverbose_guards_logÚisEnabledForÚloggingÚDEBUGr  r  Úformatr  )	rÓ   rƒ   Úlog_onlyrÒ   Úmaybe_stackÚmaybe_user_stackro   Ústructured_guard_fnsrp   s	   ``    €€€rz   Úadd_code_partz<CheckFunctionManager.compile_check_fn.<locals>.add_code_part,	  s÷   ú€ Ü 5°iÀÓ GÐÜ×Ñ˜TÐ#4Ô5à ×'Ñ'ôô
ô "×.Ñ.¬w¯}©}Ô=Ø �Ø#%Ð ØÐ$Ø—{’{Ø(2°2·7±7¸5¿;¹;×;MÑ;MÓ;OÓ3PÐ2QÐ&R˜Ø×'Ò'à-¨b¯g©g°e×6FÑ6F×6MÑ6MÓ6OÓ.PÐ-QÐRð )ô #×(Ñ(Ø#ØØØ$ô	ñ Ø×!Ñ! )Ô,Ø"×)Ñ)Ð*;Õ<ð r|   z,Illegal to set tensor_check_names in export.rø  rù  )Údynamic_dims_sizesÚdynamic_dims_stridesr‰   z%tensor_check_names=tensor_check_namesz___check_tensors(r.  T)rŠ  zcheck_no_aliasing(r³  zUnknown GuardEnvExpr: Údynamo_guardsc                 ó8   •— ‰D � cg c]	  }  | «       ‘Œ c} S c c} w rÅ   rÛ   )Úfr�  s    €rz   rô   z7CheckFunctionManager.compile_check_fn.<locals>.<lambda>²	  s   ø€ ÐBVÖ4W¸Q±QµSÒ4W€ ùÒ4Ws   †rm  )Ú___check_tensorsÚ___check_tensors_verboseÚ___check_global_stateÚ"___check_torch_function_mode_stackrŒ  rx  r   ÚTORCHDYNAMO_PRINT_GUARDSÚ1zGUARDS
z#Failed to exec guard at line %s.
%sr  r¹   )Rr‰  rx  ry  Ú$make_torch_function_mode_stack_guardrq  r1   r$  Úvariables.torch_functionr�  r‹   rl   Úadd_global_state_guardÚ#add_torch_function_mode_stack_guardr$  rÐ   r‘  rŠ  rn  rƒ   r•  rŒ  rŽ  r“  rí  r�  r¦   rÿ  rh  r,  r   rÆ   rÊ   r  r¦  r=  r«  r   r�  Útracing_contextÚguards_contextÚaotautograd_guardsr    r"   Úinput_source_aÚinput_source_br  r   râ  rë  r‹  r¡   rv  rw  r2   Úinitial_global_stateÚGlobalStateGuardr,   r  r‚  Úuniquer?  r  ÚosÚenvironr—  Úprintr  rF  r  rG  rH  r	  rm   rn   rÙ   ro   rp   rq   rr   rs   rt   rv   )/ry   r|  Ú
guards_outrr   ÚlargsÚ"torch_function_mode_stack_check_fnr�  Úglobal_guardÚtf_mode_stack_guardrŽ  ÚseenÚgclrŠ  rŒ  Úcheck_tensors_fnÚcheck_tensors_verbose_fnrŽ  r�  r�  r�  rŽ   Úgr  Útensor_guardsÚtensor_check_argsÚir  r7  r8  rÓ   r   rƒ   Úsource_ar´  Úglobal_staterm   r  r  Úunique_code_partsr  r  r  rÿ  rL  ro   r�  rp   s/                                               @@@rz   rt  z%CheckFunctionManager.compile_check_fn	  so  ú€ à× Ñ ˆØÐ'Ð(Ñ(ˆä×Ñ˜Ô#àˆ
ØÐØCEÐä-QØ×*Ñ*ó.
Ð*ô ×*Ò*Ý?ð ×%Ò%Ð%Ð%Ø×Ñ×#Ñ#×:Ñ:Ð<UÐ;VÔWà×Ñ×#Ñ#×GÑGØ×.Ñ.Ü�]Ó#Ø7Ð8ôð .2ˆDÕ*ð 5ˆLØ×Ñ˜lÔ+Ø×%Ñ% lÔ3à"HÐØ×ÑÐ1Ô2Ø×%Ñ%Ð&9Ô:÷#	=ôJ ‹uˆØ—<‘<ò 	#ˆCØŸ™ò #�Ø˜tÒ#ñ " $¨¯	©	´6×3RÑ3RÔSØ—H‘H˜T•Nñ#ð	#ð %×7Ñ7ÐØÐØ#'Ð Ú¤f×&EÓ&EØ")×"=Ñ"=Ðà×%Ñ%×,Ò,ð>à=ó>Ø,à$+×$AÑ$AÐ!à!#ÐØ#%Ð ÜÐ1Ð3FÓGò ‘��1Ø×,Ñ,×JÑJØ×(Ñ(ñ�ð #×)Ñ)Ô*DÀXÈfÑEUÓ*VÔWØ$×+Ñ+Ü.¨x¸Ñ/AÓBõðô )Ø&Ø#5Ø%9òˆMð
  -×2Ñ2ÐØ'4×'BÑ'BÐ$Ø $§	¡	Ø"Ð&MÐ%NÑNó!Ðð ×ÑÐ 1Ð2CÐ1DÀAÐFÔGØ×%Ñ%Ð(9Ð:KÐ9LÈAÐ&NÔOä$Ð%7Ó8ò P‘��4ð *¨!Ñ,�Ø*¨1Ñ-�Ø.¨qÑ1�Ü6°q¸$ÀÀwÓO�	Ù˜iÐ)<¸QÑ)?È$ÖOðPô Ð!Ó" QÒ&¬6×+JÒ+Jô -Ø×3Ñ3Ø"Ø%¨¯	©	Ð2DÓ(EÑEÈÑKÐLôð × Ò ð ×Ñ×-Ñ-×<Ñ<×OÒOàð 	ð (ò 	EˆEÜ˜%¤Ô1Ø ×/Ñ/�Ø ×/Ñ/�Ø'Ÿ}™}›Ð/¨t°H·M±M³OÐ3DÐE�	Ü×2Ò2Ü1Ø×=Ñ=¸hÓGØ×=Ñ=¸hÓGØ"˜ôñ
 ˜i¨¬v×/NÑ/NÕOä"Ð%;¸E¸7Ð#CÓDÐDð	Eð" ×)Ñ)ò 	PˆCØŸ™ò P�ñ ˜d C§I¡I¬v×/NÑ/NÕOñPð	Pñ  Ü�N‰N×+Ñ+ØÓ,Wð ,ô ô %×9Ñ9ˆØÐä(×9Ñ9Ó;ˆLà 0Ø(@Ø%1×%7Ñ%7Ø2TØ"4ñ
ô ð
ô ð
ˆð !$ W§]¡]°3Ñ%7Ð8ÐÜ×*Ò*à×%Ò%Ð%Ð%ð ×)Ñ)ˆHä�z“? aÒ'Ð'Ð'ä $¤V¨JÓ%7Ó 8ÐØ!%§¡¨<×+<Ñ+<Ó+>Ó!?ÐÜ!5Ø!Ð#5ó"ÑˆJ˜ô �z‰z�~‰~Ð8¸$Ó?À3ÒFÜ�j *Ô-à"$ˆCð
Ü�VÐ1°3Ô7ð /�sÐ-Ñ.°×0CÑ0CÓ0EÐFˆHà ,ˆÔàˆŒÜ×*Ò*Ø×6Ñ6Õ8à",ˆHÔØ&8ˆÔ#à 4ˆÔØ!.ˆÔð  $ˆÔØ#ˆÔØ.@ˆÔ+Øˆøô+ ò Ü—‘ÐDÀbÇiÁiÐQWÔXØûðús   ÖX Ø	YØ("Y
Ù
Yc                ól  — t        | d«      r¨| j                  t        ur•| j                  j                  x}�|| j                  j                  x}�ct        |t        «      sJ ‚t        |t        «      sJ ‚|j                  |«       d | j                  _        d | j                  _        t        | _        y y y y y )Nru  )	r"  ru  r_  rs   rt   r    rP   rQ   Ú
invalidate)ry   rs   rt   s      rz   rº  zCheckFunctionManager.invalidateõ	  s§   € ô
 �D˜*Ô%Ø—‘¤^Ñ3Ø $§¡× 9Ñ 9Ð9�ÐFØ $§¡× 9Ñ 9Ð9�ÐFä˜k¬:Ô6Ð6Ð6Ü˜k¬:Ô6Ð6Ð6Ø×"Ñ" ;Ô/Ø(,ˆD�M‰MÔ%Ø(,ˆD�M‰MÔ%Ü*ˆD�Mð Gð Gð 4ð &r|   c                ó  — 	 t        |«      | j                  vrKt        j                  |«      | j                  t        |«      <   t        j                  || j
                  «       t        |«      S # t        $ r Y t        |«      S w xY w)zadd a weakref, return the id)r–  rp  r  r(  Úfinalizerº  Ú	TypeError©ry   rL  s     rz   r  zCheckFunctionManager.id_ref
  sp   € ð	Ü�#‹w˜dŸn™nÑ,ô +2¯+©+°cÓ*:�—‘œr #›wÑ'Ü× Ñ   d§o¡oÔ6ô �#‹wˆøô ò 	ØÜ�#‹wˆð	ús   ‚A"A/ Á/	BÂBc                ób   — t        |«      | j                  v r| j                  t        |«         S y)zFLookup the _weakrefs created in id_ref function for ID_MATCH'd objectsN)r–  rp  r¾  s     rz   r�  z$CheckFunctionManager.lookup_weakrefs
  s(   € äˆc‹7�d—n‘nÑ$Ø—>‘>¤" S£'Ñ*Ð*Ør|   )NN)rr   z%Optional[Callable[[GuardFail], None]])r‚   rº   r»   r{   rt  rº  r  r�  rÛ   r|   rz   r  r  “  s2   „ ð Ø?Cðo!ð =óo!òbnò`+ò"ór|   r  c                ó  ‡	— ddl m} t        r"t        «       Š	‰	j	                  | «       dˆ	fd„}nd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 # 1 sw Y   �Œ4xY w# 1 sw Y   Œ�xY w# 1 sw Y   ŒBxY w)Nr   r­   c                ó&   •— ‰j                  | «      S rÅ   )r  )r9  Úcsepasss    €rz   r  z%build_guard_function.<locals>.replace!
  s   ø€ Ø—?‘? 4Ó(Ð(r|   c                ó
   — g | fS rÅ   rÛ   )r9  s    rz   r  z%build_guard_function.<locals>.replace&
  s   € Ø�t�8ˆOr|   zif not (z):zreturn Falsezdef guard(L):zreturn Truezdef ___make_guard_fn(zreturn guardrR  )
rÀ   r®   ÚHAS_UNPARSE_FUNCTIONSr  rM  r¥   r•   r–   ÚsplicerÂ   )
ro   Úclosure_argsr®   r  r  r9  r3  rƒ   Úmake_guard_fnrÂ  s
            @rz   r  r  
  so  ø€ Ý4åÜ“/ˆØ�‰�jÔ!ö	)ó
	ñ
  Ó!€JØò 1ˆÙ ›‰ˆ�Ø×Ñ˜gÔ&Ø×Ñ˜x¨ v¨RÐ0Ô1Ø×ÑÓ ñ 	1Ø× Ñ  Ô0÷	1ð 	1ð	1ñ Ó€EØ	‡O�O�OÔ$Ø	�‰‹ñ 'Ø�‰�ZÔ Ø�‰˜Ô&÷'ñ #Ó$€MØ×ÑÐ3°L°>ÀÐDÔEØ	×	Ñ	Ó	ñ 0Ø×Ñ˜UÔ#Ø×Ñ Ô/÷0ð ×ÑÓ  -×"8Ñ"8Ó":Ð:Ð:÷%	1ñ 	1ú÷'ð 'ú÷0ð 0ús$   ÂE'Ã#E4Ä#F Å'E1	Å4E=Æ F	c                 óh   — t         j                  j                  j                  j	                  d«      S )Nre   ©r¡   rv  Ú	_internalÚ	log_stateÚis_artifact_enabledrÛ   r|   rz   Úis_recompiles_enabledrÍ  E
  s#   € Ü�>‰>×#Ñ#×-Ñ-×AÑAÀ,ÓOÐOr|   c                 óh   — t         j                  j                  j                  j	                  d«      S )Nrf   rÉ  rÛ   r|   rz   Úis_recompiles_verbose_enabledrÏ  I
  s$   € Ü�>‰>×#Ñ#×-Ñ-×AÑAÐBVÓWÐWr|   c                ó^   ‡‡— | D �cg c]  }t        |«      ‘Œ c}ŠddlmŠ ˆˆfd„}|S c c}w )Nr0   r€  c                 óœ   •— t        «       } t        | «      t        ‰«      k7  ryt        ‰| «      D ]  \  }}|‰v rŒ|t        |«      k7  sŒ y y)NFT)rX   r«  r¦   r/  )Ú	cur_stackÚtyÚmoder�  r’  s      €€rz   Úcheck_torch_function_mode_stackzMmake_torch_function_mode_stack_guard.<locals>.check_torch_function_mode_stackR
  sW   ø€ Ü1Ó3ˆ	Üˆy‹>œS ›ZÒ'Øä˜E 9Ó-ò 	‰HˆB�Ø�]Ñ"ØØ”T˜$“ZÓÙð		ð r|   )r/  r›  r�  )Úintial_stackrÈ   rÕ  r�  r’  s      @@rz   rš  rš  N
  s,   ù€ Ø*Ö+˜ŒT�!�WÒ+€EÝ7õð +Ð*ùò! ,s   ‡*c                ól  — g }t        | j                  «      }t        j                  t        «      }| j
                  D ]1  }||d<   t        t        |||«      «      }||   j                  |«       Œ3 |D ])  }t        ||   «      dkD  sŒ|j                  ||   › «       Œ+ dj                  |«      }d|› �gS )NÚ__compile_source__r0   r‰   zDuplicate tensors found: )rW  rq   ré  rA  r$  rv   r–  r  rÐ   r«  r  )	r‹   r‚  Úduplicate_tensorsrq   Úids_to_sourcerû  Ú	tensor_idrA  r  s	            rz   Ú1recompilation_reason_for_no_tensor_aliasing_guardrÜ  b
  sÈ   € ØÐÜ˜×2Ñ2Ó3€LÜ×+Ñ+¬DÓ1€MØ&×AÑAò 7ˆØ-:ˆÐ)Ñ*Ü”t˜M¨<¸Ó?Ó@ˆ	Ø�iÑ ×'Ñ'¨Õ6ð7ð
 ò >ˆÜˆ}˜SÑ!Ó" QÓ&Ø×$Ñ$¨°cÑ(:Ð';Õ=ð>ð �Y‰YÐ(Ó)€FØ'¨ xÐ0Ð1Ð1r|   c                ó  — || j                   d   dœ}|j                  | j                  «       g }d}g }t        j                  rH| }|j                  |«      }|j                  s=|j                  }t        |«      dk(  r#d|d   v rd}n|}g }n| j                  }|d   |d	<   |rt        | |«      }n…|D ]€  }	t        | j                   «      }
|	|
d
<   t        «       5  	 t        |	|
|«      }	 ddd«       t        t         «      r|s|	}t        |t"        «      sŒd|j%                  |«       t        «       rŒ€ n |› d�dj'                  |«      z   }|S # t        $ r}t        «       rY d}~ddd«       Œ¼‚ d}~ww xY w# 1 sw Y   Œ�xY w)z£
    Return the reason why `guard_fn` failed.
    Updates `guard_failures` with the generated reason.
    Only the first failed check of guard_fn is reported.
    rx  rv  Fr0   zDuplicate tensor foundr   Tr•  r”  rØ  Nr€   z; )rq   r·  rm   r1   r$  rÊ   Úresultrp   r«  rÜ  rW  r.   r  Ú	ExceptionrÏ  r    rK  rY  rÐ   r  )r  Úf_localsÚ
compile_idr‚  r~  Úno_tensor_aliasing_check_failedrp   r‹   Úguard_debug_infor†   rq   Úfail_reasonrK  Ú
reason_strs                 rz   rz  rz  s
  s¥  € ð  ×!6Ñ!6°sÑ!;Ñ<€EØ	‡L�L�×&Ñ&Ô'Ø€Gà&+Ð#à$&ÐÜ×&Ò&Ø ˆØ(×6Ñ6°xÓ@Ðð  ×&Ò&Ø!1×!DÑ!DÐô Ð%Ó&¨!Ò+Ø+Ð/AÀ!Ñ/DÑDØ6:Ñ3à0�GØ)+Ñ&à%×8Ñ8Ðð %*Ð*DÑ$EˆÐ Ñ!á&ÜCÀHÈeÓT‰à&ò 	ˆDÜ × 5Ñ 5Ó6ˆLØ15ˆLÐ-Ñ.Ü/Ó1ñ ðÜ"& t¨\¸5Ó"A‘K÷ô ˜+¤tÔ,±[Ø"�Ü˜+¤sÕ+Ø—‘˜{Ô+Ü4Õ6Ùð'	ð* �<˜rÐ" T§Y¡Y¨wÓ%7Ñ7€JØÐøô! !ò Ü4Ô6Û ÷ð ð ûð	ú÷ð ús6   ÃE6ÃEÅ	E3Å
E.Å E6Å-E.Å.E3Å3E6Å6E?	c                ó  — t        | ||«      }t        t        |      j                  |«       	 | j                  �&| j	                  t        |xs dt        |   «      «       |S # t        $ r }t        j                  d«       Y d }~|S d }~ww xY w)Nzunknown reasonzVFailure in guard_fail_fn callback - raising here will cause a NULL Error on guard eval)	rz  rY   r]   rÐ   rr   rS   rß  r  rG  )r  rŠ  rà  rá  rå  rK  s         rz   Úget_guard_fail_reasonrç  »
  s”   € ô .¨h¸À*ÓM€JÜ”= Ñ&Ñ'×.Ñ.¨zÔ:ð
Ø×!Ñ!Ð-Ø×"Ñ"Ü˜*Ò8Ð(8¼-ÈÑ:MÓNôð Ðøô ò 
Ü�‰Ød÷	
ð 	
ð Ðûð
ús   ®2A" Á"	BÁ+BÂBc                óX  ‡— g Š| �Xt        | j                  | j                  |j                  | j                  «      }|r‰j                  |«       | j                  } | �ŒX|j                  }t        «       xs
 t        «       }|st        j                  ròt        «       r"dj                  d„ t        ‰«      D «       «      }n%t        j                  dj                  ‰«      d«      }d|› �}d|j                   › d|j"                  › d|j$                  › dt        j                  |d	«      › �}|r5t        «       rt&        j)                  |«       nt*        j)                  |«       t        j                  rt-        j.                  |«      ‚t0        j2                  j5                  d
d„ ˆfd„¬«       ‰S )zÒ
    Return the list of guard failure reasons using cache_entry.
    Logs the recompilation reason if `recompiles` logging is enabled.
    Raises a RecompileError if `config.error_on_recompile` is enabled.
    z

c              3  ó\   K  — | ]$  \  }}d |› d�t        j                  |d«      z   –— Œ& y­w)zguard z failures:
ú- N)Útextwrapr–   )rt  rµ  r  s      rz   rv  z9get_and_maybe_log_recompilation_reason.<locals>.<genexpr>ì
  s5   è ø€ ò #á�A�vð ˜˜˜<Ð(¬8¯?©?¸6À4Ó+HÕHñ#ùs   ‚*,r  rê  z-triggered by the following guard failure(s):
zRecompiling function z in ú:z    Úartifactc                 ó   — dddœS )NÚrecompile_reasonsÚjson)r  ÚencodingrÛ   rÛ   r|   rz   rô   z8get_and_maybe_log_recompilation_reason.<locals>.<lambda>  s   € Ø'Øñ
€ r|   c                 ó   •— ‰ S rÅ   rÛ   )r~  s   €rz   rô   z8get_and_maybe_log_recompilation_reason.<locals>.<lambda>  s   ø€ ˜7€ r|   )Úmetadata_fnrn  )rç  ru  rŠ  rà  rá  rÐ   ÚnextÚf_coderÍ  rÏ  r1   Úerror_on_recompiler  r¦  rë  r–   Úco_nameÚco_filenameÚco_firstlinenoÚrecompiles_verbose_logry  Úrecompiles_logr3   ÚRecompileErrorr¡   rv  rw  )	rs   Úframer  rŠ  Údo_recompiles_logÚfailuresÚguard_failure_detailsÚmessager~  s	           @rz   Ú&get_and_maybe_log_recompilation_reasonr  Ñ
  s�  ø€ ð €GØ
Ð
!Ü&Ø× Ñ Ø×ÑØ�N‰NØ×"Ñ"ó	
ˆñ Ø�N‰N˜6Ô"Ø!×&Ñ&ˆð Ñ
!ð �<‰<€Dô .Ó/ÒRÔ3PÓ3RÐáœF×5Ò5Ü(Ô*Ø—{‘{ñ #ä!*¨7Ó!3ô#ó ‰Hô
  —‘ t§y¡y°Ó'9¸4Ó@ˆHà<¸X¸JÐGð 	ð $ D§L¡L >°°d×6FÑ6FÐ5GÀqÈ×I\ÑI\ÐH]Ð]_Ü�‰Ð4°fÓ=Ð>ð@ð 	ñ Ü,Ô.Ü&×,Ñ,¨WÕ5ä×$Ñ$ WÔ-Ü×$Ò$Ü×$Ñ$ WÓ-Ð-ä	‡N�N×#Ñ#Øñ
ó #ð $ô ð €Nr|   c                óØ  — t        d|j                  › d|j                  › d|j                  › �«       t        ddj	                  | j
                  «      z   dz   «       t        ddj	                  | j                  «      «       t        j                  rt        | «       d|i| j                  ¥}| j                  D ]  }	 t        || j                  |«       Œ y #  t        d|› �«       Y Œ0xY w)	NzERROR RUNNING GUARDS ú rì  zlambda r‰   z and
  rw  zMalformed guard:
)r¨  r÷  rø  rù  r  rn   ro   r1   r$  rm   r  rq   )r  rŠ  rà  r4  Úlastrš  rƒ   s          rz   Úguard_error_hookr    sÖ   € ô 
Ø
 §¡˜~¨Q¨t×/?Ñ/?Ð.@ÀÀ$×BUÑBUÐAVÐWôô 
ˆ)�d—i‘i §¡Ó.Ñ
.°Ñ
4Ô5Ü	ˆ#ˆz�‰˜x×2Ñ2Ó3Ô4ä×&Ò&ÜˆhŒà˜Ð: H×$9Ñ$9Ð:€KØ×$Ñ$ò 0ˆð	0Ü�˜×-Ñ-¨{Õ;ñ0øð	0ÜÐ& u gÐ.Ö/ús   Â=CÃC)c              #  ób   K  — t        «       }| D ]  }||vsŒ|–— |j                  |«       Œ y ­wrÅ   )r‘  r•  )Úseqr®  rÈ   s      rz   r¥  r¥  (  s3   è ø€ Ü‹5€DØò ˆØ�DŠ=ØŠGØ�H‰H�Q�Kñùs   ‚/—/c                ó,  — |r’|| k7  r�t        |«      }t        | «      }t        |«      st        | «      r7t        j                  | j	                  «       › d|j	                  «       › d�«      ‚||k(  r%t        j                  t        j                  |¬«      S y )Nz is alising zC. This is not supported. Please do a clone for corresponding input.)r´  )	r   r   r3   ÚUnsafeScriptObjectErrorr  Ú	functoolsÚpartialrt  r·  )Ú
obj_sourceÚdupe_sourceÚser_source_is_localÚsource_is_locals       rz   Úmake_dupe_guardr  0  s™   € ñ �{ jÒ0Ü2°;Ó?ÐÜ.¨zÓ:ˆÜ/Øô
ä1°*Ô=Ü×-Ñ-Ø—?‘?Ó$Ð% \°+×2BÑ2BÓ2DÐ1Eð F>ð ?óð ð  /Ò1ô ×$Ñ$¤\×%AÑ%AÈKÔXÐXØr|   )Úskipc                óJ  — ddl m} t        j                  t        j
                  «      xs# t        j                  t        j
                  «      }|j                  «       j                  j                  j                  }|D ]"  }t        |t        «      sJ ‚ |||| dz   ¬«       Œ$ y)z«
    Add dynamo guards to the current tracing context.

    Args:
        guards: guard(s) to add
        skip: number of stack frames to ignore for debug stack trace
    r   )ÚTracingContextr0   )Úcollect_debug_stackr  N)Útorch._guardsr  rx  r†  r‡  rˆ  r…  r—  rŸ  r‘  r•  r    r#   )r  rd   r  r  r•  rƒ   s         rz   Úinstall_guardr  R  sŒ   € õ -ä$×1Ñ1Ü�‰óò 8ä	×	(Ñ	(¬¯©Ó	7ð ð ×
Ñ
Ó
×
-Ñ
-×
;Ñ
;×
?Ñ
?€CØò KˆÜ˜%¤Ô'Ð'Ð'ÙˆEÐ':ÀÈÁÖJñKr|   )r	  r,  r  rY  )rÓ   rY  rƒ   r#   r  rY  )ro   zUnion[str | List[str]]rƒ   r#   r  rm  )r  zTuple[str, str])r  rT   rà  r  rá  r!   r  rY  )
r  rT   rŠ  útypes.CodeTyperà  r  rá  r!   r  rY  )rý  ztypes.FrameTyper  rm  )
r  rT   rŠ  r  rà  r  r4  rX  r  rK  )ÂÚ
__future__r   r  rƒ  ré  rV  r  r  Ú	importlibrç   r‹  r‡  rŽ  r¦  r  Úsysrë  r’  r  Ú
contextlibr   r…  r   r   r   Útypingr   r	   r
   r   r   r   r   r   r   r   r   r¡   rÖ  Útorch._C._dynamo.guardsr   r   r   r   r   r   r   r   Útorch._dynamo.sourcer   r   r   r   r   r  r    r!   r"   r#   r$   r%   r&   r'   Útorch._loggingr(   Útorch._utils_internalr)   Ú%torch.fx.experimental.symbolic_shapesr*   r+   r,   Útorch.utils._tracebackr-   r.   Útorch.utils.weakr/   r¿   r1   r2   r3   r4   Ú
eval_framer5   r�   r6   r7   r8   r9   r:   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   r×  rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   ÚnumpyrÝ   ÚModuleNotFoundErrorÚsympyrc   Ú	getLoggerr‚   r  rv  ÚgetArtifactLoggerrx  rû  rú  r…  ri   râ   Ú	lru_cacherë   rê  Ú__getitem__r�  r�  Úimport_modulerØ  rü   rà   r  Úversion_infor  r
  rÄ  ÚImportErrorr  r  r"  r%  r,  r=  rB  rG  rW  rJ  rf  rj  rl  r  r[  rt  r  r]  r_  r  r  rÍ  rÏ  rš  rÜ  rz  rç  r  r  r¥  r  r  rÛ   r|   rz   ú<module>r0     så  ðå "ã 
Û Û Û Û Û Û Û Û Û Û Û 	Û 	Û 
Û Û Û Ý %Ý ß .÷÷ ÷ õ "ã Û ÷	÷ 	ó 	÷õ ÷	÷ 	ó 	õ &Ý 1÷ñ ÷
 PÝ *ç 8Ó 8Ý ,÷÷ ÷ ÷ ÷ ÷ ÷ ÷8 KÕ J÷÷ ÷ ÷ ð$Ûñ
 Ýð €g×Ò˜Ó!€Ø�^Š^×-Ò-¨h¸ÓA€
Ø—’×1Ò1°(¸LÓI€ØŸš×9Ò9ØÐ"óÐ ð —^’^×5Ò5°hÐ@PÓQÐ ÷Oñ OòdPð €×Ò�TÓñ.ó ð.ðØ˜ðà�|ðð ˜×/Ò/×;Ò;ðð �Ið	ð
 �|ðð Ñ+ðð Ð/ðð  Ð!7ðð �D—J’Jðð ˜R˜Z‘T¨R¯XªXðð 
‰5�‹<ðð �Y×,Ò,ðð �E—K‘K×'Ò'ðð ˆe�lŠlðð �Zðð  �E—O’Oð!ð" ˆUð#ð$ ˆwñ%€ð* ×Ò�B�QÐ˜6Ò!ð
&Ûó	>ð !%Ñð !Ðó3ò'ò.'ó
%ðQØ&ðQØ/4ðQàóQòòò'ò-ð €×Ò˜dÔ#÷!ð !ó $ð!ò"òJGð ×Ò÷ð ó ðô
$�t—y’yô $ôY
Ð#ô Y
÷Z1R8ñ R8òj÷	ñ 	÷Dñ DóN(;òVPòXò
+ò(2ð"EØðEàðEð ðEð 	ó	EðPØðà
ðð  ðð ð	ð
 	óð,9Ø'ð9àó9ðx0Øð0à
ð0ð  ð0ð ð	0ð
 ó0ñ0 Ð%Ô &òòðD !"õ KøðeV ò Ø	ƒBðûðh ò &Ø %Óð&ús$   ÅO Ë
O& ÏO#Ï"O#Ï&O1Ï0O1