Ë
    ¦#ijžf  ã                   óÀ  — d dl Z d dlZd dlZd dl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 d dlmZ d dlmZm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 d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z( d dl)m*Z*  e*dejV                  «      Z, G d„ de «      Z- G d„ de.«      Z/ G d„ d«      Z0 G d„ de0«      Z1 G d„ de0«      Z2 G d„ de2«      Z3 G d„ de1«      Z4 G d „ d!e4«      Z5 G d"„ d#e4«      Z6 G d$„ d%e1«      Z7 G d&„ d'e1«      Z8 G d(„ d)e1«      Z9 G d*„ d+e1«      Z: G d,„ d-e1«      Z; G d.„ d/e1«      Z< G d0„ d1e1«      Z= G d2„ d3e>«      Z? G d4„ d5e1«      Z@y)6é    N)ÚHeader)Ú	responses)Úurlsplit)Úasync_to_syncÚsync_to_async)Úsettings)ÚsignalsÚsigning)ÚDisallowedRedirect)ÚDjangoJSONEncoder)ÚSimpleCookie)Útimezone)ÚCaseInsensitiveMapping)Ú
iri_to_uri)Úcached_property)ÚMAX_URL_REDIRECT_LENGTHÚcontent_disposition_headerÚ	http_date)Ú_lazy_re_compilez ;\s*charset=(?P<charset>[^\s;]+)c                   ó4   — e Zd Zd„ Zdd„Zd„ Zd„ Zd	d„Zd„ Zy)
ÚResponseHeadersc                 óT   — i | _         |r| j                  |«      D ]
  \  }}|| |<   Œ yy)zm
        Populate the initial data using __setitem__ to ensure values are
        correctly encoded.
        N)Ú_storeÚ_unpack_items)ÚselfÚdataÚheaderÚvalues       úN/var/www/html/office/venv/lib/python3.12/site-packages/django/http/response.pyÚ__init__zResponseHeaders.__init__&   s:   € ð
 ˆŒÙØ!%×!3Ñ!3°DÓ!9ò %‘�˜Ø$��V’ñ%ð ó    c                 ó2  — 	 t        |t        «      r|j                  |«       n>t        |t        «      r|j	                  |«      }nt        |«      }|j                  |«       d|v sd|v rt        d|›d�«      ‚	 |S # t        $ r‘}t        |t        «      rd|v sd|v st        |t        «      rd|v sd|v rt        d|›d�«      |‚|r+t        |dt        j                  ¬«      j                  «       }n|xj                  d	|z  z  c_
        ‚ Y d
}~|S d
}~ww xY w)zé
        Convert headers key/value to ascii/latin-1 native strings.
        `charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and
        `value` can't be represented in the given charset, apply MIME-encoding.
        ú
úz*Header values can't contain newlines (got ú)ó   
ó   úutf-8)Ú
maxlinelenz,, HTTP response headers must be in %s formatN)Ú
isinstanceÚstrÚencodeÚbytesÚdecodeÚBadHeaderErrorÚUnicodeErrorr   ÚsysÚmaxsizeÚreason)r   r   ÚcharsetÚmime_encodeÚes        r   Ú_convert_to_charsetz#ResponseHeaders._convert_to_charset0   s  € ð	Ü˜%¤Ô%à—‘˜WÕ%Ü˜E¤5Ô)àŸ™ WÓ-‘ä˜E›
�à—‘˜WÔ%Ø�u‰} ¨¡Ü$Ø@ÀÀ	ÈÐKóð ð !.ð( ˆøô! ò 	ô
 ˜5¤%Ô(¨e°u©nÀÈÁÜ˜5¤#Ô&¨D°E©M¸TÀU¹]ä$Ø@ÀÀ	ÈÐKóàðñ Ü˜u g¼#¿+¹+ÔF×MÑMÓO‘à—’ÐJÈWÑTÑT•Øó ð ˆûð!	ús   ‚A7A< Á<	DÂBDÄDc                 ó&   — | j                  |«       y ©N)Úpop)r   Úkeys     r   Ú__delitem__zResponseHeaders.__delitem__W   s   € Ø�‰��r!   c                 óŽ   — | j                  |d«      }| j                  |dd¬«      }||f| j                  |j                  «       <   y )NÚasciiúlatin-1T)r5   )r7   r   Úlower©r   r;   r   s      r   Ú__setitem__zResponseHeaders.__setitem__Z   sC   € Ø×&Ñ& s¨GÓ4ˆØ×(Ñ(¨°	ÀtÐ(ÓLˆØ$'¨ <ˆ�‰�C—I‘I“KÒ r!   Nc                 óV   — | j                   j                  |j                  «       |«      S r9   )r   r:   r@   )r   r;   Údefaults      r   r:   zResponseHeaders.pop_   s   € Ø�{‰{�‰˜sŸy™y›{¨GÓ4Ð4r!   c                 ó   — || vr|| |<   y y r9   © rA   s      r   Ú
setdefaultzResponseHeaders.setdefaultb   s   € Ø�d‰?ØˆD�ŠIð r!   ©Fr9   )	Ú__name__Ú
__module__Ú__qualname__r    r7   r<   rB   r:   rG   rF   r!   r   r   r   %   s!   „ ò%ó%òNò0ó
5ór!   r   c                   ó   — e Zd Zy)r/   N©rI   rJ   rK   rF   r!   r   r/   r/   g   ó   „ Ør!   r/   c                   ó.  — e Zd ZdZdZ	 dd„Zed„ «       Zej                  d„ «       Zed„ «       Z	e	j                  d„ «       Z	d	„ Z
e
Zed
„ «       Zd„ Zd„ Zd„ Zd„ ZeZd„ Zdd„Z	 	 	 	 	 	 	 	 d d„Zd„ Zd!d„Zd"d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z y)#ÚHttpResponseBasezÖ
    An HTTP response base class with dictionary-accessed headers.

    This class doesn't handle content. It should not be used directly.
    Use the HttpResponse and StreamingHttpResponse subclasses instead.
    éÈ   Nc                 óº  — t        |«      | _        || _        d| j                  vr!|€d| j                  › �}|| j                  d<   n|rt	        d«      ‚g | _        d | _        t        «       | _        d| _	        |�=	 t        |«      | _        d| j                  cxk  rdk  st	        d«      ‚ t	        d«      ‚|| _        y # t        t        f$ r t        d«      ‚w xY w)	NúContent-Typeztext/html; charset=zX'headers' must not contain 'Content-Type' when the 'content_type' parameter is provided.Fz$HTTP status code must be an integer.éd   iW  z4HTTP status code must be an integer from 100 to 599.)r   ÚheadersÚ_charsetr4   Ú
ValueErrorÚ_resource_closersÚ_handler_classr   ÚcookiesÚclosedÚintÚstatus_codeÚ	TypeErrorÚ_reason_phrase)r   Úcontent_typeÚstatusr3   r4   rU   s         r   r    zHttpResponseBase.__init__u   sö   € ô ' wÓ/ˆŒØˆŒØ §¡Ñ-ØÐ#Ø!4°T·\±\°NÐC�Ø+7ˆD�L‰L˜Ò(ÙÜð8óð ð "$ˆÔð #ˆÔÜ#“~ˆŒØˆŒØÐðHÜ#& v£;�Ô ð ˜$×*Ñ*Ô1¨cÒ1Ü Ð!WÓXÐXð 2Ü Ð!WÓXÐXØ$ˆÕøô ¤	Ð*ò HÜÐ FÓGÐGðHús   Á;B? Â?Cc                 ór   — | j                   �| j                   S t        j                  | j                  d«      S )NzUnknown Status Code)r_   r   Úgetr]   ©r   s    r   Úreason_phrasezHttpResponseBase.reason_phrase“   s4   € à×ÑÐ*Ø×&Ñ&Ð&ô �}‰}˜T×-Ñ-Ð/DÓEÐEr!   c                 ó   — || _         y r9   )r_   ©r   r   s     r   re   zHttpResponseBase.reason_phrase›   s
   € à#ˆÕr!   c                 óä   — | j                   �| j                   S | j                  j                  d«      x}r,t        j	                  |«      x}r|d   j                  dd«      S t        j                  S )NrS   r4   ú"Ú )rV   rU   rc   Ú_charset_from_content_type_reÚsearchÚreplacer   ÚDEFAULT_CHARSET)r   r`   Úmatcheds      r   r4   zHttpResponseBase.charsetŸ   sn   € à�=‰=Ð$Ø—=‘=Ð ð  Ÿ<™<×+Ñ+¨NÓ;Ð;ˆ<Ð;Ü7×>Ñ>¸|ÓLÐLˆwÐLð
 ˜yÑ)×1Ñ1°#°rÓ:Ð:Ü×'Ñ'Ð'r!   c                 ó   — || _         y r9   )rV   rg   s     r   r4   zHttpResponseBase.charset®   s	   € àˆ�r!   c           
      óÎ   — dj                  | j                  j                  «       D ��cg c]+  \  }}|j                  d«      dz   |j                  d«      z   ‘Œ- c}}«      S c c}}w )zHTTP headers as a bytestring.s   
r>   s   : r?   )ÚjoinrU   Úitemsr,   rA   s      r   Úserialize_headersz"HttpResponseBase.serialize_headers²   s]   € à�|‰|ð #'§,¡,×"4Ñ"4Ó"6÷á�C˜ð —
‘
˜7Ó# eÑ+¨e¯l©l¸9Ó.EÓEóó
ð 	
ùós   ©0A!
c                 óF   — d| j                   v rd| j                   d   z  S dS )NrS   z, "%s"rj   ©rU   rd   s    r   Ú_content_type_for_reprz'HttpResponseBase._content_type_for_repr½   s2   € ð  §¡Ñ-ð �t—|‘| NÑ3Ñ3ð	
ð ð	
r!   c                 ó"   — || j                   |<   y r9   rv   )r   r   r   s      r   rB   zHttpResponseBase.__setitem__Å   s   € Ø$ˆ�‰�VÒr!   c                 ó   — | j                   |= y r9   rv   ©r   r   s     r   r<   zHttpResponseBase.__delitem__È   s   € Ø�L‰L˜Ñ r!   c                 ó    — | j                   |   S r9   rv   rz   s     r   Ú__getitem__zHttpResponseBase.__getitem__Ë   s   € Ø�|‰|˜FÑ#Ð#r!   c                 ó   — || j                   v S )z$Case-insensitive check for a header.rv   rz   s     r   Ú
has_headerzHttpResponseBase.has_headerÎ   s   € à˜Ÿ™Ð%Ð%r!   c                 ó6   — | j                   j                  «       S r9   )rU   rs   rd   s    r   rs   zHttpResponseBase.itemsÔ   s   € Ø�|‰|×!Ñ!Ó#Ð#r!   c                 ó:   — | j                   j                  ||«      S r9   )rU   rc   )r   r   Ú	alternates      r   rc   zHttpResponseBase.get×   s   € Ø�|‰|×Ñ ¨	Ó2Ð2r!   c
                 ó  — || j                   |<   |�æt        |t        j                  «      r¹t        j                  |«      r$t        j
                  |t        j                  «      }|t        j                  j                  t        j                  ¬«      z
  }
|
t        j                  d¬«      z  }
d}|�t        d«      ‚t        d|
j                  dz  |
j                  z   «      }n%|| j                   |   d<   nd	| j                   |   d<   |�wt        |t        j                  «      r|j                  «       }t        |«      | j                   |   d
<   |s0t        t!        j                   «       |z   «      | j                   |   d<   |�|| j                   |   d<   |�|| j                   |   d<   |rd| j                   |   d<   |rd| j                   |   d<   |	r0|	j#                  «       dvrt        d«      ‚|	| j                   |   d<   yy)a™  
        Set a cookie.

        ``expires`` can be:
        - a string in the correct format,
        - a naive ``datetime.datetime`` object in UTC,
        - an aware ``datetime.datetime`` object in any time zone.
        If it is a ``datetime.datetime`` object then calculate ``max_age``.

        ``max_age`` can be:
        - int/float specifying seconds,
        - ``datetime.timedelta`` object.
        N)Útzé   )Úsecondsz/'expires' and 'max_age' can't be used together.r   i€Q Úexpiresrj   zmax-ageÚpathÚdomainTÚsecureÚhttponly)ÚlaxÚnoneÚstrictz,samesite must be "lax", "none", or "strict".Úsamesite)rZ   r*   Údatetimer   Úis_naiveÚ
make_awareÚUTCÚnowÚ	timedeltarW   ÚmaxÚdaysr…   Útotal_secondsr\   r   Útimer@   )r   r;   r   Úmax_ager†   r‡   rˆ   r‰   rŠ   rŽ   Údeltas              r   Ú
set_cookiezHttpResponseBase.set_cookieÚ   sÖ  € ð2 "ˆ�‰�SÑØÐÜ˜'¤8×#4Ñ#4Ô5Ü×$Ñ$ WÔ-Ü&×1Ñ1°'¼8¿<¹<ÓH�GØ¤(×"3Ñ"3×"7Ñ"7¼8¿<¹<Ð"7Ó"HÑH�ð œ×+Ñ+°AÔ6Ñ6�à�ØÐ&Ü$Ð%VÓWÐWÜ˜a §¡¨eÑ!3°e·m±mÑ!CÓD‘à/6�—‘˜SÑ! )Ò,à+-ˆD�L‰L˜Ñ˜iÑ(ØÐÜ˜'¤8×#5Ñ#5Ô6Ø!×/Ñ/Ó1�Ü+.¨w«<ˆD�L‰L˜Ñ˜iÑ(áÜ/8¼¿¹»ÀwÑ9NÓ/O�—‘˜SÑ! )Ñ,ØÐØ(,ˆD�L‰L˜Ñ˜fÑ%ØÐØ*0ˆD�L‰L˜Ñ˜hÑ'ÙØ*.ˆD�L‰L˜Ñ˜hÑ'ÙØ,0ˆD�L‰L˜Ñ˜jÑ)ÙØ�~‰~ÓÐ'@Ñ@Ü Ð!OÓPÐPØ,4ˆD�L‰L˜Ñ˜jÒ)ð r!   c                 ó<   — | j                   j                  ||«       y)z,Set a header unless it has already been set.N)rU   rG   rA   s      r   rG   zHttpResponseBase.setdefault  s   € à�‰×Ñ  UÕ+r!   c                 óœ   — t        j                  t        j                  ||«      ¬«      j                  |«      } | j                  ||fi |¤ŽS )N)Úsalt)r
   Úget_cookie_signerÚ_cookie_signer_saltÚsignr›   )r   r;   r   rž   Úkwargss        r   Úset_signed_cookiez"HttpResponseBase.set_signed_cookie  sH   € Ü×)Ñ)Ü×,Ñ,¨S°$Ó7ô
ç
‰$ˆu‹+ð 	ð ˆt�‰˜s EÑ4¨VÑ4Ð4r!   c           	      óˆ   — |j                  d«      xs |xr |j                  «       dk(  }| j                  |d|||d|¬«       y )N)z	__Secure-z__Host-rŒ   r   zThu, 01 Jan 1970 00:00:00 GMT)r™   r‡   rˆ   r‰   r†   rŽ   )Ú
startswithr@   r›   )r   r;   r‡   rˆ   rŽ   r‰   s         r   Údelete_cookiezHttpResponseBase.delete_cookie$  sW   € ð
 —‘Ð 8Ó9ò 
ØÒ3˜Ÿ™Ó)¨VÑ3ð 	ð 	�‰ØØØØØØ3Øð 	õ 	
r!   c                 óô   — t        |t        t        f«      rt        |«      S t        |t        «      r$t        |j	                  | j
                  «      «      S t        |«      j	                  | j
                  «      S )z=Turn a value into a bytestring encoded in the output charset.)r*   r-   Ú
memoryviewr+   r,   r4   rg   s     r   Ú
make_byteszHttpResponseBase.make_bytes8  sX   € ô �eœe¤ZÐ0Ô1Ü˜“<ÐÜ�eœSÔ!Ü˜Ÿ™ d§l¡lÓ3Ó4Ð4ä�5‹z× Ñ  §¡Ó.Ð.r!   c                 óê   — | j                   D ]
  }	  |«        Œ | j                   j                  «        d| _        t        j
                  j                  | j                  ¬«       y # t        $ r Y Œdw xY w)NT)Úsender)rX   Ú	ExceptionÚclearr[   r	   Úrequest_finishedÚsendrY   )r   Úclosers     r   ÚclosezHttpResponseBase.closeN  sm   € Ø×,Ñ,ò 	ˆFðÙ•ð	ð 	×Ñ×$Ñ$Ô&ØˆŒÜ× Ñ ×%Ñ%¨T×-@Ñ-@Ð%ÕAøô ò Ùðús   ‘A&Á&	A2Á1A2c                 óF   — t        d| j                  j                  z  «      ‚©Nz This %s instance is not writable©ÚOSErrorÚ	__class__rI   ©r   Úcontents     r   ÚwritezHttpResponseBase.writeY  ó   € ÜÐ8¸4¿>¹>×;RÑ;RÑRÓSÐSr!   c                  ó   — y r9   rF   rd   s    r   ÚflushzHttpResponseBase.flush\  s   € Ør!   c                 óF   — t        d| j                  j                  z  «      ‚)Nz)This %s instance cannot tell its positionr´   rd   s    r   ÚtellzHttpResponseBase.tell_  s!   € ÜØ7¸$¿.¹.×:QÑ:QÑQó
ð 	
r!   c                  ó   — y©NFrF   rd   s    r   ÚreadablezHttpResponseBase.readableg  ó   € Ør!   c                  ó   — yrÀ   rF   rd   s    r   ÚseekablezHttpResponseBase.seekablej  rÂ   r!   c                  ó   — yrÀ   rF   rd   s    r   ÚwritablezHttpResponseBase.writablem  rÂ   r!   c                 óF   — t        d| j                  j                  z  «      ‚r³   r´   )r   Úliness     r   Ú
writelineszHttpResponseBase.writelinesp  rº   r!   )NNNNNr9   )rj   NNú/NFFN)rj   )rÊ   NN)!rI   rJ   rK   Ú__doc__r]   r    Úpropertyre   Úsetterr4   rt   Ú	__bytes__rw   rB   r<   r|   r~   Ú__contains__rs   rc   r›   rG   r£   r¦   r©   r±   r¹   r¼   r¾   rÁ   rÄ   rÆ   rÉ   rF   r!   r   rP   rP   k   s  „ ñð €Kð RVó%ð< ñFó ðFð ×Ññ$ó ð$ð ñ(ó ð(ð ‡^�^ñó ðò
ð "€Iàñ
ó ð
ò%ò!ò$ò&ð €Lò$ó3ð ØØØØØØØó>5ò@,ó5ó
ò(/ò,	BòTòò
òòòóTr!   rP   c                   ó    ‡ — e Zd ZdZdZdˆ fd„	Zd„ Zd„ ZeZe	d„ «       Z
e
j                  d„ «       Z
ed„ «       Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚHttpResponsezs
    An HTTP response class with a string as content.

    This content can be read, appended to, or replaced.
    Fc                 ó2   •— t        ‰| �  |i |¤Ž || _        y r9   )Úsuperr    r¸   )r   r¸   Úargsr¢   r¶   s       €r   r    zHttpResponse.__init__}  s   ø€ Ü‰Ñ˜$Ð) &Ò)àˆ�r!   c                 ód   — d| j                   j                  | j                  | j                  dœz  S ©Nz5<%(cls)s status_code=%(status_code)d%(content_type)s>)Úclsr]   r`   ©r¶   rI   r]   rw   rd   s    r   Ú__repr__zHttpResponse.__repr__‚  s4   € ØFØ—>‘>×*Ñ*Ø×+Ñ+Ø ×7Ñ7ñJ
ñ 
ð 	
r!   c                 óB   — | j                  «       dz   | j                  z   S )z6Full HTTP message, including headers, as a bytestring.s   

)rt   r¸   rd   s    r   Ú	serializezHttpResponse.serialize‰  s   € à×%Ñ%Ó'¨+Ñ5¸¿¹ÑDÐDr!   c                 ó8   — dj                  | j                  «      S ©Nr!   )rr   Ú
_containerrd   s    r   r¸   zHttpResponse.content�  s   € à�x‰x˜Ÿ™Ó(Ð(r!   c                 óL  ‡ — t        |d«      rSt        |t        t        t        f«      s8dj                  ˆ fd„|D «       «      }t        |d«      r#	 |j                  «        n‰ j                  |«      }|g‰ _	        ‰ j                  j                  dd «       y # t        $ r Y Œ0w xY w)NÚ__iter__r!   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr9   ©r©   )Ú.0Úchunkr   s     €r   ú	<genexpr>z'HttpResponse.content.<locals>.<genexpr>™  s   øè ø€ ÒI¸%˜tŸ™¨u×5ÑIùs   ƒr±   Útext)Úhasattrr*   r-   r¨   r+   rr   r±   r¬   r©   rÞ   Ú__dict__r:   )r   r   r¸   s   `  r   r¸   zHttpResponse.content“  s‘   ø€ ô �5˜*Ô%¬jØ”Eœ:¤sÐ+ô/
ð —h‘hÓIÀ5ÔIÓIˆGÜ�u˜gÔ&ðØ—K‘K•Mð —o‘o eÓ,ˆGà"˜)ˆŒØ�‰×Ñ˜& $Õ'øô !ò Ùðús   ÁB Â	B#Â"B#c                 óT   — | j                   j                  | j                  xs d«      S )Nr(   )r¸   r.   r4   rd   s    r   ræ   zHttpResponse.text¥  s    € à�|‰|×"Ñ" 4§<¡<Ò#:°7Ó;Ð;r!   c                 ó,   — t        | j                  «      S r9   )ÚiterrÞ   rd   s    r   rà   zHttpResponse.__iter__©  s   € Ü�D—O‘OÓ$Ð$r!   c                 óX   — | j                   j                  | j                  |«      «       y r9   )rÞ   Úappendr©   r·   s     r   r¹   zHttpResponse.write¬  s   € Ø�‰×Ñ˜tŸ™¨wÓ7Õ8r!   c                 ó,   — t        | j                  «      S r9   )Úlenr¸   rd   s    r   r¾   zHttpResponse.tell¯  s   € Ü�4—<‘<Ó Ð r!   c                 ó   — | j                   S r9   )r¸   rd   s    r   ÚgetvaluezHttpResponse.getvalue²  s   € Ø�|‰|Ðr!   c                  ó   — y)NTrF   rd   s    r   rÆ   zHttpResponse.writableµ  s   € Ør!   c                 ó4   — |D ]  }| j                  |«       Œ y r9   )r¹   )r   rÈ   Úlines      r   rÉ   zHttpResponse.writelines¸  s   € Øò 	ˆDØ�J‰J�tÕñ	r!   )r!   )rI   rJ   rK   rË   Ú	streamingr    rÙ   rÛ   rÎ   rÌ   r¸   rÍ   r   ræ   rà   r¹   r¾   rñ   rÆ   rÉ   Ú__classcell__©r¶   s   @r   rÑ   rÑ   t  s‚   ø„ ñð €Iõò

òEð €Iàñ)ó ð)ð ‡^�^ñ(ó ð(ð" ñ<ó ð<ò%ò9ò!òòör!   rÑ   c                   óš   ‡ — e Zd ZdZdZdˆ fd„	Zd„ Zed„ «       Zed„ «       Z	ed„ «       Z
e
j                  d„ «       Z
d	„ Zd
„ Zd„ Zd„ Zˆ xZS )ÚStreamingHttpResponsea$  
    A streaming HTTP response class with an iterator as content.

    This should only be iterated once, when the response is streamed to the
    client. However, it can be appended to or replaced with a new iterator
    that wraps the original content (or yields entirely new content).
    Tc                 ó2   •— t        ‰| �  |i |¤Ž || _        y r9   )rÓ   r    Ústreaming_content)r   rû   rÔ   r¢   r¶   s       €r   r    zStreamingHttpResponse.__init__È  s   ø€ Ü‰Ñ˜$Ð) &Ò)ð "3ˆÕr!   c                 ód   — d| j                   j                  | j                  | j                  dœz  S rÖ   )r¶   rK   r]   rw   rd   s    r   rÙ   zStreamingHttpResponse.__repr__Î  s4   € ØFØ—>‘>×.Ñ.Ø×+Ñ+Ø ×7Ñ7ñJ
ñ 
ð 	
r!   c                 óF   — t        d| j                  j                  z  «      ‚)NzMThis %s instance has no `content` attribute. Use `streaming_content` instead.©ÚAttributeErrorr¶   rI   rd   s    r   r¸   zStreamingHttpResponse.contentÕ  s'   € äð+Ø-1¯^©^×-DÑ-DñEó
ð 	
r!   c                 óF   — t        d| j                  j                  z  «      ‚)Nz)This %s instance has no `text` attribute.rþ   rd   s    r   ræ   zStreamingHttpResponse.textÜ  s!   € äØ7¸$¿.¹.×:QÑ:QÑQó
ð 	
r!   c                 ó�   ‡ ‡— ‰ j                   r‰ j                  Šˆˆ fd„} |«       S t        ‰ j                  ‰ j                  «      S )Nc                 óT   •K  — ‰2 3 d {  –—† } ‰j                  | «      ­–— Œ7 Œ6 y ­wr9   râ   )ÚpartÚ	_iteratorr   s    €€r   Úawrapperz9StreamingHttpResponse.streaming_content.<locals>.awrapperé  s-   øè ø€ Ø"+÷ 0ð 0˜$ØŸ/™/¨$Ó/Ô/ð0ø¡)ùs   ƒ(†&Š$‹&Ž(¤&¦()Úis_asyncr  Úmapr©   )r   r  r  s   ` @r   rû   z'StreamingHttpResponse.streaming_contentâ  s9   ù€ à�=Š=ð Ÿ™ˆIõ0ñ “:Ðä�t—‘¨¯©Ó7Ð7r!   c                 ó&   — | j                  |«       y r9   )Ú_set_streaming_contentrg   s     r   rû   z'StreamingHttpResponse.streaming_contentñ  s   € à×#Ñ# EÕ*r!   c                 óä   — 	 t        |«      | _        d| _        t        |d«      r&| j                  j                  |j                  «       y y # t        $ r t	        |«      | _        d| _        Y ŒUw xY w)NFTr±   )	rë   r  r  r^   Úaiterrç   rX   rí   r±   rg   s     r   r	  z,StreamingHttpResponse._set_streaming_contentõ  se   € ð	!Ü! %›[ˆDŒNØ!ˆDŒMô �5˜'Ô"Ø×"Ñ"×)Ñ)¨%¯+©+Õ6ð #øô ò 	!Ü" 5›\ˆDŒNØ ˆDŽMð	!ús   ‚A Á A/Á.A/c           
      óú   — 	 t        | j                  «      S # t        $ rZ t        j                  dt
        d¬«       d„ }t        | j                  t         t        |«      | j                  «      «      «      cY S w xY w)NzƒStreamingHttpResponse must consume asynchronous iterators in order to serve them synchronously. Use a synchronous iterator instead.é   ©Ú
stacklevelc              “   óR   K  — g }| 2 3 d {  –—† }|j                  |«       Œ7 Œ6 |S ­wr9   )rí   )r  Úas_listrä   s      r   Úto_listz/StreamingHttpResponse.__iter__.<locals>.to_list  s3   è ø€ Ø�Ø#,÷ *ð *˜%Ø—N‘N 5Õ)ð*ø 9à�ùs   ‚'‡$‹"Œ$�'¢$¤')
rë   rû   r^   ÚwarningsÚwarnÚWarningr  r©   r   r  )r   r  s     r   rà   zStreamingHttpResponse.__iter__   sp   € ð	VÜ˜×.Ñ.Ó/Ð/øÜò 	VÜ�M‰MðPäØõ	òô �t—‘¬Ð-C¬]¸7Ó-CÀDÇNÁNÓ-SÓ(TÓUÒUð	Vús   ‚ —A A:Á9A:c                ó  K  — 	 | j                   2 3 d {  –—† }|­–— Œ7 Œ
6 y # t        $ rQ t        j                  dt        d¬«        t        t        «      | j                   «      ƒ d {  –—†7  D ]  }|­–— Œ	 Y y w xY w­w)Nz…StreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.r  r  )rû   r^   r  r  r  r   Úlist)r   r  s     r   Ú	__aiter__zStreamingHttpResponse.__aiter__  s‚   è ø€ ð	Ø"×4Ñ4÷ ð �dØ”
ðøÑ4øäò 
	Ü�M‰MðSäØõ	ð 2œm¬DÓ1°$×2HÑ2HÓI×IÐIò �Ø”
òð
	üsJ   ‚B „# �!”•!˜# Ÿ!¡# ¢B £AA=Á*A-Á+A=Á:B Á<A=Á=B c                 ó8   — dj                  | j                  «      S rÝ   )rr   rû   rd   s    r   rñ   zStreamingHttpResponse.getvalue$  s   € Ø�x‰x˜×.Ñ.Ó/Ð/r!   )rF   )rI   rJ   rK   rË   rõ   r    rÙ   rÌ   r¸   ræ   rû   rÍ   r	  rà   r  rñ   rö   r÷   s   @r   rù   rù   ½  s„   ø„ ñð €Iõ3ò
ð ñ
ó ð
ð ñ
ó ð
ð
 ñ8ó ð8ð ×Ññ+ó ð+ò	7òVò(ö 0r!   rù   c                   ó>   ‡ — e Zd ZdZdZdddœˆ fd„
Zˆ fd„Zd„ Zˆ xZS )	ÚFileResponsez>
    A streaming HTTP response class optimized for files.
    i   Frj   )Úas_attachmentÚfilenamec                ód   •— || _         || _        d|vxs |d   d u | _        t        ‰| �  |i |¤Ž y )Nr`   )r  r  Ú_no_explicit_content_typerÓ   r    )r   r  r  rÔ   r¢   r¶   s        €r   r    zFileResponse.__init__/  sE   ø€ Ø*ˆÔØ ˆŒà &Ð(ÒJ¨F°>Ñ,BÀdÐ,Jð 	Ô&ô 	‰Ñ˜$Ð) &Ó)r!   c                 ó"  •‡ ‡— t        |d«      sd ‰ _        t        ‰‰ �  |«      S |x‰ _        Št        ‰d«      r%‰ j                  j                  ‰j                  «       t        ˆˆ fd„d«      }‰ j                  ‰«       t        ‰‰ �  |«       y )NÚreadr±   c                  ó:   •— ‰ j                  ‰j                  «      S r9   )r!  Ú
block_size©Úfileliker   s   €€r   ú<lambda>z5FileResponse._set_streaming_content.<locals>.<lambda>?  s   ø€ ˜XŸ]™]¨4¯?©?Ó;€ r!   r!   )	rç   Úfile_to_streamrÓ   r	  rX   rí   r±   rë   Úset_headers)r   r   r%  r¶   s   ` @€r   r	  z#FileResponse._set_streaming_content7  s|   ú€ Ü�u˜fÔ%Ø"&ˆDÔÜ‘7Ñ1°%Ó8Ð8à).Ð.ˆÔ˜hÜ�8˜WÔ%Ø×"Ñ"×)Ñ)¨(¯.©.Ô9ÜÔ;¸SÓAˆØ×Ñ˜Ô"Ü‰Ñ& uÕ-r!   c                 óö  ‡ ‡— t        ‰dd«      }t        |t        «      r|nd}t        ‰d«      xr t        ‰d«       xs ‰j	                  «       }t        ‰d«      �r|rc‰j                  «       }‰j                  dt        j                  «       ‰j                  «       |z
  ‰ j                  d<   ‰j                  |«       �nt        ‰d«      r9‰j                  «       j                  ‰j                  «       z
  ‰ j                  d<   n¼t        j                  j                  |«      r�t        j                  j                  |«      ‰j                  «       z
  ‰ j                  d<   n_|r]t!        t#        ˆˆ fd	„d«      «      ‰ j                  d<   ‰j                  t%        ‰ j                  d   «       t        j                  «       t        j                  j'                  ‰ j(                  xs |«      }‰ j*                  rU|rDt-        j.                  |«      \  }}d
dddddœj1                  ||«      }|xs d‰ j                  d<   nd‰ j                  d<   t3        ‰ j4                  |«      x}r|‰ j                  d<   yy)zœ
        Set some common response headers (Content-Length, Content-Type, and
        Content-Disposition) based on the `filelike` response content.
        Únamerj   ÚseekrÄ   r¾   r   zContent-LengthÚ	getbufferc                  óL   •— t        ‰ j                  ‰j                  «      «      S r9   )rï   r!  r#  r$  s   €€r   r&  z*FileResponse.set_headers.<locals>.<lambda>]  s   ø€ œS §¡¨t¯©Ó!?Ó@€ r!   zapplication/x-brotlizapplication/x-bzipzapplication/x-compresszapplication/gzipzapplication/x-xz)ÚbrÚbzip2ÚcompressÚgzipÚxzzapplication/octet-streamrS   zContent-DispositionN)Úgetattrr*   r+   rç   rÄ   r¾   r+  ÚioÚSEEK_ENDrU   r,  ÚnbytesÚosr‡   ÚexistsÚgetsizeÚsumrë   r\   Úbasenamer  r  Ú	mimetypesÚ
guess_typerc   r   r  )r   r%  r  rÄ   Úinitial_positionr`   ÚencodingÚcontent_dispositions   ``      r   r(  zFileResponse.set_headersC  s+  ù€ ô
 ˜8 V¨RÓ0ˆÜ)¨(´CÔ8‘8¸bˆÜ˜8 VÓ,ò 
Ü˜ *Ó-Ð-ÒD°×1BÑ1BÓ1Dð 	ô �8˜VÕ$ÙØ#+§=¡=£?Ð Ø—‘˜a¤§¡Ô-Ø19·±³ÐCSÑ1S�—‘Ð-Ñ.Ø—‘Ð.Ö/Ü˜ ;Ô/à×&Ñ&Ó(×/Ñ/°(·-±-³/ÑAð —‘Ð-Ò.ô —‘—‘ Ô)ä—G‘G—O‘O HÓ-°·±³Ñ?ð —‘Ð-Ò.ñ Ü-0ÜÔ@À!ÓDó.ˆD�L‰LÐ)Ñ*ð �M‰Mœ3˜tŸ|™|Ð,<Ñ=Ó>Ð>ÄÇÁÔLä—7‘7×#Ñ# D§M¡MÒ$=°XÓ>ˆØ×)Ò)ÙÜ)2×)=Ñ)=¸hÓ)GÑ&�˜hð 1Ø1Ø 8Ø.Ø,ñ ÷ ‘#�h Ó-ð ð !Ò>Ð$>ð —‘˜^Ò,ð 0J�—‘˜^Ñ,ä"<Ø×Ñ ó#
ð 
Ðð 
ð 3FˆD�L‰LÐ.Ò/ð
r!   )	rI   rJ   rK   rË   r#  r    r	  r(  rö   r÷   s   @r   r  r  (  s$   ø„ ñð €Jà,1¸Bö *ô
.ö4Fr!   r  c                   ó@   ‡ — e Zd Zg d¢Zdˆ fd„	Z ed„ «      Zd„ Zˆ xZS )ÚHttpResponseRedirectBase)ÚhttpÚhttpsÚftpc                 óV  •— t        ‰| �  |i |¤Ž t        |«      | d<   t        |«      }t	        |«      t
        kD  rt        dt
        › d�«      ‚t        |«      }|r| j                  | _	        |j                  r1|j                  | j                  vrt        d|j                  z  «      ‚y y )NÚLocationzUnsafe redirect exceeding z charactersz)Unsafe redirect to URL with protocol '%s')rÓ   r    r   r+   rï   r   r   r   Ústatus_code_preserve_requestr]   ÚschemeÚallowed_schemes)r   Úredirect_toÚpreserve_requestrÔ   r¢   Úredirect_to_strÚparsedr¶   s          €r   r    z!HttpResponseRedirectBase.__init__}  s­   ø€ Ü‰Ñ˜$Ð) &Ò)Ü% kÓ2ˆˆZÑÜ˜kÓ*ˆÜˆÓÔ"9Ò9Ü$Ø,Ô-DÐ,EÀ[ÐQóð ô ˜/Ó*ˆÙØ#×@Ñ@ˆDÔØ�=Š=˜VŸ]™]°$×2FÑ2FÑFÜ$Ø;¸f¿m¹mÑKóð ð Gˆ=r!   c                 ó   — | d   S )NrG  rF   rd   s    r   r&  z!HttpResponseRedirectBase.<lambda>�  s   €   ZÑ 0€ r!   c                 óz   — d| j                   j                  | j                  | j                  | j                  dœz  S )NzD<%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s">)r×   r]   r`   Úurl)r¶   rI   r]   rw   rQ  rd   s    r   rÙ   z!HttpResponseRedirectBase.__repr__�  s:   € àRà—~‘~×.Ñ.Ø#×/Ñ/Ø $× ;Ñ ;Ø—x‘xñ	ñð	
r!   rH   )	rI   rJ   rK   rJ  r    rÌ   rQ  rÙ   rö   r÷   s   @r   rB  rB  z  s   ø„ Ú.€Oõñ  Ñ0Ó
1€Cö	
r!   rB  c                   ó   — e Zd ZdZdZy)ÚHttpResponseRedirecti.  i3  N©rI   rJ   rK   r]   rH  rF   r!   r   rS  rS  ›  ó   „ Ø€KØ#&Ñ r!   rS  c                   ó   — e Zd ZdZdZy)ÚHttpResponsePermanentRedirecti-  i4  NrT  rF   r!   r   rW  rW     rU  r!   rW  c                   óZ   ‡ — e Zd ZdZˆ fd„Zej                  j                  d„ «       Zˆ xZS )ÚHttpResponseNotModifiedi0  c                 ó*   •— t        ‰| �  |i |¤Ž | d= y )Nzcontent-type)rÓ   r    )r   rÔ   r¢   r¶   s      €r   r    z HttpResponseNotModified.__init__¨  s   ø€ Ü‰Ñ˜$Ð) &Ò)Ø�Ñ r!   c                 ó,   — |rt        d«      ‚g | _        y )Nz7You cannot set content to a 304 (Not Modified) response)rÿ   rÞ   rg   s     r   r¸   zHttpResponseNotModified.content¬  s   € áÜ ØIóð ð ˆ�r!   )	rI   rJ   rK   r]   r    rÑ   r¸   rÍ   rö   r÷   s   @r   rY  rY  ¥  s-   ø„ Ø€Kô!ð ×Ñ× Ñ ñó !ôr!   rY  c                   ó   — e Zd ZdZy)ÚHttpResponseBadRequesti�  N©rI   rJ   rK   r]   rF   r!   r   r]  r]  µ  ó   „ Ø�Kr!   r]  c                   ó   — e Zd ZdZy)ÚHttpResponseNotFoundi”  Nr^  rF   r!   r   ra  ra  ¹  r_  r!   ra  c                   ó   — e Zd ZdZy)ÚHttpResponseForbiddeni“  Nr^  rF   r!   r   rc  rc  ½  r_  r!   rc  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚHttpResponseNotAllowedi•  c                 óL   •— t        ‰| �  |i |¤Ž dj                  |«      | d<   y )Nz, ÚAllow)rÓ   r    rr   )r   Úpermitted_methodsrÔ   r¢   r¶   s       €r   r    zHttpResponseNotAllowed.__init__Ä  s(   ø€ Ü‰Ñ˜$Ð) &Ò)ØŸ	™	Ð"3Ó4ˆˆWŠr!   c                 ól   — d| j                   j                  | j                  | j                  | d   dœz  S )NzC<%(cls)s [%(methods)s] status_code=%(status_code)d%(content_type)s>rg  )r×   r]   r`   ÚmethodsrØ   rd   s    r   rÙ   zHttpResponseNotAllowed.__repr__È  s;   € ØTØ—>‘>×*Ñ*Ø×+Ñ+Ø ×7Ñ7Ø˜G‘}ñ	X
ñ 
ð 	
r!   )rI   rJ   rK   r]   r    rÙ   rö   r÷   s   @r   re  re  Á  s   ø„ Ø€Kô5ö
r!   re  c                   ó   — e Zd ZdZy)ÚHttpResponseGoneiš  Nr^  rF   r!   r   rl  rl  Ñ  r_  r!   rl  c                   ó   — e Zd ZdZy)ÚHttpResponseServerErroriô  Nr^  rF   r!   r   rn  rn  Õ  r_  r!   rn  c                   ó   — e Zd Zy)ÚHttp404NrM   rF   r!   r   rp  rp  Ù  rN   r!   rp  c                   ó*   ‡ — e Zd ZdZeddfˆ fd„	Zˆ xZS )ÚJsonResponseaH  
    An HTTP response class that consumes data to be serialized to JSON.

    :param data: Data to be dumped into json. By default only ``dict`` objects
      are allowed to be passed due to a security flaw before ECMAScript 5. See
      the ``safe`` parameter for more information.
    :param encoder: Should be a json encoder class. Defaults to
      ``django.core.serializers.json.DjangoJSONEncoder``.
    :param safe: Controls if only ``dict`` objects may be serialized. Defaults
      to ``True``.
    :param json_dumps_params: A dictionary of kwargs passed to json.dumps().
    TNc                 ó¾   •— |rt        |t        «      st        d«      ‚|€i }|j                  dd«       t	        j
                  |fd|i|¤Ž}t        ‰| �  dd|i|¤Ž y )NzTIn order to allow non-dict objects to be serialized set the safe parameter to False.r`   zapplication/jsonr×   r¸   rF   )r*   Údictr^   rG   ÚjsonÚdumpsrÓ   r    )r   r   ÚencoderÚsafeÚjson_dumps_paramsr¢   r¶   s         €r   r    zJsonResponse.__init__ë  sp   ø€ ñ œ
 4¬Ô.Üð+óð ð Ð$Ø "ÐØ×Ñ˜.Ð*<Ô=Ü�z‰z˜$ÑA GÐAÐ/@ÑAˆÜ‰ÑÑ0 Ð0¨Ó0r!   )rI   rJ   rK   rË   r   r    rö   r÷   s   @r   rr  rr  Ý  s   ø„ ñð  "ØØ÷1ñ 1r!   rr  )Ar�   r4  ru  r<  r7  Úrer1   r˜   r  Úemail.headerr   Úhttp.clientr   Úurllib.parser   Úasgiref.syncr   r   Údjango.confr   Údjango.corer	   r
   Údjango.core.exceptionsr   Údjango.core.serializers.jsonr   Údjango.http.cookier   Údjango.utilsr   Údjango.utils.datastructuresr   Údjango.utils.encodingr   Údjango.utils.functionalr   Údjango.utils.httpr   r   r   Údjango.utils.regex_helperr   ÚIrk   r   rW   r/   rP   rÑ   rù   r  rB  rS  rW  rY  r]  ra  rc  re  rl  rn  r¬   rp  rr  rF   r!   r   ú<module>r‹     sX  ðÛ Û 	Û Û Û 	Û 	Û 
Û Û Ý Ý !Ý !ç 5å  ß (Ý 5Ý :Ý +Ý !Ý >Ý ,Ý 3÷ñ õ
 7á 0Ø'¨¯©ó!Ð ô
?Ð,ô ?ôD	�Zô 	÷FTñ FTôRFÐ#ô FôRh0Ð,ô h0ôVOFÐ(ô OFôd
˜|ô 
ôB'Ð3ô 'ô
'Ð$<ô 'ô
˜lô ô ˜\ô ô˜<ô ô˜Lô ô
˜\ô 
ô �|ô ô˜lô ô	ˆiô 	ô1�<õ 1r!   