Ë
    ÄÓ^jQ ã                   óv  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dl mZ d dlmZmZmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z* er
d dl+Z+d dl,m-Z- d dl.Z.d dl/m0c m1Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZE d dlmFZF d dlmGZG d dlHmIZImJZJ d dlKmLZL d dlMmNZN d dlOmPZP d dlQmRZR ddlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z` g d¢Zae
e.jÄ                  jÆ                  gePdz  f   ZdejÊ                   G d„ d«      «       ZfejÊ                   G d„ d «      «       Zgd!„ Zhd"eidz  d#e2jÔ                  d$eidz  d%e2jÔ                  d&ekf
d'„Zle.jÚ                  jÜ                  jÞ                  e.jÚ                  jÜ                  jà                  e.jÚ                  jÜ                  jâ                  e.jÚ                  jÜ                  jä                  e.jÚ                  jÜ                  jæ                  e.jÚ                  jÜ                  jè                  e.jÚ                  jÜ                  jê                  e.jÚ                  jÜ                  jì                  e.jÚ                  jÜ                  jî                  e.jÚ                  jÜ                  jð                  e.jÚ                  jÜ                  jò                  e.jÚ                  jÜ                  jô                  gZ{e.jÚ                  jÜ                  jø                  e.jÚ                  jÜ                  jú                  e.jÚ                  jÜ                  jü                  e.jÚ                  jÜ                  jþ                  e.jÚ                  jÜ                  �j                   e.jÚ                  jÜ                  �j                  e.jÚ                  jÜ                  �j                  e.jÚ                  jÜ                  �j                  e.jÚ                  jÜ                  �j                  g	Z…ed(„ «       Z†d)e‡e.�j                  �j                  e
f   d&eŠe‡e.�j                  �j                  e
f   d*f   fd+„Z‹dFd,„ZŒd-d.d/e‡e.�j                  �j                  e
f   d0e‡e.�j                  �j                  e
f   d1e�dz  fd2„ZŽd3e.jÄ                  jÆ                  d4eWd&eŠe.jÄ                  jÆ                  eWf   fd5„Z�d3e.jÄ                  jÆ                  fd6„Z�d7e.jÄ                  jÆ                  d8eWd3e.jÄ                  jÆ                  d9eWd:e‘eg   f
d;„Z’d/e‡e.�j                  �j                  e
f   d0e‡e.�j                  �j                  e
f   d1e�dz  d<ekfd=„Z“ G d>„ d.«      Z”d?„ Z•	 dGd3e.jÄ                  jÆ                  d@dAd&dBfdC„Z–dD„ Z—dE„ Z˜y)Hé    N)Údefaultdict)ÚCallableÚIterator)Úcontextmanager)ÚAnyÚfinalÚ
NamedTupleÚTYPE_CHECKING)ÚtracingÚTracingContext)Úautograd_not_implemented)ÚFakeScriptObject)Ú_deregister_op_implÚ_is_op_registered_to_fake_ruleÚregister_op_impl)ÚFakeTensorMode)Ú_ConstantAttributeType)Ú#first_call_function_nn_module_stack)Ú_PyTreeCodeGenÚ_PyTreeInfo)Úimmutable_dictÚimmutable_list)Úinsert_deferred_runtime_asserts)ÚValueRanges)Ú_build_cacheÚ_collect_all_valid_cia_opsÚ_collect_and_set_constant_attrsÚ_collect_param_buffer_metadataÚ_detect_fake_mode_from_gmÚ_fakify_params_buffersÚ_get_decomp_for_ciaÚ_is_preservable_cia_opÚ_name_hoo_subgraph_placeholdersÚ7_override_graph_signature_for_temp_registered_constantsÚ/_overwrite_signature_for_non_persistent_buffersÚ)_populate_param_buffer_metadata_to_new_gmÚ_register_constants_as_buffersÚ_rename_without_collisionsÚ_special_op_to_preserve_ciaÚplaceholder_naming_pass)ÚVerifier©Údetect_fake_mode©Úunset_fake_temporarily)Úis_equivalentÚreorder_kwargs©ÚCustomDecompTable)Úcompatibility)Ú
PassResult)ÚPassManageré   )ÚArgumentSpecÚConstantArgumentÚCustomObjArgumentÚExportGraphSignatureÚ	InputKindÚ	InputSpecÚ
OutputKindÚ
OutputSpecÚSymBoolArgumentÚSymFloatArgumentÚSymIntArgumentÚTensorArgumentÚTokenArgument)ÚExportedProgramÚModuleCallEntryÚModuleCallSignatureÚdefault_decompositionsc                   óŠ   — e Zd ZU ee   ed<   ee   ed<   ej                  ed<   ej                  ed<   dZee	   dz  ed<   d„ Z
y)rG   ÚinputsÚoutputsÚin_specÚout_specNÚforward_arg_namesc                 óô   — | j                   D ]-  }|j                  |j                  k(  sŒ|j                  |_        Œ/ | j                  D ]-  }|j                  |j                  k(  sŒ|j                  |_        Œ/ y ©N)rJ   ÚnamerK   )ÚselfÚoriginal_nodeÚnew_nodeÚiÚos        úh/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/export/exported_program.pyÚreplace_all_uses_withz)ModuleCallSignature.replace_all_uses_withi   sd   € Ø—‘ò 	'ˆAØ�v‰v˜×+Ñ+Ó+Ø!Ÿ™�•ð	'ð —‘ò 	'ˆAØ�v‰v˜×+Ñ+Ó+Ø!Ÿ™�•ñ	'ó    )Ú__name__Ú
__module__Ú__qualname__Úlistr8   Ú__annotations__ÚpytreeÚTreeSpecrN   ÚstrrX   © rY   rW   rG   rG   a   sE   … à�ÑÓØ�,ÑÓØ�_‰_ÓØ�o‰oÓØ*.Ð�t˜C‘y 4Ñ'Ó.ó'rY   rG   c                   ó,   — e Zd ZU eed<   dZedz  ed<   y)rF   ÚfqnNÚ	signature)rZ   r[   r\   ra   r^   re   rG   rb   rY   rW   rF   rF   r   s   … à	ƒHØ,0€IÐ" TÑ)Ô0rY   rF   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                  óT   •— t        «       5   ‰| i |¤Žcd d d «       S # 1 sw Y   y xY wrP   r.   )ÚargsÚkwargsÚfns     €rW   Úwrapperz/_disable_prexisiting_fake_mode.<locals>.wrappery   s+   ø€ ä#Ó%ñ 	'Ù�tÐ&˜vÑ&÷	'÷ 	'ò 	'ús   Œž')Ú	functoolsÚwraps)rj   rk   s   ` rW   Ú_disable_prexisiting_fake_modern   x   s%   ø€ Ü‡_�_�RÓó'ó ð'ð €NrY   Ú
spec1_typeÚspec1_contextÚ
spec2_typeÚspec2_contextÚreturnc                 óú   — | �|€| |u xr ||k(  S t        | t        t        f«      rt        |t        t        f«      r||k(  S t        | t        t        f«      rt        |t        t        f«      r||k(  S | |u xr ||k(  S )zeTreat containers and their immutable variants as the same type. Otherwise
    compare as normal.
    )Ú
issubclassÚdictr   r]   r   )ro   rp   rq   rr   s       rW   Ú_fx_collection_equivalence_fnrw   �   s“   € ð Ð˜ZÐ/Ø˜ZÐ'ÒJ¨M¸]Ñ,JÐJä�*œt¤^Ð4Ô5¼*Ø”Tœ>Ð*ô;ð  Ñ-Ð-ä�*œt¤^Ð4Ô5¼*Ø”Tœ>Ð*ô;ð  Ñ-Ð-à˜Ð#ÒF¨¸Ñ(FÐFrY   c              #   óà  K  — i }t        «       }| j                  «       D �]x  \  }}|j                  j                  «       ||<   |j	                  |«       t
        D ]3  }||j                  vsŒ |j                  |«      t        |d¬«      «       Œ5 t        |«      }t        j                  j                  j                  |j                  v r/|j                  t        j                  j                  j                  =  |j                  t        j                  j                  j                  «      |«       d„ }t        |«      s& t        |«      t        j                   ||¬«      «       t"        D ](  }||j                  vsŒ |j                  |«      |«       Œ* �Œ{ 	 d –— |D ]_  }	|	j                  j%                  «        |	j                  j'                  ||	   «       |	j(                  j%                  «        t+        |	«       Œa y # |D ]_  }	|	j                  j%                  «        |	j                  j'                  ||	   «       |	j(                  j%                  «        t+        |	«       Œa w xY w­w)NT)Údeferred_errorc                 óR   — |d   }|d= | 5   ||i |¤Žcd d d «       S # 1 sw Y   y xY w)NÚoriginal_callablerb   )Úfake_tensor_modeÚoprh   ri   Úorig_cia_callables        rW   Ú$_force_dispatch_to_orig_cia_callablezQ_override_composite_implicit_decomp.<locals>._force_dispatch_to_orig_cia_callableè   s<   € Ø &Ð':Ñ ;ÐØÐ*Ð+Ø!ñ :Ù(¨$Ð9°&Ñ9÷:÷ :ò :ús   ‹�&)r{   )ÚsetÚitemsÚ
py_kernelsÚcopyÚaddÚ(_AUTOGRAD_ALIAS_BACKEND_KEYS_TO_OVERRIDEÚpy_implr   r!   ÚtorchÚ_CÚDispatchKeyÚCompositeImplicitAutogradr   r   rl   ÚpartialÚ_BACKEND_KEYS_TO_OVERRIDEÚclearÚupdateÚ_dispatch_cacher   )
Úcia_ops_to_callableÚsaved_tablesÚpatched_opsÚop_overloadÚdecomp_callableÚoverride_dispatch_keyr~   r   Úkeyr}   s
             rW   Ú#_override_composite_implicit_decompr—   ¿   s  è ø€ ð €LÜ“%€KØ(;×(AÑ(AÓ(Có =<Ñ$ˆ�_Ø$/×$:Ñ$:×$?Ñ$?Ó$Aˆ�[Ñ!Ø�‰˜Ô$Ü%Mò 	Ð!Ø$¨K×,BÑ,BÒBà:�×#Ñ#Ð$9Ó:Ü,¨[ÈÔNõð	ô 0°Ó<ÐÜ�8‰8×Ñ×9Ñ9¸[×=SÑ=SÑSØ×&Ñ&¤u§x¡x×';Ñ';×'UÑ'UÐVàKˆ×ÑœEŸH™H×0Ñ0×JÑJÓKØô	
ò	:ô .¨kÔ:Ø)Ô˜[Ó)Ü×!Ñ!Ø8Ø&7ôôô -ò 	<ˆCØ˜+×0Ñ0Ò0ð  )�×#Ñ# CÓ(Ð):Õ;ò#	<ðY=<ð~$Ûàò 	$ˆBØ�M‰M×ÑÔ!Ø�M‰M× Ñ  ¨bÑ!1Ô2Ø×Ñ×$Ñ$Ô&Ü Õ#ñ		$ø�+ò 	$ˆBØ�M‰M×ÑÔ!Ø�M‰M× Ñ  ¨bÑ!1Ô2Ø×Ñ×$Ñ$Ô&Ü Õ#ñ		$üs-   ‚A)I.Á,DI.Å?I.ÆH Æ A%I.ÈA&I+É+I.Údecomp_table.c                 óX  — t        t        «       «      }i }t        | j                  «       «      D ]f  }||v r| |   ||<   |j	                  |«       | |= Œ$t        |«      sŒ0|j                  «       }|j                  d«      rt        d|› �«      ‚| |   ||<   Œh |D ]  }t        ||<   Œ || fS )NÚatenz)This should be a custom op, got aten op: )
r€   r   r]   ÚkeysÚremover"   rQ   Ú
startswithÚAssertionErrorr)   )r˜   Úall_preservable_cia_opsr�   r}   Úop_nameÚks         rW   Ú,_split_decomp_table_to_cia_and_python_decompr¢     sÝ   € ô "Ô"<Ó">Ó?ÐØÐä�<×$Ñ$Ó&Ó'ò 7ˆð$ Ð(Ñ(Ø&2°2Ñ&6Ð Ñ#Ø#×*Ñ*¨2Ô.Ø˜RÑ ô $ BÕ'Ø—g‘g“iˆGØ×!Ñ! &Ô)Ü$Ø?À¸yÐIóð ð '3°2Ñ&6Ð Ò#ð?7ðF %ò =ˆÜ!<Ð˜AÒð=ð  Ð,Ð,rY   c                  ó   — t        «       S )z¸
    This is the default decomposition table which contains decomposition of
    all ATEN operators to core aten opset. Use this API together with
    :func:`run_decompositions()`
    r2   rb   rY   rW   rH   rH   B  s   € ô ÓÐrY   ÚeprE   Úcia_to_decompÚpython_decomp_tableÚjoint_loss_indexc                óü  — ddl m} ddlm} ddlm}m}m}	m}
m	}m
} ddlm} d„ } || |«      �s3| j                  «       }i t        |j                  d¬«      «      ¥t        |j!                  d¬«      «      ¥}dd	lm}  ||«       i t        |j                  d¬«      «      ¥t        |j!                  d¬«      «      ¥}t'        | j(                  «      }|€t+         |«       d
¬«      }|j,                  }t/        |j0                  j2                  t4        «      s+t7        dt9        |j0                  j2                  «      › �«      ‚|j0                  j2                  j:                  j<                  }|€t7        d«      ‚|j8                  t>        t@        fvrtC        jD                  |g«      }t5        tG        ||jH                  |«      «      |j0                  _        |jK                  «        tM        | jN                  | jP                  |«       tS        || jT                  | jN                  jV                  «      }tY        ||«      }t[        |«      }ddl.m/}m0} g }|j0                  jb                  D ]Ä  }|jd                  dk(  sŒt/        |jf                  d   th        «      rwd }|jf                  d   jj                  €'| jP                  |jf                  d   jl                     }n#|jf                  d   jj                  jn                  }|jq                  |«       Œ§|jq                  |jf                  d   «       ŒÆ ts        |«      }|5  tu        |«      5   || jv                  «      5  ty        |«      5  tC        jz                  ||jH                  «      } ||g |d   ¢|d   j}                  «       ¢­i |«      5 \  } }!}"}#}$ || |!|"||#|d|¬«      }%|%jP                  j                  «       D �&�'ci c]  \  }&}'|&t/        |'t€        «      r|$|'   n|'“Œ c}'}&|%_(        |%j‚                  }(|%j„                  })t‡        |)|«      })t‰        ||(|)«       t‹        | jN                  |)«      }) ||(|)|#«      }*t�        |(|)| |!|"||*«       d d d «       d d d «       d d d «       d d d «       d d d «        |
(«        ||(«        ||()«       t�        |(|)«      \  }(})i | jT                  ¥|j                  «       D �+�,ci c]  \  }+},|+|vr|+|,“Œ c},}+¥}-|j                  «       D ]W  \  }+},|+|-vr3t/        |,t�        j’                  j”                  «      rt7        d|+›d�«      ‚|+|-v sŒB|+|vsŒG|-j—                  |+«       ŒY |(|)|-fS | j(                  j0                  jb                  D �cg c]  }|jd                  dk(  sŒ|‘Œ }.}|.D �cg c]  }|jf                  d   ‘Œ }/}| j(                  j!                  «       D �+�0cg c]  \  }+}0|+‘Œ	 }1}+}0|1D ]  }+t™        | j(                  |+«       Œ t›        |/«      }2|2€t�        jž                  «       n|2}3|rtœ        jž                  n|}4 |	«       5  |35  tu        |«      5   |4«       5   || j(                  |/||d u|�|nd ¬«      \  }(}5t/        |(t�        j                   j¢                  «      sJ ‚|(j0                  j¥                  «        d d d «       d d d «       d d d «       d d d «       d„ }6(j0                  jb                  D �cg c]  }|jd                  dk(  sŒ|‘Œ }7}tA        |(j0                  j§                  «       j¨                  d   «      }8t«        |7«      t«        |.«      k7  r#t7        dt«        |7«      › dt«        |.«      › �«      ‚t­        |.|7«      D ]  \  }9}:|9jl                  x|:_6        |:_W        Œ i };t±        t²        «      }<tµ        «       }=|7D ]2  }>|>jl                  |;|>jl                  <   t·        |>jl                  |<|=«       Œ4 |(j0                  jb                  D ]:  }|jd                  dk(  rŒt¹        |;|<|=|jl                  |jl                  «      |_6        Œ< t»        |(«       ddl^m_}?m`}@ ddlamb}A t�        jÆ                  jÈ                  jÊ                  s]d}BtÍ        |(«      }C|C�N @|(tÏ        jÐ                  |?dBi¬«      «      5  tÓ        |(CdtÕ        |(j0                  «      › �d
¬«       d d d «       |(jK                  «        t­        |8 A|(«      «      D ]  \  }D}+|+€Œ	|+D_6        Œ t×        | jN                  jØ                  «      D �E�Fci c]C  \  }E}Ft/        |FjÚ                  tÜ        «      s$FjÚ                  jl                  |7E   jl                  “ŒE }G}E}Ft×        | jN                  jØ                  «      D �E�Fcg c]E  \  }E}Ftß        |Fjà                   |6|FjÚ                  |7|E   «      |Fj®                  |Fjâ                  «      ‘ŒG }H}E}Fg }It×        5jä                  «      D �E�+ci c]  \  }E}+|+|E“Œ
 }J}E}+t?        |5jæ                  jé                  «       «      }K|8d t«        |K«       D �cg c]  }|jl                  ‘Œ }L}K|Lk7  rt7        d K› d!L› �«      ‚|5jæ                  j                  «       D �]  \  }M}NJ|N   }E| jN                  jØ                  |E   }O|Ojà                  tê        jì                  tê        jî                  fvrt7        d"Ojà                  › �«      ‚Ojà                  tê        jî                  k(  rtð        jò                  ntð        jô                  }POjà                  tê        jî                  k(  rOj®                  nOjÚ                  jl                  }QIjq                  t÷        Ptù        M¬#«      |Q¬$«      «       �Œ t×        | jN                  jú                  «      D ]„  \  }E}FIjq                  t÷        |E|k(  rtð        jü                  nFjà                   |6FjÚ                  |8t«        K«      Ez      «      Gjÿ                  |Fj®                  |Fj®                  «      «      «       Œ† |��Û|5�j                   €t7        d%«      ‚|5�j                   �j                  }Rt«        |5jä                  «      t«        | jN                  jØ                  «      k7  rAt7        d&t«        |5jä                  «      › d't«        | jN                  jØ                  «      › �«      ‚t×        | jN                  jØ                  «      D �E�Fci c]/  \  }E}Ft/        |FjÚ                  tø        «      r|5jä                  E   F“Œ1 }S}E}F|8t«        I«      d  D ]Ë  }R|jl                     }TS|T   }F|Fjà                  tê        �j                  k(  rtð        �j                  }UFj®                  }QnIFjà                  tê        jì                  k(  rtð        �j                  }UT}Qnt7        d(Fjà                  › �«      ‚Ijq                  t÷        Utù        |jl                  ¬#«      Q«      «       ŒÍ t«        |7«      t«        |.«      k7  r#t7        dt«        |7«      › dt«        |.«      › �«      ‚�t        HI¬)«      })t­        |.|7«      D ]­  \  }V}Wt/        |Vjf                  d   t�        �j                  «      sVjf                  d   Wjf                  d<   Wj®                  |)�j                  v sWj®                  |)�j                  v sŒ}Vjf                  j                  «       D ]  \  }X}Y|YWjf                  |X<   Œ Œ¯ |(|)| jT                  fS c c}'}&w # 1 sw Y   �
ŒØxY w# 1 sw Y   �
ŒÝxY w# 1 sw Y   �
ŒâxY w# 1 sw Y   �
ŒçxY w# 1 sw Y   �
ŒìxY wc c},}+w c c}w c c}w c c}0}+w # 1 sw Y   �ŒâxY w# 1 sw Y   �ŒçxY w# 1 sw Y   �ŒìxY w# 1 sw Y   �ŒñxY wc c}w # 1 sw Y   �ŒøxY wc c}F}Ew c c}F}Ew c c}+}Ew c c}w c c}F}Ew )*Nr   )Ú_materialize_and_lift_constants)Úaot_export_module)Ú2_disable_custom_triton_op_functional_decompositionÚ_export_to_aten_irÚ_ignore_backend_decompsÚ_verify_nn_module_stackÚ_verify_placeholder_namesÚ_verify_stack_trace)ÚShapeEnvc                 ó>   — |d uxs | j                   j                  d uS rP   )Úgraph_signatureÚbackward_signature)r¤   r§   s     rW   Ú_is_joint_ir_decompzO_decompose_and_get_gm_with_new_signature_constants.<locals>._is_joint_ir_decomp_  s)   € à DÐ(ò AØ×!Ñ!×4Ñ4¸DÐ@ð	
rY   F)Úremove_duplicate)Ú!unwrap_tensor_subclass_parametersT)Ú	shape_envÚexportz6expected mod.graph._codegen to be _PyTreeCodeGen, got zout_spec must not be None)Ú&_enable_graph_inputs_of_type_nn_moduleÚ_fakify_script_objectsÚplaceholderÚvalr7   )r˜   Ú_prettify_placeholder_namesÚdecompose_custom_triton_opsz	expected z6 not to be a torch.nn.Parameter when not in state_dict)ÚdecompositionsÚtrace_jointÚoutput_loss_indexc                 ó„  — t        | t        «      r| S t        | t        «      rt        |j                  ¬«      S t        | t        «      rt	        |j                  ¬«      S t        | t
        «      rt        |j                  ¬«      S t        | t        «      rt        |j                  ¬«      S t        dt        | «      › �«      ‚)N©rQ   zType of old_arg not supported: )	Ú
isinstancer9   rC   rQ   rB   rA   r@   ÚRuntimeErrorÚtype)Úold_argÚnew_phs     rW   Ú
update_argzF_decompose_and_get_gm_with_new_signature_constants.<locals>.update_argf  sŽ   € Ü�gÔ/Ô0ØˆNÜ˜¤Ô0Ü! v§{¡{Ô3Ð3Ü˜¤Ô0Ü! v§{¡{Ô3Ð3Ü˜Ô!1Ô2Ü#¨¯©Ô5Ð5Ü˜¤Ô1Ü"¨¯©Ô4Ð4ÜÐ<¼TÀ'»]¸OÐLÓMÐMrY   znew_placeholders length z( does not match old_placeholders length )Ú_node_metadata_hookÚ_set_node_metadata_hook)Ú_graph_output_nameszUFile "torch/fx/passes/runtime_assert.py", line 24, in insert_deferred_runtime_assertsÚstack_trace)Úmetadatazexported program: )r¹   zmutation_names z does not match expected z9expected input_spec.kind to be USER_INPUT or BUFFER, got rÄ   )ÚkindÚargÚtargetzPgraph_signature.backward_signature must not be None when joint_loss_index is setz#graph_signature.user_inputs length z# does not match input_specs length zUnknown input kind: ©Úinput_specsÚoutput_specs)‰Ú(torch._export.passes.lift_constants_passr©   Útorch._functorch.aot_autogradrª   Útorch.export._tracer«   r¬   r­   r®   r¯   r°   Ú%torch.fx.experimental.symbolic_shapesr±   Úmodulerv   Únamed_parametersÚnamed_buffersÚ7torch._functorch._aot_autograd.subclass_parametrizationr·   r   Úgraph_moduler   Ú	_out_specrÅ   ÚgraphÚ_codegenr   rž   rÇ   Úpytree_infoÚ	orig_argsr]   Útupler_   Útreespec_tupler   Ú_in_specÚ	recompiler   r³   Ú	constantsr'   Ú
state_dictÚnon_persistent_buffersr    r   Útorch._export.non_strict_utilsrº   r»   Únodesr}   Úmetar:   Úfake_valrQ   Úreal_objÚappendr   r—   Úexample_inputsr   Útree_unflattenÚvaluesr�   r   ÚgmÚsigr$   r&   r%   r*   Ú _remove_unnecessary_copy_op_passr‡   ÚnnÚ	ParameterÚpopÚdelattrr-   Ú
contextlibÚnullcontextÚfxÚGraphModuleÚeliminate_dead_codeÚoutput_noderh   ÚlenÚziprÒ   r   Úintr€   r   r(   r#   Ú(torch._export.passes._node_metadata_hookrË   rÌ   Ú4torch._functorch._aot_autograd.input_output_analysisrÍ   Ú_dynamoÚconfigÚdo_not_emit_runtime_assertsÚ_get_shape_envrl   r‹   r   r   Ú	enumeraterÔ   rÑ   r9   r=   rÐ   Ú
persistentÚuser_inputsÚuser_inputs_to_mutater›   r<   Ú
USER_INPUTÚBUFFERr>   ÚBUFFER_MUTATIONÚUSER_INPUT_MUTATIONr?   rC   rÕ   ÚLOSS_OUTPUTÚgetr´   Úgradients_to_user_inputsÚ	PARAMETERÚGRADIENT_TO_PARAMETERÚGRADIENT_TO_USER_INPUTr;   ÚTensorÚinputs_to_parametersÚinputs_to_buffers)Zr¤   r¥   r¦   r§   r¿   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   rµ   ÚmodÚwrapped_params_buffersr·   Úunwrapped_params_buffersÚ	fake_moderM   Úorig_arg_namesÚtemp_registered_constantsÚfake_params_buffersÚparams_buffers_to_node_metarº   r»   Úretracing_argsÚnodeÚreal_script_objÚtxÚretracing_args_unwrappedÚpatched_modÚnew_fake_argsÚnew_fake_kwargsÚnew_fake_constant_attrsÚmap_fake_to_realÚaten_export_artifactrd   Úobjrô   Únew_graph_signaturerè   rQ   ÚpÚnew_state_dictÚold_placeholdersÚ	fake_argsÚ_Úbuffers_to_removeÚfake_mode_detÚfake_mode_ctxÚ#custom_triton_ops_decomposition_ctxr³   rÊ   Únew_placeholdersÚnew_outputsÚold_phrÉ   Úname_mapÚfind_availableÚ
used_namesÚphrË   rÌ   rÍ   rÎ   r¸   ÚoutputrU   ÚspecÚold_new_placeholder_maprÔ   rÕ   Úuser_inputs_indexÚmutation_namesÚexpected_namesÚoutput_nameÚ
input_nameÚ
input_specÚoutput_kindrÒ   Ú	gradientsÚspecsÚsourcerÐ   Úold_noderT   r¡   ÚvsZ                                                                                             rW   Ú2_decompose_and_get_gm_with_new_signature_constantsrO  K  s„  € õ YÝ?÷÷ õ ?ò
ñ ˜rÐ#3Õ4Ø�i‰i‹kˆð"
Ü�3×'Ñ'¸Ð'Ó?Ó@ð"
ä�3×$Ñ$°eÐ$Ó<Ó=ð"
Ðõ
	
ñ 	*¨#Ô.ð$
Ü�3×'Ñ'¸Ð'Ó?Ó@ð$
ä�3×$Ñ$°eÐ$Ó<Ó=ð$
Ð ô .¨b¯o©oÓ>ˆ	ØÐÜ&±³ÀDÔIˆIð —=‘=ˆä˜#Ÿ)™)×,Ñ,¬nÔ=Ü ØHÌÈcÏiÉi×N`ÑN`ÓIaÐHbÐcóð ð Ÿ™×+Ñ+×7Ñ7×AÑAˆð ÐÜ Ð!<Ó=Ð=Ø�=‰=¤¤u Ñ-Ü×,Ñ,¨h¨ZÓ8ˆHä+ÜØØ—‘Øóó
ˆ�	‰	Ôð 	�‰Œô
 	(¨×(:Ñ(:¸B¿L¹LÈ#ÔNô %CØ�—‘ × 2Ñ 2× IÑ Ió%
Ð!ô
 5°YÀÓDÐä&DÀSÓ&IÐ#÷
	
ð
 ˆØ—I‘I—O‘Oò 
	<ˆDØ�w‰w˜-Ó'Ü˜dŸi™i¨Ñ.Ô0AÔBØ&*�OØ—y‘y Ñ'×0Ñ0Ð8Ø*,¯,©,°t·y±yÀÑ7G×7LÑ7LÑ*M™à*.¯)©)°EÑ*:×*CÑ*C×*LÑ*L˜Ø"×)Ñ)¨/Õ:à"×)Ñ)¨$¯)©)°EÑ*:Õ;ð
	<ô ˜IÓ&ˆð ñP	ä/ØóñP	ñ
 3°2×3DÑ3DÓEñP	ô �B‹KñP	ô (.×'<Ñ'<Ø §¡ó(Ð$ñ (ØðØ-¨aÑ0ðà-¨aÑ0×7Ñ7Ó9ñð Øóð DñØØØØ'Ø á'9ØØ!Ø#Ø'Ø+Ø!4Ø05Ø0Kô	(Ð$ð$ %9×$BÑ$B×$HÑ$HÓ$J÷2ñ !˜˜Sð ä% cÔ+;Ô<ð )¨Ò-à ñ!ó2Ð$Ô.ð *×,Ñ,�Ø&:×&>Ñ&>Ð#ô
 LØ+Ð-Fóð $ô :Ø/°Ð5Hôô
 'VØ×&Ñ&Ð(;ó'Ð#ñ <ØÐ+Ð-Dó�	ô (ØØ'ØØ!Ø#Ø'Øô÷yD÷P	÷ P	÷ P	÷ P	ñd 	  Ô#Ù˜BÔÙ! "Ð&9Ô:ä"BØÐ#ó#
ÑˆÐð
Ø�m‰mð
ð  8×=Ñ=Ó?÷á�D˜!ØÐ5Ñ5ð �a‘óð
ˆð .×3Ñ3Ó5ò 
	-‰GˆD�!à˜>Ñ)Ü˜a¤§¡×!3Ñ!3Ô4Ü(Ø# D 8Ð+aÐbóð ð �~Ò%ØÐ7Ò7Ø"×&Ñ& tÕ,ð
	-ð Ð&¨Ð6Ð6ð Ÿ™×.Ñ.×4Ñ4öØ¸¿¹À=Ó8PŠðÐð ð /?Ö? d�—‘˜5Ó!Ð?€IÐ?à-/¯_©_×-JÑ-JÓ-L×M¡' $¨šÐMÐÑMØ!ò 'ˆÜ�—‘ Õ&ð'ô % YÓ/€MØ0=Ð0E”J×*Ñ*Ô,È=€Mñ 'ô 	×Òà?ð (ñ 	 Ó!ñ'àñ'ô 	,¨MÓ:ñ'ñ 	,Ó-ñ	'ñ 0Ø�O‰OØà.Ø(°Ð4à$4Ð$@Ñ Àdô	
ÑˆˆOô ˜"œeŸh™h×2Ñ2Ô3Ð3Ð3Ø
�‰×$Ñ$Ô&÷#'÷ '÷ '÷ 'ò*Nð *,¯©¯©ÖT ¸4¿7¹7ÀmÓ;SšÐTÐÐTÜ-2°2·8±8×3GÑ3GÓ3I×3NÑ3NÈqÑ3QÓ-R€Kô ÐÓ¤Ð$4Ó 5Ò5ÜØ&¤sÐ+;Ó'<Ð&=Ð=eÔfiÐjzÓf{Ðe|Ð}ó
ð 	
ô Ð.Ð0@ÓAò 2‰ˆ�Ø&,§k¡kÐ1ˆŒ�f•mð2ð €HÜ%0´Ó%5€NÜ›5€JØò :ˆØŸG™Gˆ�—‘ÑÜ�R—W‘W˜n¨jÕ9ð:ð —‘—‘ò 
ˆØ�7‰7�mÒ#ØÜ.Ø�n j°$·)±)¸T¿Y¹Yó
ˆ�	ð
ô $ BÔ'÷õ Yä�=‰=×Ñ×;Ò;ð1ð 	ô # 2Ó&ˆ	ØÐ Ù(ØÜ×!Ñ!Ø'°=À+Ð2Nôóñ ô 0ØØØ(Ô)LÈRÏXÉXÓ)VÐ(WÐXØõ	÷ð ‡L�L„NÜ˜KÑ)<¸RÓ)@ÓAò ‰ˆ�ØÑØˆF�Kðô ! ×!3Ñ!3×!?Ñ!?Ó@÷áˆAˆtÜ˜$Ÿ(™(Ô$4Ô5ð 	�‰�‰Ð'¨Ñ*×/Ñ/Ñ/ðÐñ ô ! ×!3Ñ!3×!?Ñ!?Ó@÷ñ ˆAˆtô 	Ø�I‰IÙ�t—x‘xÐ!1°!Ñ!4Ó5Ø�K‰KØ�O‰Oõ		
ð€Kñ ð €Lô 1:¸/×:UÑ:UÓ0V×W¡W Q¨˜˜q™ÐWÐÑWÜ˜/×?Ñ?×DÑDÓFÓG€NØ,7Ð8M¼#¸nÓ:MÐ,NÖO D�d—i“iÐO€NÐOØ˜Ò'ÜØ˜nÐ-Ð-FÀ~ÐFVÐWó
ð 	
ð $3×#HÑ#H×#NÑ#NÓ#Pó 
Ñˆ�ZØ˜jÑ)ˆØ×'Ñ'×3Ñ3°AÑ6ˆ
Ø�?‰?¤9×#7Ñ#7¼×9IÑ9IÐ"JÑJÜ ØKÈJÏOÉOÐK\Ð]óð ð
 �‰¤)×"2Ñ"2Ò2ô ×&Ò&ä×/Ñ/ð 	ð �‰¤)×"2Ñ"2Ò2ð ×Òà—‘×$Ñ$ð 	ð
 	×ÑÜØ Ü"¨Ô4Øôö	
ð#
ô4 ˜R×/Ñ/×<Ñ<Ó=ò 
‰ˆˆ4Ø×ÑÜØ*+Ð/?Ò*?”
×&Ò&ÀTÇYÁYÙ˜4Ÿ8™8 [´°^Ó1DÀqÑ1HÑ%IÓJØ'×+Ñ+¨D¯K©K¸¿¹ÓEóõ	
ð
ð Ñ#Ø×-Ò-Ð5Ü Øbóð ð $×6Ò6×OÒOˆ	Üˆ×*Ñ*Ó+¬s°2×3EÑ3E×3QÑ3QÓ/RÒRÜ Ø5´c¸/×:UÑ:UÓ6VÐ5Wð X&Ü&)¨"×*<Ñ*<×*HÑ*HÓ&IÐ%JðLóð ô % R×%7Ñ%7×%CÑ%CÓD÷
á��4Ü˜$Ÿ(™(¤NÔ3ð ×'Ñ'¨Ñ*¨DÑ0ð
ˆñ 
ð
  ¤ LÓ 1Ð 3Ð4ò 	ˆDØ˜tŸy™yÑ)ˆFØ˜‘=ˆDØ�y‰yœI×/Ò/Ò/Ü!×7Ò7�ØŸ™‘Ø—‘œi×2Ñ2Ò2Ü!×8Ò8�Ø‘ä$Ð';¸D¿I¹I¸;Ð%GÓHÐHØ×ÑÜØÜ"¨¯	©	Ô2Øóõð	ô& ÐÓ¤Ð$4Ó 5Ò5ÜØ&¤sÐ+;Ó'<Ð&=Ð=eÔfiÐjzÓf{Ðe|Ð}ó
ð 	
õ /Ø¨lôÐô "Ð"2Ð4DÓEò 	%Ñˆ�(Ü˜(Ÿ-™-¨Ñ.´·²Ô=Ø#+§=¡=°Ñ#7ˆH�M‰M˜%Ñ ð �O‰OÐ2×GÒGÑGØ�‰Ð"5×"GÒ"GÒGà Ÿ™×+Ñ+Ó-ò %‘��1Ø#$�—‘˜aÒ ñ%ð	%ð Ð" B§M¡MÐ1Ð1ùó}	2÷7Dñ Dú÷P	ñ P	ú÷ P	ñ P	ú÷ P	ñ P	ú÷ P	ñ P	üóFùò*ùò @ùãM÷'ñ 'ú÷ 'ñ 'ú÷ 'ñ 'ú÷ 'ñ 'üòD U÷Vñ üó*ùóùó" XùâOùóf
s+  Ì=}8Í	}+Í}Í(A}	Î-4}Ï!"|>ÐA+}Ñ.}	Ñ6}Ñ>}+Ò}8Ó~Ö~Ö~Ö$~×~ÙÙ~5Ù~(ÙA!~	Ú;~(Û~5ÛÛ6Üâ8&ä<A!æ)A
'è-é3ô48ü>}ý}ý	}	ý}ý}ý}(ý#}+ý+}5	ý0}8ý8~þ~%þ ~(þ(~2þ-~5þ5~?	þ:ÿÿrô   r/  c                 óø  — | j                  |j                  «       «      5  | j                  j                  D �]  }|j                  dk(  sŒt        j                  |j                  «      \  }}|D ]Ü  }t        |t        j                  j                  «      sŒ(|j                  |j                  v s|j                  |j                  v sŒY|j                  dk(  sŒi|j                  t        j                   j"                  j$                  j&                  u sŒ¤|j)                  |j                  d   «       | j                  j+                  |«       ŒÞ �Œ | j-                  «        ddd«       | |fS # 1 sw Y   | |fS xY w)zQ
    Removes redundant copy_ node that was introduced due to mutated buffer.
    r@  Úcall_functionr7   N)Ú_set_replace_hookÚget_replace_hookrà   rì   r}   r_   Útree_flattenrh   rÅ   r‡   rý   ÚNoderQ   Úbuffers_to_mutateÚparameters_to_mutaterÒ   Úopsrš   rƒ   ÚdefaultrX   Ú
erase_noderç   )rô   r/  r$  rh   r4  Úouts         rW   rö   rö   0  s+  € ð 
×	Ñ	Ð1×BÑBÓDÓ	Eñ Ø—H‘H—N‘Nó 	5ˆDØ�w‰w˜(Ó"Ü ×-Ñ-¨d¯i©iÓ8‘��aØò 
5�CÜ! #¤u§x¡x§}¡}Õ5ØŸ™Ð$7×$IÑ$IÑIØŸ8™8Ð':×'OÑ'OÒOð  ŸF™F oÓ5Ø #§
¡
¬e¯i©i¯n©n×.AÑ.A×.IÑ.IÒ Ià×5Ñ5°c·h±h¸q±kÔBØŸH™H×/Ñ/°Õ4ò
5ð	5ð 	�‰Œ÷ð  Ð"Ð"Ð"÷!ð  Ð"Ð"Ð"ús+    *E-ÁAE-Â0E-ÃE-Ã:E-ÄAE-Å-E9c           	      óÀ  — | j                  |j                  «       «      5  | j                  «       D �]  }t        |t        j
                  j                  «      sŒ)i }i }t        |j                  j                  «      D ]Ç  }|j                  dk(  r§|j                  t        j                  u r‹|j                  \  }}||   › d|› �}	|	|v rc|j                  ||	   «       |D ].  }
|
j                   €Œ|
j                   j                  |||	   «       Œ0 |j                  j#                  |«       Œ®|||	<   |	||<   Œ¹|j$                  ||<   ŒÉ �Œ 	 d d d «       y # 1 sw Y   y xY w)NrQ  ú.)rR  rS  ÚmodulesrÅ   r‡   rý   rþ   r]   rà   rì   r}   rÒ   ÚoperatorÚgetitemrh   rX   re   rZ  rQ   )rô   r³   Úmodule_call_graphrÚ   Únode_idÚgetitemsr$  rL  ÚidxÚnew_idÚentrys              rW   Ú _common_getitem_elimination_passrg  I  sG  € ð 
×	Ñ	˜o×>Ñ>Ó@Ó	Añ .Ø—j‘j“ló 	.ˆFÜ˜f¤e§h¡h×&:Ñ&:Ô;Øà02ˆGØ13ˆHÜ˜VŸ\™\×/Ñ/Ó0ò .�Ø—7‘7˜oÒ-°$·+±+Ä×AQÑAQÑ2QØ"&§)¡)‘K�F˜CØ '¨¡Ð0°°#°Ð7�FØ Ñ)Ø×2Ñ2°8¸FÑ3CÔDØ%6ò "˜EØ$Ÿ™Ñ:Ø %§¡× EÑ EØ$(¨(°6Ñ*:õ!"ð"ð
 Ÿ™×/Ñ/°Õ5à+/˜ Ñ(Ø(.˜ šà$(§I¡I�G˜D’Mò!.ñ	.÷.÷ .ñ .ús    CEÃ.AEÅEÚold_gmÚold_graph_signaturer³   Úold_module_call_graphc                 óØ  ‡‡— t        j                  |«      }| j                  j                  D �ci c]  }|j                  |“Œ }}i ‰j
                  ¥‰j                  ¥}i |j
                  ¥|j                  ¥}	i |¥‰j                  ¥‰j                  ¥Ši |	¥|j                  ¥|j                  ¥}
i }d}| j                  j                  D �cg c]  }|j                  dk(  sŒ|j                  ‘Œ  }}t        t        ˆˆfd„|«      «      }|j                  j                  D �cg c]  }|j                  dk(  sŒ|j                  ‘Œ  }}|j                  j                  D �]   }|j                  j                  dg «      x}r|j                  ||d   j                  <   Œ?|j                  dk(  sŒO|j                  |
v rŒ^|j                  |j                  v rŒw|j                  |v sŒ†t!        |j                  t"        «      s!t%        dt'        |j                  «      › �«      ‚||   }t!        |t"        «      st%        dt'        |«      › �«      ‚|j                  ||<   |dz  }�Œ t)        t        «      }|	j+                  «       D ]X  \  }}|j-                  d	«      s||v sŒ|||<   Œ"d
j/                  |j1                  d
«      dd «      }||   j3                  |«       ŒZ |D �]x  }|j4                  }|€Œg |j6                  ¢|j8                  ¢D �]H  }|j                  |v rt;        d|j                  › d�«      ‚|j                  |v r||j                     |_        ŒN|j                  |v sŒ]||j                     }|j                  dk(  sŒ||j                  t<        j>                  j@                  jB                  jD                  t<        j>                  j@                  jB                  jF                  t<        j>                  j@                  jB                  jH                  fv s�Œ|jJ                  d   j                  }||vrt;        d|› d�«      ‚||   |_        �ŒK �Œ{ |S c c}w c c}w c c}w )Nr   r¼   c                 ó,   •— | ‰vxr | ‰j                   vS rP   )Úinput_tokens)ÚxÚold_graph_non_user_inputsri  s    €€rW   ú<lambda>z0_get_updated_module_call_graph.<locals>.<lambda>Ž  s$   ø€ �aÐ8Ð8ò :ØÐ,×9Ñ9Ð9ð rY   Ú	from_nodeéÿÿÿÿz"expected node.name to be str, got z!expected old_name to be str, got r7   zparametrizations.r]  zIt looks like z� is a tensor subclass. Preserving submodule that takes subclass parameter is not supported in inference IR because we desugar them, resulting in more tensorsrQ  )&rƒ   Údeepcopyrà   rì   rQ   r  r  Ú!inputs_to_lifted_tensor_constantsÚinputs_to_lifted_custom_objsr}   rÒ   r]   Úfilterrí   r  rm  rÅ   ra   rž   rÇ   r   r�   r�   ÚjoinÚsplitrð   re   rJ   rK   Ú
ValueErrorr‡   rX  rš   ÚtoÚdtype_layoutÚdeviceÚdtyperh   )rh  ri  rô   r³   rj  Únew_module_call_graphr$  Ú	old_nodesÚold_graph_params_buffersÚnew_graph_params_buffersÚnew_graph_non_user_inputsÚ
provenanceÚuser_input_counterÚold_user_input_namesÚnew_user_input_namesÚhistoryÚold_nameÚold_param_to_desugaredrQ   rÒ   Ú
old_targetrf  re   rn  rM  ro  s    `                       @rW   Ú_get_updated_module_call_graphr‹  f  sk  ù€ ô !ŸM™MÐ*?Ó@Ðà-3¯\©\×-?Ñ-?Ö@ T�—‘˜D‘Ð@€IÐ@ð Ø
×
2Ñ
2ð à
×
/Ñ
/ð Ðð Ø
×
.Ñ
.ð à
×
+Ñ
+ð Ðð!Ø
"ð!à
×
?Ñ
?ð!ð ×
:Ñ
:ð!Ðð
!Ø
"ð!à
×
;Ñ
;ð!ð ×
6Ñ
6ð!Ðð "$€JàÐà &§¡× 2Ñ 2öØ°d·g±gÀÓ6Nˆ�‹ðÐð ô  Üô:à ó	
óÐð !#§¡§¡öØ°$·'±'¸]Ó2Jˆ�‹ðÐð ð —‘—‘ó ,ˆØ—i‘i—m‘m K°Ó4Ð4ˆ7Ð4Ø+/¯9©9ˆJ�w˜r‘{×'Ñ'Ò(ð
 �W‰W˜Ó%à—‘Ð8Ò8Ø—;‘; /×">Ñ">Ò>à—;‘;Ð"6Ò6Ü% d§i¡i´Ô5Ü,Ø@ÄÀdÇiÁiÃÐ@QÐRóð ð  4Ð4FÑG�HÜ% h´Ô4Ü,Ø?ÄÀXÃÐ?OÐPóð ð ,0¯9©9�J˜xÑ(Ø&¨!Ñ+Ò&ð/,ô8 )¬Ó.ÐØ0×6Ñ6Ó8ò <‰ˆˆfà× Ñ Ð!4Ô5àÐ/Ò/Ø#'�
˜4Ò àŸ™ &§,¡,¨sÓ"3°A°bÐ"9Ó:ˆJØ" :Ñ.×5Ñ5°dÕ;ð<ð 'ó '4ˆØ—O‘Oˆ	ØÐØØ8�9×#Ñ#Ð8 i×&7Ñ&7Ð8ó #	4ˆAð �v‰vÐ/Ñ/Ü Ø$ Q§V¡V Hð -Zð [óð ð �v‰v˜Ñ#Ø# A§F¡FÑ+�•ð —‘˜9Ò$Ø$ Q§V¡VÑ,�Ø—;‘; /Ó1°h·o±oÜ—I‘I—N‘N×%Ñ%×2Ñ2Ü—I‘I—N‘N×%Ñ%×,Ñ,Ü—I‘I—N‘N×%Ñ%×+Ñ+ðJó 7ð
 "*§¡¨qÑ!1×!6Ñ!6�JØ!¨Ñ3Ü(Ø,¨Z¨Lð 9bð cóð ð (¨
Ñ3�A–FòG#	4ð	'4ðR !Ð ùòs Aùò4ùòs   °QÃQ"Ã#Q"Ä$Q'Ä9Q'r¿   c          
      ót  — t        | ||||¬«      \  }}}t        | j                  | j                  ||| j                  «      }|j
                  j                  | j                  j
                  «       t        || j                  «      }	t        ||j                  |||	|| j                  | j                  ¬«      }
|
S )N©r¥   r¦   r§   r¿   )Úrootrà   r³   ré   Úrange_constraintsra  rñ   rè   )rO  r‹  rÞ   r³   ra  rí   rŽ   Ú_get_updated_range_constraintsr�  rE   rà   rñ   rè   )r¤   r¥   r¦   r§   r¿   rô   r/  ré   r~  Únew_range_constraintsÚexported_programs              rW   Ú_decompose_exported_programr“  ë  sÃ   € ô 	;Ø
Ø#Ø/Ø)Ø$?ô	ñ	Ø
ØØô ;Ø
�‰Ø
×ÑØ
ØØ
×ÑóÐð ‡G�G‡N�N�2—?‘?×'Ñ'Ô(ä:Ø
Ø
×ÑóÐô
 'ØØ�h‰hØ+ØØ/Ø/Ø×(Ñ(Ø—,‘,ô	Ðð ÐrY   c                   ó¢	  — e Zd ZU dZej
                  j                  ed<   	 eed<   	 e	e
ef   ed<   	 ded<   	 ee   ed<   	 eeedf   e	e
ef   f   d	z  ed
<   	 e	e
ef   ed<   	 eee      ed<   	 ee
   ed<   	 	 dMd	dœdej$                  j&                  e	e
ef   z  dej
                  j(                  dede	e
ej*                  ej$                  j,                  z  f   dddee   deeedf   e	e
ef   f   d	z  de	e
ef   d	z  deee      d	z  fd„Ze ed¬«      d„ «       «       Zej6                   ed¬«      d„ «       «       Ze ed¬«      d„ «       «       Zej6                   ed¬«      d„ «       «       Ze ed¬«      d „ «       «       Zej6                   ed¬«      d!„ «       «       Ze ed¬«      d"„ «       «       Zej6                   ed¬«      d#„ «       «       Z ed¬«      d$eej$                  j,                     fd%„«       Z  ed¬«      d$eee
ej$                  j,                  f      fd&„«       Z! ed¬«      d$eej*                     fd'„«       Z" ed¬«      d$eee
ej*                  f      fd(„«       Z#e ed¬«      d)„ «       «       Z$e$j6                   ed¬«      d*„ «       «       Z$e ed¬«      d+„ «       «       Z%e%j6                   ed¬«      d,„ «       «       Z%e ed¬«      d-„ «       «       Z&e&j6                   ed¬«      d.„ «       «       Z&e ed¬«      d/„ «       «       Z'e'j6                   ed¬«      d0„ «       «       Z'e ed¬«      d$efd1„«       «       Z(e(j6                   ed¬«      d2„ «       «       Z(e ed¬«      d$e
fd3„«       «       Z)e)j6                   ed¬«      d4„ «       «       Z)e ed¬«      d5„ «       «       Z*e*j6                   ed¬«      d6„ «       «       Z*e ed¬«      d7„ «       «       Z+e+j6                   ed¬«      d8„ «       «       Z+e ed¬«      d9„ «       «       Z,e,j6                   ed¬«      d:„ «       «       Z,d;„ Z-d<ed=ed$efd>„Z.d<ed=ed$efd?„Z/d$e
fd@„Z0dNd$ej
                  j                  fdA„Z1dB„ Z2e3	 	 dOdCe	ejh                  jj                  e6f   d	z  dDe7d$d fdE„«       Z8dFe9d$d fdG„Z:dH„ Z; ed¬«      dI„ «       Z<e=dJ„ «       Z>d	d	d	dKœ	 dPdL„Z?y	)QrE   aÄ  
    Package of a program from :func:`export`. It contains
    an :class:`torch.fx.Graph` that represents Tensor computation, a state_dict containing
    tensor values of all lifted parameters and buffers, and various metadata.

    You can call an ExportedProgram like the original callable traced by
    :func:`export` with the same calling convention.

    To perform transformations on the graph, use ``.module`` property to access
    an :class:`torch.fx.GraphModule`. You can then use
    `FX transformation <https://pytorch.org/docs/stable/fx.html#writing-transformations>`_
    to rewrite the graph. Afterwards, you can simply use :func:`export`
    again to construct a correct ExportedProgram.
    Ú_graph_moduleÚ_graph_signatureÚ_state_dictzdict[sympy.Symbol, ValueRanges]Ú_range_constraintsÚ_module_call_graph.NÚ_example_inputsÚ
_constantsÚ
_verifiersÚ_guards_code)Ú	verifiersrŽ  rà   r³   ré   r�  údict[sympy.Symbol, Any]ra  rñ   rè   rž  c	                ó‚  — t         j                  j                  j                  «       |_        t        ||«      | _        t        |t         j                  j                  «      r/| j                  j                  j                  |j                  «       t        | j                  ||«       || _        || _        || _        |€t        d«      ‚|| _        || _        |xs i | _        |	xs t&        g}	t)        d„ |	D «       «      st        d|	› �«      ‚|	| _        | j-                  «        t/        | j                  «      | _        y )Nz"module_call_graph must not be Nonec              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wrP   )ru   r+   )Ú.0rN  s     rW   ú	<genexpr>z+ExportedProgram.__init__.<locals>.<genexpr>m  s   è ø€ Ò>¨q”:˜a¤×*Ñ>ùs   ‚z2all verifiers must be subclasses of Verifier, got )r‡   rý   rà   ÚCodeGenrá   Ú_create_graph_module_for_exportr•  rÅ   rþ   rí   rŽ   rg  r–  r—  r˜  rž   r™  rš  r›  r+   Úallrœ  ÚvalidateÚ_convert_guards_to_coder�  )
rR   rŽ  rà   r³   ré   r�  ra  rñ   rè   rž  s
             rW   Ú__init__zExportedProgram.__init__L  s  € ô Ÿ™Ÿ™×/Ñ/Ó1ˆŒÜ<¸TÀ5ÓIˆÔÜ�dœEŸH™H×0Ñ0Ô1Ø×Ñ×#Ñ#×*Ñ*¨4¯9©9Ô5ä(Ø×Ñ Ð1Bô	
ð 7FˆÔØ+5ˆÔØCTˆÔØÐ$Ü Ð!EÓFÐFØ9JˆÔØ-ˆÔà#š/ rˆŒàÒ+¤( ˆ	ÜÑ>°IÔ>Ô>Ü ØDÀYÀKÐPóð ð $ˆŒà�‰Œä3°D×4FÑ4FÓGˆÕrY   F)Úis_backward_compatiblec                 ó   — | j                   S rP   )r•  ©rR   s    rW   rÞ   zExportedProgram.graph_modulew  s   € ð ×!Ñ!Ð!rY   c                 ó   — t        d«      ‚)Nz7Unable to set ExportedProgram's graph_module attribute.©rÆ   ©rR   Úvalues     rW   rÞ   zExportedProgram.graph_module|  s   € ô ÐTÓUÐUrY   c                 ó.   — | j                   j                  S rP   )rÞ   rà   r¬  s    rW   rà   zExportedProgram.graph�  s   € ð × Ñ ×&Ñ&Ð&rY   c                 ó   — t        d«      ‚)Nz0Unable to set ExportedProgram's graph attribute.r®  r¯  s     rW   rà   zExportedProgram.graph†  s   € ô ÐMÓNÐNrY   c                 ó   — | j                   S rP   )r–  r¬  s    rW   r³   zExportedProgram.graph_signature‹  s   € ð ×$Ñ$Ð$rY   c                 ó   — t        d«      ‚)Nz:Unable to set ExportedProgram's graph_signature attribute.r®  r¯  s     rW   r³   zExportedProgram.graph_signature�  s   € ô ÐWÓXÐXrY   c                 ó   — | j                   S rP   )r—  r¬  s    rW   ré   zExportedProgram.state_dict•  s   € ð ×ÑÐrY   c                 ó   — t        d«      ‚)Nz5Unable to set ExportedProgram's state_dict attribute.r®  r¯  s     rW   ré   zExportedProgram.state_dictš  s   € ô ÐRÓSÐSrY   rs   c              #   óD   K  — | j                  «       D ]	  \  }}|–— Œ y­w)zH
        Returns an iterator over original module's parameters.
        N)rÛ   )rR   r4  Úparams      rW   Ú
parameterszExportedProgram.parametersŸ  s)   è ø€ ð
 ×-Ñ-Ó/ò 	‰HˆAˆuØ‹Kñ	ùó   ‚ c              #   óh   K  — | j                   j                  D ]  }|| j                  |   f–— Œ y­w)z—
        Returns an iterator over original module parameters, yielding
        both the name of the parameter as well as the parameter itself.
        N)r³   r¹  ré   )rR   Ú
param_names     rW   rÛ   z ExportedProgram.named_parameters§  s7   è ø€ ð ×.Ñ.×9Ñ9ò 	:ˆJØ˜dŸo™o¨jÑ9Ð9Ó9ñ	:ùs   ‚02c              #   óD   K  — | j                  «       D ]	  \  }}|–— Œ y­w)zC
        Returns an iterator over original module buffers.
        N)rÜ   )rR   r4  Úbufs      rW   ÚbufferszExportedProgram.buffers°  s)   è ø€ ð
 ×(Ñ(Ó*ò 	‰FˆAˆsØ‹Iñ	ùrº  c              #   ó†  K  — t        | j                  j                  «      }d}| j                  j                  D ]ƒ  }||v r|| j                  |   f–— Œ|| j
                  v r|| j
                  |   f–— Œ=|| j                  v r|| j                  |   f–— Œ_|€| j                  j                  «       }|||   f–— Œ… y­w)zŽ
        Returns an iterator over original module buffers, yielding
        both the name of the buffer as well as the buffer itself.
        N)r€   r³   rê   r¿  rè   ré   rÞ   )rR   rê   Úgm_state_dictÚbuffer_names       rW   rÜ   zExportedProgram.named_buffers¸  sÊ   è ø€ ô "% T×%9Ñ%9×%PÑ%PÓ!QÐð ˆØ×/Ñ/×7Ñ7ò 	>ˆKØÐ4Ñ4Ø! 4§>¡>°+Ñ#>Ð>Ó>Ø §¡Ñ/Ø! 4§?¡?°;Ñ#?Ð?Ó?Ø §¡Ñ.Ø! 4§>¡>°+Ñ#>Ð>Ó>ð !Ð(Ø$(×$5Ñ$5×$@Ñ$@Ó$B�MØ! =°Ñ#=Ð=Ó=ñ	>ùs   ‚B?Cc                 ó   — | j                   S rP   )r˜  r¬  s    rW   r�  z!ExportedProgram.range_constraintsÒ  ó   € ð ×&Ñ&Ð&rY   c                 ó   — t        d«      ‚)Nz<Unable to set ExportedProgram's range_constraints attribute.r®  r¯  s     rW   r�  z!ExportedProgram.range_constraints×  ó   € ô ØJó
ð 	
rY   c                 ó   — | j                   S rP   )r™  r¬  s    rW   ra  z!ExportedProgram.module_call_graphÞ  rÄ  rY   c                 ó   — t        d«      ‚)Nz<Unable to set ExportedProgram's module_call_graph attribute.r®  r¯  s     rW   ra  z!ExportedProgram.module_call_graphã  rÆ  rY   c                 ó   — | j                   S rP   )rš  r¬  s    rW   rñ   zExportedProgram.example_inputsê  s   € ð ×#Ñ#Ð#rY   c                 ó  — |€|| _         y t        |t        «      r4t        |«      dk(  r&t        |d   t        «      rt        |d   t        «      st        d«      ‚|\  }}ddlm}  |||| j                  j                  «       || _         y )Né   r   r7   zqExample inputs should be a tuple containing example arguments (as a tuple), and example kwargs (as a dictionary).)Ú_check_inputs_match)
rš  rÅ   rä   r  rv   ry  Ú_unliftrÌ  Ú	call_specrL   )rR   r°  rh   ri   rÌ  s        rW   rñ   zExportedProgram.example_inputsï  s†   € ð
 ˆ=Ø#(ˆDÔ Øô �uœeÔ$Ü�E“
˜a’Ü˜5 ™8¤UÔ+Ü˜5 ™8¤TÔ*äðBóð ð
 ‰ˆˆfÝ0á˜D &¨$¯.©.×*@Ñ*@ÔAà$ˆÕrY   c                 ó~  —  G d„ dt         «      }t        | j                  «      dk(  r
 |d d ¬«      S | j                  d   j                  dk7  r%t	        d| j                  d   j                  ›�«      ‚ || j                  d   j
                  j                  | j                  d   j
                  j                  ¬«      S )Nc                   óV   — e Zd ZU ej                  dz  ed<   ej                  dz  ed<   y)ú+ExportedProgram.call_spec.<locals>.CallSpecNrL   rM   )rZ   r[   r\   r_   r`   r^   rb   rY   rW   ÚCallSpecrÑ    s    … Ø—_‘_ tÑ+Ó+Ø—o‘o¨Ñ,Ô,rY   rÒ  r   )rL   rM   Ú z=expected first module_call_graph fqn to be empty string, got )r	   r  ra  rd   rž   re   rL   rM   )rR   rÒ  s     rW   rÎ  zExportedProgram.call_spec
  s·   € ô	-”zô 	-ô ˆt×%Ñ%Ó&¨!Ò+Ù D°4Ô8Ð8Ø×!Ñ! !Ñ$×(Ñ(¨BÒ.Ü ØOÐPT×PfÑPfÐghÑPi×PmÑPmÐOpÐqóð ñ Ø×*Ñ*¨1Ñ-×7Ñ7×?Ñ?Ø×+Ñ+¨AÑ.×8Ñ8×AÑAô
ð 	
rY   c                 ó   — t        d«      ‚)Nz4Unable to set ExportedProgram's call_spec attribute.r®  r¯  s     rW   rÎ  zExportedProgram.call_spec  ó   € ô ÐQÓRÐRrY   c                 ó    — | j                   d   S )Nr   ©rœ  r¬  s    rW   ÚverifierzExportedProgram.verifier!  s   € ð �‰˜qÑ!Ð!rY   c                 ó   — t        d«      ‚)Nz3Unable to set ExportedProgram's verifier attribute.r®  r¯  s     rW   rØ  zExportedProgram.verifier&  s   € ô ÐPÓQÐQrY   c                 ób   — | j                   €t        d«      ‚| j                   d   j                  S )Nz_verifiers must not be Noner   )rœ  rž   Údialectr¬  s    rW   rÛ  zExportedProgram.dialect+  s/   € ð �?‰?Ð"Ü Ð!>Ó?Ð?Ø�‰˜qÑ!×)Ñ)Ð)rY   c                 ó   — t        d«      ‚)Nz2Unable to set ExportedProgram's dialect attribute.r®  r¯  s     rW   rÛ  zExportedProgram.dialect2  s   € ô ÐOÓPÐPrY   c                 ó   — | j                   S rP   r×  r¬  s    rW   rž  zExportedProgram.verifiers7  ó   € ð �‰ÐrY   c                 ó   — t        d«      ‚)Nz4Unable to set ExportedProgram's verifiers attribute.r®  r¯  s     rW   rž  zExportedProgram.verifiers<  rÕ  rY   c                 ó   — | j                   S rP   ©r›  r¬  s    rW   Útensor_constantsz ExportedProgram.tensor_constantsA  rÞ  rY   c                 ó   — t        d«      ‚)Nz;Unable to set ExportedProgram's tensor_constants attribute.r®  r¯  s     rW   râ  z ExportedProgram.tensor_constantsF  s   € ô ØIó
ð 	
rY   c                 ó   — | j                   S rP   rá  r¬  s    rW   rè   zExportedProgram.constantsM  rÞ  rY   c                 ó   — t        d«      ‚)Nz4Unable to set ExportedProgram's constants attribute.r®  r¯  s     rW   rè   zExportedProgram.constantsR  rÕ  rY   c                 óÌ   — | j                   j                  }|�t        ||«      }t        j                  ||f«      \  }}| j                  |«       t        d„ |D «       «      }||fS )a¯  Flatten args, kwargs using pytree, then, check specs.

        Args:
            args: List[Any] original args passed to __call__
            kwargs: Dict[str, Any] original kwargs passed to __call

        Returns:
            A tuple of (flat_args, received_spec)
            flat_args is flattened args / kwargs
            received_spec is the pytree spec produced while flattening the
            tuple (args, kwargs)
        c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r7   Nrb   )r¢  rn  s     rW   r£  z<ExportedProgram._get_flat_args_with_check.<locals>.<genexpr>k  s   è ø€ Ò< 1˜!˜A�$Ñ<ùs   ‚)rÎ  rL   r1   r_   Útree_flatten_with_pathÚ_check_input_constraintsrä   )rR   rh   ri   rL   Úflat_args_with_pathÚreceived_specÚ	flat_argss          rW   Ú_get_flat_args_with_checkz)ExportedProgram._get_flat_args_with_checkW  so   € ð —.‘.×(Ñ(ˆØÐÜ# F¨GÓ4ˆFÜ-3×-JÑ-JØ�6ˆNó.
Ñ*Ð˜]ð 	×%Ñ%Ð&9Ô:ÜÑ<Ð(;Ô<Ó<ˆ	Ø˜-Ð'Ð'rY   rh   ri   c                 ó.  — | j                   j                  }| j                  ||«      \  }}|�"t        ||t        «      st        d|› d|› �«      ‚g }d}| j                  j                  D �]™  }|j                  t        j                  k(  rŒ"|j                  t        j                  t        j                  fv rö|j                  du r)|j                  | j                  |j                      «       Œ…|j                   | j"                  v r)|j                  | j"                  |j                      «       ŒÆ|j                   | j                  v r*|j                  | j                  |j                      «       �Œ|€| j$                  j#                  «       }|j                  ||j                      «       �ŒD|j                  t        j&                  t        j(                  fv s�Œr|j                  | j                  |j                      «       �Œœ t+        |«      }||z   S )a,  Transform args, kwargs of __call__ to args for graph_module.

        self.graph_module takes stuff from state dict as inputs.
        The invariant is for ep: ExportedProgram is
        ep(args, kwargs) ==
          ep.postprocess(ep.graph_module(ep.graph_module_flat_inputs(args, kwargs)))
        Nz>Trying to flatten user inputs with exported input tree spec: 
z-
but actually got inputs with tree spec of: 
F)rÎ  rL   rí  r0   rw   ry  r³   rÔ   rÐ   r<   r  r  r  r  rð   rè   rÒ   ré   rÞ   ÚCONSTANT_TENSORÚ
CUSTOM_OBJrä   )	rR   rh   ri   rL   rì  rë  Úadditional_inputsrÁ  Úinput_s	            rW   Ú_graph_module_flat_inputsz)ExportedProgram._graph_module_flat_inputsn  sÙ  € ð —.‘.×(Ñ(ˆØ#'×#AÑ#AÀ$ÈÓ#OÑ ˆ	�=ØÐ¤}Ø˜7Ô$Aô(
ô ØQØ�)ð @à �/ð#óð ð ÐØˆØ×*Ñ*×6Ñ6ó 	HˆFØ�{‰{œi×2Ñ2Ò2ØØ—‘Ü×#Ñ#Ü× Ñ ð!ñ ð ×$Ñ$¨Ñ-ð &×,Ñ,¨T¯^©^¸F¿M¹MÑ-JÕKØ—]‘] d§o¡oÑ5Ø%×,Ñ,¨T¯_©_¸V¿]¹]Ñ-KÕLØ—]‘] d§n¡nÑ4Ø%×,Ñ,¨T¯^©^¸F¿M¹MÑ-JÖKð
 %Ð,Ø(,×(9Ñ(9×(DÑ(DÓ(F˜Ø%×,Ñ,¨]¸6¿=¹=Ñ-IÖJØ—‘Ü×)Ñ)Ü×$Ñ$ð!ó ð "×(Ñ(¨¯©¸¿¹Ñ)FÖGð5	Hô6 "Ð"3Ó4Ðð ! 9Ñ,Ð,rY   c                 ó   — t        d«      ‚)Nz\Unable to call ExportedProgram directly. You should use `exported_program.module()` instead.r®  )rR   rh   ri   s      rW   Ú__call__zExportedProgram.__call__¦  s   € ÜðBó
ð 	
rY   c                 óÖ   — | j                   j                  dd¬«      j                  dd«      }t        | j                  «      j                  dd«      }d|› d|› d| j
                  › d�}|S )NF)Úprint_outputÚcoloredú
z
    zExportedProgram:
    z
Graph signature: z
Range constraints: )rÞ   Úprint_readableÚreplacera   r³   r�  )rR   rÞ   r³   Ústrings       rW   Ú__str__zExportedProgram.__str__¬  s‰   € Ø×(Ñ(×7Ñ7Ø¨ð 8ó 
ç
‰'�$˜Ó
!ð 	ô ˜d×2Ñ2Ó3×;Ñ;¸DÀ(ÓKˆðØ�.ð ! Ø /Ð0ð 1"Ø"&×"8Ñ"8Ð!9¸ð=ð 	ð ˆrY   c                 ó¾   — ddl m}  || |¬«      }ddt        fd„}ddt        fd„}t        j                  ||«      |_        t        j                  ||«      |_        |S )añ  
        Returns a self contained GraphModule with all the parameters/buffers inlined.

        - When `check_guards=True` (default), a `_guards_fn` submodule is generated
          and a call to a `_guards_fn` submodule is inserted right after placeholders
          in the graph. This module checks guards on inputs.
        - When `check_guards=False`, a subset of these checks are performed by a
          forward pre-hook on the graph module. No `_guards_fn` submodule is generated.

        r7   )Ú&_unlift_exported_program_lifted_states)Úcheck_guardsÚmodec                 ó   — t        d«      ‚)Nz%Calling train() is not supported yet.©ÚNotImplementedError©rR   r  s     rW   Ú_trainz&ExportedProgram.module.<locals>._trainÈ  s   € Ü%Ð&MÓNÐNrY   c                 ó   — t        d«      ‚)Nz$Calling eval() is not supported yet.r  r  s     rW   Ú_evalz%ExportedProgram.module.<locals>._evalË  s   € Ü%Ð&LÓMÐMrY   ©T)rÍ  rÿ  ÚboolÚtypesÚ
MethodTypeÚtrainÚeval)rR   r   rÿ  rÚ   r  r  s         rW   rÚ   zExportedProgram.module¹  s_   € õ 	Dá7¸È<ÔXˆñ	Oœtó 	Oñ	Nœdó 	Nô ×'Ñ'¨°Ó7ˆŒÜ×&Ñ& u¨fÓ5ˆŒØˆrY   c                 óœ   — t        d„ t        | j                  j                  «      D «       t	        | j                  j                  «      «      S )Nc              3   ó`   K  — | ]&  \  }}|j                   t        j                  k(  r|–— Œ( y ­wrP   )rÐ   r<   r  )r¢  rU   Úss      rW   r£  z=ExportedProgram._num_lifted_params_buffers.<locals>.<genexpr>Ô  s.   è ø€ ò á�A�qØ—6‘6œY×1Ñ1Ò1ô ñùs   ‚,.)Únextr
  r–  rÔ   r  r¬  s    rW   Ú_num_lifted_params_buffersz*ExportedProgram._num_lifted_params_buffersÒ  sC   € Üñä% d×&;Ñ&;×&GÑ&GÓHôô
 �×%Ñ%×1Ñ1Ó2ó
ð 	
rY   r˜   r¿   c                 ó¬   — |€
t        «       n
t        |«      }t        |t        «      r|j	                  «       }t        |«      \  }}t        | ||d|¬«      S )a“  
        Run a set of decompositions on the exported program and returns a new
        exported program. By default we will run the Core ATen decompositions to
        get operators in the
        `Core ATen Operator Set <https://pytorch.org/docs/stable/torch.compiler_ir.html>`_.

        For now, we do not decompose joint graphs.

        Args:
            decomp_table:
             An optional argument that specifies decomp behaviour for Aten ops
             (1) If None, we decompose to core aten decompositions
             (2) If empty, we don't decompose any operator


        Some examples:

        If you don't want to decompose anything

        .. code-block:: python

            ep = torch.export.export(model, ...)
            ep = ep.run_decompositions(decomp_table={})

        If you want to get a core aten operator set except for certain operator, you can do following:

        .. code-block:: python

            ep = torch.export.export(model, ...)
            decomp_table = torch.export.default_decompositions()
            decomp_table[your_op] = your_custom_decomp
            ep = ep.run_decompositions(decomp_table=decomp_table)
        Nr�  )rH   rv   rÅ   r3   Úmaterializer¢   r“  )rR   r˜   r¿   Ú_decomp_tabler¥   r¦   s         rW   Úrun_decompositionsz"ExportedProgram.run_decompositionsÜ  sk   € ðP )5Ð(<Ô"Ô$Ä$À|ÓBTð 	ô �mÔ%6Ô7Ø)×5Ñ5Ó7ˆMô" 9¸ÓGñ	
ØØô +ØØ'Ø 3Ø!Ø(Cô
ð 	
rY   Úpassesc                 óf  — t        t        |«      «      }ddlm}  |«       5   || j                  «      }d d d «       �|j                  n| j                  }|€t        d«      ‚|| j                  u r|j                  s| S dt        dt        j                  j                  dt        fd„}t        ||j                   || j                  |«      | j                  t        || j                   «      t#        j$                  | j&                  «      | j(                  | j*                  | j,                  ¬«	      }|j                  j.                  j1                  | j                  j.                  «       |j                  j.                  j1                  |j                  j.                  «       |S # 1 sw Y   �ŒsxY w)	Nr   )r­   ztransformed_gm must not be NoneÚold_signatureÚnew_gmrs   c           	      ó´  — g }t        |j                  j                  «      D ]î  \  }}|j                  dk7  r nÚ|t	        | j
                  «      k\  r%t        d|› dt	        | j
                  «      › d�«      ‚| j
                  |   }t        |j                  t        t        f«      r|j                  n$ t        |j                  «      |j                  «      }|j                  t        |j                  ||j                   |j"                  «      «       Œð t%        |j                  j                  «      d   }|j                  dk7  rt        d|j                  ›�«      ‚g }t        |j&                  d   «      D ]Ò  \  }}|t	        | j(                  «      k\  r%t        d	|› dt	        | j(                  «      › d
�«      ‚| j(                  |   }	t        |	j                  t        t        f«      r|	j                  n$ t        |	j                  «      |j                  «      }|j                  t+        |	j                  ||	j                   «      «       ŒÔ t-        ||¬«      }
|
S )zO
            Update the graph signature's user_input/user_outputs.
            r¼   z9Number of inputs changed after transformation: got index z
 but only z input_specsrr  r@  z,expected last node to have op='output', got r   z:Number of outputs changed after transformation: got index z output_specsrÓ   )r
  rà   rì   r}   r  rÔ   rž   rÅ   rÑ   r9   r:   rÇ   rQ   rð   r=   rÐ   rÒ   r  r]   rh   rÕ   r?   r;   )r  r  Únew_input_specsrU   r$  Úold_input_specrÑ   r   Únew_output_specsÚold_output_specÚnew_signatures              rW   Ú_get_updated_graph_signaturezKExportedProgram._transform_do_not_use.<locals>._get_updated_graph_signature4  sb  € ð !ˆOÜ$ V§\¡\×%7Ñ%7Ó8ò ‘��4Ø—7‘7˜mÒ+Ùàœ˜M×5Ñ5Ó6Ò6Ü(ØSÐTUÐSVð W$Ü$'¨×(AÑ(AÓ$BÐ#CÀ<ðQóð ð "/×!:Ñ!:¸1Ñ!=�ô "Ø&×*Ñ*Ô-=Ô?PÐ,Qôð #×&Ò&ð 2œ˜n×0Ñ0Ó1°$·)±)Ó<ð ð  ×&Ñ&ÜØ&×+Ñ+ØØ&×-Ñ-Ø&×1Ñ1ó	õð#ô4 ˜vŸ|™|×1Ñ1Ó2°2Ñ6ˆKØ�~‰~ Ò)Ü$ØBÀ;Ç>Á>ÐBTÐUóð ð  "ÐÜ$ [×%5Ñ%5°aÑ%8Ó9ò ‘��4Øœ˜M×6Ñ6Ó7Ò7Ü(ØTÐUVÐTWð X$Ü$'¨×(BÑ(BÓ$CÐ#DÀMðSóð ð #0×"<Ñ"<¸QÑ"?�ô "Ø'×+Ñ+Ô.>Ô@QÐ-Rôð $×'Ò'ð 3œ˜o×1Ñ1Ó2°4·9±9Ó=ð ð !×'Ñ'Ü˜×3Ñ3°S¸/×:PÑ:PÓQõðô$ 1Ø+Ð:JôˆMð !Ð rY   ©	rŽ  rà   r³   ré   r�  ra  rñ   rè   rž  )r6   r]   rØ   r­   rÞ   rž   Úmodifiedr;   r‡   rý   rþ   rE   rà   r³   ré   r�  r�  rƒ   rs  r™  rñ   rè   rž  rí   rŽ   )rR   r  Úpmr­   ÚresÚtransformed_gmr"  Útransformed_eps           rW   Ú_transform_do_not_usez%ExportedProgram._transform_do_not_use#  sw  € Üœ˜f›Ó&ˆõ 	@á$Ó&ñ 	(Ù�T×&Ñ&Ó'ˆC÷	(à-0¨_˜×)Ò)À$×BSÑBSˆØÐ!Ü Ð!BÓCÐCð ˜T×.Ñ.Ñ.°s·|²|ØˆKð>	!Ü/ð>	!ä—H‘H×(Ñ(ð>	!ô "ó>	!ô@ )ØØ ×&Ñ&Ù8Ø×$Ñ$ nóð —‘Ü<ØØ×&Ñ&óô #Ÿm™m¨D×,CÑ,CÓDØ×.Ñ.Ø—n‘nØ—n‘nô
ˆð  	×#Ñ#×(Ñ(×/Ñ/°×0AÑ0A×0FÑ0FÔGà×#Ñ#×(Ñ(×/Ñ/°×0@Ñ0@×0EÑ0EÔFØÐ÷}	(ñ 	(ús   ¢F&Æ&F0c                 óR  — ddl m} | j                  j                  D �cg c]  }|j                  dk(  sŒ|‘Œ }}t        || j                  j                  «      D ��cg c]$  \  }}|j                  t        j                  k(  r|‘Œ& }}} |||| j                  «       y c c}w c c}}w )Nr   )Ú"_check_input_constraints_for_graphr¼   )Útorch._export.utilsr+  rà   rì   r}   r  r³   rÔ   rÐ   r<   r  r�  )rR   rê  r+  r0  Úplaceholdersr  Úinput_placeholderss          rW   ré  z(ExportedProgram._check_input_constraints‰  s™   € ÝJà#'§:¡:×#3Ñ#3ÖM˜a°q·t±t¸}Ó7LšÐMˆÐMô ˜L¨$×*>Ñ*>×*JÑ*JÓK÷
á��1Ø�v‰vœ×-Ñ-Ò-ò ð
Ðñ 
ñ
 	+ØÐ 3°T×5KÑ5Kõ	
ùò Nùó
s   ŸB´BÁ)B#c                 ó$   — | j                  «        y rP   )Ú	_validater¬  s    rW   r§  zExportedProgram.validate–  s   € à�‰ÕrY   c                 ó˜   — t        | j                  «      dk(  rt        d«      ‚| j                  D ]  } |«       j                  | «       Œ y )Nr   z0ExportedProgram must have at least one verifier.)r  rž  rž   Úcheck)rR   rN  s     rW   r0  zExportedProgram._validate›  s?   € äˆt�~‰~Ó !Ò#Ü Ð!SÓTÐTØ—‘ò 	ˆAÙ‹C�I‰I�d�Oñ	rY   )ré   rè   rž  c                ó$  — t        ||j                  ||�|n| j                  t        j                  | j
                  «      t        j                  | j                  «      | j                  |�|n| j                  |�|¬«	      S | j                  ¬«	      S )Nr#  )
rE   rà   ré   rƒ   rs  r�  r™  rñ   rè   rž  )rR   rÞ   r³   ré   rè   rž  s         rW   Ú_updatezExportedProgram._update£  s…   € ô ØØ×$Ñ$Ø+Ø%/Ð%;‘zÀÇÁÜ"Ÿm™m¨D×,BÑ,BÓCÜ"Ÿm™m¨D×,CÑ,CÓDØ×.Ñ.Ø#,Ð#8‘i¸d¿n¹nØ#,Ð#8�iô

ð 
	
ð ?C¿n¹nô

ð 
	
rY   )NNr	  )NF)rs   rE   )@rZ   r[   r\   Ú__doc__r‡   rý   rþ   r^   r;   rv   ra   r   r]   rF   rä   r   rÇ   r+   r÷   ÚModuleÚGraphr  rø   r©  Úpropertyr4   rÞ   Úsetterrà   r³   ré   r   r¹  rÛ   r¿  rÜ   r�  ra  rñ   rÎ  rØ  rÛ  rž  râ  rè   rí  ró  rõ  rý  rÚ   r  rn   Ú_opsÚOperatorBaser   r
  r  ÚPassTyper)  ré  r§  r   r0  r4  rb   rY   rW   rE   rE   "  sB  … ñð —8‘8×'Ñ'Ó'ØOà*Ó*ØMà�c˜3�h‘ÓØUà9Ó9ØEà˜_Ñ-Ó-ØJà˜5  c ™?¨D°°c°©NÐ:Ñ;¸dÑBÓBØLà�SÐ0Ð0Ñ1Ó1Ø:à�T˜(‘^Ñ$Ó$ØIà�s‘)Óð IMØ>Bð)Hð 26ò)Hà�h‰h�o‰o  S¨# X¡Ñ.ð)Hð �x‰x�~‰~ð)Hð .ð	)Hð
 ˜˜eŸl™l¨U¯X©X×-?Ñ-?Ñ?Ð?Ñ@ð)Hð 5ð)Hð   Ñ0ð)Hð ˜e C¨ H™o¨t°C¸°H©~Ð=Ñ>ÀÑEð)Hð ˜Ð3Ð3Ñ4°tÑ;ð)Hð ˜˜X™Ñ'¨$Ñ.ó)HðV Ù¨%Ô0ñ"ó 1ó ð"ð ×ÑÙ¨%Ô0ñVó 1ó ðVð Ù¨%Ô0ñ'ó 1ó ð'ð ‡\�\Ù¨%Ô0ñOó 1ó ðOð Ù¨%Ô0ñ%ó 1ó ð%ð ×ÑÙ¨%Ô0ñYó 1ó ðYð Ù¨%Ô0ñ ó 1ó ð ð ×ÑÙ¨%Ô0ñTó 1ó ðTñ ¨%Ô0ð˜H U§X¡X×%7Ñ%7Ñ8ò ó 1ðñ ¨%Ô0ð: (¨5°°e·h±h×6HÑ6HÐ1HÑ+IÑ"Jò :ó 1ð:ñ ¨%Ô0ð˜ %§,¡,Ñ/ò ó 1ðñ ¨%Ô0ð>˜x¨¨c°5·<±<Ð.?Ñ(@ÑAò >ó 1ð>ð2 Ù¨%Ô0ñ'ó 1ó ð'ð ×ÑÙ¨%Ô0ñ
ó 1ó ð
ð
 Ù¨%Ô0ñ'ó 1ó ð'ð ×ÑÙ¨%Ô0ñ
ó 1ó ð
ð
 Ù¨%Ô0ñ$ó 1ó ð$ð ×ÑÙ¨%Ô0ñ%ó 1ó ð%ð2 Ù¨%Ô0ñ
ó 1ó ð
ð  ×ÑÙ¨%Ô0ñSó 1ó ðSð Ù¨%Ô0ð"˜#ò "ó 1ó ð"ð ‡_�_Ù¨%Ô0ñRó 1ó ðRð Ù¨%Ô0ð*˜ò *ó 1ó ð*ð
 ‡^�^Ù¨%Ô0ñQó 1ó ðQð Ù¨%Ô0ñó 1ó ðð ×ÑÙ¨%Ô0ñSó 1ó ðSð Ù¨%Ô0ñó 1ó ðð ×ÑÙ¨%Ô0ñ
ó 1ó ð
ð
 Ù¨%Ô0ñó 1ó ðð ×ÑÙ¨%Ô0ñSó 1ó ðSò(ð.6-¨cð 6-¸3ð 6-À3ó 6-ðp
˜cð 
¨Sð 
°Só 
ð˜ó ñ¨5¯8©8×+?Ñ+?ó ò2
ð $ð HLØ,1ñD
à˜5Ÿ:™:×2Ñ2°HÐ<Ñ=ÀÑDðD
ð &*ðD
ð 
ò	D
ó $ðD
ðLd¨Xð dÐ:Kó dòL
ñ ¨%Ô0ñó 1ðð ñó ðð ØØñ
ð 
ô
rY   c                 óP  — | j                   j                  D �cg c]-  }|j                  j                  dd «      �|j                  d   ‘Œ/ }}ddlm}  ||«      }|�|j                  S |D ]4  }t        |t        j                  «      sŒ|j                  j                  c S  y c c}w )Nr½   r   r,   )rà   rì   rí   r  Útorch._guardsr-   r¸   rÅ   r‡   ÚSymIntr$  )rô   r$  Úvalsr-   r  rN  s         rW   r	  r	  ¹  sš   € ð —H‘H—N‘NöàØ�9‰9�=‰=˜ Ó%Ð1ð 	�	‰	�%Óð€Dð õ
 /á  Ó&€IØÐØ×"Ñ"Ð"Øò $ˆÜ�aœŸ™Õ&Ø—6‘6×#Ñ#Ò#ñ$ùòs   ™2B#Úold_range_constraintszdict[sympy.Symbol, Any] | NonerŸ  c                 óN  — |€t        d«      ‚t        | «      }|€i S t        j                  |«      }|j                  «       D ��ci c]  \  }}||j                  vsŒ||“Œ }}}|j
                  j                  «       D ]  \  }}||j                  vsŒ||vsŒ|||<   Œ  |S c c}}w )Nz&old_range_constraints must not be None)rž   r	  rƒ   r�   ÚreplacementsÚvar_to_range)rô   rA  r¸   r�  r¡   rN  s         rW   r�  r�  É  sÆ   € ð Ð$ÜÐEÓFÐFä˜rÓ"€IØÐØˆ	äŸ	™	Ð"7Ó8Ðà*×0Ñ0Ó2÷Ù��A°a¸y×?UÑ?UÒ6Uˆˆ1‰ðÐñ ð ×&Ñ&×,Ñ,Ó.ò %‰ˆˆ1Ø�I×*Ñ*Ò*¨qÐ8IÒ/IØ#$Ð˜aÒ ð%ð Ðùós   ÁB!ÁB!c                 ó  — 	 t         j                  j                  | |«      }|S # t        $ r^ t	        j
                  dd¬«       t         j                  j                  | t         j                  j                  «       «      }||_        Y |S w xY w)NzóUnable to execute the generated python source code from the graph. The graph module will no longer be directly callable, but you can still run the ExportedProgram, and if needed, you can run the graph module eagerly using torch.fx.Interpreter.rË  )Ú
stacklevel)r‡   rý   rþ   ÚSyntaxErrorÚwarningsÚwarnr7  Ú_graph)rŽ  rà   rô   s      rW   r¥  r¥  á  s}   € ðÜ�X‰X×!Ñ! $¨Ó.ˆð" €Iøô! ò ô 	�‰ðGð õ	
ô �X‰X×!Ñ! $¬¯©¯©Ó(8Ó9ˆØˆ�	à€Ið!ús   ‚ $ ¤A#BÂ
Bc                 ó(  — t        | «      }|€g S |j                  j                  «       D ��ch c]  \  }}t        d„ |D «       «      r|’Œ }}}t        j
                  j                  j                  j                  |j                  d„ |j                  «      }|j                  D �cg c]B  }|j                  j                  j                  |«      r|j                  |j                  «      ‘ŒD }}|D �cg c]	  }d|vsŒ|‘Œ c}S c c}}w c c}w c c}w )Nc              3   óz   K  — | ]3  }t        |t        j                  j                  j                  «       –— Œ5 y ­wrP   )rÅ   r‡   r  rL  ÚConstantSource)r¢  rL  s     rW   r£  z*_convert_guards_to_code.<locals>.<genexpr>ÿ  s2   è ø€ ò 
àô ˜6¤5§=¡=×#7Ñ#7×#FÑ#FÓGÔGñ
ùs   ‚9;c                 ó   — | j                   S rP   rÄ   )r  s    rW   rp  z)_convert_guards_to_code.<locals>.<lambda>  s
   € ¨A¯F©F€ rY   z	L['self'])r	  Úvar_to_sourcesr�   r¦  r‡   rý   ÚexperimentalÚsymbolic_shapesÚShapeGuardPythonPrinterÚguardsÚexprÚfree_symbolsÚissubsetÚdoprint)rÞ   r¸   ÚvarÚsourcesÚ
local_varsÚ
py_printerÚguardÚrets           rW   r¨  r¨  ÷  s
  € Ü˜|Ó,€IØÐØˆ	ð &×4Ñ4×:Ñ:Ó<÷áˆC�Üñ 
à!ô
ô 
ò 	ð€Jñ ô —‘×&Ñ&×6Ñ6×NÑNØ× Ñ Ñ"2°I×4LÑ4Ló€Jð
 ×%Ñ%öàØ�:‰:×"Ñ"×+Ñ+¨JÔ7ð 	×Ñ˜5Ÿ:™:Õ&ð€Cð ð  #Ö?�e k¸Ò&>ŠEÒ?Ð?ùó%ùòùò @s   ­DÂ&AD
Ã3	DÃ=D)rs   r3   rP   )™rû   rƒ   Údataclassesrl   r_  r  rH  Úcollectionsr   Úcollections.abcr   r   r   Útypingr   r   r	   r
   r>  r   r   Útorch._higher_order_ops.utilsr   Ú"torch._library.fake_class_registryr   Útorch._subclasses.fake_implsr   r   r   Útorch._subclasses.fake_tensorr   Útorch.fx._symbolic_tracer   Útorch.fx._utilsr   Útorch.fx.graphr   r   Útorch.fx.immutable_collectionsr   r   Útorch.fx.passes.runtime_assertr   ÚsympyÚtorch.utils._sympy.value_rangesr   r‡   Útorch.utils._pytreeÚutilsÚ_pytreer_   r,  r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   Útorch._export.verifierr+   r-   r/   Útorch.export._tree_utilsr0   r1   Útorch.export.decomp_utilsr3   Útorch.fx._compatibilityr4   Útorch.fx.passes.infra.pass_baser5   Ú"torch.fx.passes.infra.pass_managerr6   r³   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   Ú__all__rý   rþ   r<  Ú	dataclassrG   rF   rn   rÇ   ÚContextr
  rw   rˆ   r‰   ÚAutogradCPUÚAutogradCUDAÚAutogradMetaÚAutogradXLAÚAutogradLazyÚAutogradIPUÚAutogradXPUÚAutogradMPSÚAutogradHPUÚAutogradPrivateUse1ÚAutogradPrivateUse2ÚAutogradPrivateUse3r…   ÚCPUÚCUDAÚMetaÚXLAÚLazyÚIPUÚXPUÚMPSÚHPUrŒ   r—   rv   r:  r;  rä   r¢   rH   r  rO  rö   rg  r]   r‹  r“  rE   r	  r�  r¥  r¨  rb   rY   rW   ú<module>rŽ     s  ðó Û Û Û Û Û Û Ý #ß .Ý %ß 8Ó 8ç 1Ý BÝ ?÷ñ õ
 9Ý ;Ý ?ß 6ß IÝ Jñ ó
 å;ã ß $Ð $÷÷ ÷ ÷ ó õ$ ,Ý *Ý @ß BÝ 7Ý 1Ý 6Ý :÷÷ ÷ õ ò"€ð �U—X‘X×)Ñ)Ð*¨J¸Ñ,=Ð=Ñ>€ð ×Ñ÷'ð 'ó ð'ð  ×Ñ÷1ð 1ó ð1ò
ðGØ�t‘ðGà—>‘>ðGð �t‘ðGð —>‘>ð	Gð
 
óGð: 
‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×%Ñ%Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×$Ñ$Ø	‡H�H×Ñ×,Ñ,Ø	‡H�H×Ñ×,Ñ,Ø	‡H�H×Ñ×,Ñ,ð,Ð (ð, 
‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÑØ	‡H�H×Ñ×ÒØ	‡H�H×Ñ×ÒØ	‡H�H×Ñ×ÒØ	‡H�H×Ñ×ÒØ	‡H�H×Ñ×Òð
Ð ð ñP$ó ðP$ðf,-Ø�u—z’z×.Ò.°Ð8Ñ9ð,-à
ˆ4�—
’
×'Ò'¨Ð1Ñ2°CÐ7Ñ8ó,-ó^ðb2Øðb2ð ˜Ÿ
š
×/Ò/°Ð9Ñ:ðb2ð ˜eŸjšj×5Ò5°xÐ?Ñ@ð	b2ð
 ˜D‘jób2ðJ#Ø�‰×Ñð#Ø3Gð#à
ˆ5�8‰8×ÑÐ!5Ð5Ñ6ó#ð2.Ø�‰×Ñó.ð:B!Ø�H‰H× Ñ ðB!à-ðB!ð 	�‰×ÑðB!ð *ð	B!ð
   Ñ0óB!ðJ4ð ˜Ÿ
š
×/Ò/°Ð9Ñ:ð4ð ˜eŸjšj×5Ò5°xÐ?Ñ@ð	4ð
 ˜D‘jð4ð "&ó4÷nT

ñ T

òn$ð$ ?CñØ�‰×Ñðà;ðð óò0ó,@rY   