
    T>qj              %      4   U d dl mZ g d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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 d d	lmZmZmZmZmZm Z  d
dl!m"Z"m#Z#m$Z$m%Z% d
dl&m'Z'm(Z( d
dl)m*Z*m+Z+ d
dl,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z< ddl=m>Z> ddl?m@Z@mAZAmBZBmCZC er d
dl&mDZD ddl0mEZE ddl5mFZF ddl7mGZGmHZH ddlImJZJ ed   ZK eLd      ZMe G d d             ZN eN       ZOdePd <   	 	 	 	 d>d!ZQd?d"ZRd@dAd$ZSdBd%ZT eUd&      ZVdCd'ZWdCd(ZX	 dD	 	 	 	 	 	 	 dEd)ZYdFd*ZZdGdHd+Z[dGdId,Z\dDdJd-Z]dKd.Z^dLd/Z_dMd0Z`dNd1Zae/D  ch c]  } | d2   	 c} Zbh d3Zcebj                  ec       dOd4ZedPd5ZfdQd6ZgdRd7Zh	 	 	 	 	 	 	 	 	 	 dSd8Zig ddddg g ddeOd9d:g ddg dd;ddddddd9d#dddddd ddddd<$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTd=Zjyc c} w )U    )annotations)HttpVersionLiteralset_curl_optionsNOT_SETN)Counter)CallableIterable)BytesIO)dumps)TYPE_CHECKINGAnyFinalLiteralOptionalUnioncastfinal)ParseResult	parse_qslquote	urlencodeurljoinurlparse   )
CurlFollowCurlHttpVersionCurlOptCurlSslVersion)CURL_WRITEFUNC_ERRORCurlMime)CurlCffiWarningr   )FingerprintFingerprintManagerNATIVE_IMPERSONATE_TARGETS   )Cookies)ImpersonateError
InvalidURL)Headers)TLS_CIPHER_NAME_MAPTLS_EC_CURVES_MAPTLS_VERSION_MAPExtraFingerprintsresolve_latest_browser_type)Request)RequestContentRequestData_FileReader_IterableReader)Curl)CookieTypes)HeaderTypes)BrowserTypeLiteralExtraFpDict)	ProxySpec)	GETPOSTPUTDELETEOPTIONSHEADTRACEPATCHQUERYz!#$%&'()*+,/:;=?@[]~c                  $    e Zd ZdZdZddZddZy)
NotSetTypez@
    Unique single initialized type distinct from ``None``.
     c                     yNr   rE   selfs    W/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/curl_cffi/requests/utils.py__repr__zNotSetType.__repr__;           c                     yrG   rE   rH   s    rJ   
__reduce__zNotSetType.__reduce__>   rL   rM   N)returnstr)rP   zLiteral['NOT_SET'])__name__
__module____qualname____doc__	__slots__rK   rO   rE   rM   rJ   rD   rD   3   s     IrM   rD   zFinal[NotSetType]r   c                   | dk(  rt         j                  S | dk(  rt         j                  S | dk(  rt         j                  S | dk(  rt         j                  S | dk(  rt         j
                  S | dk(  rt         j                  S | S )Nv1v3v3onlyv2v2tlsv2_prior_knowledge)r   V1_1V3V3ONLYV2_0V2TLSV2_PRIOR_KNOWLEDGE)versions    rJ   normalize_http_versionre   F   s     $###	D!!!	H	%%%	D###	G	$$$	(	(111NrM   c                ^    t        |       }t        |j                  xr |j                        S )z,Check if the provided url is an absolute url)r   boolschemehostname)url
parsed_urls     rJ   is_absolute_urlrl   Y   s'    #J
!!9j&9&9::rM    c                Z   dj                  t        t        |      z
        }t        |       }t	        |j
                  d      }t        |d|      }t        |j                  |j                  t        |j                  |      |j                  ||j                        j                         S )Nrm   Tkeep_blank_values)doseqsaferr   )join
SAFE_CHARSsetr   r   queryr   r   rh   netlocr   pathparamsfragmentgeturl)rj   	quote_strrr   rk   parsed_get_argsencoded_get_argss         rJ   quote_path_and_paramsr   _   s    77:I./D#J
 0 0DIO 4HjooD) fhrM   c                   t        |       }t        |j                  d      }t        d |D              }t	        |t
              rt        |j                               }t        d |D              }|D ]~  \  }}t	        |t        t
        z        rt        |      }|j                  |      dk(  r0|j                  |      dk(  r|D cg c]  }|d   |k7  r|n||f }}l|j                  ||f        t        |d      }	t        |j                  |j                  |j                   |j"                  |	|j$                        j'                         }
|
S c c}w )a  Add URL query params to provided URL being aware of existing.

    Args:
        url: string of target URL
        params: dict containing requested params to be added

    Returns:
        string with updated URL

    >> url = 'http://stackoverflow.com/test?answers=true'
    >> new_params = {'answers': False, 'data': ['some','values']}
    >> update_url_params(url, new_params)
    'http://stackoverflow.com/test?data=some&data=values&answers=false'
    Tro   c              3  &   K   | ]	  }|d      ywr   NrE   .0xs     rJ   	<genexpr>z$update_url_params.<locals>.<genexpr>   s     =qt=   c              3  &   K   | ]	  }|d      ywr   rE   r   s     rJ   r   z$update_url_params.<locals>.<genexpr>   s     4qt4r   r%   r   )rq   )r   r   rw   r   
isinstancedictlistitemsrg   r   getappendr   r   rh   rx   ry   rz   r{   r|   )rj   rz   rk   r~   old_args_counternew_args_counterkeyvaluer   r   new_urls              rJ   update_url_paramsr   n   sQ     #J  
 0 0DIO =_==&$flln%4V44 
1
UeTD[)%LE$).>.B.B3.G1.L>M9:adckU|3O  ""C<0
1 !=  fh  N)s   EzBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~c                   | j                  d      }t        dt        |            D ]l  }||   dd }t        |      dk(  rI|j                         r9	 t	        t        |d            }|t        v r|||   dd z   ||<   Vd||    ||<   bd||    ||<   n d	j                  |      S # t        $ r}t        d| d      |d}~ww xY w)
zUn-escape any percent-escape sequences in a URI that are unreserved
    characters. This leaves all reserved, illegal and non-ASCII bytes encoded.
    %r%   r   r      z"Invalid percent-escape sequence: ''Nrm   )
splitrangelenisalnumchrint
ValueErrorr(   UNRESERVED_SETrt   )uripartsihces         rJ   unquote_unreservedr      s     IIcNE1c%j! &!HQqMq6Q;199;SAr
O N"uQx|+auQxj>a58*~E!H& 775>  S #EaS!JKQRRSs   B''	C0C  Cc                p    d}d}	 t        t        |       |      S # t        $ r t        | |      cY S w xY w)zRe-quote the given URI.

    This function passes the given URI through an unquote/quote cycle to
    ensure that it is fully and consistently quoted.
    z!#$%&'()*+,/:;=?@[]~|z!#$&'()*+,/:;=?@[]~|rs   )r   r   r(   )r   safe_with_percentsafe_without_percents      rJ   requote_urir      sJ     01	5 ',3DEE 5 S344	5s    55c                    d}t        |       D ]E  \  }}|j                         j                  |j                         dz         s7d}|r
| d| | |<    n |s| j                  | d|        yy)z*Update header line list by key value pair.F:T: N)	enumeratelower
startswithr   )header_linesr   r   replacefoundidxlines          rJ   update_header_liner      s     E|, 	T::<""399;#45E'*e2eW$5S! se2eW-. rM   c                   | j                  d      }| j                  d      }||fD cg c]
  }|dk\  s	| }}|s| j                         j                         S | dt        |       j                         j                         S c c}w )z8Return the lowercase header key from a curl header line.r   ;r   N)findstripr   min)header_line	colon_idxsemicolon_idxr   indexess        rJ   _header_line_keyr      s      %I$$S)M(-8EsC1HsEGE  "((**~W&,,.4466 Fs
   
BBc                D    	 | j                   d   S # t        $ r |cY S w xY wNr   )queue
IndexErrorqdefaults     rJ   
peek_queuer      s)    wwqz     c                D    	 | j                   d   S # t        $ r |cY S w xY wr   )_queuer   r   s     rJ   peek_aio_queuer      s)    xx{ r   c                   |j                  d      \  }}}}}t        t        |         }| j                  t        j
                  |t        j                  z         |t        j                  k(  sJ d       g }	|j                  d      D ]M  }
t        |
      }t        j                  |      }|st        dt        |       d      |	j                  |       O | j                  t        j                  dj                  |	             |j!                  d      r!|dd	 }t#        j$                  d
t&        d       |s | j                  t        j(                  |       g }|j                  d      D ]'  }t        |      }t*        |   }|j                  |       ) | j                  t        j,                  dj                  |             t        |      dk(  sJ d       y)zu
    Detailed explanation: https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967/
    ,zOnly TLS v1.2 works for now.-zCipher z is not foundr   z-21NzPadding(21) extension found in ja3 string, whether to add it should be managed by the SSL engine. The TLS client hello packet may contain or not contain this extension, any of which should be correct.r%   
stacklevelr   z%Only curve_formats == 0 is supported.)r   r,   r   setoptr   
SSLVERSIONr   MAX_DEFAULTTLSv1_2r*   r   r'   hexr   SSL_CIPHER_LISTrt   endswithwarningswarnr!   TLS_EXTENSION_ORDERr+   SSL_EC_CURVES)curlja3permutetls_versionciphers
extensionscurvescurve_formatscurl_tls_versioncipher_namescipher	cipher_idcipher_namecurve_namescurvecurve_id
curve_names                    rJ   set_ja3_optionsr      s    ?Biin;K*fm&s;'78KK""$4~7Q7Q$QR~555U7UU5L--$ )K	)--i8"WS^,<M#JKKK() 	KK'',)?@5!_
M 	
 G//<Kc" 'u:&x0
:&'
 	KK%%sxx'<=}"K$KK"rM   c                   |j                  d      \  }}}}|j                  dd      }| j                  t        j                  t
        j                         | j                  t        j                  |       | j                  t        j                  t        |             |dk7  r | j                  t        j                  |       | j                  t        j                  |j                  dd             y)z
    Detailed explanation: https://www.blackhat.com/docs/eu-17/materials/eu-17-Shuster-Passive-Fingerprinting-Of-HTTP2-Clients-wp.pdf
    |r   r   0rm   N)r   r   r   r   HTTP_VERSIONr   ra   HTTP2_SETTINGSHTTP2_WINDOW_UPDATEr   HTTP2_STREAMSHTTP2_PSEUDO_HEADERS_ORDER)r   akamaisettingswindow_updatestreamsheader_orders         rJ   set_akamai_optionsr   +  s     6<\\#5F2HmWl S)HKK$$o&:&:;KK&&1KK++S-?@#~G))73 	KK22L4H4Hb4QRrM   c                   |j                  d      \  }}}| j                  t        j                  |       | j                  t        j                  |j                  dd             | j                  t        j                  |       y )Nr   r   rm   )r   r   r   HTTP3_SETTINGSHTTP3_PSEUDO_HEADERS_ORDERr   QUIC_TRANSPORT_PARAMETERS)r   perkr   r   quic_transport_parameterss        rJ   set_perk_optionsr  A  sc    8<

35Hl5KK&&1 	KK22L4H4Hb4QRKK113LMrM   c                   |j                   r9| j                  t        j                  dj	                  |j                                |j
                  ;| j                  t        j                  |j
                  t        j                  z         |j                  3| j                  t        j                  t        |j                               |j                  3| j                  t        j                  t        |j                               |j                  *| j                  t        j                  |j                         |j                   *| j                  t        j"                  |j                          |j$                  *| j                  t        j&                  |j$                         |j(                  r*| j                  t        j*                  |j(                         |j,                  r*| j                  t        j.                  |j,                         |j0                  r*| j                  t        j2                  |j0                         |j4                  r*| j                  t        j6                  |j4                         |j8                  *| j                  t        j:                  |j8                         |j<                  *| j                  t        j>                  |j<                         |j@                  *| j                  t        jB                  |j@                         |jD                  +| j                  t        jF                  |jD                         y y )Nr   )$tls_signature_algorithmsr   r   SSL_SIG_HASH_ALGSrt   tls_min_versionr   r   r   
tls_grease
TLS_GREASEr   tls_permute_extensionsSSL_PERMUTE_EXTENSIONStls_cert_compressionSSL_CERT_COMPRESSIONhttp2_stream_weightSTREAM_WEIGHThttp2_stream_exclusiveSTREAM_EXCLUSIVEtls_delegated_credentialTLS_DELEGATED_CREDENTIALStls_record_size_limitTLS_RECORD_SIZE_LIMIThttp2_no_priorityHTTP2_NO_PRIORITYr   HTTPHEADER_ORDERform_boundaryFORM_BOUNDARYsplit_cookiesSPLIT_COOKIEShttp3_sig_hash_algsHTTP3_SIG_HASH_ALGShttp3_tls_extension_orderHTTP3_TLS_EXTENSION_ORDER)r   fps     rJ   set_extra_fpr%  M  sH   	""G--sxx8S8S/TU	%G&&(:(:^=W=W(WX	}} G&&BMM(:;	  ,G22C8Q8Q4RS	*G00"2I2IJ	)G))2+A+AB	  ,G,,b.G.GH	""G55r7R7RS	G1123K3KL	G--r/C/CD	G,,boo>	#G))2+;+;<	#G))2+;+;<	)G//1G1GH	##/G55r7S7ST 0rM   c                   t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j
                  d
}| j                         j                         }||vrt        d|        ||   S )N)
1z1.0z1.1z1.2z1.3tlsv1tlsv1_0tlsv1_1tlsv1_2tlsv1_3zUnsupported TLS version: )	r   TLSv1TLSv1_0TLSv1_1r   TLSv1_3r   r   r'   )rd   lookupr   s      rJ   _normalize_tls_versionr2  o  s    !!%%%%%%%%%%!))!))!))!))F --/


!C
&!:7)DEE#;rM   target_name>   
safari15_3
safari15_5
safari17_0
safari18_0safari17_2_iossafari18_0_iosc                L    t        j                         }|j                  |       S N)r#   load_fingerprintsr   )targetfingerprintss     rJ   _load_named_fingerprintr?    s!    %779LF##rM   c                (    t        |       }|t        v S r;  )r.   NATIVE_TARGET_NAMES)r=  
normalizeds     rJ   _is_native_impersonate_targetrC    s    ,V4J,,,rM   c                P    dj                  d | j                  d      D              S )Nr   c              3  ,   K   | ]  }|d k7  s	|  yw)21NrE   )r   parts     rJ   r   z+_strip_padding_extension.<locals>.<genexpr>  s     PT44<DPs   
)rt   r   )extension_orders    rJ   _strip_padding_extensionrI    s"    88P_%:%:3%?PPPrM   c                    | dk(  ry| S )NX25519Kyber768X25519Kyber768Draft00rE   )groups    rJ   _normalize_supported_grouprN    s      &LrM   c           
     t   |j                   rFt        |j                         }| j                  t        j                  |t
        j                  z         |j                  r9| j                  t        j                  dj                  |j                               |j                  rAt        |j                        }|j                  s | j                  t        j                  |       | j                  t        j                  t        |j                                | j                  t        j"                  t        |j$                               | j                  t        j&                  t        |j(                               | j                  t        j*                  t        |j,                               |j.                  rS| j                  t        j"                  d       | j                  t        j0                  t        |j.                               | j                  t        j2                  d       | j                  t        j4                  d       | j                  t        j6                  |j8                         |j:                  r:| j                  t        j<                  dj                  |j:                               n | j                  t        j<                  d       |j>                  r9| j                  t        j@                  dj                  |j>                               |jB                  rQ|jB                  D cg c]  }tE        |       }}| j                  t        jF                  dj                  |             |jH                  r9| j                  t        jJ                  dj                  |jH                               | j                  t        jL                  t        |j                               |jN                  *| j                  t        jP                  |jN                         |jR                  *| j                  t        jT                  |jR                         |jV                  r*| j                  t        jX                  |jV                         |jZ                  r3| j                  t        j\                  t        |jZ                               |j^                  r:| j                  t        j`                  |j^                  jc                  dd             |jd                  *| j                  t        jf                  |jd                         |jh                  *| j                  t        jj                  |jh                         |jl                  r3| j                  t        jn                  t        |jl                               |jp                  r*| j                  t        jr                  |jp                         | j                  t        jt                  t        |jv                               |jx                  r*| j                  t        jz                  |jx                         |j|                  r*| j                  t        j~                  |j|                         |j                  r:| j                  t        j                  |j                  jc                  dd             |j                  r*| j                  t        j                  |j                         |j                  r*| j                  t        j                  |j                         |j                  rQ|j                  D cg c]  }tE        |       }}| j                  t        j                  dj                  |             |j                  r*| j                  t        j                  |j                         |j                  r*| j                  t        j                  |j                         |j                  r | j                  t        j                  d       |j                  9| j                  t        j                  dj                  |j                               |r|j                  rg }|j                  j                         D ]L  \  }	}
|	j                         }||v r|dk(  r|
dk(  r&|j                  |       |j                  |	 d|
        N |r<| j                  t        j                  |D cg c]  }|j                          c}       |rj|j                  r^| j                  t        j                  |j                  j                         D 	
cg c]  \  }	}
|	 d|
 j                          c}
}	       |rl|j                  r_| j                  t        j                  |j                  j                         D 	
cg c]  \  }	}
|	 d|
 j                          c}
}	       y y y c c}w c c}w c c}w c c}
}	w c c}
}	w )Nr   r%   r   rm   hostr   )[r   r2  r   r   r   r   r   tls_ciphersr   rt   tls_extension_orderrI  r  r   SSL_ENABLE_ALPNr   tls_alpnSSL_ENABLE_ALPStls_alpsSSL_ENABLE_TICKETtls_session_ticketr  r  tls_use_new_alps_codepointTLS_USE_NEW_ALPS_CODEPOINTTLS_STATUS_REQUESTTLS_SIGNED_CERT_TIMESTAMPSTLS_KEY_SHARES_LIMITtls_key_shares_limitr  r  tls_signature_hashesr	  tls_supported_groupsrN  r   tls_delegated_credentialsr  r  r  r  tls_echECHhttp2_settingsr   http2_window_updater   http2_pseudo_headers_orderr   r   r  r  r  r  r  r  r   r  r  r  r  r  http3_settingsr  http3_pseudo_headers_orderr  r"  r#  http3_header_orderHTTP3_HTTPHEADER_ORDERhttp3_tls_supported_groupsHTTP3_SSL_EC_CURVESr  r  ws_header_orderWS_HTTPHEADER_ORDERws_disable_session_ticketWS_SSL_DISABLE_TICKETws_tls_cert_compressionWS_SSL_CERT_COMPRESSIONheadersr   r   addr   
HTTPHEADERencodehttp3_headersHTTP3_HTTPHEADER
ws_headersWS_HTTPHEADER)r   fingerprintexisting_header_namesdefault_headersr   rR  rM  normalized_groupsr   r   r   rB  r   s                rJ   _apply_fingerprintr    s    ,[-D-DEG&&n6P6P(PQG++SXXk6M6M-NO&&6{7V7VW11KK335HIKK''[-A-A)BCKK''[-A-A)BCKK))3{/M/M+NOKK""C(>(>$?@--G++Q/..667	
 	KK**A.KK22A6KK,,k.N.NO''((#((;3S3S*T	
 	G00"5''%%sxx0P0P'Q	
 '' %99
 'u-
 
 	G))3884E+FG,,--HH[::;	

 	KK..K4V4V0WX((4G11;3T3TU&GKK!4!45 !!G**K,F,FG&&G//[5T5T1UV--..22::3C	
 &&2G));+J+JK))5G,,k.P.PQ$$G--s;3P3P/QRG,,k.F.FGKK%%s;+D+D'EF  G));+D+DE !!G**K,F,FG--..22::3C	
 ,,--{/T/T	
 %%G22K4R4RS-- %??
 'u-
 
 	G//:K1LM,,--{/T/T	

 ""G//1L1LM,,G1115**6++HH[889	
 ;..%--335 		3JCJ22V# !%%j13%r% 12		3 KK**,NAQXXZ,NO;44$$ #.";";"A"A"CC %r%!((*	
 ;11!! #."8"8">">"@C %r%!((*	
 2Q
t
F -O
s   ?h-h$&h)
	h.5h4T   zgzip, deflate, br, zstd)$params_listbase_urldatacontentjsonheaders_listcookies_listfilesauthtimeoutallow_redirectsmax_redirectsproxies_listproxy
proxy_authverify_listrefereraccept_encodingcontent_callbackimpersonater   r   r  extra_fpr}  r   http_version	interfacedoh_urlcertstreammax_recv_speed	multipartqueue_classevent_classcurl_optionsc       $   	     |!  STU | }'|j                         }||n|}(d })|t        |t              r|j                         }*nt        |t        t
        f      rt	        |      }*nt        |d      rt        |      })d}*nt        t        t        t           |            })d}*nt        |t        t        z  t        z        rt        |      j                         }*net        |t              r|j                         }*nDt        |t              r|j!                         }*n#t        |t              r|}*n|d}*nt#        d      |t%        |d      j                         }*||||#|)|*}+nd }+|dk(  r#|)!|'j'                  t(        j*                  d       n3|dk7  r.|'j'                  t(        j,                  |j                                |d	k(  r |'j'                  t(        j.                  d       |\  },}-|,rt1        ||,      }|-rt1        ||-      }|rt3        ||      }|rt5        ||
      }|durt7        |      }|'j'                  t(        j8                  |j                                |)|'j'                  t(        j:                  d       |'j'                  t(        j<                  |)       t        |)t              r,|)j>                  r |'j'                  t(        j@                  |)       |'j'                  t(        j,                  |j                                nt|*s|dv rn|'j'                  t(        jB                  |*       |'j'                  t(        jD                  tG        |*             |dk(  r |'j'                  t(        j,                  |       |\  }.}/t        |/tH              r|/jJ                  nd }0tI        |.|0      }1|1jM                  |/       |)st        |)t              r'|)jN                  t        |)jN                        }2|2|1d<   n|1jQ                  d      }2|2)|'j'                  t(        jR                  tU        |2             g }3|1jW                         D ]L  \  }4}5|5|3jY                  |4 d       |5dk(  r|3jY                  |4 d       7|3jY                  |4 d|5        N |t[        |3dd       |"t        |t              r|dk7  rt[        |3dd       t        |(t        t        t
        f      r|(rt[        |3dd       t[        |3ddd       |'j'                  t(        j\                  |3D 1cg c]  }1|1j                          c}1       |r|3D 6ch c]  }6t_        |6       }7}6n
ta               }7tc        |1||+      }8|'j'                  t(        jd                  d       |'j'                  t(        jf                  d       |	\  }9}:|9rD|9ji                  |8      D ]0  };| j'                  t(        jf                  |;jk                                2 |:rOtm        |:      }<|<ji                  |8      D ]0  };| j'                  t(        jf                  |;jk                                2 |
rto        d      |#rt        t        |xs i       jq                         D ]8  \  }4}5|#js                  |4t        |5t              r|5j                         n|5       : |'j'                  t(        jt                  |#jv                         |ra|\  }=}>|'j'                  t(        jx                  |=j                                |'j'                  t(        jz                  |>j                                |d}t        |t              r|\  }?}@|?|@z   }A|'j'                  t(        j|                  tU        |?dz               |!s.|'j'                  t(        j~                  tU        Adz               n|'j'                  t(        j                  d       |'j'                  t(        j                  t        j                  A             nt        |tT        t        z        r|!s-|'j'                  t(        j~                  tU        |dz               n|'j'                  t(        j|                  tU        |dz               |'j'                  t(        j                  d       |'j'                  t(        j                  t        j                  |             t        |t              r*|'j'                  t(        j                  tU        |             nf|d k(  r8|'j'                  t(        j                  tU        t        j                               n)|'j'                  t(        j                  tU        |             |'j'                  t(        j                  |       |\  }B}C|rCrt#        d!      |rd"|i}CCB}CCr|'j'                  t(        j                  d       t        |      }Dt        t        t           CjQ                  |Dj                  |CjQ                  d"                  }|Dj                  rKCjQ                  Dj                   d#|Dj                   |CjQ                  d$|Dj                               xs |}||'j'                  t(        j                  |       Dj                  d%k(  r^|j                  d&      rt        j                  d't        d()       |j                  d*      s |'j'                  t(        j                  d       |ra|\  }=}>|'j'                  t(        j                  |=j                                |'j'                  t(        j                  |>j                                |\  }E}F|Fdu xs	 E xr Fd u }G|G|'_V        |Gr@|'j'                  t(        j                  d       |'j'                  t(        j                  d       t        Ft              r@|'j'                  t(        j                  F       |'j'                  t(        j                  |F       Fd+v rPt        Et              r@|'j'                  t(        j                  E       |'j'                  t(        j                  |E       |r.|'j'                  t(        j                  |j                                |.|'j'                  t(        j                  |j                                | rvt        | t              r!|'j'                  t(        j                  |        nE| \  } }H|'j'                  t(        j                  |        |'j'                  t(        j                  |H       |r+t        |      }|'j'                  t(        j                  |       |rt        |t              rt        |'||7|       ngt        |      r2t        |      }I|'j                  |I|,      }J|Jdk7  r9t        d-I d.      t        |      }K|Kt        d-| d.      t        |'K|7|       |ro|t        j                  d/t        d)       d}Lt        |t              r|j                  rd}Lt        |t              r|jQ                  d0      rd}Lt        |'|L1       |rEt        |t              rt        d8i |}|t        j                  d2t        d)       t        |'|       |r*|t        j                  d3t        d)       t        |'|       |r*|t        j                  d4t        d)       t        |'|       d }Md Td Sd U|!r= |$       T |%       S |%       USTUfd5}N|'j'                  t(        j                  |N       nM|!|'j'                  t(        j                  |       n*t               }M|'j'                  t(        j                  |M       t               }O|'j'                  t(        j                  |O       |rO|}Pd6|vr	 t        j                  |       d7| }P|'j'                  t(        j                  Pj                                |r.|'j'                  t(        j                  |j                                |'j'                  t(        j                  |"       |&r*|&jq                         D ]  \  }Q}R|'j'                  |Q|R        |8MOTSUfS c c}1w c c}6w # t        $ r Y w xY w)9NreadrM   z3data must be dict/list/tuple, str, BytesIO or bytes)r   r   )
separatorsr;   r%   r:   r?   )r}   F)r;   r<   rA   )encodingzContent-Lengthzcontent-lengthr   rm   r   r   zContent-Typezapplication/jsonz!application/x-www-form-urlencodedzapplication/octet-streamExpectT)r   ALLzfiles is not supported, use `multipart`. See examples here: https://github.com/lexiforest/curl_cffi/blob/main/examples/upload.py)namer  r   i  rr   z)Cannot specify both 'proxy' and 'proxies'allz://zall://httpszhttps://zMake sure you are using https over https proxy, otherwise, the proxy prefix should be 'http://' not 'https://', see: https://github.com/lexiforest/curl_cffi/issues/6r   r   socks)NT)r}  zImpersonating z is not supportedz?JA3 fingerprint was altered after impersonated version was set.r  )r   zCExtra fingerprints were altered after impersonated version was set.zBAkamai fingerprint was altered after impersonated version was set.z@Perk fingerprint was altered after impersonated version was set.c                    j                         sj                          j                         rt        S j                  |        t	        |       S r;  )is_setrv   r   
put_nowaitr   )chunkheader_recvedr   quit_nows    rJ   qputzset_curl_options.<locals>.qput  sA     '')!!# ++LLu:rM   !zhost!rE   )wupperr   rQ   rv  bytes	bytearrayhasattrr2   r3   r   r	   r   r   tupler   r
   r  	TypeErrorr   r   r   r;   CUSTOMREQUESTNOBODYr   r   r   r   URLUPLOADREADDATA
rewindableSEEKDATA
POSTFIELDSPOSTFIELDSIZEr   r)   r  updatelengthr   INFILESIZE_LARGEr   multi_itemsr   r   ru  r   rv   r/   
COOKIEFILE
COOKIELISTget_cookies_for_curlto_curl_formatr&   NotImplementedErrorr   addpartMIMEPOST_formUSERNAMEPASSWORDCONNECTTIMEOUT_MS
TIMEOUT_MSLOW_SPEED_LIMITLOW_SPEED_TIMEmathceilfloatr   FOLLOWLOCATIONSAFE	MAXREDIRSPROXY_CREDENTIAL_NO_REUSEr   r   rh   ri   PROXYr   r   r   r!   HTTPPROXYTUNNELPROXYUSERNAMEPROXYPASSWORD_skip_cacertSSL_VERIFYPEERSSL_VERIFYHOSTCAINFOPROXY_CAINFOREFERERACCEPT_ENCODINGSSLCERTSSLKEYre   r   r"   r  rC  r.   r  r'   r?  r-   r  r   r%  r   r  WRITEFUNCTION	WRITEDATA
HEADERDATA	ipaddress
ip_addressr   	INTERFACEDOH_URLMAX_RECV_SPEED_LARGE)Vr   methodrj   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r}  r   r  r  r  r  r  r  r  r  r  r  r   	body_datastream_readerbodyrequest_bodybase_paramsrz   base_headersrs  r  r   content_lengthr   kvr   r|  reqbase_cookiescookiesmorseltemp_cookiesusernamepasswordconnect_timeoutread_timeoutall_timeoutbase_proxiesproxiesr   base_verifyverifydisable_verifyr   rB  retr{  r   bufferr  header_bufferr   optionsettingr  r   r  sV                                                                                      @@@rJ   r   r   D  s   X 	A\\^F #.DI#'Mgs#>>#D%!34>DWf%'0MD+D%',JKMD	D$+-	.%%'	D#	{{}	D'	"yy{	D%	 	MNNTj188: 
	 0D4D! M1	q!	5	&&8	# &K[1V,h$#C59E#HHW[[#**,'  	#	!!=1m[1m6N6NHHW%%}5	&&8	33	##T*	&&D	2U?HHW**F3 )L' $.gw#?wTHx0AHHW  m[1m6J6J6V !5!56N"0AUU#34N%HHW--s>/BC L -191#Q("W1#Q(1#Rs,- <9KL:dD1f6F.*M	
 )c5)45)<9ST |Xr4@HHWl!C!((*!CD DP QD!1$!7 Q Q #
#q&,
/C HHW%HHW'(L'"77< 	EFKK**F,A,A,CD	Ew'"77< 	EFKK**F,A,A,CD	E !S
 	
 tzr*002 	TDAq1As9K188:QRS	T	!!9??3 !(	!!8??#45	!!8??#45 '5!(/%%4	**C$0F,GHHHW''[4-?)@A HHW,,a0HHW++TYY{-CD	GS5[	)HHW''Wt^)<=HHW..GdN0CDHHW,,a0HHW++TYYw-?@ /:.	''_)=>	F	"	''Z__)=>	''_)=> HHW. )L'CDD%.
 	
22A6Xc]GKKgkk%>P$QR>>||nC'78KK&(8 9:    HHW]]E*||w&##J/MMP (#$ ''0HHW44a8 %/"(..0AB..0AB &Ku_JK(JFdNN#AN	''+	''+ &#	(	%%v. *[#">	-	%%{3 	'.."23 "	((/*@*@*BC dC HHW__d+ID#HHW__d+HHW^^S) -l;	%%|4 k;/q+/DoV,[98E
mmJmP!8*(4EF  6kB&*(5FG  #{$9?
 "MMQ
 h 12x7V7VGh%(,,7O*PG30 h%(484H"MMU
 	Q! "MMT
 	1f% "MMR
 	D!FAMHM#=	 	
&&-		%	&&(89	""F+IMHHW/ i,$$Y/  	{+	""ELLN3	'.."23 HHW))>: +113 	&OFGHHVW%	& q-AA} "D !RP  s%   &AB%

AB*AB/ B/	AB;B:AB;)rd   z*Union[CurlHttpVersion, HttpVersionLiteral]rP   r   )rj   rQ   rP   rg   )rm   )rj   rQ   r}   rQ   )rj   rQ   rz   zUnion[dict, list, tuple]rP   rQ   )r   rQ   rP   rQ   )F)r   z	list[str]r   rQ   r   rQ   r   rg   )r   rQ   rP   rQ   r;  )r   zqueue.Queue)r   zasyncio.Queue)r   r4   r   rQ   r   rg   )r   r4   r   rQ   )r   r4   r  rQ   )r   r4   r$  r-   )rd   rQ   rP   r   )r=  rQ   rP   zOptional[Fingerprint])r=  rQ   rP   rg   )rH  rQ   rP   rQ   )rM  rQ   rP   rQ   )
r   r4   r{  r"   r|  zset[str]r}  rg   rP   None)Nr   r4   r  
HttpMethodrj   rQ   r  zFlist[Union[dict[str, object], list[object], tuple[object, ...], None]]r  Optional[str]r  zOptional[RequestData]r  zOptional[RequestContent]r  z-Optional[dict[object, object] | list[object]]r  zlist[Optional[HeaderTypes]]r  zlist[Optional[CookieTypes]]r  zOptional[dict[object, object]]r  Optional[tuple[str, str]]r  z3Optional[Union[float, tuple[float, float], object]]r  z&Optional[Union[bool, CurlFollow, str]]r  zOptional[int]r  zlist[Optional[ProxySpec]]r  r  r  r  r  zlist[Union[bool, str, None]]r  r  r  r  r  zOptional[Callable[..., object]]r  z5Optional[Union[BrowserTypeLiteral, str, Fingerprint]]r   r  r   r  r  r  r  z/Optional[Union[ExtraFingerprints, ExtraFpDict]]r}  rg   r   zUnion[str, Literal[False]]r  z4Optional[Union[CurlHttpVersion, HttpVersionLiteral]]r  r  r  r  r  z%Optional[Union[str, tuple[str, str]]]r  zOptional[bool]r  r   r  zOptional[CurlMime]r  r   r  r   r  zOptional[dict[CurlOpt, str]])k
__future__r   __all__asyncior  r  r   r   collectionsr   collections.abcr   r	   ior
   r  r   typingr   r   r   r   r   r   r   r   urllib.parser   r   r   r   r   r   constr   r   r   r   r   r   r    utilsr!   r   r>  r"   r#   r$   r  r&   
exceptionsr'   r(   rs  r)   r  r*   r+   r,   r-   r.   modelsr/   r   r0   r1   r2   r3   r4   r5   r6   r7   r8   sessionr9   r  rv   ru   rD   r   __annotations__re   rl   r   r   	frozensetr   r   r   r   r   r   r   r   r   r  r%  r2  rA   DEPRECATED_NATIVE_TARGET_ALIASESr  r?  rC  rI  rN  r  r   )items   0rJ   <module>r"     s>   "
?       .   S S S T T H H 1 7 V V  4    N N$$<" P

 '(
    (\	 )7&;4v M
,5, DI//"%/.1/<@/7(LVS,	NUD& 8RRttM*R $     ; <$
-
Q^

^
^
 $^
 	^

 
^
P 	""&(,:>0202,0&*CJ>B#%.0,002!%>8<IM @D (*IM#!26!$(15UIB
IBIB 
IB
IB IB  IB &IB 8IB .IB .IB *IB $IB  A!IB" <#IB$ !%IB& ,'IB( )IB* *+IB, .-IB. /IB0 #1IB2 63IB4 G5IB6 
7IB8 9IB: ;IB< >=IB> ?IB@ &AIBB GCIBD EIBF GIBH 0IIBJ KIBL MIBN "OIBP QIBR SIBT /UIBE Ss   H