ó
    EñiÛT ã            -       ó€€  • S SK r S SKJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKrS SKJr  S SKJrJrJr  S SKJrJrJrJr  S S	KJr  S S
KJrJr  S SKJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)  S SK*J+r+J,r,J-r-J.r.J/r/  S SK0J1r1J2r2  S SK3J4r5  S SK6J7r7J8r8  S SK9J:r;  \	" S5      r<\" S5      r=\R|                  R~                  r?\R€                  Rƒ                  SSS5      rB\C" S5      u  rDrErFS rGS rHS\\\=\<4   /\\=\<4   4   4S jrIS\!4S jrJS rKS rL\I" \?Rš                  \?Rœ                  /5      \/" 5       SSS\Rž                  SS4S  j5       5       rP\I" \?R¢                  R¤                  \?R¢                  R¦                  /5      \/" 5       S! 5       5       rT\I" \?Rª                  R¤                  \?Rª                  R¦                  /5      \/" 5       S"S#.S$ j5       5       rU\I" \?R¬                  5      \/" 5       S% 5       5       rV\I" \?R®                  R¤                  \?R®                  R¦                  \?R°                  R¤                  \?R°                  R¦                  /5      \/" S&S'5      S( 5       5       rY\I" \?R´                  R¤                  \?R´                  R¦                  /5      \/" 5       S) 5       5       rZS* r[GS=S+\S,\\\]   S-\^4S. jjr_\I" \?RÀ                  R¤                  \?RÀ                  R¦                  /5      \/" 5       S/ 5       5       raSrbS,\\\]   4S0 jrc\I" \?RÈ                  R¤                  \?RÈ                  R¦                  /5      \/" 5       S1 5       5       re\I" \?RÌ                  RÎ                  5      SS2.S3 j5       rh\I" \?RÌ                  R¤                  5      \RÒ                  SSSS4.S5 j5       rj\I" \?RÖ                  R¤                  \?RÖ                  R¦                  /5      \/" 5       \RÒ                  SSSS4.S6 j5       5       rl\I" \?RÖ                  RÚ                  \?RÖ                  RÜ                  /5      \/" 5       \RÒ                  SSSS4.S7 j5       5       ro\I" \?Rà                  R¤                  \?Rà                  R¦                  /5      \/" 5       SSSSS4.S8 j5       5       rq\I" \?Rä                  R¤                  \?Rä                  R¦                  /5      \/" 5       S+\S,\\\]   S9\]S:\]4S; j5       5       rs\I" \?Rè                  R¤                  5      GS=S< j5       ruS= rv\I" \?Rî                  R¤                  5      S> 5       rx\I" \?Rò                  5         GS>S?\S@\SA\SB\S-  SC\zS-  SD\Rö                  S-  4SE jj5       r|\I" \?Rú                  5       GS?SF\SG\SH\SD\Rö                  S-  4SI jj5       r~\I" \?Rþ                  5      SJSJSSK.S?\SF\SG\SH\SD\Rö                  S-  4
SL jj5       r€\I" \?GR                  5             GS@SM\R$                  SN\R$                  SB\S-  SO\S-  SD\Rö                  S-  SP\^SQ\]SR\]SS\]4ST jj5       r‚\I" \?GR                  R¤                  5      SUSV.S+\S,\]SW\SX\R$                  SY\zSZ\^S\4S[ jj5       r„\I" \?GR
                  R¤                  5      SUSV.S+\S,\]SW\SX\R$                  SY\zSZ\^S\4S\ jj5       r†\/" 5       \I" \?GR                  R¤                  5      S] 5       5       rˆ\I" \?GR                  R¤                  5      SSSS SSS^.S_\SY\zS`\S-  S'\S-  Sa\S-  Sb\]Sc\^S\4Sd jj5       rŠ\I" \?GR                  R¤                  \?GR                  GR                  /5      \/" 5       Se 5       5       r�\I" \?GR                  GR                  5      GS=Sf j5       r�\I" \?GR                   R¤                  \?GR                   GR                  /5      \/" 5       Sg 5       5       r‘\I" \?GR                   GR                  5      GS=Sh j5       r’\I" \?GR&                  R¤                  5      Si 5       r”\I" \?GR&                  R¦                  5      Sj 5       r•\I" \?GR,                  R¤                  5      Sk 5       r—\I" \?GR,                  GR0                  5      Sl 5       r™\I" \?GR4                  R¤                  5      Sm 5       r›\I" \?GR8                  R¤                  5      SSSSSSn.So j5       r�\I" \?GR<                  R¤                  5      GSASp j5       rž\I" \?GR>                  R¤                  5      GS>Sq j5       r \I" \?GRB                  R¤                  5      GSASr j5       r¡\I" \?GRD                  R¤                  5      Ss 5       r£\I" \?GRH                  GR0                  5      St 5       r¥S+\Su\z4Sv jr¦S+\Sw\Sx\z4Sy jr§ GSBSz\Su\zS{\^4S| jjr¨GSCSw\Su\zS}\z4S~ jjr©Sw\S\S€\^Su\z4S� jrª GSDSƒ\zS‚\S?\S„\z4S… jjr«S†\z4S‡ jr¬\I" \?GRZ                  R¤                  \?GRZ                  GR\                  /5      \/" SˆS‰5      GSESw\S†\zS‹\^4SŒ jj5       5       r¯\I" \?GR`                  R¤                  \?GRb                  R¦                  /5      \/" 5       S?\S\4S� j5       5       r²\I" \?GRf                  /5      \/" SˆS‰5      S?\4SŽ j5       5       r´S�\S\4S� jrµ\I" \?GRl                  5      \/" 5       S+\Sw\S‘\^S\4S’ j5       5       r¶\I" \?GRn                  5      \/" 5       GS=S+\Sw\S‘\^S\4S“ jj5       5       r·\I" \?GRp                  5      \/" 5       GS=S+\S‘\^S\4S” jj5       5       r¸\I" \?GRr                  5      \/" 5       GS=S+\S‘\^S\4S• jj5       5       r¹\I" \?GRt                  R¤                  5      GSFSw\S‘\^S–\^4S— jj5       rº\I" \?GRv                  R¤                  \?GRv                  R¦                  /5      \/" 5       S?\S˜\S\4S™ j5       5       r»\I" \?GRx                  R¤                  5      GS=Sw\S–\^4Sš jj5       r½\I" \?GR|                  R¤                  \?GR|                  R¦                  /5      \/" S›SœS�5      SSSž.S+\SŸ\^S–\^S\¿\\\4   4S  jj5       5       rÀ\I" \?GR‚                  R¤                  \?GR‚                  R¦                  /5      \/" 5       SS¡.S›\Sœ\S\SŸ\^S\4
S¢ jj5       5       rÂ\I" \?GR†                  R¤                  \?GR†                  R¦                  /5      \/" S£SŠS¤5      SUS¥.Sw\S¦\^S\¿\\\4   4S§ jj5       5       rÄ\I" \?GRŠ                  R¤                  \?GRŠ                  R¦                  /5      \/" S¨SœS�5      SUSS©.Sw\S¦\^S–\^S\¿\\\4   4Sª jj5       5       rÆ\I" \?GRŽ                  R¤                  \?GRŽ                  R¦                  /5      \/" 5       SUSS«.S¨\Sœ\S\S€\^S¬\^S\4S­ jj5       5       rÈ\I" \?GR’                  5      \/" S£SŠS¤5        GSGS¨\Sœ\S®\^S¯\^S\¿\\\4   4
S° jj5       5       rÊS±\zS\¿\^\^4   4S² jrË\I" \?GR˜                  R¤                  \?GR˜                  R¦                  /5      \/" S³S´5      GSHSw\S±\zS\¿\\4   4Sµ jj5       5       rÍ\I" \?GRœ                  R¤                  \?GRœ                  GRž                  /5      \/" S¶S·S¨Sœ5      Sw\S\¿\\\\4   4S¸ j5       5       rÎ\I" \?GR                   R¤                  5         GSISw\S¹\^Sº\^S»\zS-  4S¼ jj5       rÑS½\S¾\S\¿\\\]   \\\]   4   4S¿ jrÒS½\S¾\Sx\zS-  S\¿\\4   4SÀ jrÓS?\SÁ\S\^4SÂ jrÔ\I" \?GRª                  5      SUSSSSSSÃ.Sw\S\S€\^S–\^S‚\S-  S¨\S-  Sœ\S-  S�\S-  S\¿\\\\4   4SÄ jj5       rÕ\I" \?GR¬                  R¤                  \?GR¬                  R¦                  /5      SUSSSÅ.Sw\S\S‘\^S€\^SÆ\^SÇ\S-  S\4SÈ jj5       r×\I" \?GR°                  5      \/" SÉSÊSUSË9   GSJS+\Sw\S‘\^SÌ\^SÆ\^S\¿\\4   4SÍ jj5       5       rÙ\I" \?GR´                  R¤                  5      SÎ 5       rÛ\I" \?GR¸                  5      \/" 5         GSKS?\S˜\SÁ\S€\^SÌ\^S\4SÏ jj5       5       rÜSÐ rÝSÑ rÞ\I" \?GR¾                  5      \/" 5       SÒ 5       5       rà\I" \?GRÂ                  5      \/" 5       SÓ 5       5       râSÔ rã\I" \?GRÈ                  5      \/" SÕ5      SÖ 5       5       rå\I" \?GRÌ                  5      \/" SÕ5      S× 5       5       rçSØ rè\I" \?GRÒ                  5      \/" 5       SÙ 5       5       rê\I" \?GRÖ                  5      \/" 5       SÚ 5       5       rì\I" \?GRÚ                  R¤                  5      SÛ 5       rî\I" \?GRÞ                  R¤                  \?GRÞ                  GRà                  \?GRâ                  R¤                  \?GRâ                  GRà                  /5      \/" SÕ5      SÜ 5       5       ròSÝ ró\I" \?GRè                  5      \/" 5       SÞ 5       5       rõ\I" \?GRì                  5      \/" 5       Sß 5       5       r÷\I" \?GRð                  R¤                  \?GRð                  GRà                  \?GRò                  R¤                  \?GRò                  GRà                  /5      \/" SÕ5      Sà 5       5       rú\I" \?GRö                  5      \/" 5       GSLS+\Sá\üS\4Sâ jj5       5       rý\I" \?GRü                  5      \/" 5       Sã\S+\Sá\üSä\S\4
Så j5       5       rÿ\I" \?GR                   R¤                  \?GR                   R¦                  /5      \/" SUSË9SJSJSæ.Sç j5       5       Gr\I" \?GR                  R¤                  \?GR                  R¦                  /5      \/" 5       SS2.Sè j5       5       Gr\I" \?GR                  GRø                  5      GSMSé j5       Gr\I" \?GR                  GR                  5      GSMSê j5       Gr\I" \?GR                  R¤                  \?GR                  R¦                  /5      \/" 5       GS?Së j5       5       Gr	\I" \?GR                  R¤                  5        GSFSì j5       Gr\I" \?GR                  5      \/" SUSË9GS?SD\Rö                  S-  4Sí jj5       5       GrSî GrGSNSï jGr GS?Sð\R$                  S@\R$                  Sñ\\\]   \]-  Sò\\\]   \]-  Só\\\]   \]-  Sô\^Sõ\]Sö\\\]   \]-  S-  4S÷ jjGrSø Gr\I" \?GR$                  R¤                  5      Sð\R$                  S@\R$                  SB\R$                  S-  Sù\R$                  S-  Sú\R$                  S-  Sû\^Sü\üSý\ü4Sþ j5       Gr\I" \?GR(                  R¤                  5      Sð\R$                  S@\R$                  SB\R$                  Sñ\\\]   Sò\\\]   Só\\\]   Sô\^Sö\\\]   Sõ\]4Sÿ j5       Gr\GR,                  GR.                  (       Ga
  \R€                  Rƒ                  GS SS5      Gr\I" \R|                  GR2                  GR4                  R¤                  5      GS 5       Gr\I" \R|                  GR2                  GR8                  R¤                  5      GS 5       Gr\GR,                  GR<                  (       aO  \R€                  Rƒ                  GSSS5      Gr\I" \R|                  GR@                  GRB                  5      GS 5       Gr"\R€                  Rƒ                  GSSS5      Gr#\I" \R|                  GRH                  GRJ                  R¤                  5      \I" \R|                  GRH                  GRL                  R¤                  5      \I" \R|                  GRH                  GRL                  GRN                  5      GS 5       5       5       Gr(\I" \R|                  GRH                  GRJ                  GRR                  5      \I" \R|                  GRH                  GRJ                  GRT                  5      GS 5       5       Gr+\I" \R|                  GRH                  GRX                  R¤                  5      \I" \R|                  GRH                  GRX                  GRN                  5      GS 5       5       Gr-\I" \R|                  GRH                  GRX                  GRR                  5      \I" \R|                  GRH                  GRX                  GRT                  5      GS	 5       5       Gr.\I" \R|                  GRH                  GR^                  R¤                  5      \I" \R|                  GRH                  GR`                  R¤                  5      GS
 5       5       Gr1\R€                  Rƒ                  GSSS5      Gr2\I" \R|                  GRf                  GRh                  5          GSOGS j5       Gr5\I" \R|                  GRf                  GRl                  5      GS 5       Gr7GS Gr8\I" \?GRr                  R¤                  5           GSPGS j5       Gr:GS Gr;\I" \?GRx                  R¤                  5      GS 5       Gr=\I" \?GR|                  5      \/" 5            GSPGS j5       5       Gr?\I" \?GR€                  5      \/" SÕ5      GS 5       5       GrA\I" \?GR„                  R¤                  5      GS 5       GrC\I" \?GRˆ                  R¤                  5      GS 5       GrE\I" \?GRŒ                  R¤                  5      GS 5       GrG\I" \?GR�                  5      \/" SÕ5      GS 5       5       GrIGS\S}\z4GS jGrJ\I" \?GR–                  5      \/" SÇS'5      GS 5       5       GrL\I" \?GRš                  5      \/" SÕ5      GS 5       5       GrN\I" \?GRž                  5      \/" SÇS'5      GS 5       5       GrP\I" \?GR¢                  5      \/" SÕ5      GS 5       5       GrR\I" \?GR¦                  R$                  5      GS?GS  j5       GrT\I" \?GRª                  R¤                  \?GRª                  R¦                  /5      \/" 5       GS! 5       5       GrV\I" \?GR®                  R¤                  \?GR®                  R¦                  /5      \/" 5       S"GS".GS#\]4GS$ jj5       5       GrW\I" \R|                  R~                  GR°                  R¤                  \R|                  R~                  GR°                  R¦                  /5      \/" 5       GS% 5       5       GrX\I" \?GR²                  R$                  \?GR´                  R$                  /5      GS& 5       Gr[\I" \?GR¸                  R¤                  /5      GS' 5       Gr]\I" \?GR¼                  R¤                  \?GR¼                  R¦                  /5      \/" SUSË9SJSJSæ.GS( j5       5       Gr_\I" \?GRÀ                  R$                  /5      GS) 5       Gra\I" \?GRÄ                  R¤                  \?GRÆ                  R¤                  /5      SSGS*.GS+ j5       Grd\I" \?GRÊ                  R¤                  /5      SSGS*.GS, j5       Grf\I" \?GRÎ                  /5      \/" 5       GS- 5       5       Grh\I" \?GRÒ                  /5      GS. 5       Grj\I" \?GRÖ                  /5      GS/ 5       Grl\I" \?GRÚ                  /5      GS0 5       Grn\I" \?GRÞ                  /5      GS1 5       Grp\I" \?GRâ                  /5      GS2 5       GrqGS3\]GS4\]S\]4GS5 jGrrGS6 Grs\I" \?GRè                  /5      SB\S-  4GS7 j5       Gru\I" \?GRì                  /5      GS8 5       Grw\I" \?GRð                  /5      GS9 5       Gry\I" \?GRô                  R¤                  5      GS: 5       Gr{\I" \?GRø                  5      \/" 5       GS; 5       5       Gr}\I" \?GRü                  R¤                  5            GSQGS< j5       Gr\I" \?GR                   R¤                  5      GS= 5       Gr�GSBGS> jGr‚\I" \?GR                  R¤                  \?GR                  R¦                  /5      \/" 5       GSRSGS?.GS@ jj5       5       Gr„\I" \?GR
                  R¤                  \?GR                  R¤                  /5      GSA 5       Gr‡\I" \?GR
                  GR                  \?GR
                  GR                  \?GR                  GR                  \?GR                  GR                  \?GR                  R¤                  \?GR                  GR                  /5      \/" S&S'5      GSSGSB j5       5       Gr‹\I" \?GR                  R¤                  5      GSC 5       Gr�\I" \?GR                  R¤                  5      GSD 5       Gr�\I" \?GR                   R¤                  5      GSE 5       Gr‘\I" \?GR$                  GR&                  \?GR(                  GR&                  \?GR$                  R$                  \?GR(                  R$                  \?GR*                  R¤                  \?GR,                  R¤                  \?GR.                  R¤                  /5      GSF 5       Gr˜\I" \?GR2                  GR&                  \?GR4                  GR&                  \?GR2                  R$                  \?GR4                  R$                  /5      GSGSG j5       Gr›\I" \?GR8                  GR&                  \?GR:                  GR&                  /5      GSGSH j5       Grž\I" \?GR>                  R¤                  \?GR>                  GR@                  /5      GSI 5       Gr¡GSJ Gr¢\I" \?GRF                  R$                  \?GRF                  GR&                  /5      GSK 5       Gr¤\I" \?GRJ                  R$                  \?GRJ                  GR&                  /5      GSL 5       Gr¦\I" \?GRN                  R¤                  5      GSM 5       Gr¨\I" \?GRR                  R$                  \?GRR                  GR&                  /5      GSN 5       Grª\I" \?GRV                  R$                  \?GRV                  GR&                  /5      GSO 5       Gr¬\I" \?GRZ                  R¤                  5      GSP 5       Gr®\I" \?GR^                  R$                  5      \/" 5       GSS\4GSQ jj5       5       Gr°\I" \?GRb                  /5      \/" 5        GSTGSR j5       5       Gr²\I" \?GRf                  /5       GSTGSS j5       Gr´\I" \?GRj                  /5       GSTGST j5       Gr¶\I" \?GRn                  R¤                  \?GRp                  R¤                  /5      GS=GSU j5       Gr¹\I" \?GRt                  GR&                  5      GSV 5       Gr»\I" \?GRx                  R¤                  5      GSW 5       Gr½\I" \?GR|                  5      GSX 5       Gr¿\I" \?GR€                  5      \/" 5       GSY 5       5       GrÁ\I" \?GR„                  5      GSZ 5       GrÃ\I" \?GRˆ                  R¤                  5      GS=GS[ j5       GrÅGSAGS\ jGrÆ\I" \?GRŽ                  R¤                  5      GS] 5       GrÈ\I" \?GRŽ                  Rö                  5      GS^ 5       GrÉGS_ GrÊGS` GrËGSa GrÌGSb GrÍ GS=S?\GSc\]GSd\]GSe\]GSf\]GSg\]GSh\]GSi\]GSj\]GSk\]GSl\]GSm\]GSn\]GSo\]GSp\]GSq\]GSr\]GSs\]GSt\]GSu\]Sƒ\zGSv\^4,GSw jjGrÎGSx GrÏS?\GS\GSc\]GSd\]GSe\]GSf\]GSg\]GSh\]GSi\]GSj\]GSk\]GSl\]GSp\]GSq\]GSr\]GSs\]GSt\]GSu\]Sƒ\z4&GSy jGrÐGSz GrÑ\I" \?GR¤                  R¤                  5      GS{ 5       GrÓ\I" \?GR¨                  R¤                  5          GSOGS| j5       GrÕ\I" \?GR¬                  R¤                  5      GS} 5       Gr×\I" \?GR°                  5      \/" SÇS'5          GSOGS~ j5       5       GrÙ\I" \?GR´                  5      \/" SÕ5      GS 5       5       GrÛS?\GS€\4GS� jGrÜ " GS‚ GSƒ\5      GrÝS?\GS€\GS„\]4GS… jGrÞ\I" \?GR¾                  R¤                  5      GS† 5       Grà\I" \?GRÂ                  5      \/" 5       GS‡ 5       5       Grá\I" \?GRÄ                  5      \/" SÕGSˆ5      GS‰ 5       5       Grâ\I" \?GRÆ                  R¤                  /5      GSŠ 5       Grã\I" \?GRÈ                  R¤                  5           GSUGS‹ j5       Grä\I" \?GRÊ                  R¤                  \?GRÊ                  R¦                  /5      \/" 5       SSSSSGSŒ.GS� j5       5       Græ\I" \?GRÎ                  R¤                  \?GRÎ                  R¦                  /5      \/" 5       SSSSSGSŒ.GSŽ j5       5       Grè\I" \?GRÒ                  R¤                  5      GS� 5       Grê\I" \?GRÖ                  R¤                  5      GSVGS� j5       GrìGSBS,\]GS‘\]GS’\^4GS“ jjGríGS” GrîGS• Grï\I" \?GRà                  R¤                  5      GS=GS– j5       GrñGS=GS— jGròGS?GS˜ jGróGS™ GrôGS?GSš jGrõGSWGS› jGrö\I" \?GRî                  R¤                  5      GSœ 5       Grø\I" \?GRò                  5      GS� 5       Grú\I" \?GRö                  GRø                  \?GRö                  GRú                  \?GRö                  GRü                  \?GRö                  GRþ                  /5      \/" 5       GS?GSž j5       5       Gr \I" \?GR                  GRø                  \?GR                  GRú                  \?GR                  GRü                  \?GR                  GRþ                  /5      GS?GSŸ j5       Gr\I" \?GR                  R¤                  /5          GSXGS \GS¡\GS¢\GS£\üGS¤\^GS¥\^GS¦\üS-  4GS§ jj5       Gr\I" \?GR                  GRf                  /5          GSXGS \GS¡\GS¢\GS¨\S-  GS©\S-  GSª\S-  GS£\üGS¤\^GS¥\^GS¦\üS-  4GS« jj5       GrGS \GS¬\¿\]GS­4   4GS® jGr\I" \?GR                  /5          GSXGS \GS¡\GS¢\GS¯\S-  GS°\^GS£\üGS¤\^GS¥\^GS¦\üS-  4GS± jj5       Gr\I" \?GR                  /5           GSYGS \GS¡\GS¢\GS¯\S-  GS£\üGS¤\^GS¥\^GS¦\üS-  4GS² jj5       Gr
\I" \?GR                  /5       GS?GS³\GS \GS¡\GS¢\SÇ\GS´\GSµ\GS¶\GS·\]GS¸\]GS£\üGS¤\^GS¹\GSº\GS¦\üS-  4GS» jj5       Gr\I" \?GR                  /5          GSZGS \GS¡\GS¢\GS£\üGS¤\^GS¼\S-  GS¦\üS-  4GS½ jj5       Gr\I" \?GR                  /5        GSAGS³\GS \GS¡\GS¢\SÇ\GS´\GS£\üGS¤\^GS¼\S-  GS¦\üS-  4GS¾ jj5       Gr\I" \?GR"                  /5           GS[GS \GS¡\GS¢\GS¼\S-  GS£\üGS¤\^GS¿\S-  GS¦\üS-  S\¿\\4   4GSÀ jj5       Gr\I" \?GR&                  /5         GS\GS \GS¡\GS¢\GS¯\S-  GS°\^GS¤\^GS¦\üS-  4GSÁ jj5       Gr\I" \?GR*                  /5        GS]GS³\GS \GS¡\GS¢\GS¯\S-  SÇ\GS´\GS¹\GSº\GS£\üGSÂ\\\^   GS¤\^GS¦\üS-  4GSÃ jj5       Gr\I" \?GR.                  /5       GS?GS³\GS \GS¡\GS¢\SÇ\GS´\GS¹\GSº\GS¯\GSµ\GS¶\GS·\]GS¸\]GS£\üGS¤\^GS¦\üS-  4 GSÄ jj5       Gr\I" \?GR2                  R¤                  /5           GSUGS \GS¡\GS¢\GSµ\S-  GS¶\S-  GS·\]GS¸\]GS£\üGS¤\^GS¥\^GS¦\üS-  GSÅ\]S-  GSÆ\]S-  GSÇ\S-  GSÈ\S-  4GSÉ jj5       Gr\I" \?GR2                  GRf                  /5           GSUGS \GS¡\GS¢\GSµ\S-  GS¶\S-  GS·\]GS¸\]GS£\üGS¤\^GS¥\^GS¨\S-  GS©\S-  GSª\S-  GS¦\üS-  GSÅ\]S-  GSÆ\]S-  GSÇ\S-  GSÈ\S-  4$GSÊ jj5       Gr\I" \?GR8                  /5         GS>GS³\GS \GS¡\GS¢\SÇ\GS´\GSµ\GS¶\GS·\]GS¸\]GS£\üGS¤\^GS¹\GSº\GS¦\üS-  GSÅ\]S-  GSÆ\]S-  4"GSË jj5       Gr\I" \?GR<                  /5           GS^GS \GS¡\GS¢\SB\S-  GSÌ\S-  GSÍ\S-  GSÎ\]S-  GSÏ\]S-  GS£\üGSÐ\]GS°\^GS¦\üS-  GSÑ\S-  GSÒ\S-  GSÓ\]S-  4GSÔ jj5       Gr\I" \?GR@                  /5         GSWGS³\GS \GS¡\GS¢\SB\S-  GSÌ\S-  GSÍ\S-  GSÎ\GRB                  GSÏ\GRB                  GS´\GS£\üGS¹\GSº\GSÐ\]GSÕ\^GS¦\üS-  GSÖ\]S-  GS×\^4$GSØ jj5       Gr"    GS_S+\R$                  SH\R$                  GSÙ\R$                  GSÚ\R$                  SB\R$                  S-  GSÛ\R$                  S-  SD\Rö                  S-  GSÜ\^4GSÝ jjGr#\I" \?GRH                  R¤                  /5          GS_S+\R$                  SH\R$                  GSÙ\R$                  GSÚ\R$                  SB\R$                  S-  GSÛ\R$                  S-  SD\Rö                  S-  GSÜ\^4GSÞ jj5       Gr%     GS`S+\R$                  SH\R$                  GSÙ\\\R$                     GSß\\\7   GSÚ\\\R$                     GSà\\\7   SB\R$                  S-  SD\Rö                  S-  GSá\\\8   S-  GSâ\\\8   S-  GSÜ\^4GSã jjGr&\I" \?GRN                  R¤                  /5          GS_S+\R$                  SH\R$                  GSÙ\\\R$                     GSß\\\7   GSá\\\8   GSÚ\\\R$                     GSà\\\7   GSâ\\\8   SB\R$                  S-  GSä\Rö                  S-  GSå\\\]   S-  GSÜ\^4GSæ jj5       Gr(\I" \?GRR                  GRT                  \?GRR                  GRV                  /5      \/" 5       GSBGSç j5       5       Gr,\I" \?GRZ                  GRT                  5      GSBGSè j5       Gr.\I" \?GR^                  R¤                  \?GR^                  R¦                  /5      \/" 5       GS=SS2.GSé jj5       5       Gr0GSê Gr1GSë Gr2\I" \?GRf                  R¤                  \?GRh                  R¤                  /5      GS?GSì j5       Gr3\I" \?GRj                  R¤                  \?GRl                  R¤                  /5      GSAGSí j5       Gr5\I" \?GRn                  R¤                  \?GRp                  R¤                  /5        GSAGS\GSî\\]\GRB                  -     GSï\\]\GRB                  -     GSð\üS-  GSñ\üS-  4
GSò jj5       Gr7\I" \?GRr                  R¤                  \?GRt                  R¤                  /5      GS>GSó j5       Gr9\I" \?GRv                  R¤                  \?GRv                  GRx                  \?GRv                  GR                  \?GRv                  GRz                  /5      GSaGSô j5       Gr>GSõ Gr?\I" \?GR€                  R¤                  5        GSAGSö j5       GrA\I" \?GR„                  R¤                  5      GS÷ 5       GrB\I" \?GR†                  R¤                  5      GSø 5       GrC\I" \?GRˆ                  R¤                  5      GSù 5       GrDGSú GrEGSû GrF\I" \?GRŽ                  R¤                  \?GR�                  R¤                  /5      GSRGSü j5       GrI\I" \?GR”                  R¤                  5      GSbGSý j5       GrJ\I" \?GR–                  R¤                  5      GScGSþ j5       GrL\I" \?GRš                  5      \/" 5        GSdGSÿ j5       5       GrN\I" \?GRž                  R¤                  \?GRž                  GR                  /5      \/" S&S'5      GSSGS  j5       5       GrP\GR¢                  GrRGS GrS\I" \?GR¨                  R¤                  5      GS 5       GrT\I" \?GRª                  R¤                  5      GS 5       GrU\I" \?GR¬                  R¤                  5      GS 5       GrW\I" \?GR°                  R¤                  5      GS 5       GrX\I" \?GR²                  R$                  \?GR²                  GR´                  /5      \/" 5       SSGS.GS j5       5       Gr[\I" \?GR²                  GR&                  \?GR²                  GR¸                  /5      SSGS.S+\&GS\GS	\^GS
\^4GS jj5       Gr]\I" \?GR¼                  /5      \/" 5       GSeGS j5       5       Gr_\I" \?GRÀ                  R¤                  \?GRÂ                  R¤                  /5        GSAGS j5       Grb\I" \?GRÆ                  R¤                  /5        GSAGS j5       Grd\I" \?GRÊ                  R¤                  5      GS 5       Gre\I" \?GRÌ                  R¤                  \?GRÌ                  R¦                  /5      \/" 5       GS>GS j5       5       Grf\I" \R|                  R~                  GRÎ                  5      GS 5       Grg\I" \R|                  R~                  GRÐ                  5      GS 5       Grh\I" \?GRÒ                  5      \/" 5       SSSSGS.GS j5       5       GrjGS Grk\I" \?GRØ                  5      GS 5       Grm\I" \?GRÜ                  5       GSfGS j5       Gro\I" \?GRà                  5       GSfGS j5       Grq\I" \?GRä                  5       GSfGS j5       Grs\I" \?GRè                  5      \/" 5       SSGS.GS j5       5       Gru\I" \?GRì                  5      \/" 5       GS\]S+\S\4GS j5       5       Grw\I" \?GRð                  5      S+\4GS j5       Gry\I" \?GRô                  5      \/" SUSË9S+\S\4GS j5       5       Grz\I" \?GRö                  5      \/" 5       S+\S\4GS  j5       5       Gr{GS! Gr|     GS`GS"\GS#\GSÙ\R$                  S-  GSÚ\R$                  S-  GS$\S-  SB\S-  GSÛ\R$                  S-  SD\Rö                  S-  GSÜ\^4GS% jjGr}\I" \?GRü                  5      \/" 5          GS>GS"\GS#\GS$\S-  SB\S-  SD\Rö                  S-  S\4GS& jj5       5       Gr\I" \?GR                   /5           GS`GS"\R$                  GS#\R$                  GSÙ\R$                  GSÚ\R$                  GS$\R$                  S-  SB\R$                  S-  GSÛ\R$                  S-  SD\Rö                  S-  GSÜ\^4GS' jj5       Gr�\I" \?GR                  GR&                  5      GSgGS( j5       Grƒ\I" \?GR                  5      \/" 5       GS)\S,\]GS*\^S\4GS+ j5       5       Gr…\I" \?GR                  5      \/" 5       GSGS, j5       5       Gr‡\I" \?GR                  5      \/" 5          GShS@\S'\GS-\]GS.\^GS/\^S\4GS0 jj5       5       Grˆ\I" \?GR                  R¤                  5       GSiS&\Sa\\\   GS1\\\]   GS2\ü4GS3 jj5       GrŠGS4 Gr‹\I" \?GR                  R¤                  5          GSjGS5 j5       Gr�GS6 GrŽG\‹" \?GR                  5        G\‹" \?GR                   5        G\‹" \?GR"                  5        G\‹" \?GR$                  5        G\‹" \?GR&                  5        G\‹" \?GR(                  5        G\‹" \?GR*                  5        G\‹" \?GR,                  5        G\‹" \?GR.                  5        G\Ž" \?GR0                  5        G\Ž" \?GR2                  5        G\Ž" \?GR4                  5        G\Ž" \?GR6                  5        G\Ž" \?GR8                  5        G\Ž" \?GR:                  5        G\Ž" \?GR<                  5        G\Ž" \?GR>                  5        G\Ž" \?GR@                  5        G\Ž" \?GRB                  5        G\Ž" \?GRD                  5        G\Ž" \?GRF                  5        GS7 Gr¤\I" \?GRJ                  5      \/" 5       GS8 5       5       Gr¥\I" \?GRL                  5      \/" 5       SJGS9.GS: j5       5       Gr¦\I" \?GRN                  5      \/" 5       SJGS9.GS; j5       5       Gr§G\¤" \?GRJ                  5      Gr¨G\¤" \?GRL                  5      Gr©G\¤" \?GRN                  5      GrªS SK0rS SGK«rS SGK¬rGS< Gr­G\­" 5         g(k  é    N)ÚCallableÚSequence)ÚEnum)Úwraps)ÚTypeVar)Ú	ParamSpec)ÚSymBoolÚSymFloatÚTensor)Ú_add_op_to_registryÚ_convert_out_paramsÚglobal_decomposition_tableÚ
meta_table)Ú
OpOverload)Ú_prim_elementwise_metaÚ$ELEMENTWISE_PRIM_TYPE_PROMOTION_KIND)ÚBoolLikeÚcorresponding_complex_dtypeÚcorresponding_real_dtypeÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚ	FloatLikeÚIntLikeÚmake_contiguous_strides_forÚNumberÚ
NumberTypeÚsuggest_memory_formatÚsym_minÚ
TensorLike)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_resize_output_checkÚ_safe_copy_outÚout_wrapper)Ú_broadcast_shapesÚ_maybe_broadcast)Ú_config)ÚScalingTypeÚSwizzleType)Ú_pytreeÚ_TÚ_PÚatenÚIMPLÚMetaé   c                 ó   • X-   S-
  U-  $ ©Né   © ©ÚaÚbs     ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_meta_registrations.pyÚceil_divr9   9   s   € Ø‰E�A‰I˜!ÑÐó    c                 ó   • X-   S-
  U-  U-  $ )z$Rounds up x to nearest multiple of yr3   r4   ©ÚxÚys     r8   Úround_upr?   =   s   € à‰U�Q‰Y˜1Ñ Ñ!Ð!r:   Úreturnc                 ó   ^ • U 4S jnU$ )Nc                 óZ   >^ • [        T 5      m U 4S jn[        R                  " UT5        T $ )Nc                 ó(   >• [        [        U T5        g ©N)r   r   )ÚopÚfns    €r8   ÚregisterÚ0register_meta.<locals>.wrapper.<locals>.registerF   s   ø€ Ü¤
¨B°Õ3r:   )r   ÚpytreeÚ	tree_map_)rF   rG   rE   s   ` €r8   ÚwrapperÚregister_meta.<locals>.wrapperC   s)   ù€ Ü  Ó$ˆõ	4ô 	×Ò˜ 2Ô&Øˆ	r:   r4   )rE   rK   s   ` r8   Úregister_metarM   B   s   ø€ õð €Nr:   Útype_promotionc                 ó´   • [         R                  " USU 06u  p#U Vs/ s H  n[        XC5      PM     nn[        U6 n[	        US[
        R                  06$ s  snf )NÚtype_promotion_kindrN   )Úutilsr   r    r&   r   r   ÚDEFAULT)rN   ÚargsÚ_Úresult_dtyper=   s        r8   Úelementwise_metarV   O   sp   € ô
 ×.Ò.Ø	ðà*ñ�O€Añ ?CÓCºd¸Ô# AÖ4¹d€DÐCô ˜TÐ"€Dô "Ø	ðÜB×JÑJñð ùò Ds   �Ac                 óÜ   • [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  0nUR                  X 5      $ rD   )ÚtorchÚ	complex32ÚhalfÚcfloatÚfloatÚcdoubleÚdoubleÚget)ÚdtypeÚfrom_complexs     r8   ÚtoRealValueTyperb   c   sC   € ä�‰œŸ™Ü�‰”e—k‘kÜ�‰”u—|‘|ð€Lð
 ×Ñ˜EÓ)Ð)r:   c                 óp   ^ ^• [        [        T /UQ76 5      m[        R                  " TT :H  UU 4S j5        g )Nc                  ó   >• ST ST  3$ )Nzoutput with shape z# doesn't match the broadcast shape r4   )Úbroadcasted_shapeÚ
self_shapes   €€r8   Ú<lambda>Ú)check_inplace_broadcast.<locals>.<lambda>p   s   ø€ Ð$ Z LÐ0SÐTeÐSfÑgr:   )Útupler%   rX   Ú_check)rf   Ú
args_shapere   s   ` @r8   Úcheck_inplace_broadcastrl   l   s0   ù€ ÜÔ/°
ÐH¸ZÒHÓIÐÜ	‡L‚LØ˜ZÑ'Ýgõr:   Fc	           	      óà  ^ ^^^^	• [        T [        R                  5      (       a)  [        R                  " T R	                  5       S:H  S 5        [        T[        R                  5      (       a)  [        R                  " TR	                  5       S:H  S 5        [        S T TT4 5       5      (       a`  [        R                  " [        R                  " 5       5      m	Tc  T	mOO[        R                  " [        R                  " T5      U	U4S j5        OT=(       d    [        R                  " 5       m[        T[        R                  5      (       d  [        S[        T5       35      e[        R                  " [        T[        5      UU U4S j5        [        T[        5      (       d  [        S[        T5       35      e[        R                  " TS:¬  S	 5        [        R                  " T4TUS
UUS9$ )Nr   c                  ó   • g©Nz:linspace only supports 0-dimensional start and end tensorsr4   r4   r:   r8   rg   Ú(meta_linspace_logspace.<locals>.<lambda>„   ó   € ÐPr:   c                  ó   • gro   r4   r4   r:   r8   rg   rp   ‰   rq   r:   c              3   óB   #   • U  H  n[        U[        5      v •  M     g 7frD   )Ú
isinstanceÚcomplex)Ú.0Úargs     r8   Ú	<genexpr>Ú)meta_linspace_logspace.<locals>.<genexpr>Œ   s   é € Ð
CÒ/B¨Œ:�cœ7×#Ð#Ò/Bùs   ‚c                  ó   >• ST  ST 3$ )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype r4   )Údefault_complex_dtyper`   s   €€r8   rg   rp   •   s   ø€ Ð5Ð6KÐ5LÐLrÐsxÐryÑzr:   zdtype must be torch.dtype, got c                  óŽ   >• S[        T5      R                   S[        T 5      R                   S[        T5      R                   S3$ )Nz4received an invalid combination of arguments - got (ú, Ú))ÚtypeÚ__name__)ÚendÚstartÚstepss   €€€r8   rg   rp   Ÿ   sB   ø€ ð Ü€uƒ+×ÑÐ�rœ$˜s›)×,Ñ,Ð-¨R´°U³×0DÑ0DÐ/EÀQñHr:   zsteps must be IntLike, got c                  ó   • g)Nz$number of steps must be non-negativer4   r4   r:   r8   rg   rp   ¤   s   € Ð%Kr:   Úmeta©r`   ÚlayoutÚdeviceÚ
pin_memoryÚrequires_grad)rt   rX   r   rj   ÚdimÚanyrQ   r   Úget_default_dtypeÚis_complex_dtyper`   ÚAssertionErrorr   Ú_check_typer   Úempty)
r‚   r�   rƒ   Úbaser`   rˆ   r‡   r‰   rŠ   r{   s
   ``` `    @r8   Úmeta_linspace_logspacer“   t   s}  ü€ ô �%œŸ™×&Ñ&Ü�ŠØ�I‰I‹K˜1ÑÙPô	
ô �#”u—|‘|×$Ñ$Ü�ŠØ�G‰G‹I˜‰NÙPô	
ô
 Ñ
C°°s¸EÑ/BÓ
C×CÑCÜ %× AÒ AÜ×#Ò#Ó%ó!
Ðð ‰=Ø)‰Eä�LŠLÜ×&Ò& uÓ-Ýzõð
 ×2œ×0Ò0Ó2ˆÜ�eœUŸ[™[×)Ñ)ÜÐ>¼tÀE»{¸mÐLÓMÐMô 
×ÒÜ�5œ'Ó"ö	Hôô
 �eœW×%Ñ%ÜÐ:¼4À»;¸-ÐHÓIÐIÜ	‡L‚L�˜!‘ÑKÔLä�;Š;Ø	ˆØØØØØ#ñð r:   c                 ó6  ^• [         R                  " TR                  [         R                  :H  U4S j5        [         R                  " U R                  5       S:H  =(       a    TR                  5       S:g  (       + S 5        U R                  TR                  5      $ )Nc                  ó"   >• ST R                    3$ )Nz2take(): Expected a long tensor for index, but got ©r`   ©Úindexs   €r8   rg   Úmeta_take.<locals>.<lambda>¶   s   ø€ ÐDÀUÇ[Á[ÀMÑRr:   r   c                  ó   • g)Nz*take(): tried to take from an empty tensorr4   r4   r:   r8   rg   r™   »   s   € Ð<r:   )rX   rj   r`   ÚlongÚ_check_indexÚnumelÚ	new_emptyÚshape)Úselfr˜   s    `r8   Ú	meta_taker¡   °   sm   ø€ ô 
‡L‚LØ�‰”u—z‘zÑ!ÜRôô
 
×ÒØ�Z‰Z‹\˜QÑ×5 5§;¡;£=°AÑ#5Ô6Ù<ôð �>‰>˜%Ÿ+™+Ó&Ð&r:   éÿÿÿÿ©r‹   c                ób  ^ ^^• T R                   nTR                   n[        R                  " X4:H  S 5        [        R                  " T R                  T5      S:H  =(       a    TR                  T5      S:H  UUU 4S j5        [	        T R
                  TR
                  5      nT R                  U5      $ )Nc                  ó   • g)Nz=linalg.cross: inputs must have the same number of dimensions.r4   r4   r:   r8   rg   Úlinalg_cross.<locals>.<lambda>Ç   ó   € ÐOr:   r0   c                  óV   >• ST  STR                  T 5       STR                  T 5       3$ )Nzlinalg.cross: inputs dimension z must have length 3. Got ú and ©Úsize)r‹   Úotherr    s   €€€r8   rg   r¦   Ë   s1   ø€ Ø-¨c¨Uð 3Ø—9‘9˜S“>Ð" %¨¯
©
°3«Ð'8ñ:r:   )ÚndimrX   rj   r«   r%   rŸ   rž   )r    r¬   r‹   Úx_dÚy_dÚ	out_shapes   ```   r8   Úlinalg_crossr±   À   s…   ú€ ð �)‰)€CØ
�*‰*€CÜ	‡L‚LØ‰
ÙOôô 
‡L‚LØ�	‰	�#‹˜!Ñ×4 §
¡
¨3£°1Ñ 4ö	
ôô " $§*¡*¨e¯k©kÓ:€IØ�>‰>˜)Ó$Ð$r:   c                 óx   • [        U S5        [        U S5        [        R                  " U [        R                  S9$ )Nzlinalg.matrix_exp©Úmemory_format)ÚsquareCheckInputsÚcheckFloatingOrComplexrX   Ú
empty_likeÚcontiguous_format©r    s    r8   Úlinalg_matrix_exprº   Ô   s3   € ô �dÐ/Ô0Ü˜4Ð!4Ô5Ü×Ò˜D´×0GÑ0GÑHÐHr:   ÚvaluesÚindicesc                 óR  • [         R                  " U R                  U R                  U R                  S9n[         R                  " U R                  U R                  [         R
                  S9nU R                  5       S:w  a%  U R                  S:w  a  [        XR                  5        X#4$ )N©rˆ   r`   r   )	rX   r‘   rŸ   rˆ   r`   Úint64r�   r­   Úmaybe_wrap_dim)r    r‹   r»   r¼   s       r8   Ú	cummaxminrÁ   Ü   sl   € ô
 �[Š[˜Ÿ™¨D¯K©K¸t¿z¹zÑJ€FÜ�kŠk˜$Ÿ*™*¨T¯[©[ÄÇÁÑL€GØ‡z�zƒ|�qÓ˜TŸY™Y¨!›^ä�sŸI™IÔ&Øˆ?Ðr:   c                 ór   • [        XR                  5        [        R                  " U [        R                  S9$ ©Nr³   )rÀ   r­   rX   r·   r¸   )r    r‹   s     r8   ÚlogcumsumexprÄ   é   s)   € ô �3Ÿ	™	Ô"Ü×Ò˜D´×0GÑ0GÑHÐHr:   c                óV  ^• UR                   n[        U5      nXV-
  n[        [        U5      5      n[        U5       V	s/ s H  n	SPM     n
n	U H  nSX«'   M	     / / pÜU H0  nX«   (       d  UR	                  U5        M  UR	                  U5        M2     XÍ-   n[        U5      nUR                  5       mUS U nUR                  U4S jSS9  XøUS  -   nUR                  U5      nS/[        UR                  US  5      -   nUR                  U5      nUR                  S5      nUUS'   [        U5      n[        [        U5      5       H  nX#U      UUS-   '   M     U R                  U[        R                  S9  [        U5       V	s/ s H  n	SPM     nn	SnUS-
  nUS:¼  a1  UU R                  S5      -  UUU   '   UX(U      -  nUS-  nUS:¼  a  M1  [        Xu5       H   nU R                  SUU-
  -   5      UUU   '   M"     U R                  UUU R                  5       5        U $ s  sn	f s  sn	f )	NFTc                 ó   >• TU    $ rD   r4   )r=   Úself_stridess    €r8   rg   Ú_exec_fft.<locals>.<lambda>  s	   ø€ ˜<¨š?r:   ©ÚkeyÚreverser¢   r   r3   r³   )r­   ÚlenÚlistÚrangeÚappendÚstrideÚsortÚpermuterŸ   Úreshaper«   Úresize_rX   r¸   Úas_strided_Ústorage_offset)Úoutr    Ú	out_sizesr‹   Úforwardr­   Úsignal_ndimÚ
batch_dimsÚdim_permuterT   Úis_transformed_dimÚdÚleftÚrightÚ	batch_endÚtmpÚinputÚbatched_sizesÚ
batch_sizeÚbatched_out_sizesÚiÚout_stridesÚbatch_numelrÇ   s                          @r8   Ú	_exec_fftrê   ö   s4  ø€ Ø�9‰9€DÜ�c“(€KØÑ#€Jô ”u˜T“{Ó#€Kä).¨t¬Ó5ª A›%©ÐÐ5ÛˆØ $ÐÓñ ð �bˆ%ÛˆØ!×$Ø�K‰K˜ŽNà�L‰L˜ŽOñ	 ð
 ‘,€KÜ�D“	€Ià—;‘;“=€LØ
�j�yÐ
!€CØ‡H�HÔ*°D€HÑ9Ø I JÐ/Ñ/€KØ�L‰L˜Ó%€Eð �Dœ4 §¡¨J¨KÐ 8Ó9Ñ9€MØ�M‰M˜-Ó(€Eà—‘˜A“€JØ!€M�!ÑÜ˜]Ó+ÐÜ”3�s“8Ž_ˆØ#,°©VÑ#4Ð˜!˜a™%Ó ñ à‡K�KÐ!´×1HÑ1H€KÑIô $ DœkÓ*šk˜“1™k€KÐ*Ø€KØ�Q‰€AØ
ˆq‹&Ø&1°C·J±J¸q³MÑ&Aˆ�K ‘NÑ#Ø�y¨Q¡Ñ0Ñ0ˆØ	ˆQ‰ˆð ˆq�&ô �:Ö$ˆØ&)§j¡j°°a¸*±nÑ1EÓ&Fˆ�K ‘NÓ#ñ %à‡O�O�I˜{¨C×,>Ñ,>Ó,@ÔAà€JùòW 6ùò@ +s   ¾H!ÆH&r    r‹   Úexclude_lastc                 ó”   ^• [        U5      nU R                  5       mUS [        U5      [        U5      -
   R	                  U4S jS9  U$ )Nc                 ó   >• TU    $ rD   r4   )rç   rÇ   s    €r8   rg   Ú_sort_dims.<locals>.<lambda>0  s	   ø€ �l 1’or:   )rÊ   )rÍ   rÐ   rÌ   ÚintrÑ   )r    r‹   rë   Úsorted_dimsrÇ   s       @r8   Ú
_sort_dimsrñ   ,  sL   ø€ Ü�s“)€KØ—;‘;“=€LØÐ6”#�kÓ"¤S¨Ó%6Ñ6Ð7×<Ñ<Ü%ð =ñ ð Ðr:   c                 ó
  • [         R                  " U R                  R                  5        U(       d  U R	                  5       $ [        X5      nU R                  U R                  5       5      n[        XPU R                  5       XCS9$ )N©rÙ   )	rX   rj   r`   Ú
is_complexÚclonerñ   rž   r«   rê   )r    r‹   ÚnormalizationrÙ   rð   r×   s         r8   Úmeta_fft_c2cr÷   7  s\   € ô 
‡L‚L�—‘×&Ñ&Ô'ÞØ�z‰z‹|Ðä˜TÓ'€KØ
�.‰.˜Ÿ™›Ó
%€CÜ�S §	¡	£¨[ÑJÐJr:   c                 ón   • [        U 5      [        :”  d!  [        U 5      S:¼  a  U S   S:X  a
  U S   S:X  a  gg)Né   r   r3   FT)rÌ   Úcufft_max_ndimr£   s    r8   Úuse_optimized_cufft_pathrû   F  s3   € Ü
ˆ3ƒx”.Ó ¤S¨£X°£]°s¸1±vÀ³{ÀsÈ1ÁvÐQRÃ{Øàr:   c                 ó|  ^• [         R                  " U R                  R                  5        [	        U R                  5       5      n[	        U5      nUS   nXF   S-  S-   n[	        U5      nXxU'   U(       a  XuU'   [        U 5      S:X  d  [        U 5      S:X  Gax  U R                  U[        R                  " U R                  5      S9n	U n
[        U 5      S:X  a  [        U5      (       a  [        XšXQSS9  OÝ[        U5      S:X  a  UOUn[        XšX¶/SS9  [        U5      S:”  a.  U R                  U[        R                  " U R                  5      S9n
US S nU(       au  X©p©U
R                  5       mUR                  U4S	 jSS
9  [        [         [        U5      5      nU[        U5      U-
  S  n[        XšXŽSS9  US [        U5      U-
   nU(       a  Mu  U(       d7  U	R                  U5      XV   :w  a   U
R#                  U[         R$                  S9  U
n	U	$ U R                  U[        R                  " U R                  5      S9$ )Nr¢   rù   r3   ÚcudaÚxpur–   Tró   c                 ó   >• TU    $ rD   r4   )rç   Ústridess    €r8   rg   Úmeta_fft_r2c.<locals>.<lambda>t  s	   ø€  '¨!¢*r:   rÉ   r³   )rX   rj   r`   Úis_floating_pointrÍ   r«   Údevice_hintrž   rQ   r   rû   rê   rÌ   rÐ   rÑ   Úminrú   rÔ   r¸   )r    r‹   rö   ÚonesidedÚinput_sizesrØ   Úlast_dimÚlast_dim_halfsizeÚonesided_sizesÚoutputÚworking_tensorÚtarget_sizesrð   Úmax_dimsÚ	last_dimsr   s                  @r8   Úmeta_fft_r2cr  M  s+  ø€ ô 
‡L‚L�—‘×-Ñ-Ô.Ü�t—y‘y“{Ó#€KÜ�[Ó!€IØ�2‰w€HØ#Ñ-°Ñ2°QÑ6ÐÜ˜+Ó&€NØ0�8ÑæØ/�(Ñä�4Ó˜FÓ"¤k°$Ó&7¸5Ô&@ð —‘ØœU×>Ò>¸t¿z¹zÓJð  ð 
ˆð ˆÜ�tÓ Ó&Ô+CÀC×+HÑ+HÜ�f¨iÀdÓKô ),¨C«°A«™9¸>ˆLÜ�f¨l¸JÐPTÒUÜ�3‹x˜!‹|Ø!%§¡Ø¤U×%FÒ%FÀtÇzÁzÓ%Rð "0ð "�ð
 ˜c˜r˜(ˆKÞØ)7˜Ø(×/Ñ/Ó1�Ø× Ñ Ü,°dð !ñ ô œ~¬s°;Ó/?Ó@�Ø'¬¨KÓ(8¸8Ñ(CÐ(EÐF�	ÜØ¨NÈtòð *Ð*G¬C°Ó,<¸xÑ,GÐH�÷ �+ö Ø�{‰{˜8Ó$¨	Ñ(;Ó;Ø×&Ñ& yÄ×@WÑ@WÐ&ÑXØ'�àˆð �~‰~ØœU×>Ò>¸t¿z¹zÓJð ð 
ð 	
r:   )Ú	generatorc                óD   • [        U[        R                  " U /5      5      $ rD   )r!   rX   ÚSize)Únr  r×   s      r8   Úmeta_randpermr  Š  s   € ä˜S¤%§*¢*¨a¨S£/Ó2Ð2r:   ©r`   r‡   rˆ   r‰   c                ó.   • [         R                  " XX#US9$ ©Nr  ©rX   r‘   )r  r`   r‡   rˆ   r‰   s        r8   Úmeta_randperm_defaultr  �  s   € ô �;Š;Ø	˜vÀñð r:   c                ót   ^ ^• Sm[         R                  " T T:„  U U4S j5        [         R                  " XX4US9$ )Nr   c                  ó   >• ST ST  3$ ©Nz:random_ expects 'from' to be less than 'to', but got from=z >= to=r4   ©ÚhighÚlows   €€r8   rg   Úmeta_randint.<locals>.<lambda>«  ó   ø€ ÐLÈSÈEÐQXÐY]ÐX^Ñ_r:   r  ©rX   rj   r‘   )r  r«   r`   r‡   rˆ   r‰   r  s   `     @r8   Úmeta_randintr#  �  s:   ù€ ð €CÜ	‡L‚LØˆs‰
Ý_ôô �;Š;Ø &ÀJñð r:   c                óp   ^ ^• [         R                  " TT :„  UU 4S j5        [         R                  " X#XEUS9$ )Nc                  ó   >• ST ST  3$ r  r4   r  s   €€r8   rg   Ú"meta_randint_low.<locals>.<lambda>À  r!  r:   r  r"  )r  r  r«   r`   r‡   rˆ   r‰   s   ``     r8   Úmeta_randint_lowr'  ²  s5   ù€ ô 
‡L‚LØˆs‰
Ý_ôô �;Š;Ø &ÀJñð r:   c                ó.   • [         R                  " XX#US9$ r  r  )r«   r`   r‡   rˆ   r‰   s        r8   Úmeta_rand_defaultr)  Ç  s   € ô �;Š;Ø &ÀJñð r:   rö   Úlastdimc                 óê  • [         R                  " U R                  R                  5        [	        U 5      S:X  aÇ  [        U R                  5       5      nX4US   '   U R                  U[        U R                  5      S9n[        U5      (       a(  [        UU R                  [         R                  S9UUSS9$ [        U5      S:”  a  [        XS S SU5      nOU R                  [         R                  S9n[        XVXAS   /SS9$ U n[        U5      S:”  a  US S n[        XUSS9nUSS  n[        UR                  5       5      nX4US   '   U R                  U[        U R                  5      S9n	[        X—XASS9$ )	Nrý   r¢   r–   r³   Fró   r3   r   )rX   rj   r`   rô   r  rÍ   r«   rž   rb   rû   rê   rõ   r¸   rÌ   r÷   )
r    r‹   rö   r*  rØ   r
  Útemprã   Úc2c_dimsr×   s
             r8   Úmeta_fft_c2rr.  Ï  s^  € ô 
‡L‚L�—‘×&Ñ&Ô'ä�4Ó˜FÓ"Ü˜Ÿ™›Ó%ˆ	Ø$�#�b‘'Ñà—‘ 	´ÀÇÁÓ1L�ÐMˆä# C×(Ñ(ÜØØ—
‘
¬×)@Ñ)@�
ÐAØØØñð ô �3‹x˜!‹|Ü# D¨c¨r¨(°A°wÓ?‘à—z‘z´×0GÑ0G�zÐH�Ü˜V¨9¸2±w°iÈÑOÐOð ˆÜˆs‹8�a‹<Ø˜3˜B�xˆHÜ  °ÈÑNˆEØ�b�c�(ˆCä˜Ÿ™›Ó&ˆ	Ø$�#�b‘'ÑØ�n‰n˜Y¬o¸d¿j¹jÓ.IˆnÐJˆÜ˜ Y¸UÑCÐCr:   c                 ó`  • SSK Jn  U" U 5      (       d%  [        R                  " U 5      S:X  a  [	        S5      e[        U[        5      (       a`  UR                  X5      nU R                  5       UR                  5       :w  a-  [        R                  R                  X@R                  5       5        U $ )Nr   )Úfree_unbacked_symbolsr3   zQmore than one element of the written-to tensor refers to a single memory location)Ú%torch.fx.experimental.symbolic_shapesr0  rX   Ú_debug_has_internal_overlapÚRuntimeErrorrt   r   Útor«   r-   Úexpand_copyÚdefault)r    ÚsrcÚnon_blockingr0  Úintermediates        r8   Ú
meta_copy_r:  ø  s‹   € õ Lñ " $×'Ñ'¬E×,MÒ,MÈdÓ,SÐWXÓ,XäØ_ó
ð 	
ô �#”v×ÑØ—v‘v˜dÓ1ˆØ�9‰9‹;˜,×+Ñ+Ó-Ó-Ü×Ñ×$Ñ$ \·9±9³;Ô?Ø€Kr:   c                 óî   • [        U R                  5       5      n[        U R                  5       5      nXR                  5       :¼  a  SOX!   X1   -  nUR	                  US5        UR	                  X5        X#4$ r2   )rÍ   r«   rÐ   r‹   Úinsert)Útensorr‹   Úresult_sizesÚresult_stridesÚ
new_strides        r8   ÚinferUnsqueezeGeometryrA    sf   € Ü˜Ÿ™›Ó&€LÜ˜&Ÿ-™-›/Ó*€NàŸZ™Z›\Ó)‘¨|Ñ/@À>ÑCVÑ/V€Jà×Ñ˜˜QÔà×Ñ˜#Ô*ØÐ'Ð'r:   c                 óz   • [        XR                  5       S-   5      n[        X5      u  p#U R                  X#5        U $ r2   )rÀ   r‹   rA  rÕ   )r    r‹   Úg_sizesÚ	g_stridess       r8   Úmeta_unsqueeze_rE    s6   € ä
˜Ÿh™h›j¨1™nÓ
-€CÜ/°Ó:Ñ€GØ×Ñ�WÔ(Ø€Kr:   rã   ÚweightÚ_metaÚbiasÚ_activation_optÚ	out_dtypec                 óN  • [        U R                  5      nUbS  UR                  S5      UR                  S5      :w  a/  [        SUR                  S5       SUR                  S5       35      eUR                  S5      U R                  S5      S-  :w  a2  [        SUR                  S5       SU R                  S5      S-   35      eUR                  S5      US'   [	        U R                  5      S:w  a"  [        S	[	        U R                  5       S
35      eSU R                  S5      4nUbM  U R
                  [        R                  :X  a  U[        R                  :X  d  [        SU R
                   SU 35      eU R                  UUc  U R
                  OUS9R                  Xg5      nU$ )Nr   z%output size mismatch: weight.size(0)=ú != bias.size(0)=r3   r¢   rù   zweight.size(1)=z != input.size(-1)/2=z0we can only handle the squashed input case, got úD inputzKout_dtype is only supported for i8i8->i32 linear operator, got input.dtype=ú, out_dtype=r–   )rÍ   rŸ   r«   r�   rÌ   r`   rX   Úint8Úint32rž   Ú
as_strided)	rã   rF  rG  rH  rI  rJ  Úoutput_sizesÚtransposed_stridesr
  s	            r8   Úmeta_sparse_structured_linearrT  %  sª  € ô ˜Ÿ™Ó$€LØÑØ�;‰;�q‹>˜TŸY™Y q›\Ó)Ü Ø7¸¿¹ÀA»Ð7GÐGXÐY]×YbÑYbÐcdÓYeÐXfÐgóð ð ‡{�{�1ƒ~˜Ÿ™ B›¨!Ñ+Ó+ÜØ˜fŸk™k¨!›nÐ-Ð-BÀ5Ç:Á:ÈbÃ>ÐTUÑCUÐBVÐWó
ð 	
ð —{‘{ 1“~€L�Ñô ˆ5�;‰;Ó˜1ÓÜØ>¼sÀ5Ç;Á;Ó?OÐ>PÐPWÐXó
ð 	
ð ˜UŸZ™Z¨›]Ð+ÐàÑØ—‘œuŸz™zÓ)¨i¼5¿;¹;Ó.FÜ Ø]Ð^c×^iÑ^iÐ]jÐjvð  xAð  wBð  Cóð ð �_‰_ØØ&Ñ.ˆe�kŠk°Ið ð ÷ �j�Ó2ð ð
 €Mr:   Úmat1Ú	mat1_metaÚmat2c                 ó<  • [        U R                  5      S:w  a"  [        S[        U R                  5       S35      e[        UR                  5      S:w  a"  [        S[        UR                  5       S35      e[        UR                  5      S:w  a"  [        S[        UR                  5       S35      eU R                  S5      UR                  S5      S-  :w  a2  [        SU R                  S5       S	UR                  S5      S-   35      eU R                  S5      UR                  S5      /nUbM  UR                  [
        R                  :X  a  U[
        R                  :X  d  [        S
UR                   SU 35      eUR                  UUc  UR                  OUS9nU$ )Nrù   úmat1 must be 2D, got ÚDúmat1_meta must be 2D, got úmat2 must be 2D, got r3   r   úmat1.size(1)=ú != mat2.size(0)/2=úJout_dtype is only supported for i8i8->i32 linear operator, got mat2.dtype=rN  r–   ©	rÌ   rŸ   r�   r«   r`   rX   rO  rP  rž   )rU  rV  rW  rJ  rR  r
  s         r8   Úmeta_sparse_structured_mmra  Q  sv  € ô ˆ4�:‰:ƒ˜!ÓÜÐ4´S¸¿¹³_Ð4EÀQÐGÓHÐHÜ
ˆ9�?‰?Ó˜qÓ ÜÐ9¼#¸i¿o¹oÓ:NÐ9OÈqÐQÓRÐRÜ
ˆ4�:‰:ƒ˜!ÓÜÐ4´S¸¿¹³_Ð4EÀQÐGÓHÐHØ‡y�y�ƒ|�t—y‘y “| aÑ'Ó'ÜØ˜DŸI™I a›L˜>Ð)<¸T¿Y¹YÀq»\ÈAÑ=MÐ<NÐOó
ð 	
ð —I‘I˜a“L $§)¡)¨A£,Ð/€LàÑØ—
‘
œeŸj™jÓ(¨Y¼%¿+¹+Ó-EÜ Ø\Ð]a×]gÑ]gÐ\hÐhtÐu~Ðtð  Aóð ð �^‰^ØØ%Ñ-ˆd�jŠj°9ð ð €Fð
 €Mr:   r3   )ÚalphaÚbetarJ  c                óX  • [        U R                  5      S:w  a"  [        S[        U R                  5       S35      e[        UR                  5      S:w  a"  [        S[        UR                  5       S35      e[        UR                  5      S:w  a"  [        S[        UR                  5       S35      e[        UR                  5      S:w  a"  [        S[        UR                  5       S35      eU R                  S	5      UR                  S	5      :w  a/  [        S
U R                  S	5       SUR                  S	5       35      eUR                  S5      UR                  S	5      S-  :w  a2  [        SUR                  S5       SUR                  S	5      S-   35      eUR                  S	5      UR                  S5      /nUbM  UR                  [
        R                  :X  a  U[
        R                  :X  d  [        SUR                   SU 35      eUR                  UUc  UR                  OUS9nU$ )Nr3   zKonly input broadcasted to columns of mat1 * mat2 product is supported, got rM  rù   rY  rZ  r[  r\  r   zUonly input broadcasted to columns of mat1 * mat2 product is supported, input.size(0)=z != mat1.size(0)=r]  r^  r_  rN  r–   r`  )	rã   rU  rV  rW  rb  rc  rJ  rR  r
  s	            r8   Úmeta_sparse_structured_addmmre  q  sÿ  € ô ˆ5�;‰;Ó˜1ÓÜØYÔZ]Ð^c×^iÑ^iÓZjÐYkÐkrÐsó
ð 	
ô ˆ4�:‰:ƒ˜!ÓÜÐ4´S¸¿¹³_Ð4EÀQÐGÓHÐHÜ
ˆ9�?‰?Ó˜qÓ ÜÐ9¼#¸i¿o¹oÓ:NÐ9OÈqÐQÓRÐRÜ
ˆ4�:‰:ƒ˜!ÓÜÐ4´S¸¿¹³_Ð4EÀQÐGÓHÐHØ‡z�z�!ƒ}˜Ÿ	™	 !›Ó$ÜðØ"ŸZ™Z¨›]˜OÐ+<¸T¿Y¹YÀq»\¸NðLó
ð 	
ð ‡y�y�ƒ|�t—y‘y “| aÑ'Ó'ÜØ˜DŸI™I a›L˜>Ð)<¸T¿Y¹YÀq»\ÈAÑ=MÐ<NÐOó
ð 	
ð —I‘I˜a“L $§)¡)¨A£,Ð/€LàÑØ—
‘
œeŸj™jÓ(¨Y¼%¿+¹+Ó-EÜ Ø\Ð]a×]gÑ]gÐ\hÐhtÐu~Ðtð  Aóð ð �^‰^ØØ%Ñ-ˆd�jŠj°9ð ð €Fð
 €Mr:   Úcompressed_AÚdense_Brb  Útranspose_resultÚalg_idÚsplit_kÚsplit_k_modec	           	      óX  • UR                   [        R                  [        R                  [        R                  [        R
                  [        R                  1;  a  [        SUR                    35      eU R                   UR                   :w  a%  [        SU R                    SUR                    35      e[        UR                  5      S:w  a"  [        S[        UR                  5       S35      eU R                   [        R
                  [        R                  4;   n	U	(       a   UR                  5       (       a  [        S5      eUR                  S5      n
U R                  S	5      nUb4  X²R                  S	5      :w  a   [        S
U SUR                  S	5       35      eUbr  U	(       aB  U[        R                  [        R                  [        R                  [        R                  1;   d)  [        SU R                    SUR                    SU S35      eU(       a  X«4OXº4nUR                  XÄS9$ )NzA_cslt_sparse_mm only supports fp16, bf16, int8, and fp8e4m3, got z%inputs must have the same dtype, got r©   rù   z-_cslt_sparse_mm only supports 2d inputs, got rZ  z.dense input must be transposed for 8bit dtypesr3   r   zbias size mismatch: m=rL  zout_dtype is not supported for z x z -> z matmul!r–   )r`   rX   Úfloat32Úfloat16Úbfloat16rO  Úfloat8_e4m3fnr�   rÌ   rŸ   Úis_contiguousr«   rP  rž   )rf  rg  rH  rb  rJ  rh  ri  rj  rk  Úis_8bit_input_typer  ÚmÚoutput_shapes                r8   Úmeta__cslt_sparse_mmru  ž  sò  € ð ‡}�}Ü�‰Ü�‰Ü�‰Ü�
‰
Ü×Ñðó ô ØOÐPW×P]ÑP]ÈÐ_ó
ð 	
ð ×Ñ˜WŸ]™]Ó*ÜØ3°L×4FÑ4FÐ3GÀuÈWÏ]É]ÈOÐ\ó
ð 	
ô ˆ7�=‰=Ó˜QÓÜØ;¼CÀÇÁÓ<NÐ;OÈqÐQó
ð 	
ð &×+Ñ+´·
±
¼E×<OÑ<OÐ/PÑPÐæØ× Ñ ×"Ñ"Ü Ð!QÓRÐRà�‰�Q‹€AØ×Ñ˜!Ó€AØÑØ—	‘	˜!“ÓÜ Ø(¨¨Ð+<¸T¿Y¹YÀq»\¸NÐKóð ð ÑæØä—‘Ü—‘Ü—‘Ü×#Ñ#ð	óô !Ø1°,×2DÑ2DÐ1EÀSÈÏÉÈÐW[Ð\eÐ[fÐfnÐoóð ö .�A‘6°A°6€LØ×Ñ˜\ÐÐ;Ð;r:   T)Úinclude_selfr˜   ÚsourceÚreducerv  c                óH   • [         R                  " U [         R                  S9$ rÃ   ©rX   r·   r¸   ©r    r‹   r˜   rw  rx  rv  s         r8   Úmeta_index_reducer|  Ý  s   € ô ×Ò˜D´×0GÑ0GÑHÐHr:   c                ó   • U $ rD   r4   r{  s         r8   Úmeta_index_reduce_r~  ê  s	   € ð €Kr:   c                 ó¢   • [        U R                  5       5      nU R                  5       S:”  a  UR                  5       X1'   U R	                  U5      $ ©Nr   )rÍ   r«   r‹   r�   rž   )r    r‹   r˜   Úresult_sizes       r8   Úmeta_index_selectr‚  ø  s>   € ô �t—y‘y“{Ó#€KØ‡x�xƒz�Aƒ~Ø Ÿ;™;›=ˆÑØ�>‰>˜+Ó&Ð&r:   )Úlengthsr¼   ÚoffsetsÚaxisÚunsafeÚinitialÚdatarƒ  r„  r…  r†  c                óÌ   ^ ^• Ub  [        S5      eUU 4S jnUb  U" UR                  5      $ Ub+  UR                  S S UR                  S   S-
  4-   n	U" U	5      $ [        S5      e)Nz?segment_reduce(): indices based reduction is not supported yet.c                 óˆ   >• [         R                  " U TR                  TS-   S  -   TR                  S[         R                  S9$ )Nr3   r…   ©r`   rˆ   r´   )rX   r‘   rŸ   r`   r¸   )Úlengths_shaper…  rˆ  s    €€r8   Úsegment_reduce_lengths_tensorÚ:meta_segment_reduce.<locals>.segment_reduce_lengths_tensor  s>   ø€ Ü�{Š{Ø˜DŸJ™J t¨a¡x zÐ2Ñ2Ø—*‘*ØÜ×1Ñ1ñ	
ð 	
r:   r¢   r3   z<segment_reduce(): Either lengths or offsets must be defined.)ÚNotImplementedErrorrŸ   r3  )
rˆ  rx  rƒ  r¼   r„  r…  r†  r‡  r�  rŒ  s
   `    `    r8   Úmeta_segment_reducer�    s|   ù€ ð ÑÜ!ØMó
ð 	
ö
ð ÑÙ,¨W¯]©]Ó;Ð;ð ÑàŸ™ c rÐ*¨g¯m©m¸BÑ.?À!Ñ.CÐ-EÑEˆÙ,¨]Ó;Ð;Ü
ÐUÓ
VÐVr:   c                 ó$   • U R                  S5      $ ©Nr4   ©rž   r¹   s    r8   Úmeta_maxr”  %  ó   € ð �>‰>˜"ÓÐr:   c                 ó¼   • [         R                  " U R                  U45      n[        XU5      nU R	                  U5      U R	                  U[
        R                  S94$ ©Nr–   ©rQ   Úreduction_dimsrŸ   Ú_compute_reduction_shaperž   rX   r›   ©r    r‹   Úkeepdimrt  s       r8   Úmeta_max_dimr�  +  óP   € ä
×
Ò
˜tŸz™z¨C¨6Ó
2€CÜ+¨D°wÓ?€Là�‰�|Ó$Ø�‰�|¬5¯:©:ˆÐ6ðð r:   c                 ó$   • U R                  S5      $ r’  r“  r¹   s    r8   Úmeta_minr   5  r•  r:   c                 ó¼   • [         R                  " U R                  U45      n[        XU5      nU R	                  U5      U R	                  U[
        R                  S94$ r—  r˜  r›  s       r8   Úmeta_min_dimr¢  ;  rž  r:   c                 ó´   • U R                  5       (       a  [        U R                  5      nO[        U [        R
                  S9u  p![        R                  " XS9$ ©N©rP   r–   )rô   r   r`   r   r   ÚINT_TO_FLOATrX   r·   )r    rU   rT   s      r8   Ú
meta_angler§  E  sH   € à‡�×ÑÜ/°·
±
Ó;‰ä,ØÜ ?× LÑ Lñ
‰ˆô ×Ò˜DÑ5Ð5r:   c                 óª   • [         R                  " XR                  5       U R                  5        UR	                  [         R
                  " U 5      5      $ rD   )rX   Ú_resize_output_r«   rˆ   Úcopy_Úangle)r    r×   s     r8   Úmeta_angle_outr¬  Q  s4   € ä	×Ò˜#Ÿy™y›{¨D¯K©KÔ8Ø�9‰9”U—[’[ Ó&Ó'Ð'r:   c                 ó   • g rD   r4   )Úvals    r8   Úassert_asyncr¯  W  ó   € à
r:   c                 ó   • g rD   r4   )r®  Ú
assert_msgs     r8   Úassert_async_metar³  \  r°  r:   c                 ó   • g rD   r4   )Úss    r8   Ú
print_metar¶  a  r°  r:   ©r`   r‡   rˆ   r‰   r´   c                 ó,   • [         R                  " SSS9$ )Nr   r…   ©rˆ   r  r·  s        r8   Úmake_dep_tokenrº  f  s   € ô �;Š;�q Ñ(Ð(r:   c                 ój   • SSK Jn  [        U [        [        45      (       a  [        S5      eU" XUS9  g )Nr   )Úconstrain_rangeú'Constraining SymFloat or Symbool is nyi©r  Úmax)r1  r¼  rt   r
   r	   Ú
ValueError)r«   r  r¿  r¼  s       r8   Úsym_constrain_rangerÁ  r  s0   € õ Fä�$œ¤7Ð+×,Ñ,ÜÐBÓCÐCÙ�D sÓ+r:   c                 ó.   • [         R                  XUS9  U$ ©Nr¾  )r-   rÁ  ©r«   r  r¿  Ú	dep_tokens       r8   Úfunctional_sym_constrain_rangerÆ  |  s   € ä×Ñ˜T°ÐÑ4ØÐr:   c                 ó<  • SSK Jn  Uc  Uc  [        R                  " U S:¬  5        g [	        U [
        [        45      (       a  [        S5      e[        U 5      [        L a7  Ub  [        R                  " X:¬  5        Ub  [        R                  " X:*  5        g U" XUS9  g )Nr   )Ú_constrain_range_for_sizer½  r¾  )
r1  rÈ  rX   rj   rt   r
   r	   rÀ  r   rï   )r«   r  r¿  rÈ  s       r8   Úsym_constrain_range_for_sizerÉ  ‚  s�   € õ Pà
�{�s‘{Ü�Š�T˜Q‘YÔØä�$œ¤7Ð+×,Ñ,ÜÐBÓCÐCÜˆDƒz”SÒØ‰?Ü�LŠL˜™Ô%Ø‰?Ü�LŠL˜™Ô%ØÙ˜d°Ó5r:   c                 ó.   • [         R                  XUS9  U$ rÃ  )r-   rÉ  rÄ  s       r8   Ú'functional_sym_constrain_range_for_sizerË  –  s   € ä×%Ñ% d¸Ð%Ñ=ØÐr:   c                 ó   • U$ rD   r4   )r®  r²  rÅ  s      r8   Úfunctional_assert_async_metarÍ  œ  s   € àÐr:   Úf_namec                 óæ   ^ ^• T R                  5       S:  a  [        T ST R                  5        35      e[        R                  " T R	                  S5      T R	                  S5      :H  UU 4S j5        g )Nrù   z8: The input tensor must have at least 2 dimensions, got r¢   éþÿÿÿc                  óV   >• T  STR                  S5       STR                  S5       S3$ )Nz5: A must be batches of square matrices, but they are rÐ  ú by r¢   ú	 matricesrª   )rÎ  r    s   €€r8   rg   Ú#squareCheckInputs.<locals>.<lambda>ª  s/   ø€ �6�(ð ØŸ	™	 "›� d¨4¯9©9°R«=¨/¸ñDr:   )r‹   r�   rX   rj   r«   )r    rÎ  s   ``r8   rµ   rµ   ¢  s^   ù€ Ø‡x�xƒz�Aƒ~ÜØˆhÐNÈtÏxÉxËzÈlÐ[ó
ð 	
ô 
‡L‚LØ�	‰	�"‹˜Ÿ™ 2›Ñ&õ	Dõr:   ÚAÚnamec                 óÊ  ^ ^^• [         R                  " T R                  TR                  :H  UU 4S j5        [         R                  " T R                  TR                  :H  UU 4S j5        [         R                  " TR	                  S5      TR	                  S5      :H  U4S j5        [         R                  " TR	                  S5      T R	                  S5      :H  UUU 4S j5        g )Nc                  ó>   >• STR                    ST R                    S3$ )Nz:Expected b and A to be on the same device, but found b on z
 and A on ú	 instead.r¹  ©rÕ  r    s   €€r8   rg   Ú(linearSolveCheckInputs.<locals>.<lambda>µ  s    ø€ ØHØ�{‰{ˆm˜: a§h¡h Z¨yñ:r:   c                  ó>   >• STR                    ST R                    S3$ )Nz=Expected b and A to have the same dtype, but found b of type z and A of type rÙ  r–   rÚ  s   €€r8   rg   rÛ  ½  s    ø€ ØKØ�z‰zˆl˜/¨!¯'©'¨°)ñ=r:   r¢   rÐ  c                  óR   >• ST R                  S5       ST R                  S5       S3$ )Nz3A must be batches of square matrices, but they are rÐ  rÒ  r¢   rÓ  rª   ©rÕ  s   €r8   rg   rÛ  Å  s+   ø€ ðØŸF™F 2›J˜< t¨A¯F©F°2«J¨<°yñBr:   c                  óž   >• ST ST R                  S5       ST R                  S5       STR                  S5       STR                  S5       3
$ )NzIncompatible matrix sizes for z: each A matrix is r¢   rÒ  z but each b matrix is rÐ  rª   )rÕ  rÖ  r    s   €€€r8   rg   rÛ  Í  sM   ø€ Ø,¨T¨Fð 3ØŸ™ ›˜ D¨¯©°«¨Ø$ T§Y¡Y¨r£] O°4¸¿	¹	À"»°ñHr:   )rX   rj   rˆ   r`   r«   )r    rÕ  rÖ  s   ```r8   ÚlinearSolveCheckInputsrà  ²  s�   ú€ Ü	‡L‚LØ�‰�q—x‘xÑõ	
ôô 
‡L‚LØ�
‰
�a—g‘gÑõ	
ôô 
‡L‚LØ	�‰ˆr‹
�a—f‘f˜R“jÑ ô	
ôô 
‡L‚LØ	�‰ˆr‹
�d—i‘i “mÑ#ö	
õr:   ÚtÚallow_low_precision_dtypesc                 óh  ^^• U R                   m[        R                  " U R                  5       =(       d    U R	                  5       UU4S j5        U(       d\  [        R                  " T[        R
                  [        R                  [        R                  [        R                  4;   UU4S j5        g g )Nc                  ó   >• T ST  3$ )Nz<: Expected a floating point or complex tensor as input. Got r4   ©r`   rÎ  s   €€r8   rg   Ú(checkFloatingOrComplex.<locals>.<lambda>Þ  s   ø€ �6�(ÐVÐW\ÐV]Ñ^r:   c                  ó   >• T ST  3$ )Nz*: Low precision dtypes not supported. Got r4   rå  s   €€r8   rg   ræ  ã  s   ø€ �v�hÐHÈÈÑPr:   )	r`   rX   rj   r  rô   r\   r^   r[   r]   )rá  rÎ  râ  r`   s    ` @r8   r¶   r¶   Ö  sn   ù€ ð
 �G‰G€EÜ	‡L‚LØ	×ÑÓ×/ §¡£Ý^ôö &Ü�ŠØ”e—k‘k¤5§<¡<´·±¼u¿}¹}ÐMÑMÝPõ	
ð &r:   Úarg_namec                 ób   ^^• [         R                  " U R                  5       S:¬  UU4S j5        g )Nrù   c                  ó   >• T ST  S3$ )Nz: The input tensor z! must have at least 2 dimensions.r4   )rè  rÎ  s   €€r8   rg   ÚcheckIsMatrix.<locals>.<lambda>ë  s   ø€ �6�(Ð-¨h¨ZÐ7XÑYr:   )rX   rj   r‹   )rÕ  rÎ  rè  s    ``r8   ÚcheckIsMatrixrì  è  s   ù€ Ü	‡L‚LØ	�‰‹�1‰ÝYõr:   ÚBrß   c                 ó  ^ ^^^• [        T T5        [        TT5        [        R                  " T(       a#  T R	                  S5      TR	                  S5      :H  O"T R	                  S5      TR	                  S5      :H  U UUU4S j5        g )NrÐ  r¢   c                  ó¶   >• T ST(       a  SOS ST R                  S5       ST R                  S5       STR                  S5       STR                  S5       S	3$ )
Nz2: Incompatible shapes of A and B for the equation zAX = BzXA = Bz (rÐ  r=   r¢   r©   r~   rª   )rÕ  rí  rÎ  rß   s   €€€€r8   rg   Ú#checkInputsSolver.<locals>.<lambda>ô  sV   ø€ ØˆhÐHÞ‰x XÐ.Ø�—‘˜“�˜A˜aŸf™f R›j˜\¨¨q¯v©v°b«z¨l¸!¸A¿F¹FÀ2»J¸<ÀqñJr:   )rµ   rì  rX   rj   r«   )rÕ  rí  rß   rÎ  s   ````r8   ÚcheckInputsSolverrñ  ï  sY   û€ Ü�a˜Ô Ü�!�VÔÜ	‡L‚LÞ$(ˆ�‰ˆr‹
�a—f‘f˜R“jÒ ¨a¯f©f°R«j¸A¿F¹FÀ2»JÑ.F÷	
õr:   ÚresultÚfn_nameÚresult_namec                 óv   ^ ^^^• [         R                  " TR                  TR                  :H  U UUU4S j5        g )Nc            	      óL   >• T  ST ST STR                    STR                    3	$ )Nz: Expected z5 and input tensors to be on the same device, but got z on z and input on r¹  )ró  rã   rò  rô  s   €€€€r8   rg   Ú!checkSameDevice.<locals>.<lambda>  s0   ø€ Øˆi�{ ; -Ð/dØˆm˜4 §¡˜¨n¸U¿\¹\¸NñLr:   )rX   rj   rˆ   )ró  rò  rã   rô  s   ````r8   ÚcheckSameDevicerø  ü  s&   û€ ô 
‡L‚LØ�‰˜Ÿ™Ñ%÷	
õr:   ÚUPLOc                 ó¤   ^ • T R                  5       n[        R                  " [        T 5      S:H  =(       a    US:H  =(       d    US:H  U 4S j5        g )Nr3   ÚUÚLc                  ó   >• ST  3$ )Nz1Expected UPLO argument to be 'L' or 'U', but got r4   )rù  s   €r8   rg   ÚcheckUplo.<locals>.<lambda>  s   ø€ ÐCÀDÀ6ÑJr:   )ÚupperrX   rj   rÌ   )rù  ÚUPLO_uppercases   ` r8   Ú	checkUplor    s<   ø€ Ø—Z‘Z“\€NÜ	‡L‚LÜˆD‹	�Q‰×K˜N¨cÑ1×J°^ÀsÑ5JÜJõr:   ÚeigenvaluesÚeigenvectorsrü  Ú	compute_vc                 óP  • [        U S5        [        U5        [        U R                  5      nU(       a,  U R	                  U5      nUR                  U[        USS95        OU R	                  S/5      nUR                  5         U R	                  U[        U R                  5      S9nXT4$ )Nzlinalg.eighF©Ú	row_majorr   r–   )
rµ   r  rÍ   rŸ   rž   rÕ   r   Úpoprb   r`   )rÕ  rù  r  rŸ   ÚvecsÚvalss         r8   Úmeta__linalg_eighr    s‡   € ô �a˜Ô'Üˆd„Oä�—‘‹M€EÞØ�{‰{˜5Ó!ˆØ×Ñ˜Ô ;¸EÈUÑ SÕTà�{‰{˜A˜3Óˆà	‡I�I„KØ�;‰;�u¤O°A·G±GÓ$<ˆ;Ð=€Dàˆ:Ðr:   c                 óö   • [        U S5        [        R                  " U R                  5      (       a  U R                  O[        R                  " U R                  5      nU R                  U R                  S S US9$ )Nzlinalg.eigvalsr¢   r–   )rµ   rQ   rŽ   r`   r   rž   rŸ   )rã   Úcomplex_dtypes     r8   Úmeta__linalg_eigvalsr  &  sf   € ô �eÐ-Ô.ô ×!Ò! %§+¡+×.Ñ.ð 	�Šä×.Ò.¨u¯{©{Ó;ð ð
 �?‰?˜5Ÿ;™; s¨Ð+°=ˆ?ÐAÐAr:   c                 ó¨  • [        U S5        [        R                  " U R                  5      (       a  U R                  O[        R                  " U R                  5      nU R                  U R                  S S US9nU R                  U R                  US9n[        U 5      S:H  nUR                  U R                  [        U R                  US95        X#4$ )Nz
linalg.eigr¢   r–   rý   r  )
rµ   rQ   rŽ   r`   r   rž   rŸ   r  rÕ   r   )rã   r  r»   ÚvectorsÚis_cudas        r8   Úmeta_linalg_eigr  2  s¶   € ô �e˜\Ô*ô ×!Ò! %§+¡+×.Ñ.ð 	�Šä×.Ò.¨u¯{©{Ó;ð ð
 �_‰_˜UŸ[™[¨¨"Ð-°]ˆ_ÐC€FØ�o‰o˜eŸk™k°ˆoÐ?€GÜ˜%Ó  FÑ*€GØ×ÑØ�‰Ô0°·±ÈÑPôð ˆ?Ðr:   r7  c                 óp   • U R                   R                  [        R                  S9R	                  SS5      $ )Nr³   rÐ  r¢   )ÚmTrõ   rX   r¸   Ú	transpose)r7  s    r8   ÚcloneBatchedColumnMajorr  D  s*   € Ø�6‰6�<‰<¤e×&=Ñ&=ˆ<Ð>×HÑHÈÈRÓPÐPr:   rÿ  c                 ó   • [        U 5      $ rD   )r  )r    rÕ  rÿ  s      r8   Ú_cholesky_solve_helperr  H  s   € ô # 4Ó(Ð(r:   c                 óÜ   ^ ^• [         R                  " T R                  S:¬  U 4S j5        [         R                  " TR                  S:¬  U4S j5        [        T TS5      u  p4[	        X4U5      $ )Nrù   c                  ó$   >• ST R                    S3$ )Nz-b should have at least 2 dimensions, but has ú dimensions instead©r­   r¹   s   €r8   rg   Ú cholesky_solve.<locals>.<lambda>S  s   ø€ Ð?ÀÇ	Á	¸{ÐJ]Ñ^r:   c                  ó$   >• ST R                    S3$ )Nz-u should have at least 2 dimensions, but has r  r  rÞ  s   €r8   rg   r  W  s   ø€ Ð?ÀÇÁ¸xÐGZÑ[r:   Úcholesky_solve)rX   rj   r­   Ú!_linalg_broadcast_batch_dims_namer  )r    rÕ  rÿ  Úself_broadcastedÚA_broadcasteds   ``   r8   r  r  N  sd   ù€ ô 
‡L‚LØ�	‰	�Q‰Ü^ôô 
‡L‚LØ	�‰�!‰Ü[ôô 'HØˆaÐ!ó'Ñ#Ðô "Ð"2À5ÓIÐIr:   c                 óž   • U R                  5       S:X  a#  [        R                  " U [        R                  S9$ [	        U S5        [        U 5      $ )Nr   r³   Úcholesky)r�   rX   r·   Úlegacy_contiguous_formatrµ   r  ©r    rÿ  s     r8   r$  r$  _  s@   € ð ‡z�zƒ|�qÓÜ×Ò ´E×4RÑ4RÑSÐSÜ�d˜JÔ'Ü" 4Ó(Ð(r:   c                 ó0   • [        U S5        [        U 5      $ )NÚcholesky_inverse)rµ   r  r&  s     r8   r(  r(  h  s   € ô �dÐ.Ô/Ü" 4Ó(Ð(r:   Úcheck_errorsc                 ó
  • [        U S5        [        U S5        U R                  n[        U5      n[	        US5      nU R                  U5      nUR                  X55        U R                  USUS-
   [        R                  S9nXg4$ )Nzlinalg.choleskyFr   rù   r–   )	rµ   r¶   rŸ   rÌ   r   rž   rÕ   rX   rP  )rÕ  rÿ  r)  ÚA_shaper­   Ú	L_stridesrü  Úinfoss           r8   Úlinalg_cholesky_exr.  p  s|   € ä�aÐ*Ô+Ü˜1Ð/Ô0à�g‰g€GÜˆw‹<€Dô ,¨G°UÓ;€IØ	�‰�GÓ€AØ‡M�M�'Ô%ð �K‰K˜  D¨1¡HÐ-´U·[±[ˆKÐA€EØˆ8€Or:   Útauc                 óJ  ^ ^^• [         R                  " T R                  S:¬  S 5        [         R                  " T R                  S5      T R                  S5      :¬  S 5        [         R                  " T R                  S5      TR                  S5      :¬  S 5        [         R                  " T R                  TR                  -
  S:H  U U4S j5        T R                  S:”  a<  T R                  S S nTR                  S S m[         R                  " TU:H  U4S	 j5        [         R                  " TR
                  T R
                  :H  U U4S
 j5        [        STT S5        [         R                  " T R                  [        T R                  SS9T R
                  T R                  S9$ )Nrù   c                  ó   • g)NzHtorch.linalg.householder_product: input must have at least 2 dimensions.r4   r4   r:   r8   rg   Ú,linalg_householder_product.<locals>.<lambda>‰  ó   € ÐZr:   rÐ  r¢   c                  ó   • g)Nzbtorch.linalg.householder_product: input.shape[-2] must be greater than or equal to input.shape[-1]r4   r4   r:   r8   rg   r2  �  s   € Ðtr:   c                  ó   • g)Nz`torch.linalg.householder_product: input.shape[-1] must be greater than or equal to tau.shape[-1]r4   r4   r:   r8   rg   r2  ‘  s   € Ðrr:   r3   c                  ó<   >• STR                    ST R                    3$ )Nzptorch.linalg.householder_product: Expected tau to have one dimension less than input, but got tau.ndim equal to ú and input.ndim is equal to r  ©rã   r/  s   €€r8   rg   r2  –  ó"   ø€ ð)Ø),¯©¨
Ð2NÈuÏzÉzÈlñ\r:   c                  ó   >• ST  3$ )Nzltorch.linalg.householder_product: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r4   ©Úactual_batch_tau_shapes   €r8   rg   r2     ó   ø€ ð6Ø6LÐ5MñOr:   c                  ó<   >• STR                    ST R                    3$ )Nz,torch.linalg.householder_product: tau dtype z does not match input dtype r–   r8  s   €€r8   rg   r2  ¨  s   ø€ Ø:¸3¿9¹9¸+Ø*¨5¯;©;¨-ñ9r:   z torch.linalg.householder_productr/  Fr  ©r«   rÐ   r`   rˆ   )
rX   rj   r­   r«   rŸ   r`   rø  Úempty_stridedr   rˆ   )rã   r/  Úexpected_batch_tau_shaper<  s   `` @r8   Úlinalg_householder_productrB  ‚  sK  ú€ ô
 
‡L‚LØ�
‰
�a‰ÙZôô 
‡L‚LØ�
‰
�2‹˜%Ÿ*™* R›.Ñ(Ùtôô 
‡L‚LØ�
‰
�2‹˜#Ÿ(™( 2›,Ñ&Ùrôô
 
‡L‚LØ�
‰
�S—X‘XÑ Ñ"õ	
ôð ‡z�z�Aƒ~Ø#(§;¡;¨s°Ð#3Ð Ø!$§¡¨3¨B ÐÜ�ŠØ"Ð&>Ñ>ôô	
ô 
‡L‚LØ�	‰	�U—[‘[Ñ õ	
ôô Ð6¸¸UÀEÔJä×ÒØ�[‰[Ü*¨5¯;©;À%ÑHØ�k‰kØ�|‰|ñ	ð r:   c                 ó  • [        U S5        [        U SSS9  U R                  U R                  5      nUR	                  U R                  [        U R                  SS95        U R                  U R                  S S [        R                  S9nX#4$ )Nzlinalg.inv_exF)râ  r  rÐ  r–   ©rµ   r¶   rž   rŸ   rÕ   r   rX   rP  )rÕ  r)  rü  r-  s       r8   Úlinalg_inv_ex_metarE  ¸  so   € ä�a˜Ô)Ü˜1˜oÈ%ÒPà	�‰�A—G‘GÓ€AØ‡M�M�!—'‘'Ô6°q·w±wÈ%ÑPÔQà�K‰K˜Ÿ™  ˜¬E¯K©KˆKÐ8€EØˆ8€Or:   ÚLDÚpivotsÚinfo)Ú	hermitianr)  rI  c                ót  • [        U S5        [        U S5        [        R                  " U R                  [        U R                  SS9U R                  U R                  S9nU R                  U R                  S S [        R                  S9nU R                  U R                  S S [        R                  S9nX4U4$ )Nztorch.linalg.ldl_factor_exFr  r?  r¢   r–   rÐ  )
rµ   r¶   rX   r@  rŸ   r   r`   rˆ   rž   rï   )r    rI  r)  rF  rG  rH  s         r8   Úlinalg_ldl_factor_ex_metarK  Ä  sš   € ô �dÐ8Ô9Ü˜4Ð!=Ô>Ü	×	Ò	Ø�Z‰ZÜ*¨4¯:©:ÀÑGØ�j‰jØ�{‰{ñ	
€Bð �^‰^˜DŸJ™J s¨˜O´5·9±9ˆ^Ð=€FØ�>‰>˜$Ÿ*™* S b˜/´·±ˆ>Ð;€DØ�tÐÐr:   )rI  c                ój  ^ ^^• [        T S5        [        T S5        [        TT S5        [        R                  " TR
                  S:¬  U4S j5        T R                  S S n[        R                  " UTR                  :H  U4S j5        [        R                  " [        R                  " TR                  5      U4S j5        [        R                  " T R                  TR                  :H  UU 4S j5        [        TT 5      u  pV[        R                  " U[        USS	9TR                  TR                  S
9$ )Nztorch.linalg.ldl_solverù   c                  ó$   >• ST R                    S3$ )NzMtorch.linalg.ldl_solve: Expected B to have at least 2 dimensions, but it has r  r  )rí  s   €r8   rg   Ú'linalg_ldl_solve_meta.<locals>.<lambda>ç  ó   ø€ ðØŸ&™&˜Ð!4ñ6r:   r¢   c                  ó$   >• ST R                    S3$ )Nzjtorch.linalg.ldl_solve: Expected LD.shape[:-1] and pivots.shape to be the same, but got pivots with shape ú instead©rŸ   ©rG  s   €r8   rg   rN  ï  ó   ø€ ð)Ø)/¯©¨°hñ@r:   c                  ó"   >• ST R                    3$ )Nz<torch.linalg.ldl_solve: Expected pivots to be integers. Got r–   rS  s   €r8   rg   rN  ö  s   ø€ ÐNÈvÏ|É|ÈnÑ]r:   c                  ó<   >• STR                    ST R                    3$ )Nz!torch.linalg.ldl_solve: LD dtype z does not match b dtype r–   )rí  rF  s   €€r8   rg   rN  ú  s    ø€ Ð3°B·H±H°:Ð=UÐVW×V]ÑV]ÐU^Ñ_r:   Fr  r?  )rµ   r¶   rà  rX   rj   r­   rŸ   rQ   Úis_integer_dtyper`   Ú_linalg_broadcast_batch_dimsr@  r   rˆ   )rF  rG  rí  rI  Úexpected_pivots_shapeÚB_broadcast_sizerT   s   ```    r8   Úlinalg_ldl_solve_metar[  Ù  sø   ú€ ô �bÐ2Ô3Ü˜2Ð7Ô8Ü˜1˜bÐ":Ô;Ü	‡L‚LØ	�‰�!‰ô	
ôð ŸH™H S b˜MÐÜ	‡L‚LØ §¡Ñ-ô	
ôô 
‡L‚LÜ×Ò˜vŸ|™|Ó,Ü]ôô 
‡L‚LØ
�‰�A—G‘GÑÝ_ôô 7°q¸"Ó=ÑÐÜ×ÒØÜ*Ð+;ÀuÑMØ�g‰gØ�x‰xñ	ð r:   ÚPrû  )Úpivotr]  c                ój  ^ • [         R                  " T R                  S:¬  U 4S j5        [        T R                  5      nUS   nUS   n[        X45      nX2S'   U(       a  T R                  U5      nOT R                  S/5      nXRS'   T R                  U5      nXRS'   XBS'   T R                  U5      nXgU4$ )Nrù   c                  ó$   >• ST R                    S3$ )Nz@linalg.lu: Expected tensor with 2 or more dimensions. Got size: rQ  rR  rÞ  s   €r8   rg   Ú linalg_lu_meta.<locals>.<lambda>
  s   ø€ ÐRÐST×SZÑSZÐR[Ð[cÑdr:   rÐ  r¢   r   )rX   rj   r­   rÍ   rŸ   r   rž   )	rÕ  r]  Úsizesrs  r  Úkr\  rü  rû  s	   `        r8   Úlinalg_lu_metarc    s«   ø€ ô 
‡L‚LØ	�‰�!‰Üdôô
 �—‘‹M€EØˆb‰	€AØˆb‰	€Aä�‹€Aàˆ"�IÞØ�K‰K˜Ó‰à�K‰K˜˜Óˆàˆ"�IØ	�‰�EÓ€Aàˆ"�IØˆ"�IØ	�‰�EÓ€AØ�ˆ7€Nr:   ÚLU)r]  r)  c                óÔ  ^ • [         R                  " T R                  S:¬  U 4S j5        [        T R                  5      nUS   nUS   n[         R
                  " U[        USS9T R                  T R                  S9nUR                  5         [        XE5      US'   T R                  U[         R                  S9nUR                  5         T R                  U[         R                  S9nXgU4$ )	Nrù   c                  ó$   >• ST R                    S3$ )NzFtorch.lu_factor: Expected tensor with 2 or more dimensions. Got size: rQ  rR  rÞ  s   €r8   rg   Ú*linalg_lu_factor_ex_meta.<locals>.<lambda>,  s   ø€ ÐXÐYZ×Y`ÑY`ÐXaÐaiÑjr:   rÐ  r¢   Fr  r?  r–   )rX   rj   r­   rÍ   rŸ   r@  r   r`   rˆ   r  r   rž   rï   )	rÕ  r]  r)  ra  rs  r  rd  rG  rH  s	   `        r8   Úlinalg_lu_factor_ex_metarh  "  sÅ   ø€ ô 
‡L‚LØ	�‰�!‰Üjôô
 �—‘‹M€EØˆb‰	€AØˆb‰	€Aä	×	Ò	ØÜ*¨5¸EÑBØ�g‰gØ�x‰xñ	
€Bð 
‡I�I„Kä˜“€Eˆ"�IØ�[‰[˜¤e§i¡iˆ[Ð0€Fð 
‡I�I„KØ�;‰;�u¤E§I¡Iˆ;Ð.€Dà�tÐÐr:   )rß   Úadjointri  c                ó
  ^ ^^• [        T S5        [        R                  " T R                  TR                  :H  UU 4S j5        [        R                  " TR                  [        R                  :H  S 5        [        T S5        [        T TUS5        [        R                  " T R                  S5      TR                  S5      :H  S 5        [        R                  " T R                  S S TR                  :H  U4S j5        [        TT 5      u  pV[        R                  " U[        XS(       + S9TR                  TR                  S	9nUR                  5       S
:w  a,  U(       d%  UR                  5       (       a  UR                  5       nU$ )Nztorch.linalg.lu_solvec                  ó>   >• STR                    ST R                    S3$ )NzPlinalg.lu_solve: Expected LU and B to have the same dtype, but found LU of type ú and B of type rQ  r–   )rí  rd  s   €€r8   rg   Ú&linalg_lu_solve_meta.<locals>.<lambda>U  s#   ø€ ð$Ø$&§H¡H :¨_¸Q¿W¹W¸IÀXñOr:   c                  ó   • g)NzElinalg.lu_solve: pivots should be a Tensor of scalar type torch.int32r4   r4   r:   r8   rg   rm  \  s   € ÐWr:   zlinalg.lu_solver¢   c                  ó   • g)NzYlinalg.lu_solve: Number of pivots per batch should be same as the dimension of the matrixr4   r4   r:   r8   rg   rm  d  s   € Ðkr:   c                  ó$   >• ST R                    S3$ )Nzclinalg.lu_solve: Expected LU.shape[:-1] and pivots.shape to be the same, but got pivots with shape rQ  rR  rS  s   €r8   rg   rm  j  rT  r:   r  r?  r   )r¶   rX   rj   r`   rï   rµ   rñ  r«   rŸ   rX  r@  r   rˆ   r�   rô   Úconj)rd  rG  rí  rß   ri  rZ  rT   rò  s   ```     r8   Úlinalg_lu_solve_metarr  G  s-  ú€ ô ˜2Ð6Ô7Ü	‡L‚LØ
�‰�A—G‘GÑõ	
ôô 
‡L‚LØ�‰œŸ	™	Ñ!ÙWôô �bÐ1Ô2Ü�b˜!˜TÐ#4Ô5Ü	‡L‚LØ
�‰�‹�v—{‘{ 2“Ñ&Ùkôô 
‡L‚LØ
�‰��"ˆ˜Ÿ™Ñ%ô	
ôô 7°q¸"Ó=ÑÐä× Ò ØÜ*Ð+;ÄxÑPØ�g‰gØ�x‰xñ	€Fð ‡|�|ƒ~˜Ó¦4Ø×Ñ×ÑØ—[‘[“]ˆFà€Mr:   Úunpack_dataÚunpack_pivotsc                 ó6  ^ • [         R                  " T R                  S:¬  U 4S j5        U(       a3  [         R                  " UR                  [         R                  :H  S 5        [        T R                  5      nUS   nUS   n[        XV5      nXTS'   U(       a  T R                  U5      nOT R                  S/5      nU(       a/  XtS'   T R                  U5      n	XtS'   XdS'   T R                  U5      n
O$T R                  S/5      n	T R                  S/5      n
X‰U
4$ )Nrù   c                  ó$   >• ST R                    S3$ )NzFtorch.lu_unpack: Expected tensor with 2 or more dimensions. Got size: rQ  rR  )rd  s   €r8   rg   Ú lu_unpack_meta.<locals>.<lambda>Š  s   ø€ ÐXÐY[×YaÑYaÐXbÐbjÑkr:   c                  ó   • g)Nz´torch.lu_unpack: LU_pivots is expected to be a contiguous tensor of torch.int32 dtype.
Note: this function is intended to be used with the output produced by torch.linalg.lu_factorr4   r4   r:   r8   rg   rw  �  s   € ðpr:   rÐ  r¢   r   )	rX   rj   r­   r`   rP  rÍ   rŸ   r  rž   )rd  rG  rs  rt  ra  rs  r  rb  r\  rü  rû  s   `          r8   Úlu_unpack_metary  €  sô   ø€ ô 
‡L‚LØ
�‰�1‰Ükôö Ü�ŠØ�L‰LœEŸK™KÑ'ñô	
ô �—‘‹N€EØˆb‰	€AØˆb‰	€AÜˆA‹	€AØˆ"�IÞØ�L‰L˜Ó‰à�L‰L˜!˜ÓˆÞØˆb‰	Ø�L‰L˜ÓˆØˆb‰	Øˆb‰	Ø�L‰L˜Ó‰à�L‰L˜!˜ÓˆØ�L‰L˜!˜ÓˆØ�ˆ7€Nr:   Úmodec                 ó�   ^ • T S:X  a  SnSnX4$ T S:X  a  SnSnX4$ T S:X  a  SnSnX4$ [         R                  " SU 4S j5        WW4$ )NÚreducedTÚcompleteFÚrc                  ó   >• ST  S3$ )Nzqr received unrecognized mode 'z=' but expected one of 'reduced' (default), 'r', or 'complete'r4   )rz  s   €r8   rg   Ú _parse_qr_mode.<locals>.<lambda>·  s   ø€ Ø1°$°ð 8Nñ Or:   ©rX   rj   )rz  Ú	compute_qr|  s   `  r8   Ú_parse_qr_moderƒ  ª  s€   ø€ ØˆyÓØˆ	Øˆð ÐÐð 
�Ó	Øˆ	Øˆð ÐÐð 
�‹Øˆ	Øˆð ÐÐô 	�ŠØôô	
ð �gÐÐr:   ÚQÚRc                 ó  • [        U S5        [        U S5        [        U5      u  p#U R                  S   nU R                  S   n[	        XE5      nU(       aO  [        U R                  5      nU(       a  UOUUS'   U R                  U5      nUR                  U[        USS95        OU R                  S/5      n[        U R                  5      n	U(       d  U(       d  UOUU	S'   U R                  U	5      n
U
R                  U	[        U	SS95        XŠ4$ )Nz	linalg.qrrÐ  r¢   Fr  r   )	rì  r¶   rƒ  rŸ   r  rÍ   rž   rÕ   r   )rÕ  rz  r‚  Úreduced_moders  r  rb  ÚQ_shaper„  ÚR_shaper…  s              r8   Úlinalg_qr_metarŠ  ¿  sâ   € ô �!�[Ô!Ü˜1˜kÔ*ä,¨TÓ2Ñ€Ià	�‰�‰€AØ	�‰�‰€AÜˆA‹	€AæÜ�q—w‘w“-ˆÞ'‘a¨Qˆ�‰Ø�K‰K˜Ó ˆØ	�‰�gÔ:¸7ÈeÑTÕUà�K‰K˜˜Óˆô �1—7‘7‹m€GÞ#®9‘!¸!€GˆB�KØ	�‰�GÓ€AØ‡M�M�'Ô6°wÈ%ÑPÔQØˆ4€Kr:   ÚsignÚ	logabsdetc                 ót  • [        U S5        [        U SS5        U R                  nU R                  US S 5      nU R                  US S [	        U R
                  5      S9n[        R                  " U[        US5      U R
                  U R                  S9nU R                  US S [        R                  S9nX#XE4$ )Nzlinalg.slogdetFrÐ  r–   r?  r¢   )rµ   r¶   rŸ   rž   rb   r`   rX   r@  r   rˆ   rP  )rÕ  rŸ   r‹  rŒ  rd  rG  s         r8   Ú_linalg_slogdetrŽ  Û  s®   € ô �aÐ)Ô*Ü˜1Ð.°Ô6Ø�G‰G€EØ�;‰;�u˜S˜b�zÓ"€DØ—‘˜E # 2˜J¬o¸a¿g¹gÓ.F�ÐG€IÜ	×	Ò	ØÜ*¨5°%Ó8Ø�g‰gØ�x‰xñ	
€Bð �[‰[˜˜s ˜¬5¯;©;ˆ[Ð7€FØ˜BÐ&Ð&r:   Úfull_matricesÚ
compute_uvÚdriverc                 ób  • [        U S5        [        U S5        [        U R                  S S 5      nU R                  S   nU R                  S   n[	        XV5      nU(       a‚  XEU(       a  UOU/-   nU R                  U5      n	U	R                  U[        USS95        XA(       a  UOUU/-   n
U R                  U
5      n[        U 5      S:H  nUR                  U
[        X¬S95        O$U R                  S/5      n	U R                  S/5      nU R                  XG/-   [        U R                  5      S9nX�U4$ )	Nz
linalg.svdrÐ  r¢   Fr  rý   r   r–   )rì  r¶   rÍ   rŸ   r  rž   rÕ   r   r  rb   r`   )rÕ  r�  r�  r‘  rÛ   rs  r  rb  ÚU_shaperû  ÚV_shapeÚVr  ÚSs                 r8   Ú_linalg_svd_metar—  ï  s  € ô �!�\Ô"Ü˜1˜lÔ+ä�a—g‘g˜c˜r�lÓ#€JØ	�‰�‰€AØ	�‰�‰€AÜˆA‹	€AæØ®¡1¸1Ð=Ñ=ˆØ�K‰K˜Ó ˆØ	�‰�gÔ:¸7ÈeÑTÔUà¥]¡¸¸1Ð=Ñ=ˆØ�K‰K˜Ó ˆô
 ˜a“. FÑ*ˆØ	�‰�gÔ:¸7ÑVÕWð �K‰K˜˜ÓˆØ�K‰K˜˜Óˆð 	
�‰�J Ñ$¬O¸A¿G¹GÓ,DˆÐE€AØ�ˆ7€Nr:   Úarg1Úarg2c                 ó  • U R                   S S nUR                   S S n[        X#5      n[        U5      nXPR                  S5      U R                  S5      /-  n[        U5      nXaR                  S5      UR                  S5      /-  nXV4$ )NrÐ  r¢   )rŸ   r%   rÍ   r«   )r˜  r™  Úarg1_batch_sizesÚarg2_batch_sizesÚexpand_batch_portionÚarg1_expand_sizeÚarg2_expand_sizes          r8   rX  rX    s�   € ð
 —z‘z # 2�ÐØ—z‘z # 2�ÐÜ,Ð-=ÓPÐäÐ0Ó1ÐØŸ™ 2›¨¯	©	°"«Ð6Ñ6ÐäÐ0Ó1ÐØŸ™ 2›¨¯	©	°"«Ð6Ñ6ÐØÐ-Ð-r:   c                 óÐ   • U(       a  [        XU5        [        X5      u  p4X0R                  :X  a  U OU R                  U5      nXAR                  :X  a  UOUR                  U5      nXV4$ rD   )rà  rX  rŸ   Úexpand)r˜  r™  rÖ  rž  rŸ  Úarg1_broadcastedÚarg2_broadcasteds          r8   r   r   &  sh   € ö Ü˜t¨4Ô0ä)EÀdÓ)QÑ&Ðð !§J¡JÓ.‰°D·K±KÐ@PÓ4Qð ð !§J¡JÓ.‰°D·K±KÐ@PÓ4Qð ð Ð-Ð-r:   r¬   c                 ó´   • U R                   S S nUR                  S:H  =(       d2    U R                  S-
  UR                  :H  =(       a    UR                   U:H  nU$ )Nr¢   r3   )rŸ   r­   )rã   r¬   Úexpected_batched_rhs_shapeÚvector_cases       r8   Úlinalg_solve_is_vector_rhsr§  :  sS   € Ø!&§¡¨S¨bÐ!1ÐØ—*‘* ‘/÷ Ø�
‰
�Q‰˜%Ÿ*™*Ñ$×R¨¯©Ð8RÑ)Rð ð Ðr:   )rß   r)  rò  rd  rG  rH  c                óì  ^ ^• [        T S5        [        R                  " T R                  TR                  :H  U U4S j5        [	        T T5      nU(       a  TR                  S5      OTn	[        T X’S5        [        U	T 5      u  p«[        R                  " U=(       d    U(       + S 5        U(       a  U
S S OU
n[        R                  " U[        XÂ(       + 5      TR                  TR                  S9nT R                  n[        R                  " U[        US5      T R                  T R                  S9nT R                  US S [        R                  S9nT R                  US S [        R                  S9nXEXg4nXßUU4n[        S	 U 5       5      (       aa  [        UU5       HQ  u  nn[!        UUR                  5        UR#                  UR                  UR%                  5       5        ['        UUSS
9  MS     U$ )Nzlinalg.solvec                  ó>   >• ST R                    STR                    S3$ )NzKlinalg.solve: Expected A and B to have the same dtype, but found A of type rl  rQ  r–   )rÕ  rí  s   €€r8   rg   Ú"_linalg_solve_ex.<locals>.<lambda>Q  s    ø€ ØYØ�w‰wˆi� q§w¡w i¨xñ9r:   r¢   c                  ó   • g)Nz•linalg.solve: Vector broadcasting of the left hand side is not supported for left=False. In this case linalg.solve is equivalent to B / A.squeeze(-1)r4   r4   r:   r8   rg   rª  \  s   € ðKr:   r?  Fr–   rÐ  c              3   ó(   #   • U  H  oS Lv •  M
     g 7frD   r4   )rv   r=   s     r8   rx   Ú#_linalg_solve_ex.<locals>.<genexpr>s  s   é € Ð
&¢#˜Q�D�=¢#ùs   ‚)Ú	copy_fromÚcopy_toÚexact_dtype)r¶   rX   rj   r`   r§  Ú	unsqueezerñ  rX  r@  r   rˆ   rŸ   rž   rP  ÚallÚzipr!   rÕ   rÐ   r#   )rÕ  rí  rß   r)  rò  rd  rG  rH  r¦  ÚB_ÚB_broad_shaperT   Úresult_shapeÚresult_rŸ   ÚLU_Úpivots_Úinfo_r×   Úresr~  Úos   ``                    r8   Ú_linalg_solve_exr½  B  s¦  ù€ ô ˜1˜nÔ-Ü	‡L‚LØ	�‰�1—7‘7Ñõ	
ôô -¨Q°Ó2€KÞ'ˆ�‰�RŒ¨Q€BÜ�a˜ >Ô2Ü3°B¸Ó:Ñ€MÜ	‡L‚LØ×�K”ñ	
ôö *5�=  "Ñ%¸-€LÜ×!Ò!ØÜ*¨<¼ÓBØ�g‰gØ�x‰xñ	€Gð �G‰G€EÜ
×
Ò
ØÜ*¨5°%Ó8Ø�g‰gØ�x‰xñ	€Cð �k‰k˜%  ˜*¬E¯K©KˆkÐ8€GØ�K‰K˜˜c˜r˜
¬%¯+©+ˆKÐ6€EØ�vÐ
$€CØ˜ %Ð
(€CÜ
Ñ
&¡#Ó
&×&Ñ&Ü˜˜S–M‰DˆAˆqä˜a §¡Ô)à�M‰M˜!Ÿ'™' 1§8¡8£:Ô.Ü Q°¸uÔEñ "ð €Jr:   )rß   Úunitriangularr×   r¾  r×   c                ó  • Uc  U R                  S/5      n[        U[        5      (       d  [        S[	        U5       35      e[        XUS5        [        XS 5      u  pgUR                  SS5      R                  5       =(       a    UR                  5       nU(       a  [        XVR                  5      nU$ [        XVR                  5      (       a=  UR                  UR                  SS5      R                  5        UR                  SS5        U$ )Nr   zout must be TensorLike, got zlinalg.solve_triangularrÐ  r¢   )rž   rt   r   r�   r   rñ  r   r  rq  Úis_conjr!   rŸ   r"   rÔ   Ú
transpose_)	rÕ  rí  rÿ  rß   r¾  r×   r´  ÚA_Úavoid_copy_As	            r8   Úlinalg_solve_triangular_metarÄ  }  sÕ   € ð �{Ø�k‰k˜1˜#ÓˆÜ�cœ:×&Ñ&ÜÐ;¼DÀ»I¸;ÐGÓHÐHÜ�a˜DÐ";Ô<Ü.¨q°TÓ:�F€BØ—<‘<  BÓ'×5Ñ5Ó7×H¸B¿J¹J»L€LÞÜ §X¡XÓ.ˆð €Jô   §X¡X×.Ñ.Ø�K‰K˜Ÿ™ R¨Ó,×2Ñ2Ô3Ø�N‰N˜2˜rÔ"Ø€Jr:   ÚXÚM)r°  r  c                 óð  ^ ^• [         R                  " T R                  S:¬  U 4S j5        [         R                  " TR                  S:¬  U4S j5        [        T TS5        TR                  [         R
                  :X  aw  [        T T5      u  pV[         R                  " U[        USS9T R                  T R                  S9n[         R                  " U[        USS9TR                  TR                  S9nXx4$ TR                  [         R                  :X  d  TR                  [         R                  :X  a+  [         R                  " T 5      nT R                  S/5      nXx4$ [         R                  " SS	 5        WW4$ )
Nrù   c                  ó$   >• ST R                    S3$ )NzMtorch.triangular_solve: Expected b to have at least 2 dimensions, but it has r  r  r¹   s   €r8   rg   Ú'triangular_solve_meta.<locals>.<lambda>£  s   ø€ ðØŸ)™)˜Ð$7ñ9r:   c                  ó$   >• ST R                    S3$ )NzMtorch.triangular_solve: Expected A to have at least 2 dimensions, but it has r  r  rÞ  s   €r8   rg   rÉ  ª  rO  r:   Útriangular_solveFr  r?  r   c                  ó   • g)Nz+triangular_solve: Got an unexpected layout.r4   r4   r:   r8   rg   rÉ  Ä  s   € Ð$Qr:   )rX   rj   r­   rà  r‡   ÚstridedrX  r@  r   r`   rˆ   Ú
sparse_csrÚ
sparse_bsrr·   rž   )	r    rÕ  rÿ  r  r¾  Úself_broadcast_sizeÚA_broadcast_sizeÚsolutionÚcloned_coefficients	   ``       r8   Útriangular_solve_metarÔ  ˜  sC  ù€ ô 
‡L‚LØ�	‰	�Q‰ô	
ôô 
‡L‚LØ	�‰�!‰ô	
ôô ˜4 Ð$6Ô7à‡x�x”5—=‘=Ó Ü0LÈTÐSTÓ0UÑ-ÐÜ×&Ò&Ø$Ü.Ð/BÈeÑTØ—*‘*Ø—;‘;ñ	
ˆô #×0Ò0Ø!Ü.Ð/?È5ÑQØ—'‘'Ø—8‘8ñ	
Ðð Ð'Ð'ð 
�‰”U×%Ñ%Ó	%¨¯©´U×5EÑ5EÓ)EÜ×#Ò# DÓ)ˆØ!Ÿ^™^¨Q¨CÓ0Ðð Ð'Ð'ô 	�Š�UÑQÔRØÐ'Ð'Ð'r:   c                 ó^  • [        U S5        [        U S5        U R                  U R                  S S 5      nU R                  U R                  5      nUR	                  U R                  [        U R                  SS95        U R                  U R                  S S [        R                  S9nXU4$ )Nz
linalg.detrÐ  Fr  r¢   r–   rD  )rÕ  Údetrd  rG  s       r8   Ú_linalg_det_metar×  É  sˆ   € ä�a˜Ô&Ü˜1˜lÔ+à
�+‰+�a—g‘g˜c˜r�lÓ
#€Cà	
�‰�Q—W‘WÓ	€BØ‡N�N�1—7‘7Ô7¸¿¹È5ÑQÔRà�[‰[˜Ÿ™  "˜¬U¯[©[ˆ[Ð9€FØ�Fˆ?Ðr:   c                 óX  ^ ^^^^^• [         R                  " T R                  S:¬  S 5        [         R                  " TR                  S:¬  S 5        U(       a  SOSm[         R                  " TR                  T   TR                  S   :¬  U4S j5        [         R                  " TR                  T   T R                  S   :H  U4S j5        [         R                  " TR                  S   T R                  S   :*  S 5        [         R                  " T R                  TR                  -
  S	:H  U U4S
 j5        [         R                  " T R                  TR                  :H  U U4S j5        T R                  S:”  ai  T R                  S S nTR                  S S m[         R                  " TU:H  U4S j5        TR                  S S m[         R                  " TU:H  U4S j5        [         R                  " TR                  T R                  :H  U U4S j5        [         R                  " TR                  T R                  :H  U U4S j5        [        STT S5        [        STT S5        [         R                  " TR                  [        TR                  SS9TR                  TR                  S9$ )Nrù   c                  ó   • g)Nz3torch.ormqr: input must have at least 2 dimensions.r4   r4   r:   r8   rg   Úormqr.<locals>.<lambda>á  ó   € Ð!Vr:   c                  ó   • g)Nz3torch.ormqr: other must have at least 2 dimensions.r4   r4   r:   r8   rg   rÚ  ä  rÛ  r:   rÐ  r¢   c                  ó   >• ST  S3$ )Nútorch.ormqr: other.shape[z0] must be greater than or equal to tau.shape[-1]r4   ©Úleft_size_conditions   €r8   rg   rÚ  ê  s   ø€ Ð+Ð,?Ð+@Ð@pÑqr:   c                  ó   >• ST  S3$ )NrÞ  z"] must be equal to input.shape[-2]r4   rß  s   €r8   rg   rÚ  î  s   ø€ Ð+Ð,?Ð+@Ð@bÑcr:   c                  ó   • g)NzHtorch.ormqr: tau.shape[-1] must be less than or equal to input.shape[-1]r4   r4   r:   r8   rg   rÚ  ó  r3  r:   r3   c                  ó<   >• STR                    ST R                    3$ )Nz[torch.ormqr: Expected tau to have one dimension less than input, but got tau.ndim equal to r7  r  r8  s   €€r8   rg   rÚ  ø  r9  r:   c                  ó<   >• STR                    ST R                    3$ )Nzhtorch.ormqr: Expected other to have the same number of dimensions as input, but got other.ndim equal to r7  r  ©rã   r¬   s   €€r8   rg   rÚ  ÿ  s&   ø€ ð+Ø+0¯:©:¨,Ð6RÐSX×S]ÑS]ÐR^ñ`r:   c                  ó   >• ST  3$ )NzWtorch.ormqr: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r4   r;  s   €r8   rg   rÚ  
  r=  r:   c                  ó   >• ST  3$ )NzYtorch.ormqr: Expected batch dimensions of other to be equal to input.shape[:-2], but got r4   )Úactual_batch_other_shapes   €r8   rg   rÚ    s   ø€ ð6Ø6NÐ5OñQr:   c                  ó<   >• ST R                    STR                    3$ )NzPtorch.ormqr: Expected input and tau to have the same dtype, but input has dtype z and tau has dtype r–   r8  s   €€r8   rg   rÚ    s"   ø€ ð#Ø#(§;¡; -Ð/BÀ3Ç9Á9À+ñOr:   c                  ó<   >• ST R                    STR                    3$ )NzRtorch.ormqr: Expected input and other to have the same dtype, but input has dtype z and other has dtype r–   rå  s   €€r8   rg   rÚ  "  s"   ø€ ð#Ø#(§;¡; -Ð/DÀUÇ[Á[ÀMñSr:   ztorch.ormqrr/  r¬   Fr  r?  )	rX   rj   r­   rŸ   r`   rø  r@  r   rˆ   )	rã   r/  r¬   rß   r  Úexpected_batch_shaperè  r<  rà  s	   ```   @@@r8   Úormqrrì  ×  s  ý€ ô 
‡L‚LØ�
‰
�a‰ÑVôô 
‡L‚LØ�
‰
�a‰ÑVôö !%™"¨"ÐÜ	‡L‚LØ�‰Ð'Ñ(¨C¯I©I°b©MÑ9Üqôô 
‡L‚LØ�‰Ð'Ñ(¨E¯K©K¸©OÑ;Ücôô
 
‡L‚LØ�	‰	�"‰˜Ÿ™ R™Ñ(ÙZôô
 
‡L‚LØ�
‰
�S—X‘XÑ Ñ"õ	
ôô 
‡L‚LØ�
‰
�e—j‘jÑ õ	
ôð ‡z�z�Aƒ~Ø$Ÿ{™{¨3¨BÐ/ÐØ!$§¡¨3¨B ÐÜ�ŠØ"Ð&:Ñ:ôô	
ð $)§;¡;¨s°Ð#3Ð Ü�ŠØ$Ð(<Ñ<ôô	
ô 
‡L‚LØ�	‰	�U—[‘[Ñ õ	
ôô 
‡L‚LØ�‰�u—{‘{Ñ"õ	
ôô �M 3¨¨uÔ5Ü�M 5¨%°Ô9ä×ÒØ�[‰[Ü*¨5¯;©;À%ÑHØ�k‰kØ�|‰|ñ	ð r:   c                ó²  ^ ^^• [         R                  " [        T5      ST-  :H  UU4S j5        T R                  nUTS-   :H  nUnU(       + nU(       a1  [	        SU5       H   nU=(       a    T R                  U5      S:g  nM"     O/[	        U5       H   nU=(       a    T R                  U5      S:g  nM"     [         R                  " U=(       d    UUU 4S j5        g )Nrù   c                  ó,   >• SST -   S[        T5       3$ )Nzpadding size is expected to be rù   z, but got: ©rÌ   )r‹   Úpaddings   €€r8   rg   Ú,_padding_check_valid_input.<locals>.<lambda>6  s   ø€ Ð1°!°c±'°¸+ÄcÈ'ÃlÀ^ÑTr:   r3   r   c                  ó:   >• ST S-    ST S-    STR                    3$ )Nú	Expected r3   zD or rù   zcD (batch mode) tensor with possibly 0 batch size and other non-zero dimensions for input, but got: rR  )r‹   rã   s   €€r8   rg   rñ  K  s-   ø€ Ø˜˜a™�y  c¨A¡g Yð /AØAFÇÁÀñOr:   )rX   rj   rÌ   r­   rÎ   r«   )rã   rð  r‹   Ú	input_dimÚis_batch_modeÚvalid_batch_modeÚvalid_non_batch_moderÞ   s   ```     r8   Ú_padding_check_valid_inputrø  3  s»   ú€ Ü	‡L‚LÜˆG‹˜˜C™ÑÝTôð
 —
‘
€Ià #¨¡'Ñ*€Mà$ÐØ,Ô,Ðæä�q˜)Ö$ˆAØ/×F°E·J±J¸q³MÀQÑ4FÒò %ô �yÖ!ˆAØ#7×#N¸E¿J¹JÀq»MÈQÑ<NÒ ñ "ô 
‡L‚LØ×0Ð0õ	
õr:   c                óö  ^ ^^^^	^
• SnSmSnT R                   S:X  a  T R                  S5      nTS-  mUS-  n[        T USS9  Uu  m	m
T R                  U5      nT R                  T5      mTT	-   T
-   mU(       a-  [        R                  " T	T:  =(       a    T
T:  UU U	U
4S j5        [        R                  " TS:¬  UU4S j5        T R                   S:X  a  T R                  UT45      $ T R                  XET45      $ )Nr   r3   r0   r£   c                  ó4   >• ST ST ST  STR                    3$ ©NzcArgument #4: Padding size should be less than the corresponding input dimension, but got: padding (r}   ú) at dimension ú
 of input rR  ©Údim_wrã   Úpad_lÚpad_rs   €€€€r8   rg   Ú_pad1d_common.<locals>.<lambda>g  ó-   ø€ ð%Ø%* G¨2¨e¨W°OÀEÀ7È*ÐUZ×U`ÑU`ÐTañcr:   c                  ó   >• ST  ST 3$ )Nz
input (W: z%) is too small. Calculated output W: r4   )Úinput_wÚoutput_ws   €€r8   rg   r  o  s   ø€ �*˜W˜IÐ%JÈ8È*ÑUr:   rù   )r­   r«   rø  rX   rj   rž   )rã   rð  Úis_reflectionÚ	dim_planeÚnbatchÚnplanerÿ  r  r  r   r  s   `     @@@@@r8   Ú_pad1d_commonr  R  sì   ý€ Ø€IØ€EØ€Fà‡z�z�QƒØ—‘˜A“ˆØ�‰
ˆØ�Q‰ˆ	ä˜u g°1Ò5à�L€Eˆ5à�Z‰Z˜	Ó"€FØ�j‰j˜Ó€GØ˜‰ Ñ&€HæÜ�ŠØ�G‰O×/ ¨¡÷ô	
ô 
‡L‚LØ�A‰ÝUôð
 ‡z�z�QƒØ�‰ ¨Ð1Ó2Ð2à�‰ °Ð9Ó:Ð:r:   c                 ó   • [        XSS9$ ©NT©r  )r  ©rã   rð  s     r8   Úmeta_reflection_pad1dr  x  ó   € ô ˜°tÑ<Ð<r:   c                 ó†   ^ • [         R                  " T R                  [         R                  :g  U 4S j5        [	        T USS9$ )Nc                  ó@   >• ST R                   R                  5        S3$ )Nz)"replication_pad1d" not implemented for 'Ú'©r`   Ú__str__©rã   s   €r8   rg   Ú(meta_replication_pad1d.<locals>.<lambda>ƒ  ó   ø€ Ð=¸e¿k¹k×>QÑ>QÓ>SÐ=TÐTUÑXr:   Fr  )rX   rj   r`   Úboolr  r  s   ` r8   Úmeta_replication_pad1dr  ~  ó5   ø€ ô 
‡L‚LØ�‰”u—z‘zÑ!ÜXôô ˜ °uÑ=Ð=r:   c                óÊ  ^ ^^^^^• SmU(       d$  [         R                  " [        U5      S:H  S 5        TR                  S:X  a  TS-  mUu  mmTR	                  T5      nUT-   T-   mU(       a-  [         R                  " TU:  =(       a    TU:  UUUU4S j5        [         R                  " TT R	                  T5      :H  UU U4S j5        TR                  TR                  5      $ )Nr3   rù   c                  ó   • g)Nz padding size is expected to be 2r4   r4   r:   r8   rg   Ú(_pad1d_backward_common.<locals>.<lambda>‹  s   € Ð0Rr:   r0   c                  ó4   >• ST ST ST  STR                    3$ rû  rR  rþ  s   €€€€r8   rg   r  ˜  r  r:   c                  ó2   >• ST STR                  T 5       3$ ©Nz(grad_output width unexpected. Expected: ú, Got: rª   ©rÿ  Úgrad_outputr  s   €€€r8   rg   r     ó    ø€ Ð:¸8¸*ÀGÈK×L\ÑL\Ð]bÓLcÐKdÑer:   )rX   rj   rÌ   r­   r«   rž   rŸ   )	r%  rã   rð  r  r  rÿ  r  r   r  s	   ``   @@@@r8   Ú_pad1d_backward_commonr'  ˆ  s¹   ý€ Ø€EÞÜ�Š”S˜“\ QÑ&Ñ(RÔSà‡z�z�QƒØ�‰
ˆà�L€Eˆ5à�j‰j˜Ó€GØ˜‰ Ñ&€HæÜ�ŠØ�G‰O×/ ¨¡÷ô	
ô 
‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þeôð
 �?‰?˜5Ÿ;™;Ó'Ð'r:   Ú
grad_inputc                 ó   • [        XUSS9$ r  ©r'  ©r%  rã   rð  s      r8   Úmeta_reflection_pad1d_backwardr,  ¦  s   € ô " +°gÈTÑRÐRr:   c                 ó   • [        XUSS9$ )NFr  r*  r+  s      r8   Úmeta_replication_pad1d_backwardr.  ¬  s   € ô " +°gÈUÑSÐSr:   c                óÂ  ^ ^^^	^
^^^^^^• SmSmSnSn[        T USS9  T R                  nUS:X  a   T R                  S5      nTS-  mTS-  mUS-  nUu  mmmmT R                  U5      nT R                  T5      m	T R                  T5      m
T	T-   T-   mT
T-   T-   mU(       aZ  [        R                  " TT
:  =(       a    TT
:  UU UU4S j5        [        R                  " TT	:  =(       a    TT	:  UU UU4S j5        [        R                  " TS:¬  =(       d    TS:¬  U	U
UU4S j5        T R                  S	:X  a  T R                  UTT45      $ T R                  XFTT45      $ )
Nrù   r3   r   r£   é   c                  ó4   >• ST ST ST  STR                    3$ rû  rR  rþ  s   €€€€r8   rg   Ú_pad2d_common.<locals>.<lambda>Ì  r  r:   c                  ó4   >• ST ST ST  STR                    3$ ©NzcArgument #6: Padding size should be less than the corresponding input dimension, but got: padding (r}   rü  rý  rR  ©Údim_hrã   Úpad_bÚpad_ts   €€€€r8   rg   r2  Ó  r  r:   c                  ó    >• ST  ST ST ST 3$ )Nz
input (H: ú W: z%) is too small. Calculated output H: r4   )Úinput_hr  Úoutput_hr  s   €€€€r8   rg   r2  Û  s%   ø€ Ø˜˜	  g Yð /$Ø$, :¨T°(°ñ=r:   r0   ©rø  r­   r«   rX   rj   rž   )rã   rð  r  Ú
dim_slicesr	  r­   r
  r6  rÿ  r;  r  r<  r  r7  r   r  r8  s   `      @@@@@@@@@@r8   Ú_pad2d_commonr?  ²  sS  ÿú€ Ø€EØ€EØ€JØ€Fä˜u g°1Ò5à�:‰:€DØˆqƒyØ—‘˜A“ˆØ�‰
ˆØ�‰
ˆØ�a‰ˆ
à!(Ñ€Eˆ5�%˜à�Z‰Z˜
Ó#€FØ�j‰j˜Ó€GØ�j‰j˜Ó€GØ˜‰ Ñ&€HØ˜‰ Ñ&€HæÜ�ŠØ�G‰O×/ ¨¡÷ô	
ô 	�ŠØ�G‰O×/ ¨¡÷ô	
ô 
‡L‚LØ�A‰×&˜ Q™÷	
ôð ‡z�z�QƒØ�‰ ¨°(Ð;Ó<Ð<à�‰ °¸(ÐCÓDÐDr:   c                 ó   • [        XSS9$ r  )r?  r  s     r8   Úmeta_reflection_pad2drA  ç  r  r:   c                 ó†   ^ • [         R                  " T R                  [         R                  :g  U 4S j5        [	        T USS9$ )Nc                  ó@   >• ST R                   R                  5        S3$ )Nz)"replication_pad2d" not implemented for 'r  r  r  s   €r8   rg   Ú(meta_replication_pad2d.<locals>.<lambda>ò  r  r:   Fr  )rX   rj   r`   r  r?  r  s   ` r8   Úmeta_replication_pad2drE  í  r  r:   c                 ó`   • [         R                  " U5      n[         R                  " U5      nXV4$ rD   ©rX   r·   )Úgrad_wÚsaved_vÚsaved_gÚsaved_normsr‹   Úgrad_vÚgrad_gs          r8   Úmeta_weight_norm_backwardrN  ÷  s,   € ô ×Ò˜gÓ&€FÜ×Ò˜gÓ&€FØˆ>Ðr:   c                 ó¢  ^ ^^^^• SmSmSnUR                   nUR                  5       S:X  a  TS-  mTS-  mUS-  nUu  pVpxUT   n	UT   n
X—-   U-   mX¥-   U-   m[        R                  " TT R	                  T5      :H  UU U4S j5        [        R                  " TT R	                  T5      :H  UU U4S j5        UR                  UR                   5      $ )Nrù   r3   r   r0  c                  ó2   >• ST STR                  T 5       3$ r"  rª   r$  s   €€€r8   rg   Ú%meta_pad2d_backward.<locals>.<lambda>  r&  r:   c                  ó2   >• ST STR                  T 5       3$ ©Nz)grad_output height unexpected. Expected: r#  rª   ©r6  r%  r<  s   €€€r8   rg   rQ  !  ó    ø€ Ð;¸H¸:ÀWÈ[×M]ÑM]Ð^cÓMdÐLeÑfr:   )rŸ   r‹   rX   rj   r«   rž   )r%  r    rð  r  rf   r   r  r8  r7  r;  r  r6  rÿ  r<  r  s   `          @@@@r8   Úmeta_pad2d_backwardrV     sÖ   ü€ ð €EØ€EØ€Ià—‘€JØ‡x�xƒz�QƒØ�‰
ˆØ�‰
ˆØ�Q‰ˆ	à!(Ñ€E�%à˜Ñ€GØ˜Ñ€GØ‰ Ñ&€HØ‰ Ñ&€Hä	‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þeôô 
‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þfôð �>‰>˜$Ÿ*™*Ó%Ð%r:   c          	      ó~  ^ ^^^	^
^^^^^^^^^^^• Sm	SmSmSn[        T USS9  T R                  S:H  nU(       a%  T R                  S5      nT	S-  m	TS-  mTS-  mUS-  nUu  mmmmmmT R                  U5      nT R                  T5      m
T R                  T5      mT R                  T	5      mT
T-   T-   mTT-   T-   mTT-   T-   mU(       a‡  [        R                  " TT:  =(       a    TT:  U	U UU4S j5        [        R                  " TT:  =(       a    TT:  UU UU4S j5        [        R                  " TT
:  =(       a    TT
:  UU UU4S	 j5        [        R                  " TS:¬  =(       d    TS:¬  =(       d    TS:¬  U
UUUUU4S
 j5        U(       a  T R                  WUTTT45      $ T R                  UTTT45      $ )Nr0   rù   r3   r   r£   é   c                  ó4   >• ST ST ST  STR                    3$ rû  rR  rþ  s   €€€€r8   rg   Ú_pad3d_common.<locals>.<lambda>C  r  r:   c                  ó4   >• ST ST ST  STR                    3$ r4  rR  r5  s   €€€€r8   rg   rZ  J  r  r:   c                  ó4   >• ST ST ST  STR                    3$ )NzcArgument #8: Padding size should be less than the corresponding input dimension, but got: padding (r}   rü  rý  rR  )Údim_drã   Úpad_bkÚpad_fs   €€€€r8   rg   rZ  Q  s-   ø€ ð%Ø%* G¨2¨f¨X°_ÀUÀGÈ:ÐV[×VaÑVaÐUbñdr:   c                  ó,   >• ST  ST ST ST ST ST 3$ )Nz
input (D: ú H: r:  z%) is too small. Calculated output D: r4   )Úinput_dr;  r  Úoutput_dr<  r  s   €€€€€€r8   rg   rZ  Y  s2   ø€ Ø˜˜	  g Y¨d°7°)ð <$Ø$, :¨T°(°¸4À¸zñKr:   r=  )rã   rð  r  r  Ú
batch_moder	  r
  r]  r6  rÿ  rb  r;  r  rc  r<  r  r7  r^  r_  r   r  r8  s   `      @@@@@@@@@@@@@@@r8   Ú_pad3d_commonre  &  s¬  ÿÿ€ Ø€EØ€EØ€EØ€Iä˜u g°1Ò5à—‘˜q‘€JÞØ—‘˜A“ˆØ�‰
ˆØ�‰
ˆØ�‰
ˆØ�Q‰ˆ	à07Ñ-€Eˆ5�%˜  và�Z‰Z˜	Ó"€FØ�j‰j˜Ó€GØ�j‰j˜Ó€GØ�j‰j˜Ó€GØ˜‰ Ñ'€HØ˜‰ Ñ&€HØ˜‰ Ñ&€HæÜ�ŠØ�G‰O×/ ¨¡÷ô	
ô 	�ŠØ�G‰O×/ ¨¡÷ô	
ô 	�ŠØ�G‰O×0 ¨Ñ 0÷ô	
ô 
‡L‚LØ�A‰×7˜ Q™×7¨(°a©-÷	
ñ 	
ôö Ø�‰ ¨°¸(ÀHÐMÓNÐNà�‰ ¨°(¸HÐEÓFÐFr:   c                 ó   • [        XSS9$ r  )re  r  s     r8   Úmeta_reflection_pad3drg  e  r  r:   c                 ó†   ^ • [         R                  " T R                  [         R                  :g  U 4S j5        [	        T USS9$ )Nc                  ó@   >• ST R                   R                  5        S3$ )Nz)"replication_pad3d" not implemented for 'r  r  r  s   €r8   rg   Ú(meta_replication_pad3d.<locals>.<lambda>p  r  r:   Fr  )rX   rj   r`   r  re  r  s   ` r8   Úmeta_replication_pad3drk  k  r  r:   c                 ó\  ^ ^^^^^^• [         R                  " [        U5      S:H  S 5        UR                  S::  a  [	        SUR                   35      eT R                  UR                  :w  a%  [	        ST R                   SUR                   35      eSmSmSmUR                  S	:X  a  TS-  mTS-  mTS-  mUu  p4pVpxUR                  T5      n	UR                  T5      n
UR                  T5      nX—-   U-   mX¥-   U-   mX³-   U-   m[         R                  " TT R                  T5      :H  UU U4S
 j5        [         R                  " TT R                  T5      :H  UU U4S j5        [         R                  " TT R                  T5      :H  UU U4S j5        UR                  UR                  5      $ )Né   c                  ó   • g)Nz padding size is expected to be 6r4   r4   r:   r8   rg   Ú%meta_pad3d_backward.<locals>.<lambda>  s   € Ð,Nr:   r0   zinput.ndim must be > 3, got z,grad_output.ndim must equal input.ndim, got ú != rù   r3   rX  c                  ó2   >• ST STR                  T 5       3$ r"  rª   r$  s   €€€r8   rg   ro  ›  r&  r:   c                  ó2   >• ST STR                  T 5       3$ rS  rª   rT  s   €€€r8   rg   ro  Ÿ  rU  r:   c                  ó2   >• ST STR                  T 5       3$ )Nz(grad_output depth unexpected. Expected: r#  rª   )r]  r%  rc  s   €€€r8   rg   ro  £  r&  r:   )rX   rj   rÌ   r­   r�   r«   rž   rŸ   )r%  rã   rð  r   r  r8  r7  r_  r^  rb  r;  r  r]  r6  rÿ  rc  r<  r  s   `           @@@@@@r8   Úmeta_pad3d_backwardrt  u  s�  þ€ ô 
‡L‚L”�W“ Ñ"Ñ$NÔOØ‡z�z�QƒÜÐ;¸E¿J¹J¸<ÐHÓIÐIØ×Ñ˜5Ÿ:™:Ó%ÜØ:¸;×;KÑ;KÐ:LÈDÐQV×Q[ÑQ[ÐP\Ð]ó
ð 	
ð €EØ€EØ€Eà‡z�z�QƒØ�‰
ˆØ�‰
ˆØ�‰
ˆà07Ñ-€E�% à�j‰j˜Ó€GØ�j‰j˜Ó€GØ�j‰j˜Ó€GØ‰ Ñ'€HØ‰ Ñ&€HØ‰ Ñ&€Hä	‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þeôô 
‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þfôô 
‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þeôð
 �?‰?˜5Ÿ;™;Ó'Ð'r:   Úpc                 ó@  • [         R                  " U R                  5       S 5        U R                  S5      nUS::  a-  U R	                  S/5      R                  [         R                  S9$ U R	                  X"S-
  -  S-  45      R                  [         R                  S9$ )Nc                  ó   • g)Nz(_pdist_forward requires contiguous inputr4   r4   r:   r8   rg   Ú%meta__pdist_forward.<locals>.<lambda>­  s   € Ð&Pr:   r   r3   r³   rù   )rX   rj   rq  r«   rž   r4  r%  )r    ru  r  s      r8   Úmeta__pdist_forwardry  ©  s’   € ô 
‡L‚LØ×ÑÓÑPôð 	�	‰	�!‹€AØˆAƒvØ�~‰~˜q˜cÓ"×%Ñ%´E×4RÑ4RÐ%ÐSÐSà�~‰~˜q¨¡E™{¨aÑ/Ð1Ó2×5Ñ5Ü×8Ñ8ð 6ð 
ð 	
r:   ÚgradÚpdistc                 óà   • [         R                  " UR                  5       S 5        [         R                  " UR                  5       S 5        [         R                  " U[         R                  S9$ )Nc                  ó   • g)Nz._pdist_backward requires self to be contiguousr4   r4   r:   r8   rg   Ú&meta__pdist_backward.<locals>.<lambda>¼  s   € Ð&Vr:   c                  ó   • g)Nz/_pdist_backward requires pdist to be contiguousr4   r4   r:   r8   rg   r~  ¿  s   € Ð'Xr:   r³   )rX   rj   rq  r·   r%  )rz  r    ru  r{  s       r8   Úmeta__pdist_backwardr€  ¸  sW   € ô 
‡L‚LØ×ÑÓÑVôô 
‡L‚LØ×ÑÓÑXôô ×Ò˜D´×0NÑ0NÑOÐOr:   )rc  rb  c          
      ób  ^ ^^^^^• SSK JnJn  TR                  S5      nTR                  S5      nTR                  S5      n	U" [        R
                  " U" T R                  XxU	45      5      5      (       a  T R                  XxU	45      m [        R                  " TR                  5       S:H  S 5        [        R                  " TR                  5       S:H  S 5        [        R                  (       dN  [        R                  " T R                  TR                  s=:H  =(       a    TR                  :H  Os  UUU 4S j5        TR                  n
TR                  mU
S   mU
S   m[        R                  " TS   T:H  =(       a    TS   T:H  UUU4S	 j5        T R                  T R                  5       5      $ )
Nr   )Úguard_or_trueÚsym_eqr3   rù   r0   c                  ó   • g©Nzbatch1 must be a 3D tensorr4   r4   r:   r8   rg   Úmeta_baddbmm.<locals>.<lambda>Î  ó   € Ð,Hr:   c                  ó   • g©Nzbatch2 must be a 3D tensorr4   r4   r:   r8   rg   r†  Ï  r‡  r:   c                  óV   >• STR                    ST R                    STR                    3$ )Nz+Input dtypes must be the same, got: input: z
, batch1: z
, batch2: r–   )Úbatch1Úbatch2r    s   €€€r8   rg   r†  Ó  s.   ø€ ÐAÀ$Ç*Á*ÀÈZÐX^×XdÑXdÐWeÐeoÐpv×p|Ñp|Ðo}Ñ~r:   c            	      ó.   >• ST ST ST S    ST S    S3	$ ©Nz@Expected size for first two dimensions of batch2 tensor to be: [r}   z] but got: [r   r3   ú].r4   ©Úbatch2_sizesÚbsÚcontraction_sizes   €€€r8   rg   r†  Û  s5   ø€ ðØˆt�2Ð&Ð' |°LÀ±OÐ3DÀBÀ|ÐTUÁÐFWÐWYñ[r:   )r1  r‚  rƒ  r«   rX   Úsym_notrŸ   r¡  rj   r‹   Ú
exp_configÚ&skip_dtype_check_in_meta_registrationsr`   rž   )r    r‹  rŒ  rc  rb  r‚  rƒ  Údim1Údim2Údim3Úbatch1_sizesr‘  r’  r“  s   ```        @@@r8   Úmeta_baddbmmr›  Ä  s9  ý€ ÷ Là�;‰;�q‹>€DØ�;‰;�q‹>€DØ�;‰;�q‹>€DÙ”U—]’]¡6¨$¯*©*°tÀ4Ð6HÓ#IÓJ×KÑKØ�{‰{˜D¨Ð-Ó.ˆÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ×<×<Ü�ŠØ�J‰J˜&Ÿ,™,×6Ó6¨&¯,©,Ô6Þ~ô	
ð —<‘<€LØ—<‘<€LØ	�a‰€BØ# A‘ÐÜ	‡L‚LØ�Q‰˜2Ñ×E ,¨q¡/Ð5EÑ"Eö	
ôð �>‰>˜$Ÿ)™)›+Ó&Ð&r:   c                óH   • [         R                  " U [         R                  S9$ rÃ   rz  ©r    r  s     r8   Úmeta_bernoullirž  ã  s   € ô ×Ò˜D´×0GÑ0GÑHÐHr:   c                 ó   • U $ rD   r4   ©r    ru  r  s      r8   Úmeta_bernoulli_r¡  ê  ó   € à€Kr:   c                 óH   • [         R                  " U [         R                  S9$ rÃ   rz  r   s      r8   Úmeta_bernoulli_pr¤  ï  s   € ô ×Ò˜D´×0GÑ0GÑHÐHr:   c                 ó.   • [         R                  " U 5      $ rD   rG  r�  s     r8   Úmeta_poissonr¦  õ  ó   € ô ×Ò˜DÓ!Ð!r:   c                 óÈ   • [         R                  " X R                  5       :  S 5        [         R                  " U [         R                  S9n[         R                  " U 5      U4$ )Nc                  ó   • g)NzJError in fused_moving_avg_obs_fake_quant_cpu: ch_axis must be < self.dim()r4   r4   r:   r8   rg   Ú6meta__fused_moving_avg_obs_fq_helper.<locals>.<lambda>	  ó   € Ð\r:   r–   )rX   rj   r‹   r·   r  )r    Úobserver_onÚfake_quant_onÚrunning_minÚrunning_maxÚscaleÚ
zero_pointÚaveraging_constÚ	quant_minÚ	quant_maxÚch_axisÚper_row_fake_quantÚsymmetric_quantÚmasks                 r8   Ú$meta__fused_moving_avg_obs_fq_helperr¹  û  sM   € ô  
‡L‚LØ—(‘(“*ÑÙ\ôô ×Ò˜D¬¯
©
Ñ3€DÜ×Ò˜TÓ" DÐ)Ð)r:   c                 ó\  ^^^^• [         R                  " U R                  5       S:H  S 5        [         R                  " UR                  5       S:H  S 5        U R                  u  mmUR                  u  mm[         R                  " TT:H  UUUU4S j5        Ubr  [         R                  " X R                  :H  =(       dG    U[         R
                  :H  =(       a-    U R                  [         R                  [         R                  4;   S 5        Uc  U R                  OUnU R                  TT4US9$ )Nrù   c                  ó   • g)Nza must be 2Dr4   r4   r:   r8   rg   Úmeta_mm.<locals>.<lambda>	  ó   €  ~r:   c                  ó   • g)Nzb must be 2Dr4   r4   r:   r8   rg   r¼  	  r½  r:   c            	      ó"   >• ST ST  ST ST S3	$ )Nz/a and b must have same reduction dim, but got [r}   z] X [r�  r4   )ÚM1ÚM2ÚNr\  s   €€€€r8   rg   r¼  	  s&   ø€ ÐAÀ!ÀÀBÀrÀdÈ%ÐPRÈtÐSUÐVWÐUXÐXZÑ[r:   c                  ó   • g)NzFout_dtype must be the same as input dtype or fp32 for fp16/bf16 inputsr4   r4   r:   r8   rg   r¼  %	  s   € Ð\r:   r–   )	rX   rj   r‹   rŸ   r`   rm  rn  ro  rž   )r6   r7   rJ  rU   rÀ  rÁ  rÂ  r\  s       @@@@r8   Úmeta_mmrÄ  	  sà   û€ ô 
‡L‚L�—‘“˜A‘Ñ5Ô6Ü	‡L‚L�—‘“˜A‘Ñ5Ô6Ø�G‰G�E€A€rØ�G‰G�E€BˆÜ	‡L‚LØ
ˆb‰ß[ôð ÑÜ�ŠØŸ™Ñ ÷ àœUŸ]™]Ñ*÷ ?Ø—G‘G¤§¡¬u¯~©~Ð>Ñ>á\ô	
ð (Ñ/�1—7’7°Y€LØ�;‰;˜˜1�v \ˆ;Ð2Ð2r:   c                 ó¨   ^ ^• U(       a)  [        UU 4S j[        T R                  5       5       5      $ [        R                  " T R
                  T5      $ )Nc              3   óP   >#   • U  H  oT;  a  TR                   U   OS v •  M     g7f)r3   NrR  )rv   rç   Údimsr    s     €€r8   rx   Ú+_compute_reduction_shape.<locals>.<genexpr>-	  s$   øé € ÐUÒDT¸q¨t£m�T—Z‘Z ’]¸Ô:ÒDTùs   ƒ#&)ri   rÎ   r­   rQ   Úcompute_reduction_output_shaperŸ   )r    rÇ  rœ  s   `` r8   rš  rš  +	  s7   ù€ ÞÜÕUÄEÈ$Ï)É)ÔDTÓUÓUÐUä×/Ò/°·
±
¸DÓAÐAr:   c                 ó:  • [        U [        R                  R                  5      (       a  U R                  R
                  $ [        U S5      (       aK  [        U R                  S5      (       a0  U R                  R
                  S:w  a  U R                  R
                  $ g)Nrˆ   r   r…   rý   )rt   rX   Ú_subclassesÚ
FakeTensorÚfake_devicer   Úhasattrrˆ   )r=  s    r8   r  r  6	  sp   € Ü�&œ%×+Ñ+×6Ñ6×7Ñ7Ø×!Ñ!×&Ñ&Ð&ä�˜×!Ñ!Ü�F—M‘M 6×*Ñ*Ø�M‰M×Ñ &Ó(à�}‰}×!Ñ!Ð!àr:   Úinput_tensorrÐ   rð  ÚdilationÚis_transposedÚgroupsÚoutput_paddingc                 óB  ^^• S[         S[         S[         S[         S[         S[         4S jnS[         S[         S[         S[         S[         S[         S[         4S	 jn	UR                  S
S  n
U R                  S
S  mU(       a  XaR                  S   -  nO=UR                  S   nUR                  S   U-  U R                  S   :w  a  [        S5      eU R                  S   U/m[        U[        5      (       a  U/[        T5      -  nO![        U5      S:X  a  US   /[        T5      -  n[        U[        5      (       a  U/[        T5      -  nO![        U5      S:X  a  US   /[        T5      -  n[        U[        5      (       a  U/[        T5      -  nO![        U5      S:X  a  US   /[        T5      -  nS nU(       aI  [        U[        5      (       a  U/[        T5      -  nO$[        U5      S:X  a  US   /[        T5      -  nOUn[        [        T5      5       H[  nU(       a+  TR                  U	" TU   X=   XM   X­   X-   XÍ   5      5        M5  TR                  U" TU   X=   XM   X­   X-   5      5        M]     SSKJ	n  SSK
Jn  [        X5      (       a  U R                  OU R                  nUR                  S:H  =(       a    [        R                   R"                  S L nU(       d6  [        R$                  " U" TS
S   Vs/ s H  nUS:„  PM
     sn6 UU4S j5        T$ s  snf )NÚlnru  rÞ   rb  rµ  r@   c                 ó4   • U SU-  -   X#S-
  -  -
  S-
  U-  S-   $ )aE  
Formula to apply to calculate the length of some dimension of the output

See: https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html

Args:
    ln: length of the dimension
    p: padding in that dim
    d: dilation in that dim
    k: kernel size in that dim
    s: stride in that dim
Returns:
    The output length
rù   r3   r4   )rÕ  ru  rÞ   rb  rµ  s        r8   Ú_formulaÚ+calc_conv_nd_return_shape.<locals>._formulaM	  s,   € ð �Q˜‘U‘
˜Q a¡%™[Ñ(¨1Ñ,°Ñ2°QÑ6Ð6r:   rE   c                 ó:   • U S-
  U-  SU-  -
  X#S-
  -  -   U-   S-   $ )a”  
Formula to apply to calculate the length of some dimension of the output
if transposed convolution is used.
See: https://pytorch.org/docs/stable/generated/torch.nn.ConvTranspose2d.html

Args:
    ln: length of the dimension
    p: padding in that dim
    d: dilation in that dim
    k: kernel size in that dim
    s: stride in that dim
    op: output padding in that dim

Returns:
    The output length
r3   rù   r4   )rÕ  ru  rÞ   rb  rµ  rE   s         r8   Ú_formula_transposedÚ6calc_conv_nd_return_shape.<locals>._formula_transposed^	  s0   € ð" �Q‘˜!‰|˜a !™eÑ# a¨q©5¡kÑ1°BÑ6¸Ñ:Ð:r:   rù   r3   r   zInvalid channel dimensions)rÌ  )Úsym_orrý   c                  ó.   >• S[        T 5       STSS   S3$ )NzGiven input size per channel: z&. Calculated output size per channel: rù   z. Output size is too small)rÍ   )rÇ  Ú	ret_shapes   €€r8   rg   Ú+calc_conv_nd_return_shape.<locals>.<lambda>À	  s*   ø€ Ð4´T¸$³Z°Lð A3Ø3<¸Q¸R°=°/ð B'ñ(r:   )rï   rŸ   r3  rt   r   rÌ   rÎ   rÏ   Útorch._subclasses.fake_tensorrÌ  r1  rÜ  rÍ  rˆ   r   rX   ÚversionÚhiprj   )rÏ  rF  rÐ   rð  rÐ  rÑ  rÒ  rÓ  r×  rÚ  Úkernel_sizeÚout_channelsÚoutput_padding_listrç   rÌ  rÜ  rˆ   Úis_cudnnr=   rÇ  rÞ  s                      @@r8   Úcalc_conv_nd_return_shaperç  C	  s  ù€ ð7”Sð 7œSð 7¤Sð 7¬Sð 7´Sð 7¼Sô 7ð";¤ð ;¬ð ;´ð ;¼ð ;Äð ;Ìð ;ÔQTô ;ð& —,‘,˜q˜rÐ"€KØ×Ñ˜a˜bÐ!€DÞØ§¡¨Q¡Ñ/‰à—|‘| A‘ˆØ�<‰<˜‰?˜VÑ# |×'9Ñ'9¸!Ñ'<Ó<ÜÐ;Ó<Ð<à×#Ñ# AÑ&¨Ð5€IÜ�&œ'×"Ñ"à�œC ›IÑ%‰Ü	ˆV‹˜Ó	Ø˜‘)�œs 4›yÑ(ˆä�'œ7×#Ñ#à�)œc $›iÑ'‰Ü	ˆW‹˜Ó	Ø˜1‘:�,¤ T£Ñ*ˆä�(œG×$Ñ$à�:¤ D£	Ñ)‰Ü	ˆX‹˜!Ó	Ø˜Q‘K�=¤3 t£9Ñ,ˆà,0ÐÞÜ�n¤g×.Ñ.à#1Ð"2´S¸³YÑ">ÑÜ�Ó  AÓ%Ø#1°!Ñ#4Ð"5¼¸D»	Ñ"AÑà"0Ðä”3�t“9ÖˆæØ×ÑÙ#Ø˜‘Gà‘Jð ‘KØ‘Nà‘IØ'Ñ*óöð ×Ñá˜˜a™ '¡*¨h©k¸;¹>È6É9ÓUöñ% õ6 9Ý<ô �l×/Ñ/ð 	× Ò à× Ñ ð ð �{‰{˜fÑ$×B¬¯©×):Ñ):¸dÐ)B€HÞÜ�ŠÙ I¨a¨b¡MÓ2¢M˜q�Q˜”U¡MÑ2Ð3õ(ô	
ð Ðùò 3s   Ë=Lc                 ób   • [         R                  R                  U 5      [         R                  :H  $ rD   ©rX   Ú_prims_commonr   Úchannels_last©Útens    r8   Úis_channels_lastrî  È	  s$   € Ü×Ñ×4Ñ4°SÓ9¼U×=PÑ=PÑPÐPr:   Úrunning_meanÚrunning_varÚtrainingÚexponential_average_factorÚepsilonc                 óz  ^ • T R                   nUb  UR                   OUR                   n	Ub  UR                   OUR                   n
U 4S jnT R                  U5      R                  U" 5       S9nU(       a#  T R                  U	5      nT R                  U
5      nO"T R                  S5      nT R                  S5      nXÍU4$ )Nc                  óÈ   >• [        T 5      (       a  [        R                  $ T R                  [        R                  S9(       a  [        R                  $ [        R                  $ rÃ   )rî  rX   rë  rq  r¸   )rÏ  s   €r8   Úpick_memory_formatÚ2meta_miopen_batch_norm.<locals>.pick_memory_formatß	  sI   ø€ Ü˜L×)Ñ)Ü×&Ñ&Ð&Ø×%Ñ%´E×4KÑ4KÐ%ÖLÜ×*Ñ*Ð*Ü×&Ñ&Ð&r:   r³   ©r   )rŸ   rž   r4  )rÏ  rF  rH  rï  rð  rñ  rò  ró  r°   Úsave_mean_shapeÚsave_var_shaperö  r×   Ú	save_meanÚsave_vars   `              r8   Úmeta_miopen_batch_normrý  Ì	  sµ   ø€ ð ×"Ñ"€Ið -9Ñ,D�l×(Ò(È&Ï,É,€OØ*5Ñ*A�[×&Ò&ÀvÇ|Á|€Nõ'ð ×
 Ñ
  Ó
+×
.Ñ
.Ñ=OÓ=QÐ
.Ð
R€CæØ ×*Ñ*¨?Ó;ˆ	Ø×)Ñ)¨.Ó9‰à ×*Ñ*¨4Ó0ˆ	Ø×)Ñ)¨$Ó/ˆà˜8Ð#Ð#r:   c	           
      ó˜   • [        U UUUUUUU(       a  UOS 5      n	Sn
SnU R                  U
5      S:X  a  SX›'   U R                  U	5      nU$ ©Nr3   r   )rç  r«   rž   )rÏ  rF  rH  rÐ   rð  rÐ  rÑ  rÓ  rÒ  Ú	shape_outÚinput_channels_dimÚoutput_channels_dimr×   s                r8   Ú	meta_convr  ò	  si   € ô *ØØØØØØØÞ'‰¨Tó	€Ið ÐØÐØ×ÑÐ+Ó,°Ó1Ø)*ˆ	Ñ&à
×
 Ñ
  Ó
+€CØ€Jr:   Úmkldnnc
           
      óÎ   • [        XXCUSU/ 5      n
U R                  U
5      n[        R                  nU R	                  5       S:X  a  [        R
                  nUR                  US9nU$ )NFrX  r³   )rç  rž   rX   rë  r‹   Úchannels_last_3dr4  )rÏ  rF  rH  rð  rÐ   rÐ  rÒ  ÚattrÚscalarsÚ	algorithmr   r×   Úout_memory_formats                r8   Úmeta_mkldnn_convolution_defaultr  
  sl   € ô .Ø &°8¸UÀFÈBó
ˆ	ð ×$Ñ$ YÓ/ˆÜ!×/Ñ/ÐØ×ÑÓ Ó"Ü %× 6Ñ 6ÐØ�f‰fÐ#4ˆfÐ5ˆØˆ
r:   c                 ób   • U R                  / U R                  S S QUR                  S   P75      $ ©Nr¢   r   ©rž   rŸ   )rÏ  rF  rH  r  r  r	  s         r8   Úmeta_linear_pointwise_defaultr  .
  s5   € ð ×%Ñ%Ð&Q¨×(:Ñ(:¸3¸BÐ(?Ð&QÀÇÁÈaÁÑ&QÓRÐRr:   Úmklc                 ób   • U R                  / U R                  S S QUR                  S   P75      $ r  r  )rÏ  Úpacked_weightÚorig_weightrH  rå   s        r8   Úmeta_mkl_linearr  9
  s:   € à×)Ñ)Ø@�,×$Ñ$ S bÐ)Ð@¨;×+<Ñ+<¸QÑ+?Ñ@óð r:   Úonednnc           
      ó
  • [        U UUUU	SU
S 5      nUc  U R                  nU[        R                  [        R                  [        R
                  [        R                  [        R                  4;  a  [        SU 35      eU R                  UUS9n[        U5      S;  a  [        S[        U5       S35      e[        R                  [        R                  [        R                  S.[        U5         nUR                  US9nU$ )NFúOoutput_dtype must be one of float32, bfloat16, uint8, int8, float8_e4m3fn, got r–   )r0   r0  rX  z3Expect output to be 3d/4d/5d for conv1d/2d/3d, got rÞ   r³   )rç  r`   rX   rm  ro  Úuint8rO  rp  r�   rž   rÌ   r¸   rë  r  r4  )r=   Úx_scaleÚx_zpÚwÚw_scaleÚw_zprH  rÐ   rð  rÐ  rÒ  Úoutput_scaleÚoutput_zero_pointÚoutput_dtyper  r  r	  r   r×   Úformats                       r8   Úmeta_qconv_pointwiser"  C
  s  € ô, .ØØØØØØØØó	
ˆ	ð ÑØŸ7™7ˆLØÜ�M‰MÜ�N‰NÜ�K‰KÜ�J‰JÜ×Ñð 
ó 
ô !ØaÐbnÐaoÐpóð ð �k‰k˜)¨<ˆkÐ8ˆÜˆy‹> Ó*Ü ØEÄcÈ)ÃnÐEUÐUVÐWóð ô ×&Ñ&Ü×"Ñ"Ü×%Ñ%ñ
ô ˆi‹.ñ	ˆð
 �f‰f 6ˆfÐ*ˆØˆ
r:   c                 ó0   • US:w  a  [        SU S35      eU$ )NÚsumz#binary_op_name must be 'sum', got 'r  ©r�   )r=   r  r  r  r  r  ÚaccumrH  rÐ   rð  rÐ  rÒ  r  r  r   Úaccum_scaleÚaccum_zero_pointÚbinary_op_namerb  Úunary_op_nameÚunary_op_argsÚunary_op_algorithms                         r8   Úmeta_qconv2d_pointwise_binaryr-  |
  s-   € ð4 ˜UÓ"Ü Ø5°nÐ5EÀQÐGóð ð ˆr:   c                 ó0  • [        U R                  5      nUR                  S   US'   U	[        R                  [        R                  [        R
                  [        R                  [        R                  4;  a  [        SU	 35      eU R                  XÙS9nU$ )Nr3   r¢   zOoutput_dtype must be one of float32, bfloat16, int8, uint8, float8_e4m3fn, got r–   )
rÍ   rŸ   rX   rm  ro  rO  r  rp  r�   rž   )r=   r  r  r  r  r  rH  r  r  r   Úpost_op_nameÚpost_op_argsÚpost_op_algorithmrt  r×   s                  r8   Úmeta_qlinear_pointwiser2  œ
  s‡   € ô" ˜AŸG™G“}ˆàŸ7™7 1™:ˆ�RÑØÜ�M‰MÜ�N‰NÜ�J‰JÜ�K‰KÜ×Ñð 
ó 
ô !ØaÐbnÐaoÐpóð ð �k‰k˜,ˆkÐ;ˆØˆ
r:   c                 óB  • US:X  a  U$ [        U R                  5      nUR                  S   US'   U
[        R                  [        R                  [        R
                  [        R                  [        R                  4;  a  [        SU
 35      eU R                  UU
S9nU$ )Nr$  r3   r¢   r  r–   )
rÍ   rŸ   rX   rm  ro  r  rO  rp  r�   rž   )r=   r  r  r  r  r  Úx_2rH  r  r  r   Úx2_scaleÚx2_zpr)  rb  r*  r+  r,  rt  r×   s                       r8   Úmeta_qlinear_pointwise_binaryr7  ½
  s–   € ð, ˜UÓ"ØˆJÜ˜AŸG™G“}ˆàŸ7™7 1™:ˆ�RÑØÜ�M‰MÜ�N‰NÜ�K‰KÜ�J‰JÜ×Ñð 
ó 
ô !ØaÐbnÐaoÐpóð ð �k‰k˜,¨lˆkÐ;ˆØˆ
r:   c                 óv   • [        U R                  5      nUR                  S   US'   U R                  U5      nU$ )Nr3   r¢   )rÍ   rŸ   rž   )r=   r  rH  rt  r×   s        r8   Úmeta_linear_dynamic_fp16r9  å
  s6   € ô ˜AŸG™G“}ˆàŸ7™7 1™:ˆ�RÑØ�k‰k˜,Ó'ˆØˆ
r:   Ú	quantizedrø  ©r3   c                 ó"  • [        XX#XE5      u  nnnU R                  5       S:X  a  U R                  S5      OSn	[        R                  n
U R                  5       S:X  a  XgU/nOX–Xx/n[        R
                  " UU R                  U R                  U
S9$ ©Nr0  éüÿÿÿr3   r0   r‹  )Ú#max_pool2d_checks_and_compute_shaper‹   r«   rX   rë  r‘   r`   rˆ   ©rã   rã  rÐ   rð  rÐ  Ú	ceil_modeÚnInputPlaneÚoutputHeightÚoutputWidthr	  r´   r«   s               r8   Úmeta_quantized_max_pool2drE  ö
  s‘   € ô 0Ø °ó
ñ		
ØØØð $)§9¡9£;°!Ó#3�—‘˜B”¸ˆÜ×+Ñ+ˆØ�9‰9‹;˜!ÓØ¨{Ð;‰Dà¨ÐCˆDÜ�{Š{ØØ—+‘+Ø—<‘<Ø'ñ	
ð 	
r:   c                 ó  ^ ^^^• [         R                  " T R                  5       S:H  U 4S j5        [         R                  " TR                  5       S:H  U4S j5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  [         R                  :H  U4S j5        [         R                  " TR                  [         R                  :H  U4S j5        [         R                  " TR                  T R                  :H  U4S j5        T R                  T R                  S5      TR                  S5      T R                  S	9$ )
Nrù   c                  ó,   >• ST R                  5        S3$ )Nzx must be a 2D tensor, got rZ  r£   ©r=   s   €r8   rg   Ú/meta_int4mm_packed_weight_cpu.<locals>.<lambda>  ó   ø€ Ð-HÈÏÉËÈ	ÐQRÑ+Sr:   c                  ó,   >• ST R                  5        S3$ )Nzw must be a 2D tensor, got rZ  r£   ©r  s   €r8   rg   rI    rJ  r:   c                  ó"   >• ST R                    3$ ©Nz#expected x to be f32/f16/bf16, got r–   rH  s   €r8   rg   rI    s   ø€ Ð9¸!¿'¹'¸ÑCr:   c                  ó"   >• ST R                    3$ ©Nzexpected w to be uint8, got r–   rL  s   €r8   rg   rI    s   ø€ Ð.JÈ1Ï7É7È)Ñ,Tr:   c                  ó"   >• ST R                    3$ )Nz q_group_size must be int64, got r–   )Úq_group_sizes   €r8   rg   rI     s   ø€ Ð6°|×7IÑ7IÐ6JÑKr:   c                  ó"   >• ST R                    3$ )Nz5q_scale_and_zeros must have the same dtype as x, got r–   )Úq_scale_and_zeross   €r8   rg   rI  $  s   ø€ ÐKÐL]×LcÑLcÐKdÑer:   r   r–   )rX   rj   r‹   r`   rm  rn  ro  r  r¿   rž   r«   ©r=   r  rR  rT  s   ````r8   Úmeta_int4mm_packed_weight_cpurV    sõ   û€ ä�Š�Q—U‘U“W ‘\Ô#SÔTÜ�Š�Q—U‘U“W ‘\Ô#SÔTÜ�ŠØ�G‰GœŸ™¤u§}¡}´e·n±nÐEÑEÜCô	
ô 	�ŠØ�G‰G”u—{‘{Ñ"Ô$Tô	
ô 	�ŠØ×Ñ¤%§+¡+Ñ-ÜKô	
ô 	�ŠØ×#Ñ# q§w¡wÑ.Üeô	
ð �{‰{˜1Ÿ6™6 !›9 a§f¡f¨Q£i°q·w±wˆ{Ð?Ð?r:   c                 óœ   ^ ^^^• [         R                  " T R                  5       T:H  =(       a    T R                  T   T:H  UUUU 4S j5        g )Nc                  ój   >• ST  ST ST S3STR                  5        ST STR                  T    3-   $ )NzExpected a tensor of dimension z and tensor.size[z] == r}   zbut got : dimension z] = ©r‹   rŸ   )r‹   Údim_sizer«   r=  s   €€€€r8   rg   Ú check_dim_size.<locals>.<lambda>-  sN   ø€ Ð1°#°Ð6GÈÀzÐQVÐW[ÐV\Ð\^Ð_Ø  §¡£ Ð.?À¸zÈÈfÏlÉlÐ[cÑNdÐMeÐ
fògr:   )rX   rj   r‹   rŸ   )r=  r‹   rZ  r«   s   ````r8   Úcheck_dim_sizer\  *  s6   û€ Ü	‡L‚LØ�
‰
‹˜Ñ×> §¡¨XÑ 6¸$Ñ >÷	gõr:   c                 óà  ^ • S nU" SU5      u  p‰[         R                  " [        U5      S;   S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  [         R                  4;  U 4S j5        [        U5      S:X  a  X‰pºO$[        U5      S:X  a
  US   US   pºOU" SU5      u  p«U" S	U5      u  pÍ[         R                  " US L =(       d    US:g  S
 5        T R                  5       S:X  a  T R                  S5      OSnT R                  S5      nT R                  S5      nT R                  S5      n[        UXŒU
SU5      n[        UX�USU5      n[        R                  " T 5      n[        T UU	U
UUUSSUUUUUU5        T R                  5       S:X  a  UUU/nOXïUU/n[         R                  " UT R                  T R                  US9$ )Nc                 óŽ   ^ • [         R                  " [        U5      S;   U 4S j5        US   n[        U5      S:X  a  UOUS   nX#4$ )N©r3   rù   c                  ó   >• ST  S3$ )Nzavg_pool2d: ú4 must either be a single int, or a tuple of two intsr4   ©rÖ  s   €r8   rg   Ú1meta_avg_pool2d.<locals>.unpack.<locals>.<lambda>?  ó   ø€ �l 4 &Ð(\Ñ]r:   r   r3   ©rX   rj   rÌ   ©rÖ  r®  ÚHÚWs   `   r8   ÚunpackÚmeta_avg_pool2d.<locals>.unpack<  óE   ø€ Ü�ŠÜ�‹H˜ÑÜ]ô	
ð �‰FˆÜ�S“˜Q“‰A C¨¡FˆØˆtˆr:   rã  ©r   r3   rù   c                  ó   • g©NzOavg_pool2d: stride must either be omitted, a single int, or a tuple of two intsr4   r4   r:   r8   rg   Ú!meta_avg_pool2d.<locals>.<lambda>H  ó   € Ðar:   c                  ó@   >• ST R                   R                  5        S3$ )Nz""avg_pool2d" not implemented for 'r  r  r  s   €r8   rg   ro  L  ó   ø€ Ð6°u·{±{×7JÑ7JÓ7LÐ6MÈQÑQr:   r   r3   rÐ   rð  c                  ó   • g©Nzdivisor must be not zeror4   r4   r:   r8   rg   ro  Y  ó   € Ð*r:   r0  r>  éýÿÿÿrÐ  r¢   r0   r‹  )rX   rj   rÌ   r`   r  Úuint16Úuint32Úuint64r‹   r«   Úpooling_output_shaperQ   r   Úpool2d_shape_checkr‘   rˆ   )rã   rã  rÐ   rð  rA  Úcount_include_padÚdivisor_overrideri  ÚkHÚkWÚdHÚdWÚpadHÚpadWr	  rB  ÚinputHeightÚ
inputWidthrC  rD  r´   r«   s   `                     r8   Úmeta_avg_pool2dr†  2  sÐ  ø€ òñ �M ;Ó/�F€BÜ	‡L‚LÜˆF‹�yÑ Ùaôô 
‡L‚LØ�‰œEŸK™K¬¯©´u·|±|ÄUÇ\Á\ÐRÑRÜQôô ˆ6ƒ{�aÓØ‰BÜ	ˆV‹˜Ó	Ø˜‘˜F 1™I‰Bá˜ &Ó)‰ˆá˜	 7Ó+�J€Dä	‡L‚LØ˜DÐ ×9Ð$4¸Ñ$9Ù*ôð
  %Ÿy™y›{¨aÓ/ˆU�Z‰Z˜Œ^°Q€FØ—*‘*˜R“.€KØ—*‘*˜R“.€KØ—‘˜B“€Jä'¨°R¸rÀ1ÀiÓP€LÜ& z°2¸RÀÀIÓN€Kä×/Ò/°Ó6€MÜØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØôð$ ‡y�yƒ{�aÓØ˜\¨;Ð7‰à \°;Ð?ˆÜ�;Š;ØØ�k‰kØ�|‰|Ø#ñ	ð r:   c                 óº   • [        U UUUUUUSSU	U
UUUU5        U R                  5       nU	n[        XUS-
  U5        [        XUS-
  U5        [        XUS-
  U5        g )Nr3   r0   rù   )r{  r‹   r\  )rã   Ú
gradOutputr	  r~  r  r€  r�  r‚  rƒ  rB  r„  r…  rC  rD  Ú
mem_formatr­   ÚnOutputPlanes                    r8   Úavg_pool2d_backward_shape_checkr‹  „  s{   € ô" ØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØôð$ �9‰9‹;€DØ€Lä�: T¨A¡X¨|Ô<Ü�: T¨A¡X¨|Ô<Ü�: T¨A¡X¨{Õ;r:   c                 ó  • [         R                  " [        U5      S:H  =(       d    [        U5      S:H  S 5        US   n[        U5      S:X  a  UOUS   n	[         R                  " [        U5      S:H  =(       d#    [        U5      S:H  =(       d    [        U5      S:H  S 5        [        U5      S:X  a  UOUS   n
[        U5      S:X  a  U	O[        U5      S:X  a  U
OUS   n[         R                  " [        U5      S:H  =(       d    [        U5      S:H  S 5        US   n[        U5      S:X  a  UOUS   n[         R                  " US L =(       d    US:g  S 5        UR                  nUR	                  5       S:X  a  US	   OSnUS
   nUS   nUS   n[        UXŒU
SU5      n[        UX�USU5      n[        R                  " U5      n[        UU UUU	U
UUUUUUUUU5        [         R                  " UUR                  UR                  US9$ )Nr3   rù   c                  ó   • g)NzKavg_pool2d: kernel_size must either be a single int, or a tuple of two intsr4   r4   r:   r8   rg   Ú*meta_avg_pool2d_backward.<locals>.<lambda>¾  s   € Ð]r:   r   c                  ó   • grn  r4   r4   r:   r8   rg   rŽ  Ä  rp  r:   c                  ó   • g)NzGavg_pool2d: padding must either be a single int, or a tuple of two intsr4   r4   r:   r8   rg   rŽ  Ê  s   € ÐYr:   c                  ó   • grt  r4   r4   r:   r8   rg   rŽ  Ñ  ru  r:   r0  r>  rv  rÐ  r¢   r‹  )rX   rj   rÌ   rŸ   r‹   rz  rQ   r   r‹  r‘   r`   rˆ   )ÚgradOutput_rã   rã  rÐ   rð  rA  r|  r}  r~  r  r€  r�  r‚  rƒ  Ú
input_sizer	  rB  r„  r…  rC  rD  r‰  s                         r8   Úmeta_avg_pool2d_backwardr”  °  sý  € ô 
‡L‚LÜˆKÓ˜AÑ×6¤ [Ó!1°QÑ!6Ù]ôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ	‡L‚LÜˆF‹�qÑ×@œC ›K¨1Ñ,×@´°F³¸qÑ0@Ùaôô �6‹{˜aÓ‰ V¨A¡Y€BÜ�6‹{˜aÓ‰¬3¨v«;¸!Ó+;¡RÀÈÁ€BÜ	‡L‚LÜˆG‹˜Ñ×.œS ›\¨QÑ.ÙYôð �1‰:€DÜ�w“< 1Ó$‰4¨'°!©*€Dä	‡L‚LØ˜DÐ ×9Ð$4¸Ñ$9Ù*ôð
 —‘€JØ$Ÿy™y›{¨aÓ/ˆZ˜Š^°Q€FØ˜R‘.€KØ˜R‘.€KØ˜B‘€Jä'¨°R¸rÀ1ÀiÓP€LÜ& z°2¸RÀÀIÓN€Kä×,Ò,¨UÓ3€Jä#ØØØØ
Ø
Ø
Ø
ØØØØØØØØôô$ �;Š;ØØ�k‰kØ�|‰|Ø ñ	ð r:   c                 ón  ^ • [         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n	[         R                  " U(       + =(       d    [        U5      S;   S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  [         R                  4;  U 4S j5        U(       d  UOUS   n
U(       d  UO[        U5      S:X  a  U
OUS   nU(       d  U	O[        U5      S:X  a  U
OUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " T R                  S	;   S
 5        [         R                  " U(       + =(       d    US:g  S 5        T R                  S5      nT R                  S5      nT R                  S5      nT R                  S5      nT R                  S5      n[        UX}U
SU5      n[        UXŽUSU5      n[        UXŸUSU5      n[        T UUUU	U
UUUUUSSSUUUUUUSSS9  T R                  S:X  a  T R                  UUUU45      $ T R                  UUUUU45      $ )N©r3   r0   c                  ó   • g©NzFavg_pool3d: kernel_size must be a single int, or a tuple of three intsr4   r4   r:   r8   rg   Ú!meta_avg_pool3d.<locals>.<lambda>  ó   € ÐXr:   r   r3   rù   c                  ó   • g©NzJavg_pool3d: stride must be omitted, a single int, or a tuple of three intsr4   r4   r:   r8   rg   r™    r«  r:   c                  ó@   >• ST R                   R                  5        S3$ )Nz""avg_pool3d" not implemented for 'r  r  r  s   €r8   rg   r™    rr  r:   c                  ó   • g©NzBavg_pool3d: padding must be a single int, or a tuple of three intsr4   r4   r:   r8   rg   r™    ó   € ÐTr:   ©r0  rX  c                  ó   • g©Nz9non-empty 4D or 5D (batch mode) tensor expected for inputr4   r4   r:   r8   rg   r™  "  ó   € ÐKr:   c                  ó   • grt  r4   r4   r:   r8   rg   r™  '  ru  r:   r>  rv  rÐ  r¢   zavg_pool3d()T)Úcheck_input_sizer0  )rX   rj   rÌ   r`   r  rw  rx  ry  r­   r«   rz  Úpool3d_shape_checkrž   )rã   rã  rÐ   rð  rA  r|  r}  ÚkTr~  r  ÚdTr€  r�  ÚpadTr‚  rƒ  r	  ÚnslicesÚitimeÚiheightÚiwidthÚotimeÚoheightÚowidths   `                       r8   Úmeta_avg_pool3dr²  ù  s†  ø€ ô 
‡L‚LÜˆKÓ˜FÑ"ÙXôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ�;Ó 1Ó$‰¨+°a©.€Bä	‡L‚LØŒ
×+”c˜&“k VÑ+Ù\ôô 
‡L‚LØ�‰œEŸK™K¬¯©´u·|±|ÄUÇ\Á\ÐRÑRÜQôö ‰˜v a™y€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€Bä	‡L‚LÜˆG‹˜ÑÙTôð �1‰:€DÜ�w“< 1Ó$‰4¨'°!©*€DÜ�w“< 1Ó$‰4¨'°!©*€Dä	‡L‚LØ�
‰
�fÑÙKôô
 
‡L‚LØÔ×5Ð 0°AÑ 5Ù*ôð
 �Z‰Z˜‹]€FØ�j‰j˜‹n€GØ�J‰J�r‹N€EØ�j‰j˜‹n€GØ�Z‰Z˜‹^€Fä  ¨°"°a¸ÓC€EÜ" 7¨B°b¸!¸YÓG€GÜ! &¨"°B¸¸9ÓE€FäØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØ	Ø	Ø	ØØØØØØØØò-ð2 ‡z�z�QƒØ�‰ ¨°¸Ð@ÓAÐAà�‰ ¨°¸ÀÐHÓIÐIr:   c                 óB  • [         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n	[        U5      S:X  a  UOUS   n
[         R                  " U(       + =(       d    [        U5      S;   S 5        U(       d  UOUS   nU(       d  U	O[        U5      S:X  a  UOUS   nU(       d  U
O[        U5      S:X  a  UOUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " UR                  S;   S	 5        [         R                  " U(       + =(       d    US:g  S
 5        UR	                  S5      nUR	                  S5      nUR	                  S5      nUR	                  S5      n[        UXŽUSU5      n[        UXŸUSU5      n[        UU
UUSU5      n[        UU UUU	U
UUUUUUUUUUUUS5        UR                  UR                  5      $ )Nr–  c                  ó   • gr˜  r4   r4   r:   r8   rg   Ú*meta_avg_pool3d_backward.<locals>.<lambda>a  rš  r:   r   r3   rù   c                  ó   • grœ  r4   r4   r:   r8   rg   rµ  i  r«  r:   c                  ó   • grŸ  r4   r4   r:   r8   rg   rµ  q  r   r:   r¡  c                  ó   • gr£  r4   r4   r:   r8   rg   rµ  y  r¤  r:   c                  ó   • grt  r4   r4   r:   r8   rg   rµ  ~  ru  r:   r>  rv  rÐ  r¢   zavg_pool3d_backward())	rX   rj   rÌ   r­   r«   rz  Úavg_pool3d_backward_shape_checkrž   rŸ   )r%  rã   rã  rÐ   rð  rA  r|  r}  r¨  r~  r  r©  r€  r�  rª  r‚  rƒ  r«  r¬  r­  r®  Úotime_for_shape_checkÚoheight_for_shape_checkÚowidth_for_shape_checks                           r8   Úmeta_avg_pool3d_backwardr¾  S  s  € ô 
‡L‚LÜˆKÓ˜FÑ"ÙXôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ�;Ó 1Ó$‰¨+°a©.€Bä	‡L‚LØŒ
×+”c˜&“k VÑ+Ù\ôö ‰˜v a™y€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€Bä	‡L‚LÜˆG‹˜ÑÙTôð �1‰:€DÜ�w“< 1Ó$‰4¨'°!©*€DÜ�w“< 1Ó$‰4¨'°!©*€Dä	‡L‚LØ�
‰
�fÑÙKôô
 
‡L‚LØÔ×5Ð 0°AÑ 5Ù*ôð
 �j‰j˜‹n€GØ�J‰J�r‹N€EØ�j‰j˜‹n€GØ�Z‰Z˜‹^€Fä0°¸À"ÀaÈÓSÐÜ2°7¸BÀbÈ!ÈYÓWÐÜ1°&¸"¸dÀBÈÈ9ÓUÐä#ØØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØô'ð, �?‰?˜5Ÿ;™;Ó'Ð'r:   c                 ó8  ^ • [         R                  " T R                  S:H  =(       d    T R                  S:H  U 4S j5        T R                  S S [	        U5      -   n[
        R                  " T 5      n[         R                  " UT R                  T R                  US9$ )Nr0   r0  c                  ó"   >• ST R                    3$ )Nz"Expected 3D or 4D tensor, but got rR  r¹   s   €r8   rg   Ú*meta_adaptive_avg_pool2d.<locals>.<lambda>§  ó   ø€ Ð4°T·Z±Z°LÑAr:   rÐ  r‹  )
rX   rj   r­   rŸ   ri   rQ   r   r‘   r`   rˆ   )r    Úoutput_sizert  r´   s   `   r8   Úmeta_adaptive_avg_pool2drÄ  £  s|   ø€ ä	‡L‚LØ�	‰	�Q‰×(˜$Ÿ)™) q™.ÜAôð —:‘:˜c˜r�?¤U¨;Ó%7Ñ7€LÜ×/Ò/°Ó5€Mô �;Š;ØØ�j‰jØ�{‰{Ø#ñ	ð r:   c                 óÔ   ^ • [         R                  " T R                  S:H  =(       d    T R                  S:H  U 4S j5        T R                  T R                  S S [        U5      -   5      $ )Nr0  rX  c                  ó"   >• ST R                    3$ )Nz"Expected 4D or 5D tensor, but got rR  r¹   s   €r8   rg   Ú*meta_adaptive_avg_pool3d.<locals>.<lambda>¹  rÂ  r:   rv  )rX   rj   r­   rž   rŸ   ri   )r    rÃ  s   ` r8   Úmeta_adaptive_avg_pool3drÈ  µ  sO   ø€ ä	‡L‚LØ�	‰	�Q‰×(˜$Ÿ)™) q™.ÜAôð �>‰>˜$Ÿ*™* S b˜/¬E°+Ó,>Ñ>Ó?Ð?r:   c                 ó  ^ ^^• T R                   n[        SU5       H1  m[        R                  " T R	                  T5      S:„  U U4S j5        M3     [        R                  " US:H  =(       d    US:H  U4S j5        [        R                  " TR
                  T R
                  :H  U U4S j5        [        R                  n[        T5      (       a  [        R                  nTR                  TR                  5      R                  US9$ )	Nr3   r   c                  ó*   >• ST R                    ST S3$ )Nz{adaptive_avg_pool2d_backward(): Expected grad_output to have non-zero                       size for non-batch dimensions, ú with dimension ú being emptyrR  )Úgrad_outrç   s   €€r8   rg   Ú4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>Ä  s$   ø€ ð 6Ø6>·n±nÐ5EÐEUÐVWÐUXÐXdñfr:   r0   r0  c                  ó"   >• ST R                    3$ )NzBadaptive_avg_pool2d_backward(): Expected 3D or 4D tensor, but got rR  r¹   s   €r8   rg   rÎ  É  s   ø€ ÐTÐUY×U_ÑU_ÐT`Ñar:   c                  ó<   >• STR                    ST R                    3$ ©Núexpected dtype z! for `grad_output` but got dtype r–   )rÍ  r    s   €€r8   rg   rÎ  Í  s   ø€ �/ $§*¡* Ð-NÈxÏ~É~ÐN^Ñ_r:   r³   )r­   rÎ   rX   rj   r«   r`   r¸   rî  rë  rž   rŸ   r4  )rÍ  r    r­   r´   rç   s   ``  @r8   Ú"meta__adaptive_avg_pool2d_backwardrÓ  ¾  sÅ   ú€ à�=‰=€DÜ�1�dŽ^ˆÜ�ŠØ�M‰M˜!Ó˜qÑ õfö	
ñ ô 
‡L‚LØ�‰	×�T˜Q‘YÜaôô 
‡L‚LØ�
‰
�h—n‘nÑ$Ý_ôô ×+Ñ+€MÜ˜×ÑÜ×+Ñ+ˆØ�>‰>˜$Ÿ*™*Ó%×(Ñ(°}Ð(ÐEÐEr:   c                 ó`   • [        U S5        [        R                  " U[        R                  S9$ )NÚadaptive_avg_pool3d_backwardr³   )Ú!_adaptive_pool_empty_output_checkrX   r·   r%  ©r%  r    s     r8   Ú"meta__adaptive_avg_pool3d_backwardrØ  Õ  s(   € ô & kÐ3QÔRÜ×Ò˜D´×0NÑ0NÑOÐOr:   r%  c                 ó¦   ^ ^^• T R                   n[        SU5       H2  m[        R                  " T R	                  T5      S:„  UU U4S j5        M4     g )Nr3   r   c                  ó.   >• T  STR                    ST S3$ )Nzc(): Expected grad_output to have non-zero size for non-batch dimensions, but grad_output has sizes rË  rÌ  rR  )rè  r%  rç   s   €€€r8   rg   Ú3_adaptive_pool_empty_output_check.<locals>.<lambda>á  s*   ø€ Ø�*ð -Ø-8×->Ñ->Ð,?Ð?OÐPQÈsÐR^ñ`r:   )r­   rÎ   rX   rj   r«   )r%  rè  r­   rç   s   `` @r8   rÖ  rÖ  Ü  sB   ú€ Ø×Ñ€DÜ�1�dŽ^ˆÜ�ŠØ×Ñ˜QÓ !Ñ#öö	
ò r:   c                 ó  ^ ^• T R                   n[        R                  " US;   U 4S j5        [        SU5       H1  m[        R                  " T R	                  T5      S:„  UU 4S j5        M3     [        R                  " [        U5      S:H  S 5        SnSnSnT R                   S:X  a  T R	                  S5      nUS-  nT R	                  US-
  5      nUu  pgT R                   S	:X  a6  XVU4nT R                  U5      n	T R                  U[        R                  S
9n
Xš4$ XEXg4n[        R                  " T 5      nT R                  U5      R                  US9n	T R                  U[        R                  S
9R                  US9n
Xš4$ )N©r0   r0  c                  ó"   >• ST R                    3$ )Nz:adaptive_max_pool2d(): Expected 3D or 4D tensor, but got: rR  r  s   €r8   rg   Ú*meta_adaptive_max_pool2d.<locals>.<lambda>î  ó   ø€ ÐLÈUÏ[É[ÈMÑZr:   r3   r   c                  ó*   >• STR                    ST  S3$ )Nzjadaptive_max_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes rË  rÌ  rR  ©rç   rã   s   €€r8   rg   rß  ó  ó    ø€ ð'Ø',§{¡{ mÐ3CÀAÀ3ÀlñTr:   rù   c                  ó   • g)NzCadaptive_max_pool2d(): internal error: output_size.size() must be 2r4   r4   r:   r8   rg   rß  û  ó   € ÐUr:   r0  r0   r–   r³   )r­   rX   rj   rÎ   r«   rÌ   rž   r¿   rQ   r   r4  )rã   rÃ  r­   ÚdimHÚsizeBÚsizeDÚosizeHÚosizeWr°   r×   r¼   r´   rç   s   `           @r8   Úmeta_adaptive_max_pool2drë  è  sk  ù€ ð �:‰:€DÜ	‡L‚LØ�‰ÜZôô �1�dŽ^ˆÜ�ŠØ�J‰J�q‹M˜AÑõö	
ñ ô 
‡L‚LÜˆKÓ˜AÑÙUôð
 €DØ€EØ€Eà‡z�z�QƒØ—
‘
˜1“ˆØ�‰	ˆà�J‰J�t˜a‘xÓ €EØ �N€Fà‡z�z�QƒØ FÐ+ˆ	Ø�o‰o˜iÓ(ˆØ—/‘/ )´5·;±;�/Ð?ˆØˆ|Ðà 6Ð2ˆ	Ü×3Ò3°EÓ:ˆØ�o‰o˜iÓ(×+Ñ+¸-Ð+ÐHˆØ—/‘/ )´5·;±;�/Ð?×BÑBØ'ð Cð 
ˆð ˆ|Ðr:   c                 óT  ^ ^• T R                   n[        R                  " US;   U 4S j5        [        T S5        [        R                  " TR                  T R                  :H  U U4S j5        [
        R                  " T5      nTR                  TR                  5      R                  US9$ )NrÝ  c                  ó"   >• ST R                    3$ )NzKadaptive_max_pooling2d_backward(): Expected 3D or 4D grad_output, but got: rR  ©r%  s   €r8   rg   Ú3meta_adaptive_max_pool2d_backward.<locals>.<lambda>  s   ø€ Ð]Ð^i×^oÑ^oÐ]pÑqr:   Úadaptive_max_pool2d_backwardc                  ó<   >• STR                    ST R                    3$ rÑ  r–   )r%  rã   s   €€r8   rg   rï  %  s   ø€ �/ %§+¡+ Ð.OÐP[×PaÑPaÐObÑcr:   r³   )
r­   rX   rj   rÖ  r`   rQ   r   rž   rŸ   r4  )r%  rã   r¼   r­   r´   s   ``   r8   Ú!meta_adaptive_max_pool2d_backwardrò    s‡   ù€ ð ×Ñ€DÜ	‡L‚LØ�‰Üqôô
 & kÐ3QÔRä	‡L‚LØ�‰�{×(Ñ(Ñ(Ýcôô
 ×/Ò/°Ó6€MØ�?‰?˜5Ÿ;™;Ó'×*Ñ*¸Ð*ÐGÐGr:   c                 ó  ^ ^• T R                   n[        R                  " US;   U 4S j5        [        SU5       H1  m[        R                  " T R	                  T5      S:„  UU 4S j5        M3     [        R                  " [        U5      S:H  S 5        SnSnSnUS:X  a  T R	                  S5      nUS-  nT R	                  U5      nUu  pgnUS	:X  a  XVXx4n	OXEXgU4n	T R                  U	5      n
T R                  U	[        R                  S
9nX«4$ )Nr¡  c                  ó"   >• ST R                    3$ )Nz:adaptive_max_pool3d(): Expected 4D or 5D tensor, but got: rR  r  s   €r8   rg   Ú*meta_adaptive_max_pool3d.<locals>.<lambda>2  rà  r:   r3   r   c                  ó*   >• STR                    ST  S3$ )Nzjadaptive_max_pool3d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes rË  rÌ  rR  râ  s   €€r8   rg   rõ  7  rã  r:   r0   c                  ó   • g)NzCadaptive_max_pool3d(): internal error: output_size.size() must be 3r4   r4   r:   r8   rg   rõ  ?  rå  r:   rX  r0  r–   )r­   rX   rj   rÎ   r«   rÌ   rž   r¿   )rã   rÃ  r­   ÚdimDrç  rè  ÚosizeTré  rê  r°   r×   r¼   rç   s   `           @r8   Úmeta_adaptive_max_pool3drú  ,  s  ù€ ð �:‰:€DÜ	‡L‚LØ�‰ÜZôô �1�dŽ^ˆÜ�ŠØ�J‰J�q‹M˜AÑõö	
ñ ô 
‡L‚LÜˆKÓ˜AÑÙUôð
 €DØ€EØ€EàˆqƒyØ—
‘
˜1“ˆØ�‰	ˆà�J‰J�tÓ€EØ(Ñ€F�FàˆqƒyØ FÐ3‰	à 6°6Ð:ˆ	à
�/‰/˜)Ó
$€CØ�o‰o˜i¬u¯{©{ˆoÐ;€Gàˆ<Ðr:   c                 óP   • [        U S5        UR                  UR                  5      $ )NÚadaptive_max_pool3d_backward)rÖ  rž   rŸ   )r%  rã   r¼   s      r8   Ú!meta_adaptive_max_pool3d_backwardrý  X  s"   € ô & kÐ3QÔRØ�?‰?˜5Ÿ;™;Ó'Ð'r:   c                 ó@   • Uc  [        S5      eU R                  U5      $ )Nz:cannot repeat_interleave a meta tensor without output_size)r3  rž   )ÚrepeatsrÃ  s     r8   Úmeta_repeat_interleave_Tensorr   _  s%   € àÑÜÐWÓXÐXØ×Ñ˜[Ó)Ð)r:   c                 óŒ  • U R                   R                  (       d  [        SU R                    35      eUR                   R                  (       d  [        SUR                    35      e[        U R	                  [        U R                   5      5      UR	                  [        UR                   5      5      [        R                  S9nU$ )Nz!real must be floating point, got z!imag must be floating point, got ©rN   )r`   r  r�   rV   r4  r   r   rR   )ÚrealÚimagrò  s      r8   Úmeta_complexr  f  s’   € ð �:‰:×'×'ÜÐ@ÀÇÁÀÐMÓNÐNØ�:‰:×'×'ÜÐ@ÀÇÁÀÐMÓNÐNÜØ�‰Ô+¨D¯J©JÓ7Ó8Ø�‰Ô+¨D¯J©JÓ7Ó8Ü6×>Ñ>ñ€Fð
 €Mr:   )Ú
fill_valuer  c                óú   • [        U 5      S;   a-  U R                  XR                  5       4[        R                  S9$ [        R
                  " XR                  5       4SU4[        R                  U R                  S9$ )N)Úcpurþ   r–   r3   ©r`   rˆ   )r  rž   r‹   rX   r›   r@  rˆ   )r    r«   r  s      r8   Únonzero_staticr
  u  se   € ô �4Ó˜NÓ*Ø�~‰~˜t§X¡X£ZÐ0¼¿
¹
ˆ~ÐCÐCä×"Ò"Ø—8‘8“:ÐØ�ˆIÜ—*‘*Ø—;‘;ñ	
ð 	
r:   c                 ó  • [         R                  " [        R                  S 5        [         R                  " U R                  5       U R                  5       4SU R                  5       4[         R                  U R                  S9$ )Nc                  ó   • g)NaY  The register_meta function for torch.nonzero() raises unimplemented by default, as a correct data-independent implementation does not exist. This implementation returns a fake value, assuming all elements of the tensor are non-zero. To enable this registration, please set 'torch.fx.experimental._config.meta_nonzero_assume_all_nonzero' to True.r4   r4   r:   r8   rg   Únonzero.<locals>.<lambda>‰  s   € ð Sr:   r3   r	  )	rX   Ú_check_not_implementedr•  Úmeta_nonzero_assume_all_nonzeror@  r�   r‹   r›   rˆ   r¹   s    r8   Únonzeror  „  sf   € ô 
× Ò Ü×2Ñ2ñ	Sôô ×ÒØ	�‰‹�t—x‘x“zÐ"Ø	
ˆD�J‰J‹LÐÜ�j‰jØ�{‰{ñ	ð r:   c           
      ón	  ^ ^^^^^^^^• [         R                  " [        T5      S 5        / n[        T5       GHŽ  u  mmTGbr  [         R                  " TR                  [         R
                  [         R                  [         R                  [         R                  4;   S 5        TR                  [         R                  [         R                  4;   aÏ  TR                  5       n[        U5      m[         R                  " TTR                  -   T R                  :*  U 4S j5        [        TR                  5       Hc  m[         R                  " TR                  T   T R                  TT-      :H  UUUUU 4S j5        UR                  UR                  ST5      5        Me     GMi  UR                  T5        GM}  UR                  T5        GM‘     Um[         R                  " [        T5      T R                  :*  UU 4S j5        SS KJn  [%        UR&                  " T6 5      m[        T5      T R                  :  a,  TR                  S 5        [        T5      T R                  :  a  M,  SnSnT H&  mUS:X  a	  Tb  SnM  M  US:X  a	  Tc  S	nM  M!  Tc  M&    O   S
nU(       d�  / n/ n[        T5       H-  u  mmTc  M  UR                  T5        UR                  T5        M/     [        T5       H-  u  mmTb  M  UR                  T5        UR                  T5        M/     T R)                  U5      m Um/ m/ m/ m[        T5       He  u  n	mTcG  T(       a   TR                  T R                  U	   5        M0  TR                  T R                  U	   5        MP  [%        TR                  5      mMg     UUU4S jn
T R+                  TT-   T-   5      nSSKJn  U" T R1                  5       S:H  5      (       a  U$ U
" T 5      n[2        R4                  " U5      u  pï[%        U5      [%        [        [        U5      5      5      :w  a‚  [2        R6                  " UR                  U5      n[2        R8                  " U5      n[2        R6                  " U[2        R:                  " U5      5      nUR=                  UR?                  5       U5      nU$ )Nc                  ó   • g)Nz#at least one index must be providedr4   r4   r:   r8   rg   Ú#meta_index_Tensor.<locals>.<lambda>™  s   € Ð(Mr:   c                  ó   • g)Nz?tensors used as indices must be long, int, byte or bool tensorsr4   r4   r:   r8   rg   r  ¡  s   € ÐYr:   c                  ó"   >• ST R                    3$ )Nú)too many indices for tensor of dimension r  r¹   s   €r8   rg   r  ¨  s   ø€ ÐGÈÏ	É	À{ÑSr:   c            	      óN   >• STR                    ST  STR                    STT-    3$ )NzThe shape of the mask ú
 at index z0 does not match the shape of the indexed tensor rR  )rç   r˜   Újrb  r    s   €€€€€r8   rg   r  ­  s:   ø€ Ð"8¸¿¹¸ÀZÐPQÈsð SJØJNÏ*É*ÈÐU_Ð`aÐdeÑ`eÐ_fñ!hr:   r3   c                  ó<   >• STR                    S[        T 5       S3$ )Nr  z (got r~   )r­   rÌ   )r¼   r    s   €€r8   rg   r  ¸  s   ø€ Ð;¸D¿I¹I¸;ÀfÌSÐQXË\ÈNÐZ[Ñ\r:   r   Frù   Tc                 óÜ   >• TT-   T-   n[        U R                  5       5      nS/[        T5      -  U[        T5      [        U R                  5      [        T5      -
  & U R	                  X5      $ )z9
This follows restride_src in TensorAdvancedIndexing.cpp
r   )rÍ   rÐ   rÌ   rŸ   rQ  )r    rŸ   r   Úafter_shapeÚbefore_shapeÚreplacement_shapes      €€€r8   Ú_restride_srcÚ(meta_index_Tensor.<locals>._restride_srcù  sm   ø€ ð Ð0Ñ0°;Ñ>ˆÜ�t—{‘{“}Ó%ˆàKLÈ#ÔPSØóQ
ñ K
ˆ”�LÓ!¤C¨¯
©
£O´c¸+Ó6FÑ$FÐGð �‰˜uÓ.Ð.r:   ©Úguard_or_false) rX   rj   r  Ú	enumerater`   r›   rï   rO  r  rÌ   rœ   r­   rÎ   rŸ   rÏ   ÚselectÚtorch._refsÚ_refsrÍ   r&   rÒ   rž   r1  r"  r�   rQ   Ú3compute_elementwise_output_logical_to_physical_permÚ
apply_permr   Úinvert_permrQ  r«   )r    r¼   rò  r  ÚrefsÚstateÚhas_contiguous_subspacerÇ  Útransposed_indicesr‹   r  r×   r"  Úrestrided_selfÚpermrT   Ú
perm_shaper@  r  r  rç   r˜   r  rb  r  s   ``                @@@@@@@r8   Úmeta_index_Tensorr1  —  sË  ÿø€ ä	‡L‚L”�g“Ñ MÔNð #%€FÜ˜g×&‰ˆˆ5ØÒÜ�LŠLØ—‘¤§
¡
¬E¯I©I´u·z±zÄ5Ç:Á:ÐNÑNÙYôð �{‰{œuŸz™z¬5¯:©:Ð6Ó6ØŸ-™-›/�Ü˜“K�Ü×"Ò"Ø˜Ÿ
™
‘N d§i¡iÑ/ÜSôô ˜uŸz™zÖ*�AÜ×&Ò&ØŸ™ A™¨$¯*©*°Q¸±UÑ*;Ñ;÷hð hôð
 —M‘M '§.¡.°°AÓ"6Ö7ô +ð —‘˜e×$à�M‰M˜%× ñ/ 'ð0 €GÜ	‡L‚LÜˆG‹˜Ÿ	™	Ñ!Ý\ôõ
 ä�4×(Ò(¨'Ð2Ó3€Gä
ˆg‹,˜Ÿ™Ó
"Ø�‰�tÔô ˆg‹,˜Ÿ™Õ
"ð €EØ#ÐÛˆØ�A‹:ØÑ Ø’ñ !à�a‹ZØ‰}Ø’ñ ð Ó Ùñ ð #'Ðö
 #ØˆØÐÜ! 'Ö*‰HˆAˆuØÓ Ø—‘˜A”Ø"×)Ñ)¨%Ö0ñ +ô " 'Ö*‰HˆAˆuØ‹}Ø—‘˜A”Ø"×)Ñ)¨%Ö0ñ +ð �|‰|˜DÓ!ˆØ$ˆð !€LØ€KØ#%ÐÜ Ö(‰
ˆˆUØ‰=Þ Ø×"Ñ" 4§:¡:¨c¡?Ö3à×#Ñ# D§J¡J¨s¡OÖ4ä $ U§[¡[Ó 1Òñ )÷
/ð �.‰.˜Ð(9Ñ9¸KÑGÓ
H€CåDá�d—j‘j“l aÑ'×(Ñ(àˆ
ñ
 # 4Ó(€NÜ×GÒGÈÓW�G€Dô ˆDƒz”Tœ%¤ D£	Ó*Ó+Ó+Ü×%Ò% c§i¡i°Ó6ˆ
Ü×6Ò6°zÓBˆ
Ü×%Ò% j´%×2CÒ2CÀDÓ2IÓJˆ
Ø�n‰n˜SŸX™X›Z¨Ó4ˆØ€Jr:   c                 óJ  • S nS nS nS nU
S   (       a4  U" X5      nU R                  UR                  5       5      R                  US9nU
S   (       a4  U" X5      nU R                  UR                  5       5      R                  US9nU
S   (       a  U R                  U5      nX¼U4$ )Nc                 ó.  • [        U 5      n[        U5      nU[        R                  :X  d  U[        R                  :X  a  [        R                  $ U[        R                  :X  d  U[        R                  :X  a  [        R                  $ [        R                  $ rD   )r   rX   rë  r  r¸   )Út1Út2Úfmt1Úfmt2s       r8   Ú_conv_memory_formatÚ6meta_convolution_backward.<locals>._conv_memory_format9  sr   € ô % RÓ(ˆÜ$ RÓ(ˆØ”5×&Ñ&Ó&¨$´%×2EÑ2EÓ*EÜ×&Ñ&Ð&Ø”5×)Ñ)Ó)¨T´U×5KÑ5KÓ-KÜ×)Ñ)Ð)Ü×&Ñ&Ð&r:   r   r³   r3   rù   )rž   r«   r4  )Úgrad_output_Úinput_Úweight_Úbias_sizes_optrÐ   rð  rÐ  Ú
transposedrÓ  rÒ  Úoutput_maskÚbackend_grad_inputÚbackend_grad_weightÚbackend_grad_biasr8  r´   s                   r8   Úmeta_convolution_backwardrC    s½   € ð  ÐØÐØÐò	'ð �1‡~Ù+¨LÓBˆØ)×3Ñ3°F·K±K³MÓB×EÑEØ'ð Fð 
Ðð �1‡~Ù+¨FÓAˆØ*×4Ñ4°W·\±\³^ÓD×GÑGØ'ð Hð 
Ðð �1‡~Ø(×2Ñ2°>ÓBÐàÐ5FÐGÐGr:   c                óÎ  ^^• TR                  S5      nTR                  S5      nU R                  XV45      n [        R                  " TR	                  5       S:H  S 5        [        R                  " TR	                  5       S:H  S 5        [        R                  " TR                  S5      TR                  S5      :H  UU4S j5        [        R                  " TR                  S5      TR                  S5      :H  UU4S j5        [        R                  " U R                  S5      U:H  =(       a    U R                  S5      U:H  S	 5        U R                  U R                  5       5      $ )
Nr3   rù   r0   c                  ó   • gr…  r4   r4   r:   r8   rg   Úmeta_addbmm.<locals>.<lambda>Z  r‡  r:   c                  ó   • gr‰  r4   r4   r:   r8   rg   rF  [  r‡  r:   r   c                  óP   >• ST R                  S5       STR                  S5       3$ )Nz8batch1 and batch2 must have same number of batches, got r   r©   rª   ©r‹  rŒ  s   €€r8   rg   rF  ^  s,   ø€ ÐJÈ6Ï;É;ÐWXË>ÐJZÐZ_Ð`f×`kÑ`kÐlmÓ`nÐ_oÑpr:   c            
      óš   >• ST R                  S5       ST R                  S5       STR                  S5       STR                  S5       S3	$ )Nz#Incompatible matrix sizes for bmm (r3   r=   rù   r©   r~   rª   rI  s   €€r8   rg   rF  b  sL   ø€ Ø1°&·+±+¸a³.Ð1AÀÀ6Ç;Á;ÈqÃ>ÐBRð SØ—;‘;˜q“>Ð" ! F§K¡K°£NÐ#3°1ñ6r:   c                  ó   • g)Nz.self tensor does not match matmul output shaper4   r4   r:   r8   rg   rF  i  s   € Ð@r:   )r«   r¡  rX   rj   r‹   rž   )r    r‹  rŒ  rc  rb  r—  r˜  s    ``    r8   Úmeta_addbmmrL  T  sÿ   ù€ ð �;‰;�q‹>€DØ�;‰;�q‹>€DØ�;‰;˜�|Ó$€DÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ	‡L‚LØ�‰�A‹˜&Ÿ+™+ a›.Ñ(Ýpôô 
‡L‚LØ�‰�A‹˜&Ÿ+™+ a›.Ñ(õ	
ôô 
‡L‚LØ�	‰	�!‹˜Ñ×5 §¡¨1£°Ñ!5Ù@ôð �>‰>˜$Ÿ)™)›+Ó&Ð&r:   c                 ó@   • U R                  U R                  5       5      $ rD   ©rž   r«   )r    r  Úkwargss      r8   Úmeta_randint_likerP  n  s   € à�>‰>˜$Ÿ)™)›+Ó&Ð&r:   )Ú
grad_scaleÚ	found_infc       	         óp   ^• XX#XE4 H,  m[         R                  " [        T[        5      U4S j5        M.     g )Nc                  ó    >• S[        T 5       3$ ©Nz'exponent must be a tensor list but got ©r   ©Úls   €r8   rg   Ú#meta__fused_adam_.<locals>.<lambda>‰  ó   ø€ Ð=¼dÀ1»g¸YÑGr:   ©rX   rj   rt   rÍ   )r    ÚgradsÚexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsÚlrÚbeta1Úbeta2Úweight_decayÚepsÚamsgradÚmaximizerQ  rR  rX  s                  @r8   Úmeta__fused_adam_rh  s  s0   ø€ ð& ˜8°/ÓOˆÜ�ŠÜ�qœ$ÓÜGö	
ò Pr:   c       	         ó¾   ^• XX#XE4 H,  m[         R                  " [        T[        5      U4S j5        M.     S nU" U 5      U" U5      U" U5      U" U5      U" U5      4$ )Nc                  ó    >• S[        T 5       3$ rU  rV  rW  s   €r8   rg   Ú"meta__fused_adam.<locals>.<lambda>£  rZ  r:   c                 óZ   • U  Vs/ s H  n[         R                  " U5      PM     sn$ s  snf rD   rG  )Útensor_listrá  s     r8   Úempty_like_listÚ)meta__fused_adam.<locals>.empty_like_list¦  s%   € Ù-8Ó9ª[¨”× Ò  Ö#©[Ñ9Ð9ùÒ9s   … (r[  )r    r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rQ  rR  rn  rX  s                   @r8   Úmeta__fused_adamrp  �  si   ø€ ð& ˜8°/ÓOˆÜ�ŠÜ�qœ$ÓÜGö	
ñ Pò:ñ 	˜ÓÙ˜ÓÙ˜Ó!Ù˜Ó$Ù˜Ó(ðð r:   c                 ót  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " TR                  5       S:H  S 5        [         R                  " T R                  [         R                  L U 4S j5        [         R                  " TR                  [         R                  L U4S j5        [         R                  " T R                  S5      TR                  S5      :H  U U4S j5        T R                  T R                  S5      TR                  S5      4[         R                  S	9$ )
Nrù   c                  ó   • g)Nza must be a 2D tensorr4   r4   r:   r8   rg   Úmeta__int_mm.<locals>.<lambda>µ  ó   € Ð'>r:   c                  ó   • g)Nzb must be a 2D tensorr4   r4   r:   r8   rg   rs  ¶  rt  r:   c                  ó"   >• ST R                    3$ )Nzexpected self to be int8, got r–   )r6   s   €r8   rg   rs  ¹  ó   ø€ Ð0°·±°	Ñ:r:   c                  ó"   >• ST R                    3$ )Nzexpected mat2 to be int8, got r–   )r7   s   €r8   rg   rs  ½  rw  r:   r3   r   c            
      óš   >• ST R                  S5       ST R                  S5       STR                  S5       STR                  S5       S3	$ )Nz'Incompatible matrix sizes for _int_mm (r   r=   r3   r©   r~   rª   r5   s   €€r8   rg   rs  Á  sH   ø€ Ø5°a·f±f¸Q³i°[ÀÀ!Ç&Á&ÈÃ)Àð MØ—6‘6˜!“9�+˜Q˜qŸv™v a›y˜k¨ñ,r:   r–   )rX   rj   r‹   r`   rO  r«   rž   rP  r5   s   ``r8   Úmeta__int_mmrz  ²  sÐ   ù€ ô 
‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”5—:‘:ÐÜ:ôô 
‡L‚LØ	�‰”5—:‘:ÐÜ:ôô 
‡L‚LØ	�‰ˆq‹	�Q—V‘V˜A“YÑõ	
ôð �;‰;˜Ÿ™˜q›	 1§6¡6¨!£9Ð-´U·[±[ˆ;ÐAÐAr:   c                 ód  ^ • [         R                  " T R                  5       S:H  S 5        [         R                  " T R                  [         R                  L U 4S j5        T R                  S5      nT R                  S5      S-  nT R                  US-  X1S-  -  SUS-  4[         R                  S	9$ )
Nrù   c                  ó   • g©Nzw must be a 2D tensorr4   r4   r:   r8   rg   Ú2meta__convert_weight_to_int4pack.<locals>.<lambda>Ë  rt  r:   c                  ó"   >• ST R                    3$ rP  r–   rL  s   €r8   rg   r~  Î  ó   ø€ Ð.¨q¯w©w¨iÑ8r:   r   r3   é   é   é    r–   )rX   rj   r‹   r`   r  r«   rž   rP  ©r  Úinner_k_tilesr  rb  s   `   r8   Ú meta__convert_weight_to_int4packr†  É  sœ   ø€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”5—;‘;ÐÜ8ôð 	
�‰ˆq‹	€AØ	�‰ˆq‹	�A‰€AØ�;‰;à�‰FØ "Ñ$Ñ%ØØ˜QÑð		
ô �k‰kð ð ð r:   c                 óH  ^ • [         R                  " T R                  5       S:H  S 5        [         R                  " T R                  [         R                  L U 4S j5        T R                  S5      nT R                  S5      nT R                  X#S-  4[         R                  S9$ )Nrù   c                  ó   • gr}  r4   r4   r:   r8   rg   Ú:meta__convert_weight_to_int4pack_for_cpu.<locals>.<lambda>ß  rt  r:   c                  ó"   >• ST R                    3$ ©Nzexpected w to be int32, got r–   rL  s   €r8   rg   r‰  â  r€  r:   r   r3   r–   )rX   rj   r‹   r`   rP  r«   rž   r  r„  s   `   r8   Ú(meta__convert_weight_to_int4pack_for_cpurŒ  Ý  s}   ø€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”5—;‘;ÐÜ8ôð 	
�‰ˆq‹	€AØ	�‰ˆq‹	€AØ�;‰;Ø	
�‰FˆÜ�k‰kð ð ð r:   c                 óÔ  ^ ^^• [         R                  " T R                  5       S:H  S 5        TR                  R                  S:X  a  SOSm[         R                  " TR                  5       T:H  U4S j5        [         R                  " T R
                  [         R                  [         R                  [         R                  4;   U 4S j5        [         R                  " TR
                  [         R                  L U4S j5        TR                  R                  S:X  a  TR                  S5      OTR                  S5      S	-  nT R                  T R                  S5      UT R
                  S
9$ )Nrù   c                  ó   • g©Nzx must be a 2D tensorr4   r4   r:   r8   rg   Ú*meta__weight_int4pack_mm.<locals>.<lambda>î  rt  r:   rþ   r0  c                  ó   >• ST  S3$ )Nzw must be a zD tensorr4   )Úexpected_dims   €r8   rg   r�  ð  s   ø€ °LÀÀÈhÑ2Wr:   c                  ó"   >• ST R                    3$ rN  r–   rH  s   €r8   rg   r�  ó  ó   ø€ Ð5°a·g±g°YÑ?r:   c                  ó"   >• ST R                    3$ r‹  r–   rL  s   €r8   rg   r�  ÷  r€  r:   r   r�  r–   )rX   rj   r‹   rÍ  r   r`   rm  rn  ro  rP  r«   rž   )r=   r  rR  rT  Údim_nr’  s   ``   @r8   Úmeta__weight_int4pack_mmr—  ì  sì   ú€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?ØŸ™×*Ñ*¨eÓ3‘1¸€LÜ	‡L‚L�—‘“˜LÑ(Ô*WÔXÜ	‡L‚LØ	�‰”E—M‘M¤5§=¡=´%·.±.ÐAÑAÜ?ôô 
‡L‚LØ	�‰”5—;‘;ÐÜ8ôð Ÿ™×+Ñ+¨uÓ4ˆA�F‰F�1ŒI¸!¿&¹&À»)Àa¹-€EØ�;‰;�q—v‘v˜a“y %¨q¯w©wˆ;Ð7Ð7r:   c                 ó0  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " TR                  5       S:H  S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  [         R                  L U4S j5        T R                  T R                  S5      TR                  S5      T R                  S9$ )Nrù   c                  ó   • gr�  r4   r4   r:   r8   rg   Ú2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>ÿ  rt  r:   c                  ó   • gr}  r4   r4   r:   r8   rg   rš     rt  r:   c                  ó"   >• ST R                    3$ rN  r–   rH  s   €r8   rg   rš    r”  r:   c                  ó"   >• ST R                    3$ rP  r–   rL  s   €r8   rg   rš    r€  r:   r   r–   )
rX   rj   r‹   r`   rm  rn  ro  r  rž   r«   rU  s   ``  r8   Ú meta__weight_int4pack_mm_for_cpurž  ý  ó¯   ù€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”E—M‘M¤5§=¡=´%·.±.ÐAÑAÜ?ôô 
‡L‚LØ	�‰”5—;‘;ÐÜ8ôð �;‰;�q—v‘v˜a“y !§&¡&¨£)°1·7±7ˆ;Ð;Ð;r:   c                 ó0  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " TR                  5       S:H  S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  [         R                  L U4S j5        T R                  T R                  S5      TR                  S5      T R                  S9$ )Nrù   c                  ó   • gr�  r4   r4   r:   r8   rg   Ú;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>  rt  r:   c                  ó   • gr}  r4   r4   r:   r8   rg   r¢    rt  r:   c                  ó"   >• ST R                    3$ rN  r–   rH  s   €r8   rg   r¢    r”  r:   c                  ó"   >• ST R                    3$ r‹  r–   rL  s   €r8   rg   r¢    r€  r:   r   r–   )
rX   rj   r‹   r`   rm  rn  ro  rP  rž   r«   )r=   r  rR  ÚqScaleÚqZeross   ``   r8   Ú)_weight_int4pack_mm_with_scales_and_zerosr¨    rŸ  r:   r6   r7   c                 ó   • X-   S-
  U-  U-  $ r2   r4   r5   s     r8   Úkai_rounduprª    s   € Ø‰U�Q‰Y˜1Ñ Ñ!Ð!r:   c                 ó  ^	^
^^^^^^^^^• U S:X  a{  X2:X  a(  SnSnSnSmSmSmS mUUUU4S jmU4S jnU" XXEU5      $ US-  S	:X  aD  X#-  S	:X  a;  SnSnSnSmSmSmSm	U	UU4S
 jnU	U
UUUUU4S jmS m
U	4S jmU	4S jmU" XXEXc5      $ g g g )Nr0  r�  r‚  rù   c                 ó4   • [        X-  S5      n[        X5      $ )Nr0  ©rª  )rb  ÚkrÚsrÚkr_sr_roundedup4s       r8   Úkai_k_roundedupÚ3get_kai_packed_weight_size.<locals>.kai_k_roundedup+  s   € ô $/¨r©w¸Ó#:Ð Ü" 1Ó7Ð7r:   c                 óf   >• T" XU5      nUS-  S:w  a  [        SU 35      eUUS-  T-   T-   T-   -  $ )Nrù   r   zk_internal must be even, got r%  )	rb  Únrr®  r¯  Ú
k_internalr±  Úkai_num_bytes_biasÚkai_num_bytes_multiplier_rhsÚkai_num_bytes_sum_rhss	        €€€€r8   Ú9kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0Ú]get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4cxp_qsu4cxs1s01  s^   ø€ ñ -¨Q°BÓ7�
à ‘N qÓ(Ü(Ð+HÈÈÐ)UÓVÐVàØ 1‘_Ø2ñ3à+ñ,ð )ñ)ñð r:   c                 ó8   >• [        X5      U-  nUT" XX45      -  $ rD   r­  )r  rb  r´  r®  r¯  Únum_rowsr¹  s         €r8   Ú7kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0Ú[get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0@  s0   ø€ ô ' qÓ-°Ñ3�ð ÙOØ˜róñðr:   rƒ  r   c                 óÚ   >• XS-  S:w  a  [        SU SU S35      eUT	-  S:w  a  [        SU ST	 S35      eUT-  S:w  a  [        SU ST S35      e[        X5      U-  nUT" XX4U5      -  $ ©Nr   úbl (z) must be divisible by kr (r~   znr (z+) must be divisible by kai_nr_multiple_of (ú+) must be divisible by kai_bl_multiple_of (©r�   rª  )
r  rb  r´  r®  r¯  Úblr¼  Úkai_bl_multiple_ofÚ;kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0Úkai_nr_multiple_ofs
          €€€r8   Ú9kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0Ú]get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0X  s½   ø€ ð ‘G “>Ü(¨4°¨tÐ3NÈrÈdÐRSÐ)TÓUÐUØÐ+Ñ+°Ó1Ü(Ø˜r˜dÐ"MÐN`ÐMaÐabÐcóð ð Ð+Ñ+°Ó1Ü(Ø˜r˜dÐ"MÐN`ÐMaÐabÐcóð ô ' qÓ-°Ñ3�ð ÙQØ˜r róñðr:   c                 óì   >• XB-  S:w  a  [        SU SU S35      eUT
-  S:w  a  [        SU ST
 S35      eUT-  S:w  a  [        SU ST S35      eT	" 5       nT" X5      nT" XE5      nUXv-  T-   T-   -  $ rÀ  r%  )rb  r´  r®  r¯  rÄ  Únum_bytes_multiplier_rhsÚnum_blocks_per_rowÚnum_bytes_per_blockrÅ  Ú#kai_get_bf16_datatype_size_in_bytesrÇ  Úkai_num_blocks_per_rowr¶  Úkai_num_bytes_per_blockr¸  s           €€€€€€€r8   rÆ  Ú_get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0o  sØ   ø€ ð ‘G “>Ü(¨4°¨tÐ3NÈrÈdÐRSÐ)TÓUÐUØÐ+Ñ+°Ó1Ü(Ø˜r˜dÐ"MÐN`ÐMaÐabÐcóð ð Ð+Ñ+°Ó1Ü(Ø˜r˜dÐ"MÐN`ÐMaÐabÐcóð ñ
 ,OÓ+PÐ(Ù%;¸AÓ%BÐ"Ù&=Øó'Ð#ð Ø(Ñ=Ø+ñ,à(ñ)ñð r:   c                  ó   • g)Nrù   r4   r4   r:   r8   rÎ  ÚGget_kai_packed_weight_size.<locals>.kai_get_bf16_datatype_size_in_bytesŒ  s   € Ør:   c                 óV   >• UT-  S:w  a  [        SU ST S35      e[        X5      U-  $ )Nr   rÁ  rÂ  r~   rÃ  )rb  rÄ  rÅ  s     €r8   rÏ  Ú:get_kai_packed_weight_size.<locals>.kai_num_blocks_per_row�  sF   ø€ ØÐ+Ñ+°Ó1Ü(Ø˜r˜dÐ"MÐN`ÐMaÐabÐcóð ô # 1Ó)¨RÑ/Ð/r:   c                 óJ   >• U T-  S:w  a  [        SU  ST S35      eU S-  U-   $ )Nr   rÁ  rÂ  r~   rù   r%  )rÄ  rË  rÅ  s     €r8   rÐ  Ú;get_kai_packed_weight_size.<locals>.kai_num_bytes_per_block–  sF   ø€ ØÐ+Ñ+°Ó1Ü(Ø˜r˜dÐ"MÐN`ÐMaÐabÐcóð ð ˜a™Ð#;Ñ;Ð;r:   r4   )Ún_bitsrÂ  ÚKÚ	groupsizeÚkai_nrÚkai_krÚkai_srr½  rÈ  rÅ  rÎ  rÆ  r¹  r±  rÇ  rÏ  r¶  r·  rÐ  r¸  s            @@@@@@@@@@@r8   Úget_kai_packed_weight_sizerÞ    sÞ   ÿú€ Ø�ƒ{à‹>àˆFØˆFØˆFØ$%Ð!Ø+,Ð(Ø!"Ðò8÷ð õ
ñ KØ�f fóð ð ˜‰^˜qÓ  Q¡]°aÓ%7ØˆFØˆFØˆFØ$%Ð!Ø!"ÐØ!"ÐØ!#Ð÷÷.ó ò:õ0õ<ñ MØ�f fóð ð] &8Ð ð_ r:   c                 ó†  ^ • [         R                  " T R                  [         R                  L U 4S j5        [         R                  R
                  R                  5       (       a‹  X4:X  a  UR                  [         R                  :X  d4  X4:  ac  US-  S:X  aZ  XC-  S:X  aR  UR                  [         R                  :X  a4  [        SXTU5      nT R                  [        U5      [         R                  S9$ T R                  5       UR                  5       -   nUb  XbR                  5       -  nT R                  U[         R                  S9$ )Nc                  ó"   >• ST R                    3$ rP  r–   )Úweightss   €r8   rg   Ú2meta__dyn_quant_pack_4bit_weight.<locals>.<lambda>¨  s   ø€ Ð.¨w¯}©}¨oÑ>r:   rƒ  r   r0  r–   )rX   rj   r`   r  ÚbackendsÚkleidiaiÚis_availabler\   ro  rÞ  rž   rï   r�   )rá  Úscales_zerosrH  Ú
block_sizeÚin_featuresÚout_featuresÚpacked_weight_sizes   `      r8   Ú meta__dyn_quant_pack_4bit_weightrë  ¢  s  ø€ ô 
‡L‚LØ�‰œŸ™Ð$Ü>ôô ‡~�~×Ñ×+Ñ+×-Ñ-Ø	Ó	" |×'9Ñ'9¼U¿[¹[Ó'HàÓ$Ø˜R‘ 1Ó$ØÑ(¨AÓ-Ø×"Ñ"¤e§n¡nÓ4ô 8Øˆ|¨*ó
Ðð × Ñ ¤Ð%7Ó!8ÄÇÁÐ ÐLÐLØ Ÿ™›¨<×+=Ñ+=Ó+?Ñ?ÐØÑØŸj™j›lÑ*ÐØ×ÑÐ/´u·{±{ÐÐCÐCr:   c                 ó€  ^ ^^• [         R                  " T R                  5       S:H  S 5        [         R                  " T R                  [         R                  :H  =(       d)    T R                  [         R
                  :H  =(       a    TT:H  UUU 4S j5        T R                  S5      nT R                  XTT R                  S9$ )Nrù   c                  ó   • g)Nzinput must be a 2D tensorr4   r4   r:   r8   rg   Ú-meta__dyn_quant_matmul_4bit.<locals>.<lambda>Å  s   € Ð)Dr:   c                  ó.   >• STR                    ST  ST 3$ )NzPexpected input to be f32 or bf16 (bf16 requires block_size == in_features), got z with block_size=z and in_features=r–   )rç  rè  Úinps   €€€r8   rg   rî  É  s%   ø€ ðØ—9‘9�+Ð.¨z¨lÐ:KÈKÈ=ñZr:   r   r–   )rX   rj   r‹   r`   rm  ro  r«   rž   )rð  Úpacked_weightsrç  rè  ré  rÆ  s   ` ``  r8   Úmeta__dyn_quant_matmul_4bitrò  ½  s…   ú€ ô 
‡L‚L�—‘“˜a‘Ñ!DÔEÜ	‡L‚LØ	�‰”e—m‘mÑ	#÷ 	GØ�I‰IœŸ™Ñ'×E¨J¸+Ñ,Eö	
ôð 	�‰�‹€AØ�=‰=˜°·	±	ˆ=Ð:Ð:r:   c                 ó0  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  5       S:H  S 5        [         R                  " TR                  [         R                  L U4S j5        T R                  T R                  S5      TR                  S5      T R                  S9$ )Nrù   c                  ó   • gr�  r4   r4   r:   r8   rg   Ú*meta__weight_int8pack_mm.<locals>.<lambda>Ô  rt  r:   c                  ó"   >• ST R                    3$ rN  r–   rH  s   €r8   rg   rõ  ×  r”  r:   c                  ó   • gr}  r4   r4   r:   r8   rg   rõ  Ù  rt  r:   c                  ó"   >• ST R                    3$ )Nzexpected w to be int8, got r–   rL  s   €r8   rg   rõ  Ü  s   ø€ Ð-¨a¯g©g¨YÑ7r:   r   r–   )
rX   rj   r‹   r`   rm  rn  ro  rO  rž   r«   )r=   r  Úq_scaless   `` r8   Úmeta__weight_int8pack_mmrú  Ò  s¯   ù€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”E—M‘M¤5§=¡=´%·.±.ÐAÑAÜ?ôô 
‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”5—:‘:ÐÜ7ôð �;‰;�q—v‘v˜a“y !§&¡&¨£)°1·7±7ˆ;Ð;Ð;r:   c                 óŒ  ^ ^^• [         R                  " T R                  5       S:¬  U 4S j5        [         R                  " TR                  5       S:¬  U4S j5        [         R                  " T R                  S5      TR                  S5      :H  U U4S j5        [         R                  " [        R
                  " T R                  5      U 4S j5        [         R                  " [        R
                  " TR                  5      U4S j5        [         R                  " US:¬  S	 5        [         R                  " TS
;   U4S j5        T R                  S5      nTR                  S5      nT R                  S S nTR                  S S n[        [         R                  " Xg5      5      nUR                  XE/5        T R                  U5      $ )Nrù   c                  ó,   >• ST R                  5        S3$ )Nz1cdist only supports at least 2D tensors, X1 got: rZ  r£   ©Úx1s   €r8   rg   Ú$meta_cdist_forward.<locals>.<lambda>å  ó   ø€ ÐCÀBÇFÁFÃHÀ:ÈQÑOr:   c                  ó,   >• ST R                  5        S3$ )Nz1cdist only supports at least 2D tensors, X2 got: rZ  r£   ©Úx2s   €r8   rg   rÿ  é  r   r:   r¢   c                  óP   >• ST R                  S5       STR                  S5       3$ )Nz4X1 and X2 must have the same number of columns. X1: r¢   z X2: rª   )rþ  r  s   €€r8   rg   rÿ  í  s*   ø€ ÐFÀrÇwÁwÈrÃ{ÀmÐSXÐY[×Y`ÑY`ÐacÓYdÐXeÑfr:   c                  ó"   >• ST R                    3$ )Nz3cdist only supports floating-point dtypes, X1 got: r–   rý  s   €r8   rg   rÿ  ñ  ó   ø€ ÐEÀbÇhÁhÀZÑPr:   c                  ó"   >• ST R                    3$ )Nz3cdist only supports floating-point dtypes, X2 got: r–   r  s   €r8   rg   rÿ  õ  r  r:   r   c                  ó   • g)Nz)cdist only supports non-negative p valuesr4   r4   r:   r8   rg   rÿ  ÷  s   € Ð!Lr:   )Nr   r3   rù   c                  ó   >• ST  3$ )Nz(possible modes: None, 0, 1, 2, but was: r4   )Úcompute_modes   €r8   rg   rÿ  ú  s   ø€ Ð:¸<¸.ÑIr:   rÐ  )rX   rj   r‹   r«   rQ   Úis_float_dtyper`   rŸ   rÍ   Úbroadcast_shapesÚextendrž   )	rþ  r  ru  r
  Úr1Úr2Úbatch_tensor1Úbatch_tensor2rt  s	   `` `     r8   Úmeta_cdist_forwardr  á  sF  ú€ ä	‡L‚LØ
�‰‹�A‰ÜOôô 
‡L‚LØ
�‰‹�A‰ÜOôô 
‡L‚LØ
�‰�‹�r—w‘w˜r“{Ñ"Ýfôô 
‡L‚LÜ×Ò˜RŸX™XÓ&ÜPôô 
‡L‚LÜ×Ò˜RŸX™XÓ&ÜPôô 
‡L‚L��a‘ÑLÔMÜ	‡L‚LØ˜Ñ'ÜIôð 
�‰�‹€BØ	�‰�‹€BØ—H‘H˜S˜b�M€MØ—H‘H˜S˜b�M€MÜœ×.Ò.¨}ÓLÓM€LØ×Ñ˜˜Ô!Ø�<‰<˜Ó%Ð%r:   c                 ó<  • UR                   S   nUR                   S   nUR                   S   nUR                   S S nUR                   S S n	[        [        R                  " X‰5      5      n
U
R	                  5       nUR                  Xe/5        [        R                  " U
5      nUS:X  d  US:X  d  US:X  d  US:X  a  [        R                  " U5      $ U[        UR                   5      :w  a  UR                  U5      n[        R                  " U[        R                  S9$ )Nr¢   rÐ  r   r³   )rŸ   rÍ   rX   r  Úcopyr  ÚmathÚprodÚ
zeros_liker¡  r·   r¸   )rz  rþ  r  ru  ÚcdistÚc1r  r  r  r  r�  Útensor1_expand_sizeÚbatch_products                r8   Úmeta_cdist_backwardr    sð   € ð 
�‰�"‰€BØ	�‰�"‰€BØ	�‰�"‰€BØ—H‘H˜S˜b�M€MØ—H‘H˜S˜b�M€MÜ¤× 6Ò 6°}Ó TÓUÐØ.×3Ñ3Ó5ÐØ×Ñ ˜xÔ(Ü—I’IÐ2Ó3€MØ	ˆQƒw�"˜“'˜R 1›W¨¸Ó(:Ü×Ò Ó#Ð#Øœd 2§8¡8›nÓ,Ø�Y‰YÐ*Ó+ˆÜ×Ò˜B¬e×.EÑ.EÑFÐFr:   c	                 óZ  ^ ^^^^^• [         R                  " TR                  [         R                  [         R                  4;   U4S j5        [         R                  " TR                  [         R                  [         R                  4;   U4S j5        [         R                  " [
        R                  " T R                  5      U 4S j5        TR                  S5      n	U(       a   [         R                  " U	S:¬  S 5        U	S-  n	T R                  U	T R                  S5      5      n
Tb‚  [         R                  " U[        :H  S 5        [         R                  " TR                  S:H  U4S j5        [         R                  " TR                  5       TR                  5       :H  UU4S	 j5        U4S
 jmS mUU4S jn[        T5      S:w  a}  TR                  TR                  S5      5      nTR                  TR                  5       5      nU[        :X  a"  TR                  U	T R                  S5      5      nOõTR                  S5      nOãU" T TX¨5      nU[        [        4;   d  U(       d!  TR                  TR                  S5      5      nOTR                  S5      nTR                  U	5      nTR                  S   nU[        :X  aG  U(       a   [         R                  " US:¬  S 5        US-  nTR                  UT R                  S   5      nOTR                  UR                  5       5      nX¬XÞ4$ )Nc                  ó"   >• ST R                    3$ )Nz(expected indices to be long or int, got r–   )r¼   s   €r8   rg   Ú$meta_embedding_bag.<locals>.<lambda>*  ó   ø€ Ð:¸7¿=¹=¸/ÑJr:   c                  ó"   >• ST R                    3$ )Nz(expected offsets to be long or int, got r–   )r„  s   €r8   rg   r  .  r   r:   c                  ó"   >• ST R                    3$ )Nz/expected weight to be floating point type, got r–   )rF  s   €r8   rg   r  2  s   ø€ ÐAÀ&Ç,Á,ÀÑPr:   r   r3   c                  ó   • g©Nz1include_last_offset: numBags should be at least 1r4   r4   r:   r8   rg   r  9  s   € ÐGr:   c                  ó   • g)Nz@embedding_bag: per_sample_weights only supported with mode='sum'r4   r4   r:   r8   rg   r  B  s   € ÐVr:   c                  ó$   >• ST R                    S3$ )Nz1expected per_sample_weights to be 1D tensor, got rZ  r  )Úper_sample_weightss   €r8   rg   r  F  s   ø€ ÐGÐHZ×H_ÑH_ÐG`Ð`aÑbr:   c                  óN   >• STR                  5        ST R                  5        S3$ )Nz%expected per_sample_weights.numel() (z$ to be the same as indices.numel() (r~   ©r�   )r¼   r'  s   €€r8   rg   r  J  s/   ø€ Ø7Ð8J×8PÑ8PÓ8RÐ7Sð T6Ø6=·m±m³oÐ5FÀañIr:   c                 óL   >• T" XU5      =(       a    UR                  S5      S:H  $ ©Nr   r3   ©rÐ   )r7  r°  r
  Úpadding_idxÚis_fast_path_index_selects       €r8   Úis_fast_path_index_select_scaleÚ;meta_embedding_bag.<locals>.is_fast_path_index_select_scaleP  s&   ø€ á% c°;Ó?×XÀEÇLÁLÐQRÃOÐWXÑDXð	
r:   c                 ó  • U R                   [        R                  :H  =(       d    U R                   [        R                  :H  =(       a;    U R	                  S5      S:H  =(       a     UR	                  S5      S:H  =(       a    US:  $ rÿ  )r`   rX   r\   rZ   rÐ   )r7  r
  r-  s      r8   r.  Ú5meta_embedding_bag.<locals>.is_fast_path_index_selectU  sb   € à�Y‰Yœ%Ÿ+™+Ñ%×@¨¯©´e·j±jÑ)@÷  Ø—
‘
˜1“ Ñ"÷ à—‘˜aÓ  AÑ%÷ ð ˜a‘ð		
r:   c                 ó.   >• Ub	  T" XX#5      $ T" XU5      $ rD   r4   )r7  r°  r
  r-  r.  r/  s       €€r8   Úis_fast_pathÚ(meta_embedding_bag.<locals>.is_fast_path]  s#   ø€ ØÑÙ2°3¸vÓSÐSá,¨S¸+ÓFÐFr:   r  c                  ó   • gr$  r4   r4   r:   r8   rg   r  w  s   € ÐOr:   )rX   rj   r`   r›   rï   rQ   r  r«   rž   ÚMODE_SUMr­   r�   r  ÚMODE_MAXÚ	MODE_MEANrŸ   )rF  r¼   r„  Úscale_grad_by_freqrz  Úsparser'  Úinclude_last_offsetr-  Únum_bagsr
  r4  Ú
offset2bagÚbag_sizeÚmax_indicesÚfast_path_sumÚnumBagsr.  r/  s   ```   `          @@r8   Úmeta_embedding_bagrC    sw  ý€ ô 
‡L‚LØ�‰œ%Ÿ*™*¤e§i¡iÐ0Ñ0ÜJôô 
‡L‚LØ�‰œ%Ÿ*™*¤e§i¡iÐ0Ñ0ÜJôô 
‡L‚LÜ×Ò˜VŸ\™\Ó*ÜPôð
 �|‰|˜A‹€HÞÜ�ŠØ˜‰MÙGô	
ð 	�A‰ˆà×Ñ˜h¨¯©°A«Ó7€FàÑ%Ü�ŠØ”HÑÙVô	
ô 	�ŠØ×#Ñ# qÑ(Übô	
ô 	�ŠØ×$Ñ$Ó&¨'¯-©-«/Ñ9õô	
õ
ò

öGô �7Ó˜uÓ$Ø×&Ñ& w§|¡|°A£Ó7ˆ
Ø×$Ñ$ W§\¡\£^Ó4ˆØ”8ÓØ!×+Ñ+¨H°f·k±kÀ!³nÓE‰Kà!×+Ñ+¨AÓ.‰Ká$ VÐ-?ÀÓUˆØ”IœxÐ(Ó(¶Ø ×*Ñ*¨7¯<©<¸«?Ó;‰Jà ×*Ñ*¨1Ó-ˆJØ×$Ñ$ XÓ.ˆà—-‘- Ñ"ˆØ”8ÓÞ"Ü—’Ø˜q‘LÙOôð ˜1‘�Ø!×+Ñ+¨G°V·\±\À!±_ÓE‰Kà!×+Ñ+¨H¯M©M«OÓ<ˆKØ˜xÐ4Ð4r:   c                 ó†   • [        XU/UQ76 u  pEpg[        U5      S:X  a  UR                  UR                  5       5      nXEXg4$ )Nr  )rC  r  rž   r«   )rF  r¼   r„  rS   r
  r>  r?  r@  s           r8   Úmeta_embedding_bag_forward_onlyrE  €  sN   € ä0BØ˜ð1Ø#'ò1Ñ-€F˜ô �7Ó˜uÓ$Ø×$Ñ$ W§\¡\£^Ó4ˆØ˜xÐ4Ð4r:   c                 óÞ   • U(       a  U$ U R                   R                  (       d  U R                   R                  (       a  U R                   $ U(       a  [        R                  $ U R                   $ rD   )r`   r  rô   rX   r›   )rã   r`   Úpromote_int_to_longs      r8   Ú_get_reduction_dtyperH  Š  sD   € æØˆà‡{�{×$×$¨¯©×(>×(>Ø�{‰{ÐÞ	Ü�z‰zÐà�;‰;Ðr:   r–   c                óŽ   • [        XSS9n[        R                  " U R                  U5      n[	        XU5      nU R                  XTS9$ )NT)rG  r–   )rH  rQ   r™  rŸ   rš  rž   )rã   rÇ  rœ  r`   r   rt  s         r8   Úmeta_nansumrJ  —  sC   € ô (¨È$ÑO€LÜ×Ò §¡¨TÓ2€DÜ+¨E¸ÓA€LØ�?‰?˜<ˆ?Ð<Ð<r:   c           	      ó¦   • [         R                  " U R                  [        [	        U R                  5       5      5      5      nU R                  U5      $ rD   )rQ   rÉ  rŸ   ri   rÎ   r‹   rž   )rã   rt  s     r8   Úmeta_medianrL     s<   € ä×7Ò7Ø�‰”Uœ5 §¡£Ó-Ó.ó€Lð �?‰?˜<Ó(Ð(r:   c                 ó  • [        U 5      S:X  a  [        R                  " S5        [        R                  " U R                  U45      n[        XU5      nU R                  U5      U R                  U[        R                  S94$ )Nrý   zmedian CUDA with indices outputr–   )	r  rQ   Úalert_not_deterministicr™  rŸ   rš  rž   rX   r›   )rã   r‹   rœ  rt  s       r8   Úmeta_median_mode_dimrO  ¨  sn   € ô �5Ó˜VÓ#Ü×%Ò%Ð&GÔHÜ
×
Ò
˜uŸ{™{¨S¨FÓ
3€CÜ+¨E¸Ó@€Là�‰˜Ó%Ø�‰˜¬E¯J©JˆÐ7ðð r:   c                 ó   • U $ rD   r4   r¹   s    r8   Úmeta_logical_not_rQ  ¾  r¢  r:   c                 óÂ  ^^• [         R                  " [        U5      U R                  5       :¬  S 5        [	        U5       H%  u  mm[         R                  " TS:¬  UU4S j5        M'     [        U5      U R                  5       -
  nSU-  [        U R                  5      -   n[        [        U5      5       Vs/ s H  oCU   X   -  PM     nnU R                  U5      $ s  snf )Nc                  ó   • g)NzZNumber of dimensions of repeat dims can not be smaller than number of dimensions of tensorr4   r4   r:   r8   rg   Úmeta_repeat.<locals>.<lambda>Ç  s   € Ðlr:   r   c                  ó   >• ST ST  3$ )Nz"Repeats cannot be negative, found r  r4   )rç   Úreps   €€r8   rg   rT  Ì  s   ø€ Ð8¸¸¸ZÈÀsÑKr:   r;  )	rX   rj   rÌ   r‹   r#  ri   rŸ   rÎ   rž   )r    rÿ  Únum_new_dimensionsÚpadded_sizerç   Útarget_sizerV  s       ` @r8   Úmeta_repeatrZ  Ã  s¼   ù€ ä	‡L‚LÜˆG‹˜Ÿ™›
Ñ"Ùlôô ˜GÖ$‰ˆˆ3Ü�ŠØ�1‰HÝKö	
ñ %ô ˜W›¨¯©«
Ñ2ÐØÐ+Ñ+¬e°D·J±JÓ.?Ñ?€KÜ8=¼cÀ'»lÔ8KÓLÒ8K°1˜q‘> G¡JÔ.Ñ8K€KÐLØ�>‰>˜+Ó&Ð&ùò Ms   Â6Cc                 ó   • U $ rD   r4   r¹   s    r8   Ú
meta_zero_r\  ×  r¢  r:   c                 ó„   • [        U[        R                  5      (       a   [        U R                  UR                  5        U $ rD   )rt   rX   r   rl   rŸ   ©r    r¬   s     r8   Úmeta_binop_inplacer_  Ü  s,   € ô �%œŸ™×&Ñ&Ü §
¡
¨E¯K©KÔ8Ø€Kr:   c                 ó*  • S nS nS nU" U 5      (       a  U" U5      (       a  [        S5      eU" U 5      (       a  U" U5      (       d  [        S5      e[        U[        R                  5      (       a   [	        U R
                  UR
                  5        U $ )a  
Some checks for inplace ops.
Checks for promotion rules for some dtypes.
int.add/sub_(float) and bool.add/sub_(others) are rejected.
Promoting in these in-place operations would require reallocating
and copying over elements, hence not allowed.
Checks for alpha param.
c                 óŒ   • [        U [        5      (       a   [        R                  " U R                  5      $ [        U [
        5      $ rD   )rt   r   rQ   rW  r`   r   ©rw   s    r8   Úis_integericÚ.meta_binop_inplace_alpha.<locals>.is_integericÿ  s1   € Ü�cœ:×&Ñ&Ü×)Ò)¨#¯)©)Ó4Ð4ä˜c¤7Ó+Ð+r:   c                 óŒ   • [        U [        5      (       a   [        R                  " U R                  5      $ [        U [
        5      $ rD   )rt   r   rQ   r  r`   r   rb  s    r8   Ú
is_floaticÚ,meta_binop_inplace_alpha.<locals>.is_floatic  s1   € Ü�cœ:×&Ñ&Ü×'Ò'¨¯	©	Ó2Ð2ä˜c¤9Ó-Ð-r:   c                 óŒ   • [        U [        5      (       a   [        R                  " U R                  5      $ [        U [
        5      $ rD   )rt   r   rQ   Úis_boolean_dtyper`   r   rb  s    r8   Úis_booleanicÚ.meta_binop_inplace_alpha.<locals>.is_booleanic  s1   € Ü�cœ:×&Ñ&Ü×)Ò)¨#¯)©)Ó4Ð4ä˜c¤8Ó,Ð,r:   z]Promotion of int.add/sub_(float) in in-place ops are not possible due to element size change.z_Promotion of book.add/sub_(others) in in-place ops are not possible due to element size change.)r3  rt   rX   r   rl   rŸ   )r    r¬   rb  rc  rf  rj  s         r8   Úmeta_binop_inplace_alpharl  í  s‰   € ò$,ò.ò-ñ �D×Ñ™j¨×/Ñ/ÜØkó
ð 	
ñ
 �D×Ñ¡,¨u×"5Ñ"5ÜØmó
ð 	
ô �%œŸ™×&Ñ&Ü §
¡
¨E¯K©KÔ8Ø€Kr:   c                 ó2   • [        X[        R                  S9$ ©Nr  ©rV   r   rR   ©r    r¬   rb  s      r8   Úmeta_binop_alpharq  "  s   € ô ØÔ$C×$KÑ$Kñð r:   c                 ó2   • [        U [        R                  S9$ rn  ro  )r    rO  s     r8   Ú
meta_roundrs  .  s   € äØÔ<×DÑDñð r:   c                 ó†  ^ ^^• [         R                  " [        R                  " TR                  5      U U4S j5        [        T[         R                  5      (       a;  [         R                  " [        R                  " TR                  5      U U4S j5        g [         R                  " [        T[        5      U U4S j5        g )Nc                  ó&   >• T  STR                    3$ )Nz7: Expected input tensor to have an integral dtype. Got r–   )ró  r    s   €€r8   rg   Ú#shift_dtype_check.<locals>.<lambda>8  s   ø€ �7�)ÐRÐSW×S]ÑS]ÐR^Ñ_r:   c                  ó&   >• T  STR                    3$ )Nz6: Expected shift value to have an integral dtype. Got r–   ©ró  r®  s   €€r8   rg   rv  =  s   ø€ �w�iÐUÐVY×V_ÑV_ÐU`Ñar:   c                  ó   >• T  ST 3$ )Nz): Expected shift value to be an int. Got r4   rx  s   €€r8   rg   rv  B  s   ø€ �w�iÐHÈÈÑNr:   )rX   rj   rQ   rW  r`   rt   r   r   )ró  r    r®  s   ```r8   Úshift_dtype_checkrz  5  ss   ú€ Ü	‡L‚LÜ×Ò˜tŸz™zÓ*Ý_ôô �#”u—|‘|×$Ñ$Ü�ŠÜ×"Ò" 3§9¡9Ó-Ýaõ	
ô
 	�ŠÜ�sœGÓ$ÝNõ	
r:   c                 óJ   • [        SX5        [        X[        R                  S9$ )NÚrshiftr  ©rz  rV   r   rR   r^  s     r8   Úmeta_rshiftsr~  F  ó%   € ä�h Ô,ÜØÔ$C×$KÑ$Kñð r:   c                 óJ   • [        SX5        [        X[        R                  S9$ )NÚlshiftr  r}  r^  s     r8   Úmeta_lshiftsr‚  N  r  r:   c                 ó8   • U R                  U R                  5      $ rD   r  r¹   s    r8   Ú	meta_zeror„  V  s   € à�>‰>˜$Ÿ*™*Ó%Ð%r:   c                 ó   • U $ rD   r4   ©r    r®  s     r8   Ú
meta_fill_r‡  [  r¢  r:   c                 ó.   • [         R                  " U 5      $ rD   rG  r†  s     r8   Ú	meta_fillr‰  `  ó   € ä×Ò˜DÓ!Ð!r:   c                 ó   • U $ rD   r4   r¹   s    r8   Ú
meta_relu_rŒ  e  r¢  r:   c                 ó2   • [        X[        R                  S9$ rn  ro  rp  s      r8   Úmeta__add_relurŽ  j  s   € ô ØÔ$C×$KÑ$Kñð r:   c                 ó.   • [         R                  " U 5      $ rD   rG  ©r    ÚnoiseÚlowerrÿ  rñ  r  s         r8   Úmeta_rrelu_with_noiser“  r  s   € ô
 ×Ò˜DÓ!Ð!r:   c                 óZ   • [         R                  " U 5      [         R                  " U5      4$ rD   rG  r�  s         r8   Ú meta_rrelu_with_noise_functionalr•  z  s%   € ô ×Ò˜DÓ!¤5×#3Ò#3°EÓ#:Ð:Ð:r:   c                 ó   • U $ rD   r4   )r    r’  rÿ  rñ  r  s        r8   Úmeta_rrelu_with_noise_r—  �  s	   € ð €Kr:   c                 ó.   • [         R                  " U 5      $ rD   rG  ©r    r¼   r»   Ú
accumulates       r8   Úmeta_index_putr›  ˆ  rŠ  r:   c                 óF   • [        U R                  UR                  5        U $ rD   ©rl   rŸ   )r    r¸  Úvalues      r8   Úmeta_masked_fill_rŸ  �  s   € ä˜DŸJ™J¨¯
©
Ô3Ø€Kr:   c                 ó†   • U R                  U R                  5       5      R                  [        R                  " U 5      S9nU$ rÃ   )rž   r«   r4  rQ   r   )r    r¸  r°  Úmasked_scales       r8   Úmeta__masked_scaler¢  “  s<   € à—>‘> $§)¡)£+Ó.×1Ñ1Ü×1Ò1°$Ó7ð 2ð €Lð Ðr:   c                 óö   ^ ^• [         R                  " UR                  [         R                  [         R                  4;   S 5        [         R                  " T R                  TR                  :H  U U4S j5        T $ )Nc                  ó   • g)NzMask must be bool or uint8r4   r4   r:   r8   rg   Ú&meta_masked_scatter_.<locals>.<lambda>ž  s   € Ð9Ur:   c                  ó<   >• ST R                    STR                    3$ )NzEmasked_scatter: expected self and source to have same dtypes but got r©   r–   )r    rw  s   €€r8   rg   r¥  ¢  s    ø€ ð ØŸ*™*˜ U¨6¯<©<¨.ñ:r:   )rX   rj   r`   r  r  )r    r¸  rw  s   ` `r8   Úmeta_masked_scatter_r§  ›  sU   ù€ ä	‡L‚LØ�
‰
”u—z‘z¤5§;¡;Ð/Ñ/Ñ1Uôô 
‡L‚LØ�
‰
�f—l‘lÑ"õ	:ôð
 €Kr:   c                 óz   • [        X5      u  p[        R                  " U [        R                  S9n[	        X1U5      $ rÃ   )r&   rX   r·   r¸   r§  )r    r¸  rw  r
  s       r8   Úmeta_masked_scatterr©  ¨  s5   € ô " $Ó-�J€DÜ×Ò˜d´%×2IÑ2IÑJ€FÜ ¨fÓ5Ð5r:   c                 ó$   • U R                  U5      $ rD   r“  )r    r¸  ra  s      r8   Úmeta_masked_scatter_backwardr«  °  s   € à�>‰>˜%Ó Ð r:   c                 ó   • U $ rD   r4   r™  s       r8   Úmeta_index_put_r­  µ  r¢  r:   c           	      óî  ^^^^^• SSK JnJn  [        R                  " U R                  5       S:H  S 5        [        R                  " UR                  5       S:H  S 5        U R                  5       nUR                  5       mUS   mUS   mUS   nTS   n	TX‰4m[        R                  " U" U" TS   T5      U" TS   T5      5      UUU4S j5        U(       a©  U R                  [        R                  :H  =(       d    U R                  [        R                  :H  =(       a    U[        R                  :H  n
[        R                  " X@R                  :H  =(       d    U
S	 5        UR                  T5      R                  U5      nOUR                  T5      nU(       d]  TbZ  [        R                  " TR                  5       S:H  S
 5        [        R                  " U" TR                  5       T5      UU4S j5        U$ )Nr   )Úsym_andrƒ  r0   c                  ó   • gr…  r4   r4   r:   r8   rg   Ú)common_meta_baddbmm_bmm.<locals>.<lambda>½  r‡  r:   c                  ó   • gr‰  r4   r4   r:   r8   rg   r±  ¾  r‡  r:   rù   r3   c            	      ó.   >• ST ST ST S    ST S    S3	$ rŽ  r4   r�  s   €€€r8   rg   r±  Ë  s3   ø€ ÐRÐSUÐRVØ
ÐÐ˜l¨<¸©?Ð*;¸2¸lÈ1¹oÐ=NÈbñRr:   c                  ó   • g)Nzfout_dtype only supported for torch.float32 output with float16/bfloat16 inputs or same as input dtypesr4   r4   r:   r8   rg   r±  Ô  s   € Ð|r:   c                  ó   • g)Nzself must be a 3D tensorr4   r4   r:   r8   rg   r±  Ü  s   € Ð6Pr:   c                  ó0   >• ST  STR                  5        3$ )Nz*Expected an input tensor shape with shape z but got shape: rª   )rÃ  Úself_baddbmms   €€r8   rg   r±  ß  s   ø€ Ð@ÀÀÐM]Ð^j×^oÑ^oÓ^qÐ]rÑsr:   )r1  r¯  rƒ  rX   rj   r‹   r«   r`   rn  ro  rm  rž   r4  )r‹  rŒ  Úis_bmmr·  rJ  r¯  rƒ  rš  Úres_rowsÚres_colsÚsupported_out_dtyper
  r‘  r’  r“  rÃ  s      `        @@@@r8   Úcommon_meta_baddbmm_bmmr¼  º  s�  ü€ ßEä	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIà—;‘;“=€LØ—;‘;“=€Là	�a‰€BØ# A‘ÐØ˜A‰€HØ˜A‰€HØ�xÐ*€Kä	‡L‚LÙ‘�| A‘¨Ó+©V°LÀ±OÐEUÓ-VÓWö	Rôö
 à�L‰LœEŸM™MÑ)×K¨V¯\©\¼U¿^¹^Ñ-K÷)àœ5Ÿ=™=Ñ(ð 	ô 	�ŠØŸ™Ñ%×<Ð)<Ù|ô	
ð ×!Ñ! +Ó.×1Ñ1°)Ó<‰ð ×!Ñ! +Ó.ˆæ�lÑ.Ü�Š�\×%Ñ%Ó'¨1Ñ,Ñ.PÔQÜ�ŠÙ�<×$Ñ$Ó&¨Ó4Ýsô	
ð
 €Mr:   c                 ó   • [        XS5      $ )NT©r¼  )r    rW  s     r8   Úmeta_bmmr¿  å  s   € ä" 4¨tÓ4Ð4r:   c                 ó   • [        XSUS9$ )NT)rJ  r¾  )r    rW  rJ  s      r8   Úmeta_bmm_dtyperÁ  ê  s   € ä" 4¨t¸yÑIÐIr:   c                 óh   • X-  nX-  nUS:w  a#  [        US:  5      [        US:  5      :w  a  US-  nU$ r+  )r  )r=   r>   Úqr~  s       r8   Údiv_rtnrÄ  ï  s>   € Ø	‰€AØ	‰€Að 	ˆAƒv”4˜˜A™“;¤$ q¨1¡u£+Ó-Ø	ˆQ‰ˆØ€Hr:   c                 ó˜   • [        U U-   U-   XQS-
  -  -
  S-
  U(       a  US-
  OS-   U5      S-   nU(       a  US-
  U-  X-   :¼  a  US-  nU$ rÿ  )rÄ  )Ú	inputSizeÚ
kernelSizer   r  rÐ   rÐ  rA  Ú
outputSizes           r8   Úpooling_output_shape_pad_lrrÉ  ù  sˆ   € ô 	ØØñàñð  q™.Ñ)ñ*ð ñ	ö
 'ˆv˜Šz¨Añ/ð ó	
ð ñ		ð ö Ø˜‰N˜fÑ$¨	Ñ(9Ó9Ø˜!‰OˆJØÐr:   c           	      óô   ^^^• [         R                  " US:g  S 5        [         R                  " TS:¬  U4S j5        [         R                  " TTS-
  T-  S-   S-  :*  UUU4S j5        [        U TTTUTU5      $ )Nr   c                  ó   • g)Nzstride should not be zeror4   r4   r:   r8   rg   Ú&pooling_output_shape.<locals>.<lambda>  s   € Ð&Ar:   c                  ó   >• ST  3$ )Nz'pad must be non-negative, but got pad: r4   ©Úpads   €r8   rg   rÌ    s   ø€ Ð%LÈSÈEÑ#Rr:   r3   rù   c                  ó   >• ST ST ST  3$ )NzApad should be at most half of effective kernel size, but got pad=z, kernel_size=z and dilation=r4   )rÐ  rÇ  rÏ  s   €€€r8   rg   rÌ    s"   ø€ ØOÐPSÈuð UØ%˜, n°X°Jñ@r:   )rX   rj   rÉ  )rÆ  rÇ  rÏ  rÐ   rÐ  rA  s    `` ` r8   rz  rz    ss   ú€ Ü	‡L‚L�˜1‘ÑAÔBÜ	‡L‚L�˜‘ÔRÔSÜ	‡L‚LØ�˜a‘ 8Ñ+¨aÑ/°AÑ5Ñ5ö	
ôô 'Ø�:˜s C¨°¸9óð r:   c           	      óü  ^ ^^^^^^^^^	^
^^^^• T R                  5       nT	m[        R                  " TS:„  =(       a    TS:„  UU4S j5        [        R                  " TS:„  =(       a    TS:„  UU4S j5        [        R                  " TS:„  =(       a    TS:„  UU4S j5        T R                  S5      S:g  =(       a    T R                  S5      S:g  nU[        R                  :X  aC  [        R                  " US:H  =(       a    U=(       a    T R                  S5      S:g  U 4S	 j5        Or[        R                  " US:H  =(       a    T R                  S5      S:g  =(       a    U=(       d)    US:H  =(       a    U=(       a    T R                  S5      S:g  U 4S
 j5        [        R                  " TS-  T:¬  =(       a    TS-  T:¬  UUUU4S j5        [        R                  " TS:¬  =(       a    TS:¬  U
UU	UUU4S j5        g )Nr   c                  ó   >• ST  ST 3$ )Nz5kernel size should be greater than zero, but got kH: ú, kW: r4   )r~  r  s   €€r8   rg   Ú$pool2d_shape_check.<locals>.<lambda>9  s   ø€ ÐGÈÀtÈ6ÐRTÐQUÑVr:   c                  ó   >• ST  ST 3$ )Nz0stride should be greater than zero, but got dH: ú, dW: r4   )r€  r�  s   €€r8   rg   rÔ  =  s   ø€ ÐBÀ2À$ÀfÈRÈDÑQr:   c                  ó   >• ST  ST 3$ )Nz9dilation should be greater than zero, but got dilationH: ú, dilationW: r4   )Ú	dilationHÚ	dilationWs   €€r8   rg   rÔ  A  s   ø€ ÐKÈIÈ;ÐVcÐdmÐcnÑor:   r3   rù   r0  r0   c                  ó*   >• ST R                  5        3$ )Nz€Expected 4D (batch mode) tensor expected for input with channels_last layout with optional 0 dim batch size for input, but got: rª   r  s   €r8   rg   rÔ  I  s   ø€ ð CØCHÇ:Á:Ã<À.ñRr:   c                  ó*   >• ST R                  5        3$ )NzYExpected 3D or 4D (batch mode) tensor with optional 0 dim batch size for input, but got: rª   r  s   €r8   rg   rÔ  P  s   ø€ ÐoÐpu×pzÑpzÓp|Ðo}Ñ~r:   c                  ó    >• ST ST ST ST  3$ )NzKpad should be smaller than or equal to half of kernel size, but got padW = z	, padH = z, kW = z, kH = r4   )r~  r  r‚  rƒ  s   €€€€r8   rg   rÔ  U  s$   ø€ ð Ø��y   g¨b¨T°¸¸ñ>r:   c                  ó.   >• ST ST  ST ST ST ST S3$ ©NzGiven input size: (r=   z). Calculated output size: (z). Output size is too smallr4   )r„  r…  rB  rŠ  rC  rD  s   €€€€€€r8   rg   rÔ  [  s8   ø€ Ð% k ]°!°K°=ÀÀ*Àð N$Ø$0 >°°<°.ÀÀ+Àð O#ñ#r:   )r‹   rX   rj   r«   rë  )rã   r~  r  r€  r�  r‚  rƒ  rÙ  rÚ  rB  r„  r…  rC  rD  r´   r­   Ú
valid_dimsrŠ  s   ``````````````   @r8   r{  r{  #  sƒ  ÿþ€ ð" �9‰9‹;€DØ€Lä	‡L‚LØ
ˆQ‰×�2˜‘6ÝVôô 
‡L‚LØ
ˆQ‰×�2˜‘6ÝQôô 
‡L‚LØ�A‰×'˜) a™-Ýoôð
 —‘˜A“ !Ñ#×:¨¯
©
°1«¸Ñ(:€Jàœ×+Ñ+Ó+Ü�ŠØ�A‰I×;˜*×;¨¯©°A«¸!Ñ);ôRõ	
ô 	�ŠØ�Q‰Y×<˜5Ÿ:™: a›=¨AÑ-×<°*÷ AØ˜‘	×?˜j×?¨U¯Z©Z¸«]¸aÑ-?Ü~ô	
ô 
‡L‚LØ
ˆa‰�4‰×+˜B !™G t™O÷	>ôô 
‡L‚LØ�qÑ×.˜\¨QÑ.÷	#ñ 	#õr:   r«  r¨  r~  r  r©  r€  r�  ÚpTÚpHÚpWÚ	dilationTrÙ  rÚ  r¬  r­  r®  r¯  r°  r±  r¦  c           
      óø  ^ ^^^^^^^^^	^
^^^^^^^^^^^• T R                   n[        R                  " TS:„  =(       a    TS:„  =(       a    TS:„  UUU4S j5        [        R                  " TS:„  =(       a    TS:„  =(       a    TS:„  UUU4S j5        [        R                  " TS:„  =(       a    TS:„  =(       a    TS:„  UUU4S j5        [        R                  " US;   UU 4S j5        [        U5       H@  mUS:X  a  TS:X  a  M  [        R                  " T R	                  T5      S:„  UUU 4S j5        MB     U(       a;  [        R                  " TT:¬  =(       a    TT:¬  =(       a    TT:¬  UUUUUU4S	 j5        [        R                  " TS
-  T:¬  =(       a    TS
-  T
:¬  =(       a    TS
-  T	:¬  UUUU	UU
4S j5        [        R                  " TS:¬  =(       a    TS:¬  =(       a    TS:¬  UUUUUUU4S j5        g )Nr   c                  ó   >• ST ST  ST 3$ )Nz5kernel size should be greater than zero, but got kT: z, kH: rÓ  r4   )r~  r¨  r  s   €€€r8   rg   Ú$pool3d_shape_check.<locals>.<lambda>}  s   ø€ ðØ�$�f˜R˜D  r dñ,r:   c                  ó   >• ST ST  ST 3$ )Nz0stride should be greater than zero, but got dT: z, dH: rÖ  r4   )r€  r©  r�  s   €€€r8   rg   rç  „  s   ø€ Ø>¸r¸dÀ&ÈÈÈFÐSUÐRVÑWr:   c                  ó   >• ST ST  ST 3$ )Nz9dilation should be greater than zero, but got dilationT: z, dilationH: rØ  r4   )rÙ  rä  rÚ  s   €€€r8   rg   rç  Š  s   ø€ ðØ#˜ M°)°¸MÈ)ÈñVr:   r¡  c                  ó&   >• T  STR                    3$ )Nz/: Expected 4D or 5D tensor for input, but got: rR  )ró  rã   s   €€r8   rg   rç  ’  s   ø€ �7�)ÐJÈ5Ï;É;È-ÑXr:   rX  c                  óL   >• T  STR                    STR                  T5       S3$ )NzZ: Expected input's non-batch dimensions to have positive length, but input has a shape of z and non-batch dimension z has length zero!)rŸ   r«   )ró  rç   rã   s   €€€r8   rg   rç  ›  s.   ø€ Ø�)ð -Ø-2¯[©[¨MØ+¨E¯J©J°q«M¨?Ð:KñMr:   c                  ó.   >• ST ST  ST ST ST ST S3$ )Nzinput image (T: ra  r:  z ) smaller than kernel size (kT: ú kH: ú kW: r~   r4   )r­  r¬  r®  r~  r¨  r  s   €€€€€€r8   rg   rç  ¥  s4   ø€ Ø" 5 '¨¨g¨Y°d¸6¸(ð C$Ø$& 4 u¨R¨D°°b°T¸ñ<r:   rù   c                  ó,   >• ST ST ST  ST ST ST 3$ )NzHpad should be smaller than or equal to half of kernel size, but got kT: rî  rí  z padT: z padW: z padH: r4   )r~  r¨  r  râ  rá  rã  s   €€€€€€r8   rg   rç  ­  s1   ø€ ðØ�$�e˜B˜4˜u R D¨°¨t°7¸2¸$¸gÀbÀTñKr:   r3   c                  ó:   >• ST ST ST  ST ST ST ST ST S3$ rß  r4   )r­  r¬  r®  r«  r°  r¯  r±  s   €€€€€€€r8   rg   rç  µ  sD   ø€ Ø! ' ¨!¨E¨7°!°G°9¸A¸f¸Xð F(Ø(/ y°°%°¸¸'¸À!ÀFÀ8ð L'ñ(r:   )r­   rX   rj   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ç   s   `````````````````````  @r8   r§  r§  a  s�  ÿÿý€ ð0 �:‰:€Dä	‡L‚LØ
ˆQ‰×$�2˜‘6×$˜b 1™fö	
ôô 
‡L‚LØ
ˆQ‰×$�2˜‘6×$˜b 1™fö	
ôô 
‡L‚LØ�A‰×9˜) a™-×9¨I¸©Mö	
ôô 
‡L‚LØ�‰ÝXôô
 �4Ž[ˆØ�1‹9˜˜a›áÜ�ŠØ�J‰J�q‹M˜AÑöö	
ñ	 ö Ü�ŠØ�R‰K×:˜G r™M×:¨f¸©l÷ñ ô	
ô 
‡L‚LØ
ˆQ‰�"‰×6˜˜a™ 2™×6¨"¨q©&°B©,÷	
ñ 	
ôô 
‡L‚LØ�‰
×3�v ‘{×3 w°!¡|÷	
ò 	
õr:   c                 ój  • U R                   n[        U UUUUUUU	U
UUUUUUUUUUUU5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        g )Nr0  r0   rù   r3   ©r­   r§  r\  )rã   r%  r¼   r«  r¨  r~  r  r©  r€  r�  rá  râ  rã  rä  rÙ  rÚ  r¬  r­  r®  r¯  r°  r±  ró  r­   s                           r8   Úmax_pool3d_backward_shape_checkró  ½  sæ   € ð2 �:‰:€DäØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØô+ô0 �;  d¨Q¡h°Ô8Ü�;  d¨Q¡h°Ô6Ü�;  d¨Q¡h°Ô8Ü�;  d¨Q¡h°Ô7ä�7˜D $¨¡(¨GÔ4Ü�7˜D $¨¡(¨EÔ2Ü�7˜D $¨¡(¨GÔ4Ü�7˜D $¨¡(¨FÕ3r:   c                 óä   • U R                   n[        U UUUUUUUU	U
USSSUUUUUUUS5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        g )Nr3   Tr0  r0   rù   rò  )rã   r%  r«  r¨  r~  r  r©  r€  r�  rá  râ  rã  r¬  r­  r®  r¯  r°  r±  ró  r­   s                       r8   rº  rº  û  s¡   € ð* �:‰:€DäØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø	Ø	Ø	ØØØØØØØØô-ô2 �;  d¨Q¡h°Ô8Ü�;  d¨Q¡h°Ô6Ü�;  d¨Q¡h°Ô8Ü�;  d¨Q¡h°Õ7r:   c                 óú  • S nU" SU5      u  px[         R                  " [        U5      S;   S 5        [        U5      S:X  a  Xxp©OU" SU5      u  pšU" SU5      u  p¼U" SU5      u  pÞU R                  S	5      nU R                  S
5      nU R                  S5      n[        R
                  " U 5      nU[         R                  :X  a*  [         R                  " U R                  5       S:H  S 5        OVU[         R                  :X  a*  [         R                  " U R                  5       S;   S 5        O[         R                  " SS 5        [        UX{X�U5      n[        UXŒX®U5      n[        U UUU	U
UUUUUUUUUU5        UUU4$ )Nc                 óŽ   ^ • [         R                  " [        U5      S;   U 4S j5        US   n[        U5      S:X  a  UOUS   nX#4$ )Nr_  c                  ó   >• ST  S3$ )Nzmax_pool2d: ra  r4   rb  s   €r8   rg   ÚEmax_pool2d_checks_and_compute_shape.<locals>.unpack.<locals>.<lambda>=  rd  r:   r   r3   re  rf  s   `   r8   ri  Ú3max_pool2d_checks_and_compute_shape.<locals>.unpack:  rk  r:   rã  rl  c                  ó   • g)NzOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intsr4   r4   r:   r8   rg   Ú5max_pool2d_checks_and_compute_shape.<locals>.<lambda>G  rp  r:   r   rÐ   rð  rÐ  rv  rÐ  r¢   r0  c                  ó   • g)NzMnon-empty 4D (batch mode) tensor expected for input with channels_last layoutr4   r4   r:   r8   rg   rû  X  s   € Ðcr:   rÝ  c                  ó   • g)Nz9non-empty 3D or 4D (batch mode) tensor expected for inputr4   r4   r:   r8   rg   rû  ]  ó   € ÐOr:   Fc                  ó   • g)NzAUnsupported memory format. Supports only ChannelsLast, Contiguousr4   r4   r:   r8   rg   rû  b  s   € ÐWr:   )rX   rj   rÌ   r«   rQ   r   rë  r‹   r¸   rz  r{  )rã   rã  rÐ   rð  rÐ  rA  ri  r~  r  r€  r�  r‚  rƒ  rÙ  rÚ  rB  r„  r…  r´   rC  rD  s                        r8   r?  r?  1  sy  € òñ �M ;Ó/�F€Bä	‡L‚LÜˆF‹�yÑ Ùaôô ˆ6ƒ{�aÓØ‰Bá˜ &Ó)‰ˆá˜	 7Ó+�J€DÙ! *¨hÓ7Ñ€IØ—*‘*˜R“.€KØ—*‘*˜R“.€KØ—‘˜B“€Jä×/Ò/°Ó6€MØœ×+Ñ+Ó+Ü�ŠØ�I‰I‹K˜1ÑÙcõ	
ð 
œ%×1Ñ1Ó	1Ü�ŠØ�I‰I‹K˜6Ñ!ÙOõ	
ô
 	�ŠØÙWô	
ô
 (¨°R¸rÈiÓX€LÜ& z°2¸RÈIÓV€KäØØ
Ø
Ø
Ø
ØØØØØØØØØØôð$ ˜ kÐ1Ð1r:   c                 ó|  ^ ^^^^^• [        TX#XEU5      u  nmm[        R                  " TR                  T R                  :H  U U4S j5        UmTR                  mUUUU4S jn	U	" T 5        U	" U5        [
        R                  " T5      n
[        R                  " TR                  TR                  TR                  U
S9$ )Nc                  ó<   >• STR                    ST R                    3$ )NzExpected dtype z  for `gradOutput` but got dtype r–   r×  s   €€r8   rg   Ú7meta_max_pool2d_with_indices_backward.<locals>.<lambda>’  s   ø€ �/ $§*¡* Ð-MÈk×N_ÑN_ÐM`Ñar:   c                 ól   >• [        U TTS-
  T5        [        U TTS-
  T5        [        U TTS-
  T5        g )Nr0   rù   r3   )r\  )rá  rŠ  r­   rC  rD  s    €€€€r8   Ú_check_dim_sizeÚ>meta_max_pool2d_with_indices_backward.<locals>._check_dim_size˜  s9   ø€ Ü�q˜$  q¡¨,Ô7Ü�q˜$  q¡¨,Ô7Ü�q˜$  q¡¨+Õ6r:   r‹  )
r?  rX   rj   r`   r­   rQ   r   r‘   rŸ   rˆ   )r%  r    rã  rÐ   rð  rÐ  rA  r¼   rB  r  r´   rŠ  r­   rC  rD  s   ``         @@@@r8   Ú%meta_max_pool2d_with_indices_backwardr  }  s¬   ý€ ô 	,Øˆk 7°ió	ñ	ØØØô
 
‡L‚LØ�
‰
�k×'Ñ'Ñ'Ýaôð
 €LØ�9‰9€D÷7ð 7ñ
 �KÔ Ù�GÔä×/Ò/°Ó5€MÜ�;Š;Ø�
‰
Ø�j‰jØ�{‰{Ø#ñ	ð r:   c                 óŒ  • [        XX#XE5      u  nnnU R                  5       S:X  a  U R                  S5      OSn	[        R                  " U 5      n
U R                  5       S:X  a  XgU/nOX–Xx/n[
        R                  " UU R                  U R                  U
S9[
        R                  " U[
        R                  U R                  U
S94$ r=  )
r?  r‹   r«   rQ   r   rX   r‘   r`   rˆ   r¿   r@  s               r8   Úmeta_max_pool2d_with_indicesr  ©  s½   € ô 	,Ø˜F¨Xó	ñ	ØØØð
  %Ÿy™y›{¨aÓ/ˆU�Z‰Z˜Œ^°Q€FÜ×/Ò/°Ó6€MØ‡y�yƒ{�aÓØ¨;Ð7‰à \Ð?ˆä�ŠØØ—+‘+Ø—<‘<Ø'ñ		
ô 	�ŠØÜ—+‘+Ø—<‘<Ø'ñ		
ðð r:   c                 ó�  ^ ^^^
^^• [         R                  " T R                  S;   U 4S j5        T R                  n[        US-
  U5       H1  m
[         R                  " T R	                  T
5      S:„  U
U 4S j5        M3     [         R                  " [        T5      S:H  S 5        [         R                  " [        U5      S:H  S 5        T R	                  S	5      nT R	                  S
5      mT R	                  S5      mUS:X  a  T R	                  S5      nOSn[         R                  " T R                  TR                  :H  S 5        [         R                  " TR                  S:H  U4S j5        TR	                  S5      nTR	                  S5      nTR	                  S5      m
[         R                  " Xv:¬  S 5        [         R                  " X…:H  S 5        [         R                  " T
S:H  U
4S j5        [         R                  " US   TS   -   S-
  T:*  UU4S j5        [         R                  " US   TS   -   S-
  T:*  UU4S j5        T R                  5       S:X  a  XeUS   US   /n	O
XRS   US   /n	[         R                  " U	T R                  T R                  S9[         R                  " U	[         R                  T R                  S94$ )NrÝ  c                  ó"   >• ST R                    3$ )Nz:fractional_max_pool2d: Expected 3D or 4D tensor, but got: r  r¹   s   €r8   rg   Ú,meta_fractional_max_pool2d.<locals>.<lambda>Ô  s   ø€ ÐLÈTÏYÉYÈKÑXr:   r0   r   c                  ó2   >• STR                  5        ST  S3$ )Nz_fractional_max_pool2d: Expected input to have non-zero  size for non-batch dimensions, but got rË  z emptyrª   )rÞ   r    s   €€r8   rg   r  Û  s%   ø€ ð 7Ø7;·y±y³{°mÐCSÐTUÐSVÐV\ñ^r:   rù   c                  ó   • g)NzNfractional_max_pool2d: kernel_size musteither be a single int or tuple of Intsr4   r4   r:   r8   rg   r  â  ó   € ð 2r:   c                  ó   • g)NzOfractional_max_pool2d: output_size must either be a single int or tuple of Intsr4   r4   r:   r8   rg   r  ç  r  r:   rv  rÐ  r¢   r0  r3   c                  ó   • g)Nz6Expect _random_samples to have the same dtype as inputr4   r4   r:   r8   rg   r  õ  s   € ÐHr:   c                  ó"   >• ST R                    3$ )Nz1Expect _random samples to have 3 dimensions got, r  )Úrandom_sampless   €r8   rg   r  ù  s   ø€ ÐCÀN×DWÑDWÐCXÑYr:   c                  ó   • g)Nz=Expect _random_samples.size(0) no less then input batch size.r4   r4   r:   r8   rg   r    r§   r:   c                  ó   • g)Nz<Expect _random_samples.size(1) equals to input channel size.r4   r4   r:   r8   rg   r    ó   € ÐNr:   c                  ó   >• ST  S3$ )Nz/Expect _random_samples.size(2) equals to 2 got Ú.r4   )rÞ   s   €r8   rg   r    s   ø€ Ð#RÐSTÐRUÐUVÑ!Wr:   c                  ó   >• STS    ST  3$ )Nz%fractional_max_pool2d: kernel height r   z' is too large relative to input height r4   )Úinput_heightrã  s   €€r8   rg   r    s   ø€ Ð7¸ÀA¹Ð7GÐGnÐo{Ðn|Ñ}r:   c                  ó   >• STS    ST  3$ )Nz$fractional_max_pool2d: kernel width r3   z& is too large relative to input width r4   )Úinput_widthrã  s   €€r8   rg   r    s   ø€ Ð6°{À1±~Ð6FÐFlÐmxÐlyÑzr:   r	  )rX   rj   r­   rÎ   r«   rÌ   r`   r‹   r‘   rˆ   r¿   )r    rã  rÃ  r  r­   Úinput_channelsÚinput_batchr  Úcr«   rÞ   r  r  s   `` `      @@@r8   Úmeta_fractional_max_pool2dr  Ð  sf  ý€ ä	‡L‚LØ�	‰	�VÑÜXôð �9‰9€Dä�4˜!‘8˜TÖ"ˆÜ�ŠØ�I‰I�a‹L˜1Ñõ^ö	
ñ #ô 
‡L‚LÜˆKÓ˜AÑñ	2ôô
 
‡L‚LÜˆKÓ˜AÑñ	2ôð —Y‘Y˜r“]€NØ—9‘9˜R“=€LØ—)‘)˜B“-€KØˆqƒyØ—i‘i “l‰àˆä	‡L‚LØ�
‰
�n×*Ñ*Ñ*ÙHôô 
‡L‚LØ×Ñ˜qÑ ÜYôð
 	×Ñ˜AÓ€AØ×Ñ˜AÓ€AØ×Ñ˜AÓ€AÜ	‡L‚LØ	ÑÙOôô 
‡L‚LØ	ÑÙNôô 
‡L‚L��a‘ÔWÔXä	‡L‚LØ�A‰˜ Q™Ñ'¨!Ñ+¨|Ñ;Ý}ôô 
‡L‚LØ�A‰˜ Q™Ñ'¨!Ñ+¨{Ñ:Ýzôð
 ‡x�xƒz�QƒØ¨[¸©^¸[È¹^ÐL‰à¨A¡°¸A±Ð?ˆô 	�ŠØØ—*‘*Ø—;‘;ñ	
ô
 	�ŠØÜ—+‘+Ø—;‘;ñ	
ðð r:   c                 óH  • [         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " U(       + =(       d    [        U5      S;   S 5        U(       d  UOUS   n	U(       d  UO[        U5      S:X  a  U	OUS   n
U(       d  UO[        U5      S:X  a  U	OUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " U R                  S	;   S
 5        U R                  S:X  a  U R	                  S5      OSnU R	                  S5      nU R	                  S5      nU R	                  S5      nU R	                  S5      n[        UXlXŸU5      n[        UX}U
UU5      n[        UXŽUUU5      n[        U UUUUU	U
UUUUUUUUUUUUUS5        U R                  S:H  =(       a'    [        R                  " U 5      [         R                  :H  nU R                  S:X  a  UUUU4nOUUUUU4nU R                  U5      nU R                  U[         R                  S9nU(       a:  UR                  [         R                  S9nUR                  [         R                  S9nUU4$ )Nr–  c                  ó   • g©NzMmax_pool3d: kernel_size must either be a single int, or a tuple of three intsr4   r4   r:   r8   rg   Ú.meta_max_pool3d_with_indices.<locals>.<lambda>1  ó   € Ð_r:   r   r3   rù   c                  ó   • g©NzQmax_pool3d: stride must either be omitted, a single int, or a tuple of three intsr4   r4   r:   r8   rg   r#  9  ó   € Ðcr:   c                  ó   • g©NzImax_pool3d: padding must either be a single int, or a tuple of three intsr4   r4   r:   r8   rg   r#  A  ó   € Ð[r:   c                  ó   • g©NzJmax_pool3d: dilation must be either a single int, or a tuple of three intsr4   r4   r:   r8   rg   r#  I  r«  r:   r¡  c                  ó   • gr£  r4   r4   r:   r8   rg   r#  Q  r¤  r:   rX  éûÿÿÿr>  rv  rÐ  r¢   zmax_pool3d_with_indices()r0  r–   r³   )rX   rj   rÌ   r­   r«   rz  r§  rQ   r   r  rž   r¿   r4  )rã   rã  rÐ   rð  rÐ  rA  r¨  r~  r  r©  r€  r�  rá  râ  rã  rä  rÙ  rÚ  r	  r«  r¬  r­  r®  r¯  r°  r±  rë  r°   r×   r¼   s                                 r8   Úmeta_max_pool3d_with_indicesr/  %  sü  € ô 
‡L‚LÜˆKÓ˜FÑ"Ù_ôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ�;Ó 1Ó$‰¨+°a©.€Bä	‡L‚LØŒ
×+”c˜&“k VÑ+Ùcôö ‰˜v a™y€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€Bä	‡L‚LÜˆG‹˜ÑÙ[ôð 
�‰€BÜ�7‹|˜qÓ ‰ g¨a¡j€BÜ�7‹|˜qÓ ‰ g¨a¡j€Bä	‡L‚LÜˆH‹˜ÑÙ\ôð ˜‘€IÜ  ›]¨aÓ/‘	°X¸a±[€IÜ  ›]¨aÓ/‘	°X¸a±[€Iä	‡L‚LØ�
‰
�fÑÙKôð
  %Ÿz™z¨Q›ˆU�Z‰Z˜Œ^°A€FØ�j‰j˜‹n€GØ�J‰J�r‹N€EØ�j‰j˜‹n€GØ�Z‰Z˜‹^€Fä  ¨°¸yÓI€EÜ" 7¨B°B¸	À9ÓM€GÜ! &¨"°"°iÀÓK€FäØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ#ô+ð4 	�
‰
�a‰×XœE×7Ò7¸Ó>Ä%×BXÑBXÑXð ð ‡z�z�QƒØ˜e W¨fÐ5‰	à˜W e¨W°fÐ=ˆ	à
�/‰/˜)Ó
$€CØ�o‰o˜i¬u¯{©{ˆoÐ;€GæØ�f‰f¤5×#9Ñ#9ˆfÐ:ˆØ—*‘*¬5×+AÑ+A�*ÐBˆà�ˆ<Ðr:   c                 ór  • [         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n	[        U5      S:X  a  UOUS   n
[         R                  " U(       + =(       d    [        U5      S;   S 5        U(       d  UOUS   nU(       d  U	O[        U5      S:X  a  UOUS   nU(       d  U
O[        U5      S:X  a  UOUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " UR                  S	;   S
 5        UR	                  S5      nUR	                  S5      nUR	                  S5      nUR	                  S5      nU R	                  S5      nU R	                  S5      nU R	                  S5      n[        UU UUUU	U
UUUUUUUUUUUUUUUS5        UR                  S:H  =(       a'    [        R                  " U5      [         R                  :H  nUR                  UR                  5      nU(       a  UR                  [         R                  S9nU$ )Nr–  c                  ó   • gr"  r4   r4   r:   r8   rg   Ú7meta_max_pool3d_with_indices_backward.<locals>.<lambda>—  r$  r:   r   r3   rù   c                  ó   • gr&  r4   r4   r:   r8   rg   r2  Ÿ  r'  r:   c                  ó   • gr)  r4   r4   r:   r8   rg   r2  §  r*  r:   c                  ó   • gr,  r4   r4   r:   r8   rg   r2  ¯  r«  r:   r¡  c                  ó   • gr£  r4   r4   r:   r8   rg   r2  ·  r¤  r:   r>  rv  rÐ  r¢   z"max_pool3d_with_indices_backward()rX  r³   )rX   rj   rÌ   r­   r«   ró  rQ   r   r  rž   rŸ   r4  )r%  rã   rã  rÐ   rð  rÐ  rA  r¼   r¨  r~  r  r©  r€  r�  rá  râ  rã  rä  rÙ  rÚ  r«  r¬  r­  r®  r¯  r°  r±  rë  r(  s                                r8   Ú%meta_max_pool3d_with_indices_backwardr7  ‰  s�  € ô 
‡L‚LÜˆKÓ˜FÑ"Ù_ôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ�;Ó 1Ó$‰¨+°a©.€Bä	‡L‚LØŒ
×+”c˜&“k VÑ+Ùcôö ‰˜v a™y€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€Bä	‡L‚LÜˆG‹˜ÑÙ[ôð 
�‰€BÜ�7‹|˜qÓ ‰ g¨a¡j€BÜ�7‹|˜qÓ ‰ g¨a¡j€Bä	‡L‚LÜˆH‹˜ÑÙ\ôð ˜‘€IÜ  ›]¨aÓ/‘	°X¸a±[€IÜ  ›]¨aÓ/‘	°X¸a±[€Iä	‡L‚LØ�
‰
�fÑÙKôð
 �j‰j˜‹n€GØ�J‰J�r‹N€EØ�j‰j˜‹n€GØ�Z‰Z˜‹^€Fà×Ñ˜RÓ €EØ×Ñ˜rÓ"€GØ×Ñ˜bÓ!€Fä#ØØØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ,ô/ð8 	�
‰
�a‰×XœE×7Ò7¸Ó>Ä%×BXÑBXÑXð ð —‘ §¡Ó-€JæØ—]‘]´×1GÑ1G�]ÐHˆ
àÐr:   Úgridc                 óœ  ^ ^^• [         R                  " T R                  TR                  :H  UU 4S j5        [         R                  " T R                  [         R                  :H  =(       a    TR                  [         R                  :H  UU 4S j5        [         R                  " T R
                  S   TR
                  S   :H  UU 4S j5        [         R                  " TR
                  S   T R                  S-
  :H  UU 4S j5        [        ST R                  5       H/  m[         R                  " T R
                  T   S:„  UU 4S j5        M1     g )	Nc                  ó<   >• STR                    ST R                    3$ )NzNgrid_sampler(): expected input and grid to be on same device, but input is on z and grid is on r¹  ©r8  rã   s   €€r8   rg   Ú+check_grid_sampler_common.<locals>.<lambda>í  s"   ø€ ðØ—\‘\�NÐ"2°4·;±;°-ñAr:   c                  ó<   >• STR                    ST R                    3$ )NzTgrid_sampler(): expected input and grid to have torch.strided layout, but input has z and grid has )r‡   r;  s   €€r8   rg   r<  ô  s!   ø€ ðØŸ™˜ n°T·[±[°MñCr:   r   c                  ó<   >• STR                    ST R                    3$ )NzZgrid_sampler(): expected grid and input to have same batch size, but got input with sizes ú and grid with sizes rR  r;  s   €€r8   rg   r<  û  s"   ø€ ð Ø %§¡˜}Ð,AÀ$Ç*Á*ÀñOr:   r¢   rù   c                  óB   >• STR                   S-
   ST R                   3$ )Nz+grid_sampler(): expected grid to have size rù   z, in last dimension, but got grid with sizes )r­   rŸ   r;  s   €€r8   rg   r<    s'   ø€ Ø9¸%¿*¹*Àq¹.Ð9Ið J2Ø26·*±*°ñ?r:   c                  ó*   >• STR                    ST  S3$ )NzYgrid_sampler(): expected input to have non-empty spatial dimensions, but input has sizes rË  rÌ  rR  râ  s   €€r8   rg   r<    rã  r:   )rX   rj   rˆ   r‡   rÍ  rŸ   r­   rÎ   )rã   r8  rç   s   ``@r8   Úcheck_grid_sampler_commonrB  ê  sç   ú€ Ü	‡L‚LØ�‰˜Ÿ™Ñ#õ	
ôô 
‡L‚LØ�‰œŸ™Ñ%×F¨$¯+©+¼¿¹Ñ*Fõ	
ôô 
‡L‚LØ�‰�A‰˜$Ÿ*™* Q™-Ñ'õ	
ôô 
‡L‚LØ�
‰
�2‰˜%Ÿ*™* q™.Ñ(õ	
ôô �1�e—j‘jÖ!ˆÜ�ŠØ�K‰K˜‰N˜QÑõö	
ò "r:   c                   ó    • \ rS rSrSrSrSrSrg)ÚGridSamplerInterpolationi  r   r3   rù   r4   N)r€   Ú
__module__Ú__qualname__Ú__firstlineno__ÚBILINEARÚNEARESTÚBICUBICÚ__static_attributes__r4   r:   r8   rD  rD    s   † Ø€HØ€GØƒGr:   rD  Úinterpolation_modec                 ó6  ^ ^• [         R                  " T R                  S:H  =(       a    T R                  TR                  :H  UU 4S j5        [         R                  " T R                  S:H  =(       a    U[        R                  R
                  :H  (       + S 5        g )NrX  c                  ó<   >• STR                    ST R                    3$ )Nzdgrid_sampler(): expected 5D input and grid with same number of dimensions, but got input with sizes r?  rR  r;  s   €€r8   rg   Ú'check_grid_sampler_3d.<locals>.<lambda>  s!   ø€ ð4Ø49·K±K°=Ø# D§J¡J <ñ1r:   c                  ó   • g)Nz<grid_sampler(): bicubic interpolation only supports 4D inputr4   r4   r:   r8   rg   rO  &  r  r:   )rX   rj   r­   rD  rJ  rž  )rã   r8  rL  s   `` r8   Úcheck_grid_sampler_3drQ    sp   ù€ Ü	‡L‚LØ�
‰
�a‰×3˜EŸJ™J¨$¯)©)Ñ3õ	
ôô 
‡L‚Là�J‰J˜!‰O÷ MØ"Ô&>×&FÑ&F×&LÑ&LÑLô	
ñ 	Oõr:   c                 ó²   • US   nU(       a$  [         R                  " U[         R                  S9nOS n[         R                  " U[         R                  S9n	X‰4$ ©Nr   r³   )rX   r  r¸   r·   ©
r%  rã   r8  rL  Úpadding_modeÚalign_cornersr?  Úinput_requires_gradr(  Ú	grad_grids
             r8   Úgrid_sampler_2d_backward_metarY  *  sO   € ð & a™.ÐÞÜ×%Ò% e¼5×;RÑ;RÑS‰
àˆ
Ü× Ò  ´U×5LÑ5LÑM€IØÐ"Ð"r:   c                 óî   • [        X5        [        XU5        U R                  S   nU R                  S   nUR                  S   nUR                  S   nUR                  S   n	U R                  XVXxU	45      $ )Nr   r3   rù   r0   )rB  rQ  rŸ   rž   )
rã   r8  rL  rU  rV  rÂ  ÚCÚout_DÚout_HÚout_Ws
             r8   Úgrid_sampler_3dr_  =  sn   € ô ˜eÔ*Ü˜%Ð'9Ô:Ø�‰�A‰€AØ�‰�A‰€AØ�J‰J�q‰M€EØ�J‰J�q‰M€EØ�J‰J�q‰M€EØ�?‰?˜A %°Ð6Ó7Ð7r:   rX  c                 óà   • [        X5        [        XU5        US   nU(       a$  [        R                  " U[        R                  S9nOS n[        R
                  " U[        R                  S9n	X‰4$ rS  )rB  rQ  rX   r  r%  r·   rT  s
             r8   Úgrid_sampler_3d_backwardra  P  sg   € ô ˜eÔ*Ü˜%Ð'9Ô:Ø% a™.ÐÞÜ×%Ò%Ø¤×!?Ñ!?ñ
‰
ð ˆ
Ü× Ò  ´U×5SÑ5SÑT€IØÐ Ð r:   c                 óš   • UR                  S5      nU(       d  [        R                  " U5      nXCS'   [        R                  " U /UQ70 UD6$ )Nr`   )r_   rQ   Ú	get_dtyperX   r‘   )r«   r  rS   rO  r`   s        r8   Úfullrd  h  sA   € à�J‰J�wÓ€EÞÜ—’ 
Ó+ˆØˆ7�Oä�;Š;�tÐ-˜dÒ- fÑ-Ð-r:   c           	      óV  • U[         R                  :X  aá  [         R                  " US L S 5        [         R                  " SUc  U R                  OUUUc  U R
                  OUUS9nU R                  (       a>  UR                  U R                  5       U R                  5       U R                  5       5        O/UR                  U R                  5       U R                  5       S5        UR                  S5        U$ [        R                  R                  U UUUUUS9nUR!                  S5        U$ )Nc                  ó   • g)Nz9memory format option is only supported by strided tensorsr4   r4   r:   r8   rg   Úzeros_like.<locals>.<lambda>  rþ  r:   r   r  Tr·  )rX   Ú
sparse_coorj   r‘   r`   rˆ   Ú	is_sparseÚsparse_resize_and_clear_r«   Ú
sparse_dimÚ	dense_dimr‹   Ú_coalesced_r-   r·   r6  Úfill_)r    r`   r‡   rˆ   r‰   r´   r»  s          r8   r  r  s  sü   € ð ”×!Ñ!Ó!Ü�ŠØ˜TÐ!ÙOô	
ô
 �kŠkØØ %¡�$—*’*°5ØØ"(¡.�4—;’;°fØ!ñ
ˆð �>�>Ø×(Ñ(Ø—	‘	“˜TŸ_™_Ó.°·±Ó0@õð ×(Ñ(¨¯©«°d·h±h³jÀ!ÔDà�‰˜ÔØˆ
Ü
�/‰/×
!Ñ
!ØØØØØØ#ð "ð €Cð ‡I�Iˆa„LØ€Jr:   r†   c                ó´   • Uc  [         R                  " 5       nUc  [         R                  " 5       nUc  [         R                  n[         R                  " XX#US9$ r  ©rX   r�   Úget_default_devicerÍ  r‘   ©r«   r`   r‡   rˆ   r‰   rŠ   s         r8   Ú	meta_onesrs     óP   € ð �}Ü×'Ò'Ó)ˆØ�~Ü×)Ò)Ó+ˆØ�~Ü—‘ˆÜ�;Š;Ø &ÀJñð r:   c                ó´   • Uc  [         R                  " 5       nUc  [         R                  " 5       nUc  [         R                  n[         R                  " XX#US9$ r  rp  rr  s         r8   Ú
meta_zerosrv  ¶  rt  r:   c                 ó.   • [         R                  " U 5      $ rD   ©rQ   Úclone_preserve_strides)r    r7  r‹   r˜   s       r8   Úmeta_select_scatterrz  Ì  ó   € ä×'Ò'¨Ó-Ð-r:   c                 ó.   • [         R                  " U 5      $ rD   rx  )r    r7  r‹   r‚   r�   Ústeps         r8   Úmeta_slice_scatterr~  Ñ  r{  r:   Údim_post_exprÚwrap_scalarc           	      ó¤   • US::  a  U(       d  [        SU S35      eSnU* nUS-
  nX:  d  X:”  a  [        SU  SU SU S35      eU S:  a  X-  n U $ )	Nr   zdim_post_expr=z <= 0 but wrap_scalar is Falser3   zdim z out of bounds (r}   r~   r%  )r‹   r  r€  r  r¿  s        r8   rÀ   rÀ   ×  s}   € Ø˜ÓÞÜ Ø   Ð/MÐNóð ð ˆØˆ.€CØ
˜!Ñ
€CØ
ƒy�C“IÜ˜t C 5Ð(8¸¸¸RÀ¸uÀAÐFÓGÐGØ
ˆQƒwØÑˆØ€Jr:   c                 óL   • U R                  5       S:X  a  S$ U R                  U   $ r+  rY  )rá  r‹   s     r8   Úensure_nonempty_sizerƒ  ç  s!   € Ø—‘“˜1“ˆ1Ð. !§'¡'¨#¡,Ð.r:   c                 óF  ^ ^^^• [        T R                  5       S5      n[        TR                  5       S5      n[        R                  " X4:H  S 5        [	        U5       H@  mTT:w  d  M  [        R                  " [        TT5      [        T T5      :*  UUUU 4S j5        MB     g )Nr3   c                  ó   • g)NzDIndex tensor must have the same number of dimensions as input tensorr4   r4   r:   r8   rg   Ú$gather_shape_check.<locals>.<lambda>ñ  s   € ÐVr:   c                  óN   >• ST STR                    3STR                    ST  3-   $ )Nz!Size does not match at dimension z expected index ú to be no larger than self ú apart from dimension rR  )r‹   rç   r˜   r    s   €€€€r8   rg   r†  ÷  s5   ø€ Ð;¸A¸3Ð>NÈuÏ{É{ÈmÐ\Ø/°·
±
¨|Ð;QÐRUÐQVÐWòXr:   )r¿  r‹   rX   rj   rÎ   rƒ  )r    r‹   r˜   Ú	self_dimsÚ
index_dimsrç   s   ```  @r8   Úgather_shape_checkrŒ  ì  s}   û€ Ü�D—H‘H“J Ó"€IÜ�U—Y‘Y“[ !Ó$€JÜ	‡L‚LØÑÙVôô �9ÖˆØ��8Ü�LŠLÜ$ U¨AÓ.Ô2FÀtÈQÓ2OÑO÷Xöò r:   c                 ó„  ^• SSK Jn  [        XR                  5       5      nU" TR	                  5       S:H  5      nU(       df  [
        R                  " TR                  [
        R                  :H  =(       d    TR                  [
        R                  :H  U4S j5        [        XT5        U R                  TR                  5      $ )Nr   r!  c                  ó"   >• ST R                    3$ )Nz8gather(): Expected dtype int32/int64 for index, but got r–   r—   s   €r8   rg   Úmeta_gather.<locals>.<lambda>  s   ø€ ÐNÈuÏ{É{ÈmÑ\r:   )r1  r"  rÀ   r‹   r�   rX   rj   r`   r›   rï   rŒ  rž   rŸ   )r    r‹   r˜   Úsparse_gradr"  Úwrapped_dimÚis_index_emptys     `    r8   Úmeta_gatherr“  ü  s~   ø€ åDä  §h¡h£jÓ1€KÙ# E§K¡K£M°QÑ$6Ó7€NÞÜ�ŠØ�K‰Kœ5Ÿ:™:Ñ%×A¨¯©¼¿	¹	Ñ)AÜ\ô	
ô 	˜4¨eÔ4Ø�>‰>˜%Ÿ+™+Ó&Ð&r:   c                 óÖ   • U(       a<  U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  gU S	:X  a  g
[         R                  " SS 5        g U S:X  a  gU S:X  a  g[         R                  " SS 5        g )Nr$  Ú
REDUCE_ADDr  ÚREDUCE_MULTIPLYÚmeanÚREDUCE_MEANÚamaxÚREDUCE_MAXIMUMÚaminÚREDUCE_MINIMUMFc                  ó   • g)Nz=reduce argument must be either sum, prod, mean, amax or amin.r4   r4   r:   r8   rg   Ú#get_operator_enum.<locals>.<lambda>  s   € ÐSr:   ÚaddÚmultiplyc                  ó   • g)Nz/reduce argument must be either add or multiply.r4   r4   r:   r8   rg   rž  "  s   € Ð$Ur:   r�  )Úreduce_Úuse_new_optionss     r8   Úget_operator_enumr¤    s{   € ÞØ�eÓØØ˜ÓØ$Ø˜ÓØ Ø˜ÓØ#Ø˜ÓØ#Ü�ŠØÙSô	
ð 	à�eÓØØ˜
Ó"Ø$Ü�Š�UÑUÔVØr:   c                 ón  ^ • SSK Jn  U" UR                  5       S:g  5      (       aZ  [        R                  " UR
                  [        R                  :H  =(       d    UR
                  [        R                  :H  U 4S j5        Ub3  [        R                  " UR
                  UR
                  :H  U 4S j5        g g )Nr   )r‚  c                  ó   >• T  S3$ )Nz((): Expected dtype int32/int64 for indexr4   ©Úmethod_names   €r8   rg   Ú,scatter_gather_dtype_check.<locals>.<lambda>-  s   ø€ �{�mÐ#KÑLr:   c                  ó   >• T  S3$ )Nz0(): Expected self.dtype to be equal to src.dtyper4   r§  s   €r8   rg   r©  3  s   ø€ �{�mÐ#SÑTr:   )r1  r‚  r�   rX   rj   r`   r›   rï   )r¨  r    r˜   Úsrc_optr‚  s   `    r8   Úscatter_gather_dtype_checkr¬  '  sy   ø€ ÝCá�U—[‘[“] aÑ'×(Ñ(Ü�ŠØ�K‰Kœ5Ÿ:™:Ñ%×A¨¯©¼¿	¹	Ñ)AÜLô	
ð
 ÑÜ�ŠØ�J‰J˜'Ÿ-™-Ñ'ÜTõ	
ð r:   c                 ó   • [        U S5      $ r2   )r¿  r£   s    r8   Úensure_nonempty_dimr®  7  s   € Üˆs�A‹;Ðr:   c                 óæ  ^ ^^^• SSK Jn  U" TR                  5       S:H  5      (       a  g [        R                  " [        T R                  5       5      [        TR                  5       5      :H  S 5        [        T R                  5       5      n[        U5       HB  nUT:X  a  M  [        TU5      n[        T U5      n[        R                  " Xx:*  UUU 4S j5        MD     Tb’  [        R                  " [        T R                  5       5      [        TR                  5       5      :H  S 5        [        U5       H9  n[        TU5      n[        TU5      n	[        R                  " Xy:*  UU4S j5        M;     g g )Nr   r!  c                  ó   • g)NzCIndex tensor must have the same number of dimensions as self tensorr4   r4   r:   r8   rg   Ú%scatter_shape_check.<locals>.<lambda>C  rå  r:   c                  óH   >• STR                    STR                    3ST  3-   $ )NúExpected index rˆ  r‰  rR  )r‹   r˜   r    s   €€€r8   rg   r±  Q  s*   ø€ �o e§k¡k ]Ð2MÈdÏjÉjÈ\ÐZØ& s eÐ,ò-r:   c                  ó   • g)NzBIndex tensor must have the same number of dimensions as src tensorr4   r4   r:   r8   rg   r±  Y  s   € ÐXr:   c                  ó<   >• ST R                    STR                    3$ )Nr³  z to be no larger than src rR  )r˜   r«  s   €€r8   rg   r±  `  s   ø€ ˜/¨%¯+©+¨Ð6PÐQX×Q^ÑQ^ÐP_Ñ`r:   )	r1  r"  r�   rX   rj   r®  r‹   rÎ   rƒ  )
r    r‹   r˜   r«  r"  rŠ  rÞ   Úindex_d_sizeÚself_d_sizeÚ
src_d_sizes
   ````      r8   Úscatter_shape_checkr¹  <  s"  û€ ÝDá�e—k‘k“m qÑ(×)Ñ)ØÜ	‡L‚LÜ˜DŸH™H›JÓ'Ô+>¸u¿y¹y»{Ó+KÑKÙUôô
 $ D§H¡H£JÓ/€Iô �9ÖˆØ�‹8ÙÜ+¨E°1Ó5ˆÜ*¨4°Ó3ˆÜ�ŠØÑ'ö-ö	
ñ ð ÑÜ�ŠÜ §¡£
Ó+Ô/BÀ7Ç;Á;Ã=Ó/QÑQÙXô	
ô �yÖ!ˆAÜ/°°qÓ9ˆLÜ-¨g°qÓ9ˆJÜ�LŠLØÑ*Ý`öò "ð r:   c                 ó†   • [        XR                  5       5      n[        SXU5        [        XX#5        Ub  [	        XE5        g g )NÚscatter)rÀ   r‹   r¬  r¹  r¤  )r    r‹   r˜   r7  r¢  r£  r‘  s          r8   Úscatter_meta_implr¼  e  s;   € Ü  §h¡h£jÓ1€KÜ˜y¨$°sÔ;Ü˜¨5Ô6ØÑä˜'Õ3ð r:   c                 óR   • [        XX#S5        U R                  U R                  5      $ ©NrŸ  ©r¼  rž   rŸ   ©r    r‹   r˜   r7  s       r8   Úmeta_scatter_addrÁ  n  s!   € ä�d ¨UÔ3Ø�>‰>˜$Ÿ*™*Ó%Ð%r:   c                 ó    • [        XX#S5        U $ r¾  ©r¼  rÀ  s       r8   Úmeta_scatter_add_rÄ  t  s   € ä�d ¨UÔ3Ø€Kr:   c                 ó˜   • [        U[        R                  5      (       a  UOS n[        XX%U5        U R	                  U R
                  5      $ rD   )rt   rX   r   r¼  rž   rŸ   ©r    r‹   r˜   Úsrc_or_valuerx  r7  s         r8   Úmeta_scatterrÈ  z  s:   € ô % \´5·<±<×@Ñ@‰,Àd€CÜ�d ¨VÔ4Ø�>‰>˜$Ÿ*™*Ó%Ð%r:   c                 óf   • [        U[        R                  5      (       a  UOS n[        XX%U5        U $ rD   )rt   rX   r   r¼  rÆ  s         r8   Úmeta_scatter_rÊ  ‰  s,   € ô % \´5·<±<×@Ñ@‰,Àd€CÜ�d ¨VÔ4Ø€Kr:   ÚqueryrÊ   rž  Ú	dropout_pÚ	is_causalÚreturn_debug_maskr°  c           	      ó4  • U R                  S5      nU R                  S5      nU R                  S5      n	U R                  S5      n
UR                  S5      n[        R                  " U 5      n[        R                  " XxU	4[        R                  U R
                  S9nU(       a`  U
S:”  a  SOSn[        R                  " Xž-  5      nUS::  a  SnOUS::  a  Sn[        R                  " XxXŸ4U R                  U R
                  S9nO*[        R                  " SU R                  U R
                  S9n[        R                  R                  (       a#  [        R                  R                  5       (       d  [        U 5      S	:X  aI  [        R                  " S
[        R                  SS9n[        R                  " S
[        R                  SS9nOH[        R                  " S[        R                  SS9n[        R                  " S
[        R                  SS9nUUS S U	UUUU4	$ )Nr   r3   rù   r0   r	  é@   é€   é   rþ   r4   r…   )r«   rX   r·   r‘   r\   rˆ   r  Úceilr`   rá  râ  rý   rå  r  r›   ry  )rË  rÊ   rž  rÌ  rÍ  rÎ  r°  rå   Ú	num_headsÚmax_seqlen_batch_qÚhead_dimÚmax_seqlen_batch_kÚ	attentionÚ	logsumexpÚblocksize_cÚmax_seqlen_kÚ
debug_maskÚseedÚoffsets                      r8   Ú(meta__scaled_dot_product_flash_attentionrß  —  s¨  € ð —‘˜A“€JØ—
‘
˜1“€IØŸ™ A›ÐØ�z‰z˜!‹}€HØŸ™ !›Ðä× Ò  Ó'€IÜ—’Ø	Ð 2Ð3Ü�k‰kØ�|‰|ñ€Iö Ø%¨›]‘c°ˆÜ—y’yÐ!3Ñ!AÓBˆØ Ó$Ø‰LØ 3Ó&ØˆLÜ—[’[ØÐ$6ÐEØ—+‘+Ø—<‘<ñ
‰
ô —[’[ ¨%¯+©+¸e¿l¹lÑKˆ
ô ‡}�}××œUŸZ™Z×4Ñ4×6Ñ6¼+ÀeÓ:LÐPUÓ:Uä�{Š{˜2¤U§Z¡Z¸Ñ?ˆÜ—’˜R¤u§z¡z¸&ÑA‰ä�{Š{˜A¤e§l¡l¸6ÑBˆÜ—’˜R¤u§|¡|¸FÑCˆð 	ØØØØØØØØð
ð 
r:   Ú	q_descaleÚ	k_descaleÚ	v_descalec
           	      óž   • U R                   [        R                  :X  a  U R                  [        R                  5      n [        U UUUUUU	5      $ rD   )r`   rX   rp  r4  ro  rß  )
rË  rÊ   rž  rà  rá  râ  rÌ  rÍ  rÎ  r°  s
             r8   Ú2meta__scaled_dot_product_flash_attention_quantizedrä  ×  sJ   € ð ‡{�{”e×)Ñ)Ó)Ø—‘œŸ™Ó(ˆä3ØØØØØØØóð r:   Ú	res_shape.c                 óž  ^ • [        T R                  5      U:X  a  [        R                  " T 5      nU$ [	        / SQU 4S jSS9nU Vs/ s H  oAU   PM	     nn[        [        U5      5       Vs/ s H  ocR                  U5      PM     nn[        R                  " UT R                  T R                  S9R                  U5      nU$ s  snf s  snf )N)r   r3   rù   r0   c                 ó*   >• TR                  5       U    $ rD   r,  )ÚidxrË  s    €r8   rg   Ú,alloc_with_matching_layout.<locals>.<lambda>ú  s   ø€ ¨%¯,©,«.¸Ò*=r:   TrÉ   r	  )ri   rŸ   rX   r·   ÚsortedrÎ   rÌ   r˜   r‘   r`   rˆ   rÒ   )rË  rå  r»  Ú	dim_orderrè  Úpermuted_shaperç   Úfinal_permutes   `       r8   Úalloc_with_matching_layoutrî  ò  s¸   ø€ ô ˆU�[‰[Ó˜YÓ&Ü×Ò˜uÓ%ˆð €Jô ÚÔ=Àtñ
ˆ	ñ 5>Ó>²I¨S Cœ.±IˆÐ>Ü5:¼3¸y»>Ô5JÓKÒ5J°Ÿ™¨Ö+Ñ5JˆÐKÜ�kŠkØ %§+¡+°e·l±lñ
ç
‰'�-Ó
 ð 	ð €Jùò ?ùÚKs   ÁCÁ.C
Ú	attn_biasÚcompute_log_sumexpc	           	      óÒ  • U R                  S5      n	U R                  S5      n
U R                  S5      nUR                  S5      nUR                  S5      nXšX½4n[        X5      n[        R                  " XšUS4[        R                  U R
                  S9n[        R                  " S[        R                  SS9n[        R                  " S[        R                  SS9nUUS S UUUUS 4	$ ©Nr   r3   rù   r¢   r	  r4   r…   ©r«   rî  rX   r‘   r\   rˆ   r›   )rË  rÊ   rž  rï  rð  rÌ  rÍ  rÎ  r°  rí  rg  ÚS_QÚS_KVÚD_Vrå  r»  Ú
logsum_exprÝ  rÞ  s                      r8   Ú(meta__scaled_dot_product_cudnn_attentionrø    sÓ   € ð 	�
‰
�1‹€AØ�
‰
�1‹€AØ
�*‰*�Q‹-€CØ�8‰8�A‹;€DØ
�*‰*�R‹.€Cà�sÐ €IÜ
$ UÓ
6€Cä—’Ø	
ˆs�AˆÜ�k‰kØ�|‰|ñ€Jô �;Š;�r¤§¡°FÑ;€DÜ�[Š[˜¤5§:¡:°fÑ=€Fð 	ØØØØØØØØð
ð 
r:   c           	      óÐ  • U R                  S5      nU R                  S5      n	U R                  S5      n
UR                  S5      nUR                  S5      nX‰X¬4n[        X5      n[        R                  " X‰U
4[        R                  U R
                  S9n[        R                  " S[        R                  SS9n[        R                  " S[        R                  SS9nUUS S U
UUUS 4	$ rò  ró  )rË  rÊ   rž  rï  rÌ  rÍ  rÎ  r°  rí  ÚH_Qrô  rõ  rö  rå  r»  r÷  rÝ  rÞ  s                     r8   Ú5meta__scaled_dot_product_fused_attention_overrideablerû  1  sÑ   € ð 	�
‰
�1‹€AØ
�*‰*�Q‹-€CØ
�*‰*�Q‹-€CØ�8‰8�A‹;€DØ
�*‰*�R‹.€Cà˜Ð"€IÜ
$ UÓ
6€Cä—’Ø	
�ˆÜ�k‰kØ�|‰|ñ€Jô �;Š;�r¤§¡°FÑ;€DÜ�[Š[˜¤5§:¡:°fÑ=€Fð 	ØØØØØØØØð
ð 
r:   rÍ  rÙ  Ú	cum_seq_qÚ	cum_seq_kÚmax_qÚmax_kÚphilox_seedÚphilox_offsetc                 ó�   • [         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUUU4$ rD   rG  )rÍ  rË  rÊ   rž  r×   rÙ  rü  rý  rþ  rÿ  rÌ  rÍ  r   r  r°  Úgrad_qÚgrad_krL  s                     r8   Ú'meta__scaled_dot_product_flash_backwardr  \  sA   € ô, ×Ò˜eÓ$€FÜ×Ò˜cÓ"€FÜ×Ò˜eÓ$€FØ�6˜6Ð!Ð!r:   Ú	attn_maskc                 ó  • U R                  S5      nU R                  S5      nU R                  S5      n	[        R                  " U 5      n
[        R                  " UU	U4[        R                  U R
                  S9R                  SS5      nU
U4$ )Nr   r3   rù   r	  )r«   rX   r·   r‘   r\   rˆ   r  )rË  rÊ   rž  rÌ  rÍ  r  r°  rå   rÔ  rÕ  rØ  rÙ  s               r8   Ú0meta__scaled_dot_product_flash_attention_for_cpur  x  sŠ   € ð —‘˜A“€JØ—
‘
˜1“€IØŸ™ A›Ðä× Ò  Ó'€IÜ—’àØØð	
ô
 �k‰kØ�|‰|ñ÷ �i��1ƒoð ð 	Øðð r:   c
                 ó`  • [         R                  " UR                  5       SUR                  UR                  S9n
[         R                  " UR                  5       SUR                  UR                  S9n[         R                  " UR                  5       SUR                  UR                  S9nX«U4$ )N©r   rù   r3   r0   r	  )rX   Úempty_permutedr«   r`   rˆ   )rÍ  rË  rÊ   rž  r×   rÙ  rÌ  rÍ  r  r°  r  r  rL  s                r8   Ú9meta__scaled_dot_product_flash_attention_for_cpu_backwardr  š  s“   € ô& ×!Ò!Ø�
‰
‹ØØ�k‰kØ�|‰|ñ	€Fô ×!Ò!Ø�‰‹
ØØ�i‰iØ�z‰zñ	€Fô ×!Ò!Ø�
‰
‹ØØ�k‰kØ�|‰|ñ	€Fð ˜6Ð!Ð!r:   Údropout_maskc                 ó  ^ ^^^^^^^• S nU" T 5      u  mmU" U5      u  pšU" U5      u  pºTR                   u  mmmmU	R                   u  p¬mn
UUUUUU U4S jnUUUUU4S jnTS:¼  d  UT:  a  TS:¼  a  U" 5       $ U" 5       $ )Nc                 óp  • U R                  5       S:X  a  U R                  S5      S4$ U R                  5       S:”  ax  Sn[        U R                  5       S-
  5       H  nXR                  U   -  nM     U R	                  XR                  S5      U R                  S5      U R                  S5      5      S4$ U S	4$ )
Nr0   r   Tr0  r3   rv  rÐ  r¢   F)r‹   r±  rÎ   rŸ   Úviewr«   )r=   rå   rç   s      r8   Ú	ensure_4dÚBmeta__scaled_dot_product_attention_math_for_mps.<locals>.ensure_4dÎ  s–   € Ø�5‰5‹7�a‹<Ø—;‘;˜q“> 4Ð'Ð'Ø�U‰U‹W�q‹[ØˆJÜ˜1Ÿ5™5›7 Q™;Ö'�ØŸg™g a™jÑ(’
ñ (à—6‘6˜*§f¡f¨R£j°!·&±&¸³*¸a¿f¹fÀR»jÓIÈ4ÐOÐOà�e�8ˆOr:   c                  ój  >• TR                  TR                  5      n T	(       a  U R                  T5      n TR                  TTTT45      nT	(       aa  TR                  5       S:X  a  UR	                  S5      nX4$ [        TR                  S S 5      UR                  SS -   nUR                  U5      nX4$ )Nr0   r   rv  r3   r0  )rž   rŸ   Úview_asr‹   ÚsqueezerÍ   r  )
r×   ÚattnrŸ   rå   Úmax_seq_lengthÚnum_headÚq_Úq_sizerË  Ú
unsqueezeds
      €€€€€€€r8   Úsdpa_vector_fast_mpsÚMmeta__scaled_dot_product_attention_math_for_mps.<locals>.sdpa_vector_fast_mpsà  s¡   ø€ Ø�l‰l˜2Ÿ8™8Ó$ˆÞØ—+‘+˜eÓ$ˆCà�|‰|˜Z¨°6¸>ÐJÓKˆÞØ�y‰y‹{˜aÓØ—|‘| A“�ð ˆyÐô ˜UŸ[™[¨¨"Ð-Ó.°·±¸A¸a°Ñ@�Ø—y‘y Ó'�ØˆyÐr:   c                  óp   >• Sn TR                  TR                  5      nTR                  TTTU T45      nX4$ )Nrƒ  r  )Úblocksr×   r9  rå   Ú	head_sizer  r  r  s      €€€€€r8   Úsdpa_vector_2pass_mpsÚNmeta__scaled_dot_product_attention_math_for_mps.<locals>.sdpa_vector_2pass_mpsî  s<   ø€ ØˆØ�l‰l˜2Ÿ8™8Ó$ˆØ—|‘| Z°¸6À6È9Ð$UÓVˆØÐ Ð r:   i   i   rR  )rË  rÊ   rž  r  rÌ  rÍ  r  r°  r  Úk_rT   Úv_Úk_sizer  r!  rå   r   r  r  r  r  r  s   `              @@@@@@@r8   Ú/meta__scaled_dot_product_attention_math_for_mpsr&  Ã  sŽ   ÿ€ ò	ñ ˜uÓ%�N€Bˆ
Ù�c‹N�E€BÙ�eÓ�E€Bà.0¯h©hÑ+€J�˜& )Ø#%§8¡8Ñ €Aˆ~˜q÷ó ÷!ñ !ð 	˜$Ó F¨V£O¸È$Ó8NÙ$Ó&Ð&á#Ó%Ð%r:   c           	      óR  • U R                  SS5      n UR                  SS5      nUR                  SS5      nU R                  S5      nU R                  S5      n	U R                  S5      n
UR                  S5      n[        R                  " X‰X«U R                  U R
                  S9n[        R                  R                  (       a0  [        R                  R                  5       (       a   U(       a  U	OSnO%U(       a  [        R                  " U	S-  5      S-  OSn[        R                  " XŠU4[        R                  U R
                  S9nUR                  SS5      n[        R                  " S[        R                  S	S9n[        R                  " S[        R                  S	S9nXÎUU4$ )
Nr3   rù   r   rÐ  r¢   r	  rƒ  r4   r…   )r  r«   rX   r‘   r`   rˆ   rá  râ  rý   rå  r  rÓ  r\   r›   )rË  rÊ   rž  rï  rð  rÌ  rÍ  r°  rí  rÆ  rÔ  ÚKvr»  Úlogsumexp_dimr÷  rÝ  rÞ  s                    r8   Ú,meta__scaled_dot_product_efficient_attentionr*  ú  s?  € ð �O‰O˜A˜qÓ!€EØ
�-‰-˜˜1Ó
€CØ�O‰O˜A˜qÓ!€Eà�
‰
�1‹€AØ�
‰
�1‹€AØ—
‘
˜2“€IØ	�‰�B‹€Bä
�+Š+�a˜I°·±ÀUÇ\Á\Ñ
R€Cä‡}�}××œUŸZ™Z×4Ñ4×6Ñ6ð	ö 0™°Q‰æ2DœŸ	š	 ! b¡&Ó)¨BÒ.È!ˆä—’Ø	
�}Ð%Ü�k‰kØ�|‰|ñ€Jð �-‰-˜˜1Ó
€Cô �;Š;�r¤§¡°FÑ;€DÜ�[Š[˜¤5§:¡:°fÑ=€Fà˜D &Ð(Ð(r:   Úgrad_input_maskc                 óü  • UR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      n[        R                  " XÞUU4SUR                  UR                  S9n[        R                  " XÞUU4SUR                  UR                  S9n[        R                  " XÞUU4SUR                  UR                  S9nS nUb‚  U
S   (       ax  UR                  S5      nUS-  S:X  a  UO
US-   US-  -
  n[        UR                  5       5      nUUS'   [        R                  " UUR                  UR                  S9nUS	S U24   nUUUU4$ )
Nr   r3   rù   r0   r
  r	  r¢   r‚  .)r«   rX   r  r`   rˆ   rÍ   r‘   )rÍ  rË  rÊ   rž  rï  r×   rÙ  r   r  rÌ  r+  rÍ  r°  rå   rÔ  rþ  rÖ  Ú
head_dim_vrÿ  r  r  rL  Ú	grad_biasÚlastDimÚlastDimAlignedÚ	new_sizess                             r8   Ú+meta__scaled_dot_product_efficient_backwardr2  '  su  € ð( —‘˜A“€JØ—
‘
˜1“€IØ�J‰J�q‹M€EØ�z‰z˜!‹}€HØ—‘˜A“€Jà�H‰H�Q‹K€Eä×!Ò!Ø	  xÐ0ØØ�k‰kØ�|‰|ñ	€Fô ×!Ò!Ø	  xÐ0ØØ�i‰iØ�z‰zñ	€Fô ×!Ò!Ø	  zÐ2ØØ�k‰kØ�|‰|ñ	€Fð €IØÑ °×!3Ø—.‘. Ó$ˆØ$+¨b¡L°AÓ$5™¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÜ˜Ÿ™Ó)Ó*ˆ	Ø&ˆ	�"‰Ü—K’KØ˜YŸ_™_°Y×5EÑ5Eñ
ˆ	ð ˜c 8 G 8˜mÑ,ˆ	à�6˜6 9Ð,Ð,r:   c                 ó�   • [         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUUU4$ rD   rG  )rÍ  rË  rÊ   rž  r×   rÙ  r   r  rï  rü  rý  rþ  rÿ  rÌ  rÍ  r°  r  r  rL  s                      r8   Ú'meta__scaled_dot_product_cudnn_backwardr4  c  sA   € ô. ×Ò˜eÓ$€FÜ×Ò˜cÓ"€FÜ×Ò˜eÓ$€FØ�6˜6Ð!Ð!r:   Úwindow_size_leftÚwindow_size_rightÚ	seqused_kÚalibi_slopesc                 óê  • Uc  U R                  S5      OUR                  5       S-
  nUc  U R                  S5      OUnUc  UR                  S5      OUnU R                  S5      nU R                  S5      n[        R                  " U 5      nUc2  [        R                  " UUU4[        R
                  U R                  S9nOAU R                  S5      n[        R                  " UU4[        R
                  U R                  S9nU	(       ac  US:”  a  SOSn[        R                  " UU-  5      nUS::  a  SnOUS::  a  Sn[        R                  " UUUU4U R                  U R                  S9nO*[        R                  " SU R                  U R                  S9nS	u  nn[        R                  R                  (       al  [        R                  R                  5       (       aI  [        R                  " S
[        R                  SS9n[        R                  " S
[        R                  SS9nOH[        R                  " S[        R                  SS9n[        R                  " S
[        R                  SS9nUUUUU4$ )Nr   r3   rÐ  r¢   r	  rÐ  rÑ  rÒ  ©NNr4   r…   rù   )r«   r�   rX   r·   r‘   r\   rˆ   r  rÓ  r`   rá  râ  rý   rå  r›   ry  )rË  rÊ   rž  rü  rý  rþ  rÿ  rÌ  rÍ  rÎ  r°  r5  r6  r7  r8  rå   rÕ  r×  rÔ  rÖ  rØ  rÙ  Útotal_qrÚ  rÛ  rÜ  rÝ  rÞ  s                               r8   Úmeta__flash_attention_forwardr<  €  sø  € ð4 #,Ñ"3�—‘˜A”¸¿¹Ó9JÈQÑ9N€JØ*3Ñ*;˜Ÿ™ AœÀÐØ(1Ñ(9˜Ÿ™ !œ¸uÐØ—
‘
˜2“€IØ�z‰z˜"‹~€Hô × Ò  Ó'€IØÑÜ—K’KØ˜Ð$6Ð7Ü—+‘+Ø—<‘<ñ
‰	ð —*‘*˜Q“-ˆÜ—K’KØ˜Ð ¬¯©¸E¿L¹Lñ
ˆ	ö Ø%¨›]‘c°ˆÜ—y’yÐ!3°kÑ!AÓBˆØ Ó$Ø‰LØ 3Ó&ØˆLÜ—[’[Ø˜Ð$6¸ÐEØ—+‘+Ø—<‘<ñ
‰
ô —[’[ ¨%¯+©+¸e¿l¹lÑKˆ
ð �L€Dˆ&Ü‡}�}××œUŸZ™Z×4Ñ4×6Ñ6ä�{Š{˜2¤U§Z¡Z¸Ñ?ˆÜ—’˜R¤u§z¡z¸&ÑA‰ä�{Š{˜A¤e§l¡l¸6ÑBˆÜ—’˜R¤u§|¡|¸FÑCˆàØØØØðð r:   c                 ó®   • U R                   [        R                  :X  a  U R                  [        R                  5      n [        U UUUUUUUUU	UUUUU5      $ rD   )r`   rX   rp  r4  ro  r<  )rË  rÊ   rž  rü  rý  rþ  rÿ  rÌ  rÍ  rÎ  rà  rá  râ  r°  r5  r6  r7  r8  s                     r8   Ú'meta__flash_attention_forward_quantizedr>  Ð  sb   € ð* ‡{�{”e×)Ñ)Ó)Ø—‘œŸ™Ó(ˆä(ØØØØØØØØØØØØØØØóð r:   c                 ó�   • [         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUUU4$ rD   rG  )rÍ  rË  rÊ   rž  r×   rÙ  rü  rý  rþ  rÿ  rÌ  rÍ  r   r  r°  r5  r6  Ú
grad_queryÚgrad_keyÚ
grad_values                       r8   Úmeta__flash_attention_backwardrC  û  sA   € ô0 ×!Ò! %Ó(€JÜ×Ò Ó$€HÜ×!Ò! %Ó(€Jà�x Ð+Ð+r:   Úcu_seqlens_qÚcu_seqlens_kÚmax_seqlen_qrÛ  Úcustom_mask_typeÚcausal_diagonalÚseqlen_kÚwindow_sizec           	      ó¼  • U R                  S5      nU R                  S5      nUR                  S5      nU R                  S5      nUR                  S5      n[        R                  " UUUUU R                  U R                  S9nUb  UR                  S5      S-
  OUnUnUb  Uc  [        S5      eUnUb  UOUnU
(       a  [        R                  " US-  5      S-  OSn[        R                  " UUU4[        R                  U R                  S9n[        R                  " S[        R                  S	S9n[        R                  " S[        R                  S	S9nUUUUUU4$ )
Nr   r3   rÐ  r¢   r	  z;max_seqlen_q must not be None when cu_seqlens_q is providedrƒ  r4   r…   )
r«   rX   r‘   r`   rˆ   r�   r  rÓ  r\   r›   )rË  rÊ   rž  rH  rD  rE  rF  rÛ  rÌ  rG  rð  r°  rH  rI  rJ  rí  rÆ  rÂ  rÔ  r(  r»  Úlogsumexp_batch_dimÚactual_max_seqlen_qÚactual_max_seqlen_kr)  r÷  rÝ  rÞ  s                               r8   Ú!meta__efficient_attention_forwardrO    sE  € ð, 	�
‰
�1‹€AØ�
‰
�1‹€AØ�‰�‹€AØ—
‘
˜2“€IØ	�‰�B‹€Bä
�+Š+�a˜˜I r°·±ÀUÇ\Á\Ñ
R€Cà7CÑ7O˜,×+Ñ+¨AÓ.°Ò2ÐVWÐØÐØÑØÑÜ ØMóð ð +ÐØ*6Ñ*B™,ÈÐæ4FŒ�	Š	Ð%¨Ñ*Ó+¨bÒ0ÈAð ô —’Ø	˜i¨Ð7Ü�k‰kØ�|‰|ñ€Jô �;Š;�r¤§¡°FÑ;€DÜ�[Š[˜¤5§:¡:°fÑ=€Fà�
˜D &Ð*=Ð?RÐRÐRr:   Úbias_requires_gradÚnum_splits_keyÚshared_storage_dqdkdvc                 óÌ  • U(       aû  [         R                  " UR                  S   UR                  S   :H  S 5        [         R                  " UR                  S   UR                  S   :H  S 5        [         R                  " / UR                  SS QSPUR                  S   PUR                  S   P7UR                  UR
                  S9nUR                  S	S5      nUR                  S	S5      nUR                  S	S
5      nOB[         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUby  UR                  S5      nUS-  S:X  a  UO
US-   US-  -
  n[        UR                  5       5      nUUS'   [         R                  " UUR                  UR
                  S9nUSS U24   nO[         R                  " SUR
                  S9nUUUU4$ )Nr3   c                  ó   • g)Nz,seqlen must match for `shared_storage_dqdkdvr4   r4   r:   r8   rg   Ú4meta__efficient_attention_backward.<locals>.<lambda>m  s   € ÐBr:   r0   c                  ó   • g)Nz3embedding dim must match for `shared_storage_dqdkdvr4   r4   r:   r8   rg   rU  q  ó   € ÐIr:   r   rÐ  r¢   r	  rv  rù   r‚  .r4   r¹  )
rX   rj   rŸ   r‘   r`   rˆ   r$  r·   r«   rÍ   )rÍ  rË  rÊ   rž  rH  rD  rE  rF  rÛ  rÙ  rÌ  r   r  rG  rP  r°  rQ  rR  Úchunkr@  rA  rB  r/  r0  r1  r.  s                             r8   Ú"meta__efficient_attention_backwardrY  Q  s¤  € ö2 Ü�ŠØ�K‰K˜‰N˜cŸi™i¨™lÑ*ÙBô	
ô 	�ŠØ�K‰K˜‰N˜cŸi™i¨™lÑ*ÙIô	
ô —’ØEˆe�k‰k˜!˜BÐÐE ÐE E§K¡K°¡OÐE°U·[±[À±_ÑEØ—+‘+Ø—<‘<ñ
ˆð
 —\‘\ " aÓ(ˆ
Ø—<‘<  AÓ&ˆØ—\‘\ " aÓ(‰
ä×%Ò% eÓ,ˆ
Ü×#Ò# CÓ(ˆÜ×%Ò% eÓ,ˆ
àÑØ—)‘)˜B“-ˆØ$+¨b¡L°AÓ$5™¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÜ˜Ÿ™›Ó%ˆ	Ø&ˆ	�"‰Ü—K’K 	°·±ÀDÇKÁKÑPˆ	Ø˜c 8 G 8˜mÑ,‰	ä—K’K ¨5¯<©<Ñ8ˆ	à�x ¨YÐ6Ð6r:   Úscale_aÚscale_bÚscale_resultÚuse_fast_accumc                 ó�  ^ ^^^^^^^^• S n[         R                  " T R                  5       S:H  =(       a    TR                  5       S:H  UU 4S j5        [         R                  " U" T R                  5      =(       a    U" TR                  5      UU 4S j5        [	        T 5      S:X  d  [	        T 5      S:X  GaÀ  S n	S n
S	 n[         R                  " U	" T R                  5       5      =(       d    U" T 5      U 4S
 j5        [         R                  " U
" TR                  5       5      =(       d    U" T5      U4S j5        [         R                  " T R                  S5      S-  S:H  U 4S j5        [         R                  " TR                  S5      S-  S:H  =(       a    TR                  S5      S-  S:H  U4S j5        T R                  u  mmTR                  S5      mTR                  [         R                  :H  =(       a    TR                  [         R                  :H  =(       dA    TR                  [         R                  :H  =(       a    TR                  [         R                  :H  nTR                  5       S:X  am  TR                  5       S:X  aY  [         R                  " TR                  [         R                  :H  =(       a    TR                  [         R                  :H  S 5        GO“U(       aÿ  TR                  [         R                  :X  a  SnTS-  mOSnSn[        TU5      n[        US5      S-  nU[        TU5      -  U-  mU[        TU5      -  U-  mTR                  5       T:X  ab  TR                  5       T:X  aN  [         R                  " TR                  5       S 5        [         R                  " TR                  5       S 5        GO­[         R                  " SUUUU4S j5        GO�[         R                  " TR                  [         R                  :H  =(       a    TR                  [         R                  :H  S 5        [         R                  " TR                  5       S:H  =(       a    TR                  5       S:H  UU4S j5        TR                  S5      T:X  a~  TR                  S5      S:X  ai  TR                  S5      S:X  aT  TR                  S5      T:X  a?  [         R                  " TR                  5       =(       a    TR                  5       S 5        GO\TR                  S5      T:X  aX  TR                  S5      TR                  S5      s=:X  a  [        TS5      :X  a#  O  O TR                  S5      [        TS5      :X  a  OïTR                  S5      T:X  aN  TR                  S5      TR                  S5      s=:X  a  [        TS5      :X  a  O  OTR                  S5      T:X  a  OŒTR                  S5      [        TS5      :X  aN  TR                  S5      TR                  S5      s=:X  a  [        TS5      :X  a  O  OTR                  S5      T:X  a  O[         R                  " SUUUUU4S j5        Ub  UOT R                  n[         R                  " T R                  S5      TR                  S5      UT R                  S9$ )Nc                 ó¢   • U [         R                  [         R                  [         R                  [         R                  [         R
                  4;   $ rD   ©rX   rp  Úfloat8_e5m2Úfloat8_e4m3fnuzÚfloat8_e5m2fnuzÚfloat4_e2m1fn_x2r–   s    r8   Úis_fp8_or_fp4_typeÚ2_check_scaled_mm_sizes.<locals>.is_fp8_or_fp4_type—  óA   € ØÜ×ÑÜ×ÑÜ×!Ñ!Ü×!Ñ!Ü×"Ñ"ð
ñ 
ð 	
r:   rù   c                  óL   >• STR                  5        ST R                  5        3$ ©Nz%Inputs must be 2D but got self.dim()=z and mat2.dim()=r£   ©rW  r    s   €€r8   rg   Ú(_check_scaled_mm_sizes.<locals>.<lambda>¢  ó%   ø€ Ð7¸¿¹»
°|ÐCSÐTX×T\ÑT\ÓT^ÐS_Ñ`r:   c                  ó<   >• STR                    ST R                    3$ ©Nz?Expected both inputs to be fp8 or fp4 types but got self.dtype=z and mat2.dtype=r–   rj  s   €€r8   rg   rk  ¦  ó$   ø€ ÐQÐRV×R\ÑR\ÐQ]Ð]mÐnr×nxÑnxÐmyÑzr:   rý   rþ   c                 ó6   • U S   U S   :„  =(       a    U S   S:H  $ r+  r4   r,  s    r8   Úis_row_majorÚ,_check_scaled_mm_sizes.<locals>.is_row_major«  ó"   € Ø˜!‘9˜v a™yÑ(×;¨V°A©Y¸!©^Ð;r:   c                 ó0   • U S   S:H  =(       a    U S   S:„  $ r+  r4   r,  s    r8   Úis_col_majorÚ,_check_scaled_mm_sizes.<locals>.is_col_major®  ó   € Ø˜!‘9 ‘>×3 f¨Q¡i°!¡mÐ3r:   c                 ó`   • U R                  S5      S:H  =(       d    U R                  S5      S:H  $ r+  rª   ©Ú	tensor_2ds    r8   Úhas_zero_dimÚ,_check_scaled_mm_sizes.<locals>.has_zero_dim±  ó)   € Ø—>‘> !Ó$¨Ñ)×C¨Y¯^©^¸AÓ->À!Ñ-CÐCr:   c                  ó*   >• ST R                  5        3$ ©Nz#self must be row_major, got stride r,  r¹   s   €r8   rg   rk  ¶  ó   ø€ Ð9¸$¿+¹+»-¸ÑIr:   c                  ó*   >• ST R                  5        3$ ©Nz#mat2 must be col_major, got stride r,  ©rW  s   €r8   rg   rk  º  r€  r:   r3   r‚  r   c                  ó,   >• ST R                  S5       3$ ©NzBExpected self.size(1) to be divisible by 16, but got self.size(1)=r3   rª   r¹   s   €r8   rg   rk  ¾  ó   ø€ ÐXÐY]×YbÑYbÐcdÓYeÐXfÑgr:   c                  ó"   >• ST R                    3$ ©Nz?Expected both dimensions of mat2 to be divisible by 16 but got rR  rƒ  s   €r8   rg   rk  Â  ó   ø€ ÐUÐVZ×V`ÑV`ÐUaÑbr:   c                  ó   • g)NzNFor tensorwise scaling, both scale_a and scale_b must be float (fp32) tensors.r4   r4   r:   r8   rg   rk  Ù  s   € Ðhr:   rƒ  rÑ  r0  c                  ó   • g)Nzscale_a must be contiguousr4   r4   r:   r8   rg   rk  ù  ó   € Ð8r:   c                  ó   • g)Nzscale_b must be contiguousr4   r4   r:   r8   rg   rk  ý  rŒ  r:   Fc            	      óZ   >• ST  STR                  5        ST STR                  5        S3	$ )NzTInvalid blockwise scaling configuration. For blockwise scaling, scale_a should have ú elements, got z, scale_b should have r  r)  )Úexpected_a_sizeÚexpected_b_sizerZ  r[  s   €€€€r8   rg   rk    sC   ø€ ðFØFUÐEVÐVeÐfm×fsÑfsÓfuÐevð w/Ø/>Ð.?¸ÈwÏ}É}ËÐN_Ð_`ñbr:   c                  ó   • g)NzKFor rowwise scaling, both scale_a and scale_b must be float (fp32) tensors.r4   r4   r:   r8   rg   rk    s   € Ðer:   c                  óP   >• ST R                  5       < STR                  5       < 3$ )NzLFor non-tensorwise scaling, scale tensors must be 2D, but got scale_a.dim()=z and scale_b.dim()=r£   ©rZ  r[  s   €€r8   rg   rk    s*   ø€ ÐgÐY`×YdÑYdÓYfÑXhÐh|Ðnu×nyÑnyÓn{Ñm}Ñ~r:   c                  ó   • g)Nz@Both scale_a and scale_b must be contiguous for rowwise scaling.r4   r4   r:   r8   rg   rk    s   € Ð^r:   c                  ó¦  >• ST ST ST S[        T S5       S3	S[        T S5       S[        TS5       ST S[        T S5       S3	-   S[        T S5       ST S	[        TS5       S[        T S5       S3	-   S[        T S5       ST S
TR                  S5       STR                  S5       STR                  S5       STR                  S5       S3-   $ )Nú}Invalid scaling configuration. For tensorwise scaling, both scales should be scalar. For rowwise scaling, scale_a should be (ú, 1), scale_b should be (1, ú>). For (BlockWise1x128, BlockWise128x128), scale_a should be (r}   rÑ  ú), úscale_b should be (ú<). For (BlockWise1x128, BlockWise1x128), scale_a should be (z>). For (BlockWise128x128, BlockWise1x128), scale_a should be (ú). Got scale_a.size()=(r   r3   ú) and scale_b.size()=(r~   ©r9   r«   )Ú_krs  r  rZ  r[  s   €€€€€r8   rg   rk  7  sG  ø€ ðCàCDÀ#ÐEaÐbcÐadð eVØVWÐUXÐXZÔ[cÐdfÐhkÓ[lÐZmÐmpðrð 0´¸¸SÓ0AÐ/BÀ"ÄXÈaÐQTÓEUÐDVð WTØTUÐSVÐVXÔYaÐbdÐfiÓYjÐXkÐknðpñ	pð 0´¸¸SÓ0AÐ/BÀ"ÀQÀCð HVÜV^Ð_`ÐbeÓVfÐUgÐgiÔjrÐsuÐwzÓj{Ði|Ð|ðAñAð 0´¸¸SÓ0AÐ/BÀ"ÀQÀCð H/Ø/6¯|©|¸A«Ð.?¸rÀ'Ç,Á,ÈqÃ/ÐARð S/Ø/6¯|©|¸A«Ð.?¸rÀ'Ç,Á,ÈqÃ/ÐARÐRSðUò
Ur:   r	  )rX   rj   r‹   r`   r  rÐ   r«   rŸ   Úfloat8_e8m0fnurp  r�   rm  r9   rq  r‘   rˆ   )r    rW  rZ  r[  rH  r\  rJ  r]  re  rq  ru  r{  Úis_blockwise_scalingÚblock_size_kÚblock_size_mnÚnum_k_blocksÚpadded_num_k_blocksÚ
_out_dtyper   r�  r‘  rs  r  s   ````              @@@@@r8   Ú_check_scaled_mm_sizesr¨  �  s  ÿø€ ò
ô 
‡L‚LØ�‰‹
�a‰×+˜DŸH™H›J¨!™OÝ`ôô 
‡L‚LÙ˜4Ÿ:™:Ó&×IÑ+=¸d¿j¹jÓ+IÝzôô
 �4Ó˜FÓ"¤k°$Ó&7¸5Ô&@ò	<ò	4ò	Dô 	�ŠÙ˜Ÿ™›Ó'×=©<¸Ó+=ÜIô	
ô 	�ŠÙ˜Ÿ™›Ó'×=©<¸Ó+=ÜIô	
ô 	�ŠØ�I‰I�a‹L˜2Ñ Ñ"Ügô	
ô 	�ŠØ�I‰I�a‹L˜2Ñ Ñ"×= t§y¡y°£|°bÑ'8¸AÑ'=Übô	
ð —
‘
‰ˆˆ2Ø�I‰I�a‹Lˆð —‘¤×!5Ñ!5Ñ5÷ :Ø—M‘M¤U×%9Ñ%9Ñ9÷ð
 —‘¤×!4Ñ!4Ñ4÷ 9Ø—M‘M¤U×%8Ñ%8Ñ8ð 	ð �=‰=‹?˜aÓ G§M¡M£O°qÓ$8ä�LŠLØ—‘¤§¡Ñ.×Q°7·=±=ÄEÇMÁMÑ3QÙhöö "ð �}‰}¤× 3Ñ 3Ó3ð  "�Ø˜!‘V‘à!�àˆMä# B¨Ó5ˆLÜ"*¨<¸Ó";¸aÑ"?Ðð ¤¨¨MÓ :Ñ:Ð=PÑPð ð ¤¨¨MÓ :Ñ:Ð=PÑPð ð
 —‘“ ?Ó2Ø—M‘M“O Ó6ä—’Ø×)Ñ)Ó+Ù8ôô —’Ø×)Ñ)Ó+Ù8öô
 —’Ø÷öô �LŠLØ—‘¤§¡Ñ.×Q°7·=±=ÄEÇMÁMÑ3QÙeôô
 �LŠLØ—‘“ Ñ"×9 w§{¡{£}¸Ñ'9Ý~ôð —‘˜Q“ 1Ó$Ø—L‘L “O qÓ(Ø—L‘L “O qÓ(Ø—L‘L “O qÓ(ô —’Ø×)Ñ)Ó+×G°×0EÑ0EÓ0GÙ^öð
 —‘˜Q“ 1Ó$Ø—L‘L “O w§|¡|°A£ÕK¼(À2ÀsÓ:KÖKØ—L‘L “O¤x°°3Ó'7Ó7ð à—‘˜Q“ 1Ó$Ø—L‘L “O w§|¡|°A£ÕK¼(À2ÀsÓ:KÖKØ—L‘L “O qÓ(ð à—‘˜Q“¤8¨A¨sÓ#3Ó3Ø—L‘L “O w§|¡|°A£ÕK¼(À2ÀsÓ:KÖKØ—L‘L “O qÓ(ð ô —’Ø÷ð ôð" (Ñ3‘¸¿¹€JÜ�;Š;�t—y‘y “| T§Y¡Y¨q£\¸ÈDÏKÉKÑXÐXr:   c           
      ó   • [        XX#XEXg5      $ rD   )r¨  )r    rW  rZ  r[  rH  r\  rJ  r]  s           r8   Úmeta_scaled_mmrª  J  s   € ô "Ø�G d¸)óð r:   Úscale_recipe_aÚscale_recipe_bÚ	swizzle_aÚ	swizzle_bc           
      óB  ^ ^^^^^	^^^ ^!^"^#^$^%^&• S nS n[         R                  " T R                  5       S:H  =(       a    TR                  5       S:H  UU 4S j5        [         R                  " U" T R                  5      =(       a    U" TR                  5      UU 4S j5        T R                  S   m T R                  S   mTR                  S   m!U" T R                  5      (       a  U" TR                  5      (       a  SnTU-  mU Vs/ s H  n[        U5      PM     nnU Vs/ s H  n[        U5      PM     nnT(       a  T Vs/ s H  n[        U5      PM     snmO[        R                  /mT	(       a  T	 Vs/ s H  n[        U5      PM     snm	O[        R                  /m	[        T 5      S:X  d  [        T 5      S	:X  Ga˜  S
 nS nS n[         R                  " U" T R                  5       5      =(       d    U" T 5      U 4S j5        [         R                  " U" TR                  5       5      =(       d    U" T5      U4S j5        [         R                  " T R                  S5      S-  S:H  U 4S j5        [         R                  " TR                  S5      S-  S:H  =(       a    TR                  S5      S-  S:H  U4S j5        S[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnU" X55      (       a™  [         R                  " TS   R                  5       S:H  =(       ad    TS   R                  5       S:H  =(       aG    TS   R                  [         R                  :H  =(       a     TS   R                  [         R                  :H  S 5        G
O÷U" X55      (       a»  [         R                  " TS   R                  S   T :H  =(       a�    TS   R                  5       T :H  =(       ad    TS   R                  [         R                  :H  =(       a=    TS   R                  5       T!:H  =(       a     TS   R                  [         R                  :H  UUUU 4S j5        G
O/U" X55      (       Ga´  TS   R                  [         R                  :H  =(       a     TS   R                  [         R                  :H  nTS   m%T%R                  S   T :H  =(       a    T%R                  S   TS-  :H  =(       ac    T%R                  S5      S:H  =(       aH    T%R                  S5      T :H  =(       d-    T%R                  S   S:H  =(       a    T%R                  S5      S:H  nTS   m&T&R                  S   T!:H  =(       a    T&R                  S   TS-  :H  =(       ac    T&R                  S5      S:H  =(       aH    T&R                  S5      T!:H  =(       d-    T&R                  S   S:H  =(       a    T&R                  S5      S:H  n[         R                  " U=(       a    U=(       a    UUU U!U%U&4S j5        GOmU" X55      (       GaÄ  TS   R                  [         R                  :H  =(       a     TS   R                  [         R                  :H  n[        TS-  S 5      mTS   m%T%R                  S   T:H  =(       a    T%R                  S   T S-  :H  =(       ac    T%R                  S5      S:H  =(       aH    T%R                  S5      T:H  =(       d-    T%R                  S   S:H  =(       a    T%R                  S5      S:H  nTS   m&T&R                  S   T!:H  =(       a    T&R                  S   TS-  :H  =(       ac    T&R                  S5      S:H  =(       aH    T&R                  S5      T!:H  =(       d-    T&R                  S   S:H  =(       a    T&R                  S5      S:H  n[         R                  " U=(       a    U=(       a    UUUU U!U%U&4S! j5        GO›U" X55      (       GaÄ  TS   R                  [         R                  :H  =(       a     TS   R                  [         R                  :H  n[        TS-  S 5      mTS   m%T%R                  S   T :H  =(       a    T%R                  S   TS-  :H  =(       ac    T%R                  S5      S:H  =(       aH    T%R                  S5      T :H  =(       d-    T%R                  S   S:H  =(       a    T%R                  S5      S:H  nTS   m&T&R                  S   T:H  =(       a    T&R                  S   T!S-  :H  =(       ac    T&R                  S5      S:H  =(       aH    T&R                  S5      T:H  =(       d-    T&R                  S   S:H  =(       a    T&R                  S5      S:H  n[         R                  " U=(       a    U=(       a    UUUU U!U%U&4S" j5        GOÉU" X55      (       GaÌ  [         R                  R                   (       ac  [#        T R                  S   S#5      T R                  S   -  m"[#        T R                  S   S#5      T R                  S   -  m#[        R                  m$OŠ[        T R                  S   S5      [        [#        T R                  S   S#5      S 5      -  m"[        TR                  S   S5      [        [#        T R                  S   S#5      S 5      -  m#[        R$                  m$[         R                  " TS   R                  5       T":H  =(       a‚    TS   R                  [         R&                  :H  =(       a[    TS   R                  5       T#:H  =(       a>    TS   R                  [         R&                  :H  =(       a    TS   T$:H  =(       a    T	S   T$:H  U"U#U$UUUU	4S$ j5        GOïU" X55      (       Ga  [        T S5      [        [#        TS5      S 5      -  m"[        T!S5      [        [#        TS5      S 5      -  m#[        R$                  m$[         R                  " TS   R                  5       T":H  =(       a‚    TS   R                  [         R(                  :H  =(       a[    TS   R                  5       T#:H  =(       a>    TS   R                  [         R(                  :H  =(       a    TS   T$:H  =(       a    T	S   T$:H  U"U#U$UUUU	4S% j5        GOËU" X55      (       Gaž  [        T S5      [        [#        TS5      S 5      -  m"[        T!S5      [        [#        TS5      S 5      -  m#[        R$                  m$[         R                  " TS   R                  5       T":H  =(       Ga
    TS   R                  [         R(                  :H  =(       aã    TS   R                  5       S:H  =(       aÆ    TS   R                  [         R                  :H  =(       aŸ    TS   R                  5       T#:H  =(       a‚    TS   R                  [         R(                  :H  =(       a[    TS   R                  5       S:H  =(       a>    TS   R                  [         R                  :H  =(       a    TS   T$:H  =(       a    T	S   T$:H  U"U#U$UUUU	4S& j5        O[         R                  " S'UU U!UU4S( j5        Ub  UOT R                  n[         R*                  " T T!UT R,                  S)9$ s  snf s  snf s  snf s  snf )*Nc                 ó¢   • U [         R                  [         R                  [         R                  [         R                  [         R
                  4;   $ rD   r`  r–   s    r8   re  Ú5_check_scaled_mm_sizes_v2.<locals>.is_fp8_or_fp4_typeg  rg  r:   c                 ó(   • U [         R                  :H  $ rD   )rX   rd  r–   s    r8   Úis_fp4_typeÚ._check_scaled_mm_sizes_v2.<locals>.is_fp4_typep  s   € Øœ×.Ñ.Ñ.Ð.r:   rù   c                  óL   >• STR                  5        ST R                  5        3$ ri  r£   rj  s   €€r8   rg   Ú+_check_scaled_mm_sizes_v2.<locals>.<lambda>u  rl  r:   c                  ó<   >• STR                    ST R                    3$ rn  r–   rj  s   €€r8   rg   r¶  y  ro  r:   r   r3   rý   rþ   c                 ó6   • U S   U S   :„  =(       a    U S   S:H  $ r+  r4   r,  s    r8   rq  Ú/_check_scaled_mm_sizes_v2.<locals>.is_row_majorš  rs  r:   c                 ó0   • U S   S:H  =(       a    U S   S:„  $ r+  r4   r,  s    r8   ru  Ú/_check_scaled_mm_sizes_v2.<locals>.is_col_major�  rw  r:   c                 ó`   • U R                  S5      S:H  =(       d    U R                  S5      S:H  $ r+  rª   ry  s    r8   r{  Ú/_check_scaled_mm_sizes_v2.<locals>.has_zero_dim   r}  r:   c                  ó*   >• ST R                  5        3$ r  r,  r¹   s   €r8   rg   r¶  ¥  r€  r:   c                  ó*   >• ST R                  5        3$ r‚  r,  rƒ  s   €r8   rg   r¶  ©  r€  r:   r‚  c                  ó,   >• ST R                  S5       3$ r…  rª   r¹   s   €r8   rg   r¶  ­  r†  r:   c                  ó"   >• ST R                    3$ rˆ  rR  rƒ  s   €r8   rg   r¶  ±  r‰  r:   Úrecipe_aÚrecipe_bc                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rÿ  )rÌ   r(   Ú
TensorWise©rÂ  rÃ  s     r8   Úis_tensorwiseÚ0_check_scaled_mm_sizes_v2.<locals>.is_tensorwise´  sT   € ä�H“ Ñ"÷ :Ü˜“M QÑ&÷:à˜Q‘K¤;×#9Ñ#9Ñ9÷:ð ˜Q‘K¤;×#9Ñ#9Ñ9ð	r:   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rÿ  )rÌ   r(   ÚRowWiserÆ  s     r8   Ú
is_rowwiseÚ-_check_scaled_mm_sizes_v2.<locals>.is_rowwise¼  sT   € ä�H“ Ñ"÷ 7Ü˜“M QÑ&÷7à˜Q‘K¤;×#6Ñ#6Ñ6÷7ð ˜Q‘K¤;×#6Ñ#6Ñ6ð	r:   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rÿ  )rÌ   r(   ÚBlockWise1x32rÆ  s     r8   Úis_mxÚ(_check_scaled_mm_sizes_v2.<locals>.is_mxÄ  sT   € ä�H“ Ñ"÷ =Ü˜“M QÑ&÷=à˜Q‘K¤;×#<Ñ#<Ñ<÷=ð ˜Q‘K¤;×#<Ñ#<Ñ<ð	r:   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rÿ  )rÌ   r(   ÚBlockWise1x16rÆ  s     r8   Úis_nv_single_levelÚ5_check_scaled_mm_sizes_v2.<locals>.is_nv_single_levelÌ  sV   € ô �H“ Ñ"÷ =Ü˜“M QÑ&÷=à˜Q‘K¤;×#<Ñ#<Ñ<÷=ð ˜Q‘K¤;×#<Ñ#<Ñ<ð	r:   c                 ó0  • [        U 5      S:H  =(       a‚    [        U5      S:H  =(       am    U S   [        R                  :H  =(       aP    U S   [        R                  :H  =(       a3    US   [        R                  :H  =(       a    US   [        R                  :H  $ )Nrù   r   r3   )rÌ   r(   rÒ  rÅ  rÆ  s     r8   Úis_nvÚ(_check_scaled_mm_sizes_v2.<locals>.is_nvÖ  s†   € ä�H“ Ñ"÷ :Ü˜“M QÑ&÷:à˜Q‘K¤;×#<Ñ#<Ñ<÷:ð ˜Q‘K¤;×#9Ñ#9Ñ9÷:ð ˜Q‘K¤;×#<Ñ#<Ñ<÷	:ð
 ˜Q‘K¤;×#9Ñ#9Ñ9ðr:   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rÿ  )rÌ   r(   ÚBlockWise1x128rÆ  s     r8   Úis_1x128_1x128Ú1_check_scaled_mm_sizes_v2.<locals>.is_1x128_1x128à  sT   € ä�H“ Ñ"÷ >Ü˜“M QÑ&÷>à˜Q‘K¤;×#=Ñ#=Ñ=÷>ð ˜Q‘K¤;×#=Ñ#=Ñ=ð	r:   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rÿ  )rÌ   r(   rÙ  ÚBlockWise128x128rÆ  s     r8   Úis_1x128_128x128Ú3_check_scaled_mm_sizes_v2.<locals>.is_1x128_128x128è  sW   € ä�H“ Ñ"÷ @Ü˜“M QÑ&÷@à˜Q‘K¤;×#=Ñ#=Ñ=÷@ð ˜Q‘K¤;×#?Ñ#?Ñ?ð	r:   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rÿ  )rÌ   r(   rÝ  rÙ  rÆ  s     r8   Úis_128x128_1x128Ú3_check_scaled_mm_sizes_v2.<locals>.is_128x128_1x128ð  sT   € ä�H“ Ñ"÷ >Ü˜“M QÑ&÷>à˜Q‘K¤;×#?Ñ#?Ñ?÷>ð ˜Q‘K¤;×#=Ñ#=Ñ=ð	r:   c                  ó   • g)Nz\For Tensorwise scaling, both scale_a and scale_b must be single element float (fp32) tensorsr4   r4   r:   r8   rg   r¶    s   € Ðvr:   c            	      óš   >• STR                   S    STS   R                  5        ST R                   S    STS   R                  5        S3	$ )Nz'For Rowwise scaling, scale_a must have r   z elements (got: z), and scale_b must have r3   r~   )rŸ   r�   )rW  rZ  r[  r    s   €€€€r8   rg   r¶  
  s\   ø€ Ø=¸d¿j¹jÈ¹m¸_ÐL\Ð]dÐefÑ]g×]mÑ]mÓ]oÐ\pð q/Ø/3¯z©z¸!©}¨oÐ=MÈgÐVWÉj×N^ÑN^ÓN`ÐMaÐabñdr:   rÑ  c                  ó¢   >• ST ST S-   STR                    ST STR                   ST ST S-   STR                    ST STR                   S3$ )Nz>For 1x128 x 1x128 blockwise scaling, scale a must have shape [r}   rÑ  ú] (got: ú) and stride [1, ú)scale b must have shape [r~   ©rŸ   rÐ   )rÙ  rÆ  rÂ  ÚsaÚsbs   €€€€€r8   rg   r¶  '  sy   ø€ ð0Ø01¨s°"°Q¸#±X°J¸hÀrÇxÁxÀjÐPaÐbcÐadÐdlÐmo×mvÑmvÐlwð x0Ø01¨s°"°Q¸#±X°J¸hÀrÇxÁxÀjÐPaÐbcÐadÐdlÐmo×mvÑmvÐlwÐwxñzr:   r0  c                  ó¢   >• ST STS-   STR                    ST STR                   ST ST S-   STR                    ST STR                   S3$ )Nz]For 128x128 x 1x128 blockwise scaling, L4 = {round_up(K / 128, 4)}, scale a must have shape [r}   rÑ  ræ  rç  rè  r~   ré  ©rÙ  ÚL4rÆ  rÂ  rê  rë  s   €€€€€€r8   rg   r¶  F  sy   ø€ ð0Ø02¨t°2°a¸3±h°Z¸xÈÏÉÀzÐQbÐceÐbfÐfnÐoq×oxÑoxÐnyð z0Ø01¨s°"°Q¸#±X°J¸hÀrÇxÁxÀjÐPaÐbcÐadÐdlÐmo×mvÑmvÐlwÐwxñzr:   c                  ó¢   >• ST ST S-   STR                    ST STR                   ST STS-   STR                    ST STR                   S3$ )Nz]For 1x128 x 128x128 blockwise scaling, L4 = {round_up(K / 128, 4)}, scale a must have shape [r}   rÑ  ræ  rç  rè  r~   ré  rí  s   €€€€€€r8   rg   r¶  e  sy   ø€ ð0Ø01¨s°"°Q¸#±X°J¸hÀrÇxÁxÀjÐPaÐbcÐadÐdlÐmo×mvÑmvÐlwð x0Ø02¨t°2°a¸3±h°Z¸xÈÏÉÀzÐQbÐceÐbfÐfnÐoq×oxÑoxÐnyÐyzñ|r:   rƒ  c                  óæ   >• ST  STS   R                  5        ST STS   R                  5        S[        R                   STS   R                   STS   R                   ST S	TS    STS    S
3$ )Nz!for MX scaling scale_a must have ú (got: r   ú) and scale_b must have z). Scales must have types z (for self: ú	, mat_b: z) Must have swizzle type ú (got self: r~   )r�   rX   r¡  r`   ©Úexpected_scale_a_elemsÚexpected_scale_b_elemsÚexpected_swizzlerZ  r[  r­  r®  s   €€€€€€€r8   rg   r¶  €  s«   ø€ Ø7Ð8NÐ7OÈwÐW^Ð_`ÑWa×WgÑWgÓWiÐVjð k-Ø-CÐ,DÀGÈGÐTUÉJ×L\ÑL\ÓL^ÐK_ð `"Ü"'×"6Ñ"6Ð!7°|ÀGÈAÁJ×DTÑDTÐCUÐU^Ð_fÐghÑ_i×_oÑ_oÐ^pð q.Ø.>Ð-?¸|ÈIÐVWÉLÈ>ÐYbÐclÐmnÑcoÐbpÐpqñsr:   c                  ó„   >• ST  STS   R                  5        ST STS   R                  5        ST STS    STS    S3$ )	Nz.for single-level NV scaling scale_a must have rñ  r   rò  ú). Must have swizzle type rô  ró  r~   r)  rõ  s   €€€€€€€r8   rg   r¶  ’  sr   ø€ ØDÐE[ÐD\Ð\cÐdkÐlmÑdn×dtÑdtÓdvÐcwð x-Ø-CÐ,DÀGÈGÐTUÉJ×L\ÑL\ÓL^ÐK_ð `$Ø$4Ð#5°\À)ÈAÁ,ÀÈyÐYbÐcdÑYeÐXfÐfgñir:   c                  ó„   >• ST  STS   R                  5        ST STS   R                  5        ST STS    STS    S3$ )	Nz!for NV scaling scale_a must have rñ  r   rò  rú  rô  ró  r~   r)  rõ  s   €€€€€€€r8   rg   r¶  §  sq   ø€ Ø7Ð8NÐ7OÈwÐW^Ð_`ÑWa×WgÑWgÓWiÐVjð k-Ø-CÐ,DÀGÈGÐTUÉJ×L\ÑL\ÓL^ÐK_ð `$Ø$4Ð#5°\À)ÈAÁ,ÀÈyÐYbÐcdÑYeÐXfÐfgñir:   Fc                  ób  >• ST ST ST S[        T S5       S3	S[        T S5       S[        TS5       ST S[        T S5       S3	-   S[        T S5       ST S	TS
   R                  S
5       STS
   R                  S5       STS
   R                  S
5       STS
   R                  S5       S3-   $ )Nr—  r˜  r™  r}   rÑ  rš  r›  rœ  r�  r   r3   rž  r~   rŸ  )rÙ  rÆ  rÂ  rZ  r[  s   €€€€€r8   rg   r¶  °  s  ø€ ð?à?@¸cÐA]Ð^_Ð]`ð aRØRSÐQTÐTVÔW_Ð`aÐcfÓWgÐVhÐhkðmð ,¬H°Q¸Ó,<Ð+=¸RÄÈÈCÓ@PÐ?Qð RPØPQÈsÐRTÔU]Ð^_ÐadÓUeÐTfÐfiðkñ	kð ,¬H°Q¸Ó,<Ð+=¸RÀ¸sð C+Ø+2°1©:¯?©?¸1Ó+=Ð*>¸bÀÈÁÇÁÐQRÓASÐ@Tð U+Ø+2°1©:¯?©?¸1Ó+=Ð*>¸bÀÈÁÇÁÐQRÓASÐ@TÐTUðWòWr:   r	  )rX   rj   r‹   r`   rŸ   r(   r)   Ú
NO_SWIZZLEr  rÐ   r«   rÍ   r�   rm  r?   rá  râ  r9   ÚSWIZZLE_32_4_4r¡  rp  r‘   rˆ   )'r    rW  rZ  r«  r[  r¬  rH  rJ  r­  r®  r]  re  r³  ÚK_packed_multiplierÚsirq  ru  r{  rÇ  rË  rÏ  rÓ  rÖ  rÚ  rÞ  rá  Útypes_okÚ
scale_a_okÚ
scale_b_okr§  rÙ  rî  rÆ  rÂ  rö  r÷  rø  rê  rë  s'   ``` `   ``                    @@@@@@@@@r8   Ú_check_scaled_mm_sizes_v2r	  Z  sK  ÿþ€ ò
ò/ô 
‡L‚LØ�‰‹
�a‰×+˜DŸH™H›J¨!™OÝ`ôô 
‡L‚LÙ˜4Ÿ:™:Ó&×IÑ+=¸d¿j¹jÓ+IÝzôð 	�
‰
�1‰€AØ�
‰
�1‰€AØ�
‰
�1‰€Añ �4—:‘:×Ñ¡;¨t¯z©z×#:Ñ#:ØÐØ	Ð Ñ ˆá0>Ó?²¨"”k "–o±€NÐ?Ù0>Ó?²¨"”k "–o±€NÐ?æÙ/8Ó9ªy¨”[ –_©yÑ9‰	ô ×"Ñ"ð
ˆ	ö Ù/8Ó9ªy¨”[ –_©yÑ9‰	ô ×"Ñ"ð
ˆ	ô �4Ó˜FÓ"¤k°$Ó&7¸5Ô&@ò	<ò	4ò	Dô 	�ŠÙ˜Ÿ™›Ó'×=©<¸Ó+=ÜIô	
ô 	�ŠÙ˜Ÿ™›Ó'×=©<¸Ó+=ÜIô	
ô 	�ŠØ�I‰I�a‹L˜2Ñ Ñ"Ügô	
ô 	�ŠØ�I‰I�a‹L˜2Ñ Ñ"×= t§y¡y°£|°bÑ'8¸AÑ'=Übô	
ð
	¤D¬Ñ$5ð 	ÄÄkÑARô 	ð	¤¤kÑ!2ð 	¼dÄ;Ñ>Oô 	ð	œD¤Ñ-ð 	¼¼kÑ9Jô 	ð	Üœ;Ñ'ð	Ü37¼Ñ3Dô	ð	œD¤Ñ-ð 	¼¼kÑ9Jô 	ð	¤T¬+Ñ%6ð 	Ä$Ä{ÑBSô 	ð	¤t¬KÑ'8ð 	ÄDÌÑDUô 	ð	¤t¬KÑ'8ð 	ÄDÌÑDUô 	ñ ˜×8Ñ8ä�LŠLØ˜‘
× Ñ Ó" aÑ'÷ 6Ø˜A‘J×$Ñ$Ó&¨!Ñ+÷6à˜A‘J×$Ñ$¬¯©Ñ5÷6ð ˜A‘J×$Ñ$¬¯©Ñ5Ùvöñ ˜×7Ñ7Ü�LŠLØ˜‘
× Ñ  Ñ# qÑ(÷ 6Ø˜A‘J×$Ñ$Ó&¨!Ñ+÷6à˜A‘J×$Ñ$¬¯©Ñ5÷6ð ˜A‘J×$Ñ$Ó&¨!Ñ+÷6ð ˜A‘J×$Ñ$¬¯©Ñ5÷ö
ñ ˜N×;Ò;ð
 ˜‘
× Ñ ¤E§M¡MÑ1×W°g¸a±j×6FÑ6FÌ%Ï-É-Ñ6Wð ð ˜‘ˆBà—‘˜‘˜qÑ ÷ TØ—H‘H˜Q‘K 1¨¡8Ñ+÷Tà—I‘I˜a“L AÑ%÷Tð —Y‘Y˜q“\ QÑ&×R¨2¯8©8°A©;¸!Ñ+;×+QÀÇ	Á	È!ÃÐPQÑ@Qð	 ð ˜‘ˆBà—‘˜‘˜qÑ ÷ TØ—H‘H˜Q‘K 1¨¡8Ñ+÷Tà—I‘I˜a“L AÑ%÷Tð —Y‘Y˜q“\ QÑ&×R¨2¯8©8°A©;¸!Ñ+;×+QÀÇ	Á	È!ÃÐPQÑ@Qð	 ô �LŠLØ×6˜Z×6¨J÷ð öñ ˜n×=Ò=ð ˜‘
× Ñ ¤E§M¡MÑ1×W°g¸a±j×6FÑ6FÌ%Ï-É-Ñ6Wð ô ˜!˜c™' 1Ó%ˆBØ˜‘ˆBà—‘˜‘˜rÑ!÷ UØ—H‘H˜Q‘K 1¨¡8Ñ+÷Uà—I‘I˜a“L AÑ%÷Uð —Y‘Y˜q“\ RÑ'×S¨B¯H©H°Q©K¸1Ñ,<×,RÀÇÁÈ1ÃÐQRÑARð	 ð ˜‘ˆBà—‘˜‘˜qÑ ÷ TØ—H‘H˜Q‘K 1¨¡8Ñ+÷Tà—I‘I˜a“L AÑ%÷Tð —Y‘Y˜q“\ QÑ&×R¨2¯8©8°A©;¸!Ñ+;×+QÀÇ	Á	È!ÃÐPQÑ@Qð	 ô �LŠLØ×6˜Z×6¨J÷ñ öñ ˜n×=Ò=ð ˜‘
× Ñ ¤E§M¡MÑ1×W°g¸a±j×6FÑ6FÌ%Ï-É-Ñ6Wð ô ˜!˜c™' 1Ó%ˆBØ˜‘ˆBà—‘˜‘˜qÑ ÷ TØ—H‘H˜Q‘K 1¨¡8Ñ+÷Tà—I‘I˜a“L AÑ%÷Tð —Y‘Y˜q“\ QÑ&×R¨2¯8©8°A©;¸!Ñ+;×+QÀÇ	Á	È!ÃÐPQÑ@Qð	 ð ˜‘ˆBà—‘˜‘˜rÑ!÷ UØ—H‘H˜Q‘K 1¨¡8Ñ+÷Uà—I‘I˜a“L AÑ%÷Uð —Y‘Y˜q“\ RÑ'×S¨B¯H©H°Q©K¸1Ñ,<×,RÀÇÁÈ1ÃÐQRÑARð	 ô �LŠLØ×6˜Z×6¨J÷ñ öñ �>×2Ò2Ü�}‰}× × ä)1°$·*±*¸Q±-ÀÓ)DÀtÇzÁzÐRSÁ}Ñ)TÐ&Ü)1°$·*±*¸Q±-ÀÓ)DÀtÇzÁzÐRSÁ}Ñ)TÐ&Ü#.×#9Ñ#9Ñ ä)1°$·*±*¸Q±-ÀÓ)EÌÜ˜TŸZ™Z¨™]¨BÓ/°óIñ *Ð&ô *2°$·*±*¸Q±-ÀÓ)EÌÜ˜TŸZ™Z¨™]¨BÓ/°óIñ *Ð&ô $/×#=Ñ#=Ð Ü�LŠLØ˜‘
× Ñ Ó"Ð&<Ñ<÷ 5Ø˜A‘J×$Ñ$¬×(<Ñ(<Ñ<÷5à˜A‘J×$Ñ$Ó&Ð*@Ñ@÷5ð ˜A‘J×$Ñ$¬×(<Ñ(<Ñ<÷5ð ˜a‘LÐ$4Ñ4÷	5ð
 ˜a‘LÐ$4Ñ4÷ò öñ   ×?Ò?Ü%-¨a°Ó%5¼ÄÈ!ÈRÃÐRSÓ8TÑ%TÐ"Ü%-¨a°Ó%5¼ÄÈ!ÈRÃÐRSÓ8TÑ%TÐ"Ü*×9Ñ9ÐÜ�LŠLØ˜‘
× Ñ Ó"Ð&<Ñ<÷ 5Ø˜A‘J×$Ñ$¬×(;Ñ(;Ñ;÷5à˜A‘J×$Ñ$Ó&Ð*@Ñ@÷5ð ˜A‘J×$Ñ$¬×(;Ñ(;Ñ;÷5ð ˜a‘LÐ$4Ñ4÷	5ð
 ˜a‘LÐ$4Ñ4÷ò öñ �>×2Ò2Ü%-¨a°Ó%5¼ÄÈ!ÈRÃÐRSÓ8TÑ%TÐ"Ü%-¨a°Ó%5¼ÄÈ!ÈRÃÐRSÓ8TÑ%TÐ"Ü*×9Ñ9ÐÜ�LŠLØ˜‘
× Ñ Ó"Ð&<Ñ<÷ 	5ð 	5Ø˜A‘J×$Ñ$¬×(;Ñ(;Ñ;÷	5à˜A‘J×$Ñ$Ó&¨!Ñ+÷	5ð ˜A‘J×$Ñ$¬¯©Ñ5÷	5ð ˜A‘J×$Ñ$Ó&Ð*@Ñ@÷		5ð
 ˜A‘J×$Ñ$¬×(;Ñ(;Ñ;÷	5ð ˜A‘J×$Ñ$Ó&¨!Ñ+÷	5ð ˜A‘J×$Ñ$¬¯©Ñ5÷	5ð ˜a‘LÐ$4Ñ4÷	5ð ˜a‘LÐ$4Ñ4÷ò õô$ �LŠLØ÷
ð 
ôð (Ñ3‘¸¿¹€JÜ�;Š;�q˜! :°d·k±kÑBÐBùòm	 @ùÚ?ùò :ùò :s   Ä~Ä#~Å~Å:~r   Úcontraction_dimsc                 ó(   • [        U UUUUUUU	UUUS9$ )N)rH  rJ  r­  r®  r]  )r	  )r    rW  rZ  r«  r­  r[  r¬  r®  rH  r   r	  r]  s               r8   Úmeta_scaled_mm_v2r	  Á  s2   € ô %ØØØØØØØØØØØ%ñð r:   c           	      óP   • [        XX#USS9  U R                  U R                  5      $ ©NT)r£  r¿  ©r    r‹   r˜   r7  rx  rv  s         r8   Úmeta_scatter_reduce_twor	  ß  s%   € ô �d ¨VÀTÒJØ�>‰>˜$Ÿ*™*Ó%Ð%r:   c           	      ó   • [        XX#USS9  U $ r		  rÃ  r
	  s         r8   Úmeta_scatter_reduce__twor	  æ  s   € ä�d ¨VÀTÒJØ€Kr:   c                ó|  ^ • [         R                  " ST R                  5       s=:  =(       a    S:*  Os  U 4S j5        T R                  5       S:X  a.  [         R                  " U[         R                  T R
                  S9$ [         R                  " T R                  S5      U[         R                  T R
                  S9$ )Nr   rù   c                  ó*   >• ST R                  5        3$ )NzAThe probability distributions dimensions must be 1 or 2, but got r£   r  s   €r8   rg   Ú"meta_multinomial.<locals>.<lambda>ñ  s   ø€ ÐSÐTY×T]ÑT]ÓT_ÐS`Ñar:   r3   r	  )rX   rj   r‹   r‘   r›   rˆ   r«   )rã   Únum_samplesÚreplacementr  s   `   r8   Úmeta_multinomialr	  ì  s   ø€ ô 
‡L‚LØ	ˆE�I‰I‹K×Ó˜1ÔÜaôð ‡y�yƒ{�aÓÜ�{Š{˜;¬e¯j©jÀÇÁÑNÐNÜ�;Š;Ø�
‰
�1‹�{¬%¯*©*¸U¿\¹\ñð r:   c                 ó$   • SnU  H  nX-  nM	     U$ r2   r4   )Úvsr~  Úvs      r8   Úmultiply_integersr	  ú  s   € Ø	€AÛˆØ	‰Šñ à€Hr:   c                 ó^  ^ ^^^• [         R                  " [        T5      T:H  UU4S j5        TS-   m[         R                  " [        T 5      T:H  UU 4S j5        [         R                  " [        S T SS   5       5      =(       a    [        S T 5       5      U U4S j5        T S S u  p4X4/TQ7$ )Nc                  ó&   >• ST  S[        T5       3$ )Nz%It is expected output_size equals to ú, but got size rï  )Únum_spatial_dimsrÃ  s   €€r8   rg   Ú'upsample_common_check.<locals>.<lambda>  s   ø€ Ð7Ð8HÐ7IÈÔY\Ð]hÓYiÐXjÑkr:   rù   c                  ó&   >• ST  S[        T5       3$ )Nz$It is expected input_size equals to r	  rï  )Úexpected_input_dimsr“  s   €€r8   rg   r	  	  s   ø€ Ð6Ð7JÐ6KÈ?Ô[^Ð_iÓ[jÐZkÑlr:   c              3   ó*   #   • U  H	  oS :„  v •  M     g7f©r   Nr4   ©rv   rµ  s     r8   rx   Ú(upsample_common_check.<locals>.<genexpr>  s   é € Ð*š>�a�ŽEš>ùó   ‚c              3   ó*   #   • U  H	  oS :„  v •  M     g7fr 	  r4   r!	  s     r8   rx   r"	    s   é € Ð2NÂ+¸Q°q¶5Â+ùr#	  c                  ó   >• ST  ST 3$ )NzDInput and output sizes should be greater than 0, but got input size z and output size r4   )r“  rÃ  s   €€r8   rg   r	    s   ø€ ð Ø �\Ð!2°;°-ñAr:   )rX   rj   rÌ   r²  )r“  rÃ  r	  r	  Úchannelsr	  s   ```  @r8   Úupsample_common_checkr'	    sŸ   û€ Ü	‡L‚LÜˆKÓÐ,Ñ,Ýkôð +¨QÑ.ÐÜ	‡L‚LÜˆJ‹Ð.Ñ.Ýlôô
 
‡L‚LÜÑ*˜: a b™>Ó*Ó*×N¬sÑ2NÁ+Ó2NÓ/Nõ	Aôð " " 1�~Ñ€FØÐ+˜{Ñ+Ð+r:   c                 ó8  ^ • [         R                  " T R                  5       S:g  =(       d    [        T R	                  5       SS  5      U 4S j5        [        T R	                  5       USS9nT R                  U5      R                  [        R                  " T 5      S9$ )Nr   r3   c                  ó*   >• ST R                  5        3$ )Nz>Non-empty 3D data tensor expected but got a tensor with sizes rª   r  s   €r8   rg   Ú$upsample_nearest1d.<locals>.<lambda>  ó   ø€ ÐPÐQV×Q[ÑQ[ÓQ]ÐP^Ñ_r:   ©r	  r³   ©
rX   rj   r�   r	  r«   r'	  rž   r4  rQ   r   )rã   rÃ  ÚscalesÚfull_output_sizes   `   r8   Úupsample_nearest1dr0	    ó†   ø€ ô 
‡L‚LØ�‰‹˜Ñ×AÔ/°·
±
³¸Q¸RÐ0@ÓAÜ_ôô -Ø�
‰
‹�k°AñÐð �?‰?Ð+Ó,×/Ñ/Ü×1Ò1°%Ó8ð 0ð ð r:   c                 óÄ  ^ • [         R                  " T R                  5       S:g  =(       d    [        T R	                  5       SS  5      U 4S j5        [        T R	                  5       USS9nT R                  U5      n[        R                  " T 5      nT R                  u  px  nT R                  R                  S:X  a  US:  a  [         R                  nUR                  US9nU$ )	Nr   r3   c                  ó*   >• ST R                  5        3$ ©Nz>Non-empty 4D data tensor expected but got a tensor with sizes rª   r  s   €r8   rg   Ú$upsample_nearest2d.<locals>.<lambda>,  r+	  r:   rù   r,	  rý   r0  r³   )rX   rj   r�   r	  r«   r'	  rž   rQ   r   rŸ   rˆ   r   r¸   Ú
contiguous)	rã   rÃ  Úscales_hÚscales_wr/	  r
  r´   rT   Ú
n_channelss	   `        r8   Úupsample_nearest2dr:	  &  sÄ   ø€ ô 
‡L‚LØ�‰‹˜Ñ×AÔ/°·
±
³¸Q¸RÐ0@ÓAÜ_ôô -Ø�
‰
‹�k°AñÐð �_‰_Ð-Ó.€Fô ×/Ò/°Ó6€Mð  Ÿ+™+Ñ€A�1�aØ‡|�|×Ñ˜FÓ" z°A£~Ü×/Ñ/ˆà×Ñ¨]ÐÐ;€Fà€Mr:   rÃ  r“  r7	  r8	  c                 óX  ^ ^^• [        X!SS9m[        R                  " T R                  S:H  U 4S j5        [	        S5       H5  m[        R                  " T R                  T5      TT   :H  UU U4S j5        M7     T R                  U5      R                  [        R                  " T 5      S9$ )Nrù   r,	  r0  c                  ó"   >• ST R                    3$ ©NzFExpected grad_output to be a tensor of dimension 4 but got: dimension r  rî  s   €r8   rg   Ú-upsample_nearest2d_backward.<locals>.<lambda>R  ó   ø€ ÐXÐYd×YiÑYiÐXjÑkr:   c            
      óD   >• ST ST T    ST STR                  T5       3$ )NzCExpected grad_output to have the same shape as output; output.size(ú) = z but got grad_output.size(rª   ©r/	  r%  rç   s   €€€r8   rg   r>	  W  s9   ø€ ð Ø !˜s $Ð'7¸Ñ':Ð&;Ø,¨Q¨C¨t°K×4DÑ4DÀQÓ4GÐ3HñJr:   r³   )
r'	  rX   rj   r­   rÎ   r«   rž   r4  rQ   r   )r%  rÃ  r“  r7	  r8	  r/	  rç   s   `    @@r8   Úupsample_nearest2d_backwardrC	  @  s¡   ú€ ô -Ø°!ñÐô 
‡L‚LØ×Ñ˜AÑÜkôô �1ŽXˆÜ�ŠØ×Ñ˜QÓÐ#3°AÑ#6Ñ6öö	
ñ ð × Ñ  Ó,×/Ñ/Ü×1Ò1°+Ó>ð 0ð ð r:   c                 ó8  ^ • [         R                  " T R                  5       S:g  =(       d    [        T R	                  5       SS  5      U 4S j5        [        T R	                  5       USS9nT R                  U5      R                  [        R                  " T 5      S9$ )Nr   r3   c                  ó*   >• ST R                  5        3$ )Nz>Non-empty 5D data tensor expected but got a tensor with sizes rª   r  s   €r8   rg   Ú$upsample_nearest3d.<locals>.<lambda>i  r+	  r:   r0   r,	  r³   r-	  )rã   rÃ  Úscales_dr7	  r8	  r/	  s   `     r8   Úupsample_nearest3drH	  c  r1	  r:   c                 ó  • [         R                  " U 5      [         R                  " U [         R                  S9pvUbÄ  UbÁ  [        U[        5      (       d  [        S[        U5       35      e[        U[        5      (       d  [        S[        U5       35      eUR                  nUR                  5       n	[        XH5      n[        XX5      nUR                  X‰5        UR                  X‰5        [        XdS9  [        XuS9  XE4$ Xg4$ )Nr–   zvalues must be TensorLike, got z indices must be TensorLike, got )r®  r¯  )rX   r·   r¿   rt   r   r�   r   rŸ   rÐ   r!   rÕ   r#   )
r    Ústabler‹   Ú
descendingr»   r¼   r	  rç   r°   Ú
out_strides
             r8   Ú	meta_sortrM	  s  sß   € ô ×Ò˜DÓ!¤5×#3Ò#3°DÄÇÁÑ#L€qØÑ˜gÑ1Ü˜&¤*×-Ñ-Ü Ð#BÄ4ÈÃ<À.Ð!QÓRÐRÜ˜'¤:×.Ñ.Ü Ð#CÄDÈÃMÀ?Ð!SÓTÐTð —G‘Gˆ	Ø—X‘X“Zˆ
Ü" 6Ó5ˆÜ# GÓ7ˆØ×Ñ˜9Ô1Ø×Ñ˜IÔ2Ü Ò3Ü Ò4ØˆÐØˆ4€Kr:   c           	      ó>  ^ ^^^^^^^• [         R                  " T R                  S:H  U 4S j5        [         R                  " T R                  TR                  :H  UU 4S j5        T R	                  S5      mTbˆ  [         R                  " TR                  S:H  U4S j5        [         R                  " TR                  5       T:H  UU4S j5        [         R                  " TR                  TR                  :H  UU4S j5        [         R                  " TR                  S:H  U4S j5        T R	                  S	5      T-  T-  m[         R                  " TR                  5       T:H  UUUU U4S
 j5        [         R                  " [        U 4S jTTTT4 5       5      S 5        g )Nrù   c                  ó"   >• T R                    S3$ ©Nz != 2r  )Úinput_gatess   €r8   rg   Ú%rnn_cell_checkSizes.<locals>.<lambda>˜  ó   ø€ °;×3CÑ3CÐ2DÀEÑ0Jr:   c                  ó:   >• TR                    ST R                    3$ ©Nrp  rR  )Úhidden_gatesrQ	  s   €€r8   rg   rR	  ›  s   ø€ �;×$Ñ$Ð% T¨,×*<Ñ*<Ð)=Ñ>r:   r3   c                  ó"   >• T R                    S3$ )Nz != 1r  )Ú
input_biass   €r8   rg   rR	  Ÿ  s   ø€ °j·o±oÐ5FÀeÑ3Lr:   c                  ó.   >• TR                  5        ST  3$ rU	  r)  )Ú
gates_sizerX	  s   €€r8   rg   rR	  ¢  s   ø€ �z×'Ñ'Ó)Ð*¨$¨z¨lÑ;r:   c                  ó:   >• TR                    ST R                    3$ rU	  rR  )Úhidden_biasrX	  s   €€r8   rg   rR	  ¦  s   ø€ �z×'Ñ'Ð(¨¨[×->Ñ->Ð,?Ñ@r:   c                  ó"   >• T R                    S3$ rP	  r  )Úprev_hiddens   €r8   rg   rR	  ¨  rS	  r:   r   c            
      ó`   >• TR                  5        STR                  S5       ST ST ST  S3
$ )Nrp  r   z * z // z (aka r~   )r�   r«   )Úexpected_prev_hidden_numelÚfactorrZ	  rQ	  r^	  s   €€€€€r8   rg   rR	  ¬  s@   ø€ �;×$Ñ$Ó&Ð' t¨K×,<Ñ,<¸QÓ,?Ð+@ÀÀJÀ<ÈtÐTZÐS[Ð[aÐb|Ða}Ð}~Ñr:   c              3   óV   >#   • U  H  nUR                   TR                   :H  v •  M      g 7frD   r¹  )rv   r=   rQ	  s     €r8   rx   Ú&rnn_cell_checkSizes.<locals>.<genexpr>¯  s'   øé € ð 
âI�ð �H‰H˜×*Ñ*Ö*ÚIùs   ƒ&)c                  ó   • g)Nz%expected all inputs to be same devicer4   r4   r:   r8   rg   rR	  ³  s   € Ð7r:   )rX   rj   r­   rŸ   r«   r�   r²  )rQ	  rV	  rX	  r\	  ra	  r^	  r`	  rZ	  s   ``````@@r8   Úrnn_cell_checkSizesre	  �  sC  ÿ€ ô 
‡L‚L�×!Ñ! QÑ&Ô(JÔKÜ	‡L‚LØ×Ñ˜\×/Ñ/Ñ/Ý>ôð ×!Ñ! !Ó$€JØÑÜ�Š�Z—_‘_¨Ñ)Ô+LÔMÜ�ŠØ×ÑÓ *Ñ,Ý;ô	
ô 	�ŠØ×Ñ × 1Ñ 1Ñ1Ý@ô	
ô 
‡L‚L�×!Ñ! QÑ&Ô(JÔKØ!,×!1Ñ!1°!Ó!4°zÑ!AÀVÑ!KÐÜ	‡L‚LØ×ÑÓÐ9Ñ9ßÐôô 
‡L‚LÜô 
à" J°¸[ÑIó
ó 	
ñ 	8õr:   c                 óø   • [        XX4SU5        [        R                  " U [        R                  S9n[        R                  " U[        R                  S9n[        R                  " U[        R                  S9nXgU4$ )Nr0  r³   )re	  rX   r·   r¸   )rQ	  rV	  ÚcxrX	  r\	  Ú	workspaceÚhyÚcys           r8   Ú_thnn_fused_lstm_cell_metark	  ·  se   € ô ˜°:ÈAÈrÔRÜ× Ò  ¼E×<SÑ<SÑT€IÜ	×	Ò	˜"¬E×,CÑ,CÑ	D€BÜ	×	Ò	˜"¬E×,CÑ,CÑ	D€BØ�IÐÐr:   c                 ó¢  • [        U5      S:g  nU(       a   [        U5      nUS   nU R                  S   nOLU
(       a  U R                  S   OU R                  S   nU
(       a  U R                  S   OU R                  S   nSnU(       a  SOSnUS:w  a  UOUnU(       a  UUU-  /nOU
(       a  UUUU-  /OUUUU-  /nU R                  U5      nU	U-  UU/nUc   [        R                  " SU R
                  S9nOUR                  U5      nUR                  U	U-  UU/5      nU(       a  SOSnU R                  U[        R                  S9nUUUUU4$ )Nr   r3   r¢   rù   r¹  r–   )rÌ   rŸ   rž   rX   r‘   rˆ   r  )rã   rF  Úweight_stride0Ú
weight_bufÚhxrg	  rz  Úhidden_sizeÚ	proj_sizeÚ
num_layersÚbatch_firstÚdropoutÚtrainÚbidirectionalÚbatch_sizesÚdropout_stateÚis_input_packedÚ
seq_lengthÚ
mini_batchÚbatch_sizes_sumÚnum_directionsÚout_sizer°   r
  Ú
cell_shaperj	  ri	  Úreserve_shapeÚreserves                                r8   Ú
_cudnn_rnnr‚	  Æ  sS  € ô& ˜+Ó&¨!Ñ+€OÞÜ˜Ó%ˆ
Ø  ‘^ˆ
ØŸ+™+ a™.‰æ'2�U—[‘[ ’^¸¿¹ÀA¹ˆ
Þ'2�U—[‘[ ’^¸¿¹ÀA¹ˆ
Øˆæ'‘Q¨Q€NØ%¨›N‰y°€HÞØ$ h°Ñ&?Ð@‰	ö ð ˜ X°Ñ%>Ñ?à˜j¨(°^Ñ*CÐDð 	ð
 �_‰_˜YÓ'€Fà˜~Ñ-¨z¸;ÐG€JØ	�zÜ�[Š[˜ 5§<¡<Ñ0‰à�\‰\˜*Ó%ˆà	�‰�z NÑ2°JÀÐIÓ	J€Bö ‘A A€MØ�o‰o˜m´5·;±;ˆoÐ?€Gà�2�r˜7 JÐ.Ð.r:   c                 óÀ   • SnU H+  nUR                  5       S:”  d  M  XïR                  5       -  nM-     U R                  U45      n[        U UUUUUUUSUUU	U
UUU5      $ r€  )r�   rž   r‚	  )rã   rF  rm	  ro	  rg	  rz  rp	  rr	  rs	  rt	  ru	  rv	  rw	  rx	  Útotal_weight_elemsr  rn	  s                    r8   Ú
miopen_rnnr…	  þ  s�   € ð& ÐÛˆØ�7‰7‹9�q�=Ø§'¡'£)Ñ+Òñ ð —‘Ð"4Ð!6Ó7€JÜØØØØØ
Ø
ØØØ	ØØØØØØØó!ð r:   c                 ó>  • U(       a  U R                   S   OU R                   S   nU(       a  U R                   S   OU R                   S   nU
nU(       a  UUU/OUUU/nU R                  U5      nUc   [        R                  " SU R                  S9nOUR                  UR                   5      nUc   [        R                  " SU R                  S9nOUR                  UR                   5      n[        R                  " SU R                  [        R
                  S9nUUUU4$ )Nr3   r   r¹  r¾   )rŸ   rž   rX   r‘   rˆ   r  )rã   Úw0Úw1Úw2Úw3Úhx_Úcx_rË   rw	  rz  rp	  rr	  Ú
has_biasesrv	  rs	  ru	  rz	  r{	  Úoutput_chanelsr°   r
  ri	  rj	  rh	  s                           r8   Úmkldnn_rnn_layerr�	  +  sê   € ö& $/�—‘˜Q’°E·K±KÀ±N€JÞ#.�—‘˜Q’°E·K±KÀ±N€JØ €Nö ð 
�Z Ñ0à˜* nÐ5ð ð
 �_‰_˜YÓ'€FØ
�{Ü�[Š[˜ 5§<¡<Ñ0‰à�]‰]˜3Ÿ9™9Ó%ˆØ
�{Ü�[Š[˜ 5§<¡<Ñ0‰à�]‰]˜3Ÿ9™9Ó%ˆÜ—’˜A e§l¡l¼%¿+¹+ÑF€IØ�2�r˜9Ð$Ð$r:   c                 óÜ   ^^• U R                   S:X  a,  [        R                  " TS:H  =(       d    TS:H  UU4S j5        g [        R                  " U R                  T5      S:g  UU4S j5        g )Nr   r¢   c                  ó   >• T ST  3$ )Nz4: Expected reduction dim -1 or 0 for scalar but got r4   ©r‹   ró  s   €€r8   rg   Ú'zero_numel_check_dims.<locals>.<lambda>W  s   ø€ �w�iÐSÐTWÐSXÑYr:   c                  ó   >• T ST  S3$ )Nz: Expected reduction dim z to have non-zero size.r4   r’	  s   €€r8   rg   r“	  \  s   ø€ �w�iÐ8¸¸Ð=TÑUr:   )r­   rX   rœ   r«   )r    r‹   ró  s    ``r8   Úzero_numel_check_dimsr•	  S  sR   ù€ Ø‡y�y�Aƒ~Ü×ÒØ�1‰H×!˜˜r™	ÝYõ	
ô
 	×ÒØ�I‰I�c‹N˜aÑÝUõ	
r:   c                 ó°   ^ • Ub&  [        X!R                  5       5      n[        XT 5        g [        R                  " UR                  5       S:g  U 4S j5        g )Nr   c                  ó   >• T  S3$ )Nz@: Expected reduction dim to be specified for input.numel() == 0.r4   rb  s   €r8   rg   Ú%check_argmax_argmin.<locals>.<lambda>h  s   ø€ �t�fÐ\Ñ]r:   )rÀ   r‹   r•	  rX   rj   r�   )rÖ  r    r‹   s   `  r8   Úcheck_argmax_argminr™	  a  s?   ø€ Ø
�Ü˜S§(¡(£*Ó-ˆÜ˜d¨Õ.ä�ŠØ�J‰J‹L˜AÑÜ]õ	
r:   c                 ó¼   • [        SX5        [        R                  " U R                  Ub  U4OS 5      n[	        XU5      nU R                  U[        R                  S9$ )NÚargmaxr–   )r™	  rQ   r™  rŸ   rš  rž   rX   r¿   )r    r‹   rœ  rÇ  rŸ   s        r8   Úargmax_argmin_metarœ	  l  sM   € ä˜ $Ô,Ü×Ò §
¡
°c±o¨S©FÈ4ÓP€DÜ$ T°Ó9€EØ�>‰>˜%¤u§{¡{ˆ>Ð3Ð3r:   c                 óv   • U[         R                  :X  a  [         R                  n[         R                  " SXX4S9$ )Nr4   r  )rX   ÚjaggedrÍ  r‘   )rµ  r`   r‡   rˆ   r‰   s        r8   Úscalar_tensorrŸ	  t  s1   € ð
 ”—‘ÓÜ—‘ˆÜ�;Š;Ø
�%¨vñð r:   c                 ó”  • [        X R                  5       SS9nU R                  5       S:X  a  SOU R                  U5      n[        R                  " US:¬  5        [        R                  " X:*  S 5        [        U R                  5      n[        U5      S:”  a  XU'   U R                  U5      U R                  U[        R                  S94$ )NT©r€  r   r3   c                  ó   • g)Nzk not in range for dimensionr4   r4   r:   r8   rg   Útopk_meta.<locals>.<lambda>†  s   € Ð)Gr:   r–   )
rÀ   r‹   r«   rX   rj   rÍ   rŸ   rÌ   rž   r¿   )r    rb  r‹   Úlargestrê  Ú	sliceSizeÚtopKSizes          r8   Ú	topk_metar§	  €  s˜   € ô ˜Ÿh™h›j°dÑ
;€CØ—X‘X“Z 1“_‘¨$¯)©)°C«.€IÜ	‡L‚L��a‘ÔÜ	‡L‚L�‘Ñ!GÔHä�D—J‘JÓ€HÜ
ˆ8ƒ}�qÓØ�‰Ø�>‰>˜(Ó# T§^¡^°HÄEÇKÁK ^Ð%PÐPÐPr:   c                 óÎ   • Uc  Uc  [        S5      eUR                  5       nU R                  5       n	[        R                  " UU	R                  U	R
                  U	R                  S9$ )Nz;segment_reduce(): Either lengths or offsets must be defined)r`   rˆ   r‡   )r�   r6	  rX   r·   r`   rˆ   r‡   )
rz  r
  rˆ  rx  rƒ  r„  r…  r‡  Údata_contigÚgrad_contigs
             r8   Úmeta__segment_reduce_backwardr«	  Ž  sh   € ð
 �˜7™?ÜØIó
ð 	
ð —/‘/Ó#€KØ—/‘/Ó#€KÜ×ÒØØ×ÑØ×!Ñ!Ø×!Ñ!ñ	ð r:   c                 óì  ^• SSK Jn  [        TU R                  5       SS9mU R                  5       S:”  a  U R	                  T5      OSn[
        R                  " U" US:¬  X:*  5      U4S j5        [        U R                  S T U R                  TS-   S  -   5      nU(       a&  U R                  5       S:”  a  UR                  TS5        U R                  U5      U R                  U[
        R                  S94$ )Nr   )r¯  Tr¡	  r3   c                  ó   >• ST  3$ )Nz9kthvalue(): selected number k out of range for dimension r4   r£   s   €r8   rg   Úkthvalue_meta.<locals>.<lambda>ª  s   ø€ ÐKÈCÈ5ÑQr:   r–   )r1  r¯  rÀ   r‹   r«   rX   rj   rÍ   rŸ   r<  rž   r¿   )r    rb  r‹   rœ  r¯  ÚdimSizerŸ   s     `    r8   Úkthvalue_metar°	  ¡  sÃ   ø€ õ >ä
˜˜dŸh™h›j°dÑ
;€CØ $§¡£
¨Q£ˆd�i‰i˜Œn°A€GÜ	‡L‚LÙ��Q‘˜™Ó%ÜQôô
 �—‘˜D˜SÐ! D§J¡J¨s°Q©w¨yÐ$9Ñ9Ó:€EÞ�4—8‘8“: “>Ø�‰�S˜!ÔØ�>‰>˜%Ó  $§.¡.°¼e¿k¹k .Ð"JÐJÐJr:   c                 ó”  • U b  U OUn[         R                  " UR                  5       S:H  S 5        UR                  5       nU b)  [         R                  " U R                  5       U:H  S 5        Ub)  [         R                  " UR                  5       U:H  S 5        [         R                  " UR                  5       U:H  S 5        [         R                  " UR                  5       U:H  S 5        [         R                  " UR                  5       S:H  S 5        [         R                  " UR	                  5       US   US	   -  S
-  :H  S 5        g )Nrù   c                  ó   • g©NÚ r4   r4   r:   r8   rg   Ú(checkLSTMBackwardSizes.<locals>.<lambda>¹  s   € °"r:   c                  ó   • gr³	  r4   r4   r:   r8   rg   rµ	  ¼  ó   € ¸r:   c                  ó   • gr³	  r4   r4   r:   r8   rg   rµ	  ¾  r·	  r:   c                  ó   • gr³	  r4   r4   r:   r8   rg   rµ	  ¿  ó   € °r:   c                  ó   • gr³	  r4   r4   r:   r8   rg   rµ	  À  rº	  r:   c                  ó   • gr³	  r4   r4   r:   r8   rg   rµ	  Á  s   € ¨rr:   r   r3   r0  c                  ó   • gr³	  r4   r4   r:   r8   rg   rµ	  Â  s   € ÈRr:   )rX   rj   r‹   r«   r�   )Úgrad_hyÚgrad_cyrg	  rj	  rh	  Údefined_gradÚexp_sizes          r8   ÚcheckLSTMBackwardSizesrÂ	  ·  sí   € Ø%Ñ1‘7°w€LÜ	‡L‚L�×!Ñ!Ó# qÑ(©*Ô5Ø× Ñ Ó"€HØÑÜ�Š�W—\‘\“^ xÑ/±Ô<ØÑÜ�Š�W—\‘\“^ xÑ/±Ô<Ü	‡L‚L�—‘“˜hÑ&©
Ô3Ü	‡L‚L�—‘“˜hÑ&©
Ô3Ü	‡L‚L�—‘“ AÑ%¡zÔ2Ü	‡L‚L�—‘Ó" h¨q¡k°H¸Q±KÑ&?À!Ñ&CÑCÁZÕPr:   c                 óÈ   • U c  Uc  g[        XX#U5        [        R                  " U[        S9n[        R                  " U[        S9nU(       a  UR	                  SSS9OS nXgU4$ )N©NNNr³   r   F)rœ  )rÂ	  rX   r·   Úlegacy_contiguous_memory_formatr$  )	r¾	  r¿	  rg	  rj	  rh	  Úhas_biasÚ
grad_gatesÚgrad_cxr.  s	            r8   Ú#_thnn_fused_lstm_cell_backward_implrÉ	  Æ  sf   € à�˜7™?ØÜ˜7¨R°YÔ?Ü×!Ò!ØÔ!@ñ€Jô ×Ò˜rÔ1PÑQ€GÞ4<�
—‘˜q¨%�Ñ0À$€IØ 	Ð)Ð)r:   c                 ó2  • S nS nS nUS   (       a  UR                  U R                  5       5      nUS   (       d
  US   (       aQ  UR                  UR                  S5      U R                  S5      45      nUR                  UR                  S5      5      nXEU4$ )Nr   r3   rù   r¢   rN  )r;  r:  r<  r?  r(  Úgrad_weightr.  s          r8   Úlinear_backwardrÌ	  Ô  sŠ   € à€JØ€KØ€IØ�1‡~Ø!×+Ñ+¨F¯K©K«MÓ:ˆ
Ø�1‡~˜ QŸØ"×,Ñ,¨l×.?Ñ.?ÀÓ.CÀVÇ[Á[ÐQSÃ_Ð-UÓVˆØ ×*Ñ*¨<×+<Ñ+<¸RÓ+@ÓAˆ	Ø YÐ/Ð/r:   c                 ó   ^ ^• [        T R                  5      S:”  a  T R                  S   X-  -  S:X  d  [        ST R                   SU 35      eS mUU 4S jnT R                  S   X-  -  nT R                  S   U-  nT R                  S	   U-  n/ T R                  S S QUPUPUP7nT R                  U5      nUR	                  U" 5       S
9nU$ )Nrù   rv  r   z'Invalid input shape for pixel_shuffle: z with upscale_factor = c                 ób   • [         R                  R                  U 5      [         R                  :H  $ rD   ré  rì  s    r8   rî  Ú,meta_pixel_shuffle.<locals>.is_channels_lastê  s$   € Ü×"Ñ"×8Ñ8¸Ó=Ä×ATÑATÑTÐTr:   c                  óF  >• T " T5      (       a/  [        T5      S:X  a  [        R                  $ [        R                  $ TR	                  [        R                  S9(       a  [        R                  $ TR	                  [        R
                  S9(       a  [        R
                  $ g )Nrý   r³   )r  rX   r¸   rë  rq  Úpreserve_format)rî  r    s   €€r8   rö  Ú.meta_pixel_shuffle.<locals>.pick_memory_formatí  s   ø€ Ù˜D×!Ñ!Ü˜4Ó  FÓ*Ü×.Ñ.Ð.ä×*Ñ*Ð*Ø×Ñ¬e×.EÑ.EÐÖFÜ×*Ñ*Ð*Ø×Ñ¬e×.CÑ.CÐÖDÜ×(Ñ(Ð(ð Er:   rÐ  r¢   r³   )rÌ   rŸ   r�   rž   r4  )	r    Úupscale_factorrö  r[  ÚHrÚWrr°   r×   rî  s	   `       @r8   Úmeta_pixel_shufflerÖ	  á  sá   ù€ ô 	ˆD�J‰J‹˜!Ó §
¡
¨2¡°.Ñ2QÑ RÐVWÓ WäØ5°d·j±j°\ÐAXÐYgÐXhÐió
ð 	
òUö	)ð 	�
‰
�2‰˜>Ñ:Ñ;€AØ	�‰�B‰˜.Ñ	(€BØ	�‰�B‰˜.Ñ	(€BØ-�$—*‘*˜S˜b�/Ð- 1Ð- bÐ-¨"Ñ-€Ià
�.‰.˜Ó
#€CØ
�&‰&Ñ1Ó3ˆ&Ð
4€CØ€Jr:   c                 óX  • U R                  U R                  5      nUR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUUUUUUU4$ rD   r  )rã   Úweight0Úweight1Úweight2Úweight3r‹	  Úcx_tmpr
  Úhy_Úcy_Úgrad_output_r_optÚgrad_hy_r_optÚgrad_cy_r_optrË   rz  rp	  rr	  r�	  ru	  rv	  rw	  rs	  rh	  Údiff_xÚdiff_hxÚdiff_cxÚdiff_w1Údiff_w2Údiff_bs                                r8   Úmkldnn_rnn_layer_backwardrè	    s�   € ð4 �_‰_˜UŸ[™[Ó)€FØ�m‰m˜CŸI™IÓ&€GØ×Ñ˜vŸ|™|Ó,€GØ×Ñ §¡Ó.€GØ×Ñ §¡Ó.€GØ×Ñ˜wŸ}™}Ó-€FØ�7˜G V¨V°W¸gÐEÐEr:   )Ú	out_int32rà   c                ó”   • [         R                  " U U(       a  [         R                  O[         R                  [         R                  S9$ )N©r`   r´   )rX   r·   rP  r¿   r¸   ©r    Ú
boundariesré	  rà   s       r8   Úmeta_bucketizerî	  %  s2   € ô ×ÒØÞ&Œe�kŠk¬E¯K©KÜ×-Ñ-ñð r:   rí	  ré	  rà   c                óp   • UR                  SU(       a  [        R                  S9$ [        R                  S9$ )Nr4   r–   )rž   rX   rP  r¿   rì	  s       r8   Úmeta_bucketize_scalarrð	  /  s>   € ð ×ÑØ
Þ&Œe�k‰kð  ð ð ä,1¯K©Kð  ð ð r:   c                 ó¾  ^ ^^^^• Sm[        T 5      S:X  a)  [        R                  " T R                  5       U 4S j5        [        T 5      S:X  a+  T R                  5       (       a  [        R
                  " S5        [        R                  " [        T[        5      UU4S j5        [        R                  " TS:„  UU4S j5        [        R                  " [        T[        5      UU4S	 j5        [        R                  " [        T[        5      UU4S
 j5        [        R                  " TT:¬  U4S j5        [        R                  " TT R                  T R                  S9$ )Nzhistc()r  c                  ó$   >• ST R                    S3$ )Nz%"histogram_cpu" not implemented for 'r  r–   r  s   €r8   rg   Úmeta_histc.<locals>.<lambda>D  s   ø€ Ð=¸e¿k¹k¸]È!ÑLr:   rý   z%_histc_cuda with floating point inputc                  ó$   >• T S[        T 5       3$ )Nz#: argument 'bins' must be int, not rV  ©Úbinsró  s   €€r8   rg   ró	  J  s   ø€ �7�)Ð>¼tÀD»z¸lÑKr:   r   c                  ó   >• T ST  3$ )Nz: bins must be > 0, but got r4   rõ	  s   €€r8   rg   ró	  L  s   ø€  g YÐ.JÈ4È&Ñ#Qr:   c                  ó$   >• T  S[        T5       3$ )Nz%: argument 'min' must be Number, not rV  )ró  r  s   €€r8   rg   ró	  O  ó   ø€ �7�)Ð@ÄÀcÃÀÑLr:   c                  ó$   >• T  S[        T5       3$ )Nz%: argument 'max' must be Number, not rV  )ró  r¿  s   €€r8   rg   ró	  S  rù	  r:   c                  ó   >• T  S3$ )Nz: max must be larger than minr4   )ró  s   €r8   rg   ró	  U  s   ø€ ¨ yÐ0MÑ%Nr:   r¾   )r  rX   rj   r  rQ   rN  rt   r   r   r‘   rˆ   r`   )rã   rö	  r  r¿  ró  s   ````@r8   Ú
meta_histcrü	  =  sð   ü€ ð €GÜ�5Ó˜UÓ"Ü�ŠØ×#Ñ#Ó%ÜLô	
ô �5Ó˜VÓ#¨×(?Ñ(?×(AÑ(AÜ×%Ò%Ð&MÔNÜ	‡L‚LÜ�4œÓ!ÝKôô 
‡L‚L�˜‘ÕQÔRÜ	‡L‚LÜ�3œÓÝLôô 
‡L‚LÜ�3œÓÝLôô 
‡L‚L�˜‘ÔNÔOÜ�;Š;�t E§L¡L¸¿¹ÑDÐDr:   c                 óF  ^ • [        T R                  5       USS9n[        R                  " T R	                  5       S:g  =(       d#    [        S T R                  5       SS   5       5      U 4S j5        T R                  U5      R                  [        R                  " T 5      S9$ )Nrù   r,	  r   c              3   ó*   #   • U  H	  oS :„  v •  M     g7fr 	  r4   )rv   r«   s     r8   rx   Ú,meta_upsample_bimode2d_aa.<locals>.<genexpr>g  s   é € Ð!HÒ7G¨t¨¦(Ò7Gùr#	  r3   c                  ó*   >• ST R                  5        3$ r4	  rª   r  s   €r8   rg   Ú+meta_upsample_bimode2d_aa.<locals>.<lambda>h  r+	  r:   r³   )
r'	  r«   rX   rj   r�   r²  rž   r4  rQ   r   )rã   rÃ  rV  r7	  r8	  r/	  s   `     r8   Úmeta_upsample_bimode2d_aar
  Y  s‹   ø€ ô -Ø�
‰
‹�k°AñÐô 
‡L‚LØ�‰‹˜Ñ×HœcÑ!H°u·z±z³|ÀAÀBÑ7GÓ!HÓHÜ_ôð �?‰?Ð+Ó,×/Ñ/Ü×1Ò1°%Ó8ð 0ð ð r:   c                 óT  ^ ^^• [        X!SS9m[        R                  " T R                  S:H  U 4S j5        [	        S5       H3  m[        R                  " T R
                  T   TT   :H  UU U4S j5        M5     T R                  U5      R                  [        R                  " T 5      S9$ )Nrù   r,	  r0  c                  ó"   >• ST R                    3$ r=	  r  rî  s   €r8   rg   Ú4meta_upsample_bimode2d_aa_backward.<locals>.<lambda>}  r?	  r:   c            
      óD   >• ST ST T    ST STR                  T5       3$ )NzD
Expected grad_output to have the same shape as output; output.size(rA	  z
but got grad_output_size(rª   rB	  s   €€€r8   rg   r
  ‚  s>   ø€ ð DØDEÀ3ÀdÐK[Ð\]ÑK^ÐJ_ð `Ø˜˜D ×!1Ñ!1°!Ó!4Ð 5ñ9r:   r³   )
r'	  rX   rj   r­   rÎ   rŸ   rž   r4  rQ   r   )r%  rÃ  r“  rV  r7	  r8	  r/	  rç   s   `     @@r8   Ú"meta_upsample_bimode2d_aa_backwardr
  o  s¡   ú€ ô -Ø°!ñÐô 
‡L‚LØ×Ñ˜AÑÜkôô �1ŽXˆÜ�ŠØ×Ñ˜aÑ Ð$4°QÑ$7Ñ7ö9ö	
ñ ð × Ñ  Ó,×/Ñ/Ü×1Ò1°+Ó>ð 0ð ð r:   c                 óX  • [         R                  " UR                  5       S:H  S 5        [         R                  " UR                  5       S:H  S 5        [         R                  " UR                  R                  S 5        [         R                  " UR                  R                  S 5        g )Nr3   c                  ó   • g)Nz%found_inf must be a 1-element tensor.r4   r4   r:   r8   rg   Ú<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>�  ó   € Ð(Or:   c                  ó   • g)Nz%inv_scale must be a 1-element tensor.r4   r4   r:   r8   rg   r

  ’  r
  r:   c                  ó   • g)Nz!found_inf must be a float tensor.r4   r4   r:   r8   rg   r

  –  ó   € Ð3r:   c                  ó   • g)Nz!inv_scale must be a float tensor.r4   r4   r:   r8   rg   r

  š  r
  r:   )rX   rj   r�   r`   r  )r    rR  Ú	inv_scales      r8   Ú*_amp_foreach_non_finite_check_and_unscale_r
  Œ  s|   € ä	‡L‚LØ�‰Ó˜QÑÑ Oôô 
‡L‚LØ�‰Ó˜QÑÑ Oôô 
‡L‚LØ�‰×)Ñ)Ù3ôô 
‡L‚LØ�‰×)Ñ)Ù3õr:   c                 ó.   • [         R                  " U 5      $ rD   rG  )r    ÚnanÚposinfÚneginfs       r8   Ú
nan_to_numr
  Ÿ  r§  r:   c                 óÜ  • U R                   [        R                  [        R                  [        R                  [        R
                  1;   a  [        SU R                    S35      eU R                  n[        X5      n[        X#5      nX:X  a  U $ [        U R                  5       5      n[        U R                  5       5      nXR   XQ   sXQ'   XR'   XB   XA   sXA'   XB'   U R                  XE5        U $ )Nz>torch.transpose_: in-place transposition is not supported for z layout)r‡   rX   rÎ  Ú
sparse_cscrÏ  Ú
sparse_bscr�   r­   rÀ   rÍ   r«   rÐ   rÕ   )r    Údim0r—  Úndimsr«   rÐ   s         r8   rÁ  rÁ  ¥  sÛ   € à‡{�{Ü×ÑÜ×ÑÜ×ÑÜ×Ñð	ó ô ØLÈTÏ[É[ÈMÐY`Ðaó
ð 	
ð �I‰I€Eä˜$Ó&€DÜ˜$Ó&€Dàƒ|Øˆä�—	‘	“Ó€DÜ�$—+‘+“-Ó €Fà!'¡¨v©|Ð€F�L�&‘,Ø!™Z¨©Ð€D�J�‘
à×Ñ�TÔ"Ø€Kr:   c                 ó2  • U R                   nU R                  (       a?  U R                  5       nU R                  5       nUS::  a  US:X  d  [	        SU SU S35      eO#U R                  5       S:”  a  [	        SU S35      e[        U SUS:  a  S5      $ S5      $ )	Nrù   r   zEt_ expects a tensor with <= 2 sparse and 0 dense dimensions, but got z sparse and z dense dimensionsz6t_ expects a tensor with <= 2 dimensions, but self is rZ  r3   )r­   ri  rk  rl  r�   r‹   rÁ  )r    r
  rk  rl  s       r8   Út_r
  Ã  s©   € à�I‰I€Eà‡~‡~Ø—_‘_Ó&ˆ
Ø—N‘NÓ$ˆ	Ø˜a“ I°£NÜ ðØ%˜, l°9°+Ð=NðPóð ð %3ð �8‰8‹:˜‹>Ü ØHÈÈÈqÐQóð ô �d˜A E¨A£I˜qÓ5Ð5°1Ó5Ð5r:   )ré	  rà   ÚsideÚsorterc                óš  ^ ^^• [         R                  " [        T R                  5      S:*  =(       d    T R                  S S TR                  S S :H  UU 4S j5        [         R                  " TS L =(       d    T R                  TR                  :H  U U4S j5        [         R                  " US:g  =(       d    U(       + S 5        U(       a  [         R                  O[         R
                  n[        T[         R                  5      (       a$  [         R                  " TU[         R                  S9$ [         R                  " SUT R                  S	9$ )
Nr3   r¢   c                  ó`   >• S[        TR                  5       S[        T R                  5       3$ )Nz¯torch.searchsorted(): boundaries tensor should be 1 dimension or the first N-1 dimensions of boundaries tensor and input value tensor must match, but we got boundaries tensor z and input value tensor ©rÍ   rŸ   )r    Úsorted_sequences   €€r8   rg   Ú#meta_searchsorted.<locals>.<lambda>è  s3   ø€ ð3ä37¸×8MÑ8MÓ3NÐ2Oð P"Ü"& t§z¡zÓ"2Ð!3ñ5r:   c                  ón   >• S[        T R                  5       STb  [        TR                  5       3$ /  3$ )Nz[torch.searchsorted(): boundary and sorter must have the same size, but got boundary tensor z and got sorter tensor r"
  )r#
  r
  s   €€r8   rg   r$
  ó  sB   ø€ ð#Ü#'¨×(=Ñ(=Ó#>Ð"?Ð?VØ%+Ñ%7Œt�F—L‘LÓ!Ð@ñBà=?Ð@ñBr:   rß   c                  ó   • g)Nzetorch.searchsorted(): side and right can't be set to opposites, got side of left while right was Truer4   r4   r:   r8   rg   r$
  ý  s   € ð $r:   rë	  r4   r	  )rX   rj   rÌ   rŸ   rP  r¿   rt   r   r·   r¸   r‘   rˆ   )r#
  r    ré	  rà   r
  r
  r`   s   ``   ` r8   Úmeta_searchsortedr'
  Ø  sû   ú€ ô 
‡L‚LÜˆO×!Ñ!Ó" aÑ'÷ 	9Ø× Ñ   "Ð%¨¯©°C°R¨Ñ8õ	
ô	ô 
‡L‚LØ�$ˆ×?˜/×/Ñ/°6·<±<Ñ?õ	
ôô 
‡L‚LØ�‰×#˜eœ)ñ	$ôö %ŒE�KŠK¬%¯+©+€EÜ�$œŸ™×%Ñ%Ü×ÒØ˜¬U×-DÑ-Dñ
ð 	
ô �{Š{˜2 U°?×3IÑ3IÑJÐJr:   c                 óœ   ^ • [         R                  " T [         R                  [         R                  [         R                  4;  U 4S j5        g )Nc                  ó   >• ST  3$ )Nz/Unsupported input type encountered for isin(): r4   r–   s   €r8   rg   Ú3_check_for_unsupported_isin_dtype.<locals>.<lambda>  s   ø€ ÐAÀ%ÀÑIr:   )rX   rj   r  Ú
complex128Ú	complex64r–   s   `r8   Ú!_check_for_unsupported_isin_dtyper-
  
  s/   ø€ Ü	‡L‚LØ”e—j‘j¤%×"2Ñ"2´E·O±OÐDÑDÜIõr:   c                 óH   • U R                  X R                  S5      45      nU$ )Nr¢   rN  )r%  r¼   Únum_weightsr-  r:  rË	  s         r8   Úmeta_embedding_dense_backwardr0
    s(   € ð ×'Ñ'¨×6FÑ6FÀrÓ6JÐ(KÓL€KØÐr:   c                 ót   • U	(       a  [         R                  U UUUUUUUU
U5
      $ [        U UUUUUUUU
U5
      $ rD   )r-   Ú_embedding_bag_sparse_backwardÚ!meta_embedding_bag_dense_backward)rz  r¼   r„  r>  r?  Úmaximum_indicesr/
  r:  rz  r;  r'  r-  s               r8   Úmeta_embedding_bag_backwardr5
    se   € ö Ü×2Ñ2ØØØØØØØØØØó
ð 	
ô 1ØØØØØØØØØØó
ð 	
r:   c
                 óX  ^ • [         R                  " T R                  [         R                  [         R                  [         R
                  [         R                  4;   U 4S j5        U[        :X  a  [         R                  " US L5        T R                  UT R                  S5      45      n
U
$ )Nc                  ó"   >• ST R                    3$ )Nz$Unsupported input type encountered: r–   )rz  s   €r8   rg   Ú3meta_embedding_bag_dense_backward.<locals>.<lambda>W  s   ø€ Ð6°t·z±z°lÑCr:   r3   )
rX   rj   r`   rn  ro  rm  Úfloat64r8  rž   r«   )rz  r¼   r>  r?  r4
  r/
  r:  rz  r'  r-  Úindex_grad_weights   `          r8   r3
  r3
  H  sv   ø€ ô 
‡L‚LØ�
‰
”u—}‘}¤e§n¡n´e·m±mÄUÇ]Á]ÐSÑSÜCôð ŒxÓÜ�Š�_¨DÐ0Ô1ØŸ™¨°T·Y±Y¸q³\Ð'BÓCÐØÐr:   c                 óæ  • U R                  S5      n[        R                  " U[        :H  S 5        [        R                  " U R	                  5       S:H  5        [        R                  " UR	                  5       S:H  5        UR                  S5      n[        R                  " UR	                  5       S:H  5        [        R                  " UR                  S5      U:H  5        U R                  U45      n	U	$ )Nr3   c                  ó   • g)NzHembedding_bag_backward: per_sample_weights only supported for mode='sum'r4   r4   r:   r8   rg   Ú@meta_embedding_bag_per_sample_weights_backward.<locals>.<lambda>l  r3  r:   rù   r   )r«   rX   rj   r7  r‹   rž   )
rz  rF  r¼   r„  r>  rz  r-  Úembedding_featuresr	  r
  s
             r8   Ú.meta_embedding_bag_per_sample_weights_backwardr?
  _  s«   € ð Ÿ™ 1›ÐÜ	‡L‚LØ”ÑÙZôô 
‡L‚L�—‘“˜q‘Ô!Ü	‡L‚L�—‘“ !Ñ#Ô$Ø—,‘,˜q“/€KÜ	‡L‚L�—‘“ Ñ"Ô#Ü	‡L‚L�—‘˜Q“Ð#5Ñ5Ô6Ø�^‰^˜[˜NÓ+€FØ€Mr:   )Úassume_uniqueÚinvertc                óâ  • [         R                  " [        U [        5      =(       d    [        U[        5      S 5        [        U [        5      (       d  [         R                  " XR
                  S9n [        U[        5      (       d  [         R                  " XR
                  S9n[        U R                  5        [        UR                  5        [         R                  " U [         R                  S9$ )Nc                  ó   • g)Nz<At least one of elements and test_elements must be a Tensor.r4   r4   r:   r8   rg   Úmeta_isin.<locals>.<lambda>|  r  r:   r¹  r–   )
rX   rj   rt   r   r=  rˆ   r-
  r`   r·   r  )ÚelementsÚtest_elementsr@
  rA
  s       r8   Ú	meta_isinrG
  w  sœ   € ô 
‡L‚LÜ�8œVÓ$×I¬
°=Ä&Ó(IÙNôô �h¤×'Ñ'Ü—<’< ×1EÑ1EÑFˆä�m¤V×,Ñ,ÜŸš ]¿?¹?ÑKˆä% h§n¡nÔ5Ü% m×&9Ñ&9Ô:Ü×Ò˜H¬E¯J©JÑ7Ð7r:   r  c                 ó”   • [         R                  " U S:¬  S 5        [        U[        R                  S9u  p#[         R
                  " XS9$ )Nr   c                  ó   • g)Nz,polygamma(n, x) does not support negative n.r4   r4   r:   r8   rg   Ú meta_polygamma.<locals>.<lambda>Œ  s   € Ð!Or:   r¥  r–   )rX   rj   r   r   r¦  r·   )r  r    rT   rU   s       r8   Úmeta_polygammarK
  ‰  sB   € ô 
‡L‚L��a‘ÑOÔPÜ(ØÜ;×HÑHñ�O€Aô ×Ò˜DÑ5Ð5r:   c                 ó   • [        S5      e)Nz.Tensor.item() cannot be called on meta tensors)r3  r¹   s    r8   Úmeta_local_scalar_denserM
  ”  s   € ä
ÐGÓ
HÐHr:   c                 ó.   • [         R                  " U 5      $ rD   rG  r¹   s    r8   ÚsilurO
  ™  r§  r:   c                 ó^   • [        U [        R                  S9u  p[        R                  " XS9$ r¤  )r   r   r¦  rX   r·   )r    rT   rU   s      r8   ÚsigmoidrQ
  Ÿ  s/   € ô )ØÜ;×HÑHñ�O€Aô ×Ò˜DÑ5Ð5r:   c                 ó|  • U R                  5       S:H  nUR                  5       S:H  nU(       a—  U(       a4  UR                  S5      U R                  S5      UR                  S5      /nGO*[        R                  " UR                  S5      UR                  S5      :H  S 5        U R                  S5      UR                  S5      /nOÎU(       a\  [        R                  " UR                  S5      U R                  S5      :H  S 5        U R                  S5      UR                  S5      /nOk[        R                  " U R                  S5      UR                  S5      :H  S 5        U R                  S5      U R                  S5      UR                  S5      /nU=(       d    U R                  n[        R
                  R                  (       aV  SUR                  -  nUS   U-   S-
  U-  U-  nXE:X  a  US   U-  US/n	OUS/n	[        R                  " XiX0R                  S	9n
U
$ [        R                  " XcU R                  S	9n
U
$ )
Nrù   r   r3   c                  ó   • g©Nz matrix batch sizes have to matchr4   r4   r:   r8   rg   Ú2_create_grouped_mm_output_tensor.<locals>.<lambda>²  ó   € Ð6Xr:   r¢   c                  ó   • grT
  r4   r4   r:   r8   rg   rU
  ¸  rV
  r:   c                  ó   • g)Nzbatched dimension has to matchr4   r4   r:   r8   rg   rU
  ¾  s   € Ð6Vr:   r‚  r	  )r‹   r«   rX   rj   r`   rá  rý   Úitemsizer@  rˆ   r‘   )rU  rW  ÚoffsrJ  Ú
mat1_is_2dÚ
mat2_is_2dr~	  Ú	alignmentÚsize_paddedrL	  r×   s              r8   Ú _create_grouped_mm_output_tensorr_
  ©  sÊ  € Ø—‘“˜q‘€JØ—‘“˜q‘€JæÞØŸ	™	 !› d§i¡i°£l°D·I±I¸a³LÐAŠHä�LŠLØ—	‘	˜!“ §	¡	¨!£Ñ,Ñ.Xôð Ÿ	™	 !› d§i¡i°£mÐ4‰HæÜ�LŠLØ—	‘	˜!“ §	¡	¨!£Ñ,Ñ.Xôð Ÿ	™	 !› d§i¡i°£lÐ3‰Hô �LŠLØ—	‘	˜!“ §	¡	¨!£Ñ,Ñ.Vôð Ÿ	™	 !› d§i¡i°£l°D·I±I¸b³MÐBˆHà×'˜TŸZ™Z€Iä‡}�}××Ø˜)×,Ñ,Ñ,ˆ	Ø ‘| iÑ/°!Ñ3¸	ÑAÀIÑMˆØÓ#Ø" 1™+¨Ñ3°[À!ÐD‰Jà% qÐ)ˆJÜ×!Ò!Ø¨	¿+¹+ñ
ˆð
 €Jô �kŠk˜(¸D¿K¹KÑHˆØ€Jr:   Úmat_aÚmat_brZ
  c	                 óœ	  ^ ^^^^^• [         R                  " TS L TS L :H  S 5        TS L=(       a    TS Ln	U	(       aÏ  [         R                  n
[         R                  R                  (       a`  [         R
                  R                  5       (       a=  S[         R
                  R                  S5      R                  ;   a  [         R                  n
[         R                  " T R                  U
:H  =(       a    TR                  U
:H  U U4S j5        O[[         R                  " T R                  [         R                  :H  =(       a    TR                  [         R                  :H  U U4S j5        [         R                  " T R                  5       S;   =(       a    TR                  5       S;   U U4S j5        T R                  5       S:H  nTR                  5       S:H  nU(       a  U(       d9  [         R                  " T R                  S	5      TR                  S
5      :H  S 5        U	(       aH  S nS n[         R                  " U" T 5      U 4S j5        [         R                  " U" T5      U4S j5        S nU" ST 5        U" ST5        TGbD  TGb@  [         R                  " TR                  [         R                  :H  =(       a    TR                  [         R                  :H  =(       dA    TR                  [         R                  :H  =(       a    TR                  [         R                  :H  UU4S j5        TR                  [         R                  :H  =(       a    TR                  [         R                  :H  mSU4S jjnTb  U(       a  U(       a  TR                   S   OSnU" STT SU5        U" STTSU5        [         R                  " US L S 5        U(       d  U(       a„  [         R                  " TS LU U4S j5        Tbb  [         R                  " TR                  5       S:H  U4S j5        [         R                  " TR                  [         R"                  :H  U4S j5        O[         R                  " TS L S 5        [         R                  " US L S 5        [         R                  " US L =(       d    U[         R                  :H  S 5        [%        T TTU5      $ ) Nc                  ó   • g)Nz,Either both scale factors are given, or noner4   r4   r:   r8   rg   Ú)_meta_grouped_mm_common.<locals>.<lambda>à  s   € Ð>r:   Úgfx94r   c                  ó>   >• ST R                    STR                    S3$ )Nz5Expected inputs of E4M3 FP8 type but got mat_a.dtype=ú and mat_b.dtype=r  r–   ©r`
  ra
  s   €€r8   rg   rd
  ò  s#   ø€ ÐKÈEÏKÉKÈ=ÐXiÐjo×juÑjuÐivÐvwÑxr:   c                  ó>   >• ST R                    STR                    S3$ )Nz1Expected inputs of BF16 type but got mat_a.dtype=rg
  r  r–   rh
  s   €€r8   rg   rd
  ÷  s#   ø€ ÐGÈÏÉÀ}ÐTeÐfk×fqÑfqÐerÐrsÑtr:   )rù   r0   c                  óL   >• ST R                  5        STR                  5        3$ )Nz3Multiplicands must be 2D or 3D but got mat_a.dim()=z and mat_b.dim()=r£   rh
  s   €€r8   rg   rd
  ü  s%   ø€ ÐEÀeÇiÁiÃkÀ]ÐRcÐdi×dmÑdmÓdoÐcpÑqr:   rù   r¢   rÐ  c                  ó   • g)Nz3contraction dimension of mat_a and mat_b must matchr4   r4   r:   r8   rg   rd
     rW  r:   c                 óP   • U R                  5       nUS   S:„  =(       a    US   S:H  $ ©NrÐ  r3   r¢   r,  ©ÚmatÚ
mat_strides     r8   rq  Ú-_meta_grouped_mm_common.<locals>.is_row_major
   s*   € ØŸ™›ˆJØ˜b‘> AÑ%×=¨*°R©.¸AÑ*=Ð=r:   c                 óP   • U R                  5       nUS   S:H  =(       a    US   S:„  $ rm
  r,  rn
  s     r8   ru  Ú-_meta_grouped_mm_common.<locals>.is_col_major   s*   € ØŸ™›ˆJØ˜b‘> QÑ&×=¨:°b©>¸AÑ+=Ð=r:   c                  ó0   >• ST R                  5       SS   3$ )NzNExpected mat_a tensor to be row major in the last two dimensions, got strides rÐ  r,  )r`
  s   €r8   rg   rd
     s!   ø€ ÐdÐej×eqÑeqÓesÐtvÐtwÐexÐdyÑzr:   c                  ó0   >• ST R                  5       SS   3$ )NzQExpected mat_b tensor to be column major in the last two dimensions, got strides rÐ  r,  )ra
  s   €r8   rg   rd
     s!   ø€ ÐgÐhm×htÑhtÓhvÐwyÐwzÐh{Ðg|Ñ}r:   c                 ó  ^ ^^^• TR                  5       S-
  mSTR                  5       -  nTR                  5       mTTS-
     S:X  aJ  TT   [        STR                  TS-
     5      :¼  a'  [
        R                  " TT   U-  S:H  UU U4S j5        g TT   S:X  aM  TTS-
     [        STR                  T   5      :¼  a*  [
        R                  " TTS-
     U-  S:H  UU U4S j5        g [
        R                  " SUU4S j5        g )Nr3   r‚  r   c                  ó"   >• ST ST  STT     S3$ )Nró  ú stride along ú% dim to be multiple of 16 bytes, got r  r4   ©Úend_dimÚmat_namerp
  s   €€€r8   rg   ÚF_meta_grouped_mm_common.<locals>.check_valid_strides.<locals>.<lambda>$   s'   ø€ ˜) H :¨^¸G¸9ÐDiÐjtÐu|Ñj}Ði~Ð~ñ  Ar:   c                  ó.   >• ST ST S-
   STT S-
      S3$ )Nró  rx
  r3   ry
  r  r4   rz
  s   €€€r8   rg   r}
  +   sI   ø€ ˜) H :¨^¸GÀa¹K¸=ÐHmÐnxð  zAð  DEñ  zEñ  oFð  nGð  GHñ  Ir:   Fc                  ó*   >• ST ST R                    S3$ )NzInvalid strides/sizes, got z for strides and z for sizes.rR  rn
  s   €€r8   rg   r}
  0   s   ø€ Ð5°j°\ÐARÐSV×S\ÑS\ÐR]Ð]hÑir:   )r‹   Úelement_sizerÐ   r¿  rŸ   rX   rj   )r|
  ro
  r]
  r{
  rp
  s   `` @@r8   Úcheck_valid_stridesÚ4_meta_grouped_mm_common.<locals>.check_valid_strides   s   û€ Ø—'‘'“)˜a‘-ˆØ˜#×*Ñ*Ó,Ñ,ˆ	Ø—Z‘Z“\ˆ
Ø�g ‘kÑ" aÓ'¨J°wÑ,?Ä3Øˆs�y‰y˜ 1™Ñ%óD
ó -
ô �LŠLØ˜7Ñ# iÑ/°1Ñ4ö Aõð ˜Ñ  AÓ%¨*°W¸q±[Ñ*AÄSØˆs�y‰y˜Ñ!óF
ó +
ô �LŠLØ˜7 Q™;Ñ'¨)Ñ3°qÑ8ö Iõô
 �LŠLØÝiõr:   r`
  ra
  c                  ó>   >• ST R                    STR                    S3$ )NzhFor FP8 scales must both be float32, or for MXFP8 both scales must be float8_e8m0fnu. Got scale_a.dtype=z and scale_b.dtype=r  r–   r”  s   €€r8   rg   rd
  =   sR   ø€ Ð~ð  @G÷  @Mñ  @Mð  Nð  Nað  bi÷  boñ  boð  apð  pqñ  rr:   r3   c                 ó   >^ ^^^^^^	^
• TR                  5       S:X  aÚ  [        R                  " TR                  5       U 4S j5        T(       a=  [        R                  " TR                  5       TR                  5       :H  UUU 4S j5        g [        R                  " TR                  5       S:H  UU 4S j5        [        R                  " TR                  S   TR                  T   T-  :H  UUUU U4S j5        g [        R                  " TR                  S5      S:H  U 4S	 j5        [        R                  " TR                  S   TR                  S   :H  UUU 4S
 j5        T(       a®  [        R                  " TR                  TR                  S-
  :H  UUU 4S j5        TR                  u  mpVSn[        XW-  S5      m	[        US5      m
[        R                  " TR                  S   T:H  =(       a    TR                  S   T	T
-  :H  UU	U
UU4S j5        g [        R                  " TR                  5       S:H  UU 4S j5        [        R                  " TR                  S   TR                  ST-      :H  UUU U4S j5        g )Nrù   c                  ó   >• ST  S3$ )Nró  z to be contiguous.r4   ©Ú
scale_names   €r8   rg   Ú>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>H   s   ø€ ˜i¨
 |Ð3EÑFr:   c                  óB   >• ST ST R                    STR                    3$ )NzKFor MXFP8, scale must have same number of dimensions as target tensor, but ú has mat.ndim=ú and scale.ndim=r  ©ro
  r°  r‡
  s   €€€r8   rg   rˆ
  Q   sX   ø€ Ð"mÐnxÐmyð  zHð  IL÷  IQñ  IQð  HRð  Rbð  ch÷  cmñ  cmð  bnñ  !or:   r3   c                  ó2   >• ST ST R                  5        S3$ )Nró  z to be 1D tensor, but got ú	D tensor.r£   ©r°  r‡
  s   €€r8   rg   rˆ
  V   ó!   ø€  )¨J¨<Ð7QÐRW×R[ÑR[ÓR]ÐQ^Ð^gÑ hr:   r   c                  óV   >• ST ST R                   T   T-   STR                   S    S3$ )Nró  z	 to have r�  r   z
 elements.rR  )ro
  r°  Úscale_multiplierr‡
  Ú
scaled_dims   €€€€€r8   rg   rˆ
  Z   sU   ø€  )¨J¨<°yÀÇÁÈ:ÑAVÐYiÑAiÐ@jÐjyÐz÷  {Fñ  {Fð  GHñ  {Ið  zJð  JTñ  !Ur:   r¢   c                  ó   >• ST  S3$ )Nró  z( to be contiguous in the last dimension.r4   r†
  s   €r8   rg   rˆ
  _   s   ø€ ˜i¨
 |Ð3[Ñ\r:   c                  óP   >• ST ST R                   S    STR                   S    S3$ )Nró  z batch dimension to be r   ú, got r  rR  rŒ
  s   €€€r8   rg   rˆ
  c   s4   ø€ ˜i¨
 |Ð3JÈ3Ï9É9ÐUVÉ<È.ÐX^Ð_d×_jÑ_jÐklÑ_mÐ^nÐnoÑpr:   c                  óB   >• ST ST R                    STR                    3$ )Nz0For MXFP8, 3d tensor should have 2d scales, but rŠ
  r‹
  r  rŒ
  s   €€€r8   rg   rˆ
  j   sD   ø€ Ð"RÐS]ÐR^Ð^lÐmp×muÑmuÐlvð  wGð  HM÷  HRñ  HRð  GSñ  !Tr:   rƒ  r0  rÑ  c                  óN   >• STR                    ST  STT-   STR                    3$ )NzFor MXFP8, expected mat.shape=z to have scale shape of (Ú,z), but got rR  )ÚGÚ	blocked_KÚ	blocked_Nro
  r°  s   €€€€€r8   rg   rˆ
  t   sO   ø€ Ð"@ÀÇÁÀÐKdÐefÐdgÐghÐirÐu~Ñi~Ðhð  @Kð  LQ÷  LWñ  LWð  KXñ  !Yr:   c                  ó2   >• ST ST R                  5        S3$ )Nró  z to be 2D tensor, but got rŽ
  r£   r�
  s   €€r8   rg   rˆ
  y   r�
  r:   c                  óV   >• ST ST R                   ST-       STR                   S    S3$ )Nró  z non-batch dimension to be r3   r–
  r  rR  )ro
  r°  r‡
  r“
  s   €€€€r8   rg   rˆ
  }   sR   ø€  )¨J¨<Ð7RÐSV×S\ÑS\Ð]^ÐakÑ]kÑSlÐRmÐmsÐty×tÑtð  ABñ  uCð  tDð  DEñ  !Fr:   )r‹   rX   rj   rq  rŸ   rÐ   r­   r?   )r‡
  r°  ro
  r“
  r’
  rÙ  rÂ  rç  rš
  r›
  rœ
  Úis_mxfp8s   `````   @@@€r8   Úcheck_scaleÚ,_meta_grouped_mm_common.<locals>.check_scaleD   sâ  ÿø€ Ø�w‰w‹y˜A‹~Ü—’Ø×'Ñ'Ó)ÜFôö Ü—L’LØŸ	™	› s§w¡w£yÑ0ö oõô
 —L’LØŸ	™	› qÑ(Ýhôô —L’LØŸ™ A™¨#¯)©)°JÑ*?ÐBRÑ*RÑR÷ Uð  Uõô
 —’Ø—L‘L Ó$¨Ñ)Ü\ôô —’Ø—K‘K ‘N c§i¡i°¡lÑ2Þpôö Ü—L’LØŸ
™
 c§h¡h°¡lÑ2ö Tôð "Ÿi™i‘G�A�qØ!#�JÜ (¨©¸Ó ;�IÜ (¨¨CÓ 0�IÜ—L’LØŸ™ A™¨!Ñ+×W°·±¸A±À)ÈiÑBWÑ0W÷ Yð  Yõô
 —L’LØŸ	™	› qÑ(Ýhôô —L’LØŸ™ A™¨#¯)©)°A¸
±NÑ*CÑC÷ Fõr:   rZ  r[  c                  ó   • g)Nz:Scale result tensor provided, but it is not supported yet.r4   r4   r:   r8   rg   rd
  ˆ   rq   r:   c                  óN   >• ST R                  5        STR                  5        S3$ )Nz/Offsets tensor not provided, but is needed for zD/zD multiplicand layouts.r£   rh
  s   €€r8   rg   rd
  Ž   s(   ø€ ÐEÀeÇiÁiÃkÀ]ÐRTÐUZ×U^ÑU^ÓU`ÐTaÐaxÑyr:   c                  ó,   >• ST R                  5        S3$ )Nz.Offsets tensor must be 1D, but got offs.dim()=r  r£   ©rZ
  s   €r8   rg   rd
  “   s   ø€ ÐHÈÏÉËÈÐTUÑVr:   c                  ó$   >• ST R                    S3$ )Nz7Offsets tensor must be integer (int32) tensor, but got r  r–   r¥
  s   €r8   rg   rd
  —   s   ø€ ÐQÐRV×R\ÑR\ÐQ]Ð]^Ñ_r:   c                  ó   • g)NzJOffsets tensor provided, but is not needed for 3D/3D multiplicand layouts.r4   r4   r:   r8   rg   rd
  œ   s   € Ð`r:   c                  ó   • g)Nz2Bias tensor provided, but it is not supported yet.r4   r4   r:   r8   rg   rd
  ¡   s   € ÐDr:   c                  ó   • g)Nz4If output dtype provided, it must be torch.bfloat16.r4   r4   r:   r8   rg   rd
  ¦   s   € ÐFr:   r;  )rX   rj   rp  rá  râ  rý   rå  Úget_device_propertiesÚgcnArchNamerb  r`   ro  r‹   r«   rm  r¡  rŸ   rP  r_
  )r`
  ra
  rZ  r[  rZ
  rH  r\  rJ  r]  ÚscaledÚ	fp8_dtypeÚmat_a_is_2dÚmat_b_is_2drq  ru  r�
  r 
  r’
  rŸ
  s   `````             @r8   Ú_meta_grouped_mm_commonr°
  Ó  s‘  ý€ ô 
‡L‚LØ	�Dˆ˜g¨˜oÑ.Ù>ôð ˜DÐ ×8 W°DÐ%8€Fö Ü×'Ñ'ˆ	ä�M‰M××Ü—
‘
×'Ñ'×)Ñ)Øœ5Ÿ:™:×;Ñ;¸AÓ>×JÑJÓJä×-Ñ-ˆIÜ�ŠØ�K‰K˜9Ñ$×A¨¯©¸	Ñ)AÝxõ	
ô
 	�ŠØ�K‰Kœ5Ÿ>™>Ñ)×K¨e¯k©k¼U¿^¹^Ñ.KÝtô	
ô
 
‡L‚LØ�	‰	‹�vÑ×7 %§)¡)£+°Ñ"7Ýqôð
 —)‘)“+ Ñ"€KØ—)‘)“+ Ñ"€KæžkÜ�ŠØ�J‰J�r‹N˜eŸj™j¨›nÑ,ÙIô	
ö
 ò	>ò	>ô 	�ŠÙ˜ÓÜzô	
ô 	�ŠÙ˜ÓÜ}ô	
ò
ñ0 ˜ Ô'Ù˜ Ô'àÒ˜wÒ2Ü�ŠØ�]‰]œeŸm™mÑ+×N°·±ÄÇÁÑ0N÷ à—‘¤×!5Ñ!5Ñ5÷ :Ø—M‘M¤U×%9Ñ%9Ñ9õ rô	
ð �M‰MœU×1Ñ1Ñ1÷ 6Ø—‘¤×!5Ñ!5Ñ5ð 	÷
:	ðz "Ñ-¶+Æ+ˆD�J‰J�qŠMÐSTð 	ñ 	�I˜w¨¨qÐ2BÔCÙ�I˜w¨¨qÐ2BÔCä�ŠØ˜DÐ ÙPô	
ö
 –kÜ�ŠØ˜ÐÝyô	
ð ÑÜ�LŠLØ—‘“
˜a‘ÜVôô �LŠLØ—
‘
œeŸk™kÑ)Ü_ôøô
 	�ŠØ�DˆLÙ`ô	
ô
 
‡L‚LØ�ˆÙDôô
 
‡L‚LØ�TÐ×8˜Y¬%¯.©.Ñ8ÙFôô
 ,¨E°5¸$À	ÓJÐJr:   c                 ó"   • [        U US S UUS US9$ )N)rZ  r[  rZ
  rH  r\  rJ  )r°
  )r`
  ra
  rZ
  rH  rJ  s        r8   Úmeta_grouped_mmr²
  ¬   s)   € ô #ØØØØØØØØñ	ð 	r:   c	                 óV   • U=(       d    [         R                  n[        U UUUUUUUUS9	$ )N)rZ  r[  rZ
  rH  r\  rJ  r]  )rX   ro  r°
  )	r`
  ra
  rZ  r[  rZ
  rH  r\  rJ  r]  s	            r8   Úmeta_scaled_grouped_mmr´
  Á   s:   € ð ×+œUŸ^™^€Iä"ØØØØØØØ!ØØ%ñ
ð 
r:   c                 óH  • [        U5      [        S5      :X  a2  U  H,  n[        R                  " UR                  5       S:„  S 5        M.     / nU  HO  nUb  UOUR                  nUR
                  (       a  [        U5      nUR                  UR                  SUS95        MQ     U$ )NÚinfr   c                  ó   • g)Nz:_foreach_norm cannot compute infinity norm on empty tensorr4   r4   r:   r8   rg   Ú#meta_foreach_norm.<locals>.<lambda>ã   s   € ÐTr:   r4   r–   )	r\   rX   rj   r�   r`   rô   r   rÏ   rž   )ÚtensorsÚordr`   rá  ÚresultsrJ  s         r8   Úmeta_foreach_normr¼
  Ý   sŒ   € äˆSƒz”U˜5“\Ó!ÛˆAÜ�LŠLØ—‘“	˜A‘ÙTöñ ð
 €GÛˆØ"Ñ.‘E°A·G±Gˆ	Ø××Ü0°Ó;ˆIØ�‰�q—{‘{ 2¨Y�{Ð7Ö8ñ	 ð
 €Nr:   r=   Úhalf_to_floatc                 ó\  • U(       aG  U R                   [        R                  [        R                  4;  a  [	        SU R                    S35      e[
        R                  " U [
        R                  R                  S9u  p4U(       d  UOUn[        R                  " X[        R                  S9nU$ )Nz%half_to_float is True but x.dtype is z, expected half or bfloat16r¥  rë	  )r`   rX   rZ   ro  r�   rQ   r   r   rR   r·   r¸   )r=   r‹   r½
  Úcomputation_dtyperU   r»  s         r8   ÚsoftmaxrÀ
  î   sŽ   € ö Ø�7‰7œ5Ÿ:™:¤u§~¡~Ð6Ó6Ü Ø7¸¿¹°yÐ@[Ð\óð ô ',×&>Ò&>Ø	œu×DÑD×LÑLñ'Ñ#Ðö (5‘<Ð:K€LÜ
×
Ò
˜1Ä×@WÑ@WÑ
X€CØ€Jr:   c           	      óÐ  ^^^^	^
^• [         R                  " [        T5      S-  S:H  U4S j5        U R                  m[        T5      m
[        T5      S-  nT
U-
  m	[         R                  " T
U:¬  U
U4S j5        [	        S T 5       5      (       aš  U n[        T	T
5       Hx  mST
T-
  S-
  -  mTT   S:  a*  UR                  TTT   * UR                  T   TT   -   5      nTTS-      S:  d  MO  UR                  TSUR                  T   TTS-      -   5      nMz     UR                  5       $ [        TS T	 5      n[        U5       Ha  m[        T5      TS-   S-  -
  mTT	T-      TT   -   TTS-      -   n[         R                  " US:¬  UUU	UU4S j5        UR                  U5        Mc     [         R                  " UU R                  U R                  U R                  [        U 5      S9$ )	Nrù   r   c                  ó    >• S[        T 5       3$ )Nz1Length of pad must be even but instead it equals rï  rÎ  s   €r8   rg   Ú'_constant_pad_nd_meta.<locals>.<lambda>!  s   ø€ ÐCÄCÈÃHÀ:ÑNr:   c                  ó(   >• S[        T5       ST  S3$ )Nz`Length of pad should be no more than twice the number of dimensions of the input. Pad length is z while the input has z dimensions.rï  )Úl_inprÏ  s   €€r8   rg   rÃ
  !  s    ø€ ð 2Ü25°c³(°Ð;PØˆ'�ñr:   c              3   ón   #   • U  H+  n[        U[        R                  5      =(       a    US :*  v •  M-     g7fr 	  )rt   rQ   ÚIntWithoutSymInt)rv   ru  s     r8   rx   Ú(_constant_pad_nd_meta.<locals>.<genexpr>!  s)   é € Ð
IÂSÀŒ:�aœ×/Ñ/Ó0×;°Q¸!±VÔ;ÂSùs   ‚35r3   c            	      óF   >• STTT -       STT    STTS-       STT -    S3	$ )NzThe input size z, plus negative padding r©   r3   zG resulted in a negative output size, which is invalid. Check dimension z of your input.r4   )rç   r  Úl_diffrÏ  Úpad_idxs   €€€€€r8   rg   rÃ
  )!  sE   ø€ �o k°&¸1±*Ñ&=Ð%>Ð>VØ�7‰|ˆn˜E # g°¡kÑ"2Ð!3ð 41Ø17¸!±°¸OñMr:   )r`   rˆ   rŠ   r´   )rX   rj   rÌ   rŸ   r²  rÎ   Únarrowrõ   rÍ   rÏ   r‘   r`   rˆ   rŠ   r   )rã   rÏ  rž  Úl_padÚc_inputÚ	new_shapeÚnew_dimrç   r  rÊ
  rÅ
  rË
  s    `     @@@@@r8   Ú_constant_pad_nd_metarÑ
   !  sä  ý€ ô 
‡L‚LÜˆC‹�1‰˜ÑÜNôð
 —+‘+€KÜ�Ó€EÜ�‹H˜‰M€EØ�U‰]€Fä	‡L‚LØ�‰õ	ôô Ñ
IÁSÓ
I×IÑIØˆÜ�v˜uÖ%ˆAØ˜5 1™9 q™=Ñ)ˆGØ�7‰|˜aÓØ!Ÿ.™.Ø˜˜G™�} g§m¡m°AÑ&6¸¸W¹Ñ&Eó�ð �7˜Q‘;Ñ !Õ#Ø!Ÿ.™.¨¨A¨w¯}©}¸QÑ/?À#ÀgÐPQÁkÑBRÑ/RÓS’ñ &ð �}‰}‹Ðä�[  &Ð)Ó*€IÜ�5Ž\ˆÜ�c“(˜q 1™u¨™kÑ*ˆØ˜f q™jÑ)¨C°©LÑ8¸3¸wÈ¹{Ñ;KÑKˆÜ�ŠØ�q‰L÷Mð Mô	
ð 	×Ñ˜Ö!ñ ô �;Š;ØØ�k‰kØ�|‰|Ø×)Ñ)Ü+¨EÓ2ñð r:   r-  r:  r;  c                 óB  • U R                  5       S:w  a  [        SU R                  5        S35      eU R                  nUR                  nUR                  S:X  a  US   4nO%UR                  S:X  a  US   US   4nO
/ UQUS   P7nU R                  nU R                  XxS9$ )Nrù   z'weight' must be 2-D, got z-Dr   r3   r–   )r‹   r�   rŸ   r­   r`   rž   )	rF  r¼   r-  r:  r;  Úweight_shapeÚindices_shaper°   rJ  s	            r8   Ú	embeddingrÕ
  8!  s¦   € ð ‡z�zƒ|�qÓÜÐ9¸&¿*¹*»,¸ÀrÐJÓKÐKØ—<‘<€LØ—M‘M€Mà‡|�|�qÓØ&2°1¡oÐ%7‰	Ø	�‰˜Ó	Ø" 1Ñ% |°A¡Ð7‰	à5�mÐ5 \°!¡_Ñ5ˆ	à—‘€IØ×Ñ˜IÐÐ7Ð7r:   Úmax_lengthsÚpadding_valuec                 ó  • [        U5      S:w  a  [        S[        U5       S35      e[        U5      S:w  a  [        S[        U5       S35      eUS   R                  S   S-
  nUS   nXE/U R                  SS  Q7nU R                  U5      $ )Nr3   z&Only one jagged dim is supported, got z offsetsz max_lengthsr   )rÌ   r�   rŸ   rž   )r»   r„  rÖ
  r×
  rí  r–  rt  s          r8   Ú$meta__jagged_to_padded_dense_forwardrÙ
  Q!  s¨   € ô ˆ7ƒ|�qÓÜØ4´S¸³\°NÀ(ÐKó
ð 	
ô ˆ;Ó˜1ÓÜØ4´S¸Ó5EÐ4FÀlÐSó
ð 	
ð 	�‰
×Ñ˜Ñ˜aÑ€AØ�A‰€AØÐ,˜6Ÿ<™<¨¨Ð+Ñ,€LØ×Ñ˜LÓ)Ð)r:   c                 óB   • [        U 5      [        5       S 5       5       nU$ )Nc                 ó2   • [        U [        R                  S9$ rn  ©rV   r   r¦  rH  s    r8   Ú_fÚ)_create_unary_float_meta_func.<locals>._fi!  s   € ô  ØÔ=×JÑJñ
ð 	
r:   ©rM   r$   ©ÚfuncrÝ
  s     r8   Ú_create_unary_float_meta_funcrâ
  h!  ó*   € Ü�4ÓÜƒ]ñ
ó ó ð
ð
 €Ir:   c                 ó(  • U R                   (       d"  UR                   (       d  UR                   (       a  [        S5      eU R                  5       S:X  a,  U R                  U R                  5      U R                  S5      4$ U R                  S5      nU R                  S5      nUR                  S5      nU R                  XÞU5      nU
(       a4  U(       a  U R                  XÞU5      nUU4$ U R                  XÔXî5      n UU4$ U R                  S5      nUU4$ )NzP_native_multi_head_attention fake implementation does not support nested tensorsr   r3   )Ú	is_nestedr�  r�   rž   rŸ   r«   )rË  rÊ   rž  Ú	embed_dimr  Ú
qkv_weightÚqkv_biasÚproj_weightÚ	proj_biasr¸  Úneed_weightsÚaverage_attn_weightsÚ	mask_typerí  ÚTÚ
output_dimr
  Úattn_weightss                     r8   Ú native_multi_head_attention_fakerñ
  t!  só   € ð  ‡‡˜#Ÿ-Ÿ-¨5¯?¯?Ü!Ø^ó
ð 	
ð ‡{�{ƒ}˜ÓØ—‘ §¡Ó,¨e¯o©o¸aÓ.@ÐAÐAà�
‰
�1‹€AØ�
‰
�1‹€Að ×!Ñ! !Ó$€JØ�_‰_˜Q :Ó.€FæÞð !Ÿ?™?¨1°Ó3ˆLð �LÐ!Ð!ð	 !Ÿ?™?¨1¸Ó=‰Lð �LÐ!Ð!ð —‘ qÓ)ˆà�LÐ!Ð!r:   c                 óB   • [        U 5      [        5       S 5       5       nU$ )Nc                 ó2   • [        X[        R                  S9$ rn  rÜ
  r<   s     r8   rÝ
  Ú*_create_binary_float_meta_func.<locals>._f¦!  s   € ô  ØÔ!@×!MÑ!Mñ
ð 	
r:   rß
  rà
  s     r8   Ú_create_binary_float_meta_funcrõ
  ¥!  rã
  r:   c                 ó˜   ^ • [        T 5      U 4S j5       nT R                   S3nX!l        [        [        [        U5      5      " U5      nU$ )Nc                 ó`   >• T" U /UQ70 UD6n[        U R                  UR                  5        U $ rD   r�  )r    rS   rO  r×   rF   s       €r8   Ú_fnÚ#_register_inplace_meta.<locals>._fnÊ!  s.   ø€ á�Ð'˜Ò' Ñ'ˆÜ §
¡
¨C¯I©IÔ6Øˆr:   rT   )r   r€   rM   Úgetattrr-   )rF   rø
  Úinplace_names   `  r8   Ú_register_inplace_metarü
  É!  sK   ø€ Ü
ˆ2ƒYôó ðð
 —k‘k�] !Ð$€LØ„LÜ
œ¤ lÓ3Ô
4°SÓ
9€Cà€Jr:   c                 óz  ^ ^^• [         R                  " T R                  TR                  :H  UU 4S j5        T T/n[        T[        5      (       aT  TR
                  S:w  a3  [         R                  " T R                  TR                  :H  U U4S j5        UR                  T5        [        US[        R                  06$ )Nc                  ó<   >• STR                    ST R                    3$ )NrÒ  z for `end`, but got dtype r–   )r�   r‚   s   €€r8   rg   Úlerp.<locals>.<lambda>Ü!  s   ø€ �/ %§+¡+ Ð.HÈÏÉÈÑTr:   r   c                  ó<   >• ST R                    STR                    3$ )NrÒ  z for `weight`, but got dtype r–   )r‚   rF  s   €€r8   rg   rÿ
  ã!  s   ø€ ˜/¨%¯+©+¨Ð6SÐTZ×T`ÑT`ÐSaÑbr:   rN   )
rX   rj   r`   rt   r   r­   rÏ   rV   r   rR   )r‚   r�   rF  rS   s   ``` r8   Úlerpr  ×!  s“   ú€ ô 
‡L‚LØ�‰�s—y‘yÑ ÝTôð �3ˆ<€DÜ�&œ*×%Ñ%Ø�;‰;˜!ÓÜ�LŠLØ—‘˜vŸ|™|Ñ+Ýbôð 	�‰�FÔÜØ	ðÜ=×EÑEñð r:   )rž  c                ó4   • [        XU[        R                  S9$ rn  ro  ©rã   Útensor1Útensor2rž  s       r8   Úaddcmulr  ë!  s   € ô Ø˜Ô0O×0WÑ0Wñð r:   c                óø   • [         R                  " [        R                  " UR                  5      =(       a     [        R                  " UR                  5      (       + S 5        [        XU[        R                  S9$ )Nc                  ó   • g)N)zFInteger division with addcdiv is no longer supported, and in a future zErelease addcdiv will perform a true division of tensor1 and tensor2. z4The historic addcdiv behavior can be implemented as zA(input + value * torch.trunc(tensor1 / tensor2)).to(input.dtype) zfor integer inputs and as z6(input + value * tensor1 / tensor2) for float inputs. z?The future addcdiv behavior is just the latter implementation: z4(input + value * tensor1 / tensor2), for all dtypes.r4   r4   r:   r8   rg   Úaddcdiv.<locals>.<lambda>û!  s   € ð 	
r:   r  )rX   rj   rQ   rW  r`   rV   r   rR   r  s       r8   Úaddcdivr
  ó!  s`   € ô 
‡L‚Lä×"Ò" 7§=¡=Ó1÷ 6Ü×&Ò& w§}¡}Ó5ô	
ñ		
ôô  Ø˜Ô0O×0WÑ0Wñð r:   c                  ó,  • 0 n S H"  n[         U   nU H  nX0;  d  M
  X#   X'   M     M$     U R                  5        GHÕ  u  pE[        U[        R                  R
                  5      (       a  M1  [        U[        5      (       d  [        S[        U5       35      eUR                  [        R                  R                  R                  5      " U5        [        R                  R                  UR                  5       S5      (       a  U[         S   ;   a  [        U S35      eMæ  UR                   (       a  Mù  UR                  5       S;   a  GM  SUR                  5       ;   a  ["        R%                  XE5        GM<  SUR                  5       ;   a  [&        R%                  XE5        GMh  S	UR                  5       ;   a  [(        R%                  XE5        GM”  S
UR                  5       ;   a  [*        R%                  XE5        GMÀ  [,        R%                  XE5        GMØ     g )N)r…   Úpost_autogradÚpre_autogradz$op_overload must be OpOverload, got ÚCompositeImplicitAutogradr…   z« is a CompositeImplicitAutograd op, we shouldn't register meta function for it. Instead, we should let the decomposition run and write meta kernels for the base operators.>   úaten::cloneúaten::copy_úaten::rot90úaten::_to_copyúaten::empty_stridedúaten::constant_pad_ndúaten::as_strided_scatterzmkldnn::zmkl::zonednn::zquantized::)r   Úitemsrt   rX   Ú_opsÚHigherOrderOperatorr   r�   r   Úpy_implÚ_CÚDispatchKeyr/   Ú%_dispatch_has_kernel_for_dispatch_keyrÖ  r3  Úis_viewÚ2_meta_lib_dont_use_me_use_register_meta_for_mkldnnÚimplÚ/_meta_lib_dont_use_me_use_register_meta_for_mklÚ2_meta_lib_dont_use_me_use_register_meta_for_onednnÚ5_meta_lib_dont_use_me_use_register_meta_for_quantizedÚ'_meta_lib_dont_use_me_use_register_meta)Úactivate_meta_tableÚtypÚregistryÚopoÚop_overloadrF   s         r8   Úactivate_metar)  "  sÎ  € ØÐó 9ˆÜ-¨cÑ2ˆãˆCØÕ-Ø+3©=Ð#Ó(ó ñ 9ð /×4Ñ4×6‰ˆô
 �k¤5§:¡:×#AÑ#A×BÑBÙÜ˜+¤z×2Ñ2Ü Ø6´t¸KÓ7HÐ6IÐJóð ð 	×ÑœEŸH™H×0Ñ0×5Ñ5Ô6°rÔ:ä�8‰8×9Ñ9Ø×ÑÓÐ ;÷
ñ 
ð Ô8¸Ñ@Ó@Ü"Ø"�mð $;ð ;óð ñ Að × × ñ à×ÑÓðó	ò à˜[×-Ñ-Ó/Ó/ÜB×GÑGÈ×XØ˜K×,Ñ,Ó.Ó.Ü?×DÑDÀ[×UØ˜{×/Ñ/Ó1Ó1ÜB×GÑGÈ×XØ +×"2Ñ"2Ó"4Ó4ÜE×JÑJØ÷ô 8×<Ñ<¸[×Mòs 7r:   )FrÄ	  rD   )NNNFr   r3   r¢   r:  )TrÞ  )rò  )rü  T)FF)TT)r|  )FTN)TFF)TF)rù   )g      à?N)r@   Ústr)r4   rø  r;  F)r4   rø  FTN)Fr   FNFr¢   )NF)r¢   F)g      À?gUUUUUUÕ?FN)NNNNN)r   NNr3   )NNF)ç        FFN)Nr+  FFN)r+  FNN)Nr+  FNN)r+  FN)FN)FNNNN)NNNF)NNNNF)Nr¢   FNN)NNNN)r¢   TT)NNr   N)éd   r   r   )r¢   )rù   N)r¢   FF)r+  )NTTN(®  r  Úcollections.abcr   r   Úenumr   Ú	functoolsr   Útypingr   Útyping_extensionsr   rX   Útorch._prims_commonrê  rQ   r	   r
   r   Útorch._decompr   r   r   r   Ú
torch._opsr   Útorch._primsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Útorch._prims_common.wrappersr    r!   r"   r#   r$   r%  r%   r&   Útorch.fx.experimentalr'   r•  Útorch.nn.functionalr(   r)   Útorch.utilsr*   rI   r+   r,   Úopsr-   ÚlibraryÚLibraryr#  rÎ   r7  r9  r8  r9   r?   rM   rV   rb   rl   ÚlinspaceÚlogspacerÍ  r“   Útaker6  r×   r¡   r±   rº   ÚcummaxÚcumminrÁ   rÄ   rê   rÍ   rï   r  rñ   Ú_fft_c2cr÷   rú   rû   Ú_fft_r2cr  ÚrandpermÚgenerator_outr  r›   r  Úrandintr#  r  Úlow_outr'  Úrandr)  Ú_fft_c2rr.  rª  r:  rA  Ú
unsqueeze_rE  Ú_sparse_semi_structured_linearr*  r`   rT  Ú_sparse_semi_structured_mmra  Ú_sparse_semi_structured_addmmre  Ú_cslt_sparse_mmru  Úindex_reducer|  Úindex_reduce_r~  Úindex_selectr‚  Úsegment_reducer�  r¿  Ú	unary_outr”  r‹   r�  r  r   r¢  r«  r§  r¬  Ú_assert_asyncr¯  Úmsgr³  Ú_printr¶  Ú_make_dep_tokenrº  rÁ  Ú_functional_sym_constrain_rangerÆ  rÉ  Ú(_functional_sym_constrain_range_for_sizerË  Ú_functional_assert_asyncrÍ  rµ   rà  r¶   rì  rñ  rø  r  Ú_linalg_eighr  r  Ú_linalg_eigvalsÚlinalg_eigvalsr  Ú
linalg_eigr  r  r  r  r$  r(  r.  rB  Úlinalg_inv_exrE  Úlinalg_ldl_factor_exri   rK  Úlinalg_ldl_solver[  Ú	linalg_lurc  Úlinalg_lu_factor_exrh  Úlinalg_lu_solverr  Ú	lu_unpackry  rƒ  Ú	linalg_qrrŠ  rŽ  r‹  Ú_linalg_svdr—  rX  r   r§  r½  Úlinalg_solve_triangularrÄ  rË  rÔ  Ú_linalg_detr×  rì  rø  r  Úreflection_pad1dr  Úreplication_pad1dr  r'  Úreflection_pad1d_backwardr,  Úreplication_pad1d_backwardr.  r?  Úreflection_pad2drA  Úreplication_pad2drE  Ú_weight_norm_interface_backwardrN  Úreflection_pad2d_backwardr(  Úreplication_pad2d_backwardrV  re  Úreflection_pad3drg  Úreplication_pad3drk  Úreflection_pad3d_backwardÚreplication_pad3d_backwardrt  Ú_pdist_forwardr\   ry  Ú_pdist_backwardr€  Úbaddbmmr›  Ú	bernoullirž  Ú
bernoulli_r¡  ru  r¤  Úpoissonr¦  Ú_fused_moving_avg_obs_fq_helperr¹  ÚmmrÄ  rš  r  rç  rî  Úmiopen_batch_normrý  Úconvolutionr  r  Ú_has_mkldnnr  r  Ú_convolution_pointwiser  Ú_linear_pointwiser  Úhas_mklr   r  Ú_mkl_linearr  r!  r  Úqconv2d_pointwiseÚqconv_pointwiser=  r"  ÚbinaryÚbinary_tensorr-  Úqlinear_pointwiser2  r7  Úlinear_dynamic_fp16Úlinear_relu_dynamic_fp16r9  r"  r:  Ú
max_pool2drE  Úint4mm_packed_weight_cpurV  r\  Ú
avg_pool2dr†  r‹  Úavg_pool2d_backwardr”  Ú
avg_pool3dr²  Úavg_pool3d_backwardr¾  Ú_adaptive_avg_pool2drÄ  Ú_adaptive_avg_pool3drÈ  Ú_adaptive_avg_pool2d_backwardrÓ  Ú_adaptive_avg_pool3d_backwardrØ  rÖ  Úadaptive_max_pool2drë  rð  rò  Úadaptive_max_pool3drú  rü  rý  Úrepeat_interleaver   ru   r  r
  r  r˜   Ú_unsafe_indexr1  Úconvolution_backwardrC  ÚaddbmmrL  Úrandint_likerP  Ú_fused_adam_Ú_fused_adamw_rh  Ú_fused_adamrp  Ú_int_mmrz  Ú_convert_weight_to_int4packr†  Ú#_convert_weight_to_int4pack_for_cpurŒ  Ú_weight_int4pack_mmr—  Ú_weight_int4pack_mm_for_cpurž  r¨  rª  rÞ  Ú_dyn_quant_pack_4bit_weightrë  Ú_dyn_quant_matmul_4bitrò  Ú_weight_int8pack_mmrú  Ú_cdist_forwardr  Ú_cdist_backwardr  Ú_embedding_bagrC  Ú_embedding_bag_forward_onlyrE  rH  ÚnansumrJ  ÚmedianÚ	nanmedianrL  Ú
dim_valuesrz  r»   rO  Úlogical_not_rQ  ÚrepeatrZ  Úzero_r\  Úmul_ÚScalarÚdiv_Úlogical_and_Úlogical_or_Úlogical_xor_r_  Úadd_Úsub_rl  rŸ  Úsubrq  ÚroundÚdecimalsrs  rz  Ú
__rshift__r~  Ú
__lshift__r‚  Úzeror„  rn  r‡  Úfillr‰  Úrelu_rŒ  Ú	_add_relurŽ  Úrrelu_with_noiser“  Úrrelu_with_noise_functionalr•  Úrrelu_with_noise_r—  Ú	index_putÚ_unsafe_index_putr›  Úmasked_fill_rŸ  Ú_masked_scaler¢  Úmasked_scatter_r§  Úmasked_scatterr©  Úmasked_scatter_backwardr«  Ú
index_put_r­  r¼  Úbmmr¿  rÁ  rÄ  rÉ  rz  r{  r§  ró  rº  r?  Ú max_pool2d_with_indices_backwardr  Úmax_pool2d_with_indicesr  Úfractional_max_pool2dr  Úmax_pool3d_with_indicesr/  Ú max_pool3d_with_indices_backwardr7  rB  rD  rQ  Úgrid_sampler_2d_backwardrY  r_  ra  rd  r  Úonesrs  Úzerosrv  Úselect_scatterrz  Úslice_scatterr~  rÀ   rƒ  rŒ  Úgatherr“  r¤  r¬  r®  r¹  r¼  Úscatter_addrÁ  Úscatter_add_rÄ  r»  r7  rž  rx  Úvalue_reducerÈ  Úscatter_rÊ  Ú#_scaled_dot_product_flash_attentionrß  rä  rî  Ú#_scaled_dot_product_cudnn_attentionrø  Ú0_scaled_dot_product_fused_attention_overrideablerû  Ú,_scaled_dot_product_flash_attention_backwardr  Ú+_scaled_dot_product_flash_attention_for_cpur  Ú4_scaled_dot_product_flash_attention_for_cpu_backwardr  Ú*_scaled_dot_product_attention_math_for_mpsr&  Ú'_scaled_dot_product_efficient_attentionr*  Ú0_scaled_dot_product_efficient_attention_backwardr2  Ú,_scaled_dot_product_cudnn_attention_backwardr4  Ú_flash_attention_forwardr<  r>  Ú_flash_attention_backwardrC  Ú_efficient_attention_forwardrO  Ú_efficient_attention_backwardÚSymIntrY  r¨  Ú
_scaled_mmrª  r	  Ú_scaled_mm_v2r	  Úscatter_reduceÚtwoÚtwo_outr	  Úscatter_reduce_r	  Úmultinomialr	  r	  r'	  r0	  Ú_upsample_nearest_exact1dr:	  Ú_upsample_nearest_exact2drC	  Ú"_upsample_nearest_exact2d_backwardrH	  Ú_upsample_nearest_exact3drÑ   rJ	  Úvalues_stablerM	  re	  Ú_thnn_fused_lstm_cellrk	  r‚	  r…	  r�	  r•	  r™	  r›	  Úargminrœ	  rŸ	  Útopkr§	  Ú_segment_reduce_backwardr«	  Úkthvaluer°	  r¸   rÅ	  rÂ	  rÉ	  rÌ	  Úpixel_shufflerÖ	  rè	  Ú	bucketizeÚ
Tensor_outrî	  Ú
Scalar_outrð	  Úhistcrü	  Ú_upsample_bilinear2d_aaÚ_upsample_bicubic2d_aar
  Ú _upsample_bilinear2d_aa_backwardr
  r
  r
  rÁ  r
  Úsearchsortedr'
  r-
  Úembedding_dense_backwardr0
  Ú_embedding_bag_backwardr5
  Ú_embedding_bag_dense_backwardr3
  Ú*_embedding_bag_per_sample_weights_backwardr?
  ÚisinrG
  Ú	polygammarK
  Ú_local_scalar_denserM
  rO
  rQ
  r_
  r°
  Ú_grouped_mmr²
  Ú_scaled_grouped_mmr´
  Ú_foreach_normr¼
  Ú_softmaxrÀ
  Úconstant_pad_ndrÑ
  rÕ
  Ú_jagged_to_padded_dense_forwardrÙ
  râ
  Ú_native_multi_head_attentionrñ
  rõ
  Úspecial_airy_aiÚspecial_bessel_y0Úspecial_bessel_y1Úspecial_modified_bessel_i0Úspecial_modified_bessel_i1Úspecial_modified_bessel_k0Úspecial_modified_bessel_k1Ú!special_scaled_modified_bessel_k0Ú!special_scaled_modified_bessel_k1Úspecial_chebyshev_polynomial_tÚspecial_chebyshev_polynomial_uÚspecial_chebyshev_polynomial_vÚspecial_chebyshev_polynomial_wÚ&special_shifted_chebyshev_polynomial_tÚ&special_shifted_chebyshev_polynomial_uÚ&special_shifted_chebyshev_polynomial_vÚ&special_shifted_chebyshev_polynomial_wÚspecial_hermite_polynomial_hÚspecial_hermite_polynomial_heÚspecial_laguerre_polynomial_lÚspecial_legendre_polynomial_prü
  r  r  r
  Úlerp_Úaddcmul_Úaddcdiv_Útorch._refs.nn.functionalÚtorch._refs.specialr)  r4   r:   r8   Ú<module>r1     sÑM  ðã ß .Ý Ý Ý Ý 'ã Ý #ß +Ñ +÷ó õ "ß U÷÷ ÷ õ ÷õ ÷ <Ý 7ß 8Ý )ñ ˆTƒ]€Ùˆtƒ_€à‡y�y‡~�~€à*/¯-©-×*?Ñ*?ÀÈÐPVÓ*WÐ 'Ù % a£Ñ €ˆ)�Xòò"ð

˜ 8¨B°¨FÑ#3Ð"4°h¸rÀ2¸vÑ6FÐ"FÑGô 
ðà3ôò(*òñ �—‘˜tŸ}™}Ð-Ó.Ùƒð
 
Ø
ØØ�=‰=ØØó7ó ó /ð7ñt �—	‘	×!Ñ! 4§9¡9§=¡=Ð1Ó2Ùƒñ'ó ó 3ð'ñ �×!Ñ!×)Ñ)¨4×+<Ñ+<×+@Ñ+@ÐAÓBÙƒØ%'ô %ó ó Cð%ñ$ ˆt×%Ñ%Ó&ÙƒñIó ó 'ðIñ Ø	‡[�[×Ñ˜$Ÿ+™+Ÿ/™/¨4¯;©;×+>Ñ+>ÀÇÁÇÁÐPóñ ˆX�yÓ!ñó "óðñ �×!Ñ!×)Ñ)¨4×+<Ñ+<×+@Ñ+@ÐAÓBÙƒñIó ó CðIò3òl�Vð  $ s¡)ð ¸4õ ñ �—‘×%Ñ% t§}¡}×'8Ñ'8Ð9Ó:ÙƒñKó ó ;ðKð €ð $ s¡)ô ñ �—‘×%Ñ% t§}¡}×'8Ñ'8Ð9Ó:Ùƒñ8
ó ó ;ð8
ñv ˆt�}‰}×*Ñ*Ó+Ø"&ô 3ó ,ð3ñ ˆt�}‰}×$Ñ$Ó%ð �*‰*ØØØô
ó &ð
ñ �—‘×$Ñ$ d§l¡l×&6Ñ&6Ð7Ó8Ùƒð
 �*‰*ØØØôó ó 9ðñ& �—‘× Ñ  $§,¡,×"6Ñ"6Ð7Ó8Ùƒð �*‰*ØØØôó ó 9ðñ& �—	‘	×!Ñ! 4§9¡9§=¡=Ð1Ó2ÙƒØ%)°$¸tÐPTô ó ó 3ðñ �—‘×%Ñ% t§}¡}×'8Ñ'8Ð9Ó:Ùƒð$D�vð $D D¨¡Ið $D¸cð $DÈCó $Dó ó ;ð$DñN ˆt�z‰z×!Ñ!Ó"ôó #ðò0	(ñ ˆt�‰×&Ñ&Ó'ñó (ðñ ˆt×2Ñ2Ó3ð
 Ø"&Ø$(ò(Øð(àð(ð ð(ð �4‰-ð	(ð
 ˜4‘Zð(ð �{‰{˜TÑ!ô(ó 4ð(ñV ˆt×.Ñ.Ó/ð
 %)ò	Ø
ðàðð ðð �{‰{˜TÑ!ô	ó 0ðñ> ˆt×1Ñ1Ó2ð Ø	
Ø$(ò)Øð)à
ð)ð ð)ð ð	)ð �{‰{˜TÑ!ô)ó 3ð)ñX ˆt×#Ò#Ó$ð ØØ$(Ø"ØØØò;<Ø—,‘,ð;<à�\‰\ð;<ð �4‰-ð;<ð �D‰=ð	;<ð
 �{‰{˜TÑ!ð;<ð ð;<ð ð;<ð ð;<ð ô;<ó %ð;<ñ| ˆt× Ò ×(Ñ(Ó)ð ò	IØ
ð	Ià	ð	Ið ð	Ið �L‰Lð		Ið
 ð	Ið ð	Ið ô	Ió *ð	Iñ ˆt×!Ò!×)Ñ)Ó*ð ò	Ø
ð	à	ð	ð ð	ð �L‰Lð		ð
 ð	ð ð	ð ô	ó +ð	ñ ƒÙˆt× Ò ×(Ñ(Ó)ñ'ó *ó ð'ñ ˆt×"Ò"×*Ñ*Ó+ð
 "Ø!Ø!ØØØò WØ
ð Wàð Wð �d‰]ð	 Wð
 �d‰]ð Wð �d‰]ð Wð ð Wð ð Wð ô Wó ,ð WñF �—’× Ñ  $§(¢(×"4Ò"4Ð5Ó6Ùƒñó ó 7ðñ ˆt�xŠx�|Š|Óôó ðñ �—’× Ñ  $§(¢(×"4Ò"4Ð5Ó6Ùƒñó ó 7ðñ ˆt�xŠx�|Š|Óôó ðñ ˆt�zŠz×!Ñ!Ó"ñ6ó #ð6ñ ˆt�zŠz�~‰~Óñ(ó ð(ñ
 ˆt×!Ò!×)Ñ)Ó*ñó +ðñ ˆt×!Ò!×%Ò%Ó&ñó 'ðñ ˆt�{Š{×"Ñ"Ó#ñó $ðñ ˆt×#Ò#×+Ñ+Ó,ð ØØØØô)ó -ð)ñ ˆt×'Ò'×/Ñ/Ó0ô,ó 1ð,ñ ˆt×3Ò3×;Ñ;Ó<ôó =ðñ
 ˆt×0Ò0×8Ñ8Ó9ô6ó :ð6ñ& ˆt×<Ò<×DÑDÓEñó Fðñ
 ˆt×,Ò,×0Ò0Ó1ñó 2ðð

˜Fð 
¨Cô 
ð   ð  ¨Fð  ¸#ô  ðN (,ò
Øð
àð
ð !%õ
ò$�Vð  Sð °Cõ ð
˜ð 
 Fð 
°$ð 
Àô 
ð"  ò	Øðàðð ðð õ	ð�Cô ñ �×!Ò!×)Ñ)¨4×+<Ò+<×+HÒ+HÐIÓJÙˆ]˜NÓ+ò˜ð  sð ¸Tô ó ,ó Kðñ" �×$Ò$×,Ñ,¨d×.AÒ.A×.EÑ.EÐFÓGÙƒðB ð B¨6ó Bó ó HðBñ �—’Ð Ó!Ùˆ]˜NÓ+ð˜6ó ó ,ó "ðð Q ð Q¨Fô Qñ ˆt×*Ò*Ó+Ùƒð) ð )¨Fð )¸4ð )ÀFó )ó ó ,ð)ñ ˆt×"Ò"Ó#ÙƒòJ˜ð J Fð J°4ð JÀFô Jó ó $ðJñ ˆt�}Š}ÓÙƒò)�6ð ) $ð )°6ô )ó ó ð)ñ ˆt×$Ò$Ó%Ùƒò)˜6ð )¨$ð )¸6ô )ó ó &ð)ñ ˆt×&Ò&×.Ñ.Ó/ò˜&ð ¨ð ÀTô ó 0ðñ" Ø	×$Ò$×,Ñ,¨d×.MÒ.M×.QÑ.QÐRóñ ƒð. fð .°6ð .¸fó .ó óð.ñd ˆt×!Ò!×)Ñ)Ó*ò˜&ð °ô ó +ðñ �×)Ò)×1Ñ1°4×3LÒ3L×3PÑ3PÐQÓRÙˆT�8˜VÓ$ð Øò	Ø
ðð ðð ð	ð
 ˆ6�6˜6Ð!Ñ"ôó %ó Sðñ& �×%Ò%×-Ñ-¨t×/DÒ/D×/HÑ/HÐIÓJÙƒð ò'Øð'àð'ð ð'ð
 ð'ð ô'ó ó Kð'ñT �—’×&Ñ&¨¯ª×(:Ñ(:Ð;Ó<ÙˆS�#�sÓØ/3ò �fð ¨ð ¸¸fÀfÈfÐ>TÑ8Uô ó ó =ðñ6 �×(Ò(×0Ñ0°$×2JÒ2J×2NÑ2NÐOÓPÙˆT�8˜VÓ$ð Øò	 Øð ð ð ð ð	 ð
 ˆ6�6˜6Ð!Ñ"ô ó %ó Qð ñF �×$Ò$×,Ñ,¨d×.BÒ.B×.FÑ.FÐGÓHÙƒð Øò4Øð4àð4ð ð4ð
 ð4ð ð4ð ô4ó ó Ið4ñn ˆt�~Š~ÓÙˆS�#�sÓð Øò	$Øð$àð$ð ð$ð ð	$ð
 ˆ6�6˜6Ð!Ñ"ô$ó ó ð$ðP˜ð   t¨T zÑ!2ô ñ* �—’×&Ñ&¨¯ª×(:Ñ(:Ð;Ó<ÙˆS�#Óò�fð  Cð ¸¸fÀf¸nÑ8Mô ó ó =ðñ4 �×$Ò$×,Ñ,¨d×.BÒ.B×.GÒ.GÐHÓIÙˆV�[ $¨Ó1ð'�vð ' %¨°¸ÀÐ(FÑ"Gó 'ó 2ó Jð'ñ$ ˆt×Ò×'Ñ'Ó(ð  ØØò	"Øð"àð"ð ð"ð �$‰Jô	"ó )ð"ðJ.Ø
ð.à
ð.ð ˆ4�‰9�d˜3‘iÐÑ ô.ð".Ø
ð.à
ð.ð �‰*ð.ð ˆ6�6ˆ>Ñô	.ð( fð °Vð Àô ñ ˆt×$Ò$Ó%ð
 ØØ ØØ Øò7Øð7àð7ð ð	7ð
 ð7ð �T‰Mð7ð 	�‰ð7ð �T‰Mð7ð �4‰-ð7ð ˆ6�6˜6 6Ð)Ñ*ô7ó &ð7ñt �×,Ò,×4Ñ4°d×6RÒ6R×6VÑ6VÐWÓXð ØØòØðàðð ð	ð
 ðð ðð 
�$‰ðð ôó Yðñ4 ˆt×$Ò$Ó%ÙˆS�# 4Ñ(ð ØØò+(Ø
ð+(àð+(ð ð+(ð ð	+(ð
 ð+(ð ˆ6�6ˆ>Ñô+(ó )ó &ð+(ñ^ ˆt×Ò×'Ñ'Ó(ñ
ó )ð
ñ ˆt�zŠzÓÙƒð
 ØòWØðWà	ðWð ðWð ð	Wð
 ðWð ôWó ó ðWòtò>#;ñL ˆt×$Ò$Ó%Ùƒñ=ó ó &ð=ñ ˆt×%Ò%Ó&Ùƒñ>ó ó 'ð>ò(ñ< ˆt×-Ò-Ó.Ùˆ\ÓñSó ó /ðSñ ˆt×.Ò.Ó/Ùˆ\ÓñTó ó 0ðTò2Eñj ˆt×$Ò$Ó%Ùƒñ=ó ó &ð=ñ ˆt×%Ò%Ó&Ùƒñ>ó ó 'ð>ñ Ø×(Ò(×0Ñ0óñóðñ à×&Ò&×.Ñ.Ø×&Ò&×1Ò1Ø×'Ò'×/Ñ/Ø×'Ò'×2Ò2ð	óñ ˆ\Óñ&ó óð&ò:<Gñ~ ˆt×$Ò$Ó%Ùƒñ=ó ó &ð=ñ ˆt×%Ò%Ó&Ùƒñ>ó ó 'ð>ñ à×&Ò&×.Ñ.Ø×&Ò&×1Ò1Ø×'Ò'×/Ñ/Ø×'Ò'×2Ò2ð	óñ ˆ\Óñ((ó óð((ñV ˆt×"Ò"Ó#Ùƒò

˜fð 

¨ð 

°vô 

ó ó $ð

ñ ˆt×#Ò#Ó$ÙƒðP˜vð P¨Vð P¸ð PÀfð PÐQWó Pó ó %ðPñ �—’×$Ñ$ d§l¢l×&6Ñ&6Ð7Ó8Ù˜ÑØ/0¸ô 'ó ó 9ñ'ñ: �—’×&Ñ&¨¯ª×(:Ñ(:Ð;Ó<ÙƒØ&*ô Ió ó =ñIñ
 ˆt�Š×$Ò$Ó%ôó &ññ ˆt�~Š~×ÒÓ ôIó !ñIñ
 �—’×$Ñ$ d§l¢l×&6Ñ&6Ð7Ó8Ùƒô"ó ó 9ñ"ñ ˆt×3Ò3×;Ñ;Ó<ð Øô*ó =ñ*ñ. ˆt�wŠwÓÙ˜Ñò3˜UŸ[™[¨4Ñ/ô 3ó ó ñ3ó,Bö
ð* .2òBØ—,‘,ðBà�L‰LðBð �‰I˜‰OðBð �#‰Y˜‰_ð	Bð
 �3‰i˜#‰oðBð ðBð ðBð ˜‘I ‘O dÑ*öBóJQñ ˆt×%Ò%×-Ñ-Ó.ð"$Ø—,‘,ð"$à�L‰Lð"$ð �,‰,˜Ñ
ð"$ð —,‘, Ñ%ð	"$ð
 —‘ Ñ$ð"$ð ð"$ð !&ð"$ð ó"$ó /ñ"$ñJ ˆt×Ò×'Ñ'Ó(ðØ—,‘,ðà�L‰Lðð �,‰,ðð �‰Ið	ð
 �#‰Yðð �3‰iðð ðð ˜‘Iðð óó )ñð> 	‡8‚8××ÑØ9>¿¹×9NÑ9NÙ�&˜&ó:Ñ6ñ �5—9‘9×#Ò#×:Ò:×BÑBÓCòó Dññ, �5—9‘9×#Ò#×5Ò5×=Ñ=Ó>òSó ?ñSð
 ‡x‚x××ÐØ:?¿-¹-×:OÑ:OÙ�6˜6ó;
Ñ7ñ 
�u—y‘y—}’}×0Ò0Ó	1ò	ó 
2ñ	ð
 :?¿¹×9NÑ9NÙ�&˜&ó:Ñ6ñ �5—9‘9×#Ò#×5Ò5×=Ñ=Ó>Ù�5—9‘9×#Ò#×3Ò3×;Ñ;Ó<Ù�5—9‘9×#Ò#×3Ò3×:Ò:Ó;ò4ó <ó =ó ?ñ4ñl �5—9‘9×#Ò#×5Ò5×<Ò<Ó=Ù�5—9‘9×#Ò#×5Ò5×CÒCÓDòó Eó >ññ< �5—9‘9×#Ò#×5Ò5×=Ñ=Ó>Ù�5—9‘9×#Ò#×5Ò5×<Ò<Ó=òó >ó ?ññ> �5—9‘9×#Ò#×5Ò5×<Ò<Ó=Ù�5—9‘9×#Ò#×5Ò5×CÒCÓDò$ó Eó >ñ$ñL �5—9‘9×#Ò#×7Ò7×?Ñ?Ó@Ù�5—9‘9×#Ò#×<Ò<×DÑDÓEò	ó Fó Añ	ð =B¿M¹M×<QÑ<QÙ�V˜Vó=Ñ9ñ �5—9‘9×&Ò&×1Ò1Ó2ð ØØØõ
ó 3ñ
ñ8 �5—9‘9×&Ò&×?Ò?Ó@ò@ó Añ@ô,ñ ˆt�Š×&Ñ&Ó'ð ØØØØõMó (ñMôb(<ñX ˆt×'Ò'×/Ñ/Ó0òEó 1ñEñP ˆt�ŠÓÙƒð ØØØØõUJó ó  ñUJñp ˆt×'Ò'Ó(Ùˆ\ÓòK(ó ó )ñK(ñ\ ˆt×(Ò(×0Ñ0Ó1òó 2ññ" ˆt×(Ò(×0Ñ0Ó1ò@ó 2ñ@ñ ˆt×1Ò1×9Ñ9Ó:òFó ;ñFñ, ˆt×1Ò1Ó2Ùˆ\ÓòPó ó 3ñPñ
	
°6ð 	
ÀSö 	
ñ ˆt×'Ò'Ó(ÙˆU�IÓò+ó ó )ñ+ñ\ ˆt×0Ò0Ó1Ùˆ\ÓòHó ó 2ñHñ$ ˆt×'Ò'Ó(ÙˆU�IÓò'ó ó )ñ'ñT ˆt×0Ò0Ó1Ùˆ\Óò(ó ó 2ñ(ñ
 ˆt×%Ò%×,Ñ,Ó-õ*ó .ñ*ñ �—’×$Ñ$ d§l¢l×&6Ñ&6Ð7Ó8Ùƒò
ó ó 9ñ
ñ �×#Ò#×+Ñ+¨T×-@Ò-@×-DÑ-DÐEÓFÙƒØ46ô 

¨cõ 

ó ó Gñ

ñ �—	‘	—‘×&Ò&×.Ñ.°·	±	·±×0FÒ0F×0JÑ0JÐKÓLÙƒòó ó Mññ" �—
’
×!Ñ! 4×#5Ò#5×#<Ñ#<Ð=Ó>òAó ?ñAñH �×)Ò)×1Ñ1Ð2Ó3ò4Hó 4ñ4Hñn �—’×#Ñ# T§[¢[§_¡_Ð5Ó6Ù˜ÑØ./°qõ 'ó ó 7ñ'ñ0 �×!Ò!×(Ñ(Ð)Ó*ò'ó +ñ'ñ �×!Ò!×)Ñ)¨4×+=Ò+=×+EÑ+EÐFÓGð  Øö!
ó Hñ
ñ2 �× Ò ×(Ñ(Ð)Ó*ð  Øö!!ó +ñ!ñH �—’ˆ~ÓÙƒòBó ó ñBñ* �×0Ò0Ð1Ó2òó 3ññ& �×8Ò8Ð9Ó:òó ;ññ �×(Ò(Ð)Ó*ò8ó +ñ8ñ  �×0Ò0Ð1Ó2ò<ó 3ñ<ñ �×>Ò>Ð?Ó@ò<ó Añ<ñ"�3ñ "˜3ð " 3ö "ô@ñF �×0Ò0Ð1Ó2ðDØ!'¨$¡ôDó 3ñDñ4 �×+Ò+Ð,Ó-ò;ó .ñ;ñ( �×(Ò(Ð)Ó*ò<ó +ñ<ñ ˆt×"Ò"×*Ñ*Ó+ò &ó ,ñ &ñF ˆt×#Ò#Ó$ÙƒòGó ó %ñGñ* ˆt×"Ò"×*Ñ*Ó+ð
 Ø	
ØØØØõ`5ó ,ñ`5ñF ˆt×/Ò/×7Ñ7Ó8ò5ó 9ñ5÷
ñ �—’×#Ñ# T§[¢[§_¡_Ð5Ó6Ùƒñ=¸$÷ =ó ó 7ñ=ñ �—’×#Ñ# T§^¢^×%;Ñ%;Ð<Ó=ò)ó >ñ)ñ à�Š�ŠØ�Š×ÒØ�Š×ÒØ�Š×!Ò!Ø�	Š	×ÑØ�	Š	×Òðó	ñ ˆX�yÓ!õó "ó	ññ ˆt× Ò ×(Ñ(Ó)òó *ññ ˆt�{Š{×"Ñ"Ó#ò'ó $ñ'ñ& ˆt�zŠz×!Ñ!Ó"òó #ññ à�	Š	×ÒØ�	Š	×ÒØ�	Š	×ÑØ�	Š	×ÑØ×Ò×!Ñ!Ø×Ò× Ñ Ø×Ò×!Ñ!ðó
òó
ññ à�	Š	×ÒØ�	Š	×ÒØ�	Š	×ÑØ�	Š	×Ñð	óõ*óñ*ñZ à�Š�ŠØ�Š�Šðóõóññ �—
’
×"Ñ" D§J¢J×$7Ò$7Ð8Ó9òó :ñô
ñ" �—’×&Ñ&¨¯ª×(>Ò(>Ð?Ó@òó Aññ �—’×&Ñ&¨¯ª×(>Ò(>Ð?Ó@òó Aññ ˆt�yŠy× Ñ Ó!ò&ó "ñ&ñ �—
’
×!Ñ! 4§:¢:×#4Ò#4Ð5Ó6òó 7ññ �—	’	× Ñ  $§)¢)×"2Ò"2Ð3Ó4ò"ó 5ñ"ñ ˆt�zŠz×!Ñ!Ó"òó #ññ ˆt�~Š~×$Ñ$Ó%Ùƒò¨Fõ ó ó &ññ �×%Ò%Ð&Ó'ÙƒàRVõ"ó ó (ñ"ñ �×0Ò0Ð1Ó2àRVõ;ó 3ñ;ñ �×&Ò&Ð'Ó(àKOõó )ññ �—’×&Ñ&¨×(>Ò(>×(FÑ(FÐGÓHõ"ó Iñ"ñ ˆt× Ò ×'Ò'Ó(òó )ññ
 ˆt×!Ò!×)Ñ)Ó*òó +ññ ˆt×#Ò#Ó$ò	ó %ñ	ñ ˆt×"Ò"Ó#Ùƒò6ó ó $ñ6ñ ˆt×+Ò+Ó,ò!ó -ñ!ñ ˆt�Š×&Ñ&Ó'õó (ñ÷(ñV ˆt�xŠx×ÑÓ ò5ó !ñ5ñ ˆt�xŠx�~‰~ÓòJó ñJôôô6ô;ðh #ò-YØñYàñYð 	ñYð 	ñ	Yð
 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð ñYð ñYð ñYð ñYð  ñ!Yð" ñ#Yð$ ñ%Yð& ñ'Yð( ð)Yð* ñ+Yð, ÷-Yôx;4ð|38Øñ38àñ38ð ñ38ð 	ñ	38ð
 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð ñ38ð ñ38ð ñ38ð  ñ!38ð" ñ#38ð$ ð%38ð& ö'38ôlI2ñX ˆt×4Ò4×<Ñ<Ó=ò(ó >ñ(ñV ˆt×+Ò+×3Ñ3Ó4ð ØØØõ#ó 5ñ#ñL ˆt×)Ò)×1Ñ1Ó2òQó 3ñQñh ˆt×+Ò+Ó,ÙˆU�IÓð ØØØõ_ó ó -ñ_ñD ˆt×4Ò4Ó5Ùˆ\Óò\ó ó 6ñ\ð~%
 Vñ %
°6ö %
öP˜tõ ð ñ ¨vñ È3ö ñ$ ˆt×,Ò,×4Ñ4Ó5ò#ó 6ñ#ñ$ ˆt×#Ò#Ó$Ùƒò8ó ó %ñ8ñ" ˆt×,Ò,Ó-Ùˆ\™;Ó'ò!ó (ó .ñ!ñ, �—	’	×!Ñ!Ð"Ó#ò.ó $ñ.ñ ˆt�Š×&Ñ&Ó'ð ØØØØõ)ó (ñ)ñX �—	’	×!Ñ! 4§9¢9§=¡=Ð1Ó2Ùƒð ØØØØöó ó 3ññ( �—
’
×"Ñ" D§J¢J§N¡NÐ3Ó4Ùƒð ØØØØöó ó 5ññ( ˆt×"Ò"×*Ñ*Ó+ò.ó ,ñ.ñ ˆt×!Ò!×)Ñ)Ó*õ.ó +ñ.ò
˜ñ ¨Cñ ¸d÷ ô /ô
ñ  ˆt�{Š{×"Ñ"Ó#õ'ó $ñ'÷÷6
ô ÷
%÷R4ñ ˆt×Ò×'Ñ'Ó(ò&ó )ñ&ñ
 ˆt× Ò Ó!òó "ññ
 à�Š×ÒØ�Š×ÒØ�Š×ÒØ�Š×!Ò!ð	óñ ƒõ&ó óñ&ñ à�Š×ÒØ�Š×ÒØ�Š×ÒØ�Š×"Ò"ð	óõóññ �×8Ò8×@Ñ@ÐAÓBð
 ØØ#Øó<Øñ<à	ñ<ð ñ<ð ñ	<ð
 ñ<ð ñ<ð �4‰<õ<ó Cñ<ñ~ �×8Ò8×BÒBÐCÓDð ØØ#ØóØñà	ñð ñð ˜‰}ñ	ð
 ˜‰}ñð ˜‰}ñð ñð ñð ñð �4‰<õó Eññ4Øñà�S™#�X‰öñ& �×8Ò8Ð9Ó:ð ØØ#Øó(Øñ(à	ñ(ð ñ(ð ˜‰}ñ	(ð
 ñ(ð ñ(ð ñ(ð ñ(ð �4‰<õ(ó ;ñ(ñV �×EÒEÐFÓGð
  $ØØØ#Øó'Øñ'à	ñ'ð ñ'ð ˜‰}ñ	'ð
 ñ'ð ñ'ð ñ'ð �4‰<õ'ó Hñ'ñT à×9Ò9ðóð( ó"Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð �4‰<õ"óñ
"ñ. à×8Ò8ðóð ØØ#ØóØñà	ñð ñð ñ	ð
 ñð ˜‰}ñð �4‰<õóñ
ñ: à×AÒAðóð  $Øó!"Øñ!"àñ!"ð 
ñ!"ð ð	!"ð
 
ñ!"ð ñ!"ð ñ!"ð ñ!"ð ˜‰}ñ!"ð �4‰<õ!"óñ
!"ñH �×?Ò?Ð@ÓAð
  $ØØØ"&Øó3&Øñ3&à	ñ3&ð ñ3&ð ˜‰}ñ	3&ð
 ñ3&ð ñ3&ð ˜4‘-ñ3&ð �4‰<ð3&ð ˆ6�6ˆ>Ñõ3&ó Bñ3&ñl �×<Ò<Ð=Ó>ð ØØó))Øñ))à	ñ))ð ñ))ð ˜‰}ñ	))ð
 ñ))ð ñ))ð �4‰<õ))ó ?ñ))ñX à×=Ò=ðóð" Øó4-Øñ4-àñ4-ð 
ñ4-ð ñ	4-ð
 ˜‰}ð4-ð 
ñ4-ð ñ4-ð ñ4-ð ñ4-ð ñ4-ð ˜$‘Zñ4-ð ñ4-ð �4‰<õ4-óñ
4-ñn à×9Ò9ðóð* ó!"Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð  �4‰<õ!"óñ
"ñ0 à×%Ò%×-Ñ-ðóð  Ø#'Ø$(Ø#Ø"&óHØñHà	ñHð ñHð ˜‰}ñ	Hð
 ˜‰}ñHð ñHð ñHð ñHð ñHð ñHð �4‰<ñHð ˜D‘jñHð ˜T‘zñHð ˜‰}ñHð ˜4‘-õHóñ
HñV �×-Ò-×7Ò7Ð8Ó9ð Ø#'Ø$(Ø#Ø"&ó%'Øñ'à	ñ'ð ñ'ð ˜‰}ñ	'ð
 ˜‰}ñ'ð ñ'ð ñ'ð ñ'ð ñ'ð ñ'ð ˜‰}ñ'ð ˜‰}ñ'ð ˜‰}ñ'ð �4‰<ñ'ð ˜D‘jñ'ð  ˜T‘zñ!'ð" ˜‰}ñ#'ð$ ˜4‘-õ%'ó :ñ'ñT à×&Ò&ðóð( Ø#'Ø$(ó#,Øñ,àñ,ð 
ñ,ð ð	,ð
 
ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð �4‰<ñ,ð  ˜D‘jñ!,ð" ˜T‘zõ#,óñ
,ñ4 à×)Ò)ðóð   %ØØ%)Ø"Ø"ó/SØñ/Sà	ñ/Sð ð/Sð �4‰-ñ	/Sð
 ˜4‘-ñ/Sð ˜4‘-ñ/Sð ˜‘*ñ/Sð ˜‘*ñ/Sð ñ/Sð ñ/Sð ñ/Sð �4‰<ñ/Sð ˜d‘]ñ/Sð �t‰mñ/Sð �t‘õ/Sóñ
/Sñd à×*Ò*ðóð* Ø!%Ø"'ó%47Øñ47àñ47ð 
ñ47ð ð	47ð
 �4‰-ñ47ð ˜4‘-ñ47ð ˜4‘-ñ47ð —,’,ñ47ð —,’,ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð  �4‰<ñ!47ð" ˜$‘Jñ#47ð$  õ%47óñ
47ðx !%Ø(,Ø$(Ø òzYØ
�,‰,ðzYà
�,‰,ñzYð �\‰\ñzYð �\‰\ð	zYð
 �,‰,˜Ñ
ñzYð —,‘, Ñ%ðzYð �{‰{˜TÑ!ñzYð ÷zYñz �—’×'Ñ'Ð(Ó)ð !%Ø(,Ø$(Ø òØ
�,‰,ðà
�,‰,ñð �\‰\ñð �\‰\ð	ð
 �,‰,˜Ñ
ñð —,‘, Ñ%ðð �{‰{˜TÑ!ñð õó *ñð, !%Ø$(Ø*.Ø*.Ø òdCØ
�,‰,ðdCà
�,‰,ñdCð �%—,‘,ÑñdCð ˜Ñ%ñ	dCð
 �%—,‘,ÑñdCð ˜Ñ%ðdCð �,‰,˜Ñ
ðdCð �{‰{˜TÑ!ñdCð �KÑ  4Ñ'ñdCð �KÑ  4Ñ'ñdCð ÷dCñN �×"Ò"×*Ñ*Ð+Ó,ð !%Ø'+Ø)-Ø òØ
�,‰,ðà
�,‰,ñð �%—,‘,Ññð ˜Ñ%ñ	ð
 �KÑ ñð �%—,‘,Ññð ˜Ñ%ñð �KÑ ðð �,‰,˜Ñ
ñð —+‘+ Ñ$ñð ˜3‘i $Ñ&ñð õó -ññ: �×#Ò#×'Ò'¨×)<Ò)<×)DÒ)DÐEÓFÙƒõ&ó ó Gñ&ñ
 ˆt×#Ò#×'Ò'Ó(õó )ññ
 �× Ò ×(Ñ(¨$×*:Ò*:×*>Ñ*>Ð?Ó@Ùƒñ	Èö 	ó ó Añ	ôô,ñ* Ø	×Ò×$Ñ$ d×&DÒ&D×&LÑ&LÐMóõ
óñ
ñ Ø	×Ò×$Ñ$ d×&DÒ&D×&LÑ&LÐMóõóññ. à×(Ò(×0Ñ0Ø×/Ò/×7Ñ7ðóð "Ø!óØñà˜# §¢Ñ,Ñ-ñð ˜˜uŸ|š|Ñ+Ñ,ñð �d‰lñ	ð
 �d‰lõóññ: Ø	×Ò×$Ñ$ d×&DÒ&D×&LÑ&LÐMóõ
óñ
ñ à�	Š	×ÑØ�	Š	×ÒØ�	Š	×ÒØ�	Š	×Òð	óõóñô*$ñN ˆt×)Ò)×1Ñ1Ó2ð
 Øõó 3ññ ˆt�Š×&Ñ&Ó'ò4/ó (ñ4/ñn ˆt�Š×&Ñ&Ó'ò)ó (ñ)ñX ˆt×$Ò$×,Ñ,Ó-ò$%ó .ñ$%ôN

ô
ñ �—’×#Ñ# T§[¢[×%8Ñ%8Ð9Ó:õ4ó ;ñ4ñ ˆt×!Ò!×)Ñ)Ó*õó +ññ ˆt�yŠy× Ñ Ó!õ
Qó "ñ
Qñ ˆt×,Ò,Ó-ÙƒàLPõó ó .ññ" �—’×%Ñ% t§}¢}×';Ò';Ð<Ó=ÙˆX�yÓ!õKó "ó >ñKð  #(×"9Ò"9Ñ ôQñ ˆt×7Ò7×?Ñ?Ó@ò	*ó Añ	*ñ ˆt×#Ò#×+Ñ+Ó,ò	0ó -ñ	0ñ ˆt×!Ò!×)Ñ)Ó*òó +ññ@ ˆt×-Ò-×5Ñ5Ó6òFó 7ñFñD �—’×%Ñ% t§~¢~×'@Ò'@ÐAÓBÙƒØ27¸uö ó ó Cññ �—’×%Ò% t§~¢~×'@Ò'@ÐAÓBð
 Øó
Ø
ñ
àñ
ð ñ	
ð
 õ
ó Cñ
ñ �—
’
ˆ|ÓÙƒõEó ó ñEñ4 Ø	×!Ò!×)Ñ)¨4×+FÒ+F×+NÑ+NÐOóð Øõóññ& �×5Ò5×=Ñ=Ð>Ó?ð Øõó @ññ8 ˆt×>Ò>×FÑFÓGòó Hññ$ �—’×'Ñ'¨¯ª×)<Ñ)<Ð=Ó>Ùƒõ"ó ó ?ñ"ñ ˆu�y‰y�~‰~×(Ò(Ó)òó *ññ: ˆu�y‰y�~‰~× Ò Ó!ò6ó "ñ6ñ( ˆt× Ò Ó!Ùƒð
 Ø
Ø	Øö-Kó ó "ñ-Kô`ñ ˆt×,Ò,Ó-òó .ññ ˆt×+Ò+Ó,ð õ'
ó -ñ'
ñT ˆt×1Ò1Ó2ð õó 3ññ, ˆt×>Ò>Ó?ð õó @ññ. ˆt�yŠyÓÙƒØ8=Àeö 8ó ó ñ8ñ  ˆt�~Š~ÓÙƒñ6�cð 6 ð 6¨Fô 6ó ó ñ6ñ ˆt×'Ò'Ó(ðI &ô Ió )ñIñ ˆt�yŠyÓÙ˜Ñð"ˆvð "˜&ô "ó ó ñ"ñ ˆt�|Š|ÓÙƒð6�&ð 6˜Vô 6ó ó ñ6ô'ð^ ØØ(,Ø$(Ø óVKØñVKàñVKð �\‰\˜DÑ ñVKð �\‰\˜DÑ ñ	VKð
 �4‰-ðVKð �4‰-ñVKð —,‘, Ñ%ðVKð �{‰{˜TÑ!ñVKð ÷VKñr ˆt×ÒÓ Ùƒð ØØ$(óØñàñð �4‰-ðð �4‰-ð	ð
 �{‰{˜TÑ!ðð õó ó !ññ& �×'Ò'Ð(Ó)ð !%Ø $Ø(,Ø$(Ø óØ�<‰<ñà�<‰<ñð �\‰\ñð �\‰\ñ	ð
 �,‰,˜Ñ
ðð �,‰,˜Ñ
ñð —,‘, Ñ%ðð �{‰{˜TÑ!ñð õó *ññ6 ˆt×!Ò!×(Ò(Ó)õó *ññ  ˆt�}Š}ÓÙƒñˆvð ˜Cñ °ð ¸ô ó ó ññ  ˆt×#Ò#Ó$Ùƒõ3ó ó %ñ3ñl ˆt�~Š~ÓÙƒð Ø$Øò8Øð8àñ8ð ñ8ð ñ	8ð
 ð8ð õ8ó ó ñ8ñ. ˆt×3Ò3×;Ñ;Ó<ð
 ò	*Øð*à�&‰\ñ*ð �c‘ñ*ð õ	*ó =ñ*ô,ñ ˆt×0Ò0×8Ñ8Ó9ð 
ØØØõ-"ó :ñ-"ô`ò ˜d×2Ò2Ô 3Ú ˜d×4Ò4Ô 5Ú ˜d×4Ò4Ô 5Ú ˜d×=Ò=Ô >Ú ˜d×=Ò=Ô >Ú ˜d×=Ò=Ô >Ú ˜d×=Ò=Ô >Ú ˜d×DÒDÔ EÚ ˜d×DÒDÔ Eò ˜t×BÒBÔ CÚ ˜t×BÒBÔ CÚ ˜t×BÒBÔ CÚ ˜t×BÒBÔ CÚ ˜t×JÒJÔ KÚ ˜t×JÒJÔ KÚ ˜t×JÒJÔ KÚ ˜t×JÒJÔ KÚ ˜t×@Ò@Ô AÚ ˜t×AÒAÔ BÚ ˜t×AÒAÔ BÚ ˜t×AÒAÔ Bôñ ˆt�yŠyÓÙƒòó ó ññ$ ˆt�|Š|ÓÙƒØ./ö ó ó ññ ˆt�|Š|ÓÙƒØ./ö ó ó ñò, 	˜tŸyšyÓ)�Ú! $§,¢,Ó/�Ú! $§,¢,Ó/�ó
 Ü  Ü ôENòP …r:   