Ë
    P/æjÉ¢ ã            !       óFs  — U d dl Z d dlZd dlZd dlZd dlZd dlmZ d dl mZmZ 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 d dlZd dlZd dlmZ d dlmZ d dlmc mZ d dlm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z& d d	lm'Z'm(Z(m)Z)m*Z*m+Z+ d d
l,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z3 d dl4m5Z5 ejl                  jn                  Z7g Z8ee9   e:d<   ejv                  jx                  jz                  Z= G d„ de«      Z>	 �d™dedej~                  de@fd„ZA eeAej~                  j„                  d¬«      ZC eeAej~                  j„                  ¬«      ZD eeAej~                  jŠ                  ¬«      ZFde"deGde"fd„ZH e$e=j’                  «       e0d«      eDde"de"fd„«       «       «       ZI e$e=j”                  «       e0d«      eDde"de"fd „«       «       «       ZJ e$e=j–                  «       e0d«      eDde"de"d!eLd"eLfd#„«       «       «       ZK e$e=jš                  «       e0d«      eDd$e"d%eLd&eLd'eLd(e@d)e"fd*„«       «       «       ZM e$e=jœ                  jž                  g«      d+„ «       ZP e$e=jœ                  jD                  g«      d,e"fd-„«       ZQ e$e=j¤                  «       e0«       eDd.e"de"fd/„«       «       «       ZR e$e=j¦                  «       e0d«      eDd$e"d.e"fd0„«       «       «       ZS e$e=j¨                  «       e0d«      d$e"d.e"d1eLd2eLfd3„«       «       ZT e$e=jª                  «       e0«       eDd.e"de"fd4„«       «       «       ZU e$e=j¬                  «       e0«       eDd$e"d.e"de"fd5„«       «       «       ZV e$e=j®                  «       e0d«      d$e"d.e"d"eLfd6„«       «       ZW e$e=j°                  «       e0d«      eDd$e"d.e"d7eLd8e@fd9„«       «       «       ZX e$e=j²                  «       e0d«      eD�dšd:e"d.e"d;e9fd<„«       «       «       ZY e$e=j´                  «      eDd$e"d=e"fd>„«       «       ZZ e$e=j¶                  «       e0«       eDd.e"de"fd?„«       «       «       Z[ e$e=j¸                  «       e0d«      eDd$e"d.e"de"fd@„«       «       «       Z\ e$e=jº                  «      d.e"dAe"de"fdB„«       Z] e$e=j¼                  «      d$e"d.e"dAe"dee"e"f   fdC„«       Z^ e$e=j¾                  «      e=j¾                  jÀ                  jÃ                  e7jÄ                  «       e0«       eD	 	 	 	 �d›d.e"dDe"dEeLdFeLdGe@dHeejÆ                     de"fdI„«       «       «       «       Z_ e$e=jÈ                  «      e=jÈ                  jÀ                  jÃ                  e7jÄ                  «      eD	 	 	 	 �d›d.e"dDe"dEeLdFeLdGe@dHeejÆ                     de"fdJ„«       «       «       Zd e$e=jÊ                  «       e0«       eDd$e"d.e"dDe"dEeLdFeLdGe@d8e@de"fdK„«       «       «       Ze e$e=jÌ                  «       e0d«      eDd$e"d.e"dLe"de"fdM„«       «       «       ZfdNe"dOeGfdP„ZgdQejÐ                  fdR„Zi e$e=jÔ                  «       e0«       eDe>jÖ                  jØ                  fd.e"dSe"dOeGde"fdT„«       «       «       Zj e$e=jÚ                  «       e0d«      eDd$e"d=e"dSe"dOeGfdU„«       «       «       Zm e$e=jÜ                  «      �dœdV„«       Zo e$e=jà                  «       e0«       eDe>jÖ                  jØ                  dWfd.e"dSe"dOeGd!eLfdX„«       «       «       Zp e$e=jâ                  jÀ                  «      eDd$e"d.e"dSe"dOeGd!eLf
dY„«       «       Zq e$e=jâ                  jä                  «      eDd$e"d.e"dSe"dOeGd!eLde"fdZ„«       «       Zs e$e=jè                  jÀ                  «      eDd$e"d.e"dSe"dOeGd[eLf
d\„«       «       Zt e$e=jè                  jê                  «      eDd$e"d.e"dSe"dOeGd[eLde"fd]„«       «       Zvd$e"d.e"dSe"dAee"   dOeGd^eGd_e"de"fd`„Zw e$e=jð                  «       e0d«      eDd$e"d.e"deGde"fda„«       «       «       Zx e$e=jò                  «       e0d«      d$e"d.e"dSe"dAee"   dOeGd^eGd_e"de"fdb„«       «       Zy e$e=jô                  «       e0d«      d$e"d.e"dSe"dAee"   dOeGd^eGd_e"de"fdc„«       «       Zz e$e=jö                  «       e0«       eDde>jÖ                  jØ                  fd.e"dSe"dAee"   dOeGde"f
dd„«       «       «       Z{ e$e=jø                  «       e0d«      eDde>jÖ                  jØ                  fd$e"d.e"dSe"dAee"   dOeGde"fde„«       «       «       Z| e$e=jú                  «       e0«       eDe>jÖ                  jØ                  fd=e"dSe"dOeGde"fdf„«       «       «       Z} e$e=jü                  «       e0d«      eDe>jÖ                  jØ                  fd$e"d.e"dSe"dOeGde"f
dg„«       «       «       Z~ e$e=jþ                  «       e0«       �d�d=e"dhe"dieLfdj„«       «       Z e$e=�j                   «       e0«       dke"dle"de"fdm„«       «       Z€ e$e=�j                  «       e0«       d$e"dneeG   deGdoeGdpeGdqeGfdr„«       «       Z� e$e=�j                  jD                  «      	 	 	 	 �džd.e"deGdoeeG   dpeeG   dqeGf
dt„«       Zƒde"deGdoeeG   dpeeG   deeGeGf   f
du„Z„ e$e=�j
                  «       e0«       	 	 	 	 �džd=e"dve"deGdoeeG   dpeeG   dqeGfdw„«       «       Z… e$e=�j                  «       e0«       d$e"dneeG   deGdxeGfdy„«       «       Z† e$e=�j                  «       e0«       d$e"dneeG   dzeGd{eGd|eGf
d}„«       «       Z‡d$e"de"d~ejÐ                  fd„Zˆ e$e=�j                  «       e0d«      eCd$e"d€e"deGd~ejÐ                  fd�„«       «       «       Z‰ e$e=�j                  «       e0«       eCd$e"d€e"deGd~ejÐ                  fd‚„«       «       «       ZŠdƒ„ Z‹ e$e=�j                  «       e0«       d=e"d„eeG   d…eeG   d†eeG   d‡eeG   de"fdˆ„«       «       ZŒ e$e=�j                  «       e0«       eDd=e"d‰eeG   d„eeG   d…eeG   d†eeG   d‡eeG   de"fdŠ„«       «       «       Z� e$e=�j                  «       e0«       d$e"d‹e"d&eLfdŒ„«       «       ZŽ e$e=�j                  «       e0«       d:e"d�eeG   dŽeGd�eGdqeGde"fd�„«       «       Z� e$e=�j                   jÀ                  «      eD	 �dœd$e"d.e"d‘eeL   de"fd’„«       «       Z� e$e=�j"                  «      e=�j"                  jÀ                  jÃ                  e7�j$                  «      e=�j"                  jÀ                  jÃ                  e7�j&                  «      d=e"dieLd“ee@   fd”„«       «       «       Z‘ e$e=�j(                  «       e0d•d–«      d=e"dieLd“ee@   fd—„«       «       Z” e$e=�j*                  «       e0«       de"deGd˜e@fd™„«       «       Z• e$e=�j,                  «       e0«       de"deGd˜e@fdš„«       «       Z– e$e=�j.                  «       e0«       	 	 	 �dŸdAe"d›e"dœeGd�e@dže@de"fdŸ„«       «       Z— e$e=�j0                  «       e0«       d$e"d›e"d eGdœeGd�e@f
d¡„«       «       Z˜deeG   fd¢„Z™d£ee"   deGd¤eGdee"   fd¥„Zšd£ee"   fd¦„Z›d£ee"   deGfd§„Zœd£ee"   deGd¤eGfd¨„Z� e$e=�j<                  jÀ                  e=�j<                  jê                  g«      	 �dœd£ee"   deGd¤eGd©ee"   de"f
dª„«       Zž e$e=�j>                  «      	 �d d.e"d«eeG   deGdee"   fd¬„«       ZŸ e$e=�j@                  jÀ                  e=�j@                  jê                  g«      	 	 �d¡d.e"d«eeG   deGd©eee"      deee"      f
d­„«       Z  e$e=�jB                  jD                  «      �d d=e"d®eGdeGdee"d¯f   fd°„«       Z¡ e$e=�jD                  jÀ                  «      	 �d d=e"d«eeG   deGdee"d¯f   fd±„«       Z¢ e$e=�jF                  jD                  «      �d d.e"d®eGdeGdee"d¯f   fd²„«       Z£e=�jH                  �jJ                  jÃ                  e7�j$                  «      	 �d d.e"d³e"deGdee"d¯f   fd´„«       Z¦ e$e=�jN                  «       e0«       eD�d¢d.e"dµe"d¶e"d!eGd%eGf
d·„«       «       «       Z§ e$e=�jP                  «       e0«       eD	 	 	 �d£d.e"dµe"d¶e"d!eGd%eGd¸e@fd¹„«       «       «       Z¨ e$e=�jR                  «       e0«       eD�d¢d.e"dµe"dºe"d!eGd%eGf
d»„«       «       «       Z© e$e=�jT                  jÀ                  «      eDd$e"d=e"d¼e"d½e"d¾ee"   d¿eGdÀeGdÁeGdÂeGdÃee@   deee"   ee"   ee"   f   fdÄ„«       «       Zª e$e=�jT                  jê                  «      d$e"d=e"d¼e"d½e"d¾ee"   d¿eGdÀeGdÁeGdÂeGdÃee@   d•ejD                  d–ejD                  dÅejD                  deee"   ee"   ee"   f   fdÆ„«       Z«dee"   dee"   fdÇ„Z¬ e$e=�jZ                  jÀ                  «      dÈe"d=e"dÉeeG   d¼e"d½e"dAee"   dÊee"   dÃee@   deee"   ee"   ee"   f   fdË„«       Z­ e$e=�jZ                  jê                  «      dÈe"d=e"dÉeeG   d¼e"d½e"dAee"   dÊee"   dÃee@   d•ejD                  d–ejD                  dÅejD                  deee"   ee"   ee"   f   fdÌ„«       Z®d=e"dAee"   dÊee"   dÍee"   dÎee"   dGe@dÏeLd‘eLdÐe@dee"e"e"ee"   ee"   f   fdÑ„Z¯ e$e=�j`                  «       e0d©dÒdÓ«      d=e"dAee"   dÊee"   dÍee"   dÎee"   dGe@dÏeLd‘eLdee"e"e"f   fdÔ„«       «       Z°e=�j`                  jÀ                  jÃ                  e7�j&                  «      e=�j`                  jÀ                  jÃ                  e7�j$                  «      d=e"dAee"   dÊee"   dÍee"   dÎee"   dGe@dÏeLd‘eLdee"e"e"f   fdÕ„«       «       Z±e=�jd                  jÀ                  jÃ                  e7�j$                  «      �d dee"   fdÖ„«       Z³ e$e=�jh                  jÀ                  «      d=e"dAee"   dÊee"   dÍe"dÎe"dÏeLd‘eLdee"e"e"f   fd×„«       Z´ e$e=�jj                  jÀ                  «      d=e"dAee"   dÊee"   dÍe"dÎe"dGe@dÏeLd‘eLdee"e"e"f   fdØ„«       Zµ e$e=�jj                  �jl                  «      d=e"dAee"   dÊee"   dGe@dÏeLd‘eLdee"e"e"f   fdÙ„«       Z· e$e=�jp                  jÀ                  «      d=e"dAee"   dÊee"   dÍe"dÎe"dGe@dÏeLd‘eLdee"e"e"e"e"f   fdÚ„«       Z¸d=e"dAee"   dÊee"   dÍe"dÎe"d‘eLdGe@de"fdÛ„Z¹ e$e=�jt                  jÀ                  «      d=e"dAee"   dÊee"   dÍe"dÎe"dÏeLd‘eLdee"e"e"e"f   fdÜ„«       Zº e$e=�jv                  jÀ                  «      d=e"dAee"   dÊee"   dÍe"dÎe"dÏeLd‘eLdee"e"e"e"e"e"f   fdÝ„«       Z» e$e=�jx                  jÀ                  «      d=e"dAee"   dÊee"   dÍe"dÎe"dÏeLd‘eLdee"e"e"e"f   fdÞ„«       Z¼ e$e=�jz                  «       e0d•d–«      eD�dœdß„«       «       «       Z¾ e$e=�j~                  «       e0«       dddddddàœdee"e(f   dQeejÐ                     dáee�j€                     dâe@dãe@däee�j‚                     fdå„«       «       Z¿ e$e=�j„                  e=�j†                  e=�jˆ                  g«       e0«       dæ„ «       «       ZÅe=�jŒ                  jÀ                  jÃ                  e7�j&                  «       e$e=�jŒ                  «       e0d•d–dÅdç«      d=e"dAe"dÊee"   dÍee"   dÎee"   dGe@dèeLdéeLfdê„«       «       «       ZÆdë„ ZÇ e$e=�j�                  jÀ                  «      dÈe"d=e"dAee"   dÍee"   dÎee"   dÒee"   dÓee"   d“e@d‘eLdÃee@   dìe"dee"ee"   ee"   f   fdí„«       ZÈ e$e=�j’                  jÀ                  «      dÈe"d=e"dAee"   dÍee"   dÎee"   dÒee"   dÓee"   d“e@d‘eLdÃee@   dee"ee"   ee"   f   fdî„«       ZÉ e$e=�j’                  jê                  «      dÈe"d=e"dAee"   dÍee"   dÎee"   dÒee"   dÓee"   d“e@d‘eLdÃee@   d•ejD                  d–ejD                  dÅejD                  dee"ee"   ee"   f   fdï„«       ZÊ e$e=�j–                  «       e0d•d–dÅ«      d=e"d$e"dAe"dÍee"   dÎee"   dÒee"   dðee"   déeLfdñ„«       «       ZË e$e=�j˜                  «       e0d•d–dÅ«      d=e"d$e"dAe"dÍee"   dÎee"   dÒee"   dðee"   déeLdòe"fdó„«       «       ZÌ e$e=�jš                  «       e0«       eDd=e"d‰eeGeGf   fdô„«       «       «       ZÎ e$e=�jž                  «      dsdõœde*deGdxe*döe*d%e(f
d÷„«       ZÏ e$e=�j                   «       e0«       dsdõœde*deGdxe*döe*d%e(f
dø„«       «       ZÐdsdõœde*deGdxe*döe*dùe@d%e(fdú„ZÑ e$e=�j¤                  jÀ                  «      e=�j¤                  jÀ                  jÃ                  e7�j$                  «      �d¤dû„«       «       ZÒ e$e=�j¦                  «      de*deGdxe*döe*fdü„«       ZÓ e$e=�j¨                  «       e0«       de*deGdxe*döe*fdý„«       «       ZÔde*deGdxe*döe*dùe@f
dþ„ZÕ e$e=�j¬                  «       e0d€dL«      eDd.e"dee"e"f   fdÿ„«       «       «       ZÖ e$e=�j®                  «       e0«       	 	 	 �d¥de"�d ee@eGeLf   �dee@eGeLf   dHeejÆ                     f�d„«       «       Z× e$e=�j°                  «      �d¦�d„«       ZØ�d„ ZÙ�d„ ZÚ e$e=�j¶                  �j¸                  «       e$e=�jº                  �j¸                  «       e$e=�j¼                  �j¸                  «      e=�j¶                  �j¸                  jÃ                  e7�j$                  «      e=�j¶                  �j¸                  jÃ                  e7�j&                  «      e=�jº                  �j¸                  jÃ                  e7�j$                  «      e=�jº                  �j¸                  jÃ                  e7�j&                  «      e=�j¼                  �j¸                  jÃ                  e7�j$                  «      e=�j¼                  �j¸                  jÃ                  e7�j&                  «      d=e"d‰eeeG      �deeeL      de"f�d„«       «       «       «       «       «       «       «       «       Zß e$e=�jÀ                  �j¸                  «       e$e=�jÂ                  �j¸                  «       e$e=�jÄ                  �j¸                  «      e=�jÀ                  �j¸                  jÃ                  e7�j$                  «      e=�jÀ                  �j¸                  jÃ                  e7�j&                  «      e=�jÂ                  �j¸                  jÃ                  e7�j$                  «      e=�jÂ                  �j¸                  jÃ                  e7�j&                  «      e=�jÄ                  �j¸                  jÃ                  e7�j$                  «      e=�jÄ                  �j¸                  jÃ                  e7�j&                  «      d=e"d‰eeeG      �deeeL      de"f�d„«       «       «       «       «       «       «       «       «       Zã�d™�d	„Zä e$e=�j¶                  jÀ                  e=�j¶                  jê                  g«      e=�j¶                  jÀ                  jÃ                  e7�j$                  «      e=�j¶                  jÀ                  jÃ                  e7�j&                  «       e0dd�¬
«      	 �dœd=e"d‰eeG   �deeL   de"f�d„«       «       «       «       ZÛ e$e=�jÀ                  jÀ                  e=�jÀ                  jê                  g«      e=�jÀ                  jÀ                  jÃ                  e7�j$                  «      e=�jÀ                  jÀ                  jÃ                  e7�j&                  «       e0dd�¬
«      	 �dœd=e"d‰eeG   �deeL   de"f�d„«       «       «       «       Zå e$e=�jº                  jÀ                  e=�jº                  jê                  g«      e=�jº                  jÀ                  jÃ                  e7�j$                  «      e=�jº                  jÀ                  jÃ                  e7�j&                  «       e0dd�¬
«      	 	 �d§d=e"d‰eeG   �deeL   �deeL   de"f
�d„«       «       «       «       ZÝ e$e=�jÂ                  jÀ                  e=�jÂ                  jê                  g«      e=�jÂ                  jÀ                  jÃ                  e7�j$                  «      e=�jÂ                  jÀ                  jÃ                  e7�j&                  «       e0dd�¬
«      	 	 �d§d=e"d‰eeG   �deeL   �deeL   de"f
�d„«       «       «       «       Zá e$e=�j¼                  jÀ                  e=�j¼                  jê                  g«      e=�j¼                  jÀ                  jÃ                  e7�j$                  «      e=�j¼                  jÀ                  jÃ                  e7�j&                  «       e0dd�¬
«      	 	 	 �d¨d=e"d‰eeG   �deeL   �deeL   �deeL   de"f�d„«       «       «       «       ZÞ e$e=�jÄ                  jÀ                  e=�jÄ                  jê                  g«      e=�jÄ                  jÀ                  jÃ                  e7�j$                  «      e=�jÄ                  jÀ                  jÃ                  e7�j&                  «       e0dd�¬
«      	 	 	 �d¨d=e"d‰eeG   �deeL   �deeL   �deeL   de"f�d„«       «       «       «       ZâeD	 �d™d=e"d‰eeG   �deeeL      �de@de"f
�d„«       Zæ�d„ Zç�d„ Zè�d„ Zé�d„ Zê	 �d™�d„Zë�d„ Zì�d„ Zí�d™�d„Zî�d™�d„Zï�d „ Zð e$e=�jâ                  �jä                  «      e=�jâ                  �jä                  jÃ                  e7�j$                  «      e=�jâ                  �jä                  jÃ                  e7�j&                  «      �d!„ «       «       «       Zó e$e=�jè                  �jä                  «      e=�jè                  �jä                  jÃ                  e7�j$                  «      e=�jè                  �jä                  jÃ                  e7�j&                  «      �d"„ «       «       «       Zõ e$e=�jè                  �jì                  «      e=�jè                  �jì                  jÃ                  e7�j$                  «      e=�jè                  �jì                  jÃ                  e7�j&                  «      �d#„ «       «       «       Z÷ e$e=�jâ                  �jì                  «      e=�jâ                  �jì                  jÃ                  e7�j$                  «      e=�jâ                  �jì                  jÃ                  e7�j&                  «      �d$„ «       «       «       Zø�d%„ Zù�d™�d&„Zú�d™�d'„Zû�d(„ Zü e$e=�jú                  �jä                  «      e=�jú                  �jä                  jÃ                  e7�j$                  «      e=�jú                  �jä                  jÃ                  e7�j&                  «      �d)„ «       «       «       Zþ e$e=�jú                  �jì                  «      e=�jú                  �jì                  jÃ                  e7�j$                  «      e=�jú                  �jì                  jÃ                  e7�j&                  «      �d*„ «       «       «       Zÿ�d+„ �Z �d,„ �Z e$e=�j                  �jì                  «      e=�j                  �jì                  jÃ                  e7�j$                  «      e=�j                  �jì                  jÃ                  e7�j&                  «      �d-„ «       «       «       �Z e$e=�j                  �jä                  «      e=�j                  �jä                  jÃ                  e7�j$                  «      e=�j                  �jä                  jÃ                  e7�j&                  «      �d.„ «       «       «       �Z e$e=�j
                  �j¸                  «      e=�j
                  �j¸                  jÃ                  e7�j$                  «      e=�j
                  �j¸                  jÃ                  e7�j&                  «      �d/„ «       «       «       �Z e$e=�j                  �j¸                  «      e=�j                  �j¸                  jÃ                  e7�j$                  «      e=�j                  �j¸                  jÃ                  e7�j&                  «      �d0„ «       «       «       �Z e$e=�j                  �j¸                  «       e$e=�j                  �j¸                  «      e=�j                  �j¸                  jÃ                  e7�j$                  «      e=�j                  �j¸                  jÃ                  e7�j&                  «      e=�j                  �j¸                  jÃ                  e7�j$                  «      e=�j                  �j¸                  jÃ                  e7�j&                  «      e=�j                  �j¸                  jÃ                  e7�j$                  «      e=�j                  �j¸                  jÃ                  e7�j&                  «      �d1„ «       «       «       «       «       «       «       «       �Z e$e=�j                  jÀ                  e=�j                  jê                  g«       e0«       	 �dœd=e"d‰eeG   �d2e@�deeL   de"f
�d3„«       «       �Z e$e=�j                  jÀ                  e=�j                  jê                  g«      e=�j                  jÀ                  jÃ                  e7�j&                  «       e0«       	 	 �d§d=e"d‰eeG   �d2e@�deeL   �deeL   de"f�d4„«       «       «       �Z	 e$e=�j                  jÀ                  e=�j                  jê                  g«       e0«       	 	 	 �d¨d=e"d‰eeG   �d2e@�deeL   �deeL   �deeL   de"f�d5„«       «       �Z
�dœ�d6„�Z�d7„ �Zdvee"   �d8ee"   �d9e"de"f�d:„�Z�d8e+de"f�d;„�ZeDd=e"d‰eeG   �d2e@�deeeL      de"f
�d<„«       �Z e$e=�j$                  jÀ                  «      �d=e"�d>e"de@f�d?„«       �Z e$e=�j&                  e=�j(                  g«       e0«       �d@„ «       «       �Z e$e=�j*                  g«      �dA„ «       �Z e$e=�j,                  g«      �d™�dB„«       �Z e$e=�j.                  g«      �dC„ «       �Z e$e=�j0                  g«      �dD„ «       �Zd.e"dSe"dAee"   dOeGd^eGdee"e"f   f�dE„�Z e$e=�j4                  «       e0d€d_«      d.e"dSe"dAee"   dOeGd^eGdee"e"f   f�dF„«       «       �Z e$e=�j6                  «       e0d€d_«      d.e"dSe"dAee"   dOeGd^eGdee"e"f   f�dG„«       «       �Zde"�dHeLde"f�dI„�Zde"�dHeLde"f�dJ„�Z�dKe"de+f�dL„�Z�dMe+�dNe"de"f�dO„�Z�dNee"   de"f�dP„�Z �dQeG�d2e@dQejÐ                  dáe�j€                  f�dR„�Z!�dSe"�dTeG�dUeG�d2e@f�dV„�Z"�dSe"�dWeG�dTeG�dUeG�d2e@f
�dX„�Z#�dSe"d�eeG   �d2e@f�dY„�Z$�dSe"d�eeG   �d2e@f�dZ„�Z% e$e=�jL                  «       e0«       eD�dSe"d�eeG   �d2e@f�d[„«       «       «       �Z&	 	 	 	 �d©�d=e"�d\e"�d]eG�d^eG�d2e@�d_e@de"f�d`„�Z' e$e=�jP                  «       e0«       eD	 	 	 �dª�d=e"�d\e"�d]eG�d^eG�d2e@de"f�da„«       «       «       �Z( e$e=�jR                  «       e0«       eD�db„ «       «       «       �Z) e$e=�jT                  «       e0«       dde>jÖ                  jØ                  f�dc„«       «       �Z*�ddejD                  �deejD                  �dfe@de@f�dg„�Z+e=�jX                  jÀ                  jÃ                  e7�j$                  «      e=�jX                  jê                  jÃ                  e7�j$                  «       e0d�¬h«      d�diœ�dj„«       «       «       �Z, e$e=�jZ                  jÀ                  e=�jZ                  jê                  g«      e=�jZ                  jÀ                  jÃ                  e7�j&                  «       e0«       eD	 	 �d§d=e"d‰eeGeGf   �d2e@�dkeeL   �dleeL   de"f�dm„«       «       «       «       �Z. e$e=�jZ                  �j¸                  «      e=�jZ                  �j¸                  jÃ                  e7�j$                  «      e=�jZ                  �j¸                  jÃ                  e7�j&                  «       e0«       eD	 �dœ�d=e"d‰eeeGeGf      �d2e@�deeeLeLf      de"f
�dn„«       «       «       «       «       �Z/ e$e=�j`                  «       e$e=�jb                  «       e$e=�jd                  «      eD e0«       �d=e"d†eeGd¯f   de"f�do„«       «       «       «       «       �Z3 e$e=�jh                  «       e$e=�jj                  «       e$e=�jl                  «      eD e0«       �d=e"d†eeGd¯f   de"f�dp„«       «       «       «       «       �Z7�d=e"d†eeGd¯f   �dqeeGeGeGge"f   de"f�dr„�Z8 e$e=�jr                  «       e$e=�jt                  «       e$e=�jv                  «       e0d«      �ds„ «       «       «       «       �Z< e$e=�jz                  «       e0�dt�du«      dd�dvœ�dw„«       «       �Z= e$e=�j|                  «       e0«       �d«d�dxœ�dy„«       «       �Z> e$e=�j~                  jÀ                  e=�j~                  jê                  g«       e0«       de�j€                  dd�dzœdpe(dQeejÐ                     �d{e�j‚                  dáee�j€                     dâe@f
�d|„«       «       �ZB e$e=�j~                  �j†                  g«      de�j€                  dd�dzœdoe(dpe(dQeejÐ                     �d{e�j‚                  dáee�j€                     dâe@f�d}„«       �ZD e$e&«      �d~„ «       �ZE e$e=�jŒ                  «      e=�jŒ                  jÀ                  jÃ                  e7�j&                  «       e0«       dsdsde>jÖ                  jØ                  fd=e"dSe"die(�de(dAee"   dOeGde"f�d€„«       «       «       �ZF e$e=�jŽ                  «      e=�jŽ                  jÀ                  jÃ                  e7�j&                  «       e0d€�d�«      d=e"dSe"dOeGdee"e"f   f�d‚„«       «       «       �ZG e$e=�j�                  jÀ                  «      	 	 �d¬dd�dƒœ�d„e"�d…e"d,e"�d†eL�d‡e@�dˆee"   d&eeL   dee"e"f   f�d‰„«       �ZI�dŠ„ �ZJ e$e=�j–                  g«       e0«       eD�d¢�d‹„«       «       «       �ZK e$e=�j˜                  «       e0«       �dŒ„ «       «       �ZL e$e=�jš                  «      �d�„ «       �ZM e$e=�jœ                  jÀ                  e=�jœ                  jê                  g«      dd�dŽœd.e"dQeejÐ                     d©ee"   de"f�d�„«       �ZO e$e=�j                   jÀ                  e=�j                   �j¢                  g«      �dœd.e"deeG   f�d�„«       �ZR e$ejx                  jz                  �j¦                  «      �d �d‘„«       �ZS e$e=�j¨                  «       e0«       dd�d’œ�d“„«       «       �ZTd�d”œ�d•„�ZUdd�d’œ�d–„�ZV e$e=�j®                  «       e0«       �d—„ «       «       �ZW e$e=�j°                  «      �dœ�d˜„«       �ZX �eJe=�j²                  e=�j´                  «        �eJe=�j¶                  e=�jN                  «        �eJe=�j¸                  e=�jR                  «        �eJe=�jº                  e=�j–                  «        �eJe=�j¼                  e=jœ                  «        �eJe=�j¾                  e=�jÀ                  «        �eJe=�jÂ                  e=jª                  «        �eJe=�jÄ                  e=�jÆ                  «        �eJe=�jÈ                  e=j¤                  «        �eJe=�jÊ                  e=�jÌ                  «        �eJe=�jÎ                  e=�jÐ                  «        �eJe=�jÒ                  e=�jÔ                  «        �eJe=�jÖ                  e=�jØ                  «        �eJe=�jÚ                  e=�jÜ                  «        �eJe=�jÞ                  e=�jà                  «        �eJe=�jâ                  e=�jä                  «        �eJe=�jæ                  e=�jè                  «        �eJe=�jê                  e=�jì                  «        �eJe=�jî                  e=�jð                  «        �eJe=�jò                  e=�jô                  «        �eJe=�jö                  e=�jø                  «        �eJe=�jú                  e=�jü                  «        �eJe=�jþ                  e=�j                   «        �eJe=�j                  e=�j                  «        �eJe=�j                  e=j¶                  «       y(­  é    N)ÚEnum)ÚpartialÚreduce)ÚchainÚproduct)ÚAnyÚCallableÚcastÚIterableÚListÚOptionalÚTupleÚUnion)Ú	sym_floatÚsym_intÚTensor©Úregister_decomposition)Ú	out_dtype)ÚIntLikeÚ
NumberTypeÚsuggest_memory_formatÚ
TensorLikeÚTensorSequenceType)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_safe_copy_outÚout_wrapper)Ú_pytree)Útree_mapÚ__all__c                   ó   — e Zd ZdZdZdZy)Ú	Reductionr   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNONEÚMEANÚSUM© ó    ú_/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_decomp/decompositions.pyr#   r#   /   s   „ Ø€DØ€DØ
�Cr-   r#   FÚfÚtype_promotionÚcompute_dtype_onlyc                 óJ   ‡ ‡‡— t        j                  ‰ «      ˆˆ ˆfd„«       }|S )Nc                  ó  •‡‡— t        j                  | i |¤ŽD �cg c]  }t        |t        «      sŒ|‘Œ }}t	        j
                  |d‰iŽ\  ŠŠˆfd„}ˆfd„} ‰
t        || «      i t        ||«      ¤Ž}‰	r|S t        ||«      S c c}w )NÚtype_promotion_kindc                 óJ   •— t        | t        «      r| j                  ‰«      S | S ©N©Ú
isinstancer   Úto)ÚxÚcomputation_dtypes    €r.   Úincrease_precz0type_casts.<locals>.inner.<locals>.increase_precG   s"   ø€ Ü˜!œVÔ$Ø—t‘tÐ-Ó.Ð.à�r-   c                 óJ   •— t        | t        «      r| j                  ‰«      S | S r6   r7   )r:   Úresult_dtypes    €r.   Údecrease_precz0type_casts.<locals>.inner.<locals>.decrease_precM   s!   ø€ Ü˜!œVÔ$Ø—t‘t˜LÓ)Ð)à�r-   )ÚpytreeÚarg_tree_leavesr8   r   ÚutilsÚelementwise_dtypesr    )ÚargsÚkwargsr:   Ú	flat_argsr<   r?   Úrr;   r>   r1   r/   r0   s          @@€€€r.   Úinnerztype_casts.<locals>.inner=   sŸ   ú€ ô ×-Ñ-¨tÐ>°vÑ>ö
ØÄ*ÈQÔPVÕBWŠAð
ˆ	ð 
ô +0×*BÑ*BØð+
Ø,:ñ+
Ñ'Ð˜<ô
	ô	ñ Œx˜ tÓ,ÐP´¸ÈÓ0OÑPˆÙØˆHä˜M¨1Ó-Ð-ùò1
s
   ›B±B)Ú	functoolsÚwraps)r/   r0   r1   rH   s   ``` r.   Ú
type_castsrK   8   s'   ú€ ô
 ‡_�_�QÓõ.ó ð.ð6 €Lr-   T)r0   r1   )r0   r:   ÚdimÚreturnc                 ój   — t        || j                  «       z
  «      D ]  }| j                  d«      } Œ | S ©Néÿÿÿÿ)ÚrangerL   Ú	unsqueeze)r:   rL   Ú_s      r.   Ú_unsqueeze_to_dimrT   j   s2   € Ü�3˜Ÿ™›‘=Ó!ò ˆØ�K‰K˜‹O‰ðà€Hr-   Ú
grad_inputÚout_gradÚyc                 ó4   — | d||z  z
  j                  «       z  S ©Nr$   ©Úconj_physical©rV   rW   s     r.   Útanh_backwardr]   p   s    € ð �q˜1˜q™5‘y×/Ñ/Ó1Ñ1Ð1r-   c                 ó4   — | |d|z
  z  j                  «       z  S rY   rZ   r\   s     r.   Úsigmoid_backwardr_   w   s    € ð �q˜A ™E‘{×1Ñ1Ó3Ñ3Ð3r-   ÚbetaÚ	thresholdc                 ót   — ||z  j                  «       }t        j                  ||z  |kD  | | |z  |dz   z  «      S ©Nç      ð?)ÚexpÚtorchÚwhere)rV   r:   r`   ra   Úzs        r.   Úsoftplus_backwardri   ~   s=   € ð 
ˆT‰�‰Ó€AÜ�;‰;˜˜D™ IÑ-¨x¸ÀA¹ÈÈSÉÑ9QÓRÐRr-   Úgrad_outputÚalphaÚscaleÚinput_scaleÚ	is_resultÚself_or_resultc                 óÜ   — ||z  }|}|}|r&t        j                  |dk  | |z  ||z   z  | |z  «      S t        j                  |dk  | |z  |z  t        j                  ||z  «      z  | |z  «      S ©Nr   )rf   rg   re   )	rj   rk   rl   rm   rn   ro   ÚnegcoefÚposcoefÚ
negiptcoefs	            r.   Úelu_backwardru   †   s�   € ð �e‰m€GØ€GØ€JÙÜ�{‰{Ø˜aÑØ˜*Ñ$¨¸Ñ(@ÑAØ˜'Ñ!ó
ð 	
ô �{‰{Ø˜aÑØ˜*Ñ$ wÑ.´·±¸>ÈJÑ;VÓ1WÑWØ˜'Ñ!ó
ð 	
r-   c                 ó.   — t        j                  | |«      S r6   )rf   Ú	full_like©ÚselfÚvalues     r.   Úfill_scalarr{   ¢   s   € ä�?‰?˜4 Ó'Ð'r-   rz   c                 ó„   ‡— t        j                  ‰j                  «       dk(  ˆfd„«       t        j	                  | ‰«      S )Nr   c                  ó,   •— d‰ j                  «       › d�S )Nz@fill only supports 0-dimension value tensor but got tensor with z dimensions©rL   )rz   s   €r.   ú<lambda>zfill_tensor.<locals>.<lambda>«   s   ø€ ÐRÐSX×S\ÑS\ÓS^ÐR_Ð_jÐk€ r-   )rf   Ú_checkrL   ÚatenÚcopyrx   s    `r.   Úfill_tensorrƒ   §   s3   ø€ ä	‡L�LØ�	‰	‹�qÑÛkôô �9‰9�T˜5Ó!Ð!r-   ry   c                 óf   — t        j                  t        j                  | dz   d¬«      d¬«      dz  S ©Né   r   ©Úminé   ©Úmax©rf   Úclamp©ry   s    r.   Úhardsigmoidr�   °   s)   € ô �;‰;”u—{‘{ 4¨!¡8°Ô3¸Ô;¸aÑ?Ð?r-   c                 óH   — t        j                  |dkD  |dk  z  | dz  d«      S )Ng      Àg      @gUUUUUUÅ?ç        ©rf   rg   ©rj   ry   s     r.   Úhardsigmoid_backwardr”   ·   s0   € ô �;‰;Ø	�‰˜ ™Ñ$Ø�yÑ!Øóð r-   Úmin_valÚmax_valc                 óB   — t        j                  ||k  ||k\  z  d| «      S )Nr‘   r’   )rj   ry   r•   r–   s       r.   Úhardtanh_backwardr˜   Â   s$   € ô
 �;‰;˜ ™¨D°G©OÑ<¸cÀ;ÓOÐOr-   c                 ól   — | t        j                  t        j                  | dz   d¬«      d¬«      z  dz  S r…   rŒ   rŽ   s    r.   Ú	hardswishrš   Ê   s.   € ð ”%—+‘+œeŸk™k¨$°©(¸Ô:ÀÔBÑBÀQÑFÐFr-   c           
      óx   — t        j                  |dk  dt        j                  |dk  | |dz  dz   z  | «      «      S )Néýÿÿÿr‘   r†   ç      à?r’   r“   s     r.   Úhardswish_backwardrž   Ñ   sA   € ô �;‰;Øˆr‰	ØÜ�‰�D˜A‘I˜{¨t°a©x¸3Ñ.>Ñ?ÀÓMóð r-   c                 ó6   — t        j                  ||k  d| «      S rq   r’   )rj   ry   ra   s      r.   Úthreshold_backwardr    Ü   s   € ô �;‰;�t˜yÑ(¨!¨[Ó9Ð9r-   Únegative_slopeÚself_is_resultc                 ó<   — t        j                  |dkD  | | |z  «      S rq   r’   )rj   ry   r¡   r¢   s       r.   Úleaky_relu_backwardr¤   â   s    € ô �;‰;�t˜a‘x ¨k¸NÑ.JÓKÐKr-   ÚgradÚapproximatec                 óŒ  — d}d}d}|dk(  ri||z  dz  }d}||z  }||z  }	||||	z  z   z  }
t        j                  |
«      }d|z  }d|z   }d|z  }d||z  z
  }|dd|z  |z  z   z  }||z  |z  }| ||z   z  S |}||z  dz  }ddt        j                  ||z  «      z   z  }|t        j                  ||z  d	z  «      z  }| |||z  z   z  S )
NgÍ;fž ö?gÍ;fž æ?gm›BP×ò?Útanhr�   g÷Hmâä¦?r$   r†   g      à¿)rf   r¨   Úerfre   )r¥   ry   r¦   ÚM_SQRT2Ú	M_SQRT1_2Ú
M_2_SQRTPIÚkBetaÚkKappaÚx_sqÚx_cuberH   Ú
tanh_innerÚleftÚrightÚleft_derivativeÚtanh_derivativeÚinner_derivativeÚright_derivativeÚkAlphaÚcdfÚpdfs                        r.   Úgelu_backwardr»   ë   s'  € ð %€GØ&€IØ'€JØ�fÒØ˜*Ñ$ sÑ*ˆØˆØ�d‰{ˆØ˜‘ˆØ˜ ¨¡Ñ/Ñ0ˆÜ—Z‘Z Ó&ˆ
à�T‰zˆØ�J‘ˆà ™+ˆà˜j¨:Ñ5Ñ5ˆØ  A¨¨F©
°TÑ(9Ñ$9Ñ:ÐØ /Ñ1Ð4DÑDÐà�Ð)9Ñ9Ñ:Ð:àˆØ˜YÑ&¨Ñ,ˆØ�QœŸ™ 4¨&¡=Ó1Ñ1Ñ2ˆØ”e—i‘i  t¡¨dÑ 2Ó3Ñ3ˆØ�s˜T C™ZÑ'Ñ(Ð(r-   Úinputc                 ó¨   — t        j                  t        j                  |«      «      }t        j                  |«      }||z  d||z  z
  z  }| ||z   z  S rY   )rf   r¨   ÚFÚsoftplusÚsigmoid)rj   r¼   Úinput_tanh_softplusÚinput_sigmoidÚouts        r.   Úmish_backwardrÄ     sV   € ô  Ÿ*™*¤Q§Z¡Z°Ó%6Ó7ÐÜ—M‘M %Ó(€MØ
�-Ñ
 1Ð':Ð=PÑ'PÑ#PÑ
Q€CØÐ-°Ñ3Ñ4Ð4r-   c                 ó2   — | t        j                  | «      z  S r6   )rf   rÀ   rŽ   s    r.   ÚsilurÆ     s   € ð ”%—-‘- Ó%Ñ%Ð%r-   c                 ó\   — ddt        j                  | «      z   z  }| |z  d|d|z
  z  z   z  S rY   )rf   re   )rj   ry   rÀ   s      r.   Úsilu_backwardrÈ     s<   € ð �1”u—y‘y $ Ó'Ñ'Ñ(€GØ˜Ñ  A¨°°G±Ñ(<Ñ$<Ñ=Ð=r-   Úweightc                 ó<   — t        j                  | dkD  | || z  «      S rq   r’   )ry   rÉ   s     r.   Ú_prelu_kernelrË   $  s   € ä�;‰;�t˜a‘x  v°¡}Ó5Ð5r-   c                 ó~   — t        j                  |dkD  | || z  «      }t        j                  |dkD  d|| z  «      }||fS )Nr   r‘   r’   )rj   ry   rÉ   Ú
input_gradÚweight_grads        r.   Ú_prelu_kernel_backwardrÏ   )  sE   € ô —‘˜T A™X {°F¸[Ñ4HÓI€JÜ—+‘+˜d Q™h¨¨T°KÑ-?Ó@€KØ˜Ð$Ð$r-   ÚnoiseÚlowerÚupperÚtrainingÚ	generatorc                 ó  — |�J ‚|r^| dk  }t         j                  | ||«      }t        j                  || |z  | «      }|j	                  t        j                  ||d«      «       |S ||z   dz  }	t         j                  | |	«      S )Nr   r$   r%   )r�   Úuniformrf   rg   Úcopy_Ú
leaky_relu)
ry   rÐ   rÑ   rÒ   rÓ   rÔ   Únot_positiverG   Úoutputr¡   s
             r.   Úrrelu_with_noiserÛ   4  s�   € ð ÐÐÐÙØ˜q‘yˆÜ�L‰L˜˜u eÓ,ˆÜ—‘˜\¨4°!©8°TÓ:ˆØ�‰”E—K‘K ¨a°Ó3Ô4Øˆà %™-¨1Ñ,ˆÜ�‰˜t ^Ó4Ð4r-   c           
      ó@   — | j                  t        | |||||«      «      S r6   )r×   rÛ   )ry   rÐ   rÑ   rÒ   rÓ   rÔ   s         r.   Úrrelu_with_noise_rÝ   L  s#   € ð �:‰:Ô& t¨U°E¸5À(ÈIÓVÓWÐWr-   c                 óx   — |r||z
  dkD  r| j                  |«      S ||z   dz  }t        j                  | |||«      S )Ng�íµ ÷Æ°>r%   )Úmulr�   r¤   )rj   ry   rÐ   rÑ   rÒ   rÓ   r¢   r¡   s           r.   Úrrelu_with_noise_backwardrà   Z  sK   € ñ �E˜E‘M DÒ(Ø�‰˜uÓ%Ð%à %™-¨1Ñ,ˆÜ×'Ñ'Ø˜˜~¨~ó
ð 	
r-   Úbufferc                 óÜ   — |dk  }t        j                  |dd«      }t        j                  |dd«      }t        j                  t        j                  |«       «      }| |||d|z   z  z  z
  z  S )Nr   r$   rP   )rf   rg   re   Úabs)rj   ry   rá   Úin_negativeÚ	max_derivÚsignrh   s          r.   Úlog_sigmoid_backwardrç   o  sg   € ð ˜‘(€KÜ—‘˜K¨¨AÓ.€IÜ�;‰;�{ A rÓ*€DÜ�	‰	”5—9‘9˜T“?Ð"Ó#€AØ˜) d¨a°1°q±5©kÑ&:Ñ:Ñ;Ð;r-   ÚlossÚ	reductionc                 óÎ   — |t         j                  j                  k(  rt        j                  | «      S |t         j
                  j                  k(  rt        j                  | «      S | S r6   )r#   r*   rz   rf   Úmeanr+   Úsum)rè   ré   s     r.   Úapply_loss_reductionrí   |  sH   € Ø”I—N‘N×(Ñ(Ò(Ü�z‰z˜$ÓÐØ	”i—m‘m×)Ñ)Ò	)Ü�y‰y˜‹Ðàˆr-   Údtypec                 óÖ   — | t         j                  k(  rt         j                  S | t         j                  k(  rt         j                  S | t         j
                  k(  rt         j                  S y r6   )rf   Ú	complex32Úfloat16Ú	complex64Úfloat32Ú
complex128Úfloat64©rî   s    r.   Úto_real_dtyper÷   …  sK   € Ø”—‘ÒÜ�}‰}ÐØ	”%—/‘/Ò	!Ü�}‰}ÐØ	”%×"Ñ"Ò	"Ü�}‰}Ðð 
#r-   Útargetc                 ó*   — | |z
  dz  }t        ||«      S )Nr%   )rí   )ry   rø   ré   rè   s       r.   Úmse_lossrú   ”  s   € ð �6‰M˜aÑ€DÜ  iÓ0Ð0r-   c                 ó|   — |t         j                  j                  k(  rd|j                  «       z  nd}|||z
  z  | z  S )Nç       @)r#   r*   rz   Únumel)rj   r¼   rø   ré   Únorms        r.   Úmse_loss_backwardrÿ   ž  s;   € ð #,¬y¯~©~×/CÑ/CÒ"Cˆ3�—‘“ÒÈ€DØ�5˜6‘>Ñ" [Ñ0Ð0r-   c                 óî   — t        j                  | ||¬«      }| j                  t        d«      «      }t        j                  ||d¬«      }t        j
                  |«      }t        j                  |||«      S )N)rL   rî   z-infT©rL   Úkeepdim)rf   ÚsoftmaxÚeqÚfloatÚallÚ
zeros_likerg   )ry   rL   rî   rÃ   ÚmaskedÚmasked_rowsÚzeross          r.   Úsafe_softmaxr  ¨  s[   € ä
�-‰-˜ #¨UÔ
3€CØ�W‰W”U˜6“]Ó#€FÜ—)‘)˜F¨°TÔ:€KÜ×Ñ˜SÓ!€EÜ�;‰;�{ E¨3Ó/Ð/r-   rd   c                 ó’   — | |z
  j                  «       }t        j                  ||k  d|dz  z  |z  |d|z  z
  «      }t        ||«      S )Nr�   r%   )rã   rf   rg   rí   )ry   rø   ré   r`   rè   s        r.   Úsmooth_l1_lossr  ±  sO   € ð �6‰M×ÑÓ €DÜ�;‰;�t˜d‘{ C¨$°©'¡M°DÑ$8¸$ÀÀtÁÑ:KÓL€DÜ  iÓ0Ð0r-   c                 ó  — |t         j                  j                  k(  rd|j                  «       z  nd}||z
  }t	        j
                  |«      }|| z  }t	        j                  ||k  ||z  |z  |t	        j                  |«      z  «      S rc   )r#   r*   rz   rý   rf   rã   rg   ræ   )	rj   ry   rø   ré   r`   rþ   r:   Úabs_xÚ	norm_grads	            r.   Úsmooth_l1_loss_backwardr  ¿  s{   € ð
 "+¬i¯n©n×.BÑ.BÒ!Bˆ3�—‘“ÒÈ€DØˆv‰€AÜ�I‰I�a‹L€EØ�{Ñ"€IÜ�;‰;Ø�‰Ø�A‰˜ÑØ”E—J‘J˜q“MÑ!óð r-   c                 óh   — t        | ||||«      }t        ||j                  «       t        ||d¬«      S ©NT©Ú	copy_fromÚcopy_toÚexact_dtype)r  r   Úshaper   )rj   ry   rø   ré   r`   rU   Úresults          r.   Úsmooth_l1_loss_backward_outr  Ï  s3   € ô % [°$¸À	È4ÓP€FÜ�j &§,¡,Ô/Ü F°JÈDÔQÐQr-   Údeltac           
      óü   — |t         j                  j                  k(  rd|j                  «       z  nd}||z
  }t	        j
                  || k  | | z  |z  t	        j
                  ||kD  || z  |z  ||z  | z  «      «      S rc   )r#   r*   rz   rý   rf   rg   )rj   ry   rø   ré   r  rþ   r:   s          r.   Úhuber_loss_backwardr  Þ  s€   € ð
 "+¬i¯n©n×.BÑ.BÒ!Bˆ3�—‘“ÒÈ€DØˆv‰€AÜ�;‰;Ø	ˆUˆF‰
Ø	ˆ�Ñ˜eÑ#Ü�‰�A˜‘I˜t kÑ1°EÑ9¸4À!¹8ÀkÑ;QÓRóð r-   c                 óh   — t        | ||||«      }t        ||j                  «       t        ||d¬«      S r  )r  r   r  r   )rj   ry   rø   ré   r  rU   r  s          r.   Úhuber_loss_backward_outr  í  s3   € ô ! ¨d°F¸IÀuÓM€FÜ�j &§,¡,Ô/Ü F°JÈDÔQÐQr-   Úignore_indexÚtotal_weightc                 ó‚  — |j                  «       dk  rdnd}|t        j                  j                  k(  r| |z  } |j	                  |«      }t        j                  ||k7  |d«      }t        j                  |«      }	t        j                  |	||d«      }	|	j                  «       | j                  «       cxkD  rdkD  rn n| j	                  |«      } |�Nt        |j                  «       «      D �
cg c]  }
d‘Œ }}
|j                  d   ||<   |j                  |«      }| |z  } t        j                  ||k7  | d«      } |	| z  S c c}
w )Nr%   r   r$   g      ð¿)rL   r#   r*   rz   rR   rf   rg   r  ÚscatterrQ   r  Úreshape)rj   ry   rø   rÉ   ré   r   r!  Úchannel_dimÚsafe_targetrU   rS   Ú	new_shapes               r.   Ú_nll_loss_backwardr(  ü  s  € ð —x‘x“z A’~‘!¨1€KØ”I—N‘N×(Ñ(Ò(Ø! LÑ0ˆà×Ñ˜kÓ*€FÜ—+‘+˜f¨Ñ4°f¸aÓ@€KÜ×!Ñ! $Ó'€JÜ—‘˜z¨;¸ÀTÓJ€Jà‡~�~Ó˜+Ÿ/™/Ó+Ô/¨aÕ/Ø!×+Ñ+¨KÓ8ˆàÐÜ % d§h¡h£jÓ 1Ö2˜1’QÐ2ˆ	Ð2Ø!'§¡¨a¡ˆ	�+ÑØ—‘ 	Ó*ˆØ! FÑ*ˆä—+‘+˜f¨Ñ4°kÀ1ÓE€Kà˜Ñ#Ð#ùò 3s   Ã*	D<c                 ó¢  — |j                  «       dkD  sJ d«       ‚t        j                  |j                  «       |«      }|j                  |«      }|dz  dk(  sJ d|› d|› �«       ‚|dz  }|j	                  |d|«      }|j	                  |||«      }t        j                  |«      }d|z
  |z  |z  | z  }	|| z  }t        j                  ||	g|¬«      S )Nr   z*glu does not support 0-dimensional tensorsr%   z.Halving dimension must be even, but dimension z	 is size rd   r~   )rL   rB   Úcanonicalize_dimÚsizeÚnarrowrf   rÀ   Úcat)
rj   ry   rL   Úwrap_dimÚnInÚ	inputSizeÚ	firstHalfÚ
secondHalfÚgradInputFirstHalfÚgradInputSecondHalfs
             r.   Úglu_backwardr5    së   € ð �8‰8‹:˜Š>ÐGÐGÓGˆ>Ü×%Ñ% d§h¡h£j°#Ó6€HØ
�)‰)�HÓ
€Càˆa‰�1ŠðQà	7¸°zÀÈ3È%ÐPóQØà�q‘€IØ—‘˜H a¨Ó3€IØ—‘˜X y°)Ó<€JÜŸ™ zÓ2Ðà	Ð!Ñ	!Ð%7Ñ7¸)ÑCÀkÑQð ð ,¨kÑ9ÐÜ�9‰9Ð(Ð*=Ð>ÀHÔMÐMr-   c           	      óì  — d|j                  «       cxk  rdk  sJ d«       ‚ J d«       ‚|j                  «       dk  sJ d«       ‚|j                  «       dk(  xr |j                  «       dk(  }|sA|j                  d   |j                  d   k(  s"J d|j                  › d|j                  › d�«       ‚|j                  «       dk(  s'J d	|j                  › d
|j                  «       › d�f«       ‚|�'|j                  «       |j                  d   k(  sJ d«       ‚|t        j                  j
                  k(  r}|j                  «       dk(  rj| j                  «       dk(  r| j                  d   |j                  d   k(  srJ d|j                  d   › d| j                  «       › d| j                  d   › �«       ‚| j                  «       dk  r| j                  «       dk(  sJ d| j                  › �«       ‚t        | ||||||«      S )Nr   r%   úinput tensor should be 1D or 2Dr$   ú;0D or 1D target tensor expected, multi-target not supportedúsize mismatch (got input: ú
, target: ú)ú:expected total_weight to be a single element tensor, got: z (z
 elements)rP   z<weight tensor should be defined either for all or no classesz7Expected a tensor of dimension 1 and tensor.size[0] == z but got: dimension z and tensor.size[0] == z7Expected a single element grad_output tensor, but got: )rL   r  rý   r#   r)   rz   r(  )rj   ry   rø   rÉ   ré   r   r!  Úno_batch_dims           r.   Únll_loss_backwardr>  1  s  € ð �—‘“
Ô˜aÒÐBÐ!BÓBÑÐBÐ!BÓBÐà�
‰
‹˜ÒðEàDóEØð —8‘8“: ‘?Ò8 v§z¡z£|°qÑ'8€LÙØ�
‰
�1‰˜Ÿ™ a™Ò(ðJà	# D§J¡J <¨z¸&¿,¹,¸ÀqÐIóJð ð ×ÑÓ 1Ò$ð ØDØ×ÑÐ
˜b ×!3Ñ!3Ó!5Ð 6°jÐAð'ó Ð$ð 	ˆ˜&Ÿ,™,›.¨D¯J©J°r©NÒ:ðFàEóFØ:ð ”I—N‘N×(Ñ(Ò(¨T¯X©X«Z¸1ª_Ø�‰Ó  AÒ%¨+×*;Ñ*;¸AÑ*>À$Ç*Á*ÈQÁ-Ò*Oð 	
ØEÀdÇjÁjÐQRÁmÀ_ð UØ)Ÿo™oÓ/Ð0Ð0GÈ×HYÑHYÐZ[ÑH\ÐG]ð_ó	
ÐOð �O‰OÓ Ò" {×'8Ñ'8Ó':¸aÒ'?ð	YàDÀ[×EVÑEVÐDWÐXó	YØ?ô Ø�T˜6 6¨9°lÀLóð r-   c           	      ó>  — |j                  «       dk(  sJ d|j                  «       › �«       ‚|j                  «       dk(  sJ d|j                  «       › �«       ‚|j                  d   |j                  d   k(  r>|j                  d   |j                  d   k(  r|j                  d   |j                  d   k(  s!J d|j                  › d	|j                  › �«       ‚|j                  «       dk(  s&J d
|j                  › d|j                  «       › d�«       ‚t        | ||||||«      S )Né   zSonly batches of spatial inputs supported (4D tensors), but got input of dimension: r†   zUonly batches of spatial targets supported (3D tensors) but got targets of dimension: r   r%   r$   r9  r:  r<  z ( z, elements))rL   r  rý   r(  )rj   ry   rø   rÉ   ré   r   r!  s          r.   Únll_loss2d_backwardrA  ]  sE  € ð 	�‰‹
�aŠðjà	\Ð]a×]eÑ]eÓ]gÐ\hÐiójØð 	�
‰
‹˜Òðnà	^Ð_e×_iÑ_iÓ_kÐ^lÐmónØð 	�
‰
�1‰˜Ÿ™ a™Ò(Ø�J‰J�q‰M˜VŸ\™\¨!™_Ò,Ø�J‰J�q‰M˜VŸ\™\¨!™_Ò,ðIð 
$ D§J¡J <¨z¸&¿,¹,¸ÐHó	Ið	-ð
 ×ÑÓ 1Ò$ð ð	Ø×"Ñ"Ð# 3 |×'9Ñ'9Ó';Ð&<¸Kð	IóÐ$ô
 Ø�T˜6 6¨9°lÀLóð r-   c           	      ó"  — |dz
  t        j                  t        j                  |  «      | j                  dd«      «      z  |t        j                  t        j                  | «      | j                  dd«      «      z  z
  }|�||z  }t        ||«      S )Nr$   r,   iœÿÿÿ)rf   ÚmaximumÚlog1pÚnew_fullÚlogrí   )ry   rø   rÉ   ré   rè   s        r.   Úbinary_cross_entropyrG  €  s‚   € ð �Q‰Jœ%Ÿ-™-Ü�‰�T�EÓ˜DŸM™M¨"¨dÓ3óñ à”—‘œuŸy™y¨›°·±¸bÀ$Ó0GÓHÑHñI€Dð ÐØ�f‰}ˆÜ  iÓ0Ð0r-   c                 óÄ   — d}| ||z
  z  t        j                  |d|z
  z  |¬«      z  }|�||z  }|t        j                  j                  k(  r||j                  «       z  }|S )Ngê-�™—q=r$   r‡   )rf   r�   r#   r*   rz   rý   )rj   ry   rø   rÉ   ré   ÚEPSILONr  s          r.   Úbinary_cross_entropy_backwardrJ  –  sg   € ð €GØ˜D 6™MÑ*¬U¯[©[¸ÀÀTÁÑ9JÐPWÔ-XÑX€FØÐØ˜&‘ˆØ”I—N‘N×(Ñ(Ò(Ø˜$Ÿ*™*›,Ñ&ˆØ€Mr-   c                 ór   — t        j                  t        j                  |  |z  «      «      }t        ||«      S r6   )rf   rD  re   rí   )r¼   rø   ré   rè   s       r.   Úsoft_margin_lossrL  ©  s.   € ô �;‰;”u—y‘y % ¨&¡Ó1Ó2€DÜ  iÓ0Ð0r-   c                 ó¨   — || z  t        j                  ||z  «      dz
  z  }|t        j                  j                  k(  r||j                  «       z  }|S rY   )rf   rÀ   r#   r*   rz   rý   )rj   ry   rø   ré   rU   s        r.   Úsoft_margin_loss_backwardrN  µ  sM   € ð ˜+Ñ%¬¯©°vÀ±}Ó)EÈÑ)IÑJ€JØ”I—N‘N×(Ñ(Ò(Ø $§*¡*£,Ñ.ˆ
ØÐr-   ÚotherÚpc                 ó6   — t         j                  | |z
  |¬«      S )N)rP  )r�   rþ   )r¼   rO  rP  s      r.   ÚdistrR  Ä  s   € ô �9‰9�U˜U‘] aˆ9Ó(Ð(r-   Úx1Úx2c                 ó  — | j                  d«      j                  dd«      }t        j                  |t        j                  ¬«      }|j                  d«      j                  dd«      }t        j                  |t        j                  ¬«      }t        j
                  | j                  d«      ||gd«      }t        j
                  |||gd«      }|j                  |j                  «      }|j                  d«      j                  «       S )Nr%   rP   T©Úmemory_formatéþÿÿÿr   )Úpowrì   rf   Ú	ones_likeÚcontiguous_formatr-  rß   ÚmatmulÚmTÚ	clamp_minÚsqrt)	rS  rT  Úx1_normÚx1_padÚx2_normÚx2_padÚx1_Úx2_r  s	            r.   Ú_euclidean_distrf  Ê  sÂ   € ð �f‰f�Q‹i�m‰m˜B Ó%€GÜ�_‰_˜W´E×4KÑ4KÔL€FØ�f‰f�Q‹i�m‰m˜B Ó%€GÜ�_‰_˜W´E×4KÑ4KÔL€FÜ
�)‰)�R—V‘V˜B“Z ¨&Ð1°2Ó
6€CÜ
�)‰)�R˜ Ð)¨2Ó
.€CØ�Z‰Z˜Ÿ™Ó€FØ×Ñ˜AÓ×#Ñ#Ó%Ð%r-   Úinput_sizesÚstartÚendÚstepc                 óX   — | j                  |«      }t        j                  || ||||«      S r6   )Ú	new_zerosrf   Úslice_scatter)rj   rg  rL   rh  ri  rj  rU   s          r.   Úslice_backwardrn  ×  s/   € ð ×&Ñ& {Ó3€JÜ×Ñ˜z¨;¸¸UÀCÈÓNÐNr-   r$   c                 ó  — ddl m}m} | j                  «       }|dk(  rt	        d«      ‚t        j                  | j                  «       |«      }t        | j                  «       «      }t        | j                  «       «      }	|dk  rt	        d«      ‚|�|nd}
|�|nt        j                  } ||
dk  «      r|
||   z  }
 ||dk  «      r|||   z  } ||
dk  «      rd}
n ||
||   kD  «      r||   }
 |||
k  «      r|
}n, ||t        j                  k(  «      s ||||   kD  «      r||   }| j                  «       |
|	|   z  z   }||
z
  }||z   dz
  |z  ||<   |	|xx   |z  cc<   | j                  rt        d«      ‚| j                  ||	|«      S )Nr   )Úguard_size_obliviousÚstatically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiver$   z<Slice decomposition for quantized tensors aren't implemented)Ú%torch.fx.experimental.symbolic_shapesrp  rq  rL   ÚRuntimeErrorrB   r*  Úlistr+  ÚstrideÚsysÚmaxsizeÚstorage_offsetÚis_quantizedÚNotImplementedErrorÚ
as_strided)ry   rL   rh  ri  rj  rp  rq  ÚndimÚsizesÚstridesÚ	start_valÚend_valrx  Úlens                 r.   Úslice_forwardr‚  å  s¦  € ÷ð
 �8‰8‹:€DØˆq‚yÜÐIÓJÐJÜ
×
 Ñ
  §¡£¨SÓ
1€CÜ�—‘“Ó€EÜ�4—;‘;“=Ó!€Gàˆq‚yÜÐ8Ó9Ð9àÐ*‘°€IØ�_‰c¬#¯+©+€Gá˜I¨™MÔ*Ø�U˜3‘ZÑˆ	á˜G a™KÔ(Ø�5˜‘:Ñˆá˜I¨™MÔ*Ø‰	Ù	˜i¨%°©*Ñ4Ô	5Ø˜#‘Jˆ	á˜G iÑ/Ô0Ø‰Ù	˜w¬#¯+©+Ñ5Ô	6Ñ:NØ�%˜‘*Ñô;ð ˜‘*ˆà×(Ñ(Ó*¨Y¸À¹Ñ-EÑE€NØ
�IÑ
€CØ˜‘*˜q‘. TÑ)€Eˆ#�JØˆCƒL�DÑƒLà×ÒÜ!ØJó
ð 	
ð �‰˜u g¨~Ó>Ð>r-   c                 ón   ‡— | j                   |   Šdt        fˆfd„} ||d‰d«      } |||‰‰«      }||fS )zn
    Normalize start and end such that both are in the range
    [0, x.get_size()[dim]] and start <= end.
    rM   c                 óL   •— | €|S | dk  r| ‰z   } t        t        | |«      |«      S rq   ©rˆ   r‹   )ÚvalrÑ   rÒ   ÚdefaultÚdim_sizes       €r.   Ú
clamp_wrapz(_normalize_start_end.<locals>.clamp_wrap(  s0   ø€ Øˆ;ØˆNØ�Š7Ø˜‘.ˆCÜ”3�s˜E“? EÓ*Ð*r-   r   )r  Úint)r:   rL   rh  ri  r‰  rˆ  s        @r.   Ú_normalize_start_endr‹    sJ   ø€ ð �w‰w�s‰|€Hð+´#õ +ñ �u˜a ¨1Ó-€EÙ
�S˜% ¨8Ó
4€CØ�#ˆ:Ðr-   Úsrcc           	      ó|  — t        j                  | j                  |«      }| j                  |   }t	        | |||«      \  }}t        | j                  «      }||z
  |dz
  z   |z  ||<   |j                  |«      }|dk(  r||k(  r|dk(  r|j                  «       S d g| j                  «       z  }t        j                  || j                  ¬«      }	|	|z
  |z  ||<   t        j                  || j                  t        j                  ¬«      }
|dk7  rt        j                  |
|	|k\  «      }
||k7  rt        j                  |
|	|k  «      }
|dk7  rt        j                  |
|	|z
  |z  dk(  «      }
dg| j                  «       z  }d||<   |
j                  |«      }
t         j#                  |
t         j%                  ||
|d«      | «      S )Nr$   r   ©Údevice©r�  rî   rP   )rB   r*  r|  r  r‹  rt  ÚexpandÚclonerL   rf   Úaranger�  ÚonesÚboolÚlogical_andÚviewr�   rg   Ú_unsafe_masked_index)r¼   rŒ  rL   rh  ri  rj  rˆ  Úsrc_sizeÚindicesÚidxÚmaskÚ
mask_shapes               r.   rm  rm  6  s’  € ô ×
 Ñ
  §¡¨SÓ
1€CØ�{‰{˜3Ñ€HÜ% e¨S°%¸Ó=�J€Eˆ3ä�E—K‘KÓ €HØ˜5‘[ D¨1¡HÑ-°$Ñ6€HˆS�MØ
�*‰*�XÓ
€Cà�‚z�c˜X’o¨$°!ª)Ø�y‰y‹{Ðàˆf�u—y‘y“{Ñ"€GÜ
�,‰,�x¨¯©Ô
5€CØ˜%‘K DÑ(€GˆC�Lä�:‰:�h u§|¡|¼5¿:¹:ÔF€DØ�‚zÜ× Ñ   s¨e¡|Ó4ˆà
ˆh‚Ü× Ñ   s¨S¡yÓ1ˆàˆq‚yÜ× Ñ  ¨¨e©°tÑ';¸qÑ'@ÓAˆà��u—y‘y“{Ñ"€JØ€Jˆs�OØ�9‰9�ZÓ €DÜ�:‰:�dœD×5Ñ5°c¸4ÀÈ!ÓLÈeÓTÐTr-   Úindexc                 óT   — | j                  |«      }t        j                  || ||«      S r6   )rl  rf   Úselect_scatter)rj   rg  rL   rž  rU   s        r.   Úselect_backwardr¡  _  s+   € ð ×&Ñ& {Ó3€JÜ×Ñ 
¨K¸¸eÓDÐDr-   ÚoffsetÚdim1Údim2c                 óV   — | j                  |«      }t        j                  || |||«      S r6   )rl  rf   Údiagonal_scatter)rj   rg  r¢  r£  r¤  rU   s         r.   Údiagonal_backwardr§  f  s-   € ð
 ×&Ñ& {Ó3€JÜ×!Ñ! *¨k¸6À4ÈÓNÐNr-   Úinput_dtypec                 óF   — | j                   |k7  r|j                  |«      }|S r6   )rî   r9   )rj   rU   r¨  s      r.   Ú_cast_grad_to_input_dtyperª  o  s&   € ð ×Ñ˜KÒ'Ø—]‘] ;Ó/ˆ
ØÐr-   rÚ   c                 ó~   — | |z  }||t        j                  ||d¬«      z  z
  }t        | ||«      j                  «       S ©NTr  )rf   rì   rª  Ú
contiguous)rj   rÚ   rL   r¨  Únew_grad_outputrU   s         r.   Ú_softmax_backward_datar¯  w  sK   € ð " FÑ*€OØ  6¬E¯I©IØ˜S¨$ô-ñ $ñ €Jô % [°*¸kÓJ×UÑUÓWÐWr-   c                 ó~   — | t        j                  |«      t        j                  | |d¬«      z  z
  }t        | ||«      S r¬  )rf   re   rì   rª  )rj   rÚ   rL   r¨  rU   s        r.   Ú_log_softmax_backward_datar±  ‰  sA   € ð œuŸy™y¨Ó0´5·9±9Ø˜ dô4ñ  ñ €Jô % [°*¸kÓJÐJr-   c                 óì   — | |dz  z   ||dz
  z  z
  }t        t        j                  t        j                  |¬«      } |d||«      j	                  d«      } |d||z  |«      j	                  d«      }	||	z   S )z/Utility function to implement im2col and col2imr%   r$   ©rî   r�  r   rP   )r   rf   r“  Úint64rR   )
Úinput_dÚkernel_dÚ
dilation_dÚ	padding_dÚstride_dr�  Úblocks_dÚ	arange_kwÚblocks_d_indicesÚkernel_grids
             r.   Ú _im2col_col2im_indices_along_dimr¾  •  s   € ð ˜ Q™Ñ&¨°xÀ!±|Ñ)DÑD€HäœŸ™¬E¯K©KÀÔG€Iñ !  H¨hÓ7×AÑAÀ!ÓDÐñ ˜A˜x¨*Ñ4°jÓA×KÑKÈBÓO€Kð ˜kÑ)Ð)r-   Úkernel_sizeÚdilationÚpaddingru  c           
      óî  ‡‡‡‡‡‡— t        j                  t        ‰«      dk(  d„ «       t        j                  t        ‰«      dk(  d„ «       t        j                  t        ‰«      dk(  d„ «       t        j                  t        ‰«      dk(  d„ «       dd„} |‰d«        |‰d«        |‰d	d
¬«        |‰d«       | j                  Št        ‰«      }t        j                  |dv xr t	        d„ ‰dd  D «       «      ˆfd„«       t        d„ t        ‰dd  ‰‰‰‰«      D «       «      Št        j                  t	        d„ ‰D «       «      ˆˆˆˆˆˆfd„«       |dk(  }|s| j                  d«      } | j                  \  }}	}
}‰\  }}‰\  }}‰\  }}‰\  }}t        |
||||| j                  «      }t        |||||| j                  «      }t        j                  | ||||f«      }|j                  d«      j                  d«      }|d d …d d …||f   }|j                  dddddd«      }|j                  d«      }|j                  d«      }|j                  ||	|z  |z  ||z  «      }|s|j                  d«      }|S )Nr%   c                   ó   — y)Nz"im2col(): only 2D kernel supportedr,   r,   r-   r.   r   zim2col.<locals>.<lambda>±  ó   � r-   c                   ó   — y)Nz$im2col(): only 2D dilation supportedr,   r,   r-   r.   r   zim2col.<locals>.<lambda>²  rÄ  r-   c                   ó   — y)Nz#im2col(): only 2D padding supportedr,   r,   r-   r.   r   zim2col.<locals>.<lambda>³  rÄ  r-   c                   ó   — y)Nz"im2col(): only 2D stride supportedr,   r,   r-   r.   r   zim2col.<locals>.<lambda>´  rÄ  r-   c                 ó~   — |rt        d„ | D «       «      nt        d„ | D «       «      }t        j                  |d„ «       y )Nc              3   ó&   K  — | ]	  }|d kD  –— Œ y­w©r   Nr,   ©Ú.0rP  s     r.   ú	<genexpr>z1im2col.<locals>.check_positive.<locals>.<genexpr>·  ó   è ø€ Ò(˜Q�1�q•5Ñ(ùó   ‚c              3   ó&   K  — | ]	  }|d k\  –— Œ y­wrÊ  r,   rË  s     r.   rÍ  z1im2col.<locals>.check_positive.<locals>.<genexpr>·  ó   è ø€ Ò;RÀq¸AÀ½FÑ;RùrÏ  c                   ó   — y)Nz<{param_name} should be greater {'than' zero, but got {param}r,   r,   r-   r.   r   z0im2col.<locals>.check_positive.<locals>.<lambda>¹  rÄ  r-   ©r  rf   r€   ©ÚparamÚ
param_nameÚstrictÚconds       r.   Úcheck_positivezim2col.<locals>.check_positive¶  s3   € Ù,2ŒsÑ( %Ô(Ô(¼Ñ;RÈEÔ;RÓ8RˆÜ�‰ØÑXõ	
r-   r¿  rÀ  rÁ  F©r×  ru  ©r†   r@  c              3   ó&   K  — | ]	  }|d k7  –— Œ y­wrÊ  r,   ©rÌ  Úds     r.   rÍ  zim2col.<locals>.<genexpr>Ä  ó   è ø€ Ò:¨!˜q A�vÑ:ùrÏ  rœ   c                  ó    •— dt        ‰ «      › �S )NzmExpected 3D or 4D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: ©Útuple©r  s   €r.   r   zim2col.<locals>.<lambda>Å  ó   ø€ ð -Ü-2°5«\¨Nð<€ r-   c              3   ó\   K  — | ]$  \  }}}}}d |d|z  z   ||d z
  z  z
  d z
  |z  z   –— Œ& y­w)r$   r%   Nr,   )rÌ  rÃ   ÚpadÚdilÚkerÚsts         r.   rÍ  zim2col.<locals>.<genexpr>È  sF   è ø€ ò á"ˆC��c˜3 ð 	
ˆS�1�s‘7‰]˜S C¨!¡G™_Ñ,¨qÑ0°RÑ7Õ7ñùs   ‚*,rX  c              3   ó&   K  — | ]	  }|d kD  –— Œ y­wrÊ  r,   )rÌ  Úcs     r.   rÍ  zim2col.<locals>.<genexpr>Ï  s   è ø€ Ò'�aˆA��EÑ'ùrÏ  c                  óF   •— dt        ‰dd  «      › d‰› d‰ › d‰› d‰› d‰› d�S )	Nz!Given an input with spacial size rX  ú, kernel_size=ú, dilation=ú
, padding=ú	, stride=z9, the calculated shape of the array of sliding blocks is z*, but its components must be at least one.rá  )rÀ  r¿  Úoutput_sizerÁ  r  ru  s   €€€€€€r.   r   zim2col.<locals>.<lambda>Ð  sL   ø€ Ð3´E¸%ÀÀ¸*Ó4EÐ3Fð GØ"�m ;¨x¨jð 9Ø�)˜9 V Hð -àˆ]ÐDð	F€ r-   r@  r   rP   r$   r†   é   ©T)rf   r€   r�  r  r  râ  ÚziprR   r¾  r�  r¾   ræ  Úpermuter+  r$  Úsqueeze)r¼   r¿  rÀ  rÁ  ru  rÙ  r|  Úbatched_inputÚ	batch_dimr%  Úinput_hÚinput_wÚstride_hÚstride_wÚ	padding_hÚ	padding_wÚ
dilation_hÚ
dilation_wÚkernel_hÚkernel_wÚblocks_row_indicesÚblocks_col_indicesÚpadded_inputrÚ   Únum_blocks_rowÚnum_blocks_colrñ  r  s    ````                     @@r.   Úim2colr  ¨  s~  ý€ ô 
‡L�L”�[Ó! QÑ&Ñ(TÔUÜ	‡L�L”�X“ !Ñ#Ñ%SÔTÜ	‡L�L”�W“ Ñ"Ñ$QÔRÜ	‡L�L”�V“ Ñ!Ñ#OÔPó
ñ �; Ô.Ù�8˜ZÔ(Ù�8˜Y¨uÕ5Ù�6˜8Ô$à�K‰K€EÜˆu‹:€DÜ	‡L�LØ�ˆÒ:œ3Ñ:¨u°R°S¨zÔ:Ó:ó	<ôô
 ñ ä&)Ø�"�#ˆJ˜ ¨;¸ó'
ôó €Kô 
‡L�LÜÑ'˜;Ô'Ó'÷	Fð 	Fôð ˜A‘I€MÙØ—‘ Ó"ˆà/4¯{©{Ñ,€Iˆ{˜G WàÑ€HˆhØ"Ñ€IˆyØ%Ñ€J�
Ø$Ñ€Hˆhä9Ø�˜: y°(¸E¿L¹LóÐô :Ø�˜: y°(¸E¿L¹LóÐô —5‘5˜ ¨I°yÀ)Ð LÓM€Là+×5Ñ5°bÓ9×CÑCÀBÓGÐØš!šQÐ 2Ð4FÐFÑG€FØ�^‰^˜A˜q ! Q¨¨1Ó-€FØ'×,Ñ,¨QÓ/€NØ'×,Ñ,¨QÓ/€NØ�^‰^Ø�; Ñ)¨HÑ4°nÀ~Ñ6Uó€Fñ Ø—‘ Ó"ˆØ€Mr-   rñ  c                 ó®  ‡‡‡‡‡‡!‡"— t        j                  t        ‰«      dk(  d„ «       t        j                  t        ‰«      dk(  d„ «       t        j                  t        ‰«      dk(  d„ «       t        j                  t        ‰«      dk(  d„ «       t        j                  t        ‰«      dk(  d„ «       dd„} |‰d	«        |‰d
«        |‰dd¬«        |‰d«        |‰d«       | j                  Š"t        ‰"«      }t        j                  |dv xr t	        d„ ‰"dd  D «       «      ˆ"fd„«       ‰d   ‰d   z  }t        j                  ‰"d   |z  dk(  ˆˆ"fd„«       t        ‰‰‰‰‰«      D �	�
���cg c]"  \  }	}
}}}d|	d|
z  z   ||dz
  z  z
  dz
  |z  z   ‘Œ$ }}}}
}	}|d   |d   z  Š!t        j                  ‰"d   ‰!k(  ˆ!ˆˆˆˆˆ"ˆfd„«       t        j                  ‰!dkD  ˆ!ˆˆˆˆˆ"ˆfd„«       |dk(  }|s| j                  d«      } | j                  Š"‰\  }}‰\  }}‰\  }}‰\  }}‰\  }}| j                  ‰"d   ‰"d   |z  g‰z   |z   «      } | j                  dddddd«      } t        |||||| j                  «      }t        |d«      }t        |||||| j                  «      }t        ‰‰«      D ��cg c]  \  }}|d|z  z   ‘Œ }}}| j                  ‰"d   ‰"d   t        ‰«      z  g|z   «      }d d ||f} t        j                  || | d¬«      }t!        j"                  || | | | f«      }|s|j%                  d«      }|S c c}}}}
}	w c c}}w )Nr%   c                   ó   — y)Nzonly 2D output_size supportedr,   r,   r-   r.   r   zcol2im.<locals>.<lambda>  rÄ  r-   c                   ó   — y)Nzonly 2D kernel supportedr,   r,   r-   r.   r   zcol2im.<locals>.<lambda>  rÄ  r-   c                   ó   — y)Nzonly 2D dilation supportedr,   r,   r-   r.   r   zcol2im.<locals>.<lambda>  rÄ  r-   c                   ó   — y)Nzonly 2D padding supportedr,   r,   r-   r.   r   zcol2im.<locals>.<lambda>  rÄ  r-   c                   ó   — y)Nzonly 2D stride supportedr,   r,   r-   r.   r   zcol2im.<locals>.<lambda>	  rÄ  r-   Tc                 ó~   — |rt        d„ | D «       «      nt        d„ | D «       «      }t        j                  |d„ «       y )Nc              3   ó&   K  — | ]	  }|d kD  –— Œ y­wrÊ  r,   rË  s     r.   rÍ  z1col2im.<locals>.check_positive.<locals>.<genexpr>  rÎ  rÏ  c              3   ó&   K  — | ]	  }|d k\  –— Œ y­wrÊ  r,   rË  s     r.   rÍ  z1col2im.<locals>.check_positive.<locals>.<genexpr>  rÑ  rÏ  c                   ó   — y)Nz9{param_name} should be greater than zero, but got {param}r,   r,   r-   r.   r   z0col2im.<locals>.check_positive.<locals>.<lambda>  rÄ  r-   rÓ  rÔ  s       r.   rÙ  zcol2im.<locals>.check_positive  s3   € Ù,2ŒsÑ( %Ô(Ô(¼Ñ;RÈEÔ;RÓ8RˆÜ�‰ØÑUõ	
r-   r¿  rÀ  rÁ  FrÚ  ru  rñ  )r%   r†   c              3   ó&   K  — | ]	  }|d k7  –— Œ y­wrÊ  r,   rÝ  s     r.   rÍ  zcol2im.<locals>.<genexpr>  rß  rÏ  rX  c                  ó    •— dt        ‰ «      › �S )NzmExpected 2D or 3D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: rá  rã  s   €r.   r   zcol2im.<locals>.<lambda>  rä  r-   r   r$   c                  ó   •— d‰d   › d‰ › �S )Nz|Expected size of input's first non-batch dimension to be divisible by the product of kernel_size, but got input.shape[-2] = rX  z and kernel_size=r,   )r¿  r  s   €€r.   r   zcol2im.<locals>.<lambda>!  s#   ø€ ð =Ø=BÀ2¹Y¸Kð HØ"�mð%€ r-   rP   c                  ó:   •— d‰› d‰› d‰› d‰› d‰› d‰ › d‰d   › d	�S ©
NzGiven output_size=rí  rî  rï  rð  z , expected input.size(-1) to be ú	 but got rP   ú.r,   ©ÚLrÀ  r¿  rñ  rÁ  r  ru  s   €€€€€€€r.   r   zcol2im.<locals>.<lambda>.  óF   ø€ Ð$ [ M°À¸}ð MØ�:˜Z¨ y°	¸&¸ð B)Ø)*¨¨9°U¸2±Y°K¸qðB€ r-   c                  ó:   •— d‰› d‰› d‰› d‰› d‰› d‰ › d‰d   › d	�S r  r,   r  s   €€€€€€€r.   r   zcol2im.<locals>.<lambda>4  r  r-   r†   r@  rò  ©Ú
accumulateró  )rf   r€   r�  r  r  rô  rR   r$  rõ  r¾  r�  rT   rl  Úprodr�   Ú_unsafe_index_putr¾   ræ  rö  )#r¼   rñ  r¿  rÀ  rÁ  ru  rÙ  r|  Úprod_kernel_sizerÃ   ræ  rç  rè  ré  Úcolr÷  Úout_hÚout_wrû  rü  rý  rþ  rÿ  r   r  r  Úindices_rowÚindices_colÚorP  Úoutput_padded_sizerÚ   r›  r  r  s#    `````                           @@r.   Úcol2imr*  ú  s�  þ€ ô 
‡L�L”�[Ó! QÑ&Ñ(OÔPÜ	‡L�L”�[Ó! QÑ&Ñ(JÔKÜ	‡L�L”�X“ !Ñ#Ñ%IÔJÜ	‡L�L”�W“ Ñ"Ñ$GÔHÜ	‡L�L”�V“ Ñ!Ñ#EÔFó
ñ �; Ô.Ù�8˜ZÔ(Ù�7˜I¨eÕ4Ù�6˜8Ô$Ù�; Ô.à�K‰K€EÜˆu‹:€DÜ	‡L�LØ�ˆÒ:œ3Ñ:¨u°R°S¨zÔ:Ó:ó	<ôð
 # 1‘~¨°A©Ñ6ÐÜ	‡L�LØˆb‰	Ð$Ñ$¨Ñ)ô	%ôô '*Ø˜ (¨K¸ó'
÷ò á"ˆC��c˜3 ð 	
ˆS�1�s‘7‰]˜S C¨!¡G™_Ñ,¨qÑ0°RÑ7Ó7ð€Cô ð 	ˆA‰��Q‘‰€AÜ	‡L�LØˆb‰	�Q‰÷	Bñ 	Bôô 
‡L�LØ	ˆA‰÷	Bñ 	Bôð ˜A‘I€MÙØ—‘ Ó"ˆà�K‰K€Eà�L€Eˆ5ØÑ€HˆhØ"Ñ€IˆyØ%Ñ€J�
Ø$Ñ€Hˆhð �M‰M˜5 ™8 U¨1¡XÐ1AÑ%AÐBÀ[ÑPÐSVÑVÓW€EØ�M‰M˜!˜Q  1 a¨Ó+€Eä2Øˆx˜ Y°¸%¿,¹,ó€Kô $ K°Ó3€KÜ2Øˆx˜ Y°¸%¿,¹,ó€Kô 14°KÀÓ0I×J©¨¨1˜!˜a !™e›)ÐJÐÑJØ�_‰_Ø	ˆq‰�5˜‘8œt KÓ0Ñ0Ð1Ð4FÑFó€Fð ��{ KÐ
0€CÜ×#Ñ# F¨C°À4Ð#ÓH€FÜ�U‰U�6˜Y˜J¨¨
°Y°JÀÀ
ÐKÓL€FáØ—‘ Ó"ˆØ€MùökùóV Ks   Å6'MÊ9Mrœ  c                 óz   — | |j                  | «      |z  z  j                  t        j                  | «      ¬«      }|S ©NrV  )Útype_asr’  rB   r   )rj   rœ  rl   rG   s       r.   Únative_dropout_backwardr.  ]  sB   € ð 
˜Ÿ™ [Ó1°EÑ9Ñ	:×AÑAÜ×1Ñ1°+Ó>ð 	Bó 	€Að €Hr-   Ú
input_sizeÚ	dimensionr+  c                 ó  — t        |«      dk(  rt        j                  | d«      S t        j                  t        |«      |«      }t        j
                  ||   | j                  t        j                  ¬«      }|j                  d||«      j                  «       }| j                  d|dz   «      j                  ||dz   «      } | j                  |«      }d|z  |fz   }t        j                  ||| d¬«      j                  «       S )Nr   r�  rP   r$   r6   Tr  )r�  rf   Úsqueeze_copyrB   r*  r“  r�  Úint32ÚunfoldÚflattenÚmovedimrl  r�   r!  r­  )	r¥   r/  r0  r+  rj  rL   r›  rU   rž  s	            r.   Úunfold_backwardr7  l  sÚ   € ô
 ˆ:ƒ˜!ÒÜ×!Ñ! $¨Ó*Ð*Ü
×
 Ñ
 ¤ Z£°)Ó
<€CÜ
�,‰,�z #‘¨t¯{©{Ä%Ç+Á+Ô
N€CØ
�*‰*�Q˜˜dÓ
#×
+Ñ
+Ó
-€CØ�<‰<˜˜C !™GÓ$×,Ñ,¨S°#¸±'Ó:€Dð —‘ 
Ó+€JØ�c‰M˜S˜FÑ"€EÜ×!Ñ! *¨e°TÀdÐ!ÓK×VÑVÓXÐXr-   Úepsc           
      ó.  — |�A|}d|z
  }t        j                  t        j                  ||k\  ||k  «      | |d|z
  z  z  d«      S t        j                  t        j                  |dk\  |dk  «      | |d|z
  z  z  |j                  dt	        d«      «      «      S )Nrd   r‘   r,   Únan)rf   rg   r–  rE  r  )rj   ry   r8  ÚloÚhis        r.   Úlogit_backwardr=    s¢   € ð
 €ØˆØ�2‰XˆÜ�{‰{Ü×Ñ˜d b™j¨$°"©*Ó5Ø˜4 3¨¡:Ñ.Ñ/Øó
ð 	
ô �{‰{Ü×Ñ˜d c™k¨4°3©;Ó7Ø˜4 3¨¡:Ñ.Ñ/Ø�M‰M˜"œe E›lÓ+ó
ð 	
r-   Útrainc                 ód   — |r|dk7  rt         j                  | ||«      d   S | j                  «       S rq   )r�   Únative_dropoutr’  )r¼   rP  r>  s      r.   ÚdropoutrA  ”  s3   € ñ ��a’Ü×"Ñ" 5¨!¨UÓ3°AÑ6Ð6à�{‰{‹}Ðr-   Úout0Úout1c                 ó„  — |r˜|dk7  r“|dk(  r:t        j                  | «      t        j                  | t         j                  ¬«      fS | j                  j                  st        d«      ‚t        j                  | «      |kD  }|| z  t        dd|z
  z  «      z  }||fS | t        j                  | t         j                  ¬«      fS )Nr   r$   rö   z?result type Float can't be cast to the desired output type Longrd   )	rf   r  r•  rî   Úis_floating_pointrs  Ú	rand_liker  rZ  )r¼   rP  r>  Ú	bool_maskÚress        r.   r@  r@  ž  s®   € ñ ��a’Ø�Š6Ü×$Ñ$ UÓ+¬U×-=Ñ-=¸eÌ5Ï:É:Ô-VÐWÐWØ�{‰{×,Ò,ÜØQóð ô —O‘O EÓ*¨QÑ.ˆ	Ø˜%Ñ¤%¨¨s°Q©w©Ó"8Ñ8ˆØ�YÐÐà”u—‘ u´E·J±JÔ?Ð@Ð@r-   Úhalf_to_floatc                 óü  — | j                  «       } |r| j                  t        j                  k(  sJ ‚t	        j
                  | t        j                  j                  ¬«      \  }}| j                  |«      } | j                  «       dk(  rt        j                  | «      }n0t        j                  | |d¬«      }t        j                  | |z
  «      }|t        j                  ||d¬«      z  }|s|j                  |«      }|S ©N©r4   r   T)r  )r­  rî   rf   ÚhalfrB   rC   ÚELEMENTWISE_TYPE_PROMOTION_KINDÚDEFAULTr9   rý   re   Úamaxrì   )r:   rL   rI  r;   r>   ÚunnormalizedÚx_maxr  s           r.   Ú_softmaxrS  ¯  sË   € ð
 	
�‰‹€AÙØ�w‰wœ%Ÿ*™*Ò$Ð$Ð$Ü&+×&>Ñ&>Ø	œu×DÑD×LÑLô'Ñ#Ð�|ð 	
�‰ÐÓ€AØ‡w�wƒy�A‚~Ü—y‘y “|‰ä—
‘
˜1˜c¨4Ô0ˆÜ—y‘y  U¡Ó+ˆØœEŸI™I l°CÀÔFÑF€FÙØ—‘˜<Ó(ˆØ€Mr-   c                 ó   — | j                  «       } |r| j                  t        j                  k(  sJ ‚t	        j
                  | t        j                  j                  ¬«      \  }}| j                  |«      } | j                  «       dk(  r| }nt        j                  | |d¬«      }| |z
  }t        j                  t        j                  t        j                  |«      |d¬«      «      }||z
  }|s|j                  |«      }|S rK  )r­  rî   rf   rM  rB   rC   rN  rO  r9   rý   rP  rF  rì   re   )	r:   rL   rI  r;   r>   ÚshiftedrR  Úshifted_logsumexpr  s	            r.   Ú_log_softmaxrW  Æ  sÓ   € ð
 	
�‰‹€AÙØ�w‰wœ%Ÿ*™*Ò$Ð$Ð$Ü&+×&>Ñ&>Ø	œu×DÑD×LÑLô'Ñ#Ð�|ð 	
�‰ÐÓ€AØ‡w�wƒy�A‚~Ø‰ä—
‘
˜1˜c¨4Ô0ˆØ�e‘)ˆÜŸ	™	¤%§)¡)¬E¯I©I°gÓ,>ÀÈTÔ"RÓSÐØÐ(Ñ(€FÙØ—‘˜<Ó(ˆØ€Mr-   rš  Úpadding_idxÚscale_grad_by_freqÚsparsec                 óÆ   — | j                  «       dk(  sJ d«       ‚|j                  dk  r4| j                  d|«      }|j                  dk(  r|j                  d«      }|S | |   S )Nr%   z'weight' must be 2-Dr$   r   )rL   r|  Úindex_selectrö  )rÉ   rš  rX  rY  rZ  rÃ   s         r.   Ú	embeddingr]  Þ  sd   € ð �:‰:‹<˜1ÒÐ4Ð4Ó4Ðà‡|�|�qÒà×!Ñ! ! WÓ-ˆØ�<‰<˜1ÒØ—+‘+˜a“.ˆCØˆ
à�g‰Ðr-   Únum_weightsc                 ót  — t        j                  | t         j                  j                  ¬«      \  }}| j	                  |«      } t        |t        j                  «      }|rZ|j                  |f«      }t        j                  |«      }t        j                  ||g|d¬«      }||   }	| |	j                  d«      z  } t        ||k(  | j                  «      }
| j                  |
d«      }| j                  |f| j                   |j                  d  z   «      }t        j                  ||g|d¬«      j	                  |«      S )NrL  Tr  rP   r   )rB   rC   rN  rO  r9   r   rf   Úlongrl  rZ  r�   r!  rR   rT   r|  Úmasked_fillr  )rj   rš  r^  rX  rY  r;   r>   Úcountsr”  Úgrad_weights_scalerœ  r¥   Úgrad_weights                r.   Úembedding_dense_backwardre  ó  s,  € ô ',×&>Ñ&>Ø¬×)NÑ)N×)VÑ)Vô'Ñ#Ð�|ð —.‘.Ð!2Ó3€KÜ% g¬u¯z©zÓ:€GÙØ×"Ñ" K >Ó2ˆÜ�‰˜wÓ'ˆÜ×'Ñ'¨°°	¸4ÈDÐ'ÓQˆØ# G™_ÐØ!Ð$6×$@Ñ$@ÀÓ$DÑDˆä˜W¨Ñ3°[×5EÑ5EÓF€DØ×"Ñ" 4¨Ó+€DØ×'Ñ'Ø	ˆ˜×*Ñ*¨7¯<©<¨>Ð:Ñ:ó€Kô ×!Ñ! +°¨y¸$È4Ð!ÓP×SÑSØóð r-   c                 ó"   — d}| D ]  }||z  }Œ	 |S rY   r,   )r:   rG   Úis      r.   r   r     s$   € Ø	€AØò ˆØ	ˆQ‰‰ðà€Hr-   ÚtensorsÚ
num_chunksc                 óZ  — g }| D ]£  }|j                  «       }||   |z   dz
  |z  |z  }|||   k7  r;dgdz  |j                  |z
  dz
  z  d|||   z
  gz   }t        j                  ||d«      }|d | t	        j
                  |dg«      z   }|j                  |j                  |«      «       Œ¥ |S )Nr$   r   r%   rP   )r+  r|  r�   Úconstant_pad_ndrf   ÚSizeÚappendr—  )	rh  rL   ri  Úpadded_tensorsÚtensorÚtensor_sizeÚpad_along_dimræ  Ú	view_sizes	            r.   Ú
_pad_chunkrs    sÚ   € ð
 €NØò 6ˆØ—k‘k“mˆØ$ SÑ)¨JÑ6¸Ñ:¸zÑIÈJÑVˆØ˜K¨Ñ,Ò,à�#˜‘'˜VŸ[™[¨3Ñ.°Ñ2Ñ3ØØ ¨CÑ 0Ñ0ð7ñ ˆCô ×)Ñ)¨&°#°qÓ9ˆFØ  Ð%¬¯
©
°JÀÐ3CÓ(DÑDˆ	Ø×Ñ˜fŸk™k¨)Ó4Õ5ð6ð Ðr-   c                 óR   — | d   j                   }| D ]  }|j                   |k7  sŒ y y)Nr   FT©r|  )rh  r|  ro  s      r.   Úhave_same_ndimsrv  .  s2   € Ø�1‰:�?‰?€DØò ˆØ�;‰;˜$ÓÙðð r-   c                 ó”   — | d   j                  «       d | }| D ]-  }t        j                  |j                  «       d | |k(  d„ «       Œ/ y )Nr   c                   ó   — y)NzG_chunk_cat expects same sizes of 0,...,dim-1 dimensions for all tensorsr,   r,   r-   r.   r   z+leading_dimension_matches.<locals>.<lambda>;  rÄ  r-   )r+  rf   r€   )rh  rL   Úleading_dim_sizesro  s       r.   Úleading_dimension_matchesrz  6  sN   € Ø ™
Ÿ™Ó)¨$¨3Ð/ÐØò 
ˆÜ�‰Ø�K‰K‹M˜$˜3ÐÐ#4Ñ4Ù]õ	
ñ
r-   c                 ó²  — t        j                  |dk\  d„ «       t        j                  t        | «      dkD  d„ «       | d   j                  }| d   j                  }| D ]r  }t        j                  |j                  «       dkD  d„ «       t        j                  |j                  |k(  d„ «       t        j                  |j                  |k(  d„ «       Œt t        | «      r(t        j                  | d   j                  «       |«      }nEt        j                  |dk\  d„ «       | D ]&  }t        j                  ||j                  k  d	„ «       Œ( t        | |«       |S )
Nr$   c                   ó   — y)Nz&_chunk_cat expects positive num_chunksr,   r,   r-   r.   r   z._preprocess_chunk_cat_inputs.<locals>.<lambda>D  rÄ  r-   r   c                   ó   — y)Nz0_chunk_cat expects a non-empty input tensor listr,   r,   r-   r.   r   z._preprocess_chunk_cat_inputs.<locals>.<lambda>F  rÄ  r-   c                   ó   — y)Nz#_chunk_cat expects non-empty tensorr,   r,   r-   r.   r   z._preprocess_chunk_cat_inputs.<locals>.<lambda>K  rÄ  r-   c                   ó   — y)Nz8_chunk_cat expects all input tensors with the same dtyper,   r,   r-   r.   r   z._preprocess_chunk_cat_inputs.<locals>.<lambda>N  rÄ  r-   c                   ó   — y)Nz8_chunk_cat expects all inputs tensors on the same devicer,   r,   r-   r.   r   z._preprocess_chunk_cat_inputs.<locals>.<lambda>R  rÄ  r-   c                   ó   — y)NzK_chunk_cat expects non-negative dim when input tensors have different ndimsr,   r,   r-   r.   r   z._preprocess_chunk_cat_inputs.<locals>.<lambda>Y  rÄ  r-   c                   ó   — y)Nz3_chunk_cat expects dim < ndim for all input tensorsr,   r,   r-   r.   r   z._preprocess_chunk_cat_inputs.<locals>.<lambda>^  rÄ  r-   )rf   r€   r�  rî   r�  rý   rv  rB   r*  rL   r|  rz  )rh  rL   ri  Úexpected_dtypeÚexpected_devicero  s         r.   Ú_preprocess_chunk_cat_inputsr…  ?  s-  € ô
 
‡L�L�˜q‘Ñ"RÔSÜ	‡L�LÜˆG‹�qÑÑTôð ˜Q‘Z×%Ñ%€NØ˜a‘j×'Ñ'€OØò 	
ˆÜ�‰�V—\‘\“^ aÑ'Ñ)VÔWÜ�‰Ø�L‰L˜NÑ*ÙNô	
ô 	�‰Ø�M‰M˜_Ñ,ÙNõ	
ð	
ô �wÔÜ×$Ñ$ W¨Q¡Z§^¡^Ó%5°sÓ;‰ä�‰Ø�1‰HÙaô	
ð ò 	ˆFÜ�L‰LØ�f—k‘kÑ!ÙMõð	ô
 ˜g sÔ+Ø€Jr-   rÃ   c                 ó¦   — t        | ||«      }t        | ||«      }|€t        j                  ||dz   «      S t        j                  ||dz   |¬«       |S )Nr$   )rÃ   )r…  rs  rf   r-  )rh  rL   ri  rÃ   rn  s        r.   Ú
_chunk_catr‡  d  sS   € ô ' w°°ZÓ
@€CÜ ¨¨jÓ9€NØ
€{Ü�y‰y˜¨¨q©Ó1Ð1ä�	‰	�. #¨¡'¨sÕ3Øˆ
r-   Úsplit_sizesc                 óz  ‡ ‡‡— t        t        ‰«      «      D ]  }t        j                  ‰|   d„ «       Œ t        j                  t
        t        ‰«      ‰ j                  ‰   k(  ˆˆ ˆfd„«       t        ‰«      }g }d}t        |«      D ].  }‰|   }|j                  ‰ j                  ‰||«      «       ||z  }Œ0 |S )Nc                   ó   — y)NzCsplit_with_sizes expects split_sizes have only non-negative entriesr,   r,   r-   r.   r   z"split_with_sizes.<locals>.<lambda>}  rÄ  r-   c                  ó@   •— dt        ‰«      › d‰j                  ‰    › �S )NzSplit sizes add up to z but got the tensor's size of )rì   r  )rL   ry   rˆ  s   €€€r.   r   z"split_with_sizes.<locals>.<lambda>‚  s*   ø€ Ð(¬¨[Ó)9Ð(:Ð:XÐY]×YcÑYcÐdgÑYhÐXiÐj€ r-   r   )
rQ   r�  rf   Ú_check_is_sizeÚ_check_withÚ
ValueErrorrì   r  rm  r,  )ry   rˆ  rL   rg  Ú
num_splitsÚsplitsÚ	start_idxÚlengths   ```     r.   Úsplit_with_sizesr“  t  s¾   ú€ ô ”3�{Ó#Ó$ò 
ˆÜ×ÑØ˜‰NÙYõ	
ð
ô
 
×ÑÜÜˆKÓ˜DŸJ™J s™OÑ+Ýjôô
 �[Ó!€JØ€FØ€Iä�:Óò ˆØ˜Q‘ˆØ�‰�d—k‘k # y°&Ó9Ô:Ø�VÑ‰	ðð €Mr-   c                 óú   — t        | ||¬«      }|€.|D �cg c]"  }|j                  t        j                  ¬«      ‘Œ$ c}S t	        ||«      D ])  \  }}t        ||j                  «       t        ||d¬«       Œ+ y c c}w )Nr~   rV  Tr  )r“  r’  rf   r[  rô  r   r  r   )ry   rˆ  rL   rÃ   r�  ÚsrÚ   Úsplits           r.   Úsplit_with_sizes_copyr—  �  sz   € ô ˜d K°SÔ9€FØ
€{ØHNÖOÀ1�—‘¤e×&=Ñ&=�Õ>ÒOÐOä   fÓ-ò 	N‰MˆF�EÜ˜f e§k¡kÔ2Ü U°FÈÖMð	Nð ùò Ps   •'A8Ú
split_size.c                 óD   — t         j                  j                  | ||«      S r6   )r�   r–  r   )r¼   r˜  rL   s      r.   Úunsafe_splitrš  £  s   € ä�:‰:×Ñ˜U J°Ó4Ð4r-   c                 óD   — t         j                  j                  | ||«      S r6   )r�   r“  r‡  )r¼   rˆ  rL   s      r.   Úunsafe_split_with_sizesrœ  ¨  s   € ô × Ñ ×(Ñ(¨°¸SÓAÐAr-   c                 óø   — | j                   }||   }|dk(  r
|dk(  sJ ‚| fS ||z   dz
  |z  }ddlm}  ||«      }t        |«      D �cg c]  }|‘Œ }}|||z  |z
  z
  |d<   t	        j
                  | ||«      S c c}w )Nr   r$   )Ú	guard_intrP   )r  rr  rž  rQ   rf   r–  )	ry   r˜  rL   rg  rˆ  Úchunksrž  rg  rˆ  s	            r.   r–  r–  ¯  sš   € à—*‘*€KØ˜3Ñ€HØ�Q‚Ø˜1Š}Ðˆ}ØˆwˆØ˜Ñ# aÑ'¨JÑ6€Fõ @á�vÓ€FÜ',¨V£}Ö5 !’:Ð5€KÐ5Ø  J°Ñ$7¸(Ñ$BÑC€K��OÜ�;‰;�t˜[¨#Ó.Ð.ùò 6s   Á	A7Útensor_indices_or_sectionsc                 ó¸  ‡— |j                   j                  dk(  sJ ‚|j                  t        j                  k(  sJ ‚|j                  «       Št        j                  ‰dk(  xs ‰dk(  ˆfd„«       ‰dk(  r4|j                  «       }t        |t        «      sJ ‚| j                  ||«      S |D �cg c]  }|j                  «       ‘Œ }}| j                  ||«      S c c}w )NÚcpur$   r   c                  ó   •— d‰ › d�S )Nz{tensor_split expected tensor_indices_or_sections to be a zero-dimensional or one-dimensional tensor, but got a tensor with z dimsr,   )Ú	split_dims   €r.   r   zAtensor_split_tensor_indices_or_sections_py_impl.<locals>.<lambda>Î  s   ø€ ð <Ø<E¸;ÀeðM€ r-   )r�  Útyperî   rf   r´  rL   r€   Úitemr8   r   Útensor_split)ry   r   rL   Úsectionsrg  rš  r¤  s         @r.   Ú/tensor_split_tensor_indices_or_sections_py_implr©  Á  sÕ   ø€ ð &×,Ñ,×1Ñ1°UÒ:Ð:Ð:Ø%×+Ñ+¬u¯{©{Ò:Ð:Ð:Ø*×.Ñ.Ó0€IÜ	‡L�LØ�Q‰Ò(˜) q™.ó	Môð
 �A‚~Ø-×2Ñ2Ó4ˆÜ˜(¤GÔ,Ð,Ð,Ø× Ñ  ¨3Ó/Ð/à%?Ö@ �1—6‘6•8Ð@ˆÐ@ð × Ñ  ¨#Ó.Ð.ùò As   Â,CÚmat1Úmat2c                 ó¾   — | j                  «       s&| j                  «       st        |«      }t        |«      }|t        j                  ||«      z  }|dk(  r|S ||| z  z   S rq   )rE  Ú
is_complexrŠ  rf   Úmm)ry   rª  r«  r`   rk   rÃ   s         r.   Úaddmmr¯  ä  s]   € ð ×!Ñ!Ô#¨D¯O©OÔ,=Ü�4‹yˆÜ�E“
ˆØ
”%—(‘(˜4 Ó&Ñ
&€CØˆq‚yØˆ
ð �˜‘ÑÐr-   Úuse_geluc                 ó¾   — t        | ||||«      }|r8| j                  rt        j                  |d¬«      S t        j                  |«      S t        j	                  |«      S )Nr¨   )r¦   )r¯  Úis_cudar�   ÚgeluÚrelu)ry   rª  r«  r`   rk   r°  rÃ   s          r.   Ú_addmm_activationrµ  ø  sO   € ô ��d˜D $¨Ó
.€CÙØ�<Š<Ü—9‘9˜S¨f�9Ó5Ð5ä—9‘9˜S“>Ð!Ü�9‰9�S‹>Ðr-   Úvecc                 ó¾   — | j                  «       s&| j                  «       st        |«      }t        |«      }|t        j                  ||«      z  }|dk(  r|S ||| z  z   S rq   )rE  r­  rŠ  rf   Úmv)ry   rª  r¶  r`   rk   rÃ   s         r.   Úaddmvr¹    s[   € ð ×!Ñ!Ô#¨D¯O©OÔ,=Ü�4‹yˆÜ�E“
ˆØ
”%—(‘(˜4 Ó%Ñ
%€CØˆq‚yØˆ
Ø�˜‘ÑÐr-   rë   ÚrstdÚgammaÚNÚCÚHxWÚgroupÚoutput_maskc
           	      óR  ‡‡‡‡‡‡— t        j                  | |‰|d¬«       t        j                  || d¬«       t        j                  ‰|d¬«       t        j                  |j                  «       ‰‰z  ‰z  k(  ˆˆˆfd„«       t        j                  ‰j                  ‰‰fk(  ˆˆˆfd„«       t        j                  ‰d u xs ‰j                  «       ‰k(  ˆˆfd„«       t        ‰‰«      \  }
}t        j                  |dk(  ˆˆfd„«       t        j                  | |«      j                  ‰‰‰«      j                  dg¬	«      }| j                  ‰‰‰«      j                  dg¬	«      }d }d }d }|	d   �r*d
‰|
z  z  }‰�Át        j                  |‰j                  d«      «      j                  ‰‰|
«      j                  d«      }t        j                  |‰j                  d«      «      j                  ‰‰|
«      j                  d«      }t        j                  |j                  d«      ‰j                  d‰|
«      «      }n‹|j                  ‰‰|
«      j                  d«      }|j                  ‰‰|
«      j                  d«      }t        j                  |j                  d«      t        j                  d‰|
f|j                  ¬«      «      }|‰z  |z
  |z  |z  |z  |z  }| ‰z  ||z  |z  z
  }|j                  d«      }t        |d«      }t        |d«      }t        j                  | j                  ‰‰|
‰«      |«      t        j                  |j                  ‰‰|
‰«      |«      z   |z   }|j                  |j                  «      j!                  |j"                  «      }|	d   rk|j                  ‰‰|
«      |j                  ‰‰|
«      ‰j                  d«      z  z
  |j                  d«      z  j                  dg¬	«      j                  ‰«      }|	d   r|j                  dg¬	«      }|||fS )NF)Úallow_cpu_scalar_tensorsc                  ó   •— d‰‰ z  ‰z  › d�S )NzExpect input to have z	 elementsr,   )r½  r¾  r¼  s   €€€r.   r   z,native_group_norm_backward.<locals>.<lambda>.  s   ø€ Ð'¨¨A©°© }°IÐ>€ r-   c                  ó.   •— d‰ › d‰› d‰j                   › �S )NzExpect mean to have shape (ú, z
, but got rã  )r¼  r¿  rë   s   €€€r.   r   z,native_group_norm_backward.<locals>.<lambda>2  s   ø€ Ð-¨a¨S°°5°'¸ÀDÇJÁJÀ<ÐP€ r-   c                  ó<   •— d‰ › d‰�‰j                  «       › �S d› �S )NzExpect gamma to have z elements but got rP   )rý   )r½  r»  s   €€r.   r   z,native_group_norm_backward.<locals>.<lambda>6  s-   ø€ Ð'¨ sÐ*<ÈeÐN_¸U¿[¹[»]Ð<hÐi€ ÐegÐ<hÐi€ r-   r   c                  ó   •— d‰ › d‰› �S )NzExpect number of channels z, to be evenly-divisible by number of groups r,   )r½  r¿  s   €€r.   r   z,native_group_norm_backward.<locals>.<lambda><  s   ø€ Ð,¨Q¨CÐ/[Ð\aÐ[bÐc€ r-   r%   r~   rd   rP   r$   rŽ  r@  )rB   Úcheck_same_deviceÚcheck_same_shaperf   r€   rý   r  Údivmodrß   r—  rì   rR   r$  r”  r�  rT   r9   rî   )rj   r¼   rë   rº  r»  r¼  r½  r¾  r¿  rÀ  ÚcpgÚ_remÚdsÚdbÚd_inputÚd_gammaÚd_biasr•  Úds_valÚdb_valÚc1Úc2Úc3s     ` `````              r.   Únative_group_norm_backwardr×    s¼  ý€ ô 
×ÑØ�U˜D $Àõô 
×Ñ˜5 +ÈÕNÜ	×Ñ˜4 ÀÕFÜ	‡L�LØ�‰‹˜˜Q™ ™Ñ$Ý>ôô 
‡L�LØ�
‰
�q˜%�jÑ ÝPôô 
‡L�LØ�ˆÒ+˜Ÿ™›¨!Ñ+Üiôô
 �q˜%Ó �I€CˆÜ	‡L�LØ�‰	Ücôô 
�‰�; Ó	&×	+Ñ	+¨A¨q°#Ó	6×	:Ñ	:À¸sÐ	:Ó	C€BØ	×	Ñ	˜!˜Q Ó	$×	(Ñ	(¨a¨SÐ	(Ó	1€Bà $€GØ $€GØ#€FØ�1ƒ~Ø�3˜‘9ÑˆØÐÜ—Y‘Y˜r 5§?¡?°1Ó#5Ó6×>Ñ>¸qÀ%ÈÓM×QÑQÐRSÓTˆFÜ—Y‘Y˜r 5§?¡?°1Ó#5Ó6×>Ñ>¸qÀ%ÈÓM×QÑQÐRSÓTˆFÜ—‘Ø—‘˜rÓ"Ø—‘˜a ¨Ó,ó‰Bð
 —Z‘Z  5¨#Ó.×2Ñ2°1Ó5ˆFØ—Z‘Z  5¨#Ó.×2Ñ2°1Ó5ˆFÜ—‘Ø—‘˜rÓ"Ü—
‘
˜A˜u c˜?°4·;±;Ô?óˆBð �t‰m˜fÑ$¨Ñ,¨tÑ3°dÑ:¸QÑ>ˆØˆS�4‰Z˜& 4™-¨!Ñ+Ñ+ˆà�\‰\˜"ÓˆÜ˜r 1Ó%ˆÜ˜r 1Ó%ˆä�I‰I�k×)Ñ)¨!¨U°C¸Ó=¸rÓBÜ�i‰i˜Ÿ™ a¨°°SÓ9¸2Ó>ñ?àñð 	ð
 —/‘/ %§+¡+Ó.×1Ñ1°%·+±+Ó>ˆØ�1‚~ð —‘˜˜E 3Ó'¨"¯'©'°!°U¸CÓ*@À4Ç>Á>ÐRTÓCUÑ*UÑUØ—.‘. Ó$ñ%÷ ‰S�a�SˆS‹\ß‰W�Q‹Zð 	ð �1‚~Ø—‘˜Q˜C�“ˆà�W˜fÐ%Ð%r-   Úout2c
                ó¸   — t        | |||||||||	«
      }|
||f}t        |«      D ]2  \  }}|€Œ	t        ||   |j                  «       t	        |||   d¬«       Œ4 |S r  )r×  Ú	enumerater   r  r   )rj   r¼   rë   rº  r»  r¼  r½  r¾  r¿  rÀ  rB  rC  rØ  r  rU   rg  rG   s                    r.   Únative_group_norm_backward_outrÛ  r  sz   € ô" (Ø�U˜D $¨¨q°!°S¸%Àó€Fð ˜˜dÐ#€JÜ˜&Ó!ò Q‰ˆˆ1Ø‰=Ü˜j¨™m¨Q¯W©WÔ5Ü Q°
¸1±È4ÖPðQð
 Ðr-   c                 ó,   — | �| j                  |«      S | S r6   ©r9   )r:   rî   s     r.   Ú_maybe_castrÞ  �  s   € Ø€}Ø�t‰t�E‹{ÐØ€Hr-   Úgrad_outÚnormalized_shapeÚbiasc                 ó  ‡!— |j                   }|j                  «       }	t        j                  |j                  «      Š!ˆ!fd„| |||fD «       \  }
}}}|
€J ‚|	t        |«      z
  }||d  }|d | }g }g }t        |	«      D ]*  }||k\  r|j                  |«       Œ|j                  |«       Œ, t        |«      }t        |«      }|dk  s|dk  rN|d   r|j                  |«      nd |d   r|j                  ||d  «      nd |d   r|j                  ||d  «      fS d fS t        ||j                  «       «      }t        ||j                  «       «      }||z
  |z  }|�|
|z  }n|
}||z  }t        j                  ||d«      }t        j                  ||«      }t        j                  ||d«      }t        j                  ||«      }||z
  |z
  }d }d }d } |d   r||z  |z  }|d   r0|�.t        |«      dkD  rt        j                  |
|z  |d«      }n|
|z  }|d   r8|�6t        |«      dkD  rt        j                  |
|d«      } n|
j                  «       } t        ||j                  «      t        ||j                  «      t        | |j                  «      fS )Nc              3   ód   •K  — | ]'  }|�|j                  ‰«      j                  «       n|–— Œ) y ­wr6   )r9   r­  ©rÌ  r:   r;   s     €r.   rÍ  z-native_layer_norm_backward.<locals>.<genexpr>¤  s5   øè ø€ ò 9àð 12°ˆ�‰ÐÓ×*Ñ*Ô,À1ÓDñ9ùs   ƒ-0r   r$   r%   TF)r  rL   rB   Úget_computation_dtyperî   r�  rQ   rm  r   rl  rT   rf   rì   rß   r’  rÞ  )"rß  r¼   rà  rë   rº  rÉ   rá  rÀ  Úinput_shapeÚ
input_ndimÚgrad_out_castÚ
input_castÚweight_castÚ	bias_castÚaxisÚ
inner_dimsÚ
outer_dimsÚinner_dim_indicesÚouter_dim_indicesrg  r¼  ÚMÚx_hatÚ
grad_x_hatÚaÚbrÔ  rÕ  rÖ  rH   rÏ  Úd_weightrÑ  r;   s"                                    @r.   Únative_layer_norm_backwardr÷  –  sÇ  ø€ ð —+‘+€KØ—‘“€JÜ×3Ñ3°E·K±KÓ@Ðó9à˜E 6¨4Ð0ô9Ñ5€M�:˜{¨Ið Ð$Ð$Ð$àœÐ,Ó-Ñ-€DØ˜T˜UÐ#€JØ˜U˜dÐ#€JØ#%ÐØ#%ÐÜ�:Óò (ˆØ�Š9Ø×$Ñ$ QÕ'à×$Ñ$ QÕ'ð	(ô 	ˆZÓ€AÜˆZÓ€AØˆA‚v��a’à,7¸ªNˆE�O‰O˜KÔ(ÀØ3>¸q²>ˆE�O‰O˜K¨¨Ð.Ô/ÀtØ3>¸q²>ˆE�O‰O˜K¨¨Ð.Ó/ð
ð 	
ð HLð
ð 	
ô
 ˜T :§>¡>Ó#3Ó4€DÜ˜T :§>¡>Ó#3Ó4€DØ˜$Ñ $Ñ&€EØÐØ" [Ñ0‰
à"ˆ
Ø�Q‰€AÜ�	‰	�*Ð/°Ó6€AÜ	�‰�:˜uÓ	%€BÜ	�‰�2Ð(¨$Ó	/€BÜ	�‰�5˜"Ó	€Bà�‰E�B‰J€EØ $€GØ!%€HØ#€FØ�1‚~Ø˜!‘8˜uÑ$ˆà�1‚~˜+Ð1ÜÐ Ó! AÒ%Ü—y‘y °Ñ!6Ð8IÈ5ÓQ‰Hà$ uÑ,ˆHà�1‚~˜)Ð/ÜÐ Ó! AÒ%Ü—Y‘Y˜}Ð.?ÀÓG‰Fà"×(Ñ(Ó*ˆFô 	�G˜UŸ[™[Ó)Ü�H˜eŸk™kÓ*Ü�F˜EŸK™KÓ(ðð r-   c          
      ó´   — t        | |||||||«      }||	|
f}t        |«      D ]2  \  }}|€Œ	t        ||   |j                  «       t	        |||   d¬«       Œ4 |S r  )r÷  rÚ  r   r  r   )rß  r¼   rà  rë   rº  rÉ   rá  rÀ  rB  rC  rØ  r  rU   rg  rG   s                  r.   Únative_layer_norm_backward_outrù  å  sw   € ô (Ø�%Ð)¨4°°v¸tÀ[ó€Fð ˜˜dÐ#€JÜ˜&Ó!ò Q‰ˆˆ1Ø‰=Ü˜j¨™m¨Q¯W©WÔ5Ü Q°
¸1±È4ÖPðQð
 Ðr-   Úrunning_meanÚrunning_varÚmomentumÚ
functionalc	                 ó2  — dgt        t        d| j                  «       «      «      z   }	t        j                  | j
                  «      }
|}|}|�r"t        j                  | j
                  «      }
| j                  |
¬«      }t        j                  ||	dd¬«      \  }}t        j                  ||z   «      }| |z
  |z  }t        j                  ||	«      }t        j                  ||	«      }|�!||z  d|z
  |z  z   }|s|j                  |«       |��2| j                  «       | j                  d   z  }t        j                  ||	«      }|||dz
  z  z  }||z  d|z
  |z  z   }|sá|j                  |«       nÏ|�|€J ‚|j                  |
d¬«      }|}|j                  |
d¬«      }|}|}dt        j                  ||z   «      z  }| j                  j                   dk7  r|}|}n"| j#                  d	«      }| j#                  d	«      }t%        || j                  «       dz
  «      }t%        || j                  «       dz
  «      }| |z
  |z  }|�2|j'                  «       }t%        || j                  «       dz
  «      }||z  }|�2|j'                  «       }t%        || j                  «       dz
  «      }||z   }| j                  j                   dk(  r8|j                  | j
                  ¬«      }|j                  | j
                  ¬«      }|j                  | j
                  ¬«      ||||fS )
Nr   r%   rö   T)rL   Ú
correctionr  r$   )rî   r‚   r¢  ©r   )rt  rQ   rL   rB   rå  rî   r9   rf   Úvar_meanÚrsqrtrö  r×   rý   r  r_  r�  r¥  rl  rT   r5  )r¼   rÉ   rá  rú  rû  rÓ   rü  r8  rý  Úreduction_dimsr;   Únew_running_meanÚnew_running_varÚ	input_accÚ
biased_varrë   rº  rÚ   Ú	save_meanÚ	save_rstdÚnÚsqueezed_varÚunbiased_varÚinvstds                           r.   Únative_batch_norm_helperr     sú  € ð �Sœ4¤ a¨¯©«Ó 5Ó6Ñ6€NÜ×3Ñ3°E·K±KÓ@ÐØ#ÐØ!€OÚÜ!×7Ñ7¸¿¹ÓDÐØ—H‘HÐ#4�HÓ5ˆ	Ü Ÿ>™>Ø˜>°aÀô
Ñˆ
�Dô �{‰{˜:¨Ñ+Ó,ˆà˜$‘, $Ñ&ˆä—M‘M $¨Ó7ˆ	Ü—M‘M $¨Ó7ˆ	ØÐ#Ø'¨)Ñ3°q¸8±|À|Ñ6SÑSÐÙØ×"Ñ"Ð#3Ô4ØÑ"Ø—‘“ §¡¨A¡Ñ.ˆAô !Ÿ=™=¨°^ÓDˆLØ'¨1°°A±©;Ñ7ˆLØ&¨Ñ5¸¸X¹ÈÑ8TÑTˆOÙØ×!Ñ! /Õ2àÐ'¨KÐ,CÐCÐCØ#—‘Ð->ÀT�ÓJˆØ'ÐØ!—n‘nÐ+<À4�nÓHˆØ%ˆØˆØ”e—j‘j ¨sÑ!2Ó3Ñ4ˆà�<‰<×Ñ Ò%Ø$ˆIØ‰IàŸ™¨Ó-ˆIØŸ™¨Ó-ˆIÜ   u§y¡y£{°Q¡Ó7ˆÜ" 6¨5¯9©9«;¸©?Ó;ˆØ˜$‘, &Ñ(ˆàÐØ—‘Ó!ˆÜ" 6¨5¯9©9«;¸©?Ó;ˆØ˜&‘ˆàÐØ�|‰|‹~ˆÜ   u§y¡y£{°Q¡Ó7ˆØ˜$‘ˆà‡|�|×Ñ˜EÒ!Ø—L‘L u§{¡{�LÓ3ˆ	Ø—L‘L u§{¡{�LÓ3ˆ	à�	‰	˜Ÿ™ˆ	Ó$ØØØØðð r-   r  Úsave_invstdc                 ó>   — t        | |||||||d«	      \  }}	}
}}||	|
fS ©NF©r  ©r¼   rÉ   rá  rú  rû  rÓ   rü  r8  rÚ   r  r	  rS   s               r.   Únative_batch_normr  R  s=   € ô *BØˆv�t˜\¨;¸À(ÈCÐQVó*Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r-   c           
      óä   — |€|€t         j                  | |||||«      S |€t        d«      ‚|€t        d«      ‚|rt         j                  | |||||||«      S t         j                  | ||||||«      S )Nz`running_mean is None, but running_var is provided. They should both be None or both be provided.z`running_var is None, but running_mean is provided. They should both be None or both be provided.)r�   Ú_native_batch_norm_legitrs  Ú$_native_batch_norm_legit_no_training)r¼   rÉ   rá  rú  rû  rÓ   rü  r8  s           r.   Únative_batch_norm_decompositionr  n  s±   € ð Ð Ð 3Ü×,Ñ,Ø�6˜4 ¨8°Só
ð 	
ð ÐÜð<ó
ð 	
ð ÐÜð<ó
ð 	
ñ ä×,Ñ,Ø�6˜4 ¨{¸HÀhÐPSó
ð 	
ô ×8Ñ8Ø�6˜4 ¨{¸HÀcó
ð 	
r-   c                 ól  — | j                  |«      }||z   dz
  |z  }|dk(  rZ|dk(  rU|D �cg c]  }|‘Œ }}|||z  |z
  z
  ||dz
  <   t        j                  j                  j                  j                  | ||«      S t        j                  j                  j                  j                  | ||«      S c c}w ©Nr$   r   )r+  rf   Úopsr�   rœ  r‡  rš  r   )ro  rŸ  rL   rˆ  r˜  rS   rˆ  s          r.   Úunsafe_chunk_py_implr  “  s­   € à�{‰{˜3Ó€HØ˜VÑ# aÑ'¨FÑ2€Jà�Q‚˜8 qš=Ø+1Ö2 a’zÐ2ˆÐ2Ø",°
¸VÑ0CÀhÑ0NÑ"Oˆ�F˜Q‘JÑÜ�y‰y�~‰~×5Ñ5×=Ñ=¸fÀkÐSVÓWÐWÜ�9‰9�>‰>×&Ñ&×-Ñ-¨f°jÀ#ÓFÐFùò 3s   «	B1c           
      óN   — t         j                  j                  | ||||d||«      S r  )r�   r  r‡  )r¼   rÉ   rá  rú  rû  rü  r8  s          r.   r  r  Ÿ  s5   € ô ×(Ñ(×0Ñ0ØØØØØØØØó	ð 	r-   c                 ó>   — t        | |||||||d«	      \  }}	}
}}||	|
fS r  r  r  s               r.   r  r  µ  s=   € ô *BØˆv�t˜\¨;¸À(ÈCÐQVó*Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r-   c                 ó>   — t        | ||d d |||d«	      \  }}}}	}	|||fS r  r  )
r¼   rÉ   rá  rÓ   rü  r8  rÚ   r  r	  rS   s
             r.   Ú!_native_batch_norm_legit_no_statsr   Æ  s<   € ô *BØˆv�t˜T 4¨°8¸SÀ%ó*Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r-   c                 óf   — t        | |||||||d«	      \  }}	}
}}|€J d«       ‚|€J d«       ‚||	|
||fS )NTú#new_running_mean should not be Noneú"new_running_var should not be Noner  )r¼   rÉ   rá  rú  rû  rÓ   rü  r8  rÚ   r  r	  r  r  s                r.   Ú#_native_batch_norm_legit_functionalr$  Õ  sl   € ô" 	!Øˆv�t˜\¨;¸À(ÈCÐQUó	ñØØØØØð Ð'ÐNÐ)NÓNÐ'ØÐ&ÐLÐ(LÓLÐ&Ø�9˜iÐ)9¸?ÐJÐJr-   c           	      óT  — t         j                  j                  | ||||d|«      }d}|t         j                  j                  j                  k(  r t         j                  j                  | |«      }t        j                  |t         j                  | j                  | j                  ¬«      S )a©  
    Return a reserve tensor for batch norm, used only by cudnn to pass forward state to the
    backward pass. This is needed for `_batch_norm_with_update` and `_batch_norm_no_update`,
    which support a variety of backends including cudnn. We create this tensor here to get
    the correct shape in the traced graph if we detect that will call the cudnn kernel,
    and rely on DCE to avoid materializing this tensor.
    Tr   )rî   Úlayoutr�  )
rf   Ú_CÚ_select_batch_norm_backendÚ_BatchNormBackendÚCudnnÚ(_get_cudnn_batch_norm_reserve_space_sizeÚemptyÚuint8r&  r�  )	r¼   rÉ   rá  rú  rû  r8  rÓ   ÚbackendÚreserve_sizes	            r.   Ú_get_batch_norm_reserve_tensorr0  î  sƒ   € ô  �h‰h×1Ñ1Øˆv�t˜\¨;¸¸có€Gð €LØ”%—(‘(×,Ñ,×2Ñ2Ò2Ü—x‘x×HÑHÈÐPXÓYˆÜ�;‰;ØœEŸK™K°·±ÀUÇ\Á\ôð r-   c                 ód   — t        | ||||d||d«	      \  }}}	}
}
t        | |||||d¬«      }|||	|fS )NTF©rÓ   ©r  r0  ©r¼   rÉ   rá  rú  rû  rü  r8  rÚ   r  r	  rS   Úreserves               r.   Ú_batch_norm_with_updater6  	  sa   € ô *BØØØØØØØØØó
*Ñ&€FˆI�y ! Qô -Øˆv�t˜\¨;¸Àdô€Gð �9˜i¨Ð0Ð0r-   c                 óŒ   — t        | ||||d||d«	      \  }}}	}
}t        | |||||d¬«      }|
€J d«       ‚|€J d«       ‚|||	||
|fS )NTr2  r"  r#  r3  )r¼   rÉ   rá  rú  rû  rü  r8  rÚ   r  r	  Únew_rmÚnew_rvr5  s                r.   Ú"_batch_norm_with_update_functionalr:  $  s‡   € ô  	!Øˆv�t˜\¨;¸¸hÈÈTó	ñØØØØØô -Øˆv�t˜\¨;¸Àdô€Gð ÐÐDÐDÓDÐØÐÐCÐCÓCÐØ�I˜y¨'°6¸6ÐBÐBr-   c                 ód   — t        | ||||d||d«	      \  }}}	}
}
t        | |||||d¬«      }|||	|fS )NFr2  r3  r4  s               r.   Ú_batch_norm_no_updater<  ?  sa   € ô *BØØØØØØØØØó
*Ñ&€FˆI�y ! Qô -Øˆv�t˜\¨;¸Àeô€Gð �9˜i¨Ð0Ð0r-   c                 ó²   — |�J ‚t        j                  | «      |k  j                  t         j                  ¬«      }|j	                  | «      | z  d|z  z  }||fS )Nrö   rd   )rf   rF  r9   r-  r-  )r¼   rP  rÔ   rœ  rH  s        r.   Ú_fused_dropout_decompositionr>  Z  s[   € ð ÐÐÐÜ�O‰O˜EÓ" QÑ&×*Ñ*´·±Ð*Ó=€DØ
�,‰,�uÓ
 Ñ
%¨¨q©Ñ
1€CØ�ˆ;Ðr-   )rî   r&  r�  Ú
pin_memoryÚnon_blockingrW  r�  r?  r@  rW  c                óÄ  — |r|t         j                  k(  sJ d«       ‚|rJ d«       ‚t        | t         j                  t        t
        t        t        f«      sJ ‚|€0|€.|€,t        | t         j                  «      r| j                  «       S | S d}t        | t         j                  «      r| }nt        j                  | «      }|�b||j                  k7  rS|�1|j                  dk(  r"t         j                  j                  ||«      }d}t         j                  j                  ||«      }|�$|s"t         j                  j                  ||«      }d}|�t        j                  ||¬«      S |S )NÚTODOFr¢  TrV  )rf   Ústridedr8   r   rŠ  r  r•  Úcomplexr’  Úscalar_tensorr�  r¥  Ú_primsÚconvert_element_typeÚ
device_put)	r:   rî   r&  r�  r?  r@  rW  Údtype_convertedÚx_tensors	            r.   Ú_to_copyrK  d  s0  € ñ ˜¤5§=¡=Ò0Ð8°&Ó8Ð0ÙÐ!˜6Ó!ˆ>Ü�aœ%Ÿ,™,¬¬U´D¼'ÐBÔCÐCÐCØ€~˜%˜-¨MÐ,AÜ�aœŸ™Ô&Ø—7‘7“9ÐàˆHØ€Oä�!”U—\‘\Ô"Ø‰ä×&Ñ& qÓ)ˆàÐ˜f¨¯©Ò7àÐ §¡°Ò!5Ü—|‘|×8Ñ8¸À5ÓIˆHØ"ˆOÜ—<‘<×*Ñ*¨8°VÓ<ˆàÐ¡Ü—<‘<×4Ñ4°X¸uÓEˆØˆàÐ Ü�{‰{˜8°=ÔAÐAØ€Or-   c                 ó,   — t         j                  | «      S r6   )r�   Úalias)r:   s    r.   Únop_decompositionrN  ’  s   € ô �:‰:�a‹=Ðr-   Úout3Úexponential_average_factorÚepsilonc           
      ó  — t         j                  | |||||||«      \  }}	}
|r%||	|
| j                  dt        j                  ¬«      fS ||j                  d«      |j                  d«      | j                  dt        j                  ¬«      fS )Nr   rö   )r�   r  rl  rf   r-  )r¼   rÉ   rá  rú  rû  rÓ   rP  rQ  rô  rõ  rë  s              r.   Úcudnn_batch_normrS  š  s”   € ô ×$Ñ$ØØØØØØØ"Øó	�G€A€qˆ!ñ Ø�1�a˜Ÿ™¨´U·[±[˜ÓAÐBÐBà	Ø×Ñ˜ÓØ×Ñ˜ÓØ�‰˜¤E§K¡KˆÓ0ð	ð r-   c                 óž   — t        |«      D ]>  \  }}|dk(  sŒ|| j                  k  r| j                  |   |k(  rŒ.| j                  |«      } Œ@ | S rY   )rÚ  r|  r  rR   )r:   Úbroadcast_maskrì  rœ  s       r.   Ú_broadcast_batch_norm_backwardrV  ¼  sO   € Ü Ó/ò "‰
ˆˆdØ�1‹9˜d Q§V¡Všm°·±¸±ÀÓ0EØ—‘˜DÓ!‰Að"ð €Hr-   r5  c                 ó*   — t        | |||||||||	«
      S r6   )Únative_batch_norm_backward)rß  r¼   rÉ   rú  rû  r  r  r>  r8  rÀ  r5  s              r.   Úbatch_norm_backwardrY  Ã  s/   € ô &ØØØØØØØØØØóð r-   c
                 óä  ‡&— |j                   }
|�|j                   }n|
}t        j                  |j                   «      Š&ˆ&fd„| ||||||fD «       \  }}}}}}}|j                  }|j	                  «       }|dk\  sJ d«       ‚d}t        t        |«      «      ||   z  }|}|}|r|�|€"J ‚|�|€J ‚|}t        j                  ||z   «      }dg|z  }||   ||<   g }t        |«      D ]  }||k7  sŒ	|j                  |«       Œ t        ||«      }d|z  }t        j                  ||«      }t        j                  |||z
  z  |«      }t        ||z  |«      }t        t        j                  ||z  ||z  «      |«      } |€t        ||«      dz  }!nt        ||z  |«      }!|r||z
  | z  }"||"z
  |z
  |!z  }#n||!z  }#|	d   r||z  }$nd }$|	d   r|}%nd }%|#j                  |
«      t        |$|«      t        |%|«      fS )Nc              3   óH   •K  — | ]  }|�|j                  ‰«      n|–— Œ y ­wr6   rÝ  rä  s     €r.   rÍ  z-native_batch_norm_backward.<locals>.<genexpr>ú  s,   øè ø€ ò 	àð $% =ˆ�‰ÐÔ°aÓ7ñ	ùs   ƒ"r%   z$rank of the input must be at least 2r$   rd   )rî   rB   rå  r  rL   r   rt  rf   r  rQ   rm  rV  rì   rß   r9   rÞ  )'rß  r¼   rÉ   rú  rû  r  r  r>  r8  rÀ  r¨  Úweight_dtyperè  ré  rê  Úrunning_mean_castÚrunning_var_castÚsave_mean_castÚsave_invstd_castræ  Ú
input_rankrì  Únum_featuresrë   r  rU  Úreduction_axesrg  rþ   Úgrad_output_sumÚdot_pÚ	grad_meanÚ
proj_scaleÚ
grad_scaleÚprojrU   rd  Ú	grad_biasr;   s'                                         @r.   rX  rX  ß  ss  ø€ ð —+‘+€KØÐØ—|‘|‰à"ˆÜ×3Ñ3°E·K±KÓ@Ðó	ð ØØØØØØð
ô	ñØØØØØØØð —+‘+€KØ—‘“€JØ˜Š?ÐBÐBÓBˆ?à€DÜœ˜[Ó)Ó*¨[¸Ñ->Ñ>€LØ€DØ€FÙØÐ)Ð.>Ð.JÐJÐJà Ð,Ð1AÐ1MÐMÐMØ ˆÜ—‘Ð-°Ñ3Ó4ˆà!"  jÑ 0€NØ& tÑ,€N�4Ñà "€NÜ�:Óò %ˆØ�‹9Ø×!Ñ! !Õ$ð%ô *¨$°Ó?€DØ�Ñ€DÜ—i‘i ¨~Ó>€OÜ�I‰I�m z°DÑ'8Ñ9¸>ÓJ€Eä.¨ÀÑ/EÀ~ÓV€IÜ/´·	±	¸%À$¹,ÈÐQWÉÓ0XÐZhÓi€JàÐÜ3°F¸NÓKÈcÑQ‰
ä3Ø�[Ñ  .ó
ˆ
ñ Ø˜TÑ! ZÑ/ˆØ$ tÑ+¨yÑ8¸JÑF‰
à" ZÑ/ˆ
à�1‚~Ø˜f‘n‰àˆà�1‚~Ø#‰	àˆ	ð 	�‰�kÓ"Ü�K Ó.Ü�I˜|Ó,ðð r-   c
                ó¸   — t        | |||||||||	«
      }|
||f}t        |«      D ]2  \  }}|€Œ	t        ||   |j                  «       t	        |||   d¬«       Œ4 |S r  )rX  rÚ  r   r  r   )rß  r¼   rÉ   rú  rû  r  r  r>  r8  rÀ  rB  rC  rØ  r  rU   rg  rG   s                    r.   Únative_batch_norm_backward_outrl  D	  sƒ   € ô" (ØØØØØØØØØØó€Fð ˜˜dÐ#€JÜ˜&Ó!ò Q‰ˆˆ1Ø‰=Ü˜j¨™m¨Q¯W©WÔ5Ü Q°
¸1±È4ÖPðQð
 Ðr-   Úsave_varc                 óB   — t         j                  || |||||d|g d¢«
      S ©NT)TTT©r�   rX  )r¼   rj   rÉ   rú  rû  r  rm  rQ  s           r.   Úmiopen_batch_norm_backwardrq  j	  s5   € ô ×*Ñ*ØØØØØØØØØÚóð r-   ÚreserveSpacec	                 óB   — t         j                  || |||||d|g d¢«
      S ro  rp  )	r¼   rj   rÉ   rú  rû  r  rm  rQ  rr  s	            r.   Úcudnn_batch_norm_backwardrt  „	  s5   € ô ×*Ñ*ØØØØØØØØØÚóð r-   c                 óÊ  ‡‡‡‡‡— | j                   Š| j                  Št        ‰«      Št        j                  ‰dv ˆfd„«       | j                  dd  D ]  }t        j                  |dk7  ˆfd„«       Œ  ‰d   |d   z  dk(  rx‰d   |d   z  dk(  rjt        d„ t        ‰dd  |«      D «       «      }t        d„ t        ‰dd  ||«      D «       «      }t        j                  j                  j                  | ||«      S d	„ Šd
„ Šˆˆˆfd„} |‰d   |d   «      \  }}}}	 |‰d   |d   «      \  }
}}}| dt        |d«      |
f   }|	s|st        j                  |d¬«      S d„ } |||||	d¬«      \  }} |||||d¬«      \  }}d }t        t        |j                  d   «      t        |j                  d   «      «      D ]!  \  }}|€|d|d d …|f   }Œ||d|d d …|f   z   }Œ# |||z  z  S )NrÛ  c                  ó   •— d‰ › �S )Nz9adaptive_avg_pool2d(): Expected 3D or 4D tensor, but got r,   ru  s   €r.   r   z%adaptive_avg_pool2d.<locals>.<lambda>©	  s   ø€ ÐKÈDÈ6ÐR€ r-   rX  r   c                  ó"   •— dt        ‰ «      › d�S )Nzjadaptive_avg_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has shape r  rá  rã  s   €r.   r   z%adaptive_avg_pool2d.<locals>.<lambda>®	  s   ø€ ð 9Ü9>¸u»¸ÀaðI€ r-   rP   c              3   ó,   K  — | ]  \  }}||z  –— Œ y ­wr6   r,   )rÌ  rg  r(  s      r.   rÍ  z&adaptive_avg_pool2d.<locals>.<genexpr>´	  s   è ø€ ÒG¡$ ! Q�q˜A•vÑGùó   ‚c              3   ó:   K  — | ]  \  }}}||d z
  |z  z
  –— Œ y­w)r$   Nr,   )rÌ  rg  r(  r•  s       r.   rÍ  z&adaptive_avg_pool2d.<locals>.<genexpr>µ	  s'   è ø€ ò 
Ù '  1 aˆA��Q‘˜!‘�Oñ
ùs   ‚c                 ó8   — t        j                  | |z  |d¬«      S )NÚtrunc©Úrounding_mode©rf   Údiv©rô  rõ  rë  s      r.   Ústart_indexz(adaptive_avg_pool2d.<locals>.start_indexº	  s   € Ü�y‰y˜˜Q™ °Ô9Ð9r-   c                 óJ   — t        j                  | dz   |z  |z   dz
  |d¬«      S )Nr$   r|  r}  r  r�  s      r.   Ú	end_indexz&adaptive_avg_pool2d.<locals>.end_index½	  s&   € Ü�y‰y˜!˜a™% 1™ q™¨1Ñ,¨a¸wÔGÐGr-   c                 óô  •— t        j                  |‰t         j                  ¬«      } ‰||| «      }| |z  dz   }| |z  }|dk(  xs ||z  dk(   }|r|dz  }n
|dk(  r|dz  }t        j                  |‰t         j                  ¬«      }|j                  d«      |z   }|rUt        j                  | dz
  |j
                  |j                  ¬«      }	t        j                  ||	«      } ‰||| «      }
|
|z
  }n|}||||fS )Nr�  r$   r   rP   r³  )rf   r“  r´  rR   rE  rî   r�  Úminimum)Úin_sizeÚout_sizeÚorangeÚi0Ú	maxlengthÚin_size_modÚadaptiveÚ	range_maxr›  ÚmaxvalÚi1r’  r�  r„  r‚  s               €€€r.   Úcompute_idxz(adaptive_avg_pool2d.<locals>.compute_idxÀ	  s  ø€ Ü—‘˜h¨v¼U¿[¹[ÔIˆÙ˜ ¨7Ó3ˆð ˜xÑ'¨!Ñ+ˆ	Ø Ñ(ˆà# qÑ(ÒG¨H°{Ñ,BÀaÑ,GÐHˆÙØ˜‰N‰IØ˜AÒØ˜‰NˆIä—L‘L °6ÄÇÁÔMˆ	Ø�l‰l˜2Ó Ñ*ˆÙô ×(Ñ(Ø˜!‘ 3§9¡9°S·Z±ZôˆFô —-‘-  VÓ,ˆCñ ˜6 8¨WÓ5ˆBØ˜"‘W‰FàˆFØ�F˜I xÐ/Ð/r-   .r@  )rœ   rP   r~   c                 óÒ   — t        |t        «      r| |fS |dk  sJ ‚||j                  d«      k\  }|dk(  rt        |d«      }t	        j
                  | |d«      } t        || «      }| |fS )Nr   rP   rX  r@  r‘   )r8   r   rR   rT   rf   ra  )Úvalsr’  rŽ  r�  rL   rœ  s         r.   Ú
maybe_maskz'adaptive_avg_pool2d.<locals>.maybe_maskè	  sw   € Ü�fœgÔ&Ø˜�<Ðð ˜’7ˆN�7à × 0Ñ 0°Ó 4Ñ4ˆDØ�bŠyÜ(¨¨qÓ1�Ü×$Ñ$ T¨4°Ó5ˆDä& v°¨tÓ4ˆFØ˜�<Ðr-   )r�  rL   rœ   )r�  r  r�  rf   r€   râ  rô  Únnrý  Ú
avg_pool2drT   rë   r   rQ   )r¼   rñ  rÞ  ru  Úkernelr‘  ÚidxhÚlength_hÚrange_max_hÚ
adaptive_hÚidxwÚlength_wÚrange_max_wÚ
adaptive_wr“  r”  Úretrg  Újr�  r„  r|  r  r‚  s                      @@@@@r.   Úadaptive_avg_pool2dr¢  Ÿ	  s.  ü€ ð
 �\‰\€FØ�K‰K€EÜˆu‹:€DÜ	‡L�LØ�ˆÛRôð �[‰[˜˜Ðò 
ˆÜ�‰Ø�‰FóIõ	
ð
ð ˆR�y�;˜r‘?Ñ" aÒ'¨E°"©I¸ÀB¹Ñ,GÈ1Ò,LÜÑG¬#¨e°B°C¨j¸+Ó*FÔGÓGˆÜñ 
Ü+.¨u°R°S¨z¸;ÈÓ+Oô
ó 
ˆô �x‰x×"Ñ"×-Ñ-¨e°V¸VÓDÐDò:òHö0ñ@ /:¸%À¹)À[ÐQSÁ_Ó.UÑ+€Dˆ(�K Ù.9¸%À¹)À[ÐQSÁ_Ó.UÑ+€Dˆ(�K à�Ô'¨¨aÓ0°$Ð6Ñ7€Dá™jÜ�z‰z˜$ HÔ-Ð-ò ñ  Øˆh˜¨j¸bô�N€Dˆ(ñ  Øˆh˜¨j¸bô�N€Dˆ(ð
 €CÜœ˜dŸj™j¨™nÓ-¬u°T·Z±ZÀ±^Ó/DÓEò +‰ˆˆ1Øˆ;Ø�s˜Ašq !�|Ñ$‰Cà˜˜S !¢Q¨˜\Ñ*Ñ*‰Cð	+ð
 �(˜XÑ%Ñ&Ð&r-   )rk   ro  c                ó$   — t        | |||d|¬«      S )NT©Úinplacerk   ©Ú
_index_add©r:   rL   rž  ro  rk   s        r.   Ú
index_add_r©  
  s   € ô �a˜˜e V°TÀÔGÐGr-   c                ó$   — t        | |||d|¬«      S )NFr¤  r¦  r¨  s        r.   Ú	index_addr«  
  s   € ô �a˜˜e V°UÀ%ÔHÐHr-   r¥  c                ó8  ‡‡‡‡‡‡— t        j                  | j                  ‰«      Št        j                  ‰j                  dk  ˆfd„«       ‰j                  dk(  r‰j                  d«      ndŠ|j                  dkD  r|j                  ‰«      ndŠt        j                  ‰‰k(  ˆˆˆfd„«       ‰dk7  rft        j                  | j                  «      Št        j                  ‰t        k(  xs t        j                  t        ‰«      ‰«      ˆˆfd„«       |‰z  }| j                  dk(  }|r| j                  d«      n| }d‰z  ‰fz   }|rt        j                  nt        j                  }	 |	|||d¬«      }
|r| S |r|
j                  d«      S |
j!                  «       S )	Nr$   c                  ó$   •— d‰ j                   › d�S ©Nz(Index should have dimension 1 or 0 (got r;  ru  ©rž  s   €r.   r   z_index_add.<locals>.<lambda>-
  ó   ø€ Ð:¸5¿:¹:¸,ÀaÐH€ r-   r   c                  ó   •— d‰› d‰› d‰ ›�S )NzNumber of indices (z') should be equal to tensor.size(dim) (z), for dim=r,   )rL   Ú
index_sizerp  s   €€€r.   r   z_index_add.<locals>.<lambda>3
  s!   ø€ Ð% j \Ð1XÐYdÐXeÐeqÐmpÐlrÐs€ r-   c                  ó(   •— dt        ‰ «      › d‰› d�S )Nzalpha argument of type z cannot be safely cast to type ú!)r¥  )rk   Úpython_types   €€r.   r   z_index_add.<locals>.<lambda>:
  s   ø€ Ð-¬d°5«k¨]Ð:YÐZeÐYfÐfgÐh€ r-   r6   Tr  )rB   Úcanonicalize_dimsr|  rf   r€   r+  Údtype_to_typerî   r•  Úis_weakly_lesser_typer¥  rR   r�   Ú
index_put_Ú	index_putrö  r­  )r:   rL   rž  ro  r¥  rk   Úzero_dimrS  r›  rº  rÃ   r²  rµ  rp  s    ``  `     @@@r.   r§  r§  !
  sM  ý€ ô ×
!Ñ
! !§&¡&¨#Ó
.€CÜ	‡L�LØ�
‰
�a‰ÛHôð #(§*¡*°¢/�—‘˜A”°q€JØ&,§k¡k°A¢o�&—+‘+˜cÔ"¸1€KÜ	‡L�LØ�zÑ!Ýsôð �‚zÜ×)Ñ)¨!¯'©'Ó2ˆÜ�‰Øœ4Ñò EÜ×*Ñ*¬4°«;¸ÓDÜhô	
ð
 ˜%‘ˆà�v‰v˜‰{€HÙ#ˆ�‰�QŒ¨€BØ
�C‰-˜5˜(Ñ
"€CÙ#*”—’´·±€IÙ
�B˜˜V°Ô
5€CÙØˆá!)ˆs�{‰{˜1‹~Ð?¨s¯~©~Ó/?Ð?r-   c           
      ó  — t        j                  t        | «      dkD  d„ «       t        | «      }| d   j                  «       }|dd  }t	        d„ | D «       «      }|r||f}n||f}||z   }| d   j                  ||«      }dt        |«      z  }	t        |«      D ]j  }
| |
   }t        j                  ||	d||j                  d«      z
  fz   |«      }|rt        j                  ||d|
¬«      }ŒRt        j                  ||d|
¬«      }Œl |S )Nr   c                   ó   — y)Nz#received an empty list of sequencesr,   r,   r-   r.   r   zpad_sequence.<locals>.<lambda>L
  rÄ  r-   r$   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wrÊ  ©r+  )rÌ  r:   s     r.   rÍ  zpad_sequence.<locals>.<genexpr>P
  s   è ø€ Ò/ �!—&‘&˜—)Ñ/ùs   ‚)r   r   ©rL   rž  )
rf   r€   r�  r+  r‹   rE  rQ   r�   rk  r   )Ú	sequencesÚbatch_firstÚpadding_valueÚsequences_sizeÚmax_sizeÚtrailing_dimsÚmax_lenÚout_dimsrÃ   Údim_paddingsrg  ÚcurrseqÚrows                r.   Úpad_sequencerÌ  I
  s#  € ô 
‡L�L”�Y“ !Ñ#Ñ%RÔSÜ˜“^€NØ˜‰|× Ñ Ó"€HØ˜Q˜R�L€MÜÑ/ YÔ/Ó/€GÙØ" GÐ,‰à˜^Ð,ˆØ˜-Ñ'€HØ
�A‰,×
Ñ
 ¨-Ó
8€CØœC Ó.Ñ.€LÜ�>Ó"ò @ˆØ˜A‘,ˆÜ×"Ñ"Ø�\ Q¨°'·,±,¸q³/Ñ(AÐ$BÑBÀMó
ˆñ Ü×%Ñ% c¨3°A¸QÐ%Ó?‰Cä×%Ñ% c¨3°A¸QÐ%Ó?‰Cð@ð €Jr-   c                 ó"   — t        | |||d¬«      S )NT©r¥  ©Ú_index_copy©r:   rL   rž  ro  s       r.   Úindex_copy_rÒ  d
  s   € ä�q˜#˜u f°dÔ;Ð;r-   c                 ó"   — t        | |||d¬«      S )NFrÎ  rÏ  rÑ  s       r.   Ú
index_copyrÔ  i
  s   € ô �q˜#˜u f°eÔ<Ð<r-   c                óÔ  ‡— t        j                  | j                  |«      }t        j                  ‰j                  dk  ˆfd„«       | j                  dk(  }|r| j                  d«      n| }‰j                  dk(  r‰j                  d«      n‰Šd|z  ‰fz   }|rt        j                  nt        j                  } ||||«      }	|r| S |r|	j                  d«      S |	j                  «       S )Nr$   c                  ó$   •— d‰ j                   › d�S r®  ru  r¯  s   €r.   r   z_index_copy.<locals>.<lambda>u
  r°  r-   r   r6   )rB   r¶  r|  rf   r€   rR   r�   r¹  rº  rö  r­  )
r:   rL   rž  ro  r¥  r»  rS  r›  rº  rÃ   s
     `       r.   rÐ  rÐ  o
  sÂ   ø€ ô ×
!Ñ
! !§&¡&¨#Ó
.€CÜ	‡L�LØ�
‰
�a‰ÛHôð
 �v‰v˜‰{€HÙ#ˆ�‰�QŒ¨€BØ"'§*¡*°¢/ˆE�O‰O˜AÔ°u€EØ
�C‰-˜5˜(Ñ
"€CÙ#*”—’´·±€IÙ
�B˜˜VÓ
$€CÙØˆá!)ˆs�{‰{˜1‹~Ð?¨s¯~©~Ó/?Ð?r-   c                 ó  — t        j                  | j                  d«      | «      }t        j                  t        j                  | «       «      }| j
                  r| j                  d«      }n|}|t        j                  |«      z
  |fS )Nr,   r   )rf   r†  rl  re   rã   r²  rD  )ry   rˆ   rh   rá   s       r.   Úlog_sigmoid_forwardrØ  …
  sh   € ô �-‰-˜Ÿ™ rÓ*¨DÓ
1€CÜ�	‰	”5—9‘9˜T“?Ð"Ó#€AØ‡|‚|Ø—‘ Ó%‰àˆØ”—‘˜Q“Ñ Ð'Ð'r-   ÚlowÚhighc                 ó˜   — t        j                  | j                  t        |«      t        |«      | j                  | j
                  |¬«      S )N)rÙ  rÚ  rî   r�  rÔ   )ÚprimsÚ_uniform_helperr  r   rî   r�  )r:   rÙ  rÚ  rÔ   s       r.   rÖ   rÖ   ’
  s=   € ô × Ñ Ø	�‰Ü�c‹NÜ�t‹_Ø�g‰gØ�x‰xØôð r-   c                 ó<   — | j                  t        | |||«      «      S r6   )r×   rÖ   )ry   rÙ  rÚ  rÔ   s       r.   Úuniform_rß  ¤
  s   € à�:‰:”g˜d C¨¨yÓ9Ó:Ð:r-   c                 ó"  — t        | «      dz
  }|�>t        j                  |d u d„ «       t        j                  t        |«      |k(  d„ «       |S |�¨t        j                  |d u d„ «       t        j                  t        |«      |k(  d„ «       g }t        |«      D ]Z  \  }}t	        |«      |k(  r$|j                  | |dz      t	        |«      z  «       Œ8|j                  t        | |dz      |z  «      «       Œ\ |S t        j                  dd„ «       y )Nr%   c                   ó   — y©Nz9Must specify exactly one of output_size and scale_factorsr,   r,   r-   r.   r   z.upsample_compute_output_size.<locals>.<lambda>¯
  rÄ  r-   c                   ó   — y©NÚ r,   r,   r-   r.   r   z.upsample_compute_output_size.<locals>.<lambda>±
  rÄ  r-   c                   ó   — yrâ  r,   r,   r-   r.   r   z.upsample_compute_output_size.<locals>.<lambda>·
  rÄ  r-   c                   ó   — yrä  r,   r,   r-   r.   r   z.upsample_compute_output_size.<locals>.<lambda>¹
  rÄ  r-   Fc                   ó   — yrâ  r,   r,   r-   r.   r   z.upsample_compute_output_size.<locals>.<lambda>Â
  rÄ  r-   )r�  rf   r€   rÚ  rŠ  rm  r   )r/  rñ  Úscale_factorsÚspatial_dimensionsrg  r•  s         r.   Úupsample_compute_output_sizerë  ª
  s  € Ü˜Z›¨1Ñ,ÐØÐÜ�‰Ø˜TÐ!ÙOô	
ô 	�‰”S˜Ó%Ð);Ñ;¹ZÔHØÐØÐ ä�‰Ø˜4ÐÙOô	
ô 	�‰”S˜Ó'Ð+=Ñ=¹zÔJØˆÜ˜mÓ,ò 	C‰DˆAˆqÜ�1‹v˜Š{Ø×"Ñ" :¨a°!©eÑ#4´s¸1³vÑ#=Õ>à×"Ñ"¤7¨:°a¸!±eÑ+<¸qÑ+@Ó#AÕBð		Cð
 ÐÜ	‡L�LØÑRõr-   c                 ó   — | €y | |   S r6   r,   )Úscalesr›  s     r.   Úget_scale_valuerî  Æ
  s   € Ø€~ØØ�#‰;Ðr-   ré  c                 óx   — t        | j                  «       ||«      }|r|nd gt        |«      z  }t        | ||«      S r6   ©rë  r+  r�  Ú_upsample_nearest©r¼   rñ  ré  Úosizerí  s        r.   Ú_upsample_nearest_vecrô  Ì
  s@   € ô )¨¯©«°{ÀMÓR€Eá&‰¨T¨F´S¸³ZÑ,?ð ô ˜U E¨6Ó2Ð2r-   c                 ó|   — t        | j                  «       ||«      }|r|nd gt        |«      z  }t        | ||d¬«      S ©NT©Úexactrð  rò  s        r.   Ú_upsample_nearest_exact_vecrù  á
  sB   € ô )¨¯©«°{ÀMÓR€Eá&‰¨T¨F´S¸³ZÑ,?ð ô ˜U E¨6¸Ô>Ð>r-   c                 óÀ  — g }t        |«      }|rdnd}t        |«      D ]¼  }||   }| j                  | |z      }	||   �|	|	||   z  z  n|	|z  }
t        j                  |t        j
                  | j                  ¬«      }||z   |
z  j                  t        j                  «      }t        |dz
  |z
  «      D ]  }|j                  d«      }Œ |j                  |«       Œ¾ |S )Nr�   r‘   r³  r$   rP   )r�  rQ   r  rf   r“  ró   r�  r9   r´  rR   rm  )r¼   rñ  rí  rø  rš  Únum_spatial_dimsr¢  rÞ  ró  Úisizerl   Úoutput_indicesÚinput_indicesrS   s                 r.   Ú!_compute_upsample_nearest_indicesrÿ  ö
  sñ   € ð €GÜ˜;Ó'ÐÙ‰S˜s€FäÐ#Ó$ò &ˆð ˜A‘ˆØ—‘Ð-Ð-°Ñ1Ñ2ˆØ/5°a©yÐ/D�˜ ¨¡Ñ*Ò+È%ÐRWÉ-ˆäŸ™ e´5·=±=ÈÏÉÔVˆØ(¨6Ñ1°UÑ:×>Ñ>¼u¿{¹{ÓKˆÜÐ'¨!Ñ+¨aÑ/Ó0ò 	8ˆAØ)×3Ñ3°BÓ7‰Mð	8à�‰�}Õ%ð+&ð, €Nr-   )Úpreserve_memory_formatr  rí  c                 ó   — t        | ||g«      S r6   ©rñ  ©r¼   rñ  rí  s      r.   Úupsample_nearest1dr    s   € ô ˜U K°&°Ó:Ð:r-   c                 ó"   — t        | ||gd¬«      S rö  r  r  s      r.   Úupsample_nearest_exact1dr  "  s   € ô ˜U K°&°ÀÔFÐFr-   Úscales_hÚscales_wc                 ó    — t        | |||g«      S r6   r  ©r¼   rñ  r  r  s       r.   Úupsample_nearest2dr  0  s   € ô ˜U K°(¸HÐ1EÓFÐFr-   c                 ó$   — t        | |||gd¬«      S rö  r  r
  s       r.   Ú_upsample_nearest_exact2dr  =  s   € ô ˜U K°(¸HÐ1EÈTÔRÐRr-   Úscales_dc                 ó"   — t        | ||||g«      S r6   r  ©r¼   rñ  r  r  r  s        r.   Úupsample_nearest3dr  L  s   € ô ˜U K°(¸HÀhÐ1OÓPÐPr-   c                 ó&   — t        | ||||gd¬«      S rö  r  r  s        r.   Ú_upsample_nearest_exact3dr  Z  s!   € ô Øˆ{˜X x°Ð:À$ôð r-   rø  c                 óD  — t        | |||¬«      }d d g|z   }t        j                  | |«      }|j                  dk(  rdt	        j
                  | «      }| j                  d   }| j                  j                  dk(  r|dk  rt        j                  }|j                  |¬«      }|S )Nr÷  r@  r$   ÚcudarV  )rÿ  r�   Ú_unsafe_indexr|  rB   r   r  r�  r¥  rf   r[  r­  )	r¼   rñ  rí  rø  Úspatial_indicesrš  r  rW  Ú
n_channelss	            r.   rñ  rñ  l  sŸ   € ô 8Øˆ{˜F¨%ô€Oð �Tˆl˜_Ñ,€GÜ×Ñ  wÓ/€Fà‡{�{�aÒä×3Ñ3°EÓ:ˆð —[‘[ ‘^ˆ
Ø�<‰<×Ñ Ò&¨:¸ª>Ü!×3Ñ3ˆMà×"Ñ"°Ð"Ó?ˆØ€Mr-   c           	      óÚ   — |r|rd}n|rd}n|rd}nd}t        | «      |z  dk(  sJ t        | «      «       ‚t        dt        | «      |«      D �cg c]  }t        | |||z    «      ‘Œ c}S c c}w )Nrò  r@  r†   r%   r   )r�  rQ   râ  )ÚparamsÚ
has_biasesÚhas_projectionsÚ
group_sizerg  s        r.   Úgather_paramsr  ‡  s{   € Ù‘oØ‰
Ù	Ø‰
Ù	Ø‰
àˆ
äˆv‹;˜Ñ# qÒ(Ð5¬#¨f«+Ó5Ð(ä38¸¼CÀ»KÈÓ3TöØ./Œˆf�Q˜˜Z™Ð(Õ)òð ùò s   ÁA(c                 ó~   — |r'| d|z     |d|z     }}| d|z  dz      |d|z  dz      }}n| |   ||   }}d\  }}||||fS )Nr%   r$   ©NNr,   )r  Úhiddensrg  ÚbidirectionalÚ
cur_paramsÚ
cur_hiddenÚbidir_paramsÚbidir_hiddens           r.   Úparams_hiddensr'  —  sk   € ÙØ!'¨¨A©¡°¸¸A¹±�Jˆ
Ø%+¨A°©E°A©IÑ%6¸ÀÀAÁÈÁ	Ñ8J�l‰à!'¨¡¨G°A©J�Jˆ
Ø%/Ñ"ˆ�là�z <°Ð=Ð=r-   c                 ó€   — ||kD  sJ ‚|j                  | j                  d|||z
  «      «       | j                  dd|«      S rq   )rm  r,  )r$  Úlast_batch_sizeÚ
batch_sizer!  s       r.   Úupdate_hidden_for_packedr+  ¢  sE   € Ø˜ZÒ'Ð'Ð'Ø‡N�N�:×$Ñ$ Q¨
°OÀjÑ4PÓQÔRØ×Ñ˜Q  :Ó.Ð.r-   c           	      ót   — ||k(  r| S ||k  sJ ‚t        j                  | |j                  d|||z
  «      f«      S rq   )rf   Úconcatr,  )r$  r)  r*  Ú
inp_hiddens       r.   Ú update_hidden_for_packed_reverser/  ¨  sP   € ð ˜*Ò$ØÐØ˜ZÒ'Ð'Ð'Ü�<‰<àØ×Ñ˜a °*¸Ñ2NÓOð	
óð r-   c           	      óX  — |d   }|d   }|r|d   nd }	|r|d   nd }
g }g }|r|d   n|d   }|j                  dd|«      }t        j                  | t        |«      «      }|r|d d d…   }|D ]V  } | j                  d   }||k(  rn|rt        ||||«      }nt        ||||«      } || |||	||
«      }|}|j                  |«       ŒX |r|j                  «        n!|j                  |«       |j                  «        t        j                  |d«      }|st        j                  |d«      n|}||fS )Nr   r$   r%   r†   rP   )
r,  rf   r–  rt  r  r/  r+  rm  Úreverser-  )ÚinpÚhiddenr  r  Ú	hidden_fnÚbatch_sizesr1  Ú	ih_weightÚ	hh_weightÚih_biasÚhh_biasÚstep_outputr!  r)  r$  Ú	split_inprg  rÃ   Ú
hidden_outs                      r.   Úone_layer_rnn_datar=  ¶  sR  € ð �q‘	€IØ�q‘	€IÙ%ˆf�QŠi¨4€GÙ%ˆf�QŠi¨4€Gà€KØ"$€Gá)0�k "’o°kÀ!±n€OØ—‘˜q ! _Ó5€JÜ—‘˜C¤ kÓ!2Ó3€IÙØ™d ˜d‘Oˆ	Øò 'ˆØ�I‰I�a‰Lˆà˜aÒØáÜ9Ø˜O¨Q°ó‰Jô 2Ø˜O¨Q°óˆJñ ˜s J°	¸7ÀIÈwÓWˆ
ØˆØ×Ñ˜:Õ&ð#'ñ& Ø×ÑÕà�‰�zÔ"Ø�‰Ôä
�)‰)�K Ó
#€CÙ.5”—‘˜7 AÔ&¸:€JØ�
ˆ?Ðr-   c                 ó   ‡ — ˆ fd„}|S )Nc                 óD   •—  ‰t        j                  |||«      | z   «      S r6   ©r¾   Úlinear©rg  r$  r6  r8  r7  r9  Únonlinearitys         €r.   rH   zrnn_cell.<locals>.innerå  s    ø€ ÙœAŸH™H Z°¸GÓDÀqÑHÓIÐIr-   r,   ©rC  rH   s   ` r.   Úrnn_cellrE  ä  s   ø€ ôJð €Lr-   c                 ó   ‡ — ˆ fd„}|S )Nc                 ór   •— t        j                  | ||«      }  ‰t        j                  |||«      | z   «      S r6   r@  rB  s         €r.   rH   zrnn_cell_data.<locals>.innerì  s2   ø€ Ü�H‰H�Q˜	 7Ó+ˆÙœAŸH™H Z°¸GÓDÀqÑHÓIÐIr-   r,   rD  s   ` r.   Úrnn_cell_datarH  ë  s   ø€ ôJð €Lr-   c           	      óx  — |d   }|d   }|r|d   nd }|r|d   nd }	t        j                  | ||«      }
|r|
j                  d«      n|
}
|j                  d«      }g }|
D ]   } |||||||	«      }|j	                  |«       Œ" |r|j                  «        t        j                  |d«      }||j                  d«      fS )Nr   r$   r%   r†   )	r¾   rA  ÚfliprR   rm  r1  rf   r-  rö  )r2  r3  r  r  r4  r1  r6  r7  r8  r9  Úprecomputed_inputr$  r:  rg  rÃ   s                  r.   Úone_layer_rnnrL  ó  sÕ   € Ø�q‘	€IØ�q‘	€IÙ%ˆf�QŠi¨4€GÙ%ˆf�QŠi¨4€GäŸ™  i°Ó9ÐÙ5<Ð)×.Ñ.¨qÔ1ÐBSÐØ×!Ñ! !Ó$€JØ€KØò 'ˆÙ˜q *¨i¸À)ÈWÓUˆ
Ø×Ñ˜:Õ&ð'ñ Ø×ÑÔä
�)‰)�K Ó
#€Cà�
×"Ñ" 1Ó%Ð%Ð%r-   c                 ó�  — |d   }|d   }|r|d   }|d   }nFt        j                  |j                  «       «      }t        j                  |j                  «       «      }|d   j                  d«      }	|d   j                  d«      }
g }d}|	j                  d«      }d}d}d}d}| j	                  «       } |	j	                  «       }	|
j	                  «       }
t         j
                  j                  j                  j                  | |||||	|
|||||||||«      }|d   |d   |d   }}}||j                  d«      |j                  d«      ffS )Nr   r$   r%   r†   F)
rf   r
  r+  rR   r­  r  r�   Úmkldnn_rnn_layerr‡  rö  )r2  r3  r  r  r1  Úw0Úw1Úw2Úw3ÚhxÚcxr5  ÚmodeÚhidden_sizeÚ
num_layersr"  rÂ  r>  ÚoutputsrW   ÚhyÚcys                         r.   Úmkldnn_one_layer_lstmr[  	  sS  € Ø	�‰€BØ	�‰€BÙØ�A‰YˆØ�A‰Y‰ä�[‰[˜Ÿ™›Ó#ˆÜ�[‰[˜Ÿ™›Ó#ˆà	�‰×	Ñ	˜QÓ	€BØ	�‰×	Ñ	˜QÓ	€Bà€KØ€DØ—'‘'˜!“*€KØ€Jð €MØ€Kà€Eð �.‰.Ó
€CØ	�‰‹€BØ	�‰‹€BÜ�i‰i�n‰n×-Ñ-×5Ñ5ØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØó!€Gð$ ˜‘
˜G A™J¨°©
ˆ2€r€AØˆr�z‰z˜!‹}˜bŸj™j¨›mÐ,Ð,Ð,r-   c
                 óü  — |r| j                  dd«      n| } g }
t        |«      D ]½  }t        ||||«      \  }}}}|r
||dz
  k  r|nd} |	| |||«      \  }}|
j                  |«       |r! |	| |||d¬«      \  }}|
j                  |«       |r*t	        j
                  |g|j                  «       dz
  «      } n|} |dk7  sŒš|sŒ�||dz
  k  sŒ¦t	        j                  | |d¬«      } Œ¿ |r| j                  dd«      n| } | |
fS )Nr   r$   r‘   T)r1  )r>  )Ú	transposerQ   r'  rm  rf   r-  rL   rA  )r¼   r3  r  r  rW  rA  r>  r"  rÂ  Úlayer_fnÚfinal_hiddensrg  r#  r$  r%  r&  Úfwd_inpÚ
fwd_hiddenÚbwd_inpÚ
bwd_hiddens                       r.   Ú_rnn_helperrd  ;  s"  € ñ &1ˆE�O‰O˜A˜qÔ!°e€EØ€Mä�:Óò >ˆÜ=KØ�F˜A˜}ó>
Ñ:ˆ
�J ¨lñ $¨
°Q¸±UÒ(:‘'ÀˆÙ& u¨j¸*ÀjÓQÑˆ�Ø×Ñ˜ZÔ(áÙ"*Ø�| \°:Àtô#ÑˆG�Zð × Ñ  Ô,áÜ—I‘I˜w¨Ð0°'·+±+³-À!Ñ2CÓD‰EàˆEà�a‹<šE a¨*°q©.Ó&8Ü—M‘M %¨¸Ô=‰Eð)>ñ, &1ˆE�O‰O˜A˜qÔ!°e€EØ�-ÐÐr-   c	                 óè   — |j                  d«      }	t        ||d«      }t        | |	|||||||t        t        t        t        j                  «      ¬«      «
      \  }
}|
t        j                  |d«      fS ©Nr   F©r4  )	Úunbindr  rd  r   rL  rE  rf   r¨   Ústack©r¼   rS  r  r  rW  rA  r>  r"  rÂ  r3  rÃ   r_  s               r.   Úrnn_tanh_inputrk  d  ót   € ð �Y‰Y�q‹\€FÜ˜6 :¨uÓ5€FÜ$ØØØØØØØØØÜ”¬´%·*±*Ó)=Ô>óÑ€Cˆð ”—‘˜M¨1Ó-Ð-Ð-r-   c	                 óè   — |j                  d«      }	t        ||d«      }t        | |	|||||||t        t        t        t        j                  «      ¬«      «
      \  }
}|
t        j                  |d«      fS rf  )	rh  r  rd  r   rL  rE  rf   r´  ri  rj  s               r.   Úrnn_relu_inputrn  ƒ  rl  r-   c	                 óê   — |j                  d«      }	t        ||d«      }t        | |	||||||dt        t        |t        t        j                  «      ¬«      «
      \  }
}|
t        j                  |d«      fS ©Nr   F©r5  r4  )	rh  r  rd  r   r=  rH  rf   r´  ri  ©Údatar5  rS  r  r  rW  rA  r>  r"  r3  rÃ   r_  s               r.   Úrnn_relu_datart  ¢  ó{   € ð �Y‰Y�q‹\€FÜ˜6 :¨uÓ5€FÜ$ØØØØØØØØØÜÜØ#Ü#¤E§J¡JÓ/ô	
óÑ€Cˆð  ”—‘˜M¨1Ó-Ð-Ð-r-   c	                 óê   — |j                  d«      }	t        ||d«      }t        | |	||||||dt        t        |t        t        j                  «      ¬«      «
      \  }
}|
t        j                  |d«      fS rp  )	rh  r  rd  r   r=  rH  rf   r¨   ri  rr  s               r.   Úrnn_tanh_datarw  Å  ru  r-   c                 ól  — t        j                  |||«      | z   }|j                  d|«      }|d   j                  «       }	|d   j                  «       }
|d   j	                  «       }|d   j                  «       }|
|z  |	|z  z   }||j	                  «       z  }|€|nt        j                  ||d «      }||fS )Nr@  r   r$   r%   r†   ©r¾   rA  ÚchunkrÀ   r¨   )r2  rS  rT  r7  r9  Ú	hr_weightÚ	chunk_dimÚgatesÚchunked_gatesÚin_gateÚforget_gateÚ	cell_gateÚout_gaterZ  rY  s                  r.   Ú	lstm_cellrƒ  è  s»   € Ü�H‰H�R˜ GÓ,¨sÑ2€EØ—K‘K  9Ó-€MØ˜AÑ×&Ñ&Ó(€GØ Ñ"×*Ñ*Ó,€KØ˜aÑ ×%Ñ%Ó'€IØ˜QÑ×'Ñ'Ó)€HØ	�rÑ	˜W yÑ0Ñ	1€BØ	�B—G‘G“IÑ	€BØÐ ‰¤a§h¡h¨r°9¸dÓ&C€Bàˆrˆ6€Mr-   c           
      ó(  — |d   }|d   }|r|d   nd }|r|d   nd }t        |«      dk(  r|d   nt        |«      dk(  r|d   nd }	|d   j                  d«      }
|d   j                  d«      }t        j                  | ||«      }|r|j	                  d«      n|}g }|D ](  } t        | |
||||	d¬«      \  }
}|j                  |
«       Œ* |r|j                  «        t        j                  |d«      }||
j                  d«      |j                  d«      ffS )Nr   r$   r%   r†   rò  r@  ©r|  )r�  rR   r¾   rA  rJ  rƒ  rm  r1  rf   r-  rö  )r2  r3  r  r  r1  r6  r7  r8  r9  r{  rS  rT  rK  r:  rÃ   s                  r.   Úone_layer_lstmr†  ö  s*  € Ø�q‘	€IØ�q‘	€IÙ%ˆf�QŠi¨4€GÙ%ˆf�QŠi¨4€Gä˜“[ AÒ%ˆˆqŠ	¼¸F»ÀqÒ8H¨6°!ª9Èdð ð 
�‰×	Ñ	˜QÓ	€BØ	�‰×	Ñ	˜QÓ	€BäŸ™  i°Ó9ÐÙ5<Ð)×.Ñ.¨qÔ1ÐBSÐØ€KØ ò ˆÜ˜3  B¨	°7¸IÐQRÔS‰ˆˆBØ×Ñ˜2Õðñ Ø×ÑÔä
�)‰)�K Ó
#€Cà�—‘˜A“ §
¡
¨1£Ð.Ð.Ð.r-   c           
      ó¦  — |d   }|d   }|r|d   nd }|r|d   nd }	t        |«      dk(  r|d   nt        |«      dk(  r|d   nd }
g }g }|r|d   n|d   }t        j                  | t        |«      «      }|r|d d d…   }|d   }|d   }|j	                  dd|«      |j	                  dd|«      }}|D �]  } | j
                  d   }t        j                  | ||«      } ||k  ra|j                  |j	                  d|||z
  «      |j	                  d|||z
  «      f«       |j	                  dd|«      |j	                  dd|«      }}||kD  rXt        j                  ||j	                  d|||z
  «      fd«      }t        j                  ||j	                  d|||z
  «      fd«      }t        | ||||	|
d¬«      \  }}|}|j                  |«       �Œ |r|j                  «        ||f}nZ|j                  ||f«       |j                  «        t        |Ž \  }}t        j                  |d«      t        j                  |d«      f}t        j                  |d«      }||fS )	Nr   r$   r%   r†   rò  r@  rP   r…  )r�  rf   r–  rt  r,  r  r¾   rA  rm  r-  rƒ  r1  rô  r-  )r2  r3  r  r  r5  r1  r6  r7  r8  r9  r{  r:  r!  r)  r;  Úorig_hxÚorig_cxrS  rT  rg  r<  Úhidden0Úhidden1rÃ   s                           r.   Úone_layer_lstm_datarŒ    sx  € Ø�q‘	€IØ�q‘	€IÙ%ˆf�QŠi¨4€GÙ%ˆf�QŠi¨4€Gä˜“[ AÒ%ˆˆqŠ	¼¸F»ÀqÒ8H¨6°!ª9Èdð ð €KØ€Gá)0�k "’o°kÀ!±n€OÜ—‘˜C¤ kÓ!2Ó3€IÙØ™d ˜d‘Oˆ	à�Q‰i€GØ�Q‰i€GØ�^‰^˜A˜q /Ó2°G·N±NØ	ˆ1ˆoó5ˆ€Bð ó ˆØ�I‰I�a‰LˆÜ�h‰h�s˜I wÓ/ˆð ˆÒØ�N‰Nà—I‘I˜a  O°aÑ$7Ó8Ø—I‘I˜a  O°aÑ$7Ó8ðôð —Y‘Y˜q ! QÓ'¨¯©°1°a¸Ó);�ˆBð ˆÒÜ—‘Ø�W—^‘^ A ¸¸OÑ8KÓLÐMÈqóˆBô —‘Ø�W—^‘^ A ¸¸OÑ8KÓLÐMÈqóˆBô ˜3  B¨	°7¸IÐQRÔS‰ˆˆBØˆØ×Ñ˜2Öð3ñ6 Ø×ÑÔØ˜"�X‰
à�‰˜˜B�xÔ Ø�‰ÔÜ ˜=Ñˆ�Ü—Y‘Y˜w¨Ó*¬E¯I©I°g¸qÓ,AÐAˆ
ä
�)‰)�K Ó
#€CØ�
ˆ?Ðr-   c                 ó4   — d„ } || ||«      rt         S t        S )a*  Check whether we could use decompose lstm with mkldnn_rnn_layer.
    All the below conditions need to be met:
        * ``torch._C._get_mkldnn_enabled()`` returns ``True``.
        * All the input args are on CPU.
        * The dtypes of args are either torch.float or torch.bfloat16.
        * Inference.
        * ``has_projections`` returns ``False``.

    Args:
        * input: the input sequence to LSTM
        * hx: a tuple of the input hidden state and cell state ``(h_0, c_0)`` to LSTM
        * params: the weight and bias tensors of LSTM
    c                 óN  — t         j                  j                  «       sy| gt        |«      z   t        t	        j
                  |«      «      z   }|D �ch c]  }|j                  ’Œ }}t        |«      dk7  ry|j                  «       }|t        j                  d«      k7  ry|D �ch c]  }|j                  ’Œ }}|D ]&  }|t         j                  t         j                  fvsŒ& y | j                  ry|d   j                  d«      |d   j                  d«      k7  }	|	ryyc c}w c c}w )NFr$   r¢  r   r%   T)rf   r'  Ú_get_mkldnn_enabledrt  r   Úfrom_iterabler�  r�  Úpoprî   r  Úbfloat16Úrequires_gradr+  )
r¼   rS  r  rh  ÚtÚdevicesr�  Údtypesrî   r  s
             r.   Ú
use_mkldnnz2select_one_layer_lstm_function.<locals>.use_mkldnn_  s   € Ü�x‰x×+Ñ+Ô-Øà�'œD ›HÑ$¤t¬E×,?Ñ,?ÀÓ,GÓ'HÑHˆØ%,Ö- �1—8“8Ð-ˆÐ-Üˆw‹<˜1ÒØà—‘“ˆØ”U—\‘\ %Ó(Ò(Øà#*Ö+˜a�!—'“'Ð+ˆÐ+Øò 	ˆEØœUŸ[™[¬%¯.©.Ð9Ò9Ùð	ð ×ÒØà˜Q™%Ÿ*™* Q›-¨2¨a©5¯:©:°a«=Ñ8ˆÙØàùò) .ùò ,s   ÁDÂ#D")r[  r†  )r¼   rS  r  r—  s       r.   Úselect_one_layer_lstm_functionr˜  P  s!   € òñ: �%˜˜VÔ$Ü$Ð$äÐr-   c	                 óš  — t        |«      dk(  sJ d«       ‚t        |||d   j                  d«      |d   j                  d«      k7  «      }t        t	        |d   |d   «      «      }	t        | ||«      }
t        | |	||||||||
«
      \  }}t        t	        |Ž «      }|t        j                  |d   d«      t        j                  |d   d«      fS )Nr%   úlstm expects two hidden statesr   r$   )	r�  r  r+  rt  rô  r˜  rd  rf   ri  )r¼   rS  r  r  rW  rA  r>  r"  rÂ  r3  r^  rÃ   r_  s                r.   Ú	lstm_implr›  ‚  sØ   € ô ˆr‹7�aŠ<Ð9Ð9Ó9ˆ<Ü˜6 :¨r°!©u¯z©z¸!«}ÀÀ1ÁÇ
Á
È1ÃÑ/MÓN€FÜ”#�b˜‘e˜R ™UÓ#Ó$€FÜ-¨e°R¸Ó@€HÜ$ØØØØØØØØØØóÑ€Cˆô œ˜mÐ,Ó-€MØ”—‘˜M¨!Ñ,¨aÓ0´%·+±+¸mÈAÑ>NÐPQÓ2RÐRÐRr-   c	                 óž  — t        |«      dk(  sJ d«       ‚t        |||d   j                  d«      |d   j                  d«      k7  «      }t        t	        |d   |d   «      «      }	t        | |	||||||dt        t        |¬«      «
      \  }
}t        t	        |Ž «      }|
t        j                  |d   d«      t        j                  |d   d«      fS )Nr%   rš  r   r$   F)r5  )
r�  r  r+  rt  rô  rd  r   rŒ  rf   ri  rr  s               r.   Úlstm_data_implr�  ¤  sÒ   € ô ˆr‹7�aŠ<Ð9Ð9Ó9ˆ<Ü˜6 :¨r°!©u¯z©z¸!«}ÀÀ1ÁÇ
Á
È1ÃÑ/MÓN€FÜ”#�b˜‘e˜R ™UÓ#Ó$€FÜ$ØØØØØØØØØÜÔ#°Ô=óÑ€Cˆô œ˜mÐ,Ó-€MØ”—‘˜M¨!Ñ,¨aÓ0´%·+±+¸mÈAÑ>NÐPQÓ2RÐRÐRr-   c                 ó&  — | j                  dd«      }t        j                  |||«      j                  dd«      }|d   |d   z   j                  «       }|d   |d   z   j                  «       }	|d   |d   |z  z   j	                  «       }
||
z
  |	z  |
z   S )Nr†   r$   r%   r   )rz  r¾   rA  rÀ   r¨   ©r2  r$  r6  r8  r7  r9  Úchunked_igatesÚchunked_hgatesÚ
reset_gateÚ
input_gateÚnew_gates              r.   Úgru_cellr¥  Å  s¡   € Ø—Y‘Y˜q !“_€NÜ—X‘X˜j¨)°WÓ=×CÑCÀAÀqÓI€NØ  Ñ# n°QÑ&7Ñ7×@Ñ@ÓB€JØ  Ñ# n°QÑ&7Ñ7×@Ñ@ÓB€JØ˜qÑ! ^°AÑ%6¸Ñ%CÑD×JÑJÓL€HØ˜Ñ! ZÑ/°(Ñ:Ð:r-   c                 óP  — t        j                  | ||«      j                  dd«      }t        j                  |||«      j                  dd«      }|d   |d   z   j                  «       }|d   |d   z   j                  «       }	|d   |d   |z  z   j	                  «       }
||
z
  |	z  |
z   S )Nr†   r$   r   r%   ry  rŸ  s              r.   Úgru_cell_datar§  Î  s±   € Ü—X‘X˜c 9¨gÓ6×<Ñ<¸QÀÓB€NÜ—X‘X˜j¨)°WÓ=×CÑCÀAÀqÓI€NØ  Ñ# n°QÑ&7Ñ7×@Ñ@ÓB€JØ  Ñ# n°QÑ&7Ñ7×@Ñ@ÓB€JØ˜qÑ! ^°AÑ%6¸Ñ%CÑD×JÑJÓL€HØ˜Ñ! ZÑ/°(Ñ:Ð:r-   c	                 óÀ   — t        ||d«      }t        | |j                  d«      ||||||dt        t        |t
        ¬«      «
      \  }	}
|	t        j                  |
d«      fS )NFr   rq  )r  rd  rh  r   r=  r§  rf   ri  )rs  r5  rS  r  r  rW  rA  r>  r"  rÃ   r_  s              r.   Úgru_impl_datar©  ×  si   € ô ˜6 :¨uÓ5€FÜ$ØØ
�	‰	�!‹ØØØØØØØÜÔ"°Ä}ÔUóÑ€Cˆð ”—‘˜M¨1Ó-Ð-Ð-r-   c	                 ó¾   — t        ||d«      }t        | |j                  d«      |||||||t        t        t
        ¬«      «
      \  }	}
|	t        j                  |
d«      fS )NFr   rg  )r  rd  rh  r   rL  r¥  rf   ri  )r¼   rS  r  r  rW  rA  r>  r"  rÂ  rÃ   r_  s              r.   Úgru_implr«  õ  sf   € ô ˜6 :¨uÓ5€FÜ$ØØ
�	‰	�!‹ØØØØØØØÜ”¬Ô2óÑ€Cˆð ”—‘˜M¨1Ó-Ð-Ð-r-   c                 óÂ   — t        | j                  «       ||«      }t        |d«      }t        |d«      }t        j                  j
                  j                  | ||||«      S ©Nr   r$   )rë  r+  rî  rf   r  r�   Ú_upsample_bilinear2d_aa©r¼   rñ  Úalign_cornersré  ró  Úscale_hÚscale_ws          r.   Úupsample_bilinear2d_aa_vecr³    sV   € ô )¨¯©«°{ÀMÓR€EÜ˜m¨QÓ/€GÜ˜m¨QÓ/€GÜ�9‰9�>‰>×1Ñ1Øˆu�m W¨góð r-   c                 óÂ   — t        | j                  «       ||«      }t        |d«      }t        |d«      }t        j                  j
                  j                  | ||||«      S r­  )rë  r+  rî  rf   r  r�   Ú_upsample_bicubic2d_aar¯  s          r.   Úupsample_bicubic2d_aa_vecr¶    sV   € ô )¨¯©«°{ÀMÓR€EÜ˜m¨QÓ/€GÜ˜m¨QÓ/€GÜ�9‰9�>‰>×0Ñ0Øˆu�m W¨góð r-   c                 óz   — t        | j                  «       ||«      }|r|nd gt        |«      z  }t        | |||«      S r6   )rë  r+  r�  Ú_upsample_linear)r¼   rñ  r°  ré  ró  rí  s         r.   Ú_upsample_linear_vecr¹  +  s=   € ô )¨¯©«°{ÀMÓR€EÙ+‰]°$°¼#¸e»*Ñ1D€FÜ˜E 5¨-¸Ó@Ð@r-   r°  c                 ó    — t        | |||g«      S r6   ©r¸  )r¼   rñ  r°  r  s       r.   Úupsample_linear1dr¼  9  s   € ô ˜E ;°À¸zÓJÐJr-   c                 ó"   — t        | ||||g«      S r6   r»  )r¼   rñ  r°  r  r  s        r.   Úupsample_bilinear2dr¾  D  s   € ô ˜E ;°ÀÈ(Ð?SÓTÐTr-   c                 ó$   — t        | |||||g«      S r6   r»  )r¼   rñ  r°  r  r  r  s         r.   Úupsample_trilinear3drÀ  S  s!   € ô Øˆ{˜M¨H°hÀÐ+Ióð r-   c                 óL   — |r|dkD  r| dz
  |dz
  z  S dS |�
|dkD  rd|z  S | |z  S )Nr$   rd   r   r,   )r‡  rˆ  r°  rl   s       r.   Ú_compute_scalerÂ  d  sB   € ÙØ5=À²\�˜#‘ (¨S¡.Ñ1ÐHÀqÐHà#Ð/°E¸A²Iˆs�U‰{ÐUÀ7ÈXÑCUÐUr-   c                 ó&   — |r| |z  S | |dz   z  dz
  S ©Nr�   r,   )rl   Ú	dst_indexr°  s      r.   Ú_compute_source_indexrÆ  k  s$   € ÙØ�yÑ Ð à˜	 C™Ñ(¨3Ñ.Ð.r-   ÚweightsÚweights_precisionc                 ó¾   — t        d„ t        | |«      D «       «      d|dz
  z  z   }||z	  }t        j                  |dd«      j	                  t        j
                  «      S )Nc              3   ó    K  — | ]F  \  }}|j                  t        j                  «      |j                  t        j                  «      z  –— ŒH y ­wr6   )r9   rf   r3  )rÌ  r•  rë  s      r.   rÍ  z%_sum_tensors_uint8.<locals>.<genexpr>u  s8   è ø€ ò Ù26°!°Qˆ�‰ŒU�[‰[Ó˜AŸD™D¤§¡Ó-Õ-ñùs   ‚AAr$   r   éÿ   )Ú_sum_tensorsrô  rf   r�   r9   r-  )rŒ  rÇ  rÈ  rÚ   s       r.   Ú_sum_tensors_uint8rÍ  r  sd   € ô ñ Ü:=¸cÀ7Ó:Kôó à	
Ð  1Ñ$Ñ	%ñ'€Fð Ð(Ñ(€FÜ�;‰;�v˜q #Ó&×)Ñ)¬%¯+©+Ó6Ð6r-   c                 óÚ   — t        j                  | «      j                  «       }d}t        j                  ||j                  ¬«      }d|d|dz   z  z  z   }|dk\  }||j                  «       z
  S )Né   rŽ  r�   r$   i €  )rf   ri  r‹   r“  r�  rì   )rÇ  Ú
max_weightÚmax_weight_precisionÚ
precisionsÚvaluesrœ  s         r.   Ú_compute_weight_precisionrÔ  |  si   € Ü—‘˜WÓ%×)Ñ)Ó+€JØÐÜ—‘Ð2¸:×;LÑ;LÔM€JØ�:  z°A¡~Ñ!6Ñ7Ñ7€FØ�gÑ€DØ $§(¡(£*Ñ,Ð,r-   c                 óê  ‡ ‡‡— ‰ j                   d d \  }}‰ j                   dd  }t        |«      }t        j                  ‰ t        j                  j
                  ¬«      \  }Šˆˆˆ fd„}	t        t        |||«      «      D �
���cg c]  \  }
\  }}} |	||||dz
  |
z
  «      ‘Œ }}}}
}t        t        |Ž «      \  }}}g }t        ddgg|z  Ž D ]c  }d d gt        |«      D �cg c]  }||   dk(  r||   n||   ‘Œ c}z   }t        j                  ‰ |«      }t        |‰«      }|j                  |«       Œe t        t        |«      «      D ]p  }
||
   ||
   z
  j!                  dd«      j#                  ‰«      }t        |d d d…   |dd d…   «      D ��cg c]!  \  }}|t%        j&                  ||z
  |«      z   ‘Œ# }}}Œr t        |«      dk(  sJ ‚|d   }t        j(                  ‰ «      }‰ j*                  j,                  dk(  r|d	k  rt$        j.                  }t1        |t$        j2                  «      sJ ‚|j5                  |¬
«      }‰ j7                  «       s|j9                  «       }|S c c}}}}
w c c}w c c}}w )Nr%   rL  c                 ó|  •— t        | |‰	|«      }t        j                  |‰j                  ¬«      j	                  ‰
¬«      }t        ||‰	«      j                  d¬«      } |j                  |j                  d   gdg|z  ¢­Ž }|j	                  t        j                  «      }|dz   j                  | dz
  ¬«      }|||fS )NrŽ  rö   r‘   r‡   r   r$   rŠ   )
rÂ  rf   r“  r�  r9   rÆ  r�   r$  r  r´  )Úinp_sizerˆ  rí  ÚnsqueezeÚscale_factorrg  Úx_f32r:   Úxp1r°  rî   r¼   s            €€€r.   Ú
get_valuesz$_upsample_linear.<locals>.get_values–  s®   ø€ ä% h°¸-ÈÓPˆô �L‰L˜¨%¯,©,Ô7×:Ñ:ÀÐ:ÓGˆä% l°A°}ÓE×KÑKÐPSÐKÓTˆØ�—‘˜eŸk™k¨!™nÐ@°¨s°hÑ/?Ò@ˆØ�H‰H”U—[‘[Ó!ˆØ�1‰u�m‰m ¨1¡ˆmÓ-ˆØ�a˜ˆ}Ðr-   r$   r   r‘   rd   r  é   rV  )r  r�  rB   rC   rN  ÚINT_TO_FLOATrÚ  rô  rt  r   rQ   r�   r  r   rm  Úreversedr�   r9   rf   rß   r   r�  r¥  r[  r8   r   r­  rE  Úround)r¼   rñ  r°  rí  Ún_batchr  Ú	inp_sizesÚn_dimsrS   rÜ  rg  r×  rˆ  rÓ  Úxs_f32ÚxsÚxp1sÚvsrô  Úkr›  ÚvÚxscaleÚv1Úv2r  rW  rî   s   ` `                        @r.   r¸  r¸  …  sƒ  ú€ ð  Ÿ+™+ b q˜/Ñ€GˆZØ—‘˜A˜B�€IÜ�‹^€Fä×'Ñ'ØÜ!×AÑA×NÑNô�H€A€uö
ô 09Ü�	˜;¨Ó/ó0
÷ñ á+ˆAÑ+�˜( Fñ 	�8˜X v¨v¸©z¸A©~Õ>ð€Fó ô œC ˜LÓ)Ñ€FˆB�à	€BÜ˜˜1�v�h Ñ'Ð(ò ˆØ�TˆlÄuÈVÃ}ÖUÀ! q¨¡t¨q¢y˜b še°d¸1±gÑ=ÒUÑUˆÜ×Ñ˜u cÓ*ˆÜ# A uÓ-ˆØ
�	‰	�!�ð	ô ”e˜F“mÓ$ò 
ˆØ˜‘)˜b ™eÑ#×*Ñ*¨3°Ó4×7Ñ7¸Ó>ˆô ˜b¡ 1 ™g r¨!¨$¨Q¨$¡xÓ0÷
ñ ��Bð ”—‘˜2 ™7 FÓ+Ó+ð
ˆò 
ð
ô ˆr‹7�aŠ<Ðˆ<Ø�‰U€Fô ×/Ñ/°Ó6€Mð ‡|�|×Ñ˜FÒ" z°B¢Ü×/Ñ/ˆä�fœeŸl™lÔ+Ð+Ð+à×Ñ¨]ÐÓ;€Fà×"Ñ"Ô$Ø—‘“ˆà€MùõQùò Vùó
s   ÂI"
Ã I*Æ&I/rô  rõ  c                 ó4   — | j                   |j                   k(  S r6   rã  )rô  rõ  s     r.   Úis_same_sizerî  Ï  s   € à�7‰7�a—g‘gÑÐr-   c                 ó.   — t         j                  | |«      S r6   )r�   r—  )r:   r  rD   s      r.   Ú_reshape_aliasrð  Ô  s   € ô �9‰9�Q˜ÓÐr-   c                 ó.   — t         j                  | |«      S r6   )r�   rž  )r:   rš  s     r.   r  r  Ú  s   € ä�:‰:�a˜Ó!Ð!r-   c                 ó2   — t         j                  | |||«      S r6   )r�   rº  )r:   rš  rz   r  s       r.   r!  r!  ß  s   € ä�>‰>˜!˜W e¨ZÓ8Ð8r-   c                 óz  — |D ]F  }|€Œt        j                  |j                  t         j                  t         j                  fv d„ «       ŒH t        j                  |j                  t         j
                  k(  d„ «       | j                  «       dk(  r<t         j                  j                  | |«      }| j                  |j                  |«      S t        t        |«      «      D ]2  }||   }|€Œ|j                  d| j                  |«      dz
  ¬«      ||<   Œ4 t        j!                  | |«      j#                  | |«      S )Nc                   ó   — y©Nz3tensors used as indices must be long or int tensorsr,   r,   r-   r.   r   z&_unsafe_masked_index.<locals>.<lambda>ê  rÄ  r-   c                   ó   — y©Nz*tensors used as masks must be bool tensorsr,   r,   r-   r.   r   z&_unsafe_masked_index.<locals>.<lambda>ï  rÄ  r-   r   r$   r…  )rf   r€   rî   r`  rŠ  r•  rý   Ú_meta_registrationsÚmeta_index_TensorrE  r  rQ   r�  r�   r+  r�   r  ra  )r:   rœ  rš  Úfillrž  Úmeta_resultrg  s          r.   r˜  r˜  ä  s  € àò ˆØÑÜ�L‰LØ—‘¤§
¡
¬E¯I©IÐ6Ð6ÙMõðô 
‡L�LØ�
‰
”e—j‘jÑ Ù<ôð
 	‡w�wƒy�A‚~Ü×/Ñ/×AÑAÀ!ÀWÓMˆØ�z‰z˜+×+Ñ+¨TÓ2Ð2ä”3�w“<Ó ò ?ˆØ˜‘
ˆØÑØŸ™¨°·±°q³	¸A±˜Ó>ˆG�AŠJð?ô
 ×Ñ˜a Ó)×5Ñ5°t°e¸TÓBÐBr-   c                 óL  — |D ]F  }|€Œt        j                  |j                  t         j                  t         j                  fv d„ «       ŒH t        j                  |j                  t         j
                  k(  d„ «       | j                  «       dk(  r| j                  «       S t        t        |«      «      D ]B  }||   }|€Œ|j                  | j                  |«       | j                  |«      dz
  ¬«      ||<   ŒD |j                  | d«      }t        j                  | ||d¬«      S )Nc                   ó   — yrõ  r,   r,   r-   r.   r   z5_unsafe_masked_index_put_accumulate.<locals>.<lambda>  rÄ  r-   c                   ó   — yr÷  r,   r,   r-   r.   r   z5_unsafe_masked_index_put_accumulate.<locals>.<lambda>	  rÄ  r-   r   r$   r…  Tr  )rf   r€   rî   r`  rŠ  r•  rý   r’  rQ   r�  r�   r+  ra  r�   r!  )r:   rœ  rš  rÓ  rž  rg  Úmasked_values          r.   Ú#_unsafe_masked_index_put_accumulater   þ  s   € àò ˆØÑÜ�L‰LØ—‘¤§
¡
¬E¯I©IÐ6Ð6ÙMõðô 
‡L�LØ�
‰
”e—j‘jÑ Ù<ôð
 	‡w�wƒy�A‚~Ø�w‰w‹yÐä”3�w“<Ó ò HˆØ˜‘
ˆØÑØŸ™¨!¯&©&°«)¨¸¿¹À»ÀQ¹˜ÓGˆG�AŠJðHð
 ×%Ñ% t e¨QÓ/€LÜ×!Ñ! ! W¨lÀtÐ!ÓLÐLr-   c                 óÖ  — | j                  «       }d}|dk  rd}|�6|dkD  r*dg|z  }|j                  d   ||<   |j                  |«      }n|}| |z  } t        j                  ||k7  |d«      }	|	j                  |«      }
t        j                  | ||
«      j                  |«       }t        j                  ||k7  |d«      }|t        j                  j                  k(  r|dkD  r| j                  dd«      }||fS |�lj                  | j                  «      }t        j                  |||
«      j                  |«      }t        j                  ||k7  |d«      }|j                  «       }n"||k7  j                  «       j                  | «      }|t        j                  j                  k(  r|j                  «       }||fS |t        j                   j                  k(  r|j                  «       |z  }||fS )Nr$   r%   r   r,   r‘   )rL   r  r—  rf   rg   rR   Úgatherrö  r#   r)   rz   rE  r‘  rì   r9   r+   r*   )ry   rø   rÉ   ré   r   rã  r%  r  Úwr&  Úsafe_target_r  r!  Úwsums                 r.   Ú_nll_loss_forwardr    sÐ  € ð �X‰X‹Z€FØ€KØ�‚zØˆàÐØ�AŠ:àðàñˆEð "(§¡¨a¡ˆE�+ÑØ—‘˜EÓ"‰AàˆAØ�a‰xˆÜ—+‘+˜f¨Ñ4°f¸aÓ@€KØ×(Ñ(¨Ó5€Lô �l‰l˜4 ¨lÓ;×CÑCÀKÓPÐP€Fä�[‰[˜ <Ñ/°¸Ó;€Fà”I—N‘N×(Ñ(Ò(¨V°aªZØ—}‘} R¨Ó-ˆØ�|Ð#Ð#àÐØ�H‰H�T—Z‘ZÓ ˆÜ�|‰|˜A˜{¨LÓ9×AÑAÀ+ÓNˆÜ�{‰{˜6 \Ñ1°4¸Ó;ˆØ—x‘x“z‰à ,Ñ.×3Ñ3Ó5×8Ñ8¸Ó>ˆà”I—M‘M×'Ñ'Ò'Ø—‘“ˆð �<ÐÐð 
”i—n‘n×*Ñ*Ò	*Ø—‘“ Ñ,ˆà�<ÐÐr-   c                 ó   — | j                  «       dkD  r| j                  «       dk  sJ d«       ‚|j                  «       dk  sJ d«       ‚| j                  «       dk(  xr |j                  «       dk(  }|sA| j                  d   |j                  d   k(  s"J d| j                  › d|j                  › d�«       ‚| j                  d	   }|�=|j                  «       dk(  r|j                  «       |k(  sJ d
|› d|j                  › �«       ‚t        | ||||«      S )Nr   r%   r7  r$   r8  r9  r:  r;  rP   z/weight tensor should be defined either for all z7 classes or no classes but got weight tensor of shape: )rL   r  rý   r  )ry   rø   rÉ   ré   r   r=  Ú	n_classess          r.   Únll_loss_forwardr	  M  s1  € ð �8‰8‹:˜Š>˜dŸh™h›j¨AšoÐPÐ/PÓPÐ-à�
‰
‹˜ÒðEàDóEØð —8‘8“: ‘?Ò8 v§z¡z£|°qÑ'8€LÙØ�
‰
�1‰˜Ÿ™ a™Ò(ðJà	# D§J¡J <¨z¸&¿,¹,¸ÀqÐIóJð ð —
‘
˜2‘€Iàˆ>Ø�
‰
‹˜Ò˜fŸl™l›n°	Ò9ðJà	8¸¸ÐCzð  |B÷  |Hñ  |Hð  {Ið  JóJð ô ˜T 6¨6°9¸lÓKÐKr-   c                 ó    — t        | ||||«      S r6   )r  )ry   rø   rÉ   ré   r   s        r.   Únll_loss2d_forwardr  i  s   € ô ˜T 6¨6°9¸lÓKÐKr-   ÚAc                 ó0   — |dz   | z  |dz   z
  | z  | z  dz   S )Nr%   r†   r$   r,   ©r:   r  s     r.   Ú_upsample_cubic_convolution1r  w  s(   € Ø�‰U�a‰K˜1˜q™5Ñ! QÑ&¨Ñ*¨QÑ.Ð.r-   c                 ó<   — || z  d|z  z
  | z  d|z  z   | z  d|z  z
  S )Nrò  é   r@  r,   r  s     r.   Ú_upsample_cubic_convolution2r  {  s0   € Ø�‰U�Q˜‘U‰]˜aÑ ! a¡%Ñ'¨1Ñ,¨q°1©uÑ4Ð4r-   r”  c                 óÒ  — d}| j                   t        j                   d«      k(  r�t        j                  | d| z
  gd¬«      }t        j                  | dz   d| z
  gd¬«      }t        ||«      }t	        ||«      }t        j
                  |d¬«      \  }}t        j
                  |d¬«      \  }}	|||	|fS t        | dz   |«      t	        | |«      t	        d| z
  |«      t        d| z
  |«      fS )Ng      è¿r¢  rd   r   r~   rü   )r�  rf   ri  r  r  rh  )
r”  r  Útt1Útt2Úw03Úw12rO  rR  rP  rQ  s
             r.   Ú _upsample_get_cubic_coefficientsr    sß   € Ø€Aà‡x�x”5—<‘< Ó&Ò&Ü�k‰k˜1˜c A™g˜,¨AÔ.ˆÜ�k‰k˜1˜s™7 C¨!¡GÐ,°!Ô4ˆÜ*¨3°Ó2ˆÜ*¨3°Ó2ˆÜ—‘˜c qÔ)‰ˆˆBÜ—‘˜c qÔ)‰ˆˆBØ�2�r˜2ˆ~Ðô )¨¨S©°!Ó4Ü(¨¨AÓ.Ü(¨¨q©°!Ó4Ü(¨¨q©°!Ó4ð	
ð 	
r-   ÚcoeffsÚtsc                 óP   — t        |«      }t        d„ t        | |«      D «       «      S )Nc              3   ó,   K  — | ]  \  }}||z  –— Œ y ­wr6   r,   ©rÌ  rÔ  rÕ  s      r.   rÍ  z+_upsample_cubic_interp1d.<locals>.<genexpr>•  s   è ø€ ÒE¡H R¨˜˜R�ÑEùry  )r  rÌ  rô  )r  r  Úcoeffs2s      r.   Ú_upsample_cubic_interp1dr  “  s$   € Ü.¨rÓ2€GÜÑE´°F¸GÓ0DÔEÓEÐEr-   c                 ó6   — t        t        j                  | «      S r6   )r   rf   Úadd)r  s    r.   rÌ  rÌ  ™  s   € Ü”%—)‘)˜RÓ Ð r-   Ú	num_stepsc                 óŠ   — | dk  rt        j                  d||¬«      S |s| dz
  | z  nd}t        j                  | || ||¬«      S )Nr$   r   r�  )Ústepsr�  rî   )rf   ro  Úlinspace)r"  r°  rî   r�  rô  s        r.   Ú_linspace_from_neg_oner&  �  sI   € ð �A‚~Ü�|‰|˜A f°EÔ:Ð:á-:ˆ)�a‰-˜9Ò	$À€AÜ�>‰>˜1˜"˜a y¸ÀuÔMÐMr-   ÚthetaÚhr  c                 óü  — | j                   }| j                  }t        ||||«      j                  d|d«      }t        ||||«      j                  |dd«      }t	        j
                  d||¬«      }t        j                  j                  j                  |ddd¬«      }t        j                  j                  j                  |ddd¬«      }t        j                  j                  j                  |d	dd¬«      }||z   |z   S )
Nr$   )r$   r$   r$   r³  )r   r%   Úconstantr   ©ræ  rU  rz   ©r$   r$   )r%   r   ©	rî   r�  r&  r—  rf   r”  r•  rý  ræ  )	r'  r(  r  r°  rî   r�  Úgrid_xÚgrid_yÚgrid_ones	            r.   Ú_make_base_grid_4dr1  §  så   € Ø�K‰K€EØ�\‰\€Fô $ A }°e¸VÓD×IÑIÈ!ÈQÐPQÓR€FÜ# A }°e¸VÓD×IÑIÈ!ÈQÐPQÓR€FÜ�z‰z˜)¨5¸Ô@€Hô �X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÓR€FÜ�X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÓR€FÜ�x‰x×"Ñ"×&Ñ& x°VÀ*ÐTUÐ&ÓV€HØ�F‰?˜XÑ%Ð%r-   rÞ  c                 ó   — | j                   }| j                  }t        ||||«      j                  dd|d«      }t        ||||«      j                  d|dd«      }t        ||||«      j                  |ddd«      }	t	        j
                  d||¬«      }
t        j                  j                  j                  |ddd¬«      }t        j                  j                  j                  |ddd¬«      }t        j                  j                  j                  |	d	dd¬«      }	t        j                  j                  j                  |
d
dd¬«      }
||z   |	z   |
z   S )Nr$   )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/  Úgrid_zr0  s              r.   Ú_make_base_grid_5dr4  ¸  s5  € Ø�K‰K€EØ�\‰\€Fä# A }°e¸VÓD×IÑIÈ!ÈQÐPQÐSTÓU€FÜ# A }°e¸VÓD×IÑIÈ!ÈQÐPQÐSTÓU€FÜ# A }°e¸VÓD×IÑIÈ!ÈQÐPQÐSTÓU€FÜ�z‰z˜,¨e¸FÔC€Hô �X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÓR€FÜ�X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÓR€FÜ�X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÓR€FÜ�x‰x×"Ñ"×&Ñ& x°VÀ*ÐTUÐ&ÓV€HØ�F‰?˜VÑ# hÑ.Ð.r-   c                 óÒ   — |\  }}}}t        | |||¬«      }|j                  ddd«      | j                  j                  d«      z  j	                  d«      }|j                  |||d«      S )N©r°  rP   r†   r$   rX  r%   )r1  r—  r]  rR   rì   )	r'  r+  r°  r
  rS   r(  r  Ú	base_gridÚgrids	            r.   Ú_affine_grid_generator_4dr9  É  sg   € Ø�J€A€qˆ!ˆQÜ" 5¨!¨Q¸mÔL€Ið �N‰N˜2˜q !Ó$ u§x¡x×'9Ñ'9¸!Ó'<Ñ<×AÑAÀ"ÓE€DØ�9‰9�Q˜˜1˜aÓ Ð r-   c                 óØ   — |\  }}}}}t        | ||||¬«      }|j                  ddd«      | j                  j                  d«      z  j	                  d«      }	|	j                  ||||d«      S )Nr6  rP   r@  r$   rX  r†   )r4  r—  r]  rR   rì   )
r'  r+  r°  r
  rS   rÞ  r(  r  r7  r8  s
             r.   Ú_affine_grid_generator_5dr;  Ó  sm   € Ø�M€A€qˆ!ˆQ�Ü" 5¨!¨Q°ÀÔO€Ið �N‰N˜2˜q !Ó$ u§x¡x×'9Ñ'9¸!Ó'<Ñ<×AÑAÀ"ÓE€DØ�9‰9�Q˜˜1˜a Ó#Ð#r-   c                 óš   — t        j                  t        |«      dv d„ «       t        |«      dk(  rt        | ||¬«      S t	        | ||¬«      S )N)r@  rò  c                   ó   — y)NzCaffine_grid_generator needs 4d (spatial) or 5d (volumetric) inputs.r,   r,   r-   r.   r   z'affine_grid_generator.<locals>.<lambda>ã  rÄ  r-   r@  r6  )rf   r€   r�  r9  r;  )r'  r+  r°  s      r.   Úaffine_grid_generatorr>  Ý  sJ   € ô 
‡L�LÜˆD‹	�VÐÙUôô ˆ4ƒy�A‚~Ü(¨°ÀMÔRÐRä(¨°ÀMÔRÐRr-   r8  Úinterpolation_modeÚpadding_modeÚ_expand_gridc           	      óÈ  ‡ ‡‡‡‡‡‡‡‡‡‡ ‡!‡"‡#‡$‡%‡&‡'‡(‡)‡*‡+‡,‡-— t        j                  ‰dv ˆfd„«       t        j                  ‰dv ˆfd„«       dt        dt        dt        fˆfd„Š-dt        dt        d	t        dt        fd
„Š+dt        dt        dt        fˆˆˆ+fd„Š dt        dt        dt        fˆ ˆ-fd„}‰ j                  \  ŠŠŠ$Š%|j                  \  }Š)Š*}|dk(  sJ ‚‰r(|j                  ‰d‰)‰*|«      j                  ‰‰‰)‰*d«      }dt        dt        dt        fˆ$ˆ%fd„Š&t        j                  ‰‰ j                  ¬«      j                  ‰ddd«      Št        j                  ‰‰ j                  ¬«      j                  d‰dd«      Šdt        dt        dt        dt        fˆˆˆˆ&ˆ)ˆ*fd„Šdt        dt        dt        fˆˆˆ ˆfd„Š"|d   }	|d   }
‰dk(  r• ||	‰%«      } ||
‰$«      }|j                  «       |j                  «       cŠ'Š(‰'dz   ‰(}}‰'‰(dz   }}||}}||z
  ||z
  z  }||z
  ||z
  z  }||z
  ||z
  z  }|‰'z
  |‰(z
  z  }t        ˆ"fd„‰'‰(|f|||f|||f|||ffD «       «      S ‰dk(  r< ||	‰%«      } ||
‰$«      }|j                  «       }|j                  «       } ‰"||d«      S  ‰-|	‰%«      } ‰-|
‰$«      }|j                  «       Š'|j                  «       Š(|‰'z
  Š,|‰(z
  }‰s"‰,j                  d«      Š,|j                  d«      }dt        dt        dt        fˆ ˆ"ˆ$ˆ%fd„Š#dt        dt        fˆ#ˆ'ˆ(ˆ,fd„Š!t        ˆ!fd„t        d «      D «       «      }t!        ||«      S )!N)r   r$   r%   c                  ó   •— d‰ › �S )NzInvalid interpolation mode r,   )r?  s   €r.   r   z"_grid_sampler_2d.<locals>.<lambda>ü  s   ø€ Ð-Ð.@Ð-AÐB€ r-   c                  ó   •— d‰ › �S )NzInvalid padding mode r,   )r@  s   €r.   r   z"_grid_sampler_2d.<locals>.<lambda>ÿ  s   ø€ Ð-BÀ<À.Ð+Q€ r-   Úcoordsr+  rM   c                 óB   •— ‰r|dz  dz
  n|dz  }|dz  dz
  }| |z  |z   S rÄ  r,   )rE  r+  rß   Úofsr°  s       €r.   Úunnormalizez%_grid_sampler_2d.<locals>.unnormalize  s8   ø€ ñ %2ˆt�c‰z˜CÒ¸¸s¹
ˆØ�S‰j˜3ÑˆØ˜‰|˜cÑ!Ð!r-   Ú	twice_lowÚ
twice_highc                 óP  — ||k(  rt        j                  | «      S |dz  }||z
  dz  }| |z
  j                  «       }t        j                  ||«      }||z  j	                  «       j                  t         j                  ¬«      }t        j                  |dz  dk(  ||z   ||z   |z
  «      S )Nr%   rö   r$   r   )rf   r  rã   ÚfmodÚfloorr9   Úint8rg   )rE  rI  rJ  Ú
coords_minÚcoords_spanÚcoords2ÚextraÚflipss           r.   Úreflect_coordinatesz-_grid_sampler_2d.<locals>.reflect_coordinates  sª   € Ø˜
Ò"Ü×#Ñ# FÓ+Ð+Ø ‘]ˆ
Ø! IÑ-°Ñ2ˆØ˜JÑ&×+Ñ+Ó-ˆÜ—
‘
˜7 KÓ0ˆØ˜;Ñ&×-Ñ-Ó/×2Ñ2¼¿¹Ð2ÓDˆÜ�{‰{Ø�A‰I˜‰N˜E JÑ.°¸jÑ0HÈ5Ñ0Pó
ð 	
r-   c                 óÊ   •— ‰dk(  r| S ‰dk(  rt        j                  | d|dz
  «      S ‰r ‰| dd|dz
  z  «      }n ‰| dd|z  dz
  «      }t        j                  |d|dz
  «      S )Nr   r$   r%   rP   rŒ   )rE  r+  Úcoords_reflectedr°  r@  rT  s      €€€r.   Úcompute_coordinatesz-_grid_sampler_2d.<locals>.compute_coordinates  sx   ø€ Ø˜1ÒØˆMØ˜QÒÜ—;‘;˜v q¨$°©(Ó3Ð3áÙ#6°v¸qÀ!ÀtÈaÁxÁ.Ó#QÑ á#6°v¸rÀ1ÀtÁ8ÈaÁ<Ó#PÐ Ü—;‘;Ð/°°D¸1±HÓ=Ð=r-   c                 ó(   •—  ‰| |«      } ‰||«      S r6   r,   )rE  r+  Ú	coords_unrW  rH  s      €€r.   Úcompute_source_indexz._grid_sampler_2d.<locals>.compute_source_index%  s   ø€ Ù ¨Ó-ˆ	Ù" 9¨dÓ3Ð3r-   r%   r$   rå  Úysc                 ó˜   •— t        j                  d| k  t        j                  | ‰k  t        j                  d|k  |‰k  «      «      «      S rq   ©rf   r–  )rå  r[  ÚiHÚiWs     €€r.   Úin_bounds_condz(_grid_sampler_2d.<locals>.in_bounds_cond5  sF   ø€ Ü× Ñ Ø�‰G”U×&Ñ& r¨B¡w´×0AÑ0AÀ!ÀrÁ'È2ÐPRÉ7Ó0SÓTó
ð 	
r-   rŽ  Úwsc                 óÔ   •‡‡—  ‰| |«      Š‰r‰ndŠt        ˆˆˆˆ	ˆ
fd„| j                  t        j                  ¬«      |j                  t        j                  ¬«      |fD «       «      S )Nr$   c              3   óp   •K  — | ]-  }t        j                  ‰|d «      j                  ‰‰‰‰«      –— Œ/ y­wrÊ  )rf   rg   r—  )rÌ  r”  r¼  rë  rØ  ÚoHÚoWs     €€€€€r.   rÍ  z1_grid_sampler_2d.<locals>.clip.<locals>.<genexpr>D  s7   øè ø€ ò 
àô �K‰K˜˜a Ó#×(Ñ(¨¨A¨r°2×6ñ
ùs   ƒ36rö   )râ  r9   rf   r´  )rå  r[  ra  rë  rØ  r½  r¼  rA  r`  rd  re  s      @@€€€€€€r.   Úclipz_grid_sampler_2d.<locals>.clip=  sY   ú€ Ù˜b "Ó%ˆñ
 ‰A 1ˆÜ÷ 
à—e‘e¤%§+¡+�eÓ.°·±¼E¿K¹K°Ó0HÈ"ÐMô
ó 
ð 	
r-   ÚixÚiyc                 ó8   •—  ‰	| ||«      \  }}}‰‰‰||f   |z  S r6   r,   )
rg  rh  r  Úidx_xÚidx_yÚw_ÚC_idxÚN_idxrô  rf  s
         €€€€r.   Úget_summandz%_grid_sampler_2d.<locals>.get_summandI  s0   ø€ á  B¨›?Ñˆˆu�bØ�˜˜u eÐ+Ñ,¨rÑ1Ð1r-   ).r   ).r$   r   c              3   ó:   •K  — | ]  \  }}} ‰|||«      –— Œ y ­wr6   r,   )rÌ  rg  rh  r  ro  s       €r.   rÍ  z#_grid_sampler_2d.<locals>.<genexpr>_  s(   øè ø€ ò 
á��R˜ñ ˜˜B ×"ñ
ùs   ƒc                 ó<   •—  ‰| ‰«      } ‰|‰«      } ‰||d«      S rY   r,   )rg  rh  r:   rW   rW  ro  r^  r_  s       €€€€r.   Úget_value_boundedz+_grid_sampler_2d.<locals>.get_value_bounded~  s*   ø€ Ù# B¨Ó+ˆAÙ# B¨Ó+ˆAÙ˜q ! QÓ'Ð'r-   rG  c                 ó‚   •— ‰| dz
  z   } ‰‰dz
  |«       ‰‰|«       ‰‰dz   |«       ‰‰dz   |«      f}t        |‰«      S )Nr$   r%   )r  )rG  Úiy_ofsÚcsrr  Úix_nwÚiy_nwÚtxs      €€€€r.   Ú	get_coeffz#_grid_sampler_2d.<locals>.get_coeffƒ  s[   ø€ Ø˜c A™gÑ&ˆFá! %¨!¡)¨VÓ4Ù! %¨Ó0Ù! %¨!¡)¨VÓ4Ù! %¨!¡)¨VÓ4ð	ˆBô ,¨B°Ó3Ð3r-   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr6   r,   )rÌ  rG  ry  s     €r.   rÍ  z#_grid_sampler_2d.<locals>.<genexpr>�  s   øè ø€ Ò:¨#‘y —~Ñ:ùó   ƒr@  )rf   r€   r   rŠ  r  r—  r‘  r“  r�  r   rM  rÌ  rà  rR   râ  rQ   r  ).rô  r8  r?  r@  r°  rA  rZ  rS   Útwor:   rW   rg  rh  Úix_neÚiy_neÚix_swÚiy_swÚix_seÚiy_seÚw_nwÚw_neÚw_swÚw_seÚ
ix_nearestÚ
iy_nearestÚtyr  r½  rm  r¼  rn  rf  rW  ry  ro  rr  r^  r_  r`  rv  rw  rd  re  rT  rx  rH  s.   ` ````                     @@@@@@@@@@@@@@@@@@@r.   Ú_grid_sampler_2drŠ  ë  sª  ÿÿÿ€ ô 
‡L�LØ˜iÐ'ÛBôô 
‡L�LØ˜	Ð!Ó#Qôð"œFð "¬#ð "´&õ "ð

¤Fð 

´sð 

Ìð 

ÔPVó 

ð
>¤Fð 
>´#ð 
>¼&÷ 
>ð4¤Vð 4´3ð 4¼6ö 4ð —7‘7�L€A€qˆ"ˆbØ—Z‘Z�N€A€rˆ2ˆsØ�!Š8€Oˆ8áð �y‰y˜˜A˜r 2 sÓ+×2Ñ2°1°a¸¸RÀÓCˆð
œ6ð 
¤vð 
´&ö 
ô
 �L‰L˜ 1§8¡8Ô,×1Ñ1°!°Q¸¸1Ó=€EÜ�L‰L˜ 1§8¡8Ô,×1Ñ1°!°Q¸¸1Ó=€Eð

”ð 

œVð 

¬ð 

Ô4F÷ 

ò 

ð2œð 2¤Fð 2´&÷ 2ð 2ð
 	ˆV‰€AØˆV‰€Aà˜QÒÙ! ! RÓ(ˆÙ! ! RÓ(ˆà—x‘x“z 2§8¡8£:ˆˆˆuØ˜q‘y %ˆuˆØ˜e a™iˆuˆØ˜eˆuˆà˜‘
˜u r™zÑ*ˆØ�U‘
˜u r™zÑ*ˆØ˜‘
˜r E™zÑ*ˆØ�U‘
˜r E™zÑ*ˆäó 
ð ˜˜tÐ$Ø˜˜tÐ$Ø˜˜tÐ$Ø˜˜tÐ$ð	 ô
ó 
ð 	
ð 
˜qÒ	 Ù! ! RÓ(ˆÙ! ! RÓ(ˆà—X‘X“Zˆ
Ø—X‘X“Zˆ
á˜: z°1Ó5Ð5á˜˜BÓˆÙ˜˜BÓˆà—‘“
ˆØ—‘“
ˆà�%‰ZˆØ�%‰ZˆáØ—‘˜a“ˆBØ—‘˜a“ˆBð	(¤&ð 	(¬fð 	(¼÷ 	(ð 	(ð
	4œ3ð 	4¤6÷ 	4ð 	4ô Ó:´°q³Ô:Ó:ˆÜ'¨°Ó3Ð3r-   c                 ó"   — t        | ||||¬«      S )N)r8  r?  r@  r°  )rŠ  )rô  r8  r?  r@  r°  s        r.   Úgrid_sampler_2drŒ  ‘  s    € ô Ø	ØØ-Ø!Ø#ôð r-   c                 ó&  ‡ ‡— t        j                  ‰ j                  «       dk(  xr ‰j                  «       dk(  ˆ ˆfd„«       t        j                  ‰ j                  d«      ‰j                  d«      k(  ˆ ˆfd„«       ‰ ‰z  j	                  d¬«      S )Nr%   r$   c                  óL   •— d‰ j                  «       › d‰j                  «       › �S )Nzmatrix @ vector expected, got rÅ  r~   ©ry   r¶  s   €€r.   r   zmv.<locals>.<lambda>ª  s!   ø€ Ð0°·±³°¸B¸s¿w¹w»y¸kÐJ€ r-   r   c                  óv   •— d‰ j                  d«      › d‰ j                  d«      › d‰j                  d«      › d�S )Nzsize mismatch, got input (r   r:   r$   z), vec (r;  r¿  r�  s   €€r.   r   zmv.<locals>.<lambda>®  s<   ø€ Ð,¨T¯Y©Y°q«\¨N¸!¸D¿I¹IÀa»L¸>ÈÐRU×RZÑRZÐ[\ÓR]ÐQ^Ð^_Ð`€ r-   r~   )rf   r€   rL   r+  rì   r�  s   ``r.   r¸  r¸  ¤  ss   ù€ ô 
‡L�LØ�‰‹
�a‰Ò*˜CŸG™G›I¨™NÜJôô 
‡L�LØ�	‰	�!‹˜Ÿ™ ›Ñ#Ü`ôð �3‰J×Ñ ÐÓ"Ð"r-   c                 óÂ   — |�-|dz
  |z  dz   }d|z
  | z  |t        j                  | «      z  z
  }nd|z
  | z  t        j                  | «      z
  }|�||z  }t        ||«      S rY   )r¾   Ú
logsigmoidrí   )ry   rø   rÉ   Ú
pos_weightré   Ú
log_weightrè   s          r.   Ú binary_cross_entropy_with_logitsr•  ³  sv   € ð
 ÐØ  1‘n¨Ñ.°Ñ2ˆ
Ø�F‘
˜dÑ" j´1·<±<ÀÓ3EÑ&EÑF‰à�F‘
˜dÑ"¤Q§\¡\°$Ó%7Ñ7ˆàÐØ�f‰}ˆä  iÓ0Ð0r-   Útensor1Útensor2Úis_outc           
      óŠ  — | j                   |j                   k\  r| |fn|| f\  }}ddlm} |j                   dk\  r|j                   dk  sy|j                  r|sy| j                   dk(  ry ||j	                  «       dk(  «      ry|j
                  }|j                  «       }t        d„ t        |d d |d	d
 |d	d
 «      D «       «      S )Nr   )rp  r†   r%   FTc              3   ó4   K  — | ]  \  }}}|||z  k(  –— Œ y ­wr6   r,   )rÌ  Úst1Úst2Ús2s       r.   rÍ  zshould_fold.<locals>.<genexpr>Ö  s&   è ø€ ò áˆS�#�rð 	ˆs�R‰x�ñùs   ‚rX  r$   rP   )	r|  rr  rp  r“  rý   r  ru  r  rô  )r–  r—  r˜  Út1Út2rp  Út1_shapeÚ	t1_strides           r.   Úshould_foldr¢  Ä  s¾   € ð $+§<¡<°7·<±<Ò#?ˆg�wÑÀgÈwÐEW�F€BˆåJà�G‰G�qŠL˜RŸW™W¨š\ØØ	×Ò¡ØØ‡|�|�qÒØÙ˜BŸH™H›J¨!™OÔ,Øà�x‰x€HØ—	‘	“€IÜñ ä! )¨C¨R .°)¸A¸b°/À8ÈAÈbÀ>ÓRôó ð r-   )Úpass_is_out)r˜  c                óÖ  — | j                  «       }|j                  «       }|dk7  r|dk7  sJ ‚|dk(  r|dk(  rt        j                  | |«      S |dk(  r|dk(  rt        j                  | |«      S |dk(  rC|dk(  r>t        j                  t        j
                  t        j                  | d«      |«      d«      S |dk(  r|dk(  rt        j
                  | |«      S t        | ||«      �r||kD  }|r|j                  n| }|s|n|dk(  r| j                  «       n| }|j                  }t        |d d «      }	t        t        j                  |	«      }
|j                  «       dk(  }|r|	j                  |j                  d   «       |j!                  |
|d   «      }|r>|j                  |«      j#                  |	«      }|r|j                  j%                  «       S |S |j                  |«      j#                  |	«      S |dk\  �r^|dk\  �rX|dkD  r| j'                  d«      nd}| j'                  d«      }| j                  d d }|dkD  r|j'                  d«      n|j'                  d«      }|dkD  r|j'                  d«      nd}g }t)        |dz
  «      D ]"  }|j                  |j'                  |«      «       Œ$ |dk(  rn|dk(  ri|d   |d   k7  r^|d   dk(  r'| j*                  rt-        | j	                  d«      |«      S |d   dk(  r'|j*                  rt-        | |j	                  d«      «      S t        t        j.                  ||«      «      }|||gz   }t1        |«      }| j3                  |«      j!                  |||«      }|dk(  }|r7||gz   }|j3                  |«      j!                  ||«      j                  d«      }n)|||gz   }|j3                  |«      j!                  |||«      }|}	|dkD  r|	j                  |«       |dkD  r|	j                  |«       |r/|j5                  |«      j	                  d«      j#                  |	«      S |j5                  |«      j#                  |	«      S t        j6                  dd„ «       y )	Nr   r$   r%   rP   rX  r†   Fc                   ó   — y)Nz/both arguments to matmul need to be at least 1Dr,   r,   r-   r.   r   zmatmul.<locals>.<lambda>S  rÄ  r-   )rL   rf   Údotr¸  rö  r®  rR   r¢  r]  r”  r  rt  r   Úoperatorrß   rm  r$  r—  r­  r+  rQ   r“  r\  Úbroadcast_shapesr   r‘  Úbmmr€   )r–  r—  r˜  Údim_tensor1Údim_tensor2r]  rž  rŸ  Úsizes_1Úoutput_shapeÚfolded_dim1Út2_is_matrixÚ	t1_foldedrÚ   r
  Úm1Úbatch_tensor1Úm2rP  Úbatch_tensor2rg  Úexpand_batch_portionÚtensor1_expand_sizeÚexpand_batch_productÚtensor1_expandedÚ
vector_rhsÚtensor2_expand_sizeÚtensor2_expandeds                               r.   r\  r\  Ü  sG  € ð —+‘+“-€KØ—+‘+“-€KØ˜!Ò ¨qÒ 0Ð0Ð0Ø�aÒ˜K¨1Ò,Ü�y‰y˜ 'Ó*Ð*Ø	˜Ò	˜k¨QÒ.Ü�x‰x˜ Ó)Ð)Ø	˜Ò	˜k¨QÒ.Ü�}‰}œUŸX™X¤e§o¡o°g¸qÓ&AÀ7ÓKÈQÓOÐOØ	˜Ò	˜k¨QÒ.Ü�x‰x˜ Ó)Ð)Ü	�W˜g vÕ	.ð   +Ñ-ˆ	Ù$ˆW�ZŠZ¨'ˆá$‰G¸+ÈÒ:J¨7¯9©9¬;ÐPWð 	ð —(‘(ˆÜ˜G C R˜LÓ)ˆÜœXŸ\™\¨<Ó8ˆð —v‘v“x 1‘}ˆÙØ×Ñ §¡¨¡Ô,ð —J‘J˜{¨G°B©KÓ8ˆ	Ùð —\‘\ "Ó%×*Ñ*¨<Ó8ˆFÙ-6�6—9‘9×'Ñ'Ó)ÐB¸FÐBà—<‘< Ó#×(Ñ(¨Ó6Ð6à	˜Ó	˜k¨QÓ.ð !,¨a¢ˆG�L‰L˜Ô°QˆØ�\‰\˜"ÓˆØŸ™ c rÐ*ˆØ!,¨q¢ˆW�\‰\˜"Ô°g·l±lÀ2Ó6FˆØ +¨a¢ˆG�L‰L˜Ô°Qˆà#%ˆä�{ Q‘Ó'ò 	2ˆAØ× Ñ  §¡¨a£Õ1ð	2ð ˜1ÒØ˜qÒ Ø˜aÑ  M°!Ñ$4Ò4à˜QÑ 1Ò$¨×)>Ò)>Ü˜gŸo™o¨aÓ0°'Ó:Ð:Ø˜QÑ 1Ò$¨×)>Ò)>Ü˜g w§¡°qÓ'9Ó:Ð:ô  $Ü×"Ñ" =°-Ó@ó 
Ðð 3°a¸°WÑ<Ðä#Ð$8Ó9Ðð #Ÿ>™>Ð*=Ó>×FÑFØ  ! Ró
Ðð ! AÑ%ˆ
ÙØ"6¸"¸Ñ"=Ðà—‘Ð2Ó3ß‘Ð-¨rÓ2ß‘˜1“ñ ð #7¸"¸a¸Ñ"@ÐØ&Ÿ~™~Ð.AÓB×JÑJØ$ b¨!ó Ðð ,ˆØ˜Š?Ø×Ñ Ô"à˜Š?Ø×Ñ Ô"áØ#×'Ñ'Ð(8Ó9×AÑAÀ"ÓE×JÑJÈ<ÓXÐXà#×'Ñ'Ð(8Ó9×>Ñ>¸|ÓLÐLä�‰�UÑUÕVr-   r±  r²  c                 ó\  ‡ ‡‡‡‡‡‡‡— ‰ j                   \  }}ŠŠt        ‰|d   ||«      }t        ‰|d   ||«      }t        j                  ‰ t        j                  j
                  ¬«      \  }}t        j                  |d   ‰ j                  ¬«      j                  |¬«      }	t        j                  |d   ‰ j                  ¬«      j                  |¬«      }
t        ||
|«      }t        ||	|«      }|j                  d«      }|j                  «       }|j                  «       }||z
  j                  dd«      }||z
  j                  dd«      }|j                  t        j                  «      }|j                  t        j                  «      }|dz
  ||dz   |d	z   f}|dz
  ||dz   |d	z   fŠt        |«      Št        |«      }d
\  Š}‰ j                   t        j"                  k(  r­t%        ‰«      Št%        |«      }‰D �cg c]@  }|d‰z  z  t        j&                  |«      dz  z   j                  t        j(                  «      ‘ŒB c}Š|D �cg c]@  }|d|z  z  t        j&                  |«      dz  z   j                  t        j(                  «      ‘ŒB }}ˆˆˆ fd„Šˆ ˆˆˆˆfd„Št+        ˆfd„|D «       «      }‰ j                   t        j"                  k(  r|€J ‚t-        |||«      }nt/        d„ t1        ||«      D «       «      }t        j2                  ‰ «      }|j5                  |¬«      }|S c c}w c c}w )Nr   r$   rL  rŽ  rö   rP   r‘   rd   r%   r   r�   c                 ó¤   •— t        j                  | d‰dz
  «      }t        j                  |d‰dz
  «      }t        j                  ‰d d ||g«      }|S r­  )rf   r�   r�   r  )r[  rå  Úy_idxÚx_idxré  Úin_hÚin_wr¼   s        €€€r.   Úload_boundedz0upsample_bicubic2d_default.<locals>.load_bounded“  sO   ø€ Ü—‘˜B  4¨!¡8Ó,ˆÜ—‘˜B  4¨!¡8Ó,ˆÜ×Ñ˜u t¨T°5¸%Ð&@ÓAˆØˆr-   c                 óÄ   •‡ — t        ˆˆ fd„‰D «       «      }‰j                  t        j                  k(  r‰€J ‚t	        |‰‰«      S t        d„ t        |‰«      D «       «      S )Nc              3   ó0   •K  — | ]  } ‰‰|«      –— Œ y ­wr6   r,   )rÌ  Úx_ofsrÂ  rW   s     €€r.   rÍ  zCupsample_bicubic2d_default.<locals>.get_x_interp.<locals>.<genexpr>š  s   øè ø€ ÒB°‘l 1 e×,ÑBùs   ƒc              3   ó,   K  — | ]  \  }}||z  –— Œ y ­wr6   r,   r  s      r.   rÍ  zCupsample_bicubic2d_default.<locals>.get_x_interp.<locals>.<genexpr>ž  s   è ø€ ÒJ©¨¨R˜B �GÑJùry  )râ  rî   rf   r-  rÍ  rÌ  rô  )rW   Úsrc_xr¼   Úixs_ofsrÂ  Úweights_precision_xÚ	weights_xs   ` €€€€€r.   Úget_x_interpz0upsample_bicubic2d_default.<locals>.get_x_interp™  sW   ù€ ÜÔB¸'ÔBÓBˆØ�;‰;œ%Ÿ+™+Ò%Ø&Ð2Ð2Ð2Ü% e¨YÐ8KÓLÐLÜÑJ´C¸¸yÓ4IÔJÓJÐJr-   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr6   r,   )rÌ  Úy_ofsrË  s     €r.   rÍ  z-upsample_bicubic2d_default.<locals>.<genexpr>   s   øè ø€ Ò;¨%‘,˜u×%Ñ;ùr{  c              3   ó,   K  — | ]  \  }}||z  –— Œ y ­wr6   r,   r  s      r.   rÍ  z-upsample_bicubic2d_default.<locals>.<genexpr>¥  s   è ø€ ÒL©(¨2¨r˜b 2�gÑLùry  rV  )r  rÂ  rB   rC   rN  rÞ  rf   r“  r�  r9   rÆ  rR   rM  r�   r´  r  rî   r-  rÔ  ræ   Úint16râ  rÍ  rÌ  rô  r   r­  )r¼   rñ  r°  r±  r²  rS   Úh_scale_factorÚw_scale_factorrî   rg  r¡  Úx_floatÚy_floatr:   rW   Úyscalerê  Úiys_ofsÚ	weights_yÚweights_precision_yr  Úsrc_yr  rW  rË  rÀ  rÁ  rÈ  rÂ  rÉ  rÊ  s   `                       @@@@@@@r.   Úupsample_bicubic2d_defaultrÙ  V  sí  ÿ€ ð —{‘{Ñ€A€qˆ$�ô $ D¨+°a©.¸-ÈÓQ€NÜ# D¨+°a©.¸-ÈÓQ€Nä×'Ñ'Ø¤5×#HÑ#H×#UÑ#Uô�H€A€uô 	�‰�[ ‘^¨E¯L©LÔ9×<Ñ<À5Ð<ÓI€AÜ�‰�[ ‘^¨E¯L©LÔ9×<Ñ<À5Ð<ÓI€Aä# N°A°}ÓE€GÜ# N°A°}ÓE€GØ×Ñ Ó#€Gà�‰‹€AØ�‰‹€Að ˜‰k× Ñ   cÓ*€FØ˜‰k× Ñ   cÓ*€FØ	�‰ŒU�[‰[Ó€AØ	�‰ŒU�[‰[Ó€Aà�1‰u�a˜˜Q™  A¡Ð&€GØ�1‰u�a˜˜Q™  A¡Ð&€Gä0°Ó8€IÜ0°Ó8€Ià/9Ñ,ÐÐ,Ø‡{�{”e—k‘kÒ!Ü7¸	ÓBÐÜ7¸	ÓBÐð ö
àð �!Ð*Ñ*Ñ+¬e¯j©j¸«m¸cÑ.AÑA×EÑEÄeÇkÁkÕRò
ˆ	ð ö
àð �!Ð*Ñ*Ñ+¬e¯j©j¸«m¸cÑ.AÑA×EÑEÄeÇkÁkÕRð
ˆ	ð 
ö
÷Kð Kô Ó;°7Ô;Ó;€EØ‡{�{”e—k‘kÒ!Ø"Ð.Ð.Ð.Ü# E¨9Ð6IÓJ‰äÑL´c¸%ÀÓ6KÔLÓLˆô ×/Ñ/°Ó6€MØ×Ñ¨]ÐÓ;€FØ€MùòA
ùò
s   Ç9AL$ÉAL)c                 ó$  — t        j                  t        |«      t        |«      z   dk(  d„ «       |€H|€J ‚t        t        t
        t
        f   t        d„ t        | j                  dd  |«      D «       «      «      }|r|nd\  }}t        | ||||«      S )Nr$   c                   ó   — y)Nz:Must specify exactly one of output_size and scale_factors.r,   r,   r-   r.   r   z(upsample_bicubic2d_vec.<locals>.<lambda>º  rÄ  r-   c              3   óP   K  — | ]  \  }}t        t        |«      |z  «      –— Œ  y ­wr6   )r   r   )rÌ  r  rl   s      r.   rÍ  z)upsample_bicubic2d_vec.<locals>.<genexpr>À  s*   è ø€ ò á�A�uô œ	 !› uÑ,×-ñùs   ‚$&r%   r   )
rf   r€   r•  r
   r   rŠ  râ  rô  r  rÙ  )rô  rñ  r°  ré  r±  r²  s         r.   Úupsample_bicubic2d_vecrÝ  ­  sœ   € ô 
‡L�LÜˆ[ÓœD Ó/Ñ/°1Ñ4ÙLôð ÐØÐ(Ð(Ð(ÜÜ”#”s�(‰OÜñ ä # A§G¡G¨A¨B K°Ó ?ôó ó
ˆñ )6‘}¸<Ñ€GˆWÜ% a¨°mÀWÈgÓVÐVr-   c                 ó(   ‡ — ˆ fd„}t        ‰ ||«      S )Nc                 ó¤   •— t        j                  |  ||z   ‰j                  ¬«      }|dz
  |dz
  |j                  «       z
  j                  «       z
  S )NrŽ  r$   )rf   r“  r�  rã   ©r²   Úmiddler³   Údim_idxrô  s       €r.   r›  z_reflection_pad.<locals>.idxÏ  sF   ø€ Ü—,‘, ˜u f¨u¡n¸Q¿X¹XÔFˆØ˜‰z˜V a™Z¨'¯+©+«-Ñ7×<Ñ<Ó>Ñ>Ð>r-   ©Ú_reflection_or_replication_pad©rô  rÁ  r›  s   `  r.   Ú_reflection_padræ  É  s    ø€ ô?ô *Ø	ØØóð r-   c                 ó(   ‡ — ˆ fd„}t        ‰ ||«      S )Nc                 ó„   •— t        j                  |  ||z   ‰j                  ¬«      }t        j                  |d|dz
  «      S )NrŽ  r   r$   )rf   r“  r�  r�   rà  s       €r.   r›  z_replication_pad.<locals>.idxà  s6   ø€ Ü—,‘, ˜u f¨u¡n¸Q¿X¹XÔFˆÜ�{‰{˜7 A v°¡zÓ2Ð2r-   rã  rå  s   `  r.   Ú_replication_padré  Ú  s    ø€ ô3ô *Ø	ØØóð r-   Úidx_fnc                 ón  ‡— t        |«      dz  Št        j                  | j                  «       ‰dz   ‰dz   fv ˆfd„«       | j                  ‰ d  }| j                  «       ‰z
  }t        ‰«      D �cg c]  }|d‰dz
  |z
  z     ‘Œ }}t        ‰«      D �cg c]  }|d‰dz
  |z
  z  dz      ‘Œ }}| }t        ‰«      D ]E  }d g|j                  «       z  }	 |||   ||   ||   «      |	||z   <   t        j                  ||	«      }ŒG t        j                  |«      }
|j                  |
¬«      }|S c c}w c c}w )Nr%   r$   c                  ó(   •— d‰ › d‰ dz   › d‰ dz   › d�S )NÚreflection_padzd requires r$   zD or r%   zD inputr,   r~   s   €r.   r   z0_reflection_or_replication_pad.<locals>.<lambda>ó  s$   ø€ �.   [°°q±°	¸¸sÀQ¹w¸iÀwÐO€ r-   rV  )r�  rf   r€   rL   r  rQ   r�   r  rB   r   r­  )rô  rÁ  rê  Ú	inp_shapeÚnc_dimrg  Úpadding_leftÚpadding_rightr  r›  rW  rL   s              @r.   rä  rä  ë  sH  ø€ ô
 ˆg‹,˜!Ñ
€CÜ	‡L�LØ	�‰‹�C˜!‘G˜S 1™WÐ%Ð%ÛOôð —‘˜˜˜�€IØ�U‰U‹W�s‰]€Fä8=¸c»
ÖC°1�G˜A  q¡¨1¡Ñ-Ó.ÐC€LÐCÜ=BÀ3»ZÖH¸�W˜Q #¨¡'¨A¡+Ñ.°Ñ2Ó3ÐH€MÐHà€FÜ�3‹Zò 1ˆØ˜ &§*¡*£,Ñ.ˆÙ  ¨a¡°)¸A±,ÀÈaÑ@PÓQˆˆA�‰J‰Ü×#Ñ# F¨CÓ0‰ð1ô ×/Ñ/°Ó7€MØ×Ñ¨]ÐÓ;€FØ€Mùò DùÚHs   Á1D-ÂD2c           
      ó  ‡ ‡‡‡— t        |«      dz  Š|j                  ‰ d  D �cg c]  }|dz
  ‘Œ	 }}t        ‰«      D �cg c]  }|d‰dz
  |z
  z     ‘Œ }}t        ‰«      D �cg c]  }|d‰dz
  |z
  z  dz      ‘Œ }}g }t        |j                  «      D ]c  }dg|j                  z  }	d|	|<   |j	                  t        j                  |j                  |   |j                  ¬«      j                  |	«      «       Œe |d ‰  Š|‰ d  }
d„ Št        ‰«      D �cg c]  }|
|   ||   z   ‘Œ }}t        ‰«      D �cg c]  }||   |
|   z
  ‘Œ }}t        ‰«      D �cg c]  }d||   z  ||   z   |
|   z
  ‘Œ }}t        ‰«      D �cg c]  }||   d||   ||   z   ||   z   f‘Œ }}t        j                  t        j                  t        ‰«      D �cg c]  } ‰||   «      ‘Œ c}«      }t        j                  ‰ |‰|z   d«      }ˆˆˆ ˆfd„}t        j                  t        ‰«      D �cg c]  }g d	¢‘Œ c}Ž D ]¥  }|t!        dg‰z  «      k(  rŒg }g }t        ‰«      D ]t  }||   dk(  r||   }||   }n=||   dk(  r||   }|
|   d||   f}n$||   dk(  r||   }|
|   ||   ||   z
  ||   dz
  f}|j	                  «       |j	                  «       Œv  ||||«      }Œ§ |S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )
Nr%   r$   rP   rŽ  c                 óF   — | \  }}}t        j                  ||k\  ||k  «      S r6   r]  )Úindex_rangerg  ÚlbÚubs       r.   Úindex_range_conditionz7_reflection_pad_backward.<locals>.index_range_condition  s(   € Ø‰	ˆˆ2ˆrÜ× Ñ   b¡¨!¨r©'Ó2Ð2r-   r   r‘   c           	      ó.  •— t        ‰	«      D ]*  }||   d   ||   d   k  }t        |t        «      sŒ%|sŒ(| c S  t        j                  t
        j                  |D �cg c]
  } ‰|«      ‘Œ c}«      }t
        j                  ‰
|‰|z   d«      }| |z   S c c}w )Nr%   r$   r‘   )rQ   r8   r•  rI   r   r�   r–  r˜  )r¥   rÃ   Úindex_rangesrg  Úupper_less_than_lowerrô  rØ  Úgrõ  rL   rj   r÷  s           €€€€r.   r  z,_reflection_pad_backward.<locals>.accumulate8  s¢   ø€ ô �s“ò 	ˆAØ$0°¡O°AÑ$6¸Àa¹ÈÑ9KÑ$KÐ!ÜÐ/´Õ6Ò;PØ’ð	ô
 ×ÑÜ×ÑØCOÖP°KÑ" ;Õ/ÒPó
ˆô ×%Ñ% k°4¸¸S¹À#ÓFˆØ�a‰xˆùò Qs   ÁB
)rP   r   r$   )r�  r  rQ   r|  rm  rf   r“  r�  r—  rI   r   r�   r–  r˜  Ú	itertoolsr   râ  )rj   r:   rÁ  r(  Údhwrg  rð  rñ  rš  Ú
view_shapeÚxyzÚcenterÚleft_reflectÚright_reflectÚrange_crØ  r¥   r  rS   ÚareaÚoutsrù  rÃ   rô  rõ  rL   r÷  s   `                       @@@r.   Ú_reflection_pad_backwardr    s`  û€ ô
 ˆg‹,˜!Ñ
€CàŸ'™' 3 $ %˜.Ö
)�Qˆ1ˆq‹5Ð
)€CÐ
)ä8=¸c»
ÖC°1�G˜A  q¡¨1¡Ñ-Ó.ÐC€LÐCÜ=BÀ3»ZÖH¸�W˜Q #¨¡'¨A¡+Ñ.°Ñ2Ó3ÐH€MÐHà€GÜ�1—6‘6‹]ò SˆØ�S˜1Ÿ6™6‘\ˆ
Øˆ
�1‰Ø�‰”u—|‘| A§G¡G¨A¡J°q·x±xÔ@×EÑEÀjÓQÕRðSð
 	��#�ˆ€AØ
�3�$�%ˆ.€Cò3ô 16°c³
Ö;¨1ˆc�!‰f�| A‘Ó&Ð;€FÐ;Ü6;¸C³jÖA°�L ‘O c¨!¡fÓ,ÐA€LÐAÜDIÈ#ÃJÖO¸q�Q˜˜Q™‘Z ,¨q¡/Ñ1°C¸±FÓ:ÐO€MÐOô
 NSÐSVËZöØHIˆ�‰�A�s˜1‘v ¨Q¡Ñ/°-ÀÑ2BÑBÒCð€Gð ô ×ÑÜ×ÑÄeÈCÃjÖQÀÑ0°¸±Õ<ÒQó€Dô ×$Ñ$ [°$¸¸F¹
ÀCÓH€D÷ô ×!Ñ!¼¸c»
Ö#C°1¤JÒ#CÐDò 4ˆØ”5˜!˜˜s™Ó#Ò#ààˆØˆä�s“ò 	-ˆAØ�A‰w˜!Š|Ø˜Q‘i�Ø% a™j‘Ø�a‘˜B’Ø" 1‘o�Ø" 1™v q¨,°q©/Ð:‘Ø�a‘˜A’Ø# AÑ&�Ø" 1™v s¨1¡v°¸aÑ0@Ñ'@À#ÀaÁ&È1Á*ÐM�à�K‰K˜ÔØ×Ñ Õ,ð	-ñ ˜$  lÓ3‰ð-4ð0 €Kùòc *ùâCùÚHùò2 <ùÚAùÚOùòùò Rùò& $Ds5   ¥KÁ K$Á$K)ÄK.Ä8K3ÅK8ÆK=ÇL
È&Lrˆ   r‹   r  c                ój   — t        j                  | ||¬«      }t        j                  | ||¬«      }||fS )Nr  )rf   ÚaminrP  )ry   rL   r  r  rP  s        r.   Úaminmaxr	  b  s2   € ô �:‰:�d ¨WÔ5€DÜ�:‰:�d ¨WÔ5€DØ�ˆ:Ðr-   rö   c                ó„   — t         j                  t        j                  t        j                  | «      d| «      |||¬«      S )Nr   rö   )r�   rì   rf   rg   Úisnan)ry   rL   r  rî   s       r.   Únansumr  j  s2   € ô �8‰8”E—K‘K¤§¡¨DÓ 1°1°dÓ;¸SÀ'ÐQVˆ8ÓWÐWr-   ©rî   r&  r�  r?  r&  c          	      óN   — t         j                  j                  d| d||||¬«      S )Nr   r$   r  ©r�   r“  Ú
start_step)ri  rî   r&  r�  r?  s        r.   Úarange_defaultr  p  s/   € ô �;‰;×!Ñ!Ø	ˆ3�˜ v°fÈð "ó ð r-   c          	      óN   — t         j                  j                  | |d||||¬«      S )Nr$   r  r  )rh  ri  rî   r&  r�  r?  s         r.   Úarange_startr    s/   € ô �;‰;×!Ñ!Øˆs�A˜U¨6¸&ÈZð "ó ð r-   c                  ó   — ddl m}  || i |¤ŽS )Nr   )Úout_dtype_dense)Ú!torch._higher_order_ops.out_dtyper  )rD   rE   r  s      r.   Úout_dtype_decompr  Ž  s   € åAá˜DÐ+ FÑ+Ð+r-   Úmarginc                 ót  ‡ ‡‡‡	‡
— t        j                  ‰ «      Š t        j                  ‰«      Š‰ j                  d   Š
‰ j                  d   Š	t        j                  |dk(  xs |dk(  d„ «       t        j                  ‰ j
                  dk(  xr ‰	dk7  ˆ fd„«       t        j                  ‰j
                  dk(  xr ‰j                  «       ‰
k(  ˆ
ˆfd„«       ‰�Qt        j                  ‰«      Št        j                  ‰j
                  dk(  xr ‰j                  «       ‰	k(  ˆ	ˆfd„«       ‰j                  d«      Št        j                  ‰ d‰¬«      }||z
  ‰ z   }|j                  d«      }|dk(  r|n||z  }‰�|‰‰   z  }t        j                  ‰	‰ j                  ¬	«      }t        j                  |‰k7  |d«      }|t        j                  j                  k(  r|j!                  «       S |t        j"                  j                  k(  r |j%                  «       |j                  d   z  S |j!                  d¬
«      S )Nr   r$   r%   c                   ó   — y)Nz only p == 1 and p == 2 supportedr,   r,   r-   r.   r   z#multi_margin_loss.<locals>.<lambda>¤  rÄ  r-   c                  ó"   •— d‰ j                   › �S ©NzMExpected non-empty vector or matrix with optional 0-dim batch size, but got: rã  )r¼   s   €r.   r   z#multi_margin_loss.<locals>.<lambda>§  s   ø€ Ð_Ð`e×`kÑ`kÐ_lÐm€ r-   c                  ó(   •— d‰ › d‰j                   › �S )Nz#inconsistent target size, expected r  rã  )Únframerø   s   €€r.   r   z#multi_margin_loss.<locals>.<lambda>«  s   ø€ Ð5°f°X¸YÀvÇ|Á|ÀnÐU€ r-   c                  ó(   •— d‰ › d‰j                   › �S )Nz#inconsistent weight size, expected r  rã  )rL   rÉ   s   €€r.   r   z#multi_margin_loss.<locals>.<lambda>±  s   ø€ Ð9¸#¸¸iÈÏÉÀ~ÐV€ r-   rÀ  rŽ  r~   )rf   Ú
atleast_2dÚ
atleast_1dr  r€   r|  rý   rR   r  r^  r“  r�  rg   r#   r*   rz   rë   r+   rì   )r¼   rø   rP  r  rÉ   ré   Úurh   r›  rL   r  s   ``  `    @@r.   Úmulti_margin_lossr#  •  sÔ  ü€ ô ×Ñ˜UÓ#€EÜ×Ñ˜fÓ%€FØ�[‰[˜‰^€FØ
�+‰+�a‰.€CÜ	‡L�L��a‘Ò!˜1 ™6Ñ#MÔNÜ	‡L�LØ�
‰
�a‰Ò$˜C 1™HÛmôô 
‡L�LØ�‰�qÑÒ5˜VŸ\™\›^¨vÑ5ÜUôð ÐÜ×!Ñ! &Ó)ˆÜ�‰Ø�K‰K˜1ÑÒ6 §¡£°3Ñ!6ÜVô	
ð ×Ñ˜aÓ €FÜ�‰�U ¨Ô0€AØ�‰
�UÑ€AØ	�‰�A‹€AØ�!ŠV‰˜˜Q™€AØÐØ��v‘ÑˆÜ
�,‰,�s 5§<¡<Ô
0€CÜ�‰�C˜6‘M 1 aÓ(€AØ”I—N‘N×(Ñ(Ò(Ø�v‰v‹xˆØ	”i—m‘m×)Ñ)Ò	)Ø�u‰u‹w˜Ÿ™ ™Ñ#Ð#à�v‰v˜!ˆv‹}Ðr-   Ú	is_targetc                 óà  ‡‡— | j                   Š|j                   Št        j                  | «      } t        j                  |«      }| j                   d   }t        j                  t	        ‰«      dk  xr |dk7  ˆfd„«       t        j                  t	        ‰«      dk  xr ‰‰k(  ˆˆfd„«       t        j
                  ||j                  ¬«      }|dk(  }t        j                  t        j                  |||«      dd¬	«      }||k  }t        j                  ||d«      }t        j                  | d|¬
«      }	t        j                  ||d«      }
t        j                  ||
j                  d¬«      k(  d¬«      }d|	j                  j                  d¬«      z
  | z   }|j                  d«      }||z  }t        j                  |d|«      }|t        j                  j                   k(  r!|j#                  d¬«      j%                  «       }n@|t        j&                  j                   k(  r|j#                  «       }n|j#                  d¬«      }|j)                  | j*                  «      j-                  ‰«      }||fS )Nr$   r%   r   c                  ó   •— d‰ › �S r  r,   )Úorig_input_shapes   €r.   r   z0multilabel_margin_loss_forward.<locals>.<lambda>Ó  s   ø€ Ð_Ð`pÐ_qÐr€ r-   c                  ó   •— d‰› d‰ › �S )Nzinconsistent target size: z for input of size: r,   )r'  Úorig_target_shapes   €€r.   r   z0multilabel_margin_loss_forward.<locals>.<lambda>×  s   ø€ Ð,Ð->Ð,?Ð?SÐTdÐSeÐf€ r-   rŽ  rP   Tr  rÀ  r~   rd   )r   rP   )r  rf   r   r€   r�  r“  r�  r  rg   r  ÚanyrR   ÚTr^  r#   r*   rz   rì   rë   r+   r9   rî   r$  )r¼   rø   ré   rL   r›  Úis_endÚend_idxÚtarget_maskÚtidx0r"  Útidx1r$  rh   r'  r)  s                @@r.   Úmultilabel_margin_loss_forwardr1  Ä  sú  ù€ ð —{‘{ÐØŸ™ÐÜ×Ñ˜UÓ#€EÜ×Ñ˜fÓ%€FØ
�+‰+�a‰.€CÜ	‡L�LÜÐÓ Ñ"Ò/ s¨a¡xÛrôô 
‡L�LÜÐÓ !Ñ#ÒMÐ(9Ð=MÑ(MÜfôô
 �,‰,�s 6§=¡=Ô
1€CØ�r‰\€FÜ�j‰jœŸ™ V¨S°#Ó6¸BÈÔM€Gà˜‘-€Kä�K‰K˜ V¨QÓ/€EÜ�‰�U ¨%Ô0€Aä�K‰K˜ V¨RÓ0€EÜ—	‘	˜# §¡°R Ó!8Ñ8¸aÔ@€Iàˆa�c‰c�m‰m ˆmÓ#Ñ# eÑ+€AØ	�‰�A‹€AØ	ˆC‰€Aä�‰�I˜q !Ó$€Aà”I—N‘N×(Ñ(Ò(Ø�E‰E�gˆEÓ×#Ñ#Ó%‰Ø	”i—m‘m×)Ñ)Ò	)Ø�E‰E‹G‰à�E‰E�gˆEÓˆà—‘˜UŸ[™[Ó)×1Ñ1Ð2CÓD€IØˆiˆ<Ðr-   )Ú	attn_maskrl   ÚqueryÚkeyÚ	dropout_pÚ	is_causalr2  c          
      óä  ‡ ‡‡‡— ‰ j                   }t        j                  t        j                  ‰ «      ˆ fd„«       t        j                  ‰ j	                  «       dk(  xr( ‰j	                  «       dk(  xr ‰j	                  «       dk(  ˆˆ ˆfd„«       t        j                  ‰dk(  ˆfd„«       t        j                  ‰ j
                  d   ‰j
                  d   k(  xr ‰j
                  d   ‰j
                  d   k(  d„ «       t        j                  j                  ‰ ‰‰|‰|d |¬«      \  }}	|j                  d	d
«      j                  t        j                  ¬«      }|j                  d	d
«      |	fS )Nc                  ó"   •— d‰ j                   › �S )Nz-query must be FP32, FP64, BF16, FP16 but got rö   )r3  s   €r.   r   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>  s   ø€ Ð?ÀÇÁ¸}ÐM€ r-   r@  c                  ón   •— d‰j                  «       › d‰ j                  «       › d‰j                  «       › �S )Nz,q, k, v must be a 4 dimensional tensor, got rÅ  r~   )r4  r3  rz   s   €€€r.   r   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>  s3   ø€ Ð>¸u¿y¹y»{¸mÈ2ÈcÏgÉgËiÈ[ÐXZÐ[`×[dÑ[dÓ[fÐZgÐh€ r-   r‘   c                  ó   •— d‰ › �S )Nz&dropout probability must be zero, got r,   )r5  s   €r.   r   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>  s   ø€ Ð$JÈ9È+Ð"V€ r-   r†   c                   ó   — y)Nz&q, k, v should have the same head sizer,   r,   r-   r.   r   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>  rÄ  r-   )r2  r5  r6  Údropout_maskrl   r$   r%   rV  )rî   rf   r€   rE  rL   r  r�   Ú"_scaled_dot_product_attention_mathr‡  r]  r­  r[  )
r3  r4  rz   r5  r6  r2  rl   rî   rÚ   Úattns
   ````      r.   Ú*scaled_dot_product_flash_attention_for_cpur?    s@  û€ ð �K‰K€EÜ	‡L�LÜ×Ñ Ó&ÛMôô 
‡L�LØ�	‰	‹�qÑÒ@˜SŸW™W›Y¨!™^Ò@°·	±	³¸qÑ0@Ýhôô 
‡L�LØ�SÑÓVôô 
‡L�LØ�‰�A‰˜%Ÿ+™+ a™.Ñ(ÒK¨S¯Y©Y°q©\¸U¿[¹[È¹^Ñ-KÙ8ôô
 ×:Ñ:×BÑBØØØØØØØØð Có 	�L€FˆDðV ×Ñ˜a Ó#×.Ñ.¼U×=TÑ=TÐ.ÓU€FØ×Ñ˜Q Ó" DÐ)Ð)r-   c                 ó.   ‡— t        | «      ˆfd„«       }|S )Nc                  ó<   •—  ‰| i |¤Ž}| d   j                  |«      S rq   )r×   )rD   rE   rÃ   Úoutplace_ops      €r.   Ú
inplace_opz$register_inplace.<locals>.inplace_opO  s%   ø€ á˜4Ð* 6Ñ*ˆØ�A‰w�}‰}˜SÓ!Ð!r-   r   )Úaten_oprB  rC  s    ` r.   Úregister_inplacerE  N  s"   ø€ Ü˜GÓ$ó"ó %ð"ð Ðr-   c                 óB  — | j                  «       s&| j                  «       st        |«      }t        |«      }t        j                  ||«      }t        |t        j                  «      r|dk7  r||z  }|dk(  r|S t        |t        j                  «      r|dk7  r| |z  } | |z   S r  )rE  r­  rŠ  rf   r©  r8   ÚnumbersÚNumber)ry   Úbatch1Úbatch2r`   rk   r  s         r.   ÚbaddbmmrK  W  s‹   € ð ×!Ñ!Ô#¨D¯O©OÔ,=Ü�4‹yˆÜ�E“
ˆÜ�Y‰Y�v˜vÓ&€FÜ�eœWŸ^™^Ô,°¸²
Ø˜%‘ˆØˆq‚yØˆÜ�dœGŸN™NÔ+¨t°qªyØ�d‰{ˆØ�&‰=Ðr-   c                 ó2   — t        j                  | |d¬«      S )NrM  r}  r  )ry   rO  s     r.   Úfloor_dividerM  h  s   € ô �9‰9�T˜5°Ô8Ð8r-   c                 ó`   — t        j                  t        j                  | j                  d«      S rY   )rI   r   r§  rß   r  )r”  s    r.   Ú	sym_numelrO  n  s   € ä×ÑœHŸL™L¨!¯'©'°1Ó5Ð5r-   ©rî   rÃ   c                ó�   — |€"t         j                  j                  | g |¬«      S t         j                  j                  | g ||¬«      S )Nrö   rP  )r�   rì   Údim_IntListÚIntList_out)ry   rî   rÃ   s      r.   Úsum_defaultrT  s  sC   € ð €{Ü�x‰x×#Ñ# D¨"°EÐ#Ó:Ð:ä�x‰x×#Ñ# D¨"°E¸sÐ#ÓCÐCr-   c           	      ó   — t        | t        j                  «      s| S |€@t        j                  j                  | t        t        | j                  «       «      «      «      S t        j                  j                  | |g«      S r6   )	r8   rf   r   r�   rö  Údimsrt  rQ   rL   )ry   rL   s     r.   Úsqueeze_defaultrW  €  s\   € ô �dœEŸL™LÔ)Øˆà
€{Ü�|‰|× Ñ  ¤t¬E°$·(±(³*Ó,=Ó'>Ó?Ð?ä�|‰|× Ñ  ¨ uÓ-Ð-r-   c                 ó2  ‡— t        ˆfd„t        t        | j                  «      «      D «       «      }|j                  t
        j                  k(  rt
        j                  nd }| j                  d|d|¬«      }| ||j                  |j                  «      z  z  |fS )Nc              3   ó.   •K  — | ]  }|‰k7  sŒ	|–— Œ y ­wr6   r,   )rÌ  rg  rL   s     €r.   rÍ  z)_weight_norm_interface.<locals>.<genexpr>�  s   øè ø€ Ò@˜1°q¸C³x”QÑ@ùs   ƒ
Žr%   T)r  rî   )
râ  rQ   r�  r  rî   rf   r’  r  rþ   r9   )ré  rû  rL   Úkeep_dimÚ
norm_dtyperþ   s     `   r.   Ú_weight_norm_interfacer\  Œ  st   ø€ ô Ó@¤¤c¨!¯'©'£lÓ 3Ô@Ó@€Hà !§¡¬5¯>©>Ò 9”—’¸t€JØ�6‰6�!�X t°:ˆ6Ó>€DØ��D—G‘G˜AŸG™GÓ$Ñ$Ñ% tÐ+Ð+r-   ©Úassume_uniqueÚinvertc                ó„  — t        | t        j                  «      s!t        j                  | |j                  ¬«      } t        |t        j                  «      s!t        j                  || j                  ¬«      }|j                  «       dt        | j                  «       d«      z  k  rt        | ||¬«      S t        | |||¬«      S )NrŽ  g      $@g�Âõ(\�Â?©r_  r]  )	r8   rf   r   ro  r�  rý   rY  Úisin_defaultÚisin_sorting)ÚelementsÚtest_elementsr^  r_  s       r.   Úisinrf  –  s“   € ô �h¤§¡Ô-Ü—<‘< °×1EÑ1EÔFˆÜ�m¤U§\¡\Ô2ÜŸ™ ]¸8¿?¹?ÔKˆà×ÑÓ˜t¤c¨(¯.©.Ó*:¸EÓ&BÑBÒBÜ˜H m¸FÔCÐCäØ�m°=Èô
ð 	
r-   ra  c                óN  — | j                  «       dk(  r%t        j                  | t        j                  ¬«      S  | j                  g | j
                  ¢d|j                  z  ¢­Ž }|s||k(  }n||k7  }t        t        d|j                   dz
  d«      «      }|j                  |¬«      S )Nr   rö   )r$   rP   r$   r~   )
rý   rf   Ú
empty_liker•  r—  r  r|  râ  rQ   r*  )rd  re  r_  r:   ÚcmprL   s         r.   rb  rb  §  s˜   € Ø‡~�~Ó˜1ÒÜ×Ñ ´·
±
Ô;Ð;àˆ�‰ÐD�x—~‘~ÐD¨°×0BÑ0BÑ)BÒD€AÙØ�=Ñ ‰à�=Ñ ˆÜ
”�b˜=×-Ñ-Ð-°Ñ1°2Ó6Ó
7€CØ�7‰7�sˆ7ÓÐr-   c                ó¤  — | j                  «       }|j                  «       }|r¢t        j                  ||g«      }t        j                  |d¬«      \  }}|dd  |d d k(  }	t        j                  |	ddgd«      }	|r|	j                  «       }	t        j                  |	«      }
|
j                  d||	«      }
|
d| j                  «        S t        j                  |«      \  }}t        j                  ||«      }t        j                  ||j                  «       k  |d«      }||   |k(  }|r|j                  «       n|}|j                  | j                  «      S )NT)Ústabler$   rP   r   F)r5  rf   r-  Úsortrk  Úlogical_notrh  rÔ  rý   Úsearchsortedrg   r$  r  )rd  re  r^  r_  Úelements_flatÚtest_elements_flatÚall_elementsÚsorted_elementsÚsorted_orderÚduplicate_maskrœ  Úsorted_test_elementsrS   r›  Útest_idxri  s                   r.   rc  rc  ´  s?  € Ø×$Ñ$Ó&€MØ&×.Ñ.Ó0ÐÙô —y‘y -Ð1CÐ!DÓEˆÜ(-¯
©
°<ÈÔ(MÑ%ˆ˜à(¨¨Ð,°ÀÀÐ0DÑDˆÜ×.Ñ.¨~ÀÀ1¸vÀuÓMˆáØ+×7Ñ7Ó9ˆNä×Ñ Ó/ˆØ�‰˜q ,°Ó?ˆà�A˜Ÿ™Ó(Ð)Ð)ä"'§*¡*Ð-?Ó"@ÑÐ˜aÜ× Ñ Ð!5°}ÓEˆÜ—;‘;˜sÐ%9×%?Ñ%?Ó%AÑAÀ3ÈÓJˆØ" 8Ñ,°Ñ=ˆÙ#)ˆc�o‰oÔ¨sˆØ�{‰{˜8Ÿ>™>Ó*Ð*r-   c                 ó.   — | j                  d«      }||   S rO   )r$  )ry   rž  Ú	flatteneds      r.   Útakery  Ñ  s   € ð —‘˜RÓ €IØ�UÑÐr-   c                 ó¦   — |€t         j                  }|t         j                  k(  rt        |«      }t        j                  | |j                  |¬«      S r,  )rf   r[  Úpreserve_formatr   r�   Úresizer  )ry   rO  rW  s      r.   Ú	resize_asr}  Ø  sD   € àÐÜ×/Ñ/ˆØœ×-Ñ-Ò-Ü-¨eÓ4ˆÜ�;‰;�t˜UŸ[™[¸ˆ;ÓFÐFr-   )F)Únone)g      À?gUUUUUUÕ?FNr6   )r%   )r   NNr$   )rP   FFr   rÊ  r,  )r$   r$   F)Fr‘   )r‘   rd   N)r   r$   Nr   )NNN)r   r   FT)r   r   Fr  )r‘   F(„  rI   rü  rG  r§  rv  Úenumr   r   r   r   r   Útypingr   r	   r
   r   r   r   r   r   rf   Útorch._meta_registrationsÚtorch._primsrF  rÜ  Útorch._prims_commonÚ_prims_commonrB   Útorch.nn.functionalr•  rý  r¾   r   r   r   Útorch._decompr   r  r   r   r   r   r   r   Útorch._prims_common.wrappersr   r   r   r   Útorch.utilsr   r@   Útorch.utils._pytreer    r'  ÚDispatchKeyr!   ÚstrÚ__annotations__Ú_opsr  r�   r#   rN  r•  rK   rO  Úcompute_only_pw_cast_for_opmathÚpw_cast_for_opmathrÞ  Úpw_cast_for_int_to_realrŠ  rT   r]   r_   ri   r  ru   rú  ÚScalarr{   rƒ   r�   r”   r˜   rš   rž   r    r¤   r»   rÄ   rÆ   rÈ   rË   rÏ   rÛ   r‡  Úpy_implÚAutogradCUDAÚ	GeneratorrÝ   rà   rç   rí   rî   r÷   rú   r*   rz   rÿ   Ú_safe_softmaxr  r  r  rU   r  r  rÃ   r  r(  r5  r>  rA  rG  rJ  rL  rN  rR  rf  rn  Úslicer‚  r‹  rm  r¡  r§  rª  r¯  r±  r¾  r  r*  r.  r7  r=  rA  ÚCompositeImplicitAutogradÚAutogradr@  rS  rW  r]  re  r   rs  rv  rz  r…  r‡  r“  r—  rš  rœ  r–  r§  r   r©  r¯  rµ  r¹  r×  rÛ  rÞ  r÷  rù  r  r  r  Úunsafe_chunkr  r  r  Úno_statsr   r$  r0  r6  r:  r<  Ú_fused_dropoutr>  rK  r�  rW  ÚdetachÚliftÚ
lift_freshrN  rS  rV  rY  rX  rl  rq  rt  Ú_adaptive_avg_pool2dr¢  r©  r«  r§  rÌ  rÒ  rÔ  rÐ  rØ  rÖ   rß  rë  rî  r  r¶  r  r  rô  Ú_upsample_nearest_exact1dr  r  rù  rÿ  r  rñ  r  r'  r+  r/  r=  rE  rH  rL  r[  rd  Úrnn_tanhr¼   rk  Úrnn_relurn  rs  rt  rw  rƒ  r†  rŒ  r˜  Úlstmr›  r�  r¥  r§  Úgrur©  r«  r®  r³  rµ  r¶  r¾  rÀ  r¼  r¹  rÂ  rÆ  rÍ  rÔ  r¸  rî  rð  Ú_unsafe_viewr  r!  r˜  r   r  r	  r  r  r  r  r  rÌ  r&  r1  r4  r9  r;  r>  rŠ  rŒ  r¸  r•  r¢  r\  Úupsample_bicubic2drÙ  rÝ  Úreflection_pad1dÚreflection_pad2dÚreflection_pad3dræ  Úreplication_pad1dÚreplication_pad2dÚreplication_pad3dré  rä  Úreflection_pad1d_backwardÚreflection_pad2d_backwardÚreflection_pad3d_backwardr  r	  r  r“  rC  r&  r  rh  r  r  r#  r1  Ú+_scaled_dot_product_flash_attention_for_cpur?  rE  rK  rM  rO  rì   rT  rö  rL   rW  r\  rf  rb  rc  ry  r}  Úaddbmm_ÚaddbmmÚaddmm_Úaddmv_Úbaddbmm_Úfill_Úgelu_r³  Ú
hardswish_Ú	hardtanh_ÚhardtanhÚhardsigmoid_Ú__iand__Ú__and__Ú__ilshift__Ú
__lshift__r¹  rº  Úindex_reduce_Úindex_reduceÚ__ior__Ú__or__Ú__irshift__Ú
__rshift__Ú__ixor__Ú__xor__Úleaky_relu_rØ   Úlogit_ÚlogitÚrelu_r´  Úrenorm_ÚrenormÚround_rà  Úscatter_r#  Úscatter_add_Úscatter_addÚscatter_reduce_Úscatter_reduceÚsilu_r,   r-   r.   ú<module>rÕ     s}M  ðô Û Û Û Û 
Ý ß %ß $ß N× NÓ Nã Û  Ý Ý #ß Ð ß ,Ñ ,Ý 0Ý 7÷õ ÷ó õ *Ý (ð �h‰h×"Ñ"€ð €ˆˆc‰Ó à‡z�z‡~�~×Ñ€ô�ô ð  %ò!Øð!à×9Ñ9ð!ð ó!ñH #*ØØ×8Ñ8×@Ñ@Øô#Ð ñ
 Ø˜u×DÑD×LÑLôÐ ñ "Ø˜u×DÑD×QÑQôÐ ð˜ð  cð ¨fó ñ ˜×*Ñ*Ó+Ùˆ\ÓØð2˜Fð 2 vò 2ó ó ó ,ð2ñ ˜×-Ñ-Ó.Ùˆ\ÓØð4˜vð 4¨&ò 4ó ó ó /ð4ñ ˜×.Ñ.Ó/Ùˆ\ÓØðS ð S¨6ð S¸ð SÈ5ò Só ó ó 0ðSñ
 ˜×)Ñ)Ó*Ùˆ\ÓØð
Øð
àð
ð ð
ð ð	
ð
 ð
ð ò
ó ó ó +ð
ñ2 ˜Ÿ™×)Ñ)Ð*Ó+ñ(ó ,ð(ñ ˜Ÿ™×)Ñ)Ð*Ó+ð"˜Vò "ó ,ð"ñ ˜×(Ñ(Ó)ÙƒØð@�fð @ ò @ó ó ó *ð@ñ ˜×1Ñ1Ó2Ùˆ\ÓØð fð °Fò ó ó ó 3ðñ ˜×.Ñ.Ó/Ùˆ\ÓðPØðPØ%ðPØ05ðPØ@EòPó ó 0ðPñ ˜Ÿ™Ó'ÙƒØðG�Fð G˜vò Gó ó ó (ðGñ ˜×/Ñ/Ó0ÙƒØð Fð °&ð ¸Vò ó ó ó 1ðñ ˜×/Ñ/Ó0Ùˆ\Óð: Fð :°&ð :ÀUò :ó ó 1ð:ñ ˜×0Ñ0Ó1Ùˆ\ÓØðLØðLØ%ðLØ7<ðLØNRòLó ó ó 2ðLñ ˜×*Ñ*Ó+Ùˆ\ÓØò)˜ð ) fð )¸3ò )ó ó ó ,ð)ñ< ˜×*Ñ*Ó+Øð5˜vð 5¨fò 5ó ó ,ð5ñ ˜Ÿ	™	Ó"ÙƒØð&ˆvð &˜&ò &ó ó ó #ð&ñ ˜×*Ñ*Ó+Ùˆ\ÓØð>˜vð >¨Vð >¸ò >ó ó ó ,ð>ñ
 ˜×*Ñ*Ó+ð6˜ð 6¨ð 6°6ò 6ó ,ð6ñ ˜×3Ñ3Ó4ð%Øð%à
ð%ð ð%ð ˆ6�6ˆ>Ñò	%ó 5ð%ñ ˜×-Ñ-Ó.Ø×Ñ×Ñ×&Ñ& {×'?Ñ'?Ó@ÙƒØð Ø%ØØ+/ò5Ø
ð5àð5ð ð5ð ð	5ð
 ð5ð ˜Ÿ™Ñ(ð5ð ò5ó ó ó Aó /ð5ñ( ˜×.Ñ.Ó/Ø×Ñ×Ñ×'Ñ'¨×(@Ñ(@ÓAØð Ø%ØØ+/òXØ
ðXàðXð ðXð ð	Xð
 ðXð ˜Ÿ™Ñ(ðXð òXó ó Bó 0ðXñ ˜×6Ñ6Ó7ÙƒØð
Øð
à
ð
ð ð
ð ð	
ð
 ð
ð ð
ð ð
ð ò
ó ó ó 8ð
ñ$ ˜×1Ñ1Ó2Ùˆ\ÓØð< fð <°Fð <ÀFð <Èvò <ó ó ó 3ð<ð˜vð °#ó ð˜Ÿ™ó ñ ˜Ÿ™Ó&ÙƒØà3<·>±>×3GÑ3Gñ1Ø
ð1Ø ð1Ø-0ð1àò1ó ó ó 'ð1ñ ˜×.Ñ.Ó/Ùˆ\ÓØð1Øð1Ø &ð1Ø06ð1ØCFò1ó ó ó 0ð1ñ ˜×*Ñ*Ó+ó0ó ,ð0ñ ˜×+Ñ+Ó,ÙƒØð —^‘^×)Ñ)Øñ	1Ø
ð1àð1ð ð1ð ò	1ó ó ó -ð1ñ ˜×4Ñ4×<Ñ<Ó=ØðØðØ%ðØ/5ðØBEðØMRòó ó >ðñ ˜×4Ñ4×?Ñ?Ó@Øð
RØð
Rà
ð
Rð ð
Rð ð	
Rð
 ð
Rð ò
Ró ó Að
Rñ ˜×0Ñ0×8Ñ8Ó9Øð	Øð	Ø%ð	Ø/5ð	ØBEð	ØNSò	ó ó :ð	ñ ˜×0Ñ0×4Ñ4Ó5Øð
RØð
Rà
ð
Rð ð
Rð ð	
Rð
 ð
Rð ò
Ró ó 6ð
Rð$Øð$à
ð$ð ð$ð �VÑð	$ð
 ð$ð ð$ð ð$ð ó$ñ@ ˜×)Ñ)Ó*Ùˆ\ÓØðN˜fð N¨Fð N¸ð NÀò Nó ó ó +ðNñ$ ˜×.Ñ.Ó/Ùˆ\Óð'Øð'à
ð'ð ð'ð �VÑð	'ð
 ð'ð ð'ð ð'ð ò'ó ó 0ð'ñT ˜×0Ñ0Ó1Ùˆ\ÓðØðà
ðð ðð �VÑð	ð
 ðð ðð ðð òó ó 2ðñB ˜×1Ñ1Ó2ÙƒØð  $Ø—^‘^×)Ñ)ñ	1Ø
ð1àð1ð �VÑð1ð ð	1ð
 ò1ó ó ó 3ð1ñ& ˜×:Ñ:Ó;Ùˆ\ÓØð
  $Ø—^‘^×)Ñ)ñØðà
ðð ðð �VÑð	ð
 ðð òó ó ó <ðñ  ˜×-Ñ-Ó.ÙƒØð —^‘^×)Ñ)ñ1Øð1àð1ð ð1ð ò	1ó ó ó /ð1ñ ˜×6Ñ6Ó7Ùˆ\ÓØð
 —^‘^×)Ñ)ñ		Øð	à
ð	ð ð	ð ð		ð
 ò	ó ó ó 8ð	ñ ˜Ÿ	™	Ó"Ùƒò)�ð )˜vð )¨%ò )ó ó #ð)ñ ˜×,Ò,Ó-Ùƒð&˜ð & Fð &¨vò &ó ó .ð&ñ ˜×+Ò+Ó,Ùƒð	OØð	Oà�c‘ð	Oð 
ð	Oð ð		Oð
 
ð	Oð ò	Oó ó -ð	Oñ ˜Ÿ
š
×)Ñ)Ó*ð ØØØò6?à
ð6?ð 
ð6?ð �C‰=ð	6?ð
 
�#‰ð6?ð ò6?ó +ð6?ðrØðØðØ (¨¡ðØ4<¸S±Mðà
ˆ3�ˆ8�_óñ. ˜×*Ò*Ó+Ùƒð ØØØò$UØð$Uà	ð$Uð 
ð$Uð �C‰=ð	$Uð
 
�#‰ð$Uð ò$Uó ó ,ð$UñN ˜×,Ò,Ó-ÙƒðE ð E°d¸3±ið EÀcð EÐRUò Eó ó .ðEñ
 ˜×.Ò.Ó/ÙƒðOØðOØ&*¨3¡iðOØ9<ðOØDGðOØORòOó ó 0ðOðØðØ%+ðØ:?¿+¹+óñ ˜×3Ò3Ó4Ùˆ\ÓØ ðXØðXØ!'ðXØ.1ðXØ@EÇÁòXó !ó ó 5ðXñ ˜×7Ò7Ó8ÙƒØ ðKØðKØ!'ðKØ.1ðKØ@EÇÁòKó !ó ó 9ðKò*ñ& ˜ŸšÓ$ÙƒðMØðMà�c‘ðMð �3‰iðMð �#‰Yð	Mð
 �‰IðMð òMó ó %ðMñ` ˜ŸšÓ$ÙƒØð]Øð]à�c‘ð]ð �c‘ð]ð �3‰ið	]ð
 �#‰Yð]ð �‰Ið]ð ò]ó ó ó %ð]ñ@ ˜×4Ò4Ó5Ùƒð
¨ð 
°vð 
Àeò 
ó ó 6ð
ñ ˜×,Ò,Ó-ÙƒðYØ
ðYØ" 3™iðYØ47ðYØ?BðYØJMðYàòYó ó .ðYñ" ˜×+Ò+×3Ñ3Ó4Øà>Bò
Øð
Ø%ð
Ø,4°U©Oð
àò
ó ó 5ð
ñ& ˜ŸšÓ%Ø‡‚×Ñ×Ñ˜k×CÒCÓDØ‡‚×Ñ×Ñ˜k×2Ò2Ó3ð�6ð ˜eð ¨H°T©Nò ó 4ó Eó &ðñ ˜×+Ò+Ó,ÙˆV�VÓðA˜&ð A Uð A°8¸D±>ò Aó ó -ðAñ ˜ŸšÓ&Ùƒð�ð ˜Sð °ò ó ó 'ðñ* ˜×)Ò)Ó*Ùƒð�Fð  ð °Tò ó ó +ðñ, ˜ŸšÓ'Ùƒð Ø$ØòØðàðð ðð ð	ð
 ðð òó ó (ðñ& ˜×5Ò5Ó6ÙƒðØðàðð ðð ð	ð
 òó ó 7ðð:ˆD�‰Ió ðØ�&‰\ðà	ðð ðð 
ˆ&�\ó	ð*˜T &™\ó ð
 t¨F¡|ð 
¸#ó 
ð"Ø�&‰\ð"à	ð"ð ó"ñJ ˜Ÿš×0Ñ0°$·/²/×2EÑ2EÐFÓGð
 !ò	Ø�&‰\ðà	ðð ðð 
�&Ñ	ð	ð
 òó Hðñ ˜×-Ò-Ó.à56òØ
ðØ# C™yðØ/2ðà	ˆ&�\òó /ðñ6 Ø	×Ò×'Ñ'¨×)CÒ)C×)GÑ)GÐHóð Ø"&ò	Ø
ðà�c‘ðð 
ðð 
�$�v‘,Ñ	ð	ð
 ˆd�6‰lÑòóðñ  ˜×)Ò)×0Ñ0Ó1ò5˜ð 5¨Cð 5°cð 5À%ÈÐPSÈÑBTò 5ó 2ð5ñ ˜×4Ò4×<Ñ<Ó=à67òBØðBØ $ S¡	ðBØ03ðBà
ˆ6�3ˆ;ÑòBó >ðBñ ˜Ÿ
š
×)Ñ)Ó*ò/�ð / Cð /¨cð /¸%ÀÈÀÑ:Lò /ó +ð/ð" ×Ò×-Ò-×5Ñ5Ø×)Ò)óð ò/Ø
ð/à &ð/ð 
ð/ð ˆ6�3ˆ;Ñò	/óð/ñ@ ˜Ÿ
š
Ó#ÙƒØò�ð ˜fð ¨Fð ¸#ð È#ò ó ó ó $ðñ" ˜×.Ò.Ó/ÙƒØð
 ØØòØ
ðà
ðð ðð ð	ð
 ðð òó ó ó 0ðñ" ˜Ÿ
š
Ó#ÙƒØò�ð ˜fð ¨6ð ¸ð Èò ó ó ó $ðñ ˜×7Ò7×?Ñ?Ó@ØðS&ØðS&àðS&ð ðS&ð ð	S&ð
 �FÑðS&ð ðS&ð ðS&ð 
ðS&ð ðS&ð �d‘ðS&ð ˆ8�FÑ˜X fÑ-¨x¸Ñ/?Ð?Ñ@òS&ó ó AðS&ñn ˜×7Ò7×;Ñ;Ó<ðØðàðð ðð ð	ð
 �FÑðð ðð ðð 
ðð ðð �d‘ðð �,‰,ðð �,‰,ðð �,‰,ðð ˆ8�FÑ˜X fÑ-¨x¸Ñ/?Ð?Ñ@òó =ðð8�8˜FÑ#ð ¨x¸Ñ/?ó ñ ˜×7Ò7×?Ñ?Ó@ðJØðJàðJð ˜3‘iðJð ð	Jð
 ðJð �VÑðJð �6Ñ
ðJð �d‘ðJð ˆ8�FÑ˜X fÑ-¨x¸Ñ/?Ð?Ñ@òJó AðJñ\ ˜×7Ò7×;Ñ;Ó<ðØðàðð ˜3‘iðð ð	ð
 ðð �VÑðð �6Ñ
ðð �d‘ðð �,‰,ðð �,‰,ðð �,‰,ðð ˆ8�FÑ˜X fÑ-¨x¸Ñ/?Ð?Ñ@òó =ðð4OØðOà�VÑðOð �6Ñ
ðOð ˜6Ñ"ð	Oð
 ˜&Ñ!ðOð ðOð ðOð 
ðOð ðOð ˆ6�6˜6 8¨FÑ#3°X¸fÑ5EÐEÑFóOñd ˜×.Ò.Ó/ÙˆU�K Ó/ð(Øð(à�VÑð(ð �6Ñ
ð(ð ˜6Ñ"ð	(ð
 ˜&Ñ!ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ñ"ò(ó 0ó 0ð(ð4 ×Ò×Ñ×'Ñ'¨×(<Ò(<Ó=Ø×Ò×Ñ×'Ñ'¨×(MÒ(MÓNð 
Øð 
à�VÑð 
ð �6Ñ
ð 
ð ˜6Ñ"ð	 
ð
 ˜&Ñ!ð 
ð ð 
ð ð 
ð 
ð 
ð ˆ6�6˜6Ð!Ñ"ò 
ó Oó >ð 
ðF ×Ò×Ñ×"Ñ" ;×#HÒ#HÓIòG°4¸±<ò Gó JðGñ ˜×AÒA×IÑIÓJðØðà�VÑðð �6Ñ
ðð ð	ð
 ðð ðð 
ðð ˆ6�6˜6Ð!Ñ"òó Kðñ* ˜×5Ò5×=Ñ=Ó>ð(Øð(à�VÑð(ð �6Ñ
ð(ð ð	(ð
 ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ñ"ò(ó ?ð(ñ  ˜×5Ò5×>Ò>Ó?ð(Øð(à�VÑð(ð �6Ñ
ð(ð ð	(ð
 ð(ð 
ð(ð ˆ6�6˜6Ð!Ñ"ò(ó @ð(ñ ˜×@Ò@×HÑHÓIðKØðKà�VÑðKð �6Ñ
ðKð ð	Kð
 ðKð ðKð ðKð 
ðKð ˆ6�6˜6 6¨6Ð1Ñ2òKó JðKð0Øðà�VÑðð �6Ñ
ðð ð	ð
 ðð 
ðð ðð óñ6 ˜×4Ò4×<Ñ<Ó=ð1Øð1à�VÑð1ð �6Ñ
ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ñ*ò1ó >ð1ñ4 ˜×?Ò?×GÑGÓHðCØðCà�VÑðCð �6Ñ
ðCð ð	Cð
 ðCð ðCð 
ðCð ˆ6�6˜6 6¨6°6Ð9Ñ:òCó IðCñ4 ˜×2Ò2×:Ñ:Ó;ð1Øð1à�VÑð1ð �6Ñ
ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ñ*ò1ó <ð1ñ4 ˜×+Ò+Ó,ÙˆV�VÓØóó ó ó -ðñ ˜ŸšÓ&Ùƒð $(ØØ%)ØØØ37ò&ØˆV�ZÐÑ ð&ð �E—K‘KÑ ð&ð
 �U—\’\Ñ"ð&ð ð&ð ð&ð ˜E×/Ò/Ñ0ò&ó ó 'ð&ñX ˜Ÿš d§i¢i°·²ÐAÓBÙƒñó ó Cðð ×Ò×Ñ×&Ñ& {×';Ò';Ó<Ù˜×-Ò-Ó.ÙˆV�V˜V VÓ,ðØðàðð �6Ñ
ðð ˜6Ñ"ð	ð
 ˜&Ñ!ðð ðð !&ðð òó -ó /ó =ðò>ñ ˜×0Ò0×8Ñ8Ó9ðØðàðð �VÑðð ˜6Ñ"ð	ð
 ˜&Ñ!ðð ˜Ñðð ˜&Ñ!ðð ðð 
ðð �d‘ðð ðð ˆ6�8˜FÑ# X¨fÑ%5Ð5Ñ6òó :ðñ6 ˜×7Ò7×?Ñ?Ó@ð`Øð`àð`ð �VÑð`ð ˜6Ñ"ð	`ð
 ˜&Ñ!ð`ð ˜Ñð`ð ˜&Ñ!ð`ð ð`ð 
ð`ð �d‘ð`ð ˆ6�8˜FÑ# X¨fÑ%5Ð5Ñ6ò`ó Að`ñH ˜×7Ò7×;Ñ;Ó<ð"Øð"àð"ð �VÑð"ð ˜6Ñ"ð	"ð
 ˜&Ñ!ð"ð ˜Ñð"ð ˜&Ñ!ð"ð ð"ð 
ð"ð �d‘ð"ð �,‰,ð"ð �,‰,ð"ð �,‰,ð"ð ˆ6�8˜FÑ# X¨fÑ%5Ð5Ñ6ò"ó =ð"ñJ ˜×7Ò7Ó8ÙˆV�V˜VÓ$ðØðàðð ðð ˜6Ñ"ð	ð
 ˜&Ñ!ðð ˜Ñðð �vÑðð òó %ó 9ðñ0 ˜×6Ò6Ó7ÙˆV�V˜VÓ$ðØðàðð ðð ˜6Ñ"ð	ð
 ˜&Ñ!ðð ˜Ñðð �vÑðð ðð òó %ó 8ðñ2 ˜×1Ò1Ó2ÙƒØðc'˜vð c'°E¸#¸s¸(±Oò c'ó ó ó 3ðc'ñL ˜ŸšÓ(ð òHØðHà	ðHð ðHð ð	Hð òHó )ðHñ ˜ŸšÓ'Ùƒð òIØðIà	ðIð ðIð ð	Ið òIó ó (ðIð$ ò%@Øð%@à	ð%@ð ð%@ð ð	%@ð ð%@ð ó%@ñP ˜×)Ò)×1Ñ1Ó2Ø×Ò×Ñ×"Ñ" ;×#HÒ#HÓIóó Jó 3ðñ2 ˜×(Ò(Ó)ð<�:ð < Cð <°
ð <ÀJò <ó *ð<ñ ˜ŸšÓ(Ùƒð=�*ð = 3ð =¨zð =À:ò =ó ó )ð=ð@Øð@Øð@Ø$.ð@Ø8Bð@ØPTó@ñ, ˜×0Ò0Ó1ÙˆX�xÓ Øð(˜fð (¨¨v°v¨~Ñ)>ò (ó ó !ó 2ð(ñ ˜ŸšÓ%Ùƒð $'Ø$'Ø+/ò	Øñà	ˆt�S˜%ÐÑ	 ñð ��c˜5Ð Ñ
!ðð ˜Ÿ™Ñ(ó	ó ó &ðñ  ˜ŸšÓ&ô;ó 'ð;ó
ó8ñ ˜×/Ò/×3Ò3Ó4Ù˜×/Ò/×3Ò3Ó4Ù˜×/Ò/×3Ò3Ó4Ø×Ò×Ò×$Ñ$ [×%JÒ%JÓKØ×Ò×Ò×$Ñ$ [×%9Ò%9Ó:Ø×Ò×Ò×$Ñ$ [×%JÒ%JÓKØ×Ò×Ò×$Ñ$ [×%9Ò%9Ó:Ø×Ò×Ò×$Ñ$ [×%JÒ%JÓKØ×Ò×Ò×$Ñ$ [×%9Ò%9Ó:ð	3Øð	3à˜$˜s™)Ñ$ñ	3ð ˜D ™KÑ(ð	3ð ó		3ó ;ó Ló ;ó Ló ;ó Ló 5ó 5ó 5ð	3ñ ˜×6Ò6×:Ò:Ó;Ù˜×6Ò6×:Ò:Ó;Ù˜×6Ò6×:Ò:Ó;Ø×Ò×#Ò#×+Ñ+¨K×,QÒ,QÓRØ×Ò×#Ò#×+Ñ+¨K×,@Ò,@ÓAØ×Ò×#Ò#×+Ñ+¨K×,QÒ,QÓRØ×Ò×#Ò#×+Ñ+¨K×,@Ò,@ÓAØ×Ò×#Ò#×+Ñ+¨K×,QÒ,QÓRØ×Ò×#Ò#×+Ñ+¨K×,@Ò,@ÓAð	?Øð	?à˜$˜s™)Ñ$ñ	?ð ˜D ™KÑ(ð	?ð ó		?ó Bó Só Bó Só Bó Só <ó <ó <ð	?õñ@ ˜×0Ò0×8Ñ8¸$×:QÒ:Q×:UÑ:UÐVÓWØ×Ò× Ñ ×(Ñ(¨×)NÒ)NÓOØ×Ò× Ñ ×(Ñ(¨×)=Ò)=Ó>Ù D°dÕ;ð #ò;Øð;à�c‘ñ;ð �U‰Oð;ð ó	;ó <ó ?ó Pó Xð;ñ Ø	×#Ò#×+Ñ+¨T×-KÒ-K×-OÑ-OÐPóð ×Ò×'Ñ'×/Ñ/°×0UÒ0UÓVØ×Ò×'Ñ'×/Ñ/°×0DÒ0DÓEÙ D°dÕ;ð #òGØðGà�c‘ñGð �U‰OðGð ó	Gó <ó Fó WóðGñ ˜×0Ò0×8Ñ8¸$×:QÒ:Q×:UÑ:UÐVÓWØ×Ò× Ñ ×(Ñ(¨×)NÒ)NÓOØ×Ò× Ñ ×(Ñ(¨×)=Ò)=Ó>Ù D°dÕ;ð !%Ø $ò	GØðGà�c‘ñGð �u‰oñGð �u‰oð	Gð
 óGó <ó ?ó Pó XðGñ Ø	×#Ò#×+Ñ+¨T×-KÒ-K×-OÑ-OÐPóð ×Ò×'Ñ'×/Ñ/°×0UÒ0UÓVØ×Ò×'Ñ'×/Ñ/°×0DÒ0DÓEÙ D°dÕ;ð !%Ø $ò	SØðSà�c‘ñSð �u‰oñSð �u‰oð	Sð
 óSó <ó Fó WóðSñ ˜×0Ò0×8Ñ8¸$×:QÒ:Q×:UÑ:UÐVÓWØ×Ò× Ñ ×(Ñ(¨×)NÒ)NÓOØ×Ò× Ñ ×(Ñ(¨×)=Ò)=Ó>Ù D°dÕ;ð !%Ø $Ø $òQØðQà�c‘ñQð �u‰oñQð �u‰oñ	Qð
 �u‰oðQð óQó <ó ?ó Pó XðQñ Ø	×#Ò#×+Ñ+¨T×-KÒ-K×-OÑ-OÐPóð ×Ò×'Ñ'×/Ñ/°×0UÒ0UÓVØ×Ò×'Ñ'×/Ñ/°×0DÒ0DÓEÙ D°dÕ;ð !%Ø $Ø $ò	Øð	à�c‘ñ	ð �u‰oñ	ð �u‰oñ		ð
 �u‰oð	ð ó	ó <ó Fó Wóð	ð ð
 ò	Øðà�c‘ñð �˜%‘Ñ!ñð ð	ð
 óó ðó4ó >ó/óð FKõ+ó\óõ&õ,/-ód& ñR ˜Ÿš×+Ò+Ó,Ø‡‚×Ò×Ñ˜[×BÒBÓCØ‡‚×Ò×Ñ˜[×1Ò1Ó2ò.ó 3ó Dó -ð.ñ8 ˜Ÿš×+Ò+Ó,Ø‡‚×Ò×Ñ˜[×BÒBÓCØ‡‚×Ò×Ñ˜[×1Ò1Ó2ò.ó 3ó Dó -ð.ñ8 ˜Ÿš×*Ò*Ó+Ø‡‚×Ò×Ñ˜K×AÒAÓBØ‡‚×Ò×Ñ˜K×0Ò0Ó1ò.ó 2ó Có ,ð.ñ@ ˜Ÿš×*Ò*Ó+Ø‡‚×Ò×Ñ˜K×AÒAÓBØ‡‚×Ò×Ñ˜K×0Ò0Ó1ò.ó 2ó Có ,ð.ó@õ/õ6<ó~/ñd ˜Ÿ	š	ŸšÓ(Ø‡‚‡‚×Ñ˜×>Ò>Ó?Ø‡‚‡‚×Ñ˜×-Ò-Ó.òSó /ó @ó )ðSñ> ˜Ÿ	š	ŸšÓ'Ø‡‚‡‚×Ñ˜×=Ò=Ó>Ø‡‚‡‚×Ñ˜×,Ò,Ó-òSó .ó ?ó (ðSô<;ô;ñ ˜ŸšŸšÓ&Ø‡‚‡‚×Ñ�{×<Ò<Ó=Ø‡‚‡‚×Ñ�{×+Ò+Ó,ò.ó -ó >ó 'ñ.ñ6 ˜ŸšŸšÓ'Ø‡‚‡‚×Ñ˜×=Ò=Ó>Ø‡‚‡‚×Ñ˜×,Ò,Ó-ò.ó .ó ?ó (ñ.ñ6 ˜×4Ò4×8Ò8Ó9Ø×Ò×!Ò!×)Ñ)¨+×*OÒ*OÓPØ×Ò×!Ò!×)Ñ)¨+×*>Ò*>Ó?òó @ó Qó :ññ ˜×3Ò3×7Ò7Ó8Ø×Ò× Ò ×(Ñ(¨×)NÒ)NÓOØ×Ò× Ò ×(Ñ(¨×)=Ò)=Ó>òó ?ó Pó 9ññ ˜×0Ò0×4Ò4Ó5Ù˜×1Ò1×5Ò5Ó6Ø×Ò×Ò×#Ñ# K×$IÒ$IÓJØ×Ò×Ò×#Ñ# K×$8Ò$8Ó9Ø×Ò×Ò×%Ñ% k×&KÒ&KÓLØ×Ò×Ò×%Ñ% k×&:Ò&:Ó;Ø×Ò×Ò×&Ñ& {×'LÒ'LÓMØ×Ò×Ò×&Ñ& {×';Ò';Ó<òAó =ó Nó <ó Mó :ó Kó 7ó 6ñAñ ˜×/Ò/×7Ñ7¸×9OÒ9O×9SÑ9SÐTÓUÙƒð
 !%ò	KØðKà�c‘ñKð ñKð �u‰oð	Kð
 óKó ó VñKñ Ø	×Ò×%Ñ% t×'?Ò'?×'CÑ'CÐDóð ×Ò×!Ñ!×)Ñ)¨+×*>Ò*>Ó?Ùƒð
 !%Ø $òUØðUà�c‘ñUð ñUð �u‰oñ	Uð
 �u‰oðUð óUó ó @óñ
Uñ Ø	×Ò×&Ñ&¨×(AÒ(A×(EÑ(EÐFóñ ƒð
 !%Ø $Ø $ò
Øð
à�c‘ñ
ð ñ
ð �u‰oñ	
ð
 �u‰oñ
ð �u‰oð
ð ó
ó óñ
öVô/ð7Ø	�&Ñ	ñ7Ø$,¨VÑ$4ñ7ØIOð7àõ7ñ-Ð'9ð -¸fõ -ð ðEØðEà�c‘ñEð ñEð �˜%‘Ñ!ð	Eð
 óEó ñEñR ˜×)Ò)×1Ñ1Ó2ñ�Fñ ˜vð ¨$ó ó 3ññ ˜×,Ò,¨d×.?Ò.?Ð@ÓAÙƒòó ó Bññ ˜×+Ò+Ð,Ó-ò"ó .ñ"ñ ˜×/Ò/Ð0Ó1ô9ó 2ñ9ñ ˜×2Ò2Ð3Ó4òCó 5ñCñ2 ˜×AÒAÐBÓCòMó DñMð22 Ø
ð2 àð2 ð �VÑð2 ð ð	2 ð
 ð2 ð ˆ6�6ˆ>Ñõ2 ñj ˜×-Ò-Ó.ÙˆX�~Ó&ðLØ
ðLàðLð �VÑðLð ð	Lð
 ðLð ˆ6�6ˆ>ÑóLó 'ó /ñLñ4 ˜×/Ò/Ó0ÙˆX�~Ó&ðLØ
ðLàðLð �VÑðLð ð	Lð
 ðLð ˆ6�6ˆ>ÑóLó 'ó 1ñLð/ Fñ /¨uð /¸õ /ð5 Fñ 5¨uð 5¸õ 5ñ
¨ð 
Ð3Eõ 
ñ(FÐ%7ñ F¸Vð FÈõ Fñ!�X˜fÑ%ð !¨&õ !ñNØñNØ#'ðNØ05·±ðNØEJÇ\Â\õNñ&˜fñ &¨ñ &°ñ &ÀTõ &ñ"/˜fñ /¨ñ /°ñ /¸ñ /ÈTõ /ñ"! Vð !°4¸±9ñ !ÈTõ !ñ$ Vð $°4¸±9ñ $ÈTõ $ñ ˜×2Ò2Ó3ÙƒØñS ð S¨t°C©yñ SÈó Só ó ó 4ñSð  ØØØóc4Øñc4à
ñc4ð ñc4ð ñ	c4ð
 ñc4ð ðc4ð õc4ñL ˜×,Ò,Ó-ÙƒØð  ØØóØñà
ñð ñð ñ	ð
 ðð óó ó ó .ññ  ˜ŸšÓ ÙƒØò	#ó ó ó !ñ	#ñ ˜×=Ò=Ó>Ùƒà¨$¸)¿.¹.×:NÑ:Nó1ó ó ?ñ1ñ˜Ÿ™ñ °·±ñ Àdð Ètõ ð0 ‡‚×Ñ×Ñ˜[×BÒBÓCØ‡‚‡�×Ñ˜×>Ò>Ó?Ù˜ÕØ',õ tWó ó @ó DñtWñn ˜×0Ò0×8Ñ8¸$×:QÒ:Q×:UÑ:UÐVÓWØ×Ò× Ñ ×(Ñ(¨×)=Ò)=Ó>ÙƒØð
  $Ø#òPØðPà�s˜C�x‘ñPð ñPð �e‰_ñ	Pð
 �e‰_ðPð óPó ó ó ?ó XñPñf ˜×/Ò/×3Ò3Ó4Ø×Ò×Ò×$Ñ$ [×%JÒ%JÓKØ×Ò×Ò×$Ñ$ [×%9Ò%9Ó:ÙƒØð
 48ó	WØðWà˜%  S ™/Ñ*ñWð ñWð ˜E %¨ ,Ñ/Ñ0ð	Wð
 óWó ó ó ;ó Ló 5ñ
Wñ. ˜×-Ò-Ó.Ù˜×-Ò-Ó.Ù˜×-Ò-Ó.ØÙƒñ	�vð 	¨¨c°3¨h©ð 	¸Fó 	ó ó ó /ó /ó /ñ
	ñ ˜×.Ò.Ó/Ù˜×.Ò.Ó/Ù˜×.Ò.Ó/ØÙƒñ	˜ð 	¨¨s°C¨x©ð 	¸Vó 	ó ó ó 0ó 0ó 0ñ
	ñØðà�3˜�8‰_ñð �c˜3 �_ fÐ,Ñ-ðð õ	ñ8 ˜×6Ò6Ó7Ù˜×6Ò6Ó7Ù˜×6Ò6Ó7Ùˆ\ÓòTó ó 8ó 8ó 8ñTñn ˜ŸšÓ%Ù‰U‘EÓØ uõ ó ó &ññ ˜ŸšÓ$ÙƒñX°4õ Xó ó %ñXñ ˜Ÿš×,Ñ,¨d¯kªk¯o©oÐ>Ó?Ùƒð $(Ø Ÿ=š=Ø%)Øó
Ø	ð
ð �E—K‘KÑ ñ
ð �LŠLð	
ð
 �U—\’\Ñ"ð
ð ó
ó ó @ñ
ñ ˜Ÿš×*Ò*Ð+Ó,ð
 $(Ø Ÿ=š=Ø%)ØóØðà	ðð �E—K‘KÑ ñ	ð
 �LŠLðð �U—\’\Ñ"ðð óó -ññ ˜	Ó"ò,ó #ñ,ñ ˜×.Ò.Ó/Ø×Ò×Ñ×'Ñ'¨×(<Ò(<Ó=Ùƒð ØØ#Ø—^‘^×)Ñ)ñ)Øð)àð)ð ñ)ð ð	)ð
 �VÑð)ð ð)ð ó)ó ó >ó 0ñ)ñX ˜×;Ò;Ó<Ø×$Ò$×,Ñ,×4Ñ4°[×5IÒ5IÓJÙˆX‘{Ó#ð-Øð-àð-ð ð-ð ˆ6�6ˆ>Ñó	-ó $ó Kó =ñ-ñx ˜×HÒH×PÑPÓQð
 ØñG*ð #'Ø!ôG*ØñG*à	ðG*ð ñG*ð ñ	G*ð
 ñG*ð ˜ÑðG*ð �E‰?ðG*ð ˆ6�6ˆ>ÑóG*ó RñG*ôTñ ˜Ÿš˜Ó'ÙƒØôó ó ó (ññ ˜×)Ò)Ó*Ùƒò9ó ó +ñ9ñ ˜ŸšÓ'ò6ó (ñ6ñ ˜Ÿš×)Ñ)¨4¯8ª8¯<©<Ð8Ó9ð $(Ø ó		DØ
ð	Dð �E—K‘KÑ ð	Dð 
�&Ñ	ð		Dð
 ó	Dó :ñ	Dñ ˜Ÿš×-Ñ-¨t¯|ª|×/?Ò/?Ð@ÓAò.˜&ð . x°¡}ó .ó Bñ.ñ ˜Ÿ	™	Ÿ™×=Ò=Ó>ô,ó ?ñ,ñ ˜Ÿ	š	Ó"ÙƒØ38Àõ 
ó ó #ñ
ð 5:÷ 
ð <AÈ÷ +ñ: ˜Ÿ	š	Ó"Ùƒòó ó #ññ
 ˜ŸšÓ'ôGó (ñGò �—’˜tŸ{š{Ô +Ú �—’˜dŸjšjÔ )Ú �—’˜dŸjšjÔ )Ú �—’ §¢Ô -Ú �—’˜TŸY™YÔ 'Ú �—’˜TŸYšYÔ 'Ú �—’ $§.¡.Ô 1Ú �—’ §¢Ô /Ú �×"Ò" D×$4Ñ$4Ô 5Ú �—’ §¢Ô -Ú �×!Ò! 4§?¢?Ô 3Ú �—’ $§.¢.Ô 1Ú �×#Ò# T×%6Ò%6Ô 7Ú �—’˜tŸ{š{Ô +Ú �×!Ò! 4§?¢?Ô 3Ú �—’ §¢Ô -Ú �×!Ò! 4§?¢?Ô 3Ú �—’˜dŸjšjÔ )Ú �—’˜TŸYšYÔ 'Ú �—’˜tŸ{š{Ô +Ú �—’˜dŸjšjÔ )Ú �—’ §¢Ô -Ú �×"Ò" D×$4Ò$4Ô 5Ú �×%Ò% t×':Ò':Ô ;Ú �—’˜TŸY™YÕ 'r-   