
    .Цig                        S SK Jr  S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
Jr  S SKJrJrJrJrJr  Sr1 Skr " S	 S
5      rg)    )annotationsN)Sequence)HeadersMutableHeaders)PlainTextResponseResponse)ASGIAppMessageReceiveScopeSend)DELETEGETHEADOPTIONSPATCHPOSTPUT>   AcceptContent-TypeAccept-LanguageContent-Languagec                      \ rS rSr        S                   SS jjrSS jrSS jrSS jrSS jrSS jr	\
SS	 j5       rS
rg)CORSMiddleware   Nc
                   SU;   a  [         nS n
Ub  [        R                  " U5      n
SU;   nSU;   nU(       + =(       d    Un0 nU(       a  SUS'   U(       a  SUS'   U(       a  SR                  U5      US'   0 nU(       a  SUS'   OSUS'   UR	                  SR                  U5      [        U	5      S	.5        [        [        [        U5      -  5      nU(       a  U(       d  SR                  U5      US
'   U(       a  SUS'   Xl	        X l
        X0l        U Vs/ s H  nUR                  5       PM     snU l        Xl        Xl        Xl        Xl        Xpl        Xl        Xl        g s  snf )N*Access-Control-Allow-Origintruez Access-Control-Allow-Credentials, zAccess-Control-Expose-HeadersOriginVary)zAccess-Control-Allow-MethodszAccess-Control-Max-AgeAccess-Control-Allow-Headers)ALL_METHODSrecompilejoinupdatestrsortedSAFELISTED_HEADERSsetappallow_originsallow_methodslowerallow_headersallow_all_originsallow_all_headerspreflight_explicit_allow_originallow_origin_regexallow_private_networksimple_headerspreflight_headers)selfr-   r.   r/   r1   allow_credentialsr5   r6   expose_headersmax_agecompiled_allow_origin_regexr2   r3   r4   r7   r8   hs                    X/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/starlette/middleware/cors.py__init__CORSMiddleware.__init__   so    -'M&*#)*,**5G*H'=0=0.?*?*TCT')+<?N89AGN=>>Bii>WN:;,.*(0f%?B;<  04		-0H*-g,	
 1C4FFG!2@D		-@X<=DJ@A**1>?Aaggi?!2!2/N,"=%:",!2 @s   E#c                h  #    US   S:w  a  U R                  XU5      I S h  vN   g US   n[        US9nUR                  S5      nUc  U R                  XU5      I S h  vN   g US:X  a'  SU;   a!  U R                  US9nU" XU5      I S h  vN   g U R	                  XX5S9I S h  vN   g  N NM N" N7f)	Ntypehttpmethodscopeoriginr   access-control-request-method)request_headers)r-   r   getpreflight_responsesimple_response)r9   rG   receivesendrE   headersrH   responses           r?   __call__CORSMiddleware.__call__M   s     =F"((54000x&X&>((54000Y#Bg#M..w.GH54000""54"QQQ! 1 1
 1 	RsE   B2B*<B2B,,B2B.B2$B0%B2,B2.B20B2c                    U R                   (       a  gU R                  b!  U R                  R                  U5      (       a  gXR                  ;   $ )NT)r2   r5   	fullmatchr.   )r9   rH   s     r?   is_allowed_origin CORSMiddleware.is_allowed_origina   sC    !!"".43J3J3T3TU[3\3\++++    c                   US   nUS   nUR                  S5      nUR                  S5      n[        U R                  5      n/ nU R                  US9(       a  U R                  (       a  X&S'   OUR                  S5        X0R                  ;  a  UR                  S5        U R                  (       a  Ub  XFS'   OjUbg  UR                  S	5       Vs/ s H  oR                  5       PM     sn H4  n	U	R                  5       U R                  ;  d  M#  UR                  S
5          O   Ub(  U R                  (       a  SUS'   OUR                  S5        U(       a  SSR                  U5      -   n
[        U
SUS9$ [        SSUS9$ s  snf )NrH   rI   zaccess-control-request-headersz&access-control-request-private-networkrH   r   rE   r#   ,rP   r   z$Access-Control-Allow-Private-Networkzprivate-networkzDisallowed CORS r    i  )status_coderP   OK   )rK   dictr8   rV   r4   appendr/   r3   splitr0   stripr1   r6   r'   r   )r9   rJ   requested_originrequested_methodrequested_headersrequested_private_networkrP   failuresr>   headerfailure_texts              r?   rL   !CORSMiddleware.preflight_responsej   sq   *84*+JK+//0PQ$3$7$78`$a!t--. !!)9!:33 :J56OOH%#5#55OOH% !!&7&C6G23*.?.E.Ec.JK.J779.JK<<>););;OOI. L
 %0))BH>? 12
 -		(0CCL$\sGTT 3HH% Ls   E>c                   #    [         R                  " U R                  X4S9nU R                  XU5      I S h  vN   g  N7f)N)rO   rJ   )	functoolspartialrO   r-   )r9   rG   rN   rO   rJ   s        r?   rM   CORSMiddleware.simple_response   s/       Whhut,,,s   5?=?c                  #    US   S:w  a  U" U5      I S h  vN   g UR                  S/ 5        [        US9nUR                  U R                  5        US   nSU;   nU R                  (       a  U(       a  U R                  XE5        O6U R                  (       d%  U R                  US9(       a  U R                  XE5        U" U5      I S h  vN   g  N N7f)NrC   zhttp.response.startrP   rF   r!   cookierZ   )
setdefaultr   r(   r7   r2   allow_explicit_originrV   )r9   messagerO   rJ   rP   rH   
has_cookies          r?   rO   CORSMiddleware.send   s     6?33w-9b) w/t**+ *0
 !!j&&w7 ''D,B,B&,B,Q&&w77m'  & 	s"   CCB0CC	CCc                .    XS'   U R                  S5        g )Nr   r!   )add_vary_header)rP   rH   s     r?   rr   $CORSMiddleware.allow_explicit_origin   s    17-.)rX   )r3   r2   r1   r/   r5   r.   r6   r-   r4   r8   r7   ) )r   ry   FNFry   iX  )r-   r	   r.   Sequence[str]r/   rz   r1   rz   r:   boolr5   z
str | Noner6   r{   r;   rz   r<   intreturnNone)rG   r   rN   r   rO   r   r}   r~   )rH   r)   r}   r{   )rJ   r   r}   r   )
rG   r   rN   r   rO   r   rJ   r   r}   r~   )rs   r
   rO   r   rJ   r   r}   r~   )rP   r   rH   r)   r}   r~   )__name__
__module____qualname____firstlineno__r@   rR   rV   rL   rM   rO   staticmethodrr   __static_attributes__ry   rX   r?   r   r      s     (*'/')"')-&+(*;3;3 %;3 %	;3
 %;3  ;3 ';3  $;3 &;3 ;3 
;3zR(,+IZ-. * *rX   r   )
__future__r   rl   r%   collections.abcr   starlette.datastructuresr   r   starlette.responsesr   r   starlette.typesr	   r
   r   r   r   r$   r+   r   ry   rX   r?   <module>r      s4    "  	 $ < ; B BJV f* f*rX   