
     fY                         d Z ddlZddlmZmZ dee         deedf         fdZded	edefd
Zdedeeef         fdZdedeedf         de	fdZ
dS )a	  
Given a list of integers, made up of (hopefully) a small number of long runs
of consecutive integers, compute a representation of the form
((start1, end1), (start2, end2) ...). Then answer the question "was x present
in the original list?" in time O(log(# runs)).
    N)ListTuplelist_return.c                 j   t          |           }g }d}t          t          |                    D ]u}|dz   t          |          k     r||         ||dz            dz
  k    r1||dz   |dz            }|                    t	          |d         |d         dz                        |}vt          |          S )a  Represent a list of integers as a sequence of ranges:
    ((start_0, end_0), (start_1, end_1), ...), such that the original
    integers are exactly those x such that start_i <= x < end_i for some i.

    Ranges are encoded as single integers (start << 32 | end), not as tuples.
       r   )sortedrangelenappend_encode_rangetuple)r   sorted_listranges
last_writeicurrent_ranges         ]/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/pip/_vendor/idna/intranges.pyintranges_from_listr      s     --KFJ3{##$$  Q3[!!!!1~QqS!1!!333#JqL1$45mM!$4mB6G!6KLLMMM

==    startendc                     | dz  |z  S )N     )r   r   s     r   r   r       s    RK3r   rc                     | dz	  | dz  fS )Nr   l    r   )r   s    r   _decode_ranger   #   s    GqM*++r   int_r   c                    t          | d          }t          j        ||          }|dk    r-t          ||dz
                     \  }}|| cxk    r|k     rn ndS |t	          |          k     r t          ||                   \  }}|| k    rdS dS )z=Determine if `int_` falls into one of the ranges in `ranges`.r   r	   TF)r   bisectbisect_leftr   r   )r    r   tuple_posleftright_s          r   intranges_containr)   '   s    4##F

VV
,
,C Qww#F3q5M22e4%4
S[[s,,a4<<45r   )__doc__r"   typingr   r   intr   r   r   boolr)   r   r   r   <module>r.      s             tCy U38_    * 3 3    ,S ,U38_ , , , ,C sCx T      r   