� ��^i���:�dZddlZddlmZmZd�Zd�Zd�Zd�ZdS)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�Tuplec�j�t|��}g}d}tt|����D]u}|dzt|��kr||||dzdz kr�1||dz|dz�}|�t |d|ddz����|}�vt |��S)aRepresent 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)�list_� sorted_list�ranges� last_write�i� current_ranges ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/idna/intranges.py�intranges_from_listr s�����-�-�K� �F��J� �3�{�#�#� $� $���� �Q�3��[�!�!� !� !��1�~��Q�q�S�!1�!�!3�3�3��#�J�q�L��1��$4�5� �� � �m�M�!�$4�m�B�6G�!�6K�L�L�M�M�M�� � � ��=�=��c��|dz|zS)N� �)�start�ends rr r !s�� �R�K�3� �rc��|dz |dzfS)Nrl��r)�rs r� _decode_ranger%s�� ��G�q�M�*� +�+rc��t|d��}tj||��}|dkr-t||dz ��\}}||cxkr|krnndS|t |��kr t||��\}}||krdSdS)z=Determine if `int_` falls into one of the ranges in `ranges`.rrTF)r �bisect� bisect_leftrr )�int_r�tuple_�pos�left�right�_s r�intranges_containr(*s����4�� #� #�F� � �V�V� ,� ,�C� �Q�w�w�#�F�3�q�5�M�2�2� ��e� �4� � � � �%� � � � � ��4� �S��[�[�����s� �,�,���a� �4�<�<��4� �5r) �__doc__r �typingrrrr rr(rrr�r+sx����� � � ������������,���,�,�,� ����r