+
    UV-j¯  ã                   óP  € ^ RI HtHtHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RI
Ht ^ RI
Ht ^ RI
Ht ^ RI
Ht ^ RI
Ht ^ R	I
HtHtHt  ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]4      tRR R llt ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )é    )ÚAnyÚListÚOptionalÚTupleN)ÚArraysCache)ÚBatchKVCache)ÚBatchRotatingKVCache)Ú	CacheList)ÚChunkedKVCache)ÚQuantizedKVCache)ÚKVCacheÚRotatingKVCacheÚ
_BaseCachec                   ól  a a€ ] tR t^t oRtRV3R lV 3R lllt]RV3R lR ll4       tRV3R lR lltV3R lR	 lt	V3R
 lR lt
V3R lR ltV3R lR ltV3R lV 3R lltR tR tRV3R lV 3R lllt]R 4       t]P&                  R 4       t]R 4       t]P&                  R 4       tRtVtV ;t# )ÚBufferedRotatingKVCachezITemporal sliding-window cache with rollback slack for speculative blocks.c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[ /# )é   Úmax_sizeÚkeepÚbuffer_size©Úint)ÚformatÚ__classdict__s   "€Úe/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/cache.pyÚ__annotate__Ú$BufferedRotatingKVCache.__annotate__   s"   ø€ ÷  ñ  ¡ð  ©Cð  Á#ñ  ó    c                ój   <€ \         SV `  WR 7       \        ^ \        V4      4      V n        ^ V n        R# )©r   r   N)ÚsuperÚ__init__Úmaxr   r   Ústart_position)Úselfr   r   r   Ú	__class__s   &&&&€r   r"   Ú BufferedRotatingKVCache.__init__   s/   ø€ Ü‰Ñ (ÐÔ6Ü˜q¤# kÓ"2Ó3ˆÔØˆÖr   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   Úotherr   Úreturnr   )r   r   )r   r   s   "€r   r   r      s%   ø€ ÷ ñ Ù#ðÙ25ðà	"ñr   c                óÐ  € V ! VP                   VP                  VR 7      p\        VP                  4      Vn        VP                  f   V# VP                  VP                  4      pVP                  VP                  4      p\        \        VP                  ^,          4      VP                   4      pV\        VP                  ^,          4      8  d   VRV) R1R3,          pVRV) R1R3,          pVP                  V,
          Vn	        Wcn
        VP                  V4      p. VP                  R,          OVNVP                  R,          N5p. VP                  R,          OVNVP                  R,          N5p	\        P                  ! W„P                  R7      Vn        \        P                  ! W•P                  R7      Vn        WCP                  RRV1R3&   WSP                  RRV1R3&   V# ))r   N.ºNNNºNr   N©Údtypeéÿÿÿÿ)r   r   r   ÚoffsetÚkeysÚ_temporal_orderÚvaluesÚminÚshaper$   Ú_idxÚ_capacity_forÚmxÚzerosr/   )
Úclsr)   r   Úcacher2   r4   r   ÚcapacityÚk_shapeÚv_shapes
   &&&       r   Ú
from_cacheÚ"BufferedRotatingKVCache.from_cache   s„  € ñ �E—N‘N E§J¡J¸KÔHˆÜ˜5Ÿ<™<Ó(ˆŒØ�:‰:ÒØˆLà×$Ñ$ U§Z¡ZÓ0ˆØ×&Ñ& u§|¡|Ó4ˆÜ”3�t—z‘z !•}Ó% u§~¡~Ó6ˆØ”#�d—j‘j •mÓ$Ô$Ø˜˜d˜U™V Q˜Õ'ˆDØ˜C $ ¡¨˜NÕ+ˆFà$Ÿ|™|¨dÕ2ˆÔØŒ
Ø×&Ñ& tÓ,ˆØ=�D—J‘J˜r•NÐ= HÐ=¨d¯j©j¸­nÑ=ˆØA�F—L‘L Õ$ÐA hÐA°·±¸RÕ0@ÑAˆÜ—X’X˜g¯Z©ZÔ8ˆŒ
Ü—x’x ¯|©|Ô<ˆŒØ$(�
‰
�3˜˜˜˜q�=Ñ!Ø&,�‰�S˜%˜4˜% �]Ñ#Øˆr   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r   Úincomingr*   r   )r   r   s   "€r   r   r   1   s   ø€ ÷ ?ñ ?¡Sð ?±ñ ?r   c                óP   € V P                   \        V P                  V4      ,           # ©N)r   r#   r   )r%   rD   s   &&r   Ú_target_sizeÚ$BufferedRotatingKVCache._target_size1   s   € Ø�}‰}œs 4×#3Ñ#3°XÓ>Õ>Ð>r   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r   Úneededr*   r   )r   r   s   "€r   r   r   4   s   ø€ ÷ Cñ C¡Cð C©Cñ Cr   c                óª   € \        WP                  4       4      pW P                  ,           ^,
          V P                  ,          V P                  ,          # ©é   )r#   rG   Ústep)r%   rK   Útargets   && r   r8   Ú%BufferedRotatingKVCache._capacity_for4   s9   € Ü�V×.Ñ.Ó0Ó1ˆØŸ)™)Õ# aÕ'¨D¯I©IÕ5¸¿¹ÕBÐBr   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rC   r   )r   r   s   "€r   r   r   8   s   ø€ ÷ Jñ J¡cð J©cñ Jr   c                ó  € V P                   V,           pV P                  V4      pW#8:  d   ^ # \        ^ V P                  V P                  ,
          ^,           4      p\        \        ^ W@P                  ,
          4      V P                   4      # ©r   )r7   rG   r#   r1   r   r5   r$   )r%   rD   rK   Útarget_sizeÚtarget_starts   &&   r   Ú_planned_dropÚ%BufferedRotatingKVCache._planned_drop8   sh   € Ø—‘˜XÕ%ˆØ×'Ñ'¨Ó1ˆØÔ ÙÜ˜1˜dŸk™k¨D¯M©MÕ9¸AÕ=Ó>ˆÜ”3�q˜,×)<Ñ)<Õ<Ó=¸t¿y¹yÓIÐIr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Údropr*   Nr   )r   r   s   "€r   r   r   @   s   ø€ ÷ ñ ™Sð  Tñ r   c                óž  € V^ 8:  d   R# V P                   V,
          pV P                  RWP                   1R3,          pV P                  RWP                   1R3,          pV P                  P                  ^,          p\        P
                  ! . VP                  R,          OVNVP                  R,          N5VP                  4      p\        P
                  ! . VP                  R,          OVNVP                  R,          N5VP                  4      pW6RRV1R3&   WGRRV1R3&   W`n        Wpn        V ;P                  V,          un        W n         R# )r   N.r,   r-   r0   )r7   r2   r4   r6   r9   r:   r/   r$   )r%   rZ   r   r2   r4   r=   Únew_keysÚ
new_valuess   &&      r   Ú_compactÚ BufferedRotatingKVCache._compact@   s  € Ø�1Œ9ÙØ�y‰y˜4ÕˆØ�y‰y˜˜d§Y¡YÐ.°Ð1Õ2ˆØ—‘˜S $¯©Ð"2°AÐ5Õ6ˆØ—9‘9—?‘? 1Õ%ˆÜ—8’8ÐG˜dŸj™j¨�nÐG¨hÐG¸¿
¹
À2½ÑGÈÏÉÓTˆÜ—X’XØ;ˆf�l‰l˜2ÕÐ; Ð;¨&¯,©,°rÕ*:Ñ;¸V¿\¹\ó
ˆ
ð #'��e�t�e˜Q�ÑØ$*�3˜˜˜˜q�=Ñ!ØŒ	Ø ŒØ×Ò˜tÕ#ÕØŽ	r   c                óX   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RR/# ©r   r2   r4   rK   r*   N©r9   Úarrayr   )r   r   s   "€r   r   r   R   s2   ø€ ÷ !ñ !¡R§X¡Xð !±r·x±xð !Éð !ÐQUñ !r   c                óà  € V P                   e$   W0P                   P                  ^,          8:  d   R # V P                  V4      p. VP                  R,          OVNVP                  R,          N5p. VP                  R,          OVNVP                  R,          N5p\        P                  ! WQP
                  R7      p\        P                  ! WbP
                  R7      pV P                   ez   V P                  ^ 8”  di   V P                   RR V P                  1R3,          VRR V P                  1R3&   V P                  RR V P                  1R3,          VRR V P                  1R3&   Wpn         W€n        R # )Nr-   r.   .r,   r0   )r2   r6   r8   r9   r:   r/   r7   r4   )	r%   r2   r4   rK   r=   r>   r?   r\   r]   s	   &&&&     r   Ú_ensure_capacityÚ(BufferedRotatingKVCache._ensure_capacityR   s  € Ø�9‰9Ò  V¯y©y¯©¸qÕ/AÔ%AÙà×%Ñ% fÓ-ˆØ=�D—J‘J˜r•NÐ= HÐ=¨d¯j©j¸­nÑ=ˆØA�F—L‘L Õ$ÐA hÐA°·±¸RÕ0@ÑAˆÜ—8’8˜G¯:©:Ô6ˆÜ—X’X˜g¯\©\Ô:ˆ
Ø�9‰9Ò  T§Y¡Y°¤]Ø,0¯I©I°c¸;¸T¿Y¹Y¸;ÈÐ6IÕ,JˆH�S˜+˜DŸI™I˜+ qÐ(Ñ)Ø.2¯k©k¸#¸{ÀÇÁ¸{ÈAÐ:MÕ.NˆJ�s˜K˜dŸi™i˜K¨Ð*Ñ+ØŒ	Ø Žr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r2   r4   ©r9   rc   )r   r   s   "€r   r   r   a   s'   ø€ ÷ Pñ P¡R§X¡Xð P±r·x±xñ Pr   c                óF  <€ V P                   '       d   \        SV `	  W4      # \        VP                  ^,          4      pV P                  V4      pV P                  V4       V P                  V,           pV P                  WV4       WP                  RV P                  V1R3&   W P                  RV P                  V1R3&   WPn        V ;P                  V,          un        V P                  RRV P                  1R3,          V P                  RRV P                  1R3,          3# )r   .r,   N)r   r!   Úupdate_and_fetchr   r6   rW   r^   r7   re   r2   r4   r1   )r%   r2   r4   rD   rZ   rK   r&   s   &&&   €r   rk   Ú(BufferedRotatingKVCache.update_and_fetcha   sî   ø€ Ø�9�9ˆ9Ü‘7Ñ+¨DÓ9Ð9ä�t—z‘z !•}Ó%ˆØ×!Ñ! (Ó+ˆØ�‰�dÔØ—‘˜XÕ%ˆØ×Ñ˜d¨FÔ3à04�	‰	�#�t—y‘y 6Ð)¨1Ð,Ñ-Ø28�‰�C˜Ÿ™ VÐ+¨QÐ.Ñ/ØŒ	Ø�Š�xÕ�Ø�y‰y˜˜k §	¡	˜k¨1Ð,Õ-¨t¯{©{¸3ÀÀ$Ç)Á)ÀÈQÐ;NÕ/OÐOÐOr   c                ó¾   € \        \        V4      V P                  V P                  4      pV ;P                  V,          un        V ;P                  V,          un        V# rF   )r5   r   r7   r1   ©r%   Úns   &&r   ÚtrimÚBufferedRotatingKVCache.trimq   s<   € Ü”�A“˜Ÿ	™	 4§;¡;Ó/ˆØ�Š�qÕ�Ø�	Š	�Q��	Øˆr   c                ó   € R # ©T© ©r%   s   &r   Úis_trimmableÚ$BufferedRotatingKVCache.is_trimmablew   ó   € Ùr   c                ó<   <€ V ^8„  d   QhRS[ RS[S[ ,          RS[/# )r   ÚNÚwindow_sizeÚreturn_array)r   r   Úbool)r   r   s   "€r   r   r   z   s)   ø€ ÷ ñ ÙðÙ#+©C¥=ðÙGKñr   c                ó  <€ V P                   '       d   \        SV `	  WVR 7      # T;'       g    V P                  pV P	                  V4      pV P
                  V,           pV P                  V,           pWe,
          pV^8X  d   Wr8:  d   V'       g   R# \        P                  ! V P                  V4      R,          p\        P                  ! WV4      R,          p	W‰8¬  W‰V,           8  ,          p
V^8”  d   Wr8:  d   V'       g   R# V
# ))r{   r|   NÚcausal©r,   N)Nr,   )	r   r!   Ú	make_maskr   rW   r$   r1   r9   Úarange)r%   rz   r{   r|   rZ   ÚstartÚendÚkey_lenÚq_idxÚk_idxÚmaskr&   s   &&&&       €r   r�   Ú!BufferedRotatingKVCache.make_maskz   sØ   ø€ ð �9�9ˆ9Ü‘7Ñ$Ø¸ð %ó ð ð "×2Ð2 T§]¡]ˆØ×!Ñ! !Ó$ˆØ×#Ñ# dÕ*ˆØ�k‰k˜A�oˆØ•+ˆØ�Œ6�gÔ,·\Ùä—	’	˜$Ÿ+™+ sÓ+¨GÕ4ˆÜ—	’	˜%Ó% gÕ.ˆØ‘ 5°;Õ+>Ñ#>Õ?ˆØˆqŒ5�WÔ+·LÙØˆr   c                óª   € V P                   f   R# V P                   RR V P                  1R3,          V P                  RR V P                  1R3,          3# ©N.r,   ©NN)r2   r7   r4   ru   s   &r   ÚstateÚBufferedRotatingKVCache.state‘   sM   € à�9‰9ÒØÐØ�y‰y˜˜k §	¡	˜k¨1Ð,Õ-¨t¯{©{¸3ÀÀ$Ç)Á)ÀÈQÐ;NÕ/OÐOÐOr   c                ó  € Vw  V n         V n        V P                   f   ^ M%\        V P                   P                  ^,          4      V n        \        ^ \        V P                  4      V P                  ,
          4      V n        R # rF   )r2   r4   r   r6   r7   r#   r1   r$   ©r%   Úvs   &&r   r�   rŽ   —   sU   € à!"ÑˆŒ	�4”;ØŸ™Ò*‘A´°D·I±I·O±OÀAÕ4FÓ0GˆŒ	Ü! !¤S¨¯©Ó%5¸¿	¹	Õ%AÓBˆÖr   c                ó¸   € \        \        \        V P                  V P                  V P
                  V P                  V P                  V P                  34      4      # rF   )	ÚtupleÚmapÚstrr   r   r1   r7   r$   r   ru   s   &r   Ú
meta_stateÚ"BufferedRotatingKVCache.meta_state�   sM   € äÜÜà—I‘IØ—M‘MØ—K‘KØ—I‘IØ×'Ñ'Ø×$Ñ$ðó
ó
ð 	
r   c                ó
  € \        \        \        V4      4      pVR ,          w  V n        V n        V n        V n        \        V4      ^8”  d
   V^,          M^ V n        \        V4      ^8”  d   V^,          V n	        R# ^@V n	        R# ):Né   NN)
Úlistr”   r   r   r   r1   r7   Úlenr$   r   )r%   r‘   Úvalss   && r   r–   r—   ­   sa   € ä”Cœ˜Q“KÓ ˆØ;?À½8Ñ8ˆŒ	�4”= $¤+¨t¬yÜ),¨T«°Q¬˜d 1žg¸AˆÔÜ&)¨$£i°!¤m˜4 �7ˆÖ¸ˆÖr   )r7   r   r   r2   r   r1   r$   r4   )r   é@   )r�   rT   )NF)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   Úclassmethodr@   rG   r8   rW   r^   re   rk   rp   rv   r�   Úpropertyr�   Úsetterr–   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r&   r   s   @@r   r   r      sä   ù‡ € ÙS÷ õ  ð
 ÷ñ ó ð÷4?ò ?÷Cð C÷Jð J÷ð ÷$!ð !÷Pó Pò ò÷õ ð. ñPó ðPð
 ‡\�\ñCó ðCð
 ñ
ó ð
ð ×Ññ<ó ÷<ð <r   r   c                   ó  a € ] tR t^µt o RtRtRV 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 lt	]
R 4       t]P                  R 4       t]
R 4       t]P                  R 4       tR tR tR tRV 3R lR lltRtV tR# )ÚBatchQuantizedKVCacheaD  Batch-aware quantized KV cache for continuous batching.

Mirrors ``BatchKVCache`` but stores keys/values in quantized form
(packed uint32 + scales + biases), matching the format produced by
``mx.quantize``.  Supports ``extend()`` and ``filter()`` so that
``Batch.extend`` / ``Batch.filter`` work during continuous-batching.
é   c                ó<   <€ V ^8„  d   QhRS[ S[,          RS[RS[/# )r   Úleft_paddingÚ
group_sizeÚbits)r   r   )r   r   s   "€r   r   Ú"BatchQuantizedKVCache.__annotate__À   s-   ø€ ÷ ñ á™3•iðñ ðñ ñ	r   c                óÞ   € R V n         R V n        \        P                  ! V4      V n        \        P                  ! V Uu. uF  qD) NK  	  up4      V n        ^ V n        W n        W0n        R # u upi rF   )	r2   r4   r9   rc   r­   r1   r7   r®   r¯   )r%   r­   r®   r¯   Úlps   &&&& r   r"   ÚBatchQuantizedKVCache.__init__À   sX   € ð ˆŒ	ØˆŒÜŸHšH \Ó2ˆÔÜ—h’h©lÓ;©l¨£©lÑ;Ó<ˆŒØˆŒ	Ø$ŒØŽ	ùò  <s   ¾A*c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rh   ri   )r   r   s   "€r   r   r°   Î   s#   ø€ ÷ 4
ñ 4
¡R§X¡Xð 4
±r·x±xñ 4
r   c                óî  a aaaaa€ SP                   w  r4rVVP                   R,          pS P                  o^\        P                  P                  ,          S P
                  ,          oS P                  e2   SV,           S P                  ^ ,          P                   R,          8”  Ed¾   S P                  V,           ^,
          S P                  ,          S P                  ,          pW4V3oVVV V3R lp	V3R loS P                  EeF   SS P                  ,          ^ 8w  d—   \        ;QJ d!    . V3R lS P                   4       F  NK  	  5M! V3R lS P                   4       4      S n        \        ;QJ d!    . V3R lS P                   4       F  NK  	  5M! V3R lS P                   4       4      S n	        \        ;QJ d!    . V3R lS P                   4       F  NK  	  5M! V3R lS P                   4       4      S n        \        ;QJ d!    . V3R lS P                   4       F  NK  	  5M! V3R lS P                   4       4      S n	        MV	! V4      S n        V	! V4      S n	        S ;P                  V,          un
        S ;P                  V,          un        \        P                  ! SS P                  S P
                  R7      p
\        P                  ! VS P                  S P
                  R7      p\        \        S P                  4      4       FY  pW¬,          S P                  V,          RSS P                  1R	3&   W¼,          S P                  V,          RSS P                  1R	3&   K[  	  \        ;QJ d!    . V 3R
 lS P                   4       F  NK  	  5M! V 3R
 lS P                   4       4      \        ;QJ d"    . V 3R lS P                   4       F  NK  	  53# ! V 3R lS P                   4       4      3# )zÇQuantize incoming keys/values and append to the cache.

Args:
    keys:   float [B, H, S, D_k]
    values: float [B, H, S, D_v]

Returns:
    Quantized (keys_tuple, values_tuple) sliced to ``_idx``.
c                 óF  <€ \         P                  ! . SOV S,          N5\         P                  R 7      \         P                  ! . SOV SP                  ,          N5SP                  R 7      \         P                  ! . SOV SP                  ,          N5SP                  R 7      3# ©r.   )r9   r:   Úuint32r®   r/   )ÚdimÚ
el_per_intr2   r%   r6   s   &€€€€r   Ú_initÚ5BatchQuantizedKVCache.update_and_fetch.<locals>._initá   s{   ø€ ä—H’HÐ8˜uÐ8 c¨ZÕ&7Ñ8ÄÇ	Á	ÔJÜ—H’HÐ=˜uÐ= c¨T¯_©_Õ&<Ñ=ÀTÇZÁZÔPÜ—H’HÐ=˜uÐ= c¨T¯_©_Õ&<Ñ=ÀTÇZÁZÔPðð r   c                 ó¦   <€ \         P                  ! . SOV P                  R,          N5V P                  R7      p\         P                  ! W.RR7      # )rN   r.   ©Úaxisr0   éþÿÿÿ)r9   r:   r6   r/   Úconcatenate)ÚxÚnew_xr6   s   & €r   Ú_expandÚ7BatchQuantizedKVCache.update_and_fetch.<locals>._expandè   s=   ø€ ÜŸšÐ!6 5Ð!6¨!¯'©'°"­+Ñ!6¸a¿g¹gÔF�Ü—~’~ q j°rÔ:Ð:r   c              3   ó>   <"  € T F  qR RS1R3,          x € K  	  R# 5i©.Nr,   rt   )Ú.0ÚkÚprevs   & €r   Ú	<genexpr>Ú9BatchQuantizedKVCache.update_and_fetch.<locals>.<genexpr>î   s!   øé € Ð%JÁ	¸1¨¨U¨d¨U°A¨×&6Ò&6Ã	ùó   ƒc              3   ó>   <"  € T F  qR RS1R3,          x € K  	  R# 5irÇ   rt   )rÈ   r‘   rÊ   s   & €r   rË   rÌ   ï   s!   øé € Ð'NÁ+¸Q¨#¨u°¨u°a¨-×(8Ò(8Ã+ùrÍ   c              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5irF   rt   )rÈ   rÉ   rÄ   s   & €r   rË   rÌ   ð   s   øé € Ð!@±i°¡'¨!§* *³iùó   ƒc              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5irF   rt   )rÈ   r‘   rÄ   s   & €r   rË   rÌ   ñ   s   øé € Ð#D¹°1¡G¨A§J J»ùrÐ   )r®   r¯   .r,   c              3   óR   <"  € T F  qR RSP                   1R3,          x € K  	  R# 5irÇ   ©r7   )rÈ   rÉ   r%   s   & €r   rË   rÌ      ó&   øé € Ð<±)¨Q�C˜˜4Ÿ9™9˜ aÐ'×(Ò(³)ùó   ƒ$'c              3   óR   <"  € T F  qR RSP                   1R3,          x € K  	  R# 5irÇ   rÓ   )rÈ   r‘   r%   s   & €r   rË   rÌ     ó&   øé € Ð>±+¨Q�C˜˜4Ÿ9™9˜ aÐ'×(Ò(³+ùrÕ   r0   rÀ   )r6   r7   r9   r¸   Úsizer¯   r2   rO   r“   r4   r1   Úquantizer®   Úranger›   )r%   r2   r4   ÚBÚ
n_kv_headsÚ	num_stepsÚ
k_head_dimÚ
v_head_dimÚ	new_stepsr»   Úq_keysÚq_valuesÚirÄ   rº   rÊ   r6   s   ff&          @@@@r   rk   Ú&BatchQuantizedKVCache.update_and_fetchÎ   s�  ý€ ð 04¯z©zÑ,ˆ�yØ—\‘\ "Õ%ˆ
Ø�y‰yˆØœŸ™Ÿ™Õ'¨4¯9©9Õ4ˆ
à�9‰9Ò ¨	Õ!1°T·Y±Y¸qµ\×5GÑ5GÈÕ5KÕ KØŸ™ YÕ.°Õ2°t·y±yÕ@À4Ç9Á9ÕLˆIØ IÐ.ˆE÷ð õ;ð �y‰yÓ$Ø˜$Ÿ)™)Õ# qÔ(ß %¤Ô%JÀÇ	Â	Ó%J§¡Ô%JÀÇ	Â	Ó%JÓ J�D”Iß"'¤%Ô'NÀ$Ç+Â+Ó'N§%¡%Ô'NÀ$Ç+Â+Ó'NÓ"N�D”Kß!œEÔ!@°d·i²iÓ!@ŸE™EÔ!@°d·i²iÓ!@Ó@�”	ß#œeÔ#D¸¿ºÓ#DŸe™eÔ#D¸¿ºÓ#DÓD�•á! *Ó-�”	Ù# JÓ/�”à�Š�yÕ �Ø�	Š	�YÕ�	ä—’˜T¨d¯o©oÀDÇIÁIÔNˆÜ—;’;˜v°$·/±/ÈÏ	É	ÔRˆÜ”s˜4Ÿ9™9“~Ö&ˆAØ5;µYˆD�I‰I�a�L˜˜d T§Y¡YÐ.°Ð1Ñ2Ø7?µ{ˆD�K‰K˜�N˜3  t§y¡yÐ 0°!Ð3Ó4ñ '÷
 ŒEÔ<°$·)²)Ó<�E‰EÔ<°$·)²)Ó<Ó<ßŒEÔ>°$·+²+Ó>�Eð
ð 	
àÔ>°$·+²+Ó>Ó>ð
ð 	
r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   Úbatch_indicesri   )r   r   s   "€r   r   r°     s   ø€ ÷ (ñ (¡B§H¡Hñ (r   c                óÀ  aa€ V P                   e—   \        ;QJ d!    . V3R lV P                    4       F  NK  	  5M! V3R lV P                    4       4      V n         \        ;QJ d!    . V3R lV P                   4       F  NK  	  5M! V3R lV P                   4       4      V n        V P                  S,          V n        V P                  S,          V n        V P                  P                  4       P                  4       oS^ 8”  dÙ   V P                   e—   \        ;QJ d!    . V3R lV P                    4       F  NK  	  5M! V3R lV P                    4       4      V n         \        ;QJ d!    . V3R lV P                   4       F  NK  	  5M! V3R lV P                   4       4      V n        V ;P                  S,          un        V ;P                  S,          un        R# R# )z+Keep only the sequences at *batch_indices*.Nc              3   ó4   <"  € T F  qS,          x € K  	  R # 5irF   rt   )rÈ   rÉ   ræ   s   & €r   rË   Ú/BatchQuantizedKVCache.filter.<locals>.<genexpr>  s   øé € ÐB¹	°1 ×.Ò.»	ùrÐ   c              3   ó4   <"  € T F  qS,          x € K  	  R # 5irF   rt   )rÈ   r‘   ræ   s   & €r   rË   ré     s   øé € ÐF¹+°Q -× 0Ò 0»+ùrÐ   c              3   ó>   <"  € T F  qR SR1R3,          x € K  	  R# 5irÇ   rt   )rÈ   rÉ   Úmin_lps   & €r   rË   ré     s   øé € Ð!H¹i¸ C¨©°! O×"4Ò"4»iùrÍ   c              3   ó>   <"  € T F  qR SR1R3,          x € K  	  R# 5irÇ   rt   )rÈ   r‘   rì   s   & €r   rË   ré     s   øé € Ð#LÁ¸1 c¨6©7°A o×$6Ò$6ÃùrÍ   )r2   r“   r4   r1   r­   r5   Úitemr7   )r%   ræ   rì   s   &f@r   ÚfilterÚBatchQuantizedKVCache.filter  s"  ù€ à�9‰9Ò ßœÔB¸¿	º	ÓBŸ™ÔB¸¿	º	ÓBÓBˆDŒIßœ%ÔF¸$¿+º+ÓFŸ%™%ÔF¸$¿+º+ÓFÓFˆDŒKØ—k‘k -Õ0ˆŒØ ×-Ñ-¨mÕ<ˆÔà×"Ñ"×&Ñ&Ó(×-Ñ-Ó/ˆØ�AŒ:Ø�y‰yÒ$ß!œEÔ!H¸d¿iºiÓ!HŸE™EÔ!H¸d¿iºiÓ!HÓH�”	ß#œeÔ#LÀÇÂÓ#LŸe™eÔ#LÀÇÂÓ#LÓL�”Ø�IŠI˜Õ�IØ×Ò Õ'×ñ r   c                ó   <€ V ^8„  d   QhRR/# )r   r)   rª   rt   )r   r   s   "€r   r   r°     s   ø€ ÷ ?ñ ?Ð3ñ ?r   c                ó®  aaaaa€ V P                   fs   VP                   fe   \        P                  ! V P                  VP                  .4      V n        \        P                  ! V P                  VP                  .4      V n        R# \        V P                  VP                  4      oV P                   f   ^ M#V P                   ^ ,          P                  R,          pVP                   f   ^ M#VP                   ^ ,          P                  R,          p\        SW#4      oV P                   e   V P                   MVP                   oV P                  e   V P                  MVP                  oR R loVVVVV3R lpV! V 4      pV! V4      pVw  rxršVw  r¼rÞ\        ;QJ d    . R \        W{4       4       F  NK  	  5M! R \        W{4       4       4      V n         \        ;QJ d    . R \        WŒ4       4       F  NK  	  5M! R \        WŒ4       4       4      V n        \        P                  ! W�.4      V n        \        P                  ! W®.4      V n        SV n        R# )z>Concatenate *other* batch into this cache along the batch dim.Nc                ó$   € V ^8„  d   QhR\         /# )r   Ú
batch_sizer   )r   s   "r   r   Ú2BatchQuantizedKVCache.extend.<locals>.__annotate__"  s   € ÷ 	ñ 	¬3ñ 	r   c                 óÞ   € . pV  F[  p\        VP                  4      pW^ &   ^ VR&   VP                  \        P                  ! \        V4      VP                  R7      4       K]  	  \        V4      # )r   r.   rÀ   )rš   r6   Úappendr9   r:   r“   r/   )Úpartsrô   ÚoutÚpartr6   s   &&   r   Ú_empty_likeÚ1BatchQuantizedKVCache.extend.<locals>._empty_like"  sZ   € ØˆCÛ�Ü˜TŸZ™ZÓ(�Ø%�a‘Ø��b‘	Ø—
‘
œ2Ÿ8š8¤E¨%£L¸¿
¹
ÔCÖDñ	 ô
 ˜“:Ðr   c                 ó°  <a
a€ V P                   f:   \        V P                  P                  ^ ,          4      pS! SV4      pS! SV4      pMV P                   pV P                  pSV P
                  ,
          o
SV^ ,          P                  R,          ,
          S
,
          pV^ 8  dl   \        ;QJ d    . V
V3R lV 4       F  NK  	  5M! V
V3R lV 4       4      p\        ;QJ d    . V
V3R lV 4       F  NK  	  5M! V
V3R lV 4       4      p^ pMTpTpS
^ 8w  g   V^ 8w  d‘   R.\        V^ ,          P                  4      ,          oS
V3SR&   \        ;QJ d    . V3R lV 4       F  NK  	  5M! V3R lV 4       4      p\        ;QJ d    . V3R lV 4       F  NK  	  5M! V3R lV 4       4      pMTpTpV P                  S
,           p	WxV P                  V	3# )Nc              3   óL   <"  € T F  qR RSS,
          1R3,          x € K  	  R# 5irÇ   rt   )rÈ   rÉ   Úleftr   s   & €€r   rË   ÚCBatchQuantizedKVCache.extend.<locals>._pad_quant.<locals>.<genexpr>6  s(   øé € Ð$PÉ4Àa sÐ,=¨h¸­oÐ,=¸qÐ'@×%AÒ%AË4ùó   ƒ!$c              3   óL   <"  € T F  qR RSS,
          1R3,          x € K  	  R# 5irÇ   rt   )rÈ   r‘   rÿ   r   s   & €€r   rË   r   7  s(   øé € Ð&TÉVÈ¨Ð.?°¸4µÐ.?ÀÐ)B×'CÒ'CËVùr  c              3   óR   <"  € T F  p\         P                  ! VS4      x € K  	  R # 5irF   ©r9   Úpad)rÈ   rÉ   Úpad_specs   & €r   rË   r   @  s   øé € Ð#NÁ¸A¤B§F¢F¨1¨h×$7Ð$7ÃùrÕ   c              3   óR   <"  € T F  p\         P                  ! VS4      x € K  	  R # 5irF   r  )rÈ   r‘   r  s   & €r   rË   r   A  s   øé € Ð%RÁ>¸a¤b§f¢f¨Q°×&9Ð&9Ã>ùrÕ   rÀ   )r   r   )	r2   r   r1   r6   r4   r7   r“   r›   r­   )Ú	cache_objrô   r2   r4   ÚrightÚtrimmed_keysÚtrimmed_valuesÚpadded_keysÚpadded_valuesr²   rÿ   r  rû   Úmax_idxr   Úref_keysÚ
ref_valuess   &         @@€€€€€r   Ú
_pad_quantÚ0BatchQuantizedKVCache.extend.<locals>._pad_quant+  sn  ú€ Ø�~‰~Ò%Ü  ×!1Ñ!1×!7Ñ!7¸Õ!:Ó;�
Ù" 8¨ZÓ8�Ù$ Z°Ó<‘à —~‘~�Ø"×)Ñ)�Ø˜YŸ^™^Õ+ˆDØ˜t A�wŸ}™}¨RÕ0Õ0°4Õ7ˆEØ�qŒyß$œuÕ$PÉ4Ó$PŸu™uÕ$PÉ4Ó$PÓP�ß!&¤Õ&TÉVÓ&T§¡Õ&TÉVÓ&TÓ!T�Ø‘à#�Ø!'�à�qŒy˜E QœJØ"˜8¤c¨,°q­/×*?Ñ*?Ó&@Õ@�Ø $ e˜}�˜‘ß#œeÔ#NÁÓ#NŸe™eÔ#NÁÓ#NÓN�ß %¤Ô%RÁ>Ó%R§¡Ô%RÁ>Ó%RÓ R‘à*�Ø .�à×'Ñ'¨$Õ.ˆBØ¨y×/?Ñ/?ÀÐCÐCr   c              3   óT   "  € T F  w  r\         P                  ! W.4      x € K   	  R # 5irF   ©r9   rÁ   ©rÈ   ÚsÚos   &  r   rË   Ú/BatchQuantizedKVCache.extend.<locals>.<genexpr>O  s    é € ÐI¹[±T°Qœ"Ÿ.š.¨!¨×0Ð0»[ùó   ‚&(c              3   óT   "  € T F  w  r\         P                  ! W.4      x € K   	  R # 5irF   r  r  s   &  r   rË   r  P  s    é € ÐK¹{±t°qœBŸNšN¨A¨6×2Ð2»{ùr  rÀ   )r2   r9   rÁ   r­   r1   r#   r7   r6   r4   r“   Úzip)r%   r)   Úself_lenÚ	other_lenr  Úr_selfÚr_otherÚskÚsvÚsoÚslpÚokÚovÚooÚolprû   r  r   r  r  s   &&             @@@@@r   ÚextendÚBatchQuantizedKVCache.extend  s£  ü€ à�9‰9Ò §¡Ò!3Ü "§¢°×0AÑ0AÀ5×CUÑCUÐ/VÓ WˆDÔÜŸ.š.¨$¯+©+°u·|±|Ð)DÓEˆDŒKÙä�d—i‘i §¡Ó,ˆØŸ	™	Ò)‘1¨t¯y©y¸­|×/AÑ/AÀ"Õ/EˆØŸ™Ò+‘A°·±¸Aµ×1DÑ1DÀRÕ1Hˆ	Ü�w Ó4ˆØ $§	¡	Ò 5�4—9’9¸5¿:¹:ˆØ$(§K¡KÒ$;�T—[’[ÀÇÁˆ
õ	÷	Dñ 	Dñ< ˜DÓ!ˆÙ˜UÓ#ˆà ‰ˆ�Ø!‰ˆ�ç”EÑI¼SÀ¼[ÓI—E‘EÑI¼SÀ¼[ÓIÓIˆŒ	ß”eÑK¼sÀ2¼{ÓK—e‘eÑK¼sÀ2¼{ÓKÓKˆŒÜ—n’n b XÓ.ˆŒÜŸNšN¨C¨:Ó6ˆÔØˆŽ	r   c                óž  a € S P                   f   R R S P                  S P                  3# \        ;QJ d!    . V 3R lS P                    4       F  NK  	  5M! V 3R lS P                    4       4      p\        ;QJ d!    . V 3R lS P                   4       F  NK  	  5M! V 3R lS P                   4       4      pWS P                  S P                  3# )Nc              3   óR   <"  € T F  qR RSP                   1R3,          x € K  	  R# 5irÇ   rÓ   ©rÈ   rÂ   r%   s   & €r   rË   Ú.BatchQuantizedKVCache.state.<locals>.<genexpr>Y  rÔ   rÕ   c              3   óR   <"  € T F  qR RSP                   1R3,          x € K  	  R# 5irÇ   rÓ   r,  s   & €r   rË   r-  Z  r×   rÕ   )r2   r1   r­   r“   r4   )r%   rÉ   r‘   s   f  r   r�   ÚBatchQuantizedKVCache.stateU  s‰   ø€ à�9‰9ÒØ˜˜tŸ{™{¨D×,=Ñ,=Ð=Ð=ßŒEÔ<°$·)²)Ó<�E‰EÔ<°$·)²)Ó<Ó<ˆßŒEÔ>°$·+²+Ó>�E‰EÔ>°$·+²+Ó>Ó>ˆØ�T—[‘[ $×"3Ñ"3Ð3Ð3r   c                ó®   € Vw  V n         V n        V n        V n        V P                   e,   V P                   ^ ,          P                  ^,          V n        R # R # rF   )r2   r4   r1   r­   r6   r7   )r%   Úvals   &&r   r�   r/  ]  sB   € àADÑ>ˆŒ	�4”; ¤¨TÔ->Ø�9‰9Ò ØŸ	™	 !�×*Ñ*¨1Õ-ˆDŽIñ !r   c                óv   € \        \        \        V P                  V P                  V P
                  34      4      # rF   )r“   r”   r•   r7   r®   r¯   ru   s   &r   r–   Ú BatchQuantizedKVCache.meta_statec  s'   € ä”Sœ˜tŸy™y¨$¯/©/¸4¿9¹9ÐEÓFÓGÐGr   c                óL   € \        \        V4      w  V n        V n        V n        R # rF   )r”   r   r7   r®   r¯   r�   s   &&r   r–   r3  g  s   € ä03´C¸³Ñ-ˆŒ	�4”? D¦Ir   c                ó   € R # ©Frt   ru   s   &r   rv   Ú"BatchQuantizedKVCache.is_trimmablek  ó   € Ùr   c                ó   € ^ # rT   rt   rn   s   &&r   rp   ÚBatchQuantizedKVCache.trimn  ó   € Ùr   c                ó   € V P                   R J # rF   ©r2   ru   s   &r   ÚemptyÚBatchQuantizedKVCache.emptyq  ó   € Ø�y‰y˜DÐ Ð r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   rz   r|   ©r   r}   )r   r   s   "€r   r   r°   t  s   ø€ ÷ 
ñ 
™3ð 
©dñ 
r   c                óP   € ^ RI Hp V! V3RV P                  RV P                  /VB # )r   )Úcreate_causal_maskr1   r­   )Úmlx_lm.models.cacherD  r7   r­   )r%   rz   r|   ÚkwargsrD  s   &&&, r   r�   ÚBatchQuantizedKVCache.make_maskt  s7   € Ý:á!Øñ
Ø—i‘ið
Ø.2×.?Ñ.?ð
ØCIñ
ð 	
r   )r7   r¯   r®   r2   r­   r1   r4   N)r�   é   r6  )rž   rŸ   r    r¡   r¢   rO   r"   rk   rï   r(  r¤   r�   r¥   r–   rv   rp   r>  r�   r¦   r§   ©r   s   @r   rª   rª   µ   sµ   ø‡ € ñð €D÷ò ÷4
ð 4
÷l(ð (÷ ?ð ?ðB ñ4ó ð4ð ‡\�\ñ.ó ð.ð
 ñHó ðHð ×Ññ<ó ð<òòò!÷
÷ 
ð 
r   rª   c                   ó   a € ] tR tRt o RtV 3R lR lt]R 4       tV 3R lR ltV 3R lR	 lt	RV 3R
 lR llt
]R 4       t]P                  R 4       t]R 4       t]P                  R 4       tR tR tR tR t]R 4       t]R 4       tRtV tR# )ÚPoolingCachei|  z×Cache for pooled (compressed) KV tokens with a remainder buffer.

Stores two things:
  1. A growing pool of compressed tokens (step-allocated).
  2. A small remainder buffer of tokens not yet forming a full window.
c                ó    <€ V ^8„  d   QhRS[ /# )r   Úratior   )r   r   s   "€r   r   ÚPoolingCache.__annotate__„  s   ø€ ÷ ñ ™cñ r   c                óJ   € Wn         R V n        R V n        ^ V n        R V n        R # rF   )rM  Úbuf_kvÚbuf_gateÚ	remainderÚpooled)r%   rM  s   &&r   r"   ÚPoolingCache.__init__„  s#   € ØŒ
àˆŒØˆŒØˆŒàˆŽr   c                ó\   € V P                   f   ^ # V P                   P                  ^,          # rF   ©rS  r6   ru   s   &r   r1   ÚPoolingCache.offset�  s%   € à—K‘KÒ'ˆqÐA¨T¯[©[×->Ñ->¸qÕ-AÐAr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   ÚkvÚgateri   )r   r   s   "€r   r   rN  ‘  s#   ø€ ÷ <(ñ <(¡R§X¡Xð <(±R·X±Xñ <(r   c                óà  € VP                   w  rEpVP                   w   rxV P                  fg   \        P                  ! W@P                  V3VP
                  R7      V n        \        P                  ! W@P                  V3VP
                  R7      V n        V^8”  EdÀ   WPP                  ,           p	W�P                  ,          V P                  ,          p
W�P                  ,          pV
^ 8”  dÃ   \        P                  ! V P                  RR V P                  13,          VRR W P                  ,
          13,          .^R7      p\        P                  ! V P                  RR V P                  13,          VRR W P                  ,
          13,          .^R7      pW0P                  ,
          p^ V n        ML\        P                  ! V^ V3VP
                  R7      p\        P                  ! V^ V3VP
                  R7      p^ pV^ 8”  dS   VRV) R 13,          V P                  RV P                  V13&   VRV) R 13,          V P                  RV P                  V13&   W°n        WÍV3# WP                  RV P                  V P                  ^,           13&   W P                  RV P                  V P                  ^,           13&   V P                  ^,           V P                  ,          V n        V P                  ^ 8X  d3   V P                  pV P                  pW0P                  ,
          ^,           pML\        P                  ! V^ V3VP
                  R7      p\        P                  ! V^ V3VP
                  R7      p^ pWÍV3# )Nr.   r,   r¾   )	r6   rP  r9   r:   rM  r/   rQ  rR  rÁ   )r%   rZ  r[  r1   rÛ   ÚLÚD1Ú_ÚD2ÚtotalÚusableÚnew_remainderÚr_kvÚr_gateÚr_bases   &&&&           r   Úaccumulate_windowsÚPoolingCache.accumulate_windows‘  sÓ  € Ø—8‘8‰ˆˆbØ—:‘:‰ˆˆ1à�;‰;ÒÜŸ(š( A§z¡z°2Ð#6¸b¿h¹hÔGˆDŒKÜŸHšH a¯©°RÐ%8ÀÇ
Á
ÔKˆDŒMð ˆq�5ØŸ™Õ&ˆEØŸz™zÕ)¨T¯Z©ZÕ7ˆFØ!§J¡JÕ.ˆMà˜ŒzÜ—~’~àŸ™ AÐ'7¨¯©Ð'7Ð$7Õ8Ø˜1Ð9 ¯.©.Õ!8Ð9Ð9Õ:ðð ô�ô ŸšàŸ™ aÐ)9¨4¯>©>Ð)9Ð&9Õ:Ø˜QÐ ; 6¯N©NÕ#:Ð ;Ð;Õ<ðð ô�ð  §.¡.Õ0�Ø!"�•ä—x’x  A r 
°"·(±(Ô;�ÜŸš 1 a¨ *°D·J±JÔ?�Ø�à˜qÔ ØACÀAÈÀ~ÁÐDVÕAW�—‘˜A˜tŸ~™~°Ð=Ð=Ñ>ØCGØ˜�~‘Ð&õD�—‘˜a §¡°-Ð!?Ð?Ñ@ð +ŒNà Ð'Ð'ð CE�K‰K˜˜4Ÿ>™>¨D¯N©N¸QÕ,>Ð>Ð>Ñ?ØDH�M‰M˜!˜TŸ^™^¨d¯n©n¸qÕ.@Ð@Ð@ÑAØ"Ÿn™n¨qÕ0°D·J±JÕ>ˆDŒNà�~‰~ Ô"Ø—{‘{�ØŸ™�Ø§*¡*Õ,¨qÕ0‘ä—x’x  A r 
°"·(±(Ô;�ÜŸš 1 a¨ *°D·J±JÔ?�Ø�à Ð'Ð'r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r   Úpxri   )r   r   s   "€r   r   rN  Ï  s   ø€ ÷ 
ñ 
¡2§8¡8ñ 
r   c                óž  € VP                   ^,          ^ 8X  db   V P                  fH   \        P                  ! VP                   ^ ,          ^ VP                   R,          3VP                  R7      # V P                  # V P                  f   Wn        V P                  # \        P
                  ! V P                  V.^R7      V n        V P                  # )rN   r.   r¾   r0   )r6   rS  r9   r:   r/   rÁ   )r%   rk  s   &&r   rk   ÚPoolingCache.update_and_fetchÏ  s”   € Ø�8‰8�A�;˜!ÔØ�{‰{Ò"Ü—x’x §¡¨!¥¨a°·±¸"µÐ >ÀbÇhÁhÔOÐOØ—;‘;Ðà�;‰;ÒØŒKð �{‰{Ðô Ÿ.š.¨$¯+©+°rÐ):ÀÔCˆDŒKØ�{‰{Ðr   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   r]  r1   r   )r   r   s   "€r   r   rN  Û  s   ø€ ÷ ;ñ ;™3ð ;©Cñ ;r   c                ó   € V P                   e   V^8X  d   R# \        P                  ! V P                   P                  ^,          4      p\        P                  ! V^,           W!,           ^,           4      pW4R,          V P                  ,          8  # )a  Build a causal validity mask for pooled positions.

Query at absolute position ``offset + j`` can attend to pooled token
``i`` iff ``i < (offset + j) // ratio``.

Returns ``(N, P)`` bool mask, or ``None`` when every pooled position
is visible to every query (common during decode).
Nr€   )rS  r9   r‚   r6   rM  )r%   r]  r1   Úpool_idxÚ	query_idxs   &&&  r   r�   ÚPoolingCache.make_maskÛ  se   € ð �;‰;Ò ! q¤&Ùä—9’9˜TŸ[™[×.Ñ.¨qÕ1Ó2ˆÜ—I’I˜f q�j¨&­*°q­.Ó9ˆ	Ø GÕ,°·
±
Õ:Ñ:Ð:r   c                óî   € V P                   ^ 8”  d"   V P                  RRV P                   13,          MRpV P                   ^ 8”  d"   V P                  RRV P                   13,          MRpWV P                  3# )r   r,   N)rR  rP  rQ  rS  )r%   rP  rQ  s   &  r   r�   ÚPoolingCache.stateë  sf   € à59·^±^ÀaÔ5G�—‘˜QÐ 0 $§.¡.Ð 0Ð0Ö1ÈTˆØ9=¿¹È!Ô9K�4—=‘= Ð$4 d§n¡nÐ$4Ð!4Ö5ÐQUˆØ $§+¡+Ð.Ð.r   c                ór   € Vw  r#p^ V n         R;V n        V n        Ve   V P                  W#^ 4       W@n        R# ©r   N)rR  rP  rQ  rg  rS  )r%   r‘   rP  rQ  rS  s   &&   r   r�   rt  ñ  s<   € à#$Ñ ˆ˜&ØˆŒØ&*Ð*ˆŒ�d”mØÒØ×#Ñ# F°aÔ8ØŽr   c                ó   € V P                   # rF   ©rM  ru   s   &r   r–   ÚPoolingCache.meta_stateú  s   € à�z‰zÐr   c                ó   € Wn         R # rF   rx  r�   s   &&r   r–   ry  þ  s   € àŽ
r   c                ó   € V P                   R J # rF   ©rS  ru   s   &r   rv   ÚPoolingCache.is_trimmable  ó   € Ø�{‰{˜dÐ"Ð"r   c                ód   € \        V P                  V4      pV ;P                  V,          un        V# rF   )r5   rR  rn   s   &&r   rp   ÚPoolingCache.trim  s%   € Ü�—‘ Ó"ˆØ�Š˜!Õ�Øˆr   c                ó\   € V P                   f   ^ # V P                   P                  ^,          # rF   rV  ru   s   &r   rØ   ÚPoolingCache.size
  ó%   € Ø—K‘KÒ'ˆqÐA¨T¯[©[×->Ñ->¸qÕ-AÐAr   c                óL   € V P                   R J ;'       d    V P                  ^ 8H  # rF   )rS  rR  ru   s   &r   r>  ÚPoolingCache.empty  s"   € Ø�{‰{˜dÐ"×:Ð: t§~¡~¸Ñ':Ð:r   c                óè   € ^ pV P                   e8   WP                   P                  V P                  P                  ,           ,          pV P                  e   WP                  P                  ,          pV# rT   ©rP  ÚnbytesrQ  rS  ©r%   ra  s   & r   rˆ  ÚPoolingCache.nbytes  óS   € àˆØ�;‰;Ò"Ø—[‘[×'Ñ'¨$¯-©-×*>Ñ*>Õ>Õ>ˆEØ�;‰;Ò"Ø—[‘[×'Ñ'Õ'ˆEØˆr   c                ó,   € \         P                  V4      # rF   )ÚBatchPoolingCacheÚmerge)r;   Úcachess   &&r   rŽ  ÚPoolingCache.merge  s   € ä ×&Ñ& vÓ.Ð.r   )rQ  rP  rS  rM  rR  N©rN   r   )rž   rŸ   r    r¡   r¢   r"   r¤   r1   rg  rk   r�   r�   r¥   r–   rv   rp   rØ   r>  rˆ  r£   rŽ  r¦   r§   rI  s   @r   rK  rK  |  sà   ø‡ € ñ÷ð ð ñBó ðB÷<(ð <(÷|
ð 
÷;ò ;ð  ñ/ó ð/ð
 ‡\�\ñó ðð ñó ðð ×Ññó ðò#òò
Bò;ð ñó ðð ñ/ó ö/r   rK  c                   óN  a € ] tR tRt o RtV 3R lR lt]R 4       tRRRRR	R/R
 ltR t	V 3R lR lt
V 3R lR ltR V 3R lR llt]R 4       t]P                  R 4       t]R 4       t]P                  R 4       tR tR tR tR t]R 4       tR tR tR t]R 4       tRtV tR# )!r�  i  z@Batched pooling cache with per-element variable-length tracking.c                ó6   <€ V ^8„  d   QhRS[ RS[S[ ,          /# )r   rM  r­   )r   r   )r   r   s   "€r   r   ÚBatchPoolingCache.__annotate__!  s   ø€ ÷ +ñ +™cð +±±cµñ +r   c                óT  € Wn         \        ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   \        R4      h\        V4      pRV n        RV n        ^ .V,          V n        RV n        ^ .V,          V n        R.V,          V n	        ^ .V,          V n
        R# )c              3   ó*   "  € T F	  q^ 8H  x € K  	  R# 5irv  rt   )rÈ   Úps   & r   rË   Ú-BatchPoolingCache.__init__.<locals>.<genexpr>$  s   é € Ð0¡<˜a˜–6£<ùó   ‚FTú/BatchPoolingCache does not support left paddingNì        )rM  ÚallÚRuntimeErrorr›   rP  rQ  rR  rS  Ú_pool_lengthsÚ_lengthsÚ
_processed)r%   rM  r­   rô   s   &&& r   r"   ÚBatchPoolingCache.__init__!  sŒ   € ØŒ
ç‹sÑ0¡<Ó0�s�sŠsÑ0¡<Ó0×0Ò0ÜÐPÓQÐQä˜Ó&ˆ
àˆŒØˆŒØ˜˜zÕ)ˆŒàˆŒØ˜S :Õ-ˆÔà˜ *Õ,ˆŒØ˜# 
Õ*ˆŽr   c                ób   € \         P                  ! V P                  \         P                  R 7      # r·   )r9   rc   rž  Úint32ru   s   &r   r1   ÚBatchPoolingCache.offset3  s   € ä�xŠx˜×*Ñ*´"·(±(Ô;Ð;r   ÚlengthsNÚright_paddingr­   c               ó¦   € Ve   \        R4      hVe8   \        V P                  V4       UUu. uF  w  rEWE,           NK  	  uppV n        R # R # u uppi )Nrš  )r�  r  r   rŸ  )r%   r¥  r¦  r­   Ú	processedÚlengths   &$$$  r   ÚprepareÚBatchPoolingCache.prepare7  sY   € ØÒ#ÜÐPÓQÐQØÒô *-¨T¯_©_¸gÔ)Fôá)FÑ%�Ið ×"Ð"Ù)FòˆDŽMñ ùós   ­Ac                óJ   € R.\        V P                  4      ,          V n        R# )r   Nr›  )r›   rž  rŸ  ru   s   &r   ÚfinalizeÚBatchPoolingCache.finalize@  s   € Ø˜¤# d×&8Ñ&8Ó"9Õ9ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rY  ri   )r   r   s   "€r   r   r”  C  s'   ø€ ÷ X$ñ X$¡R§X¡Xð X$±R·X±Xñ X$r   c                óú	  € VP                   w  rEpVP                   w   rxV P                  p	V P                  fS   \        P                  ! WIV3VP
                  R7      V n        \        P                  ! WIV3VP
                  R7      V n        \        V P                  V P                  4       U
Uu. uF  w  r«\        W«,
          V4      NK  	  pp
p\        V4      V8w  d   \        4       h\        V4       F(  pV P                  V;;,          WÍ,          ,          uu&   K*  	  \        WÀP                  4       UUu. uF  w  rïWï,           NK  	  pppV Uu. uF  pVV	,          V	,          NK  	  pp\        V4      pV Uu. uF  pVV	,          NK  	  ppV^ 8X  dÊ   \        V4       Fb  pV P                  V,          pWÍ,          pWR V13,          V P                  WßWþ,           13&   W-R V13,          V P                  WßWþ,           13&   Kd  	  VV n        \        P                  ! V^ V3VP
                  R7      p\        P                  ! V^ V3VP
                  R7      p^ pVVV3# \        P                  ! VVV3VP
                  R7      p\        P                  ! VVV3VP
                  R7      p^ .V,          p\        P                  ! V P                  4      p\        P                  ! V P                  4      p\        V4       EF´  pV P                  V,          pWÍ,          pVV,          pVV,          pV^ 8”  d¹   V^ 8”  d=   V P                  VR V13,          VVR V13&   V P                  VR V13,          VVR V13&   VV,
          pWR V13,          VWßVV,           13&   W-R V13,          VWßVV,           13&   \!        V\        P"                  4      '       d   W=,          V,
          MW?,
          VV&   V^ 8”  g   Kù  V^ 8”  d8   WVV,
          V13,          VVR V13&   W-VV,
          V13,          VVR V13&   EK7  V^ 8”  d=   V P                  VR V13,          VVR V13&   V P                  VR V13,          VVR V13&   V^ 8”  g   EK„  WR V13,          VWßWþ,           13&   W-R V13,          VWßWþ,           13&   EK·  	  VV n        VV n        VV n        \        P"                  ! V4      pVVV3# u upp
i u uppi u upi u upi )Nr.   )r6   rM  rP  r9   r:   r/   rQ  r  rŸ  r   r5   r#   r�  rÚ   rR  Ú
zeros_likeÚ
isinstancerc   )r%   rZ  r[  r1   rÛ   r]  r^  r_  r`  rM  r©  r¨  Úvalid_lengthsrã   ÚvlÚrÚtotalsÚtrb  Ú
max_usablerc  rd  re  rf  Ú
new_buf_kvÚnew_buf_gateÚuÚnrÚconsumes   &&&&                         r   rg  Ú$BatchPoolingCache.accumulate_windowsC  s�  € Ø—8‘8‰ˆˆbØ—:‘:‰ˆˆ1Ø—
‘
ˆà�;‰;ÒÜŸ(š( A¨b >¸¿¹ÔBˆDŒKÜŸHšH a° ^¸4¿:¹:ÔFˆDŒMô &)¨¯©¸¿¹Ô%Hô
á%HÑ!�ô �Õ" AÖ&Ù%Hð 	ñ 
ô ˆ}Ó Ô"Ü“.Ð Ü�q–ˆAØ�O‰O˜A× -Õ"2Õ2Õñ ô '*¨-¿¹Ô&HÔIÑ&H™U˜R�"—&�&Ñ&HˆÑIÙ06Ó7±¨1�1˜•: ×&Ð&±ˆÐ7Ü˜“[ˆ
Ù,2Ó3©F q˜˜UŸ˜©FˆÐ3ð ˜Œ?Ü˜1–X�Ø—N‘N 1Õ%�Ø"Õ%�Ø-/°3°B°3°­Z�—‘˜A 1¥6˜z˜MÑ*Ø/3°s¸°s°F­|�—‘˜a Q¥V ˜mÓ,ñ	 ð
 +ˆDŒNä—8’8˜Q  2˜J¨b¯h©hÔ7ˆDÜ—X’X˜q ! R˜j°·
±
Ô;ˆFØˆFØ˜ Ð'Ð'ô �xŠx˜˜J¨Ð+°2·8±8Ô<ˆÜ—’˜1˜j¨"Ð-°T·Z±ZÔ@ˆØ��q•ˆä—]’] 4§;¡;Ó/ˆ
Ü—}’} T§]¡]Ó3ˆä�q—ˆAØ—‘˜qÕ!ˆAØÕ!ˆBØ�q•	ˆAØ˜qÕ!ˆBà�1Œuà�q”5Ø"&§+¡+¨a°°!°¨eÕ"4�D˜˜B˜Q˜B˜‘KØ$(§M¡M°!°R°a°R°%Õ$8�F˜1˜b˜q˜b˜5‘Mð ˜a�%�Ø+-°°'°¨k­?��Q˜A �K˜Ð'Ñ(Ø-1°X°g°X°+Õ->��q˜a '�k˜/Ð)Ñ*ô &0°¼¿¹×%AÒ%A�F•I –MÀvÅzð �q‘	ð
 �AŽvØ�q”5ð *,¨r°B­w¸¨|¨OÕ)<�J˜q # 2 #˜vÑ&Ø+/°2¸µ7¸R°<°Õ+@�L  C R C Ô(ð ˜1”uØ,0¯K©K¸¸2¸A¸2¸Õ,>˜
 1 b q b 5Ñ)Ø.2¯m©m¸A¸rÀ¸r¸EÕ.B˜ Q¨¨¨ UÑ+Ø˜A—vØ46¸#¸2¸#°vµJ˜
 1¨!­& j =Ñ1Ø6:¸c¸r¸c¸6µl˜ Q¨A­F¨
 ]Ô3ñI ðL !ˆŒØ$ˆŒØ&ˆŒä—’˜&Ó!ˆØ�V˜VÐ#Ð#ùó_
ùó JùÚ7ùâ3s   Â.S'Ä7S-ÅS3Å;S8c                ó4   <€ V ^8„  d   QhRS[ P                  /# rj  ri   )r   r   s   "€r   r   r”  �  s   ø€ ÷ #ñ #¡2§8¡8ñ #r   c                óì  € VP                   w  r#pV^ 8X  d@   V P                  f&   \        P                  ! V^ V3VP                  R7      # V P                  # \        V4       Uu. uFW  pV P                  V,          V P                  V,          ,
          V P                  ,          V P                  V,          ,
          NKY  	  pp\        V4      pV^ 8X  d@   V P                  f&   \        P                  ! V^ V3VP                  R7      # V P                  # \        V P                  4      V,           pV P                  f+   \        P                  ! W(V3VP                  R7      V n        M‘V P                  P                   ^,          V8  dp   \        P                  ! W(V P                  P                   ^,          ,
          V3VP                  R7      p	\        P                  ! V P                  V	.^R7      V n        \        V4       F^  pWe,          p
V
^ 8”  g   K  V P                  V,          pWRV
13,          V P                  W[Wº,           13&   Wº,           V P                  V&   K`  	  V P                  # u upi )r   Nr.   r¾   )r6   rS  r9   r:   r/   rÚ   r   rR  rM  rž  r#   rÁ   )r%   rk  rÛ   rz   ÚDrã   Ú
new_countsÚmax_newÚmax_poolr  ÚncÚpls   &&          r   rk   Ú"BatchPoolingCache.update_and_fetch�  sî  € Ø—(‘(‰ˆˆaà�Œ6Ø�{‰{Ò"Ü—x’x  A q 	°·±Ô:Ð:Ø—;‘;Ðô ˜1”Xó
ñ �ð �_‰_˜QÕ $§.¡.°Õ"3Õ3¸¿
¹
ÕBØ× Ñ  Õ#÷$ð $áð 	ð 
ô
 �j“/ˆØ�aŒ<Ø�{‰{Ò"Ü—x’x  A q 	°·±Ô:Ð:Ø—;‘;Ðä�t×)Ñ)Ó*¨WÕ4ˆà�;‰;ÒÜŸ(š( A°Ð#3¸2¿8¹8ÔDˆD�KØ�[‰[×Ñ˜qÕ! HÔ,Ü—(’(˜A¨$¯+©+×*;Ñ*;¸AÕ*>Õ>ÀÐBÈ"Ï(É(ÔSˆCÜŸ.š.¨$¯+©+°sÐ);À!ÔDˆDŒKä�q–ˆAØ•ˆBØ�AŽvØ×'Ñ'¨Õ*�Ø/1°S°b°S°&­z�—‘˜A B¥G˜|˜OÑ,Ø(*­�×"Ñ" 1Ó%ñ ð �{‰{Ðùò5
s   Á#AI1c                ó    <€ V ^8„  d   QhRS[ /# )r   r]  r   )r   r   s   "€r   r   r”  Â  s   ø€ ÷ ñ ™3ñ r   c                óþ  a€ V P                   f   R # V P                   P                  w  pop\        P                  ! V P                  4      p\        P
                  ! S4      R,          pWeR,          8  pV^8X  dY   \        ;QJ d)    V3R lV P                   4       F  '       d   K   RM	  RM! V3R lV P                   4       4      '       d   R # V# \        V\        P                  4      '       d.   VR,          \        P
                  ! ^V^,           4      ,           pM9V\        P
                  ! V^,           W!,           ^,           4      R ,          ,           pWhR,          V P                  ,          8  p	W—,          p
V
# )Nc              3   ó,   <"  € T F	  qS8H  x € K  	  R # 5irF   rt   )rÈ   rÆ  ÚPs   & €r   rË   Ú.BatchPoolingCache.make_mask.<locals>.<genexpr>Ï  s   øé € Ð8Ñ%7˜r˜–7Ó%7ùs   ƒFT)NNr,   )r,   NNr€   ).N)	rS  r6   r9   rc   rž  r‚   rœ  r²  rM  )r%   r]  r1   rÛ   r_  Úpool_lengthsrp  ÚvalidÚ	query_posr   rˆ   rË  s   &&&        @r   r�   ÚBatchPoolingCache.make_maskÂ  s  ø€ Ø�;‰;ÒÙà—+‘+×#Ñ#‰ˆˆ1ˆaÜ—x’x × 2Ñ 2Ó3ˆô —9’9˜Q“< Õ.ˆØ¨Õ6Ñ6ˆð �Œ6ß‹sÔ8 T×%7Ò%7Ó8�s�sŠsÔ8 T×%7Ò%7Ó8×8Ò8ÙØˆLô �fœbŸh™h×'Ò'Ø˜w�¬"¯)ª)°A°q¸1µuÓ*=Õ=‰Ià¤§¢¨6°A­:°vµzÀAµ~Ó!FÀtÕ!LÕLˆIà yÕ1°T·Z±ZÕ?Ñ@ˆØ�~ˆØˆr   c                óH   € V P                   V P                  V P                  3# rF   ©rP  rQ  rS  ru   s   &r   r�   ÚBatchPoolingCache.stateÝ  s   € à—‘˜TŸ]™]¨D¯K©KÐ8Ð8r   c                ó0   € Vw  V n         V n        V n        R # rF   rÒ  r�   s   &&r   r�   rÓ  á  s   € à23Ñ/ˆŒ�T”] D¦Kr   c                ó^   € V P                   V P                  V P                  V P                  3# rF   ©rM  rR  rž  r   ru   s   &r   r–   ÚBatchPoolingCache.meta_stateå  s#   € à—
‘
˜DŸN™N¨D×,>Ñ,>ÀÇÁÐPÐPr   c                ó<   € Vw  V n         V n        V n        V n        R # rF   rÖ  r�   s   &&r   r–   r×  é  s   € àJKÑGˆŒ
�D”N DÔ$6¸¾r   c                ó   € V P                   R J # rF   r|  ru   s   &r   rv   ÚBatchPoolingCache.is_trimmableí  r~  r   c                ó
  € \        \        V P                  4      V4      p\        \        V P                  4      4       FA  pV P                  V;;,          V,          uu&   V P                  V;;,          V,          uu&   KC  	  V# rF   )r5   rR  rÚ   r›   r   )r%   ro   rã   s   && r   rp   ÚBatchPoolingCache.trimð  s^   € Ü”�D—N‘NÓ# QÓ'ˆÜ”s˜4Ÿ>™>Ó*Ö+ˆAØ�N‰N˜1× Õ"ÓØ�O‰O˜A× !Õ#Õñ ,ð ˆr   c                ó\   € V P                   f   ^ # V P                   P                  ^,          # rF   rV  ru   s   &r   rØ   ÚBatchPoolingCache.size÷  rƒ  r   c                ó¾   € V P                   R J ;'       dI    \        ;QJ d&    R V P                   4       F  '       d   K   R# 	  R# ! R V P                   4       4      # )Nc              3   ó*   "  € T F	  q^ 8H  x € K  	  R# 5irv  rt   )rÈ   rµ  s   & r   rË   Ú*BatchPoolingCache.empty.<locals>.<genexpr>û  s   é € Ð*J¹>°a°®6»>ùr™  FT)rS  rœ  rR  ru   s   &r   r>  ÚBatchPoolingCache.emptyú  sD   € Ø�{‰{˜dÐ"×JÐJ§s£sÑ*J¸4¿>º>Ó*J§s¤sÐJ¢sÐJ sÑ*J¸4¿>º>Ó*JÓ'JÐJr   c                óè   € ^ pV P                   e8   WP                   P                  V P                  P                  ,           ,          pV P                  e   WP                  P                  ,          pV# rT   r‡  r‰  s   & r   rˆ  ÚBatchPoolingCache.nbytesý  r‹  r   c                ó¦  € \        V\        P                  4      '       d   VP                  4       pM\	        V4      pV P
                  e1   V P
                  V,          V n        V P                  V,          V n        V P                  e   V P                  V,          V n        V Uu. uF  q0P                  V,          NK  	  upV n        V Uu. uF  q0P                  V,          NK  	  upV n	        V Uu. uF  q0P                  V,          NK  	  upV n
        V Uu. uF  q0P                  V,          NK  	  upV n        R # u upi u upi u upi u upi rF   )r²  r9   rc   Útolistrš   rP  rQ  rS  rR  rž  rŸ  r   )r%   ræ   Úidx_listrã   s   &&  r   rï   ÚBatchPoolingCache.filter  s   € Ü�m¤R§X¡X×.Ò.Ø$×+Ñ+Ó-‰Hä˜MÓ*ˆHà�;‰;Ò"ØŸ+™+ mÕ4ˆDŒKØ ŸM™M¨-Õ8ˆDŒMØ�;‰;Ò"ØŸ+™+ mÕ4ˆDŒKá5=Ó>±X°Ÿ.™.¨×+Ð+±XÑ>ˆŒÙ=EÓF¹X¸×0Ñ0°×3Ð3¹XÑFˆÔÙ3;Ó<±8¨aŸ™ q×)Ð)±8Ñ<ˆŒÙ7?Ó@±x°!Ÿ?™?¨1×-Ð-±xÑ@ˆŽùò ?ùÚFùÚ<ùÚ@s   Â%D?ÃEÃ3E	ÄEc                ó¢	  a
aa€ V P                   f   VP                   f   EM¯V P                   ew   VP                   ei   \        P                  ! V P                   VP                   .^ R7      V n         \        P                  ! V P                  VP                  .^ R7      V n        EM+V P                   Ef   \	        V P
                  4      pVP                   P                  ^,          pVP                  P                  ^,          p\        P                  ! \        P                  ! W P                  V3VP                   P                  R7      VP                   .^ R7      V n         \        P                  ! \        P                  ! W P                  V3VP                  P                  R7      VP                  .^ R7      V n        EM\	        VP
                  4      pV P                   P                  ^,          pV P                  P                  ^,          p\        P                  ! V P                   \        P                  ! WPP                  V3V P                   P                  R7      .^ R7      V n         \        P                  ! V P                  \        P                  ! WPP                  V3V P                  P                  R7      .^ R7      V n        V P                  f   VP                  f   EMX\	        V P
                  4      p\	        VP
                  4      pV P                  f   ^ MV P                  P                  ^,          pVP                  f   ^ MVP                  P                  ^,          p\        Wx4      oS^ 8”  dÃ   V P                  e   V P                  P                  ^,          o
MVP                  P                  ^,          o
V P                  e   V P                  MVP                  P                  oV
VV3R lp	\        P                  ! V	! V P                  Wg4      V	! VP                  WX4      .^ R7      V n
        V P
                  VP
                  ,           V n        V P                  VP                  ,           V n        V P                  VP                  ,           V n        V P                  VP                  ,           V n        R # )Nr¾   r.   c                 óì   <€ V f   \         P                  ! VSS3SR7      # VS8  dM   \         P                  ! V P                  ^ ,          SV,
          S3SR7      p\         P                  ! W.^R7      # V # )Nr.   r¾   )r9   r:   r6   rÁ   )rS  rÛ   rË  r  rÁ  ÚdtÚmax_Ps   &&& €€€r   Úpad_poolÚ*BatchPoolingCache.extend.<locals>.pad_poolN  sa   ø€ Ø’~Ü!Ÿxšx¨¨E°1¨¸RÔ@Ð@Ø˜5”yÜ Ÿhšh¨¯©°Q­¸À½ÀAÐ'FÈbÔQ˜Ü!Ÿ~š~¨v¨mÀ!ÔDÐDØ!�Mr   )rP  r9   rÁ   rQ  r›   rR  r6   r:   rM  r/   rS  r#   rž  rŸ  r   )r%   r)   rÛ   r^  r`  ÚB2ÚB1ÚP1ÚP2rí  rÁ  rë  rì  s   &&        @@@r   r(  ÚBatchPoolingCache.extend  sH  ú€ à�;‰;Ò 5§<¡<Ò#7ÙØ�[‰[Ò$¨¯©Ò)AÜŸ.š.¨$¯+©+°u·|±|Ð)DÈ1ÔMˆDŒKÜŸNšN¨D¯M©M¸5¿>¹>Ð+JÐQRÔSˆDŽMØ�[‰[Ó Ü�D—N‘NÓ#ˆAØ—‘×#Ñ# AÕ&ˆBØ—‘×%Ñ% aÕ(ˆBÜŸ.š.Ü—’˜1Ÿj™j¨"Ð-°U·\±\×5GÑ5GÔHÈ%Ï,É,ÐWØôˆDŒKô ŸNšNä—H’H˜a§¡¨RÐ0¸¿¹×8LÑ8LÔMØ—N‘Nðð ôˆDŽMô �U—_‘_Ó%ˆBØ—‘×"Ñ" 1Õ%ˆBØ—‘×$Ñ$ QÕ'ˆBÜŸ.š.Ø—‘œbŸhšh¨¯J©J¸Ð';À4Ç;Á;×CTÑCTÔUÐVØôˆDŒKô ŸNšNà—M‘MÜ—H’H˜b§*¡*¨bÐ1¸¿¹×9LÑ9LÔMðð ôˆDŒMð �;‰;Ò 5§<¡<Ò#7Ùä�T—^‘^Ó$ˆBÜ�U—_‘_Ó%ˆBØ—k‘kÒ)‘¨t¯{©{×/@Ñ/@ÀÕ/CˆBØ—l‘lÒ*‘°·±×0BÑ0BÀ1Õ0EˆBÜ˜“KˆEà�qŒyØ—;‘;Ò*ØŸ™×)Ñ)¨!Õ,‘AàŸ™×*Ñ*¨1Õ-�AØ%)§[¡[Ò%<�d—k’kÀ%Ç,Á,×UÑU�÷"ô !ŸnšnÙ˜dŸk™k¨2Ó2±H¸U¿\¹\È2Ó4RÐSØô�”ð
 Ÿ™¨%¯/©/Õ9ˆŒØ!×/Ñ/°%×2EÑ2EÕEˆÔØŸ™¨¯©Õ6ˆŒØŸ/™/¨E×,<Ñ,<Õ<ˆŽr   c                ó  € \        V P                  4      pV P                  V,          pV P                  V,          pV P                  e@   V^ 8”  d9   \
        P                  ! V P                  W^,           1R V13,          4      Vn        V P                  ej   V^ 8”  dc   \
        P                  ! V P                  W^,            4      Vn        \
        P                  ! V P                  W^,            4      Vn        WBn        V# rF   )	rK  rM  rž  rR  rS  r9   Ú
contiguousrP  rQ  )r%   Úidxr<   rÆ  rµ  s   &&   r   ÚextractÚBatchPoolingCache.extract`  sº   € Ü˜TŸZ™ZÓ(ˆØ×Ñ Õ$ˆØ�N‰N˜3Õˆà�;‰;Ò" r¨A¤vÜŸ=š=¨¯©°SÀ½7°]ÀCÀRÀCÐ5GÕ)HÓIˆEŒLà�;‰;Ò" q¨1¤uÜŸ=š=¨¯©°SÀ½7Ð)CÓDˆEŒLÜŸ]š]¨4¯=©=¸ÀQ½wÐ+GÓHˆEŒNØŒOàˆr   c                ó”  a€ \        S4      p\        ;QJ d    V3R lS 4       F  '       d   K   RM	  RM! V3R lS 4       4      '       g   \        R4      hS^ ,          P                  pV ! V^ .V,          4      p\        ;QJ d    R S 4       F  '       d   K   RM	  RM! R S 4       4      '       d   V# S Uu. uF  qUP	                  4       NK  	  pp\        V4      pV^ 8”  dŸ   \        R S 4       4      p\        R S 4       4      p	\        P                  ! W'V3V	R7      p
\        S4       FK  w  rµVP                  f   K  VP                  P                  ^,          pVP                  ^ ,          W«R	V13&   KM  	  W¤n
        Wdn        S Uu. uF  qUP                  NK  	  upVn        \        SV4       UUu. uF  w  r\VP                  WÃ,          ,           NK   	  uppVn        \         ;QJ d    R
 S 4       F  '       g   K   RM	  RM! R
 S 4       4      pV'       Ed   \        R S 4       4      p\        R S 4       4      p\        R S 4       4      p	\        P                  ! W#V3V	R7      p\        P                  ! W#V3V	R7      p\        S4       FŒ  w  rµVP"                  f   K  VP                  ^ 8”  g   K(  VP"                  ^ R	VP                  13,          VVR	VP                  13&   VP$                  ^ R	VP                  13,          VVR	VP                  13&   KŽ  	  VVn        VVn        V# u upi u upi u uppi )z@Merge a list of PoolingCache instances into a BatchPoolingCache.c              3   ób   <"  € T F$  qP                   S^ ,          P                   8H  x € K&  	  R# 5irv  rx  )rÈ   Úcr�  s   & €r   rË   Ú*BatchPoolingCache.merge.<locals>.<genexpr>s  s    øé € Ð>±v°!—7‘7˜f Q�iŸo™oÖ-³vùs   ƒ,/FTz;BatchPoolingCache can only merge caches with the same ratioc              3   ó@   "  € T F  qP                  4       x € K  	  R # 5irF   )r>  ©rÈ   rû  s   & r   rË   rü  {  s   é € Ð)¡&˜Q�w‰w�yˆy£&ùs   ‚c              3   óz   "  € T F1  qP                   f   K  VP                   P                  ^,          x € K3  	  R # 5irF   rV  rþ  s   & r   rË   rü  ‚  s'   é € ÐO±¨1¿(¹(Ô&�Q—X‘X—^‘^ A×&Ò&³ùó   ‚;–%;c              3   ól   "  € T F*  qP                   f   K  VP                   P                  x € K,  	  R # 5irF   )rS  r/   rþ  s   & r   rË   rü  ƒ  ó   é € ÐM©f¨¿¹”n�a—h‘h—n–n«fùó   ‚4–4r.   Nc              3   ó<   "  € T F  qP                   R Jx € K  	  R # 5irF   )rP  rþ  s   & r   rË   rü  ’  s   é € Ð;±F¨q—h‘h dÕ*³Fùs   ‚c              3   óz   "  € T F1  qP                   f   K  VP                   P                  ^,          x € K3  	  R # 5irF   )rP  r6   rþ  s   & r   rË   rü  ”  s'   é € ÐP±¨A¿8¹8Ô'�a—h‘h—n‘n Q×'Ò'³ùr   c              3   óz   "  € T F1  qP                   f   K  VP                   P                  ^,          x € K3  	  R # 5irF   )rQ  r6   rþ  s   & r   rË   rü  •  s)   é € ÐT±6¨a¿Z¹ZÔ)�a—j‘j×&Ñ& q×)Ò)³6ùr   c              3   ól   "  € T F*  qP                   f   K  VP                   P                  x € K,  	  R # 5irF   )rP  r/   rþ  s   & r   rË   rü  –  r  r  )r›   rœ  Ú
ValueErrorrM  rØ   r#   Únextr9   r:   Ú	enumeraterS  r6   rž  rR  r  r   ÚanyrP  rQ  )r;   r�  rÛ   rM  Úbatch_cacherû  Ú
pool_sizesrÄ  rÁ  rë  rS  rã   ÚpsÚhas_bufr^  r`  rP  rQ  s   &f                r   rŽ  ÚBatchPoolingCache.mergeo  s­  ø€ ô �‹Kˆß‹sÔ>±vÓ>�s�sŠsÔ>±vÓ>×>Ò>ÜØMóð ð �q•	—‘ˆÙ˜% !  q¥Ó)ˆ÷ ‹3Ñ)¡&Ó)�3�3Š3Ñ)¡&Ó)×)Ò)ØÐñ )/Ó/© 1—f‘f–h©ˆ
Ð/Ü�z“?ˆØ�aŒ<ÜÑO±ÓOÓOˆAÜÑM©fÓMÓMˆBÜ—X’X˜q¨AÐ.°bÔ9ˆFÜ! &Ö)‘�Ø—8‘8Ô'ØŸ™Ÿ™¨Õ*�BØ%&§X¡X¨a¥[�F˜c˜r˜c˜6“Nñ *ð "(Ôà$.Ô!Ù6<Ó =±f°§¤±fÑ =ˆÔä25°f¸jÔ2Iô"
Ù2I©¨ˆA�K‰K˜"�*×$Ð$Ñ2Iò"
ˆÔ÷
 “#Ñ;±FÓ;—#—#’#Ñ;±FÓ;Ó;ˆßˆ7ÜÑP±ÓPÓPˆBÜÑT±6ÓTÓTˆBÜÑM©fÓMÓMˆBÜ—X’X˜q¨˜n°BÔ7ˆFÜ—x’x ¨2 °bÔ9ˆHÜ! &Ö)‘�Ø—8‘8Ô'¨A¯K©K¸!®OØ/0¯x©x¸¸=¸Q¿[¹[¸=Ð8HÕ/I�F˜1˜m §¡˜mÐ+Ñ,Ø12·±¸A¸}ÀÇÁ¸}Ð<LÕ1M�H˜Q  !§+¡+ Ð-Ó.ñ *ð "(ˆKÔØ#+ˆKÔ àÐùòC 0ùò !>ùó"
s   Â<L:ÆL?Æ;$M)rŸ  rž  r   rQ  rP  rS  rM  rR  r‘  )rž   rŸ   r    r¡   r¢   r"   r¤   r1   rª  r­  rg  rk   r�   r�   r¥   r–   rv   rp   rØ   r>  rˆ  rï   r(  r÷  r£   rŽ  r¦   r§   rI  s   @r   r�  r�    s  ø‡ € ÙJ÷+ð +ð$ ñ<ó ð<ð ð °Tð Èô ò:÷X$ð X$÷t#ð #÷Jò ð6 ñ9ó ð9ð ‡\�\ñ4ó ð4ð ñQó ðQð ×ÑñLó ðLò#òòBòKð ñó ðòAò"G=òRð ñ0ó ö0r   r�  c                ó|   € V ^8„  d   QhR\         P                  R\        \        ,          R\        \
        ,          /# )r   ÚmodelÚmax_kv_sizer*   )ÚnnÚModuler   r   r   r   )r   s   "r   r   r   £  s2   € ÷ 6ñ 6Ü�9‰9ð6äœ#•ð6ô 
Œ#…Yñ6r   c                ó  € \        V R4      '       d   V P                  4       # \        V P                  4      pVe'   \	        V4       Uu. uF  p\        V^R7      NK  	  up# \	        V4       Uu. uF  p\        4       NK  	  up# u upi u upi )a©  
Construct the model's cache for use in generation.

This function will defer the cache construction to the model if it has a
``make_cache`` method, otherwise it will make a default KV cache.

Args:
    model (nn.Module): The language model.
    max_kv_size (Optional[int]): If provided and the model does not have a
        ``make_cache`` method, a ``RotatingKVCache`` is used with a maximum
        size of ``max_kv_size``
Ú
make_cacher    )Úhasattrr  r›   ÚlayersrÚ   r   r   )r  r  Ú
num_layersr_  s   &&  r   Úmake_prompt_cacher  £  s‡   € ô  ˆu�l×#Ò#Ø×ÑÓ!Ð!ä�U—\‘\Ó"€JàÒäCHÈÔCTó
ÙCT¸aŒO [°q×9ÑCTñ
ð 	
ô $)¨Ô#4Ó5Ñ#4˜a”–	Ñ#4Ñ5Ð5ùò	
ùò 6s   Á	BÁ/B
c                   ó<   a € ] tR tRt o RtR tR tR tR tRt	V t
R# )	ÚSimpleKVCacheiÀ  z€A simple key-value cache for transformer attention layers.

Stores and concatenates key/value tensors along sequence dimension.
c                ó0   € R V n         R V n        ^ V n        R # rF   )r2   r4   Úcache_lengthru   s   &r   r"   ÚSimpleKVCache.__init__Æ  s   € ØˆŒ	ØˆŒØˆÖr   c                óf  € V P                   ^ 8X  d   Wn        W n        MR\        P                  ! V P                  V.^R7      V n        \        P                  ! V P                  V.^R7      V n        V ;P                   VP
                  ^,          ,          un         V P                  V P                  3# )a   Update cache with new key/value tensors and return full cache.

Args:
    keys: New key tensor to add [batch, heads, seq_len, head_dim]
    values: New value tensor to add [batch, heads, seq_len, head_dim]

Returns:
    Tuple of (cached_keys, cached_values) containing full cache history
r¾   )r  r2   r4   r9   rÁ   r6   ©r%   r2   r4   s   &&&r   rk   ÚSimpleKVCache.update_and_fetchË  s€   € ð ×Ñ Ô!àŒIØ �Kô Ÿš¨¯	©	°4Ð'8¸qÔAˆDŒIÜŸ.š.¨$¯+©+°vÐ)>ÀQÔGˆDŒKà×Ò˜TŸZ™Z¨�]Õ*ÕØ�y‰y˜$Ÿ+™+Ð%Ð%r   c                ó2   € V P                   V P                  3# rF   ©r2   r4   ru   s   &r   ÚfetchÚSimpleKVCache.fetchá  s   € Ø�y‰y˜$Ÿ+™+Ð%Ð%r   c                ór   € Wn         W n        V ;P                  VP                  ^,          ,          un        R# )zŠUpdate cache with new key/value tensors without returning.

Args:
    keys: New key tensor to store
    values: New value tensor to store
N)r2   r4   r  r6   r"  s   &&&r   ÚupdateÚSimpleKVCache.updateä  s'   € ð Œ	ØŒØ×Ò˜TŸZ™Z¨�]Õ*×r   )r  r2   r4   N)rž   rŸ   r    r¡   r¢   r"   rk   r&  r)  r¦   r§   rI  s   @r   r  r  À  s#   ø‡ € ñò
ò
&ò,&÷	+ð 	+r   r  c                   óÆ   a € ] tR tRt o RtRV 3R lR lltV 3R lR lt]R 4       t]P                  R 4       tR	 t
]R
 4       t]P                  R 4       tR tR tRtV tR# )ÚSlidingWindowCacheið  z2A sliding window cache for local attention layers.c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r   r   rO   r   )r   r   s   "€r   r   ÚSlidingWindowCache.__annotate__ó  ó   ø€ ÷ ñ ¡ð ©Cñ r   c                óH   € Wn         W n        R V n        R V n        ^ V n        R # rF   ©r   rO   r2   r4   r1   ©r%   r   rO   s   &&&r   r"   ÚSlidingWindowCache.__init__ó  ó!   € Ø ŒØŒ	ØˆŒ	ØˆŒØˆŽr   c                ó’   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  S[ P                  3,          /# ©r   r2   r4   r*   ©r9   rc   r   )r   r   s   "€r   r   r/  ú  s?   ø€ ÷ '&ñ '&Ù—H‘Hð'&Ù&(§h¡hð'&á	‰r�x‰x™Ÿ™Ð!Õ	"ñ'&r   c                ó¦  € VP                   w  r4rVVP                   R,          pV P                  fk   W4V P                  V3pW4V P                  V3p	\        P                  ! W�P
                  R7      V n        \        P                  ! W’P
                  R7      V n        V P                  V,           V P                  8:  da   V P                  p
V P                  V,           pWP                  RRW«1R3&   W P                  RRW«1R3&   V ;P                  V,          un        EMWPP                  8  dÀ   \        WPP                  ^,
          4      pV P                  RRVR1R3,          V P                  RRRV) 1R3&   V P                  RRVR1R3,          V P                  RRRV) 1R3&   VRRV) R1R3,          V P                  RRV) R1R3&   VRRV) R1R3,          V P                  RRV) R1R3&   M>VRRV P                  ) R1R3,          V n        VRRV P                  ) R1R3,          V n        V P                  V n        V P                  V P                  3# ©rN   Nr.   r,   r0   )	r6   r2   r   r9   r:   r/   r4   r1   r5   )r%   r2   r4   rÛ   rÜ   Úseq_lenrÞ   rß   r>   r?   Ú	start_idxÚend_idxÚshift_amounts   &&&          r   rk   Ú#SlidingWindowCache.update_and_fetchú  s  € ð .2¯Z©ZÑ*ˆ�wØ—\‘\ "Õ%ˆ
à�9‰9Òà d§m¡m°ZÐ@ˆGØ d§m¡m°ZÐ@ˆGÜŸš ·
±
Ô;ˆDŒIÜŸ(š( 7·,±,Ô?ˆDŒKð �;‰;˜Õ  D§M¡MÔ1àŸ™ˆIØ—k‘k GÕ+ˆGØ48�I‰I�a˜˜IÐ-¨qÐ0Ñ1Ø6<�K‰K˜˜1˜iÐ/°Ð2Ñ3Ø�KŠK˜7Õ"�Kð Ÿ™Ô&ä" 7¯M©M¸AÕ,=Ó>�Ø59·Y±Y¸qÀ!À\Á]ÐTUÐ?UÕ5V�—	‘	˜!˜Q  ,  °Ð1Ñ2Ø7;·{±{Ø�q˜,™-¨Ð*õ8�—‘˜A˜q . L = .°!Ð3Ñ4ð 6:¸!¸QÀÀÁÐPQÐ:QÕ5R�—	‘	˜!˜Q  ¡°Ð1Ñ2Ø7=¸aÀÀ\ÀMÁNÐTUÐ>UÕ7V�—‘˜A˜q < -¡.°!Ð3Ò4ð !  A¨¯© ~Ñ'7¸Ð!:Õ;�”	Ø$ Q¨¨D¯M©M¨>Ñ+;¸QÐ%>Õ?�”ØŸ-™-ˆDŒKà�y‰y˜$Ÿ+™+Ð%Ð%r   c                óR   € V P                   f   R# V P                   V P                  3# ©NrŒ   r%  ru   s   &r   r�   ÚSlidingWindowCache.state#  ó%   € à�9‰9ÒØÐØ�y‰y˜$Ÿ+™+Ð%Ð%r   c                ó–   € VeE   \        V4      ^8X  d3   Vw  V n        V n        V P                  e   V P                  V n        R # R # R # R # rF   ©r›   r2   r4   r   r1   r�   s   &&r   r�   rB  )  ó@   € àŠ=œS ›V qœ[Ø%&Ñ"ˆDŒI�t”{Ø�y‰yÒ$Ø"Ÿm™m�–ñ %ñ )‰=r   c                ó   € V P                   # rF   )r   ru   s   &r   Úget_max_cache_shapeÚ&SlidingWindowCache.get_max_cache_shape0  s   € Ø�}‰}Ðr   c                óv   € \        \        \        V P                  V P                  V P
                  34      4      # rF   ©r“   r”   r•   r   rO   r1   ru   s   &r   r–   ÚSlidingWindowCache.meta_state3  ó'   € ä”Sœ˜tŸ}™}¨d¯i©i¸¿¹ÐEÓFÓGÐGr   c                óL   € \        \        V4      w  V n        V n        V n        R # rF   ©r”   r   r   rO   r1   r�   s   &&r   r–   rL  7  ó   € ä03´C¸³Ñ-ˆŒ�t”y $¦+r   c                ó   € R # r6  rt   ru   s   &r   rv   ÚSlidingWindowCache.is_trimmable;  r8  r   c                ó   € ^ # rT   rt   rn   s   &&r   rp   ÚSlidingWindowCache.trim>  r;  r   ©r2   r   r1   rO   r4   N©r«   )rž   rŸ   r    r¡   r¢   r"   rk   r¤   r�   r¥   rH  r–   rv   rp   r¦   r§   rI  s   @r   r,  r,  ð  s�   ø‡ € Ù<÷ò ÷'&ð '&ðR ñ&ó ð&ð
 ‡\�\ñ,ó ð,òð ñHó ðHð ×Ññ<ó ð<ò÷ð r   r,  c                   óÀ   a € ] tR tRt o RtRV 3R lR lltV 3R lR lt]R 4       t]P                  R 4       t]R	 4       t
]
P                  R
 4       t
R tR tRtV tR# )ÚStaticKVCacheiB  z4A static cache that grows to accommodate all tokens.c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r.  r   )r   r   s   "€r   r   ÚStaticKVCache.__annotate__E  r0  r   c                óH   € Wn         W n        R V n        R V n        ^ V n        R # rF   r2  r3  s   &&&r   r"   ÚStaticKVCache.__init__E  r5  r   c                ó’   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  S[ P                  3,          /# r7  r8  )r   r   s   "€r   r   rZ  L  s?   ø€ ÷ &ñ &Ù—H‘Hð&Ù&(§h¡hð&á	‰r�x‰x™Ÿ™Ð!Õ	"ñ&r   c                ó¢  € VP                   w  r4rVVP                   R,          pV P                  fk   W4V P                  V3pW4V P                  V3p	\        P                  ! W�P
                  R7      V n        \        P                  ! W’P
                  R7      V n        \        V P                  V,           V P                  4      p
W P                  ,
          pV^ 8”  d_   VRRRV1R3,          V P                  RRV P                  V
1R3&   VRRRV1R3,          V P                  RRV P                  V
1R3&   W n        V P                  V P                  3# r:  )	r6   r2   r   r9   r:   r/   r4   r5   r1   )r%   r2   r4   rÛ   rÜ   r;  rÞ   rß   r>   r?   Úend_posÚactual_seq_lens   &&&         r   rk   ÚStaticKVCache.update_and_fetchL  s%  € ð .2¯Z©ZÑ*ˆ�wØ—\‘\ "Õ%ˆ
ð �9‰9ÒØ d§m¡m°ZÐ@ˆGØ d§m¡m°ZÐ@ˆGÜŸš ·
±
Ô;ˆDŒIÜŸ(š( 7·,±,Ô?ˆDŒKô �d—k‘k GÕ+¨T¯]©]Ó;ˆØ §;¡;Õ.ˆà˜AÔØ8<¸QÀÀ?ÀNÀ?ÐTUÐ=UÕ8VˆD�I‰I�a˜˜DŸK™K¨'Ð1°1Ð4Ñ5Ø:@Ø�1�o�~�o qÐ(õ;ˆD�K‰K˜˜1˜dŸk™k¨GÐ3°QÐ6Ñ7ð "ŒKà�y‰y˜$Ÿ+™+Ð%Ð%r   c                óR   € V P                   f   R# V P                   V P                  3# rA  r%  ru   s   &r   r�   ÚStaticKVCache.statef  rC  r   c                ó–   € VeE   \        V4      ^8X  d3   Vw  V n        V n        V P                  e   V P                  V n        R # R # R # R # rF   rE  r�   s   &&r   r�   rc  l  rF  r   c                óv   € \        \        \        V P                  V P                  V P
                  34      4      # rF   rK  ru   s   &r   r–   ÚStaticKVCache.meta_states  rM  r   c                óL   € \        \        V4      w  V n        V n        V n        R # rF   rO  r�   s   &&r   r–   rf  w  rP  r   c                ó   € R # rs   rt   ru   s   &r   rv   ÚStaticKVCache.is_trimmable{  rx   r   c                ód   € \        V P                  V4      pV ;P                  V,          un        V# rF   )r5   r1   rn   s   &&r   rp   ÚStaticKVCache.trim~  s%   € Ü�—‘˜QÓˆØ�Š�qÕ�Øˆr   rU  NrV  )rž   rŸ   r    r¡   r¢   r"   rk   r¤   r�   r¥   r–   rv   rp   r¦   r§   rI  s   @r   rX  rX  B  s‡   ø‡ € Ù>÷ò ÷&ð &ð4 ñ&ó ð&ð
 ‡\�\ñ,ó ð,ð ñHó ðHð ×Ññ<ó ð<ò÷ð r   rX  c                   ó8  a € ] tR tRt o RtRV 3R lR llt]V 3R lR l4       tV 3R lR ltV 3R	 lR
 lt	V 3R lR lt
V 3R lR lt]R 4       t]P                  R 4       t]R 4       t]R 4       t]P                  R 4       tR tR tR t]R 4       tRtV tR# )ÚStaticPrefixKVCachei„  aJ  Fixed-capacity KV cache with prefix fetch semantics.

``update_and_fetch`` returns only the populated prefix so normal encoder
prefill attention sees the same shapes as a dynamic cache. Decoder code can
use ``decoder_state`` to attend over the full fixed allocation together with
an attention mask that hides unpopulated entries.
c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )r   r   rO   Ú	read_onlyrB  )r   r   s   "€r   r   Ú StaticPrefixKVCache.__annotate__�  s"   ø€ ÷ #ñ #¡ð #©Cð #Á$ñ #r   c                ó|   € \        V4      V n        \        V4      V n        R V n        R V n        ^ V n        W0n        R # rF   )r   r   rO   r2   r4   r1   ro  )r%   r   rO   ro  s   &&&&r   r"   ÚStaticPrefixKVCache.__init__�  s2   € Ü˜H›ˆŒÜ˜“IˆŒ	ØˆŒ	ØˆŒØˆŒØ"Žr   c                ó"   <€ V ^8„  d   QhRRRR/# )r   r)   rm  r*   rt   )r   r   s   "€r   r   rp  –  s   ø€ ÷ ñ Ð 5ð Ð:Oñ r   c                óf   € V ! VP                   VP                  R R7      pVP                  V4       V# )T)ro  )r   rO   Úreset_from_prefix)r;   r)   r<   s   && r   Úfrom_prefixÚStaticPrefixKVCache.from_prefix•  s+   € á�E—N‘N E§J¡J¸$Ô?ˆØ×Ñ Ô&Øˆr   c                ó"   <€ V ^8„  d   QhRRRR/# )r   r)   rm  r*   Nrt   )r   r   s   "€r   r   rp  ›  s   ø€ ÷ ñ Ð'<ð Àñ r   c                ó¾   € VP                   V n         VP                  V n        VP                  V n        VP                  V n        VP                  V n        R V n        R# )TN)r2   r4   r1   r   rO   ro  )r%   r)   s   &&r   ru  Ú%StaticPrefixKVCache.reset_from_prefix›  s@   € Ø—J‘JˆŒ	Ø—l‘lˆŒØ—l‘lˆŒØŸ™ˆŒØ—J‘JˆŒ	ØˆŽr   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rJ   r   )r   r   s   "€r   r   rp  £  s   ø€ ÷ Cñ C¡Cð C©Cñ Cr   c                ó°   € WP                   8:  d   V P                   # WP                  ,           ^,
          V P                  ,          V P                  ,          # rM   )r   rO   )r%   rK   s   &&r   r8   Ú!StaticPrefixKVCache._capacity_for£  s:   € Ø—]‘]Ô"Ø—=‘=Ð ØŸ)™)Õ# aÕ'¨D¯I©IÕ5¸¿¹ÕBÐBr   c                óX   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RR/# ra   rb   )r   r   s   "€r   r   rp  ¨  s2   ø€ ÷ !ñ !¡R§X¡Xð !±r·x±xð !Éð !ÐQUñ !r   c                ó�  € V P                   e$   W0P                   P                  ^,          8:  d   R # VP                  w  rErgVP                  R,          pV P                  V4      p	\        P                  ! WEW—3VP
                  R7      p
\        P                  ! WEW˜3VP
                  R7      pV P                   ez   V P                  ^ 8”  di   V P                   RR V P                  1R3,          V
RR V P                  1R3&   V P                  RR V P                  1R3,          VRR V P                  1R3&   W n         W°n        W�n        R # )Nr.   .r,   r0   )	r2   r6   r8   r9   r:   r/   r1   r4   r   )r%   r2   r4   rK   rÛ   rÜ   r_  rÞ   rß   r=   r\   r]   s   &&&&        r   re   Ú$StaticPrefixKVCache._ensure_capacity¨  s  € Ø�9‰9Ò  V¯y©y¯©¸qÕ/AÔ%AÙà'+§z¡zÑ$ˆ�qØ—\‘\ "Õ%ˆ
Ø×%Ñ% fÓ-ˆÜ—8’8˜Q¨HÐAÈÏÉÔTˆÜ—X’X˜q¨hÐCÈ6Ï<É<ÔXˆ
Ø�9‰9Ò  T§[¡[°1¤_Ø.2¯i©i¸¸]¸t¿{¹{¸]ÈAÐ8MÕ.NˆH�S˜-˜DŸK™K˜-¨Ð*Ñ+Ø04·±¸CÀÀ4Ç;Á;ÀÐPQÐ<QÕ0RˆJ�s˜M˜dŸk™k˜M¨1Ð,Ñ-ØŒ	Ø ŒØ Žr   c                ó’   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  S[ P                  3,          /# r7  r8  )r   r   s   "€r   r   rp  ¸  sD   ø€ ÷ Tñ TÙ—H‘HðTÙ&(§h¡hðTá	‰r�x‰x™Ÿ™Ð!Õ	"ñTr   c                ó~  € V P                   '       d†   V P                  f   W3# \        P                  ! V P                  RR V P                  1R3,          V.^R7      \        P                  ! V P
                  RR V P                  1R3,          V.^R7      3# VP                  ^,          pV P                  pWC,           pV P                  WV4       WP                  RWE1R3&   W P
                  RWE1R3&   WPn        V P                  RR V P                  1R3,          V P
                  RR V P                  1R3,          3# )N.r,   r¾   )ro  r2   r9   rÁ   r1   r4   r6   re   )r%   r2   r4   r;  rÊ   r„   s   &&&   r   rk   Ú$StaticPrefixKVCache.update_and_fetch¸  s  € ð �>�>ˆ>Ø�y‰yÒ Ø�|Ð#ä—’ §	¡	¨#¨}°·±¨}¸aÐ*?Õ @À$ÐGÈaÔPÜ—’ §¡¨C°°4·;±;°ÀÐ,AÕ BÀFÐKÐRSÔTðð ð
 —*‘*˜Q•-ˆØ�{‰{ˆØ�nˆØ×Ñ˜d¨CÔ0Ø&*�	‰	�#�t�x Ð"Ñ#Ø(.�‰�C˜˜ 1Ð$Ñ%ØŒØ�y‰y˜˜m §¡˜m¨QÐ.Õ/°·±¸SÀ-ÀDÇKÁKÀ-ÐQRÐ=RÕ1SÐSÐSr   c                óª   € V P                   f   R# V P                   RR V P                  1R3,          V P                  RR V P                  1R3,          3# r‹   )r2   r1   r4   ru   s   &r   r�   ÚStaticPrefixKVCache.stateÌ  sN   € à�9‰9ÒØÐØ�y‰y˜˜m §¡˜m¨QÐ.Õ/°·±¸SÀ-ÀDÇKÁKÀ-ÐQRÐ=RÕ1SÐSÐSr   c                óü   € Vex   \        V4      ^8X  df   Vw  V n        V n        V P                  eG   V P                  P                  ^,          V n        V P                  P                  ^,          V n        R # R # R # R # rF   )r›   r2   r4   r6   r1   r   r�   s   &&r   r�   r…  Ò  s]   € àŠ=œS ›V qœ[Ø%&Ñ"ˆDŒI�t”{Ø�y‰yÒ$Ø"Ÿi™iŸo™o¨aÕ0�”Ø $§	¡	§¡°Õ 2�–ñ %ñ )‰=r   c                óR   € V P                   f   R# V P                   V P                  3# rA  r%  ru   s   &r   Údecoder_stateÚ!StaticPrefixKVCache.decoder_stateÚ  rC  r   c                óv   € \        \        \        V P                  V P                  V P
                  34      4      # rF   rK  ru   s   &r   r–   ÚStaticPrefixKVCache.meta_stateà  rM  r   c                óL   € \        \        V4      w  V n        V n        V n        R # rF   rO  r�   s   &&r   r–   r‹  ä  rP  r   c                ó   € R # rs   rt   ru   s   &r   rv   Ú StaticPrefixKVCache.is_trimmableè  rx   r   c                óv   € \        \        V4      V P                  4      pV ;P                  V,          un        V# rF   )r5   r   r1   rn   s   &&r   rp   ÚStaticPrefixKVCache.trimë  s)   € Ü”�A“˜Ÿ™Ó$ˆØ�Š�qÕ�Øˆr   c                ó   € V P                   R J # rF   r=  ru   s   &r   r>  ÚStaticPrefixKVCache.emptyð  r@  r   c                ó„   € V P                   f   ^ # V P                   P                  V P                  P                  ,           # rF   )r2   rˆ  r4   ru   s   &r   rˆ  ÚStaticPrefixKVCache.nbytesó  s.   € à�9‰9ÒÙØ�y‰y×Ñ $§+¡+×"4Ñ"4Õ4Ð4r   )r2   r   r1   ro  rO   r4   N)r«   F)rž   rŸ   r    r¡   r¢   r"   r£   rv  ru  r8   re   rk   r¤   r�   r¥   rˆ  r–   rv   rp   r>  rˆ  r¦   r§   rI  s   @r   rm  rm  „  sé   ø‡ € ñ÷#ò #ð ÷ó ð÷
ð ÷Cð C÷
!ð !÷ Tð Tð( ñTó ðTð
 ‡\�\ñ3ó ð3ð ñ&ó ð&ð
 ñHó ðHð ×Ññ<ó ð<òòò
!ð ñ5ó ö5r   rm  rF   )Útypingr   r   r   r   Úmlx.coreÚcorer9   Úmlx.nnr  rE  r   r   r	   r
   r   r   r   r   r   r   rª   rK  r�  r  r  r,  rX  rm  rt   r   r   Ú<module>r™     sŸ   ðß -Ó -å Ý Ý +Ý ,Ý 4Ý )Ý .Ý 0ß DÑ Dôd<˜oô d<ôND
˜Jô D
ôN_/�:ô _/ôDB˜
ô B÷J6÷:-+ñ -+ô`O˜ô Oôd?�Jô ?ôDs5˜*ö s5r   