Ë
    ÄÓ^j^" ã                  óè!  — d dl mZ d dlZd dlZd dlZd dl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 d dlZd dlZd dlZd dlmZ d dlmZ d dl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$ d d	l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d d
l,m-Z- d dl.m/Z/ erd dl0m1Z1m2Z2 d dl%m3Z3 d dl4m5Z5 e(ejl                  z  Z7 ed«      Z8 ed«      Z9 ed«      Z:ej*                  jv                  Z<g d¢Z=i Z>g Z?ej€                  j‚                  j„                  ZBdgd„ZCdhd„ZD eCg eBjŠ                  jŒ                  ‘eBjŠ                  jŽ                  ‘eBj�                  jŒ                  ‘eBj�                  jŽ                  ‘eBj’                  jŒ                  ‘eBj’                  jŽ                  ‘eBj”                  jŒ                  ‘eBj”                  j–                  ‘eBj”                  jŽ                  ‘eBj”                  j˜                  ‘eBjš                  jŒ                  ‘eBjš                  j–                  ‘eBjš                  jŽ                  ‘eBjš                  j˜                  ‘eBjœ                  jŒ                  ‘eBjœ                  j–                  ‘eBjœ                  jl                  ‘eBjœ                  jž                  ‘eBjœ                  j                   ‘eBjœ                  j¢                  ‘eBjœ                  jŽ                  ‘eBjœ                  j˜                  ‘eBjœ                  j¤                  ‘eBjœ                  j¦                  ‘eBjœ                  j¨                  ‘eBjœ                  jª                  ‘eBj¬                  jŒ                  ‘eBj¬                  jŽ                  ‘eBj®                  jŒ                  ‘eBj®                  jŽ                  ‘eBj°                  jŒ                  ‘eBj°                  jŽ                  ‘eBj²                  jŒ                  ‘eBj²                  jŽ                  ‘eBj´                  jŒ                  ‘eBj´                  jŽ                  ‘eBj¶                  jŒ                  ‘eBj¶                  jŽ                  ‘­Ž Z\ eCeBjº                  jŒ                  eBj¼                  jŒ                  eBj¼                  jŽ                  eBj¾                  jŒ                  eBjÀ                  jÂ                  eBjÀ                  jÄ                  eBjÆ                  jŒ                  eBjÈ                  jŒ                  eBjÈ                  jŽ                  eBjÊ                  jŒ                  eBjÊ                  jŽ                  «      ZfeBjÎ                  fZhdid„ZiejÔ                  djd„«       Zk	 	 	 	 dkd„Zldld„Zmdmd„Zn ele>jÞ                  «      	 	 	 	 	 	 	 	 	 	 dnd„«       Zp elek«       elg e\¢«      	 	 	 	 	 	 	 	 	 	 dod„«       «       Zq eleBjÆ                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 dpd„«       Zr elej‚                  jæ                  jè                  jŒ                  «      	 dq	 	 	 	 	 	 	 	 	 drd„«       Zt elej‚                  jæ                  jê                  jŒ                  «      	 	 	 	 	 	 	 	 dsd„«       Zu elej‚                  jæ                  jì                  jŒ                  «      	 dq	 	 	 	 	 	 	 	 	 dtd„«       Zv eleBjÀ                  jÄ                  «       eleBjÀ                  jÂ                  «      	 	 	 	 	 	 	 	 	 	 dod „«       «       Zwdld!„Zx elex«      	 	 	 	 	 	 	 	 	 	 dod"„«       Zy eleBjô                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 dod#„«       Zz eleBjö                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 dod$„«       Z{dud%„Z|dvd&„Z}dwd'„Z~	 	 	 	 	 	 	 	 dxd(„Zdyd)„Z€ eleB�j                  jŒ                  «      	 dq	 	 	 	 	 	 	 	 	 	 	 	 	 dzd*„«       Z� eleB�j                  jŒ                  «      	 	 d{	 	 	 	 	 	 	 	 	 	 	 d|d+„«       Z‚ eld,„ «      	 	 	 	 	 	 	 	 	 	 d}d-„«       Zƒ	 	 	 d~d.d/œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd0„Z„ eleB�j
                  jŒ                  «      	 	 	 d~	 	 	 	 	 	 	 	 	 	 	 	 	 d€d1„«       Z† eleB�j                  jŒ                  «      	 	 d�	 	 	 	 	 	 	 	 	 	 	 d‚d2„«       Z‡ eleB�j                  �j                  «      	 	 	 	 	 	 	 	 	 	 	 	 dƒd3„«       ZŠ eleB�j                  jŒ                  «      	 	 	 d~	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d„d4„«       Z‹ eleB�j                  jŒ                  «      	 	 	 d…	 	 	 	 	 	 	 	 	 	 	 	 	 d†d5„«       ZŒ	 d‡	 	 	 	 	 	 	 	 	 dˆd6„Z�d‰d7„ZŽdŠd8„Z�d‹d9„Z�	 	 	 	 	 	 dŒd:„Z‘d‹d;„Z’	 	 	 d~	 	 	 	 	 	 	 	 	 	 	 d�d<„Z“ eleB�j(                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 dŽd=„«       Z” eleB�j*                  jŒ                  «       eleB�j,                  jŒ                  «      d.d>œ	 	 	 	 	 	 	 	 	 	 	 d�d?„«       «       Z— eleB�j0                  jŒ                  «      dd@œ	 	 	 	 	 	 	 	 	 	 	 d�dA„«       Z™ eleB�j4                  jl                  «      	 dq	 	 	 	 	 	 	 	 	 d‘dB„«       Z› elej‚                  j„                  �j8                  jŒ                  «       elej‚                  j„                  �j:                  jŒ                  «      	 	 	 	 	 	 	 	 d’dC„«       «       Zž elej‚                  j„                  �j>                  jŒ                  «      	 	 	 	 	 	 	 	 d“dD„«       ZŸ elej‚                  j„                  �j@                  jŒ                  «      d”dE„«       Z  elej‚                  j„                  �jB                  jŒ                  «      	 dq	 	 	 	 	 	 	 	 	 	 	 d•dF„«       Z¡d–dG„Z¢ elej‚                  j„                  �jF                  jl                  «      	 	 	 	 d—	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d˜dH„«       Z¤ elej‚                  j„                  �jJ                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 d™dI„«       Z¥ elej‚                  j„                  �jL                  jŒ                  «      	 	 	 dšdddJœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d›dK„«       Z§ eldL„ «      	 	 	 	 	 	 	 	 	 	 d}dM„«       Z¨	 	 	 	 	 	 	 	 dœdN„Z©	 	 	 	 	 	 	 	 	 	 d�dO„Zª eCdPdQdR«      Z«dldS„Z¬djdT„Z­ eldU„ «      	 	 	 	 	 	 	 	 	 	 dždV„«       Z® eleB�j^                  jl                  «      	 	 	 	 	 	 	 	 	 	 dodW„«       Z° eleB�jb                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 dŸdX„«       Z² eleB�jf                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 dndY„«       Z³ eleB�jh                  jŒ                  «       eleB�jj                  jŒ                  «       eleB�jl                  jŒ                  «       eleB�jn                  jŒ                  «       eleB�jp                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 dodZ„«       «       «       «       «       Z¹ eleB�jj                  jŽ                  «       eleB�jn                  jŽ                  «      	 	 	 	 	 	 	 	 	 	 dod[„«       «       Zº eleB�jv                  jŒ                  «       eleB�jx                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 dod\„«       «       Z½ eleBj¼                  jŒ                  «       eleBj¼                  jŽ                  «       eleB�j|                  jŒ                  «       eleB�j~                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 d}d]„«       «       «       «       ZÀ elefD � cg c]q  } | eBjÆ                  jŒ                  eBjÀ                  jÂ                  eBjÀ                  jÄ                  eBj¼                  jŒ                  eBj¼                  jŽ                  fvr| ‘Œs c} «      d}d^„«       ZÁ eleB�j„                  jŒ                  eB�j†                  jŒ                  eB�j†                  �jˆ                  eB�jŠ                  jŒ                  g«      	 	 	 	 	 	 	 	 	 	 d d_„«       ZÆ elej‚                  j„                  �jŽ                  jŒ                  «      	 	 d¡	 	 	 	 	 	 	 	 	 	 	 d¢d`„«       ZÇ elej‚                  j„                  �j�                  jŒ                  «      	 	 	 	 	 	 	 	 	 	 	 	 d£da„«       ZÈi ZÉ	 	 	 	 d¤db„ZÊ	 	 	 	 	 	 d¥dc„ZËe�j˜                  f	 	 	 	 	 d¦dd„ZÍ	 d‡	 	 	 	 	 	 	 d§de„ZÎejÔ                  d¨df„«       ZÏyc c} w )©é    )ÚannotationsN©Úreduce)ÚAnyÚcastÚTYPE_CHECKINGÚTypeVar)Ú	ParamSpec)Úno_python_dispatcher)Ú
OpOverload)Úcanonicalize_dimÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚis_boolean_dtypeÚis_contiguousÚ(is_contiguous_for_memory_format_or_falseÚis_contiguous_or_falseÚis_float_dtypeÚis_integer_dtypeÚmake_contiguous_strides_forÚ	ShapeType)ÚDataDependentOutputExceptionÚDynamicOutputShapeExceptionÚ
FakeTensorÚin_kernel_invocation_managerÚrun_fallback_kernelÚUnsupportedOperatorException)Ú_normalize_function_or_error©Úcount_label)ÚCallableÚSequence)ÚFakeTensorMode)ÚIntLikeTypeÚ_PÚ_RÚ_T)Úop_implementations_checksÚget_fast_op_implsÚstride_incorrect_opÚhas_metac                 ó.   — t         j                  | d«      S )NT)ÚdictÚfromkeys)Úitemss    úg/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_subclasses/fake_impls.pyÚordered_setr1   I   s   € Ü�=‰=˜ Ó%Ð%ó    c                ó    — | j                   dk7  S )NÚhpu)Útype©Údevices    r0   Úis_noncontiguous_supportedr8   O   s   € Ø�;‰;˜%ÑÐr2   c                ó¸   — t         j                  j                  j                  «       }| j	                  |«      xs  t        d„ | j                  «       D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úcontains_tensor_types)Ú.0Úes     r0   ú	<genexpr>z(contains_tensor_types.<locals>.<genexpr>‘   s   è ø€ ò 1Ø%&Ô˜a× ñ1ùó   ‚)ÚtorchÚ_CÚ
TensorTypeÚgetÚisSubtypeOfÚanyÚcontainedTypes)Útype_Útensor_types     r0   r<   r<   �   sO   € Ü—(‘(×%Ñ%×)Ñ)Ó+€KØ×Ñ˜[Ó)ò ¬Sñ 1Ø*/×*>Ñ*>Ó*@ô1ó .ð r2   c                óX  — t        | t        «      st        dt        | «      › �«      ‚| j                  }t        d„ |j                  D «       «      ryt        |j                  «      dk(  xrA |j                  d   j                  t        j                  j                  j                  «       u S )Nz func must be an OpOverload, got c              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wr;   )r<   r5   )r=   Úargs     r0   r?   z)_is_tensor_constructor.<locals>.<genexpr>›   s   è ø€ Ò
G¨sÔ  §¡×*Ñ
Gùs   ‚!Fé   r   )Ú
isinstancer   ÚAssertionErrorr5   Ú_schemarF   Ú	argumentsÚlenÚreturnsrA   rB   rC   rD   )ÚfuncÚschemas     r0   Ú_is_tensor_constructorrV   –   s‡   € ä�dœJÔ'ÜÐ?ÄÀTÃ
¸|ÐLÓMÐMØ�\‰\€FÜ
Ñ
G°f×6FÑ6FÔ
GÔGØô 	ˆF�N‰NÓ˜qÑ ÒX V§^¡^°AÑ%6×%;Ñ%;¼u¿x¹x×?RÑ?R×?VÑ?VÓ?XÐ%Xðr2   c                ó   ‡ — dˆ fd„}|S )Nc                ó<  •— t        ‰t        «      r!‰t        v rt        d‰› �«      ‚| t        ‰<   | S t        ‰t        t
        f«      r‰D ]  } t        |«      | «       Œ | S t        ‰«      st        dt        ‰«      › �«      ‚t        j                  ‰| f«       | S )Nzduplicate registration: z%run_impl_check must be callable, got )rN   r   Úop_implementations_dictrO   ÚlistÚtupleÚregister_op_implÚcallabler5   r(   Úappend)Úop_implÚopÚrun_impl_checks     €r0   Úimpl_decoratorz(register_op_impl.<locals>.impl_decorator©   s³   ø€ Ü�n¤jÔ1ØÔ!8Ñ8Ü$Ð'?ÀÐ?OÐ%PÓQÐQØ6=Ô# NÑ3ð ˆô ˜¬¬u¨Ô6Ø$ò .�Ø$Ô  Ó$ WÕ-ð.ð ˆô ˜NÔ+Ü$Ø;¼DÀÓ<PÐ;QÐRóð ô &×,Ñ,¨n¸gÐ-FÔGàˆr2   ©r_   úCallable[_P, _R]Úreturnrd   © )ra   rb   s   ` r0   r\   r\   £   s   ø€ õð" Ðr2   c                ó   — | t         v S r;   ©rY   ©r`   s    r0   Ú_is_op_registered_to_fake_rulerj   ½   s   € ØÔ(Ð(Ð(r2   c                ó†   — t         j                  | d «       t        D ]"  \  }}|| u sŒt        j                  ||f«        y  y r;   )rY   Úpopr(   Úremove)r`   ÚcheckÚimpls      r0   Ú_deregister_op_implrp   Á   sA   € Ü×Ñ  DÔ)Ü0ò ‰ˆˆtØ�BŠ;Ü%×,Ñ,¨e°T¨]Ô;Ùñr2   c                ó(   — t        |   | |g|¢­i |¤ŽS r;   rh   ©Ú	fake_moderT   ÚargsÚkwargss       r0   Ú#dispatch_to_op_implementations_dictrv   É   s    € ô # 4Ñ(¨°DÐJ¸4ÒJÀ6ÑJÐJr2   c                óž  — |t         v rt        d|› �«      ‚t        |||d¬«      \  }}|t        v r"|d   j                  }|j                  d«      f}nt        j                  d«      }d}|j                  dd «      }|�|n|}t        j                  d«      |d<   t        | «      5   ||i |¤Ž}d d d «       t        | |«      S # 1 sw Y   ŒxY w)	Nz8func must not be in _non_kwarg_device_constructors, got T©rt   ru   Únormalize_to_only_use_kwargsÚinputÚcpurf   r7   Úmeta)	Ú_non_kwarg_device_constructorsrO   r   Ú_like_tensor_constructorsr7   rl   rA   r   r   )	rs   rT   rt   ru   Ú_Ú
new_kwargsÚdefault_deviceÚ
out_deviceÚrs	            r0   Úconstructorsr„   Ð   sê   € ð
 Ô-Ñ-ÜØFÀtÀfÐMó
ð 	
ô 1Ø�4 ÀTô�M€A€zð Ô(Ñ(Ø# GÑ,×3Ñ3ˆà—‘˜wÓ'Ð)‰ô Ÿ™ eÓ,ˆØˆØ—‘ ¨$Ó/€JØ)Ð5‘¸>€JÜ Ÿ<™<¨Ó/€JˆxÑô 
& iÓ	0ñ &Ù�$Ð%˜*Ñ%ˆ÷&ä�i  JÓ/Ð/÷&ð &ús   Â%	CÃCc                óž   — t        |||d¬«      \  }}|j                  d«      }t        | «      5   ||«      }d d d «       |S # 1 sw Y   S xY w)NT©ry   rz   )r   rl   r   )rs   rT   rt   ru   r   r€   Úinprƒ   s           r0   Únon_kwarg_is_pinnedrˆ   ï   sX   € ô 1Øˆd�F¸ô�M€A€zð �.‰.˜Ó
!€Cô 
& iÓ	0ñ Ù�‹Iˆ÷à€H÷à€Hús   ¯	AÁAc                óÂ   — t        | «      5   |||«      }d d d «       t        j                  d¬«      }t        | |t        j                  d«      «      S # 1 sw Y   Œ@xY w)Nr|   r6   r{   )r   rA   Ú
empty_liker   r7   )rs   rT   Únamert   Úreal_handleÚmeta_handles         r0   Ú_record_function_enterrŽ      sY   € ô
 
& iÓ	0ñ 'Ù˜4 Ó&ˆ÷'ô ×"Ñ" ;°vÔ>€Kä�i ¬e¯l©l¸5Ó.AÓBÐB÷'ð 'ús   Œ
AÁAc                 ó   — y r;   rf   )rs   rT   Úhandles      r0   Ú_record_function_exitr‘     s   € ð 	r2   c                óV   — t        | «      5   |||«      cd d d «       S # 1 sw Y   y xY wr;   ©r   )rs   rT   r‹   rt   s       r0   Ú_record_function_enter_newr”     s+   € ô 
& iÓ	0ñ  Ù�D˜$Ó÷ ÷  ò  ús   Œ	Ÿ(c                ó4  — t        |||d¬«      \  }}|d   }|r|n|d   j                  }t        j                  d«      |d<   |j                  d«      }t	        | «      5   ||fi |¤Ž}	d d d «       | j
                  j                  | 	|«      S # 1 sw Y   Œ&xY w)NTr†   r7   rz   r|   )r   r7   rA   rl   r   Úfake_tensor_converterÚfrom_meta_and_device)
rs   rT   rt   ru   r   r€   Úinput_devicer‚   r‡   rƒ   s
             r0   Únon_kwarg_tor™      sª   € ô
 1Øˆd�F¸ô�M€A€zð ˜hÑ'€LÙ!-‘°:¸gÑ3F×3MÑ3M€JÜ Ÿ<™<¨Ó/€JˆxÑØ
�.‰.˜Ó
!€CÜ	% iÓ	0ñ $Ù�Ñ#˜
Ñ#ˆ÷$ð ×*Ñ*×?Ñ?Ø�1�jóð ÷$ð $ús   Á
BÂBc                 ó   — y©NFrf   ri   s    r0   r*   r*   4  s   € Ør2   c           	     ó  ‡— dd„Š| j                   rjt        ˆfd„t        j                  ||j	                  «       «      D «       «      }|s2t
        j                  ||f«      \  }}t        | |||t        d«      «      S t        |«      ‚)Nc                ó°   — t        | t        «      r| j                  S t        | t        j                  t        j
                  t        j                  f«      ryy)NTF)rN   r   Ú_has_symbolic_sizes_stridesrA   ÚSymIntÚSymFloatÚSymBool©Úxs    r0   Úis_symbolicz3workaround_stride_incorrect_op.<locals>.is_symbolic?  s;   € Ü�aœÔ$Ø×0Ñ0Ð0Ü�aœ%Ÿ,™,¬¯©¼¿¹ÐFÔGØØr2   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr;   rf   )r=   r£   r¤   s     €r0   r?   z1workaround_stride_incorrect_op.<locals>.<genexpr>H  s   øè ø€ ò 
Ø ‰K˜�Nñ
ùó   ƒz2Cannot run fallback kernel for stride_incorrect_op)r£   Úobjectre   Úbool)
Úallow_fallback_kernelsrF   Ú	itertoolsÚchainÚvaluesÚpytreeÚtree_flattenr   ÚRuntimeErrorr   )rs   rT   rt   ru   Úrequire_dynamicÚ	flat_argsÚ	args_specr¤   s          @r0   Úworkaround_stride_incorrect_opr³   9  sŠ   ø€ óð ×'Ò'Üó 
Ü$-§O¡O°D¸&¿-¹-»/Ó$Jô
ó 
ˆñ Ü#)×#6Ñ#6¸¸f°~Ó#FÑ ˆI�yÜ&ØØØØô ÐQÓRóð ô ' tÓ
,Ð,r2   c                óT   — t        | «      5   ||i |¤Žcd d d «       S # 1 sw Y   y xY wr;   r“   rr   s       r0   Ú
resize_as_rµ   \  s.   € ô 
& iÓ	0ñ %Ù�TÐ$˜VÑ$÷%÷ %ò %ús   Œž'c                ó"   — t        | |g|¢­i |¤ŽS r;   )r„   rr   s       r0   Ú(_sparse_coo_tensor_with_dims_and_tensorsr·   d  s   € ô ˜	 4Ð9¨$Ò9°&Ñ9Ð9r2   c                ó
  — t        | dd «      }|€t        | dd «      }t        |t        «      ry |�|j                  j                  dk7  ry |j                  d«      j                  «       D �cg c]  }t        |«      ‘Œ c}S c c}w )NÚconstantÚreal_tensorr{   éÿÿÿÿ)ÚgetattrrN   r   r7   r5   ÚreshapeÚtolistÚint)Úoffsetsr¹   Úoffsets      r0   Ú_spdiags_static_offsetsrÂ   k  sw   € Ü�w 
¨DÓ1€HØÐÜ˜7 M°4Ó8ˆÜ�(œJÔ'ØØÐ˜8Ÿ?™?×/Ñ/°5Ò8ØØ&.×&6Ñ&6°rÓ&:×&AÑ&AÓ&CÖD˜FŒC��KÒDÐDùÒDs   Á+B c                ó¨   ‡— d}t        ||«      }| D ]=  }|dk  rt        ||z   |«      Šn||z
  Št        j                  ‰dk\  ˆfd„«       |‰z  }Œ? |S )Nr   c                 ó   •— d‰ › �S )Nz0Trying to create tensor with negative dimension rf   )Únnz_per_diags   €r0   ú<lambda>z_spdiags_nnz.<locals>.<lambda>€  s   ø€ ÐFÀ|ÀnÐU€ r2   )ÚminrA   Ú_check)rÀ   ÚrowsÚcolsÚ	diag_colsÚnnzÚpos_offset_limitrÁ   rÅ   s          @r0   Ú_spdiags_nnzrÎ   v  so   ø€ Ø
€CÜ˜4 Ó+ÐØò 	ˆØ�QŠ;Ü˜v¨™}¨iÓ8‰Là+¨fÑ4ˆLÜ�‰Ø˜AÑÛUô	
ð 	ˆ|Ñ‰ð	ð €Jr2   c                óf   — t        | |«      }t        t        ||«      dz
  d«      }t        ||d«      S )NrM   r   ©rÇ   Úmax)rÉ   rÊ   rË   Únon_positive_offset_maxÚpositive_offset_maxs        r0   Ú_spdiags_max_nnz_per_diagrÔ   †  s9   € Ü! $¨	Ó2ÐÜœc $¨	Ó2°QÑ6¸Ó:ÐÜÐ&Ð(;¸QÓ?Ð?r2   c               ó¶   — | j                   �| j                   j                  st        |«      ‚| j                   j                  «       }ddlm}  ||d|¬«       |S )Nr   ©Ú_constrain_range_for_sizerÐ   )Ú	shape_envÚallow_dynamic_output_shape_opsr   Úcreate_unbacked_symintÚ%torch.fx.experimental.symbolic_shapesr×   )rs   rT   Úmax_sizerÌ   r×   s        r0   Ú_spdiags_dynamic_sizerÝ   Œ  sR   € ð 	×ÑÐ#Ø×"Ñ"×AÒAä)¨$Ó/Ð/à
×
Ñ
×
4Ñ
4Ó
6€CåOá˜c q¨hÕ7Ø€Jr2   c                óH   — t        | t        «      xr t        | t        «       S r;   )rN   r¿   r¨   )Úvalues    r0   Ú_spdiags_is_static_intrà      s   € Ü�eœSÓ!ÒA¬*°U¼DÓ*AÐ&AÐAr2   c                óþ	  ‡‡‡‡— |j                  «       }t        j                  |dv d„ «       t        j                  t        |«      dk(  d„ «       ‰j                  «       }t        j                  |dv d„ «       |dk(  rdn|j	                  d«      Š|dk(  rdn‰j	                  d«      Št        j                  ‰‰k(  ˆˆfd	„«       ‰�Ht        j                  ‰t        j
                  t        j                  t        j                  fv ˆfd
„«       t        j                  ‰j                  t        j                  k(  ˆfd„«       t        j                  |j                  j                  dk(  xr ‰j                  j                  dk(  d„ «       |\  }}	|dk(  r|j	                  d«      n|j	                  d«      }
t        d„ ||	|
‰fD «       «      }t        ‰«      }|�5t        j                  t        |«      t        t        |«      «      k(  d„ «       ‰�‰nt        j
                  }|r|dk(  s|	dk(  rd}n?|�|rt        |||	|
«      }n,|r‰dk(  rd}n"|r‰t!        ||	|
«      z  nd }t#        | ||¬«      }t%        | «      5  t        j&                  |f|j                  d¬«      }t        j(                  j+                  d«      5  |t        j
                  k(  rŒt        j&                  d|ft        j                  d¬«      }t-        |t.        «      r|dk  nd}t        j0                  j2                  j4                  j7                  |||t        j                  d«      |¬«      }�nN|t        j                  k(  ržt        j&                  |dz   ft        j                  d¬«      }t        j&                  |ft        j                  d¬«      }t        j0                  j2                  j8                  j7                  |||||t        j                  d«      ¬«      }n�t        j&                  |	dz   ft        j                  d¬«      }t        j&                  |ft        j                  d¬«      }t        j0                  j2                  j8                  j7                  |||||t        j                  d«      ¬«      }d d d «       d d d «       | j:                  j=                  | |j                  «      S # 1 sw Y   Œ8xY w# 1 sw Y   Œ<xY w)N)rM   é   c                  ó   — y)Nz"Diagonals must be vector or matrixrf   rf   r2   r0   rÆ   z_spdiags.<locals>.<lambda>®  ó   � r2   râ   c                  ó   — y)NzOutput shape must be 2drf   rf   r2   r0   rÆ   z_spdiags.<locals>.<lambda>¯  rä   r2   )r   rM   c                  ó   — y)Nz Offsets must be scalar or vectorrf   rf   r2   r0   rÆ   z_spdiags.<locals>.<lambda>²  rä   r2   rM   r   c                 ó   •— d‰ › d‰› d�S )NzNumber of diagonals (z() does not match the number of offsets (ú)rf   )Ún_diagsÚ	n_offsetss   €€r0   rÆ   z_spdiags.<locals>.<lambda>¸  s   ø€ Ð'¨ yÐ0XÐYbÐXcÐcdÐe€ r2   c                 ó   •— d‰ › �S )NzFOnly output layouts (Sparse, SparseCsc, SparseCsr) are supported, got rf   )Úlayouts   €r0   rÆ   z_spdiags.<locals>.<lambda>¾  s   ø€ Ð\Ð]cÐ\dÐe€ r2   c                 ó"   •— d‰ j                   › �S )Nz+Offset Tensor must have dtype Long but got ©Údtype)rÀ   s   €r0   rÆ   z_spdiags.<locals>.<lambda>Â  s   ø€ Ð=¸g¿m¹m¸_ÐM€ r2   r{   c                  ó   — y)Nz,_spdiags is only implemented for CPU tensorsrf   rf   r2   r0   rÆ   z_spdiags.<locals>.<lambda>Æ  rä   r2   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr;   )rà   )r=   rß   s     r0   r?   z_spdiags.<locals>.<genexpr>Ë  s   è ø€ ò Ø*/Ô˜u×%ñùr@   c                  ó   — y)Nz'Offset tensor contains duplicate valuesrf   rf   r2   r0   rÆ   z_spdiags.<locals>.<lambda>Ó  rä   r2   )rÜ   r|   ©rï   r7   F)r7   Úis_coalesced)rì   r7   )ÚdimrA   rÈ   rR   ÚsizeÚ
sparse_cooÚ
sparse_cscÚ
sparse_csrrï   Úlongr7   r5   ÚallrÂ   ÚsetrÎ   rÔ   rÝ   r   ÚemptyÚsparseÚcheck_sparse_tensor_invariantsrN   r¿   ÚopsÚatenÚ_sparse_coo_tensor_unsafeÚdefaultÚ _sparse_compressed_tensor_unsafer–   r—   )rs   rT   Ú	diagonalsrÀ   Úshaperì   Údiagonals_dimÚoffsets_dimrÉ   rÊ   rË   Ústatic_sizesÚstatic_offsetsÚ
out_layoutrÌ   Úmax_nnzr¬   Úindicesrô   ÚoutÚcrow_indicesÚcol_indicesÚccol_indicesÚrow_indicesré   rê   s      ` `                  @@r0   Ú_spdiagsr  ¤  s*  û€ ð —M‘M“O€MÜ	‡L�L� &Ð(Ñ*VÔWÜ	‡L�L”�U“˜q‘Ñ"CÔDà—+‘+“-€KÜ	‡L�L� Ð&Ñ(RÔSà  AÒ%‰a¨9¯>©>¸!Ó+<€GØ  AÒ%‘¨7¯<©<¸«?€IÜ	‡L�LØ�9ÑÜeôð
 ÐÜ�‰Ø”u×'Ñ'¬×)9Ñ)9¼5×;KÑ;KÐLÐLÛeô	
ô 
‡L�LØ�‰œŸ™Ñ#ÛMôô 
‡L�LØ×Ñ×Ñ Ñ&ÒG¨7¯>©>×+>Ñ+>À%Ñ+GÙ>ôð
 �J€Dˆ$Ø%2°aÒ%7�	—‘˜qÔ!¸Y¿^¹^ÈAÓ=N€IÜñ Ø48¸$À	È9Ð3Uôó €Lô -¨WÓ5€NØÐ!Ü�‰Ü�Ó¤3¤s¨>Ó':Ó#;Ñ;Ù=ô	
ð
 "Ð-‘´5×3CÑ3C€JÙ˜ š d¨a¢iØ‰Ø	Ð	#©Ü˜>¨4°°yÓA‰Ù	˜) qš.Ø‰ñ ð Ô1°$¸¸iÓHÒHàð 	ô
 $ I¨t¸gÔFˆä	% iÓ	0ñ "Ü—‘˜c˜V¨9¯?©?À6ÔJˆÜ�\‰\×8Ñ8¸Ó?ñ  	ØœU×-Ñ-Ò-ÜŸ+™+ q¨# h´e·j±jÈÔP�Ü+5°c¼3Ô+?˜s ašxÀU�Ü—i‘i—n‘n×>Ñ>×FÑFØØØÜ Ÿ<™<¨Ó/Ø!-ð Gó ’ð œu×/Ñ/Ò/Ü$Ÿ{™{¨D°1©H¨;¼e¿j¹jÐQWÔX�Ü#Ÿk™k¨3¨&¼¿
¹
È6ÔR�Ü—i‘i—n‘n×EÑE×MÑMØ ØØØØ%Ü Ÿ<™<¨Ó/ð Nó ‘ô  %Ÿ{™{¨D°1©H¨;¼e¿j¹jÐQWÔX�Ü#Ÿk™k¨3¨&¼¿
¹
È6ÔR�Ü—i‘i—n‘n×EÑE×MÑMØ ØØØØ%Ü Ÿ<™<¨Ó/ð Nó �÷3 	÷"ðH ×*Ñ*×?Ñ?Ø�3˜	×(Ñ(óð ÷E 	ð  	ú÷"ð "ús&   É?AS3ËG.S'Ò0S3Ó'S0	Ó,S3Ó3S<c                óÐ  — |j                   t        j                  u rm|�t        d«      ‚t	        | «      5  t        j
                  t        |j                  «      |j                  d¬«      }d d d «       t        | |j                  «      S t	        | «      5   ||||¬«      }d d d «       | j                  j                  | |j                  «      S # 1 sw Y   ŒfxY w# 1 sw Y   Œ<xY w)Nz2dtype argument is not supported by sparse_to_denser|   ró   )rï   Úmasked_grad)rì   rA   r÷   r¯   r   rý   r[   r  rï   r   Úfake_devicer–   r—   )rs   rT   Úselfrï   r  r  s         r0   Ú	_to_denser    sÑ   € ð ‡{�{”e×&Ñ&Ñ&ØÐÜÐSÓTÐTÜ)¨)Ó4ñ 	Ü—+‘+Ü�d—j‘jÓ!Ø—j‘jØôˆC÷	ô ˜) S¨$×*:Ñ*:Ó;Ð;ä	% iÓ	0ñ ?Ù�4˜u°+Ô>ˆ÷?à×*Ñ*×?Ñ?Ø�3˜×(Ñ(óð ÷	ð 	ú÷?ð ?ús   µ6CÂCÃCÃC%c                óð   — t         j                  j                  | j                  v xrO | t        j
                  j                  t        j                  j                  t        j                  j                  fvS r;   )
rA   ÚTagÚdynamic_output_shapeÚtagsr  ÚindexÚTensorÚnonzeror  Úrepeat_interleave©rT   s    r0   rÆ   rÆ   *  sU   € ”—‘×/Ñ/°4·9±9Ð<ò TØÜ�J‰J×ÑœtŸ|™|×3Ñ3´T×5KÑ5K×5RÑ5RÐSð	Tð r2   c                ó   — t        |«      ‚r;   )r   rr   s       r0   Ú	dyn_shaper#  )  s   € ô & dÓ
+Ð+r2   F©Úunique_consecutivec               óÖ  — | j                   �| j                   j                  st        |«      ‚|r|j                  n|j                  }|€|€´ddlm}	m}
  |
|j                  «       «      s|j                  «       dk(  rd}nm| j                   j                  «       }t        j                  dz
  }|€|j                  «       n|j                  |«      } |
|«      st        |«      } |	||¬«       |€|r||_        n||_        |€|j                  |f«      g}n4 |j                  g |j                  d | ¢|‘|j                  |dz   d  ¢­Ž g}|d uxr" |j                   t#        j$                  d«      k(  }|s|r>|j                  |€|j                  n|j                  |   ft"        j&                  ¬«      }n!|j                  dt"        j&                  ¬«      }|j)                  |«       |s|rD|j                  |€|d   j                  n|d   j                  |   ft"        j&                  ¬«      }n!|j                  dt"        j&                  ¬«      }|j)                  |«       t+        |«      S )Nr   ©r×   Úhas_free_symbolsrM   ©rÑ   r{   rî   )rØ   rÙ   r   Úunique_consecutive_memoÚunique_memorÛ   r×   r(  ÚnumelrÚ   ÚsysÚmaxsizerö   r¿   Ú	new_emptyr  r  rA   r7   Úint64r^   r[   )rs   rT   rL   rõ   ÚsortedÚreturn_inverseÚreturn_countsr%  rÌ   r×   r(  Úmaxvalr,  ÚretÚreturn_if_dim_and_cpuÚinverseÚcountss                    r0   Ú_uniquer9  4  s  € ð 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/á);ˆ#×
%Ò
%ÀÇÁ€Cð €˜#˜+÷	
ñ
   §	¡	£Ô,°·±³ÀÒ1Að ‰Cà×%Ñ%×<Ñ<Ó>ˆCä—[‘[ 1‘_ˆFà#& ;�C—I‘I”K°C·H±H¸S³MˆEÙ# EÔ*Ü˜U›�á% c¨vÕ6àˆ;Ù!Ø.1�Õ+à"%�”à
€{à�}‰}˜c˜VÓ$Ð%‰ð ˆs�}‰}ÐJ˜cŸi™i¨¨˜oÐJ¨sÐJ°S·Y±Y¸sÀQ¹w¸yÐ5IÒJÐKˆà t˜OÒV°·±Ä5Ç<Á<ÐPUÓCVÑ0VÐÙÑ.Ø—-‘-Ø˜ˆC�IŠI¨3¯9©9°S©>Ð*;Ä5Ç;Á;ð  ó 
‰ð —-‘- ¬¯©�-Ó5ˆØ‡J�JˆwÔáÑ-Ø—‘Ø˜KˆC�‰F�LŠL¨c°!©f¯l©l¸3Ñ.?Ð-AÌÏÉð ó 
‰ð —‘˜q¬¯©�Ó4ˆØ‡J�JˆvÔä�‹:Ðr2   c           	     ó$   — t        | ||d |||«      S r;   ©r9  )rs   rT   rL   r1  r2  r3  s         r0   Úunique2r<  †  s   € ô �9˜d C¨¨v°~À}ÓUÐUr2   c           	     ó4   — t        | ||d ||d«      \  }}}||fS r›   r;  )rs   rT   rL   r1  r2  Úuniquesr7  Ú_countss           r0   Úuniquer@  ’  s1   € ô !(Ø�4˜˜d F¨N¸Eó!Ñ€GˆW�gð �GÐÐr2   c                ó   ‡‡‡— ddl m} ‰j                  rt        S ‰j	                  «       }t        j                  |dk7  d„ «       ‰dk\  r‰n‰|z   Š‰j                  ‰«      } |‰|k\  «      s |‰| k  «      rt        j                  dˆˆˆfd„«       t        ‰j                  «       «      }t        ‰j                  «       «      }	d }
 |‰dk\  «      r‰j                  «       ‰|	‰   z  z   }
n' |‰dk  «      r‰j                  «       ‰|z   |	‰   z  z   }
|
€S| j                  �"| j                  j                  s| j                  st        |«      ‚| j                  j                  «       }
|‰= |	‰= |
€t        d«      ‚‰j!                  ||	|
«      S )Nr   ©Úguard_or_falsec                  ó   — y)Nz-select() cannot be applied to a 0-dim tensor.rf   rf   r2   r0   rÆ   zmeta_select.<locals>.<lambda>°  rä   r2   Fc                 óH   •— d‰› dt        ‰j                  «       «      › d‰ › �S )Nzselect(): index z! out of range for tensor of size z at dimension )rZ   rö   )rõ   r  r  s   €€€r0   rÆ   zmeta_select.<locals>.<lambda>¹  s+   ø€ Ð& u gÐ-NÜ�D—I‘I“KÓ Ð! °¨uð6€ r2   z#new_storage_offset must not be None)rÛ   rC  Ú	is_sparseÚNotImplementedrõ   rA   Ú_check_indexrö   rZ   ÚstrideÚstorage_offsetrØ   Úallow_scalar_outputsr   rÚ   rO   Ú
as_strided)rs   rT   r  rõ   r  rC  Úndimrö   Únew_sizeÚ
new_strideÚnew_storage_offsets     ```      r0   Úmeta_selectrQ     s‡  ú€ õ Eà‡~‚~ÜÐà�8‰8‹:€DÜ	×ÑØ�‰	Ù?ôð
 ˜’‰#˜s T™z€CØ�9‰9�S‹>€Dá�e˜t‘mÔ$©°uÀ¸u±}Ô(EÜ×ÑØõ6ô	
ô �D—I‘I“KÓ €HÜ�d—k‘k“mÓ$€JàÐÙ�e˜q‘jÔ!Ø!×0Ñ0Ó2°U¸ZÈ¹_Ñ5LÑLÑÙ	˜ ™	Ô	"Ø!×0Ñ0Ó2°e¸d±lÀjÐQTÁoÑ5UÑUÐàÐ!Ø×ÑÐ&Ø×#Ñ#×8Ò8Ø×2Ò2ä.¨tÓ4Ð4ð '×0Ñ0×GÑGÓIÐà�ˆØ�3ˆØÐ!ÜÐBÓCÐCà�?‰?˜8 ZÐ1CÓDÐDr2   c           
     ó`   — t        | |||dk\  r|n|t        |j                  d«      z  |||«      S )Nr   rM   )r9  rÑ   rM  )rs   rT   rL   rõ   r1  r2  r3  s          r0   Ú
unique_dimrS  Ù  s>   € ô ØØØà�aŠx‰˜S¤3 s§x¡x°Ó#3Ñ3ØØØó	ð 	r2   c           
     ó(   — t        | |||d||d¬«      S )NFTr$  r;  )rs   rT   rL   r2  r3  rõ   s         r0   r%  r%  ï  s)   € ô ØØØØØØØØô	ð 	r2   c                óˆ  ‡‡‡— ddl mŠmŠm} dˆˆfd„}dˆˆfd„}t	        | «      dk(  rdgt	        |«      z  S t        t        j                  | d«      } ||dk(  «      }|r | || |«      «      rt        |«      S dgt	        |«      z  }	|rUt        t	        |«      dz
  dd«      D ]7  }
|
t	        |«      dz
  k(  rd|	|
<   Œt        ||
dz      d«      |	|
dz      z  |	|
<   Œ9 |	S t	        |«      dz
  }
|d   }d}d}t        t	        | «      dz
  dd«      D ]¨  }|| |   z  }|dk(  s' || |dz
     dk7  «      sŒ" |||dz
     ||z  k7  «      sŒ7|
dk\  rN |||k  «      s |||
   dk(  «      r5||z  |	|
<   |||
   z  }|
dz  }
|
dk\  r |||k  «      rŒ& |||
   dk(  «      rŒ5 |||k7  «      r y |dkD  sŒ�||dz
     }d}d}Œª |
dk7  ry |	S )Nr   )rC  Úguard_or_trueÚsym_eqc                ó   •— ‰r ‰| «      S | S r;   rf   )r£   rC  Úsize_obliviouss    €€r0   Úmaybe_guard_or_falsez-_compute_stride.<locals>.maybe_guard_or_false  s   ø€ ÙÙ! !Ó$Ð$àˆr2   c                ó   •— ‰r ‰| «      S | S r;   rf   )r£   rV  rY  s    €€r0   Úmaybe_guard_or_truez,_compute_stride.<locals>.maybe_guard_or_true  s   ø€ ÙÙ  Ó#Ð#àˆr2   rM   r»   )r£   r   re   r   )rÛ   rC  rV  rW  rR   r   ÚoperatorÚmulrZ   ÚrangerÑ   )Ú	old_shapeÚ
old_strideÚ	new_shaperY  rW  rZ  r\  r,  Ú
zero_numelrO  Úview_dÚchunk_base_strideÚtensor_numelÚ
view_numelÚtensor_drC  rV  s      `           @@r0   Ú_compute_strideri    sA  ú€ ÷ñ ööô ˆ9ƒ~˜ÒØˆs”S˜“^Ñ#Ð#ä”8—<‘< ¨AÓ.€EÙ% e¨q¡jÓ1€JÙÑ*©6°)¸YÓ+GÔHÜ�JÓÐà%& C¬#¨i«.Ñ$8€JáÜœC 	›N¨QÑ.°°BÓ7ò 	ˆFØœ˜Y›¨!Ñ+Ò+Ø%&�
˜6Ò"ô ˜	 &¨1¡*Ñ-¨qÓ1°J¸vÈ¹zÑ4JÑJð ˜6Ò"ð		ð Ðä�‹^˜aÑ€Fà%/°¡^ÐØ !€LØ€Jäœ#˜i›.¨1Ñ,¨b°"Ó5ò ˆØ˜	 (Ñ+Ñ+ˆà�qŠ=Ù 	¨(°Q©,Ñ 7¸1Ñ <Õ=Ù#Ø˜8 a™<Ñ(¨LÐ;LÑ,LÑLõð ˜A’+Ù# J°Ñ$=Ô>Ù'¨	°&Ñ(9¸QÑ(>Ô?à%/Ð2CÑ%C�
˜6Ñ"Ø˜i¨Ñ/Ñ/�
Ø˜!‘�ð ˜A’+Ù# J°Ñ$=Õ>Ù'¨	°&Ñ(9¸QÑ(>Õ?ñ # :°Ñ#=Ô>Ùà˜!‹|Ø$.¨x¸!©|Ñ$<Ð!Ø �Ø‘
ð/ð0 �‚|ØØÐr2   c                ó~   — t        | «      t        u r| S t        | t        j                  «      rddlm}  || d ¬«      S y )Nr   )Úoptimization_hint)Úfallback)r5   r¿   rN   rA   rŸ   rÛ   rk  )rß   rk  s     r0   Ú_optimization_hint_or_nonerm  T  s4   € ÜˆEƒ{”cÑØˆÜ�%œŸ™Ô&ÝKá  °Ô6Ð6Ør2   c                ó˜   — ddl m}  || |k(  «      ryt        | «      }t        |«      }|�|�||k7  ryt        j                  | |k(  «       y)Nr   rB  TF)rÛ   rC  rm  rA   rÈ   )ÚlhsÚrhsrC  Úlhs_hintÚrhs_hints        r0   Ú
_hinted_eqrs  ^  sR   € ÝDá�c˜S‘jÔ!Øä)¨#Ó.€HÜ)¨#Ó.€HØÐ˜8Ð+¨x¸8Ò/CØô
 
‡L�L�˜‘ÔØr2   c           	     óJ  — ddl m}m}  || j                  «       dk  «      ryt	        | j                  «       «      }|€y|dk  r't        j                  | j                  «       dk  «       yd}d}t        t        t        | j                  | j                  «       «      «      «      D ]|  \  }} ||dk(  «      rŒt	        |«      }|dk(  rt        j                  |dk(  «       Œ;t        ||«      st        ||«      s y| ||«      r|nt        j                  |d«      z  }||z  }Œ~ y)Nr   )rC  Úis_nested_intrâ   TFrM   )rÛ   rC  ru  r,  rm  rA   rÈ   Úreversedr[   Úzipr  rI  rs  Úsym_max)	ÚarC  ru  Ú
numel_hintÚexpected_strideÚexpected_stride_maxrö   rI  Ú	size_hints	            r0   Ú!_is_contiguous_with_hinted_checksr~  p  s
  € ßSá�a—g‘g“i !‘mÔ$Øä+¨A¯G©G«IÓ6€JØÐØØ�A‚~Ü�‰�Q—W‘W“Y ‘]Ô#Øà€OØÐÜ ¤¤s¨1¯7©7°A·H±H³JÓ'?Ó!@ÓAò  ‰ˆˆfÙ˜$ !™)Ô$Øä.¨tÓ4ˆ	Ø˜Š>Ü�L‰L˜ ™Ô#Øä˜& /Ô2¼:ØÐ'ô<
ñ à¡}°TÔ':™tÄÇÁÈdÐTUÓ@VÑVÐØ˜4Ñ‰ð ð" r2   c                óö   ‡— ddl mŠ t        j                  |d¬«      }t	        ˆfd„| j                  «       D «       «      xs8 t	        ˆfd„| j                  «       D «       «      xs t	        ˆfd„|D «       «      S )Nr   ©Úhas_guarding_hintF©Úvalidatec              3  ó0   •K  — | ]  } ‰|«       –— Œ y ­wr;   rf   ©r=   Úsr�  s     €r0   r?   z+_view_has_unbacked_input.<locals>.<genexpr>›  s   øè ø€ Ò7¨Ñ! !Ó$Ô$Ñ7ùó   ƒc              3  ó0   •K  — | ]  } ‰|«       –— Œ y ­wr;   rf   r…  s     €r0   r?   z+_view_has_unbacked_input.<locals>.<genexpr>œ  s   øè ø€ Ò<¨AÑ$ QÓ'Ô'Ñ<ùr‡  c              3  ó0   •K  — | ]  } ‰|«       –— Œ y ­wr;   rf   r…  s     €r0   r?   z+_view_has_unbacked_input.<locals>.<genexpr>�  s   øè ø€ Ò7¨AÑ$ QÓ'Ô'Ñ7ùr‡  )rÛ   r�  ÚutilsÚextract_shape_from_varargsrF   rö   rI  )ry  r  r�  s     @r0   Ú_view_has_unbacked_inputrŒ  “  sb   ø€ õ Hä×,Ñ,¨U¸UÔC€Eô 	Ó7¨a¯f©f«hÔ7Ó7ò 	8ÜÓ<°·±³Ô<Ó<ò	8äÓ7°Ô7Ó7ðr2   c                óä  ‡‡— ddl }ddlm} ddlmŠ dˆfd„}ddl} || j                  «       «      } ||«      }|r|syddlm}  |t        «      }	t        |«      t        |«      z   D ]?  }
|	|
j                  j                     j                  |
j                  j                  |
«       ŒA g }|	j                  «       D ].  }|j                  «       ^}}|D ]  }|j!                  ||f«       Œ Œ0 |sy|D ��ci c]0  \  }}|j                  j                  |j                  j                  “Œ2 }}}d„ Š	  ||j"                  ˆfd	„| j                  «       D «       d
«      } ||j"                  ˆfd„|D «       d
«      }|j%                  ||z
  j'                  |«      «      }|dk7  ry	 |D ]  \  }}t1        j2                  ||k(  «       Œ yc c}}w # t(        t*        t,        |j.                  f$ r Y yw xY w)aÀ  
    Collect candidate (x, y) pairs whose runtime hints match (so they
    *could* be equal), then test whether substituting them into the
    view's numel equation makes the equation symbolically zero.
    Only commit the equalities (adds the real Eq guards via bool(x == y)
    which triggers set_replacement) if the substitution actually solves
    the view validity check.

    This avoids polluting the shape env with spurious guards from probing.

    Returns True if at least one equality was committed.

    Conservative: only considers SymInts that appear as a top-level dim of
    the input or target (skipping the -1 marker), and skips already-equal
    pairs, and skips unbacked symbols.
    r   Nr   )Úfree_unbacked_symbolsc                óî   •— g }| D ]l  }t        |t        j                  «      sŒ|j                  j                  }|j
                  }t        |«      dk7  s||vrŒS ‰|«      rŒ\|j                  |«       Œn |S )z>Keep only SymInts whose expr is a single bare *backed* symbol.rM   )rN   rA   rŸ   ÚnodeÚexprÚfree_symbolsrR   r^   )Údimsr  r†  r‘  ÚfreerŽ  s        €r0   Ú_atomic_symsz3try_duck_specialization_first.<locals>._atomic_syms·  sr   ø€ à"$ˆØò 		ˆAÜ˜a¤§¡Ô.ØØ—6‘6—;‘;ˆDØ×$Ñ$ˆDÜ�4‹y˜AŠ~ ¨TÑ!1ØÙ$ TÔ*ØØ�J‰J�q�Mð		ð ˆ
r2   F)Údefaultdictc                óf   — t        | t        j                  «      r| j                  j                  S | S r;   )rN   rA   rŸ   r�  r‘  )r†  s    r0   Ú_expr_ofz/try_duck_specialization_first.<locals>._expr_ofè  s"   € Ü(¨¬E¯L©LÔ9ˆq�v‰v�{‰{Ð@¸qÐ@r2   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr;   rf   ©r=   r†  r˜  s     €r0   r?   z0try_duck_specialization_first.<locals>.<genexpr>ì  s   øè ø€ Ò'F¸©°¯Ñ'Fùr¦   rM   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr;   rf   rš  s     €r0   r?   z0try_duck_specialization_first.<locals>.<genexpr>í  s   øè ø€ Ò+G¸A©H°Q¯KÑ+Gùr¦   T)re   zlist[torch.SymInt])r]  Ú	functoolsr   rÛ   rŽ  Úsympyrö   Úcollectionsr–  r-   rZ   r�  ÚhintÚ
setdefaultr‘  r¬   r^   r^  ÚsimplifyÚsubsÚ	TypeErrorÚ
ValueErrorÚAttributeErrorÚSympifyErrorrA   rÈ   )ry  r  r]  r   r•  r�  Úa_symsÚtarget_symsr–  Úbucketsr†  Ú
candidatesÚmembersÚ	canonicalÚrestÚmÚcr¢  Úa_numelÚshape_numelÚdiffr˜  rŽ  s                        @@r0   Útry_duck_specialization_firstr³  ¡  sÕ  ù€ ó" Ý åKõó á˜!Ÿ&™&›(Ó#€FÙ˜uÓ%€KÙ™Øõ (á9DÄTÓ9J€GÜ�&‹\œD Ó-Ñ-ò 8ˆà�—‘—‘Ñ×'Ñ'¨¯©¯©°QÕ7ð8ð ;=€JØ—>‘>Ó#ò .ˆØ"Ÿ>™>Ó+Ðˆ	�DØò 	.ˆAØ×Ñ˜y¨!˜nÕ-ñ	.ð.ñ
 Øð .8÷*Ù%) Q¨ˆ�‰�‰�Q—V‘V—[‘[Ñ ð*€Dñ *ò
AðÙ˜Ÿ™Ó'F¸Q¿V¹V»XÔ'FÈÓJˆÙ˜XŸ\™\Ó+GÀÔ+GÈÓKˆØ�~‰~˜w¨Ñ4×:Ñ:¸4Ó@ÓAˆØ�1Š9Øð ð ò ‰ˆˆ1Ü�‰�Q˜!‘VÕðàùó)*øô ”z¤>°5×3EÑ3EÐFò Ùðús   Ã65GÄ2A0G ÇG/Ç.G/c                ór  ‡ ‡— ddl m} ddlm}m} t        j                  ‰d¬«      Št        j                  ‰‰ j                  «       «      Š‰ j                  dk(  rO‰ }‰D ]:  }	t        j                  |	dk(  «       t        j                  j                  |d«      }Œ< |‰ u r |‰ «      S |S t        ‰«      dk(  rY‰ }‰ j                  D ]:  }	t        j                  |	dk(  «       t        j                  j!                  |d«      }Œ< |‰ u r |‰ «      S |S t#        t$        j&                  ‰d«      }
t        j                  ‰ j                  «       |
k(  ˆ ˆfd„«       t        ‰«      t        ‰ j                  «      k(  r! | |‰‰ j                  «      «      r |‰ «      S |rt)        ‰ «      r)nt+        ‰ «      rt-        ‰«      }‰ j/                  ‰|«      S t1        ‰ j3                  «       ‰ j5                  «       ‰|¬	«      }|�‰ j/                  ‰|«      S |r½t        j6                  j8                  j:                  j<                  st?        ‰ ‰«      rƒt        j6                  j8                  j:                  j@                  r|stC        ‰ ‰«      rtE        ‰ ‰d
|d
¬«      S tG        ‰ «      rt-        ‰«      }‰ j/                  ‰|«      S tE        ‰ ‰d|¬«      S |r;t-        ‰«      }‰ jI                  t        jJ                  ¬«      j/                  ‰|«      S d‰ j                  › d‰ j5                  «       › d‰› d�}tM        |«      ‚)Nr   )Úview_of©rC  rW  Fr‚  rM   r»   c                 ó*   •— d‰ j                   › d‰› d�S )Nz&Could not reshape a tensor with shape ú as a tensor with shape ú!)r  )ry  r  s   €€r0   rÆ   z%_view_unbacked_meta.<locals>.<lambda>%  s   ø€ Ð8¸¿¹¸	ÐAYÐZ_ÐY`Ð`aÐb€ r2   )rY  T)Úsize_oblivious_enabledÚ
allow_copyÚtried_duck_specialize)rº  r»  ©Úmemory_formatz Cannot view a tensor with shape z and strides r¸  r¹  )'Útorch._primsrµ  rÛ   rC  rW  rŠ  r‹  Ú
infer_sizer,  rM  rA   rÈ   Ú_refsÚ	unsqueezerR   r  Úsqueezer   r]  r^  r   r   r   rL  ri  rö   rI  ÚfxÚexperimentalÚ_configÚbacked_size_obliviousrŒ  Úunify_view_symbols_bso_metar³  Ú_view_unbacked_metar~  ÚcloneÚcontiguous_formatr¤  )ry  r  rº  r»  r¼  rµ  rC  rW  Ú_aÚlengthr±  ÚstridesÚnew_stridesÚmsgs   ``            r0   rÉ  rÉ  ú  sÏ  ù€ õ %ßLô ×,Ñ,¨U¸UÔC€Eô ×Ñ˜U A§G¡G£IÓ.€Eð 	‡v�v�‚{ØˆØò 	/ˆFÜ�L‰L˜ 1™Ô%Ü—‘×&Ñ& r¨2Ó.‰Bð	/ð �‰7Ù˜1“:ÐàˆIô ˆ5ƒz�Q‚ØˆØ—g‘gò 	-ˆFÜ�L‰L˜ 1™Ô%Ü—‘×$Ñ$ R¨Ó,‰Bð	-ð �‰7Ù˜1“:ÐàˆIäœŸ™ u¨aÓ0€Kä	‡L�LØ	�‰‹	�[Ñ Übôô
 ˆ5ƒz”S˜Ÿ™“\Ò!¡n±V¸EÀ1Ç7Á7Ó5KÔ&LÙ�q‹zÐá$:Ô˜aÕ ÄÈaÔ@PÜ-¨eÓ4ˆØ�|‰|˜E 7Ó+Ð+ä!Ø	�‰‹�!—(‘(“*˜eÐ4Jô€Kð ÐØ�|‰|˜E ;Ó/Ð/ñ Ü�‰×Ñ×%Ñ%×;Ò;Ü# A uÔ-ô �H‰H×!Ñ!×)Ñ)×EÒEÙ)Ü-¨a°Ô7ä&ØØØ'+Ø%Ø&*ôð ô -¨QÔ/Ü1°%Ó8ˆGØ—<‘<  wÓ/Ð/ä"Øˆu¨U¸zô
ð 	
ñ Ü-¨eÓ4ˆà�w‰w¤U×%<Ñ%<ˆwÓ=×HÑHÈÐPWÓXÐXà,¨Q¯W©W¨I°]À1Ç8Á8Ã:À,ÐNfÐglÐfmÐmnÐ
o€CÜ
�S‹/Ðr2   c           
     óŠ  — |j                   s|j                  rt        S t        j                  g |¢|j                  «       ‘­Ž }t        |«      r<t        | ||g|¢­Ž }t        t        |j                  t        j                  ¬«      «      S t        | |t        t        |j                  t        j                  ¬«      «      g|¢­Ž S ©Nr½  )rF  Ú	is_mkldnnrG  rŠ  rÀ  r,  r   Ú
_view_metaÚtyping_castr   rÊ  rA   rË  )rs   rT   ry  r  Úviews        r0   Ú_reshape_copyr×  f  s¯   € ð 	‡{‚{�a—k’kÜÐô ×ÑÐ/˜eÐ/ Q§W¡W£YÒ/€EÜ˜aÔ Ü˜) T¨1Ð5¨uÒ5ˆÜÜ˜Ÿ
™
´×1HÑ1H˜
ÓIó
ð 	
ô ØØÜœ
 A§G¡G¼%×:QÑ:Q GÓ$RÓSð
ð ò	
ð 	
r2   ©r»  c               ó  — t         j                  j                  j                  j                  st        ||«      rt        t        t        |||¬«      «      S t        t        t        j                  j                  |g|¢­d|iŽ«      S )NrØ  r»  )rA   rÄ  rÅ  rÆ  rÇ  rŒ  rÕ  r   rÉ  rÁ  Ú_reshape_view_helper)rs   rT   ry  r»  r  s        r0   rÔ  rÔ  }  sv   € ô ‡x�x×Ñ×$Ñ$×:Ò:Ô>VØ	ˆ5ô?ô ÜÔ+¨A¨uÀÔLó
ð 	
ô ÜÜ�K‰K×,Ñ,¨QÐN°ÒNÀ:ÑNó
ð 	
r2   )r  c               óZ   — t        | ||g|¢­ddiŽ}|�|S t        j                  d„ |«      S )Nr»  Tc                óB   — | j                  t        j                  ¬«      S rÒ  )rÊ  rA   rË  r¢   s    r0   rÆ   z!_view_meta_copy.<locals>.<lambda>¤  s   € �!—'‘'¬×(?Ñ(?�'Ó@€ r2   )rÔ  r­   Útree_map)rs   rT   ry  r  r  Úresults         r0   Ú_view_meta_copyrß  “  s=   € ô ˜	 4¨ÐD¨UÒD¸tÑD€Fà
€Øˆä�?‰?Ù@Øóð r2   c                óÒ   — |€U| j                   �| j                   j                  st        |«      ‚| j                   j                  «       }ddlm}  ||«       |j                  |«      S )Nr   rÖ   )rØ   rÙ   r   rÚ   rÛ   r×   r/  )rs   rT   ÚrepeatsÚoutput_sizer×   s        r0   Úrepeat_interleave_tensorrã  ©  sc   € ð Ðà×ÑÐ'Ø×&Ñ&×EÒEä-¨dÓ3Ð3à×)Ñ)×@Ñ@ÓBˆõ 	Tá! +Ô.à×Ñ˜[Ó)Ð)r2   c                óö  — |j                   x}�|S | j                  �"| j                  j                  s| j                  st        |«      ‚t	        |j
                  «      r| j                  j                  «       }nxt        |j
                  «      r| j                  j                  «       }nHt        |j
                  «      r| j                  j                  «       }nt        d|j
                  › �«      ‚||_         |S )Nz local_scalar_dense/item NYI for )Ú	item_memorØ   rK  r   r   rï   Úcreate_unbacked_symfloatr   rÚ   r   Úcreate_unbacked_symboolÚNotImplementedError)rs   rT   rL   rƒ   s       r0   Úlocal_scalar_denseré  Á  sÌ   € ð
 �]‰]ÐˆÐ'ØˆØ×ÑÐ"Ø×Ñ×4Ò4Ø×.Ò.ô +¨4Ó0Ð0Ü�c—i‘iÔ Ø×Ñ×8Ñ8Ó:‰Ü	˜#Ÿ)™)Ô	$Ø×Ñ×6Ñ6Ó8‰Ü	˜#Ÿ)™)Ô	$Ø×Ñ×7Ñ7Ó9‰ä!Ð$DÀSÇYÁYÀKÐ"PÓQÐQØ€C„MØ€Hr2   c                ó†   — t         j                  j                  j                  j	                  |«      j                  d«      S )NrM   )rA   r   r  r  r  Úunbind)rs   rT   rL   s      r0   Únonzero_numpyrì  Ú  s.   € ô �9‰9�>‰>×!Ñ!×)Ñ)¨#Ó.×5Ñ5°aÓ8Ð8r2   c                óJ  — | j                   �| j                   j                  st        |«      ‚|j                  x}�€4ddlm}m} ddlm} ddl	m
}  ||j                  «       «      s|j                  «       dk(  rd}ní| j                   j                  «       }t        j                  dz
  } ||j                  «       «      st        |j                  «       «      }n†t!        j"                  |j$                  «      j&                  }	 ||	j(                  |	j                   j*                  «      }
t-        |
j.                  |«      rt        j                  dz
  }n|
j.                  } |||¬«       ||_        |j1                  ||j3                  «       fd|ft4        j6                  ¬«      S )Nr   r'  ©ÚIntInfinity©Úbound_sympyrM   r)  rî   )rØ   rÙ   r   Únonzero_memorÛ   r×   r(  Útorch.utils._sympy.numbersrï  Útorch.utils._sympy.value_rangesrñ  r,  rÚ   r-  r.  r¿   ÚmathÚprodr  r�  r‘  Úvar_to_rangerN   ÚupperÚnew_empty_stridedrõ   rA   r0  )rs   rT   rL   rÌ   r×   r(  rï  rñ  r4  Ú	prod_nodeÚ
prod_ranges              r0   r  r  á  sI  € ð 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/à×ÑÐˆÑ(÷	
õ 	;Ý?á §	¡	£Ô,°·±³ÀÒ1Að ‰Cà×%Ñ%×<Ñ<Ó>ˆCä—[‘[ 1‘_ˆFá# C§I¡I£KÔ0Ü˜SŸY™Y›[Ó)‘ä ŸI™I c§i¡iÓ0×5Ñ5�	Ù(Ø—N‘N I×$7Ñ$7×$DÑ$Dó�
ô ˜j×.Ñ.°Ô<Ü Ÿ[™[¨1™_‘Fà'×-Ñ-�Fá% c¨vÕ6àˆÔØ× Ñ  # s§w¡w£yÐ!1°A°s°8Ä5Ç;Á;Ð ÓOÐOr2   c                óÒ  — t        |«      dk7  rt        dt        |«      › d�«      ‚|€œ| j                  �| j                  j                  st	        |«      ‚| j                  j                  «       }t        j                  dz
  }ddlm	}m
}  ||j                  «       «      st        |j                  «       «      } ||d|¬«       |g|j                  dd  ¢­}|j                  |«      S )NrM   z&Only one jagged dim is supported, got z offsetsr   r'  rÐ   râ   )rR   rO   rØ   rÙ   r   rÚ   r-  r.  rÛ   r×   r(  r,  r¿   r  r/  )	rs   rT   ÚpaddedrÀ   Útotal_Lr4  r×   r(  Úoutput_shapes	            r0   Ú_padded_dense_to_jagged_forwardr     s×   € ô ˆ7ƒ|�qÒÜØ4´S¸³\°NÀ(ÐKó
ð 	
ð €à×ÑÐ'Ø×&Ñ&×EÒEô .¨dÓ3Ð3à×%Ñ%×<Ñ<Ó>ˆä—‘˜q‘ˆ÷	
ñ
   §¡£Ô/Ü˜Ÿ™›Ó(ˆFá! '¨q°fÕ=àÐ/˜fŸl™l¨1¨2Ð.Ñ/€LØ×Ñ˜LÓ)Ð)r2   c                ó6  — ddl m}m}  | ||dk\  || k  «      «      r|S  | ||dk  ||  k\  «      «      r|| z   S  |||  k  «      ry ||| kD  «      r| S  ||dk\  «      rt        j                  || «      S  ||dk  «      rt        j
                  || z   d«      S y )Nr   )rC  Úsym_and)rÛ   rC  r  rA   Úsym_minrx  )rö   r  rC  r  s       r0   Ú_compute_slice_indexr  =  s§   € ßMá‘g˜e q™j¨%°4©-Ó8Ô9ØˆÙ	™ ¨¡	¨5°T°E©>Ó:Ô	;Ø�t‰|ÐÙ	˜  ™Ô	&ØÙ	˜ ™Ô	%ØˆÙ	˜ ™
Ô	#Ü�}‰}˜U DÓ)Ð)Ù	˜ ™	Ô	"Ü�}‰}˜U T™\¨1Ó-Ð-àr2   c                ó  — ddl m}m} | j                  }	|j	                  «       }
|
dk(  rt        d«      ‚t        |j	                  «       |«      }t        |j                  «       «      }t        |j                  «       «      }|dk  rt        d«      ‚|€dnt        ||   |«      } ||t        j                  k(  «      s|€||   nt        ||   |«      }d }|�N|�L |||k\  «      r||z
  |z   dz
  |z  }n2 |||k\  «      rd}n$t        j                  ||z
  d«      }||z   dz
  |z  }|€P|	€t        d«      ‚|	j!                  «       }t        j"                  |dk\  «       t        j"                  |||   k  «       ||   |z  }|�|j%                  «       |||   z  z   }n5|	€t        d«      ‚|	j!                  «       }t        j"                  |dk\  «       |||<   |||<   |j&                  rt)        d«      ‚|j+                  |||«      S )Nr   )rC  Ústatically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiverM   z$Must have shape_env to create symintz<Slice decomposition for quantized tensors aren't implemented)rÛ   rC  r  rØ   rõ   r¯   r   rZ   rö   rI  r  r-  r.  rA   rx  rO   rÚ   rÈ   rJ  Úis_quantizedrè  rL  )rs   rT   r  rõ   ÚstartÚendÚsteprC  r  rØ   rM  ÚsizesrÎ  Ústart_indexÚ	end_indexrN  r²  rO  rJ  s                      r0   Úslice_forwardr  P  s(  € ÷ð
 ×#Ñ#€IØ�8‰8‹:€DØˆq‚yÜÐIÓJÐJÜ
˜4Ÿ8™8›: sÓ
+€CÜ�—‘“Ó€EÜ�4—;‘;“=Ó!€Gàˆq‚yÜÐ8Ó9Ð9ð �}‘!Ô*>¸uÀS¹zÈ5Ó*Q€Kñ ! ¬¯©Ñ!3Ô4¸¸ð 	ˆcŠ
ä! %¨¡*¨cÓ2ð ð $(€HØÐ 9Ð#8Ù˜) {Ñ2Ô3Ø! KÑ/°$Ñ6¸Ñ:¸tÑC‰HÙ˜K¨9Ñ4Ô5Ø‰Hô
 —=‘= ¨[Ñ!8¸!Ó<ˆDØ˜t™ a™¨DÑ0ˆHð ÐØÐÜ Ð!GÓHÐHØ×3Ñ3Ó5ˆÜ�‰�X ‘]Ô#Ü�‰�X  s¡Ñ+Ô,ð ˜‘ Ñ$€Jð ÐØ×,Ñ,Ó.°¸wÀs¹|Ñ1KÑK‰àÐÜ Ð!GÓHÐHØ"×9Ñ9Ó;ˆÜ�‰�^ qÑ(Ô)à€Eˆ#�JØ€GˆC�LØ×ÒÜ!ØJó
ð 	
ð �‰˜u g¨~Ó>Ð>r2   c                ó�  — | j                   �| j                   j                  st        |«      ‚| j                   j                  «       }t        j
                  dz
  }ddlm}m} ddl	m
} ddlm}	  ||j                  «       «      st        |j                  «       «      }
n†t        j                   |j"                  «      j$                  } |	|j&                  |j                   j(                  «      }t+        |j,                  |«      rt        j
                  dz
  }
n|j,                  }
|
dkD  r|
} |||¬«       |j/                  |f«      S )NrM   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÷  rN   rø  r/  )rs   rT   r  ÚmaskrÌ   r4  r×   r(  rï  rñ  Únum_elementsrú  rû  s                r0   Úmasked_selectr  ž  s   € ð
 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/à
×
Ñ
×
4Ñ
4Ó
6€Cô �[‰[˜1‰_€F÷õ 7Ý;ñ
 ˜DŸJ™J›LÔ)Ü˜4Ÿ:™:›<Ó(‰ä—I‘I˜dŸj™jÓ)×.Ñ.ˆ	Ù  §¡°×1DÑ1D×1QÑ1QÓRˆ
Ü�j×&Ñ&¨Ô4ÜŸ;™;¨™?‰Là%×+Ñ+ˆLØ�aÒØˆá˜c vÕ.à�>‰>˜3˜&Ó!Ð!r2   )r7   rì   c               óÞ  — |�2|j                  «       |k7  rt        d|› d|j                  «       › �«      ‚|�2|j                  «       |k7  rt        d|› d|j                  «       › �«      ‚|�*|j                  |k7  rt        d|› d|j                  › �«      ‚|�*|j                  |k7  rt        d|› d|j                  › �«      ‚|�+|j
                  |k7  rt        d|› d|j
                  › �«      ‚y y )Nz!Tensor sizes mismatch! Expected: z, Got: z#Tensor strides mismatch! Expected: z!Tensor dtype mismatch! Expected: z"Tensor layout mismatch! Expected: z"Tensor device mismatch! Expected: )rö   rO   rI  rï   rì   r7   )rs   rT   Útr  rÎ  rï   r7   rì   s           r0   Úassert_tensor_metadatar  Ê  s  € ð ÐØ�6‰6‹8�uÒÜ Ø3°E°7¸'À!Ç&Á&Ã(ÀÐLóð ð ÐØ�8‰8‹:˜Ò Ü Ø5°g°Y¸gÀaÇhÁhÃjÀ\ÐRóð ð ÐØ�7‰7�eÒÜ Ø3°E°7¸'À!Ç'Á'ÀÐKóð ð ÐØ�8‰8�vÒÜ Ø4°V°H¸GÀAÇHÁHÀ:ÐNóð ð ÐØ�8‰8�vÒÜ Ø4°V°H¸GÀAÇHÁHÀ:ÐNóð ð ð r2   c                óN   — t         j                  j                  | j                  v S r;   )rA   r  Údata_dependent_outputr  r!  s    r0   rÆ   rÆ   ò  s   € œuŸy™y×>Ñ>À$Ç)Á)ÐK€ r2   c                ó   — t        |«      ‚r;   )r   rr   s       r0   Údata_depr  ò  s   € ô ' tÓ
,Ð,r2   c                ó†   — |D ]<  }|€Œ|j                   t        j                  t        j                  fv sŒ3t	        | «      ‚ y r;   )rï   rA   r¨   Úuint8r   )rT   r  r  r  s       r0   Úcheck_no_bool_index_tensorsr  û  s<   € ð ò 4ˆØÑ §¡´·±¼U¿[¹[Ð0IÒ!IÜ-¨dÓ3Ð3ñ4r2   c                ó  — t        |||d¬«      \  }}|d   j                  }t        | «      5   ||i |¤Ž}t        |«      s|j	                  |j
                  «      }d d d «       |d   u r|S t        | ||«      S # 1 sw Y   ŒxY w©NTrx   rz   )r   r7   r   r8   r/  r  r   )rs   rT   rt   ru   r   r€   r‚   r  s           r0   Ú)run_and_return_new_tensor_of_input_devicer    s–   € ô 1Ø�4 ÀTô�M€A€zð ˜GÑ$×+Ñ+€JÜ	% iÓ	0ñ +Ù�DÐ#˜FÑ#ˆÜ)¨*Ô5Ø—-‘- §	¡	Ó*ˆC÷+ð
 ˆj˜Ñ!Ñ!Øˆ
Ü�i  jÓ1Ð1÷+ð +ús   ­/A:Á:Br  ÚprimsÚprimc                ó&   — | j                   t        v S r;   )Ú	namespaceÚ_is_builtin_namespacesri   s    r0   Ú
is_builtinr%    s   € Ø�<‰<Ô1Ð1Ð1r2   c                ó^   — t         j                  j                  | j                  «       d«      S )NÚMeta)rA   rB   Ú._dispatch_has_computed_kernel_for_dispatch_keyr‹   r!  s    r0   r+   r+     s    € Ü�8‰8×BÑBÀ4Ç9Á9Ã;ÐPVÓWÐWr2   c                ót   — t        | «      xr, | j                  «       j                  d«      xr t        | «      S )Nzaten::_foreach_)r%  r‹   Ú
startswithr+   r!  s    r0   rÆ   rÆ   %  s4   € ”˜DÓ!ò Ø�	‰	‹×ÑÐ0Ó1òä�‹ð r2   c           	     ól  — t        j                  ||j                  «       «      D �cg c]B  }t        |t        t
        f«      r*t        |«      rt        |d   t        j                  «      r|‘ŒD }}	 t        | «      5   ||i |¤Ž}d d d «       s|S |st        d«      ‚g }t        |«      D ][  \  }}	t        j                  ||D �
cg c]  }
|
|   ‘Œ	 c}
«      \  }}|j!                  | j"                  j%                  | |	|«      «       Œ] |S c c}w # 1 sw Y   ŒŒxY w# t        $ r	 t        cY S w xY wc c}
w )Nr   ztensor_lists must not be empty)rª   r«   r¬   rN   rZ   r[   rR   rA   r  r   rè  rG  rO   Ú	enumerater   Ú_find_common_devicer^   r–   r—   )rs   rT   rt   ru   rL   Útensor_listsÚout_metaÚout_fakeÚiÚmeta_tÚtlr7   r   s                r0   Ú foreach_run_and_map_input_devicer4  $  s1  € ô —?‘? 4¨¯©«Ó9öàÜ�cœD¤%˜=Ô)Ü�ŒHÜ�s˜1‘vœuŸ|™|Ô,ò	 	ð€Lð ðÜ)¨)Ó4ñ 	-Ù˜TÐ, VÑ,ˆH÷	-ñ
 ØˆáÜÐ=Ó>Ð>Ø€Hä˜xÓ(ò 
‰	ˆˆ6Ü×2Ñ2°4È,Ö9WÀB¸"¸Q»%Ò9WÓX‰	ˆ�Ø�‰Ø×+Ñ+×@Ñ@Ø˜6 6óõ	
ð
ð €Oùò;÷	-ð 	-ûäò ÜÒðüò :Xs6   §ADÁ1D Á<	DÂD ÃD1ÄDÄD ÄD.Ä-D.c                ó²   — ddl m} t        |||d¬«      \  }}|d   j                  }| 5   ||i |¤Ž}|j	                  |«      cd d d «       S # 1 sw Y   y xY w)Nr   )Úmeta_index_TensorTrx   rz   )Útorch._meta_registrationsr6  r   r7   Úto)	rs   rT   rt   ru   r6  r   r€   r‚   r  s	            r0   Úindex_tensorr9  O  sc   € õ <ä0Ø�4 ÀTô�M€A€zð ˜GÑ$×+Ñ+€Jà	ñ "Ù Ð0¨Ñ0ˆØ�v‰v�jÓ!÷"÷ "ò "ús   ªAÁAc                óN   — ddl m} | 5   ||i |¤Žcd d d «       S # 1 sw Y   y xY w)Nr   )Úmeta_embedding_bag)r7  r;  )rs   rT   rt   ru   r;  s        r0   Úembedding_bagr<  b  s,   € õ =à	ñ 3Ù! 4Ð2¨6Ñ2÷3÷ 3ò 3ús   ‰›$c           	     óD  — ddl m} t        |||d¬«      \  }}|d   }|d   }|j                  |j                  k7  r8|j                  j                  dk7  r|j                  j                  dk7  rt
        S | 5  t        t         ||i |¤Ž«      cd d d «       S # 1 sw Y   y xY w)Nr   )Ú	embeddingTrx   Úweightr  r|   )r7  r>  r   r7   r5   rG  rÕ  r   )	rs   rT   rt   ru   Úmeta_embeddingr   r€   r?  r  s	            r0   r>  r>  l  sŸ   € õ Fä0Ø�4 ÀTô�M€A€zð ˜Ñ!€FØ˜Ñ#€Gà�‰˜Ÿ™Ò'Ø�M‰M×Ñ &Ò(Ø�N‰N×Ñ 6Ò)äÐà	ñ HÜœ:¡~°tÐ'F¸vÑ'FÓG÷H÷ Hò Hús   Á6BÂBc                ó   — t        | |||«      S r;   )r  rr   s       r0   Úmulti_device_op_defaultrB  ƒ  s   € ô 5°YÀÀdÈFÓSÐSr2   c                ó€   — t        | «      5   ||i |¤Ž d d d «       t        |||d¬«      \  }}|d   S # 1 sw Y   Œ xY wr  )r   r   )rs   rT   rt   ru   r   r€   s         r0   Úmulti_device_op_outrD  �  sT   € ô
 
& iÓ	0ñ ÙˆdÐ�fÒ÷ô 1Ø�4 ÀTô�M€A€zð �gÑÐ÷ð ús   Œ	4´=c                óR  ‡‡‡— t        ‰||d¬«      \  }}|d   Š|d   j                  Št        j                  ‰‰j                  k(  xs$ ‰j                  dk(  xr ‰j                  «       dk(  ˆˆˆfd„«       t        | ‰||«      }‰t        j                  j                  u r|d   S |S )NTrx   r¬   rz   r   rM   c                 ó0   •— d‰ › d‰› d‰j                   › d�S )NzMismatching z device between self (z) and values (rè   r6   )rT   Úself_devicer¬   s   €€€r0   rÆ   z index_put_impl.<locals>.<lambda>ª  s&   ø€ �,˜t˜fÐ$:¸;¸-À~ÐV\×VcÑVcÐUdÐdeÐf€ r2   )
r   r  rA   rÈ   rM  r,  r  r  Ú
index_put_r  )	rs   rT   rt   ru   r   r€   r  rG  r¬   s	    `     @@r0   Úindex_put_implrI  ž  s¨   ú€ ô
 1Ø�4 ÀTô�M€A€zð ˜Ñ!€FØ˜WÑ%×1Ñ1€KÜ	‡L�LØ�v×)Ñ)Ñ)ÒW¨f¯k©k¸QÑ.>Ò.VÀ6Ç<Á<Ã>ÐUVÑCVÝfôô
 4°I¸tÀTÈ6Ó
R€CØŒt�‰×&Ñ&Ñ&Ø˜'Ñ"Ð"àˆ
r2   c                ó   — t        |«      ‚r;   )r   rr   s       r0   Únested_tensors_unsupportedrK  ´  s   € ô ' tÓ
,Ð,r2   c                ó0   — |t         v rt        d|› �«      ‚y )NzNYI: )Ú_device_not_kwarg_opsrO   rr   s       r0   ÚnyirN  ¾  s#   € ð  Ô$Ñ$Ü˜u T F˜^Ó,Ð,ð %r2   c           
     ó¤  ‡ ‡‡— t        |||d¬«      \  }}|d   }|d   }|t        j                  j                  t        j                  j                  t        j                  j
                  fv rW|j                  |j                  k7  r>|j                  s2‰ j                  s&t        d|j                  › d|j                  › d�«      ‚|j                  Š‰ 5  |j                  }dd	lmŠ t        ˆfd
„|j                  D «       «      xr t        ˆfd„|j                  D «       «      }	|	sd }
nÚ|j!                  d«      }t#        |d   |d   |d   |d   |d   |d   |¬«      }|€|j!                  d«      |d<   t%        j&                  j(                  ||fi |¤Ž}|dk(  rH|j                  s<|j*                  s0|j-                  «       j/                  d«      }|j/                  d«      }t$        j&                  j1                  |||«      }
d d d «       	 	 	 	 	 	 dˆˆ fd„}t3        ‰ «      5   |di |¤Ž}|t        j                  j                  t        j                  j                  t        j                  j
                  fv r ||
«      cd d d «       S  ||d   
«       ||d   |
«       ||d   d «      fcd d d «       S # 1 sw Y   Œ·xY w# 1 sw Y   y xY w)NTrx   rz   r?  zInput type (z) and weight type (z) should be the samer   r€  c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr;   rf   r…  s     €r0   r?   zconv.<locals>.<genexpr>ü  s   øè ø€ ÒD°!Ñ*¨1×-ÑDùr¦   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr;   rf   r…  s     €r0   r?   zconv.<locals>.<genexpr>ü  s   øè ø€ ò M
Ø%&Ñ˜a× ñM
ùr¦   ÚbiasrI  ÚpaddingÚdilationÚ
transposedÚoutput_paddingÚgroups)rI  rS  rT  rU  rV  rW  rR  Ú
bias_sizesé   râ   c                óü   •— | €| S |�i| j                  «       dk(  rD|t        j                  k(  r1| j                  d«      j	                  |¬«      j                  d«      } n| j	                  |¬«      } t        ‰| ‰«      S )NrY  râ   r½  )rõ   rA   Úchannels_lastrÂ  r8  rÃ  r   )r  Úmem_fmtr7   rs   s     €€r0   Úconvertzconv.<locals>.convert!  st   ø€ ð ˆ9ØˆHØÐà�u‰u‹w˜!Š| ¬5×+>Ñ+>Ò >Ø—K‘K “N×%Ñ%°GÐ%Ó<×DÑDÀQÓG‘à—D‘D w�DÓ/�Ü˜) Q¨Ó/Ð/r2   rM   )r  ztorch.Tensor | Noner\  ztorch.memory_format | Nonere   úFakeTensor | Nonerf   )r   r  Úconvolutionr  Ú_convolutionÚ
deprecatedrï   rÓ  Úallow_non_fake_inputsr¯   r  rM  rÛ   r�  rû   r  rD   r-   rA   rB   Ú_select_conv_backendÚis_xpuÚ
contiguousrÂ  Ú%_conv_determine_backend_memory_formatr   )rs   rT   rt   ru   r   r€   Úinput_r?  ÚkÚ
all_hintedr\  rR  Úselect_kwargsÚconv_backendr]  r  r7   r�  s   `               @@r0   Úconvrl  Ò  së  ú€ ô 1Ø�4 ÀTô�M€A€zð ˜Ñ €FØ˜Ñ!€Fð 	ä×Ñ×$Ñ$Ü×Ñ×%Ñ%Ü×Ñ×(Ñ(ð
ñ	
ð �L‰L˜FŸL™LÒ(Ø× Ò Ø×/Ò/äØ˜6Ÿ<™<˜.ð )Ø—‘ˆ~Ð1ð3ó
ð 	
ð ×Ñ€Fà	ñ *à�K‰Kˆõ 	LäÓD°v·|±|ÔDÓDò 
Ìó M
Ø*0¯,©,ôM
ó J
ˆ
ñ ð ‰Gð —>‘> &Ó)ˆDÜ/3Ø! (Ñ+Ø" 9Ñ-Ø# JÑ/Ø% lÑ3Ø)Ð*:Ñ;Ø! (Ñ+Øô0ˆMð ˆ|Ø.8¯n©n¸\Ó.J�˜lÑ+Ü Ÿ8™8×8Ñ8Ø˜ñØ"/ñˆLð �AŠv˜f×.Ò.°v·}²}à×*Ñ*Ó,×6Ñ6°qÓ9�Ø×)Ñ)¨!Ó,�Ü—h‘h×DÑDØ˜ óˆG÷Q*ðX0Øð0Ø)Cð0à	ö0ô 
& iÓ	0ñ ÙÑ �ZÑ ˆàÜ×Ñ×$Ñ$Ü×Ñ×%Ñ%Ü×Ñ×(Ñ(ð
ñ 
ñ
 ˜3 Ó(÷ñ ñ ˜˜A™ Ó(Ù˜˜A™ Ó(Ù˜˜A™ Ó%ð÷ñ ÷s*ð *ú÷rð ús    ÃD0J:È$A KÊ"KÊ:KËKc                óà  — | j                   �| j                   j                  st        |«      ‚| j                   j                  «       }ddlm}  ||«       t        j                  ||k\  «       |€!|j                  |t        j                  ¬«      S |j                  t        j                  k(  r!|j                  |t        j                  ¬«      S |j                  |t        j                  ¬«      S )Nr   rÖ   rî   )rØ   rÙ   r   rÚ   rÛ   r×   rA   rÈ   r/  rú   rï   Úfloat32Úfloat64)rs   rT   ÚinputsÚweightsÚ	minlengthrN  r×   s          r0   Úbincountrs  ?  s¿   € ð 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/à×"Ñ"×9Ñ9Ó;€HåOá˜hÔ'Ü	‡L�L�˜YÑ&Ô'à€Ø×Ñ ´·
±
ÐÓ;Ð;Ø	�‰œ%Ÿ-™-Ò	'Ø×Ñ ´·±ÐÓ>Ð>à×Ñ ´·±ÐÓ>Ð>r2   c                ó@  — | j                   �| j                   j                  st        |«      ‚| j                   j                  «       }ddlm}  ||«       |s|j                  dd«      }|j                  dd  }|j                  |«      }|j                  |f«      }	||	fS )Nr   rÖ   rM   )	rØ   rÙ   r   rÚ   rÛ   r×   Ú	transposer  r/  )
rs   rT   rp  ÚlengthsÚbatch_firstÚnew_batch_sizer×   Úres_sizeÚpacked_dataÚ
batch_sizes
             r0   Ú_pack_padded_sequencer|  ]  sž   € ð 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/à×(Ñ(×?Ñ?ÓA€NåOá˜nÔ-áà×!Ñ! ! QÓ'ˆà�|‰|˜A˜BÐ€HØ×"Ñ" 8Ó,€KØ×!Ñ! >Ð"3Ó4€JØ˜Ð$Ð$r2   c                ó   ‡ — dˆ fd„}|S )Nc                ó   •— | t         ‰<   | S r;   )ÚFAST_OP_IMPLEMENTATIONS)r_   rT   s    €r0   rb   z-register_fast_op_impl.<locals>.impl_decorator…  s   ø€ Ø(/Ô Ñ%Øˆr2   rc   rf   )rT   rb   s   ` r0   Úregister_fast_op_implr€  ‚  s   ø€ õð Ðr2   c                ó˜  ‡
‡‡— ddl m} t        | «      }t        |«      }t        ||«      }dg|z  }t	        |dz
  dd«      D ]|  Š
|dz
  ‰
z
  }|dz
  |z
  }|dz
  |z
  }	|dk\  r| |   ndŠ|	dk\  r||	   ndŠt        j                   |‰dk(  «      xs  |‰dk(  «      xs ‰‰k(  ˆ
ˆˆfd„«        |‰dk(  «      r‰n‰|‰
<   Œ~ t        |«      S )Nr   rB  rM   r»   c                 ó   •— d‰› d‰› d‰ › d�S )NzThe size of tensor a (z#) must match the size of tensor b (z) at non-singleton dimension rè   rf   )r1  ÚsizeAÚsizeBs   €€€r0   rÆ   zinfer_size.<locals>.<lambda>ª  s'   ø€ Ð,¨U¨Gð 40Ø05¨wð 7*Ø*+¨¨Að/€ r2   )rÛ   rC  rR   rÑ   r_  rA   rÈ   r[   )ry  ÚbrC  ÚdimsAÚdimsBrM  ÚexpandedSizesrÁ   ÚdimAÚdimBr1  rƒ  r„  s             @@@r0   rÀ  rÀ  �  sø   ú€ õ Eä�‹F€EÜ�‹F€EÜˆu�eÓ€DØ() s¨T¡z€MÜ�4˜!‘8˜R Ó$ò JˆØ˜‘˜A‘ˆØ�q‰y˜6Ñ!ˆØ�q‰y˜6Ñ!ˆØ 1š9��$’¨!ˆØ 1š9��$’¨!ˆô 	�‰Ù˜5 A™:Ó&ÒV©.¸À!¹Ó*DÒVÈÐQVÉõ/ô	
ñ %3°5¸A±:Ô$>™5ÀEˆ�aÒð1Jô2 �ÓÐr2   c                ó   ‡ ‡— dˆ ˆfd„}|S )Nc           	     óô  •‡ ‡‡— dˆˆˆ ˆfd„}t        d«       ‰}d }|D ]:  }t        |t        j                  «      r|j                  nd}|€|}t        ||«      }Œ< |€t        d«      ‚ddlm}m	}	 |D ]Z  }t        |t        j                  «      sŒt        |j                  «      t        |«      k(  sŒ@ | |	|j                  |«      «      sŒZ n	  |d«      S t        j                  d«      }
|
}d }d	}|D ]€  }t        |t        j                  «      sd
}Œ ||
k(  r%|j                  j                  dk7  r|j                  }|€#‰t        j                  k7  rd
}Œb|j                  }Œo||j                  k7  sŒd
}Œ‚ |rt!        |d‰iŽ\  }}d}d}|D ]r  }t        |t        j                  «      sŒ||
k7  r7|j#                  «       dk(  r$|j                  |
k(  r||k\  r
 |d«      c S |dz  }ŒZ|j                  |k7  sŒj |d«      c S  d
}d
}t%        |«      r`|D ][  }t        |t        j                  «      sŒ|xr t'        |t        j(                  ¬«      }|xr t'        |t        j*                  ¬«      }Œ] |r>t        d«       t-        ‰ t        j.                  ||dt        j(                  ¬«      |¬«      S |r>t        d«       t-        ‰ t        j.                  ||dt        j*                  ¬«      |¬«      S  |d«      S )Nc                ó`   •— t        d| › �«       ‰5   ‰‰i ‰¤Žcd d d «       S # 1 sw Y   y xY w)Nzslow r   )rÐ  rt   ru   ÚmodeÚslow_refs    €€€€r0   Úslowz=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow·  s6   ø€ Ü˜% ˜u˜Ô&Øñ 1Ù Ð0¨Ñ0÷1÷ 1ò 1ús   ’$¤-zattempt fastrf   zfinal_shape must not be Noner   r¶  z#both tensors nontrivially broadcastr{   FTÚtype_promotion_kindrM   Úerrorr½  zfast is_contiguousr|   )rï   r7   r¾  r6   zfast channels_lastzno contiguity match)rÐ  Ústrre   r   )r    rN   rA   r  r  rÀ  rO   rÛ   rC  rW  rR   r7   r5   r   ÚDEFAULTrï   r   rõ   r8   r   rË  r[  r   rý   )rŽ  rt   ru   r�  ÚoperandsÚfinal_shaper`   r  rC  rW  r{   Úcommon_deviceÚcommon_dtypeÚhas_different_input_dtypesr   Úcurrent_cpu_scalars_on_non_cpuÚmax_cpu_scalars_on_non_cpuÚdefinitely_contiguousÚdefinitely_channels_lastr�  r‘  s   ```                €€r0   Úfast_binary_implz/make_fast_binary_impl.<locals>.fast_binary_impl¶  s  û€ ÷	1ð 	1ô
 	�NÔ#ð ˆð )-ˆØò 	9ˆBÜ+5°b¼%¿,¹,Ô+G˜rŸxšxÈRˆEØÐ"Ø#�ô
 % [°%Ó8‰Kð	9ð ÐÜ Ð!?Ó@Ð@çPð ò 
	?ˆBä˜2œuŸ|™|Õ,Ü˜Ÿ™“M¤S¨Ó%5Ó5á"¡6¨"¯(©(°KÓ#@ÕAáð
	?ñ Ð=Ó>Ð>ô �l‰l˜5Ó!ˆØ&)ˆØ+/ˆØ%*Ð"Øò 	2ˆBÜ˜b¤%§,¡,Ô/à-1Ð*ØØ Ò#¨¯	©	¯©¸%Ò(?Ø "§	¡	�ØÐ#Ø&Ô*I×*QÑ*QÒQØ15Ñ.à#%§8¡8‘LØ §¡Ó)Ø-1Ñ*ð	2ñ &ô 1ØðØ/Bñ‰OˆAˆ|ð *+Ð&Ø%&Ð"Øò 	%ˆBÜ˜b¤%§,¡,Ô/ØØ Ò#¨¯©«°Aª¸"¿)¹)ÀsÒ:JØ1Ð5OÒOÙ ›=Ò(Ø.°!Ñ3Ñ.Ø—‘˜mÓ+Ù˜G“}Ò$ð	%ð !%ÐØ#'Ð ô
 & mÔ4Øò �Ü! "¤e§l¡lÔ3Øà)ò Ü@Ø¬%×*AÑ*Aôð &ð -ò Ü@Ø¬%×*=Ñ*=ôñ )ðñ !äÐ,Ô-ÜØÜ—‘ØØ&Ø!Ü"'×"9Ñ"9ô	ð %ô	ð 	ñ $ÜÐ,Ô-äØÜ—‘ØØ&Ø!Ü"'×"5Ñ"5ô	ð %ô	ð 	ñ Ð)Ó*Ð*r2   )rŽ  r#   rt   r   ru   r   re   r   rf   )r�  r‘  rž  s   `` r0   Úmake_fast_binary_implrŸ  ²  s   ù€ öK+ðZ Ðr2   c                ó^  — t        «       5  t        | «      5  t        j                  j                  j
                  j                  |«      }d d d «       d d d «       |r#t        | |j                  |j                  ¬«      S t        | |j                  «      S # 1 sw Y   ŒMxY w# 1 sw Y   ŒQxY w)N)rº   )
r   r   rA   r   r  Údetachr  r   r7   rº   )rs   r£   Úinclude_realr  s       r0   Úfast_detachr£  H  s‰   € ô 
Ó	ñ /Ô!=¸iÓ!Hñ /Ü�i‰i�n‰n×#Ñ#×+Ñ+¨AÓ.ˆ÷/÷ /áÜ˜) S¨!¯(©(ÀÇÁÔNÐNÜ�i  a§h¡hÓ/Ð/÷	/ð /ú÷ /ð /ús"   ‹B#—4BÁB#ÂB 	ÂB#Â#B,c                 ó`  — dd l }  t        | j                  j                  j                  j
                  «      t        | j                  j                  «      «        t        | j                  j                  j                  j
                  «      t        | j                  j                  «      «        t        | j                  j                  j                  j
                  «      t        | j                  j                  «      «        t        | j                  j                  j                  j
                  «      t        | j                  j                  t        j                  ¬«      «        t        | j                  j                  j                  j                  «      t        «       t         S )Nr   )r‘  )Útorch._refsr€  r   r  Úaddr  rŸ  rÁ  Úsubr^  Údivr   ÚINT_TO_FLOATr¡  r  r£  r  )rA   s    r0   r)   r)   R  s  € ãà4Ô˜%Ÿ)™)Ÿ.™.×,Ñ,×3Ñ3Ó4Ü˜eŸk™kŸo™oÓ.ôð 5Ô˜%Ÿ)™)Ÿ.™.×,Ñ,×3Ñ3Ó4Ü˜eŸk™kŸo™oÓ.ôð 5Ô˜%Ÿ)™)Ÿ.™.×,Ñ,×3Ñ3Ó4Ü˜eŸk™kŸo™oÓ.ôð 5Ô˜%Ÿ)™)Ÿ.™.×,Ñ,×3Ñ3Ó4ÜØ�K‰K�O‰OÜ ?× LÑ Lô	
ôð 9Ô˜%Ÿ)™)Ÿ.™.×/Ñ/×7Ñ7Ó8¼ÔEÜ"Ð"r2   )r/   r'   re   zdict[_T, bool])r7   ztorch.devicere   r¨   )rH   r   re   r¨   )rT   r   re   r¨   )ra   zUCallable[[OpOverload], bool] | OpOverload | list[OpOverload] | tuple[OpOverload, ...]re   ú.Callable[[Callable[_P, _R]], Callable[_P, _R]])r`   r   re   r¨   )r`   r   re   ÚNone)
rs   r#   rT   r   rt   r   ru   r   re   r   )
rs   r#   rT   r   rt   r   ru   r   re   r   )
rs   r#   rT   r   rt   r   ru   r   re   r¨   r;   )
rs   r#   rT   r   r‹   r“  rt   úobject | Nonere   r   )rs   r#   rT   r   r�   r   re   r«  )
rs   r#   rT   r   r‹   r“  rt   r¬  re   r   )rÀ   ÚFakeTensorLikere   zlist[int] | None)
rÀ   z	list[int]rÉ   r¿   rÊ   r¿   rË   r¿   re   r¿   )rÉ   r¿   rÊ   r¿   rË   r¿   re   r¿   )rs   r#   rT   r   rÜ   ú
int | Nonere   ztorch.SymInt)rß   r§   re   r¨   )rs   r#   rT   r   r  r­  rÀ   r­  r  zSequence[int]rì   útorch.layout | Nonere   r   )NN)rs   r#   rT   r   r  r   rï   útorch.dtype | Noner  zbool | Nonere   r   )
rs   r#   rT   r   rt   r   ru   r   re   r«  )TFF)rs   r#   rT   r   rL   r   rõ   r®  r1  r¨   r2  r¨   r3  r¨   r%  r¨   re   ú)tuple[FakeTensor, FakeTensor, FakeTensor])rs   r#   rT   r   rL   r   r1  r¨   r2  r¨   r3  r¨   re   r±  )TF)rs   r#   rT   r   rL   r   r1  r¨   r2  r¨   re   útuple[FakeTensor, FakeTensor])rs   r#   rT   r   r  r   rõ   r¿   r  r$   re   r   )rs   r#   rT   r   rL   r   rõ   r¿   r1  r¨   r2  r¨   r3  r¨   re   r±  )FFN)rs   r#   rT   r   rL   r   r2  r¨   r3  r¨   rõ   r®  re   r±  )F)
r`  úSequence[IntLikeType]ra  r³  rb  r³  rY  r¨   re   zlist[IntLikeType] | None)rß   r   re   r®  )ro  r   rp  r   re   r¨   )ry  útorch.Tensorre   r¨   )ry  r´  r  úShapeType | tuple[ShapeType]re   r¨   )ry  r´  r  rµ  rº  r¨   r»  r¨   r¼  r¨   re   r´  )
rs   r#   rT   r   ry  r   r  r   re   zFakeTensor | Exception)rs   r#   rT   r   ry  r   r  r   r»  r¨   re   r   )rs   r#   rT   r   ry  r   r  r$   r  r^  re   r   )
rs   r#   rT   r   rá  r   râ  úIntLikeType | Nonere   r   )rs   r#   rT   r   rL   r   re   zBint | float | bool | torch.SymInt | torch.SymFloat | torch.SymBool)rs   r#   rT   r   rL   r   re   úlist[FakeTensor])rs   r#   rT   r   rL   r   re   r   )rs   r#   rT   r   rý  r   rÀ   r·  rþ  r¶  re   r   )rö   r$   r  r$   re   r¶  )r   NNrM   )rs   r#   rT   r   r  r   rõ   r¿   r  r®  r	  r®  r
  r¿   re   r   )
rs   r#   rT   r   r  r   r  r   re   r   )NNN)rs   r#   rT   r   r  r   r  ztorch.Size | NonerÎ  ztuple[int, ...] | Nonerï   r°  r7   ztorch.device | Nonerì   r¯  re   r«  )rT   r   r  r   r  zlist[FakeTensor | None]re   r«  )
rs   r#   rT   r   rt   ztuple[Any, ...]ru   zdict[str, Any]re   r   )
rs   r#   rT   r   rt   r   ru   r   re   zlist[FakeTensor] | None)
rs   r#   rT   r   rt   r   ru   r   re   z5tuple[FakeTensor, FakeTensor, FakeTensor, FakeTensor])
rs   r#   rT   r   rt   r   ru   r   re   zKFakeTensor | tuple[FakeTensor | None, FakeTensor | None, FakeTensor | None])Nr   )rs   r#   rT   r   rp  r   rq  r^  rr  r$   re   r   )rs   r#   rT   r   rp  r   rv  r   rw  r¨   re   r²  )rT   r   re   rª  )ry  r³  r…  r³  re   ztuple[IntLikeType, ...])r�  zCallable[..., Any]r‘  r   re   zCallable[..., FakeTensor])rs   r#   r£   r   r¢  r¨   re   r   )re   z$dict[OpOverload, Callable[..., Any]])ÐÚ
__future__r   rœ  rª   rõ  r]  r-  r   Útypingr   r   rÕ  r   r	   Útyping_extensionsr
   rA   Útorch._custom_opÚtorch._loggingÚtorch._prims_commonÚ_prims_commonrŠ  Útorch._dispatch.pythonr   Ú
torch._opsr   r   r   r   r   r   r   r   r   r   r   r   Útorch._subclasses.fake_tensorr   r   r   r   r   r   Útorch.fx.operator_schemasr   Útorch.utils._statsr    Úcollections.abcr!   r"   r#   Útorch.typesr$   r  r­  r%   r&   r'   Ú_pytreer­   Ú__all__rY   r(   Ú_opsr   r  r1   r8   rŠ   r  r  Ú	full_likeÚ	ones_likeÚ	rand_likeÚ	generatorÚgenerator_outÚ
randn_likeÚrandint_likeÚTensor_generatorÚ
Tensor_outÚTensor_generator_outÚ	low_dtypeÚlow_generator_dtypeÚlow_dtype_outÚlow_generator_dtype_outÚ
zeros_liker/  rù  Únew_fullÚ	new_zerosÚnew_onesr~   Ú_resize_output_Ú_nested_tensor_from_tensor_listÚ
pin_memoryr8  r7   Úprim_DeviceÚ	is_pinnedÚ_pin_memoryÚ_resize_outputrM  Ú_list_to_tensorr}   r<   ÚcacherV   r\   rj   rp   Ú__contains__rv   r„   rˆ   ÚprofilerrŽ   r‘   r”   r™   r*   r³   rµ   r·   rÂ   rÎ   rÔ   rÝ   rà   r  r  r#  r9  Ú_unique2r<  r@  Úselectr¿   rQ  rS  r%  ri  rm  rs  r~  rŒ  r³  rÉ  r×  rÖ  Ú_unsafe_viewrÔ  Ú	view_copyrß  r   rã  ÚitemÚ_local_scalar_denseré  rì  r  r   r  Úslicer  r  Ú_assert_tensor_metadatar  r  r  r  r$  r%  r+   r4  r  r9  Ú_embedding_bagr<  r>  Ú_unsafe_index_putÚcopyÚcopy_Úslice_scatterÚdiagonal_scatterrB  rD  Ú	index_putrH  rI  Ú_nested_view_from_bufferÚ_nested_view_from_buffer_copyrK  rN  r_  r`  ra  Úconvolution_backwardrl  rs  r|  r  r€  rÀ  r”  rŸ  r£  r)   r¢   s   0r0   ú<module>rø     sï  ðÝ "ã Û Û Û Û 
Ý ß CÓ CÝ 'ã Û Û Ý #Ý 7Ý !÷÷ ÷ ñ ÷÷ õ CÝ *ñ ß2å<Ý'ð ˜eŸl™lÑ*€Ùˆtƒ_€ÙˆTƒ]€ÙˆTƒ]€à	�‰×	Ñ	€ò€ð Ð àÐ ð ‡z�z‡~�~×Ñ€ó&ó ñ (ð 'Ø‡O�O×Ñð'à‡O�O×Ñð'ð 	‡N�N×Ñð'ð 	‡N�N×Ñð	'ð
 	‡N�N×Ñð'ð 	‡N�N×Ñð'ð 	‡N�N×Ñð'ð 	‡N�N×Ñð'ð 	‡N�N×Ñð'ð 	‡N�N× Ñ ð'ð 	‡O�O×Ñð'ð 	‡O�O×Ñð'ð 	‡O�O×Ñð'ð 	‡O�O×!Ñ!ð'ð 	×Ñ×Ñð'ð  	×Ñ×Ñð!'ð" 	×Ñ×Ñð#'ð$ 	×Ñ×&Ñ&ð%'ð& 	×Ñ× Ñ ð''ð( 	×Ñ×*Ñ*ð)'ð* 	×Ñ×Ñð+'ð, 	×Ñ×#Ñ#ð-'ð. 	×Ñ×Ñð/'ð0 	×Ñ×)Ñ)ð1'ð2 	×Ñ×#Ñ#ð3'ð4 	×Ñ×-Ñ-ð5'ð6 	‡O�O×Ñð7'ð8 	‡O�O×Ñð9'ð: 	‡N�N×Ñð;'ð< 	‡N�N×Ñð='ð> 	×Ñ×"Ñ"ð?'ð@ 	×Ñ×ÑðA'ðB 	‡M�M×ÑðC'ðD 	‡M�M×ÑðE'ðF 	‡N�N×ÑðG'ðH 	‡N�N×ÑðI'ðJ 	‡M�M×ÑðK'ðL 	‡M�M×ÑòM'Ð ñT $Ø×Ñ× Ñ Ø×(Ñ(×0Ñ0Ø×(Ñ(×,Ñ,Ø‡O�O×ÑØ‡G�G‡N�NØ‡G�G×ÑØ‡N�N×ÑØ×Ñ×ÑØ×Ñ×ÑØ×Ñ×ÑØ×Ñ×ÑóÐ ð #'×"6Ñ"6Ð!8Ð óð ‡�ò	ó ð	ðððð
 4óó4)óñ Ð)×6Ñ6Ó7ðKØðKØ%/ðKØ8;ðKØGJðKàòKó 8ðKñ Ð(Ó)ÙÐ.Ð-Ð.Ó/ð0Øð0Ø%/ð0Ø8;ð0ØGJð0àò0ó 0ó *ð0ñ: �$—.‘.×(Ñ(Ó)ðØðØ%/ðØ8;ðØGJðà	òó *ðñ  �%—)‘)×$Ñ$×;Ñ;×CÑCÓDàRVð	CØð	CØ%/ð	CØ7:ð	CØBOð	Càò	Có Eð	Cñ �%—)‘)×$Ñ$×:Ñ:×BÑBÓCð	Øð	Ø%/ð	Ø9<ð	à	ò	ó Dð	ñ �%—)‘)×$Ñ$×?Ñ?×GÑGÓHàRVð Øð Ø%/ð Ø7:ð ØBOð àò ó Ið ñ �$—'‘'×%Ñ%Ó&Ù�$—'‘'—.‘.Ó!ðØðØ%/ðØ8;ðØGJðàòó "ó 'ðó$ñ
 Ð%Ó&ð-Øð-Ø%/ð-Ø8;ð-ØGJð-àò-ó 'ð-ñD �$—/‘/×)Ñ)Ó*ð%Øð%Ø%/ð%Ø8;ð%ØGJð%àò%ó +ð%ñ �$×?Ñ?×GÑGÓHð:Øð:Ø%/ð:Ø8;ð:ØGJð:àò:ó Ið:óEóó @ðØðà
ðð ð	ð
 óó(Bñ �$—-’-×'Ñ'Ó(ð #'ðfØðfà
ðfð ðfð ð	fð
 ðfð  ðfð òfó )ðfñR �$—.’.×(Ñ(Ó)ð
 !%Ø#ðØðà
ðð ðð ð	ð
 ðð òó *ðñ4 ñTóð
,Øð,Ø%/ð,Ø8;ð,ØGJð,à	ò,óð
,ð Ø ØðOð  %ñOØðOà
ðOð 
ðOð 
ð	Oð
 ðOð ðOð ðOð ðOð /óOñd �$—-’-×'Ñ'Ó(ð
 Ø ØðVØðVà
ðVð 
ðVð ð	Vð
 ðVð ðVð /òVó )ðVñ �$—,’,×&Ñ&Ó'ð
 Ø ð
Øð
à
ð
ð 
ð
ð ð	
ð
 ð
ð #ò
ó (ð
ñ �$—+’+—/’/Ó"ð5EØð5Eà
ð5Eð ð5Eð 
ð	5Eð
 ð5Eð ò5Eó #ð5Eñp �$—/’/×)Ñ)Ó*ð Ø ØðØðà
ðð 
ðð 
ð	ð
 ðð ðð ðð /òó +ðñ* �$×)Ò)×1Ñ1Ó2ð
 !ØØðØðà
ðð 
ðð ð	ð
 ðð 
ðð /òó 3ðð2 !ð	LØ$ðLà%ðLð %ðLð ð	Lð
 óLó^óó$ ðFØðØ8ðà	óóVðx $(ØØ"'ðiØðià'ðið !ðið ð	ið
  ðið óiñX �$×$Ò$×,Ñ,Ó-ð
Øð
Ø%/ð
Ø4>ð
ØHKð
àò
ó .ð
ñ, �$—)’)×#Ñ#Ó$Ù�$×#Ò#×+Ñ+Ó,ð ñ
Øð
à
ð
ð ð
ð ð	
ð
 ð
ð ò
ó -ó %ð
ñ( �$—.’.×(Ñ(Ó)ð "ñØðà
ðð ðð ð	ð
 
ðð òó *ðñ* �$×(Ò(×/Ñ/Ó0ð
 '+ð	*Øð*à
ð*ð ð*ð $ð	*ð
 ò*ó 1ð*ñ. �%—)‘)—.‘.×%Ò%×-Ñ-Ó.Ù�%—)‘)—.‘.×4Ò4×<Ñ<Ó=ðØðØ%/ðØ6@ðàGòó >ó /ðñ. �%—)‘)—.‘.×.Ò.×6Ñ6Ó7ð9Øð9Ø%/ð9Ø6@ð9àò9ó 8ð9ñ �%—)‘)—.‘.×(Ò(×0Ñ0Ó1ò/Pó 2ð/Pñd �%—)‘)—.‘.×@Ò@×HÑHÓIð #'ð%*Øð%*à
ð%*ð ð%*ð ð	%*ð
  ð%*ð ò%*ó Jð%*óPñ& �%—)‘)—.‘.×&Ò&×-Ñ-Ó.ð
 ØØØðJ?ØðJ?à
ðJ?ð ðJ?ð 
ð	J?ð
 ðJ?ð 
ðJ?ð ðJ?ð òJ?ó /ðJ?ñZ �%—)‘)—.‘.×.Ò.×6Ñ6Ó7ð("Øð("Ø%/ð("Ø7Að("ØISð("àò("ó 8ð("ñV �%—)‘)—.‘.×8Ò8×@Ñ@ÓAð
  $Ø&*Ø $ð#ð #'Ø"&ñ#Øð#à
ð#ð ð#ð ð	#ð
 $ð#ð ð#ð  ð#ð  ð#ð 
ò#ó Bð#ñN ÑKÓLð-Øð-Ø%/ð-Ø8;ð-ØGJð-à	ò-ó Mð-ð4Ø
ð4Ø&ð4Ø1Hð4à	ó4ð2Øð2à
ð2ð ð2ð ð	2ð
 ó2ñ* % V¨W°fÓ=Ð ó2óXñ
 ñóð
 Øð Ø%/ð Ø8;ð ØGJð àò óð
 ñL �$—*’*×#Ñ#Ó$ð"Øð"Ø%/ð"Ø8;ð"ØGJð"àò"ó %ð"ñ$ �$×%Ò%×-Ñ-Ó.ð3Øð3Ø%/ð3Ø8;ð3ØGJð3à:ò3ó /ð3ñ �$—.’.×(Ñ(Ó)ðHØðHØ%/ðHØ8;ðHØGJðHàòHó *ðHñ, �$×(Ò(×0Ñ0Ó1Ù�$—)’)×#Ñ#Ó$Ù�$—*’*×$Ñ$Ó%Ù�$×$Ò$×,Ñ,Ó-Ù�$×'Ò'×/Ñ/Ó0ðTØðTØ%/ðTØ8;ðTØGJðTàòTó 1ó .ó &ó %ó 2ð
Tñ �$—)’)—-‘-Ó Ù�$×$Ò$×(Ñ(Ó)ð
Øð
Ø%/ð
Ø8;ð
ØGJð
àò
ó *ó !ð
ñ �$—.’.×(Ñ(Ó)Ù�$—/’/×)Ñ)Ó*ðØðØ%/ðØ8;ðØGJðàòó +ó *ðñ( �$×6Ñ6×>Ñ>Ó?Ù�$×6Ñ6×:Ñ:Ó;Ù�$×/Ò/×7Ñ7Ó8Ù�$×4Ò4×<Ñ<Ó=ð-Øð-Ø%/ð-Ø8;ð-ØGJð-à	ò-ó >ó 9ó <ó @ð-ñ ð 'öàØð �N‰N×"Ñ"Ø�G‰G�N‰NØ�G‰G×ÑØ×0Ñ0×8Ñ8Ø×0Ñ0×4Ñ4ð
ñ
ò 	
òóò-óð-ñ
 à×Ò× Ñ Ø×Ò×!Ñ!Ø×Ò×$Ò$Ø×!Ò!×)Ñ)ð	óðbØðbØ%/ðbØ8;ðbØGJðbàPòbóðbñJ �%—)‘)—.‘.×)Ò)×1Ñ1Ó2ð
 "&Øð?Øð?à
ð?ð ð?ð ð	?ð
 ð?ð ò?ó 3ð?ñ: �%—)‘)—.‘.×6Ò6×>Ñ>Ó?ð%Øð%à
ð%ð ð%ð ð	%ð
 ð%ð #ò%ó @ð%ð> Ð ð
Ø
ðà3óð" Øð" Ø!6ð" àó" ðN <[×;bÒ;bðQØ ðQà8ðQð óQðn DIð0Øð0Ø",ð0Ø<@ð0àó0ð ‡�ò#ó ñ#ùòis   ü$A6AC/