Ë
    S²jb¢  ã                  ój  — U d dl mZ d dlZd dlmZmZ d dlmZmZ d dl	Z	d dl
mZ d dlmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$ d d	l%m&Z&m'Z' d d
l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4 d dl5m6Z6 erd dl7m8Z8 e9e:e*e:e;ef   f   e<e;   f   Z=i a>de?d<    e<e)«      Z@	 	 	 	 	 	 dd„ZA	 	 	 	 	 	 	 	 dd„ZBe$dd„«       ZC	 	 	 	 	 	 	 	 	 	 d d„ZD	 	 	 	 	 	 	 	 d!d„ZE	 	 	 	 	 	 	 	 	 	 	 	 	 	 d"d„ZF	 	 	 	 	 	 d#d„ZG	 	 	 	 	 	 	 	 	 	 	 	 d$d„ZHdZId%d„ZJ	 	 	 	 	 	 	 	 d&d„ZKd'd„ZLd(d„ZMy))é    )ÚannotationsN)ÚCounterÚdefaultdict)ÚAnyÚTYPE_CHECKING)Úcpp)Ú
DerivativeÚDifferentiabilityInfoÚForwardDerivativeÚSavedAttribute)Ú	BaseCTypeÚBindingÚboolTÚCppSignatureGroupÚlayoutTÚlongTÚ
NamedCTypeÚOptionalCTypeÚscalarTypeTÚSpecialArgNameÚstringTÚsymIntArrayRefTÚSymIntTÚtensorGeometryTÚtensorOptionsTÚtypeAndSizeTÚVectorCType)Úwith_native_function)Ú$get_grouped_by_view_native_functionsÚparse_native_yaml)ÚAUTOGRAD_KEYSÚFunctionSchemaÚNativeFunctionÚNativeFunctionsViewGroupÚOperatorNameÚ
SchemaKindÚTypeÚVariant)Ú	concatMapÚIDENT_REGEXÚsplit_name_params)Ú
YamlLoader)ÚSequencez$dict[tuple[str, str], DerivativeRet]Ú_GLOBAL_LOAD_DERIVATIVE_CACHEc                ó  — |D �ci c]#  }|j                   j                  j                  |“Œ% }}i }| j                  «       D ]³  }d }i }|j	                  «       D ]t  \  }}	|j                  |	j                  j                  j                  d «      }|�<|j                  �0|	j                  |«      }
|
€ŒX|
j                  j                  }|
||<   Œt n t        |«      dkD  sŒ�| vsŒ¢|€t        d«      ‚|||<   Œµ | j                  |«       y c c}w )Nr   z!Expected fn_schema to be non-None)ÚviewÚfuncÚnameÚvaluesÚitemsÚgetÚ	view_copyÚ%create_view_copy_from_view_derivativeÚlenÚAssertionErrorÚupdate)ÚinfosÚview_groupsÚgÚview_name_to_groupÚ
view_infosÚinfo_dispatch_dictÚmaybe_view_groupÚ!view_copy_differentiability_infosÚdispatch_keyÚinfoÚview_copy_infoÚ	fn_schemas               új/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torchgen/packaged/autograd/load_derivatives.pyÚadd_view_copy_derivativesrH   G   s1  € ð &1öHØ !ˆ�‰�‰×Ñ˜!ÑðHÐð Hð €Jà#Ÿl™l›nò FÐàÐØ,.Ð)Ø"4×":Ñ":Ó"<ò 
	ÑˆL˜$Ø1×5Ñ5°d·i±i·n±n×6IÑ6IÈ4ÓPÐØÐ+Ð0@×0JÑ0JÐ0VØ!%×!KÑ!KØ$ó"�ð "Ñ-Ø .× 3Ñ 3× 8Ñ 8�IØFTÐ5°lÒCáð
	ô Ð0Ó1°AÓ5¸)È5Ò:PàÐ Ü$Ð%HÓIÐIà$EˆJ�yÒ!ð-Fð0 
‡L�L�Õùò=Hs   …(D	c                ó€  — | |f}|t         v�r—t        | «      5 }t        j                  |t        ¬«      }d d d «       t        ||«      j                  }t        |«      }t        d„ |«      }|D �	cg c]  }	t        |	t        «      r|	‘Œ }
}	t        t        «      }i }|D ]~  }||j                  j                  «          j                  |«       t!        |j                  «      |v r!t#        dt!        |j                  «      › �«      ‚||t!        |j                  «      <   Œ€ t%        t            «       }i }t'        «       }D ]N  }d|vr1|j)                  d«      }|j)                  dd «      }|d|idœ}|r||d<   t+        |||||«      \  }}|||<   ŒP t-        ||
«       ||ft         |<   t         |   S # 1 sw Y   �Œ{xY wc c}	w )	N)ÚLoaderc                ó^   — t        | t        «      r| gS t        | j                  d¬«      «      S )NT)Úinclude_copy)Ú
isinstancer#   ÚlistÚ	functions)r=   s    rG   ú<lambda>z"load_derivatives.<locals>.<lambda>|   s-   € Ü˜!œ^Ô,ð �c€ ä�a—k‘k¨t�kÓ4Ó5ð ó    zDuplicate function schema: Údispatchr2   Úoutput_differentiabilityÚDefault)r2   rR   )r.   ÚopenÚyamlÚloadr,   r    Únative_functionsr   r)   rM   r$   r   rN   r1   Ú	signatureÚappendÚstrr9   r   ÚsetÚpopÚcreate_differentiability_inforH   )Úderivatives_yaml_pathÚnative_yaml_pathÚtags_yaml_pathÚkeyÚfÚdefinitionsÚfuncsÚ!native_functions_with_view_groupsrX   r=   r<   Úfunctions_by_signatureÚfunctions_by_schemaÚfunctionÚ
op_counterr;   Úused_dispatch_keysÚ	defn_dictÚspecificationrS   r2   Úper_dispatch_diffinfoss                         rG   Úload_derivativesro   m   s  € ð
 !Ð"2Ð
3€CØ
Ô/Ò/ÜÐ'Ó(ð 	:¨AÜŸ)™) A¬jÔ9ˆK÷	:ô "Ð"2°NÓC×TÑTˆô -QÐQVÓ,WÐ)Ü$ñ6ð .ó	
Ðð 7ö
àÜ˜!Ô5Ô6ò ð
ˆð 
ô œÓð 	ð :<ÐØ(ò 	?ˆHØ" 8§=¡=×#:Ñ#:Ó#<Ñ=×DÑDÀXÔNÜ�8—=‘=Ó!Ð%8Ñ8Ü$Ð'BÄ3ÀxÇ}Á}ÓCUÐBVÐ%WÓXÐXØ6>Ð¤ H§M¡MÓ 2Ò3ð		?ô œS‘\“^ˆ
ð
 IKˆÜ'*£uÐØ$ò 	1ˆIà Ñ*Ø )§¡¨fÓ 5�Ø+4¯=©=Ø.°ó,Ð(ð &3ÀÈIÐ@VÑW�	Ù+Ø<T�IÐ8Ñ9Ü+HØØ&Ø#ØØ"ó,Ñ(ˆDÐ(ð 1ˆE�$ŠKð#	1ô& 	" %¨Ô5ð
 .3Ð4FÐ-FÔ% cÑ*ä(¨Ñ-Ð-÷I	:ñ 	:üò
s   ™F.Á/F;Æ.F8c                ó°   — t        j                  | d¬«      }|j                  �|j                  j                  «       S |j                  j                  «       S )NF)Úmethod)r   Úfrom_native_functionÚsymint_signatureÚ	argumentsrY   )rc   Úsigss     rG   Úcpp_argumentsrv   ¼   sH   € ä×1Ñ1°!¸EÔB€DØ×ÑÐ(Ø×$Ñ$×.Ñ.Ó0Ð0à�~‰~×'Ñ'Ó)Ð)rQ   c                ó@  — |}t        | «      D �cg c]  }|j                  j                  «       ‘Œ }}t        d„ t	        j
                  | «      D «       «      }t        d„ | j                  j                  D «       «      }t        ||«      D �	�
cg c]  \  }	}
t        |	|
«      ‘Œ }}	}
t        |||«      \  }}t        |||«      \  }}|D �	ch c]-  }	t        j                  t        j                  |	«      |«      r|	’Œ/ }}	t        |«      D ]s  }|t!        | j                  j                  «      k\  sŒ&t#        dt	        j$                  | j                  «      › d|› dt!        | j                  j                  «      › d�«      ‚ t'        ||||||¬«      S c c}w c c}
}	w c c}	w )Nc              3  ó.   K  — | ]  }|d k7  r|nd–— Œ y­w)ÚselfÚresultN© )Ú.0Úns     rG   ú	<genexpr>z$create_derivative.<locals>.<genexpr>Ð   s   è ø€ ÒU¸A˜a 6šk™¨xÓ7ÑUùs   ‚c              3  óf   K  — | ])  }t        j                  |d ¬«      j                  «       –— Œ+ y­w)T)ÚsymintN)r   Úreturn_typeÚremove_const_ref)r|   Úrs     rG   r~   z$create_derivative.<locals>.<genexpr>Ñ   s)   è ø€ ò Ø?@Œ�‰˜ $Ô'×8Ñ8×:ñùs   ‚/1z3Out of bounds grads access: derivative formula for z used grads[z ], but the forward only returns z	 outputs.)ÚformulaÚoriginal_formulaÚ	var_namesÚsaved_inputsÚsaved_outputsÚnamed_gradients)rv   Únctyper‚   Útupler   Úreturn_namesr1   ÚreturnsÚzipr   Úsaved_variablesÚreÚsearchr*   ÚformatÚused_gradient_indicesr8   ÚRuntimeErrorr2   r	   )rc   r„   r†   Úavailable_named_gradientsr…   Úart   rŒ   Úreturn_typesr2   ÚtypeÚnamed_returnsr‡   rˆ   Úused_named_gradientsÚis                   rG   Úcreate_derivativerœ   Å   s¨  € ð Ðä-:¸1Ó-=ö#Ø()ˆ�‰×!Ñ!Õ#ð#€Ið #ô ÑUÄ×AQÑAQÐRSÓATÔUÓU€LÜñ ØDEÇFÁFÇNÁNôó €Lô
 25°\À<Ó1P÷Ù#- 4¨Œ
�4˜Õð€Mñ ô ,¨G°YÀ	ÓJÑ€Gˆ\Ü,¨W°mÀYÓOÑ€Gˆ]ð .öàÜ�9‰9”[×'Ñ'¨Ó-¨wÔ7ò 	ðÐð ô # 7Ó+ò ˆØ”�A—F‘F—N‘NÓ#Ó#ÜØEÄcÇhÁhÈqÏvÉvÓFVÐEWð XØ˜SÐ @ÄÀQÇVÁVÇ^Á^ÓATÐ@UÐU^ð`óð ðô ØØ)ØØ!Ø#Ø,ôð ùò=#ùóùòs   �!FÂFÃ
2Fc           	     ó€  — |}d }| j                   j                  D ]%  }|j                  |v sŒ|€d}||j                  fz   }Œ' |€Ü|dk(  rrt	        | j                   j                  «      dk7  r+t        dt	        | j                   j                  «      › �«      ‚| j                   j                  d   j                  f}ne|D ]`  }t        j                  d|«      }t	        |«      dk(  sŒ(|€d}t        |d   «      }|| j                   j                  |   j                  fz   }Œb |€t        d«      ‚t        |||d d dd¬	«      S )
Nr{   )rz   é   z$Expected 1 return for 'result', got r   z^result(\d+)$z4No matching output for forward derivative definitionF©r„   r†   Ú	var_typesÚrequired_inputs_fw_gradÚrequired_inputs_primalÚrequired_original_self_valueÚis_reusing_outplace_formula)
r1   r�   r2   r˜   r8   r9   r�   ÚfindallÚintr   )	rc   r„   Únamesr†   r    rƒ   Úvar_nameÚresÚarg_idxs	            rG   Úcreate_forward_derivativer«   ô   sN  € ð €IØ)-€IØ�V‰V�^‰^ò .ˆØ�6‰6�YÒØÐ Ø�	Ø! Q§V¡V IÑ-‰Ið	.ð ÐØ˜Ò#Ü�1—6‘6—>‘>Ó" aÒ'Ü$Ø:¼3¸q¿v¹v¿~¹~Ó;NÐ:OÐPóð ð Ÿ™Ÿ™¨Ñ*×/Ñ/Ð1‰Ià%ò L�Ü—j‘jÐ!1°8Ó<�Ü�s“8˜q“=Ø Ð(Ø$&˜	Ü! # a¡&›k�GØ )¨Q¯V©V¯^©^¸GÑ-D×-IÑ-IÐ,KÑ K‘IðLð ÐÜÐSÓTÐTÜØØØØ $Ø#Ø%*Ø$)ôð rQ   c                óD  ‡ ‡‡‡‡— dˆˆˆ fd„}g }|D �]  }|j                   }	 ||	d«      }
|	dk(  �rW‰ j                  j                  «       t        j                  k(  r#t        d‰ j                  j                  › d�«      ‚t        ‰«      dk(  r)t        |«      dkD  st        |d   j                  «      dkD  rt        d‰› d	�«      ‚t        |«      dk(  st        d‰› d
�«      ‚|d   j                  }‰d   j                  Šdˆfd„}t        j                  t        j                  d«      ||«      }‰D ]>  }|j                  Šdˆfd„}t        j                  t        j                  ‰«      ||«      }Œ@ d|› d�}t        |«      }
|}	�nR|	dk(  �rLt        |«      dkD  st        |d   j                  «      dkD  rt        d‰› d�«      ‚‰D �cg c]  }|j                  ‘Œ }}t        |«      dk(  rt        d«      ‚g }|D ]  Š‰|v r‰dz   Š|j!                  ‰«       Œ ‰ j                  j#                  «       r‰dz  Št$        j&                  ‰ j(                  v rd‰› ddj+                  |«      › d�}n^t$        j,                  ‰ j(                  vr"t        d‰ j                  j                  › �«      ‚|d   › d‰› ddj+                  |dd  «      › d�}t        |«      }
|}	 ||	d«      }|j!                  t/        |	|j                  |j0                  |
|dd¬«      «       �Œ |S c c}w )Nc                óî  •— ‰	j                   j                  j                  j                  j                  d«      }t	        «       }‰D ]¢  }|j
                  dv r|sŒ|j                  }t        j                  t        j                  |«      | «      }|rt        d‰› d|› d|› d|› d�	«      ‚t        j                  t        j                  ||z   «      | «      }|sŒ’|j                  |«       Œ¤ t        |«      S )NÚ	_foreach_)zat::TensorListzconst at::ITensorListRef &zThe forward formula for z is using the base name of the z- argument which is ambiguous. You should use z"_p to access the primal value and z_t to access the tangent.)r1   r2   ÚbaseÚ
startswithr\   r˜   r�   r‘   r*   r’   r”   Úaddr‹   )
r„   ÚpostfixÚ
is_foreachÚrequired_inputsÚargÚarg_nameÚfoundÚargs_with_derivativesÚ	defn_namerc   s
          €€€rG   Úfind_required_inputsz=postprocess_forward_derivatives.<locals>.find_required_inputs%  sö   ø€ Ø—V‘V—[‘[×%Ñ%×*Ñ*×5Ñ5°kÓBˆ
Ü›%ˆØ(ò 	.ˆCà—‘ÐLÑLÙ"ð Ø—x‘xˆHä—I‘Iœk×0Ñ0°Ó:¸GÓDˆEÙÜ"Ø.¨y¨kÐ9XÐYaÐXbð cCØCKÀ*ð M!Ø!) 
Ð*CðEóð ô —I‘Iœk×0Ñ0°¸GÑ1CÓDÀgÓNˆEÚØ×#Ñ# HÕ-ð'	.ô* �_Ó%Ð%rQ   Ú_tÚauto_element_wisez"Cannot use auto_element_wise with z" because it is an in-place variantrž   r   úDerivative definition of z¸ in derivatives.yaml defines the forward definition of gradient as element_wise but this only works for functions with a single differentiable input and a single differentiable output.z  in derivatives.yaml defines the forward definition of gradient as element_wise but it does not defines the gradient formula for its argument which is required.c                óR   •— | j                  d«      › ‰› d| j                  d«      › �S )Nrž   z	_t.conj()é   ©Úgroup)ÚmÚ
input_names    €rG   Úreplz-postprocess_forward_derivatives.<locals>.replj  s(   ø€ ØŸ'™' !›*˜ j \°¸1¿7¹7À1»:¸,ÐGÐGrQ   Úgradc                óR   •— | j                  d«      › ‰› d| j                  d«      › �S )Nrž   Ú_pr¿   rÀ   )rÂ   r¶   s    €rG   rÄ   z-postprocess_forward_derivatives.<locals>.repls  s(   ø€ ØŸg™g a›j˜\¨(¨°2°a·g±g¸a³j°\ÐBÐBrQ   ú(z).conj()Úauto_linearz� in derivatives.yaml defines the forward definition of gradient as linear but this only works for functions with a single differentiable output.z-Expected at least one differentiable argumentÚ_symintzat::z, ú)z(Expected Variant.method in variants for ú.rÇ   FrŸ   )r„   r[   r²   r[   Úreturnútuple[str, ...])rÂ   r   rÍ   r[   )r„   r1   Úkindr&   Úinplacer9   r2   r8   r†   r”   r…   r�   Úsubr*   r’   r‹   rZ   Ú
has_symintr(   ri   ÚvariantsÚjoinrq   r   r    )rc   r¹   Úall_arg_namesÚderivativesÚforward_derivativesr¸   rº   Úupdated_derivativesÚdefnr„   Úrequired_inputs_tangentÚbackward_formularÄ   Ú
fw_formularµ   Údiff_arg_namesÚnew_argsr¢   r¶   rÃ   s   ``   `            @@rG   Úpostprocess_forward_derivativesrß     so  ü€ ÷&ð4 46Ðà#ó @
ˆØ—,‘,ˆÙ"6°wÀÓ"EÐØÐ)Ó)Ø�v‰v�{‰{‹}¤
× 2Ñ 2Ò2Ü$Ø8¸¿¹¿¹¸ÐEgÐhóð ô Ð.Ó/°1Ò4ÜÐ*Ó+¨aÒ/ÜÐ*¨1Ñ-×7Ñ7Ó8¸1Ò<ä"Ø/°	¨{ð ;4ð 4óð ô �{Ó# qÒ(Ü"Ø/°	¨{ð ;Wð Wóð ð"  +¨1™~×>Ñ>ÐØ.¨qÑ1×6Ñ6ˆJõHô Ÿ™¤× 2Ñ 2°6Ó :¸DÐBRÓSˆJð -ò T�ØŸ8™8�õCô  ŸV™V¤K×$6Ñ$6°xÓ$@À$È
ÓS‘
ðTð ˜Z˜L¨Ð1ˆJô ',¨MÓ&:Ð#Ø ŠGØ˜Ó%äÐ'Ó(¨1Ò,ÜÐ*¨1Ñ-×7Ñ7Ó8¸1Ò<ä"Ø/°	¨{ð ;Ið Ióð ð 3HÖH¨3˜cŸh›hÐHˆNÐHÜ�>Ó" aÒ'Ü$Ð%TÓUÐUð ˆHØ)ò *�Ø˜~Ñ-Ø'¨$™�Hà—‘ Õ)ð	*ð �v‰v× Ñ Ô"Ø˜YÑ&�	ô ×Ñ 1§:¡:Ñ-Ø# I ;¨a°·	±	¸(Ó0CÐ/DÀAÐF‘
ä—>‘>¨¯©Ñ3Ü(ØBÀ1Ç6Á6Ç;Á;À-ÐPóð ð !)¨¡˜}¨A¨i¨[¸¸$¿)¹)ÀHÈQÈRÀLÓ:QÐ9RÐRSÐT�
ô ',¨NÓ&;Ð#Ø ˆGñ "6°g¸tÓ!DÐà×"Ñ"ÜØØŸ.™.ØŸ.™.Ø(?Ø'=Ø-2Ø,1ôö
	
ðm@
ðD Ðùòa Is   Ç
Lc                ó0   — |D ]  }|| vc S  t        d«      ‚)Nz Expected `names` to be non-empty)r”   )rÕ   r§   r2   s      rG   Ú is_forward_derivative_definitionrá   Æ  s*   € ð ò )ˆØ˜=Ð(Ò(ð)ä
Ð9Ó
:Ð:rQ   c                ó¶  ‡‡‡‡‡— 	 	 	 	 	 	 d#d„}d$d„Šd%d„Št         	 	 	 	 d&ˆˆˆˆˆfd„«       }| j                  d«      }t        |«      \  Š}| j                  dd«      Šd}	‰r4t        d„ ‰D «       «      r"t	        ‰«      d	k7  rt        d
|› d�«      ‚‰}	dgŠ|j                  |«      }
|
s9dj                  ˆfd„|j                  «       D «       «      }t        d|› d|› �«      ‚|
j                  j                  «       }||   }t	        |«      dk(  r<dj                  ˆfd„|j                  «       D «       «      }t        d|› d|› d|› �«      ‚ ||‰«      }dd„ t        |«      D «       v rt        d‰› d�«      ‚dd„ t        |«      D «       v rt        d‰› d�«      ‚i }| d   j                  «       D �]  \  }Š|dk7  r |t        vrt        d|› d |› d!t        › �«      ‚||vr|j                  |«        ||«      \  }}}}}t        «       }|D ]  }||j                  z  }Œ d}|r+t!        ‰«      }|dk7  r||z   }|› ||   › �}||xx   d	z  cc<   t#        ‰||||t%        |D ��cg c]  }|j&                  D ]  }|‘Œ Œ c}}«      t%        |D ��cg c]  }|j(                  D ]  }|‘Œ Œ c}}«      ||||‰|	¬"«      ||<   �Œ |j                  |fS c c}}w c c}}w )'z3Processes a single entry `defn` in derivatives.yamlr2   c           	     óš  — | D ]h  }|j                   j                  «       rŒ|j                   j                  «       rŒ9|t        |j                   j                  j                  «      k(  sŒf|c S  |dz   t        j                  | d   j                   «      k7  r2t        d|› dt        j                  | d   j                   «      › d�«      ‚| d   S )NÚ_r   z Expected inplace function name 'z	_', got 'ú')r1   Úis_functional_fnÚ	is_out_fnr[   r2   r   r9   )rO   r2   rc   s      rG   Úcanonical_functionz9create_differentiability_info.<locals>.canonical_function×  sµ   € ð ò 	ˆAà—F‘F×+Ñ+Õ-ØŸ™×(Ñ(Õ*ØœC §¡§¡× 0Ñ 0Ó1Ó1à’ð	ð �#‰:œŸ™ )¨A¡,×"3Ñ"3Ó4Ò4Ü Ø2°4°&¸	Ä#Ç(Á(È9ÐUVÉ<×K\ÑK\ÓB]ÐA^Ð^_Ð`óð ð ˜‰|ÐrQ   c                óD   — t        d„ | j                  d«      D «       «      S )z(Given "foo, bar", return ["foo", "bar"].c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­w©N)Ústrip)r|   Úxs     rG   r~   zEcreate_differentiability_info.<locals>.split_names.<locals>.<genexpr>ê  s   è ø€ Ò= 1�Q—W‘W—YÑ=ùó   ‚ú,)r‹   Úsplit)Ú	raw_namess    rG   Úsplit_namesz2create_differentiability_info.<locals>.split_namesè  s   € äÑ=¨	¯©¸Ó(<Ô=Ó=Ð=rQ   c           	     ó‚  — d}d}d}g }|D ]¬  }|j                   }|xs2 t        t        j                  t	        j
                  d«      |«      «      }|t        t        j                  t	        j
                  d«      |«      «      z  }|xs t        |j                  «      }|j                  t        |«      «       Œ® |t        |«      k  rt        d|› dt        |«      › d�«      ‚|t        |«      k(  }|r|dkD  rt        d| › d	�«      ‚|rt        |«      dhk(  rt        d| › d
�«      ‚|r|s|dkD  rt        d| › d�«      ‚yy)zÉ
        Check for some subtle mistakes one might make when writing derivatives.
        These mistakes will compile, but will be latent until a function is
        used with double backwards.
        Fr   rÅ   Úgradsznum_grads_uses (z) < len(used_grads_indices) (rË   r½   zx in derivatives.yaml illegally mixes use of 'grad' and 'grads'. Consider replacing occurrences of 'grad' with 'grads[0]'zÔ in derivatives.yaml solely refers to 'grads[0]'.  If the first output is indeed the only differentiable output, replace 'grads[0]' with 'grad'; otherwise, there is a likely error in your derivatives declaration.z‡ in derivatives.yaml illegally mixes use of "grad_RETURN_NAME" and "grad" or "grads[x]". Use only one method for identifying gradients.N)r„   Úboolr�   r¥   r*   r’   r8   r‰   Úextendr“   r9   r”   r\   )	r¹   rÖ   Ú	uses_gradÚnum_grads_usesÚuses_named_gradsÚused_grads_indicesÚdr„   Úonly_used_grads_indicess	            rG   Úcheck_grad_usagez7create_differentiability_info.<locals>.check_grad_usageì  s‹  € ð ˆ	ØˆØ ÐØ(*ÐØò 	FˆAØ—i‘iˆGØ!ò ¤TÜ—
‘
œ;×-Ñ-¨fÓ5°wÓ?ó&ˆIð œc¤"§*¡*¬[×-?Ñ-?ÀÓ-HÈ'Ó"RÓSÑSˆNØ/ÒJ´4¸×8IÑ8IÓ3JÐØ×%Ñ%Ô&;¸GÓ&DÕEð	Fð œCÐ 2Ó3Ò3Ü Ø" >Ð"2Ð2OÔPSÐTfÓPgÐOhÐhiÐjóð ð
 #1´CÐ8JÓ4KÑ"KÐá˜¨!Ò+ÜØ+¨I¨;ð 78ð 8óð ñ #¤sÐ+=Ó'>À1À#Ò'EÜØ+¨I¨;ð 7ð óð ñ ¡¨n¸qÒ.@ÜØ+¨I¨;ð 7=ð =óð ð /AÐrQ   c                ó   •— g }g }g }t        «       }t        | «      D �cg c]  }|j                  ‘Œ }}| j                  j                  D �cg c]  }|j                  ‘Œ }}‰xs# dgt        | j                  j                  «      z  }	t        | j                  j                  |	«      D �
�cg c]<  \  }
}|r5|
j                  �)|
j                  j                  «       rd|
j                  › �‘Œ> }}
}t        ‰j                  «       «      D ]Å  }‰|   } ‰|«      }|D ]4  }||v sŒ||v sŒt        d| j                  j                  › d|› d|› d�«      ‚ t        ||«      r|j                  t        | ||«      «       Œr|j                  «       j!                  «       dk(  r||z  }Œ™t#        | |||«      }|j                  |«       |t        |«      z  }ŒÇ |j%                  |«      }|rt'        d‰› d	|› �«      ‚t        | «      D �cg c]  }|j                  |v sŒ|‘Œ }}t)        | ‰||||«      } ‰‰|«       |||||fS c c}w c c}w c c}}
w c c}w )
NTÚgrad_z-While processing the derivative formula for 'z' wrt 'z', expected 'z/' to not be both an input arg and named return.Únon_differentiablezderivatives definition for zB have overlapped non_differentiable and differentiable variables: )r\   rv   r2   r1   r�   r8   rŽ   r˜   Úis_tensor_likeÚsortedÚkeysr9   rá   rZ   r«   Úlowerrì   rœ   Úintersectionr”   rß   )rc   rÖ   r×   Únon_differentiable_arg_namesÚargs_with_derivatives_setr–   rÕ   rƒ   Úall_ret_namesÚdifferentiabilityÚretÚdifferentiabler•   rñ   r„   r§   r2   Ú
derivativeÚoverlapr¸   rý   rÙ   r¹   rS   rò   s                       €€€€€rG   Úset_up_derivativesz9create_differentiability_info.<locals>.set_up_derivatives"  s¡  ø€ ð )+ˆØ79ÐØ24Ð$Ü.1«eÐ!ä)6°qÓ)9Ö: A˜Ÿ›Ð:ˆÐ:àŸF™FŸN™Nö
ØˆA�F‹Fð
ˆð 
ð 5ÒT¸¸ÄÀQÇVÁVÇ^Á^ÓATÑ8TÐô (+¨1¯6©6¯>©>Ð;LÓ'M÷	%
á#��^áà—‘Ð$à—‘×'Ñ'Ô)ð �C—H‘H�:Òð	%
Ð!ñ 	%
ô   §	¡	£Ó,ò 	<ˆIØ˜9‘oˆGÙ 	Ó*ˆEàò �Ø˜=Ò(¨T°]Ò-BÜ(ØGÈÏÉÏÉÀ}ÐT[Ð\`Ð[að b%Ø%) FÐ*Yð[óð ðô 0°¸uÔEØ#×*Ñ*Ô+DÀQÈÐQVÓ+WÕXà—=‘=“?×(Ñ(Ó*Ð.BÒBØ0°EÑ9Ñ0ä!2Ø˜7 EÐ+Dó"�Jð  ×&Ñ& zÔ2Ø-´°U³Ñ;Ñ-ð+	<ð. ,×8Ñ8Ð9UÓVˆÙÜØ-¨d¨Vð 41Ø18°	ð;óð ô % QÓ'ö!
Ø¨1¯6©6Ð5NÒ+NŠAð!
Ðð !
ô
 >ØØØØØØ!ó
Ðñ 	˜ KÔ0ð ØØ!Ø(Ø%ð
ð 	
ùòY ;ùò
ùó	%
ùòX!
s   ŸH;ÁI Â+AIÈIÈIrS   Nc              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrë   )rM   r[   )r|   Údiffs     rG   r~   z0create_differentiability_info.<locals>.<genexpr>�  s   è ø€ ò (Ø"&Œ
�4œ×ñ(ùrî   rž   zNot supported: for zÉ,output_differentiability must either be list[bool] or a list[str] where each str is a condition. In the case where it is a condition, we only support single-output functions. Please file us an issue. Tú
c              3  ón   •K  — | ],  \  }}t        j                  |j                  «      ‰k(  sŒ)|–— Œ. y ­wrë   )r   r2   r1   ©r|   ÚkÚvr¹   s      €rG   r~   z0create_differentiability_info.<locals>.<genexpr>ž  s.   øè ø€ ò 
Ù�!�Q¼¿¹À!Ç&Á&Ó9IÈYÓ9VŒAñ
ùs   ƒ*5®5z)could not find ATen function for schema: z .  Available signatures:
r   c              3  ój   •K  — | ]*  \  }}t        j                  |«      ‰k(  rt        |«      –— Œ, y ­wrë   )r   r2   r[   r  s      €rG   r~   z0create_differentiability_info.<locals>.<genexpr>¬  s1   øè ø€ ò 
á��1Ü�x‰x˜‹{˜iÒ'ô ��Fñ
ùs   ƒ03z3could not find ATen function for legacy signature: z corresponding to schema z9.  Please report a bug to PyTorch. Available signatures:
Úgrad_input_maskc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrë   ©r2   ©r|   r–   s     rG   r~   z0create_differentiability_info.<locals>.<genexpr>¸  s   è ø€ ÒF¨˜QŸV�VÑFùó   ‚zSchema for z� has an argument named grad_input_mask, but this name would be shadowed by our codegen. Please use a different name in native_functions.yaml.rz   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrë   r  r  s     rG   r~   z0create_differentiability_info.<locals>.<genexpr>¿  s   è ø€ Ò=˜q�A—F•FÑ=ùr  zy has an argument named result, but this is only allowed for outputs.Please use a different name in native_functions.yaml.rR   rT   zInvalid dispatch key z in derivatives.yaml for z, expected key to be one of )r2   r1   ÚoprÖ   r×   Úall_saved_inputsÚall_saved_outputsr•   rš   r¸   r  rS   Ú#output_differentiability_conditions)rO   zSequence[NativeFunction]r2   r[   rÍ   r#   )rñ   r[   rÍ   rÎ   )r¹   r[   rÖ   zSequence[Derivative]rÍ   ÚNone)rc   r#   rÍ   zituple[Sequence[Derivative], Sequence[ForwardDerivative], Sequence[Binding], Sequence[str], Sequence[str]])r   r]   r+   Úanyr8   r”   r5   rÔ   r4   r1   rY   rv   Ú_VALID_AUTOGRAD_KEYSr±   r\   r‰   Ú_create_op_prefixr
   Ú
dedup_varsr‡   rˆ   ) rl   rg   rh   rj   rk   rè   r  rm   rä   r   Úschema_functionÚavailrY   rO   Ú	canonicalÚdiffinfo_dictrb   rÖ   r×   r¸   r  r•   rš   rû   r  Ú	op_prefixr  rý   rÙ   r¹   rS   rò   s                               @@@@@rG   r^   r^   Î  së  ü€ ðØ+ðØ36ðà	óó">ó4ôl ða
Øða
ð
÷a
ð a
ó ða
ðH —M‘M &Ó)€MÜ$ ]Ó3�L€Iˆqð  )Ÿ}™}Ð-GÈÓNÐØ*.Ð'Ù¤Cñ (Ø*Bô(ô %ô Ð'Ó(¨AÒ-ÜØ% m _ð 5,ð -óð ð /GÐ+Ø$( 6Ð à)×-Ñ-¨mÓ<€OÙØ—	‘	ó 
Ø-×3Ñ3Ó5ô
ó 
ˆô Ø7¸°ð G)Ø).¨ð1ó
ð 	
ð  ×$Ñ$×.Ñ.Ó0€IØ& yÑ1€IÜ
ˆ9ƒ~˜ÒØ—	‘	ó 
à.×4Ñ4Ó6ô
ó 
ˆô
 ØAÀ)Àð M'Ø'4 oð 6&Ø&+ Wð.ó
ð 	
ñ # 9¨iÓ8€IØÑF¬]¸9Ó-EÔFÑFÜØ˜)˜ð %Dð Dó
ð 	
ð Ñ=¤M°)Ó$<Ô=Ñ=ÜØ˜)˜ð %Dð Dó
ð 	
ð €MØ˜zÑ*×0Ñ0Ó2ó 0
‰	ˆˆTØ�)Ò Ô+?Ñ ?ÜØ'¨ uÐ,EÀmÀ_ð U.Ü.BÐ-CðEóð ð Ð(Ñ(Ø×"Ñ" 3Ô'ñ ˜yÓ)ñ	
ØØØ!Ø(Ø%ô *-«ÐØò 	6ˆAØ  A×$5Ñ$5Ñ5Ñ ð	6ð ˆÙ Ü)¨)Ó4ˆIØ�iÒØ%¨™O�	Ø�;˜z¨)Ñ4Ð5Ð6ˆBØ�yÓ! QÑ&Ó!ä2ØØØØ#Ø 3Ü'Ø'×@�q°·±Ò@¨A’Ð@�Ó@óô )Ø'×A�q°·±ÒA¨A’ÐA�ÓAóð '@Ø!5Ø"7Ø)EØ%=Ø0Sô#
ˆ�cÓð=0
ðd �>‰>˜=Ð(Ð(ùó Aùó Bs   É#KÊKz(?:^|\W)grads\[(\d+)\]c                ón   — t        j                  t        | «      D �cg c]  }t        |«      ‘Œ c}S c c}w )z¤Determine a list of gradient indices (the i in grads[i]) that
    are used by the formula.

    >>> used_gradient_indices("foo(grads[0], grads[1])")
    [0, 1]
    )r�   r¥   ÚGRAD_INDEX_REGEXr¦   )r„   r›   s     rG   r“   r“   ÿ  s(   € ô ŸJ™JÔ'7¸ÓAÖB�qŒC��FÒBÐBùÒBs   �2c                ó*  ‡‡‡	‡
— dMˆfd„}ddd„ dœfddd„ d	„ d
œfddd„ d„ d
œfddd„ dœfddd„ d„ d„ dœfdd„ d„ dœfddd„ dœfddd „ dœfd!d"d#„ dœfd$d%d&„ dœfd'd(d)„ dœfd*d+d,„ dœfd-d.d/„ dœfd0d1d2„ dœfd3d4d5„ |d
œfd6d7d8„ dœfd9d:d;„ dœfg}g Š
d<| v sd=| v rt        d>d?| › �z   «      ‚t        j                  d@| «      st        j                  dA| «      rt        dBdC| › �z   «      ‚dD| v sdE| v rt        dFdG| › �z   «      ‚|D �]  }t        |j                  t
        «      r|j                  j                  n|j                  Š	|D ]3  \  }ŠdNˆˆ	ˆ
fdH„}t        j                  |j                  ‰	«      || «      } Œ5 |j                  t        t        t        «      «      k(  r!t        j                  dI‰	› dI�‰	› dJ‰	› dK�| «      } t        j                  t        j                  ‰	«      | «      sŒè‰
j                  t        |‰	¬L«      «       �Œ | t        ‰
«      fS )ONc                ó8   •— ‰| fk7  rt        d«      ‚d| › d| › d�S )NzˆReplacement for ".strides()" is currently only supported for single derivatives of the same tensor that ".strides()" is being called on.zstrides_or_error(z, "z"))r9   )r2   r†   s    €rG   Ústride_exprz$saved_variables.<locals>.stride_expr  s6   ø€ Ø˜˜ÒÜ ð8óð ð # 4 &¨¨D¨6°Ð4Ð4rQ   z{}.sym_sizes\(\)Ú
_sym_sizesc                ó4   — t        | t        t        «      «      S rë   ©r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>  ó   € ¤z°$¼	Ä/Ó8RÓ'S€ rQ   )ÚsuffixrŠ   z{}->sym_sizes\(\)Ú_sym_sizes_optc                óF   — t        | t        t        t        «      «      «      S rë   ©r   r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>$  ó   € ¤zØœ-¬	´/Ó(BÓCó(€ rQ   c                ó   — | › d| › d�S )Nz2.has_value() ? std::optional<c10::SymIntArrayRef>(z->sym_sizes()) : std::nulloptr{   r  s    rG   rP   z!saved_variables.<locals>.<lambda>'  s   € ¨ vÐ-_Ð`dÐ_eð  fCð  &D€ rQ   )r4  rŠ   Úexprz{}.sym_blocksize\(\)Ú_self_sym_blocksize_optc                óF   — t        | t        t        t        «      «      «      S rë   r7  r  s    rG   rP   z!saved_variables.<locals>.<lambda>/  r8  rQ   c                ó   — d| › d�S )Nz#at::sparse_csr::getSymIntBlockSize(rË   r{   r  s    rG   rP   z!saved_variables.<locals>.<lambda>2  s   € Ð'JÈ4È&ÐPQÐ%R€ rQ   z{}.options\(\)Ú_optionsc                ó4   — t        | t        t        «      «      S rë   )r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>:  s   € ¤z°$¼	Ä.Ó8QÓ'R€ rQ   zzeros_like\({}\)Ú_infoc                ó4   — t        | t        t        «      «      S rë   )r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>B  s   € ¤z°$¼	Ä,Ó8OÓ'P€ rQ   c                ó   — | S rë   r{   r  s    rG   rP   z!saved_variables.<locals>.<lambda>C  s   €  T€ rQ   c                ó   — | dz   S )Nz_info.zeros()r{   r  s    rG   rP   z!saved_variables.<locals>.<lambda>D  s   €  D¨?Ñ$:€ rQ   )r4  rŠ   r:  r©   z{}.sym_size\((-?\w+)\)c                óN   — d| j                  «       d   j                  dd«      › �S )NÚ_sym_argsize_r   ú-Úminus_)ÚgroupsÚreplace)rÂ   s    rG   rP   z!saved_variables.<locals>.<lambda>K  s%   €  m°A·H±H³J¸q±M×4IÑ4IÈ#ÈxÓ4XÐ3YÐ$Z€ rQ   c                ó4   — t        | t        t        «      «      S rë   ©r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>L  ó   € ¤z°$¼	Ä'Ó8JÓ'K€ rQ   z{}.numel\(\)Ú_numelc                ó4   — t        | t        t        «      «      S rë   ©r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>T  ó   € ¤z°$¼	Ä%Ó8HÓ'I€ rQ   z{}.sym_numel\(\)Ú
_sym_numelc                ó4   — t        | t        t        «      «      S rë   rK  r  s    rG   rP   z!saved_variables.<locals>.<lambda>\  rL  rQ   zto_args_sizes\({}\)Ú_args_sizesc           
     óX   — t        | t        t        t        t        «      «      «      «      S rë   )r   r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>d  s   € ¤zØœ+¤k´)¼EÓ2BÓ&CÓDó(€ rQ   zto_args_sizes_symint\({}\)Ú_args_sizes_symintc           
     óX   — t        | t        t        t        t        «      «      «      «      S rë   )r   r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>n  s   € ¤zØœ+¤k´)¼GÓ2DÓ&EÓFó(€ rQ   zto_args_scalartypes\({}\)Ú_args_scalartypesc                óF   — t        | t        t        t        «      «      «      S rë   )r   r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>x  s   € ¤zØœ+¤i´Ó&<Ó=ó(€ rQ   zTensorGeometry\({}\)Ú	_geometryc                ó4   — t        | t        t        «      «      S rë   )r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>‚  r3  rQ   z{}.scalar_type\(\)Ú_scalar_typec                ó4   — t        | t        t        «      «      S rë   )r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>‰  s   € ¤z°$¼	Ä+Ó8NÓ'O€ rQ   z
{}.dim\(\)Ú_dimc                ó4   — t        | t        t        «      «      S rë   rO  r  s    rG   rP   z!saved_variables.<locals>.<lambda>‘  rP  rQ   z{}.sym_strides\(\)Ú_sym_stridesc                ó4   — t        | t        t        «      «      S rë   r2  r  s    rG   rP   z!saved_variables.<locals>.<lambda>™  r3  rQ   z{}.layout\(\)Ú_layoutc                ó4   — t        | t        t        «      «      S rë   )r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>¢  rL  rQ   z{}.is_conj\(\)Ú
_conjugatec                ó4   — t        | t        t        «      «      S rë   )r   r   r   r  s    rG   rP   z!saved_variables.<locals>.<lambda>ª  rP  rQ   z.sizes()z	->sizes()zY.sizes() is not supported in derivative formulas. Instead, please use the SymInt version,z<.sym_sizes(), which returned a c10::SymIntArrayRef. formula=z\.size\([-]?\d+\)z->size\([-]?\d+\)z[.size(int) is not supported in derivative formulas. Instead, please use the SymInt version,z>.sym_size(int), which returned a c10::SymIntArrayRef. formula=z
.strides()z->strides()z[.strides() is not supported in derivative formulas. Instead, please use the SymInt version,z>.sym_strides(), which returned a c10::SymIntArrayRef. formula=c                óü   •— t        ‰d   «      r ‰d   | «      n‰d   }d‰v r ‰d   ‰«      n| j                  d«      }‰j                  t         ‰d   ‰|z   «      |¬«      «       d‰v r ‰d   ‰«      }|S ‰|z   S )Nr4  r:  r   rŠ   ©rŠ   r:  r©   )ÚcallablerÁ   rZ   r   )rÂ   r4  r:  ÚreplacementrD   r2   Úsaveds       €€€rG   rÄ   zsaved_variables.<locals>.replÌ  s�   ø€ ô *2°$°x±.Ô)A�N�D˜‘N 1Ô%ÀtÈHÁ~ð ð 39¸D±.˜L˜D ™L¨Ô.ÀaÇgÁgÈaÃj�Ø—‘Ü"Ø-˜t H™~¨d°V©mÓ<Ø!ôôð ˜D‘=Ø'2 t¨E¡{°4Ó'8�KØ&Ð&Ø˜f‘}Ð$rQ   z\bz/.has_value() ? std::optional<std::string_view>(z.value()) : std::nulloptrf  ©r2   r[   rÍ   r[   )rÂ   zre.Match[str]rÍ   r[   )r”   r�   r‘   rM   r2   r   rÑ   r’   r˜   r   r   r   r*   rZ   r   r‹   )r„   Únctypesr†   r/  ÚREPLACEMENTSrŠ   ÚregexrÄ   rD   r2   ri  s     `     @@@rG   r�   r�   	  s?  û€ õ
5ð  à&ÙSñð	
ð !à*ññ Dñð		
ð $à3ññ Sñð		
ð à$ÙRñð	
ð  à!ÙPÙ)Ù:ñ	ð	
ð &áZÙKñð	
ð à"ÙIñð	
ð  à&ÙKñð	
ð #à'ññð	
ð *à.ññð	
ð )à-ññð	
ð $à%ÙSñð	
ð "à(ÙOñð	
ð à ÙIñð	
ð "à(ÙSØ#ñð	
ð à#ÙKñð	
ð à&ÙIñð	
ðaW6€Lðt #%€Eà�WÑ ¨wÑ 6ÜØgØLÈWÈIÐVñWó
ð 	
ô 
‡y�yÐ% wÔ/´2·9±9Ø˜gô4ô ØiØNÈwÈiÐXñYó
ð 	
ð �wÑ -°7Ñ":ÜØiØNÈwÈiÐXñYó
ð 	
ð ó -ˆô !+¨6¯;©;¼Ô GˆF�K‰K×ÒÈVÏ[É[ð 	ð
 (ò 	@‰KˆE�4÷%ô" —f‘f˜UŸ\™\¨$Ó/°°wÓ?‰Gð'	@ð0 �;‰;œ-¬	´'Ó(:Ó;Ò;Ü—f‘fØ�d�V˜2�Ø�&ÐGÈÀvÐMeÐfØóˆGô �9‰9”[×'Ñ'¨Ó-¨wÕ7Ø�L‰LÜØ!ØôöðQ-ð^ ”E˜%“LÐ Ð rQ   c                ó®   — dj                  | j                  d«      D �cg c]  }|j                  «       ‘Œ c}«      }|dz   j                  dd«      S c c}w )aa  Takes a native function name converts to an op prefix name.

    Note that the "name" parameter must be the native function name
    without the optional variant suffix, so "add" instead of
    "add.out".

    OP names correspond to classes, hence the change to title case.

    Example::

        >>> _create_op_prefix("add")
        'AddBackward'
    Ú rä   ÚBackwardÚForwardBackward)rÔ   rð   ÚtitlerI  )r2   ÚpÚ
camel_cases      rG   r$  r$  õ  sI   € ð —‘¨T¯Z©Z¸«_Ö=¨˜!Ÿ'™'�)Ò=Ó>€JØ˜Ñ#×,Ñ,Ð->À
ÓKÐKùò >s   ŸAc                ó.  — t        «       }g }| D ]ƒ  }t        |j                  j                  t        «      r |j                  j                  j                  n|j                  j                  }||v rŒb|j                  |«       |j                  |«       Œ… |S rë   )r\   rM   rŠ   r2   r   r±   rZ   )ÚvarsÚseenri  Úvarr2   s        rG   r%  r%    s~   € Ü“U€DØ"$€EØò 	ˆô ˜#Ÿ*™*Ÿ/™/¬>Ô:ð �J‰J�O‰O× Ò à—‘—‘ð 	ð
 �4‰<ØØ�‰�ŒØ�‰�SÕð	ð €LrQ   )r;   z6dict[FunctionSchema, dict[str, DifferentiabilityInfo]]r<   zlist[NativeFunctionsViewGroup]rÍ   r!  )r_   r[   r`   r[   ra   r[   rÍ   ÚDerivativeRet)rc   r#   rÍ   úSequence[Binding])
rc   r#   r„   r[   r†   rÎ   r•   zSequence[str]rÍ   r	   )rc   r#   r„   r[   r§   rÎ   rÍ   r   )rc   r#   r¹   r[   rÕ   ú	list[str]rÖ   zlist[Derivative]r×   úlist[ForwardDerivative]r¸   rz  rÍ   r|  )rÕ   r{  r§   rÎ   rÍ   rõ   )rl   zdict[Any, Any]rg   z*dict[FunctionSchema, list[NativeFunction]]rh   zdict[str, NativeFunction]rj   zCounter[str]rk   zset[str]rÍ   z7tuple[FunctionSchema, dict[str, DifferentiabilityInfo]])r„   r[   rÍ   z	list[int])r„   r[   rk  zlist[NamedCType]r†   rÎ   rÍ   z&tuple[str, tuple[SavedAttribute, ...]]rj  )rv  úSequence[SavedAttribute]rÍ   r}  )NÚ
__future__r   r�   Úcollectionsr   r   Útypingr   r   rV   Útorchgen.apir   Útorchgen.api.autogradr	   r
   r   r   Útorchgen.api.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Útorchgen.contextr   Útorchgen.genr   r    Útorchgen.modelr!   r"   r#   r$   r%   r&   r'   r(   Útorchgen.utilsr)   r*   r+   Útorchgen.yaml_utilsr,   Úcollections.abcr-   r‹   Údictr[   r\   ry  r.   Ú__annotations__r#  rH   ro   rv   rœ   r«   rß   rá   r^   r,  r“   r�   r$  r%  r{   rQ   rG   ú<module>rŒ     s\  ðö #ã 	ß ,ß %ã å ÷ó ÷÷ ÷ ÷ õ õ& 2ß P÷	÷ 	ó 	÷ EÑ DÝ *ñ Ý(ð �d˜>¨4°Ð5JÐ0JÑ+KÐKÑLÈcÐRUÉhÐVÑW€àFHÐ ÐCÓ Há˜=Ó)Ð ð#ØAð#à/ð#ð 
ó#ðLK.ØðK.Ø25ðK.ØGJðK.àóK.ð^ ò*ó ð*ð,Øð,àð,ð ð,ð  -ð	,ð
 ó,ð^&Øð&Ø #ð&Ø,;ð&àó&ðRfØðfàðfð ðfð "ð	fð
 1ðfð -ðfð ófðR;Øð;Ø%4ð;à	ó;ðk)Øðk)àFðk)ð 3ðk)ð ð	k)ð
 !ðk)ð =ók)ð\	 -Ð óCði!Øði!àði!ð ði!ð ,ó	i!óXLô$rQ   