+
    –°³j–²  ã                  óÆ  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHtHtHtHt ^ RIt^ RIt^ RIt^ RIHu Ht ^ RIHtHtHt ^ RIHt ^ RIHtH t  ^ R	I!H"t" ^ R
I#H$t$ ^ RI%H&t&H't' ^ RI(H)t) ^ RI*H+t+H,t,H-t- ^ RI.H/t/H0t0 ^ RI1H2t2H3t3H4t4 ^ RI5H6t6H7t7 ]'       d+   ^ RI8H9t9H:t:H;t; ^ RI<H=t= ^ RI>H?t? ^ RI@HAtA ^ RIHBtB ^ RICHDtDHEtE ^ RIFHGtG ^ RIHHItIHJtJHKtKHLtL ]! R4      tM]Pœ                  ! ]O4      tPR R ltQ. RAOtRR R ltSRBR R lltTR  R! ltU ! R" R#]P¬                  P®                  4      tX]! R$R%R&.4      tY ! R' R(]P´                  P¶                  4      t\R) R* lt]R+ R, lt^R- R. lt_ ! R/ R04      t` ! R1 R2]a4      tb ! R3 R44      tc ! R5 R64      tdR7 R8 lte ! R9 R:]P´                  PÌ                  PÎ                  4      thRCR; R< lltiR=RR>R/R? R@ lltjR# )Dé    )ÚannotationsN)Ú
namedtuple)Únullcontext)ÚAnyÚcastÚTYPE_CHECKINGÚTypeVar)ÚCaptureOutputÚfullgraph_captureÚget_traced_fn)Údisable)Úargument_namesÚcheck_user_input_output)ÚUserErrorType)ÚGetItemSource)Údynamo_timedÚget_metrics_context)Ú_compiling_state_context)Údetect_fake_modeÚSourceÚTracingContext)Ú_RelaxedConstraintÚ
Constraint)ÚConstraintViolationErrorÚ
DimDynamicÚStatelessSymbolicContext)Ú_PyTreeCodeGenÚ_PyTreeInfo)ÚCallableÚIterableÚSequence)ÚOutputReturnInfo)ÚFakeTensorMode)Ú_DynamicShapesInput)ÚNode)ÚArgumentÚTarget)Ú_bind_spec_to_args)Ú_coerce_to_shapes_specÚIntermediateSpecÚ
ParamsSpecÚ
ShapesSpecÚTc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	é   Úconstraint_violation_errorr   ÚfuncúCallable[..., Any]Úargsr   ÚkwargsÚreturn© )Úformats   "Ú`/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/functional_export.pyÚ__annotate__r9   8   s:   € ÷ &ñ &Ø 8ð&à
ð&ð ð&ð ð	&ð
 ñ&ó    c                óº   € ^ RI HpHp \        P                  ! V4      pV! W#3V4      pV P
                  '       d!   V! V P
                  ^ ,          V4      3V n        V # )z
Because we trace a different callable, the sources are all messed up.
Manually patch them so the error message looks correct.
)Ú_get_input_pathsÚ_replace_sources)Útorch.export._unliftr<   r=   ÚinspectÚ	signaturer3   )r0   r1   r3   r4   r<   r=   Úorig_sigÚflat_input_pathss   &&&&    r8   Úpost_process_error_msgrC   8   s]   € ÷ Hä× Ò  Ó&€HÙ'¨¨¸ÓAÐØ!×&×&Ð&áÐ7×<Ñ<¸QÕ?ÐAQÓRð+
Ð"Ô'ð &Ð%r:   c               ó    € V ^8„  d   QhRRRR/# )r/   ÚtextÚstrr5   r6   )r7   s   "r8   r9   r9   T   s   € ÷ ñ  3ð ¨3ñ r:   c                óJ   € T p\          F  w  r#VP                  W#4      pK  	  V# )z;Generic utility to clean export_root patterns from strings.)ÚEXPORT_ROOT_REPLACEMENTSÚreplace)rE   ÚresultÚpatternÚreplacements   &   r8   Úclean_export_root_stringrM   T   s'   € à€Fß 8ÑˆØ—‘ Ó5Šñ !9à€Mr:   c               ó$   € V ^8„  d   QhRRRRRR/# )r/   Úgraph_moduleútorch.fx.GraphModuleÚis_inline_builtinÚboolr5   r6   )r7   s   "r8   r9   r9   \   s)   € ÷ Yñ YØ&ðYØ;?ðYàñYr:   c                óB  a€ R V3R llpR R lpV P                   P                   F‘  pRVP                  9   d5   V! VP                  R,          P                  4       4      VP                  R&   VP                  P	                  RR4      pV'       g   Kn  V! VP                  4       4      VP                  R&   K“  	  RV P                  9   dS   / pV P                  R,          P                  4        F  w  rx\        V4      V\        V4      &   K  	  VV P                  R&   V # )	aÑ  
Clean up nn_module_stack metadata by removing export_root references.

Removes the _export_root module references from nn_module_stack metadata
in graph nodes, which are artifacts from the export process. Fixes two patterns:

1. Keys: Removes "__export_root_" and "__modules['_export_root']_" prefixes
   - Normal case: "L__self____export_root_child" -> "L__self__child"
   - inline_builtin case: Uses numeric ID strings like "140468831433840"

2. Values: Removes "._export_root" and "._modules['_export_root']" from child names
   e.g., "L['self']._export_root.child" -> "L['self'].child"
   e.g., "L['self']._modules['_export_root'].child" -> "L['self'].child"

Also removes the root export entry "L__self____export_root" entirely.

Args:
    graph_module: The GraphModule to clean up
    is_inline_builtin: If True, keys are numeric ID strings and self references
                      (L['self']) are filtered out

Returns:
    The cleaned GraphModule (modified in-place)
c               ó    € V ^8„  d   QhRRRR/# )r/   Únn_module_stackzdict[str, tuple[str, T]]r5   r6   )r7   s   "r8   r9   Ú9clean_nn_module_stack_and_source_fn.<locals>.__annotate__x   s   € ÷ ñ Ø1ðà	!ñr:   c                ó°   <€ R V 9   d   V R  / pV P                  4        F4  w  pw  r4\        V4      p\        V4      pS'       d
   VR8X  d   K/  Wd3W&   K6  	  V# )ÚL__self____export_rootz	L['self'])ÚitemsrM   )rU   Úcleaned_stackÚkeyÚ
child_nameÚchild_classÚ	clean_keyÚ
clean_namerQ   s   &      €r8   Ú_process_nn_module_stackÚEclean_nn_module_stack_and_source_fn.<locals>._process_nn_module_stackx   sq   ø€ ð $ Ô6ØÐ 8Ð9ð ˆØ.=×.CÑ.CÖ.EÑ*ˆCÑ*�*ä0°Ó5ˆIô 2°*Ó=ˆJ÷ ! Z°;Ô%>Ùà(2Ð'@ˆMÓ$ñ /Fð Ðr:   c               ó    € V ^8„  d   QhRRRR/# )r/   Úsource_fn_stackzIterable[T]r5   r6   )r7   s   "r8   r9   rV   Ž   s   € ÷ ñ ¨Kð ¸Kñ r:   c                ó"  € . pV  F†  p\        V\        4      '       d]   \        V4      ^8X  dM   Vw  r4\        V\        4      '       d    \	        V4      pVP                  WT34       Kb  VP                  V4       Ku  VP                  V4       Kˆ  	  V# )r/   )Ú
isinstanceÚtupleÚlenrF   rM   Úappend)rc   rZ   ÚitemÚnameÚclsr_   s   &     r8   Ú_process_source_fnÚ?clean_nn_module_stack_and_source_fn.<locals>._process_source_fnŽ   s}   € ØˆÛ#ˆDÜ˜$¤×&Ò&¬3¨t«9¸¬>Ø ‘	�Ü˜d¤C×(Ò(Ü!9¸$Ó!?�JØ!×(Ñ(¨*Ð):Ö;à!×(Ñ(¨Ö.ð ×$Ñ$ TÖ*ñ $ð Ðr:   rU   rc   NÚ dynamo_flat_name_to_original_fqn)ÚgraphÚnodesÚmetaÚcopyÚgetrY   rM   )	rO   rQ   r`   rl   Únoderc   Úclean_name_to_original_fqnÚ	flat_nameÚoriginal_fqns	   &f       r8   Ú#clean_nn_module_stack_and_source_fnrx   \   s  ø€ ÷8ð õ,ð  ×"Ñ"×(Ô(ˆØ §	¡	Ô)Ù+CØ—	‘	Ð+Õ,×1Ñ1Ó3ó,ˆD�I‰IÐ'Ñ(ð Ÿ)™)Ÿ-™-Ð(9¸4Ó@ˆß‰?Ù+=¸o×>RÑ>RÓ>TÓ+UˆD�I‰IÐ'Ó(ñ )ð *¨\×->Ñ->Ô>à%'Ð"Ø'3×'8Ñ'8Ø.õ(
ç
‰%‹'ò(Ñ#ˆIô )¨Ó6ð 'Ô'?À	Ó'JÓKñ(ð 'ð 	×ÑÐ<Ñ=ð Ðr:   c               ó    € V ^8„  d   QhRRRR/# )r/   rO   rP   r5   ÚNoner6   )r7   s   "r8   r9   r9   ¸   s   € ÷ 0<ñ 0<Ð$8ð 0<¸Tñ 0<r:   c                óê  € / pV P                   P                   EFÕ  pVP                  R8X  dÀ   VP                  p\	        V4      pWC8w  d£   WBn        \        W4      '       g   \        RV: 24      h\        P                  P                  P                  W4      p\        P                  P                  P                  WPV4       \        P                  P                  P                  W4       VP                  R8X  g   Kç  VP                  p\        V\        4      '       g   \        R\        V4       24      h\	        V4      p\        V\        4      '       g   \        R\        V4       24      h\	        VP                   4      pWC8X  d   EKv  W19   d   W,          Vn        Wbn        EK’  V P#                  V4      pV P%                  V4       V P'                  WG4       WBn        Wbn        WAV&   EKØ  	  R# )z3Remove export_root artifacts from FX graph in-placeÚget_attrzgraph_module missing attribute Úcall_modulez#expected old_target to be str, got z#expected new_target to be str, got N)ro   rp   ÚopÚtargetrM   ÚhasattrÚAssertionErrorÚtorchÚfxrO   Ú	_get_attrÚ_assign_attrÚ	_del_attrre   rF   Útyperj   Úget_submoduleÚdelete_submoduleÚadd_submodule)rO   Úclean_named_module_maprt   Ú
old_targetÚ
new_targetÚparamÚnew_namer   s   &       r8   Úclean_export_rootr�   ¸   s£  € ð
 .0Ðð ×"Ñ"×(Õ(ˆØ�7‰7�jÔ ØŸ™ˆJÜ1°*Ó=ˆJØÔ'Ø(”Ü˜|×8Ò8Ü(Ø9¸*¹ÐHóð ô Ÿ™×-Ñ-×7Ñ7¸ÓQ�Ü—‘×%Ñ%×2Ñ2°5È
ÔSÜ—‘×%Ñ%×/Ñ/°ÔIà�7‰7�mÖ#ØŸ™ˆJÜ˜j¬#×.Ò.Ü$Ø9¼$¸zÓ:JÐ9KÐLóð ô 2°*Ó=ˆJÜ˜j¬#×.Ò.Ü$Ø9¼$¸zÓ:JÐ9KÐLóð ô 0°·	±	Ó:ˆHØÔ'Úð Ô3Ø4Õ@�”Ø$”	ÚØ!×/Ñ/°
Ó;ˆFØ×)Ñ)¨*Ô5Ø×&Ñ& zÔ:Ø$ŒKØ ŒIØ1; :Ô.óQ )r:   c                  ó:   a € ] tR t^ëtR V 3R lltR R ltRtV ;t# )ÚModuleToTracec               ó$   € V ^8„  d   QhRRRRRR/# )r/   Úfoor   Úin_specr5   rz   r6   )r7   s   "r8   r9   ÚModuleToTrace.__annotate__ì   s!   € ÷ ñ ˜Cð ¨#ð °$ñ r:   c                	ó<   <€ \         SV `  4        Wn        W n        R # ©N)ÚsuperÚ__init__Ú_export_rootr•   )Úselfr”   r•   Ú	__class__s   &&&€r8   rš   ÚModuleToTrace.__init__ì   s   ø€ Ü‰ÑÔØÔØŽr:   c               ó    € V ^8„  d   QhRRRR/# )r/   Ú	flat_argsr   r5   ÚExportTracerOutputr6   )r7   s   "r8   r9   r–   ñ   s   € ÷ 6ñ 6 #ð 6Ð*<ñ 6r:   c                	ó°   € \         P                  ! WP                  4      w  r#V P                  ! V/ VB p\         P                  ! V4      w  rV\        WV4      # r˜   )ÚpytreeÚtree_unflattenr•   r›   Útree_flattenr¡   )rœ   r    r3   r4   ÚresÚout_flatÚout_specs   &*     r8   ÚforwardÚModuleToTrace.forwardñ   sK   € Ü×,Ò,¨Y¿¹ÓE‰ˆØ×Ò Ð0¨Ñ0ˆÜ#×0Ò0°Ó5ÑˆÜ! (Ó5Ð5r:   )r›   r•   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rš   r©   Ú__static_attributes__Ú__classcell__©r�   s   @r8   r’   r’   ë   s   ø† ÷ð ÷
6ó 6r:   r’   r¡   r    r¨   c                  óœ   a € ] tR t^ütRtRR V 3R llltR V 3R lltR R ltR V 3R	 lltR
 V 3R llt	R V 3R llt
R V 3R lltRtV ;t# )ÚDynamoGraphTransformerzZGraph transformer for dynamo export that flattens inputs/outputs without complex matching.c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# )r/   ÚmodulerP   Úflat_inputsz	list[Any]Úflat_args_dynamic_dimszlist[set[int]]Úgraph_input_orderzdict[int, int]Úgraph_output_mapzdict[int, OutputReturnInfo]Ú	fake_modeúFakeTensorMode | NoneÚgraph_inputszdict[int, Source | None] | Noner5   rz   r6   )r7   s   "r8   r9   Ú#DynamoGraphTransformer.__annotate__ÿ   sZ   € ÷ #+ñ #+à$ð#+ð ð#+ð !/ð	#+ð
 *ð#+ð 6ð#+ð )ð#+ð 6ð#+ð 
ñ#+r:   c                	ó4  <€ \         S	V `  V4       \        V4      \        V4      8w  d%   \        R \        V4       R\        V4       R24      hW n        W0n        W@n        WPn        W`n        T;'       g    / V n	        VP                  P                   Uu. uF  qˆP                  R8X  g   K  VNK  	  upV n        \        R VP                  P                   4       4      V n        / V n        V P#                  4        / V n        V P'                  4        R# u upi )zflat_args_dynamic_dims length (z!) must match flat_inputs length (Ú)Úplaceholderc              3  óJ   "  € T F  qP                   R 8X  g   K  Vx € K  	  R# 5i)ÚoutputN)r~   )Ú.0Úns   & r8   Ú	<genexpr>Ú2DynamoGraphTransformer.__init__.<locals>.<genexpr>  s   é € ÐRÑ+= aÇÁÈÑAQ§¢Ó+=ùs   ‚#™
#N)r™   rš   rg   r�   r¶   r·   r¸   r¹   rº   r¼   ro   rp   r~   ÚplaceholdersÚnextÚoutput_nodeÚnew_input_nodesÚ_create_flattened_inputsÚold_to_new_mappingÚ_create_placeholder_mapping)
rœ   rµ   r¶   r·   r¸   r¹   rº   r¼   rÄ   r�   s
   &&&&&&&& €r8   rš   ÚDynamoGraphTransformer.__init__ÿ   s  ø€ ô 	‰Ñ˜Ô äÐ%Ó&¬#¨kÓ*:Ô:Ü Ø1´#Ð6LÓ2MÐ1Nð O2Ü25°kÓ2BÐ1CÀ1ðFóð ð
 'ÔØ&<Ô#Ø!2ÔØ 0ÔØ"ŒØ(×.Ð.¨BˆÔð )/¯©×(:Ò(:ÓTÑ(: 1¿d¹dÀmÑ>SŸQ˜QÑ(:ÑTˆÔÜÑR¨6¯<©<×+=Ò+=ÓRÓRˆÔð :<ˆÔØ×%Ñ%Ô'ð #%ˆÔØ×(Ñ(Ö*ùò Us   ÂDÂ,Dc               ó   € V ^8„  d   QhRR/# ©r/   r5   rz   r6   )r7   s   "r8   r9   r½   $  s   € ÷ (2ñ (2¨$ñ (2r:   c                ó.  <€ \        \        V P                  4      4       EFk  p\        SV `  RV 2R/ 4      pWP
                  9   d…   V P
                  V,          pV\        V P                  4      8  dX   V P                  V,          pVP                  P                  4        F&  w  rVVR8w  g   K  WbP                  P                  V&   K(  	  V P                  Ee!   \        V P                  V,          \        P                  4      '       dð   V P                  P                  V P                  V,          \        \        \        V P                  V,          P                   4      4       Uu. uF:  pWpP"                  V,          9   d   \$        P&                  M\$        P(                  NK<  	  upR.\        V P                  V,          P                   4      ,          R7      R7      VP                  P                  R&   M‚\+        V P                  V,          R4      '       d6   V P                  V,          P,                  VP                  P                  R&   M*V P                  V,          VP                  P                  R&   W P.                  V&   EKn  	  R# u upi )zKCreate new placeholder nodes for flattened inputs with proper fake tensors.Úarg_ÚvalN)Údynamic_sizesÚconstraint_sizes)Úsymbolic_contextr6   )Úrangerg   r¶   r™   rÀ   r¸   rÇ   rq   rY   rt   rº   re   r‚   ÚTensorÚfrom_tensorr   Úshaper·   r   ÚDYNAMICÚSTATICr€   rÓ   rÊ   )	rœ   ÚirÀ   Úgraph_placeholder_idxÚorig_placeholderr[   ÚvalueÚdr�   s	   &       €r8   rË   Ú/DynamoGraphTransformer._create_flattened_inputs$  s  ø€ ä”s˜4×+Ñ+Ó,×-ˆAÜ™'Ñ-°°Q°C¨j¸"¸bÓAˆKð ×*Ñ*Ô*à(,×(>Ñ(>¸qÕ(AÐ%Ø(¬3¨t×/@Ñ/@Ó+AÔAØ'+×'8Ñ'8Ð9NÕ'OÐ$à&6×&;Ñ&;×&AÑ&AÖ&C™
˜Ø %ž<Ø9>×,Ñ,×1Ñ1°#Ó6ñ 'Dð
 �~‰~Ó)¬jØ× Ñ  Õ#¤U§\¡\÷/ò /ð 04¯~©~×/IÑ/IØ×$Ñ$ QÕ'Ü%=ô &+¬3¨t×/?Ñ/?ÀÕ/B×/HÑ/HÓ+IÔ%Jó'ñ &K ð $%×(CÑ(CÀAÕ(FÔ#Fô !+× 2Ò 2ä%/×%6Ñ%6ò!7ñ &Kñ'ð +/¨´#°d×6FÑ6FÀqÕ6I×6OÑ6OÓ2PÕ)Pô
&ð 0Jó 0�× Ñ ×%Ñ% eÒ,ô ˜×)Ñ)¨!Õ,¨e×4Ò4Ø/3×/?Ñ/?ÀÕ/B×/FÑ/F�× Ñ ×%Ñ% eÒ,à/3×/?Ñ/?ÀÕ/B�× Ñ ×%Ñ% eÑ,ð '2× Ñ  Ô#óM .ùò*'s   Å)A Jc               ó   € V ^8„  d   QhRR/# rÐ   r6   )r7   s   "r8   r9   r½   N  s   € ÷ Kñ K¨Tñ Kr:   c                óì   € V P                   P                  4        FU  w  rV\        V P                  4      8  g   K!  V P                  V,          pV P                  V,          pW@P
                  V&   KW  	  R# )z1Create mapping from old placeholders to new ones.N)r¸   rY   rg   rÇ   rÊ   rÌ   )rœ   Úuser_input_idxrÞ   Úold_placeholderÚnew_placeholders   &    r8   rÍ   Ú2DynamoGraphTransformer._create_placeholder_mappingN  sc   € ð 6:×5KÑ5K×5QÑ5QÖ5SÑ1ˆNØ$¤s¨4×+<Ñ+<Ó'=Ö=Ø"&×"3Ñ"3Ð4IÕ"J�Ø"&×"6Ñ"6°~Õ"F�Ø;J×'Ñ'¨Ó8ó	 6Tr:   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r/   r   r'   r3   ztuple[Argument, ...]r4   údict[str, Any]r5   r   r6   )r7   s   "r8   r9   r½   X  s,   € ÷ &=ñ &=Øð&=Ø$8ð&=ØBPð&=à	ñ&=r:   c                ó  <€ V P                   V P                  9   dã   V P                  V P                   ,          pR FS  pWPP                   P                  9   g   K  V P                   P                  V,          VP                  P                  V&   KU  	  RV P                   P                  9   dP   RVP                  P                  9  d5   V P                   P                  R,          VP                  P                  R&   V# V P                  P                  V P                   4      pW`P                  9   EdC   V P                  V,          p\        V\        4      '       Eg   V P                   P                  P                  R4      ;'       g&    V P                   P                  P                  R4      pVeÃ   RV 2p	\        V\        P                  4      '       d   V P                  P                  W˜4       M\        V P                  W˜4       V P                  P!                  RV	R/ 4      p
V P                   P                  P#                  4       V
P                  n        WŠP                  P                  R&   V
# \$        SV `M  WV4      # )z1Replace old placeholders with new flattened ones.Úexample_valuerÓ   Ú
_captured_r|   )Útensor_dictrì   Úunbacked_bindingsr6   )Úcurrent_noderÌ   rq   rt   rÇ   Úindexr¼   re   r   rs   r‚   rØ   rµ   Úregister_bufferÚsetattrÚtracerÚcreate_proxyrr   r™   rÀ   )rœ   r   r3   r4   Únew_argr[   Úplaceholder_idxÚsourceÚexample_valÚ	attr_namerJ   r�   s   &&&&       €r8   rÀ   Ú"DynamoGraphTransformer.placeholderX  s   ø€ ð
 ×Ñ × 7Ñ 7Ô7Ø×-Ñ-¨d×.?Ñ.?Õ@ˆGó M�Ø×+Ñ+×0Ñ0Ö0Ø-1×->Ñ->×-CÑ-CÀCÕ-H�G—L‘L×%Ñ% cÓ*ñ Mð
 ˜×)Ñ)×.Ñ.Ô.°5ÀÇÁ×@QÑ@QÔ3QØ+/×+<Ñ+<×+AÑ+AÀ%Õ+H�—‘×!Ñ! %Ñ(àˆNð #×/Ñ/×5Ñ5°d×6GÑ6GÓHˆOØ×"3Ñ"3Õ3Ø×*Ñ*¨?Õ;�Ü! &¬-×8Ó8Ø"&×"3Ñ"3×"8Ñ"8×"<Ñ"<Øó#÷ #Eð #Eà×*Ñ*×/Ñ/×3Ñ3°OÓDð  ð #Ò.Ø&0°Ð0AÐ$B˜	Ü% k´5·<±<×@Ò@Ø ŸK™K×7Ñ7¸	ÕOä# D§K¡K°ÔHØ!%§¡×!9Ñ!9¸*ÀiÐQSÐUWÓ!X˜Ø+/×+<Ñ+<×+AÑ+A×+FÑ+FÓ+H˜Ÿ™Ô(Ø2=Ÿ™×(Ñ(¨Ñ/Ø%˜Ü‘7Ñ& v°VÓ<Ð<r:   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r/   r   r'   r3   zSequence[Any]r4   rê   r5   r   r6   )r7   s   "r8   r9   r½   €  s2   € ÷ Añ AØðAØ$1ðAØ;IðAà	ñAr:   c                óê  <€ V^ ,          p. p\        V P                  P                  4       4       F¦  pV P                  V,          w  rxVR8X  d)   VP                  V\	        \
        V4      ,          4       KG  VR8X  d?   \	        \        V4      P                  p	VP                  V P                  V	,          4       KŒ  VR8X  g   K•  VP                  V4       K¨  	  \        S
V `)  V\        V4      3/ 4      # )z/Transform output according to graph_output_map.Ú	graph_outÚinputÚconstant)Úsortedr¹   Úkeysrh   r   Úintr   rñ   rÊ   r™   rÂ   rf   )rœ   r   r3   r4   Úoriginal_outputsÚnew_outputsrÝ   Úoutput_typerÓ   Ú	input_idxr�   s   &&&&      €r8   rÂ   ÚDynamoGraphTransformer.output€  sÏ   ø€ ð   �7Ðð ˆÜ˜×-Ñ-×2Ñ2Ó4Ö5ˆAØ#×4Ñ4°QÕ7ÑˆKà˜kÔ)Ø×"Ñ"Ð#3´D¼¸c³NÕ#CÖDØ Ô'Ü ¤°Ó4×:Ñ:�	Ø×"Ñ" 4×#7Ñ#7¸	Õ#BÖCØ 
Ö*Ø×"Ñ" 3Ö'ñ 6ô ‰w‰~˜f¤u¨[Ó'9Ð&;¸RÓ@Ð@r:   c               ó    € V ^8„  d   QhRRRR/# )r/   rÄ   r%   r5   r   r6   )r7   s   "r8   r9   r½   •  s   € ÷ ñ ˜$ð  3ñ r:   c                ó�  <€ Wn         \        SV `	  V4      p\        VR4      '       dž   VP                  VJdŽ   R F?  pW1P
                  9   g   K  VP
                  V,          VP                  P
                  V&   KA  	  VP                  R8w  d8   \        VR4      '       d&   VP                  P                  VP                  4       V# )z.Run node transformation and preserve metadata.rt   rÂ   rj   )rÓ   rì   rï   )	rð   r™   Úrun_noder€   rt   rq   r~   Ú_renamerj   )rœ   rÄ   rJ   r[   r�   s   &&  €r8   r  ÚDynamoGraphTransformer.run_node•  s—   ø€ àÔÜ‘Ñ! !Ó$ˆô �6˜6×"Ò" v§{¡{¸!Ó';ÛD�ØŸ&™&–=Ø,-¯F©F°3­K�F—K‘K×$Ñ$ SÓ)ñ Eð
 �t‰t�xÔ¤G¨A¨v×$6Ò$6Ø—‘×#Ñ# A§F¡FÔ+àˆr:   c               ó   € V ^8„  d   QhRR/# )r/   r5   rP   r6   )r7   s   "r8   r9   r½   ¦  s   € ÷ ñ Ð/ñ r:   c                óp  <€ \         SV `  4       p\        V P                  R4      '       d‹   RV P                  P                  9   d+   V P                  P                  R,          VP                  R&   RV P                  P                  9   d+   V P                  P                  R,          VP                  R&   V# )z:Perform the graph transformation and copy module metadata.rq   rn   Údynamo_compile_id)r™   Ú	transformr€   rµ   rq   )rœ   Ú	result_gmr�   s   & €r8   r  Ú DynamoGraphTransformer.transform¦  s”   ø€ ä‘GÑ%Ó'ˆ	ô �4—;‘; ×'Ò'à1°T·[±[×5EÑ5EÔEàEIÇ[Á[×EUÑEUà6õF�	—‘ÐAÑBð
 # d§k¡k×&6Ñ&6Ô6à6:·k±k×6FÑ6Fà'õ7�	—‘Ð2Ñ3ð
 Ðr:   )rð   rº   r·   r¶   r¸   r¼   r¹   rÊ   rÌ   rÉ   rÇ   )NN)r«   r¬   r­   r®   Ú__doc__rš   rË   rÍ   rÀ   rÂ   r  r  r¯   r°   r±   s   @r8   r³   r³   ü   sM   ø† Ùd÷#+ò #+÷J(2ð (2õTK÷&=ð &=÷PAð A÷*ð ÷"ö r:   r³   c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RR
RRRR/# )r/   Úmodule_to_traceztorch.nn.ModuleÚorig_callabler2   rº   r»   Úgraph_capture_outputr
   r3   r   r4   Údynamic_shapesz.dict[str, Any] | tuple[Any] | list[Any] | Noner5   rz   r6   )r7   s   "r8   r9   r9   ¾  sc   € ÷ A)ñ A)Ø$ðA)à%ðA)ð %ðA)ð (ð	A)ð
 ðA)ð ðA)ð CðA)ð 
ñA)r:   c           	     ó   € R p \        V 4      w  r‰VP                  P                  VP                  4       \        VRR 4      ;pEe–   VP                  ;pEe…   \        V P                  \        P                  P                  \        P                  P                  ,          4      '       Eg1   VP                  4        VP                  4       pVP                  \         P"                  ! V4      VVV4      pV'       d=   VP$                  '       d"   VP$                  ^ ,          V,           3Vn        M3V3Vn        M*V'       d   \	        V4      pM\&        P)                  RV4       VP*                   Fj  p\        V\,        P.                  4      '       g   K%  \	        RP1                  \2        P4                  ! VP6                  V,          4      4       RV R24      pKl  	  V'       d   \9        WqWE4      pVhR #   \         d   p
T
p R p
?
ELÒR p
?
ii ; i)NÚ	shape_envz#Summary of dimension constraints:%sÚ zk
It appears that you're trying to set a constraint on a value which we evaluated to have a static value of z0. Set TORCH_LOGS="+export" for more information.)r   r  Úbuild_guardsÚ__code__r   ÚgetattrÚdim_constraintsre   r©   r‚   Ú_opsÚOpOverloadPacketÚ
OpOverloadÚsolveÚforced_specializationsÚprettify_resultsr?   r@   r3   ÚlogÚinfoÚvar_to_rangeÚsympyÚIntegerÚjoinÚ	tracebackÚformat_listÚvar_to_stackrC   )r  r  rº   r  r3   r4   r  r0   ÚfnÚ_Úer  r   r%  ÚmsgÚks   &&&&&&&         r8   Ú&_suggest_or_raise_constraint_violationr5  ¾  sÓ  € ð "&Ðð'ä˜oÓ.‰ˆØ×1Ñ1×>Ñ>¸r¿{¹{ÔKô
 ˜i¨°dÓ;Ð	;ˆÓHØ )× 9Ñ 9Ð9ˆ_ÓFÜØ×#Ñ#Ü�J‰J×'Ñ'¬%¯*©*×*?Ñ*?Õ?÷
ó 
ð
 	×ÑÔà!0×!GÑ!GÓ!IÐà×.Ñ.Ü×Ò˜mÓ,ØØ&Ø"ó	
ˆ÷ &Ø)×.×.Ð.à.×3Ñ3°AÕ6¸Õ<ð3Ð*Õ/ð 47°&Ð*Õ/ç%Ü-EÀcÓ-JÑ*ä—‘Ø9Øôð ×'Ô'ˆAÜ˜!œUŸ]™]×+Ô+Ü-EØ—w‘wœy×4Ò4°Y×5KÑ5KÈAÕ5NÓOÓPÐQð RJàJKÈð MEðEó.Ò*ñ (÷ "Ü%;Ø&°tó&
Ð"ð )Ð(ñ	 "øô_ $ô 'Ø%&Ö"ûð'ús   „2G5 Ç5HÈ HÈHc               ó    € V ^8„  d   QhRRRR/# )r/   Ú
shuffle_gmrP   r5   rz   r6   )r7   s   "r8   r9   r9     s   € ÷ *ñ *Ð)=ð *À$ñ *r:   c                óÌ   € V P                   P                  4        V P                  4        \        V P	                  4       4       F  w  r\        W4       \        WV4       K  	  R # r˜   )ro   Úeliminate_dead_codeÚ	recompileÚlistÚnamed_buffersÚdelattrró   )r7  rj   Úbuffers   &  r8   Ú_normalize_shuffle_graphr?    sL   € Ø×Ñ×(Ñ(Ô*Ø×ÑÔÜ˜Z×5Ñ5Ó7Ö8‰ˆÜ�
Ô!Ü�
 &Ö)ó 9r:   c               ó    € V ^8„  d   QhRRRR/# )r/   ÚgmrP   r5   rz   r6   )r7   s   "r8   r9   r9   
  s   € ÷ :ñ :Ð3ð :¸ñ :r:   c                ó¦   € V P                   P                   F6  pVP                  R 8X  g   K  VP                  R,          VP                  R&   K8  	  R# )rÀ   rì   rÓ   N)ro   rp   r~   rq   )rA  rt   s   & r8   Únormalize_graph_modulerC  
  s7   € Ø—‘—”ˆØ�7‰7�mÖ#Ø#Ÿy™y¨Õ9ˆD�I‰I�eÓó r:   c                  ó.   € ] tR tRtR R ltR R ltRtR# )ÚInputProcessori  c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r/   ÚrootÚobjectÚnum_argsr  Úkwarg_namesú	list[str]r5   rz   r6   )r7   s   "r8   r9   ÚInputProcessor.__annotate__  s2   € ÷ 'ñ 'àð'ð ð'ð ð	'ð
 
ñ'r:   c                	ó*   € Wn         W n        W0n        R # r˜   )rG  rI  rJ  )rœ   rG  rI  rJ  s   &&&&r8   rš   ÚInputProcessor.__init__  s   € ð Œ	Ø ŒØ&Ör:   c               ó    € V ^8„  d   QhRRRR/# )r/   Úinputsútuple[object, ...]r5   z,tuple[tuple[object, ...], dict[str, object]]r6   )r7   s   "r8   r9   rL    s   € ÷ ñ Ø(ðà	5ñr:   c                	ó@  € Tp/ p\        V4      V P                  8”  d;   \        \        V P                  W P                  R  4      4      pVR V P                   pV P
                  Ee6   \        V P
                  \        P                  P                  4      '       dò   \        V P
                  P                  P                  \        4      '       g6   \        R\        V P
                  P                  P                  4       24      h\        V P
                  P                  P                  P                   R4      '       g   \        R4      hV P
                  P                  P                  P                   P"                  V Jd   \        R4      hV P
                  .VO5pW#3# )Nz%expected _DynamoBytecodeCodeGen, got Úinput_processorz9dynamo_bytecode_flatten missing input_processor attributez3dynamo_bytecode_flatten.input_processor is not self)rg   rI  ÚdictÚziprJ  rG  re   r‚   rƒ   ÚGraphModulero   Ú_codegenÚ_DynamoBytecodeCodeGenr�   r‡   r€   Údynamo_bytecode_flattenrS  )rœ   rP  r3   r4   s   &&  r8   Ú__call__ÚInputProcessor.__call__  sI  € ð ˆàˆÜˆt‹9�t—}‘}Ô$Üœ#˜d×.Ñ.°·]±]°_Ð0EÓFÓGˆFØ˜˜$Ÿ-™-Ð(ˆDØ�9‰9Ó Ü˜$Ÿ)™)¤U§X¡X×%9Ñ%9×:Ò:Ü! $§)¡)§/¡/×":Ñ":Ô<R×SÒSÜ(Ø?ÄÀTÇYÁYÇ_Á_×E]ÑE]Ó@^Ð?_Ð`óð ô Ø—I‘I—O‘O×,Ñ,×DÑDÐFW÷ò ô )ØSóð ð —I‘I—O‘O×,Ñ,×DÑD×TÑTØó ô )ØMóð ð —I‘IÐ% Ñ%ˆDØˆ|Ðr:   )rJ  rI  rG  N)r«   r¬   r­   r®   rš   rZ  r¯   r6   r:   r8   rE  rE    s   † õ'÷ñ r:   rE  c                  ó   € ] tR tRtRtR# )ÚYieldi;  r6   N)r«   r¬   r­   r®   r¯   r6   r:   r8   r]  r]  ;  s   † Ûr:   r]  c                  óF   € ] tR tRtR R lt]! RR7      R R l4       tRtR	# )
ÚDynamoBytecodeFlatteni?  c               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r/   rS  rE  Úoutr
   Ú	f_globalszdict[str, object]r5   rz   r6   )r7   s   "r8   r9   Ú"DynamoBytecodeFlatten.__annotate__@  s2   € ÷ 	6ñ 	6à'ð	6ð ð	6ð %ð		6ð
 
ñ	6r:   c                	ó8   € Wn         W n        W0n        R V n        R # r˜   )rS  rb  rc  Ú	gm_inputs©rœ   rS  rb  rc  s   &&&&r8   rš   ÚDynamoBytecodeFlatten.__init__@  s   € ð  /ÔØŒØ"ŒØ15ˆŽr:   ú*do not trace internal dynamo graph capture©Úreasonc               ó    € V ^8„  d   QhRRRR/# )r/   rP  rH  r5   r6   )r7   s   "r8   r9   rd  L  s   € ÷ ñ  ð ¨6ñ r:   c                	ó  a € R  V 3R llpS P                  V4      w  r4 S P                  P                  VS P                  R7      ! V/ VB  \        h  \         d*    S P
                  f   \        R4      RhS P
                  u # i ; i)c               ó    € V ^8„  d   QhRRRR/# )r/   Úexample_inputsrH  r5   rz   r6   )r7   s   "r8   r9   Ú4DynamoBytecodeFlatten.__call__.<locals>.__annotate__M  s   € ÷ 	ñ 	¨6ð 	°dñ 	r:   c                 ó   <€ V Sn         \        hr˜   )rf  r]  )ro  rœ   s   *€r8   Úbackend_dummyÚ5DynamoBytecodeFlatten.__call__.<locals>.backend_dummyM  s   ø€ Ø+ˆDŒNÜˆKr:   ©Úcompiled_fnÚextra_globalsNz&gm_inputs must not be None after Yield)rS  rb  Úforward_callablerc  r]  rf  r�   ÚRuntimeError)rœ   rP  rr  r3   r4   s   f*   r8   rZ  ÚDynamoBytecodeFlatten.__call__K  s’   ø€ ÷	ð 	ð ×+Ñ+¨FÓ3‰ˆð	"Ø�H‰H×%Ñ%Ø)¸¿¹ð &ô àðàòô Ðøô	 ô 	"Ø�~‰~Ò%Ü$Ð%MÓNÐTXÐXØ—>‘>Ò!ð	"ús   Ÿ-A Á1BÂB)rc  rf  rS  rb  N©r«   r¬   r­   r®   rš   Údynamo_disablerZ  r¯   r6   r:   r8   r_  r_  ?  s"   † õ	6ñ ÐGÔHôó Iôr:   r_  c                  óF   € ] tR tRtR R lt]! RR7      R R l4       tRtR	# )
ÚDynamoBytecodeUnflatteni]  c               ó(   € V ^8„  d   QhRRRRRRRR/# ra  r6   )r7   s   "r8   r9   Ú$DynamoBytecodeUnflatten.__annotate__^  s2   € ÷ #ñ #à'ð#ð ð#ð %ð	#ð
 
ñ#r:   c                	ó*   € Wn         W n        W0n        R # r˜   )rS  rb  rc  rg  s   &&&&r8   rš   Ú DynamoBytecodeUnflatten.__init__^  s   € ð  /ÔØŒØ"Žr:   ri  rj  c               ó$   € V ^8„  d   QhRRRRRR/# )r/   Ú	flat_outsúSequence[object]rP  rQ  r5   rH  r6   )r7   s   "r8   r9   r  i  s$   € ÷ ñ Ø)ðØ3Eðà	ñr:   c                	ó  a€ R  V3R llpV P                  V4      w  rE\        P                  P                  4       ;_uu_ 4        V P                  P                  W0P                  R7      ! V/ VB pRRR4       V#   + '       g   i     X# ; i)c               ó    € V ^8„  d   QhRRRR/# )r/   ro  rH  r5   r„  r6   )r7   s   "r8   r9   Ú6DynamoBytecodeUnflatten.__call__.<locals>.__annotate__l  s   € ÷ 	ñ 	¨6ð 	Ð6Fñ 	r:   c                 ó   <€ S# r˜   r6   )ro  rƒ  s   *€r8   rr  Ú7DynamoBytecodeUnflatten.__call__.<locals>.backend_dummyl  s	   ø€ ØÐr:   rt  N)rS  r‚   Ú_CÚ_DisableTorchDispatchrb  rw  rc  )rœ   rƒ  rP  rr  r3   r4   Úresultss   &f&    r8   rZ  Ú DynamoBytecodeUnflatten.__call__h  s€   ø€ ÷	ð 	ð ×+Ñ+¨FÓ3‰ˆÜ�X‰X×+Ñ+×-Õ-Ø—h‘h×/Ñ/Ø)¿¹ð 0ô àðàñˆG÷ .ð ˆ÷	 .Ö-ð ˆús   Á-A;Á;B	)rc  rS  rb  Nrz  r6   r:   r8   r}  r}  ]  s"   † õ#ñ ÐGÔHôó Iôr:   r}  c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r/   rb  r
   Úmodr   r3   ztuple[Any, ...]r4   rê   r5   rP   r6   )r7   s   "r8   r9   r9   w  s;   € ÷ vñ vØ	ðvØ ðvØ(7ðvØAOðvàñvr:   c                ó&  a€ V P                   f   \        R4      hV P                   p\        P                  P                  P                  V4      w  rV\        P                  ! W#34      p\        P                  P                  P                  V\        P                  4       V P                  P                  pVP                  o\        V\        P                   P"                  4      '       Ed·   VP$                  Sn        VP&                  Sn        \(        ;QJ d)    V3R lVP*                   4       F  '       d   K   RM	  RM! V3R lVP*                   4       4      '       g   \        R4      hSP*                  P-                  VP*                  4       VP.                  Sn        \0        P2                  R8¼  d/   ^ R Ip	V	P7                  \        P                   P"                  4      p
M%\9        \        P                   P"                  RR 4      p
VP:                  P=                  4        F&  w  r¼V
'       g   K  Wº9  g   K  VSP:                  V&   K(  	  VP>                  PA                  4       Sn        VPB                  PA                  4       Sn!        VPD                  PA                  4       Sn"        VPF                  PA                  4       Sn#        SP>                  '       g   SPB                  '       d´   \9        SRR 4      f   \        R4      h\        SPH                  \        PJ                  P                  PL                  4      '       g"   \        R	\O        SPH                  4       24      hSPH                  PP                  e   \        R
4      hR R lpVSPH                  n(        \        V\        P                   P"                  4      '       d   SMTp\S        V\U        V4      \W        VPY                  4       4      4      p\[        WàV4      p\]        WàV4      p\_        \a        \b        Pd                  ! V4      W#4      VV4      SPf                  n4        \k        S4       \m        SR4      '       d   \        R4      h\m        SR4      '       d   \        R4      hVSn7        VSn8        \s        SR4       SPu                  4        V P                  Pv                  Px                  Pz                  SP|                  R&   V P                   f   \        R4      hV P                   P~                  SP|                  R&   RSP|                  R,          n@        \ƒ        SP|                  R,          4      pV P                   P„                  VnB        VSP|                  R&   S# )Nz"out.backend_input must not be Nonec              3  óF   <"  € T F  p\        SV4      '       * x € K  	  R # 5ir˜   )r€   )rÃ   ÚmrO   s   & €r8   rÅ   Ú7create_fx_graph_from_captured_output.<locals>.<genexpr>Š  s   øé € ÐG¹°A”w˜|¨QÓ/×/Ñ/»ùs   ƒ!FTzBgraph_module already has attributes conflicting with root._modulesÚ__annotations__Ú_wrapped_callz+graph_module._wrapped_call must not be Nonezexpected _WrappedCall, got z0graph_module._wrapped_call.cls_call must be Nonec               ó$   € V ^8„  d   QhRRRRRR/# ©r/   r3   rH  r4   r5   r6   )r7   s   "r8   r9   Ú:create_fx_graph_from_captured_output.<locals>.__annotate__­  s!   € ÷ <ñ <°ð <À6ð <Èfñ <r:   c                óä  aaa€ R V P                   9   d   \        R4      hV P                  oV P                  o\	        V 4      P
                  oR VVV3R llp \        P                  ! W04      V n        / V n        / V n        \        \	        V 4      V `&  ! V/ VB V P                   P                  R 4       SV n        SV n        #   T P                   P                  R 4       ST n        ST n        i ; i)r©   z('forward' should not be in self.__dict__c               ó$   € V ^8„  d   QhRRRRRR/# r—  r6   )r7   s   "r8   r9   ÚWcreate_fx_graph_from_captured_output.<locals>.dynamo_wrapped_call.<locals>.__annotate__µ  s&   € ÷ Cñ C°ð CÀ6ð CÈfñ Cr:   c                ó8   <€ SV n         SV n        S! V .VO5/ VB # r˜   )Ú_forward_hooksÚ_forward_pre_hooks)rœ   r3   r4   Ú	fwd_hooksÚfwd_pre_hooksÚoriginal_forwards   &*,€€€r8   Úpatched_forwardÚZcreate_fx_graph_from_captured_output.<locals>.dynamo_wrapped_call.<locals>.patched_forwardµ  s(   ø€ Ø*3�DÔ'Ø.;�DÔ+Ù+¨DÐB°4ÒB¸6ÑBÐBr:   )Ú__dict__r�   r�  rž  r‡   r©   ÚtypesÚ
MethodTyper™   rZ  Úpop)rœ   r3   r4   r¢  rŸ  r   r¡  s   &*, @@@r8   Údynamo_wrapped_callÚAcreate_fx_graph_from_captured_output.<locals>.dynamo_wrapped_call­  sÔ   ú€ Ø §¡Ô-Ü(Ð)SÓTÐTà ×/Ñ/�	Ø $× 7Ñ 7�Ü#'¨£:×#5Ñ#5Ð ÷Cò Cð
<Ü#(×#3Ò#3°OÓ#J�D”Là*,�DÔ'à.0�DÔ+ä ¤ d£¨TÒ;¸TÐLÀVÑLà—M‘M×%Ñ% iÔ0Ø*3�DÔ'Ø.;�DÕ+øð —M‘M×%Ñ% iÔ0Ø*3�DÔ'Ø.;�DÕ+ús   ÁAC Ã+C/Ú_dynamo_bytecode_flattenz;graph_module already has _dynamo_bytecode_flatten attributeÚ_dynamo_bytecode_unflattenz=graph_module already has _dynamo_bytecode_unflatten attributeÚ_param_name_to_sourceÚmodule_call_specsz0out.backend_input must not be None for fake_moderº   Útracing_context)é   é   )CÚbackend_inputr�   r‚   Ú_dynamoÚconvert_framer   r£   Útree_leavesÚ
eval_framer   r   ÚINVALID_INPUTr  rc  rO   re   ÚnnÚModuleÚ_parametersÚ_buffersÚallÚ_modulesÚupdateÚ_non_persistent_buffers_setÚsysÚversion_infoÚannotationlibÚget_annotationsr  r¤  rY   r�  rr   rž  Ú_backward_hooksÚ_backward_pre_hooksr•  rƒ   Ú_WrappedCallr‡   Úcls_callrE  rg   r;  r  r_  r}  rX  r   r?   r@   ro   rW  rC  r€   rª  r«  r=  r:  Úoutput_graphÚexport_metadataÚmodule_call_specrq   rº   Úallow_non_fake_inputsr   Útensor_to_context)rb  r�  r3   r4   r±  r1  rG  Úflat_real_argsrc  rÁ  r   rj   rà   r¨  rS  rY  Údynamo_bytecode_unflattenr®  rO   s   &&&&              @r8   Ú$create_fx_graph_from_captured_outputrÎ  w  sV  ø€ ð ×ÑÒ ÜÐAÓBÐBØ×%Ñ%€Mä�m‰m×)Ñ)×7Ñ7¸Ó<�G€Aä×'Ò'¨¨Ó7€NÜ	‡M�M×Ñ×4Ñ4Øœ×3Ñ3ôð ×(Ñ(×2Ñ2€Ià ×-Ñ-€LÜ�$œŸ™Ÿ™×(Ó(Ø#'×#3Ñ#3ˆÔ Ø $§¡ˆÔß‹sÔG¸¿ºÓG�s�sŠsÔG¸¿ºÓG×GÒGÜ ØTóð ð 	×Ñ×$Ñ$ T§]¡]Ô3Ø37×3SÑ3SˆÔ0Ü×Ñ˜wÔ&Û à'×7Ñ7¼¿¹¿¹ÓH‰Kä!¤%§(¡(§/¡/Ð3DÀdÓKˆKØŸ=™=×.Ñ.Ö0‰KˆDß‰{˜tÖ6Ø.3�×%Ñ% dÓ+ñ 1ð '+×&9Ñ&9×&>Ñ&>Ó&@ˆÔ#Ø*.×*AÑ*A×*FÑ*FÓ*HˆÔ'Ø'+×';Ñ';×'@Ñ'@Ó'BˆÔ$Ø+/×+CÑ+C×+HÑ+HÓ+JˆÔ(Ø×&×&Ð&¨,×*I×*IÐ*Iô
 �| _°dÓ;ÒCÜ$Ð%RÓSÐSÜØ×*Ñ*¬E¯H©H×,AÑ,A×,NÑ,N÷ò ô %Ø1´$°|×7QÑ7QÓ2RÐ1SÐTóð ð ×)Ñ)×2Ñ2Ò>Ü$Ð%WÓXÐXõ<ð6 3FˆL×&Ñ&Ô/ä% d¬E¯H©H¯O©O×<Ò<‰<À$€DÜ$ T¬3¨t«9´d¸6¿;¹;»=Ó6IÓJ€OÜ3°OÈ)ÓTÐÜ 7¸ÈiÓ XÐä"8Ü”w×(Ò(¨Ó-¨tÓ<ØØ!ó#€L×ÑÔô
 ˜<Ô(Üˆ|Ð7×8Ò8ÜØIó
ð 	
ô ˆ|Ð9×:Ò:ÜØKó
ð 	
ð -D€LÔ)à.G€LÔ+ÜˆLÐ1Ô2Ø×ÑÔà× Ñ ×-Ñ-×=Ñ=×NÑNð ×ÑÐ)Ñ*ð ×ÑÒ ÜÐOÓPÐPØ%(×%6Ñ%6×%@Ñ%@€L×Ñ�kÑ"Ø;?€L×Ñ�kÕ"Ô8Ü$ \×%6Ñ%6°{Õ%CÓD€OØ(+×(9Ñ(9×(KÑ(K€OÔ%Ø+:€L×ÑÐ'Ñ(ØÐr:   c                  ó„   a € ] tR tRtR V 3R lltR R ltR R ltRR	/R
 V 3R llltR R ltRRRR/R R llt	Rt
V ;t# )rX  ið  c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r/   Úorig_arg_namesrK  rY  r_  rÍ  r}  r5   rz   r6   )r7   s   "r8   r9   Ú#_DynamoBytecodeCodeGen.__annotate__ñ  s2   € ÷ 4ñ 4à!ð4ð "7ð4ð $;ð	4ð
 
ñ4r:   c                	ód   <€ \         SV `  4        Wn        W n        W0n        R V n        RV n        R# )FN)r™   rš   rÑ  rY  rÍ  Ú
wrap_tupleÚ_inputs)rœ   rÑ  rY  rÍ  r�   s   &&&&€r8   rš   Ú_DynamoBytecodeCodeGen.__init__ñ  s0   ø€ ô 	‰ÑÔØ,ÔØ'>Ô$Ø)BÔ&ØˆŒØ/3ˆŽr:   c               ó    € V ^8„  d   QhRRRR/# )r/   rP  r   r5   r6   )r7   s   "r8   r9   rÒ  þ  s   € ÷ ñ  cð ¨cñ r:   c                	ó    a€ Wn         V P                  ! V!  p\        4       oSe)   \        P                  ! V3R lV4      '       d   RSn        V# )Nc                ót   <€ \        V \        P                  4      ;'       d    SP                  V 4      '       * # r˜   )re   r‚   rØ   Úis_our_fake)Úxrº   s   &€r8   Ú<lambda>Ú7_DynamoBytecodeCodeGen.process_inputs.<locals>.<lambda>  s*   ø€ ”j ¤E§L¡LÓ1×RÐR¸)×:OÑ:OÐPQÓ:RÔ6RÐRr:   T)rÕ  rY  r   r£   Útree_anyrÊ  )rœ   rP  rŒ  rº   s   &* @r8   Úprocess_inputsÚ%_DynamoBytecodeCodeGen.process_inputsþ  sK   ø€ ØŒØ×.Ò.°Ñ7ˆÜ$Ó&ˆ	ØÒ ¤V§_¢_ÜRØ÷&
ò &
ð /3ˆIÔ+Øˆr:   c               ó    € V ^8„  d   QhRRRR/# )r/   Úoutputsr   r5   r6   )r7   s   "r8   r9   rÒ    s   € ÷ ñ  sð ¨sñ r:   c                	ó¦   € V P                   f   \        R4      hV P                  WP                   4      pV P                  '       d   V3pR V n         V# )Nz,process_outputs called before process_inputs)rÕ  r�   rÍ  rÔ  )rœ   râ  rŒ  s   && r8   Úprocess_outputsÚ&_DynamoBytecodeCodeGen.process_outputs  sH   € Ø�<‰<ÒÜ Ð!OÓPÐPØ×0Ñ0°¿,¹,ÓGˆØ�?�?ˆ?Ø�jˆGØˆŒØˆr:   Úexpanded_defFc               ó(   € V ^8„  d   QhRRRRRRRR/# )r/   Ú	free_varsrK  Úmaybe_return_annotationrF   ræ  rR   r5   r6   )r7   s   "r8   r9   rÒ    s2   € ÷ "ñ "àð"ð "%ð"ð
 ð"ð 
ñ"r:   c               	óÂ  <€ V P                   p\        V4      ^ 8”  d   V^ ,          R8H  MRpV'       d   VP                  ^ R4       \        V4      pV'       d   ^M^ p\	        V\        V4      4       F)  pWG,          R8X  g   K  RpW„9   d   VR,          pK  W„V&   K+  	  \
        S
V `  VR,          W#R7      p	\        V4      ^ 8”  d   W�P                  WAV4      ,          p	V	# )r   rœ   FÚself_r1  :NNN)ræ  )rÑ  rg   Úinsertr;  r×   r™   Ú
gen_fn_defÚgen_var_bindings)rœ   rè  ré  ræ  Úfn_argsÚhas_orig_selfÚ	first_posrÝ   r�   Úfn_definitionr�   s   &&&$      €r8   rí  Ú!_DynamoBytecodeCodeGen.gen_fn_def  sÕ   ø€ ð ×%Ñ%ˆÜ25°g³,ÀÔ2B˜ � vÒ-ÈˆßØ×Ñ˜Q Ô'ô �w“-ˆß&‘A¨Aˆ	Ü�y¤# g£,Ö/ˆAØ�z˜VÖ#Ø"�ØÔ)Ø •O’HØ%˜“
ñ 0ô ™Ñ*Ø�A�JÐ/ð +ó 
ˆô ˆy‹>˜AÔØ×2Ñ2°7À|ÓTÕTˆMØÐr:   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r/   rï  rK  rè  ræ  rR   r5   rF   r6   )r7   s   "r8   r9   rÒ  <  s2   € ÷ Sñ SØ ðSØ-6ðSØFJðSà	ñSr:   c                	ó8  € V Uu. uF0  qDP                  R 4      ^ ,          P                  R4      ^ ,          NK2  	  pp\        V4      ^ 8X  d   RpM/\        V4      ^8X  d   V^ ,           R2pMRP                  V4       pRV RRP                  V4       R2# u upi )Ú:Ú#r  ú, z
    _fn_args = (z)
    z,, = self._dynamo_bytecode_flatten(*_fn_args))Úsplitrg   r,  )rœ   rï  rè  ræ  rÛ  Úwithout_annotationÚfn_signatures   &&&&   r8   rî  Ú'_DynamoBytecodeCodeGen.gen_var_bindings<  sª   € ñ FOÓOÁYÀŸg™g c›l¨1�o×3Ñ3°CÓ8¸×;Ð;ÁYÐÐOÜˆw‹<˜1ÔØ‰LÜ�‹\˜QÔØ% a�j˜\¨Ð,‰Là"Ÿi™i¨Ó0Ð1ˆLðØ�ð Ø	‡Y�YÐ!Ó"Ð#Ð#OðSð 	Sùò Ps   …6BÚdescsNÚrepr_fnc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r/   Úoutput_argsztorch.fx.node.Argumentrý  zobject | Nonerþ  z
Any | Noner5   rF   r6   )r7   s   "r8   r9   rÒ  J  s2   € ÷ $ñ $à+ð$ð ð	$ð
 ð$ð 
ñ$r:   c          	     	ó®   € Vf   \         pRRP                  V Uu. uF
  qC! V4      NK  	  up4       R2pV P                  '       d   RV R2pRV 2# u upi )Nz!self._dynamo_bytecode_unflatten((rø  z,), _fn_args)Ú(z,)zreturn )Úreprr,  rÔ  )rœ   r   rý  rþ  ÚaÚreturneds   &&$$  r8   Úgenerate_outputÚ&_DynamoBytecodeCodeGen.generate_outputJ  si   € ð Š?ÜˆGà6°t·y±yÑVaÓAbÑVaÐQRÀ'È!Æ*ÑVaÑAbÓ7cÐ6dÐdqÐrˆØ�?�?ˆ?Ø˜8˜* BÐ'ˆHØ˜˜
Ð#Ð#ùò Bcs   ›A
)rÕ  rY  rÍ  rÑ  rÔ  )r«   r¬   r­   r®   rš   rß  rä  rí  rî  r  r¯   r°   r±   s   @r8   rX  rX  ð  sP   ø† ÷4ð 4õõ"ð"ð
 #÷"ò "õHSð$ð  $ð	$ð
 #÷$õ $r:   rX  c               ó$   € V ^8„  d   QhRRRRRR/# )r/   r0  r2   Úconstraintsúlist[Constraint] | Noner5   r6   )r7   s   "r8   r9   r9   Z  s&   € ÷ .ñ .Øð.à(ð.ð ñ.r:   c                ón  a a€ \        S \        P                  P                  4      '       dú   R  R lpRp. pS P                  P
                   FX  pVP                  '       d   V'       g   RpVP                  R4       VP                  VP                  V! V4      ,           4       KZ  	  RRP                  V4       RRP                  S P                  P
                   Uu. uF  qUP                   RVP                   2NK  	  up4       R	2p/ p\        VR
S /V4       VR,          o R VV 3R llpV# u upi )c               ó    € V ^8„  d   QhRRRR/# )r/   Úargztorch.Argumentr5   rF   r6   )r7   s   "r8   r9   Ú5dynamo_graph_capture_for_export.<locals>.__annotate__`  s   € ÷ 	ñ 	 Nð 	°sñ 	r:   c                óR   € V P                  4       '       d   R V P                  : 2# R# )Ú=r  )Úhas_default_valueÚdefault_value)r  s   &r8   Údefault_annotationÚ;dynamo_graph_capture_for_export.<locals>.default_annotation`  s(   € Ø×$Ñ$×&Ò&Ø˜3×,Ñ,Ñ/Ð0Ð0Ùr:   FTÚ*z
def op_overload_wrapper(rø  z):
    return op(r  z)
r~   Úop_overload_wrapperc               ó$   € V ^8„  d   QhRRRRRR/# )r/   r3   r   r4   r5   r6   )r7   s   "r8   r9   r  t  s!   € ÷ ñ �Sð  Cð ¨Cñ r:   c                 ó^  <€ \         P                  P                  P                  '       d   \	        R 4      h\        4       ;_uu_ 4        \         P                  P                  P                  RRR7      ;_uu_ 4        \        4       ;_uu_ 4        \        R4      ;_uu_ 4        \        SV VSR7      pRRR4       RRR4       RRR4       RRR4       \        XSW4      pV#   + '       g   i     L7; i  + '       g   i     LB; i  + '       g   i     LM; i  + '       g   i     LX; i)z"install_free_tensors must be FalseFÚwarn)Úreplay_side_effectsÚside_effect_replay_policyr   )r	  N)r‚   r²  ÚconfigÚinstall_free_tensorsr�   r   Úpatchr   r   r   rÎ  )r3   r4   rb  rO   r	  r0  s   *,  €€r8   ÚinnerÚ.dynamo_graph_capture_for_export.<locals>.innert  sÒ   ø€ Ü�=‰=×Ñ×4×4Ð4Ü Ð!EÓFÐFä$×&Õ&Ü�M‰M× Ñ ×&Ñ&Ø$)ÀVð '÷ õ ô  ×!Õ!ÜÐ,×-Õ-ä#ØØØØ'ô	ˆC÷ .÷ "÷÷ 'ô <¸CÀÀTÓRˆØÐ÷ .×-ú÷ "×!ú÷÷ ú÷ '×&úsT   Á	4DÁ=D		ÂC6Â$C#Â4C6Â<D		ÃDÃ#C3Ã.C6Ã6DÄD		Ä	DÄDÄD,	)re   r‚   r!  r#  Ú_schemaÚ	argumentsÚ
kwarg_onlyrh   rj   r,  Úexec)	r0  r	  r  Úhas_kwarg_onlyÚarg_listr  Úfunc_strrb  r  s	   ff       r8   Údynamo_graph_capture_for_exportr(  Z  s  ù€ ô �"”e—j‘j×+Ñ+×,Ò,õ	ð
 ˆØˆØ—:‘:×'Ô'ˆCØ�~�~ˆ~§nØ!%�Ø—‘ Ô$Ø�O‰O˜CŸH™HÑ'9¸#Ó'>Õ>Ö?ñ	 (ð
ØŸ™ 8Ó,Ð-ð .Ø�y‰y¸b¿j¹j×>RÒ>RÓSÑ>R°sŸX™X˜J a¨¯© zÓ2Ñ>RÑSÓTÐUð Vðˆð ˆÜˆX˜˜b�z 3Ô'ØÐ&Õ'ˆ÷ñ ð( €Lùò5 Ts   Ã#D2r	  r  c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r/   r�  r2   r	  r
  r  r$   r5   z#Callable[..., torch.fx.GraphModule]r6   )r7   s   "r8   r9   r9   ‹  s8   € ÷ Eñ EØ	ðEð )ðEð (ð	Eð
 )ñEr:   c               ó&   a aa€ VoR VVV 3R llpV# )aÞ  
Improved dynamo graph capture using transformer approach with proper fake tensor handling.

This function creates a capture instance that handles:
1. PyTree flattening/unflattening with proper input ordering
2. Dynamo graph capture with export-specific context
3. FX graph transformation for export compatibility
4. Proper fake tensor metadata preservation
5. Dynamic dimension constraint handling

Notable improvements over manual approach:
- Uses FX Transformer for cleaner graph manipulation
- Properly handles fake tensor metadata and dynamic dimensions
- Preserves all necessary metadata for export
- More robust error handling and edge case management

TODO:
1. Are we actually gonna run the bytecode?
2. Need to attach guards
c               ó$   € V ^8„  d   QhRRRRRR/# )r/   r3   r   r4   r5   rP   r6   )r7   s   "r8   r9   Ú6_dynamo_graph_capture_for_export.<locals>.__annotate__¨  s'   € ÷ f%ñ f%�Sð f% Cð f%Ð,@ñ f%r:   c                 óÆ  <€ \        4       ;_uu_ 4        R p\        S!\        \        34      '       d   \	        S!4      pR pVeW   \        S"WV4      w  rEp\        \        R\        \        \        ,          V4      /4      VP                  ;'       g    R R7      pM\        P                  ! W34      w  rV\        V\        P                  4       \        S"V4      p\        S"\         P"                  P$                  4      '       d   S"P&                  MS"pS p	^RIHp
 V
! 4        \         P,                  P.                  P1                  RRRRRRRR\         P,                  P.                  P2                  R7	      pVR Jp\5        4       pVe+   \         P,                  P.                  P1                  VR7      p\7        4       ;_uu_ 4        \9        R4      ;_uu_ 4        T;_uu_ 4        T;_uu_ 4        \;        V\=        V4      S RR	7      pVP>                  P@                  f   \C        R
4      h. pVPD                  eD   VPD                  PF                  pVPD                  PH                  pVPD                  PJ                  pM…\         PL                  PO                  \         P"                  P%                  4       \         PL                  PQ                  4       4      pVPR                  PU                  R 4       VPW                  4        R pV'       g   \Y        VVVVV VS!4       VP>                  P@                  PZ                  pVP\                  pVP^                  pVP`                  pVPb                  pR R R 4       R R R 4       R R R 4       R R R 4       V UUu. uF¢  pT	;'       g    R Uu0 uFˆ  pVPd                  \g        V4      8X  g   K  \        V\h        4      '       d   K7  VPj                  Pl                  Pn                  VPj                  Pl                  Pp                  8w  g   K|  VPr                  kKŠ  	  upNK¤  	  ppp/ pX FZ  pVV,          p\        V\         P,                  Pt                  Pv                  4      '       g   KB  \y        V4      VVPz                  &   K\  	  VP}                  4        F  w  ppXV,          VV&   K  	  \        XVVVXXV4      P�                  4       p\ƒ        \…        \‡        \ˆ        PŠ                  ! V4      W4      VX4      4      VPR                  nF        VPW                  4        \�        VR4       \‘        V4       XVP’                  R&   VVP’                  R&   VuuR R R 4       #   + '       g   i     EL; i  + '       g   i     EL ; i  + '       g   i     EL,; i  + '       g   i     EL8; iu upi u uppi   + '       g   i     R # ; i)Nz*args)Úassumptions)ÚresetTF)	Úspecialize_intÚspecialize_floatÚassume_static_by_defaultÚautomatic_dynamic_shapesÚ capture_dynamic_output_shape_opsÚcapture_scalar_outputsÚ'constant_fold_autograd_profiler_enabledÚlog_graph_in_out_metadatar  )Ú_dynamic_shapes_specr   )r	  Ú _is_export_deprecated_do_not_usez5output_graph must not be None after fullgraph_capturer­  rº   r6   )Jr   re   r,   r+   r)   r(   r   r;  r*   Ú_assumptionsr£   r¥   r   r   r¶  r’   r‚   r·  r¸  r©   r  r/  r²  r  r  Úinstall_free_tensors_for_exportr   r   r   r   rf   r  rÇ  r�   r±  rO   rº   ro  rƒ   rV  ÚGraphro   rÂ   r:  r5  rÈ  Úgraph_input_idx_to_local_sourceÚoutput_return_typer¨   rÉ  Út_idÚidr   Úconstraint_rangeÚvrÚlowerÚupperÚdimrø   r   rg   rñ   rY   r³   r  r   r   r   r?   r@   rW  rx   r�   rq   )#r3   r4   Ú	user_specÚflattened_specÚ
leaf_specsr¶   r•   r  r  r	  r/  Údynamo_config_ctxÚshapes_spec_in_useÚshapes_spec_ctxrb  ro  ro   rº   rÈ  r¼   r¹   r¨   rÉ  rÛ  Úcr·   r¸   Úinprø   Úreal_idxÚ	graph_idxÚtransformed_graphÚ_constraintsr  r�  s#   *,                              €€€r8   r  Ú/_dynamo_graph_capture_for_export.<locals>.inner¨  sý  ø€ ä%×'Õ'ð ,0ˆIÜ˜.¬:´zÐ*B×CÒCÜ2°>ÓB�	Ø04ˆNØÒ$ä3EØ˜ yó4Ñ0�
¨ô ",ô  ¬¬dÔ3CÕ.DÀjÓ)QÐRÓSØ )× 6Ñ 6× >Ð >¸$ô	"‘ô (.×':Ò':¸D¸>Ó'JÑ$�Ü# K´×1LÑ1LÔMÜ+¨C°Ó9ˆOÜ+5°c¼5¿8¹8¿?¹?×+KÒ+K˜CŸKšKÐQTˆMà3?ˆKåáŒGä %§¡× 4Ñ 4× :Ñ :Ø#Ø!%Ø)-Ø).Ø15Ø'+Ø8<Ø*.ô &+§]¡]×%9Ñ%9×%YÑ%Yð !;ó !Ðð* "+°$Ð!6ÐÜ)›mˆOØÒ)Ü"'§-¡-×"6Ñ"6×"<Ñ"<Ø)7ð #=ó #�ô
 $×%Õ%ÜÐ0×1Õ1ß!Ò!ß’ä'Ø#Ü˜+Ó&Ø ,Ø59ô	�ð ×+Ñ+×8Ñ8Ò@Ü(ØOóð ð -/�Ø×$Ñ$Ò0Ø×-Ñ-×:Ñ:�EØ #× 1Ñ 1× ;Ñ ;�IØ%(×%6Ñ%6×%EÑ%E‘Nä!ŸH™H×0Ñ0´·±·±Ó1BÄEÇHÁHÇNÁNÓDTÓU�EØ—K‘K×&Ñ& tÔ,Ø—O‘OÔ%Ø $�I÷ *Ü:Ø'Ø%Ø!ØØØØ&ôð #&×":Ñ":×"GÑ"G×"WÑ"W�Ø.×NÑN�Ø#2×#EÑ#EÐ Ø*×3Ñ3�Ø#2×#CÑ#CÐ ÷W  ÷ "÷ 2÷ &ñv %ô&ñ %�Að *×/Ð/¨RÐ/óá/˜àŸ™¤" Q£%™ô ô !+¨1Ô.@× Aô	 ð
 ×.Ñ.×1Ñ1×7Ñ7¸1×;MÑ;M×;PÑ;P×;VÑ;VÑVô �A—E”EÙ/ôñ %ð #ñ &ð" 13ÐÛ#�Ø% cÕ*�Ü˜f¤e§m¡m×&:Ñ&:×&HÑ&H×IÔIÜ69Ð:KÓ6LÐ% f§l¡lÓ3ñ $ð
 (9×'>Ñ'>Ö'@Ñ#�˜)Ø(6°yÕ(A�˜HÓ%ñ (Aô !7ØØØ&Ø!Ø ØØó!÷ ‰i‹kð ô 0>ÜÜ"¤7×#4Ò#4°]Ó#CÀTÓRØØóó0Ð×#Ñ#Ô,ð ×'Ñ'Ô)ä/Ð0AÀ4ÔHÜÐ/Ô0à:JÐ×"Ñ"Ð#6Ñ7Ø2;Ð×"Ñ" ;Ñ/à$÷I (Ò'÷B  —�ú÷ "×!Ð!ú÷ 2×1Ð1ú÷ &×%Ð%üòdùó&÷_ (×'Ð'ús¹   ”F.WÇV0	ÇVÇ!VÇ,DU4ÌA!U4Í)VÍ1VÍ9V0	ÎWÎW	
ÎW	
Î!WÏWÏA WÐWÐ/W	
Ð6AWÑ?C*WÕ4VÕ?	VÖVÖ	VÖV-Ö'	V0	Ö0WÖ;	W×W	
×	W×W 	r6   )r�  r	  r  r  rQ  s   f$d @r8   Ú _dynamo_graph_capture_for_exportrS  ‹  s   ú€ ð6 €L÷f%ò f%ðP €Lr:   ))Ú__export_root_r1  )z_export_root.r  )z._export_rootr  )Fr˜   )kÚ
__future__r   r?   Úloggingr¿  r-  r¥  Úcollectionsr   Ú
contextlibr   Útypingr   r   r   r	   r*  r‚   Útorch.fxÚtorch.utils._pytreeÚutilsÚ_pytreer£   Útorch._dynamo.convert_framer
   r   r   Útorch._dynamo.decoratorsr   r{  Útorch._dynamo.eval_framer   r   Útorch._dynamo.excr   Útorch._dynamo.sourcer   Útorch._dynamo.utilsr   r   Útorch._export.utilsr   Útorch._guardsr   r   r   Útorch.export.dynamic_shapesr   r   Ú%torch.fx.experimental.symbolic_shapesr   r   r   Útorch.fx.graphr   r   Úcollections.abcr   r    r!   Útorch._dynamo.output_graphr"   Útorch._subclasses.fake_tensorr#   Útorch.export._tracer$   r%   Útorch.fx.noder&   r'   Ú#torch.fx.experimental._spec_bindingr(   Ú"torch.fx.experimental.dynamic_specr)   r*   r+   r,   r-   Ú	getLoggerr«   r'  rC   rH   rM   rx   r�   r·  r¸  r’   r¡   rƒ   ÚTransformerr³   r5  r?  rC  rE  Ú	Exceptionr]  r_  r}  rÎ  ro   ÚCodeGenrX  r(  rS  r6   r:   r8   Ú<module>rt     s�  ðÝ "ã Û Û 
Û Û Ý "Ý "ß 4Ó 4ã ã Û ß $Ð $ß WÑ WÝ >ß LÝ +Ý .ß AÝ 8ß BÑ Bß F÷ñ ÷
 7÷ ß<Ñ<å;Ý<Ý7Ýß.å B÷ó ñ ˆCƒL€Ø×Ò˜Ó!€õ&ò*Ð õ÷Yõx0<ôf
6�E—H‘H—O‘Oô 
6ñ  Ð 4°{ÀJÐ6OÓPÐ ô˜UŸX™X×1Ñ1ô õDA)õH*õ:÷(ñ (ôV	ˆIô 	÷ñ ÷<ñ õ4vôrg$˜UŸX™XŸ^™^×3Ñ3ô g$÷T.ðbEð ,0ðEð +/÷	Eñ Er:   