Ë
    aQbjÊ+  ã                  óœ   — d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
mZmZmZmZ  G d„ d	e«      Z G d
„ de«      Zej"                  eiZy)z>
wsproto/extensions
~~~~~~~~~~~~~~~~~~

WebSocket extensions.
é    )ÚannotationsN)ÚABCÚabstractmethod)ÚOptionalé   )ÚCloseReasonÚFrameDecoderÚFrameProtocolÚOpcodeÚRsvBitsc                  ó¦   — e Zd ZU ded<   dd„Zedd„«       Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 dd„Z		 	 	 	 	 	 dd„Z
	 	 	 	 	 	 dd	„Z	 	 	 	 	 	 	 	 	 	 	 	 dd
„Zy)Ú	ExtensionÚstrÚnamec                 ó   — y©NF© ©Úselfs    úE/var/www/html/venv/lib/python3.12/site-packages/wsproto/extensions.pyÚenabledzExtension.enabled   s   € Øó    c                 ó   — y ©Nr   r   s    r   ÚofferzExtension.offer   s   € àr   c                 ó   — y r   r   ©r   r   s     r   ÚacceptzExtension.accept   ó   € Ør   c                 ó   — y r   r   r   s     r   ÚfinalizezExtension.finalize   r   r   c                ó   — t        ddd«      S r   )r   )r   ÚprotoÚopcodeÚrsvÚpayload_lengths        r   Úframe_inbound_headerzExtension.frame_inbound_header    s   € ô �u˜e UÓ+Ð+r   c                ó   — |S r   r   ©r   r#   Údatas      r   Úframe_inbound_payload_dataz$Extension.frame_inbound_payload_data)   s	   € ð ˆr   c                 ó   — y r   r   )r   r#   Úfins      r   Úframe_inbound_completez Extension.frame_inbound_complete.   s   € ð 	r   c                ó
   — ||fS r   r   )r   r#   r$   r%   r*   r-   s         r   Úframe_outboundzExtension.frame_outbound3   s   € ð �Tˆ{Ðr   N©ÚreturnÚbool©r2   z
bool | str)r   r   r2   zbool | str | None©r   r   r2   ÚNone©
r#   úFrameDecoder | FrameProtocolr$   r   r%   r   r&   Úintr2   zCloseReason | RsvBits©r#   r8   r*   Úbytesr2   zbytes | CloseReason©r#   r8   r-   r3   r2   zbytes | CloseReason | None©r#   r8   r$   r   r%   r   r*   r;   r-   r3   r2   ztuple[RsvBits, bytes])Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   r   r   r!   r'   r+   r.   r0   r   r   r   r   r      sØ   … Ø
ƒIóð òó ðóóð,à+ð,ð ð,ð ð	,ð
 ð,ð 
ó,ðØ1ðØ9>ðà	óð
Ø1ðØ8<ðà	#óð
à+ðð ðð ð	ð
 ðð ðð 
ôr   r   c                  óH  — e Zd ZdZdZdZ	 	 	 	 d	 	 	 	 	 	 	 	 	 dd„Zedd„«       Zej                  dd„«       Zedd„«       Z
e
j                  dd„«       Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 d d„Z	 	 	 	 	 	 	 	 	 	 	 	 d!d„Zd"d„Zy)#ÚPerMessageDeflatezpermessage-deflateé   Nc                óÎ   — || _         || _        | j                  | _        | j                  | _        |�|| _        |�|| _        d | _        d | _	        d | _
        d | _        d| _        y r   )Úclient_no_context_takeoverÚserver_no_context_takeoverÚDEFAULT_CLIENT_MAX_WINDOW_BITSÚ_client_max_window_bitsÚDEFAULT_SERVER_MAX_WINDOW_BITSÚ_server_max_window_bitsÚclient_max_window_bitsÚserver_max_window_bitsÚ_compressorÚ_decompressorÚ_inbound_is_compressibleÚ_inbound_compressedÚ_enabled)r   rF   rL   rG   rM   s        r   Ú__init__zPerMessageDeflate.__init__D   sv   € ð +EˆÔ'Ø*DˆÔ'Ø'+×'JÑ'JˆÔ$Ø'+×'JÑ'JˆÔ$Ø!Ð-Ø*@ˆDÔ'Ø!Ð-Ø*@ˆDÔ'à59ˆÔØ9=ˆÔà59ˆÔ%ð 15ˆÔ àˆ�r   c                ó   — | j                   S r   )rI   r   s    r   rL   z(PerMessageDeflate.client_max_window_bits_   ó   € à×+Ñ+Ð+r   c                ó@   — |dk  s|dkD  rd}t        |«      ‚|| _        y ©Né	   rD   z.Window size must be between 9 and 15 inclusive)Ú
ValueErrorrI   ©r   ÚvalueÚmsgs      r   rL   z(PerMessageDeflate.client_max_window_bitsc   ó&   € à�1Š9˜ š
ØBˆCÜ˜S“/Ð!Ø',ˆÕ$r   c                ó   — | j                   S r   )rK   r   s    r   rM   z(PerMessageDeflate.server_max_window_bitsj   rU   r   c                ó@   — |dk  s|dkD  rd}t        |«      ‚|| _        y rW   )rY   rK   rZ   s      r   rM   z(PerMessageDeflate.server_max_window_bitsn   r]   r   c                ód   — |t         j                  t         j                  t         j                  fv S r   )r   ÚTEXTÚBINARYÚCONTINUATION)r   r$   s     r   Ú_compressible_opcodez&PerMessageDeflate._compressible_opcodeu   s"   € Øœ&Ÿ+™+¤v§}¡}´f×6IÑ6IÐJÐJÐJr   c                ó   — | j                   S r   )rR   r   s    r   r   zPerMessageDeflate.enabledx   s   € Ø�}‰}Ðr   c                óÔ   — d| j                   › �d| j                  › �g}| j                  r|j                  d«       | j                  r|j                  d«       dj                  |«      S )Núclient_max_window_bits=úserver_max_window_bits=rF   rG   ú; )rL   rM   rF   ÚappendrG   Újoin)r   Ú
parameterss     r   r   zPerMessageDeflate.offer{   sl   € à% d×&AÑ&AÐ%BÐCØ% d×&AÑ&AÐ%BÐCð
ˆ
ð
 ×*Ò*Ø×ÑÐ:Ô;Ø×*Ò*Ø×ÑÐ:Ô;à�y‰y˜Ó$Ð$r   c                óø  — |j                  d«      D �cg c]  }|j                  «       ‘Œ }}|dd  D ]º  }|j                  d«      rd| _        Œ|j                  d«      rd| _        Œ5|j                  d«      r2t        |j                  dd«      d   j                  «       «      | _        Œx|j                  d«      sŒŠt        |j                  dd«      d   j                  «       «      | _        Œ¼ d| _        y c c}w ©	Nú;r   rF   TrG   rL   ú=rM   )	ÚsplitÚstripÚ
startswithrF   rG   r9   rL   rM   rR   )r   r   ÚbÚbitsÚbits        r   r!   zPerMessageDeflate.finalizeˆ   sÙ   € Ø#(§;¡;¨sÓ#3Ö4˜a�—‘•	Ð4ˆÐ4Ø˜˜�8ò 	PˆCØ�~‰~Ð:Ô;Ø26�Õ/Ø—‘Ð <Ô=Ø26�Õ/Ø—‘Ð 8Ô9Ü.1°#·)±)¸CÀÓ2CÀAÑ2F×2LÑ2LÓ2NÓ.O�Õ+Ø—‘Ð 8Õ9Ü.1°#·)±)¸CÀÓ2CÀAÑ2F×2LÑ2LÓ2NÓ.O�Õ+ð	Pð ˆ�ùò 5s   ”C7c                ó(  — d }d }|j                  d«      D �cg c]  }|j                  «       ‘Œ }}|dd  D ]Ò  }|j                  d«      rd| _        Œ|j                  d«      rd| _        Œ5|j                  d«      r>d|v r-t        |j                  dd«      d   j                  «       «      }Œw| j                  }Œ„|j                  d«      sŒ–d|v r-t        |j                  dd«      d   j                  «       «      }ŒÇ| j                  }ŒÔ ||fS c c}w rn   )rq   rr   rs   rF   rG   r9   rL   rM   )r   ÚparamsrL   rM   rt   ru   rv   s          r   Ú_parse_paramszPerMessageDeflate._parse_params–   s  € Ø!%ÐØ!%Ðà#)§<¡<°Ó#4Ö5˜a�—‘•	Ð5ˆÐ5Ø˜˜�8ò 	IˆCØ�~‰~Ð:Ô;Ø26�Õ/Ø—‘Ð <Ô=Ø26�Õ/Ø—‘Ð 8Ô9Ø˜#‘:Ü-0°·±¸3ÀÓ1BÀ1Ñ1E×1KÑ1KÓ1MÓ-NÑ*à-1×-HÑ-HÑ*Ø—‘Ð 8Õ9Ø˜#‘:Ü-0°·±¸3ÀÓ1BÀ1Ñ1E×1KÑ1KÓ1MÓ-NÑ*à-1×-HÑ-HÑ*ð	Ið  &Ð'=Ð=Ð=ùò# 6s   ˜Dc                óf  — | j                  |«      \  }}g }| j                  r|j                  d«       | j                  r|j                  d«       	 |�|j                  d|› �«       || _        |�|j                  d|› �«       || _        d| _        dj                  |«      S # t        $ r Y y w xY w)NrF   rG   rg   rh   Tri   )	ry   rF   rj   rG   rL   rM   rR   rk   rY   )r   r   rL   rM   rl   s        r   r   zPerMessageDeflate.accept­   sË   € Ø9=×9KÑ9KÈEÓ9RÑ6ÐÐ 6àˆ
à×*Ò*Ø×ÑÐ:Ô;Ø×*Ò*Ø×ÑÐ:Ô;ð	)Ø%Ð1Ø×!Ñ!Ð$;Ð<RÐ;SÐ"TÔUØ.D�Ô+Ø%Ð1Ø×!Ñ!Ð$;Ð<RÐ;SÐ"TÔUØ.D�Ô+ð !ˆDŒMØ—9‘9˜ZÓ(Ð(øô	 ò 	Ùð	ús   Á:B$ Â$	B0Â/B0c                ó  — |j                   r |j                  «       rt        j                  S |j                   r"|t        j
                  u rt        j                  S | j                  |«      | _        | j                  €€|j                   | _        | j                  rc| j                  sJ ‚|j                  r| j                  }n| j                  }| j                  €$t        j                  t        |«       «      | _        t!        ddd«      S )NTF)Úrsv1Ú	iscontrolr   ÚPROTOCOL_ERRORr   rc   rd   rP   rQ   ÚclientrM   rL   rO   ÚzlibÚdecompressobjr9   r   )r   r#   r$   r%   r&   ru   s         r   r'   z&PerMessageDeflate.frame_inbound_headerÃ   sÖ   € ð �8Š8˜×(Ñ(Ô*Ü×-Ñ-Ð-Ø�8Š8˜¤&×"5Ñ"5Ñ5Ü×-Ñ-Ð-à(,×(AÑ(AÀ&Ó(IˆÔ%à×#Ñ#Ð+Ø'*§x¡xˆDÔ$Ø×'Ò'Ø×4Ò4Ð4Ð4Ø—<’<Ø×6Ñ6‘Dà×6Ñ6�DØ×%Ñ%Ð-Ü)-×);Ñ);¼SÀ»Y¸JÓ)G�DÔ&ä�t˜U EÓ*Ð*r   c                óî   — | j                   r| j                  s|S | j                  €J ‚	 | j                  j                  t	        |«      «      S # t
        j                  $ r t        j                  cY S w xY wr   )	rQ   rP   rO   Ú
decompressr;   r€   Úerrorr   ÚINVALID_FRAME_PAYLOAD_DATAr)   s      r   r+   z,PerMessageDeflate.frame_inbound_payload_dataÞ   sk   € ð ×'Ò'¨t×/LÒ/LØˆKØ×!Ñ!Ð-Ð-Ð-ð	:Ø×%Ñ%×0Ñ0´°t³Ó=Ð=øÜ�z‰zò 	:Ü×9Ñ9Ò9ð	:ús   ª#A Á#A4Á3A4c                ó¦  — |sy | j                   sd | _        y | j                  sd | _        y | j                  €J ‚	 | j                  j                  d«      }|| j                  j	                  «       z  }|j                  r| j                  }n| j                  }|rd | _        d | _        |S # t
        j                  $ r t        j                  cY S w xY w)Ns     ÿÿ)rP   rQ   rO   rƒ   Úflushr€   r„   r   r…   r   rG   rF   )r   r#   r-   r*   Úno_context_takeovers        r   r.   z(PerMessageDeflate.frame_inbound_completeê   sÓ   € ñ ØØ×,Ò,Ø'+ˆDÔ$ØØ×'Ò'Ø'+ˆDÔ$ØØ×!Ñ!Ð-Ð-Ð-ð	:Ø×%Ñ%×0Ñ0Ð1DÓEˆDØ�D×&Ñ&×,Ñ,Ó.Ñ.ˆDð �<Š<Ø"&×"AÑ"AÑà"&×"AÑ"AÐáØ!%ˆDÔà#'ˆÔ àˆøô �z‰zò 	:Ü×9Ñ9Ò9ð	:ús   »8B* Â*#CÃCc                ó–  — | j                  |«      s||fS |t        j                  urt        d|d   |d   «      }| j                  €{|t        j                  usJ ‚|j
                  r| j                  }n| j                  }t        j                  t        j                  t        j                  t        |«       «      | _        | j                  j                  t        |«      «      }|r_|| j                  j                  t        j                   «      z  }|d d }|j
                  r| j"                  }n| j$                  }|rd | _        ||fS )NTr   é   éüÿÿÿ)rd   r   rc   r   rN   r   rL   rM   r€   ÚcompressobjÚZ_DEFAULT_COMPRESSIONÚDEFLATEDr9   Úcompressr;   r‡   ÚZ_SYNC_FLUSHrF   rG   )r   r#   r$   r%   r*   r-   ru   rˆ   s           r   r0   z PerMessageDeflate.frame_outbound	  s&  € ð ×(Ñ(¨Ô0Ø˜�;Ðàœ×,Ñ,Ñ,Ü˜$  A¡¨¨A©Ó/ˆCà×ÑÐ#Ø¤×!4Ñ!4Ñ4Ð4Ð4Ø�|Š|Ø×2Ñ2‘à×2Ñ2�Ü#×/Ñ/Ü×*Ñ*¬D¯M©M¼CÀ»I¸:ó ˆDÔð ×Ñ×(Ñ(¬¨t«Ó5ˆáØ�D×$Ñ$×*Ñ*¬4×+<Ñ+<Ó=Ñ=ˆDØ˜˜�9ˆDà�|Š|Ø&*×&EÑ&EÑ#à&*×&EÑ&EÐ#á"Ø#'�Ô à�Tˆ{Ðr   c                ó<  — d| j                   › �g}| j                  r|j                  d«       |j                  d| j                  › �«       | j                  r|j                  d«       dj                  | j                  j                  dj                  |«      «      S )Nrg   rF   rh   rG   z<{} {}>ri   )	rL   rF   rj   rM   rG   ÚformatÚ	__class__r>   rk   )r   Údescrs     r   Ú__repr__zPerMessageDeflate.__repr__1  s…   € Ø*¨4×+FÑ+FÐ*GÐHÐIˆØ×*Ò*Ø�L‰LÐ5Ô6Ø�‰Ð.¨t×/JÑ/JÐ.KÐLÔMØ×*Ò*Ø�L‰LÐ5Ô6à×Ñ §¡× 7Ñ 7¸¿¹À5Ó9IÓJÐJr   )FNFN)
rF   r3   rL   ú
int | NonerG   r3   rM   r–   r2   r6   )r2   r9   )r[   r9   r2   r6   )r$   r   r2   r3   r1   r4   r5   )rx   r   r2   ztuple[int | None, int | None])r   r   r2   zbool | None | strr7   r:   r<   r=   )r2   r   )r>   r?   r@   r   rH   rJ   rS   ÚpropertyrL   ÚsetterrM   rd   r   r   r!   ry   r   r'   r+   r.   r0   r•   r   r   r   rC   rC   >   s†  „ Ø€Dà%'Ð"Ø%'Ð"ð ,1Ø-1Ø+0Ø-1ðà$(ðð !+ðð %)ð	ð
 !+ðð 
óð6 ò,ó ð,ð ×"Ñ"ò-ó #ð-ð ò,ó ð,ð ×"Ñ"ò-ó #ð-óKóó%óó>ó.)ð,+à+ð+ð ð+ð ð	+ð
 ð+ð 
ó+ð6
:Ø1ð
:Ø9>ð
:à	ó
:ðØ1ðØ8<ðà	#óð>&à+ð&ð ð&ð ð	&ð
 ð&ð ð&ð 
ó&ôPKr   rC   )Ú__doc__Ú
__future__r   r€   Úabcr   r   Útypingr   Úframe_protocolr   r	   r
   r   r   r   rC   r   ÚSUPPORTED_EXTENSIONSr   r   r   ú<module>rŸ      sP   ðñõ #ã ß #Ý ç UÕ Uô+�ô +ô\{K˜	ô {KðD *×.Ñ.Ð0AÐBÑ r   