
    龙h                        d dl Z d dlZd dlZd dlZ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 d dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZmZm Z m!Z! d dl"m#Z#m$Z$m%Z% d d	l&m'Z' d d
l(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 erd dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;  G d ded      Z< G d d      Z=dee>e>f   defdZ?deee      deeee>e>f         fdZ@ G d de#      ZA G d d e#      ZBd!e j                  d"eddfd#ZD G d$ d%      ZE G d& d'e#      ZF G d( d)      ZG G d* d+e#      ZH G d, d-e#      ZI G d. d/      ZJy)0    N)defaultdict)Path)SimpleNamespace)
TYPE_CHECKINGAnyCallable	CoroutineDictListOptional	TypedDictUnioncast)parse)ClientCertificateHeadersHeadersArray
RemoteAddrRequestSizesResourceTimingSecurityDetails)ChannelOwnerfrom_channelfrom_nullable_channel)Error)EventContextManagerImpl)URLMatchWebSocketRouteHandlerCallbackasync_readfilelocals_to_paramsurl_matches)escape_regex_flags)Waiter)BrowserContextAPIResponse)Frame)Pagec                   b    e Zd ZU ee   ed<   ee   ed<   eeeef      ed<   eeeef      ed<   y)FallbackOverrideParametersurlmethodheaderspostDataN)	__name__
__module____qualname__r   str__annotations__r
   r   bytes     U/var/www/Befach/backend/env/lib/python3.12/site-packages/playwright/_impl/_network.pyr*   r*   H   s=    	#SMd38n%%uS%Z())r6   r*   F)totalc                       e Zd ZddZy)SerializedFallbackOverridesNc                 <    d | _         d | _        d | _        d | _        y N)r+   r,   r-   post_data_bufferselfs    r7   __init__z$SerializedFallbackOverrides.__init__P   s    "&%)1515r6   returnN)r/   r0   r1   r@   r5   r6   r7   r:   r:   O   s    6r6   r:   r-   rB   c                 ^    | j                         D cg c]  \  }}|||d c}}S c c}}w )N)namevalue)items)r-   rD   rE   s      r7   serialize_headersrG   W   s9     #==?D% &  s   )clientCertificatesc                   K   | sy g }| D ]  }d|d   i}|j                  d      x}r||d<   |j                  d      x}r&t        j                  |      j                         |d<   |j                  d      x}r7t        j                  t	        |       d {         j                         |d<   |j                  d      x}r&t        j                  |      j                         |d<   |j                  d      x}r7t        j                  t	        |       d {         j                         |d<   |j                  d      x}	r&t        j                  |	      j                         |d<   |j                  d      x}
r7t        j                  t	        |
       d {         j                         |d<   |j                  |        |S 7 67 7 4w)	Norigin
passphrasepfxpfxPathcertcertPathkeykeyPath)getbase64	b64encodedecoder   append)rH   outclientCertificate
out_recordrK   rL   pfx_pathrN   	cert_pathrP   key_paths              r7   to_client_certificates_protocolr]   _   s     
C/'1

 +..|<<:<'1J|$#''..3. & 0 0 5 < < >Ju(,,Y7787 & 0 0$X..!fh u %((0040!'!1!1$!7!>!>!@Jv)--j9999!'!1!1$Y//"fh v $''..3. & 0 0 5 < < >Ju(,,Y7787 & 0 0$X..!fh u 	

:1 02 J / 0 /s8   BGG
BGG
BGG
0GGGc            
           e Zd Zdededededdf
 fdZdefdZd	eddfd
Z	e
defd       Ze
defd       Ze
defd       ZdefdZe
dee   fd       Ze
dee   fd       Ze
dee   fd       Zded   fdZe
d$d       ZdefdZe
ded    fd       Ze
ded    fd       Ze
dee   fd       Ze
defd       ZdeddfdZ e
de!fd       Z"de!fdZ#de$fdZ%dedee   fd Z&d%d!Z'de(jR                  fd"Z*d&d#Z+ xZ,S )'RequestparenttypeguidinitializerrB   Nc           
      F   t         |   ||||       t        |j                  d            | _        d | _        | j                  r| | j                  _        d | _        dddddddddd	| _        t        | j                  d         | _
        d | _        t               | _        y )NredirectedFromr   )		startTimedomainLookupStartdomainLookupEndconnectStartsecureConnectionStart
connectEndrequestStartresponseStartresponseEndr-   )superr@   r   rR   _redirected_from_redirected_to_failure_text_timing
RawHeaders_initializer_provisional_headers_all_headers_futurer:   _fallback_overridesr?   r`   ra   rb   rc   	__class__s        r7   r@   zRequest.__init__   s     	t[95JOO,-6
 48  37D!!0,0!#!%'
(
 %/t/@/@/K$L!IM ') 	 r6   c                 <    d| j                   d| j                  dS )Nz<Request url=z method=>)r+   r,   r>   s    r7   __repr__zRequest.__repr__   s    txxl(4;;/CCr6   	overridesc                 r   |j                  d| j                  j                        | j                  _        |j                  d| j                  j                        | j                  _        |j                  d| j                  j                        | j                  _        |j                  d      }t        |t              r |j                         | j                  _        y t        |t              r|| j                  _        y |3t        j                  |      j                         | j                  _        y y )Nr+   r,   r-   r.   )rR   ry   r+   r,   r-   
isinstancer2   encoder=   r4   jsondumps)r?   r   	post_datas      r7   _apply_fallback_overridesz!Request._apply_fallback_overrides   s    '0}}4++//(
  $ +4--d..55+
  ' ,5==t//77,
  ( MM*-	i%8A8H8H8JD$$5	5)8AD$$5"8<

98M8T8T8VD$$5 #r6   c                 l    t        t        | j                  j                  xs | j                  d         S Nr+   )r   r2   ry   r+   rv   r>   s    r7   r+   zRequest.url   s+    C1155Q9J9J59QRRr6   c                      | j                   d   S )NresourceTyperv   r>   s    r7   resource_typezRequest.resource_type   s      00r6   c                 l    t        t        | j                  j                  xs | j                  d         S )Nr,   )r   r2   ry   r,   rv   r>   s    r7   r,   zRequest.method   s+    C1188WD<M<Mh<WXXr6   c                    K   | j                          d {   }|st        d      |j                  j                  dd        d {   S 7 57 w)Nz(Unable to fetch sizes for failed requestsizes)responser   _channelsend)r?   r   s     r7   r   zRequest.sizes   sR     (BCC&&++
 
 	
 )
s!   AA0AAAAc                     | j                   j                  }|r|j                         S | j                  j	                  d      }|#t        j                  |      j                         S y Nr.   )ry   r=   rU   rv   rR   rS   	b64decode)r?   database64_post_datas      r7   r   zRequest.post_data   s]    ''88;;= ,,00<'##$45<<>>r6   c                     | j                   }|sy | j                  d   }d|v rt        t        j                  |            S 	 t        j                  |      S # t        $ r t        d|       w xY w)Ncontent-typez!application/x-www-form-urlencodedz&POST data is not a valid JSON object: )	r   r-   dictr   	parse_qslr   loads	Exceptionr   )r?   r   content_types      r7   post_data_jsonzRequest.post_data_json   st    NN	||N3.,>	233	N::i(( 	N@LMM	Ns   A A/c                     | j                   j                  r| j                   j                  S | j                  j                  d      r"t	        j
                  | j                  d         S y r   )ry   r=   rv   rR   rS   r   r>   s    r7   r=   zRequest.post_data_buffer   sV    ##44++<<<  ,##D$5$5j$ABBr6   Responsec                 h   K   t        | j                  j                  dd        d {         S 7 w)Nr   )r   r   r   r>   s    r7   r   zRequest.response   s5     $--$$ 
 	
s   %20	2c                     | j                   j                  d      st        d      t        dt	        | j                   d               }|j
                  st        dj                  g d            |S )Nframez8Service Worker requests do not have an associated frame.r'   
)zGFrame for this navigation request is not available, because the requestzIwas issued before the frame is created. You can check whether the requestz@is a navigation request by calling isNavigationRequest() method.)rv   rR   r   r   r   _pagejoinr?   r   s     r7   r   zRequest.frame   sj      $$W-RSSWl4+<+<W+EFG{{		  r6   c                      | j                   d   S )NisNavigationRequestr   r>   s    r7   is_navigation_requestzRequest.is_navigation_request   s      !677r6   c                     | j                   S r<   )rq   r>   s    r7   redirected_fromzRequest.redirected_from  s    $$$r6   c                     | j                   S r<   )rr   r>   s    r7   redirected_tozRequest.redirected_to  s    """r6   c                     | j                   S r<   )rs   r>   s    r7   failurezRequest.failure  s    !!!r6   c                     | j                   S r<   rt   r>   s    r7   timingzRequest.timing  s    ||r6   response_end_timingc                 f    || j                   d<   | j                   d   dk(  r|| j                   d<   y y )Nro   rn   rf   r   )r?   r   s     r7   _set_response_end_timingz Request._set_response_end_timing  s4    &9]#<<(B.,?DLL) /r6   c                     | j                   j                  }|r#t        j                  |      j                         S | j                  j                         S r<   )ry   r-   ru   _from_headers_dict_lossyrw   )r?   overrides     r7   r-   zRequest.headers  sE    ++3366x@HHJJ((0022r6   c                 Z   K   | j                          d {   j                         S 7 wr<   _actual_headersr-   r>   s    r7   all_headerszRequest.all_headers  $     **,,5577,   +)+c                 Z   K   | j                          d {   j                         S 7 wr<   r   headers_arrayr>   s    r7   r   zRequest.headers_array"  $     **,,;;==,r   rD   c                 \   K   | j                          d {   j                  |      S 7 wr<   r   rR   r?   rD   s     r7   header_valuezRequest.header_value%  &     **,,11$77,   ,*,c                 p  K   | j                   j                  }|rt        t        |            S | j                  sct        j                         | _        | j                  j                  dd d       d {   }| j                  j                  t        |             | j                   d {   S 7 <7 w)NrawRequestHeadersT)is_internal)
ry   r-   ru   rG   rx   asyncioFuturer   r   
set_result)r?   r   r-   s      r7   r   zRequest._actual_headers(  s     ++33/9::'''.~~'7D$ MM..#Tt /  G $$//
70CD----	 .s$   A3B65B267B6-B4.B64B6c                     t        t        d   t        | j                  j	                  d                  }|st        j                         S |j                  }|st        j                         S |j                  S )Nr'   r   )	r   r   r   rv   rR   r   r   r   _closed_or_crashed_future)r?   r   pages      r7   _target_closed_futurezRequest._target_closed_future4  sd    W4T5F5F5J5J75ST
 >>##{{>>##---r6   c                 |    t        | j                  j                  d            }|sy t        d|      j                  S )Nr   r'   )r   rv   rR   r   r   r   s     r7   
_safe_pagezRequest._safe_page?  s6    %d&7&7&;&;G&DEGU#)))r6   rB   r'   rB   ru   )rB   zOptional[Page])-r/   r0   r1   r   r2   r
   r@   r~   r*   r   propertyr+   r   r,   r   r   r   r   r   r   r4   r=   r   r   boolr   r   r   r   r   r   floatr   r   r-   r   r   r   r   r   r   r   r   r   __classcell__r{   s   @r7   r_   r_      s>   
"
*-
58
GK
	
8D# DW3M WRV W$ SS S S 1s 1 1 Y Y Y
\ 
 8C=   
N 
N 
N (5/  
 4 
   8t 8 %)!4 % % #x	2 # # "# " "   @E @d @
 3 3 387 8>\ >8s 8x} 8
.	.w~~ 	.*r6   r_   c                   <    e Zd Zdededededdf
 fdZd*dZd	eddfd
Z	d+dZ
defdZedefd       Zd,deddfdZ	 	 	 	 	 	 	 d-dedeeef   deeef   dedeeef   deddddfdZ	 	 	 	 	 	 	 d-dedeeef   deeef   dedeeef   deddddfdZdeddfdZ	 	 	 	 	 	 	 d-dededeeef   deeeef   ded ed!eddfd"Z	 	 	 	 d.dededeeef   deeeef   ddf
d#Z	 	 	 	 d.dededeeef   deeeef   ddf
d$Zd/d%eddfd&Zdeddfd'Zd(eddfd)Z  xZ!S )0Router`   ra   rb   rc   rB   Nc                 h    t         |   ||||       d | _        t        dd       | _        d| _        y )Nr$   F)rp   r@   _handling_futurer   _context
_did_throwrz   s        r7   r@   zRoute.__init__G  s6     	t[9BF*./?*Fr6   c                 L    t        j                         | _        | j                  S r<   )r   r   r   r>   s    r7   _start_handlingzRoute._start_handlingO  s     ' 0$$$r6   donec                 T    | j                   }|sJ d | _         |j                  |       y r<   )r   r   )r?   r   chains      r7   _report_handledzRoute._report_handledS  s*    %%u $r6   c                 2    | j                   st        d      y )NzRoute is already handled!)r   r   r>   s    r7   _check_not_handledzRoute._check_not_handledY  s    $$344 %r6   c                 "    d| j                    dS )Nz<Route request=r}   )requestr>   s    r7   r~   zRoute.__repr__]  s     a00r6   c                 2    t        | j                  d         S )Nr   )r   rv   r>   s    r7   r   zRoute.request`  s    D--i899r6   	errorCodec                 N    K    j                   fd       d {    y 7 w)Nc                  `    j                  j                  j                  dd d i            S )Nabortr   _race_with_page_closer   r   )r   r?   s   r7   <lambda>zRoute.abort.<locals>.<lambda>f  s2    D..""#Yr6   _handle_route)r?   r   s   ``r7   r   zRoute.abortd  s$       

 
	
 
	
   %#%statusr-   bodyr   pathcontentTyper   r&   c           
      f    K    j                   fd       d {    y 7 w)Nc            	      2    j                         S r<   )_inner_fulfill)r   r   r-   r   r   r   r?   r   s   r7   r   zRoute.fulfill.<locals>.<lambda>|  s    D''tT;r6   r   )r?   r   r-   r   r   r   r   r   s   ````````r7   fulfillzRoute.fulfillq  s+         
 	
 	
s   1/1c                 z  K   t        t                     }|"|t        d      t        j                  |      }|r|d= |j                  d      r|d   n|j                  |d<   |j                  d      r|d   n|j                  |d<   ddlm	}	 |X|Vt        ||	      rJ|j                  j                  | j                  u r|j                  |d<   n|j                          d {   }d}
t        |t              r$||d<   d	|d
<   t!        |j#                               }
nt        |t$              r7t'        j(                  |      j+                         |d<   d|d
<   t!        |      }
nT|rR|d= t-        |      j/                         }t'        j(                  |      j+                         |d<   d|d
<   t!        |      }
|j                  di       j1                         D ci c]  \  }}|j3                         t        |      ! }}}|j                  d      r	|d   |d<   n;|rd|d<   n3|r1t5        j6                  t        t-        |                  d   xs d|d<   |
rd|vrt        |
      |d<   t9        |      |d<   | j;                  | j<                  j?                  dd |             d {    y 7 c c}}w 7 w)Nz*Can specify either body or json parametersr   r   r-   r   r%   fetchResponseUidr   FisBase64Tr   r   r   zapplication/jsonzapplication/octet-streamzcontent-lengthr   ) r    localsr   
json_utilsr   rR   r   r-   playwright._impl._fetchr&   r   _request_connection
_fetch_uidr   r2   lenr   r4   rS   rT   rU   r   
read_bytesrF   lower	mimetypes
guess_typerG   r   r   r   )r?   r   r-   r   r   r   r   r   paramsr&   lengthfile_contentkvs                 r7   r   zRoute._inner_fulfill  s     "&(+HII##D)Dz"$*JJx$8x hoo 8 &,ZZ	%:y!@P@P 9 <|Hk1R$$00D4D4DD191D1DF-.!)0DdC !F6N!&F:'Fe$#--d3::<F6N!%F:YFv:002L#--l;BBDF6N!%F:&F17Ir1J1P1P1RSA1779c!f$SS::m$&,]&;GN#&8GN#$$Sd_5a8V<V N# &g5(+FG$%-g6y((););ItV)TUUU? 1$ T 	Vs2   C"J;$J0%C8J;$J3B)J;*J9+J;3J;callbackc                    K   | j                          	  |        d {    | j                  d       y 7 # t        $ r}d| _        |d }~ww xY wwNT)r   r   r   r   )r?   r  es      r7   r   zRoute._handle_route  sP     !	*  &  	"DOG	s1   A
7 57 A7 	A 	A		AAr+   r,   r.   maxRedirects
maxRetriestimeoutc           
      x    K    j                   j                   fd       d {   S 7 w)Nc            
      r    j                   j                  j                  j                         S )N)r  r  r  )r   r   _inner_fetch)r-   r  r  r,   r.   r?   r  r+   s   r7   r   zRoute.fetch.<locals>.<lambda>  s;    DMM))66)% 7 	r6   )r  wrap_api_call)r?   r+   r,   r-   r.   r  r  r  s   ````````r7   fetchzRoute.fetch  s6      %%33	 	
 
 	
 
s   ):8:c                    K   t        t        t        t                           }| j	                          | j
                  j                  |       | j                  d       y wNF)r   r*   r    r  r   r   r   r   )r?   r+   r,   r-   r.   r   s         r7   fallbackzRoute.fallback  sI      35Efh5OP	!..y9U#s   AA!c                     K   t        t        t        t                           d fd} j	                  |       d {   S 7 w)Nc                  z   K   j                   j                          j                  d       d {    y 7 wr!  )r   r   _inner_continue)r   r?   s   r7   _innerzRoute.continue_.<locals>._inner  s-     LL229=&&u---s   0;9;rA   )r   r*   r    r  r   )r?   r+   r,   r-   r.   r&  r   s   `     @r7   	continue_zRoute.continue_  s<      35Efh5OP		. ''////s   =AAAis_fallbackc                   K   | j                   j                  }| j                  | j                  j	                  dd |j
                  |j                  |j                  rt        |j                        nd |j                  -t        j                  |j                        j                         nd |d             d {    y 7 w)Ncontinue)r+   r,   r-   r.   
isFallback)r   ry   r   r   r   r+   r,   r-   rG   r=   rS   rT   rU   )r?   r(  optionss      r7   r%  zRoute._inner_continue  s     ,,22((MM";;%nn>Eoo)'//:SW #33? (()A)ABIIK!"-
 	
 	
s   B:C<C=Cc                 N    K    j                   fd       d {    y 7 w)Nc                  `     j                   j                  j                  dd di            S )NredirectNavigationRequestr+   r   r?   r+   s   r7   r   z6Route._redirected_navigation_request.<locals>.<lambda>  s+    D..""#>uclSr6   r   r0  s   ``r7   _redirected_navigation_requestz$Route._redirected_navigation_request  s$       
 	
 	
r   futurec                 <  K   t        j                  |      }t        |dt        t        j                  | j
                        dt        j                  d                   | j                  j                         }t        j                  ||gt         j                         d {    |j                         r.|j                         rt        t        |j                               |j                         r t        j                   |d       d {    y y 7 s7 w)N__pw_stack__r   return_whenT)return_exceptions)r   create_tasksetattrgetattrcurrent_task_loopinspectstackr   r   waitFIRST_COMPLETEDr   	exceptionr   BaseExceptiongather)r?   r2  futtarget_closed_futures       r7   r   zRoute._race_with_page_close  s     !!&)G((4ngmmTUFVW	

  $||AACll&'//
 	
 	
 88:#--/}cmmo66$$&..=== '	
 >s%   B"D$D%A,DDDD)rB   zasyncio.Future[bool]rA   r<   )NNNNNNN)NNNN)F)"r/   r0   r1   r   r2   r
   r@   r   r   r   r   r~   r   r_   r   r   intr   r4   r   r   r   r   r   r   r   r  r"  r'  r%  r1  r	   r   r   r   s   @r7   r   r   F  s    " *- 58 GK 	 %D T 51# 1 : : :
S 
D 
 "&"&!%"&

 c3h
 CJ	

 
 CI
 
  
 

$ "&"&!%"&>V>V c3h>V CJ	>V
 >V CI>V >V  >V 
>V@H   "&+/ 

 
 c3h	

 S%(
 
 
 
 

2 "&+/
$
$ 
$ c3h	
$
 S%(
$ 

$ "&+/00 0 c3h	0
 S%(0 
0
 
$ 
,
 
 
>) > >r6   r   loopcoroc                 >    dfd}| j                   |              y )Nc                  F   K   	   d {    y 7 # t         $ r Y y w xY wwr<   )r   )rH  s   r7   _ignore_exceptionz<_create_task_and_ignore_exception.<locals>._ignore_exception/  s$     	JJ 		s(   !  ! 	!!rA   )r8  )rG  rH  rK  s    ` r7   !_create_task_and_ignore_exceptionrL  ,  s     	&()r6   c                       e Zd ZddZdeeeef   gef   ddfdZ	dee
e   e
e   gef   ddfdZddZedefd       Zdd	ed
eddfdZdeeef   ddfdZy)ServerWebSocketRoutec                     || _         y r<   )_ws)r?   wss     r7   r@   zServerWebSocketRoute.__init__9  s	    r6   handlerrB   Nc                 &    || j                   _        y r<   )rP  _on_server_messager?   rR  s     r7   
on_messagezServerWebSocketRoute.on_message<  s    &-#r6   c                 &    || j                   _        y r<   )rP  _on_server_closerU  s     r7   on_closezServerWebSocketRoute.on_close?  s    $+!r6   c                     t        d      )Nz>connectToServer must be called on the page-side WebSocketRoute)NotImplementedErrorr>   s    r7   connect_to_serverz&ServerWebSocketRoute.connect_to_serverB  s    !L
 	
r6   c                 4    | j                   j                  d   S r   )rP  rv   r>   s    r7   r+   zServerWebSocketRoute.urlG  s    xx$$U++r6   codereasonc                     t        | j                  j                  | j                  j                  j	                  dd ||dd             y )NcloseServerTr^  r_  wasClean)rL  rP  r<  r   r   r?   r^  r_  s      r7   closezServerWebSocketRoute.closeK  sA    )HHNNHH"" $ $	
r6   messagec           
         t        |t              rIt        | j                  j                  | j                  j
                  j                  dd |dd             y t        | j                  j                  | j                  j
                  j                  dd t        j                  |      j                         dd             y )NsendToServerFrf  r  T)
r   r2   rL  rP  r<  r   r   rS   rT   rU   r?   rf  s     r7   r   zServerWebSocketRoute.sendY  s    gs#-!!&&"Dg5*Q .!!&&" & 0 0 9 @ @ BPTUr6   )rQ  WebSocketRouterA   NN)r/   r0   r1   r@   r   r   r2   r4   r   rV  r   rF  rY  r\  r   r+   re  r   r5   r6   r7   rN  rN  8  s    .(E#u*,=+>+C"D . .,(3-#)G)L M ,RV ,

 ,S , ,
# 
c 
T 
E#u*- $ r6   rN  c            
           e Zd Zdededededdf
 fdZdeddfd	Zdeddfd
ZdeddfdZ	deddfdZ
edefd       ZddededdfdZddZdeeef   ddfdZdeeeef   gef   ddfdZdeee   ee   gef   ddfdZddZ xZS )rk  r`   ra   rb   rc   rB   Nc                    t         |   ||||       d | _        d | _        d | _        d | _        t        |       | _        d| _        | j                  j                  d| j                         | j                  j                  d| j                         | j                  j                  d| j                         | j                  j                  d| j                         y )NFmessageFromPagemessageFromServer	closePagera  )rp   r@   _on_page_message_on_page_closerT  rX  rN  _server
_connectedr   on_channel_message_from_page_channel_message_from_server_channel_close_page_channel_close_serverrz   s        r7   r@   zWebSocketRoute.__init__m  s     	t[9NR 	 QU  	 ,D1*D,K,KL,d.O.OPd&>&>?(B(BCr6   eventc                    | j                   r7| j                  |d   rt        j                  |d                y |d          y | j                  r2t	        | j
                  | j                  j                  dd |             y y )Nr  rf  rh  )rr  rS   r   ru  rL  r<  r   r   r?   r{  s     r7   rw  z)WebSocketRoute._channel_message_from_page  sw      !!$   y!12 9%
 __-

DMM..~tUK r6   c                     | j                   r7| j                  |d   rt        j                  |d                y |d          y t        | j                  | j
                  j                  dd |             y )Nr  rf  
sendToPage)rT  rS   r   rL  r<  r   r   r}  s     r7   rx  z+WebSocketRoute._channel_message_from_server  sk    ""##$   y!12 9% .

DMM..|T5Ir6   c                     | j                   r| j                  |d   |d          y t        | j                  | j                  j	                  dd |             y )Nr^  r_  ra  )rs  rL  r<  r   r   r}  s     r7   ry  z"WebSocketRoute._channel_close_page  sG    fuX?-

DMM..}dEJr6   c                     | j                   r| j                  |d   |d          y t        | j                  | j                  j	                  dd |             y )Nr^  r_  rq  )rX  rL  r<  r   r   r}  s     r7   rz  z$WebSocketRoute._channel_close_server  sG      !!%-xA-

DMM..{D%Hr6   c                      | j                   d   S r   r   r>   s    r7   r+   zWebSocketRoute.url        ''r6   r^  r_  c                    K   	 | j                   j                  dd ||dd       d {    y 7 # t        $ r Y y w xY ww)Nrq  Trb  )r   r   r   rd  s      r7   re  zWebSocketRoute.close  sI     	--$$TDFPT#U    		s(   ?$0 .0 ?0 	<?<?c                     | j                   rt        d      d| _         t        j                  | j                  j                  dd              t        d| j                        S )NzAlready connected to the serverTconnectrk  )ru  r   r   r8  r   r   r   rt  r>   s    r7   r\  z WebSocketRoute.connect_to_server  sV    ??9::MM	
 $dll33r6   rf  c           
      8   t        |t              r5t        | j                  | j                  j                  dd |dd             y t        | j                  | j                  j                  dd t        j                  |      j                         dd             y )Nr  Fri  T)	r   r2   rL  r<  r   r   rS   rT   rU   rj  s     r7   r   zWebSocketRoute.send  s    gs#-

"" $G(O .

"" #)#3#3G#<#C#C#E$(
r6   rR  c                     || _         y r<   )rr  rU  s     r7   rV  zWebSocketRoute.on_message  s
     'r6   c                     || _         y r<   )rs  rU  s     r7   rY  zWebSocketRoute.on_close  s
    %r6   c                    K   | j                   ry 	 | j                  j                  dd        d {    y 7 # t        $ r Y y w xY ww)NensureOpened)ru  r   r   r   r>   s    r7   _after_handlezWebSocketRoute._after_handle  sJ     ??	--$$    		s1   A8 68 A8 	AAAArl  )rB   rk  rA   )r/   r0   r1   r   r2   r
   r@   rw  rx  ry  rz  r   r+   rF  re  r\  r   r4   r   r   r   rV  r   rY  r  r   r   s   @r7   rk  rk  l  s1   D"D*-D58DGKD	D(
 
 

$ 
4 
 $ 4 D  (S ( ( C 4 
4E#u*- $ *((E#u*,=+>+C"D ( (&(3-#)G)L M &RV &
r6   rk  c                   d    e Zd Zdee   dedefdZede	d    de	e
   fd       Zdedefd	ZddZy
)WebSocketRouteHandlerbase_urlr+   rR  c                 .    || _         || _        || _        y r<   )	_base_urlr+   rR  )r?   r  r+   rR  s       r7   r@   zWebSocketRouteHandler.__init__  s     "r6   handlersrB   c                 ^   g }d}| D ]  }t        |j                  t              r|j                  d|j                  i       ;t        |j                  t        j
                        r<|j                  |j                  j                  t        |j                        d       d} |rddigS |S )NFglob)regexSource
regexFlagsTz**/*)r   r+   r2   rV   rePatternpatternr"   )r  patternsall_urlsrR  s       r7   prepare_interception_patternsz3WebSocketRouteHandler.prepare_interception_patterns  s     G'++s+ 56GKK4'.{{':':&8&E     V$%%r6   ws_urlc                 F    t        | j                  || j                  d      S r  )r!   r  r+   )r?   r  s     r7   matcheszWebSocketRouteHandler.matches  s    4>>6488TBBr6   Nc                    K   | j                  |      }t        j                  |      r
| d {    |j                          d {    y 7 7 wr<   )rR  r   iscoroutiner  )r?   websocket_routecoro_or_futures      r7   handlezWebSocketRouteHandler.handle  sF     o6~.   ++--- !-s!   ,AAAAAA)r  rk  rB   N)r/   r0   r1   r   r2   r   r   r@   staticmethodr   r   r  r   r  r  r5   r6   r7   r  r    sp    3-  /	 ./	d ,Cc Cd C.r6   r  c            
           e Zd Zdededededdf
 fdZdefdZedefd	       Z	ede
fd
       Zedefd       Zedefd       Zedefd       Zede
fd       ZdefdZdefdZdedee   fdZdedee   fdZddZdee   fdZdee   fdZddZdefdZ defdZ!de"fdZ#ede$fd       Z%edd       Z& xZ'S ) r   r`   ra   rb   rc   rB   Nc                    t         |   ||||       t        | j                  d         | _        | j                  d   }|d   | j                  j
                  d<   |d   | j                  j
                  d<   |d   | j                  j
                  d<   |d   | j                  j
                  d<   |d   | j                  j
                  d<   |d   | j                  j
                  d<   |d	   | j                  j
                  d	<   |d
   | j                  j
                  d
<   t        t        t        | j                  d               | _	        d | _
        t        j                         | _        y )Nr   r   rg   rh   ri   rj   rk   rl   rm   rn   r-   )rp   r@   r   rv   r  rt   ru   r   r   rw   _raw_headers_futurer   r   _finished_future)r?   r`   ra   rb   rc   r   r{   s         r7   r@   zResponse.__init__  sJ    	t[9!-d.?.?	.J!K""8,-3K-@k*5;<O5P1239:K3L/006~0Fn-9?@W9X56.4\.Bl+06~0Fn-171Ho.$.t00;<%
! JN 6=nn6Fr6   c                 <    d| j                   d| j                   dS )Nz<Response url=z	 request=r}   )r+   r   r>   s    r7   r~   zResponse.__repr__*  s    |9T\\N!DDr6   c                      | j                   d   S r   r   r>   s    r7   r+   zResponse.url-  r  r6   c                 v    | j                   d   dk(  xs& | j                   d   dk\  xr | j                   d   dk  S )Nr   r      i+  r   r>   s    r7   okzResponse.ok1  sJ       *a/ 
h'3.U43D3DX3NRU3U	
r6   c                      | j                   d   S )Nr   r   r>   s    r7   r   zResponse.status8  s      **r6   c                      | j                   d   S )N
statusTextr   r>   s    r7   status_textzResponse.status_text<  s      ..r6   c                 6    | j                   j                         S r<   )rw   r-   r>   s    r7   r-   zResponse.headers@  s    ((0022r6   c                      | j                   d   S )NfromServiceWorkerr   r>   s    r7   from_service_workerzResponse.from_service_workerD  s      !455r6   c                 Z   K   | j                          d {   j                         S 7 wr<   r   r>   s    r7   r   zResponse.all_headersH  r   r   c                 Z   K   | j                          d {   j                         S 7 wr<   r   r>   s    r7   r   zResponse.headers_arrayK  r   r   rD   c                 \   K   | j                          d {   j                  |      S 7 wr<   r   r   s     r7   r   zResponse.header_valueN  r   r   c                 \   K   | j                          d {   j                  |      S 7 wr<   )r   get_allr   s     r7   header_valueszResponse.header_valuesQ  s&     **,,55d;;,r   c                 0  K   | j                   sot        j                         | _         t        t        | j
                  j                  dd        d {         }| j                   j                  t        |             | j                    d {   S 7 @7 w)NrawResponseHeaders)	r  r   r   r   r   r   r   r   ru   )r?   r-   s     r7   r   zResponse._actual_headersT  s}     '''.~~'7D$mm((( G $$//
70CD---- .s$   ABB
;BBBBc                 V   K   | j                   j                  dd        d {   S 7 w)N
serverAddrr   r   r>   s    r7   server_addrzResponse.server_addra  s-     ]]''
 
 	
 
    )')c                 V   K   | j                   j                  dd        d {   S 7 w)NsecurityDetailsr  r>   s    r7   security_detailszResponse.security_detailsg  s-     ]]''
 
 	
 
r  c                 j   K   d fd}t        j                   |             }t        j                  t        t        t
        t         j                  t         j                  f       j                  |g      t         j                         d {    |j                         r| d {    y y 7  7 w)Nc                  j   K    j                   j                          d {    t        d      7 w)NzTarget closed)r  r   r   r>   s   r7   on_finishedz&Response.finished.<locals>.on_finishedn  s-     --55777(( 8s   313r5  rA   )r   r8  r?  r   r   r   Taskr   r  r@  r   )r?   r  on_finished_tasks   `  r7   finishedzResponse.finishedm  s     	) #..{}=llU7<<789&&(89  //
 	
 	
   """" #	
 #s$   BB3B/B3(B1)B31B3c                    K   | j                   j                  dd        d {   }t        j                  |      S 7 w)Nr   )r   r   rS   r   )r?   binarys     r7   r   zResponse.body}  s=     }}))
 
 ''	
s    ><>c                 ^   K   | j                          d {   }|j                         S 7 wr<   )r   rU   )r?   contents     r7   textzResponse.text  s&     		#~~ $s   -+-c                 d   K   t        j                  | j                          d {         S 7 wr<   )r   r   r  r>   s    r7   r   zResponse.json  s!     zz		+,,+s   #0.	0c                     | j                   S r<   )r  r>   s    r7   r   zResponse.request  s    }}r6   c                 .    | j                   j                  S r<   )r  r   r>   s    r7   r   zResponse.frame  s    }}"""r6   r   rA   r   )(r/   r0   r1   r   r2   r
   r@   r~   r   r+   r   r  rF  r   r  r   r-   r  r   r   r   r   r   r   r  r   r   r  r   r  r  r4   r   r  r   r   r_   r   r   r   r   s   @r7   r   r     s   G"G*-G58GGKG	G(E# E (S ( ( 
D 
 
 + + + /S / / 3 3 3 6T 6 687 8>\ >8s 8x} 8< <S	 <.
8J#7 

(A 
# (E ( C  -C -    # #r6   r   c            
            e Zd Z edddd      Zdededed	ed
df
 fdZd
efdZ	e
d
efd       Z	 	 ddededed
efdZ	 ddededed
efdZdeded
dfdZdeded
dfdZd
efdZddZ xZS )	WebSocketre  framereceived	framesentsocketerror)CloseFrameReceived	FrameSentr   r`   ra   rb   rc   rB   Nc                 T    t            ||||       d _        t        d|       _         j
                  j                  d fd        j
                  j                  d fd        j
                  j                  d fd        j
                  j                  d	 fd
       y )NFr(   	frameSentc                 4    j                  | d   | d         S Nopcoder   )_on_frame_sentr  r?   s    r7   r   z$WebSocket.__init__.<locals>.<lambda>  s    4..vh/?Pr6   frameReceivedc                 4    j                  | d   | d         S r  )_on_frame_receivedr  s    r7   r   z$WebSocket.__init__.<locals>.<lambda>  s    4226(3CVF^Tr6   socketErrorc                 ^    j                  t        j                  j                  | d         S )Nerror)emitr  Eventsr   r  s    r7   r   z$WebSocket.__init__.<locals>.<lambda>  s     499Y%5%5%;%;VG_Mr6   re  c                 $    j                         S r<   )	_on_closer  s    r7   r   z$WebSocket.__init__.<locals>.<lambda>  s    1Ar6   )rp   r@   
_is_closedr   r   r   rv  rz   s   `    r7   r@   zWebSocket.__init__  s     	t[9&&)
P	
 	T	
 	M	
 	"ABr6   c                 "    d| j                   dS )Nz<WebSocket url=r}   )r+   r>   s    r7   r~   zWebSocket.__repr__  s     A..r6   c                      | j                   d   S r   r   r>   s    r7   r+   zWebSocket.url  r  r6   r{  	predicater  c                     |2t        t         j                        j                  j	                         }t         d| d      }|j                  t        t        |      d| d| d       |t        j                  j                  k7  r4|j                   t        j                  j                  t        d             |t        j                  j                  k7  r4|j                   t        j                  j                  t        d             |j                   j                  d fd	       |j                   ||       t        |j!                               S )
Nzweb_socket.expect_event()zTimeout z%ms exceeded while waiting for event ""zSocket closedzSocket errorre  c                  8     j                   j                         S r<   )r   _close_error_with_reasonr>   s   r7   r   z(WebSocket.expect_event.<locals>.<lambda>  s    )L)L)Nr6   )r   r   _parent_timeout_settingsr  r#   reject_on_timeoutr   r  r  r  reject_on_eventr   r   wait_for_eventr   result)r?   r{  r  r  waiters   `    r7   expect_eventzWebSocket.expect_event  s    ?3-??GGIG 8qAB   wiDUG1M	
 I$$***""4)9)9)?)?AWXI$$***""4)9)9)?)?~AVWJJ!N	
 	dE95&v}}77r6   c                    K   | j                  |||      4 d {   }	 d d d       d {     d {   S 7 7 # 1 d {  7  sw Y    xY w7 wr<   )r  )r?   r{  r  r  
event_infos        r7   r  zWebSocket.wait_for_event  s[      $$UIw? 	 	:	 		 	 	 	 	sF   A:A>A<	AAAAAAAAr  r   c                     |dk(  r>| j                  t        j                  j                  t	        j
                  |             y |dk(  r+| j                  t        j                  j                  |       y y N      )r  r  r  r  rS   r   r?   r  r   s      r7   r  zWebSocket._on_frame_sent  sT    Q;IIi&&00&2B2B42HIq[IIi&&00$7 r6   c                     |dk(  r>| j                  t        j                  j                  t	        j
                  |             y |dk(  r+| j                  t        j                  j                  |       y y r  )r  r  r  r  rS   r   r  s      r7   r  zWebSocket._on_frame_received  sT    Q;IIi&&44f6F6Ft6LMq[IIi&&44d; r6   c                     | j                   S r<   )r  r>   s    r7   	is_closedzWebSocket.is_closed  s    r6   c                 f    d| _         | j                  t        j                  j                  |        y r  )r  r  r  r  r  r>   s    r7   r  zWebSocket._on_close  s#    		)""(($/r6   rl  rA   )r/   r0   r1   r   r  r   r2   r
   r@   r~   r   r+   r   r   r   r  r   r  rF  r  r  r   r  r  r   r   s   @r7   r  r    s   %	FC"C*-C58CGKC	C(/# / (S ( ( #	88 8 	8
 
!80 HL  %- ?D 	 8S 8 8 8< <C <D <4 0r6   r  c                       e Zd ZdeddfdZedeeef   dd fd       Zdede	e   fdZ
dedee   fdZdeeef   fd	Zdefd
Zy)ru   r-   rB   Nc                     || _         t        t              | _        |D ](  }d| j                  |d   j	                            |d   <   * y )NTrD   rE   )_headers_arrayr   r   _headers_mapr  )r?   r-   headers      r7   r@   zRawHeaders.__init__  sG    %8CD8IFIMDfVn2245fWoF r6   c                 *    t        t        |             S r<   )ru   rG   )r-   s    r7   r   z#RawHeaders._from_headers_dict_lossy  s    +G455r6   rD   c                 z    | j                  |      }|sy |j                         dk(  rdnd}|j                  |      S )Nz
set-cookier   z, )r  r  r   )r?   rD   values	separators       r7   rR   zRawHeaders.get  s9    d# JJLL8Dd	~~f%%r6   c                 j    t        | j                  |j                            j                               S r<   )listr  r  keysr   s     r7   r  zRawHeaders.get_all  s'    D%%djjl388:;;r6   c                     i }| j                   j                         D ]$  }t        t        | j	                  |            ||<   & |S r<   )r  r  r   r2   rR   )r?   r  rD   s      r7   r-   zRawHeaders.headers  s=    %%**,DTXXd^4F4L -r6   c                     | j                   S r<   )r  r>   s    r7   r   zRawHeaders.headers_array  s    """r6   )r/   r0   r1   r   r@   r  r
   r2   r   r   rR   r   r  r-   r   r5   r6   r7   ru   ru     s    N N N 6$sCx. 6\ 6 6& & &<C <DI <c3h #| #r6   ru   )Kr   rS   r=  r   r  r  r  collectionsr   pathlibr   typesr   typingr   r   r   r	   r
   r   r   r   r   r   urllibr    playwright._impl._api_structuresr   r   r   r   r   r   r   playwright._impl._connectionr   r   r   playwright._impl._errorsr   'playwright._impl._event_context_managerr   playwright._impl._helperr   r   r   r    r!   playwright._impl._str_utilsr"   playwright._impl._waiterr#   !playwright._impl._browser_contextr$   r  r&   playwright._impl._framer'   playwright._impl._pager(   r*   r:   r2   rG   r]   r_   r   AbstractEventLooprL  rN  rk  r  r   r  ru   r5   r6   r7   <module>r(     so         	 #  !      
 + K  ; +@3-+*% *6 6tCH~ ,  &7!89d4S>"#DB*l B*Jc>L c>L	*

#
#	*+4	*		*1 1hz\ zz). ).X|#| |#~R0 R0j# #r6   