wcePh UdZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZmZmZddlmZddlmZmZdd lmZdd lm Z d Z!Gd d e Z"e"Dchc] }e#| c}Z$eee#e%d<dZ&Gdde Z'dZ(ee)e%d<e djTZ+e djTZ,e djZZ.e dj^Z0e dj^Z1e dj^Z2e dj^Z3dZ4ee#e%d<dZ5ee#e%d<GddeZ6e6e'jnddZ8e6e'jrddZ:Gdd e;Z<Gd!d"e;Z=ej|Z?ee@e%d#<ejd$ee)fd%ZBd&e)d'eCd$dfd(ZDereDZEn dd)lFmGZGeGZEe)gd*ZIee)e%d+<ejd,ZKeee@e%d-<ejd.ZLeee@e%d/<dz%WebSocket protocol versions 13 and 8.N)IntEnum)Struct) AnyCallableFinalList NamedTupleOptionalPatternSetTupleUnioncast) BaseProtocol)ZLibCompressorZLibDecompressor) NO_EXTENSIONS) DataQueue) WS_CLOSED_MESSAGEWS_CLOSING_MESSAGEWS_KEYWebSocketReaderWebSocketWriter WSMessageWebSocketError WSMsgType WSCloseCodec@eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd Zy)riiiiiiiiiiiiN)__name__ __module__ __qualname__OK GOING_AWAYPROTOCOL_ERRORUNSUPPORTED_DATAABNORMAL_CLOSURE INVALID_TEXTPOLICY_VIOLATIONMESSAGE_TOO_BIGMANDATORY_EXTENSIONINTERNAL_ERRORSERVICE_RESTARTTRY_AGAIN_LATER BAD_GATEWAY8/usr/lib/python3/dist-packages/aiohttp/http_websocket.pyrr,sG BJNLONOOKr2rALLOWED_CLOSE_CODESicPeZdZdZdZdZdZdZdZdZ dZ d Z eZ eZ eZeZeZe Ze Ze Zy ) rrr iiN)r!r"r# CONTINUATIONTEXTBINARYPINGPONGCLOSECLOSINGCLOSEDERRORtextbinarypingpongcloseclosingclosederrorr1r2r3rrHsYL D F D D EG F E D F D D EG F Er2rs$258EAFA5-E914-47DA-95CA-C5AB0DC85B11rz!Hz!Qz!BBz!BBHz!BBQi@MSG_SIZE DEFAULT_LIMITcheZdZUeed<eed<eeed<ejdde egefdefdZy) rtypedataextra)loadsrSreturnc&||jS)zAReturn parsed JSON data. .. versionadded:: 0.22 )rQ)selfrSs r3jsonzWSMessage.jsonts TYYr2N) r!r"r#r__annotations__rr strrWrSrr1r2r3rrns; O I C=48JJ XseSj1 3 r2rc<eZdZdZdededdffd ZdefdZxZS)rz WebSocket protocol parser error.codemessagerTNc4||_t| ||yN)r[super__init__)rVr[r\ __class__s r3r`zWebSocketError.__init__s  w'r2c<tt|jdS)Nr)rrYargsrVs r3__str__zWebSocketError.__str__sC1&&r2) r!r"r#__doc__intrYr`re __classcell__)ras@r3rrs,*(S(3(4(''r2rceZdZdZy)WSHandshakeErrorz#WebSocket protocol handshake error.N)r!r"r#rfr1r2r3rjrjs-r2rjnative_byteorderrTc xtdDcgc]tfdtdD!c}Scc}w)Nr:c3(K|] }|z  ywr^r1).0abs r3 z_xor_table..s,A!a%,)rangebytes)rps`r3 _xor_tablerus*6;Cj AE,s, , AA As$7maskrQct|tsJ|t|dk(sJ||rtfd|D\}}}}|dddj ||ddd<|dddj ||ddd<|dddj ||ddd<|dddj ||ddd<yy)awWebsocket 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. c3(K|] }| ywr^r1)rnn _XOR_TABLEs r3rqz)_websocket_mask_python..s2jm2rrNrr6) isinstance bytearraylenru translate)rvrQrorpcdr{s @r3_websocket_mask_pythonrs dI &,, & t9>4> \ 2T2 1a1I''*SqS !$Q$Z))!,QTT !$Q$Z))!,QTT !$Q$Z))!,QTT  r2)_websocket_mask_cython)rrr_WS_DEFLATE_TRAILINGz^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$ _WS_EXT_REzpermessage-deflate([^,]+)?_WS_EXT_RE_SPLITextstrisservercD|syd}d}tj|D]}|jd}|sd}||fStj |}|rd}|rP|jdr't |jd}|dkDs|dkrd}p|jdrd}||fS|jd r/t |jd }|dkDs|dkr t d |jd rd}||fS|rt d |jdz||fS) N)rFrFrrxr7TzInvalid window sizer6z#Extension for deflate not supported)rfinditergrouprmatchrgrj)rrcompress notakeoverextdefextrs r3 ws_ext_parsersP HJ((0(Y1H J Z I  ( H;;q>"5;;q>2H  "}1 #$ ;;q>!%J$ Z !;;q>"5;;q>2H  "}1 ./DEE;;q>!%J Z "#H399UV<#WX XQ(YT Z r2rserver_notakeoverc|dks|dkDr tddg}|s|jd|dkr|jdt|z|r|jddj|S) Nr7rzCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflateclient_max_window_bitszserver_max_window_bits=server_no_context_takeoverz; ) ValueErrorappendrYjoin)rrr enabledexts r3 ws_ext_genrs !|x"} T  ''J 23"}3c(mCD67 99Z  r2ceZdZdZdZdZdZy) WSParserStaterr6r|rxN)r!r"r# READ_HEADERREAD_PAYLOAD_LENGTHREAD_PAYLOAD_MASK READ_PAYLOADr1r2r3rrsKLr2rc eZdZ d deedededdfdZddZde de ee ffd Z de de ee ffd Z d e de e eeeeeeffd Zy)rqueue max_msg_sizerrTNc.||_||_d|_t|_t j |_d|_d|_ d|_ t|_ d|_ d|_ d|_d|_d|_d|_d|_||_y)NFr2r)r _max_msg_size_excr~_partialrr_state_opcode _frame_fin _frame_opcode_frame_payload_tail _has_mask _frame_mask_payload_length_payload_length_flag _compressed_decompressobj _compress)rVrrrs r3r`zWebSocketReader.__init__s )-1 !  #// &* ,0'k ,0 $%!+/:>!r2c8|jjyr^)rfeed_eofrds r3rzWebSocketReader.feed_eof2s r2rQc|jrd|fS |j|S#t$r,}||_|jj |Yd}~yd}~wwxYw)NT)Tr2)r _feed_data Exceptionr set_exception)rVrQexcs r3 feed_datazWebSocketReader.feed_data5sS 99:  ??4( ( DI JJ $ $S ) s# A"AAc  |j|D]f\}}}}|r|jstd|_|tjk(rt |dk\rlt |ddd}|dkr%|tvrttjd| |ddjd}ttj||} n@|r#ttjd |d |d |ttjdd } |jj!| d|tj"k(r@|jj!ttj"|d t |f|tj$k(r@|jj!ttj$|d t ||tj&tj(fvr)|j*ttjd ||s|tj,k7r||_|j.j1||j2sIt |j.|j2k\smttj4d j7t |j.|j2|j.r<|tj,k7r)ttjdj7||tj,k(r!|j*J|j*}d|_|j.j1||j2rit |j.|j2k\rGttj4d j7t |j.|j2|r|jJ|j.j1t8|jj;|j.|j2} |jj<rut |jj<} ttj4dj7|j2| z|j2t?|j.} |j.jA|tj&k(rR | jd} |jj!ttj&| d t | )|jj!ttj(| d t | iy#t$r }ttjd|d}~wwxYw#t$r }ttjd|d}~wwxYw)NT)suppress_deflate_headerr6ri zInvalid close code: utf-8zInvalid UTF-8 text messagezInvalid close frame:  zUnexpected opcode=z Message size {} exceeds limit {}zr?r<r=rr;rextendrr+formatrdecompress_syncunconsumed_tailrtclear) rVrQfinopcodepayload compressed close_code close_messagermsgpayload_mergedleftrDs r3rzWebSocketReader._feed_data@s040@0@0Fw  ,C*$"5"5&6t&T#(w<1$!272A;!?!BJ!D(Z?R-R,'662:,?#(/ (:(:7(C $IOOZOC(#22/uAfXQwkJ $IOOQ;C $$S!,9>>) $$inngr:CL9>>) $$inngr:CL y~~y/?/?@@LL($..2DVJ0O !7!77'- MM((1))c$--.@DDVDV.V,'77>EE #DMM 2D4F4F}}!Y%;%;;"0 + : :!77=vf~# !7!77#||777!%'+ MM((1))c$--.@DDVDV.V,'77>EE #DMM 2D4F4F"#22>>> ,,-AB)-)<)<)L)L MM4+=+=* ..>>#&t':':'J'J#KD"0 + ; ; O V V$($6$6$=t?Q?Q!"#*/t}})=MM'')/'#1#8#8#AD JJ00 ))..$ CSY ,,%i&6&6K/iw rY.#,'446R"##D 2'"0 + 8 8:V##&''s1U=*AV)= V&V!!V&) W2W  Wbufcrg}|jr|j|zdc}|_d}t|} |jtjk(rG||z dk\r<|||dz}|dz }|\}}|dz dz}|dz dz} |dz dz} |d z dz} |d z} | s| s| r&|j st tjd | dkDr|dk(rt tjd |dz dz} |d z}| dkDr|dkDrt tjd|js |j | rdnd|_ n| rt tjd t||_ | |_ t| |_ ||_tj|_nn|jtjk(r |j}|dk(r^||z dk\rT|||dz}|dz }t!|d}||_|jrtj$ntj&|_nn|dkDr^||z dk\rT|||dz}|dz }t)|d}||_|jrtj$ntj&|_n:n||_|jrtj$ntj&|_|jtj$k(r2||z d k\r(|||d z|_|d z }tj&|_nn|jtj&k(r|j"}|j,}||z }||k\r!||z |_|j/||d|}n#d|_|j/||||z||z}|j"dk(r|jr$|j*Jt1|j*||j3|j|j||jft5|_tj|_nn||d|_|S)z&Return the next frame from the socket.r2rTr6rrrxrz*Received frame with non-zero reserved bitsz!Received fragmented control frame}z5Control frame payload cannot be larger than 125 bytesNF~r9)rrrrrrrrr&rrboolrrrr UNPACK_LEN2rrr UNPACK_LEN3rrr_websocket_maskrr~)rVrframes start_pos buf_lengthrQ first_byte second_byterrsv1rsv2rsv3rhas_masklengthr chunk_lens r3rzWebSocketReader.parse_framesR ::"jj3.OC X {{m777 )Q.y9q=9DNI.2+J %?a/C&!Oq0D&!Oq0D&!Oq0D'#-FtT^^,'66H |q,'66? !,q 0A5H(4/F| ,'66V$*:*:*B374U(,'66H '+3iDO)/D&%)(^DN06D-"/"C"CDK{{m???22S=!I-2"9y1}=!Q !,T!21!5/5, $~~*;;!.!;!; c\!I-2"9y1}=!Q !,T!21!5/5, $~~*;;!.!;!; +1D( >>&77*77K{{m=== )Q.'*9y1}'ED$NI"/"<">!Z0D==E*D(G D' * KK / 0   Vs4y!83w> !T^^%>%>%@&'JK K T"r2cKt|tr|jd}|j|tj d{y7w)zSend pong message.rN)r}rYencoderrr?rVr\s r3rGzWebSocketWriter.pong8 gs #nnW-Gw 777AAA AcKt|tr|jd}|j|tj d{y7w)zSend ping message.rN)r}rYrrrr>rs r3rFzWebSocketWriter.pingr r!rEcKt|tr|jd}|r*|j|tj |d{y|j|tj |d{y7/7w)rrN)r}rYrrrr=r<)rVr\rErs r3sendzWebSocketWriter.sendsg gs #nnW-G ""7I,<, A: )A>4A<5A><A>r[cKt|tr|jd} |jt ||zt j d{d|_y7 #d|_wxYww)z #5#T# 8%s "38d8 8%s "38d8"& FsEz" F F3- F  F ! !U5#:5F !QU !r2r)F)rFF)Srfr( functoolsrWrresysrenumrstructrtypingrrrrr r r r r rr base_protocolrcompression_utilsrrhelpersrstreamsr__all__rrgr4rXrrrrt unpack_fromrrunpackrpackrr r r&rLrNrrBrrArrrrj byteorderrkrY lru_cacherur~rr _websocketr ImportErrorrcompilerrrrrrrr)is0r3r>s+     (?"  '  9D'D1A'DU3s8_D!)0?e >Tl&& Tl&& 4L'' 5M   6N   6N   ,##%*! uSz!   i..d;y00$='Y'.y. #}}%*, BDKBB--i-D-2,O160&++C%DeElD#-"**/# E'#, )3 3P(Q% %Q0 #0 $0 5dCS0 hKP!!"&!CG!!,G||~ L!L!y(Ex 101s1I<II I