+
    –°³j¾­  ã                  ó´  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^ RI
HtHtHt ^ RIHt ]'       d!   ^ RIt^ RIHtHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIt^ RIHu Ht ^ RI H!u H"t# ^ RI$H%t& ^ RIH't'H(t( ^ RI)H*t* ^ RI+H,t,H-t-H.t.H/t/H0t0 ]Pb                  Pe                  ]3R4      t4R R lt5]Pl                  ! RR7      R R l4       t7R R lt8R R lt9 ! R R]Pt                  4      t; ! R R]04      t<]Pz                  R R l4       t>]<! 4       3R R!/R" R# lllt? ! R$ R%]4      t@ ! R& R']@4      tA ! R( R)]@4      tB ! R* R+]@4      tCR, R- ltDR# ).é    )ÚannotationsN)ÚABCÚabstractmethod)ÚAbstractContextManager)ÚAnyÚcastÚTYPE_CHECKING)ÚSelf)ÚCallableÚ	GeneratorÚSequence)ÚTracebackType)ÚFunctionalizeInterpreter)Ú
OpOverload)Ú$_functionalization_reapply_views_tls)Ú_get_dispatch_mode_pre_dispatchÚTorchBindOpOverload)Úis_sparse_any)Ú_detect_infra_modeÚ_disable_infra_modeÚautograd_would_have_decomposedÚreturn_and_correct_aliasingÚTorchDispatchModeÚnot_implementedc               ó    € V ^8„  d   QhRRRR/# )é   ÚtypesúSequence[type]ÚreturnÚbool© )Úformats   "Úd/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_subclasses/functional_tensor.pyÚ__annotate__r$   '   s   € ÷ 
$ñ 
$¨.ð 
$¸Tñ 
$ó    c                óì   € V  Uu. uF;  pV\         P                  \         P                  P                  \        39  g   K9  VNK=  	  ppV'       d   \
        P                  R V4       \        V4      # u upi )z.FunctionalTensor unrecognized subclass(es): %s)ÚtorchÚTensorÚ_subclassesÚ
FakeTensorÚFunctionalTensorÚnot_implemented_logÚdebugr    )r   ÚtÚunrecognized_typess   &  r#   Ú_has_unrecognized_tensor_typesr0   '   sr   € ñ óáˆAØ”U—\‘\¤5×#4Ñ#4×#?Ñ#?ÔAQÐRÑR÷ 	
ˆÙð ð ÷
 Ü×!Ñ!Ø<Ð>Pô	
ô Ð"Ó#Ð#ùòs   …6A1Á A1i   )Úmaxsizec               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úfuncr   Úexportr    Úpre_dispatchr   zbool | Noner!   )r"   s   "r#   r$   r$   5   s,   € ÷  ñ  Ø
ð Ø"ð Ø26ð àñ r%   c                ó\  € V'       d5   V \         P                  P                  P                  P                  J d   R# ^ RIHp V! V 4      '       d   R# \        ;QJ d0    R V P                  P                   4       F  '       g   K   RM%	  RM!! R V P                  P                   4       4      pV'       g   V P                  P                  '       d   R# V'       dP   V'       dF   V P                  R	9  d3   V P                  4       '       d   \        P                  ! RV  R2^R7       R# R# R# )
zÈFast path for _can_decompose that depends only on (func, export, pre_dispatch).

Returns True/False for a definitive answer, or None to fall through
to the slow path (autograd_would_have_decomposed).
F)Ú#_should_decompose_because_unsafe_opTc              3  ó8   "  € T F  qP                   x € K  	  R # 5i©N)Ú
alias_info)Ú.0Úargs   & r#   Ú	<genexpr>Ú&_can_decompose_fast.<locals>.<genexpr>E   s   é € ÐNÑ7M°Ÿ^ž^Ó7Mùs   ‚z˜At pre-dispatch tracing, we assume that any custom op marked with CompositeImplicitAutograd and have functional schema are safe to not decompose. Found z to be one such op.)Ú
stacklevelN)ÚatenÚprim)r'   Úopsr@   ÚdropoutÚdefaultÚtorch._decompr7   ÚanyÚ_schemaÚ	argumentsÚ
is_mutableÚ	namespaceÚ_can_decomposeÚwarningsÚwarn)r3   r4   r5   r7   Úalias_info_presents   &&&  r#   Ú_can_decompose_fastrO   4   sÏ   € ÷ �$œ%Ÿ)™)Ÿ.™.×0Ñ0×8Ñ8Ó8ÙåAá*¨4×0Ò0Ùç›ÑN°t·|±|×7MÒ7MÓNŸŸšÑN°t·|±|×7MÒ7MÓNÓNÐß˜TŸ\™\×4×4Ð4ÙçßØ�~‰~Ð%5Ô5¸$×:MÑ:M×:OÒ:OÜ—’ðà!˜FÐ"5ð7ð  !õ	ñ Ùár%   c               ó    € V ^8„  d   QhRRRR/# )r   ÚmsgÚstrr   ÚNoner!   )r"   s   "r#   r$   r$   X   s   € ÷ "ñ "¨#ð "°$ñ "r%   c                óD  € \         P                  P                  \         P                  P                  P                  4      p\         P                  P                  \         P                  P                  P                  4      pV'       g   V'       d   \        V 4      hR # R # r9   )r'   Ú_CÚ&_dispatch_tls_is_dispatch_key_includedÚDispatchKeyÚFunctionalizeÚ&_dispatch_tls_is_dispatch_key_excludedÚAssertionError)rQ   Úis_includedÚis_excludeds   &  r#   Ú _assert_functionalize_not_activer]   X   sk   € Ü—(‘(×AÑAÜ�‰×Ñ×*Ñ*ó€Kô —(‘(×AÑAÜ�‰×Ñ×*Ñ*ó€K÷ Ÿ;Ü˜SÓ!Ð!ñ '‰;r%   c               ó    € V ^8„  d   QhRRRR/# )r   Úextra_kwargsr   r   úCallable[..., Any]r!   )r"   s   "r#   r$   r$   q   s   € ÷ ñ °ð Ð8Jñ r%   c                 ó   a € R  V 3R llpV# )c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úselfr+   Úargsr   Úkwargsr   r!   )r"   s   "r#   r$   Ú1_conversion_method_template.<locals>.__annotate__r   s)   € ÷ <ñ <Ð ð <¨ð <¸ð <Àñ <r%   c                ó0   <€ V P                   ! V/ / VCSCB # r9   )Úto)rc   rd   re   r_   s   &*,€r#   Ú_Ú&_conversion_method_template.<locals>._r   s"   ø€ Ø�wŠw˜Ð;Ð : 6Ð :¨\Ð :Ñ;Ð;r%   r!   )r_   ri   s   l r#   Ú_conversion_method_templaterk   q   s   ø€ ÷<ð <ð €Hr%   c                  ó   a € ] tR t^xt$ RtR]R&   ]P                  P                  P                  t
]P                  P                  P                  ]P                  P                  P                  4      t]! ]P"                  P$                  P&                  P(                  ]P"                  P$                  P&                  P*                  ]P"                  P$                  P,                  P(                  ]P"                  P$                  P.                  P(                  ]P"                  P$                  P0                  P(                  ]P"                  P$                  P2                  P(                  ]P"                  P$                  P4                  P(                  ]P"                  P$                  P6                  P(                  ]P"                  P$                  P8                  P(                  ]P"                  P$                  P:                  P(                  ]P"                  P$                  P<                  P(                  ]P"                  P$                  P>                  P(                  ]P"                  P$                  P@                  P(                  ]P"                  PB                  PD                  P(                  04      t#Rt$R]R&   R R lt%R/R	 R
 llt&RR/R R llt'](R R l4       t)R R lt*R R lt+R R lt,R R lt-R R lt.R R lt/R R lt0R V 3R llt1R0R  R! llt2]3! ]Ph                  R"7      t5]3! ]PD                  ! R#4      R$7      t6]3! ]Pn                  R"7      t7]3! ]Pp                  R"7      t9]3! ]Pt                  R"7      t;]3! ]Px                  R"7      t=]3! ]P|                  R"7      t>]3! ]P~                  R"7      t@]3! ]P‚                  R"7      tB]3! ]P†                  R"7      tDR0R%R/R& R' llltE]FR( R) l4       tG]FR* R+ l4       tHR, R- ltIR.tJV ;tK# )1r+   a"  
Functional tensors represent tensors that will remove mutations
from a program. If you perform a mutable operation on a functional tensor,
it will re-dispatch to the functional variant of that operation.

Historically, functionalization is implemented in C++ in the dispatcher.
This class is a lightweight python shim around the C++ functionalization logic.

FunctionalTensor is required to be used with a corresponding
FunctionalTensorMode active, because it relies
on using the mode for dispatch (which can properly handle factory functions).
útorch.TensorÚelemNzFunctionalTensor | NoneÚ_inference_mode_basec               ó$   € V ^8„  d   QhRRRRRR/# )r   rn   rm   ÚmodeÚFunctionalTensorModer   r
   r!   )r"   s   "r#   r$   ÚFunctionalTensor.__annotate__®   s'   € ÷ @ñ @˜<ð @Ð/Cð @Èñ @r%   c                	ó*  € \         P                  ! V4      '       g   \        R 4      h\        P                  \         P
                  P                  V4      ,          p\         P                  P                  T VP                  \        V4      '       g   VP                  4       MR\        V4      '       g   VP                  4       MRRVP                  VP                  VP                  RVP                   RRRV4      p\         P
                  P#                  V4       Wn        \         P&                  P(                  P*                  '       dÉ   \         P,                  ! 4       '       d®   \         P.                  P(                  P0                  '       d„   VP$                  P3                  4       pVP5                  4       '       d   RVn        WBP8                  V&   V# VP8                  P;                  V4      Vn        VP6                  f   WBP8                  V&   V# )z elem must be a functional tensorNF)r'   Ú_is_functional_tensorrZ   r+   Ú_extra_dispatch_keysrU   Ú_dispatch_keysr(   Ú_make_wrapper_subclassÚshaper   ÚstrideÚstorage_offsetÚdtypeÚlayoutÚdeviceÚrequires_gradÚ_set_throw_on_mutable_data_ptrrn   Ú_exportÚconfigÚ(enable_auto_functionalized_v2_for_exportÚis_inference_mode_enabledÚ	_inductorÚenable_auto_functionalized_v2Úuntyped_storageÚis_base_tensorro   Ú_storage_to_baseÚget)Úclsrn   rq   Úextra_dispatch_keysÚoutÚstorages   &&&   r#   Ú__new__ÚFunctionalTensor.__new__®   s’  € Ü×*Ò*¨4×0Ò0Ü Ð!CÓDÐDô& ×1Ñ1´E·H±H×4KÑ4KÈDÓ4QÕQð 	ô �l‰l×1Ñ1ð
 Ø�J‰JÜ!.¨t×!4Ò!4ˆD�K‰KŒM¸$ä-:¸4×-@Ò-@�×#Ñ#Ô%ÀdàØ�J‰JØ�K‰KØ�K‰KØØ×ÑØØØØó)
ˆô, 	�‰×/Ñ/°Ô4ØŒô �M‰M× Ñ ×I×IÐIÜ×/Ò/×1Ò1Ü—‘×&Ñ&×D×DÐDà—h‘h×.Ñ.Ó0ˆGØ×!Ñ!×#Ò#Ø+/�Ô(ð 25×%Ñ% gÑ.ð
 ˆ
ð ,0×+@Ñ+@×+DÑ+DÀWÓ+M�Ô(Ø×+Ñ+Ò3Ø58×)Ñ)¨'Ñ2Øˆ
r%   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# ©r   r3   r   r   r   rd   útuple[Any, ...]re   zdict[str, Any] | Noner   r   r!   )r"   s   "r#   r$   rs   ð   s<   € ÷ 0
ñ 0
àð0
ð ð0
ð ð	0
ð
 &ð0
ð 
ñ0
r%   c                	óê  € \        V4      '       d   \        # Vf   / pV\        P                  9   EdO   \	        V4      ^ 8w  d   \        R4      hV\        P                  P                  P                  P                  \        P                  P                  P                  P                  39   dn   \	        V4      ^8w  g   \        V^ ,          \        4      '       g   \        R4      hV! \        P                  ! V^ ,          P                  4      V^,          4      # \	        V4      ^8w  g   \        V^ ,          \        4      '       g   \        R4      hV! \        P                  ! V^ ,          P                  4      4      # V\        P                  P                  P                   P                  J d7   \	        V4      ^8X  d'   \        V^ ,          \        4      '       d
   V^ ,          # \#        R4      h)Nz+kwargs must be empty for metadata functionsz+Expected 2 args with FunctionalTensor firstz$Expected 1 arg with FunctionalTensorzqAttempting to use FunctionalTensor on its own. Instead, please use it with a corresponding FunctionalTensorMode())r0   ÚNotImplementedr+   Úmetadata_fnsÚlenrZ   r'   rB   r@   Úis_strides_like_formatrD   Úis_contiguousÚmemory_formatÚ
isinstanceÚ_from_functional_tensorrn   ÚdetachÚRuntimeError)rc   r3   r   rd   re   s   &&&&&r#   Ú__torch_dispatch__Ú#FunctionalTensor.__torch_dispatch__ð   sn  € ô *¨%×0Ò0Ü!Ð!àŠ>ØˆFð Ô#×0Ñ0Õ0ô �6‹{˜aÔÜ$Ð%RÓSÐSØÜ—	‘	—‘×5Ñ5×=Ñ=Ü—	‘	—‘×,Ñ,×:Ñ:ðô ô �t“9 ”>¬°D¸µGÔ=M×)NÒ)NÜ(Ð)VÓWÐWÙœE×9Ò9¸$¸q½'¿,¹,ÓGÈÈaÍÓQÐQÜ�4‹y˜AŒ~¤Z°°QµÔ9I×%JÒ%JÜ$Ð%KÓLÐLáœ×5Ò5°d¸1µg·l±lÓCÓDÐDØ”5—9‘9—>‘>×(Ñ(×0Ñ0Ó0ô
 �4‹y˜AŒ~¤*¨T°!­WÔ6F×"GÒ"GØ˜A•w�ô Øó
ð 	
r%   Útensor_contentsc               ó    € V ^8„  d   QhRRRR/# )r   r¡   zobject | Noner   rR   r!   )r"   s   "r#   r$   rs   "  s   € ÷ 6ñ 6¨=ð 6ÀCñ 6r%   c               	ó4   € R \        V P                  4       R2# )zFunctionalTensor(Ú))Úreprrn   )rc   r¡   s   &$r#   Ú__repr__ÚFunctionalTensor.__repr__"  s   € Ø"¤4¨¯	©	£?Ð"3°1Ð5Ð5r%   c               ó    € V ^8„  d   QhRRRR/# )r   Úxrm   r   r+   r!   )r"   s   "r#   r$   rs   &  s   € ÷ ñ ˜ð Ð*:ñ r%   c                	ó´  € \         P                  ! V 4      '       d   \        R 4      h\         P                  ! V 4      p\	        \         P
                  P                  P                  4      pVf   \        R4      hV;_uu_ 4        \         P                  ! W4       \        W4      p\         P                  ! W4       RRR4       V#   + '       g   i     X# ; i)z)x must not already be a functional tensorNú functional_mode must not be None)
r'   ru   rZ   Ú_to_functional_tensorr   rU   Ú_TorchDispatchModeKeyÚ
FUNCTIONALÚ_mirror_autograd_meta_tor+   )r©   Úx_functionalÚfunctional_moder�   s   &   r#   Úto_functionalÚFunctionalTensor.to_functional%  s§   € ô ×&Ò& q×)Ò)Ü Ð!LÓMÐMô
 ×2Ò2°1Ó5ˆô -¬U¯X©X×-KÑ-K×-VÑ-VÓWˆØÒ"Ü Ð!CÓDÐDçŠ_Ü×*Ò*¨1Ô;Ü" <ÓAˆCÜ×*Ò*¨<Ô=÷ ð ˆ
÷	 Ž_ð ˆ
ús   Â8CÃC	c               ó   € V ^8„  d   QhRR/# )r   r   rm   r!   )r"   s   "r#   r$   rs   @  s   € ÷ 8ñ 8 ñ 8r%   c                	ón   € \         P                  ! V 4       \         P                  ! V P                  4      # r9   )r'   Ú_syncrœ   rn   ©rc   s   &r#   Úfrom_functionalÚ FunctionalTensor.from_functional@  s#   € Ü�Š�DÔÜ×,Ò,¨T¯Y©YÓ7Ð7r%   c               ó   € V ^8„  d   QhRR/# ©r   r   r    r!   )r"   s   "r#   r$   rs   D  s   € ÷ ;ñ ; ñ ;r%   c                	óB   € \         P                  ! V P                  4      # r9   )r'   Ú_is_functional_tensor_basern   r·   s   &r#   rˆ   ÚFunctionalTensor.is_base_tensorD  s   € Ü×/Ò/°·	±	Ó:Ð:r%   c               ó    € V ^8„  d   QhRRRR/# )r   Úoutputrm   r   rS   r!   )r"   s   "r#   r$   rs   G  s   € ÷ 8ñ 8˜|ð 8°ñ 8r%   c                	óH   € \         P                  ! V P                  V4       R # r9   )r'   Ú_functionalize_replacern   )rc   rÀ   s   &&r#   Úreplace_ÚFunctionalTensor.replace_G  s   € Ü×$Ò$ T§Y¡Y°Ö7r%   c               ó   € V ^8„  d   QhRR/# ©r   r   rS   r!   )r"   s   "r#   r$   rs   J  s   € ÷ 6ñ 6˜tñ 6r%   c                	óF   € \         P                  ! V P                  4       R # r9   )r'   Ú_functionalize_commit_updatern   r·   s   &r#   Úcommit_updateÚFunctionalTensor.commit_updateJ  s   € Ü×*Ò*¨4¯9©9Ö5r%   c               ó   € V ^8„  d   QhRR/# rÆ   r!   )r"   s   "r#   r$   rs   M  s   € ÷ -ñ -�dñ -r%   c                	óF   € \         P                  ! V P                  4       R # r9   )r'   Ú_functionalize_syncrn   r·   s   &r#   ÚsyncÚFunctionalTensor.syncM  s   € Ü×!Ò! $§)¡)Ö,r%   c               ó   € V ^8„  d   QhRR/# rÆ   r!   )r"   s   "r#   r$   rs   P  s   € ÷ Kñ K°Dñ Kr%   c                	óF   € \         P                  ! V P                  4       R # r9   )r'   Ú1_functionalize_mark_mutation_hidden_from_autogradrn   r·   s   &r#   Ú"mark_mutation_hidden_from_autogradÚ3FunctionalTensor.mark_mutation_hidden_from_autogradP  s   € Ü×?Ò?ÀÇ	Á	ÖJr%   c               ó   € V ^8„  d   QhRR/# )r   r   r   r!   )r"   s   "r#   r$   rs   S  s   € ÷ 9ñ 9˜ñ 9r%   c                	ój  € V P                   P                  4       ^ 8X  d   V P                   P                  4       # V P                   P                  4       ^8X  d*   V P                    Uu. uF  qP                  4       NK  	  up# V P                    Uu. uF  qP                  4       NK  	  up# u upi u upi )r   )rn   ÚdimÚitemÚtolist)rc   rn   s   & r#   rÙ   ÚFunctionalTensor.tolistS  sy   € Ø�9‰9�=‰=‹?˜aÔØ—9‘9—>‘>Ó#Ð#Ø�Y‰Y�]‰]‹_ Ô!Ø,0¯IªIÓ6©I D—I‘I–K©IÑ6Ð6à.2¯iªiÓ8©i d—K‘K–M©iÑ8Ð8ùò 7ùâ8s   Á'B+ÂB0c               ó$   € V ^8„  d   QhRRRRRR/# )r   rd   r   re   r   rm   r!   )r"   s   "r#   r$   rs   [  s!   € ÷ +ñ +˜ð + sð +¨|ñ +r%   c                	ó4  <€ \        \        P                  P                  P                  4      P
                  '       dL   \        P                  P                  P                  V V P                  V P                  V P                  R 7       \        SV `4  ! V/ VB # ))r|   r~   r}   )r   r'   rU   r­   r®   r4   rB   r@   Ú_assert_tensor_metadatar|   r~   r}   Úsuperrh   )rc   rd   re   Ú	__class__s   &*,€r#   rh   ÚFunctionalTensor.to[  sm   ø€ ÜœeŸh™h×<Ñ<×GÑGÓH×O×OÐOÜ�I‰I�N‰N×2Ñ2ØØ—j‘jØ—{‘{Ø—{‘{ð	 3ô ô ‰wŠz˜4Ð* 6Ñ*Ð*r%   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r~   ztorch.device | int | str | Nonerd   r   re   r   rm   r!   )r"   s   "r#   r$   rs   f  s,   € ÷ 4ñ 4Ø5ð4ØEHð4ØTWð4à	ñ4r%   c                	óÆ   € T;'       g    \         P                  P                  4       p\        V4      ^ 8”  d   V P                  ! V.VO5/ VB # V P                  ! RRV/VB # )r   r~   r!   )r'   ÚcudaÚcurrent_devicer—   rh   )rc   r~   rd   re   s   &&*,r#   rã   ÚFunctionalTensor.cudaf  sY   € ð ×6Ð6œ5Ÿ:™:×4Ñ4Ó6ˆÜˆt‹9�qŒ=Ø—7’7˜6Ð3 DÒ3¨FÑ3Ð3à—7’7Ñ3 &Ð3¨FÑ3Ð3r%   ©r|   Úcpu)r~   Úmasked_gradc               ó$   € V ^8„  d   QhRRRRRR/# )r   r|   ztorch.dtype | Nonerè   zbuiltins.bool | Noner   rm   r!   )r"   s   "r#   r$   rs   {  s(   € ÷ 
ñ 
à!ð
ð *ð	
ð
 
ñ
r%   c               	ó  € V P                   \        P                  8X  d   Ve   V P                  VR7      # T # \        P                  ! V P
                  4      p\        P                  P                  P                  V4      '       g·   V P
                  P                  WR7      p\        V\        P                  4      '       dy   \        P                  ! V4      '       d]   \        \        P                  P                  P                   4      pVf   \#        R4      hV;_uu_ 4        \%        WE4      uuR R R 4       # V# \        P&                  P(                  P                  P+                  WVR7      #   + '       g   i     T# ; i)Nræ   )r|   rè   r«   )r}   r'   Ústridedrh   rœ   rn   r)   Úfake_tensorÚis_fake_tensorÚto_denser›   r(   ru   r   rU   r­   r®   rZ   r+   rB   r@   rD   )rc   r|   rè   Úinnerr�   r±   s   &&$   r#   rî   ÚFunctionalTensor.to_dense{  s  € ð �;‰;œ%Ÿ-™-Ô'Ø+0Ò+<�4—7‘7 �7Ó'ÐFÀ$ÐFä×-Ò-¨d¯i©iÓ8ˆÜ× Ñ ×,Ñ,×;Ñ;¸E×BÒBØ—)‘)×$Ñ$¨5Ð$ÓJˆCÜ˜#œuŸ|™|×,Ò,´×1LÒ1LÈS×1QÒ1QÜ"4Ü—H‘H×2Ñ2×=Ñ=ó#�ð #Ò*Ü(Ð)KÓLÐLß$’_Ü+¨CÓA÷ %’_àˆJä�y‰y�~‰~×&Ñ&×.Ñ.Ø¨;ð /ó 
ð 	
÷	 %–_àˆJús   Ä%E2Å2F	c               ó   € V ^8„  d   QhRR/# ©r   r   zbuiltins.boolr!   )r"   s   "r#   r$   rs   —  s   € ÷ Bñ B˜=ñ Br%   c                	óV   € \         P                  ! V P                  4      P                  # r9   )r'   rœ   rn   Ú	is_mkldnnr·   s   &r#   rô   ÚFunctionalTensor.is_mkldnn•  s   € ô ×,Ò,¨T¯Y©YÓ7×AÑAÐAr%   c               ó   € V ^8„  d   QhRR/# )r   r   ztorch.layoutr!   )r"   s   "r#   r$   rs   œ  s   € ÷ ?ñ ?˜ñ ?r%   c                	óV   € \         P                  ! V P                  4      P                  # r9   )r'   rœ   rn   r}   r·   s   &r#   r}   ÚFunctionalTensor.layoutš  s   € ô ×,Ò,¨T¯Y©YÓ7×>Ñ>Ð>r%   c               ó   € V ^8„  d   QhRR/# rò   r!   )r"   s   "r#   r$   rs   Ÿ  s   € ÷ !ñ !˜-ñ !r%   c                	ó4   € \        V P                  4       4      # r9   )r    rØ   r·   s   &r#   Ú__bool__ÚFunctionalTensor.__bool__Ÿ  s   € Ü�D—I‘I“KÓ Ð r%   r!   ©r!   Nr9   )LÚ__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r'   rU   r­   r®   Ú	_mode_keyÚ,_additional_keys_to_prop_for_wrapper_tensorsÚaddrW   Ú
ZeroTensorrv   Ú	frozensetrB   r@   r™   rD   rš   r˜   Úis_non_overlapping_and_denseÚsizeÚsym_sizerz   Ú
sym_strider{   Úsym_storage_offsetÚnumelÚ	sym_numelr×   rA   r~   r–   ro   r�   rŸ   r¦   Ústaticmethodr²   r¸   rˆ   rÃ   rÉ   rÎ   rÓ   rÙ   rh   rã   rk   Úint8Úcharrç   Úbfloat16Úuint8ÚbyteÚfloat64ÚdoubleÚfloat32Úfloatr    Úfloat16ÚhalfÚint32ÚintÚint64Úlongrî   Úpropertyrô   r}   rû   Ú__static_attributes__Ú__classcell__©rß   s   @r#   r+   r+   x   só  ø‡ ñð Óð —‘×.Ñ.×9Ñ9€Ið !Ÿ8™8×PÑP×TÑTØ�‰×Ñ×'Ñ'óÐñ à�I‰I�N‰N×(Ñ(×0Ñ0Ø�I‰I�N‰N×(Ñ(×6Ñ6Ø�I‰I�N‰N×1Ñ1×9Ñ9Ø�I‰I�N‰N×7Ñ7×?Ñ?Ø�I‰I�N‰N×Ñ×'Ñ'Ø�I‰I�N‰N×#Ñ#×+Ñ+Ø�I‰I�N‰N×!Ñ!×)Ñ)Ø�I‰I�N‰N×%Ñ%×-Ñ-Ø�I‰I�N‰N×)Ñ)×1Ñ1Ø�I‰I�N‰N×-Ñ-×5Ñ5Ø�I‰I�N‰N× Ñ ×(Ñ(Ø�I‰I�N‰N×$Ñ$×,Ñ,Ø�I‰I�N‰N×Ñ×&Ñ&Ø�I‰I�N‰N×!Ñ!×)Ñ)ð	
ó€Lð( 59ÐÐ1Ó8õ@÷D0
ðd6¸4÷ 6ð ôó ðõ48õ;õ8õ6õ-õKõ9÷+ð +÷4ñ '¨U¯Z©ZÔ8€DÙ
%¨U¯\ª\¸%Ó-@Ô
A€CÙ*°·±Ô@€HÙ&¨U¯[©[Ô9€DÙ(¨u¯}©}Ô=€FÙ'¨e¯m©mÔ<€EÙ&¨U¯Z©ZÔ8€DÙ&¨U¯]©]Ô;€DÙ
%¨E¯K©KÔ
8€CÙ&¨U¯[©[Ô9€Dñ
ð -1÷	
ð 
ð4 ôBó ðBð ô?ó ð?÷!ó !r%   r+   c                  ó”   a € ] tR tRtRR V 3R llltR V 3R lltR V 3R lltRR R	 lltR
 R ltR R lt	]
R R l4       tRtV ;t# )rr   i£  c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r   r5   r    r4   Ú_allow_token_discoveryÚ_keep_input_mutationsr   rS   r!   )r"   s   "r#   r$   Ú!FunctionalTensorMode.__annotate__¤  s<   € ÷ %(ñ %(àð%(ð ð%(ð !%ð	%(ð
  $ð%(ð 
ñ%(r%   c                	óx  <€ \         SV `  4        W n        R V n        . V n        \
        P                  P                  P                  V n	        Wn
        V'       d%   \
        P                  P                  P                  MRV n        / V n        / V n        W0n        W@n        \$        P&                  ! 4       V n        R# )FN)rÞ   Ú__init__r4   Úis_on_stackÚenter_stackr'   rU   r­   r®   r  r5   rW   ÚPreDispatchÚ_dispatch_keyÚ_tokensÚ_tokens_forward_outputr&  r'  ÚweakrefÚWeakKeyDictionaryr‰   )rc   r5   r4   r&  r'  rß   s   &&&&&€r#   r*  ÚFunctionalTensorMode.__init__¤  sš   ø€ ô 	‰ÑÔØŒØ ˆÔØˆÔô Ÿ™×7Ñ7×BÑBˆŒØ(ÔçAMœUŸX™X×1Ñ1×=Ò=ÐSWˆÔð 13ˆŒð @BˆÔ#ð '=Ô#à%:Ô"ô ×%Ò%Ó'ð 	Ör%   c               ó   € V ^8„  d   QhRR/# )r   r   r
   r!   )r"   s   "r#   r$   r(  Ì  s   € ÷ ñ ˜4ñ r%   c                	ó¶   <a € R  V 3R llpV! 4       f*   S P                   P                  R4       \        SS `  4       # S P                   P                  R4       S # )c               ó   € V ^8„  d   QhRR/# )r   r   úFunctionalTensorMode | Noner!   )r"   s   "r#   r$   Ú4FunctionalTensorMode.__enter__.<locals>.__annotate__Í  s   € ÷ 	ñ 	Ð ;ñ 	r%   c                 óZ  <€ S P                   \        P                  P                  P                  8X  d.   \        \        P                  P                  P                  4      # \        R \        P                  P                  \        P                  P                  P                  4      4      # )r7  )
r.  r'   rU   rW   r-  r   r­   r®   r   Ú_get_dispatch_moder·   s   €r#   Ú_get_prev_modeÚ6FunctionalTensorMode.__enter__.<locals>._get_prev_modeÍ  su   ø€ Ø×!Ñ!¤U§X¡X×%9Ñ%9×%EÑ%EÔEÜ6Ü—H‘H×2Ñ2×=Ñ=óð ô Ø-Ü—‘×+Ñ+¬E¯H©H×,JÑ,J×,UÑ,UÓVóð r%   TF)r,  ÚappendrÞ   Ú	__enter__)rc   r;  rß   s   f €r#   r>  ÚFunctionalTensorMode.__enter__Ì  sS   ù€ ÷	ð 	ñ ÓÒ#Ø×Ñ×#Ñ# DÔ)Ü‘7Ñ$Ó&Ð&à×Ñ×#Ñ# EÔ*ØˆKr%   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Úexc_typeztype[BaseException] | NoneÚexc_valzBaseException | NoneÚexc_tbzTracebackType | Noner   rS   r!   )r"   s   "r#   r$   r(  Þ  s2   € ÷ 8ñ 8à,ð8ð &ð8ð %ð	8ð
 
ñ8r%   c                	óp   <€ V P                   P                  4       pV'       d   \        SV `  WV4       R # R # r9   )r,  ÚpoprÞ   Ú__exit__)rc   rA  rB  rC  r+  rß   s   &&&& €r#   rF  ÚFunctionalTensorMode.__exit__Þ  s0   ø€ ð ×&Ñ&×*Ñ*Ó,ˆßÜ‰GÑ˜X°Ö7ñ r%   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# r’   r!   )r"   s   "r#   r$   r(  è  sJ   € ÷ ]Mñ ]Màð]Mð ð]Mð ð	]Mð
 &ð]Mð 
ñ]Mr%   c           	     	óÌ  a a€ Vf   / p\        V4      '       d   \        # V\        P                  9  dˆ   S P	                  WV4      '       dp   \
        P                  P                  VP                  4       4      '       d=   S ;_uu_ 4        VP                  ! V/ VB pV\        Jd   VuuR R R 4       #  R R R 4       R V 3R llpR R lp^ RI
HpHp	Hp
 V! V4      '       Edb   \
        P                  P                  VP                  4       \
        P                  P                  P                   4      '       Eg   ^ R IHu Hp ^ R IHu Hp \
        P,                  P/                  4       '       d'   VP0                  '       d   V
! S WV4      # V	! S WV4      # VP2                  '       g‰   \5        V\
        P6                  P8                  4      '       di   \
        P:                  P<                  P?                  V4      '       g0   \
        P:                  P<                  PA                  V4      '       d   V
! S WV4      # V	! S WV4      # ^ RI!H"pH#p V! V4      '       d“   \
        P                  P                  VP                  4       \
        P                  P                  P                   4      '       d   \I        RVP                  4        R24      hV! S PJ                  S PL                  WV4      # \N        PP                  ! \        WsV34      w  pp\S        R	4       \
        P                  PU                  4       \
        P                  PW                  \
        P                  P                  P                   4      ,          p\
        P                  PY                  4       P[                  \
        P                  P                  P                   4      \        P\                  ,
          p\5        V\^        4      '       dH   \a        4       pVPc                  V4      pVPc                  V4      pV! V/ VB pVPe                  V4      pEMÄ\
        P                  Pg                  VV4      ;_uu_ 4         \
        Ph                  ! R
4      pV\        P                  9   ds   \
        Pj                  Pl                  Pn                  Pq                  4       ;_uu_ 4        V! V/ VB pR R R 4       \N        PP                  ! \
        Pr                  VX4      pMÉS Pu                  W44       VPv                  ! \
        P                  P                  P                   .VO5/ VB pS Px                  '       dI   V\
        Pz                  P|                  P~                  P€                  J d   \
        P‚                  ! V4       \N        PP                  ! \
        Pr                  VV4      p\
        P„                  ! 4        \
        Ph                  ! V4        R R R 4       \S        R4       V\
        Pz                  P|                  P†                  P€                  J g3   V\
        Pz                  P|                  Pˆ                  P€                  J d¹   \‹        V4      ^8X  d©   \5        V^ ,          \        4      '       dŒ   \
        PŒ                  ! V^ ,          PŽ                  4      p\5        V\
        P�                  P’                  4      '       d;   VP”                  e-   VP”                  oR V3R llp\N        P–                  ! VX4       \˜        ;QJ d0    R \N        Pš                  ! X4       4       F  '       g   K   R
M%	  RM!! R \N        Pš                  ! X4       4       4      '       d3   V\
        Pz                  P|                  Pœ                  P€                  J d   V# \
        Pž                  P                   VP¢                  9   dt   V\
        Pz                  P|                  P¤                  P¦                  JdB   \
        P<                  P¨                  P«                  4       ;_uu_ 4        V! V/ VB  R R R 4       \­        WVV4      #   + '       g   i     EL¼; i  + '       g   i     EL¯; i  \
        P„                  ! 4        \
        Ph                  ! X4       i ; i  + '       g   i     ELÏ; i  + '       g   i     L‰; i)Nc               ó    € V ^8„  d   QhRRRR/# )r   r©   Úobjectr   r!   )r"   s   "r#   r$   Ú=FunctionalTensorMode.__torch_dispatch__.<locals>.__annotate__  s   € ÷ 	ñ 	�Fð 	˜vñ 	r%   c                óÚ   <€ \        V \        4      '       d   \        R 4      h\        V \        P                  4      '       d)   \        P
                  ! V 4      '       d   \        V S4      # V # )z*x must not be a FunctionalTensor in wrap())r›   r+   rZ   r'   r(   ru   )r©   rc   s   &€r#   ÚwrapÚ5FunctionalTensorMode.__torch_dispatch__.<locals>.wrap  sR   ø€ ô ˜!Ô-×.Ò.Ü$Ð%QÓRÐRÜ˜!œUŸ\™\×*Ò*¬u×/JÒ/JÈ1×/MÒ/MÜ'¨¨4Ó0Ð0ØˆHr%   c               ó    € V ^8„  d   QhRRRR/# )r   r©   r+   r   rm   r!   )r"   s   "r#   r$   rL    s   € ÷ 	ñ 	Ð&ð 	¨<ñ 	r%   c                ó   € V P                   # r9   )rn   )r©   s   &r#   ÚunwrapÚ7FunctionalTensorMode.__torch_dispatch__.<locals>.unwrap  s   € Ø—6‘6ˆMr%   )Úcan_auto_functionalizeÚdo_auto_functionalizeÚdo_auto_functionalize_v2)Úhandle_effectsÚhas_effectszfunc zE with effects should not have a kernel for Functionalize dispatch keyz?Functionalization should not already be enabled above this modeTzNFunctionalization should not already be enabled above this mode after dispatchc               ó    € V ^8„  d   QhRRRR/# )r   r�   rK  r   rS   r!   )r"   s   "r#   r$   rL  £  s   € ÷ Jñ J°ð J¸4ñ Jr%   c                óÞ   <€ \        V \        4      '       dV   \        P                  ! V P                  4      p\        V\        P
                  P                  4      '       d
   SVn        R # R # R # r9   )r›   r+   r'   rœ   rn   r)   r*   Údispatch_keys)r�   Ú	unwrappedÚinput_dispatch_keyss   & €r#   Úpreserve_dispatch_keysÚGFunctionalTensorMode.__torch_dispatch__.<locals>.preserve_dispatch_keys£  sX   ø€ Ü! #Ô'7×8Ò8Ü$)×$AÒ$AÀ#Ç(Á(Ó$K˜	Ü%Ø%¤u×'8Ñ'8×'CÑ'C÷ò ð 7J˜IÖ3ññ 9r%   c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir9   )r›   r+   )r;   r©   s   & r#   r=   Ú:FunctionalTensorMode.__torch_dispatch__.<locals>.<genexpr>¯  s"   é € ð á9�Aô ˜1Ô.×/Ð/Û9ùs   ‚F)Wr0   r•   r+   r–   rK   r'   rU   Ú_dispatch_has_kernelÚnameÚ	decomposeÚ*torch._higher_order_ops.auto_functionalizerT  rU  rV  Ú%_dispatch_has_kernel_for_dispatch_keyrW   rX   Útorch._export.configr�   r‚   Útorch._inductor.configr…   ÚcompilerÚis_exportingrƒ   r†   r›   Ú_opsr   Ú_libraryÚutilsÚis_outÚ
is_inplaceÚtorch._higher_order_ops.effectsrW  rX  rZ   r&  r/  ÚpytreeÚtree_map_onlyr]   Ú_dispatch_tls_local_include_setÚDispatchKeySetÚ_dispatch_tls_local_exclude_setÚremoverv   r   ÚPythonFunctionalizeAPIÚunwrap_tensorsÚwrap_tensorsÚ_ForceDispatchKeyGuardÚ#_functionalize_enable_reapply_viewsÚfxÚexperimentalÚproxy_tensorÚdisable_proxy_modes_tracingr(   Ú_sync_view_replay_annotationsÚ_op_dkr4   rB   r@   rC   rD   Ú_freeze_functional_tensorÚ_disable_functionalizationÚaliasr�   r—   rœ   rn   r)   r*   r[  Ú	tree_map_rF   Útree_leavesÚ
lift_freshÚTagÚinplace_viewÚtagsÚset_Úsource_TensorÚ_mode_utilsÚno_dispatchr   )rc   r3   r   rd   re   ÚrrN  rR  rT  rU  rV  Úexport_configÚinductor_configrW  rX  Úargs_unwrappedÚkwargs_unwrappedÚinclude_to_setÚexclude_to_setÚctxÚfully_unwrapped_argsÚfully_unwrapped_kwargsÚouts_unwrappedÚouts_wrappedÚold_apply_viewsÚinput_unwrappedr^  r]  s   f&&&&                      @r#   rŸ   Ú'FunctionalTensorMode.__torch_dispatch__è  sš  ù€ ð Š>ØˆFä)¨%×0Ò0Ü!Ð!ð Ô(×5Ñ5Ô5Ø×#Ñ# D°×7Ò7ô —‘×-Ñ-¨d¯i©i«k×:Ò:ç’Ø—N’N DÐ3¨FÑ3�ØœNÓ*Ø÷ ’à*÷ ÷
	ð 	õ	÷	
ñ 	
ñ "Ø÷
ó 
ä—(‘(×@Ñ@Ø�I‰I‹KœŸ™×-Ñ-×;Ñ;÷
ó 
÷ 9Ð8ß<Ð<ä�~‰~×*Ñ*×,Ò,à ×I×IÐIÙ3°D¸$ÀfÓMÐMá,¨T°4¸vÓFÐFà×<×<Ð<Ü˜4¤§¡×!6Ñ!6×7Ò7ä—N‘N×(Ñ(×/Ñ/°×5Ò5Ü—~‘~×+Ñ+×6Ñ6°t×<Ò<ñ 0°°dÀ&ÓIÐIÙ(¨¨t¸6ÓBÐBçOá�t×ÒÜ�x‰x×=Ñ=Ø—	‘	“œUŸX™X×1Ñ1×?Ñ?÷ò ô %Ø˜DŸI™I›K˜=Ð(mÐnóð ñ "Ø×+Ñ+¨T¯\©\¸4Àvóð ô ,2×+?Ò+?Ü˜f¨V nó,
Ñ(ˆÐ(ô 	)ØMô	
ô �H‰H×4Ñ4Ó6Ü�h‰h×%Ñ%¤e§h¡h×&:Ñ&:×&HÑ&HÓIõJð 	ô
 �H‰H×4Ñ4Ó6×=Ñ=Ü—‘×$Ñ$×2Ñ2óô ×3Ñ3õ4ð 	ô �dÔ/×0Ò0ô
 )Ó*ˆCØ#&×#5Ñ#5°dÓ#;Ð Ø%(×%7Ñ%7Øó&Ð"ñ "Ø%ðà(ñˆNð ×+Ñ+¨NÓ;ŠLô —‘×0Ñ0°À×PÕPð*Oä&+×&OÒ&OÐPTÓ&U�Oð Ô/×<Ñ<Ô<ô #ŸX™X×2Ñ2×?Ñ?×[Ñ[×]Õ]Ù-1°>Ð-VÐEUÑ-V˜N÷ ^ä'-×';Ò';Ü!ŸL™L¨$°ó(™ð ×:Ñ:¸4ÔHð *.¯ªÜ!ŸH™H×0Ñ0×>Ñ>ð*à+ò*ð /ñ*˜ð  Ÿ;Ÿ;˜;Ø#¤u§y¡y§~¡~×'=Ñ'=×'EÑ'EÓEÜ %× ?Ò ?ÀÔ OÜ'-×';Ò';Ü!ŸL™L¨$°ó(˜ô ×4Ò4Ô6Ü×=Ò=¸oÕN÷W QôZ 	)Ø\ô	
ð œŸ	™	Ÿ™×,Ñ,×4Ñ4Ó4Øœ5Ÿ9™9Ÿ>™>×0Ñ0×8Ñ8Ó8ä�D“	˜Q”Ü˜4 �7Ô$4×5Ò5ä#×;Ò;¸DÀ½G¿L¹LÓIˆOäØ#¤U×%6Ñ%6×%AÑ%A÷ò ð $×1Ñ1Ò=à&5×&CÑ&CÐ#÷Jð Jô × Ò Ð!7¸ÔF÷ “ñ ä×+Ò+¨LÔ9ó——’ñ ä×+Ò+¨LÔ9ó÷ ò ð ”u—y‘y—~‘~×0Ñ0×8Ñ8Ó8àÐô �I‰I×"Ñ" d§i¡iÔ/ØœEŸI™IŸN™N×/Ñ/×=Ñ=Ó=ä—‘×(Ñ(×4Ñ4×6Õ6Ù�dÐ%˜fÒ%÷ 7ô +¨4°v¸|ÓLÐL÷S —�ú÷j ^×]Ð]ûô4 ×4Ò4Ô6Ü×=Ò=¸oÕNú÷W Q×PÐPú÷| 7×6úsV   Â
a'Ñ%b?Ñ'A%bÓ	a;	ÓC8b×+b?á		cá'a8	á;bâ	bâ-b<â<b?â?c	ãc#	c               ó$   € V ^8„  d   QhRRRRRR/# )r   rd   r“   re   údict[str, Any]r   rS   r!   )r"   s   "r#   r$   r(  Ç  s(   € ÷ +#ñ +#àð+#ð ð+#ð 
ñ	+#r%   c                ó²  € \         P                  P                  \         P                  P                  P                  4      pVeÊ   \
        P                  ! W.4       F¬  p\        V\        4      '       g   K  \         P                  ! VP                  4      p VP                  P                  V,          pTP                   P"                  p\$        P&                  ! T4      ;_uu_ 4        \         P(                  ! T4       RRR4       K®  	  R# R#   \         d'    TP                  '       d   \        RT R24      Rh Kä  i ; i  + '       g   i     Kù  ; i)a  Sync FunctionalTensor args so view replay uses correct fx node metadata.

When functionalization encounters a mutation, it handles aliases by lazily
regenerating them at the first time they are next used. This is a problem when
plumbing user annotations during tracing: we want view ops from view replay to
have the same annotation the user specified on the original views. But view
replay happens the next time the alias is used (e.g.
second_op(alias_with_pending_mutation)), so the regenerated views would get the
metadata for second_op instead.

To fix this, we remember the node metadata from the original views and globally
set it when we lazily perform view replay. The globally set metadata will be
used to populate the fx node created for the replayed operation.
Nzcannot find z in tensor_tracker)r'   rU   r:  r­   ÚPROXYrq  r†  r›   r+   rœ   rn   ÚtracerÚtensor_trackerÚKeyErrorr   rž   ÚproxyÚnodeÚfx_tracebackÚset_current_replay_noder¶   )rc   rd   re   ÚmÚar\  Útracker_entryÚ	curr_nodes   &&&     r#   r€  Ú2FunctionalTensorMode._sync_view_replay_annotationsÇ  s  € ô& �H‰H×'Ñ'¬¯©×(FÑ(F×(LÑ(LÓMˆØŠ=Ü×'Ò'¨¨Ö7�Ü! !Ô%5×6Ò6ÙÜ!×9Ò9¸!¿&¹&ÓA�	ðà$%§H¡H×$;Ñ$;¸IÕ$F�Mð *×/Ñ/×4Ñ4�	Ü!×9Ò9¸)×DÕDÜ—K’K ”N÷ EÑDó+ 8ñ øô  ô ð !×.×.Ð.Ü*Ø*¨9¨+Ð5GÐHóà#ð$ò ðú÷ E×DÐDús$   ÂDÃ*EÄEÄ.EÅEÅEc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r3   r   rd   r“   re   rŸ  r   r    r!   )r"   s   "r#   r$   r(  ô  s8   € ÷ Fñ FàðFð ðFð ð	Fð
 
ñFr%   c                	ó–   € \        WP                  V P                  4      pVe   V# \        P                  ! W#34      w  rV\        W4      # r9   )rO   r4   r5   rq  Útree_flattenr   )rc   r3   rd   re   ÚresultÚflat_args_kwargsri   s   &&&&   r#   rK   Ú#FunctionalTensorMode._can_decomposeô  sH   € ô % T¯;©;¸×8IÑ8IÓJˆØÒØˆMô %×1Ò1°4°.ÓAÑÐÜ-¨dÓEÐEr%   c               ó   € V ^8„  d   QhRR/# r»   r!   )r"   s   "r#   r$   r(    s   € ÷ ñ ˜dñ r%   c                	ó   € R # )Tr!   )r‹   s   &r#   Úis_infra_modeÚ"FunctionalTensorMode.is_infra_mode  s   € ár%   )r&  r.  r'  r  r‰   r/  r0  r,  r4   r+  r5   )FFFTrý   )rþ   rÿ   r   r  r*  r>  rF  rŸ   r€  rK   Úclassmethodr¶  r!  r"  r#  s   @r#   rr   rr   £  sJ   ø† ÷%(ò %(÷Pð ÷$8ð 8÷]Mõ~+#õZFð$ ôó ör%   rr   c               ó   € V ^8„  d   QhRR/# )r   r   zGenerator[None, None, None]r!   )r"   s   "r#   r$   r$     s   € ÷ Jñ JÐ!<ñ Jr%   c                 ó\   € \        \        P                  P                  P                  4      # r9   )r   r'   rU   r­   r®   r!   r%   r#   Údisable_functional_moder»    s   € äœuŸx™x×=Ñ=×HÑHÓIÐIr%   Úpropagate_input_mutationsFc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r3   r`   rq   rr   r¼  r    r   r!   )r"   s   "r#   r$   r$     s0   € ÷ 3ñ 3Ø
ð3à
ð3ð  $ð	3ð
 ñ3r%   c               óB   a aaaa€ R  R loR R loR VV VVV3R llpV# )c               ó    € V ^8„  d   QhRRRR/# ©r   r.   rK  r   r!   )r"   s   "r#   r$   Ú,dispatch_functionalize.<locals>.__annotate__   s   € ÷ ñ �&ð ˜Vñ r%   c                óp   € \        V \        P                  4      '       d   \        P	                  V 4      # V # r9   )r›   r'   r(   r+   r²   ©r.   s   &r#   Úto_funÚ&dispatch_functionalize.<locals>.to_fun   s)   € Ü�aœŸ™×&Ò&Ü#×1Ñ1°!Ó4Ð4Øˆr%   c               ó    € V ^8„  d   QhRRRR/# rÀ  r!   )r"   s   "r#   r$   rÁ  %  s   € ÷ 
5ñ 
5�Fð 
5˜vñ 
5r%   c                ó,  € \        V \        4      '       gJ   \        V \        P                  4      '       d(   \        P                  ! V 4      '       d   \        R 4      hV # \        P                  ! V 4       \        P                  ! V P                  4      # )zCNon-FunctionalTensor torch.Tensor should not be a functional tensor)	r›   r+   r'   r(   ru   rZ   r¶   rœ   rn   rÃ  s   &r#   Úfrom_funÚ(dispatch_functionalize.<locals>.from_fun%  si   € Ü˜!Ô-×.Ò.ä˜!œUŸ\™\×*Ò*Ü×.Ò.¨q×1Ò1Ü(Ø]óð ð ˆHÜ�Š�AŒÜ×,Ò,¨Q¯V©VÓ4Ð4r%   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rd   r   re   r   r!   )r"   s   "r#   r$   rÁ  1  s!   € ÷ ñ �Sð  Cð ¨Cñ r%   c            	     óJ  <€ \         P                  P                  \         P                  P                  \         P                  P                  P
                  4      4      p. p. pT;_uu_ 4        S;_uu_ 4        \        P                  ! \         P                  SV 4      p\        P                  ! \         P                  SV4      pS'       d-   \        P                  ! V / VB p\        P                  ! V/ VB pS! V/ VB p\        P                  ! \        SV4      pR R R 4       S'       dE   ^ RIHp	 \        W44       F/  w  r«\        V\        4      '       g   K  V	! W«P                  4       K1  	  XuuR R R 4       #   + '       g   i     Lh; i  + '       g   i     R # ; i)N)Ú$_propagate_functional_input_mutation)r'   rU   Ú_ExcludeDispatchKeyGuardrt  rW   rX   rq  rr  r(   Úarg_tree_leavesr+   Útorch._C._functorchrÌ  Úzipr›   rn   )rd   re   Údisable_aboveÚflat_inputsÚflat_func_inputsÚ	func_argsÚfunc_kwargsÚfunc_outputsÚoutputsrÌ  r<   Úfunc_argrÈ  r3   rq   r¼  rÄ  s   *,          €€€€€r#   rï   Ú%dispatch_functionalize.<locals>.inner1  s)  ø€ ÜŸ™×9Ñ9Ü�H‰H×#Ñ#¤E§H¡H×$8Ñ$8×$FÑ$FÓGó
ˆð "$ˆØ&(ÐßŠ]ß’Ü"×0Ò0´·±¸vÀtÓL�	Ü$×2Ò2´5·<±<ÀÈÓP�ß,ä"(×"8Ò"8¸$Ð"IÀ&Ñ"I�KÜ'-×'=Ò'=¸yÐ'XÈKÑ'XÐ$Ù# YÐ>°+Ñ>�Ü ×.Ò.Ô/?ÀÈ<ÓX�÷ ÷ )ÝTô &)¨Ö%G‘M�CÜ! (Ô,<×=Ô=Ù<¸SÇ-Á-ÖPñ &Hð ÷' Š]ß—ú÷ �]ˆ]ús1   Á.FÁ9B%E>	ÄFÄ.)FÅFÅ>FÆ	FÆF"	r!   )r3   rq   r¼  rï   rÈ  rÄ  s   ffd @@r#   Údispatch_functionalizerÚ    s   ü€ õõ

5÷ô ð6 €Lr%   c                  óž   € ] tR tRt]R R l4       t]R R l4       t]R R l4       t]R R	 l4       tR
 R lt	R R lt
R R ltR R ltRtR# )ÚBaseFunctionalizeAPIiO  c               ó    € V ^8„  d   QhRRRR/# ©r   rd   r“   r   r!   )r"   s   "r#   r$   Ú!BaseFunctionalizeAPI.__annotate__Q  s   € ÷ ñ  ð °_ñ r%   c                	ó   € R # r9   r!   ©rc   rd   s   &&r#   ry  Ú!BaseFunctionalizeAPI.wrap_tensorsP  ó   € ár%   c               ó    € V ^8„  d   QhRRRR/# )r   rd   ú'torch.Tensor | tuple[torch.Tensor, ...]r   r   r!   )r"   s   "r#   r$   rß  U  s   € ÷ ñ Ð#Jð Èsñ r%   c                	ó   € R # r9   r!   rá  s   &&r#   rx  Ú#BaseFunctionalizeAPI.unwrap_tensorsT  rã  r%   c               ó    € V ^8„  d   QhRRRR/# )r   Úinner_fr`   r   r!   )r"   s   "r#   r$   rß  Y  s   € ÷ ñ Ð%7ð Ð<Nñ r%   c                	ó   € R # r9   r!   ©rc   ré  s   &&r#   ÚfunctionalizeÚ"BaseFunctionalizeAPI.functionalizeX  rã  r%   c               ó   € V ^8„  d   QhRR/# ©r   r   zAbstractContextManager[None]r!   )r"   s   "r#   r$   rß  ]  s   € ÷ ñ Ð$@ñ r%   c                	ó   € R # r9   r!   r·   s   &r#   Úredispatch_to_nextÚ'BaseFunctionalizeAPI.redispatch_to_next\  rã  r%   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   Úinput_tensorrm   Úoutput_tensorr   rS   r!   )r"   s   "r#   r$   rß  `  s'   € ÷ Bñ B Lð BÀð BÐRVñ Br%   c                	ó2   € \         P                  ! W4       R # r9   )r'   rÂ   )rc   rõ  rö  s   &&&r#   ÚreplaceÚBaseFunctionalizeAPI.replace`  s   € Ü×$Ò$ \ÖAr%   c               ó    € V ^8„  d   QhRRRR/# ©r   Útensorrm   r   rS   r!   )r"   s   "r#   r$   rß  c  s   € ÷ 3ñ 3 Lð 3°Tñ 3r%   c                	ó2   € \         P                  ! V4       R # r9   )r'   rÈ   ©rc   rü  s   &&r#   rÉ   Ú"BaseFunctionalizeAPI.commit_updatec  s   € Ü×*Ò*¨6Ö2r%   c               ó    € V ^8„  d   QhRRRR/# rû  r!   )r"   s   "r#   r$   rß  f  s   € ÷ *ñ *˜<ð *¨Dñ *r%   c                	ó2   € \         P                  ! V4       R # r9   )r'   rÍ   rþ  s   &&r#   rÎ   ÚBaseFunctionalizeAPI.syncf  s   € Ü×!Ò! &Ö)r%   c               ó    € V ^8„  d   QhRRRR/# rû  r!   )r"   s   "r#   r$   rß  i  s   € ÷ Hñ H¸ð HÈ$ñ Hr%   c                	ó2   € \         P                  ! V4       R # r9   )r'   rÒ   rþ  s   &&r#   rÓ   Ú7BaseFunctionalizeAPI.mark_mutation_hidden_from_autogradi  s   € Ü×?Ò?ÀÖGr%   r!   N)rþ   rÿ   r   r  r   ry  rx  rì  rñ  rø  rÉ   rÎ   rÓ   r!  r!   r%   r#   rÜ  rÜ  O  sl   † Øôó ðð ôó ðð ôó ðð ôó ðõBõ3õ*÷Hñ Hr%   rÜ  c                  ó¨   a € ] tR tRtRR V 3R llltR R ltR R ltR R	 ltR
 R lt]	R R l4       t
R R ltR R ltR R ltR R ltRtV ;t# )rw  im  c               ó$   € V ^8„  d   QhRRRRRR/# )r   rq   r7  r5   r    r   rS   r!   )r"   s   "r#   r$   Ú#PythonFunctionalizeAPI.__annotate__n  s$   € ÷ )ñ )Ø/ð)ØFJð)à	ñ)r%   c                	ób   <€ \         SV `  4        V'       d   TM	\        4       V n        W n        R # r9   )rÞ   r*  rr   rq   r5   )rc   rq   r5   rß   s   &&&€r#   r*  ÚPythonFunctionalizeAPI.__init__n  s%   ø€ ô 	‰ÑÔß ‘DÔ&:Ó&<ˆŒ	Ø(Ör%   c               ó    € V ^8„  d   QhRRRR/# ©r   rd   z
tuple[Any]r   r!   )r"   s   "r#   r$   r  u  s   € ÷ ñ  ð °
ñ r%   c                	óö   € V P                   ;_uu_ 4        \        P                  P                  P	                  \        P
                  \        P                  V4      uuR R R 4       #   + '       g   i     R # ; ir9   )rq   r'   rm  Ú_pytreerr  r(   r+   r²   rá  s   &&r#   ry  Ú#PythonFunctionalizeAPI.wrap_tensorsu  sA   € Ø�Y�Y‹YÜ—;‘;×&Ñ&×4Ñ4Ü—‘Ô.×<Ñ<¸dó÷ �Y�Y‹Yús   •AA'Á'A8	c               ó    € V ^8„  d   QhRRRR/# )r   rd   z<torch.Tensor | tuple[torch.Tensor, ...] | list[torch.Tensor]r   r   r!   )r"   s   "r#   r$   r  {  s   € ÷ 
ñ 
ØPð
à	ñ
r%   c                	ó|   € \         P                  P                  P                  \        \        P
                  V4      # r9   )r'   rm  r  rr  r+   r¸   rá  s   &&r#   rx  Ú%PythonFunctionalizeAPI.unwrap_tensors{  s/   € ô �{‰{×"Ñ"×0Ñ0ÜÔ.×>Ñ>Àó
ð 	
r%   c               ó    € V ^8„  d   QhRRRR/# ©r   ré  r   r   r!   )r"   s   "r#   r$   r  ƒ  s   € ÷ :ñ : Xð :°(ñ :r%   c                	ó,   € \        WP                  4      # r9   )rÚ  rq   rë  s   &&r#   rì  Ú$PythonFunctionalizeAPI.functionalizeƒ  s   € Ü% g¯y©yÓ9Ð9r%   c               ó   € V ^8„  d   QhRR/# rï  r!   )r"   s   "r#   r$   r  †  s   € ÷ (ñ (Ð$@ñ (r%   c                	ó,   € \         P                  ! 4       # r9   )Ú
contextlibÚnullcontextr·   s   &r#   rñ  Ú)PythonFunctionalizeAPI.redispatch_to_next†  s   € ô ×%Ò%Ó'Ð'r%   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rü  rm   rc  rR   r   r+   r!   )r"   s   "r#   r$   r  �  s"   € ÷ ñ  |ð ¸3ð ÐCSñ r%   c                	ód   € \        V \        4      '       g   \        V R \        V 4       24      hV # )z! must be a FunctionalTensor, got )r›   r+   rZ   Útype)rü  rc  s   &&r#   Ú_check_cast_functionalÚ-PythonFunctionalizeAPI._check_cast_functionalŽ  s7   € ä˜&Ô"2×3Ò3Ü Ø�&Ð9¼$¸v»,¸ÐHóð ð ˆr%   c               ó$   € V ^8„  d   QhRRRRRR/# rô  r!   )r"   s   "r#   r$   r  –  s"   € ÷ #ñ # Lð #Àð #ÐRVñ #r%   c                	óŽ   € V P                  VR 4      p\        V\        4      '       d   \        R4      hVP	                  V4       R# )rõ  z,output_tensor must not be a FunctionalTensorN)r  r›   r+   rZ   rÃ   )rc   rõ  rö  Úfts   &&& r#   rø  ÚPythonFunctionalizeAPI.replace–  s:   € Ø×(Ñ(¨°~ÓFˆÜ�mÔ%5×6Ò6Ü Ð!OÓPÐPØ
�‰�MÖ"r%   c               ó    € V ^8„  d   QhRRRR/# rû  r!   )r"   s   "r#   r$   r  œ  s   € ÷ Fñ F Lð F°Tñ Fr%   c                	óF   € V P                  VR 4      P                  4        R# ©rü  N)r  rÉ   rþ  s   &&r#   rÉ   Ú$PythonFunctionalizeAPI.commit_updateœ  s   € Ø×#Ñ# F¨HÓ5×CÑCÖEr%   c               ó    € V ^8„  d   QhRRRR/# rû  r!   )r"   s   "r#   r$   r  Ÿ  s   € ÷ =ñ =˜<ð =¨Dñ =r%   c                	óF   € V P                  VR 4      P                  4        R# r'  )r  rÎ   rþ  s   &&r#   rÎ   ÚPythonFunctionalizeAPI.syncŸ  s   € Ø×#Ñ# F¨HÓ5×:Ñ:Ö<r%   c               ó    € V ^8„  d   QhRRRR/# rû  r!   )r"   s   "r#   r$   r  ¢  s   € ÷ /ñ /¸ð /È$ñ /r%   c                	óF   € V P                  VR 4      P                  4        R# r'  )r  rÓ   rþ  s   &&r#   rÓ   Ú9PythonFunctionalizeAPI.mark_mutation_hidden_from_autograd¢  s   € Ø×#Ñ#Ø�Hó	
ç
,Ñ
,Ö
.r%   )rq   r5   )NF)rþ   rÿ   r   r  r*  ry  rx  rì  rñ  r  r  rø  rÉ   rÎ   rÓ   r!  r"  r#  s   @r#   rw  rw  m  sO   ø† ÷)ò )õõ
õ:õ(ð ôó ðõ#õFõ=÷/ó /r%   rw  c                  óF   € ] tR tRtR R ltR R ltR R ltR R	 ltR
tR# )ÚCppFunctionalizeAPIi¨  c               ó    € V ^8„  d   QhRRRR/# rÞ  r!   )r"   s   "r#   r$   Ú CppFunctionalizeAPI.__annotate__©  s   € ÷ >ñ > ð >°_ñ >r%   c                	ó"   € ^ RI Hp V! V^ R7      # ©r   )Ú_wrap_all_tensors_to_functional)Úlevel)Ú!torch._functorch.eager_transformsr5  ©rc   rd   r5  s   && r#   ry  Ú CppFunctionalizeAPI.wrap_tensors©  s   € ÝUá.¨t¸1Ô=Ð=r%   c               ó    € V ^8„  d   QhRRRR/# ©r   rd   rå  r   r!   )r"   s   "r#   r$   r2  ®  s    € ÷ Yñ YØ;ðYà	0ñYr%   c                	ó2   € ^ RI Hp V! V\        4       R7      # ©r   )Ú#_unwrap_all_tensors_from_functional)Úreapply_views)r7  r>  Ú_reapply_views©rc   rd   r>  s   && r#   rx  Ú"CppFunctionalizeAPI.unwrap_tensors®  s   € õ	
ñ 3°4Ä~ÓGWÔXÐXr%   c               ó    € V ^8„  d   QhRRRR/# r  r!   )r"   s   "r#   r$   r2  ¸  s   € ÷ 1ñ 1 Xð 1°(ñ 1r%   c                	ó@   € \         P                  P                  V4      # r9   )r'   r3   rì  rë  s   &&r#   rì  Ú!CppFunctionalizeAPI.functionalize¸  s   € Ü�z‰z×'Ñ'¨Ó0Ð0r%   c               ó   € V ^8„  d   QhRR/# rï  r!   )r"   s   "r#   r$   r2  »  s   € ÷ 
ñ 
Ð$@ñ 
r%   c                	ó¾   € \         P                  P                  \         P                  P                  \         P                  P                  P
                  4      4      # r9   )r'   rU   rÍ  rt  rW   rX   r·   s   &r#   rñ  Ú&CppFunctionalizeAPI.redispatch_to_next»  s;   € Ü�x‰x×0Ñ0Ü�H‰H×#Ñ#¤E§H¡H×$8Ñ$8×$FÑ$FÓGó
ð 	
r%   r!   N)	rþ   rÿ   r   r  ry  rx  rì  rñ  r!  r!   r%   r#   r0  r0  ¨  s   † õ>õ
Yõ1÷
ñ 
r%   r0  c                  óR   € ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltRt	R# )ÚFunctorchFunctionalizeAPIiÁ  c               ó    € V ^8„  d   QhRRRR/# )r   Úinterpreterr   r   rS   r!   )r"   s   "r#   r$   Ú&FunctorchFunctionalizeAPI.__annotate__Â  s   € ÷ 'ñ 'Ð$<ð 'Àñ 'r%   c                	ó   € Wn         R # r9   ©rL  )rc   rL  s   &&r#   r*  Ú"FunctorchFunctionalizeAPI.__init__Â  s   € Ø&Ör%   c               ó    € V ^8„  d   QhRRRR/# r  r!   )r"   s   "r#   r$   rM  Å  s   € ÷ Uñ U ð U°
ñ Ur%   c                	óP   € ^ RI Hp V! WP                  P                  4       R7      # r4  )r7  r5  rL  r6  r8  s   && r#   ry  Ú&FunctorchFunctionalizeAPI.wrap_tensorsÅ  s   € ÝUá.¨t×;KÑ;K×;QÑ;QÓ;SÔTÐTr%   c               ó    € V ^8„  d   QhRRRR/# r;  r!   )r"   s   "r#   r$   rM  Ê  s   € ÷ 	
ñ 	
Ø;ð	
à	0ñ	
r%   c                	óP   € ^ RI Hp V! WP                  P                  4       R7      # r=  )r7  r>  rL  Úfunctionalize_add_back_viewsrA  s   && r#   rx  Ú(FunctorchFunctionalizeAPI.unwrap_tensorsÊ  s(   € õ	
ñ 3Ø× 0Ñ 0× MÑ MÓ Oô
ð 	
r%   c               ó    € V ^8„  d   QhRRRR/# r  r!   )r"   s   "r#   r$   rM  Ö  s   € ÷ 
ñ 
 Xð 
°(ñ 
r%   c                	ó’   € \         P                  P                  TV P                  P	                  4       '       d   R R7      # RR7      # )Úmutations_and_viewsÚ	mutations)rv  )r'   r3   rì  rL  rV  rë  s   &&r#   rì  Ú'FunctorchFunctionalizeAPI.functionalizeÖ  sQ   € Ü�z‰z×'Ñ'Øð ×#Ñ#×@Ñ@×BÒBð &ð (ó 
ð 	
ð
 !ð (ó 
ð 	
r%   c               ó   € V ^8„  d   QhRR/# rï  r!   )r"   s   "r#   r$   rM  à  s   € ÷ (ñ (Ð$@ñ (r%   c                	ó6   € V P                   P                  4       # r9   )rL  Úlowerr·   s   &r#   rñ  Ú,FunctorchFunctionalizeAPI.redispatch_to_nextà  s   € Ø×Ñ×%Ñ%Ó'Ð'r%   rO  N)
rþ   rÿ   r   r  r*  ry  rx  rì  rñ  r!  r!   r%   r#   rJ  rJ  Á  s!   † õ'õUõ
	
õ
÷(ñ (r%   rJ  c               ó    € V ^8„  d   QhRRRR/# )r   rü  rm   r   r!   )r"   s   "r#   r$   r$   ä  s   € ÷ ñ ¨ð ¸ñ r%   c                ór   € \        V \        4      '       d!   \        P                  ! V P                  4      # V # r9   )r›   r+   r'   rœ   rn   )rü  s   &r#   Úmb_unwrap_functional_tensorrc  ä  s*   € Ü�&Ô*×+Ò+Ü×,Ò,¨V¯[©[Ó9Ð9Ø€Mr%   )EÚ
__future__r   r  Ú	functoolsrL   r1  Úabcr   r   r   Útypingr   r   r	   Útyping_extensionsr
   ÚbuiltinsÚcollections.abcr   r   r   r   r   Útorch._functorch.pyfunctorchr   Ú
torch._opsr   r'   Útorch.fx.tracebackr|  Ú	tracebackr§  Útorch.utils._pytreerm  r  rq  Útorch._Cr   r@  r   r   Útorch._subclasses.meta_utilsr   Útorch.utils._python_dispatchr   r   r   r   r   Ú_loggingÚgetArtifactLoggerrþ   r,   r0   Ú	lru_cacherO   r]   rk   r(   r+   rr   Úcontextmanagerr»  rÚ  rÜ  rw  r0  rJ  rc  r!   r%   r#   Ú<module>rw     s=  ðÝ "ã Û Û Û ß #Ý -ß +Ñ +Ý "÷ Ûß=Ñ=Ý#åEÝ%ã ß )Ð )ß $Ð $Ý Kß KÝ 6÷õ ð —n‘n×6Ñ6°xÐARÓSÐ õ
$ð ×Ò˜SÔ!ô ó "ð õF"õ2ôh!�u—|‘|ô h!ôV	eÐ,ô eðP ×ÑôJó ðJñ "6Ó!7ñ3ð ',÷	3ð 3ôlH˜3ô Hô<8/Ð1ô 8/ôv
Ð.ô 
ô2 (Ð 4ô  (÷Fr%   