Ë
    Eü´j¢  ã            	       óÆ  — U d Z ddlZddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 dd	lmZ  ed
«      j                  Z ed«      j                  Z ed«      j"                  Z ed«      j"                  Z ed«      j"                  Z ed«      j"                  Z ed«      j"                  ZdZee   ed<   dZee   ed<   dZee   ed<   ej:                  dee   fd„«       Zdede ddfd„Z!ese
re!Z"n		 ddl#m$Z$ e$Z" ejL                  d«      Z'eee(      ed<    ejL                  d«      Z)eee(      ed<   d&d e(dz  d!e*de+ee*f   fd"„Z,	 d'd#ed!e*d$e*de(fd%„Z-y# e%$ r e!Z"Y Œew xY w)(z1Helpers for WebSocket protocol versions 13 and 8.é    N)ÚPattern)ÚStruct)ÚTYPE_CHECKINGÚFinalé   )ÚNO_EXTENSIONSé   )ÚWSHandshakeErrorz!Qz!Hz!BBz!BBHz!BBQz!Li @  ÚMSG_SIZEé   ÚMASK_LENs$   258EAFA5-E914-47DA-95CA-C5AB0DC85B11ÚWS_KEYÚreturnc            	      óx   ‡ — t        d«      D � ‡ cg c]  Š t        ˆ fd„t        d«      D «       «      ‘Œ! c} S c c} w )Né   c              3   ó(   •K  — | ]	  }|‰z  –— Œ y ­w©N© )Ú.0ÚaÚbs     €úX/root/workspace/ytshorts/venv/lib/python3.12/site-packages/aiohttp/_websocket/helpers.pyú	<genexpr>z_xor_table.<locals>.<genexpr>   s   øè ø€ Ò,˜A�!�a•%Ñ,ùó   ƒ)ÚrangeÚbytes)r   s   `r   Ú
_xor_tabler      s*   ø€ ä6;¸C³j×A°ŒEÓ,¤ s£Ô,Õ,ÒAÐAùÒAs   �$7ÚmaskÚdatac                 ó€  ‡— t        |t        «      sJ |«       ‚t        | «      dk(  sJ | «       ‚|r�t        «       Šˆfd„| D «       \  }}}}|ddd…   j	                  |«      |ddd…<   |ddd…   j	                  |«      |ddd…<   |ddd…   j	                  |«      |ddd…<   |ddd…   j	                  |«      |ddd…<   yy)aw  Websocket masking function.

    `mask` is a `bytes` object of length 4; `data` is a `bytearray`
    object of any length. The contents of `data` are masked with `mask`,
    as specified in section 5.3 of RFC 6455.

    Note that this function mutates the `data` argument.

    This pure-python implementation may be replaced by an optimized
    version when available.

    r   c              3   ó(   •K  — | ]	  }‰|   –— Œ y ­wr   r   )r   ÚnÚ
_XOR_TABLEs     €r   r   z)_websocket_mask_python.<locals>.<genexpr>1   s   øè ø€ Ò2¨�j •mÑ2ùr   Nr	   r   é   )Ú
isinstanceÚ	bytearrayÚlenr   Ú	translate)r   r   r   r   ÚcÚdr#   s         @r   Ú_websocket_mask_pythonr+      sÜ   ø€ ô �dœIÔ&Ð,¨Ó,Ð&Üˆt‹9˜Š>Ð˜4Óˆ>áÜ“\ˆ
Û2¨TÔ2‰
ˆˆ1ˆa�Ø™˜1˜‘I×'Ñ'¨Ó*ˆ‰SˆqˆS‰	Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆT‰
Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆT‰
Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆTŠ
ð ó    )Ú_websocket_mask_cythonz�^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$Ú
_WS_EXT_REzpermessage-deflate([^,]+)?Ú_WS_EXT_RE_SPLITÚextstrÚisserverc                 óD  — | syd}d}t         j                  | «      D ]þ  }|j                  d«      }|sd} ||fS t        j	                  |«      }|r¬d}|rP|j                  d«      r't        |j                  d«      «      }|dkD  s|dk  rd}Œp|j                  d«      rd} ||fS |j                  d	«      r/t        |j                  d	«      «      }|dkD  s|dk  rt        d
«      ‚|j                  d«      rd} ||fS |rŒãt        d|j                  d«      z   «      ‚ ||fS )N)r   Fr   Fr	   é   r   é	   Té   zInvalid window sizer   z#Extension for deflate not supported)r/   ÚfinditerÚgroupr.   ÚmatchÚintr
   )r0   r1   ÚcompressÚ
notakeoverÚextÚdefextr8   s          r   Úws_ext_parser>   N   sP  € ÙØà€HØ€JÜ×(Ñ(¨Ó0ò (YˆØ—‘˜1“ˆáØˆHØðJ �ZÐÐôI × Ñ  Ó(ˆÙØˆHÙð —;‘;˜q”>Ü" 5§;¡;¨q£>Ó2�Hð
   "’}¨°1ªØ#$˜Ø Ø—;‘;˜q”>Ø!%�Jàð$ �ZÐÐð! —;‘;˜q”>Ü" 5§;¡;¨q£>Ó2�Hð
   "’}¨°1ªÜ.Ð/DÓEÐEØ—;‘;˜q”>Ø!%�Jàð
 �ZÐÐò Ü"Ð#HÈ3Ï9É9ÐUVË<Ñ#WÓXÐXðQ(YðT �ZÐÐr,   r:   Úserver_notakeoverc                 óä   — | dk  s| dkD  rt        d«      ‚dg}|s|j                  d«       | dk  r|j                  dt        | «      z   «       |r|j                  d«       dj                  |«      S )	Nr4   r3   zCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflateÚclient_max_window_bitszserver_max_window_bits=Úserver_no_context_takeoverz; )Ú
ValueErrorÚappendÚstrÚjoin)r:   r1   r?   Ú
enabledexts       r   Ú
ws_ext_genrH   �   s   € ð
 �!‚|�x "’}ÜØQó
ð 	
ð 'Ð'€JÙØ×ÑÐ2Ô3à�"‚}Ø×ÑÐ3´c¸(³mÑCÔDÙØ×ÑÐ6Ô7ð �9‰9�ZÓ Ð r,   )F)r3   FF).Ú__doc__Ú	functoolsÚrer   Ústructr   Útypingr   r   Úhelpersr   Úmodelsr
   Úunpack_fromÚUNPACK_LEN3ÚunpackÚUNPACK_CLOSE_CODEÚpackÚ	PACK_LEN1Ú	PACK_LEN2Ú	PACK_LEN3ÚPACK_CLOSE_CODEÚPACK_RANDBITSr   r9   Ú__annotations__r   r   r   Ú	lru_cacheÚlistr   r&   r+   Úwebsocket_maskr   r-   ÚImportErrorÚcompiler.   rE   r/   ÚboolÚtupler>   rH   r   r,   r   ú<module>rb      sÀ  ðÚ 7ã Û 	Ý Ý ß 'å #Ý $á�T‹l×&Ñ&€Ù˜4“L×'Ñ'Ð Ù�5‹M×Ñ€	Ù�6‹N×Ñ€	Ù�6‹N×Ñ€	Ù˜“,×#Ñ#€Ù�t“×!Ñ!€Ø€ˆ%�‰*Ó Ø€ˆ%�‰*Ó à>€ˆˆe‰Ó >ð ×ÑðB�D˜‘Kò Bó ðBð- ð -¨ið -¸Dó -ñ2 ‘MØ+�Nð0Ý0à/ˆð
 #- "§*¡*ð/ó#€
ˆE�'˜#‘,Ñó ð )3¨¯
©
Ð3PÓ(QÐ �%˜ ™Ñ%Ó Qñ0 ˜˜t™ð 0 ¨tð 0 ÀÀcÈ4ÀiÑ@Pó 0 ðh KPñ!Øð!Ø"&ð!ØCGð!àô!øðE ò 0Ø/Šð0ús   Ã2E ÅE ÅE 