+
    ˜°³jòš  ã                  ó€  € ^ RI Ht ^ RI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HtHt ^ RIHtHtHtHtHtHtHtHt ^ R	IHt ]'       d   ^ R
IHt ]! RR7       ! R R4      4       t]! RR7       ! R R4      4       t]! RR7       ! R R4      4       t ]! RR7       ! R R4      4       t!R R lt"R R lt#R R lt$]! RR7       ! R R4      4       t%]! RR7       ! R R4      4       t&]! RR7       ! R R 4      4       t'R! R" lt(R# R$ lt)R%0t*0 R0mt+0 R1mt,R& R' lt-R2R( R) llt.R* R+ lt/R, R- lt0R2R. R/ llt1R# )3é    )ÚannotationsN)Ú	dataclass)ÚcastÚTYPE_CHECKING)Úlocal)Úcpp)Ú	BaseCTypeÚBindingÚ
NamedCTypeÚtensorListT)ÚBaseTyÚBaseTypeÚFunctionSchemaÚListTypeÚNativeFunctionÚNativeFunctionsViewGroupÚ
SchemaKindÚType)ÚIDENT_REGEX)ÚSequenceT)Úfrozenc                  ó,   € ] tR t^t$ R]R&   R]R&   RtR# )ÚSavedAttributer   ÚnctypeÚstrÚexpr© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    ÚV/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchgen/api/autograd.pyr   r      s   ‡ ð Óð ‡Ir%   r   c                  óT   € ] tR t^+t$ R]R&   R]R&   R]R&   R]R&   R]R&   R	]R
&   RtR# )Ú
Derivativer   ÚformulaÚoriginal_formulaútuple[str, ...]Ú	var_namesztuple[SavedAttribute, ...]Úsaved_inputsÚsaved_outputsúset[str]Únamed_gradientsr   Nr   r   r%   r&   r(   r(   +   s1   ‡ ð ƒLð Óð Óð -Ó,ð .Ó-ð ×r%   r(   c                  ó^   € ] tR t^Gt$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   R
]R&   RtR# )ÚForwardDerivativer   r)   r+   r,   ztuple[Type, ...]Ú	var_typesztuple[str, ...] | NoneÚrequired_inputs_fw_gradÚrequired_inputs_primalÚboolÚrequired_original_self_valueÚis_reusing_outplace_formular   Nr   r   r%   r&   r2   r2   G   s9   ‡ ð
 ƒLð Óð  Óð 4Ó3ð 3Ó2ð #'Ó&ð "&×%r%   r2   c                  ó¼   € ] tR t^ft$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   ]R R l4       tR R ltRtR# )ÚDifferentiabilityInfor   Únamer   Úfuncz
str | NoneÚopzSequence[Derivative]ÚderivativeszSequence[ForwardDerivative]Úforward_derivativeszSequence[SavedAttribute]Úall_saved_inputsÚall_saved_outputszSequence[str]Úavailable_named_gradientsr/   Úused_named_gradientszSequence[Binding]Úargs_with_derivativesÚnon_differentiable_arg_nameszlist[bool] | NoneÚoutput_differentiabilityzlist[str] | NoneÚ#output_differentiability_conditionsc               ó   € V ^8„  d   QhRR/# )é   Úreturnr6   r   )Úformats   "r&   Ú__annotate__Ú"DifferentiabilityInfo.__annotate__©   s   € ÷ 3ñ 3 ñ 3r%   c                	ó2   € \        V P                  4      ^ 8„  # )r   )ÚlenrD   ©Úselfs   &r&   Úhas_derivativesÚ%DifferentiabilityInfo.has_derivatives¨   s   € ä�4×-Ñ-Ó.°Ñ2Ð2r%   c               ó    € V ^8„  d   QhRRRR/# )rI   Úgr   rJ   úDifferentiabilityInfo | Noner   )rK   s   "r&   rL   rM   ±   s   € ÷ 
ñ 
Ø)ð
à	%ñ
r%   c                	óü  € VP                   f   R # VP                   pV P                  P                  R^R7      pV^ ,           R2RP                  VR,          4      ,           pV P                  f   R MV P                   R2p\        VVVV P                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  R7      # )NÚ.)Úmaxsplitz_copy.:é   NNÚ_copy©r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   )Ú	view_copyr;   ÚsplitÚjoinr=   r:   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   )rQ   rU   ÚfÚname_split_by_periodÚview_copy_nameÚview_copy_op_names   &&    r&   Ú%create_view_copy_from_view_derivativeÚ;DifferentiabilityInfo.create_view_copy_from_view_derivative±   sè   € ð �;‰;ÒÙØ�K‰Kˆà#Ÿy™yŸ™¨s¸Q˜Ó?Ðà0°Õ3Ð4°FÐ;¸c¿h¹hØ  Õ$ó?
õ 
ˆð %)§G¡G¢O™D¸D¿G¹G¸9ÀEÐ9JÐä$àØØ à×(Ñ(Ø $× 8Ñ 8Ø!×2Ñ2Ø"×4Ñ4Ø&*×&DÑ&DØ!%×!:Ñ!:Ø"&×"<Ñ"<Ø)-×)JÑ)JØ%)×%BÑ%BØ04×0XÑ0Xô
ð 	
r%   r   N)	r   r    r!   r"   r#   ÚpropertyrR   rd   r$   r   r%   r&   r:   r:   f   s„   ‡ ð ƒIð Óð
 	ƒNð &Ó%ð 5Ó4ð /Ó.ð 0Ó/ð  -Ó,ð #Ó"ð
 -Ó,ð #0Ó/ð 0Ó/ð *:Ó9àô3ó ð3÷
ñ 
r%   r:   c               ó$   € V ^8„  d   QhRRRRRR/# )rI   ÚinforV   Úidentr   rJ   r6   r   )rK   s   "r&   rL   rL   Ò   s"   € ÷ ñ Ð1ð ¸#ð À$ñ r%   c                ó¸   € V f   R# V P                    FC  pVP                  p\        P                  ! \        P
                  ! V4      V4      '       g   KB   R# 	  R# )NFT)r>   r)   ÚreÚsearchr   rK   )rh   ri   Ú
derivativer)   s   &&  r&   Ú
uses_identrn   Ò   sI   € Ø‚|ÙØ×&Ô&ˆ
Ø×$Ñ$ˆÜ�9Š9”[×'Ò'¨Ó.°×8Ô8Úñ 'ñ r%   c               ó    € V ^8„  d   QhRRRR/# ©rI   rh   rV   rJ   r6   r   )rK   s   "r&   rL   rL   Ü   s   € ÷ 0ñ 0Ð <ð 0Àñ 0r%   c                ó   € \        V R 4      # )Úretain_variables©rn   ©rh   s   &r&   Úuses_retain_variablesru   Ü   s   € Ü�dÐ.Ó/Ð/r%   c               ó    € V ^8„  d   QhRRRR/# rp   r   )rK   s   "r&   rL   rL   à   s   € ÷ $ñ $Ð7ð $¸Dñ $r%   c                ó   € \        V R 4      # )Úgradrs   rt   s   &r&   Úuses_single_gradry   à   s   € Ü�d˜FÓ#Ð#r%   c                  ó6   € ] tR t^ét$ R]R&   R]R&   R]R&   RtR# )ÚDifferentiableInputr   r;   r   ÚtypeÚcpp_typer   Nr   r   r%   r&   r{   r{   é   ó   ‡ à
ƒIØ
ƒJð ‡Mr%   r{   c                  ó6   € ] tR t^út$ R]R&   R]R&   R]R&   RtR# )ÚDifferentiableOutputr   r;   r   r|   r}   r   Nr   r   r%   r&   r€   r€   ú   r~   r%   r€   c                  ó6   € ] tR tRt$ R]R&   R]R&   R]R&   RtR	# )
Ú'NativeFunctionWithDifferentiabilityInfoi  r   r<   z'dict[str, DifferentiabilityInfo] | Nonerh   z-dict[str, Sequence[ForwardDerivative]] | NoneÚfw_derivativesr   Nr   r   r%   r&   r‚   r‚     s   ‡ à
ÓØ
1Ó1ØA×Ar%   r‚   c               ó    € V ^8„  d   QhRRRR/# )rI   Úfnr‚   rJ   r   r   )rK   s   "r&   rL   rL     s   € ÷ .ñ .ÐAð .Àcñ .r%   c                ó2  € V P                   P                  '       gy   V P                  em   \        ;QJ d4    R V P                  P	                  4        4       F  '       g   K   RM)	  RM%! R V P                  P	                  4        4       4      '       d   R# R# )aÃ  How are we going to call the underlying implementation of a
declaration?  There are two strategies:
    - use_derived: we want to call the implementation on CPUDoubleType
      (or a similar, derived Type instance).  Because these derived
      instances deal in Tensors, not Variables (it's a completely different
      object, so it doesn't dispatch back to VariableType), code on
      this dispatch path needs to wrap/unwrap tensors.  If the
      derived implementation takes and returns tensors, the
      implementation is usually differentiable (although we also use
      the derived dispatch path for non-differentiable functions
      that we still want to dispatch on the derived Type instance;
      e.g., size())
    - use_type: we want to call the implementation on Type, because
      it is implemented concretely, and the functions it invokes will
      get dispatched back to VariableType (which will ensure that they
      are differentiable.)
c              3  ó8   "  € T F  qP                   x € K  	  R # 5i©N)rR   ©Ú.0rh   s   & r&   Ú	<genexpr>Ú$dispatch_strategy.<locals>.<genexpr>"  s   é € Ð#VÑEU¸T×$8Ö$8ÓEUùs   ‚TFÚuse_derivedÚuse_type)r<   Úis_abstractrh   ÚanyÚvalues)r…   s   &r&   Údispatch_strategyr’     s^   € ð, 
‡w�w××ÐØ
�‰Ò§£Ñ#VÀRÇWÁWÇ^Á^ÔEUÓ#V§§¢Ñ#VÀRÇWÁWÇ^Á^ÔEUÓ#V× VÒ Vñ" ñ r%   c               ó    € V ^8„  d   QhRRRR/# )rI   r`   r   rJ   r6   r   )rK   s   "r&   rL   rL   <  s   € ÷ 9ñ 9�~ð 9¨$ñ 9r%   c                ót   € V P                   P                  P                  P                  P                  R 4      # )Ú	_foreach_)r<   r;   ÚbaseÚ
startswith)r`   s   &r&   Úis_foreach_funcr˜   <  s'   € Ø�6‰6�;‰;×Ñ× Ñ ×+Ñ+¨KÓ8Ð8r%   Ú_foreach_zero_c               ó$   € V ^8„  d   QhRRRRRR/# )rI   r`   r   Úfunction_schemar   rJ   r6   r   )rK   s   "r&   rL   rL   X  s&   € ÷ ñ Øðà#ðð 
ñr%   c                óä  € V P                   P                  P                  P                  P                  R 4      R,          VP                  P                  P                  8H  ;'       Edˆ    VP                  P                  P                  '       * ;'       g0    \        V P                   P                  4      \        9   ;'       Ed,    \        V P                   P                  4      \        9   ;'       gR    \        V P                   P                  P                  4      \        VP                  P                  4      8H  ;'       d­    \        ;QJ dX    R \        V P                   P                  P                  VP                  P                  4       4       F  '       d   K   R# 	  R# ! R \        V P                   P                  P                  VP                  P                  4       4       4      # )r•   c              3  ó†   "  € T F7  w  rVP                   VP                   \        VP                   R R4      39   x € K9  	  R# 5i)ÚelemN)r|   Úgetattr)rŠ   ÚargÚref_args   &  r&   r‹   Ú+is_reference_for_foreach.<locals>.<genexpr>g  s<   é € ð 
ñ!‘�ð �L‰L˜SŸX™X¤w¨s¯x©x¸ÀÓ'FÐGÖGó!ùs   ‚?AFTéÿÿÿÿ)r<   r;   r–   r^   Úinplacer   Ú_foreach_with_inplace_refÚ_skip_argument_len_checkrO   Ú	argumentsÚflat_non_outÚallÚzip)r`   r›   s   &&r&   Úis_reference_for_foreachr«   X  s|  € ð
 	
�‰�‰×Ñ×Ñ×#Ñ# KÓ0°Õ4¸×8LÑ8L×8QÑ8Q×8VÑ8VÑV÷ 	
ñ 	
à×$Ñ$×)Ñ)×1Ñ1Ô1÷ =ð =Ü�1—6‘6—;‘;ÓÔ#<Ñ<÷	
ñ 	
ô �—‘—‘ÓÔ 8Ñ8÷ ;ð ;Ü�1—6‘6×#Ñ#×0Ñ0Ó1Ü�?×,Ñ,×9Ñ9Ó:ñ;÷	
ð 	
÷ ‹Cñ 
ä #Ø—‘× Ñ ×-Ñ-Ø×)Ñ)×6Ñ6ô!ó
�CŒCðò ðð ñ 
ä #Ø—‘× Ñ ×-Ñ-Ø×)Ñ)×6Ñ6ô!ó
ó 
ðr%   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
rI   Úforeach_functionr   Úfunctional_info_by_signatureú6dict[FunctionSchema, dict[str, DifferentiabilityInfo]]Ú non_functional_info_by_signatureÚdispatch_keyr   rJ   z)tuple[DifferentiabilityInfo | None, bool]r   )rK   s   "r&   rL   rL   r  sC   € ÷ [ñ [Ø$ð[ð#ð[ð
'ð[ð ð[ð /ñ[r%   c                ór  € RpVP                  4        F&  w  rV\        W4      '       g   K  Wc,          pVf   K&   M	  Vf�   V P                  P                  4       \        P
                  8X  dc   \        V P                  P                  4      \        9   d;   VP                  4        F&  w  rV\        W4      '       g   K  Wc,          pVf   K&   M	  Vf   R# V P                  P                  4       \        P
                  8X  d   VR3# / / r‡\        \        V P                  P                  P                  XP                  P                  4      4       F.  w  p	w  r«V
P                  W{P                  &   W¨V
P                  &   K0  	  . . . ríp. p\        VP                  4       EF±  w  p	pVP                  P                  RR4      P                  RR4      p. . pp\         P"                  ! V P$                  V P&                  R7      ;_uu_ 4        VP(                   EF  pVP*                  P-                  R4      ^ ,          pVV,          p\/        VV,          P0                  \2        4      '       d   VR	,           pMTpVP*                  P                  VV4      pVP                  \5        \        VP6                  P                  4      V4      p\8        P:                  ! VV,          VR
7      p\=        VP                  VP0                  P?                  4       4      pVPA                  \C        VVR7      4       EK  	  VPD                   F]  pVP6                  P                  R8X  d7   VPA                  \C        \=        R\G        \H        4      R7      RR7      4       KT  \K        R4      h	  RRR4       VPL                   Uu. uF  pVV,          NK  	  ppVPO                  V4       VPO                  V4       VPO                  V4       \Q        VVP                  \S        V4      \S        V4      \S        V4      \U        4       R7      pVPA                  V4       EK´  	  \         P"                  ! V P$                  V P&                  R7      ;_uu_ 4        V P                  P                  P                   U
u. uFN  p
V
P                  V9   g   K  \W        V
P                  \8        P:                  ! WªP                  R
7      V
RR7      NKP  	  pp
RRR4       . p VPX                   EFÏ  p!\[        V!PL                  4      p\[        V!P\                  4      p". p#. p$V!P^                  e   \[        V!P^                  4      p#V!P`                  '       d   \[        V!P`                  4      p$V!P                  pRV9   d   V!P                  P                  RR4      p\        V P                  P                  P                  VP                  P                  P                  P                  4       EFt  w  p%p\/        V%P0                  \2        4      '       dP   V%P0                  Pc                  4       '       g0   VP                  VP                  V%P                  R	,           4      pEMJV%P0                  Pc                  4       '       dê   \/        V%P0                  \2        4      '       g   V%P0                  \e        \f        Ph                  4      8X  d)   \        V P                  P                  4      \j        9   g/   \m        V P                  P                   RV%P0                   24      hR FD  p&VP                  V&,           p'V'V9   g   K  V%P                  V&,           pVP                  V'V4      pKF  	  MAV%P                  VP                  8w  d'   VP                  VP                  V%P                  4      p\        V4       F7  w  p	p(V(VP                  8X  g   K  V%P                  VV	&   V%P0                  V"V	&   K9  	  \        V#4       F(  w  p	p(V(VP                  8X  g   K  V%P                  V#V	&   K*  	  \        V$4       F(  w  p	p(V(VP                  8X  g   K  V%P                  V$V	&   K*  	  EKw  	  V PA                  \o        V\S        V4      \S        V"4      \S        V#4      \S        V$4      V!Pp                  V!Pr                  R7      4       EKÒ  	  \u        V P                  P                  P                  Pv                  V RVPx                   V P                  P                  Pz                   2VV \S        \U        V4      4      \S        \U        V4      4      R\U        4       X. RRR7      R3#   + '       g   i     ELì; iu upi u up
i   + '       g   i     EL¬; i)z¸Generate DifferentiabilityInfo for out-place foreach function, return the existing one for in-place.

The second return value indicates whether the info is generated in this function.
NFrx   zgrads[i]Úresultz	result[i])Ú!use_const_ref_for_mutable_tensorsÚuse_ilistref_for_tensor_listsrX   z[i])Úbinds)r   r   )r;   r|   Ú )r)   r*   r,   r-   r.   r0   )r;   r   ÚargumentÚdefaultz, ©r)   r,   r3   r4   r5   r7   r8   ÚForeachr\   T©NF)Ú_pÚ_tr   )>Úitemsr«   r<   Úkindr   r¤   r   r;   r¥   Ú	enumeraterª   r§   r¨   r>   r)   Úreplacer   Úparametrizer´   Úpart_of_structured_groupr-   r   r^   Ú
isinstancer|   r   r   r   r   Úargument_typer   Úremove_const_refÚappendr   r.   r	   r   ÚRuntimeErrorr,   Úextendr(   ÚtupleÚsetr
   r?   Úlistr3   r4   r5   Úis_tensor_liker   r   ÚTensorÚ_foreach_with_tensor_overloadÚAssertionErrorr2   r7   r8   r:   r–   r=   Úoverload_name))r­   r®   r°   r±   Úref_diff_infor›   Ú	diff_infoÚmap_refarg2foreachargÚmap_name2argÚir    r¡   r@   rA   Úall_var_namesÚmodified_derivative_formulasrm   Úmodified_formular-   r.   Ú	ref_inputÚref_input_jit_nameÚmapped_nameÚmapped_exprÚnew_exprr   Úcanonical_nctypeÚ
ref_outputÚvarr,   Úmodified_derivativerD   r?   Úfw_derivativer3   r4   r5   Úforeach_argÚsuffixÚ	curr_exprr;   s)   &&&&                                     r&   Úgen_foreach_derivativeinforè   r  so  € ð 37€Mà&B×&HÑ&HÖ&JÑ"ˆÜ'Ð(8×JÒJÙØ!Õ/ˆØÔ$Ùñ 'Kð 	ÒØ×!Ñ!×&Ñ&Ó(¬J×,>Ñ,>Ô>ÜÐ ×%Ñ%×*Ñ*Ó+Ô/HÔHà*J×*PÑ*PÖ*RÑ&ˆOÜ+Ð,<×NÒNÙØ%Õ3ˆMØÔ(Ùñ +Sð ÒØÐð ×Ñ×!Ñ!Ó#¤z×'9Ñ'9Ô9Ø˜eÐ#Ð#à*,¨b˜<Ü&ÜØ×!Ñ!×+Ñ+×8Ñ8Ø×%Ñ%×2Ñ2ó	
öÑˆ‰>ˆCð /2¯h©hÐŸl™lÑ+Ø!$�S—X‘XÓñð :<¸RÀ¨ÐØ#%Ð Ü" =×#<Ñ#<×=‰ˆˆ:Ø%×-Ñ-×5Ñ5°f¸jÓI×QÑQØ�kó
Ðð ')¨"�mˆä×ÒØ.>×.`Ñ.`Ø*:×*SÑ*S÷
ö 
ð (×4Õ4�	Ø%.§^¡^×%9Ñ%9¸#Ó%>¸qÕ%AÐ"Ø3Ð4FÕG�Ü˜l¨;Õ7×<Ñ<¼h×GÒGØ"-°Õ"5‘Kà"-�KØ$Ÿ>™>×1Ñ1Ð2DÀkÓR�Ø#3×#;Ñ#;Üœ˜i×.Ñ.×3Ñ3Ó4°hó$Ð ô ×*Ò*¨<¸Õ+DÈKÔX�Ü#-Ø—K‘K §¡×!=Ñ!=Ó!?ó$Ð ð ×#Ñ#Ü"Ð*:ÀÔM÷ñ! 5ð& )×6Ô6�
Ø×$Ñ$×)Ñ)¨XÔ5Ø!×(Ñ(Ü&Ü#-Ø%-´I¼kÓ4Jô$ð "*ô	öô ' rÓ*Ð*ñ 7÷/
ðF <F×;OÒ;OÓPÑ;O°CÐ*¨3×/Ð/Ñ;Oˆ	ÐPØ×Ñ˜YÔ'Ø×Ñ Ô-Ø× Ñ  Ô/Ü(Ø$Ø'×/Ñ/Ü˜IÓ&Ü˜|Ó,Ü Ó.Ü›Eô
Ðð 	%×+Ñ+Ð,?×@ñk >ôn 
×	Ò	Ø*:×*\Ñ*\Ø&6×&OÑ&O÷
ö 
ð (×,Ñ,×6Ñ6×CÒCó	!
ñ D�Ø�x‰x˜=Ñ(ôŒGØ—X‘XÜ×(Ò(¨·H±HÔ=ØØ÷	ñ Dð 	ð 	!
÷	
ð 46Ðà&×:Õ:ˆÜ# M×$;Ñ$;Ó<ˆ	Ü $ ]×%<Ñ%<Ó =ˆ	Ø-/ÐØ,.ÐØ×0Ñ0Ò<Ü&*¨=×+PÑ+PÓ&QÐ#Ø×/×/Ð/Ü%)¨-×*NÑ*NÓ%OÐ"Ø(×0Ñ0Ðð Ð'Ô'Ø,×4Ñ4×<Ñ<¸XÀ{ÓSÐä$'Ø×!Ñ!×+Ñ+×8Ñ8Ø×Ñ×#Ñ#×-Ñ-×:Ñ:÷%
Ñ ˆK˜ô ˜;×+Ñ+¬X×6Ò6Ø#×(Ñ(×7Ñ7×9Ò9ð $4×#;Ñ#;Ø—L‘L +×"2Ñ"2°UÕ":ó$Ò ð ×!Ñ!×0Ñ0×2Ò2ô ˜{×/Ñ/´×:Ò:à#×(Ñ(¬H´V·]±]Ó,CÔCÜÐ 0× 5Ñ 5× :Ñ :Ó;Ü8ô9ô )Ø+×0Ñ0×5Ñ5Ð6°b¸×9IÑ9IÐ8JÐKóð ó +�FØ '§¡¨vÕ 5�IØ Ð$4Ö4Ø#.×#3Ñ#3°fÕ#<˜Ø+;×+CÑ+CÀIÈxÓ+XÒ(ò	 +ð ×#Ñ# w§|¡|Ô3Ø'7×'?Ñ'?ØŸ™ k×&6Ñ&6ó(Ð$ô
 % YÖ/‘��4Ø˜7Ÿ<™<Ö'Ø#.×#3Ñ#3�I˜a‘LØ#.×#3Ñ#3�I˜a“Lñ 0ô %Ð%<Ö=‘��4Ø˜7Ÿ<™<Ö'Ø1<×1AÑ1AÐ+¨AÓ.ñ >ô %Ð%;Ö<‘��4Ø˜7Ÿ<™<Ö'Ø0;×0@Ñ0@Ð*¨1Ó-ô =ñ]%
ðb 	×"Ñ"ÜØ(Ü 	Ó*Ü 	Ó*Ü(-Ð.EÓ(FÜ',Ð-CÓ'DØ-:×-WÑ-WØ,9×,UÑ,Uô÷
	
ñA ;ôZ 	Ø!×&Ñ&×+Ñ+×0Ñ0×5Ñ5Ø!Ø˜×)Ñ)Ð*Ð+;×+@Ñ+@×+EÑ+E×+SÑ+SÐ*TÐUØ4Ø 3Ü"¤3Ð'7Ó#8Ó9Ü#¤CÐ(9Ó$:Ó;Ø&(Ü!$£Ø"7Ø)+Ø%)Ø04ô	
ð 	ð!ð ÷]
÷ 
ð 
üòF Qùò$	!
÷	
÷ 
ð 
ús7   È
FfÎ:fÒ	#f%Ò,f Ó<f Ô f%æfæ f%æ%f6	c               ó$   € V ^8„  d   QhRRRRRR/# )rI   Únative_functionszlist[NativeFunction]Údifferentiability_infosr¯   rJ   z-list[NativeFunctionWithDifferentiabilityInfo]r   )rK   s   "r&   rL   rL   P  s+   € ÷ ~ñ ~Ø*ð~àSð~ð 3ñ~r%   c                óÌ	  aaa€ SP                  4        UUu/ uF=  w  r#VP                  4       \        P                  8X  g   K*  VP	                  RR7      VbK?  	  uppoSP                  4        UUu/ uF=  w  r#VP                  4       \        P                  8w  g   K*  VP	                  RR7      VbK?  	  uppoR VVV3R llp. pV  EF  pV! V4      w  r7VP
                  P                  4       \        P                  8X  d~   Vez   VP                  4        Fe  pVP                   FR  p	RV	P                  9   g   K  V	P                   F,  p
RV
P                  9   g   K  \        RVP
                   24      h	  KT  	  Kg  	  V'       g    VP                  \        VRRR	7      4       Kß  / pVP                  4        EFú  w  rÈVP                  '       g   . W¼&   K  VP                  pVP
                  P                  4       \        P                  8X  EdŸ   \!        VP                  4      ^8w  d"   \        R
\!        VP                  4       24      hVP                  ^ ,          pVP"                  pR R lp\$        P&                  ! \(        P*                  ! R4      V4      '       d>   V'       d$   \-        RVP
                  P.                   R24      hV! VR4      pV! VR4      pR R lp\$        P0                  ! \(        P*                  ! R4      VV4      pVP2                  p\$        P&                  ! \(        P*                  ! R4      V4      '       d   V'       d
   VR",           MR"pV'       g«   RpRpRpRp\$        P4                  ! RV4      pV'       dJ   VP7                  ^4      VP7                  ^4      ppR R lpV! V4      pT;'       d    VVP.                  8H  pV'       d+   Vf   \        R4      hVf   \        R4      hRV RV RV 2pMRV RV 2p\9        \$        P&                  ! \(        P*                  ! R4      V4      4      ;'       g5    \9        \$        P&                  ! \(        P*                  ! R 4      V4      4      p\;        VR"VP<                  VP>                  VVV'       * R!7      .pWÛV&   EKý  	  VP                  \        WcVR	7      4       EK  	  V# u uppi u uppi )#z¸Sets the "derivative" key on declarations to matching autograd function
In-place functions will use the out-of-place derivative definition if there
is no in-place specific derivative.
T©Ústrip_defaultc               ó    € V ^8„  d   QhRRRR/# )rI   r`   r   rJ   z4tuple[dict[str, DifferentiabilityInfo] | None, bool]r   )rK   s   "r&   rL   Ú2match_differentiability_info.<locals>.__annotate__d  s   € ÷ ;ñ ;Øð;à	=ñ;r%   c                óš  <€ R V P                   9   d0   V P                  P                  4       \        P                  8X  d   R
# V P                  S9   d   SV P                  ,          R3# V P                  P                  RR7      pVS9   d   \        V 4      '       g   SV,          R3# R V P                   9   d�   VS9   d†   SV,          p\        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      '       d#   \        R\        V P                  4       R24      hVR3# \        V 4      '       dw   V P                  S9   d$   \        RV P                  P                   R24      h\        V SS4      w  r4Vf   R
# R	V/pV'       d   VSV P                  &   VSV P                  &   WT3# R
# )Ú	generatedFTrí   c              3  ó²   "  € T FM  p\         ;QJ d&    R  VP                   4       F  '       g   K   RM	  RM! R  VP                   4       4      x € KO  	  R# 5i)c              3  óf   "  € T F'  pR \        VP                  P                  4      9   x € K)  	  R# 5i)rQ   N)r   r   r;   )rŠ   Úinputs   & r&   r‹   ÚLmatch_differentiability_info.<locals>.find_info.<locals>.<genexpr>.<genexpr>�  s&   é € ÐXÑBW¸�Fœc %§,¡,×"3Ñ"3Ó4Ö4ÓBWùs   ‚/1TFN)r�   r@   r‰   s   & r&   r‹   ÚBmatch_differentiability_info.<locals>.find_info.<locals>.<genexpr>€  sA   é € ð á.�D÷ “ÑXÀ$×BWÒBWÓX——’ÑXÀ$×BWÒBWÓX×XÐXÛ.ùs   ‚A’A°'AzvAttempted to convert a derivative formula for a mutable operator to be used automatically by its functional variant ("zU"). This is not currently supported (we'd need to fix up the formula in the codegen).zForeach function z# already has differentiability infoÚDefaultr¼   )Útagsr<   rÀ   r   ÚoutÚ	signaturer˜   r�   r‘   rÑ   r   r;   rè   )	r`   Úf_sigÚ	info_dictrÔ   Úis_generatedÚdiff_info_dictrë   r®   r°   s	   &     €€€r&   Ú	find_infoÚ/match_differentiability_info.<locals>.find_infod  sÈ  ø€ ð ˜!Ÿ&™&Ô  Q§V¡V§[¡[£]´j·n±nÔ%DØÐð �6‰6Ð,Ô,Ø*¨1¯6©6Õ2°DÐ8Ð8ð —‘× Ñ ¨tÐ Ó4ˆØÐ0Ô0¼È×9KÒ9KØ/°Õ6¸Ð=Ð=ð ˜!Ÿ&™&Ô  UÐ.NÔ%NØ8¸Õ?ˆIç‹sñ à%×,Ñ,Ô.ó�s�sŠsñ à%×,Ñ,Ô.ó÷ ò ô %ðLÜLOÐPQ×PVÑPVËKÈ=ð Yhðhóð ð
 ˜eÐ#Ð#ô ˜1×ÒØ�v‰vÐ0Ô0Ü$Ø'¨¯©¯© }Ð4WÐXóð ô 'AØØ,Ø0ó'Ñ#ˆIð
 Ò Ø"Ð"à'¨Ð3ˆNßØ2@Ð'¨¯©Ñ/Ø7EÐ,¨Q¯V©VÑ4Ø!Ð/Ð/àÐr%   NrQ   Ústrides_or_errorz`Calling '.strides()' in the 'self' derivative formula of an in-place function is not supported: )r<   rh   rƒ   z-Only single output inplace should exist, got c               ó$   € V ^8„  d   QhRRRRRR/# )rI   r)   r   ÚpostfixrJ   r   )rK   s   "r&   rL   rð   ß  s'   € ÷ Wñ W¸Sð WÈ3ð WÐSVñ Wr%   c                ór   a€ R  V3R llp\         P                  ! \        P                  ! RS 24      W 4      # )c               ó    € V ^8„  d   QhRRRR/# ©rI   Úmzre.Match[str]rJ   r   r   )rK   s   "r&   rL   Ú[match_differentiability_info.<locals>.replace_self_with_original_self.<locals>.__annotate__à  s   € ÷ Qñ Q ð Q°#ñ Qr%   c                óR   <€ V P                  ^4       RS V P                  ^4       2# )rZ   Úoriginal_self©Úgroup)r  r  s   &€r&   ÚreplÚSmatch_differentiability_info.<locals>.replace_self_with_original_self.<locals>.replà  s(   ø€ Ø"#§'¡'¨!£* ¨]¸7¸)ÀAÇGÁGÈAÃJÀ<ÐPÐPr%   rQ   )rk   Úsubr   rK   )r)   r  r  s   &f r&   Úreplace_self_with_original_selfÚEmatch_differentiability_info.<locals>.replace_self_with_original_selfß  s4   ø€ ÷Qð Qô Ÿ6š6¤+×"4Ò"4°t¸G¸9Ð5EÓ"FÈÓVÐVr%   Úself_pzThe formula for "zš" is using the original value of self that is being modified inplace. This would lead to wrong forward gradients. Please use "result" in the formula only.r½   r¾   c               ó    € V ^8„  d   QhRRRR/# r  r   )rK   s   "r&   rL   rð   õ  s   € ÷ =ñ =˜Mð =¨cñ =r%   c                óL   € V P                  ^4       RV P                  ^4       2# )rZ   r  r  )r  s   &r&   r  Ú*match_differentiability_info.<locals>.replõ  s#   € ØŸg™g a›j˜\¨°·±¸³
¨|Ð<Ð<r%   r³   Fzself_t.([\w]*)\((.*)\)c               ó    € V ^8„  d   QhRRRR/# )rI   Úsr   rJ   r6   r   )rK   s   "r&   rL   rð     s   € ÷ 	(ñ 	(¸sð 	(Àtñ 	(r%   c                ót   € ^pV  F/  pVR8X  d   V^,          pV^ 8X  d    R# VR8X  g   K&  V^,          pK1  	  R# )rZ   Ú)FÚ(Tr   )r  ÚlevelÚchs   &  r&   Úcheck_parens_nest_level_gt_zeroÚEmatch_differentiability_info.<locals>.check_parens_nest_level_gt_zero  s@   € Ø$%˜EÛ&' Ø#%¨¤9Ø$)¨Q¥J EØ',°¤zÚ/4Ø#%¨¦9Ø$)¨Q¥J¢Eñ '(ñ $(r%   z$op_name must be non-None for inplacez+between_parens must be non-None for inplacez"self_t_raw.defined() ? self_t_raw.z_(z) : z(self_t_raw.defined() ? self_t_raw.copy_(Úoriginal_self_pÚoriginal_self_trº   rP   ) r¿   rÀ   r   Ú
functionalrû   r<   r¤   r‘   r>   r,   r-   r   rÑ   rÈ   r‚   r?   rO   r)   rk   rl   r   rK   rÉ   r;   r  r5   Ú	fullmatchr  r6   r2   r3   r4   )rê   rë   Úschemarý   r   r³   r`   Úis_exact_matchrh   rm   Úsaved_inputÚfw_derivative_dictÚkeyr?   Úfw_infor)   r  r  Úrequired_primalsÚis_single_method_on_self_tÚdirectly_do_inplaceÚop_nameÚbetween_parensÚmatchr  r7   r®   r°   s   &f                        @@r&   Úmatch_differentiability_infor0  P  s¥  ú€ ð "9×!>Ñ!>Ô!@ô$á!@ÑˆFØ�;‰;‹=œJ×1Ñ1Ñ1ô 	8ˆ×Ñ tÐÓ,¨iÒ7Ù!@ò$Ð ð "9×!>Ñ!>Ô!@ô(á!@ÑˆFØ�;‰;‹=œJ×1Ñ1Ñ1ô 	8ˆ×Ñ tÐÓ,¨iÒ7Ù!@ò(Ð$÷;ò ;ðz =?€FÜˆÙ$-¨a£LÑ!ˆ	ð �6‰6�;‰;‹=œJ×.Ñ.Ô.°IÒ4IØ!×(Ñ(Ö*�Ø"&×"2Ô"2�JØ ×!5Ñ!5Ö5Ø+5×+BÔ+B˜KØ1°[×5EÑ5EÖEÜ&4ð%KØKLÏ6É6È(ð%Tó'"ð !"ó ,Có #3ñ +÷ Ø�M‰MÜ7Ø °dôôñ
 àEGÐØ"Ÿ™×*‰IˆCØ×+×+Ð+Ø*,Ð"Ñ'Ùà"&×":Ñ":Ðð �v‰v�{‰{‹}¤
× 2Ñ 2Õ2ô( �t×/Ñ/Ó0°AÔ5Ü(ðÜ" 4×#;Ñ#;Ó<Ð=ð?óð ð ×2Ñ2°1Õ5�Ø!Ÿ/™/�õWô —9’9œ[×/Ò/°Ó9¸7×CÒCß%ä*Ø/°·±·±¨}ð =Gð Góð ñ #BÀ'È4Ó"P˜Ù"AÀ'È4Ó"P˜õ=ô Ÿ&š&¤×!3Ò!3°HÓ!=¸tÀWÓM�à#*×#AÑ#AÐ Ü—9’9œ[×/Ò/°Ó9¸7×CÒCç8HÐ(¨9Ö4Èið %÷ &ð 27Ð.Ø*/Ð'Ø*.�GØ15�NÜŸLšLÐ)BÀGÓL�EßØ27·+±+¸a³.À%Ç+Á+ÈaÃ. ˜õ	(ñ 6UØ*ó6Ð2ð 7×OÐO¸7ÀdÇiÁiÑ;Oð ,÷ +Ø"š?Ü"0Ð1WÓ"XÐXØ)Ò1Ü"0Ø Mó#ð ð %GÀwÀiÈrÐR`ÐQaÐaeÐfmÐenÐ"o™ð %MÈWÈIÐUYÐZaÐYbÐ"c˜ä/3Ü—I’Iœk×0Ò0Ð1BÓCÀWÓMó0÷ 0Uð 0Uäœ"Ÿ)š)¤K×$6Ò$6Ð7HÓ$IÈ7ÓSÓTð -ô
 &Ø 'Ø"+Ø")×"3Ñ"3Ø07×0OÑ0OØ/?Ø5QØ8FÔ4Fôð
'Ð#ð ':˜sÔ#ñW +ðZ 	�‰Ü3ØÐ7Iô÷	
ñM ðX €Mùók$ùó
(s   —'SÁSÁ1'S ÂS c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rI   r;   r   r|   r   rh   rV   rJ   r6   r   )rK   s   "r&   rL   rL   Q  s,   € ÷ ñ Ø
ðØðØ!=ðà	ñr%   c                óf   € VP                  4       ;'       d    VR J ;'       g    WP                  9  # rˆ   )rÎ   rE   )r;   r|   rh   s   &&&r&   Úis_differentiabler3  Q  s7   € ð ×ÑÓ ÷ ð Ø�ˆ×EÐE˜×$EÑ$EÑEðr%   c               ó$   € V ^8„  d   QhRRRRRR/# )rI   r…   r‚   r(  r   rJ   zlist[DifferentiableOutput]r   )rK   s   "r&   rL   rL   Y  s$   € ÷ #0ñ #0Ø/ð#0Ø69ð#0àñ#0r%   c                ót  a€ V P                   pV P                  '       d   V P                  V,          MR o\        \        P                  ! V4      VP                   P
                  4       UUu. uFA  w  r4\        VVP                  \        P                  ! VRR7      P                  4       R7      NKC  	  pppS'       d   SP                  MR pVe°   \        V4      \        V4      8w  d%   \        R\        V4       R\        V4       R24      h. pRV9   d9   VP                   P                  4       \        P                  8X  d   \        R4      h\        We4       F   w  r‰V'       g   K  VP!                  V	4       K"  	  V# \#        \%        V3R	 lV4      4      p
\'        S4      '       d
   V
R
,          # V
# u uppi )NT)Úsymint)r;   r|   r}   z(The length of output_differentiability (z)), does not match the number of outputs (z).FzXoutput_differentiability=False for inplace operation (version_counter won't get updated)c                óF   <€ \        V P                  V P                  S4      # rˆ   )r3  r;   r|   )Úrrh   s   &€r&   Ú<lambda>Ú,gen_differentiable_outputs.<locals>.<lambda>w  s   ø€ Ô*¨1¯6©6°1·6±6¸4Ô@r%   :NrZ   N)r<   rh   rª   r   Úreturn_namesÚreturnsr€   r|   Úreturn_typer}   rF   rO   rÉ   rÀ   r   r¤   rÈ   rÍ   Úfilterry   )r…   r(  r`   r;   ÚretÚoutputsrF   Údifferentiable_outputsÚdifferentiableÚoutputÚ candidate_differentiable_outputsrh   s   &&         @r&   Úgen_differentiable_outputsrE  Y  s�  ø€ ð 	�‰€AØŸ7Ÿ7˜7ˆ2�7‰7�3Ž<¨€Dô œS×-Ò-¨aÓ0°!·&±&·.±.ÔAô+ñ B‰IˆDô 	ØØ—‘Ü—_’_ S°Ô6×?Ñ?ÓA÷	
ñ
 Bð ñ +÷ AE˜t×<Ò<È$ÐØÒ+ÜÐ'Ó(¬C°«LÔ8ÜØ:¼3Ð?WÓ;XÐ:Yð Z9Ü9<¸W»¸ÀbðJóð ð >@ÐØÐ,Ô,°·±·±³Ä*×BTÑBTÔ1TÜØjóð ô '*Ð*BÖ&LÑ"ˆNß‰~Ø&×-Ñ-¨fÖ5ñ 'Mð &Ð%Ü'+ÜÔ@À'ÓJó(Ð$ô ˜×ÒØ/°Õ3Ð3à/Ð/ùó=+s   Á,AF4>   ú_foreach_add.Tensorú_foreach_div.Tensorú_foreach_mul.Tensor>   ú_foreach_add.Scalarú_foreach_sub.Scalarú_foreach_add_.Scalarú_foreach_sub_.Scalarú_foreach_add.ScalarListú_foreach_sub.ScalarListú_foreach_add_.ScalarListú_foreach_sub_.ScalarList)rø   )2Ú
__future__r   rk   Údataclassesr   Útypingr   r   Útorchgenr   Útorchgen.apir   Útorchgen.api.typesr	   r
   r   r   Útorchgen.modelr   r   r   r   r   r   r   r   Útorchgen.utilsr   Úcollections.abcr   r   r(   r2   r:   rn   ru   ry   r{   r€   r‚   r’   r˜   r¥   rÐ   r¦   r«   rè   r0  r3  rE  r   r%   r&   Ú<module>rZ     si  ðÝ "ã 	Ý !ß &å Ý ß JÓ J÷	÷ 	ó 	õ '÷ Ý(ñ �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ6 �$Ô÷&ð &ó ð&ñ< �$Ô÷h
ð h
ó ðh
õVõ0õ$ñ �$Ô÷ð ó ðñ  �$Ô÷ð ó ðñ �$Ô÷Bð Bó ðBõ.õb9ð .Ð.Ð ò!Ð ò	Ð õ÷4[õ|~õB÷#0ñ #0r%   