ó
    ÖÁ“iY2  ã                  óæ  • % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
  S SKJr  SSKJrJr  SSKJr   SSKJr  / S	Qr " S
 S\R,                  5      r\R0                  r\R4                  r\R8                  r\R<                  r\R@                  r!\RD                  r#\\\4r$\\!\#4r% " S S\R,                  5      r&\&RN                  S\&RP                  S\&RR                  S\&RT                  S\&RV                  S\&RX                  S\&RZ                  S\&R\                  S\&R^                  S\&R`                  S\&Rb                  S\&Rd                  S\&Rf                  S\&Rh                  S\&Rj                  S0r6S\7S'   \&RN                  \&RP                  \&RR                  \&RT                  \&RZ                  \&R\                  \&R^                  \&R`                  \&Rb                  \&Rd                  \&Rf                  \&Rh                  1r8\&RN                  \&RP                  \&RV                  1r9\Rt                   " S S 5      5       r;\Rt                   " S! S"5      5       r<SS#K=J>r>  g! \ a
    SSKJr   GN,f = f)$é    )ÚannotationsN)Ú	GeneratorÚSequence)ÚCallableé   )ÚPayloadTooBigÚProtocolError)Ú	BytesLike)Ú
apply_mask)ÚOpcodeÚOP_CONTÚOP_TEXTÚ	OP_BINARYÚOP_CLOSEÚOP_PINGÚOP_PONGÚDATA_OPCODESÚCTRL_OPCODESÚ	CloseCodeÚFrameÚClosec                  ó0   • \ rS rSrSrSu  rrrSu  rr	r
Srg)r   é&   z#Opcode values for WebSocket frames.)r   r   é   )é   é	   é
   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚCONTÚTEXTÚBINARYÚCLOSEÚPINGÚPONGÚ__static_attributes__r   ó    ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/websockets/frames.pyr   r   &   s   † Ù-à)Ñ€Dˆ$�Ø(Ñ€Eˆ4“r+   r   c                  óT   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrg)r   é8   z-Close code values for WebSocket close frames.iè  ié  iê  ië  ií  iî  iï  ið  iñ  iò  ió  iô  iõ  iö  i÷  r   N)r   r    r!   r"   r#   ÚNORMAL_CLOSUREÚ
GOING_AWAYÚPROTOCOL_ERRORÚUNSUPPORTED_DATAÚNO_STATUS_RCVDÚABNORMAL_CLOSUREÚINVALID_DATAÚPOLICY_VIOLATIONÚMESSAGE_TOO_BIGÚMANDATORY_EXTENSIONÚINTERNAL_ERRORÚSERVICE_RESTARTÚTRY_AGAIN_LATERÚBAD_GATEWAYÚTLS_HANDSHAKEr*   r   r+   r,   r   r   8   sT   † Ù7à€NØ€JØ€NØÐà€NØÐØ€LØÐØ€OØÐØ€NØ€OØ€OØ€KØƒMr+   r   ÚOKz
going awayzprotocol errorzunsupported datazno status received [internal]zabnormal closure [internal]zinvalid frame payload datazpolicy violationzmessage too bigzmandatory extensionzinternal errorzservice restartztry again laterzbad gatewayz TLS handshake failure [internal]zdict[int, str]ÚCLOSE_CODE_EXPLANATIONSc                  ó
  • \ rS rSr% SrS\S'   S\S'   SrS\S	'   S
rS\S'   S
rS\S'   S
r	S\S'   \
" \R                  R                  SS5      5      rSS jr\SSS.         SS jj5       rSS.     SS jjrSS jrSrg)r   éz   a"  
WebSocket frame.

Attributes:
    opcode: Opcode.
    data: Payload data.
    fin: FIN bit.
    rsv1: RSV1 bit.
    rsv2: RSV2 bit.
    rsv3: RSV3 bit.

Only these fields are needed. The MASK bit, payload length and masking-key
are handled on the fly when parsing and serializing frames.

r   Úopcoder
   ÚdataTÚboolÚfinFÚrsv1Úrsv2Úrsv3ÚWEBSOCKETS_MAX_LOG_SIZEÚ75c                ó*  • Sn[        U R                  5       S[        U R                  5      S:X  a  SOS 3nU R                  (       a  SOSnU R                  [        L a.  [        [        U R                  5      R                  5       5      nGOU R                  [        L as  U R                  n[        U5      U R                  S-  :”  a2  U R                  S-  S-
  S-  nSR                  USS	U-   S
XV* S /5      nSR                  S U 5       5      nOU R                  [        L a)  [        [        R                  U R                  5      5      nOCU R                  (       a0   [        [        U R                  5      R                  5       5      nSnOSn[        U5      U R                  :”  a#  U R                  S-  S-
  nUSS	U-   S-   XF* S -   nSR                  [#        SXU/5      5      nU R                  R$                   SU SU S3$ ! [        [         4 aw    U R                  n[        U5      U R                  S-  :”  a2  U R                  S-  S-
  S-  nSR                  USS	U-   S
XV* S /5      nSR                  S U 5       5      nSn Nþf = f)z5
Return a human-readable representation of a frame.

Nz byter   Ú ÚsÚ	continuedé   r+   r   s     Ú c              3  ó(   #   • U  H  oS  v •  M
     g7f©Ú02xNr   ©Ú.0Úbytes     r,   Ú	<genexpr>Ú Frame.__str__.<locals>.<genexpr>ª   s   é € Ð=²f¨d C˜jœM²fùó   ‚Útextc              3  ó(   #   • U  H  oS  v •  M
     g7frR   r   rT   s     r,   rW   rX   »   s   é € ÐAº&°$¨ *¤º&ùrY   Úbinaryz''z...z, z [Ú])ÚlenrC   rE   rB   r   ÚreprÚbytesÚdecoder   ÚMAX_LOG_SIZEÚjoinr   Ústrr   ÚparseÚUnicodeDecodeErrorÚAttributeErrorÚfilterÚname)ÚselfÚcodingÚlengthÚ	non_finalrC   r\   ÚcutÚmetadatas           r,   Ú__str__ÚFrame.__str__–   sW  € ð
 ˆÜ˜Ÿ	™	“NÐ# 5¬s°4·9±9«~ÀÓ/B©ÈÐ(LÐMˆØŸ(Ÿ(‘B¨ˆ	à�;‰;œ'Ò!ô œ˜dŸi™iÓ(×/Ñ/Ó1Ó2ŠDØ�[‰[œIÒ%ð —Y‘YˆFÜ�6‹{˜T×.Ñ.°!Ñ3Ó3Ø×(Ñ(¨AÑ-°Ñ1°aÑ7�ØŸ™ 6¨)¨A°©GÐ#4°kÀ6È$È%À=Ð"QÓR�Ø—8‘8Ñ=±fÓ=Ó=‰DØ�[‰[œHÒ$Ü”u—{‘{ 4§9¡9Ó-Ó.‰DØ�Y�Yð	"ÜœE $§)¡)Ó,×3Ñ3Ó5Ó6�Ø‘ð ˆDäˆt‹9�t×(Ñ(Ó(Ø×#Ñ# qÑ(¨1Ñ,ˆCØ˜	˜!˜c™'�? UÑ*¨T°$°%¨[Ñ8ˆDà—9‘9œV D¨6¸9Ð*EÓFÓGˆà—+‘+×"Ñ"Ð# 1 T F¨"¨X¨J°aÐ8Ð8øô! '¬Ð7ó "ØŸ™�Ü�v“; ×!2Ñ!2°aÑ!7Ó7Ø×,Ñ,°Ñ1°AÑ5¸!Ñ;�CØ ŸX™X v¨i°°C±Ð'8¸+ÀvÈdÈeÀ}Ð&UÓV�FØ—x‘xÑA¹&ÓAÓA�Ø!’ð"ús   Å".H ÈBJÊJN)Úmax_sizeÚ
extensionsc             #  ó^  #   • U" S5       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 [        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       Sh  v•N n[         R                  " SU5      u  nO/US:X  a)  U" S5       Sh  v•N n[         R                  " SU5      u  nUb  Xã:”  a  [        Xã5      eU(       a  U" S5       Sh  v•N nU" U5       Sh  v•N nU(       a  [        UW5      nU " XÅX‰X«5      nUc  / n[        U5       H  nUR                  UUS9nM     UR                  5         U$  GNv! [         a  n[	        S5      UeSnAff = f Nþ NÐ N� N�7f)aq  
Parse a WebSocket frame.

This is a generator-based coroutine.

Args:
    read_exact: Generator-based coroutine that reads the requested
        bytes or raises an exception if there isn't enough data.
    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:
    EOFError: If the connection is closed without a full WebSocket frame.
    PayloadTooBig: If the frame's payload size exceeds ``max_size``.
    ProtocolError: If the frame contains incorrect values.

r   Nú!BBé€   TFé@   é    é   é   zinvalid opcodezincorrect maskingé   é~   ú!Hr   z!Qé   )rr   )
ÚstructÚunpackr   Ú
ValueErrorr	   r   r   Úreversedra   Úcheck)ÚclsÚ
read_exactÚmaskrr   rs   rC   Úhead1Úhead2rE   rF   rG   rH   rB   Úexcrl   Ú
mask_bytesÚframeÚ	extensions                     r,   re   ÚFrame.parseÈ   s°  é € ñ: % Q›-×'ˆÜ—}’} U¨DÓ1‰ˆð ˜j×(‰d¨eˆØ˜z×)‰t¨uˆØ˜z×)‰t¨uˆØ˜z×)‰t¨uˆð	;Ü˜E JÑ.Ó/ˆFð ˜J×&‰D¨E°dÓ:ÜÐ 3Ó4Ð4à˜Ñ#ˆØ�S‹=Ù(¨›m×+ˆDÜŸš d¨DÓ1‰I‰VØ�s‹]Ù(¨›m×+ˆDÜŸš d¨DÓ1‰IˆVØÑ FÓ$5Ü Ó1Ð1ÞÙ$.¨q£M×1ˆJñ % VÓ,×,ˆÞÜ˜d JÓ/ˆDá�F #¨TÓ8ˆàÑØˆJÜ! *Ö-ˆIØ×$Ñ$ U°XÐ$Ð>ŠEñ .ð 	�‰ŒàˆòW (øô ó 	;ÜÐ 0Ó1°sÐ:ûð	;úñ ,ñ ,ñ
 2ñ -ùsx   ‚F-ŽF�AF-Á%F Á33F-Â&F%Â'/F-ÃF'ÃAF-ÄF)ÄF-Ä)F+Ä*AF-Æ
F"ÆFÆF"Æ"F-Æ'F-Æ)F-Æ+F-©rs   c               óš  • U R                  5         Uc  / nU H  nUR                  U 5      n M     [        R                  " 5       nU R                  (       a  SOSU R
                  (       a  SOS-  U R                  (       a  SOS-  U R                  (       a  SOS-  U R                  -  nU(       a  SOSn[        U R                  5      nUS:  a*  UR                  [        R                  " SXVU-  5      5        O[US:  a+  UR                  [        R                  " S	XVS-  U5      5        O*UR                  [        R                  " S
XVS-  U5      5        U(       a'  [        R                  " S5      nUR                  U5        U(       a  [!        U R                  W5      n	OU R                  n	UR                  U	5        UR#                  5       $ )a  
Serialize a WebSocket frame.

Args:
    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.

rv   r   rw   rx   ry   r|   ru   i   z!BBHz!BBQr{   r~   )rƒ   ÚencodeÚioÚBytesIOrE   rF   rG   rH   rB   r^   rC   Úwriter   ÚpackÚsecretsÚtoken_bytesr   Úgetvalue)
rj   r†   rs   rŒ   Úoutputr‡   rˆ   rl   rŠ   rC   s
             r,   Ú	serializeÚFrame.serialize  sb  € ð$ 	�
‰
ŒàÑØˆJÛ#ˆIØ×#Ñ# DÓ)ŠDñ $ô —’“ˆð  Ÿ8Ÿ8‰Z¨Ø!ŸYŸY‰z¨Añ/à!ŸYŸY‰z¨Añ/ð "ŸYŸY‰z¨Añ/ð �k‰kñ	ð 	ö #‘
¨ˆä�T—Y‘Y“ˆØ�C‹<Ø�L‰LœŸš U¨E¸6±>ÓBÕCØ�e‹^Ø�L‰LœŸš V¨U¸C±KÀÓHÕIà�L‰LœŸš V¨U¸C±KÀÓHÔIæÜ ×,Ò,¨QÓ/ˆJØ�L‰L˜Ô$ö Ü˜dŸi™i¨Ó4‰Dà—9‘9ˆDØ�‰�TÔà�‰Ó Ð r+   c                ó*  • U R                   (       d"  U R                  (       d  U R                  (       a  [        S5      eU R                  [
        ;   aA  [        U R                  5      S:”  a  [        S5      eU R                  (       d  [        S5      egg)z†
Check that reserved bits and opcode have acceptable values.

Raises:
    ProtocolError: If a reserved bit or the opcode is invalid.

zreserved bits must be 0é}   zcontrol frame too longzfragmented control frameN)	rF   rG   rH   r	   rB   r   r^   rC   rE   ©rj   s    r,   rƒ   ÚFrame.checkN  sh   € ð �9�9˜Ÿ	Ÿ	 T§Y§YÜÐ 9Ó:Ð:à�;‰;œ,Ó&Ü�4—9‘9‹~ Ó#Ü#Ð$<Ó=Ð=Ø—8—8Ü#Ð$>Ó?Ð?ð ð 'r+   r   ©Úreturnrd   )
r…   z9Callable[[int], Generator[None, None, bytes | bytearray]]r†   rD   rr   z
int | Noners   ú%Sequence[extensions.Extension] | Noner    zGenerator[None, None, Frame])r†   rD   rs   r¡   r    r`   ©r    ÚNone)r   r    r!   r"   r#   Ú__annotations__rE   rF   rG   rH   ÚintÚosÚenvironÚgetrb   rp   Úclassmethodre   r™   rƒ   r*   r   r+   r,   r   r   z   sá   ‡ ñð  ƒNØ
ƒOØ€CˆÓØ€Dˆ$ÓØ€Dˆ$ÓØ€Dˆ$Óñ �r—z‘z—~‘~Ð&?ÀÓFÓG€Lô09ðd ð  $Ø<@ñGàMðGð ð	Gð
 ðGð :ðGð 
&ôGó ðGðZ =Añ	:!ð ð:!ð :ð	:!ð
 
õ:!÷x@r+   r   c                  ó`   • \ rS rSr% SrS\S'   S\S'   SS jr\SS j5       rSS	 jr	SS
 jr
Srg)r   i`  zk
Code and reason for WebSocket close frames.

Attributes:
    code: Close code.
    reason: Close reason.

zCloseCode | intÚcoderd   Úreasonc                ó"  • SU R                   s=::  a  S:  a  O  OSnO=SU R                   s=::  a  S:  a  O  OSnO [        R                  U R                   S5      nU R                    SU S3nU R                  (       a  U S	U R                   3nU$ )
zE
Return a human-readable representation of a close code and reason.

é¸  i   Ú
registeredéˆ  zprivate useÚunknownz (Ú)rP   )r«   r?   r¨   r¬   )rj   ÚexplanationÚresults      r,   rp   ÚClose.__str__n  s|   € ð
 �4—9‘9Õ#˜tÖ#Ø&‰KØ�T—Y‘YÕ% Ö%Ø'‰Kä1×5Ñ5°d·i±iÀÓKˆKØ—I‘I�;˜b  ¨QÐ/ˆà�;�;Ø�x˜q §¡ Ð.ˆFàˆr+   c                óT  • [        U[        5      (       a  [        S5      e[        U5      S:¼  aI  [        R
                  " SUSS 5      u  nUSS R                  5       nU " X#5      nUR                  5         U$ [        U5      S:X  a  U " [        R                  S5      $ [        S5      e)z¿
Parse the payload of a close frame.

Args:
    data: Payload of the close frame.

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

z.only compressed outgoing frames use memoryviewr   r}   Nr   rL   zclose frame too short)Ú
isinstanceÚ
memoryviewÚAssertionErrorr^   r   r€   ra   rƒ   r   r3   r	   )r„   rC   r«   r¬   Úcloses        r,   re   ÚClose.parse€  s”   € ô �dœJ×'Ñ'Ü Ð!QÓRÐRÜˆt‹9˜‹>Ü—m’m D¨$¨r°¨(Ó3‰GˆTØ˜!˜"�X—_‘_Ó&ˆFÙ˜Ó%ˆEØ�K‰KŒMØˆLÜ�‹Y˜!‹^Ù”y×/Ñ/°Ó4Ð4äÐ 7Ó8Ð8r+   c                óš   • U R                  5         [        R                  " SU R                  5      U R                  R                  5       -   $ )z*
Serialize the payload of a close frame.

r}   )rƒ   r   r”   r«   r¬   r�   r�   s    r,   r™   ÚClose.serializeš  s4   € ð
 	�
‰
ŒÜ�{Š{˜4 §¡Ó+¨d¯k©k×.@Ñ.@Ó.BÑBÐBr+   c                óv   • U R                   [        ;   d%  SU R                   s=::  a  S:  d  O  [        S5      egg)z{
Check that the close code has a valid value for a close frame.

Raises:
    ProtocolError: If the close code is invalid.

r®   r°   zinvalid status codeN)r«   ÚEXTERNAL_CLOSE_CODESr	   r�   s    r,   rƒ   ÚClose.check¢  s6   € ð —	‘	Ô1Ó1°T¸T¿Y¹YÕ5MÈÕ5MÜÐ 5Ó6Ð6ð 6NÐ1r+   r   NrŸ   )rC   r
   r    r   )r    r`   r¢   )r   r    r!   r"   r#   r¤   rp   r©   re   r™   rƒ   r*   r   r+   r,   r   r   `  s8   ‡ ñð ÓØƒKôð$ ó9ó ð9ô2C÷	7r+   r   rŽ   )?Ú
__future__r   ÚdataclassesÚenumr‘   r¦   r•   r   Úcollections.abcr   r   Útypingr   Ú
exceptionsr   r	   r
   Úspeedupsr   ÚImportErrorÚutilsÚ__all__ÚIntEnumr   r$   r   r%   r   r&   r   r'   r   r(   r   r)   r   r   r   r   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r?   r¤   r¿   ÚOK_CLOSE_CODESÚ	dataclassr   r   rL   rs   r   r+   r,   Ú<module>rÎ      sg  ðÞ "ã Û Û 	Û 	Û Û ß /Ý ç 4Ý ð"Ý$ò
€ô )ˆT�\‰\ô )ð �+‰+€Ø
�+‰+€Ø�M‰M€	Ø�<‰<€Ø
�+‰+€Ø
�+‰+€à˜ Ð*€Ø˜ 'Ð)€ô�—‘ô ð. ×Ñ˜dØ×Ñ˜,Ø×ÑÐ.Ø×ÑÐ 2Ø×ÑÐ=Ø×ÑÐ =Ø×ÑÐ8Ø×ÑÐ 2Ø×ÑÐ0Ø×!Ñ!Ð#8Ø×ÑÐ.Ø×ÑÐ0Ø×ÑÐ0Ø×Ñ˜=Ø×ÑÐ?ð+Ð ˜ó ð, ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×!Ñ!Ø×ÑØ×ÑØ×ÑØ×ÑðÐ ð" ×ÑØ×ÑØ×Ñð€ð ×Ñ÷b@ð b@ó ðb@ðJ ×Ñ÷J7ð J7ó ðJ7ö\ øð{ ó "ß!Ð!ð"ús   ½I  É I0É/I0