
    hg"                        d dl 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	m
Z
 ddlmZ dZdZ e            Z ej        d dd	d
dd          Z ej        ddddddddddddd          Z G d d          Z G d d          ZdS )     N)bidi)tcp)bitshumanstrutils   )Maskeri   l                  	   
   )CONTINUETEXTBINARYCLOSEPINGPONGi  i  i  i  i  i  i  i  i  i  i  i  i  )NORMAL_CLOSURE
GOING_AWAYPROTOCOL_ERRORUNSUPPORTED_DATARESERVEDRESERVED_NO_STATUSRESERVED_ABNORMAL_CLOSUREINVALID_PAYLOAD_DATAPOLICY_VIOLATIONMESSAGE_TOO_BIGMANDATORY_EXTENSIONINTERNAL_ERRORRESERVED_TLS_HANDHSAKE_FAILEDc            	       p    e Zd Zej        dddddeeef	dZed             Zd Z	d Z
ed             Zd Zd	S )
FrameHeaderr   Fc
                 L   d|cxk    rdk     sn t          d          || _        || _        || _        || _        || _        || _        |	t          u r |                     | j                  | _	        n|	| _	        |t          u r	|t          u s
|dk    s|du rd| _
        d| _        nP|t          u rd| _
        || _        n8|t          u r!|| _
        t          j        d          | _        n|| _
        || _        | j        r't          | j                  dk    rt          d          d S d S )	Nr      zopcode must be 0-16F    r      zMasking key must be 4 bytes.)
ValueErroropcodepayload_lengthfinrsv1rsv2rsv3DEFAULT_make_length_codelength_codemaskmasking_keyosurandomlen)
selfr(   r)   r*   r+   r,   r-   r2   r1   r0   s
             o/var/www/fb-scrape/myenv/lib/python3.11/site-packages/seleniumwire/thirdparty/mitmproxy/net/websockets/frame.py__init__zFrameHeader.__init__.   sP    F####V####2333,			'!!#55d6IJJD*DGOOw 6 64199PUDI"DW__DI*DG##DI!z!}}DDI*D 	=D$4 5 5 : :;<<<	= 	= : :r%   c                 2    |dk    r|S |dk    r|dk    rdS dS )z
         A WebSocket frame contains an initial length_code, and an optional
         extended length code to represent the actual length if length code is
         larger than 125
        }   ~   i      )r6   lengths     r7   r/   zFrameHeader._make_length_codeX   s-     S==Ms]]v33r%   c                 6   dt                               | j        t          | j                                                            g}g }dD ]'}t          | |          r|                    |           (|r*|                    dd                    |          g           | j	        r*|                    dt          | j	                  z             | j        r/|                    dt          j        | j                  z             d                    |          S )Nz	ws frame:)r*   r+   r,   r-   r1   :|z:key=%sz %s )OPCODEget_namer(   hexlowergetattrappendextendjoinr2   reprr)   r   pretty_size)r6   valsflagsis       r7   __repr__zFrameHeader.__repr__f   s   OODKT[)9)9::@@BB
 8 	  	 AtQ  Q 	0KKchhuoo./// 	<KK	D)9$:$::;;; 	HKK 1$2E F FFGGGwwt}}r%   c                 d   t          j        dd| j                  }t          j        |d| j                  }t          j        |d| j                  }t          j        |d| j                  }|| j        z  }t          j        | j        d| j                  }t          ||g          }| j
        dk     rnk| j
        t          k     r|t          j        d| j
                  z  }n=| j
        t          k     r|t          j        d| j
                  z  }nt          d	          | j        r
|| j        z  }|S )
Nr            r&   r;   !H!Qz$Payload length exceeds 64bit integer)r   setbitr*   r+   r,   r-   r(   r0   r1   bytesr)   MAX_16_BIT_INTstructpackMAX_64_BIT_INTr'   r2   )r6   
first_bytesecond_bytebs       r7   	__bytes__zFrameHeader.__bytes__w   s   [Atx00
[Q	::
[Q	::
[Q	::
$+-
k$"2AtyAA:{+,,$$ >11 T4#6777AA >11 T4#6777AACDDD 	"!!Ar%   c                 D   |                     d          \  }}t          j        |d          }t          j        |d          }t          j        |d          }t          j        |d          }|dz  }t          j        |d          }	|dz  }
|
dk    r|
}n[|
d	k    r+t          j        d
|                     d                    \  }n*t          j        d|                     d                    \  }|	dk    r|                     d          }nd} | ||||||	|
||	  	        S )z1
          read a WebSocket frame header
        r
   rR   rS   rT   r&      r<   r:   r;   rU   rV   r   r   N)	r*   r+   r,   r-   r(   r1   r0   r)   r2   )	safe_readr   getbitrZ   unpack)clsfpr]   r^   r*   r+   r,   r-   r(   mask_bitr0   r)   r2   s                r7   	from_filezFrameHeader.from_file   s1   
 #%,,q//
Kk*a(({:q)){:q)){:q))c!;{A..!D( #(NNC$mD",,q//BBONN$mD",,q//BBON q==,,q//KKKs#)#

 

 

 
	
r%   c                 p    t          |t                    r t          |           t          |          k    S dS NF)
isinstancer"   rX   r6   others     r7   __eq__zFrameHeader.__eq__   s0    e[)) 	/;;%,,..ur%   N)__name__
__module____qualname__rC   r   r.   r8   classmethodr/   rP   r`   ri   ro   r=   r%   r7   r"   r"   ,   s         {(= (= (= (=T   [  "  8 &
 &
 [&
P    r%   r"   c                   X    e Zd ZdZd
dZed             Zd Zd Zed             Z	d Z
d	S )Framea  
    Represents a single WebSocket frame.
    Constructor takes human readable forms of the frame components.
    from_bytes() reads from a file-like object to create a new Frame.

    WebSocket frame as defined in RFC6455

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-------+-+-------------+-------------------------------+
      |F|R|R|R| opcode|M| Payload len |    Extended payload length    |
      |I|S|S|S|  (4)  |A|     (7)     |             (16/64)           |
      |N|V|V|V|       |S|             |   (if payload len==126/127)   |
      | |1|2|3|       |K|             |                               |
      +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
      |     Extended payload length continued, if payload len == 127  |
      + - - - - - - - - - - - - - - - +-------------------------------+
      |                               |Masking-key, if MASK set to 1  |
      +-------------------------------+-------------------------------+
      | Masking-key (continued)       |          Payload Data         |
      +-------------------------------- - - - - - - - - - - - - - - - +
      :                     Payload Data continued ...                :
      + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
      |                     Payload Data continued ...                |
      +---------------------------------------------------------------+
    r%   c                     || _         |                    dt          |                    |d<   t          di || _        d S )Nr)   r=   )payloadgetr5   r"   header)r6   rw   kwargss      r7   r8   zFrame.__init__   sB    #)::.>G#M#M !++F++r%   c                 t    |                      t          j        t          j        |                              S )z
          Construct a websocket frame from an in-memory bytestring
          to construct a frame from a stream of bytes, use from_file() directly
        )ri   r   ReaderioBytesIO)rf   
bytestrings     r7   
from_byteszFrame.from_bytes   s*     }}SZ
:(>(>??@@@r%   c                 z    t          | j                  }| j        r|dz   t          j        | j                  z   }|S )Nz

Payload:
)rK   ry   rw   r   bytes_to_escaped_str)r6   rets     r7   rP   zFrame.__repr__   s=    4;< 	U&)Ft|)T)TTC
r%   c                     t          | j                  }| j        j        r+| t          | j        j                  | j                  z  }n
|| j        z  }|S )zK
            Serialize the frame to wire format. Returns a string.
        )rX   ry   r2   r	   rw   )r6   r_   s     r7   r`   zFrame.__bytes__   sW     $+;" 	0/00>>>AAAr%   c                     t                               |          }|                    |j                  }|j        dk    r$|j        r t          |j                  |          } | |          }||_        |S )z
          read a WebSocket frame sent by a server or client

          fp is a "file like" object that could be backed by a network
          stream or a disk or an in memory stream reader
        r   )r"   ri   rc   r)   r1   r2   r	   ry   )rf   rg   ry   rw   frames        r7   ri   zFrame.from_file   ss     &&r**,,v455;! 20fV/0099GGr%   c                 p    t          |t                    r t          |           t          |          k    S dS rk   )rl   ru   rX   rm   s     r7   ro   zFrame.__eq__  s0    eU## 	/;;%,,..ur%   N)r%   )rp   rq   rr   __doc__r8   rs   r   rP   r`   ri   ro   r=   r%   r7   ru   ru      s         4, , , ,
 A A [A  	 	 	   ["    r%   ru   )r}   r3   rZ   +seleniumwire.thirdparty.mitmproxy.coretypesr   %seleniumwire.thirdparty.mitmproxy.netr   'seleniumwire.thirdparty.mitmproxy.utilsr   r   r   maskerr	   rY   r\   objectr.   BiDirC   CLOSE_REASONr"   ru   r=   r%   r7   <module>r      sc   				 				  < < < < < < 5 5 5 5 5 5 I I I I I I I I I I      
&(( 
	
		
 
 
 ty""&  "S S S S S S S SlN N N N N N N N N Nr%   