Ë
    ý¶„j
  ã                  ór   — d dl mZ d dlZd dlZd dlZd dlmZ  G d„ de«      Z	dd„Z
dd„Zdd„Zdd	„Zdd
„Zy)é    )ÚannotationsN)ÚWWWScopec                  ó   — e Zd Zy)ÚClientDisconnectedN)Ú__name__Ú
__module__Ú__qualname__© ó    úN/var/www/html/GAP/venv/lib/python3.12/site-packages/uvicorn/protocols/utils.pyr   r   
   s   … r   r   c                ón  — | j                  d«      }|�?	 |j                  «       }t        |t        «      rt	        |d   «      t        |d   «      fS d S | j                  d«      }|�At        |t        t        z  «      r*t        |«      dk(  rt	        |d   «      t        |d   «      fS y # t        $ r Y y w xY w)NÚsocketr   é   Úpeernameé   )	Úget_extra_infoÚgetpeernameÚ
isinstanceÚtupleÚstrÚintÚOSErrorÚlistÚlen©Ú	transportÚsocket_infoÚinfos      r   Úget_remote_addrr      s¸   € Ø(1×(@Ñ(@ÀÓ(J€KØÐð	Ø×*Ñ*Ó,ˆDÜ3=¸dÄEÔ3J”C˜˜Q™“L¤# d¨1¡g£,Ð/ÐTÐPTÐTð ×#Ñ# JÓ/€DØÐœJ t¬T´E©\Ô:¼sÀ4»yÈAº~Ü�D˜‘G“œc $ q¡'›lÐ+Ð+Øøô ò 	ñ ð	ús   •;B( ÁB( Â(	B4Â3B4c                óœ  — | j                  d«      }|�Q|j                  «       }t        |t        «      rt	        |d   «      t        |d   «      fS t        |t        «      r|d fS y | j                  d«      }|�At        |t        t        z  «      r*t        |«      dk(  rt	        |d   «      t        |d   «      fS t        |t        «      r|d fS y )Nr   r   r   Úsocknamer   )r   Úgetsocknamer   r   r   r   r   r   r   s      r   Úget_local_addrr#      sÁ   € Ø(1×(@Ñ(@ÀÓ(J€KØÐØ×&Ñ&Ó(ˆÜ�dœEÔ"Ü˜˜Q™“L¤# d¨1¡g£,Ð/Ð/Ü�dœCÔ Ø˜$�<ÐØØ×#Ñ# JÓ/€DØÐœJ t¬T´E©\Ô:¼sÀ4»yÈAº~Ü�D˜‘G“œc $ q¡'›lÐ+Ð+Ü�$œÔØ�dˆ|ÐØr   c                ó6   — t        | j                  d«      «      S )NÚ
sslcontext)Úboolr   )r   s    r   Úis_sslr'   /   s   € Ü�	×(Ñ(¨Ó6Ó7Ð7r   c                ó4   — | j                  d«      }|syd|z  S )NÚclientÚ z%s:%d)Úget)Úscoper)   s     r   Úget_client_addrr-   3   s!   € Ø�Y‰Y�xÓ €FÙØØ�VÑÐr   c                óœ   — t         j                  j                  | d   «      }| d   r$dj                  || d   j	                  d«      «      }|S )NÚpathÚquery_stringz{}?{}Úascii)ÚurllibÚparseÚquoteÚformatÚdecode)r,   Úpath_with_query_strings     r   Úget_path_with_query_stringr8   :   sL   € Ü#Ÿ\™\×/Ñ/°°f±Ó>ÐØˆ^ÒØ!(§¡Ð0FÈÈnÑH]×HdÑHdÐelÓHmÓ!nÐØ!Ð!r   )r   úasyncio.TransportÚreturnztuple[str, int] | None)r   r9   r:   ztuple[str, int | None] | None)r   r9   r:   r&   )r,   r   r:   r   )Ú
__future__r   Úasyncior   Úurllib.parser2   Úuvicorn._typesr   r   r   r   r#   r'   r-   r8   r
   r   r   ú<module>r?      s7   ðÝ "ã Û Û å #ô '˜Ô &óó"ó"8óô"r   