ó
    KëgjV¸  ã                    óŽ  • S SK r S SKrS SKJ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Jr  S SKJrJrJr  \" 5       (       a  S	S
/OSS	/r\" S5      (       a  S
S/OSS	/rS r\R2                  " SS 05      \" SdS V VVs/ s H)  n S  H  nS  H  n\R5                  SU 0XS9PM     M!     M+     snnn S/S.\D6\R6                  " S/S9S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  4S j5       5       5       r\R2                  " SS 05      \" SdS VVs/ s H  nS   H  n\R5                  0 XS9PM     M     snnSS/S.\D6\R6                  " S/S9S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  4S! j5       5       5       r\R2                  " SS" 05      \" SdS Vs/ s H  n\R5                  0 US#9PM     snSS/S.\D6\R6                  " S/S9S$\R8                  S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  4S% j5       5       5       r\R2                  " SS& 05      \" Sd\R4                  " 0 S'S#9\R4                  " 0 S(S#9\R4                  " 0 S)S#9\R4                  " 0 S*S#9/S/S.\D6\R6                  " S/S9S$\R8                  S\R8                  S\R8                  S\R8                  S+\R8                  S\R8                  4S, j5       5       5       r \R2                  " SS- 05      \" SdS V VVVs/ s H3  n S.  H)  nS/  H  nS  H  n\R5                  XS0.XS9PM     M!     M+     M5     snnnn / S1QS.\D6\R6                  " S/S9S\R8                  S2\R8                  S\R8                  S3\R8                  S\R8                  S\R8                  S4\R8                  S5\R8                  S\R8                  4S6 j5       5       5       r!\R2                  " SS7 05      \" SdS VVs/ s H  nS  H  n\R5                  0 XS9PM     M     snn/ S8QS.\D6\R6                  " S/S9S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  S\R8                  4S9 j5       5       5       r"\R2                  " SS: 05      \" SdS VVs/ s H  nS  H  n\R5                  0 XS9PM     M     snnS4S/S.\D6\R6                  " S/S9S\R8                  S3\R8                  S\R8                  S4\R8                  S\R8                  4
S; j5       5       5       r#\R2                  " SS< 05      \" Sd\ V VVVs/ s H3  n \  H)  nS/  H  nS  H  n\R5                  XS0.XS9PM     M!     M+     M5     snnnn / S=QS>\0S?.\D6\R6                  " S/S9S\R8                  S\R8                  S3\R8                  S\R8                  S\R8                  S4\R8                  S\R8                  S5\R8                  4S@ j5       5       5       r$\R2                  " SSA 05      \" Sd\ V VVVs/ s H3  n \  H)  nS/  H  nS  H  n\R5                  XS0.XS9PM     M!     M+     M5     snnnn / S=QS>\0S?.\D6\R6                  " S/S9S\R8                  S\R8                  S3\R8                  S\R8                  S\R8                  S4\R8                  S\R8                  S5\R8                  4SB j5       5       5       r%   SeSC\ RL                  SD\ RL                  SE\ RL                  SF\'SG\ RP                  S-  SH\)SI\ RP                  S-  4SJ jjr*    SfSC\ RL                  SK\ RL                  SE\ RL                  SL\ RL                  SM\ RL                  SF\'SN\+SG\ RP                  S-  SH\)SI\ RP                  S-  4SO jjr,   SeSK\ RL                  SP\ RL                  SF\'SG\ RP                  S-  SH\)SI\ RP                  S-  4SQ jjr-    SfSD\ RL                  SE\ RL                  SL\ RL                  SP\ RL                  SR\ RL                  SN\+SG\ RP                  S-  SH\)SI\ RP                  S-  4SS jjr.   SeSC\ RL                  SD\ RL                  SE\ RL                  ST\ RL                  SG\ RP                  S-  SH\)SI\ RP                  S-  4SU jjr/     SgSC\ RL                  SD\ RL                  SK\ RL                  SM\ RL                  SE\ RL                  SP\ RL                  SR\ RL                  SV\ RL                  SW\ RL                  SF\'S-  SN\+SG\ RP                  S-  SH\)SI\ RP                  S-  4SX jjr0    SfSC\ RL                  SD\ RL                  SK\ RL                  SE\ RL                  SY\ RL                  S-  SF\'SZ\ RL                  S[\+SN\+SG\ RP                  S-  SH\)SI\ RP                  S-  S\\1\ RL                  \ RL                  \ RL                  4   4S] jjr2    SfSC\ RL                  SD\ RL                  SK\ RL                  SE\ RL                  SY\ RL                  S-  SF\'SZ\ RL                  SM\ RL                  SL\ RL                  SP\ RL                  S^\ RL                  SN\+SG\ RP                  S-  SH\)SI\ RP                  S-  4S_ jjr3 " S` Sa\ Rh                  Rj                  5      r6\ Rn                  Rp                        ShSC\ RL                  SD\ RL                  SK\ RL                  SE\ RL                  SF\)S-  SZ\ RL                  S[\+SN\+SG\ RP                  S-  Sb\ RP                  S-  S\\1\ RL                  \ RL                  4   4Sc jj5       r9gs  snnn f s  snnf s  snf s  snnnn f s  snnf s  snnf s  snnnn f s  snnnn f )ié    N)Úchunk_bwd_dhÚchunk_fwd_h)Úprepare_chunk_indices)Úfla_cache_autotune)ÚRCP_LN2)Úchunk_local_cumsum)Úexp2)Úautotune_cache_kwargsÚcheck_shared_memÚinput_guardé    é@   é   Úampereé€   c                 óJ  • 0 U=(       d    0 EUEnUS   US   pT[        S U  5       5      n[        S U  5       5      nU  Vs/ s HU  nUR                  S   U:  d  UR                  S   U:X  d  M+  UR                  S   U:  d  UR                  S   U:X  d  MS  UPMW     sn$ s  snf )NÚKÚVc              3   ó>   #   • U  H  oR                   S    v •  M     g7f)ÚBKN©Úkwargs©Ú.0Úcs     ÚŸC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\fla/ops/gla/chunk.pyÚ	<genexpr>Ú)_prune_gla_bwd_configs.<locals>.<genexpr>   ó   é € Ð1ª A—‘˜$–ªùó   ‚c              3   ó>   #   • U  H  oR                   S    v •  M     g7f)ÚBVNr   r   s     r   r   r      r   r    r   r"   )Úminr   )	ÚconfigsÚnargsr   Úargsr   r   Úmin_bkÚmin_bvr   s	            r   Ú_prune_gla_bwd_configsr)      s­   € ð 'ˆu�{˜Ð&˜vÐ&€DØ�‰9�d˜3‘i€qÜÑ1©Ó1Ó1€FÜÑ1©Ó1Ó1€FáóÚˆaØ�H‰H�T‰N˜QÓ !§(¡(¨4¡.°FÑ":ó 	
à�X‰X�d‰^˜aÓ 1§8¡8¨D¡>°VÑ#;÷ 	
‘7ñð ùò s   Á*B Á/$B ÂB Ú	IS_VARLENc                 ó   • U S   S L$ ©NÚ
cu_seqlens© ©r&   s    r   Ú<lambda>r0   (   ó   € ˜d <Ñ0¸Ñ<ó    )r   r   )é   é   é   é   )r4   é   r5   r   )Ú	num_warpsÚ
num_stagesÚBC)r$   ÚkeyÚT)Údo_not_specializeÚHr   ÚBTÚNCc           	      óä  • [         R                  " S5      R                  [         R                  5      [         R                  " S5      [         R                  " S5      nnnUU-  UU-  nnUU-  UU-  nnU(       aè  [         R                  " X_S-  -   5      R                  [         R
                  5      [         R                  " X_S-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R
                  5      [         R                  " UU-   S-   5      R                  [         R
                  5      nnUU-
  nOUU-  UU-  U-   nnXú-  UU-  -   U:¼  a  g UU::  a  g [         R                  " X»/[         R                  S9nXú-  UU-  -   [         R                  " SU5      -   nXú-  UU-  -   [         R                  " SU5      -   nUU:  nUU:  n[        [         R                  " Xœ5      5       GHÂ  nUU-  [         R                  " SU5      -   nUU	:  n US S 2S 4   U S S S 24   -  n!U S S 2S 4   US S S 24   -  n"U UU-  U-   U	-  -   US S 2S 4   X‰-  -  -   US S S 24   -   n#UUU-  U-   U	-  -   US S 2S 4   X‰-  -  -   US S S 24   -   n$UUU-  U-   U	-  -   US S 2S 4   -   US S S 24   X‰-  -  -   n%UUU-  U-   U	-  -   US S 2S 4   -   US S S 24   X‰-  -  -   n&UUXú-  -   UU-  -   U-  U	-  -   UU	-  -   U-   n'[         R                  " U'U SS9n([         R                  " U#U!SS9n)[         R                  " U$U!SS9n*U)[        U*U(S S S 24   -
  5      -  U-  n+[         R                  " U%U"SS9n,[         R                  " U&U"SS9n-U,[        U(S S 2S 4   U--
  5      -  n.U[         R                  " U+U.5      -  nGMÅ     UU-  [         R                  " SU5      -   n/US S 2S 4   U/S S S 24   U
:  -  n0UUU-  U-   U
-  -   US S 2S 4   XŠ-  -  -   U/S S S 24   -   n1[         R                  " U1UR                  UR                  R                  5      U0S9  g )Nr   r3   r4   ©Údtype©ÚmaskÚotherç        ©rE   )ÚtlÚ
program_idÚtoÚint64ÚloadÚint32ÚzerosÚfloat32ÚarangeÚrangeÚcdivr	   ÚdotÚstorerC   Ú
element_ty)2ÚqÚkÚgÚAr-   Úchunk_indicesÚscaler<   r>   r   r?   r:   r   r@   r*   Úi_tÚi_cÚi_bhÚi_bÚi_hÚi_iÚi_jÚi_nÚbosÚeosÚb_AÚo_iÚo_jÚm_iÚm_jÚi_kÚo_kÚm_kÚm_qkÚm_kjÚp_qÚp_gÚp_kÚp_gkÚp_gnÚb_gnÚb_qÚb_gÚb_qgÚb_kÚb_gkÚb_kgÚo_jAÚm_AÚp_As2                                                     r   Ú&chunk_gla_fwd_A_kernel_intra_sub_interr€   '   sc  € ô> —]’] 1Ó%×(Ñ(¬¯©Ó2´B·M²MÀ!Ó4DÄbÇmÂmÐTUÓFVˆdˆ€CØ�q‰y˜$ ™(ˆ€CØ�b‰y˜# ™(ˆ€CÞÜ—7’7˜=°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆØ�#‰I‰à˜‘7˜C !™G a™KˆSˆà
�x�#˜‘(Ñ˜aÓØØ
ˆcƒzØä
�(Š(�B�8¤2§:¡:Ñ
.€CØ
‰(�S˜2‘XÑ
¤§	¢	¨!¨RÓ 0Ñ
0€CØ
‰(�S˜2‘XÑ
¤§	¢	¨!¨RÓ 0Ñ
0€CØ
�‰'€CØ
�‰'€CÜ”R—W’W˜Q“^×$ˆØ�B‰hœŸš 1 bÓ)Ñ)ˆØ�A‰gˆØ’1�d�7‰|˜c $ª '™lÑ*ˆØ’1�d�7‰|˜c $ª '™lÑ*ˆà�3�q‘5˜‘9˜a‘-Ñ #¢a¨ g¡,°!±#Ñ"6Ñ6¸¸TÂ1¸W¹ÑEˆØ�3�q‘5˜‘9˜a‘-Ñ #¢a¨ g¡,°!±#Ñ"6Ñ6¸¸TÂ1¸W¹ÑEˆØ�3�q‘5˜‘9˜a‘-Ñ #¢a¨ g¡,Ñ.°°Tº1°W±ÀÁÑ1EÑEˆØ�C˜‘E˜#‘I˜q‘=Ñ  3¢q¨$ w¡<Ñ/°#°dºA°g±,À!Á#Ñ2FÑFˆØ�C˜#™(‘N S¨2¡XÑ-°Ñ2°1Ñ4Ñ4°s¸Q±wÑ>ÀÑDˆô �wŠw�t #¨QÑ/ˆä�gŠg�c ¨CÑ0ˆÜ�gŠg�c ¨CÑ0ˆØ”T˜#  Tª1 W¡Ñ-Ó.Ñ.°Ñ6ˆä�gŠg�c ¨CÑ0ˆÜ�wŠw�t $¨cÑ2ˆØ”T˜$šq $˜w™-¨$Ñ.Ó/Ñ/ˆàŒr�vŠv�d˜DÓ!Ñ!‹ñ/ %ð2 �‰8”b—i’i  2Ó&Ñ&€DØ
Ša�ˆg‰,˜$˜t¢Q˜w™-¨"Ñ,Ñ
-€CØ
ˆs�1‰u�s‰{˜BÑÑ
 ¢Q¨ W¡°±Ñ!6Ñ
6¸¸dÂA¸g¹Ñ
F€CÜ‡H‚HˆS�#—&‘&˜Ÿ™×+Ñ+Ó,°3Ó7r2   c                 ó   • U S   S L$ r,   r.   r/   s    r   r0   r0   z   r1   r2   )r4   r7   c                 ó¨  • [         R                  " S5      R                  [         R                  5      [         R                  " S5      [         R                  " S5      npþUU-  UU-  nnUnU(       aè  [         R                  " X^S-  -   5      R                  [         R
                  5      [         R                  " X^S-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R
                  5      [         R                  " UU-   S-   5      R                  [         R
                  5      nnUU-
  nOUU-  UU-  U-   nnXê-  Xû-  -   U:¼  a  g [         R                  " SU5      n[         R                  " SU5      nXê-  Xû-  -   [         R                  " SU5      -   U-  U
-  UU-  -   nUU	:  nXê-  Xû-  -   [         R                  " SU5      -   U:  nU UU-  U-   U	-  -  n UUU-  U-   U	-  -  nUUU-  U-   U	-  -  nUUU-  U-   U
-  -  nXê-  Xû-  -   [         R                  " SU5      -   nUS S 2S 4   US S S 24   -  nU US S 2S 4   X‰-  -  -   US S S 24   -   nUUS S 2S 4   X‰-  -  -   US S S 24   -   n[         R                  " UUSS9n [         R                  " UUSS9n!XU
-  UU-  -   U-  U	-  -   U-   n"X.U
-  UU-  -   U-  U	-  -   U-   n#[        S[        X·Xê-  -
  Xû-  -
  5      5       HÍ  n$[         R                  " U"USS9R                  [         R                  5      n%[         R                  " U#USS9R                  [         R                  5      n&[         R                  " U U%S S S 24   -  [        U!U&S S S 24   -
  5      -  S5      U-  n'[         R                  " UU-   U$-   U'US9  U"X‰-  -  n"U#X‰-  -  n#MÏ     [         R                  " 5         [         R                  " X»/[         R                  S9n'[         R                  " UUS S 2S 4   -   U-   U'US S 2S 4   US S 2S 4   U:  -  S9  g ©Nr   r3   r4   rG   rD   rH   rB   ©rI   rJ   rK   rL   rM   rN   rQ   rR   r#   rP   Úsumr	   rU   Údebug_barrierrO   )(rW   rX   rY   rZ   r-   r[   r\   r<   r>   r   r?   r:   r   r*   r]   rb   r_   r`   ra   rc   rd   re   rf   rh   rm   Úo_Arn   r~   Úo_cro   rq   rr   rw   rx   rs   rt   Újrz   r{   rg   s(                                           r   Ú&chunk_gla_fwd_A_kernel_intra_sub_intrarŠ   y   s  € ô: —]’] 1Ó%×(Ñ(¬¯©Ó2´B·M²MÀ!Ó4DÄbÇmÂmÐTUÓFVˆdˆØ�q‰y˜$ ™(ˆ€CØ
€CÞÜ—7’7˜=°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆØ�#‰I‰à˜‘7˜C !™G a™KˆSˆà
�x�#‘(Ñ˜aÓØä
�)Š)�A�rÓ
€CÜ
�)Š)�A�rÓ
€CØ‰8�c‘hÑ¤§¢¨1¨bÓ!1Ñ1°QÑ
6°rÑ
9¸CÀ"¹HÑ
D€CØ
�‰'€CØ‰8�c‘hÑ¤§¢¨1¨bÓ!1Ñ1°QÑ
6€Càˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰'�C‰-˜2Ñ	Ñ€Aà
‰(�S‘XÑ
¤§	¢	¨!¨RÓ 0Ñ
0€CØŠq�$ˆw‰<˜#˜d¢A˜g™,Ñ&€DØ
ˆc’!�T�'‰l˜a™cÑ"Ñ
" S¨ªq¨¡\Ñ
1€CØ
ˆc’!�T�'‰l˜a™cÑ"Ñ
" S¨ªq¨¡\Ñ
1€CÜ
�'Š'�#˜D¨Ñ
,€CÜ
�'Š'�#˜D¨Ñ
,€Cà
�R‰x˜# ™(Ñ" aÑ'¨Ñ)Ñ
)¨CÑ
/€CØ�b‘˜3 ™8Ñ# qÑ(¨Ñ*Ñ*¨SÑ0€Dä�1”c˜" #¡(™l¨S©XÑ5Ó6Ö7ˆÜ�gŠg�c ¨1Ñ-×0Ñ0´·±Ó<ˆÜ�wŠw�t #¨QÑ/×2Ñ2´2·:±:Ó>ˆÜ�fŠf�S˜3˜t¢Q˜w™<Ñ'¬$¨s°T¸$Â¸'±]Ñ/BÓ*CÑCÀQÓGÈ%ÑOˆÜ
�Š��S‘˜1‘˜c¨Ò,Øˆq‰s‰
ˆØ�‘‰Šñ 8ô ×ÒÔÜ
�(Š(�B�8¤2§:¡:Ñ
.€CÜ‡H‚HˆQ�’Q˜�W‘Ñ Ñ# S¨s²1°d°7©|¸sÂ1ÀdÀ7¹|ÈcÑ?QÑ/RÓSr2   c                 ó   • U S   S L$ r,   r.   r/   s    r   r0   r0   Æ   r1   r2   )r8   ÚBc                 óò  • [         R                  " S5      [         R                  " S5      [         R                  " S5      nnnUU	-  UU	-  nnUU-  R                  [         R                  5      UU-  nnUnU(       aì  [         R                  " UUS-  -   5      R                  [         R
                  5      [         R                  " UUS-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R
                  5      [         R                  " UU-   S-   5      R                  [         R
                  5      nnUnUU-
  nOUU-  UU-  U-   nnX‡-  nUU-  UU-  -   U:¼  a  g [         R                  " SU5      nUU-  [         R                  " SU5      -   nUU-  UU-  -   [         R                  " SU5      -   U	-  U-  nUU
:  nUU-  UU-  -   [         R                  " SU5      -   U:  n U UU	-  U-   U
-  -  n UUU	-  U-   U
-  -  nUUU	-  U-   U
-  -  nUUU-  U-   U	-  U-   U-  -  nUU-  UU-  -   [         R                  " SU5      -   n!U S S 2S 4   US S S 24   -  n"U U!S S 2S 4   Xš-  -  -   US S S 24   -   n#UU!S S 2S 4   Xš-  -  -   US S S 24   -   n$[         R                  " U#U"SS9n%[         R                  " U$U"SS9n&UUU-  UU-  -   U	-  U
-  -   U-   n'UUU-  UU-  -   U	-  U
-  -   U-   n([        S[        XÇUU-  -
  UU-  -
  5      5       HÍ  n)[         R                  " U'USS9R                  [         R                  5      n*[         R                  " U(USS9R                  [         R                  5      n+[         R                  " U%U*S S S 24   -  [        U&U+S S S 24   -
  5      -  S5      U-  n,[         R                  " UU-   U)-   U,U S9  U'Xš-  -  n'U(Xš-  -  n(MÏ     [         R                  " 5         [         R                  " XÌ/[         R                  S9n,[         R                  " UUS S 2S 4   -   U-   U,U S S 2S 4   US S 2S 4   U:  -  S9  g rƒ   r„   )-rW   rX   rY   rZ   r-   r[   r\   r<   rŒ   r>   r   r?   r:   r   r@   r*   rl   Úi_tcr_   r`   ra   r]   rb   rc   rd   re   rf   Úallrh   rm   r‡   rn   r~   rˆ   ro   rq   rr   rw   rx   rs   rt   r‰   rz   r{   rg   s-                                                r   Ú,chunk_gla_fwd_A_kernel_intra_sub_intra_splitr�   Å   s\  € ô< —m’m AÓ&¬¯ª°aÓ(8¼"¿-º-ÈÓ:Jˆtˆ€CØ�q‰y˜$ ™(ˆ€CØ˜‘
�‰œrŸx™xÓ(¨$°©)ˆ€CØ
€CÞÜ—7’7˜=¨3°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-ÐZ]Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆØˆØ�#‰I‰à˜‘7˜C !™G a™KˆSˆØ‰eˆà
ˆR�x�#˜‘(Ñ˜aÓØä
�)Š)�A�rÓ
€CØ
�‰(”R—Y’Y˜q "Ó%Ñ
%€CØ�‰8�c˜B‘hÑ¤§¢¨1¨bÓ!1Ñ1°QÑ
6°rÑ
9€CØ
�‰'€CØ�‰8�c˜B‘hÑ¤§¢¨1¨bÓ!1Ñ1°QÑ
6€Càˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ3�‰9�s‰?˜aÑ
 #Ñ
%¨Ñ	+Ñ+€Aà
�‰(�S˜2‘XÑ
¤§	¢	¨!¨RÓ 0Ñ
0€CØŠq�$ˆw‰<˜#˜d¢A˜g™,Ñ&€DØ
ˆc’!�T�'‰l˜a™cÑ"Ñ
" S¨ªq¨¡\Ñ
1€CØ
ˆc’!�T�'‰l˜a™cÑ"Ñ
" S¨ªq¨¡\Ñ
1€CÜ
�'Š'�#˜D¨Ñ
,€CÜ
�'Š'�#˜D¨Ñ
,€Cà
ˆs�R‰x˜# ™(Ñ" aÑ'¨Ñ)Ñ
)¨CÑ
/€CØ��b‘˜3 ™8Ñ# qÑ(¨Ñ*Ñ*¨SÑ0€DÜ�1”c˜" #¨¡(™l¨S°2©XÑ5Ó6Ö7ˆÜ�gŠg�c ¨1Ñ-×0Ñ0´·±Ó<ˆÜ�wŠw�t #¨QÑ/×2Ñ2´2·:±:Ó>ˆÜ�fŠf�S˜3˜t¢Q˜w™<Ñ'¬$¨s°T¸$Â¸'±]Ñ/BÓ*CÑCÀQÓGÈ%ÑOˆÜ
�Š��S‘˜1‘˜c¨Ò,Øˆq‰s‰
ˆØ�‘‰Šñ 8ô ×ÒÔÜ
�(Š(�B�8¤2§:¡:Ñ
.€CÜ‡H‚HˆQ�’Q˜�W‘Ñ Ñ# S¨s²1°d°7©|¸sÂ1ÀdÀ7¹|ÈcÑ?QÑ/RÓSr2   c                 ó   • U S   S L$ r,   r.   r/   s    r   r0   r0     r1   r2   r3   r4   r5   r6   ÚNKc                 óŽ  • [         R                  " S5      R                  [         R                  5      [         R                  " S5      [         R                  " S5      pÜnXÖ-  XÖ-  pþU
(       aê  [         R                  " X;S-  -   5      R                  [         R
                  5      [         R                  " X;S-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R
                  5      [         R                  " UU-   S-   5      R                  [         R
                  5      nnUnUU-
  nOXä-  Xä-  U-   nnXT-  nX·-  XÈ-  -   U:¼  a  g [         R                  " Xˆ/[         R                  S9nX·-  XÈ-  -   [         R                  " SU5      -   n[         R                  " SU5      nUU:  nUS S 2S 4   US S S 24   U:  -  nUS S 2S 4   XÈ-  U-   S S S 24   U:  -  n[        SU	5       HK  nU UU-  U-   U-  U-  -   Xø-  -   US S 2S 4   Xh-  -  -   US S S 24   -   nU[         R                  " UUSS9-  nMM     UUU-  U-   U-  -   US S 2S 4   Xg-  -  -   XÈ-  U-   S S S 24   -   n[         R                  " UUR                  UR                  R                  5      US9  g ©Nr   r3   r4   rB   rG   rD   rH   )rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rU   rC   rV   )rZ   ÚA2r-   r[   r<   rŒ   r>   r?   r:   r’   r*   r]   r^   r_   r`   ra   rd   re   rf   r�   rg   rˆ   rh   Úm_cr~   Úm_A2rl   r   Úp_A2s                                r   Ú,chunk_gla_fwd_A_kernel_intra_sub_intra_merger™     s‚  € ô6 —]’] 1Ó%×(Ñ(¬¯©Ó2´B·M²MÀ!Ó4DÄbÇmÂmÐTUÓFVˆd€CØ‰y˜$™(ˆÞÜ—7’7˜=°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆØˆØ�#‰I‰à‘7˜C™G a™KˆSˆØ‰eˆà
�x�#‘(Ñ˜aÓØä
�(Š(�B�8¤2§:¡:Ñ
.€CØ
‰(�S‘XÑ
¤§	¢	¨!¨RÓ 0Ñ
0€CÜ
�)Š)�A�rÓ
€CØ
�‰'€CØ
Ša�ˆg‰,˜#˜d¢A˜g™,¨Ñ+Ñ
,€CØŠq�$ˆw‰<˜C™H s™N¨D²!¨GÑ4°rÑ9Ñ:€DÜ�Q˜Ž|ˆØ�3�s‘7˜3‘; ‘/ "Ñ$Ñ$ S¡VÑ+¨c²!°T°'©l¸a¹dÑ.CÑCÀcÈ$ÒPQÈ'ÁlÑRˆØŒr�wŠw�s ¨CÑ0Ñ0Šñ ð ��Q‘�s‘˜B‘Ñ ¢Q¨ W¡°±Ñ!6Ñ6¸#¹(ÀS¹.È$ÒPQÈ'Ñ9RÑR€DÜ‡H‚HˆT�3—6‘6˜"Ÿ(™(×-Ñ-Ó.°TÓ:r2   c                 ó   • U S   S L$ r,   r.   r/   s    r   r0   r0   K  r1   r2   )r   r   )r4   r5   r6   )r   r"   )r?   ÚHVÚSTATE_V_FIRSTr›   r   r"   rœ   c                 ó  • [         R                  " S5      [         R                  " S5      R                  [         R                  5      [         R                  " S5      nnnUU-  UU-  nnUXº-  -  nU(       Ga  UR                  [         R                  5      n[         R                  " UUS-  -   5      R                  [         R
                  5      [         R                  " UUS-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R                  5      [         R                  " UU-   S-   5      R                  [         R                  5      nnUU-
  n	[         R                  " Xž5      nO‚[         R                  " Xž5      nUU-  U-   R                  [         R                  5      nUU	-  R                  [         R                  5      UU	-  U	-   R                  [         R                  5      nn[         R                  " SU5      S S 2S 4   [         R                  " SU5      S S S 24   :¬  nU UU
-  U-   U-  -  n UUU-  U-   U-  -  nUUU-  U-   U-  -  nUUU-  U-   U-  -  nUUU-  U-   R                  [         R                  5      U-  U-  -  nUUU-  U-   U-  -  n[         R                  " UU/[         R                  S9nUU-  [         R                  " SU5      -   n UU-  [         R                  " SU5      -   n![         R                  " SU5      n"U U	:  n#U!U:  n$U#S S 2S 4   U$S S S 24   -  n%U#S S 2S 4   U"S S S 24   U:  -  n&[        [         R                  " XÏ5      5       GHâ  n'U'U-  [         R                  " SU5      -   n(U(U:  n)U#S S 2S 4   U)S S S 24   -  n*U U S S 2S 4   X¬-  -  -   U(S S S 24   -   n+UU S S 2S 4   X¼-  -  -   U(S S S 24   -   n,U(       a-  UU!S S 2S 4   U-  -   U(S S S 24   -   n-U$S S 2S 4   U)S S S 24   -  n.O,UU(S S 2S 4   U-  -   U!S S S 24   -   n-U)S S 2S 4   U$S S S 24   -  n.[         R                  " U+U*SS9n/[         R                  " U,U*SS9R                  [         R                  5      n0U/[        U05      -  R                  U/R                  5      n1[         R                  " U-U.SS9n2U'S:¼  d  GM^  U(       aJ  U[         R                  " U1[         R                  " U25      R                  U1R                  5      5      -  nGM¯  U[         R                  " U1U2R                  U1R                  5      5      -  nGMå     UU-  nUU S S 2S 4   X½-  -  -   U!S S S 24   -   n3UU S S 2S 4   X½-  -  -   U!S S S 24   -   n4UU S S 2S 4   X¾-  -  -   U"S S S 24   -   n5[         R                  " U3U%SS9n6[         R                  " U5U&SS9n7[         R                  " UU7S5      R                  U6R                  5      n7U[         R                  " U7U65      -  n[         R                   " U4UR                  U4R                  R"                  5      U%S9  g r”   )rI   rJ   rK   rL   rM   rN   rS   rQ   rO   rP   rR   r	   rC   rT   ÚtransÚwhererU   rV   )8rW   ÚvrY   ÚhÚorZ   r-   r[   r\   r<   r>   r›   r   r   r?   r   r"   rœ   r*   Úi_vr]   r_   r`   Úi_hvra   Úi_tgrd   re   rf   ÚNTÚm_sÚb_oÚo_tÚo_vrh   Úm_tÚm_vÚm_tvr~   rl   rm   rn   ro   rq   rr   Úp_hÚm_hrw   rx   ry   Úb_hÚp_vÚp_or   Úb_vrg   s8                                                           r   Úchunk_gla_fwd_kernel_or´   J  sÌ  € ôH —]’] 1Ó%¤r§}¢}°QÓ'7×':Ñ':¼2¿8¹8Ó'DÄbÇmÂmÐTUÓFVˆdˆ€CØ˜‘
˜D 2™Iˆ€CØ
�2‘7Ñ
€CßØ�v‰v”b—h‘hÓˆÜ—7’7˜=¨3°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-ÐZ]Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆØ�#‰IˆÜ�WŠW�Q‹^‰ä�WŠW�Q‹^ˆØ�b‘˜3‘×"Ñ"¤2§8¡8Ó,ˆØ˜!‘G—<‘<¤§¡Ó)¨C°!©G°a©K×+;Ñ+;¼B¿H¹HÓ+EˆSˆä
�)Š)�A�rÓ
š1˜d˜7Ñ
#¤r§y¢y°°BÓ'7¸ºa¸Ñ'@Ñ
@€Càˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰(�T‰/˜QÑ	Ñ€AØˆ#�‰(�T‰/˜QÑ	Ñ€AØˆ#�‰(�T‰/˜QÑ	Ñ€AØˆ$�‰)�dÑ
×	Ñ	œrŸx™xÓ	(¨1Ñ	,¨qÑ	0Ñ0€AØˆ#�‰(�T‰/˜RÑ	Ñ€Aä
�(Š(�B˜�8¤2§:¡:Ñ
.€CØ
�‰(”R—Y’Y˜q "Ó%Ñ
%€CØ
�‰(”R—Y’Y˜q "Ó%Ñ
%€CÜ
�)Š)�A�rÓ
€CØ
�‰'€CØ
�‰'€CØŠq�$ˆw‰<˜#˜d¢A˜g™,Ñ&€DØ
Ša�ˆg‰,˜#˜d¢A˜g™,¨Ñ+Ñ
,€CÜ”R—W’W˜Q“^×$ˆØ�B‰hœŸš 1 bÓ)Ñ)ˆØ�A‰gˆØ’1�d�7‰|˜c $ª '™lÑ*ˆØ�#’a˜�g‘, !¡#Ñ&Ñ&¨¨T²1¨W©Ñ5ˆØ�#’a˜�g‘, "¡$Ñ'Ñ'¨#¨d²A¨g©,Ñ6ˆÞØ�cš!˜T˜'‘l QÑ&Ñ&¨¨T²1¨W©Ñ5ˆCØ’a˜�g‘,  Tª1 W¡Ñ-‰Cà�cš!˜T˜'‘l QÑ&Ñ&¨¨T²1¨W©Ñ5ˆCØ’a˜�g‘,  Tª1 W¡Ñ-ˆCô �gŠg�c ¨CÑ0ˆä�gŠg�c ¨CÑ0×3Ñ3´B·J±JÓ?ˆà”d˜3“i‘×#Ñ# C§I¡IÓ.ˆÜ�gŠg�c ¨3Ñ/ˆØ�!Ž8ÞØ”r—v’v˜d¤B§H¢H¨S£M×$4Ñ$4°T·Z±ZÓ$@ÓAÑA“à”r—v’v˜d C§F¡F¨4¯:©:Ó$6Ó7Ñ7“ñ1 %ð2 ˆ5�L€CØ
ˆc’!�T�'‰l˜b™dÑ#Ñ
# c¨$²¨'¡lÑ
2€CØ
ˆc’!�T�'‰l˜b™dÑ#Ñ
# c¨$²¨'¡lÑ
2€CØ
ˆc’!�T�'‰l˜b™eÑ$Ñ
$ s¨4²¨7¡|Ñ
3€Cä
�'Š'�#˜D¨Ñ
,€Cä
�'Š'�#˜C sÑ
+€CÜ
�(Š(�3˜˜RÓ
 ×
#Ñ
# C§I¡IÓ
.€CØŒ2�6Š6�#�sÓÑ€CÜ‡H‚HˆS�#—&‘&˜Ÿ™×-Ñ-Ó.°TÓ:r2   c                 ó   • U S   S L$ r,   r.   r/   s    r   r0   r0   ´  r1   r2   )r   r@   r?   c                 ó”  • [         R                  " S5      [         R                  " S5      R                  [         R                  5      [         R                  " S5      nnnUU	-  UU	-  nnUU-  UU-  nnU(       aå  [         R                  " UUS-  -   5      R                  [         R
                  5      [         R                  " UUS-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R
                  5      [         R                  " UU-   S-   5      R                  [         R
                  5      nnOUU-  UU-  U-   nnUU-
  nUU-  UU-  -   U:¼  a  g UU-  [         R                  " SU5      -   nUU
:  nUU-  UU-  -   [         R                  " SU5      -   nUU:  nUS S 2S 4   US S S 24   -  nUUU	-  U-   U
-  -   US S 2S 4   Xš-  -  -   US S S 24   -   n[         R                  " UUSS9n [         R                  " XÍ/[         R                  S9n!US:”  Ga¸  UUUU-  -   UU-  -   U	-  U
-  -   UU
-  -   U-   n"[         R                  " U"USS9n#[        SU5       GHY  n$UU-  U$U-  -   [         R                  " SU5      -   n%U$U-  [         R                  " SU5      -   n&U%S S 2S 4   U:  US S S 24   -  n'US S 2S 4   U&S S S 24   U:  -  n(UUU	-  U-   U
-  -   U%S S 2S 4   Xš-  -  -   US S S 24   -   n)UUU	-  U-   U
-  -   U%S S 2S 4   Xš-  -  -   US S S 24   -   n*UUU	-  U-   U-  -   US S 2S 4   X›-  -  -   U&S S S 24   -   n+[         R                  " U)U'SS9n,[         R                  " U*U'SS9n-U,[        U#S S S 24   U--
  5      -  n.[         R                  " U+U(SS9n/U![         R                  " U/U.5      -  n!GM\     U![        U U#S S S 24   -
  5      -  n![         R                  " SU5      n0UU-  UU-  -   [         R                  " SU5      -   U:  n1UU	-  U-  UU-  UU-  -   [         R                  " SU5      -   U	-  U-  -   UU-  -   UU-  -   n2UUUU-  -   UU-  -   U	-  U
-  -   UU
-  -   U-   n3UUUU-  -   UU-  -   U	-  U
-  -   UU
-  -   U-   n4UUU	-  U-   U
-  -   US S 2S 4   Xš-  -  -   US S S 24   -   n5[        S[        XÈUU-  -
  UU-  -
  5      5       Há  n6[         R                  " UU2-   U6-   U1SS9n/[         R                  " U3USS9R                  [         R                  5      n7[         R                  " U4USS9R                  [         R                  5      n8U0S S 2S 4   U6:¬  n9U![         R                  " U9U/S S 2S 4   U7S S S 24   -  [        U U8S S S 24   -
  5      -  S5      -  n!U3Xš-  -  n3U4Xš-  -  n4Mã     [         R                  " U5U!R                  U5R                  R                   5      US9  [         R"                  " 5         [         R                  " XÍ/[         R                  S9n:[        U[         R$                  " UUU-  -
  U5      5      nUUS-
  :  GaÕ  UU[        UU-  UU-  -   U-   U5      -   S-
  U	-  U
-  -   UU
-  -   U-   n"[         R                  " U"USS9n#[        US-   U5       GHc  n$UU-  U$U-  -   U0-   n%UU-  [         R                  " SU5      -   n;U%U:  n<U<S S 2S 4   US S S 24   -  n'U;S S 2S 4   U:  U<S S S 24   -  n(U UU	-  U-   U
-  -   U%S S 2S 4   Xš-  -  -   US S S 24   -   n=UUU	-  U-   U
-  -   U%S S 2S 4   Xš-  -  -   US S S 24   -   n>UUU	-  U-   U-  -   U;S S 2S 4   -   U%S S S 24   X›-  -  -   n+[         R                  " U=U'SS9n?[         R                  " U>U'SS9n@U?[         R                  " U<S S 2S 4   [        U@U#S S S 24   -
  5      S5      -  nA[         R                  " U+U(SS9n/U:[         R                  " U/UA5      -  n:GMf     U:[        U#S S S 24   U -
  5      -  n:UU	-  U-  UU-  UU-  -   U	-  U-  -   UU-  -   UU-  -   [         R                  " SU5      -   n2U UUU-  -   UU-  -   U	-  U
-  -   UU
-  -   U-   nBUUUU-  -   UU-  -   U	-  U
-  -   UU
-  -   U-   nCUUU	-  U-   U
-  -   US S 2S 4   Xš-  -  -   US S S 24   -   nD[        S[        XÈUU-  -
  UU-  -
  5      5       Hç  n6[         R                  " UU2-   U6U	-  U-  -   5      n/[         R                  " WBUSS9R                  [         R                  5      nE[         R                  " WCUSS9R                  [         R                  5      nFU0S S 2S 4   U6:*  n9U:[         R                  " U9U/S S 2S 4   UES S S 24   -  [        UFS S S 24   U -
  5      -  S5      -  n:UBXš-  -  nBUCXš-  -  nCMé     [         R                  " WDU:R                  UDR                  R                   5      US9  g )Nr   r3   r4   rG   rD   rB   rH   )rI   rJ   rK   rL   rM   rN   rQ   rO   rP   rR   r	   rT   r#   rŸ   rU   rC   rV   r†   rS   )GrW   rX   rY   ÚdAÚdqÚdkr-   r[   r<   r>   r   r?   r:   r   r@   r*   Úi_kcr]   r_   r`   ra   rl   rb   rd   re   rf   rm   rn   rˆ   r–   Úm_ckrr   rx   Úb_dqru   rv   rc   ri   r}   Úm_jkÚm_dars   rt   Úp_dArz   r{   r|   Úb_dArh   Úm_dAÚo_dAÚp_kjÚp_gkjÚp_dqr‰   Úb_kjÚb_gkjrj   Úb_dkÚo_iArk   rq   Úp_gqrw   Úb_gqry   Úp_qjÚp_gqjÚp_dkÚb_qjÚb_gqjsG                                                                          r   Úchunk_gla_bwd_kernel_intrarÑ   ³  s­
  € ô> —m’m AÓ&¬¯ª°aÓ(8×(;Ñ(;¼B¿H¹HÓ(EÄrÇ}Â}ÐUVÓGWˆtˆ#€DØ�q‰y˜$ ™(ˆ€CØ�r‰z˜4 "™9ˆ€CÞÜ—7’7˜=¨3°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-ÐZ]Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆˆSà˜‘7˜C !™G a™KˆSˆØˆc‰	€AØ
ˆR�x�#˜‘(Ñ˜aÓØà
�‰(”R—Y’Y˜q "Ó%Ñ
%€CØ
�‰'€Cà
�‰(�S˜2‘XÑ
¤§	¢	¨!¨RÓ 0Ñ
0€CØ
�‰'€CØŠq�$ˆw‰<˜#˜d¢A˜g™,Ñ&€DØ
ˆs�1‰u�s‰{˜aÑÑ
 #¢a¨ g¡,°!±#Ñ"6Ñ
6¸¸TÂ1¸W¹Ñ
E€Cä
�'Š'�#˜D¨Ñ
,€Cä�8Š8�R�H¤B§J¡JÑ/€DØ
ˆQ„wØ�C˜# ™(‘N S¨2¡XÑ-°Ñ2°1Ñ4Ñ4°s¸1±uÑ<¸sÑBˆä�wŠw�t #¨QÑ/ˆÜ˜˜C—=ˆCØ˜‘(˜S 2™XÑ%¬¯	ª	°!°RÓ(8Ñ8ˆCØ˜‘8œbŸiši¨¨2Ó.Ñ.ˆDØš˜4˜‘L 1Ñ$¨¨D²!¨G©Ñ4ˆDØ’q˜$�w‘< 4¨ªa¨¡=°2Ñ#5Ñ6ˆDØ�S˜‘U˜3‘Y ‘M‘/ Cª¨4¨¡L°A±CÑ$8Ñ8¸3¸tÂQ¸w¹<ÑGˆCØ�c˜!‘e˜C‘i ‘]‘? Sª¨D¨¡\°Q±SÑ%9Ñ9¸CÀÂaÀ¹LÑHˆDØ�s˜1‘u˜S‘y "‘nÑ$ sª1¨d¨7¡|°q±tÑ'<Ñ<¸tÀDÊ!ÀG¹}ÑLˆDä—'’'˜# D°Ñ4ˆCÜ—7’7˜4 d°#Ñ6ˆDØœ˜d 4ª 7™m¨dÑ2Ó3Ñ3ˆDä—7’7˜4 d°#Ñ6ˆDà”B—F’F˜4 Ó&Ñ&‹Dñ !ð  	”�S˜4 ¢a ™=Ñ(Ó)Ñ)ˆÜ
�)Š)�A�rÓ
€CØ�"‰H�s˜R‘xÑ¤"§)¢)¨A¨rÓ"2Ñ2°aÑ7€DØˆq‰5�‰8�s˜R‘x #¨¡(Ñ*¬R¯YªY°q¸"Ó-=Ñ=ÀÑBÀ2ÑEÑEÈÈbÉÑPÐSVÐY[ÑS[Ñ[€DØ��c˜B‘h‘  r¡Ñ)¨QÑ.¨qÑ0Ñ0°3¸±7Ñ:¸SÑ@€DØ��s˜R‘x‘ #¨¡(Ñ*¨aÑ/°Ñ1Ñ1°C¸!±GÑ;¸cÑA€EØ��Q‘˜‘ Ñ!Ñ! Cª¨4¨¡L°A±CÑ$8Ñ8¸3¸tÂQ¸w¹<ÑG€Dä�1”c˜" #¨¡(™l¨S°2©XÑ5Ó6Ö7ˆä�wŠw�r˜D‘y 1‘}¨4°qÑ9ˆä�wŠw�t #¨QÑ/×2Ñ2´2·:±:Ó>ˆÜ—’˜ C¨qÑ1×4Ñ4´R·Z±ZÓ@ˆà’!�T�'‰l˜aÑˆð 	”—’˜˜d¢1 d 7™m¨d°4º°7©mÑ;¼dÀ3ÈÈtÒUVÈwÉÑCWÓ>XÑXÐZ\Ó]Ñ]ˆØ�‘‰ˆØ�‘‰Šñ 8ô ‡H‚HˆT�4—7‘7˜4Ÿ:™:×0Ñ0Ó1¸Ò=ä×ÒÔä�8Š8�R�H¤B§J¡JÑ/€Dä	ˆR”—’˜˜S 2™X™ rÓ*Ó	+€BØ
ˆR�!‰V„|Ø�Cœ#˜c B™h¨¨r©Ñ1°BÑ6¸Ó:Ñ:¸QÑ>À!ÑCÀAÑEÑEÈÈaÉÑOÐRUÑUˆô �wŠw�t #¨QÑ/ˆÜ˜˜q™ "×%ˆCØ˜‘(˜S 2™XÑ%¨Ñ+ˆCØ˜‘8œbŸiši¨¨2Ó.Ñ.ˆDØ˜‘'ˆCØ’q˜$�w‘< # dªA g¡,Ñ.ˆDØš˜D˜‘M BÑ&¨#¨d²A¨g©,Ñ6ˆDØ�s˜1‘u˜S‘y !‘mÑ# cª!¨T¨'¡l°a±cÑ&:Ñ:¸SÀÂqÀ¹\ÑIˆCØ˜˜A™˜c™	 1‘}Ñ$ sª1¨d¨7¡|°q±sÑ';Ñ;¸cÀ$ÊÀ'¹lÑJˆDØ˜˜Q™˜s™ B™Ñ&¨ªa°¨g©Ñ6¸¸TÂ1¸W¹ÈÉÑ9NÑNˆDä—'’'˜# D°Ñ4ˆCÜ—7’7˜4 d°#Ñ6ˆDØœŸš #¢a¨ g¡,´°T¸DÀÂqÀ¹MÑ5IÓ0JÈAÓNÑNˆDä—7’7˜4 d°#Ñ6ˆDð ”B—F’F˜4 Ó&Ñ&‹Dñ# &ð$ 	”�T˜$¢˜'‘] SÑ(Ó)Ñ)ˆØˆq‰5�‰8�s˜R‘x #¨¡(Ñ*¨aÑ/°Ñ2Ñ2°S¸2±XÑ=ÀÀbÁÑHÌ2Ï9Ê9ÐUVÐXZÓK[Ñ[€DØ��c˜B‘h‘  r¡Ñ)¨QÑ.¨qÑ0Ñ0°3¸±7Ñ:¸SÑ@€DØ��s˜R‘x‘ #¨¡(Ñ*¨aÑ/°Ñ1Ñ1°C¸!±GÑ;¸cÑA€EØ��Q‘�s‘˜A‘Ñ ¢A t G¡°±Ñ 4Ñ4°s¸4Â¸7±|ÑC€DÜ�1”c˜" #¨¡(™l¨S°2©XÑ5Ó6Ö7ˆä�wŠw�r˜D‘y 1 q¡5¨¡8Ñ+Ó,ˆä�wŠw�t #¨QÑ/×2Ñ2´2·:±:Ó>ˆÜ—’˜ C¨qÑ1×4Ñ4´R·Z±ZÓ@ˆà’!�T�'‰l˜aÑˆØ”—’˜˜d¢1 d 7™m¨d°4º°7©mÑ;¼dÀ5ÈÊqÈÁ>ÐTWÑCWÓ>XÑXÐZ\Ó]Ñ]ˆØ�‘‰ˆØ�‘‰Šñ 8ô ‡H‚HˆT�4—7‘7˜4Ÿ:™:×0Ñ0Ó1¸Ó=r2   c                 ó   • U S   S L$ r,   r.   r/   s    r   r0   r0   D  r1   r2   c                 óî  • [         R                  " S5      R                  [         R                  5      [         R                  " S5      pÜX×-  X×-  pþU(       aã  [         R                  " XLS-  -   5      R                  [         R
                  5      [         R                  " XLS-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R
                  5      [         R                  " UU-   S-   5      R                  [         R
                  5      nnOXæ-  Xæ-  U-   nnUU-
  n[         R                  " X™/[         R                  S9nXÉ-  [         R                  " SU	5      -   n[         R                  " SU	5      nUU:  nUS S 2S 4   US S S 24   U	:  -  n[        [         R                  " XŠ5      5       Hß  nUU
-  [         R                  " SU
5      -   nUU:  nUS S 2S 4   US S S 24   -  nUS S 2S 4   US S S 24   -  nUUU-  U-   U-  -   US S 2S 4   Xx-  -  -   US S S 24   -   nU UU-  U-   U-  -   US S 2S 4   -   US S S 24   Xx-  -  -   n[         R                  " UUSS9n[         R                  " UUSS9n U[         R                  " U U5      -  nMá     UUU-  U-   U	-  -   US S 2S 4   Xy-  -  -   US S S 24   -   n![         R                  " SU	5      S S 2S 4   [         R                  " SU	5      S S S 24   :¬  n"[         R                  " U"UU-  S5      n[         R                  " U!UR                  U!R                  R                  5      US9  g r”   )rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rŸ   rU   rC   rV   )#r    Údor·   r-   r[   r\   r<   r>   r   r?   r"   r*   r]   r_   r`   ra   rd   re   rf   rÀ   r©   rh   r«   r~   r£   rª   r¬   r­   Úm_vtÚp_dor±   r³   Úb_dor¿   r§   s#                                      r   Úchunk_gla_bwd_kernel_dArØ   C  s  € ô6 —’˜aÓ ×#Ñ#¤B§H¡HÓ-¬r¯}ª}¸QÓ/?ˆØ‰y˜$™(ˆÞÜ—7’7˜=°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆˆSà‘7˜C™G a™KˆSˆØˆc‰	€Aä�8Š8�R�H¤B§J¡JÑ/€DØ
‰(”R—Y’Y˜q "Ó%Ñ
%€CÜ
�)Š)�A�rÓ
€CØ
�‰'€CØ
Ša�ˆg‰,˜#˜d¢A˜g™,¨Ñ+Ñ
,€CÜ”R—W’W˜Q“^Ö$ˆØ�B‰hœŸš 1 bÓ)Ñ)ˆØ�A‰gˆØ’1�d�7‰|˜c $ª '™lÑ*ˆØ’1�d�7‰|˜c $ª '™lÑ*ˆØ�S˜‘U˜S‘[ AÑ%Ñ%¨ªA¨t¨G©¸¹Ñ(<Ñ<¸sÀ4ÊÀ7¹|ÑKˆØ�3�q‘5˜3‘; !Ñ#Ñ# cª!¨T¨'¡lÑ2°S¸ºq¸±\ÀQÁSÑ5IÑIˆÜ�gŠg�c ¨CÑ0ˆÜ�wŠw�t $¨cÑ2ˆà”—’�t˜SÓ!Ñ!Šñ %ð ��q‘˜3‘ "Ñ$Ñ$ sª1¨d¨7¡|°q±tÑ'<Ñ<¸sÀ4ÊÀ7¹|ÑK€DÜ
�)Š)�A�rÓ
š1˜d˜7Ñ
#¤r§y¢y°°BÓ'7¸ºa¸Ñ'@Ñ
@€CÜ�8Š8�C˜ ™ rÓ*€DÜ‡H‚HˆT�4—7‘7˜4Ÿ:™:×0Ñ0Ó1¸Ó<r2   c                 ó   • U S   S L$ r,   r.   r/   s    r   r0   r0     r1   r2   )r?   rœ   r   r   Úearly_config_prune)r$   r;   Úprune_configs_byc           	      óø
  • [         R                  " S5      [         R                  " S5      R                  [         R                  5      [         R                  " S5      nnnUU	-  UU	-  nnU(       Ga  Un[         R                  " UUS-  -   5      R                  [         R
                  5      [         R                  " UUS-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R
                  5      [         R                  " UU-   S-   5      R                  [         R
                  5      nnUU-
  n[         R                  " XŒ5      nO+[         R                  " XŒ5      nUU-  U-   nUU-  UU-  U-   nnUU-  [         R                  " SU5      -   nUU-  [         R                  " SU5      -   n[         R                  " SU5      nUU:  nUU:  nUS S 2S 4   U:  US S S 24   -  n US S 2S 4   US S S 24   -  n!UUU	-  U-   U-  -   US S 2S 4   -   US S S 24   Xœ-  -  -   n"UUU	-  U-   U-  -   US S 2S 4   X›-  -  -   US S S 24   -   n#UUU	-  U-   U-  -   US S 2S 4   X›-  -  -   US S S 24   -   n$[         R                  " U"U SS9n%[         R                  " U#U!SS9n&[         R                  " [         R                  " SU5      S S 2S 4   [         R                  " SU5      S S S 24   :*  U%S5      n%[         R                  " U%U&R                  U%R                  5      SS9n'[        [         R                  " X­5      5       GHØ  n(U(U-  [         R                  " SU5      -   n)U)U
:  n*US S 2S 4   U*S S S 24   -  n+U*S S 2S 4   US S S 24   -  n,U UU	-  U-   U
-  -   US S 2S 4   Xš-  -  -   U)S S S 24   -   n-UUU	-  U-   U
-  -   US S 2S 4   Xš-  -  -   U)S S S 24   -   n.UU[        UU-  U-   U5      -   S-
  U	-  U
-  -   UU
-  -   U)-   n/U(       a)  UUU	-  U-   U
-  U-  -   U)S S 2S 4   -   US S S 24   U
-  -   n0O(UUU	-  U-   U
-  U-  -   U)S S 2S 4   U-  -   US S S 24   -   n0[         R                  " U-U+SS9n1[         R                  " U.U+SS9n2[         R                  " U0U,SS9n3[        [         R                  " U/U*SS9S S S 24   U2-
  5      n4U1U4-  R                  U1R                  5      n1U'[         R                  " U1U3R                  U1R                  5      5      -  n'GMÛ     [         R                  " U$U'R                  U$R                  R                  5      U!S9  g )	Nr   r3   r4   rG   rD   F)Ú
allow_tf32rH   )rI   rJ   rK   rL   rM   rN   rS   rQ   rŸ   rT   rC   rR   r#   r	   rU   rV   )5rX   rY   rZ   rÔ   ÚdhÚdvr-   r[   r<   r>   r   r   r?   r   r"   r*   rœ   r£   r]   r_   r`   ra   r¥   rd   re   rf   r¦   r©   rª   rh   r«   r¬   r~   r­   r   rÖ   Úp_dvrg   r×   Úb_dvrl   rm   rn   Úm_tkÚm_kvdrs   rt   ru   Úp_dhrz   r{   Úb_dhrv   s5                                                        r   Úchunk_gla_bwd_kernel_dvræ   ~  sB  € ôF —]’] 1Ó%¤r§}¢}°QÓ'7×':Ñ':¼2¿8¹8Ó'DÄbÇmÂmÐTUÓFVˆdˆ€CØ�q‰y˜$ ™(ˆ€CßØˆÜ—7’7˜=¨3°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-ÐZ]Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆØ�#‰IˆÜ�WŠW�Q‹^‰ä�WŠW�Q‹^ˆØ�R‰x˜#‰~ˆØ˜‘7˜C !™G a™KˆSˆà
�‰(”R—Y’Y˜q "Ó%Ñ
%€CØ
�‰(”R—Y’Y˜q "Ó%Ñ
%€CÜ
�)Š)�A�rÓ
€CØ
�‰'€CØ
�‰'€CØŠq�$ˆw‰<˜"Ñ  Dª! G¡Ñ
,€CØŠq�$ˆw‰<˜#˜d¢A˜g™,Ñ&€DØ
ˆs�Q‰w˜‰} Ñ"Ñ
" Sª¨D¨¡\Ñ
1°C¸ºa¸±LÀAÁDÑ4IÑ
I€CØ��q‘˜3‘ !Ñ#Ñ# cª!¨T¨'¡l°a±cÑ&:Ñ:¸SÀÂqÀ¹\ÑI€DØ��q‘˜3‘ !Ñ#Ñ# cª!¨T¨'¡l°a±cÑ&:Ñ:¸SÀÂqÀ¹\ÑI€DÜ
�'Š'�#˜C sÑ
+€CÜ�7Š7�4˜d¨#Ñ.€Dä
�(Š(”2—9’9˜Q Ó#¢A t GÑ,´·	²	¸!¸RÓ0@ÀÂqÀÑ0IÑIÈ3ÐPRÓ
S€Cä�6Š6�#�t—w‘w˜sŸy™yÓ)°eÑ<€Dä”R—W’W˜Q“^×$ˆØ�B‰hœŸš 1 bÓ)Ñ)ˆØ�A‰gˆØ’1�d�7‰|˜c $ª '™lÑ*ˆØ’A�t�G‘˜s 4ª 7™|Ñ+ˆà�3˜‘7˜S‘= AÑ%Ñ%¨ªA¨t¨G©¸¹Ñ(<Ñ<¸sÀ4ÊÀ7¹|ÑKˆØ�C˜!‘G˜c‘M QÑ&Ñ&¨ªQ°¨W©¸¹Ñ)=Ñ=ÀÀDÊ!ÀGÁÑLˆØ�Cœ#˜c B™h¨™m¨QÓ/Ñ/°!Ñ3°QÑ6°qÑ8Ñ8¸3À¹7ÑBÀSÑHˆÞà˜ ™ C™¨1Ñ,¨QÑ.Ñ.°²Q¸°W±Ñ=ÀÀDÊ!ÀGÁÈqÑ@PÑP‰Dà˜ ™ C™¨1Ñ,¨QÑ.Ñ.°²Q¸°W±ÀÑ1AÑAÀCÈÊaÈÁLÑPˆDä�gŠg�c ¨CÑ0ˆÜ�wŠw�t $¨cÑ2ˆÜ�wŠw�t %¨sÑ3ˆä”B—G’G˜D s°!Ñ4°Tº1°WÑ=ÀÑDÓEˆØ�T‰z�o‰o˜cŸi™iÓ(ˆð 	”—’�s˜DŸG™G C§I¡IÓ.Ó/Ñ/‹ñ/ %ô2 ‡H‚HˆT�4—7‘7˜4Ÿ:™:×0Ñ0Ó1¸Ó=r2   c                 ó   • U S   S L$ r,   r.   r/   s    r   r0   r0   Ü  r1   r2   c                 ó®  • [         R                  " S5      [         R                  " S5      R                  [         R                  5      [         R                  " S5      nnnUU-  UU-  nnU(       Ga  Un[         R                  " UUS-  -   5      R                  [         R
                  5      [         R                  " UUS-  -   S-   5      R                  [         R                  5      nn[         R                  " UU-   5      R                  [         R
                  5      [         R                  " UU-   S-   5      R                  [         R
                  5      n nU U-
  n[         R                  " UU5      n!O,[         R                  " UU5      n!UU!-  U-   nUU-  UU-  U-   n nUU-  [         R                  " SU5      -   n"U"U:  n#U UU-  U-   U-  -  n UUU-  U-   U-  -  nUUU-  U-   U-  -  nUUU-  U-   U-  -  nUUU-  U-   U-  U-  -  nUUU-  U-   U-  -  nUUU-  U-   U-  U-  -  nUUU-  U-   U-  -  nUUU-  U-   U-  -  nU	UU-  U-   U-  -  n	U
UU-  U-   U-  -  n
UUU-  U-   U-  -  nUU-  [         R                  " SU5      -   n$U$U:  n%U%S S 2S 4   U#S S S 24   -  n&UU$S S 2S 4   UU-  -  -   U"S S S 24   -   n'[         R                  " U'U&SS9n(U[        UUU-  U-   5      S-
  U-  U-  -   U"-   n)[         R                  " U)U#SS9n*[         R                  " UU/[         R                  S9n+[         R                  " UU/[         R                  S9n,[         R                  " U/[         R                  S9n-[        [         R                  " UU5      5       GHÉ  n.U.U-  [         R                  " SU5      -   n/U/U:  n0U%S S 2S 4   U0S S S 24   -  n1U0S S 2S 4   U#S S S 24   -  n2UU$S S 2S 4   UU-  -  -   U/S S S 24   -   n3UU$S S 2S 4   UU-  -  -   U/S S S 24   -   n4U(       a3  UU/S S 2S 4   U-  -   U"S S S 24   -   n5UU/S S 2S 4   U-  -   U"S S S 24   -   n6O2UU/S S 2S 4   -   U"S S S 24   U-  -   n5UU/S S 2S 4   -   U"S S S 24   U-  -   n6[         R                  " U3U1SS9n7[         R                  " U4U1SS9n8[         R                  " U5U2SS9n9[         R                  " U6U2SS9n:U-[         R                  " U9U:-  SS9-  n-U+[         R                  " U8U9R                  U8R                  5      5      -  n+U,[         R                  " U7U:R                  U7R                  5      5      -  n,GMÌ     U-[        U*5      -  n-U+U-  n+U+[        U(5      -  n+U,[        U*S S S 24   U(-
  5      -  n,U U$S S 2S 4   UU-  -  -   U"S S S 24   -   n;UU$S S 2S 4   UU-  -  -   U"S S S 24   -   n<UU$S S 2S 4   UU-  -  -   U"S S S 24   -   n=UU$S S 2S 4   UU-  -  -   U"S S S 24   -   n>[         R                  " U;U&SS9n?[         R                  " U<U&SS9n@U-[         R                  " U,U@-  SS9-  n-U+[         R                  " U=U&SS9-  n+U,[         R                  " U>U&SS9-  n,U?U+-  U@U,-  -
  nAUA[         R                   " UASS9-
  [         R                  " UASS9S S S 24   -   U-S S S 24   -   nAU	U$S S 2S 4   UU-  -  -   U"S S S 24   -   n=U
U$S S 2S 4   UU-  -  -   U"S S S 24   -   n>UU$S S 2S 4   UU-  -  -   U"S S S 24   -   nB[         R"                  " U=U+R                  U=R                  R$                  5      U&S9  [         R"                  " U>U,R                  U>R                  R$                  5      U&S9  [         R"                  " UBUAR                  UBR                  R$                  5      U&S9  g )	Nr   r3   r4   rG   rD   rB   )ÚaxisrH   )rI   rJ   rK   rL   rM   rN   rS   rQ   r#   rO   rP   rR   r…   rT   rC   r	   ÚcumsumrU   rV   )CrW   rX   r    rY   r¡   rÔ   rÞ   r¸   r¹   Údq2Údk2Údgr-   r[   r\   r<   r>   r   r   r?   r   r"   r*   rœ   rl   r]   r_   r`   ra   r¥   rd   re   rf   r¦   rm   rn   r©   r«   râ   rt   r{   ru   rv   r¼   rÈ   Úb_dgkr£   rª   r¬   r­   Úm_vkr±   rÖ   r®   rä   r³   r×   r°   rå   rq   rs   rÅ   rÎ   rw   rz   Úb_dgÚp_dgsC                                                                      r   Úchunk_gla_bwd_kernel_interrò   Û  sø  € ôT —]’] 1Ó%¤r§}¢}°QÓ'7×':Ñ':¼2¿8¹8Ó'DÄbÇmÂmÐTUÓFVˆdˆ€CØ�q‰y˜$ ™(ˆ€CßØˆÜ—7’7˜=¨3°©7Ñ2Ó3×6Ñ6´r·x±xÓ@Ä"Ç'Â'È-ÐZ]Ð`aÑZaÑJaÐdeÑJeÓBf×BiÑBiÔjl×jrÑjrÓBsˆSˆÜ—7’7˜:¨Ñ+Ó,×/Ñ/´·±Ó9¼2¿7º7À:ÐPSÑCSÐVWÑCWÓ;X×;[Ñ;[Ô\^×\dÑ\dÓ;eˆSˆØ�#‰IˆÜ�WŠW�Q˜‹^‰ä�WŠW�Q˜‹^ˆØ�R‰x˜#‰~ˆØ˜‘7˜C !™G a™KˆSˆØ
�‰(”R—Y’Y˜q "Ó%Ñ
%€CØ
�‰'€Càˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ#�‰'�C‰-˜1Ñ	Ñ€AØˆ$�‰(�S‰.˜AÑ	˜aÑ	Ñ€AØˆ3�‰7�S‰=˜AÑ
Ñ€BØˆ4�!‰8�c‰>˜QÑ
˜qÑ
 Ñ €BØˆ3�‰7�S‰=˜AÑ
Ñ€BØˆ3�‰7�S‰=˜AÑ
Ñ€BØˆC�!‰G�c‰M˜QÑÑ€CØˆC�!‰G�c‰M˜QÑÑ€CØˆ3�‰7�S‰=˜AÑ
Ñ€Bà
�‰(”R—Y’Y˜q "Ó%Ñ
%€CØ
�‰'€CØŠq�$ˆw‰<˜#˜d¢A˜g™,Ñ&€DØˆs’1�d�7‰|˜q ™sÑ#Ñ# c¨$²¨'¡lÑ2€DÜ�7Š7�4˜d¨#Ñ.€DØ”�A�s˜R‘x "‘}Ó%¨Ñ)¨QÑ.¨qÑ0Ñ0°3Ñ6€DÜ�7Š7�4˜c¨Ñ+€DÜ�8Š8�R˜�H¤B§J¡JÑ/€DÜ�8Š8�R˜�H¤B§J¡JÑ/€DÜ�HŠH�b�T¤§¡Ñ,€Eä”R—W’W˜Q “^×$ˆØ�B‰hœŸš 1 bÓ)Ñ)ˆØ�A‰gˆØ’1�d�7‰|˜c $ª '™lÑ*ˆØ’1�d�7‰|˜c $ª '™lÑ*ˆØ�#’a˜�g‘, ! A¡#Ñ&Ñ&¨¨T²1¨W©Ñ5ˆØ�Cš˜4˜‘L A a¡CÑ(Ñ(¨3¨t²Q¨w©<Ñ7ˆÞà�cš!˜T˜'‘l QÑ&Ñ&¨¨T²1¨W©Ñ5ˆCØ˜šA˜t˜G™ qÑ(Ñ(¨3¨t²Q¨w©<Ñ7‰Dà�cš!˜T˜'‘lÑ" S¨ªq¨¡\°AÑ%5Ñ5ˆCØ˜šA˜t˜G™Ñ$ s¨4²¨7¡|°aÑ'7Ñ7ˆDä�gŠg�c ¨CÑ0ˆÜ�wŠw�t $¨cÑ2ˆä�gŠg�c ¨CÑ0ˆÜ�wŠw�t $¨cÑ2ˆð 	”—’˜˜d™
¨Ñ+Ñ+ˆà”—’�t˜SŸV™V D§J¡JÓ/Ó0Ñ0ˆØ”—’�s˜DŸG™G C§I¡IÓ.Ó/Ñ/‹ñ3 %ð6 
ŒT�$‹ZÑ€EØˆE�M€DØ”$�t“*Ñ€DØ”$�t˜D¢!˜G‘} tÑ+Ó,Ñ,€DØ
ˆc’!�T�'‰l˜a ™cÑ"Ñ
" S¨ªq¨¡\Ñ
1€CØ
ˆc’!�T�'‰l˜a ™cÑ"Ñ
" S¨ªq¨¡\Ñ
1€CØ�’A�t�G‘  !¡Ñ$Ñ$ s¨4²¨7¡|Ñ3€DØ�’A�t�G‘  !¡Ñ$Ñ$ s¨4²¨7¡|Ñ3€DÜ
�'Š'�#˜D¨Ñ
,€CÜ
�'Š'�#˜D¨Ñ
,€CØ	ŒR�VŠV�D˜3‘J QÑ'Ñ'€EØŒB�GŠG�D˜t¨3Ñ/Ñ/€DØŒB�GŠG�D˜t¨3Ñ/Ñ/€DØ�‰:˜˜d™
Ñ"€Dà”"—)’)˜D qÑ)Ñ)¬B¯FªF°4¸aÑ,@ÀÂqÀÑ,IÑIÈEÐRVÒXYÐRYÉNÑZ€Dð �’Q˜�W‘  1¡Ñ%Ñ%¨¨D²!¨G©Ñ4€DØ�’Q˜�W‘  1¡Ñ%Ñ%¨¨D²!¨G©Ñ4€DØ�’A�t�G‘  !¡Ñ$Ñ$ s¨4²¨7¡|Ñ3€DÜ‡H‚HˆT�4—7‘7˜4Ÿ:™:×0Ñ0Ó1¸Ò=Ü‡H‚HˆT�4—7‘7˜4Ÿ:™:×0Ñ0Ó1¸Ò=Ü‡H‚HˆT�4—7‘7˜4Ÿ:™:×0Ñ0Ó1¸Ó=r2   rW   rX   rY   r\   r-   Ú
chunk_sizer[   c                 ó  • UR                   u  pxpšUnUc  Ub  [        XE5      nUc  [        R                  " X‹5      O
[	        U5      n[        SU5      n[        R                  " X½5      nU R                  XxX›[        R                  S9nXÎU-  Xy-  4n[        U   " U UUUUUUUU	U
UUUS9  XÎXy-  4nU
S::  a;  [        [        R                  " U
5      S5      n[        U   " U UUUUUUUU	U
UUUS9  U$ [        S[        R                  " U
5      5      n[        R                  " U
U5      nU R                  UXxX�[        R                  S9nUXÎ-  Xy-  4n[        U   " U UUUUUUUUU	U
UUUUS9  XÎXy-  4n[        U   " UUUUUUU	UUUS9
  U$ )	Nr   rB   )rW   rX   rY   rZ   r-   r[   r\   r<   r>   r   r?   r:   r@   é   )rW   rX   rY   rZ   r-   r[   r\   r<   r>   r   r?   r:   r   r   )rW   rX   rY   rZ   r-   r[   r\   r<   rŒ   r>   r   r?   r:   r   r@   )
rZ   r•   r-   r[   r<   rŒ   r>   r?   r:   r’   )Úshaper   ÚtritonrS   Úlenr#   Ú	new_emptyÚtorchÚfloatr€   ÚmaxÚnext_power_of_2rŠ   r�   r™   )rW   rX   rY   r\   r-   ró   r[   rŒ   r<   r>   r   r?   r¦   r:   r@   rZ   Úgridr   r’   ÚA_intras                       r   Úchunk_gla_fwd_intra_gkr   b  sî  € ð —‘�J€Aˆ!Ø	€BàÑ Ñ!7Ü-¨jÓEˆØ)Ñ1Œ�Š�QÔ	´s¸=Ó7I€BÜ	ˆR�‹€BÜ	�Š�RÓ	€Bà	�‰�A˜!¤u§{¡{ˆÐ3€AØ�R‘˜™Ð€DÜ*¨4Ò0Ø
Ø
Ø
Ø
ØØ#ØØ
Ø
Ø
ØØØòð  �A‘Eˆ?€DàˆCƒxÜ”×'Ò'¨Ó*¨BÓ/ˆÜ.¨tÒ4ØØØØØ!Ø'ØØØØØØØò	
ðj €HôI �”f×,Ò,¨QÓ/Ó0ˆÜ�[Š[˜˜BÓˆØ—+‘+˜b !¨´U·[±[�+ÐAˆà�B‘G˜Q™UÐ#ˆÜ4°TÒ:ØØØØØ!Ø'ØØØØØØØØØò	
ð$ ˜™ˆˆÜ4°TÒ:ØØØ!Ø'ØØØØØØò	
ð €Hr2   r    rZ   r¡   Ústate_v_firstc
                 óš  ^^^^• / U R                   QUR                   S   PUR                   S   P7u  mp«nmmUnU	c  Ub  [        Xx5      n	Uc  [        R                  " X­5      O
[	        U	5      m[
        R                  " U5      nUUUU4S jn[        U   " S0 SU _SU_SU_SU_SU_S	U_S
U_SU	_SU_SU
_SU_ST_SU_ST_SU_SU_6  U$ )Nr4   éÿÿÿÿc                 óD   >• [         R                  " TU S   5      TTT-  4$ ©Nr"   ©r÷   rS   )ÚmetarŒ   r›   r¦   r   s    €€€€r   rþ   Ú chunk_gla_fwd_o_gk.<locals>.grid×  s"   ø€ œFŸKšK¨¨4°©:Ó6¸¸AÀ¹FÐCÐCr2   rW   r    rY   r¡   r¢   rZ   r-   r[   r\   r<   r>   r›   r   r   r?   rœ   r.   )rö   r   r÷   rS   rø   rú   Ú
zeros_liker´   )rW   r    rY   rZ   r¡   r\   r  r-   ró   r[   r<   r>   r   r?   r¢   rþ   rŒ   r›   r¦   r   s                   @@@@r   Úchunk_gla_fwd_o_gkr
  Â  s4  û€ ð :˜Ÿ™Ð9 !§'¡'¨!¡*Ð9¨a¯g©g°b©kÑ9Ñ€A€qˆQ��AØ	€BàÑ Ñ!7Ü-¨jÓEˆØ)Ñ1Œ�Š�QÔ	´s¸=Ó7I€Bô 	×Ò˜Ó€AßCÐCÜ˜4Ò ò Ù
ðá
ðñ ðñ ð	ñ
 ðñ ðñ ðñ $ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ  $ñ!ð$ €Hr2   rÔ   c                 óJ  • U R                   u  pgp‰Un
Uc  Ub  [        X45      nUc  [        R                  " Xz5      O
[	        U5      n[        S[        R                  " U	5      5      nU R                  XgXŠ[        R                  S9nX¶U-  4n[        U   " U UUUUUUUU	U
US9  U$ )Nr   rB   )r    rÔ   r·   r-   r[   r\   r<   r>   r   r?   r"   )rö   r   r÷   rS   rø   r#   rý   rù   rú   rû   rØ   )r    rÔ   r\   r-   ró   r[   rŒ   r<   r>   r   r?   r¦   r"   r·   rþ   s                  r   Úchunk_gla_bwd_dAr  í  s´   € ð —‘�J€Aˆ!Ø	€BàÑ Ñ!7Ü-¨jÓEˆØ)Ñ1Œ�Š�QÔ	´s¸=Ó7I€BÜ	ˆR”×'Ò'¨Ó*Ó	+€Bà	
�‰�Q˜1¬¯©ˆÐ	4€BØ�A‘ˆ;€DÜ˜DÒ!Ø
ØØØØ#ØØ
Ø
Ø
ØØòð €Ir2   rÞ   c	                 ó6  ^^^^• / U R                   QUR                   S   P7u  mn	mn
mUnUc  Ub  [        Xg5      nUc  [        R                  " X›5      O
[	        U5      m[
        R                  " U5      nUUUU4S jn[        U   " U UUUUUUUU	TU
TUUS9  U$ )Nr  c                 óD   >• [         R                  " TU S   5      TTT-  4$ r  r  )r  rŒ   r>   r¦   r   s    €€€€r   rþ   Úchunk_gla_bwd_dv.<locals>.grid"  ó"   ø€ œFŸKšK¨¨4°©:Ó6¸¸AÀ¹EÐBÐBr2   )rX   rY   rZ   rÔ   rÞ   rß   r-   r[   r<   r>   r   r   r?   rœ   )rö   r   r÷   rS   rø   rú   Ú
empty_likeræ   )rX   rY   rZ   rÔ   rÞ   r  r-   ró   r[   r<   r   r?   rß   rþ   rŒ   r>   r¦   r   s                 @@@@r   Úchunk_gla_bwd_dvr    s²   û€ ð +�Q—W‘WÐ*˜bŸh™h r™lÑ*�M€A€qˆ!ˆQ�Ø	€BàÑ Ñ!7Ü-¨jÓEˆØ)Ñ1Œ�Š�QÔ	´s¸=Ó7I€Bä	×	Ò	˜"Ó	€BßBÐBÜ˜DÒ!Ø
Ø
Ø
ØØØØØ#Ø
Ø
Ø
Ø
ØØ#òð  €Ir2   r·   c                 ó  • U R                   u  pxpšUn[        SU5      n[        S[        R                  " U
5      5      nUc  Ub  [	        XE5      nUc  [        R
                  " X‹5      O
[        U5      n[        R
                  " X¼5      n[        R
                  " X­5      n[        R                  " U [        R                  S9n[        R                  " U[        R                  S9nUU-  XçU	-  4n[        U   " U UUUUUUUUU	U
UUUUS9  UU4$ )Nr   r   rB   )rW   rX   rY   r·   r¸   r¹   r-   r[   r<   r>   r   r?   r:   r   r@   )rö   r#   r÷   rý   r   rS   rø   rú   r  rû   rÑ   )rW   rX   rY   r·   r-   ró   r[   rŒ   r<   r>   r   r?   r:   r   r¦   r@   r’   r¸   r¹   rþ   s                       r   Úchunk_gla_bwd_dqk_intrar  6  s  € ð —‘�J€Aˆ!Ø	€BÜ	ˆR�‹€BÜ	ˆR”×'Ò'¨Ó*Ó	+€BàÑ Ñ!7Ü-¨jÓEˆØ)Ñ1Œ�Š�QÔ	´s¸=Ó7I€BÜ	�Š�RÓ	€BÜ	�Š�QÓ	€Bä	×	Ò	˜!¤5§;¡;Ñ	/€BÜ	×	Ò	˜!¤5§;¡;Ñ	/€BØ�‰G�R˜Q™Ð€DÜ˜tÒ$Ø
Ø
Ø
ØØØØØ#Ø
Ø
Ø
ØØØØòð" ˆrˆ6€Mr2   r¸   r¹   c                 óú  ^^^^• / UR                   QUR                   S   P7u  mnmmnUnUc  Ub  [        X¼5      nUc  [        R                  " UU5      O
[	        U5      m[
        R                  " U5      n[
        R                  " U5      n[
        R                  " U5      nUUUU4S jn[        U   " S0 SU _SU_SU_SU_SU_SU_S	U_S
U_SU_SU_SU_SU_SU_SU_SU	_SU_ST_ST_SU_SU_SU
_6  UUU4$ )Nr  c                 óD   >• [         R                  " TU S   5      TTT-  4$ )Nr   r  )r  rŒ   r>   r   r¦   s    €€€€r   rþ   Ú chunk_gla_bwd_dqkg.<locals>.grid{  r  r2   rW   rX   r    rY   r¡   rÔ   rÞ   r¸   r¹   rë   rì   rí   r-   r[   r\   r<   r>   r   r   r?   rœ   r.   )rö   r   r÷   rS   rø   rú   r  rò   )rW   rX   r    r¡   rY   rÔ   rÞ   r¸   r¹   r\   r  r-   ró   r[   r<   r   r?   rí   rë   rì   rþ   rŒ   r>   r   r¦   s                        @@@@r   Úchunk_gla_bwd_dqkgr  a  s  û€ ð  *�Q—W‘WÐ)˜aŸg™g b™kÑ)�M€A€qˆ!ˆQ�Ø	€BàÑ Ñ!7Ü-¨jÓEˆØ)Ñ1Œ�Š�Q˜Ô	´s¸=Ó7I€Bä	×	Ò	˜!Ó	€BÜ
×
Ò
˜2Ó
€CÜ
×
Ò
˜2Ó
€CßBÐBÜ˜tÒ$ò Ù
ðá
ðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ $ðñ ðñ  ð!ñ" ð#ñ$ ð%ñ& ð'ñ( ð)ñ* $ñ+ð. ��Rˆ<Ðr2   Úg_cumsumÚinitial_stateÚoutput_final_stateÚreturnc                 óž   • Uc  [        UU
[        U	S9n[        UUS US UUU	U
SUS9u  pÍ[        U UUUU	U
US9n[	        U UUUUUU	U
UUS9
nXNXÍU4$ )N©r\   r-   F©rX   r    rY   ÚgkÚgvÚh0r  r-   ró   Ústates_in_fp32r  )rW   rX   rY   r\   r-   ró   r[   )
rW   r    rY   rZ   r¡   r\   r-   ró   r[   r  )r   r   r   r   r
  )rW   rX   r    rY   r  r\   r  r  r  r-   ró   r[   r¡   ÚhtrZ   r¢   s                   r   Úchunk_gla_fwdr%  –  s©   € ð ÑÜ%ØØÜØ!ñ	
ˆô Ø
Ø
Ø
ØØØØ-ØØØØ#ñ�E€Aô  	Ø
Ø
Ø
ØØØØ#ñ	€Aô 	Ø
Ø
Ø
Ø
Ø
ØØØØ#Ø#ñ	€Að ˜˜qÐ Ð r2   Údhtc                 ó.  • Uc  [        UU[        US9nUc  [        UUS US USUUSUS9u  p[        U UUS US U	UU
UUUSUS9u  nn[	        UUUU	UUUUUS9	n[        UU	UUUUS9n[        U UUUUUUS9u  nn[        U UUUUU	UUUUUUUUS	9u  nnnUUUUU4$ )
Nr  FTr  )rW   rX   r    rY   r   r!  rÔ   r"  r&  r\   r-   ró   r#  r  )	rX   rY   rZ   rÔ   rÞ   r-   ró   r[   r  )r    rÔ   r\   r-   ró   r[   )rW   rX   rY   r·   r-   ró   r[   )rW   rX   r    r¡   rY   rÔ   rÞ   r¸   r¹   r\   r-   ró   r[   r  )r   r   r   r   r  r  r  r  )rW   rX   r    rY   r  r\   r  r¡   rZ   rÔ   r&  r  r-   ró   r[   Ú_rÞ   Údh0rß   r·   r¸   r¹   rí   s                          r   Úchunk_gla_bwdr*  Ô  sG  € ð" ÑÜ%ØØÜØ!ñ	
ˆð 	�yÜØØØØØØØ$Ø!Ø!ØØ'ñ
‰ˆô Ø
Ø
Ø
Ø
ØØØØØØØØØØ#ñ�G€Bˆô" 
Ø
Ø
Ø
ØØØØØ#Ø#ñ

€Bô 
Ø
ØØØØØ#ñ
€Bô %Ø
Ø
Ø
ØØØØ#ñ�F€Bˆô $Ø
Ø
Ø
Ø
Ø
ØØØØØØØØ#Ø#ñ�J€BˆˆBð  ˆr�2�r˜3ÐÐr2   c                   óH   • \ rS rSr\\S 5       5       r\\S 5       5       rSrg)ÚChunkGLAFunctioni=  c                 ój  • [        S[        S[        R                  " UR                  S   5      5      5      nU	b  [        U	UU
S9nOS n[        UUUUS UUUU	UUUS9u  pÞnnnUR                  [        R                  :w  a  S nOS nU R                  XX4XÖXì5        X°l        XPl        X�l        X€l        UU4$ )Nr   r   r3   )Úcu_seqlens_cpu)rW   rX   r    rY   r  r\   r  r  r-   ró   r[   r  )r#   rü   r÷   rý   rö   r   r%  rC   rú   rû   Úsave_for_backwardró   r\   r-   r  )ÚctxrW   rX   r    rY   r\   r  r  r  r-   r.  ró   r[   r  rZ   r(  r$  r¢   s                     r   ÚforwardÚChunkGLAFunction.forward?  sÏ   € ô ˜œS ¤V×%;Ò%;¸A¿G¹GÀA¹JÓ%GÓHÓIˆ
ØÑ!Ü1ØØØ-ñ‰Mð !ˆMä -ØØØØØØØ'Ø1Ø!Ø!Ø'Ø'ñ!
Ñˆ�Q˜˜Að �7‰7”e—k‘kÓ!Ø‰HàˆAØ×Ñ˜a A¨(À1ÔTØ#ŒØŒ	Ø#ŒØ)ÔØ�"ˆuˆr2   c                 ó(  • U R                   u  p4pVpxpšU R                  U R                  U R                  pÜn[	        UUUUUUS U	UUUUUU
U R
                  S9u  pïnnnUR                  U5      UR                  U5      UR                  U5      US US S S S 4
$ )N)rW   rX   r    rY   r  r\   r¡   rZ   r  rÔ   r&  r-   ró   r[   r  )Úsaved_tensorsró   r\   r-   r*  r  rK   )r0  rÔ   r&  rW   rX   r    rY   r  r  rZ   r[   ró   r\   r-   r¸   r¹   rß   rí   r)  s                      r   ÚbackwardÚChunkGLAFunction.backwardr  s¬   € ð AD×@QÑ@QÑ=ˆˆa�H¨QØ(+¯©¸¿	¹	À3Ç>Á>˜:ˆ
Ü+ØØØØØØØØØ'ØØØ!Ø!Ø'Ø×+Ñ+ñ
Ñˆ��B˜ð" �u‰u�Q‹x˜Ÿ™˜q› 2§5¡5¨£8¨R°°s¸DÀ$ÈÈdÐRÐRr2   r.   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ústaticmethodr   r1  r5  Ú__static_attributes__r.   r2   r   r,  r,  =  s;   † àØñ/ó ó ð/ðb ØñSó ó óSr2   r,  r.  c
                 ó   • Ub|  U R                   S   S:w  a  [        SU R                   S    S35      eUbJ  UR                   S   [        U5      S-
  :w  a+  [        S[        U5      S-
   SUR                   S    S35      eUc  U R                   S	   S
-  nUb%  UR                  [        R
                  :X  d   S5       eU R                   UR                   s=:X  a  UR                   :X  d   S5       e   S5       eUR                   / U R                   SS QUR                   S	   P7:X  d   S5       e[        R                  U UUUUUUUUU	5
      u  p«X«4$ )aâ	  
Args:
    q (torch.Tensor):
        queries of shape `[B, T, H, K]`.
    k (torch.Tensor):
        keys of shape `[B, T, H, K]`.
    v (torch.Tensor):
        values of shape `[B, T, H, V]`.
    g (torch.Tensor):
        Forget gates of shape `[B, T, H, K]`.
    scale (Optional[float]):
        Scale factor for the attention scores.
        If not provided, it will default to `1 / sqrt(K)`. Default: `None`.
    initial_state (Optional[torch.Tensor]):
        Initial state of shape `[N, H, K, V]` (or `[N, H, V, K]` if `state_v_first=True`)
        for `N` input sequences.
        For equal-length input sequences, `N` equals the batch size `B`.
        Default: `None`.
    output_final_state (Optional[bool]):
        Whether to output the final state of shape `[N, H, K, V]`
        (or `[N, H, V, K]` if `state_v_first=True`). Default: `False`.
    state_v_first (Optional[bool]):
        Store the recurrent state in V-first `[V, K]` layout instead of the default `[K, V]`. Default: `False`.
    cu_seqlens (torch.LongTensor):
        Cumulative sequence lengths of shape `[N+1]` used for variable-length training,
        consistent with the FlashAttention API.

Returns:
    o (torch.Tensor):
        Outputs of shape `[B, T, H, V]`.
    final_state (torch.Tensor):
        Final state of shape `[N, H, K, V]` (or `[N, H, V, K]` if `state_v_first=True`)
        if `output_final_state=True` else `None`.

Examples::
    >>> import torch
    >>> import torch.nn.functional as F
    >>> from einops import rearrange
    >>> from fla.ops.gla import chunk_gla
    # inputs with equal lengths
    >>> B, T, H, K, V = 4, 2048, 4, 512, 512
    >>> q = torch.randn(B, T, H, K, device='cuda')
    >>> k = torch.randn(B, T, H, K, device='cuda')
    >>> v = torch.randn(B, T, H, V, device='cuda')
    >>> g = F.logsigmoid(torch.randn(B, T, H, K, device='cuda'))
    >>> h0 = torch.randn(B, H, K, V, device='cuda')
    >>> o, ht = chunk_gla(
        q, k, v, g,
        initial_state=h0,
        output_final_state=True
    )
    # for variable-length inputs, the batch size `B` is expected to be 1 and `cu_seqlens` is required
    >>> q, k, v, g = map(lambda x: rearrange(x, 'b t h d -> 1 (b t) h d'), (q, k, v, g))
    # for a batch with 4 sequences, `cu_seqlens` with 5 start/end positions are expected
    >>> cu_seqlens = q.new_tensor([0, 2048, 4096, 6144, 8192], dtype=torch.long)
    >>> o, ht = chunk_gla(
        q, k, v, g,
        initial_state=h0,
        output_final_state=True,
        cu_seqlens=cu_seqlens
    )
Nr   r3   z/The batch size is expected to be 1 rather than zQ when using `cu_seqlens`.Please flatten variable-length inputs before processing.z]The number of initial states is expected to be equal to the number of input sequences, i.e., z rather than Ú.r  g      à¿z!initial_state must be in float32.z!q, k, g must have the same shape.r7   z@v must be of shape (batch size, seq len, num of head, head dim).)rö   Ú
ValueErrorrø   rC   rú   rP   r,  Úapply)rW   rX   r    rY   r\   r  r  r  r-   r.  r¢   Úfinal_states               r   Ú	chunk_glarB  ‹  s€  € ðV ÑØ�7‰7�1‰:˜‹?ÜØAÀ!Ç'Á'È!Á*Àð NKð Lóð ð Ñ$¨×)<Ñ)<¸QÑ)?Ä3ÀzÃ?ÐUVÑCVÓ)VÜðÜ˜Z›¨1Ñ,Ð-¨]¸=×;NÑ;NÈqÑ;QÐ:RÐRSðUóð ð �}Ø—‘˜‘˜tÑ#ˆØÑ Ø×"Ñ"¤e§m¡mÓ3ÐXÐ5XÓXÐ3Ø�7‰7�a—g‘gÕ( §¡Ó(ÐMÐ*MÓMÑ(ÐMÐ*MÓMÐ(Ø�7‰7Ð1˜Ÿ™  ˜Ð1 Q§W¡W¨R¡[Ñ1Ó1ÐuÐ3uÓuÐ1Ü%×+Ñ+Ø	Ø	Ø	Ø	ØØØØØØó�N€Að ˆ>Ðr2   r.   )Nr   N)FNr   N)NFNr   N)NNFFNN):rú   r÷   Útriton.languageÚlanguagerI   Úfla.ops.common.chunk_hr   r   Úfla.ops.utilsr   Úfla.ops.utils.cacher   Úfla.ops.utils.constantr   Úfla.ops.utils.cumsumr   Úfla.ops.utils.opr	   Ú	fla.utilsr
   r   r   ÚBK_LISTÚBV_LISTr)   Ú
heuristicsÚConfigÚjitÚ	constexprr€   rŠ   r�   r™   r´   rÑ   rØ   ræ   rò   ÚTensorrû   Ú
LongTensorÚintr   Úboolr
  r  r  r  r  Útupler%  r*  ÚautogradÚFunctionr,  ÚcompilerÚdisablerB  )r   r8   r9   r"   s   0000r   Ú<module>r[     s©  ðó Û Ý ç <Ý /Ý 2Ý *Ý 3Ý !ß JÑ Já&×(Ñ(ˆ2ˆr‰(¨r°2¨h€Ù'¨×1Ñ1ˆ2ˆs‰)¸¸B°x€òð ×ÒØÑ<ðó ñ ð 	ñ õâˆBÜ%ˆIÜ#ˆJð 	�‰�t˜R�j¨IˆÓMñ $ñ 	Ná%ñ 	NÙóð 
ˆñ	ð ñ	ð ‡‚˜s˜eÑ$ðA8ð 
‡|�|ðA8ð 
‡|�|ðA8ð 	�‰ðA8ð 	�‰ðA8ð 	�‰ðA8ð 	�‰ðA8ð �|‰|óA8ó %ó	óðA8ðH ×ÒØÑ<ðó ñ ð ñ &ôâ%ˆIÜ ˆJð 	�‰�b IˆÓEá ñ 	FÙ%òð
 
ˆtˆñð ñð ‡‚˜s˜eÑ$ð<Tð 
‡|�|ð<Tð 
‡|�|ð<Tð 	�‰ð<Tð 	�‰ð<Tð 	�‰ð<Tð �|‰|ó<Tó %óóð<Tð~ ×ÒØÑ<ðó ñ ð ñ &óâ%ˆIð 	�‰�b IˆÓ.Ù%ñð 
ˆtˆñð ñð ‡‚˜s˜eÑ$ð@Tð 
‡|�|ð@Tð 
‡|�|ð@Tð 
‡|�|ð@Tð 	�‰ð@Tð 	�‰ð@Tð 	�‰ð@Tð 	�‰ð@Tð  �|‰|ó!@Tó %óóð@TðF ×ÒØÑ<ðó ñ ð 	à�Š�b AÑ&Ø�Š�b AÑ&Ø�Š�b AÑ&Ø�Š�b AÑ&ð	ð 
ˆñ	ð ñ	ð ‡‚˜s˜eÑ$ð%;ð 
‡|�|ð%;ð 
‡|�|ð%;ð 	�‰ð%;ð 	�‰ð%;ð 	�‰ð%;ð �|‰|ó%;ó %ó	óð%;ðP ×ÒØÑ<ðó ñ ð 
ñ öâˆBÜˆBÜ"ˆIÜ#ˆJð	 	�‰˜RÑ*°iˆÓWñ $ñ	 	Xñ #ñ 	Xáñ 	XÙôò 	&ñ
ð ñ
ð ‡‚˜s˜eÑ$ðW;ð 
‡|�|ðW;ð 	�‰ðW;ð 
‡|�|ðW;ð 
‡|�|ðW;ð 	�‰ðW;ð  	�‰ð!W;ð" 	�‰ð#W;ð$ —<‘<ð%W;ð& �|‰|ó'W;ó %ó
óðW;ðt ×ÒØÑ<ðó ñ ð ñ &ôâ%ˆIÜ#ˆJð 	�‰�b IˆÓEá#ñ 	FÙ%òò
 	ñð ñð ‡‚˜s˜eÑ$ð@>ð 
‡|�|ð@>ð 
‡|�|ð@>ð 	�‰ð@>ð 	�‰ð@>ð 	�‰ð@>ð 	�‰ð@>ð  �|‰|ó!@>ó %óóð@>ðF ×ÒØÑ<ðó ñ ð ñ &ôâ%ˆIÜ#ˆJð 	�‰�b IˆÓEá#ñ 	FÙ%òð
 
ˆtˆñð ñð ‡‚˜s˜eÑ$ð+=ð 
‡|�|ð+=ð 
‡|�|ð+=ð 	�‰ð+=ð 	�‰ð+=ð �|‰|ó+=ó %óóð+=ð\ ×ÒØÑ<ðó ñ ð ñ öâˆBÜˆBÜ"ˆIÜ#ˆJð	 	�‰˜RÑ*°iˆÓWñ $ñ	 	Xñ #ñ 	Xáñ 	XÙôò 	*Ø*Ð,BÐCñð ñð ‡‚˜s˜eÑ$ðJ>ð 
‡|�|ðJ>ð 
‡|�|ðJ>ð 
‡|�|ðJ>ð 	�‰ðJ>ð 	�‰ðJ>ð 	�‰ðJ>ð  �|‰|ð!J>ð" —<‘<ó#J>ó %óóð J>ðZ ×ÒØÑ<ðó ñ ð ñ öâˆBÜˆBÜ"ˆIÜ#ˆJð	 	�‰˜RÑ*°iˆÓWñ $ñ	 	Xñ #ñ 	Xáñ 	XÙôò 	*Ø*Ð,BÐCñð ñð ‡‚˜s˜eÑ$ðt>ð" 
‡|�|ð#t>ð$ 
‡|�|ð%t>ð& 
‡|�|ð't>ð( 	�‰ð)t>ð* 	�‰ð+t>ð, 	�‰ð-t>ð. �|‰|ð/t>ð0 —<‘<ó1t>ó %óóð t>ðx +/ØØ-1ñ]Ø‡|�|ð]à‡|�|ð]ð ‡|�|ð]ð ð	]ð
 × Ñ  4Ñ'ð]ð ð]ð ×#Ñ# dÑ*õ]ðN  Ø*.ØØ-1ñ(Ø‡|�|ð(à‡|�|ð(ð ‡|�|ð(ð ‡|�|ð	(ð
 ‡|�|ð(ð ð(ð ð(ð × Ñ  4Ñ'ð(ð ð(ð ×#Ñ# dÑ*õ(ð^ +/ØØ-1ñØ‡|�|ðà�‰ðð ðð × Ñ  4Ñ'ð	ð
 ðð ×#Ñ# dÑ*õðP  Ø*.ØØ-1ñ$Ø‡|�|ð$à‡|�|ð$ð ‡|�|ð$ð 	�‰ð	$ð
 	�‰ð$ð ð$ð × Ñ  4Ñ'ð$ð ð$ð ×#Ñ# dÑ*õ$ðX +/ØØ-1ñ(Ø‡|�|ð(à‡|�|ð(ð ‡|�|ð(ð 	�‰ð	(ð
 × Ñ  4Ñ'ð(ð ð(ð ×#Ñ# dÑ*õ(ðj ØØ*.ØØ-1ñ2Ø‡|�|ð2à‡|�|ð2ð ‡|�|ð2ð ‡|�|ð	2ð
 ‡|�|ð2ð 	�‰ð2ð 	�‰ð2ð 	�‰ð2ð 	�‰ð2ð �4‰<ð2ð ð2ð × Ñ  4Ñ'ð2ð ð2ð ×#Ñ# dÑ*õ2ð|  Ø*.ØØ-1ñ;!Ø‡|�|ð;!à‡|�|ð;!ð ‡|�|ð;!ð ‡|�|ð	;!ð
 �l‰l˜TÑ!ð;!ð ð;!ð —<‘<ð;!ð ð;!ð ð;!ð × Ñ  4Ñ'ð;!ð ð;!ð ×#Ñ# dÑ*ð;!ð ˆ5�<‰<˜Ÿ™ u§|¡|Ð3Ñ4õ;!ðT  Ø*.ØØ-1ñfØ‡|�|ðfà‡|�|ðfð ‡|�|ðfð ‡|�|ð	fð
 �l‰l˜TÑ!ðfð ðfð —<‘<ðfð ‡|�|ðfð ‡|�|ðfð 	�‰ðfð 
�‰ðfð ðfð × Ñ  4Ñ'ðfð ðfð ×#Ñ# dÑ*õfôRKS�u—~‘~×.Ñ.ô KSð\ ‡�×Ñð Ø"&Ø$ØØ*.Ø.2ñgØ‡|�|ðgà‡|�|ðgð ‡|�|ðgð ‡|�|ð	gð
 �‰:ðgð —<‘<ðgð ðgð ðgð × Ñ  4Ñ'ðgð ×$Ñ$ tÑ+ðgð ˆ5�<‰<˜Ÿ™Ð%Ñ&ôgó ñgùôC+ùódùòXùõJùóRùó`ùõvùõzs0   Â0pÅ$pÈpÎ:p#Ò$p+Õ$p1×,:p7Û:p?