+
    LV-jè„  ã            	      óª  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
Ht ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHt ]'       d   ^ RIt^ R	IHt ]! R
4      tM]! R
4      t]! R4      t]P>                  ! R4      t ]]!]!.]"3,          t#]]$]!]!3,          .]"3,          t% ! R R4      t& ! R R]&4      t' ! R R]&4      t( ! R R]&4      t) ! R R]&4      t* ! R R]&4      t+ ! R R]&4      t, ! R R]&4      t- ! R R]]]3,          4      t. ! R R ]&4      t/R]&/t0R!]1R"&   R%R# R$ llt2]&]']+](]*])],]-]/3	 F  t3]2! ]34       K  	  R# )&é    )ÚannotationsN)ÚOrderedDict)ÚCallable)ÚFutureÚThreadPoolExecutor)Úgroupby)Ú
itemgetter)ÚTYPE_CHECKINGÚAnyÚClassVarÚGenericÚ
NamedTupleÚTypeVar)Ú	ParamSpecÚPÚTzfsspec.cachingc                  óf   € ] tR t^"t$ RtRtR]R&   R R ltR R ltR	 R
 lt	R R lt
R R ltRtR# )Ú	BaseCachea;  Pass-though cache: doesn't keep anything, calls every time

Acts as base class for other cachers

Parameters
----------
blocksize: int
    How far to read ahead in numbers of bytes
fetcher: func
    Function of the form f(start, end) which gets bytes from remote as
    specified
size: int
    How big this file is
ÚnoneúClassVar[str]Únamec               ó(   € V ^8„  d   QhRRRRRRRR/# ©é   Ú	blocksizeÚintÚfetcherÚFetcherÚsizeÚreturnÚNone© )Úformats   "Ú_/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/fsspec/caching.pyÚ__annotate__ÚBaseCache.__annotate__4   s(   € ÷ 'ñ ' #ð '°ð '¸sð 'Àtñ 'ó    c                	ób   € Wn         ^ V n        W n        W0n        ^ V n        ^ V n        ^ V n        R# ©r   N)r   Únblocksr   r   Ú	hit_countÚ
miss_countÚtotal_requested_bytes)Úselfr   r   r   s   &&&&r$   Ú__init__ÚBaseCache.__init__4   s.   € Ø"ŒØˆŒØŒØŒ	ØˆŒØˆŒà%&ˆÖ"r'   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   Ústartú
int | NoneÚstopr    Úbytesr"   )r#   s   "r$   r%   r&   >   s!   € ÷ )ñ )˜Jð )¨jð )¸Uñ )r'   c                	ó€   € Vf   ^ pVf   V P                   pWP                   8¼  g   W8¼  d   R# V P                  W4      # ©Nr'   )r   r   ©r.   r3   r5   s   &&&r$   Ú_fetchÚBaseCache._fetch>   s:   € ØŠ=ØˆEØŠ<Ø—9‘9ˆDØ—I‘IÔ ¤ÙØ�|‰|˜EÓ(Ð(r'   c               ó   € V ^8„  d   QhRR/# ©r   r    r!   r"   )r#   s   "r$   r%   r&   G   s   € ÷ 'ñ '˜dñ 'r'   c                ó0   € ^ V n         ^ V n        ^ V n        R# )zAReset hit and miss counts for a more ganular report e.g. by file.N)r+   r,   r-   ©r.   s   &r$   Ú_reset_statsÚBaseCache._reset_statsG   s   € àˆŒØˆŒØ%&ˆÖ"r'   c               ó   € V ^8„  d   QhRR/# ©r   r    Ústrr"   )r#   s   "r$   r%   r&   M   s   € ÷ Fñ F˜Cñ Fr'   c           	     ó¸   € V P                   ^ 8X  d   V P                  ^ 8X  d   R# RV P                   RV P                    RV P                   RV P                   R2	# )z2Return a formatted string of the cache statistics.Ú z , z: z hits, z	 misses, z total requested bytes)r+   r,   r   r-   r?   s   &r$   Ú
_log_statsÚBaseCache._log_statsM   s^   € à�>‰>˜QÔ 4§?¡?°aÔ#7áØ�T—Y‘Y�K˜r $§.¡.Ð!1°¸¿¹Ð8IÈÐSW×SmÑSmÐRnð  oEð  Fð  	Fr'   c               ó   € V ^8„  d   QhRR/# rC   r"   )r#   s   "r$   r%   r&   T   s   € ÷ 
ñ 
˜#ñ 
r'   c                	óÒ   € R V P                   P                   RV P                   RV P                   RV P                   RV P
                   RV P                   RV P                   R2# )z

        <z:
            block size  :   z
            block count :   z
            file size   :   z
            cache hits  :   z
            cache misses:   z$
            total requested bytes: z
>
        )Ú	__class__Ú__name__r   r*   r   r+   r,   r-   r?   s   &r$   Ú__repr__ÚBaseCache.__repr__T   s�   € ð
Ø
�.‰.×
!Ñ
!Ð	"ð #Ø!Ÿ^™^Ð,ð -Ø!Ÿ\™\˜Nð +Ø!ŸY™Y˜Kð (Ø!Ÿ^™^Ð,ð -Ø!Ÿ_™_Ð-ð .$Ø$(×$>Ñ$>Ð#?ð @	ðð 	r'   )r   r   r+   r,   r*   r   r-   N)rL   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__annotations__r/   r:   r@   rG   rM   Ú__static_attributes__r"   r'   r$   r   r   "   s2   ‡ ñð !€Dˆ-Ó õ'õ)õ'õF÷
ñ 
r'   r   c                  ój   a € ] tR t^atRtRtRR V 3R llltR R ltR R ltR	 R
 lt	R R lt
RtV ;t# )Ú	MMapCacheaŠ  memory-mapped sparse file cache

Opens temporary file, which is filled blocks-wise when data is requested.
Ensure there is enough disc space in the temporary location.

This cache method might only work on posix

Parameters
----------
blocksize: int
    How far to read ahead in numbers of bytes
fetcher: Fetcher
    Function of the form f(start, end) which gets bytes from remote as
    specified
size: int
    How big this file is
location: str
    Where to create the temporary file. If None, a temporary file is
    created using tempfile.TemporaryFile().
blocks: set[int]
    Set of block numbers that have already been fetched. If None, an empty
    set is created.
multi_fetcher: MultiFetcher
    Function of the form f([(start, end)]) which gets bytes from remote
    as specified. This function is used to fetch multiple blocks at once.
    If not specified, the fetcher function is used instead.
Úmmapc               ó4   € V ^8„  d   QhRRRRRRRRRR	R
RRR/# )r   r   r   r   r   r   Úlocationz
str | NoneÚblockszset[int] | NoneÚmulti_fetcherzMultiFetcher | Noner    r!   r"   )r#   s   "r$   r%   ÚMMapCache.__annotate__€   sP   € ÷ &ñ &àð&ð ð&ð ð	&ð
 ð&ð  ð&ð +ð&ð 
ñ&r'   c                	ó”   <€ \         SV `  WV4       Vf   \        4       MTV n        W@n        W`n        V P                  4       V n        R # ©N)Úsuperr/   ÚsetrZ   rY   r[   Ú	_makefileÚcache)r.   r   r   r   rY   rZ   r[   rK   s   &&&&&&&€r$   r/   ÚMMapCache.__init__€   s<   ø€ ô 	‰Ñ˜¨TÔ2Ø%š~”c”e°6ˆŒØ ŒØ*ÔØ—^‘^Ó%ˆŽ
r'   c               ó   € V ^8„  d   QhRR/# )r   r    zmmap.mmap | bytearrayr"   )r#   s   "r$   r%   r\   �   s   € ÷ 1ñ 1Ð0ñ 1r'   c                	óT  € ^ RI p^ RIpV P                  ^ 8X  d   \        4       # V P                  e0   \
        P                  P                  V P                  4      '       g‰   V P                  f!   VP                  4       p\        4       V n
        M\        V P                  R4      pVP                  V P                  ^,
          4       VP                  R4       VP                  4        M\        V P                  R4      pVP                   ! VP                  4       V P                  4      # )r   Nzwb+ó   1zr+b)rW   Útempfiler   Ú	bytearrayrY   ÚosÚpathÚexistsÚTemporaryFiler`   rZ   ÚopenÚseekÚwriteÚflushÚfileno)r.   rW   rg   Úfds   &   r$   ra   ÚMMapCache._makefile�   sÁ   € ÛÛà�9‰9˜Œ>Ü“;Ðð �=‰=Ò ¬¯©¯©°t·}±}×(EÒ(EØ�}‰}Ò$Ø×+Ñ+Ó-�Ü!›e�•ä˜$Ÿ-™-¨Ó/�Ø�G‰G�D—I‘I •MÔ"Ø�H‰H�TŒNØ�H‰H�Jä�d—m‘m UÓ+ˆBà�yŠy˜Ÿ™› d§i¡iÓ0Ð0r'   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   r3   r4   Úendr    r6   r"   )r#   s   "r$   r%   r\   ¥   s!   € ÷ <%ñ <%˜Jð <%¨Zð <%¸Eñ <%r'   c                	óº  a € \         P                  R V RV 24       Vf   ^ pVf   S P                  pVS P                  8¼  g   W8¼  d   R# VS P                  ,          pVS P                  ,          p\	        W4^,           4      pV 3R lV 4       pS ;P
                  \        V 3R lV 4       4      ,          un        . p\        \        V4      R R7       EF  w  r‰\        \        \        ^4      V	4      4      p	V	^ ,          S P                  ,          p
\        V	R,          S P                  ,          S P                  ,           S P                  4      pS ;P                  Wº,
          ,          un        \         P                  RV	^ ,           RV	R,           RV
 RV R	2	4       VP                  W«34       S P                  P!                  V	4       S ;P"                  \%        V	4      ,          un        EK  	  V'       g   S P&                  W # S P(                  '       dp   \         P                  RV 24       \        S P)                  V4      4       F8  w  rÍW|,          w  r«\         P                  R
V
 RV 24       VS P&                  W«% K:  	  MCV F=  w  r«\         P                  RV
 RV 24       S P+                  W«4      S P&                  W«% K?  	  S P&                  W # )zMMap cache fetching Ú-r'   c              3  óL   <"  € T F  qSP                   9  g   K  Vx € K  	  R # 5ir^   ©rZ   ©Ú.0Úir.   s   & €r$   Ú	<genexpr>Ú#MMapCache._fetch.<locals>.<genexpr>±   s   øé € Ð?™;�a°4·;±;Ñ*>—’›;ùó   ƒ$š
$c              3  óL   <"  € T F  qSP                   9   g   K  ^x € K  	  R# 5i©é   Nrz   r{   s   & €r$   r~   r   ³   s   øé € ÐI© A¸T¿[¹[Ñ8HŸaša«ùr€   c                ó0   € V ^ ,          V ^,          ,
          # )r   r"   )Úxs   &r$   Ú<lambda>Ú"MMapCache._fetch.<locals>.<lambda>¿   s   € ÀÀ1ÅÈÈ!ÍÆr'   )ÚkeyzMMap get blocks z (Ú)zMMap copy block (zMMap get block (éÿÿÿÿ)ÚloggerÚdebugr   r   Úranger+   Úsumr   Ú	enumerateÚtupleÚmapr	   Úminr-   ÚappendrZ   Úupdater,   Úlenrb   r[   r   )r.   r3   rv   Ústart_blockÚ	end_blockÚblock_rangeÚneedÚrangesÚ_Ú_blocksÚsstartÚsendÚidxÚrs   f&&           r$   r:   ÚMMapCache._fetch¥   sV  ø€ Ü�‰Ð+¨E¨7°!°C°5Ð9Ô:ØŠ=ØˆEØŠ;Ø—)‘)ˆCØ�D—I‘IÔ ¤ÙØ˜tŸ~™~Õ-ˆØ˜4Ÿ>™>Õ)ˆ	Ü˜K°Q­Ó7ˆä?™;Ó?ˆà�Šœ#ÔI©ÓIÓIÕI�àˆô "¤)¨D£/Ñ7L×MÐM‰JˆAäœC¤
¨1£¨wÓ7Ó8ˆGà˜Q•Z $§.¡.Õ0ˆFä�w˜r•{ T§^¡^Õ3°d·n±nÕDÀdÇiÁiÓPˆDð ×&Ò&¨$­-Õ7Õ&Ü�L‰LØ" 7¨1¥: ,¨a°¸µ¨}¸B¸v¸hÀaÈÀvÈQÐOôð �M‰M˜6˜.Ô)ð �K‰K×Ñ˜wÔ'à�OŠOœs 7›|Õ+�OˆOñ% N÷( Ø—:‘:˜eÐ(Ð(à××ÐÜ�L‰LÐ+¨F¨8Ð4Ô5Ü# D×$6Ñ$6°vÓ$>Ö?‘�Ø%�{‘�Ü—‘Ð0°°¸¸$¸Ð@ÔAØ*+�—
‘
˜6Ò'ò @ó
 !'‘�Ü—‘Ð/°¨x°q¸¸Ð?Ô@Ø*.¯,©,°vÓ*D�—
‘
˜6Ò'ñ !'ð �z‰z˜%Ð$Ð$r'   c               ó   € V ^8„  d   QhRR/# ©r   r    údict[str, Any]r"   )r#   s   "r$   r%   r\   ã   s   € ÷ ñ ˜nñ r'   c                	ó@   € V P                   P                  4       pVR  V# ©rb   )Ú__dict__Úcopy©r.   Ústates   & r$   Ú__getstate__ÚMMapCache.__getstate__ã   s    € Ø—‘×"Ñ"Ó$ˆà�'ˆNØˆr'   c               ó    € V ^8„  d   QhRRRR/# ©r   rª   r¤   r    r!   r"   )r#   s   "r$   r%   r\   é   s   € ÷ &ñ & .ð &°Tñ &r'   c                	óf   € V P                   P                  V4       V P                  4       V n        R # r^   )r§   r”   ra   rb   r©   s   &&r$   Ú__setstate__ÚMMapCache.__setstate__é   s"   € à�‰×Ñ˜UÔ#Ø—^‘^Ó%ˆŽ
r'   )rZ   rb   rY   r[   )NNN)rL   rO   rP   rQ   rR   r   r/   ra   r:   r«   r°   rT   Ú__classcell__©rK   s   @r$   rV   rV   a   s3   ø† ñð8 €D÷&ò &õ1õ,<%õ|÷&ó &r'   rV   c                  óB   a € ] tR t^ïtRtRtR V 3R lltR R ltRtV ;t	# )ÚReadAheadCachea  Cache which reads only when we get beyond a block of data

This is a much simpler version of BytesCache, and does not attempt to
fill holes in the cache or keep fragments alive. It is best suited to
many small reads in a sequential order (e.g., reading lines from a file).
Ú	readaheadc               ó(   € V ^8„  d   QhRRRRRRRR/# r   r"   )r#   s   "r$   r%   ÚReadAheadCache.__annotate__ù   s(   € ÷ ñ  #ð °ð ¸sð Àtñ r'   c                	óR   <€ \         SV `  WV4       R V n        ^ V n        ^ V n        R# ©r'   N)r_   r/   rb   r3   rv   ©r.   r   r   r   rK   s   &&&&€r$   r/   ÚReadAheadCache.__init__ù   s'   ø€ Ü‰Ñ˜¨TÔ2ØˆŒ
ØˆŒ
ØˆŽr'   c               ó$   € V ^8„  d   QhRRRRRR/# ru   r"   )r#   s   "r$   r%   r¸   ÿ   s!   € ÷ %ñ %˜Jð %¨Zð %¸Eñ %r'   c                	óÐ  € Vf   ^ pVe   W P                   8”  d   V P                   pWP                   8¼  g   W8¼  d   R# W!,
          pWP                  8¼  dY   W P                  8:  dI   V ;P                  ^,          un        V P                  WP                  ,
          W P                  ,
           # V P                  Tu;8:  d   V P                  8  d[   M MWV ;P
                  ^,          un        V P                  WP                  ,
          R  pV\        V4      ,          pV P                  pMV ;P
                  ^,          un        Rp\        V P                   W P                  ,           4      pV ;P                  W!,
          ,          un	        V P                  W4      V n        Wn        V P                  \        V P                  4      ,           V n        W@P                  R V ,           # r8   )r   r3   rv   r+   rb   r,   r•   r’   r   r-   r   )r.   r3   rv   ÚlÚparts   &&&  r$   r:   ÚReadAheadCache._fetchÿ   sI  € ØŠ=ØˆEØŠ;˜#§	¡	œ/Ø—)‘)ˆCØ—I‘IÔ ¤ÙØ�KˆØ—J‘JÔ 3¯(©(¤?à�NŠN˜aÕ�NØ—:‘:˜e§j¡jÕ0°3¿¹Õ3CÐDÐDØ�Z‰Z˜5Ö+ 4§8¡8×+à�OŠO˜qÕ �OØ—:‘:˜e§j¡jÕ0Ð2Ð3ˆDØ”�T“�NˆAØ—H‘H‰Eð �OŠO˜qÕ �OØˆDÜ�$—)‘)˜S§>¡>Õ1Ó2ˆØ×"Ò" c¥kÕ1Õ"Ø—\‘\ %Ó-ˆŒ
ØŒ
Ø—:‘:¤ D§J¡J£Õ/ˆŒØ—j‘j  !�nÕ$Ð$r'   )rb   rv   r3   ©
rL   rO   rP   rQ   rR   r   r/   r:   rT   r²   r³   s   @r$   rµ   rµ   ï   s#   ø† ñð €D÷ð ÷%ó %r'   rµ   c                  óB   a € ] tR tRtRtRtR V 3R lltR R ltRtV ;t	# )	ÚFirstChunkCachei  z�Caches the first block of a file only

This may be useful for file types where the metadata is stored in the header,
but is randomly accessed.
Úfirstc               ó(   € V ^8„  d   QhRRRRRRRR/# r   r"   )r#   s   "r$   r%   ÚFirstChunkCache.__annotate__&  s(   € ÷ (ñ ( #ð (°ð (¸sð (Àtñ (r'   c                	óF   <€ W8”  d   Tp\         SV `  WV4       R V n        R # r^   )r_   r/   rb   r»   s   &&&&€r$   r/   ÚFirstChunkCache.__init__&  s$   ø€ ØÔàˆIÜ‰Ñ˜¨TÔ2Ø#'ˆŽ
r'   c               ó$   € V ^8„  d   QhRRRRRR/# ru   r"   )r#   s   "r$   r%   rÇ   -  s!   € ÷ ,ñ ,˜Jð ,¨Zð ,¸Eñ ,r'   c                	óÊ  € T;'       g    ^ pWP                   8”  d   \        P                  R4       R# \        W P                   4      pWP                  8  EdC   V P
                  f±   V ;P                  ^,          un        W P                  8”  dD   V ;P                  V,          un        V P                  ^ V4      pVRV P                   V n        W1R # V P                  ^ V P                  4      V n        V ;P                  V P                  ,          un        V P
                  W pW P                  8”  dL   V ;P                  W P                  ,
          ,          un        W@P                  V P                  V4      ,          pV ;P                  ^,          un	        V# V ;P                  ^,          un        V ;P                  W!,
          ,          un        V P                  W4      # )r   z,FirstChunkCache: requested start > file sizer'   N)
r   r‹   rŒ   r’   r   rb   r,   r-   r   r+   )r.   r3   rv   ÚdatarÀ   s   &&&  r$   r:   ÚFirstChunkCache._fetch-  sT  € Ø—
�
˜ˆØ—9‘9ÔÜ�L‰LÐGÔHÙä�#—y‘yÓ!ˆà—>‘>Õ!Ø�z‰zÒ!Ø—’ 1Õ$•ØŸ™Ô'Ø×.Ò.°#Õ5Õ.ØŸ<™<¨¨3Ó/�DØ!%Ð&6¨¯©Ð!7�D”JØ ˜<Ð'Ø!Ÿ\™\¨!¨T¯^©^Ó<�”
Ø×*Ò*¨d¯n©nÕ<Õ*Ø—:‘:˜eÐ(ˆDØ—^‘^Ô#Ø×*Ò*¨c·N±NÕ.BÕBÕ*ØŸ™ T§^¡^°SÓ9Õ9�Ø�NŠN˜aÕ�NØˆKà�OŠO˜qÕ �OØ×&Ò&¨#­+Õ5Õ&Ø—<‘< Ó+Ð+r'   r¦   rÂ   r³   s   @r$   rÄ   rÄ     s#   ø† ñð €D÷(ð (÷,ó ,r'   rÄ   c                  ó‚   a € ] tR tRtRtRtRR V 3R llltR tR R ltR	 R
 lt	R R lt
R V 3R lltR R ltRtV ;t# )Ú
BlockCacheiK  a   
Cache holding memory as a set of blocks.

Requests are only ever made ``blocksize`` at a time, and are
stored in an LRU cache. The least recently accessed block is
discarded when more than ``maxblocks`` are stored.

Parameters
----------
blocksize : int
    The number of bytes to store in each block.
    Requests are only ever made for ``blocksize``, so this
    should balance the overhead of making a request against
    the granularity of the blocks.
fetcher : Callable
size : int
    The total size of the file being cached.
maxblocks : int
    The maximum number of blocks to cache for. The maximum memory
    use for this cache is then ``blocksize * maxblocks``.
Ú
blockcachec          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©	r   r   r   r   r   r   Ú	maxblocksr    r!   r"   )r#   s   "r$   r%   ÚBlockCache.__annotate__d  s;   € ÷ Uñ UØðUØ'.ðUØ69ðUØFIðUà	ñUr'   c                	óÌ   <€ \         SV `  WV4       \        P                  ! W1,          4      V n        W@n        \        P                  ! V4      ! V P                  4      V n	        R # r^   )
r_   r/   ÚmathÚceilr*   rÓ   Ú	functoolsÚ	lru_cacheÚ_fetch_blockÚ_fetch_block_cached©r.   r   r   r   rÓ   rK   s   &&&&&€r$   r/   ÚBlockCache.__init__d  sJ   ø€ ô 	‰Ñ˜¨TÔ2Ü—y’y Õ!1Ó2ˆŒØ"ŒÜ#,×#6Ò#6°yÔ#AÀ$×BSÑBSÓ#TˆÖ r'   c                ó6   € V P                   P                  4       # ©zz
The statistics on the block cache.

Returns
-------
NamedTuple
    Returned directly from the LRU Cache used internally.
©rÛ   Ú
cache_infor?   s   &r$   rá   ÚBlockCache.cache_infol  ó   € ð ×'Ñ'×2Ñ2Ó4Ð4r'   c               ó   € V ^8„  d   QhRR/# r£   r"   )r#   s   "r$   r%   rÔ   w  s   € ÷ ñ ˜nñ r'   c                	ó$   € V P                   pVR  V# )rÛ   ©r§   r©   s   & r$   r«   ÚBlockCache.__getstate__w  s   € Ø—‘ˆØÐ'Ð(Øˆr'   c               ó    € V ^8„  d   QhRRRR/# r®   r"   )r#   s   "r$   r%   rÔ   |  s   € ÷ 
ñ 
 .ð 
°Tñ 
r'   c                	ó    € V P                   P                  V4       \        P                  ! VR ,          4      ! V P                  4      V n        R# )rÓ   N)r§   r”   rØ   rÙ   rÚ   rÛ   r©   s   &&r$   r°   ÚBlockCache.__setstate__|  s:   € Ø�‰×Ñ˜UÔ#Ü#,×#6Ò#6°u¸[Õ7IÔ#JØ×Ñó$
ˆÖ r'   c               ó$   € V ^8„  d   QhRRRRRR/# ru   r"   )r#   s   "r$   r%   rÔ   ‚  s!   € ÷ 

ñ 

˜Jð 

¨Zð 

¸Eñ 

r'   c                	óÔ   € Vf   ^ pVf   V P                   pWP                   8¼  g   W8¼  d   R# V P                  WWP                  ,          V^,
          V P                  ,          4      # r8   )r   Ú_read_cacher   )r.   r3   rv   s   &&&r$   r:   ÚBlockCache._fetch‚  sY   € ØŠ=ØˆEØŠ;Ø—)‘)ˆCØ—I‘IÔ ¤Ùà×ÑØ˜§¡Õ/°#¸µ'¸d¿n¹nÕ1Ló
ð 	
r'   c               ó    € V ^8„  d   QhRRRR/# )r   Úblock_numberr   r    r6   r"   )r#   s   "r$   r%   rÔ   Ž  s   € ÷ ñ ¨ð °ñ r'   c                ób  <€ WP                   8”  d   \        RV RV P                    R24      hWP                  ,          pW P                  ,           pV ;P                  W2,
          ,          un        V ;P                  ^,          un        \
        P                  RV4       \        SV `!  W#4      pV# )ú-
Fetch the block of data for `block_number`.
ú'block_number=ú(' is greater than the number of blocks (r‰   zBlockCache fetching block %d)	r*   Ú
ValueErrorr   r-   r,   r‹   Úinfor_   r:   )r.   rð   r3   rv   Úblock_contentsrK   s   &&   €r$   rÚ   ÚBlockCache._fetch_blockŽ  s–   ø€ ð Ÿ,™,Ô&ÜØ   ð /)Ø)-¯©¨°að9óð ð
 Ÿ~™~Õ-ˆØ—n‘nÕ$ˆØ×"Ò" c¥kÕ1Õ"Ø�Š˜1Õ�Ü�‰Ð2°LÔAÜ™™¨Ó3ˆØÐr'   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©r   r3   r   rv   Ústart_block_numberÚend_block_numberr    r6   r"   )r#   s   "r$   r%   rÔ      ó4   € ÷ (!ñ (!Øð(!Ø"ð(!Ø8;ð(!ØORð(!à	ñ(!r'   c           	     óÖ  € WP                   ,          pW P                   ,          pV^ 8X  d   V P                   pV ;P                  ^,          un        W48X  d   V P                  V4      pWuV # V P                  V4      VR .pVP                  \	        V P                  \        V^,           V4      4      4       VP                  V P                  V4      RV 4       RP                  V4      # ©zº
Read from our block cache.

Parameters
----------
start, end : int
    The start and end byte positions.
start_block_number, end_block_number : int
    The start and end block numbers.
Nr'   ©r   r+   rÛ   Úextendr‘   r�   r“   Újoin©	r.   r3   rv   rû   rü   Ú	start_posÚend_posÚblockÚouts	   &&&&&    r$   rí   ÚBlockCache._read_cache   sØ   € ð ŸN™NÕ*ˆ	ØŸ™Õ&ˆØ�aŒ<Ø—n‘nˆGà�Š˜!Õ�ØÔ1Ø×3Ñ3Ð4FÓGˆEØ 7Ð+Ð+ð ×+Ñ+Ð,>Ó?À	À
ÐKÐLˆCð
 �J‰JÜØ×,Ñ,ÜÐ,¨qÕ0Ð2BÓCóôð �J‰J�t×/Ñ/Ð0@ÓAÀ(À7ÐKÔLà—8‘8˜C“=Ð r'   )rÛ   rÓ   r*   ©é    )rL   rO   rP   rQ   rR   r   r/   rá   r«   r°   r:   rÚ   rí   rT   r²   r³   s   @r$   rÏ   rÏ   K  sC   ø† ñð, €D÷Uò Uò	5õõ

õ

÷ð ÷$(!ó (!r'   rÏ   c                  ó^   a € ] tR tRt$ RtRtR]R&   RR V 3R llltR R	 ltR
 R lt	Rt
V ;t# )Ú
BytesCacheiË  a+  Cache which holds data in a in-memory bytes object

Implements read-ahead by the block size, for semi-random reads progressing
through the file.

Parameters
----------
trim: bool
    As we read more data, whether to discard the start of the buffer when
    we are more than a blocksize ahead of it.
r6   r   r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   r   r   r   r   r   ÚtrimÚboolr    r!   r"   )r#   s   "r$   r%   ÚBytesCache.__annotate__Ú  s4   € ÷ ñ ØðØ'.ðØ69ðØAEðà	ñr'   c                	ó^   <€ \         SV `  WV4       R V n        RV n        RV n        W@n        R# rº   )r_   r/   rb   r3   rv   r  )r.   r   r   r   r  rK   s   &&&&&€r$   r/   ÚBytesCache.__init__Ú  s.   ø€ ô 	‰Ñ˜¨TÔ2ØˆŒ
Ø!%ˆŒ
Ø#ˆŒØŽ	r'   c               ó$   € V ^8„  d   QhRRRRRR/# ru   r"   )r#   s   "r$   r%   r  ã  s&   € ÷ Gñ G˜Jð G¨Zð G¸Eñ Gr'   c                	ó8	  € Vf   ^ pVf   V P                   pWP                   8¼  g   W8¼  d   R# V P                  ev   WP                  8¼  df   V P                  eX   W P                  8  dH   WP                  ,
          pV ;P                  ^,          un        V P                  W3V,           V,
           # V P
                  '       d(   \        V P                   W P
                  ,           4      pMTpWA8X  g   WP                   8”  d   R# V P                  e   WP                  8  du   V P                  e   W P                  8”  dW   V ;P                  WA,
          ,          un        V ;P                  ^,          un        V P                  W4      V n        Wn        EMV P                  f   Q hV P                  f   Q hV ;P                  ^,          un        WP                  8  dÑ   V P                  e#   V P                  V,
          V P
                  8”  d>   V ;P                  WA,
          ,          un        V P                  W4      V n        Wn        EMWV ;P                  V P                  V,
          ,          un        V P                  WP                  4      pWn        WPP                  ,           V n        MôV P                  eç   W@P                  8”  d×   V P                  V P                   8”  d   MºW P                  ,
          V P
                  8”  d=   V ;P                  WA,
          ,          un        V P                  W4      V n        Wn        M]V ;P                  W@P                  ,
          ,          un        V P                  V P                  V4      pV P                  V,           V n        V P                  \        V P                  4      ,           V n        WP                  ,
          pV P                  W3V,           V,
           pV P                  '       dŒ   V P                  V P                  ,
          V P
                  ^,           ,          pV^8”  dP   V ;P                  V P
                  V,          ,          un        V P                  V P
                  V,          R  V n        V# r8   )r   r3   rv   r+   rb   r   r’   r-   r,   r   r•   r  )r.   r3   rv   ÚoffsetÚbendÚnewr  Únums   &&&     r$   r:   ÚBytesCache._fetchã  s  € ð Š=ØˆEØŠ;Ø—)‘)ˆCØ—I‘IÔ ¤Ùà�J‰JÒ"ØŸ™Ô#Ø—‘Ò$Ø—h‘h”ð ŸZ™ZÕ'ˆFØ�NŠN˜aÕ�NØ—:‘:˜f°¥|°eÕ';Ð<Ð<à�>�>ˆ>Ü�t—y‘y #¯©Õ"6Ó7‰DàˆDàŒ=˜E§I¡IÔ-Ùà�J‰JÒ %¯*©*Ô"4Ø�H‰HÒ §h¡h¤ð ×&Ò&¨$­,Õ6Õ&Ø�OŠO˜qÕ �OØŸ™ eÓ2ˆDŒJØŽJà—:‘:Ò)Ð)Ð)Ø—8‘8Ò'Ð'Ð'Ø�OŠO˜qÕ �Oà—z‘zÔ!Ø—8‘8Ò# t§x¡x°#¥~¸¿¹Ô'FØ×.Ò.°$µ,Õ>Õ.Ø!%§¡¨eÓ!:�D”JØ!&–Jà×.Ò.°$·*±*¸uÕ2DÕDÕ.ØŸ,™, u¯j©jÓ9�CØ!&”JØ!$§z¡zÕ!1�D•JØ—‘Ò%¨$·±¬/Ø—8‘8˜dŸi™iÔ'ØØŸ8™8•^ d§n¡nÔ4Ø×.Ò.°$µ,Õ>Õ.Ø!%§¡¨eÓ!:�D”JØ!&•Jà×.Ò.°$¿¹µ/ÕAÕ.ØŸ,™, t§x¡x°Ó6�CØ!%§¡¨cÕ!1�D”Jà—:‘:¤ D§J¡J£Õ/ˆŒØŸ™Õ#ˆØ�j‰j˜¨3¥,°Õ"6Ð7ˆØ�9�9ˆ9Ø—8‘8˜dŸj™jÕ(¨d¯n©n¸qÕ.@ÕAˆCØ�QŒwØ—
’
˜dŸn™n¨sÕ2Õ2•
Ø!ŸZ™Z¨¯©¸Õ(<Ð(>Ð?�”
Øˆ
r'   c               ó   € V ^8„  d   QhRR/# )r   r    r   r"   )r#   s   "r$   r%   r  ,  s   € ÷ ñ ˜ñ r'   c                	ó,   € \        V P                  4      # r^   )r•   rb   r?   s   &r$   Ú__len__ÚBytesCache.__len__,  s   € Ü�4—:‘:‹Ðr'   )rb   rv   r3   r  )T)rL   rO   rP   rQ   rR   r   rS   r/   r:   r  rT   r²   r³   s   @r$   r  r  Ë  s/   ø‡ ñ
ð "€Dˆ-Ó!÷ò õG÷Ró r'   r  c                  óR   a € ] tR tRt$ RtRtR]R&   RR V 3R llltR R	 ltR
t	V ;t
# )ÚAllBytesi0  z!Cache entire contents of the fileÚallr   r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   r   r4   r   zFetcher | Noner   rÌ   zbytes | Noner    r!   r"   )r#   s   "r$   r%   ÚAllBytes.__annotate__5  s<   € ÷ ñ àðð  ðð ð	ð
 ðð 
ñr'   c                	óì   <€ \         SV `  WV4       VfY   V ;P                  ^,          un        V ;P                  V P                  ,          un        V P                  ^ V P                  4      pW@n        R # r^   )r_   r/   r,   r-   r   r   rÌ   )r.   r   r   r   rÌ   rK   s   &&&&&€r$   r/   ÚAllBytes.__init__5  sU   ø€ ô 	‰Ñ˜¨TÔ2ØŠ<Ø�OŠO˜qÕ �OØ×&Ò&¨$¯)©)Õ3Õ&Ø—<‘<  4§9¡9Ó-ˆDØŽ	r'   c               ó$   € V ^8„  d   QhRRRRRR/# r2   r"   )r#   s   "r$   r%   r"  C  s!   € ÷ %ñ %˜Jð %¨jð %¸Uñ %r'   c                	óP   € V ;P                   ^,          un         V P                  W # )rƒ   )r+   rÌ   r9   s   &&&r$   r:   ÚAllBytes._fetchC  s   € Ø�Š˜!Õ�Ø�y‰y˜Ð$Ð$r'   )rÌ   )NNNN)rL   rO   rP   rQ   rR   r   rS   r/   r:   rT   r²   r³   s   @r$   r  r  0  s$   ø‡ Ù+à€Dˆ-Ó÷ò ÷%ó %r'   r  c                  óº   a € ] tR tRt$ RtRtR]R&   RR V 3R lllt]R 4       t	]	P                  R	 4       t	]R
 4       t]P                  R 4       tR R ltRtV ;t# )ÚKnownPartsOfAFileiH  aq  
Cache holding known file parts.

Parameters
----------
blocksize: int
    How far to read ahead in numbers of bytes
fetcher: func
    Function of the form f(start, end) which gets bytes from remote as
    specified
size: int
    How big this file is
data: dict
    A dictionary mapping explicit `(start, stop)` file-offset tuples
    with known bytes.
strict: bool, default True
    Whether to fetch reads that go beyond a known byte-range boundary.
    If `False`, any read that ends outside a known part will be zero
    padded. Note that zero padding will not be used for reads that
    begin outside a known byte-range.
Úpartsr   r   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   r   r   r   r   r   rÌ   z#dict[tuple[int, int], bytes] | NoneÚstrictr  r›   r   r"   )r#   s   "r$   r%   ÚKnownPartsOfAFile.__annotate__a  sF   € ÷ ñ àðð ðð ð	ð
 2ðð ðð ñr'   c                	ó  <€ \         SV `  WV4       WPn        V'       dÛ   \        VP	                  4       4      pV^ ,          .pVP                  V^ ,          4      .p	VR,           Fv  w  r«VR,          w  rÍW­8X  d.   WË3VR&   V	R;;,          VP                  W«34      ,          uu&   KC  VP                  W«34       V	P                  VP                  W«34      4       Kx  	  \        \        W‰4      4      V n	        R# / V n	        R# )r   :rƒ   NNNrŠ   )
r_   r/   r,  ÚsortedÚkeysÚpopr“   ÚdictÚziprÌ   )r.   r   r   r   rÌ   r,  r›   Úold_offsetsÚoffsetsrZ   r3   r5   Ústart0Ústop0rK   s   &&&&&&,       €r$   r/   ÚKnownPartsOfAFile.__init__a  sÔ   ø€ ô 	‰Ñ˜¨TÔ2ØŒ÷ Ü  §¡£Ó-ˆKØ" 1•~Ð&ˆGØ—h‘h˜{¨1�~Ó.Ð/ˆFØ*¨2Ÿ˜‘�Ø '¨¥‘�Ø”>Ø#) .�G˜B‘KØ˜2—J $§(¡(¨E¨=Ó"9Õ9•Jà—N‘N E =Ô1Ø—M‘M $§(¡(¨E¨=Ó"9Ö:ñ  /ô œS Ó1Ó2ˆDŽIàˆDŽIr'   c                	ó:   € \        R  V P                   4       4      # )c              3  óN   "  € T F  q^,          V^ ,          ,
          x € K  	  R# 5ir‚   r"   )r|   r›   s   & r$   r~   Ú)KnownPartsOfAFile.size.<locals>.<genexpr>�  s   é € Ð2©	 1�Q•4˜!˜A�$—;’;«	ùs   ‚#%)rŽ   rÌ   r?   s   &r$   r   ÚKnownPartsOfAFile.size  s   € äÑ2¨¯	ª	Ó2Ó2Ð2r'   c                	ó   € R # r^   r"   ©r.   Úvalues   &&r$   r   r<  ƒ  ó   € ár'   c                	ó,   € \        V P                  4      # r^   )r•   rÌ   r?   s   &r$   r*   ÚKnownPartsOfAFile.nblocks‡  s   € ä�4—9‘9‹~Ðr'   c                	ó   € R # r^   r"   r>  s   &&r$   r*   rB  ‹  r@  r'   c               ó$   € V ^8„  d   QhRRRRRR/# r2   r"   )r#   s   "r$   r%   r-  �  s!   € ÷ ,ñ ,˜Jð ,¨jð ,¸Uñ ,r'   c                	óì  € \         P                  R W4       Vf   ^ pVf   V P                  pV ;P                  W!,
          ,          un        RpRp^ p\	        V P
                  4       EF¹  w  rgYau;8:  d   V8  d\   M MXYbu;8:  d   V8:  dK   M MGW,
          pV ;P                  ^,          un        V P
                  Wg3,          WˆV,           V,
           u # W&8:  d    EMFV'       dN   We8”  dH   V ;P                  ^,          un        V P                  '       d   \        hVRWe,
          ,          ,          pYau;8:  d   V8  dL   M MHV ;P                  ^,          un        W,
          pV P
                  Wg3,          WˆV,           V,
           pRpM‘W8  d;   W'8”  d5   V ;P                  ^,          un        W0P
                  Wg3,          ,          pMQYbu;8:  d   V8:  dD   M M@V ;P                  ^,          un        W0P
                  Wg3,          RW&,
           ,           pVu # TpEK¼  	  V ;P                  ^,          un        V'       d+   V P                  '       g   VRW%,
          ,          ,           pV# \        h)zKnown parts request %s %sNr'   Fó    T)
r‹   rŒ   r   r-   r/  rÌ   r+   r,   r,  rõ   )	r.   r3   r5   r  ÚstartedÚloc_oldÚloc0Úloc1Úoffs	   &&&      r$   r:   ÚKnownPartsOfAFile._fetch�  sÉ  € Ü�‰Ð0°%Ô>ØŠ=ØˆEØŠ<Ø—9‘9ˆDØ×"Ò" d¥lÕ2Õ"ØˆØˆØˆÜ  §¡×+‰JˆDØÖ$ ×$¨4Ö+?¸4×+?à•l�Ø—’ !Õ#•Ø—y‘y $ Õ.¨s¸4µZÀ%Õ5GÐHÒHØŒ|Úß˜4œ>à—’ 1Õ$•Ø—;—;�;Ü$Ð$Ø�w $¥.Õ1Õ1�ØÖ#˜t×#à—’ !Õ#•Ø•l�Ø—i‘i  Õ-¨c¸$µJÀÕ4FÐG�Ø‘Ø” $¤+à—’ !Õ#•Ø—y‘y $ Õ.Õ.‘ØÖ% ×%à—’ !Õ#•ØŸI™I t lÕ3°M°dµkÐBÕB�Ø’
Ø‹Gñ; ,ð< 	�Š˜1Õ�ß˜4Ÿ;Ÿ;˜;Ø˜ 4¥>Õ2Õ2ˆCØˆJÜÐr'   )rÌ   r,  )NF)rL   rO   rP   rQ   rR   r   rS   r/   Úpropertyr   Úsetterr*   r:   rT   r²   r³   s   @r$   r)  r)  H  s€   ø‡ ñð, "€Dˆ-Ó!÷ò ð< ñ3ó ð3ð 
‡[�[ñó ðð ñó ðð ‡^�^ñó ð÷,ó ,r'   r)  c                  óp   € ] tR tRtRt ! R R]4      tRR R lltR R ltR	 R
 lt	R R lt
R R ltRtR# )ÚUpdatableLRUi¾  z\
Custom implementation of LRU cache that allows updating keys

Used by BackgroundBlockCache
c                  ó@   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   RtR# )	ÚUpdatableLRU.CacheInfoiÅ  r   ÚhitsÚmissesÚmaxsizeÚcurrsizer"   N)rL   rO   rP   rQ   rS   rT   r"   r'   r$   Ú	CacheInforR  Å  s   ‡ Ø‹	Ø‹Ø‹Ø�r'   rW  c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚfunczCallable[P, T]Úmax_sizer   r    r!   r"   )r#   s   "r$   r%   ÚUpdatableLRU.__annotate__Ë  s!   € ÷ &ñ &˜^ð &°sð &ÀTñ &r'   c                	ó¢   € \         P                  ! 4       V n        Wn        W n        ^ V n        ^ V n        \        P                  ! 4       V n	        R# r)   )
Úcollectionsr   Ú_cacheÚ_funcÚ	_max_sizeÚ_hitsÚ_missesÚ	threadingÚLockÚ_lock)r.   rY  rZ  s   &&&r$   r/   ÚUpdatableLRU.__init__Ë  s8   € Ü+6×+BÒ+BÓ+DˆŒØŒ
Ø!ŒØˆŒ
ØˆŒÜ—^’^Ó%ˆŽ
r'   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚargszP.argsÚkwargszP.kwargsr    r   r"   )r#   s   "r$   r%   r[  Ó  s!   € ÷ ñ ˜fð °ð ¸Qñ r'   c                	óÆ  € V'       d   \        R VP                  4        24      hV P                  ;_uu_ 4        WP                  9   dR   V P                  P	                  V4       V ;P
                  ^,          un        V P                  V,          uuRRR4       #  RRR4       V P                  ! V/ VB pV P                  ;_uu_ 4        W0P                  V&   V ;P                  ^,          un        \        V P                  4      V P                  8”  d   V P                  P                  RR7       RRR4       V#   + '       g   i     L¨; i  + '       g   i     T# ; i)z Got unexpected keyword argument NF©Úlast)Ú	TypeErrorr0  re  r^  Úmove_to_endra  r_  rb  r•   r`  Úpopitem)r.   rh  ri  Úresults   &*, r$   Ú__call__ÚUpdatableLRU.__call__Ó  sð   € ßÜÐ>¸v¿{¹{»}¸oÐNÓOÐOØ�Z�Z‹ZØ—{‘{Ô"Ø—‘×'Ñ'¨Ô-Ø—
’
˜a••
Ø—{‘{ 4Õ(÷	 ŠZØ"÷ ð —’˜TÐ, VÑ,ˆà�Z�Z‹ZØ &�K‰K˜ÑØ�LŠL˜AÕ�LÜ�4—;‘;Ó $§.¡.Ô0Ø—‘×#Ñ#¨Ð#Ô/÷	 ð ˆ÷ �Zú÷ ŽZð ˆús   ¹AD<Ã
A(EÄ<E	ÅE 	c               ó    € V ^8„  d   QhRRRR/# )r   rh  r   r    r  r"   )r#   s   "r$   r%   r[  æ  s   € ÷ 'ñ ' 3ð '¨4ñ 'r'   c                	ó„   € V P                   ;_uu_ 4        WP                  9   uuR R R 4       #   + '       g   i     R # ; ir^   )re  r^  )r.   rh  s   &*r$   Úis_key_cachedÚUpdatableLRU.is_key_cachedæ  s!   € Ø�Z�Z‹ZØŸ;™;Ñ&÷ �Z�Z‹Zús   •.®?	c               ó$   € V ^8„  d   QhRRRRRR/# )r   rp  r   rh  r   r    r!   r"   )r#   s   "r$   r%   r[  ê  s!   € ÷ 0ñ 0˜að 0¨ð 0°ñ 0r'   c                	ó  € V P                   ;_uu_ 4        WP                  V&   \        V P                  4      V P                  8”  d   V P                  P	                  R R7       RRR4       R#   + '       g   i     R# ; i)Frk  N)re  r^  r•   r`  ro  )r.   rp  rh  s   &&*r$   Úadd_keyÚUpdatableLRU.add_keyê  sM   € Ø�Z�Z‹ZØ &�K‰K˜ÑÜ�4—;‘;Ó $§.¡.Ô0Ø—‘×#Ñ#¨Ð#Ô/÷ �Z�ZŠZús   •AA.Á.A?	c               ó   € V ^8„  d   QhRR/# ©r   r    rR  r"   )r#   s   "r$   r%   r[  ð  s   € ÷ ñ Ð2ñ r'   c           	     	óô   € V P                   ;_uu_ 4        V P                  V P                  \        V P                  4      V P
                  V P                  R 7      uuRRR4       #   + '       g   i     R# ; i))rU  rV  rS  rT  N)re  rW  r`  r•   r^  ra  rb  r?   s   &r$   rá   ÚUpdatableLRU.cache_infoð  sI   € Ø�Z�Z‹ZØ—>‘>ØŸ™Ü˜TŸ[™[Ó)Ø—Z‘ZØ—|‘|ð	 "ó ÷ �Z�Z‹Zús   •AA&Á&A7	)r^  r_  ra  re  r`  rb  N)é€   )rL   rO   rP   rQ   rR   r   rW  r/   rq  ru  ry  rá   rT   r"   r'   r$   rP  rP  ¾  s1   † ñô�Jô ÷&õõ&'õ0÷ñ r'   rP  c                  ó˜   a € ] tR tRt$ RtRtR]R&   RR V 3R llltR R	 ltR
 R lt	R R lt
R R ltRR V 3R llltR R ltRtV ;t# )ÚBackgroundBlockCacheiú  a/  
Cache holding memory as a set of blocks with pre-loading of
the next block in the background.

Requests are only ever made ``blocksize`` at a time, and are
stored in an LRU cache. The least recently accessed block is
discarded when more than ``maxblocks`` are stored. If the
next block is not in cache, it is loaded in a separate thread
in non-blocking way.

Parameters
----------
blocksize : int
    The number of bytes to store in each block.
    Requests are only ever made for ``blocksize``, so this
    should balance the overhead of making a request against
    the granularity of the blocks.
fetcher : Callable
size : int
    The total size of the file being cached.
maxblocks : int
    The maximum number of blocks to cache for. The maximum memory
    use for this cache is then ``blocksize * maxblocks``.
Ú
backgroundr   r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# rÒ   r"   )r#   s   "r$   r%   Ú!BackgroundBlockCache.__annotate__  s4   € ÷ 3ñ 3Øð3Ø'.ð3Ø69ð3ØFIð3à	ñ3r'   c                	ó  <€ \         SV `  WV4       \        P                  ! W1,          4      V n        W@n        \        V P                  V4      V n        \        ^R7      V n
        RV n        RV n        \        P                  ! 4       V n        R# )rƒ   ©Úmax_workersN)r_   r/   rÖ   r×   r*   rÓ   rP  rÚ   rÛ   r   Ú_thread_executorÚ_fetch_future_block_numberÚ_fetch_futurerc  rd  Ú_fetch_future_lockrÜ   s   &&&&&€r$   r/   ÚBackgroundBlockCache.__init__  sm   ø€ ô 	‰Ñ˜¨TÔ2Ü—y’y Õ!1Ó2ˆŒØ"ŒÜ#/°×0AÑ0AÀ9Ó#MˆÔ ä 2¸qÔ AˆÔØ6:ˆÔ'Ø37ˆÔÜ"+§.¢.Ó"2ˆÖr'   c               ó   € V ^8„  d   QhRR/# r|  r"   )r#   s   "r$   r%   r„  #  s   € ÷ 	5ñ 	5Ð2ñ 	5r'   c                ó6   € V P                   P                  4       # rß   rà   r?   s   &r$   rá   ÚBackgroundBlockCache.cache_info#  rã   r'   c               ó   € V ^8„  d   QhRR/# r£   r"   )r#   s   "r$   r%   r„  .  s   € ÷ ñ ˜nñ r'   c                	ó<   € V P                   pVR  VR VR VR VR V# )rÛ   rˆ  r‰  rŠ  r‹  ræ   r©   s   & r$   r«   Ú!BackgroundBlockCache.__getstate__.  s<   € Ø—‘ˆØÐ'Ð(ØÐ$Ð%ØÐ.Ð/Ø�/Ð"ØÐ&Ð'Øˆr'   c               ó   € V ^8„  d   QhRR/# r=   r"   )r#   s   "r$   r%   r„  7  s   € ÷ 3ñ 3 Tñ 3r'   c                	óò   € V P                   P                  V4       \        V P                  VR ,          4      V n        \        ^R7      V n        RV n        RV n        \        P                  ! 4       V n        R# )rÓ   r†  N)r§   r”   rP  rÚ   rÛ   r   rˆ  r‰  rŠ  rc  rd  r‹  r©   s   &&r$   r°   Ú!BackgroundBlockCache.__setstate__7  sZ   € Ø�‰×Ñ˜UÔ#Ü#/°×0AÑ0AÀ5ÈÕCUÓ#VˆÔ Ü 2¸qÔ AˆÔØ*.ˆÔ'Ø!ˆÔÜ"+§.¢.Ó"2ˆÖr'   c               ó$   € V ^8„  d   QhRRRRRR/# ru   r"   )r#   s   "r$   r%   r„  ?  s&   € ÷ J
ñ J
˜Jð J
¨Zð J
¸Eñ J
r'   c                	óV  € Vf   ^ pVf   V P                   pWP                   8¼  g   W8¼  d   R# WP                  ,          pW P                  ,          pR pR pV P                  ;_uu_ 4        V P                  eê   V P                  f   Q hV P                  P                  4       '       dc   \        P                  R4       V P                  P                  V P                  P                  4       V P                  4       R V n        R V n        MW\        VV P                  u;8*  ;'       d    V8*  Mu 4      pV'       d'   V P                  pV P                  pR V n        R V n        R R R 4       Ve@   \        P                  R4       V P                  P                  VP                  4       V4       \        W4^,           4       F  pV P                  V4       K  	  V^,           p	V P                  ;_uu_ 4        V P                  fd   W�P                  8:  dT   V P                  P                  V	4      '       g3   W�n        V P                  P!                  V P"                  V	R4      V n        R R R 4       V P%                  VVVVR7      #   + '       g   i     EL*; i  + '       g   i     L9; i)Nr'   z3BlockCache joined background fetch without waiting.z(BlockCache waiting for background fetch.Úasync)rû   rü   )r   r   r‹  rŠ  r‰  Údoner‹   rö   rÛ   ry  rp  r  r�   r*   ru  rˆ  ÚsubmitrÚ   rí   )
r.   r3   rv   rû   rü   Úfetch_future_block_numberÚfetch_futureÚ	must_joinrð   Úend_block_plus_1s
   &&&       r$   r:   ÚBackgroundBlockCache._fetch?  sQ  € ØŠ=ØˆEØŠ;Ø—)‘)ˆCØ—I‘IÔ ¤Ùð #§n¡nÕ4ÐØ§.¡.Õ0Ðà$(Ð!ØˆØ×$×$Ó$à×!Ñ!Ò-Ø×6Ñ6ÒBÐBÐBØ×%Ñ%×*Ñ*×,Ò,Ü—K‘KÐ UÔVØ×,Ñ,×4Ñ4Ø×*Ñ*×1Ñ1Ó3°T×5TÑ5Tôð 7;�DÔ3Ø)-�DÕ&ô !%Ø*Ø×:Ñ:÷,ô ,à+ô,ó!�I÷
 !ð 59×4SÑ4SÐ1Ø'+×'9Ñ'9˜ð ;?˜Ô7Ø-1˜Ô*÷7 %ð< Ò#Ü�K‰KÐBÔCà×$Ñ$×,Ñ,Ø×#Ñ#Ó%Ð'@ôô
 "Ð"4ÈÕ6JÖKˆLØ×$Ñ$ \Ö2ñ Lð
 ,¨aÕ/ÐØ×$×$Ó$à×"Ñ"Ò*Ø$¯©Ô4Ø×0Ñ0×>Ñ>Ð?O×PÒPà2BÔ/Ø%)×%:Ñ%:×%AÑ%AØ×%Ñ%Ð'7¸ó&�Ô"÷ %ð ×ÑØØØ1Ø-ð	  ó 
ð 	
÷o %×$Ð$ú÷X %×$ús+   Á+>JÂ*BJÄ=&JÇ5?JÈ52JÊJ	ÊJ(	c               ó$   € V ^8„  d   QhRRRRRR/# )r   rð   r   Úlog_inforD   r    r6   r"   )r#   s   "r$   r%   r„  ‹  s!   € ÷ ñ ¨ð ¸ð Èñ r'   c                ób  <€ WP                   8”  d   \        RV RV P                    R24      hWP                  ,          pW0P                  ,           p\        P	                  RW!4       V ;P
                  WC,
          ,          un        V ;P                  ^,          un        \        SV `!  W44      pV# )rò   ró   rô   r‰   z!BlockCache fetching block (%s) %d)	r*   rõ   r   r‹   rö   r-   r,   r_   r:   )r.   rð   r¡  r3   rv   r÷   rK   s   &&&   €r$   rÚ   Ú!BackgroundBlockCache._fetch_block‹  s–   ø€ ð Ÿ,™,Ô&ÜØ   ð /)Ø)-¯©¨°að9óð ð
 Ÿ~™~Õ-ˆØ—n‘nÕ$ˆÜ�‰Ð7¸ÔPØ×"Ò" c¥kÕ1Õ"Ø�Š˜1Õ�Ü™™¨Ó3ˆØÐr'   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# rú   r"   )r#   s   "r$   r%   r„  �  rý   r'   c           	     ó°  € WP                   ,          pW P                   ,          pV ;P                  ^,          un        W48X  d   V P                  V4      pWuV # V P                  V4      VR .pVP                  \	        V P                  \        V^,           V4      4      4       VP                  V P                  V4      RV 4       RP                  V4      # rÿ   r   r  s	   &&&&&    r$   rí   Ú BackgroundBlockCache._read_cache�  sÊ   € ð ŸN™NÕ*ˆ	ØŸ™Õ&ˆð 	�Š˜!Õ�àÔ1Ø×,Ñ,Ð-?Ó@ˆEØ 7Ð+Ð+ð ×+Ñ+Ð,>Ó?À	À
ÐKÐLˆCð
 �J‰JÜØ×,Ñ,ÜÐ,¨qÕ0Ð2BÓCóôð �J‰J�t×/Ñ/Ð0@ÓAÀ(À7ÐKÔLà—8‘8˜C“=Ð r'   )rÛ   rŠ  r‰  r‹  rˆ  rÓ   r*   r	  )Úsync)rL   rO   rP   rQ   rR   r   rS   r/   rá   r«   r°   r:   rÚ   rí   rT   r²   r³   s   @r$   r�  r�  ú  sH   ø‡ ñð2 '€Dˆ-Ó&÷3ò 3õ	5õõ3õJ
÷Xò ÷$(!ó (!r'   r�  z!dict[str | None, type[BaseCache]]Úcachesc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úclsztype[BaseCache]Úclobberr  r    r!   r"   )r#   s   "r$   r%   r%   Î  s!   € ÷ ñ ˜ð °$ð À4ñ r'   c                ó�   € V P                   pV'       g)   V\        9   d   \        RV: R\        V,           24      hV \        V&   R# )z¹'Register' cache implementation.

Parameters
----------
clobber: bool, optional
    If set to True (default is False) - allow to overwrite existing
    entry.

Raises
------
ValueError
zCache with name z is already known: N)r   r¨  rõ   )rª  r«  r   s   && r$   Úregister_cacher­  Î  s=   € ð �8‰8€Dß�tœv”~ÜÐ+¨D©8Ð3FÄvÈdÅ|ÀnÐUÓVÐVØ„Fˆ4ƒLr'   )F)4Ú__conditional_annotations__Ú
__future__r   r]  rØ   ÚloggingrÖ   ri   rc  r   Úcollections.abcr   Úconcurrent.futuresr   r   Ú	itertoolsr   Úoperatorr	   Útypingr
   r   r   r   r   r   rW   Útyping_extensionsr   r   r   Ú	getLoggerr‹   r   r6   r   ÚlistÚMultiFetcherr   rV   rµ   rÄ   rÏ   r  r  r)  rP  r�  r¨  rS   r­  Úc)r®  s   @r$   Ú<module>r»     sv  øðß "Ð "ã Û Û Û Û 	Û Ý #Ý $ß 9Ý Ý ß M× MçÛå+á�#‹�Aá�‹€AáˆCƒL€ð 
×	Ò	Ð+Ó	,€à
�C˜�:˜uÐ$Õ
%€Ø˜˜c 3˜h�Ð(¨%Ð/Õ0€÷<ñ <ô~K&�	ô K&ô\+%�Yô +%ô\+,�iô +,ô\}!�ô }!ô@b�ô bôJ%ˆyô %ô0s˜	ô sôl9�7˜1˜a˜4•=ô 9ôxK!˜9ô K!ð` 	ˆ)ð-€Ð)ó ÷ð( ØØØØØØØØó

€Añ �1Öó

r'   