+
    ˜°³jØg  ã                   ó  € ^ RI t ^ RI Ht ^ RIt^ RIHt ^ RIHtHtHt ^ RI	H
t ^ RIHt ^ RIHtHt ^ RIHu Ht ^ RIHt ^ RItR	 tR
 tR tR tR tRR ltR tR tR t R t!R t"RR lt#R t$R t%R t&RR lt'R R R llt(RR R llt)R# )!é    N)ÚTensor)ÚTorchDispatchMode)Útree_mapÚtree_flattenÚtree_unflatten)Ú_pytree)Úpartial)Úno_dispatchÚall_same_mode©ÚCallablec                 óh   € V P                   pV! V 4      pV! V4      pWE8X  d   R # \        RV R24      h)Nz.This operator is not Composite Compliant: the zR of the tensor was modified directly without going through the PyTorch dispatcher.)ÚelemÚRuntimeError)Úwrapper_tensorÚmetadata_nameÚmetadata_accessorr   Úmetadata_wrapper_tensorÚmetadata_elems   &&&   Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/testing/_internal/composite_compliance.pyÚcheck_attr_consistencyr      sJ   € Ø×Ñ€DÙ/°Ó?ÐÙ% dÓ+€MØÔ/ÙÜ
Ø
8Øˆ/ð 0ð	1ó2ð 2ó    c                 ó  € \        W4      '       g   R # R\        P                  RR RR R\        P                  R\        P                  R\        P
                  /pVP                  4        F  w  r4\        WV4       K  	  R # )	NÚshapeÚdtypec                 ó   € V P                   # ©N)r   ©Úxs   &r   Ú<lambda>Ú,check_metadata_consistency.<locals>.<lambda>"   s   € ˜1Ÿ7š7r   Údevicec                 ó   € V P                   # r   )r"   r   s   &r   r    r!   #   s   € ˜AŸHšHr   ÚnumelÚstrideÚstorage_offset)Ú
isinstancer   Úsizer$   r%   r&   Úitemsr   )r   ÚCCTÚthings_to_checkr   r   s   &&   r   Úcheck_metadata_consistencyr,      sm   € ä�n×*Ò*Ùà”—‘ØÑ"ØÑ$Ø”—‘Ø”&—-‘-Øœ&×/Ñ/ð€Oð -<×,AÑ,AÖ,CÑ(ˆÜ˜~Ð>OÖPó -Dr   c                 ó¼   € V P                   P                  0 R kRkRkRkRkRkRkRkRkR	kR
kRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkR kR!k9   # )"Ú
as_stridedÚdetachÚdiagonalÚexpandÚ	expand_asÚmovedimÚnarrowÚpermuteÚselectÚsqueezeÚ	transposeÚtÚrealÚimagÚview_as_realÚview_as_complexÚ	unflattenÚunfoldÚ	unsqueezeÚviewÚview_asÚunbindÚsplitÚsplit_with_sizesÚvsplitÚhsplitÚtensor_splitÚchunkÚswapaxesÚsliceÚ_reshape_aliasÚ_unsafe_viewÚ_conjÚalias©ÚoverloadpacketÚ__name__©Úfuncs   &r   Ú
is_view_fnrU   +   sv  € Ø×Ñ×'Ñ'ð #,Øð#,àð#,ð 	ð#,ð 	ð	#,ð
 	ð#,ð 	ð#,ð 	ð#,ð 	ð#,ð 	ð#,ð 	ð#,ð 	ð#,ð 	ð#,ð 	ð#,ð 	ð#,ð 	ð#,ð  	ð!#,ð" 	ð##,ð$ 	ð%#,ð& 	ð'#,ð( 	ð)#,ð* 	ð+#,ð, 	ð-#,ð. 	ð/#,ð0 	ð1#,ð2 	ð3#,ð4 	ð5#,ð6 	ð7#,ð8 	ð9#,ð: 	ð;#,ð< 	ð=#,ð> 	ð?#,ð@ 	ðA#,ðB 	ðC#,ðD 	ðE#,ñ #ð #r   c                 ó4   € V P                   P                  R9   # )Úas_strided_>   Út_Údetach_Úsqueeze_Ú	swapaxes_Ú	swapdims_Ú
transpose_Ú
unsqueeze_rW   rP   rS   s   &r   Úis_inplace_view_fnr_   S   s    € Ø×Ñ×'Ñ'ð 	,ñ 	ð 	r   c                 óÂ   € V P                   P                  p\        P                  ! R V4      '       d   R# \        P                  ! RV4      '       d   R# VR,          R8H  # )z__i.+__Tz__.+__FÚ_éÿÿÿÿ)rQ   rR   ÚreÚmatch)rT   Únames   & r   Ú
is_inplacerf   a   sI   € Ø×Ñ×'Ñ'€DÜ	‡x‚x�	˜4× Ò ÙÜ	‡x‚x�˜$×ÒÙØ��8�s‰?Ðr   c                 óv   a a€  ! V3R  lR\         P                  4      o ! VV 3R lR\        4      pSV! 4       3# )c                   ód   <a € ] tR t^tt o R.t]R 4       tR t]RV3R ll4       t	V 3R lt
RtV tR# )	Ú7generate_cct_and_mode.<locals>.CompositeCompliantTensorr   c                ó@  € \        V4      V J d   \        R 4      h\        P                  P	                  WP                  4       VP                  VP                  VP                  VP                  VP                  4       VP                  4       R7      pVP                  '       dœ   \        P                  ! RVP                  VP                  VP                  RR7      pVP                  VP                  4       P                  4       VP                  4       VP                  4       VP                  4       R7       Wen        MWn        VP                  4       VP                   P                  4       8w  d8   \        RVP                  4        RVP                   P                  4        24      h\        P"                  P%                  WUP                   P'                  4       4       \        P"                  P)                  WUP                   P+                  4       4       W%n        V# )zRWrapping a CompositeCompliantTensor in a CompositeCompliantTensor is not supported)r   Úlayoutr"   Úrequires_gradÚstridesr&   F)r   r"   rk   rl   )Úsourcer&   r(   r%   z,Expected r.stride() == r.elem.stride(), got z != © )ÚtypeÚAssertionErrorÚtorchr   Ú_make_wrapper_subclassr(   r   rk   r"   rl   r%   r&   ÚemptyÚset_Úuntyped_storageÚcloner   Ú_CÚ	_set_conjÚis_conjÚ_set_negÚis_negÚmode)Úclsr   r}   ÚargsÚkwargsÚrÚtmps   &&&*,  r   Ú__new__Ú?generate_cct_and_mode.<locals>.CompositeCompliantTensor.__new__y   s‘  € ä�D‹z˜SÓ Ü$Øhóð ô —‘×3Ñ3Ø—Y‘Y“[Ø—j‘j¨¯©Ø—{‘{°$×2DÑ2DØŸ™›°d×6IÑ6IÓ6Kð	 4ó MˆAð ×!×!Ð!ô —k’kØØŸ*™*ØŸ;™;ØŸ;™;Ø"'ô�ð —‘Ø×/Ñ/Ó1×7Ñ7Ó9Ø#'×#6Ñ#6Ó#8ØŸ™›ØŸ;™;›=ð	 ô ð •à”à�x‰x‹z˜QŸV™VŸ]™]›_Ô,Ü$Ð'SÐTU×T\ÑT\ÓT^ÐS_Ð_cÐde×djÑdj×dqÑdqÓdsÐctÐ%uÓvÐvô
 �H‰H×Ñ˜q§&¡&§.¡.Ó"2Ô3Ü�H‰H×Ñ˜a§¡§¡£Ô1àŒFØˆHr   c                ó"   € R V P                    R2# )zCompositeCompliantTensor(Ú))r   )Úselfs   &r   Ú__repr__Ú@generate_cct_and_mode.<locals>.CompositeCompliantTensor.__repr__¬   s   € Ø.¨t¯y©y¨k¸Ð;Ð;r   Nc                óP  <€ \         P                  ! T/ T;'       g    / B p\        ;QJ d    . V3R  lV 4       F  NK  	  5M! V3R  lV 4       4      p\        V4      '       g   \	        R4      hV^ ,          ;_uu_ 4        V! V/ VB uuRRR4       #   + '       g   i     R# ; i)c              3   ód   <"  € T F%  p\        VS4      '       g   K  VP                  x € K'  	  R # 5ir   )r'   r}   )Ú.0ÚeÚCompositeCompliantTensors   & €r   Ú	<genexpr>Ú]generate_cct_and_mode.<locals>.CompositeCompliantTensor.__torch_dispatch__.<locals>.<genexpr>²   s!   øé € Ð^©( Q´jÀÐD\×6]œ&˜!Ÿ&ž&«(ùs   ƒ0œ0z*Multiple CompositeCompliantTensorModes NYIN)ÚpytreeÚarg_tree_leavesÚtupler   r   )r~   rT   Útypesr   r€   Úall_argsÚmodesrŽ   s   &&&&&  €r   Ú__torch_dispatch__ÚJgenerate_cct_and_mode.<locals>.CompositeCompliantTensor.__torch_dispatch__¯   su   ø€ ä×-Ò-¨tÐF¸¿¸À"ÑFˆHß”EÔ^©(Ó^—E‘EÔ^©(Ó^Ó^ˆEÜ  ×'Ò'Ü"Ð#OÓPÐPØ�q——Ù˜TÐ, VÑ,÷ ——“ús   ÂBÂB%	c                ó:   <€ V ^8„  d   Qh/ S[ P                  ;R&   # )é   r   )rr   r   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚDgenerate_cct_and_mode.<locals>.CompositeCompliantTensor.__annotate__t   s   ø‡ ‚ Ù�l‰lÑò r   ro   ©ro   N)rR   Ú
__module__Ú__qualname__Ú__firstlineno__Ú	__slots__Ústaticmethodrƒ   rˆ   Úclassmethodr—   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)rœ   rŽ   s   @€r   rŽ   ri   t   sB   ù‡ € ð �Hˆ	à	ñ0	ó 
ð0	òd	<ð 
ö	-ó 
ð	-÷y ƒ r   rŽ   c                   ó4   <a € ] tR t^¸t o RVV3R lltRtV tR# )Ú;generate_cct_and_mode.<locals>.CompositeCompliantTensorModeNc                óø  <a € V3R  lpVV 3R lpV\         P                  P                  P                  P                  J d   \        R4      hVP                  P                  R9   d   \        VP                   R24      h\        V4      '       dƒ   V^ ,          p\        VS4      '       gh   \        ;QJ d&    V3R lVR,           4       F  '       g   K   RM	  RM! V3R lVR,           4       4      '       d   \        RVP                   R	24      h\        WS4      p\        WT4      p	V! V/ V	B p
\        Wj4      p\        V4      '       d�   S'       dy   \        4       ;_uu_ 4        V! V/ VB p\        V\        \        34      '       d)   \!        W¼RR
7       F  w  rÞVP#                  V4       K  	  MVP#                  V4       RRR4       \        4       ;_uu_ 4        \%        V4      '       d	   V! V/ VB  RRR4       \'        \(        SR7      p\*        P,                  ! Wó4       \*        P,                  ! Wô4       \*        P,                  ! Wû4       V#   + '       g   i     L™; i  + '       g   i     Lx; i)c                 óD   <€ \        V S4      '       d   V P                  # T # r   ©r'   r   )r�   rŽ   s   &€r   ÚunwrapÚ^generate_cct_and_mode.<locals>.CompositeCompliantTensorMode.__torch_dispatch__.<locals>.unwrapº   s   ø€ Ü!+¨AÐ/G×!HÒ!H�q—v‘vÐOÈaÐOr   c                 óZ   <€ \        V \        P                  4      '       d
   S! V S4      # T # r   ©r'   rr   r   )r�   rŽ   r‡   s   &€€r   ÚwrapÚ\generate_cct_and_mode.<locals>.CompositeCompliantTensorMode.__torch_dispatch__.<locals>.wrap½   s'   ø€ Ü<FÀqÌ%Ï,É,×<WÒ<WÑ/°°4Ó8Ð^Ð]^Ð^r   z±.item() is not allowed to be called inside of composite functions in the PyTorch library because not all backends and/or Tensor subclasses (e.g. vmap, ProxyTensor) support them.z; is not allowed to be called inside of Composite operators.c              3   ó<   <"  € T F  p\        VS4      x € K  	  R # 5ir   )r'   )rŒ   ÚarŽ   s   & €r   r�   Úagenerate_cct_and_mode.<locals>.CompositeCompliantTensorMode.__torch_dispatch__.<locals>.<genexpr>Ð   s   øé € ÐVÉXÈœJ qÐ*B×CÐCËXùs   ƒ:é   NNTFz7Not composite compliant: performing in-place operation zŽ where the Tensor being written to is regular Tensor but the other tensors are Tensor Subclasses. Please try to avoid this in-place operation.©ÚstrictN)r*   )ru   Úresize_)rr   ÚopsÚatenÚ_local_scalar_denseÚdefaultr   rQ   rR   rf   r'   Úanyr   rU   r
   r“   ÚlistÚzipru   r_   r	   r,   r‘   Ú	tree_map_)r‡   rT   r”   r   r€   r®   r²   Úmutated_argumentÚunwrapped_argsÚunwrapped_kwargsÚunwrapped_rsÚrsÚresultrµ   ÚbÚcheckrŽ   Úautograd_view_consistencys   f&&&&           €€r   r—   ÚNgenerate_cct_and_mode.<locals>.CompositeCompliantTensorMode.__torch_dispatch__¹   s  ù€ õPö_ð ”u—y‘y—~‘~×9Ñ9×AÑAÓAÜ"ðVóWð Wð
 ×"Ñ"×+Ñ+Ð/BÔBÜ"Ø—}‘}�oð &+ð ,ó-ð -ô ˜$×Òð $(¨¥7Ð Ü!Ð"2Ð4L×MÒMß›ÔVÈTÐRTÎXÓVŸŸšÔVÈTÐRTÎXÓV×VÒVÜ&ØQØŸ=™=˜/ð *GðGóHð Hô & fÓ3ˆNÜ'¨Ó7ÐÙ ÐDÐ3CÑDˆLÜ˜$Ó-ˆBä˜$×Ò×$=ô !—]•]ñ " 4Ð2¨6Ñ2�FÜ! &¬5´$¨-×8Ò8Ü$'¨¸4×$@™D˜AØŸF™F 1žIò %Að Ÿ™ œ÷# #ô, —•Ü% d×+Ò+Ù˜$Ð) &Ò)÷ ô Ô6Ð<TÔUˆEÜ×Ò˜UÔ)Ü×Ò˜UÔ+Ü×Ò˜UÔ'ØˆI÷C #—]ú÷, —ús   Å'AIÇI)ÉI&	É)I9	ro   rŸ   )rR   r    r¡   r¢   r—   r§   r¨   )rœ   rŽ   rË   s   @€€r   ÚCompositeCompliantTensorModerª   ¸   s   ù‡ € ÷J	ö J	r   rÍ   )rr   r   r   )rË   rÍ   rŽ   s   f @r   Úgenerate_cct_and_moderÎ   j   s=   ù€ ÷B-¤5§<¡<ô B-÷HKð KÔ'8ô KðZ $Ñ%AÓ%CÐCÐCr   c                 ó�  € \        V \        4      '       g   \        V \        4      '       g   R # \        V 4      ^ 8X  d   R # \        ;QJ d    R V  4       F  '       d   K   R M	  RM! R V  4       4      pV'       d   R# \        ;QJ d    R V  4       F  '       d   K   R M	  RM! R V  4       4      pV'       d   \        R4      hR # )Fc              3   óV   "  € T F  p\        V\        P                  4      x € K!  	  R # 5ir   r±   ©rŒ   Úelts   & r   r�   Ú is_tensorlist.<locals>.<genexpr>  s   é € ÐC¹s¸”j ¤e§l¡l×3Ð3»sùó   ‚')Tc              3   óV   "  € T F  p\        V\        P                  4      x € K!  	  R # 5ir   r±   rÑ   s   & r   r�   rÓ     s   é € ÐIÁS¸cœJ s¬E¯L©L×9Ð9ÃSùrÔ   zVThis test assumes that PyTorch APIs cannot take mixed lists of Tensor and other things)r'   rÀ   r“   ÚlenÚallr   )ÚlstÚall_tensorsÚexists_one_tensors   &  r   Úis_tensorlistrÛ     sŽ   € Ü�cœ4× Ò ¬°C¼×)?Ò)?ÙÜ
ˆ3ƒx�1„}Ùß“#ÑC¹sÓC—#—#’#ÑC¹sÓCÓC€KßÙß›ÑIÁSÓIŸŸšÑIÁSÓIÓIÐßÜð Dó Eð 	Eár   c                 ó&   € V'       d	   V ! V4      # T# r   ro   )ÚfnÚ
should_mapÚargs   &&&r   Ú	maybe_maprà     s   € ß ‰2ˆc‹7Ð) cÐ)r   c                 óÂ   € \        V \        P                  4      '       d	   V! W4      # \        V 4      '       d   V  Uu. uF
  q1! W24      NK  	  up# \	        R 4      hu upi )z*wrap assumes that the input can be wrapped)r'   rr   r   rÛ   r   )rß   r*   Úcct_moderµ   s   &&& r   r²   r²     sT   € ä�#”u—|‘|×$Ò$Ù�3Ó!Ð!Ü�S×ÒÙ*-Ó.©# Q��AÖ ©#Ñ.Ð.Ü
ÐCÓ
DÐDùò /s   ¾Ac              #   ó’  "  € V  Uu. uF0  p\        V\        P                  4      ;'       g    \        V4      NK2  	  ppV Uu. uF  qU'       d   R R.MR .NK  	  pp\        P
                  ! V!   FA  p\        WpRR7       UUu. uF   w  rƒ\        \        \        WR7      Wƒ4      NK"  	  p	ppW—3x € KC  	  R# u upi u upi u uppi 5i)FTr¸   )r*   râ   N)
r'   rr   r   rÛ   Ú	itertoolsÚproductrÁ   rà   r	   r²   )
Ú	flat_argsr*   râ   rß   Úis_tensor_likesÚis_tensor_likeÚsubclass_optionsÚwhich_args_are_wrappedÚshould_wrap_argrÈ   s
   &&&       r   Úgenerate_subclass_choicesrì   -  sÈ   é € áV_Ó`ÑV_Ès”z #¤u§|¡|Ó4×JÐJ¼ÀcÓ8JÒJÑV_€OÐ`Ù[jÓkÑ[jÈ®˜ ™¸e¸WÒDÑ[jÐÐkä"+×"3Ò"3Ð5EÔ"FÐô /2Ð2HÐ\`Õ.aôcÙ.aÑ*�oô œG¤D¨cÔEÀÖ\Ù.að 	ñ càÐ,Ô,ó	 #Gùò aùÚkùócùs,   ‚C‡%B7­B7½CÁB<Á)CÂ&CÂ)Cc              #   ó,  "  € \        V4      w  rE\        V 4      \        V4      ,           p\        WbV4       FW  w  rxVR \        V 4       p	\	        V\        V 4      R  V4      p
VR \        V 4       p\	        V\        V 4      R  V4      pWšW¼3x € KY  	  R # 5ir   )r   rÀ   rì   rÖ   r   )r   r€   r*   râ   Úflat_kwargsÚspecÚflat_args_kwargsÚchoiceÚdebug_metadataÚnew_argsÚ
new_kwargsrê   Úwhich_kwargs_are_wrappeds   &&&&         r   Ú%generate_subclass_choices_args_kwargsrö   <  s™   é € ä$ VÓ,Ñ€KÜ˜D“z¤D¨Ó$5Õ5ÐÜ";Ð<LÐS[Ö"\ÑˆØ˜*œ3˜t›9Ð%ˆÜ# F¬3¨t«9¨:Ð$6¸Ó=ˆ
Ø!/°
´°T³Ð!;ÐÜ#1°.ÄÀTÃÀÐ2LÈdÓ#SÐ ØÐ$:ÐTÔTó #]ùs   ‚BBc                 ó"   € \        R V R24      V h)z8Composite compliance check failed with the above error.
a(  If you are adding an OpInfo of an existing operator, please feel free to skip this test because the problem was pre-existing and file an issue. Otherwise, if you added a new operator, please read through the Composite Compliance section in aten/src/ATen/native/README.md for how to resolve this. )r   )ÚerrÚadditional_infos   &&r   Ú raise_composite_compliance_errorrú   H  s+   € Ü
ð	àÐ
ð	Cð	Có
ð ð
r   c           
      óþ   a€ \        4       w  opV ! V/ VB p\        WSV4       F*  pVw  rxrš V ! V/ VB pV3R lpV! \	        VX4      V4       K,  	  R#   \         d   p\        TR T	 RT
 R24        Rp?LBRp?ii ; i)ú- wrapped_args: ú
- wrapped_kwargs: Ú
Nc                 óD   <€ \        V S4      '       d   V P                  # T # r   r­   ©r�   r*   s   &€r   r®   Ú&check_all_permutations.<locals>.unwrapz  s   ø€ Ü'¨¨3×/Ò/�1—6‘6Ð6°QÐ6r   )rÎ   rö   r   rú   r   )Úopr   r€   Úassert_equal_fnrâ   Úexpectedrñ   ró   rô   rê   rõ   Úactualrø   r®   r*   s   &&&&          @r   Úcheck_all_permutationsr  ^  s§   ø€ Ü)Ó+�M€CˆÙ�4Ð"˜6Ñ"€HÜ7¸ÀcÈ8ÖTˆØQWÑNˆÐ4ð	Ù˜Ð0 ZÑ0ˆFõ*	7ñ 	œ ¨Ó0°(Ö;ó9 Uøô$ ô 	Ü,ØØ"Ð#9Ð":ð ;%Ø%=Ð$>¸bðB÷ñ ûð	ús   ­AÁA<ÁA7Á7A<c                 óD  a	a
€ \        4       w  o	o
V	V
3R  lpV ! V/ VB p\        WA4      p\        WB4      p S
;_uu_ 4        V ! V/ VB pRRR4       T	3R lpT! \        TX4      T4       R#   + '       g   i     L+; i  \         d   p\        T4        Rp?LIRp?ii ; i)c                 óZ   <€ \        V \        P                  4      '       d
   S! V S4      # T # r   r±   )r�   r*   râ   s   &€€r   r²   Úcheck_with_mode.<locals>.wrapŽ  s%   ø€ Ü#-¨a´·±×#>Ò#>‰s�1�hÓÐEÀAÐEr   Nc                 óD   <€ \        V S4      '       d   V P                  # T # r   r­   r   s   &€r   r®   Úcheck_with_mode.<locals>.unwrapœ  s   ø€ Ü# A s×+Ò+ˆq�v‰vÐ2°Ð2r   )rÎ   r   r   rú   )r  r   r€   r  r²   r  r  rø   r®   r*   râ   s   &&&&     @@r   Úcheck_with_moder  ‹  s”   ù€ Ü)Ó+�M€CˆöFñ �4Ð"˜6Ñ"€Hä�DÓ€DÜ�dÓ#€Fð.ßŠXÙ˜Ð( Ñ(ˆF÷ õ3ñ ”H˜V VÓ,¨hÖ7÷ �Xûô ô .Ü(¨×-Ñ-ûð.ús5   ¶
A? Á 	A,Á	A? Á,A<	Á7A? Á<A? Á?BÂ
BÂBc                 óî   € . p\        V 4      w  r\        V4      w  rW,           p V  FJ  p\        V\        P                  4      '       g   K%  VP                  '       g   K9  VP                  V4       KL  	  V# r   )r   r'   rr   r   rl   Úappend)r   r€   Úleaf_tensorsÚ
_args_specÚ_kwargs_specrß   s   &&    r   Úgather_leaf_tensorsr  ¡  sh   € Ø€LÜ# DÓ)Ñ€DÜ'¨Ó/Ñ€FØ�=€DÛˆÜ˜#œuŸ|™|×,Ò,ÙØ××ÒØ×Ñ Ö$ñ	 ð
 Ðr   c           	      ó˜  € Vf
   V ! V/ VB pMV! V .VO5/ VB pVe	   V! V4      p\         P                  ! V4      pV Uu. uF'  p\        V\        P                  4      '       g   K%  VNK)  	  ppV Uu. uF  qwP
                  '       g   K  VNK  	  pp\        V4      ^ 8:  d   \        R4      hV Uu. uF:  p\        P                  ! VP                  VP                  VP                  R7      NK<  	  p	p\        W4      p
\        V
4      ^ 8:  d   \        R4      h\        P                  P                  WŠV	RRR7      # u upi u upi u upi )Nú#Expected len(flat_diff_results) > 0©r"   r   úExpected len(leaf_tensors) > 0T©Úallow_unusedÚretain_graph)r‘   Útree_leavesr'   rr   r   rl   rÖ   rq   Úonesr   r"   r   r  ÚautogradÚgrad)r  r   r€   Úoutput_process_fn_gradÚgradcheck_wrapperÚresultsÚflat_resultsr�   Úflat_diff_resultsÚgradsr  s   &&&&&      r   Úcompute_expected_gradsr$  ®  s,  € ØÒ Ù�dÐ%˜fÑ%‰á# BÐ8¨Ò8°Ñ8ˆàÒ)Ù(¨Ó1ˆä×%Ò% gÓ.€LÙ+ÓK™|˜!¬z¸!¼U¿\¹\×/J—A�A™|€LÐKÙ$0ÓD¡L˜q·OµOŸ˜¡LÐÐDÜ
ÐÓ Ô"ÜÐBÓCÐCáJ[Ó\ÑJ[ÀQŒU�ZŠZ˜Ÿ™¨¯©¸¿¹×@ÑJ[€EÐ\Ü& tÓ4€LÜ
ˆ<Ó˜AÔÜÐ=Ó>Ð>Ü�>‰>×ÑÐ0Ø$°4Àdð ó Lð Lùò LùÚDùò ]s   Á "D=Á'D=Á3EÂEÂ2A Ec                ó$   € V ^8„  d   QhR\         /# ©rš   r  r   )r›   s   "r   r�   r�   Ì  s   € ÷ 5Rñ 5Rœxñ 5Rr   c                 ó:  a€ \        4       w  op\        WW#V4      p\        WSV4       EF„  pVw  ršr¼\        Wš4      p\	        V4      ^ 8:  d   \        R4      h Vf
   V ! V	/ V
B pMV! V .V	O5/ V
B pVe	   V! V4      p\        P                  ! X4      pT Uu. uF'  p\        T\        P                  4      '       g   K%  TNK)  	  ppT Uu. uF  pTP                  '       g   K  TNK  	  pp\	        T4      ^ 8:  d   \        R4      hT Uu. uF:  p\        P                  ! TP                  TP                   TP"                  R7      NK<  	  pp\%        TST4       FO  w  pp \        P&                  P)                  TTTRRR	7      pT3R lpT! \+        \-        TX4      4      TRR7       KQ  	  EK‡  	  R#   \         d   p\        TRT RT R24        Rp?ELZRp?ii ; iu upi u upi u upi   \         d!   p\        TRT RT R
T R24        Rp?L�Rp?ii ; i)r   r  Nrü   rý   rþ   r  r  Tr  z
- wrapped_grads: c                 óD   <€ \        V S4      '       d   V P                  # T # r   r­   r   s   &€r   r®   Ú&check_backward_formula.<locals>.unwrapþ  s   ø€ Ü!+¨A¨s×!3Ò!3�q—v‘vÐ:¸Ð:r   ©Ú	equal_nan)rÎ   r$  rö   r  rÖ   rq   r   rú   r‘   r  r'   rr   r   rl   r  r   r"   r   rì   r  r  r“   Úmap)r  r   r€   r  r  r  râ   r  rñ   ró   rô   rê   rõ   r  r   rø   r!  r�   r"  r#  Úflat_new_gradsÚwhich_grad_is_batchedr  r®   r*   s   &&&&&&                  @r   Úcheck_backward_formular/  Ì  sB  ø€ ô *Ó+�M€Cˆä% b°ÐPaÓb€Hä7¸ÀcÈ8×TˆØQWÑNˆÐ4Ü*¨8Ó@ˆÜˆ|Ó Ô!Ü Ð!AÓBÐBð	Ø Ò(Ù˜hÐ5¨*Ñ5‘á+¨BÐH°ÒH¸ZÑH�Ø%Ò1Ù0°Ó9�ô ×)Ò)¨'Ó2ˆÙ#/ÓO¡<˜a´:¸aÄÇÁ×3NŸ˜¡<ˆÐOÙ(4ÓH© 1¸¿½ŸQ˜Q©ÐÐHÜÐ Ó! QÔ&Ü Ð!FÓGÐGñ ,ó-Ù+�Qô —’˜AŸG™G¨A¯H©H¸A¿G¹G×DÙ+ð 	ð -ä5NÈuÐVYÐ[cÖ5dÑ1ˆNÐ1ð
ÜŸ™×,Ñ,Ð->ÀÈnØ:>ÈTð -ó S�õ;ñ œE¤# f¨fÓ"5Ó6¸ÈD×Qô! 6eó= Uøô ô 	Ü,ØØ"Ð#9Ð":ð ;%Ø%=Ð$>¸bðB÷ò ûð	üò PùÚHùò
-øô  ô Ü0ØØ&Ð'=Ð&>ð ?)Ø)AÐ(Bð C(Ø(=Ð'>¸bðB÷ñ ûðúsO   Á%F4Â"G Â?G ÃG%Ã$G%ÄA G*Å!$G/Æ4GÆ?GÇGÇ/HÇ:HÈHc                ó$   € V ^8„  d   QhR\         /# r&  r   )r›   s   "r   r�   r�   
  s   € ÷ ^Tñ ^T¤ñ ^Tr   c                 ó¶  a aa!a"a#a$€ \        R R7      w  o!pV!3R lo#\        ;QJ d    . V#3R lV 4       F  NK  	  5M! V#3R lV 4       4      p\        V4      w  rx\        ;QJ d    . V#3R lV 4       F  NK  	  5M! V#3R lV 4       4      p	\        W˜4      p
\        P
                  ! 4       ;_uu_ 4        R o"VV"V 3R lpV! WW*4      p\        \        P                  V4      p\        R VR R	7      p\        R
 VR R	7      p\        WS!V4       Fñ  pVw  pppp\        WjS!V4       FÖ  pVw  pppp\        \        S"\        VVRR7      4      4      pVP                  4        UUu/ uF  w  ppVS"! VVV,          34      bK  	  ppp Sf
   S ! V/ VB pMS! S .VO5/ VB p V!3R lo$\        \        P                  X4      p\        V$3R lVR R	7      p\        V$3R lVR R	7      p V! VVRR7       V! V VRR7       KØ  	  Kó  	  RRR4       R# u uppi   \         d$   p\        TRT RT RT RT R2	4        Rp?L�Rp?ii ; i  + '       g   i     R# ; i)F)rË   c                 ój  <€ \        V 4      SJ d   \        R 4      h\        V \        P                  4      '       d)   V P
                  '       d   \        P                  ! V 4      # \        V 4      '       d:   V  Uu. uF,  qP
                  '       d   \        P                  ! V4      MRNK.  	  up# R# u upi )zExpected type(t) is not CCTN)rp   rq   r'   rr   r   rl   Ú
randn_likerÛ   )r9   r�   r*   s   & €r   Úmaybe_tangentÚ/check_forward_ad_formula.<locals>.maybe_tangent  s…   ø€ Ü�‹7�c‹>Ü Ð!>Ó?Ð?ô �aœŸ™×&Ò&¨1¯?¯?¨?Ü×#Ò# AÓ&Ð&Ü˜1×ÒÙNOÓPÉaÈ¯?¯?¨?”E×$Ò$ QÔ'ÀÒDÉaÑPÐPÙùò Qs   Á92B0c              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5ir   ro   ©rŒ   rß   r4  s   & €r   r�   Ú+check_forward_ad_formula.<locals>.<genexpr>  s   øé € Ð<±t°™ s×+Ð+³tùó   ƒc              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5ir   ro   r7  s   & €r   r�   r8    s   øé € ÐJ¹k°s¡¨c× 2Ð 2»kùr9  c           	      ób  € V w  r\        V\        P                  4      '       d8   VP                  '       d&   \        P
                  ! VP                  4       V4      # \        V4      '       dC   \        ;QJ d    . R  \        WRR7       4       F  NK  	  5# ! R  \        WRR7       4       4      # V# )c              3   ó|   "  € T F2  w  rVe&   \         P                  ! VP                  4       V4      MTx € K4  	  R # 5ir   )ÚfwADÚ	make_dualr/   )rŒ   ÚpriÚtangs   &  r   r�   ÚDcheck_forward_ad_formula.<locals>.maybe_make_dual.<locals>.<genexpr>%  s8   é € ð QÙ.O¡ ð DHÒCSœTŸ^š^¨C¯J©J«L¸$Ô?ÐY\Ô\Û.Oùs   ‚:<Tr¸   )
r'   rr   r   rl   r=  r>  r/   rÛ   r“   rÁ   )ÚdualÚprimalÚtangents   &  r   Úmaybe_make_dualÚ1check_forward_ad_formula.<locals>.maybe_make_dual  s•   € ð #‰OˆFÜ˜&¤%§,¡,×/Ò/°F×4H×4HÐ4HÜ—~’~ f§m¡m£o°wÓ?Ð?Ü˜v×&Ò&ß”uñ QÜ.1°&È$Õ.OóQ—uð Q�uñ QÜ.1°&È$Õ.OóQó Qð QàˆMr   c                 óä   <€ \        \        S	\        WR R7      4      4      pVP                  4        UUu/ uF  w  rVVS	! WcV,          34      bK  	  pppSf	   S
! V/ VB # S! S
.VO5/ VB # u uppi )Tr¸   )r“   r,  rÁ   r)   )r   Útangent_argsr€   Útangent_kwargsÚop_argsÚkÚvÚ	op_kwargsr  rE  r  s   &&&&    €€€r   Úcompute_expected_gradÚ7check_forward_ad_formula.<locals>.compute_expected_grad)  s€   ø€ ÜœC ´°TÐPTÔ1UÓVÓWˆGØPV×P\ÑP\ÔP^Ô_ÑP^ÉÈ˜™O¨Q¸qÕ0AÐ,BÓCÒCÑP^ˆIÑ_à Ò(Ù˜7Ð0 iÑ0Ð0Ù$ RÐ?¨'Ò?°YÑ?Ð?ùó	 `s   µA,c                 ó   € V P                   # r   ©rC  r   s   &r   r    Ú*check_forward_ad_formula.<locals>.<lambda>4  s   € �a—h’hr   c                 ó8   € \        V 4      \        P                  J # r   ©rp   r=  ÚUnpackedDualTensorr   s   &r   r    rR  6  ó   € œd 1›g¬×)@Ñ)@Ñ@r   )Úis_leafc                 ó   € V P                   # r   ©rD  r   s   &r   r    rR  9  s   € �a—i’ir   c                 ó8   € \        V 4      \        P                  J # r   rT  r   s   &r   r    rR  ;  rV  r   Tr¸   Nrü   rý   z
- wrapped_tangent_args: z
- wrapped_tangent_kwargs: rþ   c                 óD   <€ \        V S4      '       d   V P                  # T # r   r­   r   s   &€r   r®   Ú(check_forward_ad_formula.<locals>.unwrapY  s   ø€ Ü%/°°3×%7Ò%7˜1Ÿ6™6Ð>¸QÐ>r   c                 ó(   <€ S! V P                   4      # r   rQ  ©r   r®   s   &€r   r    rR  ^  s   ø€ ™f Q§X¡XÔ.r   c                 ó8   € \        V 4      \        P                  J # r   rT  r   s   &r   r    rR  `  ó   € ¤d¨1£g´×1HÑ1HÑ&Hr   c                 ó(   <€ S! V P                   4      # r   rY  r^  s   &€r   r    rR  c  s   ø€ ™f Q§Y¡YÔ/r   c                 ó8   € \        V 4      \        P                  J # r   rT  r   s   &r   r    rR  e  r`  r   r*  )rÎ   r“   r   r   r=  Ú
dual_levelr   Úunpack_dualrö   r,  rÁ   r)   r   rú   )%r  r   r€   r  r  râ   rH  rî   rï   Úflat_tangent_kwargsrI  rN  r  Úexpected_primalsÚexpected_tangentsrñ   ró   rô   rê   rõ   Útang_choiceÚnew_tang_argsÚnew_tang_kwargsÚwhich_tang_args_are_wrappedÚwhich_tang_kwargs_are_wrappedrJ  rK  rL  rM  r  rø   Úactual_primalsÚactual_tangentsr*   rE  r4  r®   s%   f&&f&                            @@@@r   Úcheck_forward_ad_formularo  
  su  ý€ Ü)ÀEÔJ�M€Cˆõ	÷ ”5Ô<±tÓ<—5‘5Ô<±tÓ<Ó<€LÜ$ VÓ,Ñ€Kßœ%ÔJ¹kÓJŸ%™%ÔJ¹kÓJÓJÐÜ#Ð$7Ó>€Nä	�Š×	Õ	ò		÷	@ñ )¨¸VÓTˆÜœD×,Ñ,¨hÓ7ˆÜ#ÙØÙ@ô
Ðô
 %ÙØÙ@ô
Ðô <¸DÈ#ÈxÖXˆFØU[ÑRˆH�jÐ"8Ð:Rô  EÀ\ÐcfÐhpÖq�àQ\ñO�˜Ø/Ð1Nä¤ O´S¸À=ÐY]Ô5^Ó _Ó`�ØU_×UeÑUeÔUgÔhÑUgÉTÈQÐPQ˜Q¡°°OÀAÕ4FÐ0GÓ HÒHÑUg�	ÑhðØ(Ò0Ù!# WÐ!:°	Ñ!:™á!2°2Ð!M¸Ò!MÀ9Ñ!M™õ?ô "¤$×"2Ñ"2°FÓ;�Ü!)Ü.ØÙHô"�ô
 #+Ü/ØÙHô#�ñ
   Ð0@ÈDÕQÙ Ð1BÈd×SóK  rñ	 Y÷E 
Ñ	ùóV iøô $ô Ü4ØØ*Ð+AÐ*Bð C-Ø-EÐ,Fð G3Ø3NÐ2Oð P5Ø5RÐ4SÐSUðW÷ñ ûðú÷g 
×	Ð	úsV   Â5B1IÅ&HÆIÆHÆIÆHÆ!A%IÈIÈIÈ!H?È:IÈ?IÉIÉI	)T)Ú )NN)NNN)*rr   r   rä   Útorch.utils._python_dispatchr   Útorch.utils._pytreer   r   r   Útorch.utilsr   r‘   Ú	functoolsr	   Útorch.utils._mode_utilsr
   r   Útorch.autograd.forward_adr  Ú
forward_adr=  Úcollections.abcr   rc   r   r,   rU   r_   rf   rÎ   rÛ   rà   r²   rì   rö   rú   r  r  r  r$  r/  ro  ro   r   r   Ú<module>ry     sœ   ðó Ý Û å :ß FÑ FÝ )Ý ß >ß (Ð (Ý $Û 	ò	2òQò$òP
òô[Dòzò*òEò&	-ò	Uôò,<òZ8ò,
ôL÷<5R÷|^Tñ ^Tr   