§
    ¥”j�  ã                  óÌ   — d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ dZdZdZdZdZdZdZdZ G d„ d¦  «        Z dS )é    )ÚannotationsN)Ú	Awaitable)ÚCallable)ÚSplitResultÚurlsplit)ÚiscoroutinefunctionÚmarkcoroutinefunction)ÚHttpRequestÚHttpResponse)ÚHttpResponseBase)Úpatch_vary_headers)Úconf)Úcheck_request_enabledzaccess-control-allow-originzaccess-control-expose-headersz access-control-allow-credentialszaccess-control-allow-headerszaccess-control-allow-methodszaccess-control-max-agez&access-control-request-private-networkz$access-control-allow-private-networkc                  óf   — e Zd ZdZdZdd„Zdd
„Zdd„Zdd„Zd d„Z	d!d„Z
d"d„Zd#d„Zd#d„Zd$d„ZdS )%ÚCorsMiddlewareTÚget_responseú`Callable[[HttpRequest], HttpResponseBase] | Callable[[HttpRequest], Awaitable[HttpResponseBase]]ÚreturnÚNonec                óv   — || _         t          | j         ¦  «        | _        | j        rt          | ¦  «         d S d S ©N)r   r   Ú
async_moder	   )Úselfr   s     úe/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/corsheaders/middleware.pyÚ__init__zCorsMiddleware.__init__   sH   € ð )ˆÔÝ-¨dÔ.?Ñ@Ô@ˆŒàŒ?ð 	(õ " $Ñ'Ô'Ð'Ð'Ð'ð		(ð 	(ó    Úrequestr
   ú.HttpResponseBase | Awaitable[HttpResponseBase]c                óô   — | j         r|                      |¦  «        S |                      |¦  «        }|€.|                      |¦  «        }t	          |t
          ¦  «        sJ ‚|}|                      ||¦  «         |S r   )r   Ú	__acall__Úcheck_preflightr   Ú
isinstancer   Úadd_response_headers©r   r   ÚresponseÚresults       r   Ú__call__zCorsMiddleware.__call__.   sƒ   € ð Œ?ð 	+Ø—>’> 'Ñ*Ô*Ð*Ø,0×,@Ò,@ÀÑ,IÔ,IˆØÐØ×&Ò& wÑ/Ô/ˆFÝ˜fÕ&6Ñ7Ô7Ð7Ð7Ð7ØˆHØ×!Ò! '¨8Ñ4Ô4Ð4Øˆr   r   c              ƒ  óÌ   K  — |                       |¦  «        }|€4|                      |¦  «        }t          |t          ¦  «        rJ ‚|ƒ d {V —†}|                      ||¦  «         |S r   )r!   r   r"   r   r#   r$   s       r   r    zCorsMiddleware.__acall__;   su   è è € Ø×'Ò'¨Ñ0Ô0ˆØÐØ×&Ò& wÑ/Ô/ˆFÝ! &Õ*:Ñ;Ô;Ð;Ð;Ð;Ø#�|�|�|�|�|�|ˆHØ×!Ò! '¨8Ñ4Ô4Ð4Øˆr   úHttpResponseBase | Nonec                ó”   — |                       |¦  «        |_        |j        r&|j        dk    rd|j        v rt	          ddi¬¦  «        S dS )zB
        Generate a response for CORS preflight requests.
        ÚOPTIONSzaccess-control-request-methodzcontent-lengthÚ0)ÚheadersN)Ú
is_enabledÚ_cors_enabledÚmethodr-   r   ©r   r   s     r   r!   zCorsMiddleware.check_preflightD   sZ   € ð !%§¢°Ñ 8Ô 8ˆÔàÔ!ð	Aà” )Ò+Ð+Ø/°7´?ÐBÐBåÐ)9¸3Ð(?Ð@Ñ@Ô@Ð@Øˆtr   r%   c                óö  — t          |dd¦  «        }|€|                      |¦  «        }|s|S t          |d¦  «         |j                             d¦  «        }|s|S 	 t          |¦  «        }n# t          $ r |cY S w xY wt          j        s-|  	                    ||¦  «        s|  
                    |¦  «        s|S t          j        rt          j        sd|t          <   n
||t          <   t          j        r
d|t          <   t          t          j        ¦  «        r'd                     t          j        ¦  «        |t"          <   |j        dk    r{d                     t          j        ¦  «        |t(          <   d                     t          j        ¦  «        |t,          <   t          j        r!t1          t          j        ¦  «        |t2          <   t          j        r-|j                             t6          ¦  «        dk    r
d|t8          <   |S )	z1
        Add the respective CORS headers
        r/   N)Úoriginr3   Ú*Útruez, r+   )Úgetattrr.   r   r-   Úgetr   Ú
ValueErrorr   ÚCORS_ALLOW_ALL_ORIGINSÚorigin_found_in_white_listsÚcheck_signalÚCORS_ALLOW_CREDENTIALSÚACCESS_CONTROL_ALLOW_ORIGINÚ ACCESS_CONTROL_ALLOW_CREDENTIALSÚlenÚCORS_EXPOSE_HEADERSÚjoinÚACCESS_CONTROL_EXPOSE_HEADERSr0   ÚCORS_ALLOW_HEADERSÚACCESS_CONTROL_ALLOW_HEADERSÚCORS_ALLOW_METHODSÚACCESS_CONTROL_ALLOW_METHODSÚCORS_PREFLIGHT_MAX_AGEÚstrÚACCESS_CONTROL_MAX_AGEÚCORS_ALLOW_PRIVATE_NETWORKÚ&ACCESS_CONTROL_REQUEST_PRIVATE_NETWORKÚ$ACCESS_CONTROL_ALLOW_PRIVATE_NETWORK)r   r   r%   Úenabledr3   Úurls         r   r#   z#CorsMiddleware.add_response_headersQ   sü  € õ ˜' ?°DÑ9Ô9ˆØˆ?Ø—o’o gÑ.Ô.ˆGàð 	ØˆOå˜8 [Ñ1Ô1Ð1à”×$Ò$ XÑ.Ô.ˆØð 	ØˆOð	Ý˜6Ñ"Ô"ˆCˆCøÝð 	ð 	ð 	ØˆOˆOˆOð	øøøõ Ô+ð	à×4Ò4°V¸SÑAÔAð	ð ×%Ò% gÑ.Ô.ð	ð
 ˆOåÔ&ð 	;­tÔ/Jð 	;Ø47ˆHÕ0Ñ1Ð1à4:ˆHÕ0Ñ1åÔ&ð 	@Ø9?ˆHÕ5Ñ6å�tÔ'Ñ(Ô(ð 	Ø6:·i²iÝÔ(ñ7ô 7ˆHÕ2Ñ3ð Œ>˜YÒ&Ð&Ø59·Y²Y½tÔ?VÑ5WÔ5WˆHÕ1Ñ2Ø59·Y²Y½tÔ?VÑ5WÔ5WˆHÕ1Ñ2ÝÔ*ð TÝ36µtÔ7RÑ3SÔ3S�Õ/Ñ0õ Ô+ð	Dà”×#Ò#Õ$JÑKÔKÈvÒUÐUà=CˆHÕ9Ñ:àˆs   ÁA, Á,A;Á:A;r3   rH   rN   r   Úboolc                ó~   — |dk    r|t           j        v p)|                      |¦  «        p|                      |¦  «        S )NÚnull)r   ÚCORS_ALLOWED_ORIGINSÚ_url_in_whitelistÚregex_domain_match)r   r3   rN   s      r   r:   z*CorsMiddleware.origin_found_in_white_lists‹   sH   € à�vÒÐE &­DÔ,EÐ"Eð /Ø×%Ò% cÑ*Ô*ð/à×&Ò& vÑ.Ô.ð	
r   c                óN   ‡— t          ˆfd„t          j        D ¦   «         ¦  «        S )Nc              3  óB   •K  — | ]}t          j        |‰¦  «        V — Œd S r   )ÚreÚmatch)Ú.0Údomain_patternr3   s     €r   ú	<genexpr>z4CorsMiddleware.regex_domain_match.<locals>.<genexpr>“   sC   øè è € ð 
ð 
àõ ŒH�^ VÑ,Ô,ð
ð 
ð 
ð 
ð 
ð 
r   )Úanyr   ÚCORS_ALLOWED_ORIGIN_REGEXES)r   r3   s    `r   rT   z!CorsMiddleware.regex_domain_match’   s>   ø€ Ýð 
ð 
ð 
ð 
å"&Ô"Bð
ñ 
ô 
ñ 
ô 
ð 	
r   c                óŽ   — t          t          j        t          j        |j        ¦  «        ¦  «        p|                      |¦  «        S r   )rO   rW   rX   r   ÚCORS_URLS_REGEXÚ	path_infor;   r1   s     r   r.   zCorsMiddleware.is_enabled˜   s?   € ÝÝŒH•TÔ)¨7Ô+<Ñ=Ô=ñ
ô 
ð (à×Ò˜wÑ'Ô'ð	(r   c                ó`   — t          j        d |¬¦  «        }t          d„ |D ¦   «         ¦  «        S )N)Úsenderr   c              3  ó    K  — | ]	\  }}|V — Œ
d S r   © )rY   ÚfunctionÚreturn_values      r   r[   z.CorsMiddleware.check_signal.<locals>.<genexpr>Ÿ   s'   è è € ÐOÐOÑ$: H¨l�<ÐOÐOÐOÐOÐOÐOr   )r   Úsendr\   )r   r   Úsignal_responsess      r   r;   zCorsMiddleware.check_signal�   s6   € Ý0Ô5¸TÈ7ÐSÑSÔSÐÝÐOÐOÐ>NÐOÑOÔOÑOÔOÐOr   c                óf   ‡— d„ t           j        D ¦   «         }t          ˆfd„|D ¦   «         ¦  «        S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS rd   )r   )rY   Úos     r   ú
<listcomp>z4CorsMiddleware._url_in_whitelist.<locals>.<listcomp>¢   s   € ÐBÐBÐB 1•8˜A‘;”;ÐBÐBÐBr   c              3  óX   •K  — | ]$}|j         ‰j         k    o|j        ‰j        k    V — Œ%d S r   )ÚschemeÚnetloc)rY   r3   rN   s     €r   r[   z3CorsMiddleware._url_in_whitelist.<locals>.<genexpr>£   sN   øè è € ð 
ð 
àð ŒM˜SœZÒ'ÐG¨F¬M¸S¼ZÒ,Gð
ð 
ð 
ð 
ð 
ð 
r   )r   rR   r\   )r   rN   Úoriginss    ` r   rS   z CorsMiddleware._url_in_whitelist¡   sQ   ø€ ØBÐB­Ô(AÐBÑBÔBˆÝð 
ð 
ð 
ð 
à!ð
ñ 
ô 
ñ 
ô 
ð 	
r   N)r   r   r   r   )r   r
   r   r   )r   r
   r   r   )r   r
   r   r)   )r   r
   r%   r   r   r   )r3   rH   rN   r   r   rO   )r3   rH   r   rO   )r   r
   r   rO   )rN   r   r   rO   )Ú__name__Ú
__module__Ú__qualname__Úsync_capableÚasync_capabler   r'   r    r!   r#   r:   rT   r.   r;   rS   rd   r   r   r   r      së   € € € € € Ø€LØ€Mð(ð (ð (ð (ð ð ð ð ðð ð ð ðð ð ð ð8ð 8ð 8ð 8ðt
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð(ð (ð (ð (ð
Pð Pð Pð Pð
ð 
ð 
ð 
ð 
ð 
r   r   )!Ú
__future__r   rW   Úcollections.abcr   Útypingr   Úurllib.parser   r   Úasgiref.syncr   r	   Údjango.httpr
   r   Údjango.http.responser   Údjango.utils.cacher   Úcorsheaders.confr   Úcorsheaders.signalsr   r=   rB   r>   rD   rF   rI   rK   rL   r   rd   r   r   ú<module>r€      s@  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à !Ð !Ð !Ð !Ð !Ð !Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à;Ð Ø ?Ð Ø#EÐ  Ø=Ð Ø=Ð Ø1Ð Ø)QÐ &Ø'MÐ $ðL
ð L
ð L
ð L
ð L
ñ L
ô L
ð L
ð L
ð L
r   