ó
    ÖÁ“iÞ  ã                  óì   • S SK Jr  S SKrS SKJrJr  S SKJrJrJ	r	  SSK
JrJr  SSKJrJr  SSKJrJr   SS	KJr   " S
 S\	5      rSS jrSS jr\rSSKJr  SS jrSS jrg! \ a	    SS	KJr   N6f = f)é    )ÚannotationsN)Ú	AwaitableÚSequence)ÚAnyÚCallableÚ
NamedTupleé   )Ú
extensionsÚframes)ÚPayloadTooBigÚProtocolError)Ú	BytesLikeÚDataLike)Ú
apply_maskc                  óÖ   • \ rS rSr% S\S'   S\S'   S\S'   SrS\S	'   SrS\S
'   SrS\S'   \SS j5       r	SS jr
SS jr\SSS.         SS jj5       rSS.       SS jjrSrg)ÚFrameé   ÚboolÚfinzframes.OpcodeÚopcoder   ÚdataFÚrsv1Úrsv2Úrsv3c                ó°   • [         R                  " U R                  U R                  U R                  U R
                  U R                  U R                  5      $ ©N)r   r   r   r   r   r   r   r   ©Úselfs    ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/websockets/legacy/framing.pyÚ	new_frameÚFrame.new_frame   s=   € ä�|Š|Ø�K‰KØ�I‰IØ�H‰HØ�I‰IØ�I‰IØ�I‰Ió
ð 	
ó    c                ó,   • [        U R                  5      $ r   )Ústrr    r   s    r   Ú__str__ÚFrame.__str__%   s   € Ü�4—>‘>Ó"Ð"r"   c                ó6   • U R                   R                  5       $ r   )r    Úcheckr   s    r   r(   ÚFrame.check(   s   € Ø�~‰~×#Ñ#Ó%Ð%r"   N)Úmax_sizer
   c             ƒ  ó"  #   • U" S5      I Sh  v•N n[         R                  " SU5      u  pgUS-  (       a  SOSnUS-  (       a  SOSn	US-  (       a  SOSn
US	-  (       a  SOSn [        R                  " US
-  5      nUS-  (       a  SOSU:w  a  [        S5      eUS-  nUS:X  a*  U" S5      I Sh  v•N n[         R                  " SU5      u  nO/US:X  a)  U" S5      I Sh  v•N n[         R                  " SU5      u  nUb  Xã:”  a  [        Xã5      eU(       a  U" S5      I Sh  v•N nU" U5      I Sh  v•N nU(       a  [        UW5      n[        R                  " XÅX‰X«5      nUc  / n[        U5       H  nUR                  UUS9nM     UR                  5         U " UR                  UR                  UR                  UR                  UR                   UR"                  5      $  GNÖ! [         a  n[        S5      UeSnAff = f GNT GN' Næ NØ7f)aà  
Read a WebSocket frame.

Args:
    reader: Coroutine that reads exactly the requested number of
        bytes, unless the end of file is reached.
    mask: Whether the frame should be masked i.e. whether the read
        happens on the server side.
    max_size: Maximum payload size in bytes.
    extensions: List of extensions, applied in reverse order.

Raises:
    PayloadTooBig: If the frame exceeds ``max_size``.
    ProtocolError: If the frame contains incorrect values.

r	   Nz!BBé€   TFé@   é    é   é   zinvalid opcodezincorrect maskingé   é~   z!Hé   z!Qé   )r*   )ÚstructÚunpackr   ÚOpcodeÚ
ValueErrorr   r   r   r   ÚreversedÚdecoder(   r   r   r   r   r   r   )ÚclsÚreaderÚmaskr*   r
   r   Úhead1Úhead2r   r   r   r   r   ÚexcÚlengthÚ	mask_bitsr    Ú	extensions                     r   ÚreadÚ
Frame.read+   sè  é € ñ6 ˜A“Y�ˆÜ—}’} U¨DÓ1‰ˆð ˜j×(‰d¨eˆØ˜z×)‰t¨uˆØ˜z×)‰t¨uˆØ˜z×)‰t¨uˆð	;Ü—]’] 5¨:Ñ#5Ó6ˆFð ˜J×&‰D¨E°dÓ:ÜÐ 3Ó4Ð4à˜Ñ#ˆØ�S‹=Ù ›—?ˆDÜŸš d¨DÓ1‰I‰VØ�s‹]Ù ›—?ˆDÜŸš d¨DÓ1‰IˆVØÑ FÓ$5Ü Ó1Ð1ÞÙ$ Q›iŸˆIñ ˜F“^×#ˆÞÜ˜d IÓ.ˆDä—L’L ¨s¸$ÓEˆ	àÑØˆJÜ! *Ö-ˆIØ!×(Ñ(¨¸XÐ(ÐFŠIñ .ð 	�‰ÔáØ�M‰MØ×ÑØ�N‰NØ�N‰NØ�N‰NØ�N‰Nó
ð 	
òW øô ó 	;ÜÐ 0Ó1°sÐ:ûð	;úò #ò #ñ
 (ñ $ùsx   ‚HŽG$�AHÁ%G' Á>3HÂ1HÂ2/HÃ!HÃ"AHÄ$HÄ%HÄ4HÄ5B0HÇ'
HÇ1G=Ç=HÈHÈHÈHÈH)r
   c               óB   • U" U R                   R                  X#S95        g)aF  
Write a WebSocket frame.

Args:
    frame: Frame to write.
    write: Function that writes bytes.
    mask: Whether the frame should be masked i.e. whether the write
        happens on the client side.
    extensions: List of extensions, applied in order.

Raises:
    ProtocolError: If the frame contains incorrect values.

)r=   r
   N)r    Ú	serialize)r   Úwriter=   r
   s       r   rH   ÚFrame.writez   s   € ñ0 	ˆd�n‰n×&Ñ&¨DÐ&ÐHÕIr"   © )Úreturnzframes.Frame)rK   r$   )rK   ÚNone)
r<   z!Callable[[int], Awaitable[bytes]]r=   r   r*   z
int | Noner
   ú%Sequence[extensions.Extension] | NonerK   r   )rH   zCallable[[bytes], Any]r=   r   r
   rM   rK   rL   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r   r   r   Úpropertyr    r%   r(   ÚclassmethodrD   rH   Ú__static_attributes__rJ   r"   r   r   r      sÜ   ‡ Ø	ƒIØÓØ
ƒOØ€Dˆ$ÓØ€Dˆ$ÓØ€Dˆ$Óàó
ó ð
ô#ô&ð ð  $Ø<@ñL
à1ðL
ð ð	L
ð
 ðL
ð :ðL
ð 
ôL
ó ðL
ðf =AñJà%ðJð ð	Jð
 :ðJð 
÷Jð Jr"   r   c                óø   • [        U [        5      (       a*  [        R                  R                  U R                  5       4$ [        U [        5      (       a  [        R                  R                  U 4$ [        S5      e)az  
Convert a string or byte-like object to an opcode and a bytes-like object.

This function is designed for data frames.

If ``data`` is a :class:`str`, return ``OP_TEXT`` and a :class:`bytes`
object encoding ``data`` in UTF-8.

If ``data`` is a bytes-like object, return ``OP_BINARY`` and a bytes-like
object.

Raises:
    TypeError: If ``data`` doesn't have a supported type.

údata must be str or bytes-like)	Ú
isinstancer$   r   r7   ÚTEXTÚencoder   ÚBINARYÚ	TypeError©r   s    r   Úprepare_datar^   •   sZ   € ô  �$œ×ÑÜ�}‰}×!Ñ! 4§;¡;£=Ð0Ð0Ü	�Dœ)×	$Ñ	$Ü�}‰}×#Ñ# TÐ)Ð)äÐ8Ó9Ð9r"   c                ó¢   • [        U [        5      (       a  U R                  5       $ [        U [        5      (       a  [	        U 5      $ [        S5      e)aI  
Convert a string or byte-like object to bytes.

This function is designed for ping and pong frames.

If ``data`` is a :class:`str`, return a :class:`bytes` object encoding
``data`` in UTF-8.

If ``data`` is a bytes-like object, return a :class:`bytes` object.

Raises:
    TypeError: If ``data`` doesn't have a supported type.

rW   )rX   r$   rZ   r   Úbytesr\   r]   s    r   Úprepare_ctrlra   ­   s@   € ô �$œ×ÑØ�{‰{‹}ÐÜ	�Dœ)×	$Ñ	$Ü�T‹{ÐäÐ8Ó9Ð9r"   )ÚClosec                ó^   • [         R                  " U 5      nUR                  UR                  4$ )z¹
Parse the payload from a close frame.

Returns:
    Close code and reason.

Raises:
    ProtocolError: If data is ill-formed.
    UnicodeDecodeError: If the reason isn't valid UTF-8.

)rb   ÚparseÚcodeÚreason)r   Úcloses     r   Úparse_closerh   Ë   s%   € ô �KŠK˜Ó€EØ�:‰:�u—|‘|Ð#Ð#r"   c                ó4   • [        X5      R                  5       $ )z+
Serialize the payload for a close frame.

)rb   rG   )re   rf   s     r   Úserialize_closerj   Û   s   € ô
 �Ó×(Ñ(Ó*Ð*r"   )r   r   rK   ztuple[int, BytesLike])r   r   rK   r`   )r   r`   rK   ztuple[int, str])re   Úintrf   r$   rK   r`   )Ú
__future__r   r5   Úcollections.abcr   r   Útypingr   r   r   Ú r
   r   Ú
exceptionsr   r   r   r   Úspeedupsr   ÚImportErrorÚutilsr   r^   ra   Úencode_datarb   rh   rj   rJ   r"   r   Ú<module>ru      sk   ðÝ "ã ß /ß ,Ñ ,ç !ß 5ß (ð#Ý%ô
@JˆJô @JôF:ô0:ð0 €õ ô$õ +øð[ ó #ß"ð#ús   ¶A$ Á$A3Á2A3