§
    ~Štj:1  ã                   óv  — d Z ddlZddlZddlZddlmZmZmZmZm	Z	m
Z
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Zej        dk    rddlmZ nddlmZ eeeddf         ZdZ dej        cxk    odk     nc Z!ej        dk     Z"e!pe"Z# G d„ de¦  «        Z$ e$dd¦  «        Z% e$dd¦  «        Z&eeeged         f                  Z'eedged         f                  Z( G d„ de¦  «        Z) ej*        d¦  «        Z+de,de,fd„Z-de,dddefd „Z.e.Z/	 ddl0m1Z1 e1j/        Z2ese2Z/dS dS # e3$ r Y dS w xY w)!z"Http related parsers and protocol.é    N)ÚTYPE_CHECKINGÚAnyÚ	AwaitableÚCallableÚIterableÚListÚ
NamedTupleÚOptional)ÚCIMultiDicté   )ÚAbstractStreamWriter)ÚBaseProtocol)ÚClientConnectionResetError)ÚZLibCompressor)ÚNO_EXTENSIONS)ÚStreamWriterÚHttpVersionÚHttpVersion10ÚHttpVersion11)é   é   )ÚBuffer)ÚUnionzmemoryview[int]zmemoryview[bytes]i   )r   é   r   )r   r   é   )r   r   é	   c                   ó$   — e Zd ZU eed<   eed<   dS )r   ÚmajorÚminorN)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__© ó    úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/aiohttp/http_writer.pyr   r   .   s"   € € € € € € Ø€J€J�JØ€J€J�J€J€Jr&   r   úCIMultiDict[str]c                   óœ  — e Zd ZU dZedz  ed<   dZeed<   dZeed<   dZ	e
dz  ed<   	 	 d*dedej        d	ed
eddf
d„Zedej        dz  fd„¦   «         Zedefd„¦   «         Zd+d„Z	 d,dededz  ddfd„Zdeddfd„Zdee         ddfd„Zdeddfd„Zdededdfd„Zdddœdedededdfd „Zd!ed"d#ddfd$„Zd+d%„Z d+d&„Z!d-de"ddfd(„Z#d+d)„Z$dS ).r   NÚlengthFÚchunkedÚ_eofÚ	_compressÚprotocolÚloopÚon_chunk_sentÚon_headers_sentÚreturnc                 óZ   — || _         || _        || _        || _        d | _        d| _        d S )NF)Ú	_protocolr/   Ú_on_chunk_sentÚ_on_headers_sentÚ_headers_bufÚ_headers_written)Úselfr.   r/   r0   r1   s        r'   Ú__init__zStreamWriter.__init__B   s8   € ð "ˆŒØˆŒ	Ø.;ˆÔØ2AˆÔØ*.ˆÔØ&+ˆÔÐÐr&   c                 ó   — | j         j        S ©N)r4   Ú	transport©r9   s    r'   r=   zStreamWriter.transportP   s   € àŒ~Ô'Ð'r&   c                 ó   — | j         S r<   )r4   r>   s    r'   r.   zStreamWriter.protocolT   s
   € àŒ~Ðr&   c                 ó   — d| _         d S )NT)r+   r>   s    r'   Úenable_chunkingzStreamWriter.enable_chunkingX   s   € ØˆŒˆˆr&   ÚdeflateÚencodingÚstrategyc                 ó2   — t          ||¬¦  «        | _        d S )N)rC   rD   )r   r-   )r9   rC   rD   s      r'   Úenable_compressionzStreamWriter.enable_compression[   s   € õ (°ÀHÐMÑMÔMˆŒˆˆr&   Úchunkc                 óð   — t          |¦  «        }| xj        |z  c_        | xj        |z  c_        | j        j        }|�|                     ¦   «         rt          d¦  «        ‚|                     |¦  «         d S )Nú!Cannot write to closing transport)ÚlenÚbuffer_sizeÚoutput_sizer4   r=   Ú
is_closingr   Úwrite)r9   rG   Úsizer=   s       r'   Ú_writezStreamWriter._write`   s}   € Ý�5‰zŒzˆØÐÔ˜DÑ ÐÔØÐÔ˜DÑ ÐÔØ”NÔ,ˆ	ØÐ 	× 4Ò 4Ñ 6Ô 6ÐÝ,Ð-PÑQÔQÐQØ�Š˜ÑÔÐÐÐr&   Úchunksc                 ó|  — d}|D ]}|t          |¦  «        z  }Œ| xj        |z  c_        | xj        |z  c_        | j        j        }|�|                     ¦   «         rt          d¦  «        ‚t          s|t          k     r*| 	                    d 
                    |¦  «        ¦  «         d S |                     |¦  «         d S )Nr   rI   r&   )rJ   rK   rL   r4   r=   rM   r   ÚSKIP_WRITELINESÚMIN_PAYLOAD_FOR_WRITELINESrN   ÚjoinÚ
writelines)r9   rQ   rO   rG   r=   s        r'   Ú_writelineszStreamWriter._writelinesi   sÑ   € ØˆØð 	ð 	ˆEØ•C˜‘J”JÑˆDˆDØÐÔ˜DÑ ÐÔØÐÔ˜DÑ ÐÔØ”NÔ,ˆ	ØÐ 	× 4Ò 4Ñ 6Ô 6ÐÝ,Ð-PÑQÔQÐQÝð 	)˜dÕ%?Ò?Ð?Ø�OŠO˜CŸHšH VÑ,Ô,Ñ-Ô-Ð-Ð-Ð-à× Ò  Ñ(Ô(Ð(Ð(Ð(r&   c                 ó‚   — t          |¦  «        d›d�                     d¦  «        }|                      ||df¦  «         dS )z+Write a chunk with proper chunked encoding.Úxú
Úasciió   
N)rJ   ÚencoderW   )r9   rG   Úchunk_len_pres      r'   Ú_write_chunked_payloadz#StreamWriter._write_chunked_payloadw   sH   € å˜u™:œ:Ð-Ð-Ð-Ð-×4Ò4°WÑ=Ô=ˆØ×Ò˜-¨°Ð8Ñ9Ô9Ð9Ð9Ð9r&   Úis_eofc                 óÖ  — d| _         | j        }d| _        t          r|€J ‚| j        s1|r|                      ||f¦  «         n|                      |¦  «         dS |r^t          |¦  «        d›d�                     d¦  «        }|r|                      |||df¦  «         dS |                      |||df¦  «         dS |r|                      |df¦  «         dS |                      |¦  «         dS )	zASend buffered headers with payload, coalescing into single write.TNrY   rZ   r[   ó   
0

r\   ó   0

)r8   r7   r   r+   rW   rP   rJ   r]   )r9   rG   r`   Úheaders_bufr^   s        r'   Ú_send_headers_with_payloadz'StreamWriter._send_headers_with_payload|   s5  € ð !%ˆÔØÔ'ˆØ ˆÔåð 	+ð Ð*Ð*Ð*àŒ|ð 	àð )Ø× Ò  +¨uÐ!5Ñ6Ô6Ð6Ð6à—’˜KÑ(Ô(Ð(ØˆFð ð 		%Ý" 5™zœzÐ1Ð1Ð1Ð1×8Ò8¸ÑAÔAˆMØð OØ× Ò  +¨}¸eÐEUÐ!VÑWÔWÐWÐWÐWà× Ò  +¨}¸eÀWÐ!MÑNÔNÐNÐNÐNØð 	%Ø×Ò˜k¨<Ð8Ñ9Ô9Ð9Ð9Ð9à�KŠK˜Ñ$Ô$Ð$Ð$Ð$r&   Ti   )ÚdrainÚLIMITrf   rg   c             ƒ   ó6  K  — | j         �|                       |¦  «        ƒ d{V —† t          |t          ¦  «        r-|j        t	          |¦  «        k    r|                     d¦  «        }| j        �$| j                             |¦  «        ƒ d{V —†}|sdS | j        �Dt	          |¦  «        }| j        |k    r| j        |z
  | _        n|d| j        …         }d| _        |sdS | j	        rM| j
        sF|                      |d¦  «         |r,| j        |k    r!d| _        |                      ¦   «         ƒ d{V —† dS |rb| j        r|                      |¦  «         n|                      |¦  «         |r0| j        |k    r'd| _        |                      ¦   «         ƒ d{V —† dS dS dS dS )zÊ
        Writes chunk of data to a stream.

        write_eof() indicates end of stream.
        writer can't be used after write_eof() method being called.
        write() return drain future.
        NÚcr   F)r5   Ú
isinstanceÚ
memoryviewÚnbytesrJ   Úcastr-   Úcompressr*   r7   r8   re   rK   rf   r+   r_   rP   )r9   rG   rf   rg   Ú	chunk_lens        r'   rN   zStreamWriter.writeœ   s  è è € ð ÔÐ*Ø×%Ò% eÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,å�e�ZÑ(Ô(ð 	(ØŒ|�s 5™zœzÒ)Ð)àŸ
š
 3™œ�àŒ>Ð%Øœ.×1Ò1°%Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆEØð Ø�àŒ;Ð"Ý˜E™
œ
ˆIØŒ{˜iÒ'Ð'Ø"œk¨IÑ5�”�à˜m ¤˜mÔ,�Ø�”Øð Ø�Fð Ôð 	 TÔ%:ð 	Ø×+Ò+¨E°5Ñ9Ô9Ð9Øð #˜Ô)¨EÒ1Ð1Ø#$�Ô Ø—j’j‘l”lÐ"Ð"Ð"Ð"Ð"Ð"Ð"ØˆFàð 	#ØŒ|ð #Ø×+Ò+¨EÑ2Ô2Ð2Ð2à—’˜EÑ"Ô"Ð"àð #˜Ô)¨EÒ1Ð1Ø#$�Ô Ø—j’j‘l”lÐ"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ð	#ð 	#ð#ð #Ð1Ð1r&   Ústatus_lineÚheadersr(   c              ƒ   óŠ   K  — | j         �|                       |¦  «        ƒ d{V —† t          ||¦  «        }d| _        || _        dS )zWrite headers to the stream.NF)r6   Ú_serialize_headersr8   r7   )r9   rp   rq   Úbufs       r'   Úwrite_headerszStreamWriter.write_headersÏ   s\   è è € ð Ô Ð,Ø×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0å  ¨gÑ6Ô6ˆØ %ˆÔØˆÔÐÐr&   c                 ó�   — | j         r| j        rdS d| _        | j         }d| _         t          r|€J ‚|                      |¦  «         dS )z3Force sending buffered headers if not already sent.NT)r7   r8   r   rP   ©r9   rd   s     r'   Úsend_headerszStreamWriter.send_headersÚ   s`   € àÔ ð 	 DÔ$9ð 	ØˆFà $ˆÔØÔ'ˆØ ˆÔåð 	+àÐ*Ð*Ð*à�Š�KÑ Ô Ð Ð Ð r&   c                 ó2  — | j         rdS | j        r\| j        sUd| _        | j        }d| _        t          r|€J ‚| j        r|                      |df¦  «         n9|                      |¦  «         n#| j        r| j        r|                      d¦  «         d| _         dS )z&Indicate that the message is complete.NTrc   )r,   r7   r8   r   r+   rW   rP   rw   s     r'   Úset_eofzStreamWriter.set_eofé   sÂ   € àŒ9ð 	ØˆFð Ôð 	& TÔ%:ð 	&Ø$(ˆDÔ!ØÔ+ˆKØ $ˆDÔåð /à"Ð.Ð.Ð.ð Œ|ð )Ø× Ò  +¨|Ð!<Ñ=Ô=Ð=Ð=à—’˜KÑ(Ô(Ð(Ð(ØŒ\ð 	&˜dÔ3ð 	&à�KŠK˜Ñ%Ô%Ð%àˆŒ	ˆ	ˆ	r&   r&   c              ƒ   ó  K  — | j         rd S |r"| j        �|                      |¦  «        ƒ d {V —† | j        �rÏg }d}|rF| j                             |¦  «        ƒ d {V —†x}r$t	          |¦  «        }|                     |¦  «         | j                             ¦   «         }|t	          |¦  «        z  }|                     |¦  «         |sJ ‚| j        r•| j        sŽd| _        | j        }d | _        | j	        r6|d›d� 
                    d¦  «        }|                      ||g|¢d‘R ¦  «         n|                      |g|¢R ¦  «         |                      ¦   «         ƒ d {V —† d| _         d S | j	        r5|d›d� 
                    d¦  «        }|                      |g|¢d‘R ¦  «         nDt	          |¦  «        dk    r|                      |¦  «         n|                      |d         ¦  «         |                      ¦   «         ƒ d {V —† d| _         d S | j        r@| j        s9|                      |d¦  «         |                      ¦   «         ƒ d {V —† d| _         d S | j	        rw|r=|                      t	          |¦  «        d›d� 
                    d¦  «        |df¦  «         n|                      d¦  «         |                      ¦   «         ƒ d {V —† d| _         d S |r/|                      |¦  «         |                      ¦   «         ƒ d {V —† d| _         d S )	Nr   TrY   rZ   r[   rb   r   rc   )r,   r5   r-   rn   rJ   ÚappendÚflushr7   r8   r+   r]   rW   rf   rP   re   )r9   rG   rQ   Ú
chunks_lenÚcompressed_chunkÚflush_chunkrd   r^   s           r'   Ú	write_eofzStreamWriter.write_eof  sÈ  è è € ØŒ9ð 	ØˆFàð 	-�TÔ(Ð4Ø×%Ò% eÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð Œ>ñ )	Ø"$ˆFØˆJØð 0°D´N×4KÒ4KÈEÑ4RÔ4RÐ.RÐ.RÐ.RÐ.RÐ.RÐ.RÐRÐ*ð 0Ý Ð!1Ñ2Ô2�
Ø—’Ð.Ñ/Ô/Ð/àœ.×.Ò.Ñ0Ô0ˆKØ�#˜kÑ*Ô*Ñ*ˆJØ�MŠM˜+Ñ&Ô&Ð&ØÐÐ�:ð Ô ð ¨Ô)>ð Ø(,�Ô%Ø"Ô/�Ø$(�Ô!à”<ð =à'1Ð$9Ð$9Ð$9Ð$9×$@Ò$@ÀÑ$IÔ$I�MØ×$Ò$Ø$ mÐO°fÐOÐ>NÐOÐOñô ð ð ð
 ×$Ò$ kÐ%;°FÐ%;Ð%;Ñ<Ô<Ð<Ø—j’j‘l”lÐ"Ð"Ð"Ð"Ð"Ð"Ð"Ø �”	Ø�ð Œ|ð 'Ø#-Ð 5Ð 5Ð 5Ð 5× <Ò <¸WÑ EÔ E�Ø× Ò  -Ð!K°&Ð!KÐ:JÐ!KÐ!KÑLÔLÐLÐLÝ�V‘”˜q’�Ø× Ò  Ñ(Ô(Ð(Ð(à—’˜F 1œIÑ&Ô&Ð&Ø—*’*‘,”,ÐÐÐÐÐÐÐØˆDŒIØˆFð Ôð 	 TÔ%:ð 	à×+Ò+¨E°4Ñ8Ô8Ð8Ø—*’*‘,”,ÐÐÐÐÐÐÐØˆDŒIØˆFð Œ<ð 
	Øð *à× Ò Ý˜E™
œ
Ð*Ð*Ð*Ð*×1Ò1°'Ñ:Ô:¸EÐCSÐTñô ð ð ð —’˜LÑ)Ô)Ð)Ø—*’*‘,”,ÐÐÐÐÐÐÐØˆDŒIØˆFàð 	Ø�KŠK˜ÑÔÐØ—*’*‘,”,ÐÐÐÐÐÐÐàˆŒ	ˆ	ˆ	r&   c              ƒ   óp   K  — | j         }|j        �#|j        r|                     ¦   «         ƒ d{V —† dS dS dS )zFlush the write buffer.

        The intended use is to write

          await w.write(data)
          await w.drain()
        N)r4   r=   Ú_pausedÚ_drain_helper)r9   r.   s     r'   rf   zStreamWriter.drainR  sX   è è € ð ”>ˆØÔÐ)¨hÔ.>Ð)Ø×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð *Ð)Ð)Ð)r&   )NN)r2   N)rB   N)r&   )%r    r!   r"   r*   r#   r$   r+   Úboolr,   r-   r   r   ÚasyncioÚAbstractEventLoopÚ_T_OnChunkSentÚ_T_OnHeadersSentr:   ÚpropertyÚ	Transportr=   r.   rA   ÚstrrF   r   rP   r   rW   r_   re   rN   ru   rx   rz   Úbytesr�   rf   r%   r&   r'   r   r   ;   sÓ  € € € € € € à€FˆC�$‰JÐÐÑØ€GˆTÐÐÑØ€Dˆ$ÐÐÑØ'+€Iˆ~ Ñ$Ð+Ð+Ñ+ð )-Ø,0ð,ð ,àð,ð Ô'ð,ð &ð	,ð
 *ð,ð 
ð,ð ,ð ,ð ,ð ð(˜7Ô,¨tÑ3ð (ð (ð (ñ „Xð(ð ð˜,ð ð ð ñ „Xððð ð ð ð AEðNð NØðNØ36¸±:ðNà	ðNð Nð Nð Nð
˜Fð  tð ð ð ð ð) (¨6Ô"2ð )°tð )ð )ð )ð )ð:¨Fð :°tð :ð :ð :ð :ð
%°ð %Àð %Èð %ð %ð %ð %ðB /3Àð1#ð 1#ð 1#Øð1#Ø'+ð1#Ø;>ð1#à	ð1#ð 1#ð 1#ð 1#ðf	 Øð	 Ø);ð	 à	ð	 ð 	 ð 	 ð 	 ð!ð !ð !ð !ðð ð ð ð6Lð L Uð L°Tð Lð Lð Lð Lð\
+ð 
+ð 
+ð 
+ð 
+ð 
+r&   r   z[\x00-\x08\x0a-\x1f\x7f]Ústringr2   c                 óX   — t                                | ¦  «        �t          d¦  «        ‚| S )NzSForbidden control character detected in headers. Potential header injection attack.)Ú_FORBIDDEN_HEADER_CHARS_REÚsearchÚ
ValueError)rŽ   s    r'   Ú_safe_headerr“   d  s4   € Ý!×(Ò(¨Ñ0Ô0Ð<Ýð1ñ
ô 
ð 	
ð €Mr&   rp   rq   c                 óÂ   — t          | ¦  «         d„ |                     ¦   «         D ¦   «         }| dz   d                     |¦  «        z   dz   }|                     d¦  «        S )Nc              3   ó`   K  — | ])\  }}t          |¦  «        d z   t          |¦  «        z   V — Œ*dS )z: N)r“   )Ú.0ÚkÚvs      r'   ú	<genexpr>z(_py_serialize_headers.<locals>.<genexpr>o  s<   è è € ÐXÐXÁÀÀ1•< ‘?”? TÑ)­L¸©O¬OÑ;ÐXÐXÐXÐXÐXÐXr&   rZ   z

zutf-8)r“   ÚitemsrU   r]   )rp   rq   Úheaders_genÚlines       r'   Ú_py_serialize_headersr�   m  s]   € Ý�ÑÔÐØXÐXÈÏÊÉÌÐXÑXÔX€KØ˜Ñ &§+¢+¨kÑ":Ô":Ñ:¸ZÑG€DØ�;Š;�wÑÔÐr&   )4Ú__doc__r†   ÚreÚsysÚtypingr   r   r   r   r   r   r	   r
   Ú	multidictr   Úabcr   Úbase_protocolr   Úclient_exceptionsr   Úcompression_utilsr   Úhelpersr   Ú__all__Úversion_infoÚcollections.abcr   r   r�   Ú	bytearrayrT   ÚIS_PY313_BEFORE_313_2ÚIS_PY_BEFORE_312_9rS   r   r   r   rˆ   r‰   r   Úcompiler�   rŒ   r“   r�   rs   Úaiohttp._http_writerÚ_http_writerÚ_c_serialize_headersÚImportErrorr%   r&   r'   ú<module>r³      s  ðØ (Ð (à €€€Ø 	€	€	€	Ø 
€
€
€
ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð "Ð !Ð !Ð !Ð !Ð !à %Ð %Ð %Ð %Ð %Ð %Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø -Ð -Ð -Ð -Ð -Ð -Ø "Ð "Ð "Ð "Ð "Ð "à
K€àÔ�wÒÐØ&Ð&Ð&Ð&Ð&Ð&Ð&àÐÐÐÐÐà�5˜)Ð%6Ð8KÐKÔL€Fð "Ð Ø" cÔ&6ÐCÐCÒCÐC¸ÒCÐCÐCÐCÐ ØÔ%¨
Ò2Ð Ø'Ð=Ð+=€ðð ð ð ð �*ñ ô ð ð
 �˜A˜qÑ!Ô!€Ø�˜A˜qÑ!Ô!€ð ˜( F 8¨Y°t¬_Ð#<Ô=Ô>€Ø˜HÐ&8Ð%9¸9ÀT¼?Ð%JÔKÔLÐ ða+ð a+ð a+ð a+ð a+Ð'ñ a+ô a+ð a+ðL	 (˜RœZÐ(CÑDÔDÐ ð˜ð  ð ð ð ð ð  sð  Ð5Gð  ÈEð  ð  ð  ð  ð +Ð ð	Ø/Ð/Ð/Ð/Ð/Ð/à'Ô:ÐØð 2Ø1ÐÐÐð2ð 2øàð 	ð 	ð 	Ø€D€Dð	øøøs   ÄD/ Ä/D8Ä7D8