
    rp0jiN                        % S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJrJr  SS	KJr  S
SKJrJrJr  S
SKJrJrJrJrJrJr  \ V s1 s H  n \" U 5      iM     sn r\\\      \S'   S
rSrSr Sr!\RD                  r#\RH                  r%Sr&\RN                  RP                  r)\RH                  RP                  r*\RD                  RP                  r+\RX                  RP                  r-\R\                  RP                  r/\R`                  RP                  r1Sr2Sr3Sr4Sr5S
r6\7Rp                  r9\r: " S S5      r; " S S5      r<gs  sn f )z0Reader for WebSocket protocol versions 13 and 8.    N)deque)Final   )BaseProtocol)ZLibDecompressor)_EXC_SENTINELset_exception)	EofStream   )UNPACK_CLOSE_CODEUNPACK_LEN3websocket_mask)WS_DEFLATE_TRAILINGWebSocketErrorWSCloseCode	WSMessageWSMessageTextBytes	WSMsgTypeALLOWED_CLOSE_CODES      )T    )Fr   c                       \ rS rSrSrS\S\S\R                  SS4S jr	S\
4S	 jrS\S-  4S
 jr\4S\S\R                  SS4S jjrSS jrSS jr      SS jrS\\-  4S jrS\\-  4S jrSrg)WebSocketDataQueue7   zeWebSocketDataQueue resumes and pauses an underlying stream.

It is a destination for WebSocket data.
protocollimitloopreturnNc                    SU l         Xl        US-  U l        X0l        SU l        S U l        S U l        [        5       U l        U R                  R                  U l
        U R                  R                  U l        g )Nr   r   F)_size	_protocol_limit_loop_eof_waiter
_exceptionr   _bufferpopleft_get_bufferappend_put_buffer)selfr   r   r   s       V/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/_websocket/reader_py.py__init__WebSocketDataQueue.__init__=   sb     
!ai
	4804JO'<<//<<..r   c                     U R                   $ N)r&   r.   s    r/   is_eofWebSocketDataQueue.is_eofK   s    yyr   c                     U R                   $ r3   )r(   r4   s    r/   	exceptionWebSocketDataQueue.exceptionN   s    r   exc	exc_causec                 d    SU l         Xl        U R                  =nb  S U l        [        X1U5        g g NT)r&   r(   r'   r	   )r.   r:   r;   waiters       r/   r	    WebSocketDataQueue.set_exceptionQ   s5    
 	ll"F/DL&y1 0r   c                     U R                   =nc  g S U l         UR                  5       (       d  UR                  S 5        g g r3   )r'   done
set_result)r.   r>   s     r/   _release_waiter"WebSocketDataQueue._release_waiter\   s9    ll"F+{{}}d# r   c                 @    SU l         U R                  5         S U l        g r=   )r&   rC   r(   r4   s    r/   feed_eofWebSocketDataQueue.feed_eofc   s    	r   c                    U =R                   U-  sl         U R                  X45        U R                  5         U R                   U R                  :  a7  U R                  R
                  (       d  U R                  R                  5         g g g r3   )r"   r-   rC   r$   r#   _reading_pausedpause_readingr.   datasizes      r/   	feed_dataWebSocketDataQueue.feed_datah   sc     	

d
$&::#DNN,J,JNN((* -K#r   c                   #    U R                   (       dh  U R                  (       dW  U R                  (       a   eU R                  R	                  5       U l         U R                  I S h  vN   U R                  5       $ U R                  5       $  N$! [
        R                  [
        R                  4 a	    S U l        e f = f7fr3   )	r)   r&   r'   r%   create_futureasyncioCancelledErrorTimeoutError_read_from_bufferr4   s    r/   readWebSocketDataQueue.readq   s     ||DII||##::335DLll"" %%''t%%''	 #**G,@,@A #s0   AB>B 'B(B , B>B -B;;B>c                 R   U R                   (       ax  U R                  5       u  pU =R                  U-  sl        U R                  U R                  :  a5  U R                  R
                  (       a  U R                  R                  5         U$ U R                  b  U R                  e[        er3   )	r)   r+   r"   r$   r#   rI   resume_readingr(   r
   rK   s      r/   rU   $WebSocketDataQueue._read_from_buffer|   sq    <<))+JDJJ$JzzDKK'DNN,J,J--/K??&//!r   )
r)   r&   r(   r+   r$   r%   r#   r-   r"   r'   r    N)rL   zWSMessage | WSMessageTextBytesrM   
cython_intr    N)__name__
__module____qualname____firstlineno____doc__r   intrR   AbstractEventLoopr0   boolr5   BaseExceptionr8   r   builtinsr	   rC   rF   rN   r   r   rV   rU   __static_attributes__ r   r/   r   r   7   s    
/$/-0/;B;T;T/	/ =4/  -:	2	2 ))	2 
		2$
+4+<H+	+	(I(:: 	(	9/A#A 	r   r   c                       \ rS rSr  SS\S\S\S\SS4
S jjrSS	 jrS
\	\
-  \-  S\\\	4   4S jrS\S\\-  S\	\
-  S\\-  SS4
S jrS
\	SS4S jrSrg)WebSocketReader   queuemax_msg_sizecompressdecode_textr    Nc                 6   Xl         X l        X@l        S U l        [	        5       U l        [        U l        [        U l	        SU l
        [        U l        / U l        SU l        SU l        SU l        S U l        SU l        SU l        [&        U l        S U l        X0l        g )NFr   r   )rl   _max_msg_size_decode_text_exc	bytearray_partialREAD_HEADER_stateOP_CODE_NOT_SET_opcode
_frame_fin_frame_opcode_payload_fragments_frame_payload_len_tail	_has_mask_frame_mask_payload_bytes_to_read_payload_len_flagCOMPRESSED_NOT_SET_compressed_decompressobj	_compress)r.   rl   rm   rn   ro   s        r/   r0   WebSocketReader.__init__   s     
)'&*	!!+"1/1"#
)-&'#!" 27;!r   c                 8    U R                   R                  5         g r3   )rl   rF   r4   s    r/   rF   WebSocketReader.feed_eof   s    

r   rL   c                     [        U5      [        La  [        U5      nU R                  b  SU4$  U R                  U5        [        $ ! [         a,  nX l        [        U R                  U5        [        s S nA$ S nAff = fr=   )	typebytesrs   
_feed_data	Exceptionr	   rl   EMPTY_FRAME_ERROREMPTY_FRAME)r.   rL   r:   s      r/   rN   WebSocketReader.feed_data   so    :U";D99 :	%OOD!   	%I$**c*$$	%s   A 
A=!A82A=8A=finopcodepayload
compressedc           	      	   U[         [        [        1;   Ga  U[        :X  a.  U R                  [        :X  a  [        [        R                  S5      eU(       d&  U[        :w  a  X l        U =R                  U-  sl        g [        U R                  5      nU[        :X  a  U R                  n[        U l        O%U(       a  [        [        R                  SU< 35      eU(       a*  U R                  U-   nU R                  R                  5         OUnU(       a  U R                  (       d  [        SS9U l        U R                  R                  U[        -   U R                  (       a  U R                  S-   OU R                  5      nU R                  (       a@  [!        U5      U R                  :  a'  [        [        R"                  SU R                   35      eO [%        U5      [&        L a  UnO['        U5      nU[         :X  a  U R(                  (       aM   UR+                  S5      nU R0                  R3                  [5        [6        [8        US	45      [!        U5      5        g U R0                  R3                  [5        [:        [8        US	45      [!        U5      5        g U R0                  R3                  [5        [6        [<        US	45      [!        U5      5        g U[>        :X  a  [!        U5      S
:  at  [A        US S
 5      S   n
U
S:  a'  U
[B        ;  a  [        [        R                  SU
 35      e US
S  R+                  S5      n[5        [6        [D        RF                  X45      nOLU(       a$  [        [        R                  SU SU SU< 35      e[5        [6        [D        RF                  SS	45      nU R0                  R3                  US5        g U[H        :X  aG  [5        [6        [D        RJ                  US	45      nU R0                  R3                  U[!        U5      5        g U[L        :X  aG  [5        [6        [D        RN                  US	45      nU R0                  R3                  U[!        U5      5        g [        [        R                  SU< 35      e! [,         a   n	[        [        R.                  S5      U	eS n	A	ff = f! [,         a   n	[        [        R.                  S5      U	eS n	A	ff = f)Nz*Continuation frame for non started messagez8The opcode in non-fin frame is expected to be zero, got T)suppress_deflate_headerr   z(Decompressed message exceeds size limit zutf-8zInvalid UTF-8 text message r   r   i  zInvalid close code: zInvalid close frame:  Unexpected opcode=)(OP_CODE_TEXTOP_CODE_BINARYOP_CODE_CONTINUATIONry   rx   r   r   PROTOCOL_ERRORru   rd   clearr   r   decompress_syncr   rq   lenMESSAGE_TOO_BIGr   r   rr   decodeUnicodeDecodeErrorINVALID_TEXTrl   rN   	TUPLE_NEWr   WS_MSG_TYPE_TEXTr   WS_MSG_TYPE_BINARYOP_CODE_CLOSEr   r   r   CLOSEOP_CODE_PINGPINGOP_CODE_PONGPONG)r.   r   r   r   r   has_partialassembled_payloadpayload_mergedtextr:   
close_codeclose_messagemsgs                r/   _handle_frameWebSocketReader._handle_frame   s0    lN4HII--$,,/2Q$..@  11#)L(t}}-K--. $..''-j2  $(MMG$;!##%$+! ***:SW*XD' "&!4!4!D!D%(;;  -- **Q.!//" %%#n*=@R@R*R(#33B4CUCUBVW  '(E1!2!&'8!9%$$#-44W= JJ((!).>b-IJN+ JJ((!.1A>SU0V N+	 

$$i*<nb)QR' }$7|q .wr{;A>
$;N)N(#22.zl; $+ABK$6$6w$?M
  	IOOZ+WX$..+C5&7+F 
  	IOOQ+CDJJ  a(|#I	'DECJJ  c'l3|#I	'DECJJ  c'l3 **.@
,K s . #,'446R"##H * (#002Ns0   R &R1 
R.R))R.1
S;SSc                    U R                   (       a  U R                   U-   Ssol         Sn[        U5      nUn U R                  [        :X  Ga  X2-
  S:  a  GOXB   nXBS-      nUS-  nUS-	  S-  nUS-	  S-  nUS-	  S-  n	US-	  S-  n
US	-  nU	(       d  U
(       d  U(       a+  U R                  (       d  [        [        R                  S
5      eU[        [        [        [        [        [        1;  a  [        [        R                  SU< 35      eUS:  a   US:X  a  [        [        R                  S5      eUS-	  S-  nUS-  nUS:  a   US:  a  [        [        R                  S5      eU R                  (       d  U R                  [         :X  a  U(       a  ["        O[$        U l        O!U(       a  [        [        R                  S
5      e['        U5      U l        Xl        ['        U5      U l        Xl        [.        U l        U R                  [.        :X  Ga  U R,                  nUS:X  a(  X2-
  S:  a  GOAXB   nXBS-      nUS-  nUS-  U-  U l        O/US:  a#  X2-
  S:  a  GO[3        X5      S   U l        US-  nOXl        U R4                  (       az  U R(                  [        [        [        1;   a[  U R0                  [        U R6                  5      -   nXR4                  :  a*  [        [        R8                  SU SU R4                   35      eU R*                  (       a  [:        O[<        U l        U R                  [:        :X  a&  X2-
  S:  a  GO)XBUS-    U l        US-  n[<        U l        U R                  [<        :X  Ga  X2-
  nU R0                  U:  a  UnU =R0                  U-  sl        OX R0                  -   nSU l        U R@                  nU =R@                  UU-
  -  sl         UnUnU R0                  S:w  a   U RB                  RE                  UUU 5        GO_U(       a  U RB                  RE                  UUU 5        U R*                  (       aL  U R>                  c   e[G        SRI                  U RB                  5      5      n[K        U R>                  U5        UnOSRI                  U RB                  5      nU RB                  RM                  5         O`U R*                  (       aJ  U R>                  c   eUUU n[O        U5      [F        La  [G        U5      n[K        U R>                  U5        UnOUUU nU RQ                  U R                  U R(                  UU R                  5        SU l         [        U l        GM7  X#:  a
  XBU U l         gSU l         g)z&Return the next frame from the socket.r   r   r   r            r      z*Received frame with non-zero reserved bitsr   z!Received fragmented control frame   }   z5Control frame payload cannot be larger than 125 bytes~      zMessage size z exceeds limit N))r~   r   rw   rv   r   r   r   r   r   r   r   r   r   r   rz   r   r   COMPRESSED_TRUECOMPRESSED_FALSErd   r{   r   r   READ_PAYLOAD_LENGTHr   r   rq   ru   r   READ_PAYLOAD_MASKREAD_PAYLOADr   r}   r|   r,   rt   joinr   r   r   r   )r.   rL   	start_posdata_len	data_cstr
first_bytesecond_byter   rsv1rsv2rsv3r   has_masklengthlen_flagprojected_size	chunk_len	f_end_poshad_fragmentsf_start_pospayload_bytearrayr   s                         r/   r   WebSocketReader._feed_dataF  sH   ::#zzD0#D*	t9	{{k)'!+&1
'A6Q	!Q!+"a1,"a1,"a1,#c) 4D(#22D 
 ( "!  "  )#22,VJ7 
 C<C1H(#22; 
 (1,1$t+ C<FSL(#22O  ??d&6&6:L&L:>DTD$(#22D 
 #'s)%+"!%h)/&1 {{1111s?+a/!*!5J"+M":KNI2</K2OD/^+a/2=d2Nq2QD/NI2:/
 %%$*<*< "(A +
 &*%@%@3t}}CU%UN%););;,'77+N+; <--1-?-?,@B  48>>/| {{//'!+#,Q#G Q	*{{l*$0	..); (I//9</ ),G,G GI23D/ $ 7 7''9y+@@''%	..!3 ++229[3ST !++229[3ST~~#//;;;,5chht?V?V6W,X)&t'7'79JK"3"%((4+B+B"C++113^^++777(1+i(H%-.i? -66G,H)"4#3#35FG/G'I>G""OOT%7%7$BRBR +,')W \ 7@6JY2
PS
r   )r   r   rr   r   rs   rz   r   r{   r}   r   rq   ry   ru   r   r|   r   rw   r~   rl   )TTr[   )r]   r^   r_   r`   r   rb   rd   r0   rF   r   rt   
memoryviewtuplerN   r\   r   r   rg   rh   r   r/   rj   rj      s    
  "!" " 	"
 " 
"<ei/*< tU{AS  GG j G "	G
 *$G 
GRwTu wT wTr   rj   )=ra   rR   rf   collectionsr   typingr   base_protocolr   compression_utilsr   helpersr   r	   streamsr
   r   r   r   modelsr   r   r   r   r   r   rb   r   set__annotations__rv   r   r   r   BINARYr   TEXTr   rx   CONTINUATIONvaluer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __new__r   r\   r   rj   )is   0r/   <module>r      s9   6     ( 0 2  C C  9D'D1A'D U3s8_ D   %% >>   --33 ~~##!!''%%~~##~~##   MM	
N NbuT uTe (Es   E