Ë
    +Œ:j*  ã                   óÊ  — d dl Z d dlZd dlmZ d dlZd dlmZmZ d dl	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 d dlmZmZmZmZ 	 d dlmZ ej<                  rd d	lm Z  h d
£Z!de"dejF                  e"e"f   fd„Z$ G d„ de%«      Z& G d„ dejN                  e"ejP                  f   «      Z)dejT                  fd„Z+dedejT                  fd„Z, G d„ de)«      Z-y# e$ r dZY Œ“w xY w)é    N)Úcookies)ÚAwaitableOrContextManagerÚ AwaitableOrContextManagerWrapper)ÚURLÚAddressÚFormDataÚHeadersÚQueryParamsÚState)ÚHTTPException)Ú
FormParserÚMultiPartExceptionÚMultiPartParser)ÚMessageÚReceiveÚScopeÚSend)Úparse_options_header)ÚRouter>   ú
user-agentúcache-controlúaccept-encodingúaccept-languageÚacceptÚcookie_stringÚreturnc                 óì   — i }| j                  d«      D ]]  }d|v r|j                  dd«      \  }}nd|}}|j                  «       |j                  «       }}|s|sŒFt        j                  |«      ||<   Œ_ |S )a   
    This function parses a ``Cookie`` HTTP header into a dict of key/value pairs.

    It attempts to mimic browser cookie parsing behavior: browsers and web servers
    frequently disregard the spec (RFC 6265) when setting and reading cookies,
    so we attempt to suit the common scenarios here.

    This function has been adapted from Django 3.1.0.
    Note: we are explicitly _NOT_ using `SimpleCookie.load` because it is based
    on an outdated spec and will fail on lots of input we want to support
    ú;ú=é   Ú )ÚsplitÚstripÚhttp_cookiesÚ_unquote)r   Úcookie_dictÚchunkÚkeyÚvals        úT/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/starlette/requests.pyÚcookie_parserr+       s€   € ð *,€KØ×$Ñ$ SÓ)ò 
:ˆØ�%‰<Ø—{‘{ 3¨Ó*‰HˆC‘ð ˜5�ˆCØ—9‘9“; §	¡	£ˆSˆÙ’#ä+×4Ñ4°SÓ9ˆK˜Òð
:ð Ðó    c                   ó   — e Zd Zy)ÚClientDisconnectN)Ú__name__Ú
__module__Ú__qualname__© r,   r*   r.   r.   ;   s   „ Ør,   r.   c                   óÎ  — e Zd ZdZddedej                  e   ddfd„Zde	dej                  fd„Zdej                  e	   fd	„Zdefd
„Zej"                  Zej$                  Zedej                  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j8                  e	ej                  f   fd„«       Zedej8                  e	e	f   fd„«       Zedej                  e   fd„«       Z edej8                  e	ej                  f   fd„«       Z!edej                  fd„«       Z"edej                  fd„«       Z#ede$fd„«       Z%de	dej                  defd„Z&y)ÚHTTPConnectionz•
    A base class for incoming HTTP connections, that is used to provide
    any functionality that is common to both `Request` and `WebSocket`.
    NÚscopeÚreceiver   c                 ó$   — |d   dv sJ ‚|| _         y )NÚtype)ÚhttpÚ	websocket©r5   )Úselfr5   r6   s      r*   Ú__init__zHTTPConnection.__init__E   s   € Ø�V‰}Ð 5Ñ5Ð5Ð5Øˆ�
r,   r(   c                 ó    — | j                   |   S ©Nr;   )r<   r(   s     r*   Ú__getitem__zHTTPConnection.__getitem__I   s   € Ø�z‰z˜#‰Ðr,   c                 ó,   — t        | j                  «      S r?   )Úiterr5   ©r<   s    r*   Ú__iter__zHTTPConnection.__iter__L   s   € Ü�D—J‘JÓÐr,   c                 ó,   — t        | j                  «      S r?   )Úlenr5   rC   s    r*   Ú__len__zHTTPConnection.__len__O   s   € Ü�4—:‘:‹Ðr,   c                 ó    — | j                   d   S )NÚappr;   rC   s    r*   rI   zHTTPConnection.appX   s   € à�z‰z˜%Ñ Ð r,   c                 óh   — t        | d«      st        | j                  ¬«      | _        | j                  S )NÚ_urlr;   )Úhasattrr   r5   rK   rC   s    r*   ÚurlzHTTPConnection.url\   s&   € ä�t˜VÔ$Ü $§*¡*Ô-ˆDŒIØ�y‰yÐr,   c                 óÜ   — t        | d«      sUt        | j                  «      }d|d<   d|d<   |j                  d|j                  dd«      «      |d<   t	        |¬	«      | _        | j
                  S )
NÚ	_base_urlú/Úpathr,   Úquery_stringÚapp_root_pathÚ	root_pathr!   r;   )rL   Údictr5   Úgetr   rO   )r<   Úbase_url_scopes     r*   Úbase_urlzHTTPConnection.base_urlb   sm   € ä�t˜[Ô)Ü! $§*¡*Ó-ˆNØ%(ˆN˜6Ñ"Ø-0ˆN˜>Ñ*Ø*8×*<Ñ*<Ø ×!3Ñ!3°KÀÓ!Dó+ˆN˜;Ñ'ô ! ~Ô6ˆDŒNØ�~‰~Ðr,   c                 óh   — t        | d«      st        | j                  ¬«      | _        | j                  S )NÚ_headersr;   )rL   r	   r5   rZ   rC   s    r*   ÚheaderszHTTPConnection.headersn   s&   € ä�t˜ZÔ(Ü#¨$¯*©*Ô5ˆDŒMØ�}‰}Ðr,   c                 ól   — t        | d«      st        | j                  d   «      | _        | j                  S )NÚ_query_paramsrR   )rL   r
   r5   r]   rC   s    r*   Úquery_paramszHTTPConnection.query_paramst   s.   € ä�t˜_Ô-Ü!,¨T¯Z©Z¸Ñ-GÓ!HˆDÔØ×!Ñ!Ð!r,   c                 ó:   — | j                   j                  di «      S )NÚpath_params)r5   rV   rC   s    r*   r`   zHTTPConnection.path_paramsz   s   € à�z‰z�~‰~˜m¨RÓ0Ð0r,   c                 ó”   — t        | d«      s1i }| j                  j                  d«      }|rt        |«      }|| _        | j                  S )NÚ_cookiesÚcookie)rL   r[   rV   r+   rb   )r<   r   Úcookie_headers      r*   r   zHTTPConnection.cookies~   sC   € ä�t˜ZÔ(Ø-/ˆGØ ŸL™L×,Ñ,¨XÓ6ˆMáÜ'¨Ó6�Ø#ˆDŒMØ�}‰}Ðr,   c                 óN   — | j                   j                  d«      }|�t        |Ž S y )NÚclient)r5   rV   r   )r<   Ú	host_ports     r*   rf   zHTTPConnection.client‰   s*   € ð —J‘J—N‘N 8Ó,ˆ	ØÐ Ü˜IÐ&Ð&Ør,   c                 óJ   — d| j                   v sJ d«       ‚| j                   d   S )NÚsessionz=SessionMiddleware must be installed to access request.sessionr;   rC   s    r*   ri   zHTTPConnection.session‘   s1   € ð ˜Ÿ™Ñ#ð	KàJó	KØ#à�z‰z˜)Ñ$Ð$r,   c                 óJ   — d| j                   v sJ d«       ‚| j                   d   S )NÚauthzAAuthenticationMiddleware must be installed to access request.authr;   rC   s    r*   rk   zHTTPConnection.auth˜   ó1   € ð �d—j‘jÑ ð	OàNó	OØ à�z‰z˜&Ñ!Ð!r,   c                 óJ   — d| j                   v sJ d«       ‚| j                   d   S )NÚuserzAAuthenticationMiddleware must be installed to access request.userr;   rC   s    r*   rn   zHTTPConnection.userŸ   rl   r,   c                 ó¤   — t        | d«      s9| j                  j                  di «       t        | j                  d   «      | _        | j                  S )NÚ_stateÚstate)rL   r5   Ú
setdefaultr   rp   rC   s    r*   rq   zHTTPConnection.state¦   sA   € ä�t˜XÔ&à�J‰J×!Ñ! '¨2Ô.ô   §
¡
¨7Ñ 3Ó4ˆDŒKØ�{‰{Ðr,   Ú_HTTPConnection__namer`   c                 ó~   — | j                   d   } |j                  |fi |¤Ž}|j                  | j                  ¬«      S )NÚrouter)rX   )r5   Úurl_path_forÚmake_absolute_urlrX   )r<   rs   r`   ru   Úurl_paths        r*   Úurl_forzHTTPConnection.url_for°   s?   € ØŸ™ HÑ-ˆØ&�6×&Ñ& vÑ=°Ñ=ˆØ×)Ñ)°4·=±=Ð)ÓAÐAr,   r?   )'r/   r0   r1   Ú__doc__r   ÚtypingÚOptionalr   r=   ÚstrÚAnyr@   ÚIteratorrD   ÚintrG   ÚobjectÚ__eq__Ú__hash__ÚpropertyrI   r   rM   rX   r	   r[   r
   r^   ÚDictr`   r   r   rf   ri   rk   rn   r   rq   ry   r2   r,   r*   r4   r4   ?   s  „ ññ
˜eð ¨f¯o©o¸gÑ.Fð ÐRVó ð˜sð  v§z¡zó ð ˜&Ÿ/™/¨#Ñ.ó  ð˜ó ð �]‰]€FØ�‰€Hàð!�V—Z‘Zò !ó ð!ð ð�Sò ó ðð
 ð	˜#ò 	ó ð	ð ð˜ò ó ðð
 ð"˜kò "ó ð"ð
 ð1˜VŸ[™[¨¨f¯j©j¨Ñ9ò 1ó ð1ð ð˜Ÿ™ S¨# XÑ.ò ó ðð ð˜Ÿ™¨Ñ0ò ó ðð ð%˜Ÿ™ S¨&¯*©* _Ñ5ò %ó ð%ð ð"�f—j‘jò "ó ð"ð ð"�f—j‘jò "ó ð"ð ð�uò ó ððB˜cð B°&·*±*ð BÀô Br,   r4   c               ƒ   ó    K  — t        d«      ‚­w)Nz+Receive channel has not been made available©ÚRuntimeErrorr2   r,   r*   Úempty_receiver‰   ¶   s   è ø€ Ü
ÐDÓ
EÐEùó   ‚Úmessagec              ƒ   ó    K  — t        d«      ‚­w)Nz(Send channel has not been made availabler‡   )r‹   s    r*   Ú
empty_sendr�   º   s   è ø€ Ü
ÐAÓ
BÐBùrŠ   c                   ó´  ‡ — e Zd ZU ej                  e   ed<   eefde	de
defˆ fd„Zedefd„«       Zede
fd„«       Zdej"                  ed	f   fd
„Zdefd„Zdej*                  fd„Zdddœdej.                  eef   dej.                  eef   defd„Zdddœdej.                  eef   dej.                  eef   dee   fd„Zdd„Zdefd„Zdedd	fd„Z ˆ xZ!S )ÚRequestÚ_formr5   r6   Úsendc                 ó~   •— t         ‰| �  |«       |d   dk(  sJ ‚|| _        || _        d| _        d| _        d | _        y )Nr8   r9   F)Úsuperr=   Ú_receiveÚ_sendÚ_stream_consumedÚ_is_disconnectedr�   )r<   r5   r6   r‘   Ú	__class__s       €r*   r=   zRequest.__init__Á   sI   ø€ ô 	‰Ñ˜ÔØ�V‰} Ò&Ð&Ð&ØˆŒØˆŒ
Ø %ˆÔØ %ˆÔØˆ�
r,   r   c                 ó    — | j                   d   S )NÚmethodr;   rC   s    r*   rš   zRequest.methodÌ   s   € à�z‰z˜(Ñ#Ð#r,   c                 ó   — | j                   S r?   )r”   rC   s    r*   r6   zRequest.receiveÐ   s   € à�}‰}Ðr,   Nc                óf  K  — t        | d«      r| j                  ­–— d­–— y | j                  rt        d«      ‚d| _        	 | j	                  «       ƒ d {  –—† }|d   dk(  r,|j                  dd«      }|r|­–— |j                  dd	«      sn|d   d
k(  rd| _        t        «       ‚Œfd­–— y 7 ŒX­w)NÚ_bodyr,   zStream consumedTr8   zhttp.requestÚbodyÚ	more_bodyFúhttp.disconnect)rL   r�   r–   rˆ   r”   rV   r—   r.   )r<   r‹   rž   s      r*   ÚstreamzRequest.streamÔ   s´   è ø€ Ü�4˜Ô!Ø—*‘*ÓØ‹IØØ× Ò ÜÐ0Ó1Ð1Ø $ˆÔØØ ŸM™M›O×+ˆGØ�v‰ .Ò0Ø—{‘{ 6¨3Ó/�ÙØ“JØ—{‘{ ;°Ô6ØØ˜‘Ð$5Ò5Ø(,�Ô%Ü&Ó(Ð(ð ð Œ	ð ,ús   ‚AB1ÁB/ÁAB1c              ƒ   óÈ   K  — t        | d«      s-g }| j                  «       2 3 d {  –—† }|j                  |«       Œ| j                  S 7 Œ"6 dj                  |«      | _        Œ&­w)Nr�   r,   )rL   r¡   ÚappendÚjoinr�   )r<   Úchunksr'   s      r*   rž   zRequest.bodyé   sX   è ø€ Ü�t˜WÔ%Ø+-ˆFØ#Ÿ{™{›}÷ %ð %�eØ—‘˜eÕ$à�z‰zÐð%ø˜}àŸ™ &Ó)ˆDŒJús%   ‚A"¡A
¥A¦A
©A"ÁA
Á
A"c              ƒ   ó¢   K  — t        | d«      s2| j                  «       ƒ d {  –—† }t        j                  |«      | _        | j                  S 7 Œ*­w)NÚ_json)rL   rž   ÚjsonÚloadsr§   )r<   rž   s     r*   r¨   zRequest.jsonñ   s=   è ø€ Ü�t˜WÔ%ØŸ™›×$ˆDÜŸ™ DÓ)ˆDŒJØ�z‰zÐð %ús   ‚ A¢A£+Aiè  ©Ú	max_filesÚ
max_fieldsr«   r¬   c             ƒ   óŒ  K  — | j                   €ít        €J d«       ‚| j                  j                  d«      }t        |«      \  }}|dk(  rQ	 t	        | j                  | j                  «       ||¬«      }|j                  «       ƒ d {  –—† | _         | j                   S |dk(  rMt        | j                  | j                  «       «      }|j                  «       ƒ d {  –—† | _         | j                   S t        «       | _         | j                   S 7 Œ‚# t        $ r,}d| j                  v rt        d|j                  ¬«      ‚|‚d }~ww xY w7 Œj­w)	NzEThe `python-multipart` library must be installed to use form parsing.zContent-Types   multipart/form-datarª   rI   i�  )Ústatus_codeÚdetails!   application/x-www-form-urlencoded)r�   r   r[   rV   r   r¡   Úparser   r5   r   r‹   r   r   )	r<   r«   r¬   Úcontent_type_headerÚcontent_typeÚ_Úmultipart_parserÚexcÚform_parsers	            r*   Ú	_get_formzRequest._get_form÷   s0  è ø€ ð �:‰:Ðä$Ð0ðWàVóWØ0à"&§,¡,×"2Ñ"2°>Ó"BÐä2Ð3FÓG‰OˆL˜!ØÐ5Ò5ðÜ'6ØŸ™ØŸ™›Ø"+Ø#-ô	(Ð$ð (8×'=Ñ'=Ó'?×!?�D”Jð �z‰zÐð Ð!EÒEÜ(¨¯©°t·{±{³}ÓE�Ø#.×#4Ñ#4Ó#6×6�”
ð �z‰zÐô &›Z�”
Ø�z‰zÐð "@ùÜ)ò Ø §
¡
Ñ*Ü+¸ÀCÇKÁKÔPÐPØ�Iûðúð 7úsI   ‚AEÁ:D
 ÂDÂ	D
 ÂAEÃEÃ0EÄD
 Ä
	D?Ä'D:Ä:D?Ä?Ec                ó:   — t        | j                  ||¬«      «      S )Nrª   )r   r·   )r<   r«   r¬   s      r*   ÚformzRequest.form  s!   € ô 0Ø�N‰N Y¸:ˆNÓFó
ð 	
r,   c              ƒ   ón   K  — | j                   �#| j                   j                  «       ƒ d {  –—†  y y 7 Œ­wr?   )r�   ÚcloserC   s    r*   r»   zRequest.close"  s.   è ø€ Ø�:‰:Ð!Ø—*‘*×"Ñ"Ó$×$Ñ$ð "Ø$ús   ‚*5¬3­5c              ƒ   ó  K  — | j                   sbi }t        j                  «       5 }|j                  «        | j	                  «       ƒ d {  –—† }d d d «       |j                  d«      dk(  rd| _         | j                   S 7 Œ3# 1 sw Y   Œ2xY w­w)Nr8   r    T)r—   ÚanyioÚCancelScopeÚcancelr”   rV   )r<   r‹   Úcss      r*   Úis_disconnectedzRequest.is_disconnected&  s}   è ø€ Ø×$Ò$Ø!ˆGô ×"Ñ"Ó$ð 0¨Ø—	‘	”Ø $§¡£×/�÷0ð �{‰{˜6Ó"Ð&7Ò7Ø(,�Ô%à×$Ñ$Ð$ð 0ø÷0ð 0üs.   ‚#B¥$A?Á	A=Á
A?Á/BÁ=A?Á?BÂBrQ   c              ƒ   óD  K  — d| j                   j                  di «      v r|g }t        D ]S  }| j                  j	                  |«      D ]3  }|j                  |j                  d«      |j                  d«      f«       Œ5 ŒU | j                  d||dœ«      ƒ d {  –—†  y y 7 Œ­w)Nzhttp.response.pushÚ
extensionszlatin-1)r8   rQ   r[   )r5   rV   ÚSERVER_PUSH_HEADERS_TO_COPYr[   Úgetlistr£   Úencoder•   )r<   rQ   Úraw_headersÚnameÚvalues        r*   Úsend_push_promisezRequest.send_push_promise4  s¤   è ø€ Ø 4§:¡:§>¡>°,ÀÓ#CÑCØEGˆKÜ3ò �Ø!Ÿ\™\×1Ñ1°$Ó7ò �EØ×&Ñ&ØŸ™ YÓ/°·±¸iÓ1HÐIõñðð
 —*‘*Ø-°tÈÑTó÷ ñ ð Dðús   ‚BB ÂBÂB )r   N)"r/   r0   r1   r{   r|   r   Ú__annotations__r‰   r�   r   r   r   r=   r„   r}   rš   r6   ÚAsyncGeneratorÚbytesr¡   rž   r~   r¨   ÚUnionr€   Úfloatr·   r   r¹   r»   ÚboolrÁ   rÊ   Ú__classcell__)r˜   s   @r*   r�   r�   ¾   sW  ø… Ø�?‰?˜8Ñ$Ó$ð 0=È:ñ	Øð	Ø%,ð	ØDHõ	ð ð$˜ò $ó ð$ð ð˜ò ó ðð˜f×3Ñ3°E¸4°KÑ@ó ð*˜Eó ð˜FŸJ™Jó ð /3Ø/3ò	ð —<‘<  U 
Ñ+ðð —L‘L  e Ñ,ð	ð
 
óðH /3Ø/3ò	
ð —<‘<  U 
Ñ+ð
ð —L‘L  e Ñ,ð	
ð
 
# 8Ñ	,ó
ó%ð% tó %ð
¨Cð 
°D÷ 
r,   r�   ).r¨   r{   r9   r   r$   r½   Ústarlette._utilsr   r   Ústarlette.datastructuresr   r   r   r	   r
   r   Ústarlette.exceptionsr   Ústarlette.formparsersr   r   r   Ústarlette.typesr   r   r   r   Úmultipart.multipartr   ÚModuleNotFoundErrorÚTYPE_CHECKINGÚstarlette.routingr   rÄ   r}   r…   r+   Ú	Exceptionr.   ÚMappingr~   r4   ÚNoReturnr‰   r�   r�   r2   r,   r*   ú<module>rÞ      sç   ðÛ Û Ý (ã ç Xß X× XÝ .ß QÑ Qß 9Ó 9ð Ý8ð
 
×ÒÝ(òÐ ð ð ¨¯©°S¸#°XÑ)>ó ô6	�yô 	ôtB�V—^‘^ C¨¯© OÑ4ô tBðnF˜VŸ_™_ó FðC˜gð C¨&¯/©/ó Cô@ˆnõ @øð_ ò  ØÒð ús   ÁC ÃC"Ã!C"