
    Ph*                    4c   d dl Z d dl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
 d dlmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZ  d dlm!Z!m"Z" d dlm#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= g d	Z>ej~                  Z?ej                  j                  ZAej                  j                  j                  ZDd
 ZEd ZFd ZGdddZHd dlImJZJ  eK       ZLeLdddefdZMd ZNd ZO eMe(j                        d        ZQ eMe(j                        d        ZS eMe(j                        d        ZT eMe(j                        d        ZU eMe(j                        d        ZV eMe(j                        d        ZW eMe(j                        d        ZX eMe(j                        d        ZZ eMe(j                        d        Z[ eJeDj                        de4fd        Z\ eJeDj                         e=       de4fd!              Z] eMe(j                        d"        Z^ eMe(j                        d#        Z_ eMe(j                        d$        Z` eMe(j                        d%        Za eMe(j                        d&        Zb eMe(j                        d'        Zc eMe(j                        d(        Zd eMe(j                        d)        Ze eMe(j                        d*        Zf e=        e;d+e(j                  ,      d-e4d.e.de4fd/              Zhd-e4d.e.de4fd0Zi eJeDj                         e=       de4de4fd1              Zj eMe(j                        d2        Zk eMe(j                        d3e4de4fd4       Zld-e4de4fd5Zm eMe(j                  d6      d-e4de4fd7       Zo eMe(j                        d-e4de4fd8       Zp eMe(j                        d-e4de4fd9       Zq eMe(j                        d-e4de4fd:       Zr eMe(j                        d-e4de4fd;       Zs eNej                  j                  d<      Zv eMe(j                  d6      d-e4de4fd=       Zw eMe(j                  eDj                  6      d>        Zy eMe(j                        d?        Zz eMe(j                        d@        Z{ eMe(j                        dA        Z| eMe(j                        dB        Z} eMe(j                        dC        Z~ e=       	 dd-e4dDedEeej                      de4fdF       Z eJeDj                         e=        e;dGe(j                  ,      	 ddIe4dDe&dJede4fdK                     Z eJeDj                         e=       	 	 	 dd-e4dLee.   dMee.   dNee.   de4f
dO              Zd-e4fdPZ eMe(j                  eQ      dR        Zd-e4de4fdSZd-e4de4fdTZ eMe(j                        dU        Z eMe(j                  d6      dV        Z eMe(j                        dW        Z eMe(j                        d-e4de4fdX       Z eMe(j                        dY        Z eMe(j                        dZ        Z eMe(j                        d[        Z eMe(j                        d\        Z eMe(j                        d]        Z eMe(j                        d^        Z eMe(j                        d_        Z eMe(j(                  d6      d-e4de4fd`       Z eMe(j                        da        Z eMe(j                        db        Z eMe(j                        dc        ZdIe4de4fddZeLdddddHdfdefdeZ eJeDj6                         e=        e;dfe(j                  ,      ddgd-ee4e.f   dhee4e.f   diee.   fdj                     Z ee(j                  dHdHk      dl        Z ee(j                  m      d-e4dhe4de4fdn       Z ee(j                  m      d-e4dhe4de4fdo       Z ee(j                  m      d-e4dhe4de4fdp       Z ee(j                  m      d-e4dhe4de4fdq       Z ee(j                  m      d-e4dhe4de4fdr       Z ee(j                  dHs      d-ee4e.f   dhee4e.f   fdt       Z eJeDjF                         e=       ddud-ee4e.f   dhee4e.f   dvee   fdw              Z ee(j                  dHs      d-e4dhe4de4fdx       Z ee(j(                  m      d-ee4e.f   dhee4e.f   de4fdy       Z e=       d-ee4e.f   dhee4e.f   de?fdz       Z ee jP                  j                  ddH{      d-ee4e.f   dhee4e.f   fd|       Zd-e?dhe?de?fd}Zd-e?dhe?de?fd~Z ee(j                  dHdHk      d-e4dhe4de4fd       Z ee(j                  dHdHk      d-e4dhe4de4fd       Z ee(j                  dHdk      d-e4dhe4de4fd       Z ee(j                  dHdHk      d-e4dhe4de4fd       Z ee(j                  dHs      d-e4dhe4de4fd       Z ee(j                  dHs      d-e4dhe4de4fd       Z ee(j                  dHdHk      de4de4de4fd       Z ee(j                  dHdHk      d-e4dhe4de4fd       Z ee(j                  dHdHk      d-e4dhe4de4fd       Z ee(j                  dHdHk      d-e4dhe4de4fd       Zded-e4dhe4dededdfdZ	 	 	 dd-e4dhe4dededede4fdZ ee(j                  dHdHk      d-e4dhe4fd       Z ee(j                  dHs      d-e4dhe4de4fd       Z ee(j                  dHdHk      d-e4dhe4de4fd       Z ee(j                  dHdHk      d-e4dhe4de4fd       Z ee(j                  m      d-e4dhe4fd       Z eMe(j                        d-e4fd       Z ee(j                  m      d-e4dhe4fd       Z ee(j                  m      d-e4dhe4fd       Z ee(j                  dHs      d-e4dhe4de4fd       Z ee(j                  m      d-e4dhe4de4fd       Z ee(j                  m      d-e4dhe4de4fd       Z ee(j                  d      d-e4dhe4de4fd       Z ee(j                  dHs      d-e4dhe4de4fd       Z ee(j                  dHdHk      d-e4dhe4de4fd       Z ee(j                  m      d-e4dhe4de4fd       Zddgd-ee4e.f   dhee4e.f   diee.   fdZ eJeDj                         e=        e;dfe(j                  ,      ddgd-ee4e.f   dhee4e.f   diee.   fd                     Z ee(j                  ddd      d-e4dhe4de4fd       Z eJeDj                         e=        e;dfe(j                  ,      d-ee4e.f   dhee4e.f   fd                     Z ee jP                  j                  dd      d-ee4e.f   dhee4e.f   fd       Z eJeDj                         e=        e;de(j                  ,      dddIe4de4de4d.e.de4f
d                     Z eJeDj                         e=        e;de(j                  ,      dddIe4de4de4d.e.de4f
d                     Z eJeDj                         e=        e;de(j                  ,      	 	 dd-e4dee5   dee5   de4fd                     Z eJeDj                         e=       	 ddIe4dee5   de4fd              Z eJeDj                         e=       	 ddIe4dee5   de4fd              Z eJeDj                         e=        e;dfe(j                  ,      	 	 dde?d-ee5   dhee5   fd                     Z eJeDj                         e=       ej                  dd-e4dej                  de4fd              Zddd-e?dhe?fdZ eJeDj                        d-e4de.fd       Z	 	 	 	 	 	 	 dd-e4dee#   dEeej                      dee   deej                     deej                     dee   dedefdZedÄ        Zeِj                  	 	 	 ddej                  dEej                   dededeej                     deeef   fdĄ       Zeِj                  	 	 	 ddedEej                   dededeej                     deeef   fdń       Zeِj                  	 	 	 ddEej                   dededeej                     deeef   f
dƄ       Zeِj                  	 	 	 dde?dededeej                     deeef   f
dȄ       Zd-e?defdʄZd-e4de4fd˄ZddddHddd̜d-e4dedededee&   dedEeej                      dee?   de0de4fdԄZdՄ ZeZ eJeDj                         e=       	 	 dd-e4dDee&   dJede4fdք              ZeZ eJeDj                         e=       	 	 dd-e4dDee&   dJede4fdׄ              Z eJeDj                  j                  eDj                  j                  g      	 	 dddd؜d-e4dDeee   eee      f   dJedEeej                      dee?   de4fdل       Zd-e?de?fdڄZ eJeDj                        	 	 dddd؜d-e4dDeee   eee      f   dJedee?   de4f
dۄ       Z eJeDj                        	 	 dddܜd-e4dDee&   dJedee?   de4f
d݄       Z eJeDj                        	 	 dddܜd-e4dDee&   dJedee?   de4f
dބ       Zdd߄Z eJeDj                         e=       	 	 	 dddd-e4dDee&   dee   dJedee.   de4fd              Z eJeDj                         e=       	 	 	 dddd-e4dDeee   eee      f   dee   dJedee.   de4fd              Z eJeDj                        	 	 dddd؜d-e4dDee&   dJede4fd       Z eJeDj                         e=dd      	 dddHddd-e4dDee&   dee   dJedee.   f
d              Z eJeDj                         e=dd      	 	 	 dddd-e4dDee&   dee   dJedee.   f
d              Z eJeDj                         e=        e;de(j                  ,      ddddIe4de4de4de.die.de4fd                     Zdee4ee4   f   de4dee4ee4df   f   fdZdedDede4de4fdZdee4ee4   f   de4dee4ee4df   f   fdZdee4ee4   f   de4dee4ee4df   f   fdZ	 dd-e4de1de2dee   de4f
dZ eJeDj                         e=       	 dde4de4de1de2dee   de4fd              Zde1fdZeDj                  j                  j                  eAj                        eDj                  j                  j                  eAj                        dee4   fd               Zd-e4de1de4fdZ eJeDj                         e=        e;de(j                  ,      dde6dDede4fd                     Z e=       de6de4fd       Zde4de4fdZ eJeDj                         e=       	 dde4dee   d.e.de4fd              Zej                  dd-e?dej                  de?fd	Z	 e=       de6de4fd
       Z
 eJeDj                        d-e?de?fd       Zd-e?dhe?de?fdZdd-e4dedDedee4df   fdZdd-e4dedede4fdZ eJeDj                         e=       d-e4de%de4fd              Zd-e4de4fdZd-e4de4fdZd-e4dDedeee4f   dede4f
dZ ee      Zd-e?de&dedee?e?e?f   fdZd3e4dee   de4fdZ eJeDj,                  j                        de?dee?   dee?   ded ed!ed"ededee?e?e?f   fd#       Z eJeDj.                         e=ddd$      de?d%e1dee?   dee?   dedee?e?e?f   fd&              Z eJeDj0                        d-e4de4fd'       Z eJeDj2                         e=       de4d(e/dDed)e/de4f
d*              ZeDj4                  j6                  j                  eAj                        	 	 	 	 	 	 	 	 dde?d+ed,ee   d-ee   d.ee?   d/ed0ed1ed2ee   d3ee   de?fd4       ZeDj8                  j                  j                  eAj                        	 	 	 	 	 	 	 	 dde?d+ed,ee   d-ee   d.ee?   d/ed1ed2ee   dee   de?fd5       Zd6e1d7e2d8eded9ef
d:Z eJeDj<                         e=       d-e?de?fd;              Zd-e4d<ede4fd=Zd-e4d>e1de4fd?Z dIe4de4de4fd@Z! eJeDjD                         e=        e#       fd-e4dAe&de&de4fdB              Z" eJeDjH                         e=       	 dd-e4dDede%de4fdE              Z$de6ddfdFZ% eJeDjL                         e=       dde6dDede4fdG              Z& e=       	 dd-e4dDedEeej                      de4fdH       Z' e=       de6de4fdI       Z( e=       de6de4fdJ       Z)d-e4dDedKe1de4fdLZ* eJeDjV                        ddMe4dDede6fdN       Z+ e=       d3e3dDedOe3dPe3fdQ       Z,d3e3dDedOe3dPe3fdRZ- eJeDj\                         e=       d3e3dDedOe3d.ee.e3f   fdS              Z. eJeDj^                        d3e3dDedOe3d.ee.e3f   fdT       Z/d3e3dDedOe3d.ee.e3f   dUef
dVZ0 e=       ddgd3e3dDedOe3dPe3die.f
dW       Z1 eJeDjd                         e=       d3e3dDedOe3fdX              Z2 eJeDjf                  jh                        dd-e4dDee&   de4fdY       Z3	 dd-e4dZee?e&f   dDedee4df   fd[Z5d-e4dZe&dee4df   fd\Z6d-e4dZe&dee4df   fd]Z7 eJeDjp                  jr                         e=       	 ddIe4d^ede4fd_              Z8 eJeDjt                         e=       	 	 	 dde4de4d^ed`edaede4fdb              Z: eJeDjv                        	 	 	 ddIe4d^ed`edaede4f
dc       Z; ee;      Z< eJeDjz                         e=       	 	 	 ddMe4d^ed`edaede4f
dd              Z=d-e4dee&de6fdfZ> eJeDj~                  j                        d-e4fdg       Z?d-e4de4fdhZ@ eJeDj                        d-e4de4fdi       ZA eJeDj                        d-e4djed`ede4fdk       ZBeBZC eJeDj                        dIe4d8eded9ede4f
dl       ZD eJeDj                         e=       dIe4d8eded9efdm              ZEddd؜d-e4dDedEeej                      dee?   de4f
dnZF eJeDj                        ddd؜d-e4dDedEeej                      dee?   de4f
do       ZG eJeDj                        ddd؜d-e4dDedEeej                      dee?   de4f
dp       ZH eJeDj                        d-e4dDede4fdq       ZI eJeDj                  j                        d-e4d>e1de4fdr       ZJdIe4de4de4fdsZKd-e4de4fdtZL e=       	 dd-ej~                  duej~                  dDee   dej~                  fdv       ZM e=       dej                  ddHdHej                  dwdEeej                      dej                  dee#   dxededej                  de4fdy       ZO e=       dej                  ddHdHfdEeej                      dej                  dee#   dxedede4fdz       ZP eJeDj                         e=       ddddHd{d-e4de1dEeej                      deej                     dee#   dede4fd|              ZQ eJeDj                         e=       ddddHd{d-e4de1de2dEeej                      deej                     dee#   dede4fd}              ZR eJeDj                  j                         e=       dej                  ddHdHd~dEeej                      dej                  dee#   dedxede4fd              ZS eJeDj                         e=       ddddHdHd~d-e4de1dEeej                      deej                     dee#   dedxede4fd              ZT eJeDj                  j                         e=       dej                  ddHdHd~dEeej                      dej                  dee#   dedxede4fd              ZU eJeDj                         e=       ddddHdHd~d-e4de1dEeej                      deej                     dee#   dedxede4fd              ZV eJeDj                         e=       ddddHd{d-e4de1de.dEeej                      deej                     dee#   dede4fd              ZW eJeDj                         e=       ddddHdHej                  dd-e4dEeej                      dee#   deej                     dedxedej                  de4fd              ZX eJeDj                  j                  eDj                  j                  g       e=       	 	 	 ddej                  ddHdHd~de.dee.   d9e.dEeej                      dej                  dee#   dedxede4fd              ZY eJeDj                         e=        e;de(j                  ,      de?de?dee?e.f   fd                     Z\ eJeDj                         e=       ddej                  dHdHddee.e4f   dee.e4f   de.dEeej                      dee#   dej                  dedxede4fd              Z] eJeDj                         e=       	 dddej                  dHdHddee.e4f   dee.e4f   de.de.dEeej                      dee#   dej                  dedxede4fd              Z^edee4   defd       Z_ede4defd       Z_ eJeDj                        dee4ee4   ee4   f   dedee4   fd       Z_de4deee%f   deee%f   de4fdZ` eJeDj                         e=       ddej                  dHdHdd>ee1ee1   f   de2dEeej                      dee#   dej                  dxedede4fd              Za eJeDj                         e=       	 ddej                  ddHdHd~dedee   dEeej                      dej                  dee#   dedxede4fd              Zb eJeDj                  j                  eDj                  jr                  g       e=       dej                  ddHdHd~d>e1de.dEeej                      dej                  dee#   dedxede4fd              ZcddddHdHej                  dd-e4de.dEeej                      deej                     dee#   dedxedej                  de4fdZd eJeDj                         e=       ddddHdHej                  dd-e4dEeej                      deej                     dee#   dedxedej                  de4fd              Ze eJeDj                         e=       ddddHdHej                  dd-e4dEeej                      deej                     dee#   dedxedej                  de4fd              Zf eJeDj                  j                         e=       ddddHdHddEeej                      dee#   deej                     dxedede4fd              Zgdej                  ddHd{d-e.dEeej                      dej                  dee#   dede4fdZh	 	 dd>e1deeeef   deeeef   dEej                   de#de4fdZi eJeDj                         e=       d-e4de4d.e5fd              Zj eJeDj                        d-e4de4d.e5de4fd       Zk	 	 	 dd-e4dhe4dedededefdZld-e4dhe4defdZm eJeDj                         e=d      	 	 	 dddde4d(eeeef      dDee&   dJedEeej                      de4fd              Zn eJeDj                         e=       dIe4de4fd              Zod Zp epeɫ      Zq epe      Zr epe      Zs eJeDj                         e=       dd-e4dede4fd              Zt eJeDj                         e=       dd-e4dede4fd              Zudeded^edeeeef   fdZvdedededEej                   dej                  defdZw eJeDj                         e=       	 dej                  ej                  ddHd{deded^edEej                   dej                  de#dede4fd              Zxdeded^edeeeef   fdZz eJeDj                         e=       	 dej                  ej                  ddHd{deded^edEej                   dej                  de#dede4fd              Z{ eJeDj                         e=d      dHdHdd-e4de4dedefd              Z| eJeDj                         e=        e;dGe(j                  ,      dd                     Z} eJeDj                         e=        e;dGe(j                  ,      dd                     Z~ eJeDj                         e=        e;dGe(j                  ,      dؐdÄ                     Z eJeDj                          e=        e;dGe(j                  ,      ddĄ                     Z eJeDj                         e=        e;de(j                  ,      	 	 	 dddddddƜdǄ                     Z eJeDj                        dCddȜdɄ       Z eMe(j                        dIe4fdʄ       Z eMe(j                        dIe4fd˄       Z eJeDj
                         e=       ddDee&   fd̄              Zd̈́ Z eJeDj                         e=        e;de(j                  ,      dτ                      Z eJeDj                         e=        e;de(j                  ,      dЄ                      Z eOeQ      Z eOeS      Z eOeT      Z eOe      Z eOeͫ      Z eOe̫      Z eOeU      Z eOeV      Z eOeW      Z eOeX      Z eOe      Z eOe      Z eOe      Z eOeZ      Z eOe      Z eOe      Z eOe      Z eOe[      Z eOeΫ      Z eOeϫ      Z eOeЫ      Z eOe]      Z eOe      Z eOe^      Z eOe_      Z eOeG      Z eOeH      Z eOe      Z eOe`      Z eOe      Z eOe      Z eOea      Z eOec      Z eOeb      Z eOed      Z eOef      Z eOee      Z eOe      Z eOek      Z eOe      Z eOe      Z eOel      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOey      Z eOe      Z eOe      Z eOe\      Z eOez      Z eOe~      Z eOe|      Z eOe}      Z eOe{      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOeë      Z eOev      Z eOe      Z eOeī      Z eOe      Z eOeū      Z eOe      Z eOe      Z eOe      Z eOeƫ      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOe      Z eOeȫ      Z eOe      Z eOe      Z eOeu      Z eOet      Z eOeɫ      Z eOe      Z eOeʫ      Z eOe}      Z eOe~      Z eOe      Z eOe      Z eOej      Zdф Zd҄ Zdӄ ZdԄ Z	 dِdՄZdddHdHd֜dׄZd dlZd dlZd dlZd dlZd dlZy(      N)Iterable)Enum)partialreducesingledispatchwraps)	AnyCallableDictListOptionaloverloadSequenceTupleUnion)	sym_floatsym_int)DeviceLikeTypeDimDimsSequenceTypeDimsTypedtype_to_typeELEMENTWISE_TYPE_PROMOTION_KIND	FloatLikeFloatWithoutSymFloatIntLikeis_weakly_lesser_typeNumber
NumberTypeRealNumberTypeREDUCTION_OUTPUT_TYPE_KIND	ShapeType
StrideType
TensorLikeTensorLikeTypeTensorOrNumberLikeTypeTensorSequenceType)_maybe_convert_to_dtype_maybe_resize_out_safe_copy_out"elementwise_type_promotion_wrapper elementwise_unary_scalar_wrapperout_wrapper)absacosacoshasinhasinatanatanhbitwise_notceilconj_physicalcoscoshcount_nonzerodeg2raddigammaerferfinverfcexpexpm1exponentialexp2fillfill_floorfrac	geometric	index_add
index_copyindex_copy_index_select
index_fillindex_fill_isfiniteisinfisposinfisneginfisnanisreali0lerplgammaloglog1plog2log10
log_normallog_softmaxmvlgammanormnormal
nan_to_numnegpositiverad2deg
reciprocalroundsigmoidsgnsignsignbitsinsincsinhsoftmaxsqrtsquaretantanhtracetruncaddatan2bitwise_andbitwise_left_shift
bitwise_orbitwise_right_shiftbitwise_xor	clamp_min	clamp_maxcopysigndiveqfloat_powerfloor_dividefmaxfminfmodgcdgegt	heavisidehypotigammaigammacimagiscloselcmle	logaddexp
logaddexp2logical_andlogical_not
logical_orlogical_xor	logsumexpltmaximumminimummulne	nextafterpowrealrpow	remainderrsubrtruediv	rfloordivsubtrue_dividetrunc_dividexlogyaddcdivaddcmulclampmasked_fillmasked_fill_whereclonecopy_toitemtoallamaxaminanycumsumcumprodmeandotvdotstdstd_meansumsum_to_sizeprodvarvar_meanaddralias
atleast_1d
atleast_2d
atleast_3d
as_stridedas_strided_scatterbroadcast_shapesbroadcast_tensorsbroadcast_tocatchunkcolumn_stackconjconstant_pad_nd
contiguous
diag_embeddiagdiagonaldiagonal_copydiagonal_scatterdsplitdstackexpand	expand_asflattenflipfliplrflipudhsplithstackmeshgridmovedimnarrownarrow_copynative_group_normnative_layer_normpermuteravelrepeatreshape
reshape_asrollrot90rsqrtstack	swap_axessqueezetTtake_along_dimtensor_split	transposeunfoldunfold_copy	unsqueezeviewview_asvsplitvstackview_as_complex	unflattenunbindtriutriltriu_indicestril_indicesarangecauchyempty
empty_likeempty_permutedempty_stridedeyefull	full_likelinspacelogspace	new_emptynew_empty_stridednew_fullnew_ones	new_zerosones	ones_likerandnscalar_tensorzerozeros
zeros_likeallcloseequal	bucketize
is_complexrenormstftistftc                 (    | | j                   dk(  ryy)NhpuFTtypedevices    _C:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_refs/__init__.pyis_noncontiguous_supportedr+  _  s    fkkU2    c                     d }ddl m} | D ]  }t        ||      s|j                  } n t	        |      s|j                         }|S )Nr   )
FakeTensor)torch._subclasses.fake_tensorr.  
isinstancefake_devicer+  r   )input_tlistoutputr)  r.  r   s        r*  handle_noncontiguous_outputsr4  e  sG    F8a$]]F 
 &f-""$Mr,  c                     t        d t        d |       D              }t        |      dk(  ry |D ]  }t        |t              rJ  dgt        t        d |D              z  }t        |      D ]x  \  }}t        ddt        |      z
  d      D ]W  }||   dk(  r||   dk  rt        d      ||   ||<   '||   dk7  s0||   ||   k7  s<t        d||    d	| d
| d| d| 
       z |S )Nc              3   F   K   | ]  }t        |t              r|fn|  y wNr0  r   .0xs     r*  	<genexpr>z$_broadcast_shapes.<locals>.<genexpr>u  s(      9A 1g&A-9s   !c                 
    | d uS r7   r;  s    r*  <lambda>z#_broadcast_shapes.<locals>.<lambda>w  s    !4-r,  r      c              3   2   K   | ]  }t        |        y wr7  len)r:  shapes     r*  r<  z$_broadcast_shapes.<locals>.<genexpr>  s     4VESZVs   z9Attempting to broadcast a dimension with negative length!z.Attempting to broadcast a dimension of length z at z ! Mismatching argument at index z had z0; but expected shape should be broadcastable to )tuplefilterrD  r0  r   r   max	enumeraterange
ValueErrorRuntimeError)_shapesshapesrE  common_shapearg_idxidxs         r*  _broadcast_shapesrS  t  s>    /9 F 6{a %*** 
 	
s4V456L $F+R#e*_b1CC A%:>$S  %*#JS!sq$c
2&HsTXY\X] ^99@	ug N66B^E  2 ,  r,  T)preserve_cpu_scalar_tensorsc                 \     t        d |D          fdt        fd|D              S )Nc              3   X   K   | ]"  }t        |t              r|j                  nd  $ y wr7  )r0  r$   rE  r:  r   s     r*  r<  z#_maybe_broadcast.<locals>.<genexpr>  s#     	G$QZ:.!''D
8$s   (*c                 ,   | y t        | t              r| S t        | t              rLrt        j                  |       r| S t        j
                  | j                        s| j                        S | S t        dt        t        |             z   dz         )Nz#Unexpected type when broadcasting: !)r0  r   r$   utilsis_cpu_scalar_tensor
same_shaperE  r   rM  strr'  )r;  rE  rP  rT  s     r*  __maybe_broadcastz+_maybe_broadcast.<locals>.__maybe_broadcast  s    96"H:&*u/I/I!/L##AGG\:xx--H5DGDsJ r,  c              3   0   K   | ]  } |        y wr7  r>  )r:  r;  r^  rP  s     r*  r<  z#_maybe_broadcast.<locals>.<genexpr>  s     BT"1l3Ts   )rS  rG  )rT  argsr^  rP  s   ` @@r*  _maybe_broadcastra    s-    $	G$	GL$ BTBBBr,  )register_decomposition)aten_op
extra_metareturnc                (     dt         f fd}|S )Nprimc                     t               t               t        t        d      dt        dt        f fd                            }t
        u r t        j                    j                         t              |       |S )Natype_promoting_argstype_promotion_kindrj  re  c                 B     |         |       }t        | g|      S r7  )r4  )rj  r3  rd  rg  s     r*  _refz>_make_elementwise_unary_reference.<locals>.inner.<locals>._ref  s*     %1!WF/V<<r,  )
r   r-   r,   r+   r%   infer_aten_oprZ  get_aten_op__name__rb  )rg  ro  rc  rd  rm  s   ` r*  innerz0_make_elementwise_unary_reference.<locals>.inner  s     
t		)	+ & 3

	=N 	=~ 	=	

 
* 
 
	= m#''dmm<G+"7+D1r,  r
   )rm  rc  rd  rs  s   ``` r*  !_make_elementwise_unary_referenceru    s    H 0 Lr,  c                       fd}||_         t        j                         j                  j                  d   |_        |S )u&  
    This function defines an alias of another function and sets its __name__ argument.
    It also sets its __module__ argument to the module of the caller.
    Note that when naïvely doing `alias = fn`, we have that `alias.__name__ == "fn"`, and
    `alias.__module__ == fn.__module__`.
    c                       | i |S r7  r>  )r`  kwargsfns     r*  _fnz_make_alias.<locals>._fn  s    4"6""r,  rr  )rr  inspectcurrentframef_back	f_globals
__module__)ry  namerz  s   `  r*  _make_aliasr    s7    # CL))+22<<ZHCNJr,  c                      t                fd       } j                   d}||_         t        t        t        |            |      }ddlm}  |       j                  }||vr|j                  |       |S )z
    Given a function with out variant (i.e. using `out_wrapper()), it returns its in-place variant
    See https://github.com/pytorch/pytorch/wiki/Developer-FAQ#how-do-in-place-operations-work-in-pytorch
    c                       | g|d| i|S )Noutr>  )rj  r`  rx  ry  s      r*  rz  z_make_inplace.<locals>._fn  s    !,d,,V,,r,  _r   )	getmodule)	r   rr  rb  getattratenr{  r  __all__append)ry  rz  inplace_namer  _alls   `    r*  _make_inplacer    sz     2Y- - kk]!$LCL
=
 |!<
=c
BC "R=  D4L!Jr,  c                 ,    t        j                  |       S r7  )primsr.   ri  s    r*  r.   r.   
      99Q<r,  c                 ,    t        j                  |       S r7  )r  r/   ri  s    r*  r/   r/         ::a=r,  c                 ,    t        j                  |       S r7  )r  r0   ri  s    r*  r0   r0         ;;q>r,  c                 ,    t        j                  |       S r7  )r  r2   ri  s    r*  r2   r2     r  r,  c                 ,    t        j                  |       S r7  )r  r1   ri  s    r*  r1   r1     r  r,  c                 ,    t        j                  |       S r7  )r  r3   ri  s    r*  r3   r3   #  r  r,  c                 ,    t        j                  |       S r7  )r  r4   ri  s    r*  r4   r4   (  r  r,  c                 ,    t        j                  |       S r7  )r  r5   ri  s    r*  r5   r5   -  s    Qr,  c                 ,    t        j                  |       S r7  )r  r6   ri  s    r*  r6   r6   2  r  r,  inputc                 @    t        j                  | j                        S r7  )rZ  is_complex_dtypedtyper  s    r*  r   r   7  s    !!%++..r,  c                 n    t        j                  | j                        s| S t        j                  |       S r7  )rZ  r  r  r  r7   r  s    r*  r7   r7   <  s,     !!%++.u%%r,  c                 ,    t        j                  |       S r7  )r  r8   ri  s    r*  r8   r8   D  r  r,  c                 ,    t        j                  |       S r7  )r  r9   ri  s    r*  r9   r9   I  r  r,  c                 ,    t        j                  |       S r7  )r  r<   ri  s    r*  r<   r<   N      ==r,  c                 ,    t        j                  |       S r7  )r  r=   ri  s    r*  r=   r=   S  r  r,  c                 ,    t        j                  |       S r7  )r  erf_invri  s    r*  r>   r>   X  r  r,  c                 ,    t        j                  |       S r7  )r  r?   ri  s    r*  r?   r?   ]  r  r,  c                 ,    t        j                  |       S r7  )r  r@   ri  s    r*  r@   r@   b  r  r,  c                 ,    t        j                  |       S r7  )r  rA   ri  s    r*  rA   rA   g  r  r,  c                 ,    t        j                  |       S r7  )r  rC   ri  s    r*  rC   rC   l  r  r,  za,rk  rj  valuec                 ,   t        | t              sJ t        |t              sJ t        j                  | j
                        }t        j                  t        |      |      sdt        |       d| d}t        |      t        j                  | |      S Nzvalue argument of type  cannot be safely cast to type rY  )r0  r$   r   rZ  r   r  r   r'  rL  r  rD   )rj  r  python_typemsgs       r*  rD   rD   s  s     a$$$eV$$$%%agg.K&&tE{K@'U}4ST_S``abo::ar,  c                 ^    t        j                  | |      }t        j                  | |       | S r7  )r  rD   r   )rj  r  rs      r*  rE   rE     s%    

1eA	MM!QHr,  c                 ,    t        j                  |       S r7  )torchr  r  s    r*  r  r    s     E""r,  c                 ,    t        j                  |       S r7  )r  rF   ri  s    r*  rF   rF     r  r,  r;  c                     t        j                  t        j                  t        j                  |             t        j                  |             }t        j
                  | |      S r7  )r  r   rF   r.   ri   r   )r;  trunc_xs     r*  rG   rG     s<    iiEIIaL15::a=AG99Q  r,  c                     t        | t              sJ t        j                  t	        j
                  | j                        d        t        j                  |       S )Nc                       y)Nz#imag only supports complex tensors.r>  r>  r,  r*  r@  zimag.<locals>.<lambda>  s    1Vr,  )	r0  r$   r  _checkrZ  r  r  r  r   ri  s    r*  r   r     sC    a$$$	LLqww')V ::a=r,  )rc  c                     t        j                  | j                        st        j                  | j                        rt	        j
                  |       S t        | t        j                        S )Nr  )	rZ  is_float_dtyper  r  r  rO   r  r  boolri  s    r*  rO   rO     sG    
 AGG$(>(>qww(G~~a  Qejj))r,  c                    t        j                  | j                        rNt        j                  t        t        j                  |             t        t        j                  |                   S t        j                  | j                        r!t        j                  |       t        d      k(  S t        j                  | t        j                        S )Ninfr  )rZ  r  r  r  r   rP   r   r   r  r.   floatr  r  ri  s    r*  rP   rP     s    agg&ejjm 4eEJJqM6JKKAGG$yy|uU|++AUZZ00r,  c                     t        j                  t        j                   j                          fd       t        j
                   j                        r t        d      k(  S t        j                   t         j                        S )Nc                  "    d j                    S )Nz7Complex dtype is not supported for isposinf, got dtype r  ri  s   r*  r@  zisposinf.<locals>.<lambda>      I!''Sr,  r  r  	r  r  rZ  r  r  r  r  r  r  ri  s   `r*  rQ   rQ     sa    	LL""177++S AGG$E%L  AUZZ00r,  c                     t        j                  t        j                   j                          fd       t        j
                   j                        r t        d      k(  S t        j                   t         j                        S )Nc                  "    d j                    S )Nz7Complex dtype is not supported for isneginf, got dtype r  ri  s   r*  r@  zisneginf.<locals>.<lambda>  r  r,  z-infr  r  ri  s   `r*  rR   rR     sa    	LL""177++S AGG$E&M!!AUZZ00r,  c                 .    t        j                  | |       S r7  r  r   ri  s    r*  rS   rS     s    88Aq>r,  r^   c                     t        j                  | j                        rt        j                  |       dk(  S t        j
                  | t        j                        S )Nr   r  )rZ  r  r  r  r   r  r  ri  s    r*  rT   rT     s>    
 agg&zz!}!!??1EJJ//r,  c                 ,    t        j                  |       S r7  )r  	bessel_i0ri  s    r*  rU   rU     s     ??1r,  c                 ,    t        j                  |       S r7  )r  rW   ri  s    r*  rW   rW     s    <<?r,  c                 ,    t        j                  |       S r7  )r  rX   ri  s    r*  rX   rX     r  r,  c                 ,    t        j                  |       S r7  )r  rY   ri  s    r*  rY   rY     r  r,  c                 ,    t        j                  |       S r7  )r  rZ   ri  s    r*  rZ   rZ     r  r,  c                 ,    t        j                  |       S r7  )r  r[   ri  s    r*  r[   r[     r  r,  dimr  c                     |xs | j                   }t        j                  |      }t        | |      }t        |t	        ||d      z
  |      S )NTkeepdim)r  rZ  get_computation_dtyper(   r   )rj  r  r  result_dtypecomputation_dtypea_s         r*  r]   r]     sK     #AGGL33LA	 $5	6B"2	"c4(H#H,WWr,  selfFr  r  c                    t        |t              s|f}| j                         dk(  r8t        j                  t        j
                  |       ||      j                         S t        j                  | |d      }t        j                  ||j                         t        d      k(  d      }|r|nt        j                  ||      }t        j                  t        j
                  | |z
        ||      }|j                         j                  |      S )Nr   Tr  r  )r0  r   numelr  r   r@   rX   r   r   r.   r  r   ru   )r  r  r  maxesmaxes_squeezedresults         r*  r   r     s     c8$fzz|qyy4#w7;;==JJtS$/EeUYY[E%L%@!DE%U5==+DNYYuyy.W=F::<N++r,  nanposinfneginfc                 v   t        | t              sJ t        j                  | j                        st        j
                  | j                        r| j                         S |d}|)t        j                  | j                        j                  }|)t        j                  | j                        j                  }t        j                  t        j                  |       ||       }t        j                  t        j                  |       ||      }t        j                  t        j                  |       ||      }|S )N        )r0  r$   rZ  is_boolean_dtyper  is_integer_dtyper   r  finforI  minr   rS   rR   rQ   )rj  r  r  r  r  s        r*  ra   ra   #  s     a$$$agg&%*@*@*Iwwy
{~QWW%))~QWW%))[[Qa0F[[*FF;F[[*FF;FMr,  c                 f    t        j                  | j                  t         j                  ud        y )Nc                       y)NzNegation, the `-` operator, on a bool tensor is not supported. If you are trying to invert a mask, use the `~` or `logical_not()` operator instead.r>  r>  r,  r*  r@  z_neg_meta.<locals>.<lambda>B  s     r,  )r  r  r  r  ri  s    r*  	_neg_metar  ?  s#    	LL	uzz!	
r,  )rd  c                 ,    t        j                  |       S r7  )r  rb   ri  s    r*  rb   rb   J  s     99Q<r,  c                 |    t        | t              sJ | j                  t        j                  u rd}t        |      | S )Nz'positive does not support bool tensors.)r0  r$   r  r  r  rM  )rj  r  s     r*  rc   rc   S  s7    a$$$ww%**73Hr,  c                     t        | t              sJ t        j                  | j                        rt        j                  |       S | S r7  )r0  r$   rZ  r  r  r  r   ri  s    r*  r   r   \  s7    a$$$agg&zz!}Hr,  c                 ,    t        j                  |       S r7  )r  re   ri  s    r*  re   re   c  s    Ar,  c                 ,    t        j                  |       S r7  )r  rf   ri  s    r*  rf   rf   i  s    
 ;;q>r,  c                 ,    t        j                  |       S r7  )r  r   ri  s    r*  r   r   q  r  r,  c                 R    t        dt        dt        t        |                         S NrA  )r   ru   r@   rb   ri  s    r*  rg   rg   v  s    q#aSV-..r,  c                     t        j                  | j                        r-| j                         }t	        j
                  |dk(  d| |z        S | j                         S Nr   )rZ  r  r  r.   r  r   ri   )rj  a_abss     r*  rh   rh   {  sE    agg&{{5A:q!e)44vvxr,  c                 ,    t        j                  |       S r7  )r  ri   ri  s    r*  ri   ri     r  r,  c                 ,    t        j                  |       S r7  )r  rj   ri  s    r*  rj   rj     r  r,  c                 ,    t        j                  |       S r7  )r  rk   ri  s    r*  rk   rk     r  r,  c                     t         j                  | z  } t        j                  | dk(  dt        j                  |       | z        S Nr   rA  )mathpir  r   rk   ri  s    r*  rl   rl     s3    !A;;qAvq%))A,"233r,  c                 ,    t        j                  |       S r7  )r  rm   ri  s    r*  rm   rm     r  r,  c                 ,    t        j                  |       S r7  )r  ro   ri  s    r*  ro   ro     r  r,  c                     t        | |       S r7  )r   ri  s    r*  rp   rp     s    
 q!9r,  c                 ,    t        j                  |       S r7  )r  rq   ri  s    r*  rq   rq     r  r,  c                 ,    t        j                  |       S r7  )r  rr   ri  s    r*  rr   rr     r  r,  c                 ,    t        j                  |       S r7  )r  rt   ri  s    r*  rt   rt     r  r,  c                    | j                   t        j                  t        j                        fd       | j                         }t        j                  t        |      dk7  d        t        j                  |d   dk(  d        | j                         }t        j                  |d   dk(  d        |d d }t        j                  t        d	 |D              d
        t        j                  | j                         dz  dk(  d        t        j                  | t        j                              j                  d      S )Nc                      d  S )Nz^view_as_complex is only supported for floating pointtensors, but got a tensor of scalar type: r>  )input_dtypes   r*  r@  z!view_as_complex.<locals>.<lambda>  s     55@MCr,  r   c                       y)Nz-Input tensor must have one or more dimensionsr>  r>  r,  r*  r@  z!view_as_complex.<locals>.<lambda>      ?r,  rF     c                       y)Nz+Tensor must have a last dimension of size 2r>  r>  r,  r*  r@  z!view_as_complex.<locals>.<lambda>      =r,  rA  c                       y)Nz/Tensor must have a last dimension with stride 1r>  r>  r,  r*  r@  z!view_as_complex.<locals>.<lambda>      Ar,  c              3   ,   K   | ]  }|d z  dk(    yw)r  r   Nr>  )r:  strides     r*  r<  z"view_as_complex.<locals>.<genexpr>  s     2T6vzQT   c                       y)NzCTensor must have a stride divisible by 2 for all but last dimensionr>  r>  r,  r*  r@  z!view_as_complex.<locals>.<lambda>  s    Ur,  c                       y)Nz0Tensor must have a storage_offset divisible by 2r>  r>  r,  r*  r@  z!view_as_complex.<locals>.<lambda>  s    Br,  )r  r  r  rZ  r  sizerD  r  py_allstorage_offsetr  view_element_typecorresponding_complex_dtyper   )r  sizesold_stridesdimsr  s       @r*  r   r     s   **K	LL[)	C
 IIKE	LLE
a? 
LLb	Q=
 ++-K	LLB1A sD	LL2T22U 
LL!Q&B ""e//<gbkr,  c           	      <     dt         f fd}|S )Nrg  c                 f     j                   t               t        d	      dt        t        t
        f   dt        t        t
        f   dt        f fd              }r t               |      }|_         t        u rt        j                         r t              |       |S )Nrj  brk  rj  r   re  c                 |   t        j                  xs t        | t               fd       t        j                  xs t        |t               fd       t        j                  xs# t        | t              xr t        |t               fd       t	        | |      \  } } | |      }t        | |g|      S )Nc                        dS )Nzc: Received a lhs Python scalar to an elementwise binary operation that does not accept lhs scalars!r>  r  s   r*  r@  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>      4& !> >r,  c                        dS )Nzc: Received a rhs Python scalar to an elementwise binary operation that does not accept rhs scalars!r>  r#  s   r*  r@  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>   r$  r,  c                        dS )Nz?: Receive two Number inputs to an elementwise binary operation!r>  r#  s   r*  r@  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>  s    4& _`r,  )r  _check_valuer0  r   ra  r4  )rj  r   r3  r  rg  supports_lhs_python_scalarsupports_rhs_python_scalarsupports_two_python_scalarss      r*  ro  z?_make_elementwise_binary_reference.<locals>.inner.<locals>._ref  s     *G*Q2G.G>
 *G*Q2G.G>
 + I"1f-G*Q2GH`
 $Aq)DAq!QZF/A??r,  )rr  r   r+   r   Tensorr   r-   rp  rZ  rq  rb  )
rg  ro  rc  has_outr  should_register_decompositionr(  r)  r*  rm  s
   ` r*  rs  z1_make_elementwise_binary_reference.<locals>.inner  s    <==D	t	+ * 3

	@VZ'(	@VZ'(	@ 	@ 	@	

 

	@.  ;=&Dm#''d3G#@+"7+D1r,  rt  )	rm  rc  r  r,  r(  r)  r*  r-  rs  s	   ```````` r*  "_make_elementwise_binary_referencer.    s    *H * *X Lr,  r  alphar   r0  c                   t        | |      \  } }|t        | t              r| j                  n|j                  }t	        j
                  |      }|t        k7  r<t	        j                  t        |      |      sdt        |       d| d}t        |      t        |t              rt        j                  ||      }n||z  }t        j                  | |      }t        | |g|      S )z/
    Reference implementation of torch.add
    alpha argument of type r  rY  )ra  r0  r$   r  rZ  r   r  r   r'  rL  r  r   ru   r4  rj  r   r0  r  r  r  r3  s          r*  ru   ru     s      Aq!DAq%a4!''))%0$u'B'BK(
 ,DK=8WXcWddefCS/!a$		!U#AE	AYYq!_F'A77r,  )rm  r(  r)  c                 .    t        j                  | |      S r7  )r  rv   r  s     r*  rv   rv   >       ;;q!r,  )rm  c                 .    t        j                  | |      S r7  )r  rw   r  s     r*  rw   rw   G       Q""r,  c                 .    t        j                  | |      S r7  )r  
shift_leftr  s     r*  rx   rx   N       Aq!!r,  c                 .    t        j                  | |      S r7  )r  ry   r  s     r*  ry   ry   U  r:  r,  c                 .    t        j                  | |      S r7  )r  shift_right_arithmeticr  s     r*  rz   rz   \  s     ''1--r,  c                 .    t        j                  | |      S r7  )r  r{   r  s     r*  r{   r{   c  r7  r,  )rm  r(  c                    t        |t              r3t        | t              r#t        || j                  | j
                        }njt        | t              rZt        |t              rJ| j
                  |j
                  k7  r1dj                  | j
                  |j
                        }t        |      t        t        |      t        t        |             t        |             S )Nr  r)  ZExpected divisor (b) to be on the same device ({}) as dividend (a), but it is found on {}!)r0  r   r+  r  r  r)  formatrM  r   rj   rb   r.   )rj  r   r  s      r*  r~   r~   j  s     !VAv!6!177188<	Av	:a#8QXX=QjqqHHahh
 3SQ[#a&11r,  )rounding_moderC  c                    |t        | |      S |dk(  rt        | |      S |dk(  rt        | |      S d| d}t        |      )z/
    Reference implementation of torch.div
    rt   rF   zLdiv expected rounding_mode to be one of None, 'trunc', or 'floor' but found .)r   r   r   rL  )rj  r   rC  r  s       r*  r   r   ~  s\     1a  	'	!Aq!!	'	!Aq!!\]j\kklmor,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r         
 88Aq>r,  c                 
   t        | t              st        |t              sJ t        |t              r9|dk(  r| j                         S |dk(  r| | z  S |dk(  rt	        j
                  |       S t        | t              rs| dk(  rt	        j                  |d      S | dk(  rSt        j                  |j                        st        j                  |j                        rt	        j                  |      S t        j                  | |      S )N      ?g       @      ?T)r0  r%   r   r   r  ro   rD   rZ  r  r  r  rC   r  r   r  s     r*  r   r     s     a(Jq.,III!V8779#Xq5L#X::a= 	Av	8::a&&8  )U-C-CAGG-L::a= 99Q?r,  c                 ^   t        | t              rt        |t              rt        d      t        j                  | |      }|J t        j
                  |      rt        j                  }nt        j                  }t        | |      } t        ||      }t        | |      \  } }t        | |      S )Nz=Receive two Number inputs to an elementwise binary operation!)r0  r   rL  rZ  get_higher_dtyper  r  
complex128float64r(   ra  r   rj  r   r  s      r*  r   r     s    
 !VAv!6K
 	

 ""1a(Ee$   	 5)A5)AAq!DAqq!9r,  )rm  r*  r-  c                    t        | t              r(t        |t              rt        |       } t        |      }n3t        |t              r3t        | t              r#t        || j                  | j
                        }nt        | t              r3t        |t              r#t        | |j                  |j
                        } nt        | t              rt        |t              r| j
                  |j
                  k7  rt| j
                  t        j
                  d      k(  r1dj                  | j
                  |j
                        }t        |      t        j                  || j
                        }t        | t              rt        |t              sJ | j                  t        j                        rt        | |      S t        j                        rt        | |      S t        j                   dfd       y )Nr@  cpurA  r(  Fc                        dS )Nz not supported for floor_divider>  r  s   r*  r@  zfloor_divide.<locals>.<lambda>  s    ug-L$Mr,  )r0  r   r  r+  r  r)  r  rB  rM  r  
device_putrZ  r  _floor_divide_floatr  _floor_divide_integerr  )rj  r   r  r  s      @r*  r   r     s\    !VAv!6!!	Av	:a#8!177188<	Av	:a#8!177188<	Av	:a#8QXX=Q88u||E**nuu!((C s##  1884Aa Z6%:::GGEE""1a((				&$Q**UMNr,  c                 t   t        | |      \  } }| j                  j                  st        j                  | |      S t        j                  |       t        j                  |      k7  j                  t        j                  | |      dk7        }t        j                  | |      t        || j                        z
  S r  )
ra  r  	is_signedr  r   r  rj   r   r   r(   )rj  r   offsets      r*  rU  rU    s    Aq!DAq77yyA mmA%--"22??

1a@PTU@UVF99Q?4VQWWEEEr,  c                     t        | |      }t        t        | |      |      }t        t	        | d      t	        |d            }t        |d      }t        ||      }t        |t        |d      |      }t        |      }t        t        ||      d      }t        |t        |d      |      }t        | |      }t        d|j                  |j                        }	t        t        |d      |t        |	|            }t        t        |d      ||      S )Nr   rA  rJ  r@  )r   r   r   r{   r   r   rw   r   rF   r   ru   r  r  r)  r~   )
rj  r   modr   different_signed_inputsnon_zero_remaindermask	floor_div	basic_divzero_tensors
             r*  rT  rT    s    
q!*C
c!Sk1
%C *"Q(Bq!H=C)+BCD
c#qk3
'C c
Ic#y!3'DdC	1-y9IAq!IAQAQRK baj)Xk9-MNI Aq9i00r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   7       ::ar,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   @  rb  r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   I  rb  r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   R  s     99Q?r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   [  rG  r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   c  rG  r,  valuesc                    t        j                  | d      }t        j                  t        j                  | d      t        j                  |             }t        j
                  |dd      }t        j
                  |||      }|S r  )r  r   r   r   rS   r   )r  rh  input_eq_zeroinput_lt_zerozeros_and_onesr3  s         r*  r   r   k  sc     HHUA&M$$UXXeQ%7U9KLM[[15N[[?FMr,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   x  r5  r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r     s     <<1r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r     s     ==Ar,  r  rtolatolc                      t        j                  j                  j                  k(   fd       t        j                  dk\   fd       t        j                  dk\   fd       y )Nc                  B     d j                    dj                    dS )Nz4: Attempting to compare tensors of different dtypes  and rY  r  )rj  r   r  s   r*  r@  z#_check_close_args.<locals>.<lambda>  s'    4&LQWWIUZ[\[b[bZccder,  r   c                        d dS )Nz6: rtol must be greater than or equal to zero, but got rY  r>  )r  rp  s   r*  r@  z#_check_close_args.<locals>.<lambda>      4&NtfTUVr,  c                       d  dS )Nz6: atol must be greater than or equal to zero, but got rY  r>  )rq  r  s   r*  r@  z#_check_close_args.<locals>.<lambda>  rv  r,  )r  r'  r  r  r  rj  r   rp  rq  s   `````r*  _check_close_argsry    sV     
	177e 
LL	V 
LL	Vr,  	equal_nanc           
         t        d| |||       t        | |      }|rft        j                  | j                        st        j
                  | j                        r(t        |t        t        |       t        |                  }|dk(  r|dk(  r|S t        j                  | j                        sot        j
                  | j                        sPt        j                  | t        j                               } t        j                  |t        j                               }t        |t        t        ||                  }t        t!        | |            }t        |t        t#        |      t%        ||                  }|S )Nztorch.iscloserx  r   )ry  r   rZ  r  r  r  r   r   rS   r  convert_element_typer  get_default_dtyperu   r.   r   r   rO   r   )	rj  r   rp  rq  rz  closeallowed_erroractual_errorr  s	            r*  r   r     s    ?a14dKq!HEe**1773u7M7Magg7V5+eAha"AB qyTQY (1G1G1P&&q%*A*A*CD&&q%*A*A*CDc#a,/0Ms1ay>L {8L12lM3RSF Mr,  c                    | j                   }|t        j                  t        j                  fv }|rHt	        j
                  | t        j                        } t	        j
                  |t        j                        }t        j                  | |      }t        j                  |dk(  d|      }t        j                  t	        j                  | |      |z        }|s|S t	        j
                  ||      S r  )r  r  int8int16r  r|  int32r   r   r.   r   )rj  r   r  promote_to_intgress         r*  r   r     s     GGE uzz5;;77N&&q%++6&&q%++6		!QAAFAq!A
))EIIaOa'
(C$3P%*D*DS%*PPr,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r     rG  r,  c                    t        j                  |       t        j                  |      k\  }t        j                  || |      }t        j                  |||       }t        j                  t        j                  t        j
                  t        j                  |                   t        j                  |       t        j                  |      k(        }t        j                  | j                        st        j                  |j                        rt        j                  |      dk  }t        j                  ||t        j                  t        j                  |      t        j                  |      z               }t        j                  |||t        j                  t        j                  ||z
              z         }t        j                  |      }	t        j                  |	t        t        d      t        d            |      S t        j                  || |t        j                  t        j                  ||z
              z         S )Nr   r  )r  r   r   r   r   rO   rZ  r  r  rX   r@   rY   rS   complexr  )
rj  r   r]  max_min_inf_maskneg_min_maskinf_valsnon_nan_valsnan_masks
             r*  r   r     s    ::a=EJJqM)D;;tQ"D;;tQ"D  %..A78%**Q-5::VW=:XH agg&%*@*@*Izz$'!+;;$		%))D/EIIdO*K L
 {{hu{{599TD[3I'J J
 ;;t${{8WU5\5<%H,WW{{8Qu{{599TD[;Q/R(RSSr,  c                 ,   t        j                  t        j                  | j                        xs t        j                  |j                         d        | |k\  }t        j
                  || |      }t        j
                  |||       }t        j                  t        j                  |       | |k(        }dt        j                  d      z  }|t        j                  t        j                  ||z
              |z  z   }t        j
                  || |      S )Nc                       y)Nz)logaddexp2 doesn't support complex dtypesr>  r>  r,  r*  r@  zlogaddexp2.<locals>.<lambda>      ;r,  rI  r  )r  r  rZ  r  r  r   r   rP   r  rX   rY   rC   )rj  r   r]  r  r  r  	inv_log_2r  s           r*  r   r     s     
LL##AGG,O0F0Fqww0OP;
 6D;;tQ"D;;tQ"D  Qa8Hdhhqk!IEKK

4$; 789DDF;;xF++r,  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }| |z  S r  rZ  r  r  r  s     r*  r   r   "  C     !!!''*F!!!''*Fq5Lr,  c                 P    t        j                  | j                        s| dk(  S |  S r  r  ri  s    r*  r   r   -  s$    !!!''*Av2Ir,  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }t        | |      S r  )rZ  r  r  ry   r  s     r*  r   r   4  sG     !!!''*F!!!''*Far,  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }| |z  S r  r  r  s     r*  r   r   @  r  r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   K  rG  r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   S       ==Ar,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   Z  r  r,  )rm  r*  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   a  s    
 99Q?r,  c                 .    t        j                  | |      S r7  r  r  s     r*  r   r   i  rG  r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   q  s     ??1a  r,  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r   z  s     ??1a  r,  c                X    t        | t              rd}t        |      t        || |      S )Nz?Received a Number for the first argument, but expected a Tensorr/  )r0  r   rL  r   )rj  r   r0  r  s       r*  r   r     s,     !VOoq!5!!r,  c                   t        | |      \  } }|t        | t              r| j                  n|j                  }t	        j
                  |      }t	        j                  t        |      |      sdt        |       d| d}t        |      t        |t        j                        rt        j                  ||      }n||z  }t        j                  | |      }t        | |g|      S )z/
    Reference implementation of torch.sub
    r2  r  rY  )ra  r0  r$   r  rZ  r   r   r'  rL  r  r+  r  r   r   r4  r3  s          r*  r   r     s      Aq!DAq%a4!''))%0**4;D+DK=8WXcWddefCS/!a&		!U#A
 E	AYYq!_F'A77r,  r   )rm  r  rc  r*  c                 .    t        j                  | |      S r7  )r  r   r  s     r*  r   r     s     99Q?r,  c           
         t        j                  t        | t              xs t        |t              d        t        |t              r3t        | t              r#t        | |j                  |j                        } nBt        | t              r2t        |t              r"t        || j                  | j                        }t        | t              sJ t        |t              sJ t        j                  t        j                  | d      dt        j                  | t        j                  |                  }t        j                  t        j                  |      t        d      |      S )Nc                       y)Nz/Expected either argument a or b to be a Tensor"r>  r>  r,  r*  r@  zxlogy.<locals>.<lambda>  r  r,  r@  r   r  )r  r  r0  r$   r   r  r  r)  r   r   r   rX   rS   r  )rj  r   rhss      r*  r   r     s     
LL1j!>Z:%>A !Z Z6%:!177188<	Az	"z!V'<!177188< a$$$a$$$
++ehhq!na1eiil)C
DC;;u{{1~uU|S99r,  )rm  rc  r*  c                     t        j                  |       }t        j                  |      rt        j                  | |      S t        t        j                  | |            S r7  )rZ  	get_dtyper  r  r   rt   rO  s      r*  r   r     sE     OOAEe$yyA1a!!r,  )r  tensor1tensor2rA  r  r  r  c                    X| j                   }t        j                  |      t        j                  t        j
                  t                    fd       | |z  |z  z   S )z3
    Reference implementation of torch.addcdiv
    c                  (    dt               d  dS r  r&  r  r  s   r*  r@  zaddcdiv.<locals>.<lambda>       -d5k]:YZeYffghr,  r  rZ  r   r  r'  r   r'  r  r  r  r  r  r  s      ` @r*  r   r     _      

))%0''U[Ah	

 %'/G+++r,  c                    X| j                   }t        j                  |      t        j                  t        j
                  t                    fd       | |z  |z  z   S )z3
    Reference implementation of torch.addcmul
    c                  (    dt               d  dS r  r&  r  s   r*  r@  zaddcmul.<locals>.<lambda>  r  r,  r  r  s      ` @r*  r   r     r  r,  )rj  r  rI  r  rI  c                    ||d}t        |      |Vt        j                  |       }t        j                  t        j                  | |      |      }t        j
                  || |      } |Vt        j                  |       }t        j                  t        j                  | |      |      }t        j
                  || |      } | S )Nz+clamp called but both min and max are none!)rL  r  rS   ry   r   r   r   )rj  r  rI  r  a_isnan	conditions         r*  r   r   !  s     {s{;o
++a.$$UXXa%5w?	
 KK	1c*
++a.$$UXXa%5w?	KK	1c*Hr,  c                 0    t        j                  | |      S )N)r  r  r   )r  r  s     r*  r|   r|   A       ;;t%%r,  c                 0    t        j                  | |      S )N)rI  r  )r  rI  s     r*  r}   r}   J  r  r,  predc                      ||t         t        j                   ||d       t        j                   j
                  t        j                  u  fd       t         ||      \   }}t        j                   ||      S ) Tallow_cpu_scalar_tensorsc                  "    d j                    S )Nz#expected predicate to be bool, got r  )r  s   r*  r@  zwhere.<locals>.<lambda>m  s    5djj\Br,  )
NotImplementedErrorrZ  check_same_devicer  r  r  r  ra  r  r   )r  rj  r   s   `  r*  r   r   Z  sp     	yAI!!	D!QF	LL

ejj B
 "$1-JD!Q;;tQ""r,  memory_formatr  c                4    t        j                  | |      }|S Nr  )r  r   )rj  r  r  s      r*  r   r   w  s    
 [[-8FMr,  )allow_cross_devicec                    |sJ| j                   |j                   k7  r1dj                  |j                   | j                         }t        |      t        j                  | |      S )NzXAttempting to copy from device {} to device {}, but cross-device copies are not allowed!)r)  rB  rM  r  r   )rj  r   r  r  s       r*  r   r     sO    !((ahh"6hooHHahh
 3==Ar,  c                     | j                         dk7  rd| j                          d}t        |      t        j                  | j                        } |t        j                  |             S )NrA  zCan't convert a tensor with z elements to a number!)r  rL  rZ  r   r  r  r   )rj  r  number_types      r*  r   r     sW    wwyA~,QWWYK7MNo %%agg.Kuzz!}%%r,  r)  copylayout
pin_memorynon_blockingc                     | xrw |d u xs | j                   |k(  xr` |d u xs | j                  |k(  xrI |d u xs | j                  |k(  xr2 |d u xs, |t        j                  k(  xs t        j                  | |      S r  )r)  r  r  r  preserve_formatrZ  is_contiguous_for_memory_format)rj  r)  r  r  r  r  r  r  s           r*  _to_will_aliasr    s      
	
t^1qxx61
	
d].agg.
	
 t^1qxx61
	
 T! U 5 55U44QmTr,  c                      t         r7  )r  )r`  rx  s     r*  _to_dispatchr    s    
r,  c                     | ||||d}|S N)r)  r  r  r  r  r>  r)  r  r  r  r  rx  s         r*  
_to_devicer    s!     $&F Mr,  c                 <    t        j                  |       ||||d}|S r  )r  r)  r  s         r*  _to_device_strr    s*     ,,v&$&F Mr,  c                     | |||d}|S )N)r  r  r  r  r>  )r  r  r  r  rx  s        r*  	_to_dtyper    s     $&	F Mr,  otherc                 `    | j                   }| j                  }| j                  }||||||d}|S )N)r)  r  r  r  r  r  )r)  r  r  )r  r  r  r  r)  r  r  rx  s           r*  	_to_otherr    sA     \\FKKE\\F $&F Mr,  	to_kwargsc                    g d}d|v r.t        |d   t              rt        j                  |d         |d<   |D ]  }||v s|dk(  r||   t        j                  u st|dk(  r[||   j
                  | j                  j
                  k(  r5||   j                  r:||   j                  | j                  j                  k(  st        | |d       ||   k(  s|j                  |        y )N)r  r)  r  r  r)  r  )	r0  r]  r  r)  r  r'  indexr  pop)rj  r  options_to_checkkws       r*  _canonicalize_to_argumentsr    s    E9Ih,?!E#ll9X+>?	(?&9R=E<Q<Q+Q(N!"**ahhmm;%bM//9R=3F3F!((..3X Ar4(IbM9 b! r,  c                    t        |      dk7  rt        |i |}d|vsJ t        | |       t        | fi |r| S d|v r|j	                  d      nd}d|v r|j	                  d      nd}|s)|j                  d| j                        | j                  k7  r>|s<d|vr8d|vr4d	|vr0t        j                  | |j                  d| j                              S t        j                  | fi |}t        ||        |S )
Nr   r  r  Fr  r  r  r)  r  )rD  r  r  r  r  getr  r  r|  r  r	  r   )rj  r`  rx  r  r  r  s         r*  r   r     s    
4yA~t.v. v%%%q&)a"6"!'6!16::fuD1?61I6::n-uL 
&**Wagg.!''9F*V#V# ))!VZZ-IJJa*6*FFAMr,  )has_identityaccepts_dim_tupler  keepdimsr  r  rg  r  r  r  r  r  output_dtype_kindc                
    t         t              sJ  j                  dkD  rt        d j                   d      |.t        |t              sJ |||j                  k7  rt        d      |s|t        |t
              sJ t        |t
              r|f}t        j                   j                  |      }|s2 j                  dk(  xs t         fd|D              }	|	st        d      t        j                   ||      \  }
}t         |
        | |      }|rst         j                        D cg c]  }||vr j                  |   nd }}t         j                        D cg c]	  }||vs| }}t        j                  |||      }|C|J |||j                  k7  rt        d	      t        ||j                        }t!        ||
      S |j                  |k7  r|t        j"                  ||      }|S c c}w c c}w )N@   zReceived a tensor with z? dimensions, but only tensors with up to 64 dims are supported!z4dtype argument and out dtype must match in reductionr   c              3   <   K   | ]  }j                   |     y wr7  rE  r:  irj  s     r*  r<  z_reduction.<locals>.<genexpr>a  s     +E1AGGAJ   zJreducing over zero-size dimension for reduction operation without identityrA  z7Expected the dtype of reduction result and out to match	copy_fromr   )r0  r$   ndimrM  r  r   rZ  reduction_dimsrE  r  reduction_dtypesr(   rK  r  broadcast_in_dimr)   r*   r|  )rj  rg  r  r  r  r  r  r  r  valid_shaper  r  r  r  output_shapebroadcast_dimss   `               r*  
_reductionr  @  s    a$$$vv{%affX-lm
 	
 #z***		!"J  |z$444$w.DffkEV+E+E%E\  ',&<&<	e'#| 	 #45A!T]FDI!&&MRMqatm
:MR%*166]D]atm!]D''nM
'''!:I   V\\2<<|||#(@++FLAM! SDs   1G;&	H 0H c                       j                   } t                       dd fd
}| d}||_          t        t        t        |            |      }|S )zk
    Given a view function (e.g. torch.diagonal) generates its copy variant (e.g. torch.diagonal_copy)
    Nr  c                 `     |d| i|}|  |j                  t        j                        S |S )Nr  r  )r   r  contiguous_format)r  r`  rx  r  ry  s       r*  rz  z!_make_copy_from_view.<locals>._fn  s8    T-s-f-;<<e.E.E<FFr,  _copy)rr  r-   rb  r  r  )ry  r  rz  	copy_names   `   r*  _make_copy_from_viewr    sV     ;;D	r	B  &ICL
:
 y!9
:3
?CJr,  c                     t        j                  t        j                  t        j                  |       ||            }| j                  t         j                  k(  r |j                  t         j                        }|S )Nr  r  )r  r   r   r  uint8r   )rj  r  r  r  s       r*  r   r     sU     uyy):):1)=sGTUFww%++-Mr,  c                 h   t        | t        j                        }t        |t        t
        f      rt        |      dk(  r|j                         }n"|j                  ||      j                  d      }| j                  t        j                  u r$t        j                  |t        j                        S |S )Nr   )r  r  F)r(   r  r  r0  listrG  rD  r   r   r   r  r
  r  r|  )rj  r  r  r  r  s        r*  r   r     s     
!EJJ	/B#e}%#c(a-C144U; 	ww%++))&%++>>Mr,  r  r  c          	      N   |j||j                   }n[t        j                  | j                         st        j                  | j                         rt        j
                  }n| j                   }|dk(  s|g k(  rd }t        | t        j                  ||||t        j                        S Nr>  r  r  r  r  r  )r  rZ  r  r  r  int64r  r  r   r!   SAMErj  r  r  r  r  s        r*  r   r     s     }?IIE##AGG,0F0Fqww0OKKEGGE
byC2I			499 r,  c           
      
    t        j                  d      t        j                  t        j                   j
                         fd       t        j                   j
                        r#t              dkD  rt        j                         S  j                  t              z
  t        t                    t         fdt        t                    D              z   }t        j                   |dd       S )NFvalidatec                  *    d d j                    dS )Nzsum_to_size: size "z" is not expandable to size ""r  rj  rE  s   r*  r@  zsum_to_size.<locals>.<lambda>  s    %eW,I!''RSTr,  r   c              3   \   K   | ]#  }|z
     d k(  rj                   |   d k7  r| % ywrA  Nr  )r:  r  rj  leading_dimsrE  s     r*  r<  zsum_to_size.<locals>.<genexpr>  s9      50A\!"a'AGGAJ!O 	
0s   ),T)r  r  r  )rZ  extract_shape_from_varargsr  r  is_expandable_torE  is_same_shaperD  r  view_ofr  rG  rK  r   )rj  rE  reduce_dimsr  s   `` @r*  r   r     s     ,,UUCE	LLuagg.T 5!''*s5zA~}}Q66CJ&Ll+,u 5|SZ05 0 K
 99QKTBBr,  c          	      N   |j||j                   }n[t        j                  | j                         st        j                  | j                         rt        j
                  }n| j                   }|dk(  s|g k(  rd }t        | t        j                  ||||t        j                        S r  )r  rZ  r  r  r  r  r  r  r   r!   r  r  s        r*  r   r     s     }?IIE##AGG,0F0Fqww0OKKEGGE
byC2I	

499 r,  r  c          
      x    |dk(  s|g k(  rd }t        | t        j                  ||d |dt        j                        S Nr>  Fr  r  r  r  r  r  )r  r  r   r!   r  rj  r  r  r  s       r*  r   r   	  E     byC2I	

499	 	r,  c          
      x    |dk(  s|g k(  rd }t        | t        j                  ||d |dt        j                        S r$  )r  r  r   r!   r  r&  s       r*  r   r   '	  r'  r,  c                 6    |t        | t              r| }d } | |fS r7  )r0  r  )r  unbiaseds     r*  _dim_var_dispatchr+  ?	  s'     JsD1=r,  
correctionr*  r-  c          
          t        ||      \  }}t        j                  ||      }|dk(  s|g k(  rd }t        | t	        t
        j                  |      ||d d dt        j                        }|S )Nr>  r,  Tr%  )	r+  rZ  set_correctionr  r   r  r   r!   COMPLEX_TO_FLOAT)rj  r  r*  r  r-  r  s         r*  r   r   I	  sr     &c84MC%%h
;J
byC2I			j14EE	F Mr,  c                .   t        ||      \  }}t        j                  ||      }t        j                  | t        j
                        \  }}t        | |      } t        j                  | |||      }t        j                  |      }|J t        ||      S N)r-  r  )
r+  rZ  r/  r  r!   r0  r(   r  r   ro   )	rj  r  r*  r  r-  opmath_dtyper  a_vara_stds	            r*  r   r   f	  s     &c84MC%%h
;J00	%66L% 	 <0AIIaWEEJJuE"5%00r,  c          	         	 |dk(  s|g k(  rd }	 j                   t        j                  d u xs j                   k(  fd       t         t        j
                  ||d t        j                        }t        j                  t        j                        xs t        j                        	fd       t        |t              r|f}t        j                   j                  |      } j                  dk(  rdn#t!        t"        j$                   fd|D        d      }t'        ||      } j                   n}t)        ||      }5t        t*              sJ t-        |j                        t/        |      S |S )	Nr>  c                  *    d  dj                    dS )Nz"Expected out tensor to have dtype z
, but got  insteadr  r  s   r*  r@  zmean.<locals>.<lambda>	  s    4UG:cii[PXYr,  r  c                      ddnd d  S )Nz&mean(): could not infer output dtype. Inputr   z> dtype must be either a floating point or complex dtype. Got: r>  )r  
orig_dtypes   r*  r@  zmean.<locals>.<lambda>	  s"    4$,w*= >77<g?r,  r   rA  c              3   <   K   | ]  }j                   |     y wr7  r  r  s     r*  r<  zmean.<locals>.<genexpr>	  s     7QDq
Dr  r  )r  r  r  r  r  r   r!   KEEP_PROMOTED_TYPErZ  r  r  r0  r   r  rE  r  r   operatorr   r   r(   r$   r)   r*   )
rj  r  r  r  r  r  r  nelemr  r;  s
   `  ``    @r*  r   r   }	  sV    byC2IJ}	LLt)syyE)Y 			4GGF 
LLU#Du'='=e'D	
 #sf-D1A&7QD7QST"UE'F#m177L$V\:F
#z***V\\2<<Mr,  out0out1)r*  r  r-  c                d   t        ||      \  }}t        j                  ||      }t        j                  | t        j
                        \  }}| j                  }t        | |      } t        j                  | |||      \  }}	t        j                  |      }
|J t        |
|      t        |	|      fS r2  )r+  rZ  r/  r  r!   r0  r  r(   r  r   ro   )rj  r  r*  r  r-  r3  r  original_dtyper4  a_meanr5  s              r*  r   r   	  s     &c84MC%%h
;J00	%66L% WWN<0ANN1cj'RME6JJuEu-7 r,  c                b    t        ||      \  }}t        | ||||      }t        | ||      }||fS )Nr,  )r+  r   r   )rj  r  r*  r  r-  vms          r*  r   r   	  s=     &c84MCAsHg*=AQWAa4Kr,  )r  vec1vec2)betar0  rH  rI  rJ  c                `    t        j                  j                  dk(  fd       t        j                  j                  dk(  fd        j                  j                  d   j                  d          t        j                   j                        rt        j                  t        t              t              fd       t        j                  t        t              t              fd       s.rt        j                        S t        j                   d      S t        j                   rt        j                              S t        j                   d            S t        j                  t        t              t         j                               fd       t        j                  t        t              t         j                               fd	       dk(  rt        j                        z  S  z  t        j                        z  z   S )
NrA  c                  $    d j                    dS )Nz*addr: Expected 1-D argument vec1, but got -Dr  )rH  s   r*  r@  zaddr.<locals>.<lambda>	      <TYYKrJr,  c                  $    d j                    dS )Nz*addr: Expected 1-D argument vec2, but got rM  rN  )rI  s   r*  r@  zaddr.<locals>.<lambda>	  rO  r,  r   c                       dt                S )Nzexpected bool/int beta but got r&  rJ  s   r*  r@  zaddr.<locals>.<lambda>	  s    5d4j\Br,  c                       dt                S )Nz expected bool/int alpha but got r&  rR  s   r*  r@  zaddr.<locals>.<lambda>	  s    6tDzlCr,  Fc                  :    dt                dj                   S Nzcannot safely convert z to r'  r  )rJ  r  s   r*  r@  zaddr.<locals>.<lambda>
  s    ,T$ZLTZZLIr,  c                  :    dt                dj                   S rU  rV  )r0  r  s   r*  r@  zaddr.<locals>.<lambda>	
  s    ,T%[Mdjj\Jr,  )r  r  r  r   rE  rZ  r  r  r   r'  intouterr  r   r   )r  rH  rI  rJ  r0  s   `````r*  r   r   	  s    
LL		QJ 
LL		QJ ;;tzz!}djjm4Ddjj)!$t*c2B	
 	!$u+s3C	
 .35;;tT*Uu9UU##+0D$' 6;oodE6R 
 	!$t*mDJJ.GHI	
 	!$u+}TZZ/HIJ	
 195;;tT222$;T4)@!@@@r,  argr`  .c                     |s't        | t        j                  j                        r| }n,t        | t        j                  j                        rJ | f|z   }t	        d |D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_1d`.c              3   V   K   | ]!  }|j                   d k\  r|nt        |d       # ywrA  r   N)r  r   r:  rj  s     r*  r<  zatleast_1d.<locals>.<genexpr>
  s&     Eu!QVVq[i1o5us   ')rA  r   )r0  collectionsabcr   rG  rD  )rZ  r`  args_r  s       r*  r   r   
  sm     JsKOO$<$<=c;??#;#;<<<
EuE
ECc(Q,3*CF*r,  at_least_fnc                 N     | |      }t        |t              sJ t        ||      S r7  )r0  r$   r   )rb  r  rZ  arg_s       r*  _unsqueeze_atleastre  "
  s+     sDdJ'''T3r,  c                 *   |s't        | t        j                  j                        r| }n,t        | t        j                  j                        rJ | f|z   }t	        t
        t        d      t        fd|D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_2d`.r   c              3   P   K   | ]  }|j                   d k\  r|n |        yw)r  NrN  )r:  rj  unsqueeze_atleast_1ds     r*  r<  zatleast_2d.<locals>.<genexpr>5
  '     Mu!QVVq[&:1&==u   #&rA  )	r0  r_  r`  r   r   re  r   rG  rD  )rZ  r`  ra  r  rh  s       @r*  r   r   +
  s~     JsKOO$<$<=c;??#;#;<<<"#5z1E
MuM
MCc(Q,3*CF*r,  c                 *   |s't        | t        j                  j                        r| }n,t        | t        j                  j                        rJ | f|z   }t	        t
        t        d      t        fd|D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_3d`.rF  c              3   P   K   | ]  }|j                   d k\  r|n |        yw)   NrN  )r:  rj  unsqueeze_atleast_2ds     r*  r<  zatleast_3d.<locals>.<genexpr>D
  ri  rj  rA  r   )	r0  r_  r`  r   r   re  r   rG  rD  )rZ  r`  ra  r  rn  s       @r*  r   r   :
  s~     JsKOO$<$<=c;??#;#;<<<"#5z2F
MuM
MCc(Q,3*CF*r,  r  r  r  c                 Z    ||n| j                         }t        j                  | |||      S r7  )r  r  r   )rj  r  r  r  storage_offset_ints        r*  r   r   H
  s6     )4!:J:J:L  AtV-?@@r,  srcc                 @    |dn|}t        j                  | ||||      S r  )r  r   )r  rq  r  r  r  rp  s         r*  r   r   T
  s+     -4.##E3f>PQQr,  c                  8    t        j                  t        |        S r7  )r  SizerS  )rO  s    r*  r   r   a
  s    ::'011r,  c                  v    t        |       dk(  rt        | d   t              s| d   } t        t	        | ddi      S )NrA  r   rT  F)rD  r0  r+  r  ra  tensorss    r*  r   r   e
  s<     7|qGAJ!?!* 'MuMNNr,  c                     t        |      t        | j                        z
  }t        t        |t        | j                        |z               }t	        j
                  | ||      S r7  )rD  rE  rG  rK  r  r  )rj  r  startr  s       r*  r   r   n
  sK    IAGG$Euc!''lU234D!!!T400r,  rv  rw  c                    d }t        |       dk(  rd}t        |      | D ]  }t        |t              rJ  t	        j
                  | ddi | D ]g  }|j                  dk(  r|j                  d      dk(  r't	        j                  |j                  |      }t	        j                  |j                  |        n  ||       }t        d | D              }t        |      dk(  r<| d   }	 t        d | D              }t        d	|j                  |j                  ||
      S t!        j"                  ||      j%                  |      S # t        $ r d}Y Ww xY w)Nc                     d }| D ]I  }t        j                  |      }|t        j                  k(  r|c S |||k7  rt        j                  c S |}K |J |S r7  )rZ  suggest_memory_formatr  r  )inputsrB  r   fs       r*   cat_compute_output_memory_formatz-cat.<locals>.cat_compute_output_memory_format{
  sd    A++A.AE+++!fk...F  !!!r,  r   z3cat expects at least one tensor, but received zero!r  FrA  c              3   f   K   | ])  }|j                   d k(  r|j                         dk(  r&| + ywr]  )r  r  r9  s     r*  r<  zcat.<locals>.<genexpr>
  s'     P1!	QQs   '11c              3   4   K   | ]  }|j                     y wr7  )requires_gradr9  s     r*  r<  zcat.<locals>.<genexpr>
  s     AA   r   r  r)  r  r  r  )rD  rL  r0  r$   rZ  r  r  r  canonicalize_dimvalidate_idxrG  r   	Exceptionr  r  r)  r  r   r   )	rw  r  r  r  tensorr   r  filteredr  s	            r*  r   r   t
  sK   
 7|qCo&*---  
WEuE66Q;166!9>$$QVVS11663'  5W=M PPPH
8}AJ	"AAAM ''88''
 	
 99Xs#)))FF  	"!M	"s   'E EEc                 >    t        d | D              }t        |d      S )Nc              3      K   | ]6  }|j                   d kD  r|n |j                  |j                         d f       8 ywr  )r  r   r  r9  s     r*  r<  zcolumn_stack.<locals>.<genexpr>
  s6      @G1QVVaZQYY	1~66s   <>rA  )rG  r   rw  aligned_tensorss     r*  r   r   
  s(     @G O ""r,  c                     t        j                  | j                        s| S | j                  rt	        j
                  |       S t        j                  |       S r7  )rZ  r  r  	is_sparser  r7   r  r   r  s    r*  r   r   
  s@    !!%++.""5))::er,  padc           	        
 t        j                  t              dz  dk(  fd       | j                  t              t              dz  }|z
  t        j                  |k\  fd       | }t	              D ]t  
d
z
  dz
  z     dk  r*|j                  
    |j                  
      z         }dz      dk  sL|j                  
d|j                  
   dz      z         }v t        j                  d D              r|j                         S t        d        }t	        |      D ]^  
t              
dz   dz  z
  
z         z   dz      z   }t        j                  |dkD  
fd       |j                  |       ` t        j                  |       }t        j                  || j                  | j                  | j                   |      }|dk(  r| j                  t         j"                  k(  rd	}t        j$                  ||      }|}	t	              D ]s  
d
z
  dz
  z     dkD  r)|	j                  
   |	j                  
      z
        }	dz      dkD  sK|	j                  
d|	j                  
   dz      z
        }	u t'        j(                  |	|       |S )
Nr  r   c                       dt                S )Nz1Length of pad must be even but instead it equals rC  )r  s   r*  r@  z!constant_pad_nd.<locals>.<lambda>
  s    CCH:Nr,  c                  (    dt               d  dS )Nz`Length of pad should be no more than twice the number of dimensions of the input. Pad length is z while the input has  dimensions.rC  )l_inpr  s   r*  r@  z!constant_pad_nd.<locals>.<lambda>
  s      225c(;P'r,  rA  c              3   &   K   | ]	  }|d k    yw)r   Nr>  )r:  ps     r*  r<  z"constant_pad_nd.<locals>.<genexpr>
  s     (CqAFCs   c            	      F    d z       d    ddz       d z    d	S )NzThe input size z, plus negative padding rt  rA  zG resulted in a negative output size, which is invalid. Check dimension z of your input.r>  )r  input_sizesl_diffr  pad_idxs   r*  r@  z!constant_pad_nd.<locals>.<lambda>
  sE    ok&1*&=%>>V7|nE#gk"2!3 4117!OMr,  r  F)r  r  rD  rE  rK  r   builtinsr   r   r  r  rZ  r|  r  r  r)  r  r  rD   r  r   )r  r  r  l_padc_input	new_shapenew_dimr  r3  c_outputr  r  r  r  r  s    `        @@@@@r*  r   r   
  s   
 
LLC1N
 ++KEHMEU]F	LL	 G65!uqy1}%w<!nnQWw}}Q7G#g,7VWGw{annQ7==+;c'A+>N+NOG " ||(C((}}[&)*I5\c(q1uk*fqj)CL83w{;KKaKM	
 	!  //6M[[kk||))#F zekkUZZ/ZZ&FH65!uqy1}%w<!3w<!2S\!AH w{aq!X^^A->Wq[AQ-QRH " 
MM(G$Mr,  c                    t        j                  |t         j                  k7  d        t        j                  | |      r| S t        j
                  | |      S )Nc                       y)Nz@preserve memory format is unsupported by the contiguous operatorr>  r>  r,  r*  r@  zcontiguous.<locals>.<lambda>  s    Rr,  r  )r  r  r  rZ  r  r   )rj  r  s     r*  r   r     sI     
LL...R
 ,,QmL;;q66r,  c                 p    t        j                  t        |       dkD  d        t        |  }t	        |d      S )Nr   c                       y)Nz%dstack expects a non-empty TensorListr>  r>  r,  r*  r@  zdstack.<locals>.<lambda>      +Rr,  r  )r  r  rD  r   r   r  s     r*  r   r     1    	LLW!#RS '*O""r,  c                    t        |      dk(  r!t        |d   t              rt        |d         }t	        j
                  t        |      t        | j                        k\  d        t        |      t        | j                        z
  }t        |      }t        | j                        D ]E  \  }||z   }||   }t	        j
                  |k(  xs dk(  xs |dk(  fd       |dk7  r|n||<   G t        j                  |       t        j                  | |t        t        |t        | j                        |z                     S )NrA  r   c                       y)Nz3expand: the requested shape has too few dimensions!r>  r>  r,  r*  r@  zexpand.<locals>.<lambda>.  s    Er,  rF  c                      d  dS )Nz3expand: attempting to expand a dimension of length rY  r>  r?  s   r*  r@  zexpand.<locals>.<lambda>8  s    I!ANr,  )rD  r0  r   rG  r  r  rE  r  rJ  rZ  validate_shaper  r  rK  )rj  rE  rX  shape_rR  
offset_idxrequested_lengthr;  s          @r*  r   r   $  s   
 5zQ:eAh9eAh	LLE
c!''l"E
 Z#agg,&F%[FAGG$Q6\
 ,!EQ!VE/?2/EN	

 2BR1G-Qz % 
 !!	65vs177|f'<=> r,  c                 8    | j                  |j                        S r7  )r   rE  r  s     r*  r   r   F  s    88AGGr,  chunksc           	         |dk  rd| d}t        |      t        j                  | j                  |      }| j                  |   }t        j                  ||z        }t        j                  ||z        }||z  }g }t        |      D ]"  }	|j                  t        | ||	|z  |             $ |dk7  r |j                  t        | |||z  |             t        |      S )Nr   z%Expected at least one chunk, but got rY  )rL  rZ  r  r  rE  r  r6   rF   rK  r  r   rG  )
rj  r  r  r  length
chunk_sizefull_chunkstail_chunk_sizer  r  s
             r*  r   r   J  s    {5fXQ?o

 
 
-CWWS\F6F?+J**Vj01Kz)OF;fQQ^Z@A   !fQ[:%=OP=r,  	start_dimend_dimc                 B   t        j                  | j                  |      }t        j                  | j                  |      }||k(  r| j                  dk7  r| S t        j                  | ||      \  }}|t        j
                  | ||      S t        j                  | ||      S r  )rZ  r  r  r  _collapse_view_helpercollapse_viewcollapse)rj  r  r  r  new_stridess        r*  r   r   b  s    &&qvvy9I$$QVVW5G G! #88IwOI{""1i99 >>!Y00r,  c                     t        |t              st        |t              st        d      t	        j
                  | j                  |      }t	        j                  |       t        j                  | |      S )Nz!dims has to be a sequence of ints)
r0  rG  r  rL  rZ  canonicalize_dimsr  validate_no_repeating_dimsr  rev)rj  r  s     r*  r   r   t  sX     dE":dD+A<==""16640D	$$T*99Qr,  c                 N    | j                   dk  rt        d      t        | d      S )Nr  zInput must be >= 2-d.rA  r  rM  r   ri  s    r*  r   r     %    vvz2334=r,  c                 N    | j                   dk  rt        d      t        | d      S )NrA  zInput must be >= 1-d.r  r  ri  s    r*  r   r     r  r,  ry  r  c                    t        t              rYt        j                  j	                         dk(  xr t        j                  j                        d        j                         t        j                  | j	                         dkD  d        t        j                  dk\  d        t        j                  | j                  |      }| j                  |      t        j                  t         k  xr k  fd       dk  rz   t        j                  z
  k  fd       t        j                  | z   |      S )Nr   c                       y)Nz'start must be an 0-dim integral Tensor.r>  r>  r,  r*  r@  znarrow.<locals>.<lambda>  s    =r,  c                       y)Nz-narrow() cannot be applied to a 0-dim tensor.r>  r>  r,  r*  r@  znarrow.<locals>.<lambda>  s    &Ur,  c                       y)Nz&narrow(): length must be non-negative.r>  r>  r,  r*  r@  znarrow.<locals>.<lambda>  s    &Nr,  c                      d   d  d dS )Nz0start out of range (expected to be in range of [, z], but got )r>  )
dim_lengthry  s   r*  r@  znarrow.<locals>.<lambda>  s#    BJ;-rR\Q]]hinhoopqr,  c                      d d d  dS )Nzstart (z) + length (z) exceeds dimension size (z).r>  )r  r  ry  s   r*  r@  znarrow.<locals>.<lambda>  s    '%VH4NzlZ\]r,  axis)r0  r$   r  r  r  rZ  r  r  r   r  r  r  _check_with
IndexErrorr  slice_in_dim)rj  r  ry  r  r  s     ``@r*  r   r     s   
 %$IIK1D!7!7!D=	
 

	LL1UV	LL1NO

 
 
-CJ		u4*!4q
 qy
"	LLf$$] aSAAr,  	norm_dimsepsc                 >   t        j                  | j                  |      }t        j                  | j                        }t        | |      }t        |t              sJ t        j                  ||dd      \  }}t        j                  ||z         }| |z
  |z  }|||fS )a  Computes mean and 1/std of a tensor along norm_dims.

    Used as a helper function for normalization layers.

    Args:
        a (Tensor): input tensor
        norm_dims (DimsType): dimensions to normalize over
        eps (float): epsilon for numerical stability

    Returns:
        out (Tensor): normalized tensor.
        mean (Tensor): mean of the tensor along norm_dims.
        rstd (Tensor): 1/std of the tensor along norm_dims.
    FT)r  r*  r  )rZ  r  r  r  r  r(   r0  r$   r  r   r   )	rj  r  r  r  a_acc
biased_varr   rstdr  s	            r*  
_normalizer    s    " ''	:I33AGG<#A'89EeZ(((~~9udJ ;;zC'(Dt8t
Cd?r,  
dimensionsc                 R    t        |      D ]  }t        j                  | |      }  | S r7  )sortedr  r   )r;  r  r  s      r*  _unsqueeze_multipler    s&    j!OOAs# "Hr,  weightbias
batch_sizenum_channelsflattened_inner_size
num_groupsc                     t        j                   j                  dk\   fd       t        j                  |z  dk(   fd       ddg}t        j                   ||z  |g      }	t	        |	||      \  }
}}|
j                   j                        }
dgt        t        d j                              z   }d }|t        ||      }d }|t        ||      }||
|z  }
||
|z   }
t        |
 j                        }
t        | j                        }t        | j                        }t        j                  ||      }t        j                  ||      }|
||fS )Nr  c                  "    d j                    S )Nz=Expected at least 2 dimensions for input tensor but received rN  r  s   r*  r@  z#native_group_norm.<locals>.<lambda>  s    OPUPZPZ|\r,  r   c                  .    dd j                    d z   S )NzDExpected number of channels in input to be divisible by num_groups, zbut got input of shape z and num_groups = r  )r  r  s   r*  r@  z#native_group_norm.<locals>.<lambda>  s!    V#EKK=0B:,
OPr,  rm  )r  r  r  r   r  r   rE  r  rK  r  r(   r  r   )r  r  r  r  r  r  r  r  r  input_reshapedr  r   r  r   unsqueeze_biasunsqueeze_weights   `     `         r*  r   r     sb    
LL

a\ 
LLz!Q&	P VN]]	Z!;=QRN !EOCt
((5;;
CS4a 455NN,T>B.v~F#$$!N"
!#u{{
3C"45D"45D ==~.D==~.Dtr,  out2normalized_shapec                     t              }t        j                  |dk\  fd       t        j                  d u xs j                  t	              k(  fd       t        j                  d u xs j                  t	              k(  fd       t        j                   j
                  |k\  xr(  j                   j
                  |z
  d  t	              k(   fd        j                          j                         j                          j
                  |z
  }t        t        | j
                              }t         ||      \  }}	}
|z   }n|z  }n
|z  z   }t        | j                        } j                  j                  dk(  r,t        |	 j                        }	t        |
 j                        }
||	|
fS )NrA  c                       dt               z   S )NzzExpected normalized_shape to be at least 1-dimensional, i.e., containing at least one element, but got normalized_shape = )r]  )r  s   r*  r@  z#native_layer_norm.<locals>.<lambda>  s     I

 r,  c                  R    dt        j                        z   dz   t               z   S )NzQExpected weight to be of same shape as normalized_shape, but got weight of shape  and normalized_shape = r]  rE  )r  r  s   r*  r@  z#native_layer_norm.<locals>.<lambda>  s3     
fll
 %% 
	 r,  c                  R    dt         j                        z   dz   t              z   S )NzMExpected bias to be of same shape as normalized_shape, but got bias of shape r  r  )r  r  s   r*  r@  z#native_layer_norm.<locals>.<lambda>'  s2     
djj/ %% 
	 r,  c                  p    dt              z   dz   t              z   dz   t         j                        z   S )NzGiven normalized_shape=z, expected input with shape z, but got input of size r  )r  r  s   r*  r@  z#native_layer_norm.<locals>.<lambda>0  sI    )

 
() 
  %	%
 ekk
r,  rQ  )rD  r  r  rE  rG  r  r   r  rK  r  r(   r  r)  r'  )r  r  r  r  r  normalized_ndimr  r  r  r   r  s   ````       r*  r   r   
  s    *+O	LL1	  
LL$A&,,%0@*AA	  
LL=

e,<&==	  
LL

o% 	UKKo589UCS=TT		 E""$ ::'D%ejj12N <OCt~$*Dj		Fl		 0FlT!
!#u{{
3C||E!&tU[[9&tU[[9tr,  c                     t        j                  | j                  t        j                  |            }t	        j
                  | |      S r7  )rZ  r  r  extract_dims_from_varargsr  r   )rj  r  _permutations      r*  r   r   R  s9    **	//5L ??1l++r,  r  maxnormc                 h  	 t        j                  t        |t               d        t        j                  |dkD  d        t        j                  t        t               d        t        j                  dk\  fd       | j                  	t        j                  	dkD  	fd       t        j                  	|      }t        t        	            }||= t        j                  | j                        }|| j                  k7  r%t         j                  j                  | ||d|	      }n#t         j                  j                  | ||d
      }d}t        j                  |kD  ||z   z  d      }|| j                  k7  r t        j                  || j                        }| |z  j!                         S )Nc                       y)Nzrenorm: p must be real-valuedr>  r>  r,  r*  r@  zrenorm.<locals>.<lambda>_  s    5Tr,  r   c                       y)Nz'renorm: non-positive norm not supportedr>  r>  r,  r*  r@  zrenorm.<locals>.<lambda>`  s     Ir,  c                       y)Nz#renorm: maxnorm must be real-valuedr>  r>  r,  r*  r@  zrenorm.<locals>.<lambda>b  s    2Wr,  c                      d  S )Nz,renorm: expected maxnorm to be >= 0 but got r>  )r  s   r*  r@  zrenorm.<locals>.<lambda>e  s     LWIVr,  rA  c                      d  dS )Nz/renorm: input needs at least 2 dimensions, got  dimensionsr>  rN  s   r*  r@  zrenorm.<locals>.<lambda>j  s    A${Sr,  T)r  r  r  gHz>rI  )r  r  r0  r  r  rZ  r  r  rK  r  r  linalgvector_normr   r  r|  r   )
r  r  r  r  r!  acc_typer_   r  norm_factorr  s
      `     @r*  r!  r!  Z  so   
 
LLZ7++-TU	LLQIJ	LLw((*W 
LL1V ::D	LLqS
 
 
 s
+CuT{#KC **5;;7H5;;||''1k4x ( 
 ||''q+t'L
C++dWng.DcJK5;;00ekkJK++--r,  n_fft
hop_length
win_lengthwindowcenterpad_mode
normalizedonesidedreturn_complexc
                     t        j                  d u xs j                   j                  k(   fd       ||ndz  ||n|	N j                         xs% d uxr t	        j
                  j                        }
t        j                  |
d       n|	}
t        j                  t	        j                   j                        xs t	        j
                   j                        d        t        j                  d j                  cxk  xr dk  nc d         j                  }|dk(  r j                  d       |rd	 j                  z
  }dz  }g t        j                  d|       j                  }t        j                   j                  |      ||g|        j                   j!                         |d          j!                  d      } j!                  d      t        j                  dcxk  xr k  nc fd
       t        j                  dkD  fd       t        j                  dcxk  xr k  nc fd       t        j                  d u xs j                  fk(  fd       k  rT,t        j"                   j                   j                        z
  dz  }t        j%                  |z
  |z
  g       j'                  d        z   t	        j
                   j                        }||n| }|rdnd }|r;t        j                  | d        t         j(                  j+                   d|      }n"t         j(                  j)                   d|      }|j-                  dd       |dk(  r|j/                  d      }|
r|S t        j0                  |      S )Nc                  B    d j                    dj                    z   S )NzAstft input and window must be on the same device but got self on  and window on r(  r  r  s   r*  r@  zstft.<locals>.<lambda>  s'    OPUP\P\~^/0r,     zstft requires the return_complex parameter be given for real inputs, and will further require that return_complex=True in a future PyTorch release.c                       y)Nz:stft expected a tensor of floating point or complex valuesr>  r>  r,  r*  r@  zstft.<locals>.<lambda>  s    Lr,  rA  r  c                       y)Nzstft expected a 1D or 2D tensorr>  r>  r,  r*  r@  zstft.<locals>.<lambda>  s    /Pr,  r   rm  c                      d  d S )Nzstft expected 0 < n_fft <= z, but got n_fft=r>  )r  r  s   r*  r@  zstft.<locals>.<lambda>  s    -fX5EeWMr,  c                      d  S )Nz0stft expected hop_length > 0 but got hop_length=r>  )hop_length_s   r*  r@  zstft.<locals>.<lambda>  s    B;-Pr,  c                      d  S )Nz9stft expected 0 < win_length <= n_fft but got win_length=r>  )win_length_s   r*  r@  zstft.<locals>.<lambda>  s    KK=Yr,  c                  0    d  ddj                    z   S )Nz8expected a 1D window tensor of size equal to win_length=r  zbut got window with size r  )r  r  s   r*  r@  zstft.<locals>.<lambda>  s#    F{mSUV)&,,89r,  r@  rF  )	dimensionr  steporthoc                       y)Nz9Cannot have onesided output if window or input is complexr>  r>  r,  r*  r@  zstft.<locals>.<lambda>      Or,  r  r_   )r  r  r)  r   rZ  r  r  r  r  r   	itertoolsr   rE  r  r  r   r  r  r   r   fftrfft
transpose_squeeze_view_as_real)r  r  r  r  r  r	  r
  r  r  r  return_complex_original_ndim
extra_dims
pad_amountextended_shapebatchleftcomplex_fftr_   r  r  r  r  s   ``  `               @@@r*  r"  r"    sK    
LL$7&--5<<7	
 !+ 6*EQJK * 6*EK**, 
$G5#9#9&,,#G 	 	c	
 )	LLU[[)PU-C-CEKK-PL 
LLejj%A%'PQJJM"^
aZ
I9++Az:IU[[IN3j*5MxX

5::<
45JJqMEZZ]F	LL	EVM 
LLaP 
LL	K 5 Y 
LL$8&,,;.8	
 U>ZZ5;;u||TF#)%%ftU[5H45O.PQLL2ELDE((5K#/x_H 7dDOO	
 iinnUn6iimmErm5NN1all1o!3>u'9'9#'>>r,  c
                 	    t        j                  d u xs j                   j                  k(   fd       ||n|dz  }
||n|}t        j                  t        j                   j
                         fd        j                  d      } j                  d      }||
|dz
  z  z   }t        j                   j                         dkD  d        t        j                  d	 j                  cxk  xr d
k  nc  fd       ||n||k7  }|r!t        j                  |d	z  dz   |k(  d        nt        j                  ||k(  d        t        j                  d|
cxk  xr |k  nc d        t        j                  d|cxk  xr |k  nc d        t        j                  d u xs j                  |fk(  d        Bt        j                   j
                        }t        j                  || j                        }n}||k7  r'||z
  d	z  }t        j                  ||||z
  |z
  fd      } j                  } j                  d	k(  r j                  d        j                  dd	       |rdnd }|	r;t        j                  | d        t         j                   j#                   d|       nyt        j                  d u xs  t        j                  j
                         d        |s j%                  dd|d	z  dz          t         j                   j'                   d|        j                  d	      |k(  sJ  |j)                  dd|g      z  }t        j+                  ||j                  d      |fd||
      }t        j+                  |j-                  d	      j/                  d||f      |j                  d      |fd||
      }||j                  d      k(  sJ ||j                  d      k(  sJ |r|d	z  nd}|||z   }n|r	||d	z  z
  }n|}t1        d||z
        }|j%                  d||      }|j%                  d||      }|j3                         j5                         j7                  d      }t        j                  |j9                          d        ||z  }|d	k(  r|j;                  d      }||kD  r1t=        j>                  d       t        j                  |d||z
  fd      }|S )Nc                  B    d j                    dj                    z   S NzBistft input and window must be on the same device but got self on r  r(  r  s   r*  r@  zistft.<locals>.<lambda>  s(    PQVQ]Q]P^_/0r,  r  c                  @    d j                    dj                    z   S r1  r(  r  s   r*  r@  zistft.<locals>.<lambda>	  s!    Pofmm_=>r,  rF  rA  r   c                       y)Nz"istft input tensor cannot be emptyr>  r>  r,  r*  r@  zistft.<locals>.<lambda>  s    ,Pr,  r  rm  c                  "    d j                    S )Nz8istft expected a tensor with 2 or 3 dimensions, but got rN  r  s   r*  r@  zistft.<locals>.<lambda>  s    J5::,Wr,  c                       y)Nzistft expected the frequency dimension (3rd to the last) of the input tensor to match n_fft / 2 + 1 when onesided=True, but got {fft_size}r>  r>  r,  r*  r@  zistft.<locals>.<lambda>  s    Rr,  c                       y)N)zistft expected the frequency dimension (3rd to the last) of the input tensor to match n_fft when onesided=False, but got {fft_size}r>  r>  r,  r*  r@  zistft.<locals>.<lambda>$  s     r,  c                       y)Nz+istft expected 0 < hop_length <= win_lengthr>  r>  r,  r*  r@  zistft.<locals>.<lambda>,  r  r,  c                       y)Nz&istft expected 0 < win_length <= n_fftr>  r>  r,  r*  r@  zistft.<locals>.<lambda>/  s    *Rr,  c                       y)NzDInvalid window shape. window has to be 1D and length of `win_length`r>  r>  r,  r*  r@  zistft.<locals>.<lambda>3  s    Vr,  r@  r  c                       y)Nz9cannot have onesided output if window or input is complexr>  r>  r,  r*  r@  zistft.<locals>.<lambda>I  r  r,  r   c                       y)Nz:Complex windows are incompatible with return_complex=Falser>  r>  r,  r*  r@  zistft.<locals>.<lambda>O      Pr,  )r  ry  r  )r  r  r  r  gdy=c                       y)Nz&window overlap add min less than 1e-11r>  r>  r,  r*  r@  zistft.<locals>.<lambda>y  s    8r,  zThe length of signal is shorter than the length parameter. Result is being padded with zeros in the tail. Please check your center and hop_length settings) r  r  r)  rZ  r  r  r  r  r  rE  corresponding_real_dtyper  r  r   r   r   r"  ifftr   irfftr   unfold_backwardr   r   rI  r.   r  r   r   r   warningswarn)r  r  r  r  r  r	  r  r  r  r  r  r  n_framesfft_sizeexpected_output_signal_len	onesided_
real_dtypewindow_r-  r(  r_   y_tmpywindow_envelopry  endwindow_envelop_lowests   `   `                      r*  r#  r#    s    
LL$7&--5<<7	
 !+ 6*EQJK * 6*EK	LLu{{+	
 zz"~Hzz"~H!&1)E!E	LL"$PQ	LL	UZZ1W %0h%6GIQJNh&	
 	X	
 
LL	K&;&= 
LL	K 5 "R 
LL$8&,,;.8V
 ~33EKK@
**[
5<<Pe#)&&wu{7JT7Q0RTUVJJMzzQ"OOAq!E 7dDMO	
 		u"48dNF%"8"8"FFP	
 LLRq!aLHE		2D9::a=E!!!GLL!Q//EZZ]$>? 	 	A ))Aq(E23ZZ]$>? * N &222%)<)<Q)???? EQJaEfn	(5A:5(C%K F	QeF3A#**qf*MN*..044699%@	LL!&&((8
 	
NAIIaL
''`	
   Q.H(H$I1MHr,  a_shapea_strider  r  c                   	
 t        |       }t        j                  ||d      	|dk(  rdn| 	   
|dk(  rdn|	   }t        j                  
k  	
fd       t        j                  dkD  fd       t        |       }t        |      }|j                         |j                  |       	|k  r|	   z
  z  dz   |	<   |	xx   z  cc<   ||fS )NT)wrap_scalarr   rA  c                      d  d d S )Nz%Maximum size for tensor at dimension z is z but size is r>  )r  max_sizer  s   r*  r@  z*_get_unfold_shape_stride.<locals>.<lambda>  s    7uD
-X\W]^r,  c                      d  dS )NzStep is z but must be > 0r>  r  s   r*  r@  z*_get_unfold_shape_stride.<locals>.<lambda>  s    (4& 01r,  )rD  rZ  r  r  r  r  r  )rP  rQ  r  r  r  a_ndimlast_striderE  stridesr  rU  s      ``    @@r*  _get_unfold_shape_strider[    s     \F

 
 
ECaKqWS\H{!K	LL^
 
LLq1
 ME8nG	LLNN;
V|Cj4'D014c
'>r,  c                    t        j                  |d      }t        j                  t	        |      t	        | j
                        k\  d        t	        |      dk(  rt        j                  |       S t	        |      | j                  z
  }dg|z  }| j
                  D ]  }|j                  |        t        d t        ||      D              }d|v rKt        j                  || j                  | j                  | j                  t        j                  |             S |}t        j                   |      }t#        |      D ]!  \  }}t%        ||||t'        |d            \  }}# t)        t#        |            }	|	j+                  d d	
       t        |	 \  }
}| j-                  |      }t        j                  |      }|j/                  |
      }|j1                  |      S )NFr  c                       y)Nzbrepeat: Number of dimensions of repeat dims can not be smaller than number of dimensions of tensorr>  r>  r,  r*  r@  zrepeat.<locals>.<lambda>  s    tr,  r   rA  c              3   ,   K   | ]  \  }}||z    y wr7  r>  )r:  padded_sizerepeat_sizes      r*  r<  zrepeat.<locals>.<genexpr>  s"      (G$K 	k!(Gr  r  c                     | d   S r  r>  )r   s    r*  r@  zrepeat.<locals>.<lambda>  s    DGr,  T)keyreverse)rZ  r  r  r  rD  rE  r   r  r  rG  zipr  r  r)  r  r|  make_contiguous_strides_forrJ  r[  rI  r  sortr   r   r   )rj  repeat_shapenum_new_dimensionspadded_shapedim_sizetarget_shapeurtensor_shapeurtensor_strider  enumerated_stridepermute_ordersorted_striderepeat_xtensorcloned_resultpermuted_results                  r*  r   r     s    33L5QL	LLLS\)t
 <A{{1~\*QVV33++LGGH%   (+L,(G L 	L{{''88//55a8
 	
 "N77EO"<0X*BOS(C!<L+
' 1 Y783TB#&(9#: M= XXn-N KK/M $++M:O ""<00r,  
allow_copyc                *   t        j                  |d      }t        j                  || j                               }t	        | j
                        t	        |      k(  rt        j                  |       S | j                         dk(  r t        | |t        j                  |            S | j                  dk(  r| }|D ]  }|dk(  sJ t        |d      } |S t        |      dk(  r(| }| j
                  D ]  }|dk(  sJ t        |d      } |S d}| }|D ]B  }||j                  k\  r@|dk(  sJ |j                  dz
  }t        j                  |||j
                  |         }|dz   }S||j
                  |   k(  r|dz   }k|j
                  |   }|}	||z  dk7  r |	dz   }	||j
                  |	   z  }||z  dk7  r |	|k7  ryt        j                  |||	      \  }
}|
P|rt        j                   | |      c S dj#                  | j
                  | j%                         |      }t'        |      t)        |||	      }||k7  rt        j                  |||      }|dz   }E ||j                  k  r0|j
                  |   dk(  sJ t        ||      }||j                  k  r0|S )NFr  r   rA  rF  zLCannot view a tensor with shape {} and strides {} as a tensor with shape {}!)rZ  r  
infer_sizer  rG  rE  r  r   r   re  r  r   rD  r   	split_dimr  r   rB  r  rL  r   )rj  rt  rE  _ar  rR  r  last_dimaccumrN  r  r  r  s                r*  _reshape_view_helperr{    s   ,,UUCE UAGGI.E QWW~u%}}Q 	wwyA~!UE$E$Ee$LMM 	vv{FQ;;2r"B  	 5zQggFQ;;RB  	* C	
B"''>Q;;ww{H Xrxx/ABB'C RXXc]"'C
 fn!'CBHHSM)E fn! #: &+%@%@S#%N"I{  ==E22dkkGGQXXZ !o%S#&B F?S&1BAg] b -xx}!!!R - Ir,  rE  c                      t        | g|ddiS )Nrt  Tr{  r  s     r*  r   r   P  s    ;E;d;;r,  c                 @    | j                  |j                               S r7  )r   r  r  r  s     r*  r   r   U  s    <<

%%r,  shiftsc                    t        j                  | j                  |      }t        |t              s|f}t        |t              s|f}| j                         dk(  rt        |       S | j                         dk(  r t        |      dkD  rt        d|d    d      t        |      }t        |      }|dk7  s|dk7  r|dk(  rt        d      |dk(  rH|dk(  rCt        j                  t        j                  |       |d      j                  | j                        S ||k7  rt        d| d|       |dkD  sJ |dd }|dd }t        j                  | |d   f|d         }t        j                  |||      S |d   }| j                  |   }	|	|d   z
  |	z  }
t        j                   | ||
|	|
z
        }t        j                   | |d|
      }t        j"                  ||f|      S )	z/Reference implementation of :func:`torch.roll`.r   zDimension specified as z but tensor has no dimensionsrA  z`shifts` requiredz*shifts and dimensions must align. shifts: z, dims: N)rZ  r  r  r0  r   r  r   r  rD  r  rM  r  r   r   r   rE  r   r   )rj  r  r  
len_shiftslen_dimstail_shifts	tail_dimsfirst_dim_rolledr  r  ry  t0t1s                r*  r   r   Y  s    ""16640Dfh'dH%w 	wwyA~Qxuuw!|D	A%d1gY.KL
 	
 VJ4yHQ(a-?233 q=Z1_::emmA.:??HH!<ZLQYPZ[  !||QRjH	 ::a&)tAw?zz*KCC q'C773<DF1I%E	aeTE\	2B	aa	'B99b"Xs##r,  r   rA  kc                 |   t        |      dk7  rt        dt        |             | j                  dk  rt        d| j                         t        j                  | j                  |      }|d   |d   k(  rt        d|d    d|d          |dz  }|dk(  r5t        j                  t        j                  | |d   f      |d   |d         S |dk(  rt        j                  | |      S |d	k(  r5t        j                  t        j                  | |d   f      |d   |d         S t        | t
        j                  
      S )z0Reference implementation of :func:`torch.rot90`.r  z2expected total rotation dims == 2, but got dims = z/expected total dims >= 2, but got total dims = r   rA  z7expected rotation dims to be different, but got dim0 = z and dim1 = r  rm  r  )
rD  rM  r  rZ  r  r  r   r   r   r  )rj  r  r  s      r*  r   r     s;    4yA~@TL
 	
 	vvzLQVVHUVV ""16640DAw$q'Ed1gYl[_`a[bZcd
 	
 	
AAAvuzz!d1gZ8$q'47KK	
azz!T""	
auzz!d1gZ8$q'47KKQe&=&=>>r,  c                     | d   j                   }t        dt        |             D ]1  }| |   j                   |k(  rJ d| d| |   j                    d|         y )Nr   rA  z4stack expects each tensor to be equal size, but got z at entry 0and z
 at entry )rE  rK  rD  )rw  entry_shaper  s      r*  _check_stack_inputsr    sm    !*""K1c'l#qz;. 	
B;- P1:##$Jqc3	
. $r,  c                    t        |       dkD  sJ d       t        j                  | d   j                  dz   |      }|| d   j                  k  ret	        |        t        | d   j                        }|j                  |t        |              t        j                  | |      }|j                  |      S t        j                  | D cg c]  }|j                  |       c}|      S c c}w )Nr   z$stack expects a non-empty TensorListrA  )rD  rZ  r  r  r  r  rE  insertr  r   r   r   )rw  r  wrapped_dimresult_sizesr  r   s         r*  r   r     s     w<!CCC((1)<cBKWQZ__$G$GAJ,,-KW6ii-xx%% 99@1akk+.@#FF@s   C&c           
         |xs | j                   }t        j                  |      }t        | |      }| j	                         dk(  rt        |      }nt        ||d      }t        ||z
        }t        t        |t        ||d            |      S )Nr   Tr  )	r  rZ  r  r(   r  r@   r   r   r   )rj  r  r  r  r  r  a_expa_maxs           r*  rn   rn     s     #AGGL33LA	 $5	6BwwyA~BRd+BJ"E3uc489< r,  c                     t        j                  t        |       dkD  d        t        |  }|d   j                  dk(  rt        |d      S t        |d      S )Nr   c                       y)Nz%hstack expects a non-empty TensorListr>  r>  r,  r*  r@  zhstack.<locals>.<lambda>  r  r,  rA  )r  r  rD  r   r  r   r  s     r*  r   r     sQ    	LLW!#RS '*Oq!#?A&&""r,  c                 p    t        j                  t        |       dkD  d        t        |  }t	        |d      S )Nr   c                       y)Nz%vstack expects a non-empty TensorListr>  r>  r,  r*  r@  zvstack.<locals>.<lambda>  r  r,  )r  r  rD  r   r   r  s     r*  r   r     r  r,  r  c                 &   t        j                  | j                  |      }t        j                  t        |      dk7  d        | j                  t        | j                  d |       t        |      z   t        | j                  |dz   d        z         S )Nr   c                       y)Nz"unflatten: sizes must be non-emptyr>  r>  r,  r*  r@  zunflatten.<locals>.<lambda>  s    *Nr,  rA  )	rZ  r  r  r  r  rD  r   rG  rE  )rj  r  r  s      r*  r   r     so    

 
 
-C	LLUq"NO66%&u5aggcAgi>P8QQRRr,  r   c                 B   t        j                  | j                        t        j                  t        | j                        dkD  d        | j                     dk(  r
t               S t        fdt        j                  | | j                           D              S )Nr   c                       y)Nz5Dimension specified as 0 but tensor has no dimensionsr>  r>  r,  r*  r@  zunbind.<locals>.<lambda>  s    Gr,  c              3   J   K   | ]  }t        j                  |        y wr7  )r  r   )r:  sr  s     r*  r<  zunbind.<locals>.<genexpr>  s!      
+SaEMM!S!+Ss    #)	rZ  r  r  r  _check_indexrD  rE  rG  r   )r   r  s    `r*  r  r    s    

 
 
-C	AGGqG 	wws|qw 
+0+=+=as+S
 
 	
r,  r  r  c                 d    | j                  t        j                        j                  |||      S r  )r   r  r  rK   )r;  r  r  r  s       r*  rJ   rJ     s-    77!8!879EEUF r,  c                    t        j                  | j                  |      }t        j                  j                  dk  fd       | j                  dk(  r| j                  d      n| }t        d       f|z  fz   }|||<   | S )NrA  c                  $    d j                    dS Nz(Index should have dimension 1 or 0 (got r  rN  r  s   r*  r@  zindex_copy_.<locals>.<lambda>      :5::,aHr,  r   )rZ  r  r  r  r  r   slice)r;  r  r  r  rL  rR  s     `   r*  rK   rK   
  ss    

!
!!&&#
.C	LL

aH
 &&A+A1A;.3
%
)CAcFHr,  c                 "    t        | |||d      S )NFinplace_index_fillr;  r  r  r  s       r*  rM   rM     s    
 q#ueU;;r,  c                 "    t        | |||d      S )NTr  r  r  s       r*  rN   rN     s     q#ueT::r,  r  c                "   t        j                  j                  dk  fd       t        t              r't        j                  j                  dk(  fd       n7t        j
                  | j                  | j                  | j                        | j                  dk(  }|r| j                  d      n| }t        |j                        }j                         ||<   j                  |      |rt        j                  nt         j                   } |||      }	|r| S |r|	j#                  d      j%                         }	|	j'                         | j'                         k7  r(t        j(                  |       }
|
j+                  |	       |
}	|	S )NrA  c                  $    d j                    dS r  rN  r  s   r*  r@  z_index_fill.<locals>.<lambda>0  r  r,  r   c                  $    d j                    dS )Nz<Only supports 0-dimensional value tensor. Got a tensor with r  rN  r  s   r*  r@  z_index_fill.<locals>.<lambda>5  s     !!&L:r,  )r  r  r)  )r  r  r  r0  r$   r  r  r  r)  r   r  rE  r  r   r+  rK   rJ   r   r   r  r	  copy_)r;  r  r  r  r  zero_dimrL  rE  rJ   r  new_outs     ``       r*  r  r  &  s8    
LL

aH %$JJ!O:	
 ##!((

 vv{H"AAMEE#JLLE'.##E4D4DJ
QUE
*C++a.&&(C::<188:%&&q)GMM#C
r,  c                h    | j                  t        j                        j                  ||||      S )Nr  r/  )r   r  r  
index_add_)r;  r  r  r  r0  s        r*  rI   rI   T  s7     77!8!879DDUF% E  r,  c                    t        j                  | j                  |      }t        j                  j                  dk  fd       j                  dk(  rj                  d      | j                  dk(  r5t        j                  |       j                  d| j                              S t        d       f|z  fz   }| |   S )NrA  c                  $    d j                    dS r  rN  r  s   r*  r@  zindex_select.<locals>.<lambda>i  r  r,  r   )
rZ  r  r  r  r  r   r	  rJ   r   r  )r;  r  r  rR  s     ` r*  rL   rL   c  s     
!
!!&&#
.C	LL

aH zzQ"vv{ "--aE8JKK;.3
%
)CS6Mr,  c                     |Rt        d t         j                        D              }|rt        j                   |      S t        j
                         S  j                  }t        j                  ||      }t        |t              r|fn|}|dk(  r*t        |      dk(  s|dk(  sJ t        j
                         S t         fd|D              }t        |      dk(  rt        j
                         S t        |      dk(  rt        j                   |      S t        |      }t        |d      }|D ]  }t	         |         S )Nc              3   2   K   | ]  \  }}|d k(  s|  ywr  r>  )r:  rR  r  s      r*  r<  zsqueeze.<locals>.<genexpr>y  s     J*<YS$	S*<s   r   r  c              3   H   K   | ]  }j                   |   d k(  s|  ywr  r  )r:  drj  s     r*  r<  zsqueeze.<locals>.<genexpr>  s      4DqAGGAJ!ODs   ""rA  T)rc  )rG  rJ  rE  r  r   r   r  rZ  r  r0  r   rD  r  r  )rj  r  r  r  	dims_listr  s   `     r*  r   r   v  s   
{J)AGG*<JJ)-u}}Q%C5==3CC66D

!
!$
,CS)C6sDqy4yA~--}}Q 4D44D
4yA~}}Q
4yA~}}Q%%T
Iy$/IAqM Hr,  indices_or_sectionsc           	         t        j                  | j                  |      }| j                  dk(  rd}t        |      t	        |t
              rx|j                  j                  dk(  s&dj                  |j                        }t        |      |j                  t        j                  k7  rd}d|j                    t        |      t	        |t              st	        |t
              r|j                  dk(  rt	        |t              r|n|j                         }|dk  rd| }t        |      g }| j                  |   }t!        j"                  ||z        }||z  }	d}
t%        |      D ]@  }||	k  r|dz   n|}t'        j(                  | |
|
|z   |	      }|j+                  |       |
|z   }
B t-        |      S |}t	        |t
              r<|j                  dk7  rd
}d|j                   d t        |      |j/                         }g }d}
|D ],  }|j+                  t'        j(                  | |
||	             |}
. |j+                  t'        j(                  | |
| j                  |   |	             t-        |      S )Nr   zXtensor_split: received a rank zero tensor, but expected a tensor of rank one or greater!rQ  z^tensor_split: if indices_or_sections is a tensor it must be on the CPU, but received one on {}zJtensor_split: if indices_or_sections is a tensor it must have long dtype, z but received one with dtype zAtensor_split: number of sections must be greater than 0, but was rA  r  zStensor_split: non-scalar indices_or_sections tensors must have only one dimension, zbut received a tensor with r   )rZ  r  r  rL  r0  r$   r)  r'  rB  r  r  longr   r   r   rE  r  rF   rK  r  r  r  rG  tolist)rj  r  r  _dimr  sectionssplitsrj  min_split_sizenum_splits_one_extra	start_idx	split_idx
split_sizer  indicesr;  s                   r*  r   r     so   
 !!!&&#.Dvv{ho %z2"))..%7ryy#**C S/!$$

2^C+,?,E,E+FGS/! %w/&
38K8P8PTU8U -v6  $))+ 	 q=UV^U_`CS/!774=Hx$78'(2	xI  44 "# 
 ""1iZ1GdSAMM!!J.I ) V} &):6"''1,k-.A.F.F-G{S o%)002G	AMM%,,Q	14HII  	e((Iqwwt}4PQV}r,  c                     t        j                   j                  dk\   fd        j                  dk(  rdndt        t              rDt        j                  dk7  xr  j
                     z  dk(   fd       t               S t        j                  t        t        t        f      fd       }t         |      S )NrA  c                  :    dt         j                        z   dz   S )NzPtorch.hsplit requires a tensor with at least 1 dimension, but got a tensor with  dimensions!r]  r  ri  s   r*  r@  zhsplit.<locals>.<lambda>      ^!&&kr,  r   c                  |    dt              z   dz   t         j                           z   dz   t              z   dz   S )Nz0torch.hsplit attempted to split along dimension z , but the size of the dimension $ is not divisible by the split_size rY  r  )rj  r  r  s   r*  r@  zhsplit.<locals>.<lambda>  sS    Bc(45 aggcl#$ 9	9
 j/" r,  c                       dt                S )Nzhsplit(): received an invalid combination of arguments. Expected indices_or_sections to be of type int, list of ints or tuple of ints but got type r&  r  s   r*  r@  zhsplit.<locals>.<lambda>       !4568r,  
r  r  r  r0  r   rE  r   _check_typer  rG  )rj  r  split_sizesr  r  s   `` @@r*  r   r     s     
LL	!	
 vv{!C%w/(
1_?
!:a!?	
 Az3//	&u6	
 &K;,,r,  c                 r    t        j                   j                  dk\   fd       t        t              rCt        j                  dk7  xr  j
                  d   z  dk(   fd       t         d      S t        j                  t        t        t        f      fd       }t         |d      S )Nr  c                  :    dt         j                        z   dz   S )NzPtorch.vsplit requires a tensor with at least 2 dimension, but got a tensor with r  r  ri  s   r*  r@  zvsplit.<locals>.<lambda>  r  r,  r   c                  0    d j                   d    d dS )NzQtorch.vsplit attempted to split along dimension 0, but the size of the dimension r   r  rY  r  )rj  r  s   r*  r@  zvsplit.<locals>.<lambda>  s%    3771:,6,r,  c                       dt                S )Nzvsplit(): received an invalid combination of arguments. Expected indices_or_sections to be of type int, list of ints or tuple of ints but got type r&  r  s   r*  r@  zvsplit.<locals>.<lambda>"  r  r,  r  )rj  r  r  r  s   `` @r*  r   r     s     
LL	!	
 %w/(
1_=j!8A!=
	
 Az1--	&u6	
 &K;**r,  rX  c                     | j                         t        j                  dv fd       dk(  rt        j                  | |      S t        j                  | |      S )N)rA  r  c                      d  dS )Nz'diag(): Supports 1D or 2D tensors. Got Dr>  rN  s   r*  r@  zdiag.<locals>.<lambda>5  s    "I$q Qr,  rA  )r  r  r  r   r   )r  rX  r  s     @r*  r   r   -  sU     88:D	LLQ qyf--""400r,  dim1dim2c                     t        j                  |       }|j                  |||      t        j                  j
                  j
                  k(  fd       t               |S )Nc                  <    dj                    d j                    S )NzCexpected src to have a size equal to the diagonal of the input.Got z for a diagonal of shape r  )r   rq  s   r*  r@  z"diagonal_scatter.<locals>.<lambda>J  s"     yyk24::,@r,  )rZ  clone_preserve_stridesr   r  r  rE  r   )r  rq  rX  r  r  r  r   s    `    @r*  r   r   =  sZ     
&
&u
-C<<d+D	LL

cii	@
 D#Jr,  c                    | j                         }t        j                  |      t        j                  |      t        j                  k7  fd       | j                         }|dk\  r<t        t        | j                            | j                            |z
        d      }n;t        t        | j                            |z   | j                                  d      }|dkD  r8|dk\  r||| j                            z  z  }n||| j                            z  z  }t        | j                               D cg c]  \  }}|fvs| }	}}|	j                  |       t        | j                               D cg c]  \  }}|fvs| }
}}|
j                  | j                            | j                            z          | j                  |	|
|      }|S c c}}w c c}}w )z4
    Reference implementation of torch.diagonal
    )rR  rankc                      d  d S Nz(diagonal dimensions cannot be identical r  r>  r  r  s   r*  r@  zdiagonal.<locals>.<lambda>`       HbQUPVWr,  r   )r  r  r  )r  rZ  r  r  r  r  rI  r  r  r  rJ  r  r   )r  rX  r  r  num_dimsr  	diag_sizer  r  r  rZ  r  s     ``        r*  r   r   Q  s    xxzH!!d:D!!d:D	LLW ((*N{DIIK-tyy{4/@6/IJAN	DIIK-6		D8IJAN	1}Q;ft{{}T':::Nft{{}T':::N$TYY[1K141aQtTl5JQ1EK	LL&t{{}5O5TQ4,9Nq5GONN4;;=&t)<<=__%_WFM L Ps   G(G(G.G.c                 8   kD  rc| }| j                   dz   }t        j                  |      t        j                  |      t        j                  k7  fd       | j                  d      }|dk7  rt        | j                        }t        j                  |      |d<   t        j                  || j                  | j                  d      }|dkD  r|| fn| |f}t        j                  |d      } |t        j                  |      z  }| j                        j                  d      } t        j                   || j                  t        j"                  	      }	t        j                   |||z   | j                  t        j"                  	      }
|	|
j                  d      k(  }t%        t'        | j                              D cg c]  }|fv r|nd }}|j)                  |      }t        j*                  ||       j-                         S c c}w )
z6
    Reference implementation of torch.diag_embed
    rA  )r  rR  c                      d  d S r  r>  r  s   r*  r@  zdiag_embed.<locals>.<lambda>  r  r,  rF  r   Fr  r)  r  r  r)  r  )r  rZ  r  r  r  r  r  rE  r  r.   r  r  r)  r   r   r   r  r  rK  rD  r   mask_tensorr   )r   rX  r  r  r  ry  t_shapezpaira_rangeb_rangecondr  
cond_shapes     ``          r*  r   r   ~  s    d{4
d 66A:D!!t6D!!t6D	LLW
 vvbzH{qww-ll6*KKqwwqxxuU!1v!QIId#HLL(( 	
D!!"d+A ll8AHHEKKHGll6!!((%++G
 g''++D@Ec!''l@ST@S1aD$</(Q6@SJT<<
#D T1%0022 Us   Hr  c                    | j                   dk  rt        d| j                    d      t        |t              r<|dk(  s| j                  d   |z  dk7  r"t        dd| j                  d    d| d	z         t        | |d      S )
Nrm  zPtorch.dsplit requires a tensor with at least 3 dimension, but got a tensor with r  r   r  z3torch.dsplit attempted to split along dimension 2, zbut the size of the dimension r  rY  )r  rM  r0  r   rE  r   )rj  r  s     r*  r   r     s    vvz^_`_e_e^ffrs
 	
 (G$(a-1771:;PTU;UA.qwwqzl:^_g^hhijk
 	
 8Q''r,  c                     | j                   dkD  rt        d| j                    d      t        j                  | d| j                   dk  rd      S d      S )Nr  z7t() expects a tensor with <= 2 dimensions, but self is r  r   rA  )r  rM  r  r   ri  s    r*  r   r     sS     	vvzEaffXQO
 	
 ??1aaffqj88a88r,  c                 h    t        j                  | j                  dv d        | j                         S )N)r   r  c                       y)NzcThe use of `x.T` on tensors of dimension other than 0 or 2 to reverse their shape is not supported.r>  r>  r,  r*  r@  zT.<locals>.<lambda>  s    7r,  )r  r  r  r   ri  s    r*  r   r     s,    	LL	&	
 335Lr,  c                 ,    t        j                  |       S r7  )r  r   ri  s    r*  r   r     r  r,  dim0c                 0   t        j                  | j                  ||f      \  }}| j                  dk  s||k(  rt        j                  j                  |       S t        t        d| j                              }|||<   |||<   t        j                  | |      S )NrA  r   )
rZ  r  r  r  r   defaultr  rK  r  r   )rj  r  r  _dim0_dim1r  s         r*  r   r     s    **166D$<@LE5vv{ddlzz!!!$$a()LLL==L))r,  c                 z    t        | j                  | j                         |||      \  }}| j                  ||      S r7  )r[  rE  r  r   )r  r  r  r  rE  rZ  s         r*  r   r     s:     .

DKKM9dDNE7 ??5'**r,  c                 d    | j                  |||      j                  t        j                        S r  )r   r   r  r  )r  r  r  r  s       r*  r   r     s2     ;;y$-33-- 4  r,  c                   |j                   }t        j                  ||      }|dk(  r | |j                  d      d||      S |j                  |dz         }t	        j
                  |j                  |   |j                        }|j                  d      |k  }t        ||z
  dz
        D ]  }	|j                  d      } t	        j                  |||      }
 | |
|||      S )Nr   )r  r  r  rA  r(  rF  )
r  rZ  r  r   r  r  rE  r)  rK  r   )funcinitrj  r  r  r  r  rgr]  r  masked_as              r*  _cumsumprod_commonr
    s     66D

 
 s
+CqyAKKNC@@	C!GA	aggcl188	4B<<?b D4#:>"~~b! #{{4D)HcC88r,  c                ,    t        t        d| |||      S )Nr   r  r  rj  r  r  r  )r
  r   rj  r  r  r  s       r*  r   r   %  s     3Q!EsSSr,  c                ,    t        t        d| |||      S )NrA  r  )r
  r   r  s       r*  r   r   0  s     4a1#UPSTTr,  c                 ~    | j                   dz   }t        j                  ||      }t        j                  | |f|      S )NrA  rN  )r  rZ  r  r  expand_dims)rj  r  r  s      r*  r   r   <  s:     66A:D

 
 s
+CQT22r,  c                      t        | g|ddiS )Nrt  Fr}  r  s     r*  r   r   I  s    <E<e<<r,  c                 @    | j                  |j                               S r7  )r   r  r  s     r*  r   r   O  s    99UZZ\""r,  c                     t        | d      S )N)rF  )r   ri  s    r*  r   r   T  s    1er,  r  c                     t        j                   j                  j                  k(   fd       t        j                  t        j                  j
                        fd       |5t        j                   j                  d      dj                  d            S t         j                        }j                  |      ||<   t        j                  |j                               }t        |      }t        j                        } j                  |      ||<   t        j                  | j                               }t         |      }t        j                  |||      S )Nc                  >    d j                    dj                    dS )Nz]torch.take_along_dim(): input and indices should have the same number of dimensions, but got z dimensions for input, and z dimensions for indicesrN  )rj  r  s   r*  r@  z take_along_dim.<locals>.<lambda>`  s%    --.VVH4O||n35r,  c                  $    d j                    dS )Nz?torch.take_along_dim(): dtype of indices should be int but got r8  r  )r  s   r*  r@  z take_along_dim.<locals>.<lambda>i  s    M}}oX'r,  rF  r   )r  r  r  rZ  r  r  gatherr   r  rE  r  infer_size_shapesr   )rj  r  r  
self_sizesbroadcast_shapeindices_broadcastindices_sizesself_broadcasts   ``      r*  r   r   Z  s    
LL	',,	
 
LLw}}-	
 {||AFF2J7<<+;<<!'']
!,,s+
311*gllnM(/BW]]+VVC[c11-J%a9||NC1BCCr,  r  r  r)  r  r  r  r  c           	         t        j                  t         j                  k7  d        t        j                  |      }t         j
                  k(  rt        j                  |      }nht         j                  k(  rt        j                  |      }n?t        j                  t         j                  k(  fd       t        j                  |      }t        j                  ||| ||||      S )Nc                       y)Nz8torch.empty: the Preserve memory format is not supportedr>  r>  r,  r*  r@  zempty.<locals>.<lambda>  s    Jr,  c                      d  dS )Nz/torch.empty: received an unknown memory format rY  r>  r  s   r*  r@  zempty.<locals>.<lambda>  s    Em_TUVr,  r  r  r)  r  r  )r  r  r  rZ  r  r  re  channels_last_3d!make_channels_last_3d_strides_forchannels_last!make_channels_last_2d_strides_forr  )r  r  r)  r  r  r  rE  rZ  s        `  r*  r  r    s     
LL...J
 ,,U3E///33E:	%00	099%@U000V	
 99%@# r,  c                 6    t        j                  | ||||      S )Nr  )r  r
  )rE  physical_layoutr  r  r)  r  r  s          r*  r
  r
    s&     # r,  r  r  r)  r  c                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  |||||      S )Nr  r)  r  r  )r  r  r)  r  r  )rj  r  r  r  r)  r  s         r*  r  r    sQ     }AGG%EQXXVFQXXVF;; r,  c                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||||||      S )zD
    Reference implementation of torch.Tensor.new_empty_strided
    r+  )r  r  r)  r  r  )rj  r  r  r  r  r)  r  s          r*  r  r    sV      }AGG%EQXXVFQXXVF r,  r"  c           	          t        j                  |      }| t        j                         } t        j                  || t        j
                  k(  rdnd| ||||      S NFr   r"  rZ  r  r  r}  r  r  r  r  r)  r  r  r  s         r*  r  r    sZ     ++D1D}'')::%**$!# r,  c          	          || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||xs | j                   t        j
                  k(  rdnd|||||      S r.  r  r  r)  r  r  r  rj  r  r  r  r)  r  r  s          r*  r  r  	  sm     }AGG%EQXXVFQXXVF::"177uzz1q# r,  c           	          t        j                  |      }| t        j                         } t        j                  || t        j
                  k(  rdnd| ||||      S NTrA  r"  r/  r0  s         r*  r  r  $  sZ     ++D1D}'')::## r,  c          	          || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||xs | j                   t        j
                  k(  rdnd|||||      S r5  r2  r3  s          r*  r  r  >  sm     }AGG%EQXXVFQXXVF::!!''ejj0a# r,  
fill_valuec                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||||||      S )Nr)  )r  r  r)  r  r  )rj  r  r7  r  r  r)  r  s          r*  r  r  Y  sT     }AGG%EQXXVFQXXVF:: r,  )r  r)  r  r  r  r  c          	      J   || j                   n|}|| j                  n|}|| j                  n|}|t        j                  k7  r&t        j
                  | j                  ||||||      S t        j                  |       }t        j                  | j                  ||||||      S )Nr  r"  )
r  r  r)  r  r  r  rE  rZ  3compute_elementwise_output_logical_to_physical_permr
  )rj  r  r)  r  r  r  r  logical_to_physical_perms           r*  r	  r	  s  s     }AGG%EQXXVFQXXVF---{{GG'!'
 	
 	AA!D  	 # r,  rN  c                F    t        j                  |       t        j                  |       t        j                  t        j
                  |            }t         t              rJ t        t              rJ t        t              rJ  d t        j                  dk7  d        dkD  rt        j                   k\  d        ndk  rt        j                   k  d        d }t        j                   |       xr  |       fd       t        j                   |      fd       |G f}	t        j                  d |	D              }
|
rt        j                  nt        j                         }t        j                  |      }|r!t               }t              }t              }|t        j                  k(  r,t        dkD        t        |dk        z
  }z
  |z   |z
  |z  }nt!        j"                   z
  z        }|rt%        j&                  ||||	      S t        j(                  ||      }t%        j&                  |dd
t        j                  |d	      }t+        ||      } |z  z   }t+        ||      }|r|j-                  d       |S )Nr   c                       y)Nzstep must be nonzeror>  r>  r,  r*  r@  zarange.<locals>.<lambda>  s    $:r,  c                       yNz7upper bound and lower bound inconsistent with step signr>  r>  r,  r*  r@  zarange.<locals>.<lambda>      Mr,  c                       yr?  r>  r>  r,  r*  r@  zarange.<locals>.<lambda>  r@  r,  c                 R    t        | t               xs t        j                  |       S r7  )r0  r   r  rO   r?  s    r*  	is_finitezarange.<locals>.is_finite  s!    a!566J$--:JJr,  c                      d d  S )Nzunsupported range: z -> r>  )rN  ry  s   r*  r@  zarange.<locals>.<lambda>  s    %eWD6r,  c                      d  S )Nzstep must be finite but got r>  rW  s   r*  r@  zarange.<locals>.<lambda>  s    .tf5r,  c              3   <   K   | ]  }t        |t                y wr7  r8  r:  rZ  s     r*  r<  zarange.<locals>.<genexpr>  s     #MJsG$<   )ry  r  r  r)  r  rA  FT)rZ  check_layoutcheck_pin_memoryr  r)  device_or_defaultr0  r  r  r  r   r  r}  r  r   r  r  r6   r  iotaget_acc_typer(   requires_grad_)ry  rN  r  r  r  r)  r  r  rC  r`  integer_args
is_integerxstartxendxsteprh   r  r  r  r  s   ```                 r*  r  r    sj    
v	:&\\%11&9:F%)))#w'''$((( {	LL:;ax5LM	
 
5LM	

K 
LL%+Ys^6 
LL$5
 }sD!||#M#MM+1H1H1J''.Js| 519oUQY/-%'#-%7C%K4/0zz'
 	
 **5&9JJkkE $E+<=ETE\!F$VU3Fd#Mr,  )ry  rN  r  c                    | |g}t        |t              r| j                  d|      }n|j                  |       t        |t              sJ |j                         dk\  }t        j                  ||dz
  |      }t        j                  |||       }||| z
  z  |z   }t        j                  t        |  }|j                         |k7  rt        j                  ||      }t        ||      S )Nr>  rJ  rA  )r0  r   r  r  r+  r.   r  r   rZ  "compute_elementwise_output_stridesra  r  r  copy_stridedr4  )	ry  rN  r  r}  r]  coeffbaser3  r  s	            r*  rV   rV     s     S\F&&!F+fff%%% ::<3DKKfqj&1E;;tS%(DcEk"T)F557G7PQF}}& ##FF3'77r,  )r  r)  r  r  r  stepsc          
          t         t              rBt        j                   j	                         dk(  d        t         t        j                         t        t              rBt        j                  j	                         dk(  d        t        t        j                        t        d  fD              rZt        j                  t        j                               nFt        j                  t        j                        fd       nxs t        j                         t        t        j                        sJ t        j                  t        t               fd       t        t              sJ t        j                  dk\  d        ||||d}dk(  rt        j                  dd	i|S d
k(  rRt         t              r(t        j                   ffd	i|j#                         S t        j                  f fd	i|S t        j$                  dfi |}	t        j&                        st        j(                        rt        j*                  n}
t        j,                  |	t.        j0                  |
      \  }}t3        t
        |      } z
  d
z
  z  }t        j4                  |	dz  k   | ||	      z  z   | |d
z
  |	z
        z  z
        }t        |      S )Nr   c                       yNz:linspace only supports 0-dimensional start and end tensorsr>  r>  r,  r*  r@  zlinspace.<locals>.<lambda>.  r=  r,  c                       yr\  r>  r>  r,  r*  r@  zlinspace.<locals>.<lambda>4  r=  r,  c              3   <   K   | ]  }t        |t                y wr7  r0  r  rG  s     r*  r<  zlinspace.<locals>.<genexpr>8       F2E3jg&2ErH  c                      d  d S )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype r>  )default_complex_dtyper  s   r*  r@  zlinspace.<locals>.<lambda>A  s    56K5LLrsxryzr,  c                      dt              j                   dt               j                   dt              j                   dS )Nz4received an invalid combination of arguments - got (r  r  )r'  rr  )rN  ry  rY  s   r*  r@  zlinspace.<locals>.<lambda>J  sB     u+r$s),,-RU0D0D/EQHr,  c                       y)Nz$number of steps must be non-negativer>  r>  r,  r*  r@  zlinspace.<locals>.<lambda>N  s    %Kr,  )r  r)  r  r  r  rA  r  r  )r  r   )r0  r%   r  r  r  r(   rN  py_anyrZ  r  r}  r  r  r  r   r  r  r  r  r  r  r  r  r!   r  r   r   )ry  rN  rY  r  r)  r  r  r  factory_kwargsr  	dtype_redr  r  cast_rgr  r  rb  s   ````            @r*  r  r    s    %(IIK1P	
 (u}}=#~&GGINP	
 &c5==9F5#u2EFF % A A##%!
 =)ELL&&u-z
 2002eU[[))) 
5'"	H
 eW%%%	LL!KL  &	N zzzAA.AAze^,;;xGuGGMMeTT::uhMUMnMM 
a	1.	1B
 ""5)U-C-CE-J 	 
 !11
&++Yq -5FGG %KEAI&D
++
UQYwr{""dWeai2-...C
 #3..r,  rX  c          
      B   |t        j                         }t        j                  j	                  |      rt        | t              rt        |       } nDt        | t              r4t        j                  | j                         dk(  d        t        | |      } t        |t              rt        |      }nDt        |t              r4t        j                  |j                         dk(  d        t        ||      }t        d | ||fD              r,t        j                  t        j                               }	|	}d }
nt         j                  }
t        |t              rJ |dk  rt         t        j"                  | |||
||||      }t        t        j$                  ||      |      S )Nr   c                       yNz:logspace only supports 0-dimensional start and end tensorsr>  r>  r,  r*  r@  zlogspace.<locals>.<lambda>      Tr,  c                       yrk  r>  r>  r,  r*  r@  zlogspace.<locals>.<lambda>  rl  r,  c              3   <   K   | ]  }t        |t                y wr7  r_  rG  s     r*  r<  zlogspace.<locals>.<genexpr>  r`  rH  r"  )r  r}  r  rZ  r  r0  r   r   r%   r  r  r(   re  r  rN  r  r  r  r   )ry  rN  rY  rX  r  r)  r  r  r  rb  _dtyperets               r*  r  r  w  s^    }'') {{##E*eY'ENE~.LL		q T ,E59Ec9%#,C^,LL	QT *#u5CF5#u2EFF % A A##%!
 &$(((ax!!
..#	C #599T3#7??r,  indexingc                      y r7  r>  )rw  rq  s     r*  r   r         r,  c                      y r7  r>  )rq  rw  s     r*  r   r     rs  r,  c                     t        |d   t        t        f      rt        |      dk(  sJ t        |d         }t	        j
                  t        d |D              d        t	        j
                  t        |      dkD  d        t        t        |      dz
        D ]p  }t	        j
                  ||   j                  ||dz      j                  k(  d        t	        j
                  ||   j                  ||dz      j                  k(  d        r d} d	k(  r!t        |      d
k\  }|r-|d   |d   g|d
d  }nt	        j
                   dk(   fd       g }|D ]j  t        t              sJ t	        j
                  j                  dk(  xs j                  dk(  fd       |j                  j                                l g }t        |      D ]^  \  }t        t              sJ j                  dk(  rj                  d      |j                  t!        j"                  ||f             ` |r|d   |d   c|d<   |d<   |S )Nr   rA  c              3   <   K   | ]  }t        |t                y wr7  r0  r$   r^  s     r*  r<  zmeshgrid.<locals>.<genexpr>  s     :'Qz!Z('rH  c                       y)Nz)meshgrid expects its inputs to be tensorsr>  r>  r,  r*  r@  zmeshgrid.<locals>.<lambda>  r  r,  c                       y)Nz'meshgrid expects a non-empty TensorListr>  r>  r,  r*  r@  zmeshgrid.<locals>.<lambda>  s    +Tr,  c                       y)Nz3meshgrid expects all tensors to have the same dtyper>  r>  r,  r*  r@  zmeshgrid.<locals>.<lambda>  s    Ir,  c                       y)Nz4meshgrid expects all tensors to have the same devicer>  r>  r,  r*  r@  zmeshgrid.<locals>.<lambda>  s    Jr,  Fxyr  ijc                      d  S )NzDtorch.meshgrid: indexing must be one of "xy" or "ij", but received: r>  )rq  s   r*  r@  zmeshgrid.<locals>.<lambda>  s    !!)
,r,  c                      d  S )NzEtorch.meshgrid: Expected 0D or 1D tensor in the tensor list but got: r>  )r   s   r*  r@  zmeshgrid.<locals>.<lambda>  s    [\][^_r,  r  )r0  r  rG  rD  r  r  r  rK  r  r)  r$   r  r  r  rJ  r   r  r  )rq  rw  r  swap_first_and_second_tensorsresult_shapegridsr   s   `     @r*  r   r     s!    '!*tUm,7|q   
#	LL:'::;
 
LLW!#TU3w<!#$AJA 4 44I	
 	AJQ!6!66J	
 % %*!4(+G(9%(qz71:<<G	
 !L!Z(((FFaK&166Q;_	
 	AGGI&  #%E'"1!Z(((66Q;tAU++A|aTBC	 # %"1XuQxa%(Lr,  sourcedestinationc                 V   t              t        u rft              t        u rft        j                  t	              t	              k(  fd       | j
                  }t        t        j                  |            }t        t        j                  |            }t        |      }t        |      }t        j                  t	        |      t	        |      k(  fd       t        j                  t	        |      t	        |      k(  fd       t        t        ||            }g }	d}
t        |      D ]K  }|j                  |      }||	j                  |       (|
|v r
|
dz  }
|
|v r
|	j                  |
       |
dz  }
M t        j                  | t        |	            }|S )z3
    Reference implementation of torch.movedim
    c                  :    dt               dt                dS )Nz5movedim: Invalid source or destination dims: source (z> dims) should contain the same number of dims as destination (z dims)r  )r  r  s   r*  r@  zmovedim.<locals>.<lambda>  s)    V~ ''+K'8&9Ar,  )r  r  c                  "    dt                dS )Nz#movedim: repeated dim in `source` (r  r  )r  s   r*  r@  zmovedim.<locals>.<lambda>#  s    5d6l^1Er,  c                  "    dt                dS )Nz(movedim: repeated dim in `destination` (r  r  )r  s   r*  r@  zmovedim.<locals>.<lambda>'  s    :4;L:MQOr,  r   rA  )r'  rX  r  r  rD  r  rG  rZ  r  setdictrd  rK  r  r  r   )r  r  r  r  ssdssssdssrG  r  sidir  r  s    ``           r*  r   r     sn    F|sKC"n 
LLFs;''	
 ::D	u&&D&A	BB	u&&D+F	GB
b'C
b'C 
LLB3s8E 
LLB3s8O
 	SR[AD	
BDkEE"I=KKN )a )KKO!GB  ]]5%+.FMr,  )r  r)  r  r  r  rZ  c                   t        j                  |       t        j                  |       t        j                  |       } |t	        j
                         n|}|t	        j                  d      n|}t        j                  | ||||      S )NrQ  r  )	rZ  rI  rJ  r  r  r}  r)  r  r  )rE  rZ  r  r)  r  r  r  s          r*  r  r  @  sz     
v	:&,,U3E).E##%EE$*NU\\% F# r,  nrG  c                     t        j                   dk\   fd       t        j                  dk\  fd       t        j                   t         j                  |d      }t        j                  t         j                  |d      }|j	                  d      |k(  }	|t         j
                  u r|	S t        j                  d||||d      }
t        j                  |	|
d      S )	z/
    Reference implementation of torch.eye
    r   c                      d  S )Nz%n must be greater or equal to 0, got r>  )r  s   r*  r@  zeye.<locals>.<lambda>o      #H!Lr,  c                      d  S )Nz%m must be greater or equal to 0, got r>  )rG  s   r*  r@  zeye.<locals>.<lambda>p  r  r,  Fr  rF  r  r"  )r  r  r  r  r   r  r  r   )r  rG  r  r  r)  r  r  range_nrange_mr  ones   ``         r*  r  r  ]  s     	y	LLaLM	LLaLMll1EKKeTGll1EKKeTGR G+D

jj!
 {{4a((r,  c                   t        j                  |       t        j                  |       ||nt        j                  t	        |            }||nt        j                  d      }t        | |||||      }t        j                  ||      S )NrQ  r"  )	rZ  rI  rJ  type_to_dtyper'  r  r)  r  rD   )rE  r7  r  r  r)  r  r  es           r*  r  r    s     
v	:&&EE,?,?Z@P,QE)Vu||E/BF#	A ::a$$r,  r  r  r)  r  r  r  c          	      R    t        j                  | ||||||      }t        ||      S )Nr  )r  r	  rD   )	rj  r7  r  r  r)  r  r  r  r  s	            r*  r  r    s8     		##	A :r,  c          
          t        j                  | |xs | j                  t         j                  k(  rdnd||||||      S )NFr   r  r  r  r  r  rj  r  r  r)  r  r  r  s          r*  r  r    sC     ??	"177uzz1q##	 	r,  c          
          t        j                  | |xs | j                  t         j                  k(  rdnd||||||      S )NTrA  r  r  r  s          r*  r  r    sC     ??	!!''ejj0a##	 	r,  c                     t        j                  |       t        j                  |      }t        j                  |       } t        j                  |      }t        j                  |dd| ||      S )Nr  rI  )r   r   r  r)  r  )rZ  rJ  r  dtype_or_defaultrK  r  r`   )r  r)  r  r  r  rE  r  s          r*  r  r    se     
:&--e4F""5)E$$V,F<<# r,  c                    t        j                  |       t        j                  |       ||nt        j                  t	        |             }||nt        j                  d      }t        j                  | ||      S )NrQ  r@  )	rZ  rI  rJ  r  r'  r  r)  r  r  )rj  r  r  r)  r  s        r*  r  r    se     
v	:&&EE,?,?Q,HE)Vu||E/BFqf==r,  lowhighc                6   t        j                  |        t        |t              sJ t        |t              sJ t	        |      }t	        |      }t        |t
        j                        sJ t        j                  |      }t        j                  | ||||      S )N)r  r  r  r)  )
rZ  r  r0  r   r   r  r  canonicalize_devicer  _uniform_helper)rE  r  r  r  r)  s        r*  r  r    s     
c6"""dF###
C.CT?DeU[[)))&&v.F  Cd%PVWWr,  r]  c                    t        j                  | j                        t        |t              rt        |      }n|j                  t        j                  dk(  fd       | j                  j
                  dv xr |j                  j
                  dk(  }t        j                  |xs |j                  | j                  k(  d        t        j                  |j                        }|t        u r-t        j                  t        j                  |      fd       t        || j                        }t        j                  |||       }|j                         S )Nr   c                      d  dS )Nz@only supports a 0-dimensional value tensor, but got tensor with z
 dimensionr>  )
value_ndims   r*  r@  zmasked_fill.<locals>.<lambda>;  s    VWaVbblmr,  )cudaxpurQ  c                       y)Nz,Expected `value` to be on same device as `a`r>  r>  r,  r*  r@  zmasked_fill.<locals>.<lambda>A  s    Br,  c                      d  dS )Nzcould not convert to type z without overflowr>  )r  s   r*  r@  zmasked_fill.<locals>.<lambda>L  s    0=NOr,  )rZ  r   r  r0  r   r'  r  r  r  r)  r  r   r(   r   r   )rj  r]  r  
value_typeis_cpu_scalarr  r  r  s         @@r*  r   r   /  s    %%agg.K% %[
 ZZ
!Om	

 8WU\\=N=NRW=W5U\\QXX5B	
 ((5
W
 	''
K@O	
 $E1773ED%#A <<>r,  c                 V    t        j                  | ||      }| j                  |       | S r7  )r  r   r  )rj  r]  r  r   s       r*  r   r   Y  s(     	!T5)AGGAJHr,  c                     t        d| |||       t        t        j                  t        j                  | ||||            j                               S )z4
    Reference implementation of torch.allclose
    ztorch.allcloserx  )rp  rq  rz  )ry  r  r  r   r   r   )rj  r   rp  rq  rz  s        r*  r  r  c  sH     +qADtL		%--14diPQVVX r,  c                 T   t        j                  | |d       t        j                  | |       | j                  |j                  k7  ryt	        | j
                  |j
                        D ]  \  }}||k7  s y | j                         dk(  ryt        t        t        | |                  S )NFr  r   T)
rZ  r  check_same_dtyper  rd  rE  r  r   r   r   )rj  r   r;  rL  s       r*  r  r  t  s    	Aq5A	1a  	vvAGGQWW%16 &
 	wwyA~Bq!Hr,  )exact_dtyper  c                j   |dk(  r | t        |t              st        |      dk  s|d}t        |t              r|g}t        |t              rD|t	        t        | j                              }t        j                  j                  | ||||      S t        j                  j                  | ||||      S )Nfror  r  )r0  r   rD  r]  rG  rK  r  r  r  matrix_normr  )r  r  r  r  r  s        r*  r_   r_     s     	
U
z#s';s3x1}	
#se!S ;ejj)*C||''q#we'LL||''q#we'LLr,  c                     t        j                  | j                  dk(  d        t        j                  t        j                  | d            S )Nr  c                       y)Nz6expected a matrix, but got tensor with dim {self.ndim}r>  r>  r,  r*  r@  ztrace.<locals>.<lambda>  s     Xr,  r   )r  r  r  r   r   r  s    r*  rs   rs     s:     
LL		QX 99UZZa())r,  c                 l     dt         t        t        f   dt         t        t        f   dt        f fd}|S )Nrj  r   re  c                      ||       S r7  r>  )rj  r   base_ops     r*  ropz_make_r_binary_op.<locals>.rop  s     q!}r,  )r   r%   r   )r  r  s   ` r*  _make_r_binary_opr    s=    +,+, 
 Jr,  r   c                 ~   t        j                  | j                  dk\  d        | j                  dd  \  }}t        j                  || j
                        j                  d      t        j                  || j
                        j                  d      z
  |k\  }t        j                  ||       j                         S )Nr  c                       y)Nz2triu: input tensor must have at least 2 dimensionsr>  r>  r,  r*  r@  ztriu.<locals>.<lambda>      Qr,  r3  r(  rF  
r  r  r  rE  r  r)  r   rZ  r  r   rj  r   hwr]  s        r*  r  r         
LL	!Q 7723<DAqQqxx(2226
,,q
*
4
4R
8	9	D T1%0022r,  c                 ~   t        j                  | j                  dk\  d        | j                  dd  \  }}t        j                  || j
                        j                  d      t        j                  || j
                        j                  d      z
  |k  }t        j                  ||       j                         S )Nr  c                       y)Nz2tril: input tensor must have at least 2 dimensionsr>  r>  r,  r*  r@  ztril.<locals>.<lambda>  r  r,  r3  r(  rF  r  r  s        r*  r  r    r  r,  rowcolc                    | dk(  s|dk(  ry|dkD  rt        |d|z         nt        | |z   dkD        }t        dt        || |z               }t        dt        | | |z               }||z
  dz   }||z   |z  dz  }||z
  }t        d||z        }	||	|fS )Nr   r   r   r   rA  r  )r  rX  rI  )
r  r  rX  m_first_row
m_last_row	n_row_alln_row_trapezoidtrapezoid_sizediff_rowrectangle_sizes
             r*  _get_tril_sizesr    s    
ax3!8*01*#c1v:&#cFlQ>N:OKQCv./JAs3f-.I ;.2O "J./AQFN?*HHsN+N>;66r,  c                      t        j                  dk\  fd       t        j                  dk\  fd       t        j                  t         j                  t         j                  fv  fd       y )Nr   c                      d  S )Nzrow must be non-negative, got r>  )r  s   r*  r@  z_trilu_checks.<locals>.<lambda>      %CC5#Ir,  c                      d  S )Nzcol must be non-negative, got r>  )r  s   r*  r@  z_trilu_checks.<locals>.<lambda>  r  r,  c                      d d  dS )Nr  z" not implemented for ''r>  )r  r  s   r*  r@  z_trilu_checks.<locals>.<lambda>  s    "TF25';r,  )r  r  r  r  )r  r  r  r  r  r  s   ````  r*  _trilu_checksr    sO     
LLIJ	LLIJ	LL%++u{{++;r,  rQ  c                   t        d| ||||       t        | ||      \  }}}	t        d|       }
t        t        j
                  |||      } |d|t        j                        }|	dz
  }t	        j                  | t	        j                  ||z  d|z  z         z         }t	        j                  |d|	z  dz
  |z   |z  dz  z
        }t        ||
z   |      }t        ||      } |d||      }||z  ||	z
  dz   |
z   z   }||z  }t	        j                  t	        j                  ||f      t	        j                  ||f      f      S )Nr  r   r  r)  r  r  rJ  r  rA  )r  r  rI  r   r  r  rN  rF   ro   r(   r   r   )r  r  rX  r  r  r)  r  r  r  r  
row_offset	arange_kwxs1r   	row_inds1	col_inds1xs2	row_inds2	col_inds2s                      r*  r  r    sK    .#sE6:F2A#sF2S/NNKQJVFzI
 A~U]]
;CcAQBAEAGO!<<=IC1{?Q#6#Bi"ORU"UUVI'	J(>FI'	59I A~U
3Cs
cK/!3j@AIc	I;;	Iy)	*EIIy)6L,MN r,  c                     | dk(  s|dk(  ry|dkD  rt        d||z
        n|}t        dt        | |       |z        }t        | ||dz
        \  }}}| |z  ||z   z
  }||z
  }	|	||fS )Nr   r  rA  )rI  r  r  )
r  r  rX  r  r  trapezoid_size_trilrectangle_size_trilr  	triu_sizer  s
             r*  _get_triu_sizesr  /  s    
ax3!8*01*#av&#K CfW-34N 3B#sFUVJ2W/,ac	03FFGI/N>;66r,  c                   t        d| ||||       t        | ||      \  }}}	t        d|      }
t        t        j
                  |||      } |d||      }||z  }||z  } |d|t        j                        }d|	z
  }t	        j                  | t	        j                  ||z  d|z  z
        z
        }t	        j                  |d|	z  dz
  |z
  |z  dz  z
        }t        ||      }t        ||      }|r|||z  z   }||
z   }t	        j                  t	        j                  ||f      t	        j                  ||f      f      S )	Nr  r   r  r  g      r  rA  rJ  )r  r  rI  r   r  r  rN  rF   ro   r(   r   r   )r  r  rX  r  r  r)  r  r  r  r  
col_offsetr  r  r  r  r  r   r  r  s                      r*  r  r  @  sL    .#sE6:F2A#sF2S/NNKQJVFzI
 A~U
3Cs
Ic	I A~U]]
;C{AQBAEAGO!<<=ICAOa$7)$Cy#PTW"WWXI'	59I'	59I
3!67	J&I;;	Iy)	*EIIy)6L,MN r,  )	out_int32right
boundariesr  r  c                   t        j                  j                         dk(  fd       |rt         j                  nt         j                  }j
                  d   }|dk(  rt        j                  |       S t        j                  | j
                  | j                  t         j                        }||z   }|||z
  dz  z   }|   }	|r|	| kD  }
n|	| k\  }
t        j                  |
||dz         }|dkD  rt        j                  | t         j                        }t        t        j                  |            }t        |      D ]q  }t        j                  |
|z  ||      }||k  }t        j                  ||||z
  dz  z   d      }|   }	|r|	| kD  }
n|	| k\  }
t        j                  |
 |z  |dz   |      }s |j!                  |      S )NrA  c                  ,    d j                          dS )Nz2boundaries tensor must be 1 dimension but got dim(r  r  )r  s   r*  r@  zbucketize.<locals>.<lambda>v  s    DZ^^EUDVVWXr,  rF  r   r  r  r  )r  r  r  r  r  rE  r  r  r)  r   r  r  rX  r  rZ   rK  r   )rj  r  r  r  	out_dtypen_boundariesry  rN  midmid_valcond_midcond_updatenitersr  s    `            r*  r  r  k  s    
LLAX
  )ekkI##B'Lq""
 KKDE
,
C 3;1$
$CoGQ;a<KK%q1Eaooauzz:TYY|,-vA++h4c3?C#+K++k5C%KA3E+EqIC oG "Q;"a<KK(k 937EJE  88)8$$r,  c                     |J t        j                  t        j                   j                         xrB t        j
                   j                         xr  t        j                   j                          fd       t        j                  dkD  fd       |t        j                  t        j                  t        j                         dz
  z        z  z   S )Nc                  "    d j                    S )NzwCauchy distribution is a continuous probability distribution.         dtype must be a floating point but you specified r  r  s   r*  r@  zcauchy.<locals>.<lambda>       ::>**Gr,  r  c                      d  S )Nz-cauchy_ expects sigma > 0.0, but found sigma=r>  )sigmas   r*  r@  zcauchy.<locals>.<lambda>  s    ?wGr,  rJ  )r  r  rZ  r  r  r  r  rq   r  r  	rand_like)r  medianr  	generators   ` ` r*  r  r    s     	LL""4::.. 	3&&tzz22	3&&tzz22	G	 
LLG EEIIdgg1F1L&MNNNNr,  c                     |J t        j                  t        j                   j                         xrB t        j
                   j                         xr  t        j                   j                          fd       t        j                  dkD  fd       dz  t        j                  t        j                                z  S )Nc                  "    d j                    S )Nz|Exponential distribution is a continuous probability distribution.         dtype must be a floating point but you specified r  r  s   r*  r@  zexponential.<locals>.<lambda>  r   r,  r  c                      d  S )Nz4exponential_ expects lambda > 0.0, but found lambda=r>  )rates   r*  r@  zexponential.<locals>.<lambda>  s    FtfMr,  rF  )	r  r  rZ  r  r  r  r  rY   r  )r  r	  r  s   `` r*  rB   rB     s     	LL""4::.. 	3&&tzz22	3&&tzz22	G	 
LLs
M 9u{{EOOD$9#9:::r,  c                     |J t        j                  t        j                   j                         xr  t        j
                   j                          fd       t        j                  dk  xr dk  fd       t        j                  t        j                  t        j                                t        j                         z        dz   S )Nc                  "    d j                    S )Nzgeometric not implemented for r  r  s   r*  r@  zgeometric.<locals>.<lambda>  s    0=r,  r   rA  c                      d  S )Nz0geometric_ expects p to be in (0, 1), but got p=r>  )r  s   r*  r@  zgeometric.<locals>.<lambda>  s    B1#Fr,  )
r  r  rZ  r  r  r  rF   rY   r  r  )r  r  r  s   `` r*  rH   rH     s     	LL""4::.. 	3&&tzz22=
 
LL	A!a%F ;;u{{EOOD$9#9:TZZ^KLqPPr,  c                     |J t        j                  t        j                   j                         xrB t        j
                   j                         xr  t        j                   j                          fd       t        j                  dk  fd       t        j                  t        j                         z  |z         S )Nc                  "    d j                    S )Nzlog_normal not implemented for r  r  s   r*  r@  zlog_normal.<locals>.<lambda>  s    1$**>r,  r   c                      d  S )Nz-log_normal_ expects std > 0.0, but found std=r>  r   s   r*  r@  zlog_normal.<locals>.<lambda>  s    ?uEr,  )	r  r  rZ  r  r  r  r  r@   
randn_liker  r   r   r  s   ` ` r*  r\   r\     s     	LL""4::.. 	3&&tzz22	3&&tzz22>	 
LL	CE 99S5++D11D899r,  )r   r   )r  r  r  r)  r  c          	         ||t         j                  k(  sJ t        t              st        j                  dk\  fd       |t        d | fD              }t        j                  t        |      dkD  d        t        j                  |d u xr |d u d        t        d |D         }|d   j                  }|d   j                  }njt        j                  t        | t               xr t        t               d        |t        j                         n|}|t        j                  d      n|}t        j                  |d	d
||d|      }	|	z  | z   S )Nr   c                      d  S )Nz)normal expects std >= 0.0, but found std r>  r  s   r*  r@  znormal.<locals>.<lambda>  s     I#Or,  c              3   B   K   | ]  }t        |t              s|  y wr7  rw  rW  s     r*  r<  znormal.<locals>.<genexpr>  s     L;a*Q
2K;s   c                       y)NzFnormal expects that either mean or std is a tensor, or size is definedr>  r>  r,  r*  r@  znormal.<locals>.<lambda>  s    \r,  c                       y)Nz.Cannot pass layout, or pin_memory without sizer>  r>  r,  r*  r@  znormal.<locals>.<lambda>!  s    Dr,  c              3   4   K   | ]  }|j                     y wr7  r  rW  s     r*  r<  znormal.<locals>.<genexpr>$  s     "<Gq177Gr  c                       y)Nz>normal expects mean and std to be scalars when size is definedr>  r>  r,  r*  r@  znormal.<locals>.<lambda>*  s    Tr,  rQ  r  rI  F)r   r   r  r)  r  r  )r  stridedr0  r$   r  rG  rD  rS  r  r)  r}  r  r`   )
r   r   r  r  r  r  r)  r  rw  normal_sampless
    `        r*  r`   r`     sM   ( >Vu}}444c:&1HO	
 |LD#;LLL1\	
 	dN1zT1D	

 !"<G"<=
  ""4,,PZZ5P1PT	
 .3]'')(.e$F\\N $&&r,  )r  c                6    t        ||| j                  | |      S )N)r  r  )r`   rE  r  s       r*  normal_r  ;  s    $TZZTYGGr,  c                 z    t        j                  t        j                  | j                         d        d}| |z  S )Nc                       y)Nz-rad2deg is not supported for complex tensors.r>  r>  r,  r*  r@  zrad2deg.<locals>.<lambda>D  r
  r,  gcܥL@r  r  rZ  r  r  )r  M_180_PIs     r*  rd   rd   @  s8    	LL""4::..? CH(?r,  c                 z    t        j                  t        j                  | j                         d        d}| |z  S )Nc                       y)Nz-deg2rad is not supported for complex tensors.r>  r>  r,  r*  r@  zdeg2rad.<locals>.<lambda>N  r
  r,  g9RFߑ?r   )r  M_PI_180s     r*  r;   r;   J  s8    	LL""4::..? EH(?r,  c                 *    | dk7  j                  |      S r  )r   )r  r  s     r*  r:   r:   T  s     AI??3r,  c                      t        j                   j                         dk(  xr j                         dk(   fd        fd}t        j                   j                         j                         k(  |       y )NrA  c                  N    dj                          d j                          dS )Nz1D tensors expected, but got zD and z	D tensorsr  r  r  s   r*  r@  z_dot_check.<locals>.<lambda>]  s!    /
|6%))+iXr,  c            	          dj                          d j                          dj                          d j                          d	S )Nz+inconsistent tensor size, expected tensor [z] and src [z.] to have thesame number of elements, but got rt  z elements respectively)r  r(  s   r*  numel_errorz_dot_check.<locals>.numel_error`  sL    9$**,{SXS^S^S`Ra b004

~U5;;=/Qgi	
r,  )r  r  r  r  )r  r  r*  s   `` r*  
_dot_checkr+  Z  sU    	LL
a,EIIK1,X

 
LL.<r,  r  c                    | j                         r| j                         rt|j                         r@t        j                  | j	                         |j	                               j	                         S t        j
                  | j	                         |      S |j                         r$t        j
                  |j	                         |       S t        | |       | |z  j                         S r7  )r   is_conjr  r   r   r   r+  r   r  s     r*  r   r   i  s     <<>}}yyejjl;@@BBzz$))+u55]]_::ejjlD11tU5Lr,  c                    | j                         st        j                  | |      S | j                         rf|j                         r2t        j                  |j                         | j                               S t        j                  | j                         |      S |j                         r2t        j                  | |j                               j                         S t        | |       | j                         |z  j                         S r7  )	r   r  r   r-  r   r   r+  r7   r   r  s     r*  r   r   }  s     ??yyu%%||~==?::ejjlDIIK8899TYY[%00	yyuzz|,1133tU 5(--//r,  c                 V    t        | t        j                  t        j                  f      S r7  )r0  r  TypedStorageUntypedStorage)objs    r*  
_isStorager3    s     cE..0D0DEFFr,  c                    d}t        |       }g }t        | t        t        f      rt	        |       }|r||j
                  z  }|j                  |       t	        |      |kD  r"t        dt        |       j                   d      |dk(  r	 |S 	 | d   }|} t        | t        t        f      r|S # t        $ r# t        dt        |       j                   d      w xY w)N   ztoo many dimensions 'r  r   z.could not determine the shape of object type ')r3  r0  r  rG  rD  itemsizer  rL  r'  rr  r  )seqscalar_typeMAX_DIMS
is_storager  r  handles          r*  _compute_sizesr<    s    HCJE
S4-
(S{+++FVu: 4T#Y5G5G4HJKKQ; L	VF
  S4-
(" L  	@cASAS@TTUV 	s   B, ,,Cc                    t        | t              rt        j                         S t        | t              r t        | t
              st        j                  S t        | t
              rt        j
                  S t        | t              rct        j                         }|t        j                  u rt        j                  S |t        j                  u rt        j                  S t        d      t        | t        j                        r| j                  S t        | t              r"t!        dt#        |       j$                   d      t        | t&        t(        f      rzd }t+        |       }|dk(  rt        j                         S t-        |      D ]D  }| |   }	 t/        |      }|t        j0                  ||      }n|}|t        j                  u sB|c S  |S t        dt#        |       j$                         )Nz'invalid default scalar type for complexznew(): invalid data type 'r  r   zCould not infer dtype of )r0  r   r  r}  r   r  r  r  r  cfloatdoublecdoublerM  r+  r  r]  	TypeErrorr'  rr  r  rG  rD  rK  _infer_scalar_typepromote_types)r2  default_dtype
scalarTyper  r  cur_itemitem_scalarTypes          r*  rB  rB    s   #y!&&((#w
3(={{#tzz#w//1EKK'<<ell*== HII#u||$yy#s4T#Y5G5G4HJKK#e}%
S Q;**,,vA1vH 1:O%"00_M
,
U]]* "!   
2493E3E2FG
HHr,  c                 $   t        |       }||k  sJ ||k(  rt        j                  ||      S | |   }|}t        |      }||k7  rt        d| d| d| d      t        j                  |D cg c]  }t        | |dz   ||       c}      S c c}w )Nr  zexpected sequence of length z at dim z (got r  rA  )rD  r  r  rL  r   _recursive_build)	r  r  rE  r2  r  r  r7  seq_sizer   s	            r*  rI  rI  G  s    u:D$;;
d{""3j99c
A
C3xH1}*1#XcU&
!L
 	
 ;;HKL	%q*d	;L Ls   .Bc                     t        |t        j                        rat        j                  | d        |}|r|j	                         }|r|j
                  n|}	||n|j                  }
|j                  |
|	d|      S t        |d      rt        S ||n| d   }
t        ||      }|rt        |      n|}	t        |      rt        S t        j                  |
      j                  dk(  rt        S t        |d|	|      }|j                  |
|	dd      }|S )	Nc                       y)Nz,Can't pin tensor constructed from a variabler>  r>  r,  r*  r@  z)_internal_new_from_data.<locals>.<lambda>e  s    $Rr,  F)r)  r  r  r  __cuda_array_interface__r)  metar   )r  r  )r0  r  r+  r  detachr  r)  r   hasattrNotImplementedr<  rB  r3  r'  rI  )optionsr8  
device_optdatacopy_variables
copy_numpytype_inferencer  r   inferred_scalar_typer)  r  r  s                r*  _internal_new_from_datarY  Y  s    $%NR	
 **,C,:syy)53::vv&	  
 	
 t/0 &1Zwx7HF4-E7E-d3; $<<$$.!! "%,@$G6#7eRWX Mr,  )r  r)  r  r  c          
         t        | t        j                        rt        j                  d       |d u }t        ddi||nt        j                         || dd||      }|j                          |j                  |       |S )NzTo copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor)r)  rQ  T)rU  rV  rW  r  )	r0  r  r+  rC  rD  rY  r}  detach_rN  )rT  r  r)  r  r  rW  
new_tensors          r*  r  r    s    $%l	
 d]N( 
5"(?(?(A%J m,r,  r7  )F)r  NN)gh㈵>g:0yE>F)NN)NNNNNFF)FFN)NF)NNFr  )r   rF  )NNNTreflectFNN)NNNTFNNF)rA  r  )r   r   rA  )r   r3  rF  )r   NrA  )
   )r  rI  )r  NF)r   rA  Nr  )rA  r  N(  r  r_  r{  r!  r  r>  rC  collections.abcr   enumr   	functoolsr   r   r   r   typingr	   r
   r   r   r   r   r   r   r   r  torch._prims_primsr  torch._prims_common_prims_commonrZ  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   torch._prims_common.wrappersr(   r)   r*   r+   r,   r-   r  r+  _CDispatchKey_opsopsr  r+  r4  rS  ra  torch._decomprb  objectrp  ru  r  r  r0  r.   INT_TO_FLOATr/   r0   r2   r1   r3   r4   DEFAULTr5   r6   r   r7   r8   r9   r<   r=   r>   r?   r@   rA   rC   	NO_OPMATHrD   rE   r  rF   rG   r   ALWAYS_BOOLrO   rP   rQ   rR   rS   specialmultigammalnr^   rT   
special_i0rU   rW   rX   rY   rZ   r[   rX  r  r]   r   r  ra   r  rb   rc   r   re   rf   r   rg   rh   ri   rj   rk   rl   rm   ro   BOOL_TO_LONGrp   rq   rr   rt   r   r.  ru   rv   rw   rx   ry   rz   r{   r~   r   r]  r   r   r   r   rU  rT  r   r   r   r   r   r   r   r   r   r   r  ry  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r   r   r  r  r   r   r  r  r  registerr)  r  r  r  r  r  r  r   r  r  r   r  r   re  r   dim_IntListIntList_outr   r   r   r   r+  r   r   r   r   r   r   r   re  r   r   r   r   r   r   r   py_implCompositeImplicitAutogradMetar   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r!  r"  r	  r#  r[  r   r{  r   r   r   rG  r   r  r   rn   r   r   r   r  rJ   rK   rM   rN   r  rI   rL   r   r  r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r
  r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r  r	  r  
start_step	start_outrV   r  r  r   r   r  r  r  r  r  r  r  r  r  r   r   r  r  r_   rs   r  r   r   r   r  r  r  r  r  r  r  r  r  r  rB   rH   r\   r`   r  rd   r;   r:   r+  r   r   abs_acos_acosh_add_addcmul_addcdiv_asin_asinh_atan_atanh_atan2_bitwise_and_bitwise_left_shift_bitwise_not_bitwise_or_bitwise_right_shift_bitwise_xor_ceil_clamp_
clamp_min_
clamp_max_conj_physical_	copysign_cos_cosh_cumsum_cumprod_deg2rad_digamma_div_eq_erf_erfc_erfinv_exp_exp2_expm1_float_power_floor_floor_divide_fmod_frac_gcd_ge_gt_
heaviside_hypot_igamma_igammac_i0_lcm_le_lerp_lgamma_log10_log1p_log2_log_logical_and_logical_not_logical_or_logical_xor_lt_mul_	mvlgamma_nan_to_num_ne_neg_
nextafter_pow_rad2deg_reciprocal_
remainder_rsqrt_sgn_sigmoid_sign_sin_sinc_sinh_sqrt_square_sub_tan_tanh_tril_triu_true_divide_trunc_xlogy_cauchy_exponential_
geometric_log_normal_zero_r3  r<  rB  rI  rY  r  torch._refs._conversionstorch._refs.ffttorch._refs.linalgtorch._refs.nn.functionaltorch._refs.specialr>  r,  r*  <module>r     sM          $  < < X X X   # $     , `D	 
hh""zz~~#L 9= C8 1  	
 B 2 ##B#S#ST U ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#J#JK  L  ##B#J#JK L (/n / )/ **+& &  ,& ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q #7AA	 N 	 : 	 . 	 	 
	 ^ J >  		"# #> #  ## ##B#J#JK L ##B#J#JK!N !~ ! L!N ~  ##//* *> *	* ##B#N#NO1^ 1 1 P1 ##B#N#NO1 1> 1 P1 ##B#N#NO1 1> 1 P1 ##B#N#NO^   P
 u}}11:> ##//0n 0 0	0 ##00$// ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q
  $(XX	X EKK X 	X X '#!7DD
 :?,
,',26,,	  (, ( !$#'#'		*	 Z  Z 	
   )4  ##++	 > N ~  ##B#O#OP Q
 ##++	 ##B#O#OP Q ##B#O#OP/~ /. / Q/ ##B#J#JK L ##B#J#JK L ##B#N#NO P ##B#O#OP Q ##B#O#OP4 Q4
 ##B#O#OP Q ##B#O#OP Q ##00n  	 ##B#O#OP Q ##B#O#OP Q ##B#J#JK L
!. !^ !L 	## %"&6 6t !#"7?? #'	8^Z'(8^Z'(8 J	8	  "8: $7DD$$

 $7??#> #n # ## $7??". "^ " "" $7??". "^ " "" $7??.> .n . .. $7??#> #n # ## $7DD$
2^Z'(
2-2>:3M-N
2	
2  !
 $(	^Z'(^Z'( C=	  "( $7CC$. ^  	 $7DD^Z'(^Z'( 4 ^Z'(^Z'(  l $==EE $"'
O^Z'(O-2>:3M-NO
O<FV F F6 F16 1f 1 12 $7??$$
N ~ . 
 $7??$$
N ~ . 
 $7??$#
N ~ . 
 $7??$$
> n  
 $7CC$. ^  	 $7CC$. ^  	 $7??$$
^ ^  
 $7??$$
^  > 
 $7DD$$
n  N 
 $7DD$$
~ . ^ 

  	
  
2 ((( ( 	(
 ( (V $7??$$
Q> Qn Q
Q  $7CC$. ^  	 $7??$$
T TN T~ T
T0 $7??$$
,. ,^ , ,
, $7CC> n  ##B#N#NO>  P $7CC. ^  $7CC> n  $7CC$. ^  	 $7??~ . ^  $7??~ . ^  $7?? $> n  	 $7CC$. ^  	 $7AA$$
! !N !~ !
! $7??! !N !~ !! #'		"^Z'(	"^Z'(	" J		" !#"7?? #'	8^Z'(8^Z'(8 J	8	  "8< $7DD	 $	> n   

##"7DD:U>:-. :59S3T :	  $:& $==EE $
"^Z'("-2>:3M-N"
" %#67DD ,
,, ,
 , ,	  &,* %#67?? ,
,, ,
 , ,	  &,* 

##+7?? -1,0	(	) 
(	) 		  $4 ' -1&
&	(	)& &  (& ' -1&
&	(	)& &  (& 

##"7AA +/*.#
#&'# &'#	  $#. 

#?D?T?T).)<)<  $ 9= v &  		"&N &z & #& (,#'%)37!&^$ EKK  4.	
 U\\" E//0   
2    37LL;;  	
 E//0 
#s(^ "  37;;  	
 E//0 
#s(^ "  37	;;  E//0	
 
#s(^   37	  E//0	
 
#s(^ ."& "T "0. n V "##' <<
< 	<
 < 8
< < EKK < 
&	< 2< <~( 
 ! #

	(	
 
 	
  "
 
 ! #	(	  	  "$ --txx/C/CDE 6:
 $( 	x}htCy11	2 
 EKK  
&	  F:CC C, 		" 6:
  	x}htCy11	2  
&	  #: 		" #
 !	(	 
 
&	  #. 		" #
 !	(	 
 
&	  #. ! ##	 (,	(	 tn 	 $   "6 ! 6:#	1 (,11	x}htCy11	21 tn1 	1 $1 1  "1* 		" #/
 //	(	/ / / #/d &VV #  $'+	(	 tn	
  $  '0 &VV ##	 (,	(	 tn 	 $  ' 		"#07?? /A
/A
/A /A
 /A /A /A	  #/Af
+	~x77	8
+AO
+
>5!4556
+   # *8  +	~x77	8+AO+
>5!4556++	~x77	8+AO+
>5!4556+$ %)		A	A
	A 	A SM		A
 	A //0 %)RR	R R 	R
 SMR R  1R2 2 ''(M(MN''(8(89O4#7 O : OO1N 1) 1 1 !#$7AA3G# 3G# 3Gn 3G	  "3Gn #, # # # >  ,,-?@HH $S	H2<HH  .HX 8=7N7N77!&!4!477 #& #> # # $f   %B F v ^ S s 5QTAT;U 01~ 1# 1C 1 1$ 		"N "2 ~   #n  n  BBB(-c>.A(BBLOBB> #6*").
666!"<> tCy ^  ..66711V1 6
1 	1
 1 1 1 
1 666!"1 81h ../VVV$AAA VA 6
	A
 
A 666!"A % 0AL %,~ , , &, $#.#.,#.36#.AO#.#.  %#.N +??@ !% $##%)g?g?g? g? 	g?
 Vg? g? g? g? tng? TNg? g? Ag?V KAAB !% $## VVV V 	V
 VV V V tnV SMV V CVt",9<DGOR8 $51f 51 51  %51piN i i i`<~ <y <^ <
&^ &N &~ & 		":?'/$/$'/$/7/$/$  #/$d 

#<B???)9??  $?<
!3 
 
 

#G% GC G G  $G   $(	 EKK  	 & #& #> # # #& #> # #S Sc S) S S $
n 
3 
/A 
 %
 * 3 z :  
: 
C 

 
J 
 (<<<$.<7<Z=S7T<  )< (();;;$.;7<Z=S7T; *;++	+ + Z'(	+ +\  	  	   ))*J S    +" ))*~ HX$6 .  +> EEvx/0E 
E >3	ER&-&-,4&-
>3&-T$+$+,4$+
>3$+N 		& 1
11 1  '1 --. 	  	
    /$ & 	&
&& & 	&
 & '&R %X. ( 	535353 53 	53
 53  )53r
(n 
( 
(5G 
( '9 9 (9$	 	N 	 

#^   $ '	* 	*s 	*# 	*. 	* (	* 	 $+
+%(+03+;>++ %+ (()n  C s   * $( 9 9 
	9 EKK 9 
&	9 90 $
 $( TT	T EKK 	T
 
&	T T %T %
 $( UU	U EKK 	U
 
&	U U &U '3 3c 3n 3 (3 		))*=N =I =. = +=
#. # #N #
^   AE!D||!D#ll!D19#!D
\\!D !DH  $( =='+).)@)@#EKK # LL# ^$	#
 # # &&# # #L  $( =='+ EKK  LL	
 ^$    $ '
 $(%)'+
 EKK 	
 U\\" ^$    (, ../ $(%)'+
 
 EKK  U\\" ^$    08 

**+ $( =='+EKK  LL ^$	
     ,0 '
 $(%)'+
 EKK 	
 U\\" ^$     (2 		))* $( =='+EKK  LL ^$	
     +0 &
 $(%)'+
 EKK 	
 U\\" ^$     '2 & $(%)'+
 
 EKK  U\\" ^$    '0 ( $('+%)).)>)>&& EKK & ^$	&
 U\\"& & & &&& &  )&R //1F1FGH $\
 $( =='+\\	*	\ \
 EKK \ LL\ ^$\ \ \ \  I\~ 		"#27??8 8V 8U6:3E-F 8	  #82 & $('+ ==T/^+,T/	z>)	*T/ T/
 EKK T/ ^$T/ LLT/ T/ T/ T/  'T/n &
 	8@ $('+ ==8@^+,8@	z>)	*8@ 8@ 	8@ EKK 8@ ^$8@ LL8@ 8@ 8@ 8@  '8@v 
	h~. 	# 	 
	 
	~ 	 	 
	 &>ND$8%:OOP>> 
.> '>D;;#''(; s,,-; 	;~ **+
 $('+ ==E),,- EKK 	
 ^$ LL     ,6 ! ") $( =='+")
")}") EKK 	")
 LL") ^$") ") ") ")  "")P **DIIMM:;
 $( =='+%%% EKK 	%
 LL% ^$% % % %  <%> $(%)'+).)>)> EKK 	
 U\\" ^$   && . ( $(%)'+).)>)> EKK  U\\"	
 ^$   &&   ), ' $(%)'+).)>)> EKK  U\\"	
 ^$   &&   (, 

**+ $('+%)EKK  ^$ U\\"	
     ,8 $( =='+>> EKK > LL	>
 ^$> > >, $'$'XX	tS%	 X c5 
!X
 ;;X X X* (()%> % %@V %  *%P ))*+4J +   	
  
"^  4 & 		" &+"	M $(MMeSj!"M 
(	M 	M EKK M M  #M2 

#* *> *  $* [)l+	 		"3N 3c 3. 3  #3 		"3N 3c 3. 3  #3(7 73 7 7c3m8L 7$
	 
 ;;	
 LL " ))* "
  ==""	"	" "
 ;;" LL" " " "  +"R7 73 7 7c3m8L 7" ))* &
  =="&	&	& &
 ;;& LL& & & &  +&R '
 6%6%6% 	6%
 6%  (6%r $#!7??O	  %O  (()#!7??;	  *;  '#!7??Q	  (Q (#!7??:	  ):" $# 8?? 
		1'
 
1'  %1'h %Hd H &H ##B#O#OP.  Q ##B#O#OP.  Q **+ Xh/    , = !#)7?? 	  "  		"#)7??0	  #0$ Sd	u	S!!d	u	d	u		u	[)#$67 [)J'$%89 [)d	u	9%
9%
}-(#	Sd

!!!SBSd

Sd	u	[)	u	l+ddSBB9%
	u	

!BSBd

	u		u	dS[)[)J'[)BS(#	J'BS9%
S!J'9%
	u	S!dSddd

SSddd[)	u		u	

[)9%
J'dG
4,Ib4 6t tU F       r,  