Ë
    f^(h?T ã                  ó˜  — U 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mZmZ d dlmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZm Z  d dlm!Z!m"Z"m#Z# d d	l
m$Z$ d dl%Z%d dl&Z%d dl'm(Z( d dl)m(c mZ* d dl+m,c m-Z. d d
l%m/Z/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dl'mAZAmBZBmCZC d dlDmEZE d dlFmGZGmHZHmIZI d dlJmKZK d dlLmMZM d dlNmOZO d dlPmQZQmRZRmSZSmTZT d dlUmVZV d dlWmXZX d dlYmZZZ d dl[m\Z\m]Z]m^Z^ ddl_m`Z` ddlambZb er d dlcZcd dlmdZd d dleZed d l&mfZf d d!lgmhZh d d"limjZj g d#¢Zke d$   Zle%jÚ                  e5fZne e%jÚ                  e5f   Zoe%jà                  jâ                  Zqe%jà                  jä                  Zr ejæ                  et«      Zue%jì                  jï                  etd%«      Zxi ayd&ezd'<   dZ{ ed(«      Z| ed)«      Z} e"d*«      Z~ ed+«      Z e€e«      Z� e.�j                  e%�j                  d,„ d-„ d.„ d/¬0«       d�d1„Z„e	 	 	 	 dŽd2„«       Z… e†«       Z‡ G d3„ d4«      Zˆ eˆ«       Z‰d d5limŠZŠm‹Z‹  G d6„ d7e«      ZŒd�d8„Z�ed�d:„«       ZŽe	 	 	 	 	 	 	 	 d‘d;„«       ZŽe	 	 	 	 	 	 	 	 d’d<„«       ZŽ	 	 	 	 	 	 	 	 d“d=„ZŽd”d>„Z�eXeB   Z�e	 	 	 	 	 	 d•d?„«       Z‘e	 	 	 	 	 	 	 	 d–d@„«       Z‘e	 	 	 	 	 	 	 	 	 	 d—dA„«       Z‘e	 	 	 	 	 	 d˜dB„«       Z‘e	 	 	 	 	 	 	 	 d™dC„«       Z‘e	 	 	 	 	 	 	 	 	 	 dšdD„«       Z‘e	 	 	 	 	 	 d›dE„«       Z‘e	 	 	 	 	 	 	 	 dœdF„«       Z‘e	 	 	 	 	 	 	 	 	 	 d�dG„«       Z‘e‰dH„ f	 	 	 	 	 	 	 	 	 dždI„Z‘dŸdJ„Z’ee e‹eoe`e“dK   e”dL   e•e–dKf   e1e—e˜e™f
      Zšd dM„Z›edNdOœ	 	 	 	 	 d¡dP„«       Zœed¢dQ„«       Z�ed¢dR„«       Zžd£dS„ZŸ	 	 	 	 	 	 	 	 	 	 d¤dT„Z 	 	 	 	 	 	 	 	 	 	 d¥dU„Z¡e eBedV   ee†dVf   f   Z¢e e1edW   ee†dWf   f   Z£	 	 	 	 	 	 	 	 	 	 d¦dX„Z¤e G dY„ d9«      «       Z¥	 	 	 	 d§dZ„Z¦ed¨d[„«       Z§e	 	 	 	 	 	 d©d\„«       Z§e	 	 	 	 	 	 dªd]„«       Z§	 	 	 	 	 	 d«d^„Z§e1e%�jP                  �jR                  e;fZª	 	 	 	 	 	 d¬d`„Z«	 	 	 	 	 	 	 	 	 	 	 	 d­da„Z¬ G db„ dc«      Z­ G dd„ deeC«      Z®	 	 	 	 d®df„Z¯e%�j`                  	 d¯	 	 	 	 	 	 	 d°dg„«       Z±	 	 	 	 	 	 	 	 	 	 d±dh„Z²da³diezdj<   ed²dk„«       Z´ G dl„ dmeO«      Zµ e¯eµ«      Z¶ G dn„ doeO«      Z· e¯e·«      Z¸ G dp„ d_eT«      Z¹ G dq„ dre(�jt                  �jv                  «      Z¼ G ds„ dte(�jz                  «      Z¾	 	 	 	 	 	 	 	 d³du„Z¿ed¢dv„«       ZÀ G dw„ dxeÁ«      ZÂ G dy„ dz«      ZÃ G d{„ d|e®«      ZÄ G d}„ d~«      ZÅdaÆdezd€<   ed´d�„«       ZÇ	 	 	 dµd‚d‚d‚dNdƒœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¶d„„ZÈd·d…„ZÉd¸d†„ZÊd¸d‡„ZËd¹dˆ„ZÌedºd‰„«       ZÍ	 	 	 	 	 	 	 	 	 	 d»dŠ„ZÎ	 	 d¼	 	 	 	 	 	 	 	 	 	 	 d½d‹„ZÏd¾dŒ„ZÐy)¿é    )ÚannotationsN)ÚdefaultdictÚOrderedDict)Ú	GeneratorÚMappingÚSequence)Ú_GeneratorContextManagerÚcontextmanagerÚ	ExitStackÚnullcontext)Ú	dataclass)ÚAnyÚCallableÚOptionalÚoverloadÚProtocolÚTYPE_CHECKINGÚTypeVarÚUnion)ÚConcatenateÚ	ParamSpecÚSelf)ÚWeakKeyDictionary)ÚSymBoolÚSymIntÚTensor)Úenable_python_dispatcher)ÚFakeScriptObject)Útrace_structured)Úfast_detach)Ú
FakeTensorÚFakeTensorModeÚis_fakeÚunset_fake_temporarily)Úis_sparse_any)ÚGraphModuleÚProxyÚTracer)Ú_assign_attr)Ú1_side_effectful_need_to_be_preserved_pre_dispatchÚArgumentÚTarget)Ú_extract_tensor_metadata)ÚModule)ÚTorchFunctionMode)Ú_disable_infra_modeÚ
_push_modeÚ_unset_infra_modeÚTorchDispatchMode)Úcount)ÚThunk)ÚCapturedTraceback)Ú_WeakHashRefÚWeakIdKeyDictionaryÚWeakTensorKeyDictionaryé   )ÚBackwardState)ÚSymNode)ÚMutableMapping)Ú
OpOverload)ÚPHBase)ÚIntLikeType)
ÚPythonKeyTracerÚdispatch_traceÚmake_fxÚDecompositionInterpreterÚpy_sym_typesÚget_innermost_proxy_modeÚget_proxy_modeÚhandle_sym_dispatchÚmaybe_enable_thunkifyÚmaybe_disable_thunkify)rA   Ú_GraphAppendingTracerExÚnot_implementedzMapping[OpOverload, Callable]ÚCURRENT_DECOMPOSITION_TABLEÚTÚUÚ_PÚRc                ó   — t        | «      d fS ©N)Úlist)Úxss    ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/fx/experimental/proxy_tensor.pyú<lambda>rW   ~   s   € ”�R“˜$Ð€ ó    c                ó   — t        | «      S rS   )Útuple)rU   Ú_s     rV   rW   rW      s
   € ”%˜“)€ rX   c                óx   — t        | «      D ��cg c]  \  }}t        j                  |«      |f‘Œ c}}d fS c c}}w rS   )Ú	enumerateÚpytreeÚSequenceKey)rU   ÚiÚxs      rV   rW   rW   €   s5   € Ü09¸"³×>©¨¨1Œ&×
Ñ
˜QÓ
 Ò	#Ó>Øð%€ ùÛ>s   �!6z
torch.Size)Úflatten_with_keys_fnÚserialized_type_namec                ón   — dj                  d„ t        |«      D «       «      }t        d|› d|› d�d| i«      S )z*FX gets confused by varargs, de-confuse itú,c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)ÚargN© )Ú.0r`   s     rV   ú	<genexpr>z!fake_signature.<locals>.<genexpr>Š   s   è ø€ Ò8 a˜#˜a˜Sœ	Ñ8ùs   ‚zlambda z: fn(ú)Úfn)ÚjoinÚrangeÚeval)rl   ÚnargsÚargnamess      rV   Úfake_signaturerr   ˆ   s:   € à�x‰xÑ8¬5°«<Ô8Ó8€HÜ�'˜(˜ 5¨¨
°!Ð4°t¸R°jÓAÐArX   c              #  óH   K  — t         }| xs i a 	 t         –— |a y # |a w xY w­wrS   )rM   )Údecomposition_tableÚold_decomposition_tables     rV   Ú	decomposerv   Ž   s1   è ø€ ô
 :ÐØ"5Ò";¸Ðð>Ü)Ò)à&=Ñ#øÐ&=Ñ#üs   ‚"� ˜"›Ÿ"c                  ó   — e Zd Zy)Ú
_NoDefaultN©Ú__name__Ú
__module__Ú__qualname__rh   rX   rV   rx   rx   Ÿ   ó   „ ØrX   rx   )rE   Ú	PySymTypec                  ó   — e Zd ZU ded<   y)Ú_HasMetazdict[str, PySymType]ÚmetaN©rz   r{   r|   Ú__annotations__rh   rX   rV   r€   r€   ¨   s   … Ø
ÔrX   r€   c                ó‚   — t        | d«      sJ d«       ‚d| j                  v xr t        | j                  d   t        «      S )Nr�   z3All nodes traced with proxy_tensor should have metaÚval)Úhasattrr�   Ú
isinstancerE   )Únodes    rV   Úis_sym_noder‰   ¬   s<   € Ü�4˜Ô ÐWÐ"WÓWÐ Ø�D—I‘IÐÒL¤*¨T¯Y©Y°uÑ-=¼|Ó"LÐLrX   Ú_ProxyTensorc                 ó   — y rS   rh   ©ÚobjÚtracerÚproxys      rV   Úset_proxy_slotr�   ±   ó   € àrX   c                 ó   — y rS   rh   rŒ   s      rV   r�   r�   ¶   ó   € ð rX   c                 ó   — y rS   rh   rŒ   s      rV   r�   r�   ½   r“   rX   c                ó^  — t         j                  d| t        | «      |«       t        | t        «      r"t        |t
        «      sJ ‚||j                  | <   y t        | t        «      r"t        |t        «      sJ ‚||j                  | <   y t        | t        «      sJ t        | «      «       ‚| |j                  vrzt        j                  t        |«      |j                  | <   dd l}t        | j"                  j$                  |j&                  «      r$||j(                  | j"                  j$                  <   y y y )Nzset_proxy_slot %s (%s) %sr   )ÚlogÚdebugÚidr‡   r   rŠ   Útensor_trackerÚ_AnyScriptObjectr'   Úscript_object_trackerrE   ÚtypeÚsymnode_trackerÚtypingÚcastÚ_PySymProxyTypeÚsympyrˆ   ÚexprÚSymbolÚsympy_expr_tracker)r�   rŽ   r�   r¡   s       rV   r�   r�   Ä   só   € ô
 ‡I�IÐ)¨3´°3³¸Ô?Ü�#”vÔô ˜%¤Ô.Ð.Ð.Ø%*ˆ×Ñ˜cÒ"Ü	�CÔ*Ô	,ä˜%¤Ô'Ð'Ð'Ø,1ˆ×$Ñ$ SÒ)ô ˜#œ|Ô,Ð7¬d°3«iÓ7Ð,Ø�f×,Ñ,Ñ,Ü*0¯+©+´oÀuÓ*MˆF×"Ñ" 3Ñ'ó ä˜#Ÿ(™(Ÿ-™-¨¯©Ô6Ø;@�×)Ñ)¨#¯(©(¯-©-Ò8ð 7ð# -rX   c                ó~   — t        | t        t        f«      sJ t        | «      «       ‚t	        t        | |dd„ «      «      S )NFc                 ó   — y©NTrh   )r[   s    rV   rW   z has_proxy_slot.<locals>.<lambda>ò   s   � rX   )r‡   r   r<   rœ   ÚboolÚget_proxy_slot©r�   rŽ   s     rV   Úhas_proxy_slotr«   ð   s6   € Ü�cœF¤GÐ,Ô-Ð8¬t°C«yÓ8Ð-Ü”˜s F¨E±>ÓBÓCÐCrX   c                 ó   — y rS   rh   rª   s     rV   r©   r©   ø   ó   € ð
 rX   c                 ó   — y rS   rh   ©r�   rŽ   Údefaults      rV   r©   r©      ó   € ð rX   c                 ó   — y rS   rh   ©r�   rŽ   r°   Ú	transforms       rV   r©   r©   	  ó   € ð rX   c                 ó   — y rS   rh   rª   s     rV   r©   r©     r­   rX   c                 ó   — y rS   rh   r¯   s      rV   r©   r©     r±   rX   c                 ó   — y rS   rh   r³   s       rV   r©   r©   $  rµ   rX   c                 ó   — y rS   rh   rª   s     rV   r©   r©   .  r­   rX   c                 ó   — y rS   rh   r¯   s      rV   r©   r©   6  r±   rX   c                 ó   — y rS   rh   r³   s       rV   r©   r©   ?  rµ   rX   c                ó   — | S rS   rh   ©ra   s    rV   rW   rW   P  s   €  A€ rX   c                óü  — t        | t        «      r|j                  }nIt        | t        «      r|j                  }n,t        | t
        «      sJ t        | «      «       ‚|j                  }| |vr„t        | t
        «      rF| j                  j                  |j                  v r$|j                  | j                  j                     }n3t        |t        «      rt        | › dt        | «      › d|› �«      ‚|S ||    } ||«      }|S )Nz (z)is not tracked with proxy for )r‡   r   r™   rš   r›   rE   rœ   r�   rˆ   r¢   r¤   rx   ÚRuntimeErrorr˜   )r�   rŽ   r°   r´   ÚtrackerÚvalueÚress          rV   r©   r©   L  sá   € ô �#”vÔØ×'Ñ'‰Ü	�CÔ)Ô	*Ø×.Ñ.‰ä˜#œ|Ô,Ð7¬d°3«iÓ7Ð,Ø×(Ñ(ˆà
�'Ñä�cœ<Ô(¨S¯X©X¯]©]¸f×>WÑ>WÑ-WØ×-Ñ-¨c¯h©h¯m©mÑ<‰Eä˜'¤:Ô.Ü"Ø�e˜2œb ›g˜YÐ&EÀfÀXÐNóð ð ˆNà˜‘ˆÙ
�EÓ
€CØ€JrX   c                ón   — t        | t        «      rt        | j                  | «      S | j	                  «       S rS   )r‡   r!   r    Ú	fake_modeÚdetach)r…   s    rV   Úsnapshot_fakerÆ   k  s+   € ô �#”zÔ"Ü˜3Ÿ=™=¨#Ó.Ð.à�z‰z‹|ÐrX   Ú_ExtractValType)rÇ   .c                ó>  — t        | «      rt        | «      S t        | t        «      r| S t        | t        «      r| S t        | t
        «      r| S t        | t        t        f«      r(| j                  | D �cg c]  }t        |«      ‘Œ c}«      S t        | t        «      r-| j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}S t        | t        «      rz| j                  smddlm}  || «      }|st!        d¬«      }|5  t#        j$                  | j&                  | j)                  «       | j*                  | j,                  ¬«      cd d d «       S y t        | t.        t0        t2        f«      r| S | €y t5        j6                  | «       y c c}w c c}}w # 1 sw Y   Œ*xY w)Nr   )Údetect_fake_modeT)Úallow_fallback_kernels)ÚdeviceÚdtype)r#   rÆ   r‡   rE   rš   r;   rT   rZ   Ú	__class__Úextract_valÚdictÚitemsr   Ú	is_sparseÚtorch._guardsrÉ   r"   ÚtorchÚempty_stridedÚshapeÚstriderË   rÌ   ÚintÚfloatr¨   Útyping_extensionsÚassert_never)r…   ra   ÚkÚvrÉ   Úfake_tensor_modes         rV   rÎ   rÎ   …  sJ  € Üˆs„|Ü˜SÓ!Ð!Ü	�CœÔ	&Øˆ
Ü	�CÔ)Ô	*Øˆ
Ü	�CœÔ	'Øˆ
Ü	�Cœ$¤˜Ô	'Ø�}‰}°cÖ:°œk¨!�nÒ:Ó;Ð;Ü	�CœÔ	Ø.1¯i©i«k×:¡d a¨�”;˜q“>Ñ!Ó:Ð:Ü	�CœÔ	 Ø�}Š}õ 7á/°Ó4ÐÙ#Ü#1ÈÔ#NÐ Ø!ñ Ü×*Ñ*Ø—I‘I˜sŸz™z›|°C·J±JÀcÇiÁiô÷ñ ð
 Ü	�Cœ#œu¤dÐ+Ô	,Øˆ
Ø	ˆØä×"Ñ" 3Õ'ùò7 ;ùã:÷ð ús   Á2FÂ.FÄAFÆFT©Úenablec             #  ób   K  — | j                   }|| _         	 d–— || _         y# || _         w xY w­w)a{  
    Enable thunkification inside the context manager.  Thunkification prevents
    SymNode computation from directly being traced into an FX graph; instead,
    the compute is only added to the graph if it is actually used.  This helps
    us track SymNode compute when it is computed (since we need /something/
    to put in the tracker) even if it is unlikely to be used.
    N)Úenable_thunkify)rŽ   rß   Úolds      rV   Ú_enable_thunkifyrã   ­  s3   è ø€ ð ×
 Ñ
 €CØ#€FÔð%Ûà!$ˆÕø ˆÕüs   ‚/—# ›/£	,¬/c               #  óŽ   K  — t        «       } | �%t        | j                  d¬«      5  d–— ddd«       yd–— y# 1 sw Y   yxY w­w)a[  Within a context, disable thunkification.  See :func:`maybe_enable_thunkify`
    for more details.  This is helpful if you have a wrapper function which
    you want to enable thunkification on, but in some segment on the inside (say,
    the original user function), you want to disable thunkification as you know
    it is not needed there.
    NFrÞ   ©rG   rã   rŽ   ©Ú
proxy_modes    rV   rJ   rJ   À  sG   è ø€ ô  Ó!€JØÐÜ˜j×/Ñ/¸Ô>ñ 	Û÷	ð 	ô 	÷	ð 	üs   ‚$A¦9«A¹A¾Ac               #  óŠ   K  — t        «       } | �#t        | j                  «      5  d–— ddd«       yd–— y# 1 sw Y   yxY w­w)a3  Within this context manager, if you are doing make_fx tracing, we will thunkify
    all SymNode compute and avoid tracing it into the graph unless it is actually needed.
    You should prefer to avoid using this as much as possible, as lazy evaluation of
    SymNode tracing can lead to long chains of thunks which will stack overflow
    if you evaluate them.  However, this is currently sometimes necessary as there
    are buggy parts of PT2 which will fail with "s0 is not tracked with proxy" error
    due to insufficient tracing of SymNode computation.
    Nrå   ræ   s    rV   rI   rI   Ð  sE   è ø€ ô  Ó!€JØÐÜ˜j×/Ñ/Ó0ñ 	Û÷	ð 	ô 	÷	ð 	üs   ‚"A¤7©A·A ¼Ac                óx  — t        |«      | j                  j                  d<   t        | j                  «      5  t        |«      r#t        |«      | j                  j                  d<   n>t        |t        «      r.|j                  s"t        |«      | j                  j                  d<   d d d «       | S # 1 sw Y   | S xY w)Nr…   Útensor_meta)
rÎ   rˆ   r�   rã   rŽ   r#   r-   r‡   r   rÑ   )r�   r…   s     rV   Úset_metarë   é  s‹   € Ü(¨Ó-€E‡J�J‡O�O�EÑä	˜%Ÿ,™,Ó	'ñ Kä�3Œ<Ü-EÀcÓ-JˆE�J‰J�O‰O˜MÒ*Ü˜œVÔ$¨S¯]ª]Ü-EÀcÓ-JˆE�J‰J�O‰O˜MÑ*÷Kð €L÷Kð €Lús   ¸A-B/Â/B9c                óŒ   ‡— | j                   r"t        t        j                  |g|¢­i |¤Ž«      S  ||i |¤ŽŠt        ˆfd„«      S )zT
    Delays computation of f until it's called again
    Also caches the result
    c                 ó   •— ‰ S rS   rh   )Úrs   €rV   rW   zthunkify.<locals>.<lambda>   s   ø€ ˜Q€ rX   )rá   r5   Ú	functoolsÚpartial)rŽ   ÚfÚargsÚkwargsrî   s       @rV   Úthunkifyrô   õ  sH   ø€ ð ×ÒÜ”Y×&Ñ& qÐ:¨4Ò:°6Ñ:Ó;Ð;áˆtÐ�vÑˆÜ“YÓÐrX   c               ó¢  ‡‡— 	 	 	 	 	 	 	 	 	 	 dˆfd„}t        | j                  «      D ]  \  }} ||ˆˆfd„|«       Œ t        | «      s/t        | j                  «       «      D ]  \  }} ||ˆˆfd„|«       Œ  || j	                  «       ˆˆfd„«       t        | «      s || j                  «       ˆˆfd„«       t        | ‰t        ‰|«      «       y )Nc           
     óº   •— t        |«      sJ ‚t        | t        «      r1t        ‰«      5  t	        | ‰t        ‰|| g|¢­i |¤Ž«       d d d «       y y # 1 sw Y   y xY wrS   )Úcallabler‡   r   rã   r�   rô   )Úouter_sÚproxy_callablerò   ró   rŽ   s       €rV   Útry_set_proxy_slotz(track_tensor.<locals>.try_set_proxy_slot  sh   ø€ ô ˜Ô'Ð'Ð'Ü�gœvÔ&Ü! &Ó)ñ ÜØØÜ˜V ^°WÐN¸tÒNÀvÑNô÷ð ð '÷ð ús   ªAÁAc                óœ   •— t        ‰j                  dt        j                  j                  j
                  j                  ‰|fi «      | «      S ©NÚcall_function)rë   Úcreate_proxyrÓ   ÚopsÚatenÚsym_sizer×   ©ra   r`   r�   rŽ   s     €€rV   rW   ztrack_tensor.<locals>.<lambda>  s@   ø€ œØ×#Ñ#Ø#¤U§Y¡Y§^¡^×%<Ñ%<×%@Ñ%@À5È!À*Èbóð ó	€ rX   c                óœ   •— t        ‰j                  dt        j                  j                  j
                  j                  ‰|fi «      | «      S rü   )rë   rþ   rÓ   rÿ   r   Ú
sym_strider×   r  s     €€rV   rW   ztrack_tensor.<locals>.<lambda>*  sB   ø€ œXØ×'Ñ'Ø'¬¯©¯©×)BÑ)B×)FÑ)FÈÐPQÈ
ÐTVóð ó	€ rX   c                óš   •— t        ‰j                  dt        j                  j                  j
                  j                  ‰fi «      | «      S rü   )rë   rþ   rÓ   rÿ   r   Ú	sym_numelr°   ©ra   r�   rŽ   s    €€rV   rW   ztrack_tensor.<locals>.<lambda>5  s>   ø€ ”(Ø×ÑØ¤§¡§¡×!9Ñ!9×!AÑ!AÀEÀ8ÈRóð ó	
€ rX   c                óš   •— t        ‰j                  dt        j                  j                  j
                  j                  ‰fi «      | «      S rü   )rë   rþ   rÓ   rÿ   r   Úsym_storage_offsetr°   r  s    €€rV   rW   ztrack_tensor.<locals>.<lambda>?  sA   ø€ ”hØ×#Ñ#Ø#Ü—I‘I—N‘N×5Ñ5×=Ñ=Ø�HØó	ð ó€ rX   )
rø   r@   rù   z+Callable[Concatenate[PySymType, _P], Proxy]rò   ú_P.argsró   ú	_P.kwargsÚreturnÚNone)r]   rÕ   r%   rÖ   ÚnumelÚstorage_offsetr�   rŠ   )Útensorr�   ÚconstantrŽ   rú   r`   Úss    ` `   rV   Útrack_tensorr    sö   ù€ ðØðàCðð ðð ð	ð
 
õô( ˜&Ÿ,™,Ó'ò 

‰ˆˆ1ÙØôð õ		
ð

ô ˜Ô Ü˜fŸm™m›oÓ.ò 
	‰DˆAˆqÙØôð õ	ð
	ñ Ø�‰‹ô	
ôô ˜Ô ÙØ×!Ñ!Ó#ôô	
ô �6˜6¤<°°xÓ#@ÕArX   Ú_NestedProxysÚ_NestedTensorsc               óT   ‡‡— t        | |«       	 	 	 	 	 	 	 	 dˆˆfd„Š ‰| ||«       | S )Nc           	     ó¾  •‡— t        | t        «      rBt        ‰t        «      sJ ‚|�t        |t        «      sJ ‚t        | ‰‰|¬«       t	        ‰| «       y t        | t
        «      r9t        ‰t        «      sJ ‚t	        ‰| «       t        | ‰t        ‰ˆfd„«      «       y t        | t        «      r,t        ‰t        «      sJ ‚t        | ‰‰«       t	        ‰| «       y t        | t        t        f«      rXt        ‰t        j                  «      rt	        ‰| «       	 	 	 	 	 	 dd„}t        | «      D ]  \  }} ‰	|‰|    |||«      «       Œ y t        | t        «      rP|�J ‚t        ‰t        j                  «      rt	        ‰| «       | j                  «       D ]  \  }} ‰	|‰|   d «       Œ y t        | t        «      r&t        ‰t        «      sJ ‚t	        ‰| «       ‰| _        y y )N)rŽ   r  c                 ó   •— ‰ S rS   rh   ©r�   s   €rV   rW   z<track_tensor_tree.<locals>.wrap_with_proxy.<locals>.<lambda>v  s   ø€ ¸u€ rX   c                óB   — | €y t        | t        t        f«      sJ ‚| |   S rS   )r‡   rT   rZ   )ÚcÚidxs     rV   Úget_constantz@track_tensor_tree.<locals>.wrap_with_proxy.<locals>.get_constant€  s)   € ð �9Øä% a¬$´¨Ô7Ð7Ð7Ø˜S™6�MrX   )r  úOptional[_NestedTensors]r  r×   r  r  )r‡   r   r'   r  rë   rE   r�   rô   rš   rZ   rT   Úfxr]   rÏ   rÐ   r;   r�   )
Úer�   r  r  r  ÚeeÚkeyr…   rŽ   Úwrap_with_proxys
    `      €€rV   r#  z*track_tensor_tree.<locals>.wrap_with_proxyj  s¸  ù€ ô �aœÔ Ü˜e¤UÔ+Ð+Ð+ØÐ#¤z°(¼FÔ'CÐCÐCÜ˜˜E¨&¸8ÕDÜ�U˜AÕÜ˜œ<Ô(Ü˜e¤UÔ+Ð+Ð+ä�U˜AÔÜ˜1˜f¤h¨v³}Ó&EÕFÜ˜Ô+Ô,Ü˜e¤UÔ+Ð+Ð+Ü˜1˜f eÔ,Ü�U˜AÕÜ˜œE¤4˜=Ô)ä˜%¤§¡Ô*Ü˜ Ô"ð"Ø+ð"Ø25ð"à)ó"ô % Q›<ò M‘��Rñ    E¨#¡J±¸XÀsÓ0KÕLñMô
 ˜œ4Ô ð Ð#Ð#Ð#ä˜%¤§¡Ô*Ü˜ Ô"àŸG™G›Iò 7‘��SÙ  U¨3¡Z°Õ6ñ7ô ˜œ=Ô)Ü˜e¤UÔ+Ð+Ð+Ü�U˜AÔØˆA�Gð rX   )r   Úobjectr�   r  r  r  r  r  )Ú_set_unbacked_bindings)Ú	inner_resÚ	proxy_resr  rŽ   r#  s      `@rV   Útrack_tensor_treer(  T  sI   ù€ ô( ˜9 iÔ0ð:Øð:Ø'ð:Ø3Kð:à	ö:ñx �I˜y¨(Ô3àÐrX   c                  ó"   — e Zd ZU ded<   ded<   y)rŠ   r'   r�   úOptional[Tensor]r  Nr‚   rh   rX   rV   rŠ   rŠ   «  s   … àƒLØÔrX   c                ó   ‡ — dˆ fd„}|S )Nc                óÞ  •— | j                   }|j                  �|j                  S | j                   j                  j                  r}t	        | t
        «      rt        | j                   j                  «      S t	        | t        «      rt        | j                   j                  «      S t        | j                   j                  «      S t	        | t        «      sJ ‚t        | ‰«      j                  «       S rS   )rˆ   r  r¢   Ú	is_numberr‡   r   r¨   r   r×   rØ   rE   r©   Úforce)r   ÚnrŽ   s     €rV   Úinnerzfetch_sym_proxy.<locals>.inner´  s¤   ø€ Ø�F‰FˆØ�:‰:Ð!Ø—:‘:ÐØ�6‰6�;‰;× Ò Ü˜!œWÔ%Ü˜AŸF™FŸK™KÓ(Ð(Ü˜AœvÔ&Ü˜1Ÿ6™6Ÿ;™;Ó'Ð'Ü˜Ÿ™Ÿ™Ó%Ð%ä˜a¤Ô.Ð.Ð.ä! ! VÓ,×2Ñ2Ó4Ð4rX   )r   r~   r  zUnion[int, bool, float, Proxy]rh   )rŽ   r0  s   ` rV   Úfetch_sym_proxyr1  ±  s   ø€ õ5ð €LrX   c                 ó   — y rS   rh   ©rŽ   Úts     rV   Úfetch_object_proxyr5  Æ  r‘   rX   c                 ó   — y rS   rh   r3  s     rV   r5  r5  Ë  r“   rX   c                 ó   — y rS   rh   r3  s     rV   r5  r5  Ò  r“   rX   c                ó   — t        || |«      S rS   ©r©   r3  s     rV   r5  r5  Ù  s   € ô ˜!˜V QÓ'Ð'rX   ÚProxyTorchDispatchModec                ó$  — |j                   s|j                  syt        | t        j                  j
                  «      r&t        j                  j                  | j                  vryt        t        t        |j                  j                  j                  «      «      «      }|j                  j!                  d«      }t        |t        j"                  «      r,|j$                  t        j&                  t        j(                  fvryd|j                  d<   y)zd
    Records pointwise operators in user program (non decomposed) that were output in fp16/bf16
    Nr…   TÚlow_precision_pointwise_barrier)Údecomp_layersÚemulate_precision_castsr‡   rÓ   Ú_opsr>   ÚTagÚ	pointwiseÚtagsÚnextÚiterÚreversedrŽ   ÚgraphÚnodesr�   Úgetr   rÌ   Úbfloat16Úfloat16)Úfuncrç   Ú	last_noder4  s       rV   Ú_maybe_record_pointwise_barrierrM  â  sÁ   € ð ×Ò z×'IÒ'IØô �tœUŸZ™Z×2Ñ2Ô3Ü�9‰9×Ñ d§i¡iÑ/àä”Tœ( :×#4Ñ#4×#:Ñ#:×#@Ñ#@ÓAÓBÓC€IØ�‰×Ñ˜5Ó!€AÜ�aœŸ™Ô&¨!¯'©'Ü�‰Ü�‰ð:ñ +ð 	à8<€I‡N�NÐ4Ò5rX   c           	     óÊ  ‡ ‡‡— g Št        j                  ||f«      \  }}dˆ ˆfd„Št        ˆfd„|D «       «      st        j	                  d‰«       t
        S t        ‰ |||«      }|t
        urt        |‰ «       |S |s¼|t        j                  j                  j                  j                  t        j                  j                  j                  j                  t        j                  j                  j                  j                  fvr1‰ 5   |j                  |i |¤Ž}|t
        ur|cd d d «       S 	 d d d «       |t        j                  j                  j                   j                  u r"‰ 5  |d   dk7  j#                  «       cd d d «       S ‰ j$                  }|D �	cg c]&  }	t'        |	t(        t*        f«      rt-        ||	«      n|	‘Œ( }
}	t/        d„ |
D «       «       xr t/        d„ |D «       «       }t        j0                  j2                  |j4                  v r›|r`|
D �cg c]   }t'        |t6        «      r|j8                  n|‘Œ" }}t        j:                  ||«      \  }}t=        «       5   ||i |¤Žcd d d «       S ‰ j>                  r-t        j@                  t(        d„ ||f«      rtC        d|› d	�«      ‚|
D �cg c]   }t'        |t6        «      r|jD                  n|‘Œ" }}|D �cg c]/  }t'        |tF        «      r tI        ‰ j$                  «      |«      n|‘Œ1 }}t        j:                  ||«      \  }}|t        j                  j                  jJ                  j                  u r.t        j                  j                  jL                  j                  }‰ j$                  jO                  d
|||‰ j$                  jP                  jS                  |jT                  jV                  «      ¬«      }tY        ‰ j$                  «      5   ||i |¤Ž}d d d «       t/        d„ |
D «       «      }d }dd„}|t        j                  j                  jL                  j                  u rjj[                  «       t\        k  rSt=        «       5  t'        |d   t^        t(        f«      sJ ta        |d   «      «       ‚|d   jc                  «       }d d d «       n§t        j0                  jd                  |j4                  vr|r}|r{t        j@                  t(        |«      r`t=        «       5  |
D �cg c]   }t'        |t6        «      r|j8                  n|‘Œ" }}t        j:                  ||«      \  }} ||i |¤Ž}d d d «       nd }tg        |||¬«       t        |‰ «       |S # 1 sw Y   �ŒQxY w# 1 sw Y   �ŒxY wc c}	w c c}w # 1 sw Y   �Œ6xY wc c}w c c}w # 1 sw Y   �Œ»xY w# 1 sw Y   ŒnxY wc c}w # 1 sw Y   ŒxY w)Nc                óþ   •— t        | «      t        v xs t        | ‰j                  «      }‰j                  r*|xs& t        | «      t
        j                  j                  fv }|s‰j                  t        | «      «       |S rS   )	rœ   ÚHANDLED_TYPESr«   rŽ   Ú_allow_fake_constantrÓ   Ú_subclassesr!   Úappend)ra   rî   rç   Úunrecognized_typess     €€rV   Úcan_handle_tensorz%proxy_call.<locals>.can_handle_tensor  sh   ø€ Ü�‹G”}Ð$ÒL¬°q¸*×:KÑ:KÓ(LˆØ×*Ò*ØÒ?”T˜!“W¤×!2Ñ!2×!=Ñ!=Ð ?Ð?ˆAÙØ×%Ñ%¤d¨1£gÔ.ØˆrX   c              3  óP   •K  — | ]  }t        |t        «      sŒ ‰|«      –— Œ y ­wrS   )r‡   r   )ri   ra   rU  s     €rV   rj   zproxy_call.<locals>.<genexpr>  s    øè ø€ ÒW¨ÄÈAÌvÕAVÑ  ×#ÑWùs   ƒ&™&zEProxyTensorMode tensors without proxy had unrecognized subclasses: %sr   c              3  óX   K  — | ]"  }t        |t        «      r|j                  d u –— Œ$ y ­wrS   ©r‡   rŠ   r  ©ri   r4  s     rV   rj   zproxy_call.<locals>.<genexpr>9  s+   è ø€ ò 
àÜ˜!œ\Ô*ð �J‰J˜$Ôñ
ùó   ‚(*c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrS   )r‡   rE   )ri   ra   s     rV   rj   zproxy_call.<locals>.<genexpr>@  s   è ø€ ÒJ°A”J˜q¤,×/ÑJùs   ‚c                ó   — t        | «       S rS   )r#   ©r4  s    rV   rW   zproxy_call.<locals>.<lambda>S  s   € ¤'¨!£*˜n€ rX   zHIt appears that you're trying to get value out of a tracing tensor with zÌ - erroring out! It's likely that this is caused by data-dependent control flow or similar.  It may be possible to trace this with dynamic shapes; try setting tracing_mode='symbolic' in your make_fx call.rý   )Únamec              3  óX   K  — | ]"  }t        |t        «      r|j                  d u–— Œ$ y ­wrS   rX  rY  s     rV   rj   zproxy_call.<locals>.<genexpr>©  s+   è ø€ ò àÜ�aœÔ&ð 	
�
‰
˜$ÔñùrZ  c                ó0   — | j                  «       t        k  S rS   )r  ÚCONSTANT_NUMEL_LIMITr]  s    rV   Útensor_numel_in_limitz)proxy_call.<locals>.tensor_numel_in_limit±  s   € Ø�w‰w‹yÔ0Ñ0Ð0rX   ©r  rŽ   )ra   r   r  r¨   )r4  r   r  r¨   )4r^   Útree_flattenÚallÚnot_implemented_logr—   ÚNotImplementedÚmaybe_handle_decomprM  rÓ   rÿ   r   Úsizer°   rÖ   r  rv   Ú
is_nonzeroÚitemrŽ   r‡   r   rš   r5  Úanyr@  Údata_dependent_outputrB  rŠ   r  Útree_unflattenr$   Ú_error_on_data_dependent_opsÚtree_all_onlyr¿   r�   rE   r1  Ú
lift_freshÚlift_fresh_copyrþ   rF  Ú_target_to_strÚoverloadpacketrz   rã   r  ra  r'   rœ   ÚcloneÚnondeterministic_seededr(  )rç   rK  Úpre_dispatchrò   ró   Úflat_args_kwargsÚspecrî   rŽ   ra   Úf_flat_args_kwargsÚall_constantr4  Úconst_flat_args_kwargsÚ
const_argsÚconst_kwargsr   Úproxy_flat_args_kwargsÚ
proxy_argsÚproxy_kwargsÚ	proxy_outÚoutÚany_constantr  rb  rU  rT  s   `                        @@rV   Ú
proxy_callr…  ü  s¯  ú€ ð &(ÐÜ#×0Ñ0°$¸°Ó@ÑÐ�döô ÓWÐ-=ÔWÔWÜ×!Ñ!ØSØô	
ô Ðä˜J¨¨d°FÓ;€AØ”ÑÜ'¨¨jÔ9Øˆñ ˜DÜ�	‰	�‰×Ñ×#Ñ#Ü�	‰	�‰×Ñ×%Ñ%Ü�	‰	�‰×%Ñ%×-Ñ-ð)ñ ð
 ñ 	Ø�—‘ Ð/¨Ñ/ˆAØœÑ&Ø÷	ñ 	à&÷	ð
 Œu�y‰y�~‰~×(Ñ(×0Ñ0Ñ0Øñ 	)Ø˜‘G˜q‘L×&Ñ&Ó(÷	)ñ 	)ð ×Ñ€Fð "öð ô ˜!œfÔ&6Ð7Ô8ô ˜v qÔ)àñðÐð ô ñ 
à'ô
ó 
ð 	
ò 	Kô ÑJÐ9IÔJÓJÐJð ô ‡y�y×&Ñ&¨$¯)©)Ñ3áð ,ö&àô )¨¬LÔ9�—
’
¸qÑ@ð&Ð"ð &ô (.×'<Ñ'<Ø&¨ó(Ñ$ˆJ˜ô (Ó)ñ 9Ù˜ZÐ8¨<Ñ8÷9ñ 9ð
 ×2Ò2´v×7KÑ7KÜÑ,¨t°V¨nô8
ô ØZÐ[_ÐZ`ð a(ð (óð ð @RöØ:;”:˜a¤Ô.ˆ�Š°AÑ5ðÐð ð
 (öàô 3=¸QÄÔ2MÐ	+Œ˜×*Ñ*Ó	+¨AÔ	.ÐSTÑ	TðÐð ô  &×4Ñ4Ð5KÈTÓRÑ€J�ðF Œu�y‰y�~‰~×(Ñ(×0Ñ0Ñ0Ü�y‰y�~‰~×-Ñ-×5Ñ5ˆà×!Ñ!×.Ñ.ØØØØØ×Ñ×$Ñ$×3Ñ3°D×4GÑ4G×4PÑ4PÓQð /ó €Iô 
˜*×+Ñ+Ó	,ñ $Ù�DÐ#˜FÑ#ˆ÷$ô0 ñ à#ôó €Lð €Hó1ð 	”—	‘	—‘×.Ñ.×6Ñ6Ñ6Ø�I‰I‹KÔ/Ò/ä#Ó%ñ 	'Ü˜d 1™g¬¬v Ô7ÐF¼¸dÀ1¹g»ÓFÐ7Ø˜A‘w—}‘}“ˆH÷	'ð 	'ô 	�	‰	×)Ñ)°·±Ñ:ÙÙÜ× Ñ ¤Ð)>ÀÔDô $Ó%ñ 	9ð ,ö&àô )¨¬LÔ9�—
’
¸qÑ@ð&Ð"ð &ô (.×'<Ñ'<Ø&¨ó(Ñ$ˆJ˜ñ ˜ZÐ8¨<Ñ8ˆH÷	9ð 	9ð ˆä�c˜9¨xÀÕGÜ# D¨*Ô5Ø€J÷c	ñ 	ú÷	)ñ 	)üòùò4&÷9ñ 9üòùò÷d$ñ $ú÷T	'ð 	'üò&÷	9ð 	9úss   Ä
V Å+VÆ+VÈ%VÉ&V$Ê5%V1Ë 4V6Ï9	V;Ñ3A WÔWÔ%WÔ5#WÖ V
ÖVÖ$V.Ö;W×W×W×W"c                  óV   — e Zd ZdZd
d„Zdd„Zdd„Zdd„Z	 d	 	 	 	 	 dd„Zdd„Z	dd	„Z
y)Ú_SymNodeDictzM
    Wrapper around a dictionary that will hash SymInts with their nodes
    c                ó   — i | _         y rS   )Úsym_node_dict©Úselfs    rV   Ú__init__z_SymNodeDict.__init__Û  s
   € Ø?AˆÕrX   c                ó6   — || j                   |j                  <   y rS   ©r‰  rˆ   )r‹  r"  rÁ   s      rV   Ú__setitem__z_SymNodeDict.__setitem__Þ  s   € Ø',ˆ×Ñ˜3Ÿ8™8Ò$rX   c                ó4   — | j                   |j                     S rS   rŽ  ©r‹  r"  s     rV   Ú__getitem__z_SymNodeDict.__getitem__á  s   € Ø×!Ñ! #§(¡(Ñ+Ð+rX   c                ó2   — |j                   | j                  v S rS   )rˆ   r‰  r‘  s     rV   Ú__contains__z_SymNodeDict.__contains__ä  s   € Ø�x‰x˜4×-Ñ-Ð-Ð-rX   Nc                óN   — | j                   j                  |j                  |«      S rS   )r‰  rH  rˆ   )r‹  r"  r°   s      rV   rH  z_SymNodeDict.getç  s!   € ð
 ×!Ñ!×%Ñ% c§h¡h°Ó8Ð8rX   c                ó   — t         ‚rS   )ÚNotImplementedErrorrŠ  s    rV   Ú__iter__z_SymNodeDict.__iter__î  s   € Ü!Ð!rX   c                ó,   — t        | j                  «      S rS   )Úlenr‰  rŠ  s    rV   Ú__len__z_SymNodeDict.__len__ñ  s   € Ü�4×%Ñ%Ó&Ð&rX   ©r  r  )r"  r~   rÁ   r    r  r  )r"  r~   r  r    )r"  r~   r  r¨   rS   )r"  r~   r°   zOptional[_PySymProxyType]r  r    )r  r   )r  r×   )rz   r{   r|   Ú__doc__rŒ  r�  r’  r”  rH  r˜  r›  rh   rX   rV   r‡  r‡  Ö  sJ   „ ñóBó-ó,ó.ð DHð9Øð9Ø'@ð9à	ó9ó"ô'rX   r‡  c                  ó  ‡ — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   dZded<   dˆ fd„Z	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zdˆ fd„Ze	dd„«       Z
e	dd„«       Z
e		 	 	 	 dd„«       Z
dd„Z
	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 d ˆ fd„Zˆ xZS )!rA   ú+MutableMapping[_AnyScriptObjectType, Proxy]r›   r‡  r�   údict[sympy.Symbol, object]r¤   ú$MutableMapping[Tensor, _ProxyTensor]r™   údict[OpOverload, int]Útorch_fn_countsFr¨   rá   c                óÖ   •— t         ‰| �  d¬«       t        «       | _        t	        «       | _        t        d t        ¬«      | _        t        «       | _
        d | _        i | _        d| _        y )Nrh   )Úautowrap_modules©rÏ   Úref_typeF)ÚsuperrŒ  r9   r™   r‡  r�   r8   r7   r›   rÏ   r¤   Útorch_fn_metadatar£  rá   )r‹  rÍ   s    €rV   rŒ  zPythonKeyTracer.__init__ý  sb   ø€ Ü‰Ñ¨"ÐÔ-Ü5Ó7ˆÔÜ+›~ˆÔÜ%8Ø¤ô&
ˆÔ"ô #'£&ˆÔð "&ˆÔð  "ˆÔØ$ˆÕrX   c                ó   —  ||i |¤ŽS rS   rh   )r‹  ÚmÚforwardrò   ró   s        rV   Úcall_modulezPythonKeyTracer.call_module  s   € ñ ˜Ð' Ñ'Ð'rX   c                ó   — |S rS   rh   )r‹  ÚattrÚattr_valÚparameter_proxy_caches       rV   ÚgetattrzPythonKeyTracer.getattr  s	   € ð ˆrX   c                óÖ  •— t        |t        j                  j                  «      rx| j                  j                  «       D ]  \  }}||u sŒ| j                  d|di «      c S  | j                  d«      }t        | j                  ||«       | j                  d|di «      S t        |t        «      r.|j                  j                  €J ‚|j                  j                  S t        ‰| �5  |«      S )NÚget_attrrh   Ú_param_constant)r‡   rÓ   ÚnnÚ	ParameterÚrootÚnamed_parametersÚcreate_nodeÚget_fresh_qualnameÚsetattrrE   rˆ   r  r¨  Ú
create_arg)r‹  Úar/  ÚpÚqualnamerÍ   s        €rV   r½  zPythonKeyTracer.create_arg  sÍ   ø€ Ü�aœŸ™×+Ñ+Ô,ØŸ	™	×2Ñ2Ó4ò C‘��1Ø˜’6Ø×+Ñ+¨J¸¸2¸rÓBÒBðCð ×.Ñ.Ð/@ÓAˆHÜ�D—I‘I˜x¨Ô+à×#Ñ# J°¸"¸bÓAÐAÜ˜œ<Ô(Ø—6‘6—?‘?Ð.Ð.Ð.Ø—6‘6—?‘?Ð"Ü‰wÑ! !Ó$Ð$rX   c                 ó   — y rS   rh   ©r‹  r   s     rV   Úunwrap_proxyzPythonKeyTracer.unwrap_proxy.  ó   € àrX   c                 ó   — y rS   rh   rÂ  s     rV   rÃ  zPythonKeyTracer.unwrap_proxy2  rÄ  rX   c                 ó   — y rS   rh   rÂ  s     rV   rÃ  zPythonKeyTracer.unwrap_proxy6  s   € ð 	rX   c                ó¼   — t        |t        «      rt        || |d„ «      S t        |t        «      rt        || |d„ «      S t        |t        «      rt        || |«      S |S )Nc                ó   — | j                   S rS   r  r½   s    rV   rW   z.PythonKeyTracer.unwrap_proxy.<locals>.<lambda>>  s
   € ¸¿¹€ rX   c                ó"   — | j                  «       S rS   )r.  )r   s    rV   rW   z.PythonKeyTracer.unwrap_proxy.<locals>.<lambda>@  s   € ¸¿¹»	€ rX   )r‡   r   r©   rE   rš   rÂ  s     rV   rÃ  zPythonKeyTracer.unwrap_proxy<  sY   € Ü�aœÔ Ü! ! T¨1Ñ.?Ó@Ð@Ü˜œ<Ô(Ü! ! T¨1Ñ.AÓBÐBÜ˜Ô+Ô,Ü! ! T¨1Ó-Ð-àˆHrX   c                ó\  •— t         ‰| �  ||||||«      }dd„}t        |t        j                  j
                  j                  t        j                  j
                  j                  f«      r@t        j                  j                  j                  ||f|«      \  }	}
|	|
f|j                  d<   |S )Nc                ó  — t        | t        j                  j                  «      rd| j                  vry | j                  d   }t        |t        j
                  «      rt        |t        «      sy t        | j                  d   «      S )Nr…   )r‡   rÓ   r  ÚNoder�   r   r!   rÎ   )rÜ   r…   s     rV   Úmap_fnz+PythonKeyTracer.create_node.<locals>.map_fnQ  s^   € Ü˜a¤§¡§¡Ô/°5ÀÇÁÑ3FØØ—&‘&˜‘-ˆCô ˜#œuŸ|™|Ô,´ZÀÄZÔ5PØÜ˜qŸv™v e™}Ó-Ð-rX   Úarg_kwarg_vals)rÜ   r   r  zOptional[_ExtractValType])r¨  rº  r‡   rÓ   Ú_higher_order_opsÚtriton_kernel_wrapÚTritonKernelWrapperFunctionalÚTritonKernelWrapperMutationr  rˆ   Úmap_aggregater�   )r‹  ÚkindÚtargetrò   ró   r^  Ú	type_exprrˆ   rÍ  Úarg_inpÚ	kwarg_inprÍ   s              €rV   rº  zPythonKeyTracer.create_nodeF  s�   ø€ ô ‰wÑ" 4¨°°v¸tÀYÓOˆó	.ô Øä×'Ñ'×:Ñ:×XÑXÜ×'Ñ'×:Ñ:×VÑVðô
ô "'§¡§¡×!<Ñ!<¸dÀF¸^ÈVÓ!TÑˆG�YØ+2°IÐ*>ˆD�I‰IÐ&Ñ'àˆrX   rœ  )
r«  r.   r¬  zCallable[..., Any]rò   ztuple[Any, ...]ró   zdict[str, Any]r  r   ©r¯  Ústrr°  r$  r±  zdict[str, Proxy]r  r$  )r¾  r$  r  úfx.node.Node)r   r   r  zUnion[Proxy, Tensor])r   r~   r  zUnion[Proxy, PySymType])r   Ú_AnyScriptObjectTyper  ú"Union[Proxy, _AnyScriptObjectType])r   rN   r  r$  )NN)rÔ  rÚ  rÕ  r,   rò   ztuple[Argument, ...]ró   zdict[str, Argument]r^  zOptional[str]rÖ  zOptional[Any]r  ztorch.fx.Node)rz   r{   r|   rƒ   rá   rŒ  r­  r²  r½  r   rÃ  rº  Ú__classcell__©rÍ   s   @rV   rA   rA   õ  s6  ø… ØFÓFØ!Ó!Ø2Ó2Ø8Ó8Ø*Ó*Ø!€O�TÓ!õ%ð&(àð(ð $ð(ð ð	(ð
 ð(ð 
ó(ðØðØ#)ðØBRðà	óõ
%ð òó ðð òó ðð ðØ%ðà	+òó ðó
ð  #Ø#'ð àð ð ð ð #ð	 ð
 $ð ð ð ð !ð ð 
÷ ñ  rX   rA   c                ó&   ‡ — t         dˆ fd„«       }|S )Nc               3  ó  •K  — ddl m} m}m} g }d } | «       dkD  r2 |«       }t	        |‰«      r|}n|j                  |«        | «       dkD  rŒ2t        |«      D ]
  } ||«       Œ 	 |–— |�Lt        |«      }|dkD  r |«       }|dz  }|dkD  rŒ|j                  |«       t        |«      D ]
  } ||«       Œ y y # |�Lt        |«      }|dkD  r |«       }|dz  }|dkD  rŒ|j                  |«       t        |«      D ]
  } ||«       Œ w w xY w­w)Nr   )Ú_len_torch_function_stackÚ	_pop_moder1   r:   )Útorch.overridesrâ  rã  r1   r‡   rS  rE  rš  )râ  rã  r1   Útemp_elementsÚremoved_modeÚmoder4   Úmode_tys          €rV   Úcontext_manager_fnzB_make_temp_remove_mode_context_manager.<locals>.context_manager_fnl  sC  øè ø€ çTÑTàˆØˆá'Ó)¨AÒ-Ù“;ˆDÜ˜$ Ô(Ø#�Øà×$Ñ$ TÔ*ñ (Ó)¨AÓ-ô ˜]Ó+ò 	ˆDÙ�tÕð	ð	%ØÒð Ð'Ü˜MÓ*�Ø˜a’iÙ$›;�DØ˜Q‘J�Eð ˜a“ið ×$Ñ$ \Ô2ä$ ]Ó3ò %�DÙ˜tÕ$ñ%ð (øˆ|Ð'Ü˜MÓ*�Ø˜a’iÙ$›;�DØ˜Q‘J�Eð ˜a“ið ×$Ñ$ \Ô2ä$ ]Ó3ò %�DÙ˜tÕ$ñ%ð (üs0   ƒA
DÁDÁ'B: Á+#DÂ+DÂ:$D
Ã+D
Ä
D)r  z2Generator[Optional[TorchFunctionMode], None, None])r
   )rè  ré  s   ` rV   Ú&_make_temp_remove_mode_context_managerrê  i  s    ø€ ô ô%ó ð%ð@ ÐrX   c                ó&  — |j                  | |«      }dd„}|j                  |«       ddlm}  ||«       t	        | t
        «      r| j                  j                  n| j                  }t        j                  j                  |j                  ||«      S )Nc                óÐ   — ddl m} | j                  «       ry || «      ryt        | j                  j                  d«      t        «      rt        d„ | j                  D «       «      ryy)Nr:   )Úis_accessor_nodeTFr…   c              3  ó¢   K  — | ]G  }t        |t        j                  «      r+t        |j                  j	                  d «      t
        «      –— ŒI y­w)r…   N)r‡   r  rÌ  r�   rH  rE   )ri   r¾  s     rV   rj   z6dispatch_trace.<locals>.impure_pred.<locals>.<genexpr>ª  s:   è ø€ ò àÜ˜a¤§¡Ô)ô ˜1Ÿ6™6Ÿ:™: eÓ,¬l×;ñùs   ‚AA)	Úsymbolic_shapesrí  Ú	is_impurer‡   r�   rH  rE   re  rò   )r/  rí  s     rV   Úimpure_predz#dispatch_trace.<locals>.impure_pred™  s^   € Ý5ð �;‰;Œ=Øñ ˜AÔØô
 �q—v‘v—z‘z %Ó(¬,Ô7ô ñ àŸ™ôô ð ð rX   r   )Údedupe_symints)r/  zfx.Noder  r¨   )ÚtraceÚeliminate_dead_codeÚ,torch._inductor.fx_passes.dedupe_symint_usesrò  r‡   r.   rÍ   rz   r  Ú_lazy_graph_moduleÚ_make_graph_moduler¸  )r¸  rŽ   Úconcrete_argsrF  rñ  rò  r^  s          rV   rB   rB   �  sq   € ð �L‰L˜˜}Ó-€Eóð8 
×Ñ˜kÔ*ÝKá�5ÔÜ&0°´vÔ&>ˆ4�>‰>×"Ò"ÀDÇMÁM€DÜ× Ñ ×3Ñ3°F·K±KÀÈÓMÐMrX   c                ó€   ‡ ‡‡‡— t        j                  ‰«      \  Š}t        j                  ‰ «      dˆ ˆˆˆfd„«       }|S )Nc                 ó´  •— t        j                  | «      \  }}t        |«      t        ‰	«      k(  sJ ‚t        «       5 }t	        |t
        «      sJ ‚t        ‰	|d ‰¬«       d d d «       dˆfd„} ‰‰
Ž }t        j                  t        ||«      }t        j                  t        ˆfd„|«      }dˆfd„}t        j                  t        ||«      }|S # 1 sw Y   ŒpxY w)Nrc  c                ó"   •— t        | ‰| d„ «      S )Nc                ó   — | j                   S rS   r  r½   s    rV   rW   zJwrap_key.<locals>.wrapped.<locals>.get_tensor_proxy_slot.<locals>.<lambda>Ë  s
   € ¸!¿'¹'€ rX   r9  ©r4  rŽ   s    €rV   Úget_tensor_proxy_slotz8wrap_key.<locals>.wrapped.<locals>.get_tensor_proxy_slotÊ  s   ø€ Ü! ! V¨QÑ0AÓBÐBrX   c                ó"   •— t        | ‰| d„ «      S )Nc                ó   — | S rS   rh   r½   s    rV   rW   z=wrap_key.<locals>.wrapped.<locals>.<lambda>.<locals>.<lambda>Ð  s   € Èq€ rX   r9  rý  s    €rV   rW   z+wrap_key.<locals>.wrapped.<locals>.<lambda>Ð  s   ø€ ¬°q¸&À!Á[Ó(Q€ rX   c                ó8   •— t        | ‰«      j                  «       S rS   )r©   r.  rý  s    €rV   Úget_sym_proxy_slotz5wrap_key.<locals>.wrapped.<locals>.get_sym_proxy_slotÓ  s   ø€ Ü! ! VÓ,×2Ñ2Ó4Ð4rX   )r4  r   r  zUnion[Tensor, Proxy])r4  r~   r  r'   )r^   rd  rš  Údisable_proxy_modes_tracingr‡   r:  r(  Útree_map_onlyr   rš   rE   )ÚproxiesÚ_unusedÚflat_proxiesÚ_proxies_specr«  rþ  rƒ  r  rñ   Úflat_tensorsÚtensorsrŽ   s           €€€€rV   Úwrappedzwrap_key.<locals>.wrappedÂ  sÑ   ø€ ä&,×&9Ñ&9¸'Ó&BÑ#ˆ�mÜ�<Ó ¤C¨Ó$5Ò5Ð5Ð5Ü(Ó*ð 	X¨aÜ˜aÔ!7Ô8Ð8Ð8Ü˜l¨LÀ4ÐPVÕW÷	Xõ	Cñ �ˆkˆÜ×"Ñ"¤6Ð+@À#ÓFˆÜ×"Ñ"ÜÓQÐSVó
ˆõ	5ô ×"Ñ"¤<Ð1CÀSÓIˆØˆ
÷#	Xð 	Xús   ½"CÃC)r  r
  r  r  r  rQ   )r^   rd  rï   Úwraps)rñ   r
  rŽ   rw  Ú_tensors_specr  r	  s   ```   @rV   Úwrap_keyr  ½  s<   û€ ô #)×"5Ñ"5°gÓ">Ñ€L�-ä‡_�_�QÓ÷ó ðð, €NrX   zOptional[object]ÚORIGINAL_ATENc              #  óÜ   K  — t         €Dt        j                  «       r0| a | t        j                  d<   	 d –— d a d t        j                  d<   y d –— y # d a d t        j                  d<   w xY w­w)NÚoriginal_aten)r  Úfx_tracebackÚhas_preserved_node_metaÚcurrent_meta)rK  s    rV   Úset_original_aten_opr  à  sf   è ø€ ô Ð¤×!EÑ!EÔ!GØˆØ59Œ×!Ñ! /Ñ2ð	>Ûà ˆMØ9=ŒL×%Ñ% oÒ6äøð !ˆMØ9=ŒL×%Ñ% oÒ6üs   ‚0A,³A ·A,ÁA)Á)A,c                  ó4   — e Zd Zdd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zy)ÚTorchFunctionMetadataModec                ó   — || _         y rS   )rŽ   ©r‹  rŽ   s     rV   rŒ  z"TorchFunctionMetadataMode.__init__ð  s	   € Øˆ�rX   Nc                óÀ   — |xs i }|| j                   _        | j                   j                  j                  |d«      dz   | j                   j                  |<    ||i |¤ŽS )Nr   r:   )rŽ   r©  r£  rH  ©r‹  rK  Útypesrò   ró   s        rV   Ú__torch_function__z,TorchFunctionMetadataMode.__torch_function__ó  s[   € ð ’˜2ˆØ(,ˆ�‰Ô%Ø,0¯K©K×,GÑ,G×,KÑ,KÈDÐRSÓ,TÐWXÑ,Xˆ�‰×#Ñ# DÑ)Ù�TÐ$˜VÑ$Ð$rX   ©rŽ   Ú_ProxyTracerr  r  ©rh   N©
rK  r>   r  ú tuple[torch._C._TensorMeta, ...]rò   útuple[object, ...]ró   úOptional[dict[str, object]]r  r$  ©rz   r{   r|   rŒ  r  rh   rX   rV   r  r  ï  sD   „ óð $&Ø.2ð
%àð
%ð 0ð
%ð !ð	
%ð
 ,ð
%ð 
ô
%rX   r  c                  ó4   — e Zd Zdd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zy)ÚPreDispatchTorchFunctionModec                ó    — || _         g | _        y rS   )rŽ   Úenter_autocast_nodesr  s     rV   rŒ  z%PreDispatchTorchFunctionMode.__init__	  s   € ØˆŒð :<ˆÕ!rX   Nc                ó`  — |xs i }|t         v �r|t        j                  j                  j                  k(  r| j
                  j                  «       }|f}| j                  j                  d||i «      }|t        j                  j                  j                  k(  r| j
                  j                  |«       |t        j                  j                  t        j                  j                  j                  t        j                  j                  j                  fv rd |j                  d<   |S  ||i |¤ŽS )Nrý   r…   )r*   rÓ   ÚampÚautocast_modeÚ_exit_autocastr)  ÚpoprŽ   rº  Ú_enter_autocastrS  Ú_CÚ_set_grad_enabledr�   )r‹  rK  r  rò   ró   Ú
enter_noderˆ   s          rV   r  z/PreDispatchTorchFunctionMode.__torch_function__  sø   € ð ’˜2ˆØÔDÒDð
 ”u—y‘y×.Ñ.×=Ñ=Ò=Ø!×6Ñ6×:Ñ:Ó<�
Ø"�}�Ø—;‘;×*Ñ*¨?¸DÀ$ÈÓKˆDØ”u—y‘y×.Ñ.×>Ñ>Ò>Ø×)Ñ)×0Ñ0°Ô6ØÜ—‘×*Ñ*Ü—	‘	×'Ñ'×7Ñ7Ü—	‘	×'Ñ'×6Ñ6ðñ ð
 $(�—	‘	˜%Ñ ØˆKñ �TÐ$˜VÑ$Ð$rX   r  r   )
rK  zUnion[OpOverload, Callable]r  r"  rò   r#  ró   r$  r  r$  r%  rh   rX   rV   r'  r'    sD   „ ó<ð $&Ø.2ð%à)ð%ð 0ð%ð !ð	%ð
 ,ð%ð 
ô%rX   r'  c                  óè   ‡ — e Zd Zed	d„«       Z	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Ze	 	 d	 	 	 	 	 	 	 	 	 dd„«       Zdˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Z	e
d	d„«       Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )r:  c                 ó   — yr§   rh   rŠ  s    rV   Úenable_tracingz%ProxyTorchDispatchMode.enable_tracing6  ó   € àrX   c                óV  •— |r$t         j                  j                  j                  nd }t        ‰| �  |«       || _        || _        || _        || _	        || _
        t         j                  j                  j                  | _        g | _        d| _        ddlm} |j$                  | _        y )Nr   )Úconfig)rÓ   r0  ÚDispatchKeyÚPreDispatchr¨  rŒ  rŽ   Útracing_moderw  rQ  ro  Ú_TorchDispatchModeKeyÚPROXYÚ	_mode_keyÚenter_stackr=  Útorch._inductorr8  r>  )	r‹  rŽ   r;  rw  rQ  ro  Údkr8  rÍ   s	           €rV   rŒ  zProxyTorchDispatchMode.__init__:  s�   ø€ ñ 2>ŒU�X‰X×!Ñ!×-Ò-À4ˆÜ‰Ñ˜ÔØˆŒØ(ˆÔØ(ˆÔØ$8ˆÔ!Ø,HˆÔ)ô Ÿ™×7Ñ7×=Ñ=ˆŒð DFˆÔØˆÔÝ*à'-×'EÑ'EˆÕ$rX   c                óÞ   — t        |«      5  |xs i }|t        j                  j                  fv r ||i |¤Žcd d d «       S t	        | || j
                  ||«      cd d d «       S # 1 sw Y   y xY wrS   )r  ÚprimrË   r°   r…  rw  r  s        rV   Ú__torch_dispatch__z)ProxyTorchDispatchMode.__torch_dispatch__U  st   € ô " $Ó'ñ 	KØ’\˜rˆFàœŸ™×+Ñ+Ð-Ñ-Ù˜TÐ, VÑ,÷		Kñ 	Kô ˜d D¨$×*;Ñ*;¸TÀ6ÓJ÷	K÷ 	Kò 	Kús   Œ+A#ÁA#Á#A,c                ó°   •— t        t        j                  j                  j                  «      }| j
                  j                  |«       t        ‰| �!  «       S rS   )	r2   rÓ   r0  r<  r=  r?  rS  r¨  Ú	__enter__)r‹  Úmaybe_prev_proxy_moderÍ   s     €rV   rF  z ProxyTorchDispatchMode.__enter__e  sA   ø€ ä 1´%·(±(×2PÑ2P×2VÑ2VÓ WÐØ×Ñ×ÑÐ 5Ô6Ü‰wÑ Ó"Ð"rX   c                óx   •— t         ‰| �  |||«      }| j                  j                  «       }|�t	        |«       |S rS   )r¨  Ú__exit__r?  r.  r1   )r‹  Úexc_typeÚ	exc_valueÚ	tracebackÚbÚmb_previous_proxy_moderÍ   s         €rV   rI  zProxyTorchDispatchMode.__exit__k  sC   ø€ ô ‰GÑ˜X y°)Ó<ˆð "&×!1Ñ!1×!5Ñ!5Ó!7ÐØ!Ð-ÜÐ-Ô.àˆrX   c                 ó   — yr§   rh   )Úclss    rV   Úis_infra_modez$ProxyTorchDispatchMode.is_infra_modez  r6  rX   c                óD  ‡ — t        |«      dk(  r2t        |d   t        t        f«      rt        ˆ fd„|d   D «       «      f}nt        ˆ fd„|D «       «      }‰ j                  j                  d||i «      }t        j                  |‰ j                  «      }t        ||«       |S )Nr:   r   c              3  óž   •K  — | ]D  }t        |t        «      r.t        |‰j                  «      j	                  «       j
                  n|–— ŒF y ­wrS   ©r‡   rE   r©   rŽ   r.  rˆ   ©ri   r¾  r‹  s     €rV   rj   z8ProxyTorchDispatchMode._compute_proxy.<locals>.<genexpr>…  sI   øè ø€ ò ð ô " !¤\Ô2ô # 1 d§k¡kÓ2×8Ñ8Ó:×?Ò?àóñùó   ƒA
Ac              3  óž   •K  — | ]D  }t        |t        «      r.t        |‰j                  «      j	                  «       j
                  n|–— ŒF y ­wrS   rT  rU  s     €rV   rj   z8ProxyTorchDispatchMode._compute_proxy.<locals>.<genexpr>�  sI   øè ø€ ò ð ô ˜a¤Ô.ô ˜q $§+¡+Ó.×4Ñ4Ó6×;Ò;àóñùrV  rý   )	rš  r‡   rT   rZ   rŽ   rº  r  r'   rë   )r‹  rK  rò   rƒ  Ún_argsÚn_outÚp_outs   `      rV   Ú_compute_proxyz%ProxyTorchDispatchMode._compute_proxy~  s�   ø€ ô
 ˆt‹9˜Š>œj¨¨a©´4¼°-Ô@äó ð " !™Wô	ó ð‰Fô ó ð ô	ó ˆFð —‘×'Ñ'¨¸¸vÀrÓJˆÜ—‘˜ §¡Ó,ˆÜ�˜ÔØˆrX   c                óZ  — |t         j                  k(  r@t        |d   t        «      r|d   dk(  r|d   S t        |d   t        «      r|d   dk(  r|d   S |rJ ‚ ||i |¤Ž}t        |t        «      r;t        | j                  | j                  |||¬«      }t        || j                  |«       |S )Nr:   r   )rK  rò   rƒ  )	ÚoperatorÚmulr‡   r×   rE   rô   rŽ   r[  r�   )r‹  rK  r  rò   ró   rƒ  Úp_out_thunks          rV   Ú__sym_dispatch__z'ProxyTorchDispatchMode.__sym_dispatch__›  s­   € ð ”8—<‘<ÒÜ˜$˜q™'¤3Ô'¨D°©G°qªLØ˜A‘w�Ü˜D ™G¤SÔ)¨d°1©g¸ªlØ˜A‘w�ñ
 ÐˆzÙ�DÐ#˜FÑ#ˆô �cœ<Ô(Ü"Ø—‘˜T×0Ñ0°tÀ$ÈCôˆKô ˜3 §¡¨[Ô9àˆ
rX   )r  r¨   )FFT)rŽ   r  r;  rÚ  rw  r¨   rQ  r¨   ro  r¨   r  r  r   r!  )r  r   )rJ  zOptional[type[BaseException]]rK  zOptional[BaseException]rL  zOptional[types.TracebackType]r  zOptional[bool])rK  r>   rò   r#  rƒ  r~   r  r'   )
rK  r>   r  r"  rò   r#  ró   údict[str, object]r  r$  )rz   r{   r|   Úpropertyr5  rŒ  r4   rD  rF  rI  ÚclassmethodrQ  r[  r`  rÞ  rß  s   @rV   r:  r:  4  sW  ø„ àòó ðð #Ø%*Ø-1ðFàðFð ðFð ð	Fð
 #ðFð '+ðFð 
õFð6 ð
 $&Ø.2ðKàðKð 0ðKð !ð	Kð
 ,ðKð 
òKó ðKõ#ðà/ðð +ðð 1ð	ð
 
õð òó ððØðØ&8ðØ?Hðà	óð:àðð 0ðð !ð	ð
 "ðð 
÷rX   c                  ól   ‡ — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   dZded<   dˆ fd„Zˆ xZS )rK   rŸ  r›   z*MutableMapping[PySymType, _PySymProxyType]r�   r¡  r™   r   r¤   zOptional[OpOverload]r©  r¢  r£  Fr¨   rá   c                óÊ   •— t         ‰| �  |«       t        j                  «       | _        t        «       | _        i | _        t        d t        ¬«      | _
        d | _        i | _        y )Nr¦  )r¨  rŒ  Úweakrefr   r�   r9   r™   r¤   r8   r7   r›   r©  r£  )r‹  rF  rÍ   s     €rV   rŒ  z _GraphAppendingTracerEx.__init__Æ  sZ   ø€ Ü‰Ñ˜ÔÜ&×8Ñ8Ó:ˆÔÜ5Ó7ˆÔØ"$ˆÔÜ%8Ø¤ô&
ˆÔ"ð "&ˆÔð  "ˆÕrX   )rF  zfx.graph.Graphr  r  )rz   r{   r|   rƒ   rá   rŒ  rÞ  rß  s   @rV   rK   rK   ½  s;   ø… ØFÓFØ?Ó?Ø8Ó8Ø2Ó2Ø+Ó+Ø*Ó*Ø!€O�TÓ!÷"ñ "rX   rK   c                  ó–   ‡ — e Zd Z	 d	 	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Zd	ˆ fd„Zˆ xZS )
rD   c                ó¶   •— t        ‰| �  |fi |¤Ž || _        t        | j                  «      | _        |xs i | _        t        | j                  d¬«      | _        y )NÚreal)r;  )r¨  rŒ  Ú	new_graphrK   rŽ   rt   r:  rç  )r‹  Úmodulerj  rt   ró   rÍ   s        €rV   rŒ  z!DecompositionInterpreter.__init__Ø  sM   ø€ ô 	‰Ñ˜Ñ* 6Ò*Ø"ˆŒÜ-¨d¯n©nÓ=ˆŒà#6Ò#<¸"ˆÔ Ü*¨4¯;©;ÀVÔLˆ�	rX   c                óÎ   •— t         ‰| �  |||«      }t        j                  | j                  j                  |«      | j
                  «      }t        ||d | j
                  ¬«       |S ©Nrc  )r¨  Úplaceholderr  r'   rj  rŽ   r(  ©r‹  rÕ  rò   ró   rƒ  r�   rÍ   s         €rV   rn  z$DecompositionInterpreter.placeholderæ  sR   ø€ ô ‰gÑ! &¨$°Ó7ˆÜ—‘˜Ÿ™×3Ñ3°FÓ;¸T¿[¹[ÓIˆÜ˜#˜u¨t¸D¿K¹KÕHàˆ
rX   c                óÎ   •— t         ‰| �  |||«      }t        j                  | j                  j                  |«      | j
                  «      }t        ||d | j
                  ¬«       |S rm  )r¨  r´  r  r'   rj  rŽ   r(  ro  s         €rV   r´  z!DecompositionInterpreter.get_attrï  sR   ø€ ô ‰gÑ˜v t¨VÓ4ˆÜ—‘˜Ÿ™×0Ñ0°Ó8¸$¿+¹+ÓFˆÜ˜#˜u¨t¸D¿K¹KÕHØˆ
rX   c                ó¢   •‡ ‡— t         ‰‰ �  |||«      }dd„Šdˆˆ fd„}‰ j                  j                  t        j                  ||«      «       |S )Nc                ó.   — | j                   j                  S rS   )r�   rˆ   r½   s    rV   Úget_proxy_nodez7DecompositionInterpreter.output.<locals>.get_proxy_nodeþ  s   € Ø—7‘7—<‘<ÐrX   c                ó4   •— t        | ‰j                  | ‰«      S rS   )r©   rŽ   )r   rs  r‹  s    €€rV   Úunwrapz/DecompositionInterpreter.output.<locals>.unwrap  s   ø€ Ü! ! T§[¡[°!°^ÓDÐDrX   )ra   rŠ   r  rÛ  )r   r   r  zUnion[Tensor, fx.Node])r¨  Úoutputrj  r^   Útree_map)r‹  rÕ  rò   ró   rƒ  ru  rs  rÍ   s   `     @€rV   rv  zDecompositionInterpreter.outputù  sF   ú€ ô ‰g‰n˜V T¨6Ó2ˆó	 ö	Eð 	�‰×ÑœfŸo™o¨f°cÓ:Ô;Øˆ
rX   c                óÎ   •— t        | j                  «      5  | j                  5  t        ‰| �  |i |¤Žcd d d «       cd d d «       S # 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY wrS   )rv   rt   rç  r¨  Úrun)r‹  rò   ró   rÍ   s      €rV   ry  zDecompositionInterpreter.run  sY   ø€ ô �t×/Ñ/Ó0ñ 	0°$·)±)ñ 	0Ü‘7‘; Ð/¨Ñ/÷	0÷ 	0÷ 	0ó 	0ú÷ 	0÷ 	0ñ 	0ús!   —A¤A³	AÁA	ÁAÁA$rS   )
rk  úfx.GraphModulerj  úfx.Graphrt   ú'Optional[Mapping[OpOverload, Callable]]ró   r$  r  r  )rÕ  rÚ  rò   r#  ró   ra  r  r$  )rò   r$  ró   r$  r  r$  )	rz   r{   r|   rŒ  rn  r´  rv  ry  rÞ  rß  s   @rV   rD   rD   ×  s¿   ø„ ð
 HLð	MàðMð ðMð Eð	Mð
 ðMð 
õMðØðØ!3ðØ=Nðà	õðØðØ!3ðØ=Nðà	õðØðØ!3ðØ=Nðà	õ÷0ñ 0rX   rD   c                óP   ‡ ‡— t        j                  ||f«      \  }Šdˆ ˆfd„}||fS )Nc                óF   •— t        j                  | ‰«      \  }} ‰|i |¤ŽS rS   )r^   rn  )Ú	flat_argsÚfn_argsÚ	fn_kwargsrK  ry  s      €€rV   r  z-wrapper_and_args_for_make_fx.<locals>.wrapped  s*   ø€ Ü#×2Ñ2°9¸dÓCÑˆ�Ù�WÐ* 	Ñ*Ð*rX   )r  zlist[object]r  rQ   )r^   rd  )rK  rò   ró   r  r  ry  s   `    @rV   Úwrapper_and_args_for_make_fxr‚    s/   ù€ ô
 ×)Ñ)¨4°¨.Ó9�O€Iˆtö+ð �IÐÐrX   c               #  óÆ   K  — t        j                  «       } t        j                  d«       	 d –— t        j                  | «       y # t        j                  | «       w xY w­w©NF)rÓ   Úis_autocast_cache_enabledÚset_autocast_cache_enabled)Ú	old_values    rV   Údisable_autocast_cacherˆ    sF   è ø€ ä×/Ñ/Ó1€IÜ	×$Ñ$ UÔ+ð4Ûä×(Ñ(¨Õ3øŒ×(Ñ(¨Õ3üs   ‚*A!­A ±A!ÁAÁA!c                  ó   — e Zd Zy)Ú#_ModuleNotInstalledAsSubmoduleErrorNry   rh   rX   rV   rŠ  rŠ  &  r}   rX   rŠ  c                  ó   — e Zd Zdd„Zy)Ú
_AttrProxyc                 ó   — y rS   rh   )r‹  ÚbaseÚpaths      rV   Úreset_proxy_mappingz_AttrProxy.reset_proxy_mapping,  s   € ØrX   N)rŽ  r.   r�  rÚ  r  r  )rz   r{   r|   r�  rh   rX   rV   rŒ  rŒ  +  s   „ ôrX   rŒ  c                  ó�   ‡ — e Zd ZdZd	ˆ fd„Zd
d„Z	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z	dˆ fd„Z
ˆ xZS )Ú_ModuleStackTracera»  Customized version of PythonKeyTracer that retains module stack
    information in node.meta["nn_module_stack"].

    FX symbolic trace actually does this already, but it relies on `self.root`
    being the actual module being traced. Since make_fx traces a lambda of our
    creation, things don't work properly.

    So for this version we hold onto a reference to the original module
    (scope_root) and use that to match the path. Also when we see,
            A
           / \
          B   C
           \ /
            D
    we want to record the path as A.B.D by recording only one path.
    See Note [Preserving the nn module stack metadata during export non-strict mode]  # noqa: W605
    c                ó†  •‡‡— t         ‰| �  «        || _        d| _        i | _        | j                  j                  d¬«      D ]N  \  }}|| j                  v r,t        j                  d| j                  |   |«       d| _        Œ@|| j                  |<   ŒP t        «       | _	        t        «       | _
        t        «       | _        d| _        t        t        «      | _        | j                  j                  d¬«      D ],  \  }}| j                  t!        |«         j#                  |«       Œ. | Š G ˆˆfd„dt$        «      Š‰| _        y )NF)Úremove_duplicatez<Shared module found between %s and %s, AttrProxy is enabled.Tr   c                  óf   •‡ — e Zd Zdˆfd„Zdˆˆ ˆfd„Zdˆfd„Zd	ˆˆ ˆfd„Zed
ˆˆfd„«       Zˆ xZ	S )ú._ModuleStackTracer.__init__.<locals>.AttrProxyc                óÔ  •— t        |t        «      r|j                  «       }t        |t        «      sJ ‚t	        |j
                  j                  | j
                  |j
                  fi «      | _        |j                  | _        |j
                  j                  | j
                  _        |j
                  j                  | j
                  _	        |‰j                  | <   |‰j                  | <   y rS   )r‡   rŒ  Úget_baser.   rœ   rÍ   rz   Ú__dict__r{   r|   Úproxy_pathsÚproxy_modules)r‹  rŽ  r�  rŽ   s      €rV   rŒ  z7_ModuleStackTracer.__init__.<locals>.AttrProxy.__init__b  s±   ø€ Ü˜d¤JÔ/ØŸ=™=›?�Dä! $¬Ô/Ð/Ð/ô "&Ø—N‘N×+Ñ+Ø—^‘^ T§^¡^Ð4Øó"�”ð
 !%§¡�”Ø,0¯N©N×,EÑ,E�—‘Ô)Ø.2¯n©n×.IÑ.I�—‘Ô+ð ,0�×"Ñ" 4Ñ(Ø-1�×$Ñ$ TÒ*rX   c                ó¢   •— t        | t        «      sJ ‚t        ‰| �  |«      }t        |t        «      s|S  ‰|‰j                  |    dz   |z   «      S ©Nú.)r‡   r.   r¨  Ú__getattr__rš  )r‹  r^  r°  Ú	AttrProxyrÍ   rŽ   s      €€€rV   rŸ  z:_ModuleStackTracer.__init__.<locals>.AttrProxy.__getattr__w  sU   ø€ Ü! $¬Ô/Ð/Ð/ô !™7Ñ.¨tÓ4�Ü! (¬FÔ3Ø#�Oá  ¨6×+=Ñ+=¸dÑ+CÀcÑ+IÈDÑ+PÓQÐQrX   c                ó"   •— ‰j                   |    S rS   )r›  r  s    €rV   r˜  z7_ModuleStackTracer.__init__.<locals>.AttrProxy.get_base‚  s   ø€ Ø×+Ñ+¨DÑ1Ð1rX   c                ó^  •— t        |t        «      �rt        | t        j                  j                  «      rgt        j                  j	                  t        t        | j                  j                  «       «      |   «      «      } ‰|‰j                  |    › d|› �«      S t        | t        j                  j                  «      r^t        j                  j                  t        | j                  j                  «       «      |   «      } ‰|‰j                  |    › d|› �«      S t        ‰| �5  |«      S r�  )r‡   ÚslicerÓ   r¶  Ú
Sequentialr   rT   Ú_modulesrÐ   rš  Ú
ModuleListÚvaluesr¨  r’  )r‹  r  rÂ   r   rÍ   rŽ   s      €€€rV   r’  z:_ModuleStackTracer.__init__.<locals>.AttrProxy.__getitem__…  sí   ø€ Ü˜c¤5Õ)Ü! $¬¯©×(;Ñ(;Ô<ä#Ÿh™h×1Ñ1Ü'¬¨T¯]©]×-@Ñ-@Ó-BÓ(CÀCÑ(HÓIó˜ñ  )¨°×1CÑ1CÀDÑ1IÐ0JÈ!ÈCÈ5Ð.QÓRÐRÜ# D¬%¯(©(×*=Ñ*=Ô>ä#Ÿh™h×1Ñ1´$°t·}±}×7KÑ7KÓ7MÓ2NÈsÑ2SÓT˜Ù(¨°×1CÑ1CÀDÑ1IÐ0JÈ!ÈCÈ5Ð.QÓRÐRä‘wÑ*¨3Ó/Ð/rX   c                ó  •— d| j                   v sJ ‚| j                   d   }t        |t        «      sJ ‚|j                  «       D ��ci c]/  \  }}||�% ‰|‰j                  |    dz   t        |«      z   «      n|“Œ1 c}}S c c}}w )Nr¥  rž  )r™  r‡   rÏ   rÐ   rš  rÚ  )r‹  Ú
submodulesr"  rÁ   r   rŽ   s       €€rV   r¥  z7_ModuleStackTracer.__init__.<locals>.AttrProxy._modules”  s—   ø€ à! T§]¡]Ñ2Ð2Ð2Ø!Ÿ]™]¨:Ñ6�
Ü! *¬dÔ3Ð3Ð3ð '1×&6Ñ&6Ó&8÷ñ #˜˜Uð à Ð,ñ " %¨×);Ñ);¸DÑ)AÀCÑ)GÌ#ÈcË(Ñ)RÔSà"ñ#óð ùó s   Á4A>)rŽ  zUnion[Module, _AttrProxy]r�  rÚ  r  r  )r^  rÚ  r  r   )r  r.   )r  zUnion[int, slice]r  r   )r  zdict[str, AttrProxy])
rz   r{   r|   rŒ  rŸ  r˜  r’  rb  r¥  rÞ  )rÍ   r   rŽ   s   @€€rV   r   r–  a  s,   ù„ õ2÷*	Rõ2÷0ð õó ôrX   r   )r¨  rŒ  Ú
scope_rootÚenable_attr_proxyÚsubmodule_pathsÚnamed_modulesr–   Úinfor   rš  Úattr_proxy_mapr›  Úcounterr   rT   Úmodule_id_cacher˜   rS  rŒ  Ú
proxy_type)r‹  rª  r^  r«  Úmodr   rŽ   rÍ   s        @@€rV   rŒ  z_ModuleStackTracer.__init__C  s*  ú€ Ü‰ÑÔØ$ˆŒØ!&ˆÔØ!ˆÔØ—‘×4Ñ4ÀeÐ4ÓLò 		/‰GˆD�!Ø�D×(Ñ(Ñ(Ü—‘ØRØ×(Ñ(¨Ñ+Øôð
 *.�Õ&à*.�×$Ñ$ QÒ'ð		/ô @QÓ?RˆÔÜEVÓEXˆÔÜDUÓDWˆÔØˆŒä*¬4Ó0ˆÔØŸ™×6Ñ6ÈÐ6ÓNò 	7‰IˆD�#Ø× Ñ ¤ C£Ñ)×0Ñ0°Õ6ð	7ð ˆ÷?	œ
ô ?	ðB $ˆ�rX   c                ó¼   — || j                   u ryt        |t        «      r| j                  |   S 	 t	        j
                  | |«      S # t        $ r}t        |‚d}~ww xY w)z£
        Use tracked access path during tracing instead of the default BFS behavior.
        Still use all the possible module paths to verify the result.
        Ú N)rª  r‡   rŒ  rš  r(   Úpath_of_moduleÚ	NameErrorrŠ  )r‹  r³  r   s      rV   r¶  z!_ModuleStackTracer.path_of_module¤  s^   € ð
 �$—/‘/Ñ!Øä�cœ:Ô&Ø×#Ñ# CÑ(Ð(ð	=Ü×(Ñ(¨¨sÓ3Ð3øÜò 	=Ü5¸1Ð<ûð	=ús   °A Á	AÁAÁAc                ón  •— t        |t        «      r&t        |t        j                  «      s| j                  st
        ‰| �  |||«      S t        |t        «      r|S || j                  vr | j                  ||«      | j                  |<   n| j                  |   j                  ||«       | j                  |   S rS   )r‡   r.   r  r&   r«  r¨  r²  rŒ  r¯  r²  r�  )r‹  r¯  r°  r±  rÍ   s       €rV   r²  z_ModuleStackTracer.getattr´  s    ø€ ô ˜8¤VÔ,Ü˜(¤B§N¡NÔ3Ø×)Ò)ä‘7‘? 4¨Ð3HÓIÐIÜ�h¤
Ô+ØˆOð ˜4×.Ñ.Ñ.Ø,0¯O©O¸HÀdÓ,KˆD×Ñ Ò)à×Ñ Ñ)×=Ñ=¸hÈÔMØ×"Ñ" 8Ñ,Ð,rX   c                óB  •— t         ‰| �  ||«      }g }| j                  j                  «       D ]'  \  }}|| j                  v sŒ|j                  ||f«       Œ) dd„}|D ]>  \  }}	 || j                  |«       | j                  |	   }
t        |
| j                  |«       Œ@ |S )Nc                ó<  — |j                  d«      }|d d |d   }}t        | t        «      sJ ‚| }|D ]4  }t        ||«      s yt	        ||«      }t        |t
        t        f«      rŒ4 y t        ||«      syt        t	        ||«      t
        «      syt        ||«       y)Nrž  éÿÿÿÿFT)Úsplitr‡   r.   r†   r²  rŒ  Údelattr)r�   rÕ  Úatomsr�  Útarget_submodr³  rk  s          rV   Ú_delete_proxy_attrz4_ModuleStackTracer.trace.<locals>._delete_proxy_attrÖ  s¨   € ð —L‘L Ó%ˆEØ"'¨¨ *¨e°B©i�-ˆDÜ˜c¤6Ô*Ð*Ð*ØˆCð ò !�Ü˜s DÔ)Ù ä˜c 4Ó(�ä! #¬
´FÐ';Õ<Ù ð!ô ˜3 Ô.Øô œg c¨=Ó9¼:ÔFØä�C˜Ô'ØrX   )r�   r.   rÕ  rÚ  r  r¨   )r¨  ró  r¸  r­  r›  rS  r)   )r‹  r¸  rø  rÂ   Ú!proxy_module_names_to_be_replacedr^  rk  rÀ  Úproxy_module_nameÚproxy_moduleÚactual_modulerÍ   s              €rV   ró  z_ModuleStackTracer.traceÇ  s·   ø€ ô ‰g‰m˜D -Ó0ˆð KMÐ)Ø ŸI™I×3Ñ3Ó5ò 	I‰LˆD�&Ø˜×+Ñ+Ò+Ø1×8Ñ8¸$À¸ÕHð	Ió	ð8 0Qò 	FÑ+Ð˜|Ù˜tŸy™yÐ*;Ô<Ø ×.Ñ.¨|Ñ<ˆMÜ˜¨¯	©	Ð3DÕEð	Fð
 ˆ
rX   c                óÖ   — ddl m} t        ||t        f«      r ||i |¤ŽS 	 t	        j
                  | ||||«      S # t        $ r$ t        j                  d|› d�«        ||i |¤ŽcY S w xY w)zlPythonKeyTracer overrides call_module to avoid the scope handling,
        but we actually want it.
        r   )ÚOptimizedModulez&Unable to find the path of the module z°. This might be because the module was not properly registered as a submodule, which is not good practice. We will trace through the module without recording stack information.)	Útorch._dynamorÆ  r‡   r&   r(   r­  rŠ  ÚwarningsÚwarn)r‹  r«  r¬  rò   ró   rÆ  s         rV   r­  z_ModuleStackTracer.call_moduleù  s†   € õ 	2ô �a˜/¬;Ð7Ô8Ù˜DÐ+ FÑ+Ð+ð		,Ü×%Ñ% d¨A¨w¸¸fÓEÐEøÜ2ò 	,Ü�M‰MØ8¸¸ð <Jð Jôñ ˜DÐ+ FÑ+Ò+ð	,ús   ¢; »*A(Á'A(c                 ó   — yr„  rh   )r‹  r«  Úmodule_qualified_names      rV   Úis_leaf_modulez!_ModuleStackTracer.is_leaf_module  s   € ØrX   c                óè  •— t        ‰
| �  |i |¤Ž}|j                  dvrŽd|j                  vr| j                  |j                  d<   |j                  d   j                  «       D ]G  \  }\  }}t        |t        «      sŒ||j                  dz   |j                  z   f|j                  d   |<   ŒI |j                  dk(  r’| j                  �†d|j                  vrx| j                  j                  › d| j                  | j                     › �| j                  j                  j                  › d| j                  j                  › �f|j                  d<   d|j                  v�r|j                  dvrýt        j                  «       j!                  «       }|rÙ|D �cg c].  }|j"                  dk(  s|j$                  j'                  d	«      r|‘Œ0 }	}|	D �cg c]:  }|j$                  j'                  d
«      s|j$                  j'                  d«      s|‘Œ< }	}|	rYt(        j*                  j-                  |	«      }	dj/                  |	j1                  «       «      j3                  «       |j                  d<   |S c c}w c c}w )aF  
        Create node and add on metadata.
        Add nn_module_stack here instead of TracerBase,
        since calls to make_fx() might not want to record module stack metadata.
        Add torch_fn by looking at torch_fn_metadata and torch_fn_counts.
        Add stack_trace by filtering out forward() stack frames.
        )rn  rv  Únn_module_stackrž  rý   Útorch_fnr[   Ústack_tracer¬  ztorch/__init__.pyzfx/_symbolic_trace.pyzexport/_trace.pyrµ  )r¨  rº  Úopr�   Úmodule_stackrÐ   r‡   rœ   r{   r|   r©  rz   r£  rÍ   r6   ÚextractÚsummaryr^  ÚfilenameÚendswithrL  ÚStackSummaryÚ	from_listrm   ÚformatÚstrip)r‹  rò   ró   rˆ   r"  ÚfqnÚmod_clsÚuser_frame_summaryÚframerÐ  rÍ   s             €rV   rº  z_ModuleStackTracer.create_node  sN  ø€ ô ‰wÑ" DÐ3¨FÑ3ˆð �7‰7Ð3Ñ3Ø ¨¯	©	Ñ1Ø/3×/@Ñ/@�—	‘	Ð+Ñ,à'+§y¡yÐ1BÑ'C×'IÑ'IÓ'Kò Ñ#�‘^�c˜7Ü˜g¤tÕ,àØ×*Ñ*¨SÑ0°7×3GÑ3GÑGð9�D—I‘IÐ/Ñ0°Ò5ðð �G‰G�Ò&Ø×&Ñ&Ð2Ø $§)¡)Ñ+ð ×)Ñ)×2Ñ2Ð3°1°T×5IÑ5IÈ$×J`ÑJ`Ñ5aÐ4bÐcØ×)Ñ)×3Ñ3×<Ñ<Ð=¸Q¸t×?UÑ?U×?^Ñ?^Ð>_Ð`ð%ˆD�I‰I�jÑ!ð  §	¡	Ò)¨d¯g©gÐ=VÑ.VÜ!2×!:Ñ!:Ó!<×!DÑ!DÓ!FÐÙ!ð
 "4öààŸ
™
 iÒ/Ø Ÿ>™>×2Ñ2Ð3FÔGò	 ð�ð ð "-öààŸ™×/Ñ/Ð0GÔHØ Ÿ>™>×2Ñ2Ð3EÔFò	 ð�ð ñ  ä"+×"8Ñ"8×"BÑ"BÀ;Ó"O�KØ/1¯w©w°{×7IÑ7IÓ7KÓ/L×/RÑ/RÓ/T�D—I‘I˜mÑ,àˆùò1ùòs   Æ3I*Ç?I/)rª  r&   r  r  )r³  r.   r  rÚ  rÙ  )r¸  úUnion[Module, Callable]rø  r$  r  r{  )
r«  r.   r¬  r   rò   r#  ró   ra  r  r  )r«  r.   rË  rÚ  r  r¨   )rò   r$  ró   r$  r  rÛ  )rz   r{   r|   r�  rŒ  r¶  r²  ró  r­  rÌ  rº  rÞ  rß  s   @rV   r’  r’  0  sœ   ø„ ñõ$_$óB=ð -Øð-Ø#)ð-ØBRð-à	õ-ð&0Ø+ð0Ø<Wð0à	õ0ðd,àð,ð ð,ð !ð	,ð
 "ð,ð 
ó,óB÷?ñ ?rX   r’  c                  ó¸   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Ze	 	 	 	 	 	 dd„«       Zdd„Ze	 	 	 	 dd„«       Z	dd„Z
dd„Zdd	„Zy
)Ú_MakefxTracerc                óè  — t        |xs i «      | _        | j                  j                  t        j                  j
                  j                  j                  t        j                  j                  j                  «       || _
        || _        || _        || _        || _        || _        d | _        t#        «       | _        t#        «       | _        d | _        t#        «       | _        t#        «       | _        y rS   )rÏ   rt   Ú
setdefaultrÓ   rÿ   r   r  r°   Ú_decompÚdecompositionsr;  Ú_allow_non_fake_inputsrw  Úrecord_module_stackrQ  ro  rÝ   r   rç   Úproxy_function_modeÚ	fx_tracerÚpython_dispatcher_modeÚtorch_fn_metadata_mode)r‹  rt   r;  ræ  rw  rç  rQ  ro  s           rV   rŒ  z_MakefxTracer.__init__`  sÑ   € ô @DØÒ% 2ó@
ˆÔ ð 	× Ñ ×+Ñ+Ü�I‰I�N‰N×$Ñ$×,Ñ,¬e¯m©m×.JÑ.J×.TÑ.Tô	
ð ".ˆÔØ,BˆÔ#Ø".ˆÔØ)<ˆÔ Ø*>ˆÔ!Ø2NˆÔ)ð ;?ˆÔÜFQÃmˆŒô ‹Mð 	Ô ð 59ˆŒÜ?J»}ˆÔ#ô ‹Mð 	Õ#rX   c                óŠ   — | j                   | j                  | j                  | j                  | j                  | j
                  gS rS   ©rÝ   rç   rè  ré  rê  rë  rŠ  s    rV   Ú_checkpoint_modesz_MakefxTracer._checkpoint_modesˆ  s>   € à×!Ñ!Ø�O‰OØ×$Ñ$Ø�N‰NØ×'Ñ'Ø×'Ñ'ð
ð 	
rX   c                óX   — || _         || _        || _        || _        || _        || _        y rS   rí  )r‹  Úprev_fake_tensor_modeÚprev_proxy_modeÚprev_proxy_function_modeÚprev_fx_tracerÚprev_python_dispatcher_modeÚprev_torch_fn_metadata_modes          rV   Ú_restore_modesz_MakefxTracer._restore_modes’  s2   € ð !6ˆÔØ)ˆŒØ#;ˆÔ Ø'ˆŒØ&AˆÔ#Ø&AˆÕ#rX   c              #  óü  K  — | j                  «       }	 ddlm} t        |d«      r)| j                  r|j
                  }t        |«      | _        nt        «       | _        | j                  dk(  rudd l
}|j                  j                  j                  |«      }|€Bdd lmc m} |j#                  d¬«      5  t%        d| j&                   |«       d¬	«      }d d d «       || _        n¿| j                  d
k(  r‰dd l
}|j                  j                  j                  |«      }|€C |«       }	dd lmc m} |j#                  d¬«      5  t%        d| j&                  |	¬«      }d d d «       |j*                  €J d«       ‚|| _        n'| j                  dk(  st-        d| j                  › �«      ‚| j/                  | j                  «       d –—  | j0                  |Ž  y # 1 sw Y   ŒÿxY w# 1 sw Y   Œ†xY w#  | j0                  |Ž  w xY w­w)Nr:   )ÚShapeEnvÚ	_orig_modÚfaker   F)Ú(fake_tensor_allow_unsafe_data_ptr_accessT)rÊ   Úallow_non_fake_inputsÚ	shape_envÚstatic_shapesÚsymbolic)rÊ   rü  rý  ú2shape_env should be set if tracing with 'symbolic'ri  zUnexpected tracing type: )rî  rï  rø  r†   rç  rù  r’  ré  rA   r;  rÇ  Ú_dynamoÚutilsrÉ   Útorch._functorch.configÚ
_functorchr8  Úpatchr"   ræ  rÝ   rý  ÚAssertionErrorÚ_construct_modes_with_fx_tracerrö  )
r‹  rñ   rò   Ú
prev_modesrø  rª  rÓ   rÝ   Ú_configrý  s
             rV   Ú_init_modes_from_inputsz%_MakefxTracer._init_modes_from_inputs¢  sß  è ø€ ð ×+Ñ+Ó-ˆ
ð4	-å1ä�q˜+Ô&¨4×+CÒ+CØŸ[™[�
Ü!3°JÓ!?�•ä!0Ó!2�”à× Ñ  FÒ*Û$à#(§=¡=×#6Ñ#6×#GÑ#GÈÓ#MÐ Ø#Ð+ß=Ð=à Ÿ™ÐPU˜ÓVñ Ü+9Ø37Ø26×2MÑ2MÙ&.£jØ*.ô	,Ð(÷ð )9�Õ%Ø×"Ñ" jÒ0Û$à#(§=¡=×#6Ñ#6×#GÑ#GÈÓ#MÐ Ø#Ð+Ù (£
�Iß=Ð=à Ÿ™ÐPU˜ÓVñ Ü+9Ø38Ø26×2MÑ2MØ&/ô,Ð(÷ð %×.Ñ.Ð:ðHàGóHØ:à(8�Õ%à×(Ñ(¨FÒ2Ü(Ø3°D×4EÑ4EÐ3FÐGóð ð ×0Ñ0°·±Ô@ÛàˆD×Ñ Ò,÷Gð ú÷ ð ûð&  ˆD×Ñ Ò,üsO   ‚G<”BG( Â3GÃA,G( Ä>GÅA)G( Ç G<ÇGÇG( ÇG%Ç!G( Ç(G9Ç9G<c                ó*  — t        || j                  | j                  | j                  | j                  ¬«      | _        | j                  rt        |«      | _        | j                  dk(  s| j                  rt        «       | _	        t        |«      | _        y )N)rw  rQ  ro  rÿ  )r:  r;  rw  rQ  ro  rç   r'  rè  r   rê  r  rë  )r‹  ré  s     rV   r  z-_MakefxTracer._construct_modes_with_fx_tracerÝ  s}   € Ü0ØØ×ÑØ×*Ñ*Ø!%×!:Ñ!:Ø)-×)JÑ)Jô
ˆŒð ×ÒÜ'CÀIÓ'NˆDÔ$ð ×Ñ 
Ò*¨d×.?Ò.?Ü*BÓ*DˆDÔ'ä&?À	Ó&JˆÕ#rX   c              #  ó&  K  — | j                  «       }	 |j                  | _        dd„}|j                  €J ‚ ||j                  «      | _        | j                  | j                  «       d –—  | j                  |Ž  y #  | j                  |Ž  w xY w­w)Nc                ó¸   — t        | «      t        k(  r
t        «       S t        | «      t        k(  rt        | j                  «      S t	        dt        | «      › d�«      ‚)NzUnexpected tracer type: rž  )rœ   rA   r’  rª  r¿   )Úparent_tracers    rV   Ú_create_sub_fx_tracerzD_MakefxTracer._init_modes_from_parent.<locals>._create_sub_fx_tracerû  sV   € Ü˜Ó&¬/Ò9Ü*Ó,Ð,Ü˜-Ó(Ô,>Ò>Ü-¨m×.FÑ.FÓGÐGä&Ø2´4¸Ó3FÐ2GÀqÐIóð rX   )r  r  r  rA   )rî  rÝ   ré  r  rö  )r‹  r  r  r  s       rV   Ú_init_modes_from_parentz%_MakefxTracer._init_modes_from_parentð  sŠ   è ø€ ð ×+Ñ+Ó-ˆ
ð	-Ø$1×$BÑ$BˆDÔ!óð !×*Ñ*Ð6Ð6Ð6Ù2°=×3JÑ3JÓKˆDŒNØ×0Ñ0°·±Ô@ÛàˆD×Ñ Ò,øÐˆD×Ñ Ò,üs   ‚B”AA= Á-BÁ=BÂBc           	     ó  ‡ ‡
— dd l Š
t        j                  ˆ
fd„|«      }dˆ ˆ
fd„}dd„} ||«      } |||«      }t        j                  t
        ‰ j                  «      }t        «       5 }|j                  t        ‰ j                  «      «       ‰ j                  r|j                  ‰ j                  «       |j                  ‰ j                  «       |j                  ‰ j                  «       |j                  ‰ j                  «       |j                  |«       |j                  t        «       «       |j                  t!        ‰ «      «       ‰ j"                  €J ‚	 t%        t'        ||‰ j"                  ‰ j(                  «      ‰ j"                  t+        |«      ¬«      }		 d d d «       ‰ j0                  d
k(  r)‰ j                  €J ‚‰ j                  j2                  	_        	S # t,        $ r t/        dd„ ˆ fd„¬	«       ‚ w xY w# 1 sw Y   ŒcxY w)Nr   c                óD   •— ‰j                   j                  j                  S rS   )r  Ú_symbolic_traceÚPH)r[   rÓ   s    €rV   rW   z,_MakefxTracer._trace_inner.<locals>.<lambda>  s   ø€ ¨¯©×(@Ñ(@×(CÑ(C€ rX   c                ón   •‡— dŠdˆˆˆfd„}d„ ||dœ}t        j                  |‰j                     | «      S )Nr   c                ó‚  •— ddl m} ‰j                  €J ‚ |d‰› �«      }t        | t        «      r"‰dz  Š‰j                  j                  | |¬«      S t        | «      t        u rz‰j                  dk(  rk‰j                  j                  €J d«       ‚‰j                  j                  j                  ‰j                  j                  j                  | |d ¬«      | |¬	«      S t        | ‰j                  «      r0‰j                  j                  j                  ‰j                  | «      S t        | t         «      rJ d
| › d�«       ‚| S )Nr   )ÚConstantSourceÚinputr:   )Úsourcerÿ  r   )Úpositive)Úhintr  zScriptObject z. has been fakified. Cannot wrap_fake it again.)Útorch._dynamo.sourcer  rÝ   r‡   r   Úfrom_tensorrœ   r×   r;  rý  Úcreate_symintnodeÚcreate_symbolÚScriptObjectÚ_libraryÚfake_class_registryÚmaybe_to_fake_objr   )ra   r  r  Ú	arg_countr‹  rÓ   s      €€€rV   Úinner_wrap_fakezG_MakefxTracer._trace_inner.<locals>._wrap_fake.<locals>.inner_wrap_fake  sZ  ø€ õ @à×,Ñ,Ð8Ð8Ð8Ù'¨%°	¨{Ð(;Ó<�Ü˜a¤Ô(Ø ‘N�IØ×0Ñ0×<Ñ<¸QÀvÐ<ÓNÐNä˜!“W¤‘^¨×(9Ñ(9¸ZÒ(Gà×-Ñ-×7Ñ7ÐCðLàKóLØCà×0Ñ0×:Ñ:×LÑLØ×-Ñ-×7Ñ7×EÑEØ˜v°ð Fó ð Ø%ð Mó ð ô    5×#5Ñ#5Ô6Ø Ÿ>™>×=Ñ=×OÑOØ×-Ñ-¨qóð ô &ØÔ'ôð Uà" 1 #Ð%SÐTóUð ð �rX   c                ó   — | S rS   rh   r½   s    rV   rW   z@_MakefxTracer._trace_inner.<locals>._wrap_fake.<locals>.<lambda>=  s   €  !€ rX   ©ri  rú  rÿ  )ra   r$  r  r$  )r^   rw  r;  )rò   r%  Úwrap_fn_mapr$  r‹  rÓ   s      @€€rV   Ú
_wrap_fakez._MakefxTracer._trace_inner.<locals>._wrap_fake  s>   ù€ ØˆI÷!ñH $Ø'Ø+ñˆKô
 —?‘? ;¨t×/@Ñ/@Ñ#AÀ4ÓHÐHrX   c                óâ   — t        t        j                  | «      d«      r:t        j                  | «      j                  j                  t        j
                  z  rt        | t        |«      «      S | S )NÚ__code__)r†   Úinspectru  r+  Úco_flagsÚ
CO_VARARGSrr   rš  )rñ   Úphss     rV   Ú
_wrap_funcz._MakefxTracer._trace_inner.<locals>._wrap_funcC  sP   € äœGŸN™N¨1Ó-¨zÔ:Ü—>‘> !Ó$×-Ñ-×6Ñ6¼×9KÑ9KÒKô & a¬¨S«Ó2Ð2ØˆHrX   )rŽ   rø  Úartifactc                 ó   — dddœS )NÚmake_fx_fail_partialÚstring)r^  Úencodingrh   rh   rX   rV   rW   z,_MakefxTracer._trace_inner.<locals>.<lambda>m  s   € Ø 6Ø$,ñ)€ rX   c                 ój   •— ‰ j                   j                  j                  dddd¬«      j                  S )Nr‹  T)Úroot_moduleÚverboseÚinclude_strideÚinclude_device)ré  rF  Úpython_codeÚsrcrŠ  s   €rV   rW   z,_MakefxTracer._trace_inner.<locals>.<lambda>q  s8   ø€  t§~¡~×';Ñ';×'GÑ'GØ$*Ø $Ø'+Ø'+ð	 (Hó (÷
 ‘cð rX   )Úmetadata_fnÚ
payload_fnrÿ  )rò   rN   r  rN   )rñ   úCallable[_P, R]r/  zSequence[PHBase]r  r?  )rÇ  r^   rw  rž   rŸ   r:  rç   r   Úenter_contextrv   rt   rÝ   rê  rè  rë  rˆ  Ú_set_make_fx_tracerré  rB   r  rw  rZ   Ú	Exceptionr   r;  rý  )r‹  rñ   rò   r/  r)  r0  rK  rç   Ústackr4  rÓ   s   `         @rV   Ú_trace_innerz_MakefxTracer._trace_inner  sÅ  ù€ ó 	ä�o‰oÓCÀTÓJˆö+	IóZ	ñ ˜$ÓˆÙ˜!˜SÓ!ˆô .4¯[©[Ü" D§O¡Oó.
ˆ
ô ‹[ð  	˜EØ×Ñ¤	¨$×*BÑ*BÓ CÔDØ×$Ò$Ø×#Ñ# D×$9Ñ$9Ô:Ø×Ñ × ;Ñ ;Ô<Ø×Ñ × 8Ñ 8Ô9Ø×Ñ × ;Ñ ;Ô<Ø×Ñ 
Ô+Ø×ÑÔ 6Ó 8Ô9Ø×ÑÔ 3°DÓ 9Ô:à—>‘>Ð-Ð-Ð-ðÜ"Ü˜T 4¨¯©¸×9JÑ9JÓKØŸ>™>Ü"'¨£*ô‘÷ 	ðF ×Ñ 
Ò*Ø×(Ñ(Ð4Ð4Ð4Ø×/Ñ/×9Ñ9ˆAŒKØˆøô) ò Ü Øñ!ó õð ðú÷% 	ð  	ús    Á*C/G>ÅAGÇG;Ç;G>Ç>Hc                óx   — | j                  ||«      5   | j                  |g|¢­Ž cd d d «       S # 1 sw Y   y xY wrS   )r
  rD  )r‹  rñ   rò   s      rV   ró  z_MakefxTracer.trace€  s<   € Ø×)Ñ)¨!¨TÓ2ñ 	/Ø$�4×$Ñ$ QÐ.¨Ò.÷	/÷ 	/ò 	/ús   “0°9c           	     ó  — t        | j                  d| j                  | j                  | j                  | j
                  | j                  «      }|j                  | «      5   |j                  |g|¢­Ž cd d d «       S # 1 sw Y   y xY w)Nri  )	rá  rt   ræ  rw  rç  rQ  ro  r  rD  )r‹  rñ   rò   Ú
sub_tracers       rV   Útrace_subgraphz_MakefxTracer.trace_subgraph„  s   € ä"Ø×$Ñ$ØØ×'Ñ'Ø×ÑØ×$Ñ$Ø×%Ñ%Ø×-Ñ-ó
ˆ
ð ×/Ñ/°Ó5ñ 	5Ø*�:×*Ñ*¨1Ð4¨tÒ4÷	5÷ 	5ò 	5ús   ÁA<Á<BN)rt   r|  r;  rÚ  ræ  r¨   rw  r¨   rç  r¨   rQ  r¨   ro  r¨   r  r  )r  z	list[Any])rð  zOptional[FakeTensorMode]rñ  z*Union[nullcontext, ProxyTorchDispatchMode]rò  z0Union[nullcontext, PreDispatchTorchFunctionMode]ró  zOptional[PythonKeyTracer]rô  zUnion[nullcontext, Any]rõ  z-Union[nullcontext, TorchFunctionMetadataMode]r  r  )rñ   r   rò   r#  r  úGenerator[None, None, None])ré  r  r  r  )r  rá  r  rI  )rñ   r   rò   r$  r  r&   )rñ   r   rò   r$  r  rz  )rz   r{   r|   rŒ  rî  rö  r
   r
  r  r  rD  ró  rH  rh   rX   rV   rá  rá  _  s  „ ð&àDð&ð ð&ð !%ð	&ð
 ð&ð "ð&ð #ð&ð '+ð&ð 
ó&óP
ðBà7ðBð DðBð #Sð	Bð
 2ðBð &=ðBð &SðBð 
óBð  ð8-Øð8-Ø!3ð8-à	$ò8-ó ð8-ótKð& ð-Ø*ð-à	$ò-ó ð-ó6róh/ô5rX   rá  zOptional[_MakefxTracer]Ú_CURRENT_MAKE_FX_TRACERc              #  ó8   K  — t         }	 | a d –— |a y # |a w xY w­wrS   )rJ  )rŽ   Úprev_tracers     rV   rA  rA  –  s'   è ø€ ô *€Kð.Ø"(ÐÛà"-Ñø +Ñüs   ‚Š �“—F)rw  rç  rQ  ro  c          	     óv   ‡ ‡	— |dv sJ ‚t        |||||||«      Š	t        j                  ‰ «      dˆ ˆ	fd„«       }|S )zÚ
    Given a function f, return a new function which when executed with valid
    arguments to f, returns an FX GraphModule representing the set of operations that
    were executed during the course of execution.
    r'  c                 ó*   •—  ‰j                   ‰g| ¢­Ž S rS   )ró  )rò   rñ   Úmake_fx_tracers    €€rV   r  zmake_fx.<locals>.wrapped¾  s   ø€ à#ˆ~×#Ñ# AÐ-¨Ò-Ð-rX   )rò   r$  r  r&   )rá  rï   r  )
rñ   rt   r;  ræ  rw  rç  rQ  ro  r  rO  s
   `        @rV   rC   rC   ¡  sW   ù€ ð" Ð7Ñ7Ð7Ð7ä"ØØØØØØØ$ó€Nô ‡_�_�QÓõ.ó ð.ð €NrX   c                 óR   — t         j                  j                  j                  «       S rS   )rÓ   r  Ú_python_dispatchÚ _get_current_dispatch_mode_stackrh   rX   rV   Úget_torch_dispatch_modesrS  Å  s   € Ü�;‰;×'Ñ'×HÑHÓJÐJrX   c                 ó   — t        «       S rS   )rG   rh   rX   rV   rF   rF   Ë  s   € ÜÓÐrX   c                 ó4  — t         j                  j                  t         j                  j                  j
                  «      } t         j                  j                  t         j                  j                  j
                  «      }| �|�J d| › d|› �«       ‚| xs |S )z–
    Current the currently active proxy tracing mode, or None if
    we are not currently tracing.  This includes pre-dispatch proxy
    tracing.
    zpre_dispatch_mode=z, mode=)rÓ   r?  Ú_get_dispatch_mode_pre_dispatchr0  r<  r=  Ú_get_dispatch_mode)Úpre_dispatch_moderç  s     rV   rG   rG   Ï  s†   € ô Ÿ
™
×BÑBÜ�‰×&Ñ&×,Ñ,óÐô �8‰8×&Ñ&¤u§x¡x×'EÑ'E×'KÑ'KÓL€DàÐ! T \ð=à	Ð-Ð.¨g°d°VÐ<ó=Ø1àÒ$ Ð$rX   c                óŠ   — t        «       }|sJ ‚t        «       5  g }|j                  | |||«      cddd«       S # 1 sw Y   yxY w)z¢
    Call into the currently active proxy tracing mode to do a
    SymInt/SymFloat/SymBool dispatch trace on a function that operates on
    these arguments.
    N)rG   r  r`  )rK  rò   ró   rç  r  s        rV   rH   rH   ß  sM   € ô Ó€DÙ€Kˆ4ô 
%Ó	&ñ @àˆØ×$Ñ$ T¨5°$¸Ó?÷@÷ @ò @ús	   ™9¹Ac                 ó\   — t        t        j                  j                  j                  «      S rS   )r0   rÓ   r0  r<  r=  rh   rX   rV   r  r  ï  s   € äœuŸx™x×=Ñ=×CÑCÓDÐDrX   c                ó  ‡— ddl m} ‰t        v rb|j                  ddˆfd„«      rt        S | 5  | xj
                  dz  c_        t        ‰   |i |¤Ž}| xj
                  dz  c_        |cd d d «       S t        S # 1 sw Y   t        S xY w)Nr   )ÚCompilerBisectorÚaot_eager_decomp_partitionÚdecompositionc                 ó   •— t        ‰ «      S rS   )Úrepr)rÑ  s   €rV   rW   z%maybe_handle_decomp.<locals>.<lambda>þ  s   ø€ Ä4ÈÃ8€ rX   r:   )Ú!torch._inductor.compiler_bisectorr\  rM   Údisable_subsystemrg  r=  )rç   rÑ  rò   ró   r\  rƒ  s    `    rV   rh  rh  ô  s‘   ø€ õ Cà	Ô(Ñ(Ø×-Ñ-Ø(¨/Ó;Kô
ô "Ð!àñ 	Ø×$Ò$¨Ñ)Õ$Ü-¨bÑ1°4ÐB¸6ÑBˆCØ×$Ò$¨Ñ)Õ$Ø÷		ñ 	ô Ð÷	ô Ðús   ®:A8Á8Bc                óŽ   — t        | ||«      \  }}t        «       5   t        |||¬«      |«      }ddd«       |S # 1 sw Y   S xY w)a  A helper function used to get the GraphModule for the given func.

    It's expected to be used in the ProxyTensor tracing context.
    It detaches the args and kwargs from the current tracer so that the trace of
    the current graph module can be created without any side-effects.
    )rt   r;  N)r‚  r  rC   )rK  rò   ró   r;  rt   r  Úall_argsÚgms           rV   Úget_isolated_graphmodulerf  	  sY   € ô 5°T¸4ÀÓHÑ€GˆXä	$Ó	&ñ ð
ŒWØÐ)<È<ô
à
óˆ÷ð €I÷	ð €Iús	   ›:ºAc                ó>  — ddl m} t        j                  j	                  t        j                  j
                  j                  «      }|rT|j                  rG ||j                  | «      x}r1t        |t        «      sJ |«       ‚||j                  j                  d<   yyyy)zOA helper function for setting up unbacked_bindings on the destination FX graph.r:   )Úcompute_unbacked_bindingsÚunbacked_bindingsN)rï  rh  rÓ   r0  rW  r<  ÚFAKErý  r‡   r'   rˆ   r�   )rƒ  Ú	out_proxyrh  rÄ   Úsymbol_to_paths        rV   r%  r%  !	  s…   € å:ô —‘×+Ñ+¬E¯H©H×,JÑ,J×,OÑ,OÓP€IÙ�Y×(Ò(Ù6°y×7JÑ7JÈCÓPÐPˆ>ÐPÜ˜i¬Ô/Ð:°Ó:Ð/Ø7EˆI�N‰N×ÑÐ 3Ò4ð Qð )€yrX   )rl   r?  rp   r×   r  r?  )rt   r|  r  z4Generator[Mapping[OpOverload, Callable], None, None])rˆ   r€   r  r¨   )r�   r   rŽ   r  r�   rŠ   r  r  )r�   rÜ  rŽ   r  r�   r'   r  r  )r�   r~   rŽ   r  r�   r    r  r  )r�   z.Union[PySymType, _AnyScriptObjectType, Tensor]rŽ   r  r�   r$  r  r  )r�   r   rŽ   r  r  r¨   )r�   r   rŽ   r  r  rŠ   )r�   r   rŽ   r  r°   rO   r  zUnion[_ProxyTensor, U])
r�   r   rŽ   r  r°   rO   r´   zCallable[[_ProxyTensor], R]r  úUnion[R, U])r�   rÜ  rŽ   r  r  r'   )r�   rÜ  rŽ   r  r°   rO   r  zUnion[Proxy, U])
r�   rÜ  rŽ   r  r°   rO   r´   zCallable[[Proxy], R]r  rm  )r�   r~   rŽ   r  r  r    )r�   r~   rŽ   r  r°   rN   r  zUnion[T, _PySymProxyType])
r�   r~   rŽ   r  r°   rO   r´   zCallable[[_PySymProxyType], R]r  rm  )
r�   ú.Union[Tensor, _AnyScriptObjectType, PySymType]rŽ   r  r°   r$  r´   r   r  r$  )r…   r   r  r*  )r…   rÇ   r  rÇ   )rŽ   r  rß   r¨   r  rI  )r  rI  )r�   r'   r…   rÇ   r  r'   )
rŽ   r  rñ   r?  rò   r
  ró   r  r  zThunk[R])
r  r   r�   r'   r  r*  rŽ   r  r  r  )
r&  rN   r'  r  r  r  rŽ   r  r  rN   )rŽ   r  r  z5Callable[[PySymType], Union[bool, int, float, Proxy]])rŽ   r  r4  r   r  zUnion[_ProxyTensor, Tensor])rŽ   r  r4  rÜ  r  rÝ  )rŽ   r  r4  r~   r  z!Union[_PySymProxyType, PySymType])rŽ   r  r4  rn  r  r$  )rK  r$  rç   r:  r  r  )rç   r:  rK  r>   rw  r¨   rò   r#  ró   ra  r  r$  )rè  ztype[TorchFunctionMode]r  zCCallable[[], _GeneratorContextManager[Optional[TorchFunctionMode]]]rS   )r¸  rß  rŽ   r(   rø  zOptional[tuple[Any, ...]]r  r&   )
rñ   r?  r
  r
  rŽ   r  rw  r¨   r  r?  )rK  r>   r  rI  )rK  zCallable[..., R]rò   r#  ró   ra  r  z0tuple[Callable[[list[object]], R], list[object]])rŽ   rá  r  rI  )Nri  F)rñ   r   rt   r|  r;  rÚ  ræ  r¨   rw  r¨   rç  r¨   rQ  r¨   ro  r¨   r  zCallable[..., GraphModule])r  zlist[TorchDispatchMode])r  z Optional[ProxyTorchDispatchMode])rK  r?  rò   r
  ró   r  r  rQ   )r  z-Generator[ProxyTorchDispatchMode, None, None])
rç   r:  rÑ  r>   rò   r#  ró   ra  r  r$  )ri  N)rK  r   rò   r#  ró   ra  r;  rÚ  rt   r|  r  r&   )rƒ  r$  rk  r  r  r  )ÑÚ
__future__r   rï   r,  Úloggingr]  rL  rž   rÙ   rÈ  rf  Úcollectionsr   r   Úcollections.abcr   r   r   Ú
contextlibr	   r
   r   r   Údataclassesr   r   r   r   r   r   r   r   r   r   r   r   r   rÓ   Ú
torch._opsÚtorch.fxr  Útorch.fx.tracebackr  Útorch.utils._pytreer  Ú_pytreer^   r   r   r   Útorch._dispatch.pythonr   Ú"torch._library.fake_class_registryr   Útorch._loggingr   Útorch._subclasses.fake_implsr    Útorch._subclasses.fake_tensorr!   r"   r#   r$   Útorch._subclasses.meta_utilsr%   r&   r'   r(   Útorch.fx.graph_moduler)   Útorch.fx.noder*   r+   r,   Útorch.fx.passes.shape_propr-   Útorch.nnr.   rä  r/   Útorch.utils._python_dispatchr0   r1   r2   r3   Útorch.utils._statsr4   Útorch.utils._thunkr5   Útorch.utils._tracebackr6   Útorch.utils.weakr7   r8   r9   Ú_backward_stater;   Úsym_noder<   r  r=   r¡   r>   Útorch.fx._symbolic_tracer?   Útorch.typesr@   Ú__all__r  r   rš   rÜ  rÿ   r   rC  Ú	getLoggerrz   r–   Ú_loggingÚgetArtifactLoggerrf  rM   rƒ   ra  rN   rO   rP   rQ   rœ   Únull_ctx_typeÚregister_pytree_nodeÚSizerr   rv   r$  Ú
proxy_slotrx   Ú
no_defaultrE   r~   r€   r‰   r�   r«   r    r©   rÆ   rT   rZ   rÏ   rÚ  r×   rØ   r¨   rÇ   rÎ   rã   rJ   rI   rë   rô   r  r  r  r(  rŠ   r1  r5  r¶  r·  rP  rM  r…  r‡  rA   rê  Ú_disable_dynamorB   r  r  r  r  Ú)_temp_remove_metadata_torch_function_moder'  Ú-_temp_remove_pre_dispatch_torch_function_moder:  r�   ÚGraphAppendingTracerrK   ÚInterpreterrD   r‚  rˆ  r·  rŠ  rŒ  r’  rá  rJ  rA  rC   rS  rF   rG   rH   r  rh  rf  r%  rh   rX   rV   ú<module>r›     sÕ
  ðö #ã Û Û Û Û Û Û Û Û ß 0ß 8Ñ 8ß WÓ WÝ !÷	÷ 	ó 	÷ ;Ñ :Ý %ã Û Ý ß )Ð )ß $Ð $ß )Ñ )Ý ;Ý ?Ý +Ý 4÷ó õ 7ß /Ñ /Ý .÷ñ õ
 @Ý Ý -÷ó õ %Ý $Ý 4ß WÑ Wå *Ý ñ ÛÝ.ãå%Ý/Ý'ò€ð ÐAÑB€à×&Ñ&Ð(8Ð9Ð Ø˜U×/Ñ/Ð1AÐAÑBÐ à‡y�y‡~�~€Ø‡y�y‡~�~€à€g×Ñ˜Ó!€Ø—n‘n×6Ñ6°xÐARÓSÐ à=?Ð Ð:Ó ?àÐ áˆCƒL€ÙˆCƒL€Ùˆtƒ_€ÙˆCƒL€á�[Ó!€ð €× Ò Ø	‡J‚JÙÙñð &õ	óBð ð	>Ø@ð	>à9ò	>ó ð	>ñ ‹X€
÷	ñ 	ñ ‹\€
ç /ôˆxô óMð
 
òó 
ðð 
ðØ	ðØ'3ðØ<Aðà	òó 
ðð 
ðØ	ðØ(ðØ1@ðà	òó 
ðð)AØ	7ð)Aàð)Að ð)Að 
ó	)AóXDð
 ˜‘,€ð 
ðØ	ðàðð òó 
ðð 
ðØ	ðàðð ðð ò	ó 
ðð 
ðØ	ðàðð ðð +ð	ð
 òó 
ðð 
ðØ	ðàðð òó 
ðð 
ðØ	ðàðð ðð ò	ó 
ðð 
ðØ	ðàðð ðð $ð	ð
 òó 
ðð 
ðØ	ðàðð òó 
ðð 
ðØ	ðàðð ðð ò	ó 
ðð 
ðØ	ðàðð ðð .ð	ð
 òó 
ðð !Ù%ð	Ø	7ðàðð ðð ð	ð
 óó>ð Ø	ØØØØÐÑØÐ$Ñ%ØˆSÐ#Ð#Ñ$ØØØØð		ññ€ó %(ðP à,0ñ%Øð%Ø%)ð%à ò%ó ð%ð$ òó ðð òó ðó0	ð Øð Ø,ð Ø5<ð ØHQð àó ðFBØðFBØ ðFBØ/?ðFBØIUðFBà	óFBðR Ø	ˆ8�OÑ$ g¨f°oÐ.EÑ&FÐFñ€ð Ø
ˆHÐ%Ñ&¨°Ð8HÐ0HÑ(IÐIñ€ð
TØðTàðTð 'ð	Tð
 ðTð óTðn ÷ð ó ðð
Øðà:óð* 
òó 
ðð 
ðØðØ1ðà'òó 
ðð 
ðØðØ&ðà&òó 
ðð(Øð(ØKð(àó(ð ˜Ÿš×+Ò+¨ZÐ8€ð=Ø
ð=Ø4ð=à	ó=ð4WØ&ðWà
ðWð ðWð ð	Wð
 ðWð óW÷t'ñ 'ô>q�fô qðh$Ø$ð$àHó$ðN ×Òð 04ð)NØ
!ð)Nàð)Nð -ð)Nð ò	)Nó ð)NðXØðØ!(ðØ2>ðØNRðàóð@ #'€ÐÓ &ð òó ðô%Ð 1ô %ñ" -SØó-Ð )ô$%Ð#4ô $%ñN 1WØ ó1Ð -ô
FÐ.ô FôR"˜bŸhšh×;Ò;ô "ô440˜rŸ~š~ô 40ðnØ
ðØ"4ðØ>Oðà5óð ò4ó ð4ô	¨)ô 	÷
ñ ô
l˜ô l÷^	q5ñ q5ðh	 48Ð Ð0Ó 7ð ò.ó ð.ð DHØØ#(ð	!ð Ø %Ø!&Ø)-ñ!Øð!à@ð!ð ð!ð !ð	!ð ð!ð ð!ð ð!ð #'ð!ð  ó!óHKóó%ó @ð  òEó ðEðØ&ðàðð ðð ð	ð
 óð6 ØCGðØ
ðà
ðð ðð ð	ð
 Aðð óô,FrX   