Ë
    iKêjk.  ã                   ór   — U d dl mZmZmZ d dlmZmZmZmZ e	e	e
e
f   df   Zeed<   e G d„ d«      «       Zy)é    )ÚIterableÚIteratorÚSequence)ÚSelfÚ	TypeAliasÚcastÚfinal.Ú
IntervalsTc                   ó$  — e Zd ZdZededdfd„«       Zddeee	      ddfd„Z
de	fd	„Zdee	   fd
„Zde	de	fd„Zdee	z  defd„Zdefd„Zde	de	fd„Zde	de	fd„Zd d„Zd d„Zd d„Zdedefd„Zde	fd„Zd d„Zd d„Zd d„Zde	defd„Zdede	fd„Zy)!ÚIntervalSeta  
    A compact and efficient representation of a set of ``(a, b)`` intervals. Can
    be treated like a set of integers, in that ``n in intervals`` will return
    ``True`` if ``n`` is contained in any of the ``(a, b)`` intervals, and
    ``False`` otherwise.
    ÚsÚreturnr   c           	      ó”   —  | t        |«      D �cg c]  }t        |«      t        |«      f‘Œ c}«      }|j                  |«      S c c}w )zªReturn a tuple of intervals, covering the codepoints of characters in `s`.

        >>> IntervalSet.from_string('abcdef0123456789')
        ((48, 57), (97, 102))
        )ÚsortedÚordÚunion)Úclsr   ÚcÚxs       úe/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/internal/intervalsets.pyÚfrom_stringzIntervalSet.from_string!   s=   € ñ ¬6°!«9Ö5 a”#�a“&œ#˜a›&Ò!Ò5Ó6ˆØ�w‰w�q‹zÐùò 6s   �AÚ	intervalsNc                 ó
  — t        t        t        d„ |D «       «      «      | _        t	        d„ | j                  D «       «      sJ ‚dg| _        | j                  D ]6  \  }}| j
                  j                  | j
                  d   |z   |z
  dz   «       Œ8 | j
                  j                  «       | _        | j                  t        d«      «      | _        t        | j                  t        d«      «      t        | «      dz
  «      | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Útuple©Ú.0Úvs     r   ú	<genexpr>z'IntervalSet.__init__.<locals>.<genexpr>-   s   è ø€ Ò:¨1œe AŸhÑ:ùs   ‚c              3   ó8   K  — | ]  }t        |«      d k(  –— Œ y­w)é   N)Úlenr   s     r   r    z'IntervalSet.__init__.<locals>.<genexpr>1   s   è ø€ Ò7 1”3�q“6˜Q•;Ñ7ùs   ‚r   éÿÿÿÿé   Ú0ÚZ)r   r
   r   r   ÚallÚoffsetsÚappendÚpopÚsizeÚindex_abover   Ú_idx_of_zeroÚminr#   Ú	_idx_of_Z)Úselfr   Úur   s       r   Ú__init__zIntervalSet.__init__+   sÒ   € Ü%)ÜœÑ:°	Ô:Ó:ó&
ˆŒô
 Ñ7¨¯©Ô7Ô7Ð7Ð7à#$ #ˆŒØ—N‘Nò 	>‰DˆAˆqØ�L‰L×Ñ §¡¨RÑ 0°1Ñ 4°qÑ 8¸1Ñ <Õ=ð	>à—L‘L×$Ñ$Ó&ˆŒ	Ø ×,Ñ,¬S°«XÓ6ˆÔÜ˜T×-Ñ-¬c°#«hÓ7¼¸T»ÀQ¹ÓGˆ�ó    c                 ó   — | j                   S r   )r,   ©r1   s    r   Ú__len__zIntervalSet.__len__:   s   € Ø�y‰yÐr4   c              #   óf   K  — | j                   D ]  \  }}t        ||dz   «      E d {  –—†  Œ y 7 Œ­w)Nr%   )r   Úrange)r1   r2   r   s      r   Ú__iter__zIntervalSet.__iter__=   s3   è ø€ Ø—N‘Nò 	'‰DˆAˆqÜ˜Q  A¡“×&Ñ&ñ	'Ø&ús   ‚%1§/¨1Úic                 ó®  — |dk  r| j                   |z   }|dk  s|| j                   k\  rt        d|› d| j                   › d�«      ‚t        | j                  «      dz
  }| j                  |   |kD  r6|}d}|dz   |k  r(||z   dz  }| j                  |   |k  r|}n|}|dz   |k  rŒ(|}|| j                  |   z
  }| j                  |   \  }}||z   }	|	|k  sJ ‚|	S )Nr   zInvalid index z	 for [0, ú)r%   r"   )r,   Ú
IndexErrorr#   r   r)   )
r1   r;   ÚjÚhiÚloÚmidÚtr2   r   Úrs
             r   Ú__getitem__zIntervalSet.__getitem__A   sø   € ØˆqŠ5Ø—	‘	˜A‘ˆAØˆqŠ5�A˜Ÿ™’NÜ˜~¨a¨S°	¸$¿)¹)¸ÀAÐFÓGÐGô �—‘Ó !Ñ#ˆØ�<‰<˜‰?˜QÒØˆBØˆBà�q‘&˜2’+Ø˜B‘w 1‘n�Ø—<‘< Ñ$¨Ò)Ø‘Bà�Bð �q‘&˜2“+ð ˆAØ�—‘˜Q‘ÑˆØ�~‰~˜aÑ ‰ˆˆ1Ø�‰EˆØ�AŠvˆˆvØˆr4   Úelemc                 ó–   ‡— t        ‰t        «      rt        ‰«      Šd‰cxk  rdk  sJ ‚ J ‚t        ˆfd„| j                  D «       «      S )Nr   iÿÿ c              3   óD   •K  — | ]  \  }}|‰cxk  xr |k  nc –— Œ y ­wr   © )r   ÚstartÚendrF   s      €r   r    z+IntervalSet.__contains__.<locals>.<genexpr>^   s"   øè ø€ ÒI©J¨E°3�5˜DÖ' C×'Ð'ÑIùs   ƒ )Ú
isinstanceÚstrr   Úanyr   )r1   rF   s    `r   Ú__contains__zIntervalSet.__contains__Z   sD   ø€ Ü�dœCÔ Ü�t“9ˆDØ�DÔ$˜HÒ$Ð$Ñ$Ð$Ð$ÜÓI¸$¿.¹.ÔIÓIÐIr4   c                 ó"   — d| j                   ›d�S )NzIntervalSet(r=   )r   r6   s    r   Ú__repr__zIntervalSet.__repr__`   s   € Ø˜dŸn™nÐ/¨qÐ1Ð1r4   Úvaluec                 óÎ   — t        | j                  | j                  d¬«      D ]3  \  }\  }}||k(  r|c S ||kD  rt        |› d�«      ‚||k  sŒ+|||z
  z   c S  t        |› d�«      ‚)NT©Ústrictz is not in list)Úzipr)   r   Ú
ValueError©r1   rR   Úoffsetr2   r   s        r   ÚindexzIntervalSet.indexc   sy   € Ü! $§,¡,°·±ÀtÔLò 	,‰NˆF‘F�Q˜Ø�EŠzØ’Ø�U’Ü  E 7¨/Ð!:Ó;Ð;Ø˜‹zØ ¨¡Ñ+Ò+ð	,ô ˜E˜7 /Ð2Ó3Ð3r4   c                 ó¤   — t        | j                  | j                  d¬«      D ]   \  }\  }}||k\  r|c S ||k  sŒ|||z
  z   c S  | j                  S )NTrT   )rV   r)   r   r,   rX   s        r   r-   zIntervalSet.index_abovem   sX   € Ü! $§,¡,°·±ÀtÔLò 	,‰NˆF‘F�Q˜Ø�EŠzØ’Ø˜‹zØ ¨¡Ñ+Ò+ð		,ð
 �y‰yÐr4   Úotherc                 ó$   — | j                  |«      S r   )r   ©r1   r\   s     r   Ú__or__zIntervalSet.__or__u   s   € Ø�z‰z˜%Ó Ð r4   c                 ó$   — | j                  |«      S r   )Ú
differencer^   s     r   Ú__sub__zIntervalSet.__sub__x   s   € Ø�‰˜uÓ%Ð%r4   c                 ó$   — | j                  |«      S r   )Úintersectionr^   s     r   Ú__and__zIntervalSet.__and__{   s   € Ø× Ñ  Ó'Ð'r4   c                 óX   — t        |t        «      xr |j                  | j                  k(  S r   )rL   r   r   r^   s     r   Ú__eq__zIntervalSet.__eq__~   s!   € Ü˜%¤Ó-ÒU°5·?±?ÀdÇnÁnÑ3TÐUr4   c                 ó,   — t        | j                  «      S r   )Úhashr   r6   s    r   Ú__hash__zIntervalSet.__hash__�   s   € Ü�D—N‘NÓ#Ð#r4   c                 ó†  — t        |t        | «      «      sJ ‚| j                  }|j                  }|st        |«      S |st        |«      S t	        ||z   d¬«      }|j                  «       g}|rK|j                  «       \  }}|d   \  }}	||	dz   k  r|t        ||	«      f|d<   n|j                  ||f«       |rŒKt        |«      S )zÙMerge two sequences of intervals into a single tuple of intervals.

        Any integer bounded by `x` or `y` is also bounded by the result.

        >>> union([(3, 10)], [(1, 2), (5, 17)])
        ((1, 17),)
        T)Úreverser$   r%   )rL   Útyper   r   r   r+   Úmaxr*   )
r1   r\   r   Úyr   Úresultr2   r   ÚaÚbs
             r   r   zIntervalSet.union„   sÅ   € ô ˜%¤ d£Ô,Ð,Ð,Ø�N‰NˆØ�O‰OˆÙÜ˜q“>Ð!ÙÜ˜q“>Ð!Ü˜1˜q™5¨$Ô/ˆ	Ø—-‘-“/Ð"ˆÙð —=‘=“?‰DˆAˆqØ˜"‘:‰DˆAˆqØ�A˜‘EŠzà¤ Q¨£˜^��r’
ð —‘˜q !˜fÔ%ò! ô" ˜6Ó"Ð"r4   c                 ó¾  — t        |t        | «      «      sJ ‚| j                  }|j                  }|st        |«      S t	        t        t        |«      «      }d}d}g }|t        |«      k  rÈ|t        |«      k  rº||   \  }}||k  sJ ‚||   \  }	}
|	|
k  sJ ‚|
|k  r|dz  }nt|	|kD  r|j                  ||   «       |dz  }nU|	|k  r|
|k\  r|dz  }nE|
dz   ||   d<   |dz  }n4|j                  ||	dz
  f«       |
dz   |k  r|
dz   ||   d<   |dz  }n|dz  }|t        |«      k  r|t        |«      k  rŒº|j                  ||d «       t        t        t        |«      «      S )aw  Set difference for lists of intervals. That is, returns a list of
        intervals that bounds all values bounded by x that are not also bounded by
        y. x and y are expected to be in sorted order.

        For example difference([(1, 10)], [(2, 3), (9, 15)]) would
        return [(1, 1), (4, 8)], removing the values 2, 3, 9 and 10 from the
        interval.
        r   r%   N)
rL   rm   r   r   ÚlistÚmapr#   r*   Úextendr   )r1   r\   r   ro   r;   r?   rp   ÚxlÚxrÚylÚyrs              r   ra   zIntervalSet.difference¨   s�  € ô ˜%¤ d£Ô,Ð,Ð,Ø�N‰NˆØ�O‰OˆÙÜ˜q“>Ð!Ü””T˜1“ÓˆØˆØˆØ&(ˆØ”#�a“&Šj˜Q¤ Q£šZð �q‘T‰FˆB�Ø˜’8ˆO�8Ø�q‘T‰FˆB�Ø˜’8ˆO�8à�BŠwð �Q‘‘Ø�b’ð —‘˜a ™dÔ#Ø�Q‘‘Ø�r’Ø˜’8ð ˜‘F‘Að ! 1™f�A�a‘D˜‘GØ˜‘F‘Að —‘˜r 2¨¡6˜lÔ+à˜‘6˜R’<ð ! 1™f�A�a‘D˜‘GØ˜‘F‘Að
 ˜‘F�Aði ”#�a“&Šj˜Q¤ Q£›Zðp 	�‰�a˜˜�eÔÜœ3œu fÓ-Ó.Ð.r4   c                 ó   — t        |t        | «      «      sJ |«       ‚g }dx}}|t        | j                  «      k  rº|t        |j                  «      k  r¢| j                  |   \  }}|j                  |   \  }}||kD  r|dz  }nB||kD  r|dz  }n7|j	                  t        ||«      t        ||«      f«       ||k  r|dz  }n|dz  }|t        | j                  «      k  r|t        |j                  «      k  rŒ¢t        |«      S )z(Set intersection for lists of intervals.r   r%   )rL   rm   r#   r   r*   rn   r/   r   )	r1   r\   r   r;   r?   r2   r   ÚUÚVs	            r   rd   zIntervalSet.intersectionõ   sö   € ä˜%¤ d£Ô,Ð3¨eÓ3Ð,Øˆ	Øˆ	ˆˆAØ”#�d—n‘nÓ%Ò%¨!¬c°%·/±/Ó.BÒ*BØ—>‘> !Ñ$‰DˆAˆqØ—?‘? 1Ñ%‰DˆAˆqØ�1ŠuØ�Q‘‘Ø�Q’Ø�Q‘‘à× Ñ ¤# a¨£)¬S°°A«YÐ!7Ô8Ø�q’5Ø˜‘F‘Aà˜‘F�Að ”#�d—n‘nÓ%Ò%¨!¬c°%·/±/Ó.BÓ*Bô ˜9Ó%Ð%r4   c                 ó  — || j                   k  rk| j                   | j                  z
  }||k  r|| j                  z  }n#| j                  ||z
  z
  }|| j                  k  sJ ‚d|cxk  r| j                   k  sJ ‚ J ‚t        | |   «      S )Nr   )r0   r.   Úchr)r1   r;   Úns      r   Úchar_in_shrink_orderz IntervalSet.char_in_shrink_order	  s’   € ð �—‘Òð —‘ ×!2Ñ!2Ñ2ˆAØ�AŠvØ�T×&Ñ&Ñ&‘ð
 ×%Ñ%¨¨Q©Ñ/�Ø˜4×,Ñ,Ò,Ð,Ð,Ø˜Ô+˜TŸ^™^Ò+Ð+Ñ+Ð+Ð+ä�4˜‘7‹|Ðr4   r   c                 ó¾  — t        |«      dk(  sJ ‚| j                  t        |«      «      }|| j                  k  r£| j                  | j                  z
  }| j                  |cxk  r| j                  k  r"n n|| j                  z  }d|cxk  r|k  s4J ‚ J ‚| j                  |z
  |z   }|dz   |cxk  r| j                  k  sJ ‚ J ‚d|cxk  r| j                  k  sJ ‚ J ‚|S )z2
        Inverse of char_in_shrink_order.
        r%   r   )r#   rZ   r   r0   r.   )r1   r   r;   r€   s       r   Úindex_from_char_in_shrink_orderz+IntervalSet.index_from_char_in_shrink_order!  sÜ   € ô �1‹v˜Š{Ðˆ{Ø�J‰J”s˜1“vÓˆà�—‘ÒØ—‘ ×!2Ñ!2Ñ2ˆAà× Ñ  AÔ7¨¯©Õ7Ø�T×&Ñ&Ñ&�Ø˜A”{ ’{Ð"‘{Ð"�{ð ×%Ñ%¨Ñ)¨AÑ-�Ø˜1‘u Ô3 T§^¡^Ò3Ð3Ñ3Ð3Ð3Ø˜Ô+˜TŸ^™^Ò+Ð+Ñ+Ð+Ð+àˆr4   )rI   )r\   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodrM   r   r   r   Úintr3   r7   r   r:   rE   ÚboolrO   rQ   rZ   r-   r_   rb   re   Úobjectrg   rj   r   ra   rd   r�   rƒ   rI   r4   r   r   r      s,  „ ñð ð˜Cð  Fò ó ðñH (¨8°C©=Ñ"9ð HÀ4ó Hð˜ó ð'˜( 3™-ó 'ð˜Sð  Só ð2J  s¡ð J¨tó Jð2˜#ó 2ð4˜3ð 4 3ó 4ð ð ¨ó ó!ó&ó(ðV˜Fð V tó Vð$˜#ó $ó"#óHK/óZ&ð( cð ¨có ð0°ð ¸ô r4   r   N)Úcollections.abcr   r   r   Útypingr   r   r   r	   r   r‰   r
   Ú__annotations__r   rI   r4   r   ú<module>r�      sK   ð÷ 9Ò 8ß /Ó /à˜e C¨ H™o¨sÐ2Ñ3€
ˆIÓ 3ð ÷[ð [ó ñ[r4   