Ë
    W¸‘i"ž  ã                   óö  — 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
mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZm Z  dd	l!m"Z" dd
l#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z? ej€                  dk\  rd dlmAZA nd dlmBZB  eBdd¬«      ZAdZCerddlDmEZE  G d„ deF«      ZG G d„ deF«      ZHdeeI   deeeI   eeIeIf   f   fd„ZJ	 d/d e
eIeIf   d!eIdeeI   fd"„ZK G d#„ d$«      ZL G d%„ d«      ZM e=eMe9jœ                  ¬&«       G d'„ d(e:«      «       ZO G d)„ d*«      ZPee:eIeIf   ZQ G d+„ d,e:«      ZR G d-„ d.«      ZSy)0é    N)Údeque)ÚMappingÚSequence)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚDequeÚDictÚIteratorÚListÚOptionalÚTupleÚTypeÚUnionÚcast)Ú	parse_qslÚunquoteÚ	urlencode)ÚCIMultiDictÚCIMultiDictProxyé   )ÚAbstractStreamWriter)ÚDEFAULT_MAX_DECOMPRESS_SIZEÚZLibCompressorÚZLibDecompressor)ÚCONTENT_DISPOSITIONÚCONTENT_ENCODINGÚCONTENT_LENGTHÚCONTENT_TRANSFER_ENCODINGÚCONTENT_TYPE)ÚCHARÚTOKENÚparse_mimetypeÚreify)ÚHeadersParser)Úinternal_logger)ÚJsonPayloadÚLookupErrorÚOrderÚPayloadÚStringPayloadÚget_payloadÚpayload_type)ÚStreamReader)é   é   )ÚSelf)ÚTypeVarr1   ÚBodyPartReader)Úbound)ÚMultipartReaderÚMultipartWriterr3   ÚBadContentDispositionHeaderÚBadContentDispositionParamÚparse_content_dispositionÚcontent_disposition_filename)ÚClientResponsec                   ó   — e Zd Zy)r7   N©Ú__name__Ú
__module__Ú__qualname__© ó    úH/var/www/telegram/venv/lib/python3.12/site-packages/aiohttp/multipart.pyr7   r7   M   ó   „ ØrB   r7   c                   ó   — e Zd Zy)r8   Nr=   rA   rB   rC   r8   r8   Q   rD   rB   r8   ÚheaderÚreturnc                 ó”  ‡— dt         dt        fd„Šdt         dt        fd„}dt         dt        fˆfd„}dt         dt        fd„}dt         dt        fd„}dj                  t        t        j
                  t        «      «      d	œd
t         dt         dt         fd„}| sd i fS | j                  d«      ^}} ‰|«      s"t        j                  t        | «      «       d i fS i }|�r*|j                  d«      }	|	st        j                  t        | «      «       Œ5d|	vr"t        j                  t        | «      «       d i fS |	j                  dd«      \  }
}|
j                  «       j                  «       }
|j                  «       }|
|v r"t        j                  t        | «      «       d i fS  ‰|
«      st        j                  t        |	«      «       Œë ||
«      r> ||«      r ||dd «      }�n ‰|«      �st        j                  t        |	«      «       �Œ1 ||
«      rT ||«      r|j                  dd«      \  }}}|xs d}n t        j                  t        |	«      «       �Œ~	 t!        ||d«      }n—d} ||«      rd} ||dd j                  d«      «      }nL ‰|«      rd}nA|r?|› d|d   › �} ||«      r-|j                  d«        ||dd j                  d«      «      }d}|r"t        j                  t        | «      «       d i fS |||
<   |r�Œ*|j                  «       |fS # t"        $ r" t        j                  t        |	«      «       Y �Œiw xY w)NÚstringrG   c                 ó@   — t        | «      xr t        t        | «      k\  S ©N)Úboolr"   Úset©rI   s    rC   Úis_tokenz+parse_content_disposition.<locals>.is_tokenX   s   € Ü�F‹|Ò4¤¬¨V«Ñ 4Ð4rB   c                 ó.   — | d   | d   cxk(  xr dk(  S c S )Nr   éÿÿÿÿú"rA   rN   s    rC   Ú	is_quotedz,parse_content_disposition.<locals>.is_quoted[   s    € Ø�a‰y˜F 2™JÖ-¨#Ñ-Ð-Ñ-Ð-rB   c                 ó@   •—  ‰| «      xr | j                  d«      dk(  S )Nú'é   )Úcount)rI   rO   s    €rC   Ú
is_rfc5987z-parse_content_disposition.<locals>.is_rfc5987^   s!   ø€ Ù˜ÓÒ: F§L¡L°Ó$5¸Ñ$:Ð:rB   c                 ó$   — | j                  d«      S )NÚ*)ÚendswithrN   s    rC   Úis_extended_paramz4parse_content_disposition.<locals>.is_extended_parama   s   € Ø�‰˜sÓ#Ð#rB   c                 ó†   — | j                  d«      dz   }|sy| j                  d«      r| |d n| |d  }|j                  «       S )NrZ   r   FrQ   )Úfindr[   Úisdigit)rI   ÚposÚ	substrings      rC   Úis_continuous_paramz6parse_content_disposition.<locals>.is_continuous_paramd   sH   € Ø�k‰k˜#Ó Ñ"ˆÙØØ&,§o¡o°cÔ&:�F˜3˜r‘NÀÀsÀtÀˆ	Ø× Ñ Ó"Ð"rB   Ú )ÚcharsÚtextrd   c                ó8   — t        j                  d|› d�d| «      S )Nz\\([z])z\1)ÚreÚsub)re   rd   s     rC   Úunescapez+parse_content_disposition.<locals>.unescapek   s   € Ü�v‰v˜˜u˜g RÐ(¨%°Ó6Ð6rB   ú;r   ú=r   rQ   rU   rV   úutf-8ÚstrictTFz\/)ÚstrrL   ÚjoinÚmaprg   Úescaper!   ÚsplitÚwarningsÚwarnr7   ÚpopÚlowerÚstripÚlstripr8   r   ÚUnicodeDecodeError)rF   rS   rX   r\   rb   ri   ÚdisptypeÚpartsÚparamsÚitemÚkeyÚvalueÚencodingÚ_ÚfailedÚ_valuerO   s                   @rC   r9   r9   U   s  ø€ ð5œð 5¤ó 5ð.œ#ð .¤$ó .ð;œ3ð ;¤4õ ;ð$¤#ð $¬$ó $ð#¤Cð #¬Dó #ð -/¯G©G´C¼¿	¹	Ä4Ó4HÓ,Iò 7”sð 7¤cð 7Ìcó 7ñ Ø�Rˆxˆà—|‘| CÓ(Ð€HˆuÙ�HÔÜ�‰Ô1°&Ó9Ô:Ø�Rˆxˆà€FÚ
Ø�y‰y˜‹|ˆáÜ�M‰MÔ5°fÓ=Ô>Øà�d‰?Ü�M‰MÔ5°fÓ=Ô>Ø˜�8ˆOà—Z‘Z  QÓ'‰
ˆˆUØ�i‰i‹k×ÑÓ!ˆØ—‘“ˆà�&‰=Ü�M‰MÔ5°fÓ=Ô>Ø˜�8ˆOá˜Œ}Ü�M‰MÔ4°TÓ:Ô;Øá  Ô%Ù˜ÔÙ   q¨ Ó-’Ù˜e•_Ü—‘Ô8¸Ó>Ô?Ùá˜sÔ#Ù˜%Ô Ø%*§[¡[°°aÓ%8Ñ"�˜!˜UØ#Ò. w‘ä—‘Ô8¸Ó>Ô?ÙðÜ  x°Ó:‘ð ˆFÙ˜ÔØ�Ù   q¨ ×!3Ñ!3°EÓ!:Ó;‘Ù˜%”Ø‘Ùð "˜7 ! E¨!¡H :Ð.�Ù˜VÔ$Ø—I‘I˜a”LÙ$ V¨A¨b \×%8Ñ%8¸Ó%?Ó@�EØ"�FáÜ—‘Ô9¸&ÓAÔBØ˜R�x�àˆˆs‰óA ðD �>‰>Ó˜VÐ#Ð#øô5 &ò Ü—‘Ô8¸Ó>Ô?Úðús   ÉL Ì'MÍMr|   Únamec                 óÊ  ‡
— d|z  Š
| sy ‰
| v r| ‰
   S || v r| |   S g }t        ˆ
fd„| j                  «       D «       «      }t        |«      D ]T  \  }\  }}|j                  dd«      \  }}|j	                  d«      r|d d }|t        |«      k(  r|j                  |«       ŒT n |sy dj                  |«      }d|v r)|j                  dd«      \  }	}}|	xs d	}	t        ||	d
«      S |S )Nz%s*c              3   óP   •K  — | ]  \  }}|j                  ‰«      sŒ||f–— Œ y ­wrK   )Ú
startswith)Ú.0r~   r   Úname_sufs      €rC   ú	<genexpr>z/content_disposition_filename.<locals>.<genexpr>È   s)   øè ø€ ò 
Ù'˜S %¸S¿^¹^ÈHÕ=UˆS�%ŒLñ
ùs   ƒ&�	&rZ   r   rQ   rc   rU   rV   rl   rm   )	ÚsortedÚitemsÚ	enumeraterr   r[   rn   Úappendro   r   )r|   r„   r{   ÚfnparamsÚnumr~   r   r�   Útailr€   r‰   s             @rC   r:   r:   ¼   s  ø€ ð �t‰|€HÙØØ	�VÑ	Ø�hÑÐØ	�‰Ø�d‰|ÐàˆÜó 
Ø+1¯<©<«>ô
ó 
ˆô "+¨8Ó!4ò 	ÑˆC‘�#�uØ—i‘i  QÓ'‰GˆAˆtØ�}‰}˜SÔ!Ø˜C˜R�y�Ø”s˜3“xÒØ—‘˜UÕ#áð	ñ ØØ—‘˜“ˆØ�%‰<Ø!&§¡¨S°!Ó!4ÑˆH�a˜ØÒ* 7ˆHÜ˜5 (¨HÓ5Ð5ØˆrB   c                   ój   — e Zd ZdZ	 	 	 	 	 	 dd„Zdd„Zded   fd„Zdefd„Z	de
ed      fd	„Zdd
„Zy)ÚMultipartResponseWrapperzzWrapper around the MultipartReader.

    It takes care about
    underlying connection and close it when it needs in.
    rG   Nc                 ó    — || _         || _        y rK   )ÚrespÚstream)Úselfr•   r–   s      rC   Ú__init__z!MultipartResponseWrapper.__init__ä   s   € ð
 ˆŒ	Øˆ�rB   c                 ó   — | S rK   rA   ©r—   s    rC   Ú	__aiter__z"MultipartResponseWrapper.__aiter__ì   ó   € ØˆrB   )r5   r3   c              ƒ   óR   K  — | j                  «       ƒ d {  –—† }|€t        ‚|S 7 Œ­wrK   ©ÚnextÚStopAsyncIteration©r—   Úparts     rC   Ú	__anext__z"MultipartResponseWrapper.__anext__ï   ó+   è ø€ ð —Y‘Y“[× ˆØˆ<Ü$Ð$Øˆð !úó   ‚'–%—'c                 óJ   — | j                   j                  j                  «       S )z2Returns True when all response data had been read.)r•   ÚcontentÚat_eofrš   s    rC   r¨   zMultipartResponseWrapper.at_eof÷   s   € à�y‰y× Ñ ×'Ñ'Ó)Ð)rB   c              ƒ   ó¾   K  — | j                   j                  «       ƒ d{  –—† }| j                   j                  «       r| j                  «       ƒ d{  –—†  |S 7 Œ87 Œ­w)z#Emits next multipart reader object.N)r–   rŸ   r¨   Úrelease©r—   r}   s     rC   rŸ   zMultipartResponseWrapper.nextû   sJ   è ø€ ð —[‘[×%Ñ%Ó'×'ˆØ�;‰;×ÑÔØ—,‘,“.× Ð Øˆð (øà ús!   ‚A A¡1AÁAÁAÁAc              ƒ   óT   K  — | j                   j                  «       ƒ d{  –—†  y7 Œ­w)z_Release the connection gracefully.

        All remaining content is read to the void.
        N)r•   rª   rš   s    rC   rª   z MultipartResponseWrapper.release  s   è ø€ ð
 �i‰i×ÑÓ!×!Ò!ús   ‚( &¡()r•   r;   r–   r5   rG   N)rG   r“   ©rG   N)r>   r?   r@   Ú__doc__r˜   r›   r   r£   rL   r¨   r   rŸ   rª   rA   rB   rC   r“   r“   Ý   si   „ ñðàðð "ðð 
ó	óðà	Ð2Ñ	3óð*˜ó *ðà	�%Ð;Ñ<Ñ	=óô"rB   r“   c                   óÌ  — e Zd ZdZdZddedœdeddd	ed
ede	e   de
ddfd„Zdedefd„Zdefd„Zde	e   fd„Zddœdedefd„Zefde
defd„Zde
defd„Zde
defd„Zdefd„Zd+d„Zddœde	e   defd„Zddœde	e   de	eeef      fd „Zddœde	e   deeeef      fd!„Zdefd"„Zd#edefd$„Zd#edefd%„Z d#edefd&„Z!d'edefd(„Z"e#de	e   fd)„«       Z$e#de	e   fd*„«       Z%y),r3   z&Multipart reader for single body part.i    ÚmixedN)ÚsubtypeÚdefault_charsetÚmax_decompress_sizeÚboundaryÚheadersúCIMultiDictProxy[str]r§   r±   r²   r³   rG   c                ól  — || _         || _        t        |«      dz   | _        || _        || _        d| _        |dk(  | _        | j                  rd n| j                   j                  t        d «      }|�t        |«      nd | _        d| _        t        «       | _        d | _        d| _        i | _        || _        y )NrV   Fú	form-datar   )rµ   Ú	_boundaryÚlenÚ_boundary_lenÚ_contentÚ_default_charsetÚ_at_eofÚ_is_form_dataÚgetr   ÚintÚ_lengthÚ_read_bytesr   Ú_unreadÚ_prev_chunkÚ_content_eofÚ_cacheÚ_max_decompress_size)r—   r´   rµ   r§   r±   r²   r³   Úlengths           rC   r˜   zBodyPartReader.__init__  s©   € ð ˆŒØ!ˆŒÜ  ›]¨QÑ.ˆÔØˆŒØ /ˆÔØˆŒØ$¨Ñ3ˆÔà×+Ò+‘°·±×1AÑ1AÄ.ÐRVÓ1WˆØ&,Ð&8”s˜6”{¸dˆŒØˆÔÜ%*£WˆŒØ,0ˆÔØˆÔØ&(ˆŒØ$7ˆÕ!rB   r—   c                 ó   — | S rK   rA   rš   s    rC   r›   zBodyPartReader.__aiter__,  rœ   rB   c              ƒ   óR   K  — | j                  «       ƒ d {  –—† }|€t        ‚|S 7 Œ­wrK   rž   r¡   s     rC   r£   zBodyPartReader.__anext__/  s)   è ø€ Ø—Y‘Y“[× ˆØˆ<Ü$Ð$Øˆð !úr¥   c              ƒ   óH   K  — | j                  «       ƒ d {  –—† }|sy |S 7 Œ	­wrK   )Úreadr«   s     rC   rŸ   zBodyPartReader.next5  s$   è ø€ Ø—Y‘Y“[× ˆÙØØˆð !ús   ‚"– —
"F©ÚdecoderÏ   c             ƒ   ó  K  — | j                   ryt        «       }| j                   s?|j                  | j                  | j                  «      ƒ d{  –—† «       | j                   sŒ?|r| j                  |«      ƒ d{  –—† S |S 7 Œ27 Œ­w)z»Reads body part data.

        decode: Decodes data following by encoding
                method from Content-Encoding header. If it missed
                data remains untouched
        rB   N)r¾   Ú	bytearrayÚextendÚ
read_chunkÚ
chunk_sizerÏ   )r—   rÏ   Údatas      rC   rÍ   zBodyPartReader.read;  sh   è ø€ ð �<Š<ØÜ‹{ˆØ—,’,Ø�K‰K˜dŸo™o¨d¯o©oÓ>×>Ô?ð —,“,áØŸ™ TÓ*×*Ð*Øˆð ?øà*ús*   ‚ABÁBÁBÁ%BÁ;BÁ<BÂBÚsizec              ƒ   óD  K  — | j                   ry| j                  r| j                  |«      ƒ d{  –—† }n| j                  |«      ƒ d{  –—† }| j                  j                  t        «      }|�r)|j                  «       dk(  �rdj                  |j                  «       «      }t        |«      dz  }|dk7  rã| j                  «       sÓd|z
  }d}| j                  r,| j                  d| }| j                  t        |«      d | _        t        |«      |k7  r2|| j                  j                  dt        |«      z
  «      ƒ d{  –—† z  }|sd| _         |dj                  |j                  «       «      z  }||z  }t        |«      dz  }|dk7  r| j                  «       sŒÓ| xj                  t        |«      z  c_        | j                  | j                  k(  rd| _         | j                   r0| j                  j!                  «       ƒ d{  –—† dk7  rt#        d«      ‚|S 7 �Œæ7 �ŒÏ7 ŒÜ7 Œ­w)	zWReads body part content chunk of the specified size.

        size: chunk size
        rB   NÚbase64é   r   Tó   
z3Reader did not read all the data or it is malformed)r¾   rÂ   Ú_read_chunk_from_lengthÚ_read_chunk_from_streamrµ   rÀ   r   rv   ro   rr   rº   r¨   rÅ   r¼   rÍ   rÃ   ÚreadlineÚ
ValueError)r—   rÖ   Úchunkr€   Ústripped_chunkÚ	remainderÚover_chunk_sizeÚ
over_chunks           rC   rÓ   zBodyPartReader.read_chunkK  sÔ  è ø€ ð
 �<Š<ØØ�<Š<Ø×6Ñ6°tÓ<×<‰Eà×6Ñ6°tÓ<×<ˆEð —<‘<×#Ñ#Ô$=Ó>ˆÚ˜Ÿ™Ó(¨HÓ4Ø ŸX™X e§k¡k£mÓ4ˆNÜ˜NÓ+¨aÑ/ˆIà˜q’.¨¯©¬Ø"# i¡-�Ø �
à×#Ò#Ø!%×!1Ñ!1Ð2B°?Ð!C�JØ'+×'7Ñ'7¼¸J»Ð8IÐ'J�DÔ$ä�z“? oÒ5Ø¨¯©×(:Ñ(:¸1¼sÀ:»Ñ;NÓ(O×"OÑO�Já!Ø#'�D”Là #§(¡(¨:×+;Ñ+;Ó+=Ó">Ñ>�Ø˜Ñ#�Ü Ó/°!Ñ3�	ð! ˜q’.¨¯©­ð$ 	×ÒœC ›JÑ&ÕØ×Ñ˜tŸ|™|Ò+ØˆDŒLØ�<Š< $§-¡-×"8Ñ"8Ó":×:¸gÒEÜÐRÓSÐSØˆðE =ùà<ùð$ #Pøð ;úsN   ‚.H °H±H Á
HÁC4H Ä?HÅ AH ÆA'H ÈHÈH ÈH ÈH ÈH c              ƒ   ó  K  — | j                   €J d«       ‚t        || j                   | j                  z
  «      }| j                  j	                  |«      ƒ d {  –—† }| j                  j                  «       rd| _        |S 7 Œ'­w)Nz(Content-Length required for chunked readT)rÂ   ÚminrÃ   r¼   rÍ   r¨   r¾   )r—   rÖ   rÔ   rß   s       rC   rÛ   z&BodyPartReader._read_chunk_from_lengthw  sq   è ø€ ð �|‰|Ð'ÐSÐ)SÓSÐ'Ü˜˜tŸ|™|¨d×.>Ñ.>Ñ>Ó?ˆ
Ø—m‘m×(Ñ(¨Ó4×4ˆØ�=‰=×ÑÔ!ØˆDŒLØˆð 5ús   ‚ABÁA?Á(Bc           
   ƒ   óì  K  — || j                   k\  sJ d«       ‚| j                  d u }|r+d| j                  j                  |«      ƒ d {  –—† z   | _        d}t	        |«      | j                   k  rœ|| j                  j                  |«      ƒ d {  –—† z  }| xj
                  t        | j                  j                  «       «      z  c_        | j
                  dkD  rt        d«      ‚| j
                  rnt	        |«      | j                   k  rŒœt	        |«      |kD  r#| j                  j                  ||d  «       |d | }| j                  €J ‚| j                  |z   }d| j                  z   }|r|j                  |«      }n;|j                  |t        dt	        | j                  «      t	        |«      z
  «      «      }|dk\  r‹t        j                  «       5  t        j                  dt         ¬«       | j                  j                  ||d  «       d d d «       | j                  d | | _        |t	        | j                  «      | }|sd	| _        | j                  |rdndd  }|| _        |S 7 �Œ7 �ŒØ# 1 sw Y   Œ`xY w­w)
Nz<Chunk size must be greater or equal than boundary length + 2rÚ   rB   rV   zReading after EOFr   Úignore)ÚcategoryT)r»   rÅ   r¼   rÍ   rº   rÆ   rÁ   r¨   rÞ   Úunread_datar¹   r^   Úmaxrs   Úcatch_warningsÚfilterwarningsÚDeprecationWarningr¾   )r—   rÖ   Úfirst_chunkrß   Úwindowrh   ÚidxÚresults           rC   rÜ   z&BodyPartReader._read_chunk_from_stream�  sC  è ø€ ð �D×&Ñ&Ò&ð	JàIó	JØ&à×&Ñ&¨$Ð.ˆÙà&¨t¯}©}×/AÑ/AÀ$Ó/G×)GÑGˆDÔàˆô �%‹j˜4×-Ñ-Ò-Ø˜4Ÿ=™=×-Ñ-¨dÓ3×3Ñ3ˆEØ×Ò¤ T§]¡]×%9Ñ%9Ó%;Ó!<Ñ<ÕØ× Ñ  1Ò$Ü Ð!4Ó5Ð5Ø× Ò Øô �%‹j˜4×-Ñ-Ó-ô ˆu‹:˜ÒØ�M‰M×%Ñ% e¨D¨E lÔ3Ø˜%˜4�LˆEà×ÑÐ+Ð+Ð+Ø×!Ñ! EÑ)ˆØ˜Ÿ™Ñ&ˆÙØ—+‘+˜cÓ"‰Cà—+‘+˜c¤3 q¬#¨d×.>Ñ.>Ó*?Ä#ÀcÃ(Ñ*JÓ#KÓLˆCØ�!Š8ä×(Ñ(Ó*ñ 8Ü×'Ñ'¨Ô;MÕNØ—‘×)Ñ)¨&°°¨,Ô7÷8ð  $×/Ñ/°°Ð5ˆDÔØœ3˜t×/Ñ/Ó0°3Ð7ˆEÙØ#�”Ø×!Ñ!¡{¡!¸Ð";Ð<ˆØ ˆÔØˆðE *Hùð 4ù÷&8ð 8üsF   ‚AI4ÁI"Á	AI4ÂI%ÂA;I4Ä
CI4Ç:I(È	AI4É%I4É(I1É-I4c              ƒ   óh  K  — | j                   ry| j                  r| j                  j                  «       }n"| j                  j	                  «       ƒ d{  –—† }|j                  | j                  «      r[|j                  d«      }| j                  }| j                  dz   }||k(  s||k(  r#d| _         | j                  j                  |«       y|S | j                  j	                  «       ƒ d{  –—† }|j                  | j                  «      r|dd }| j                  j                  |«       |S 7 ŒÙ7 ŒC­w)z Reads body part by line by line.rB   NrÚ   ó   --Téþÿÿÿ)	r¾   rÄ   Úpopleftr¼   rÝ   r‡   r¹   ÚrstriprŽ   )r—   ÚlineÚsliner´   Úlast_boundaryÚ	next_lines         rC   rÝ   zBodyPartReader.readline®  sý   è ø€ à�<Š<Øà�<Š<Ø—<‘<×'Ñ'Ó)‰DàŸ™×/Ñ/Ó1×1ˆDà�?‰?˜4Ÿ>™>Ô*ð —K‘K Ó(ˆEØ—~‘~ˆHØ ŸN™N¨UÑ2ˆMà˜Ò  E¨]Ò$:Ø#�”Ø—‘×#Ñ# DÔ)Øð ˆð #Ÿm™m×4Ñ4Ó6×6ˆIØ×#Ñ# D§N¡NÔ3Ø˜C˜R�y�Ø�L‰L×Ñ 	Ô*àˆð' 2øð 7ús&   ‚AD2ÁD.ÁBD2Ã,D0Ã-AD2Ä0D2c              ƒ   ó¤   K  — | j                   ry| j                   s1| j                  | j                  «      ƒ d{  –—†  | j                   sŒ0yy7 Œ­w)z0Like read(), but reads all the data to the void.N)r¾   rÓ   rÔ   rš   s    rC   rª   zBodyPartReader.releaseË  s9   è ø€ à�<Š<ØØ—,’,Ø—/‘/ $§/¡/Ó2×2Ð2ð —,•,Ø2ús   ‚8AºA»AÁA)r€   r€   c             ƒ   ó�   K  — | j                  d¬«      ƒ d{  –—† }|xs | j                  d¬«      }|j                  |«      S 7 Œ+­w)z;Like read(), but assumes that body part contains text data.TrÎ   Nrl   ©Údefault)rÍ   Úget_charsetrÏ   ©r—   r€   rÕ   s      rC   re   zBodyPartReader.textÒ  sG   è ø€ à—Y‘Y d�YÓ+×+ˆð Ò@˜t×/Ñ/¸Ð/Ó@ˆØ�{‰{˜8Ó$Ð$ð	 ,ús   ‚A˜A™,Ac             ƒ   óò   K  — | j                  d¬«      ƒ d{  –—† }|sy|xs | j                  d¬«      }t        t        t        t
        f   t        j                  |j                  |«      «      «      S 7 Œ\­w)z<Like read(), but assumes that body parts contains JSON data.TrÎ   Nrl   rý   )	rÍ   rÿ   r   r
   rn   r   ÚjsonÚloadsrÏ   r   s      rC   r  zBodyPartReader.jsonÚ  sc   è ø€ à—Y‘Y d�YÓ+×+ˆÙØØÒ@˜t×/Ñ/¸Ð/Ó@ˆÜ”Dœœc˜‘N¤D§J¡J¨t¯{©{¸8Ó/DÓ$EÓFÐFð	 ,ús   ‚A7˜A5™AA7c             ƒ   ó
  K  — | j                  d¬«      ƒ d{  –—† }|sg S |�|}n| j                  d¬«      }	 |j                  «       j                  |«      }t        |d|¬«      S 7 ŒM# t        $ r t        d|z  «      ‚w xY w­w)zFLike read(), but assumes that body parts contain form urlencoded data.TrÎ   Nrl   rý   z'data cannot be decoded with %s encoding)Úkeep_blank_valuesr€   )rÍ   rÿ   rö   rÏ   ry   rÞ   r   )r—   r€   rÕ   Úreal_encodingÚdecoded_datas        rC   ÚformzBodyPartReader.formâ  s›   è ø€ à—Y‘Y d�YÓ+×+ˆÙØˆIØÐØ$‰Mà ×,Ñ,°WÐ,Ó=ˆMð	XØŸ;™;›=×/Ñ/°Ó>ˆLô ØØ"Ø"ô
ð 	
ð ,ùô "ò 	XÜÐFÈÑVÓWÐWð	Xüs&   ‚B˜A&™B¹A( ÁBÁ(B Â Bc                 ó   — | j                   S )z<Returns True if the boundary was reached or False otherwise.©r¾   rš   s    rC   r¨   zBodyPartReader.at_eofö  ó   € à�|‰|ÐrB   rÕ   c              ƒ   óÆ   K  — t         | j                  v r| j                  |«      }| j                  s+t        | j                  v r| j                  |«      ƒ d{  –—† S |S 7 Œ­w)z�Decodes data.

        Decoding is done according the specified Content-Encoding
        or Content-Transfer-Encoding headers value.
        N)r   rµ   Ú_decode_content_transferr¿   r   Ú_decode_content)r—   rÕ   s     rC   rÏ   zBodyPartReader.decodeú  sW   è ø€ ô %¨¯©Ñ4Ø×0Ñ0°Ó6ˆDà×!Ò!Ô&6¸$¿,¹,Ñ&FØ×-Ñ-¨dÓ3×3Ð3Øˆð 4ús   ‚AA!ÁAÁA!c              ƒ   óü   K  — | j                   j                  t        d«      j                  «       }|dk(  r|S |dv r0t	        |d¬«      j                  || j                  ¬«      ƒ d {  –—† S t        d|› �«      ‚7 Œ­w)Nrc   Úidentity>   ÚgzipÚdeflateT)r€   Úsuppress_deflate_header)Ú
max_lengthúunknown content encoding: )rµ   rÀ   r   rv   r   Ú
decompressrÈ   ÚRuntimeError©r—   rÕ   r€   s      rC   r  zBodyPartReader._decode_content  s‡   è ø€ Ø—<‘<×#Ñ#Ô$4°bÓ9×?Ñ?ÓAˆØ�zÒ!ØˆKØÐ*Ñ*Ü)Ø!Ø(,ô÷ ‰j˜¨$×*CÑ*CˆjÓD÷Eð Eô
 Ð7¸°zÐBÓCÐCðEús   ‚A%A<Á'A:Á(A<c                 óî   — | j                   j                  t        d«      j                  «       }|dk(  rt	        j
                  |«      S |dk(  rt        j                  |«      S |dv r|S t        d|› �«      ‚)Nrc   rØ   úquoted-printable)ÚbinaryÚ8bitÚ7bitú#unknown content transfer encoding: )	rµ   rÀ   r   rv   rØ   Ú	b64decodeÚbinasciiÚa2b_qpr  r  s      rC   r  z'BodyPartReader._decode_content_transfer  st   € Ø—<‘<×#Ñ#Ô$=¸rÓB×HÑHÓJˆà�xÒÜ×#Ñ# DÓ)Ð)ØÐ+Ò+Ü—?‘? 4Ó(Ð(ØÐ3Ñ3ØˆKäÐ!DÀXÀJÐOÓPÐPrB   rþ   c                 ó¬   — | j                   j                  t        d«      }t        |«      }|j                  j                  d| j
                  xs |«      S )z>Returns charset parameter from Content-Type header or default.rc   Úcharset)rµ   rÀ   r    r#   Ú
parametersr½   )r—   rþ   ÚctypeÚmimetypes       rC   rÿ   zBodyPartReader.get_charset  sF   € à—‘× Ñ ¤¨rÓ2ˆÜ! %Ó(ˆØ×"Ñ"×&Ñ& y°$×2GÑ2GÒ2RÈ7ÓSÐSrB   c                 óp   — t        | j                  j                  t        «      «      \  }}t	        |d«      S )z|Returns name specified in Content-Disposition header.

        If the header is missing or malformed, returns None.
        r„   ©r9   rµ   rÀ   r   r:   ©r—   r�   r|   s      rC   r„   zBodyPartReader.name%  s/   € ô .¨d¯l©l×.>Ñ.>Ô?RÓ.SÓT‰	ˆˆ6Ü+¨F°FÓ;Ð;rB   c                 óp   — t        | j                  j                  t        «      «      \  }}t	        |d«      S )zReturns filename specified in Content-Disposition header.

        Returns None if the header is missing or malformed.
        Úfilenamer(  r)  s      rC   r+  zBodyPartReader.filename.  s/   € ô .¨d¯l©l×.>Ñ.>Ô?RÓ.SÓT‰	ˆˆ6Ü+¨F°JÓ?Ð?rB   r­   )&r>   r?   r@   r®   rÔ   r   Úbytesr.   rn   r   rÁ   r˜   r1   r›   r£   rŸ   rL   rÍ   rÓ   rÛ   rÜ   rÝ   rª   re   r
   r   r  r   r   r  r¨   rÏ   r  r  rÿ   r$   r„   r+  rA   rB   rC   r3   r3     s  „ Ù0à€Jð Ø)-Ø#>ò8àð8ð )ð8ð ð	8ð ð8ð " #™ð8ð !ð8ð 
ó8ð6˜ð  ó ð ó ð˜H U™Oó ð ,1ò  Dð °Uó ð  ,6ñ * Sð *¸%ó *ðX°#ð ¸%ó ð+°#ð +¸%ó +ðZ ó ó:3ð 7;ò % h¨s¡mð %¸só %ð 7;ò G h¨s¡mð G¸xÈÈSÐRUÈXÉÑ?Wó Gð 7;ò 
 h¨s¡mð 
¸tÀEÈ#ÈsÈ(ÁOÑ?Tó 
ð(˜ó ð ð ¨5ó ð
D¨%ð 
D°Eó 
Dð
Q¨Uð 
Q°uó 
QðT 3ð T¨3ó Tð ð<�h˜s‘mò <ó ð<ð ð@˜( 3™-ò @ó ñ@rB   )Úorderc                   óx   ‡ — e Zd ZU eed<   dedededdfˆ fd„Zdded	edefd
„Zdded	ede	fd„Z
deddfd„Zˆ xZS )ÚBodyPartReaderPayloadrƒ   r   ÚargsÚkwargsrG   Nc                 óÆ   •— t        ‰| �  |g|¢­i |¤Ž i }|j                  �|j                  |d<   |j                  �|j                  |d<   |r | j                  di |¤Ž y y )Nr„   r+  )Ú
attachmentT)Úsuperr˜   r„   r+  Úset_content_disposition)r—   r   r0  r1  r|   Ú	__class__s        €rC   r˜   zBodyPartReaderPayload.__init__=  si   ø€ Ü‰Ñ˜Ð0 Ò0¨Ò0à!#ˆØ�:‰:Ð!Ø"ŸZ™ZˆF�6‰NØ�>‰>Ð%Ø!&§¡ˆF�:ÑáØ(ˆD×(Ñ(ÑF¸vÓFð rB   r€   Úerrorsc                 ó   — t        d«      ‚)NzUnable to decode.©Ú	TypeError©r—   r€   r7  s      rC   rÏ   zBodyPartReaderPayload.decodeI  s   € ÜÐ+Ó,Ð,rB   c              ƒ   ó    K  — t        d«      ‚­w)aR  Raises TypeError as body parts should be consumed via write().

        This is intentional: BodyPartReader payloads are designed for streaming
        large data (potentially gigabytes) and must be consumed only once via
        the write() method to avoid memory exhaustion. They cannot be buffered
        in memory for reuse.
        z:Unable to read body part as bytes. Use write() to consume.r9  r;  s      rC   Úas_byteszBodyPartReaderPayload.as_bytesL  s   è ø€ ô ÐTÓUÐUùs   ‚Úwriterc              ƒ   ó  K  — | j                   }|j                  d¬«      ƒ d {  –—† }|rN|j                  |j                  |«      ƒ d {  –—† «      ƒ d {  –—†  |j                  d¬«      ƒ d {  –—† }|rŒMy y 7 ŒU7 Œ17 Œ'7 Œ­w)Ni   )rÖ   )rƒ   rÓ   ÚwriterÏ   )r—   r>  Úfieldrß   s       rC   r@  zBodyPartReaderPayload.writeV  sr   è ø€ Ø—‘ˆØ×&Ñ&¨EÐ&Ó2×2ˆÙØ—,‘, U§\¡\°%Ó%8×8Ó9×9Ð9Ø×*Ñ*°Ð*Ó6×6ˆEô ð 3øà8øÐ9øØ6úsK   ‚"B¤A:¥%BÁ
A<ÁBÁA>ÁBÁ0B Á1BÁ8BÁ<BÁ>BÂ B©rl   rm   )r>   r?   r@   r3   Ú__annotations__r   r˜   rn   rÏ   r,  r=  r   r@  Ú__classcell__©r6  s   @rC   r/  r/  8  s|   ø… àÓð
G˜nð 
G°Sð 
GÀCð 
GÈDõ 
Gñ-˜sð -°cð -Èó -ñV sð V¸cð VÐQVó Vð7Ð"6ð 7¸4÷ 7rB   r/  c                   ó0  — e Zd ZU dZeZdZeed       e	d<   e
Zdeeef   deddfd„Zdedefd	„Zdeed e
f      fd
„Zedddefd„«       Zdefd„Zdeed e
f      fd„Zdd„Zded e
f   fd„Zddded e
f   fd„Zdefd„Zdefd„Zdd„Zdd„Z dd„Z!dd„Z"y)r5   zMultipart body reader.NÚmultipart_reader_clsrµ   r§   rG   c                 óz  — t        |t           «      | _        | j                  j                  dk(  sJ d«       ‚d| j                  j                  vrt        d|t           z  «      ‚|| _        d| j                  «       z   j                  «       | _	        || _
        d | _        d | _        d| _        d| _        g | _        y )NÚ	multipartz!multipart/* content type expectedr´   z$boundary missed for Content-Type: %sú--FT)r#   r    Ú	_mimetypeÚtyper$  rÞ   rµ   Ú_get_boundaryÚencoder¹   r¼   r½   Ú
_last_partr¾   Ú_at_bofrÄ   )r—   rµ   r§   s      rC   r˜   zMultipartReader.__init__i  s¯   € Ü'¨´Ñ(=Ó>ˆŒØ�~‰~×"Ñ" kÒ1ÐVÐ3VÓVÐ1Ø˜TŸ^™^×6Ñ6Ñ6ÜØ6¸ÄÑ9NÑNóð ð ˆŒØ ×!3Ñ!3Ó!5Ñ5×=Ñ=Ó?ˆŒØˆŒØ/3ˆÔØNRˆŒØˆŒØˆŒØ$&ˆ�rB   r—   c                 ó   — | S rK   rA   rš   s    rC   r›   zMultipartReader.__aiter__z  rœ   rB   c              ƒ   óR   K  — | j                  «       ƒ d {  –—† }|€t        ‚|S 7 Œ­wrK   rž   r¡   s     rC   r£   zMultipartReader.__anext__}  r¤   r¥   Úresponser;   c                 ó`   — | j                  | | |j                  |j                  «      «      }|S )z‚Constructs reader instance from HTTP response.

        :param response: :class:`~aiohttp.client.ClientResponse` instance
        )Úresponse_wrapper_clsrµ   r§   )ÚclsrS  Úobjs      rC   Úfrom_responsezMultipartReader.from_response…  s3   € ð ×&Ñ&Ø‘c˜(×*Ñ*¨H×,<Ñ,<Ó=ó
ˆð ˆ
rB   c                 ó   — | j                   S )z@Returns True if the final boundary was reached, false otherwise.r
  rš   s    rC   r¨   zMultipartReader.at_eof“  r  rB   c              ƒ   ó.  K  — | j                   ry| j                  «       ƒ d{  –—†  | j                  r | j                  «       ƒ d{  –—†  d| _        n| j	                  «       ƒ d{  –—†  | j                   ry| j                  «       ƒ d{  –—† }| j                  €Õ| j                  j                  dk(  r¼t        |t        «      r¬t        |j                  j                  t        «      «      \  }}|j                  d«      dk(  rm|j                  d«      ƒ d{  –—† }t!        |«      dkD  rt#        d«      ‚|j%                  «       j'                  «       | _        | j                  «       ƒ d{  –—† }|| _        | j                  S 7 �Œb7 �ŒA7 �Œ$7 �Œ7 Œw7 Œ%­w)	z#Emits the next multipart body part.NFr¸   r„   Ú	_charset_é    é   zInvalid default charset)r¾   Ú_maybe_release_last_partrP  Ú_read_until_first_boundaryÚ_read_boundaryÚfetch_next_partrO  rK  r±   Ú
isinstancer3   r9   rµ   rÀ   r   rÓ   rº   r  rw   rÏ   r½   )r—   r¢   r�   r|   r#  s        rC   rŸ   zMultipartReader.next—  sM  è ø€ ð
 �<Š<ØØ×+Ñ+Ó-×-Ð-Ø�<Š<Ø×1Ñ1Ó3×3Ð3Ø ˆD�Là×%Ñ%Ó'×'Ð'Ø�<Š<Øà×)Ñ)Ó+×+ˆð �O‰OÐ#Ø—‘×&Ñ&¨+Ò5Ü˜4¤Ô0ä1°$·,±,×2BÑ2BÔCVÓ2WÓX‰IˆAˆvØ�z‰z˜&Ó! [Ò0ð !%§¡°Ó 3×3�Ü�w“< "Ò$Ü&Ð'@ÓAÐAØ(/¯©«×(>Ñ(>Ó(@�Ô%Ø!×1Ñ1Ó3×3�ØˆŒØ�‰Ðð5 	.ùà3ùð (ùð ,ùð 4øð 4úsk   ‚!F£F¤#FÁFÁFÁ'FÁ($FÂFÂBFÄFÄAFÅ-FÅ.FÆFÆFÆFÆFÆFc              ƒ   ó®   K  — | j                   sA| j                  «       ƒ d{  –—† }|€y|j                  «       ƒ d{  –—†  | j                   sŒ@yy7 Œ.7 Œ­w)z=Reads all the body parts to the void till the final boundary.N)r¾   rŸ   rª   r«   s     rC   rª   zMultipartReader.releaseº  sD   è ø€ à—,’,ØŸ™›×$ˆDØˆ|ØØ—,‘,“.× Ð ð	 —,•,Ø$øð !ús%   ‚ A¢A£A½A¾AÁAÁAc              ƒ   ó`   K  — | j                  «       ƒ d{  –—† }| j                  |«      S 7 Œ­w)z"Returns the next body part reader.N)Ú_read_headersÚ_get_part_reader)r—   rµ   s     rC   ra  zMultipartReader.fetch_next_partÂ  s/   è ø€ ð ×*Ñ*Ó,×,ˆØ×$Ñ$ WÓ-Ð-ð -ús   ‚.–,—.r¶   c                 óz  — |j                  t        d«      }t        |«      }|j                  dk(  rD| j                  € t        | «      || j
                  «      S | j	                  || j
                  «      S | j                  | j                  || j
                  | j                  j                  | j                  ¬«      S )zšDispatches the response by the `Content-Type` header.

        Returns a suitable reader instance.

        :param dict headers: Response headers
        rc   rI  )r±   r²   )rÀ   r    r#   rL  rG  r¼   Úpart_reader_clsr¹   rK  r±   r½   )r—   rµ   r%  r&  s       rC   rf  z MultipartReader._get_part_readerÉ  s£   € ð —‘œL¨"Ó-ˆÜ! %Ó(ˆà�=‰=˜KÒ'Ø×(Ñ(Ð0Ø!”t˜D“z '¨4¯=©=Ó9Ð9Ø×,Ñ,¨W°d·m±mÓDÐDà×'Ñ'Ø—‘ØØ—‘ØŸ™×.Ñ.Ø $× 5Ñ 5ð (ó ð rB   c                 óp   — | j                   j                  d   }t        |«      dkD  rt        d|z  «      ‚|S )Nr´   éF   z&boundary %r is too long (70 chars max))rK  r$  rº   rÞ   )r—   r´   s     rC   rM  zMultipartReader._get_boundaryã  s8   € Ø—>‘>×,Ñ,¨ZÑ8ˆÜˆx‹=˜2ÒÜÐEÈÑPÓQÐQàˆrB   c              ƒ   óž   K  — | j                   r| j                   j                  «       S | j                  j                  «       ƒ d {  –—† S 7 Œ­wrK   )rÄ   ru   r¼   rÝ   rš   s    rC   Ú	_readlinezMultipartReader._readlineê  s9   è ø€ Ø�<Š<Ø—<‘<×#Ñ#Ó%Ð%Ø—]‘]×+Ñ+Ó-×-Ð-Ð-ús   ‚AAÁAÁAc              ƒ   óð   K  — 	 | j                  «       ƒ d {  –—† }|dk(  rt        d| j                  z  «      ‚|j                  «       }|| j                  k(  ry || j                  dz   k(  rd| _        y Œp7 Œ\­w)NTrB   z#Could not find starting boundary %rró   )rl  rÞ   r¹   rö   r¾   ©r—   rß   s     rC   r_  z*MultipartReader._read_until_first_boundaryï  sw   è ø€ ØØŸ.™.Ó*×*ˆEØ˜Š|Ü Ø9¸T¿^¹^ÑLóð ð —L‘L“NˆEØ˜Ÿ™Ò&ØØ˜$Ÿ.™.¨5Ñ0Ò0Ø#�”Øð Ø*ús   ‚A6—A4˜AA6c              ƒ   óÎ  K  — | j                  «       ƒ d {  –—† j                  «       }|| j                  k(  ry || j                  dz   k(  ryd| _        | j                  «       ƒ d {  –—† }| j                  «       ƒ d {  –—† }|d d dk(  r| j                  j                  |«       y | j                  j                  ||g«       y t        d|›d| j                  ›�«      ‚7 ŒÈ7 Œ{7 Œe­w)Nró   TrV   zInvalid boundary z, expected )rl  rö   r¹   r¾   rÄ   rŽ   rÒ   rÞ   )r—   rß   Úepiloguerú   s       rC   r`  zMultipartReader._read_boundaryý  sË   è ø€ Ø—~‘~Ó'×'×/Ñ/Ó1ˆØ�D—N‘NÒ"ØØ�d—n‘n uÑ,Ò,ØˆDŒLØ!Ÿ^™^Ó-×-ˆHØ"Ÿn™nÓ.×.ˆIð ˜˜!ˆ} Ò%Ø—‘×#Ñ# IÕ.ð
 —‘×#Ñ# Y°Ð$9Õ:äÐ0°°	¸ÀTÇ^Á^ÐDVÐWÓXÐXð) (øð
 .øØ.ús5   ‚C%–C—AC%Á%C!Á&C%Á=C#Á>A"C%Ã!C%Ã#C%c              ƒ   óä   K  — g }	 | j                   j                  «       ƒ d {  –—† }|j                  d«      }|j                  |«       |snŒHt	        «       }|j                  |«      \  }}|S 7 ŒJ­w)NrÚ   )r¼   rÝ   rö   rŽ   r%   Úparse_headers)r—   Úlinesrß   Úparserrµ   Úraw_headerss         rC   re  zMultipartReader._read_headers  sp   è ø€ ØˆØØŸ-™-×0Ñ0Ó2×2ˆEØ—L‘L Ó)ˆEØ�L‰L˜ÔÙØð ô “ˆØ%×3Ñ3°EÓ:Ñˆ�Øˆð 3ús   ‚!A0£A.¤AA0c              ƒ   ó  K  — | j                   �s| j                   j                  «       s"| j                   j                  «       ƒ d{  –—†  | j                  j	                  | j                   j                  «       d| _         yy7 Œ<­w)z8Ensures that the last read body part is read completely.N)rO  r¨   rª   rÄ   rÒ   rš   s    rC   r^  z(MultipartReader._maybe_release_last_part   sa   è ø€ à�?‰?Ð&Ø—?‘?×)Ñ)Ô+Ø—o‘o×-Ñ-Ó/×/Ð/Ø�L‰L×Ñ §¡× 7Ñ 7Ô8Ø"ˆD�Oð	 'à/ús   ‚ABÁBÁ=Br­   )rG   r¶   )#r>   r?   r@   r®   r“   rU  rG  r   r   rC  r3   rh  r   rn   r.   r˜   r1   r›   r   r£   ÚclassmethodrX  rL   r¨   rŸ   rª   ra  rf  rM  r,  rl  r_  r`  re  r^  rA   rB   rC   r5   r5   ^  s:  … Ù ð 4Ðð ?CÐ˜( 4Ð(9Ñ#:Ñ;ÓBà$€Oð' ¨¨S¨Ñ 1ð '¸Lð 'ÈTó 'ð"˜ð  ó ðà	�%Ð)¨>Ð9Ñ:Ñ	;óð ðà"ðð 
"òó ðð˜ó ð!à	�%Ð)¨>Ð9Ñ:Ñ	;ó!óF!ð.à	Ð  .Ð0Ñ	1ó.ðà(ðð 
Ð  .Ð0Ñ	1óð4˜só ð. ó .ó
óYó.
ô#rB   r5   c                   ó0  ‡ — e Zd ZU dZded<   dZd%dedee   ddfˆ fd„Zd&d	„Z	d
ee
e      dee   dee   ddfd„Zdee   fd„Zdefd„Zdefd„Z ej,                  d«      Z ej,                  d«      Zedefd„«       Zedefd„«       Zd'dedeeeef      defd„Zdedefd„Z 	 d'dedeeeef      defd„Z!	 d'de"e#e$eef      eeef   f   deeeef      defd„Z%edee   fd„«       Z&d(dededefd„Z'd(dedede(fd „Z)	 d)d!e*d"eddfd#„Z+d*d$„Z,ˆ xZ-S )+r6   zMultipart body writer.Nrƒ   Tr±   r´   rG   c                 ó  •— |�|nt        j                  «       j                  }	 |j                  d«      | _        d|› d| j                  › �}t        ‰| �%  d |¬«       g | _
        |dk(  | _        y # t
        $ r t        d«      d ‚w xY w)NÚasciiz(boundary should contain ASCII only charsz
multipart/z; boundary=)Úcontent_typer¸   )ÚuuidÚuuid4ÚhexrN  r¹   ÚUnicodeEncodeErrorrÞ   Ú_boundary_valuer4  r˜   Ú_partsr¿   )r—   r±   r´   r%  r6  s       €rC   r˜   zMultipartWriter.__init__3  s“   ø€ Ø'Ð3‘8¼¿¹»×9IÑ9Iˆð	SØ%Ÿ_™_¨WÓ5ˆDŒNð ˜W˜I [°×1EÑ1EÐ0FÐGˆä‰Ñ˜¨EÐÔ2à#%ˆŒØ$¨Ñ3ˆÕøô "ò 	SÜÐGÓHÈdÐRð	Sús   ¥A0 Á0Bc                 ó   — | S rK   rA   rš   s    rC   Ú	__enter__zMultipartWriter.__enter__E  rœ   rB   Úexc_typeÚexc_valÚexc_tbc                  ó   — y rK   rA   )r—   r„  r…  r†  s       rC   Ú__exit__zMultipartWriter.__exit__H  s   € ð 	rB   c                 ó,   — t        | j                  «      S rK   )Úiterr�  rš   s    rC   Ú__iter__zMultipartWriter.__iter__P  s   € Ü�D—K‘KÓ Ð rB   c                 ó,   — t        | j                  «      S rK   )rº   r�  rš   s    rC   Ú__len__zMultipartWriter.__len__S  s   € Ü�4—;‘;ÓÐrB   c                  ó   — y)NTrA   rš   s    rC   Ú__bool__zMultipartWriter.__bool__V  s   € ØrB   s   \A[!#$%&'*+\-.^_`|~\w]+\Zs   [\x00-\x08\x0A-\x1F\x7F]c                 óH  — | j                   }t        j                  | j                  |«      r|j	                  d«      S t        j
                  | j                  |«      rt        d«      ‚|j                  dd«      }|j                  dd«      }d|j	                  d«      z   dz   S )zzWrap boundary parameter value in quotes, if necessary.

        Reads self.boundary and returns a unicode string.
        rz  z*boundary value contains invalid charactersó   \s   \\ó   "s   \"rR   )	r¹   rg   ÚmatchÚ_valid_tchar_regexrÏ   ÚsearchÚ_invalid_qdtext_char_regexrÞ   Úreplace)r—   r   Úquoted_value_contents      rC   r€  zMultipartWriter._boundary_value\  s’   € ð& —‘ˆÜ�8‰8�D×+Ñ+¨UÔ3Ø—<‘< Ó(Ð(ä�9‰9�T×4Ñ4°eÔ<ÜÐIÓJÐJð  %Ÿ}™}¨U°GÓ<ÐØ3×;Ñ;¸DÀ&ÓIÐàÐ)×0Ñ0°Ó9Ñ9¸CÑ?Ð?rB   c                 ó8   — | j                   j                  d«      S )Nrz  )r¹   rÏ   rš   s    rC   r´   zMultipartWriter.boundary|  s   € à�~‰~×$Ñ$ WÓ-Ð-rB   rW  rµ   c                 ó  — |€
t        «       }t        |t        «      r,|j                  j	                  |«       | j                  |«      S 	 t        ||¬«      }| j                  |«      S # t        $ r t        d|z  «      ‚w xY w)N©rµ   zCannot create payload from %r)	r   rb  r*   rµ   ÚupdateÚappend_payloadr,   r(   r:  )r—   rW  rµ   Úpayloads       rC   rŽ   zMultipartWriter.append€  sƒ   € Øˆ?Ü!“mˆGä�cœ7Ô#Ø�K‰K×Ñ˜wÔ'Ø×&Ñ& sÓ+Ð+ð4Ü% c°7Ô;�ð ×*Ñ*¨7Ó3Ð3øô ò GÜÐ ?À#Ñ EÓFÐFðGús   Á
A( Á(B rž  c                 ó¶  — d}d}| j                   rlt        t        t        h|j                  j                  «       z  rJ ‚t        |j                  vrêdt        | j                  «      › �}|j                  d|¬«       n¾|j                  j                  t        d«      j                  «       }|r|dvrt        d|› �«      ‚|dk(  rd}|j                  j                  t        d«      j                  «       }|d	vrt        d
|› �«      ‚|dk(  rd}|j                  }|� |s|st        |«      |j                  t        <   | j                  j                  |||f«       |S )z)Adds a new body part to multipart writer.Nzsection-r¸   )r„   rc   )r  r  r  r  r  )rc   rØ   r  r  r  r  )r¿   r   r   r   rµ   Úkeysr   rº   r�  r5  rÀ   rv   r  rÖ   rn   rŽ   )r—   rž  r€   Úte_encodingr„   rÖ   s         rC   r�  zMultipartWriter.append_payload�  sU  € à"&ˆØ%)ˆØ×Òô &¤~Ô7PÐQØ—/‘/×&Ñ&Ó(ò)ðð)ô #¨'¯/©/Ñ9Ø!¤# d§k¡kÓ"2Ð!3Ð4�Ø×/Ñ/°À$Ð/ÕGð —‘×*Ñ*Ô+;¸RÓ@×FÑFÓHˆHÙ˜HÐ,KÑKÜ"Ð%?À¸zÐ#JÓKÐKØ˜:Ò%Ø�ð "Ÿ/™/×-Ñ-Ô.GÈÓL×RÑRÓTˆKØÐ"NÑNÜ"Ð%HÈÈÐ#VÓWÐWØ˜hÒ&Ø"�ð —<‘<ˆDØÐ©±[Ü25°d³)�—‘¤Ñ/à�‰×Ñ˜G X¨{Ð;Ô<ØˆrB   c                 óR   — |€
t        «       }| j                  t        ||¬«      «      S )zHelper to append JSON part.r›  )r   r�  r'   )r—   rW  rµ   s      rC   Úappend_jsonzMultipartWriter.append_jsonµ  s(   € ð ˆ?Ü!“mˆGà×"Ñ"¤;¨s¸GÔ#DÓEÐErB   c                 óð   — t        |t        t        f«      sJ ‚|€
t        «       }t        |t        «      rt	        |j                  «       «      }t        |d¬«      }| j                  t        ||d¬«      «      S )z&Helper to append form urlencoded part.T)Údoseqz!application/x-www-form-urlencoded)rµ   r{  )	rb  r   r   r   ÚlistrŒ   r   r�  r+   )r—   rW  rµ   rÕ   s       rC   Úappend_formzMultipartWriter.append_form¾  sn   € ô ˜#¤¬'Ð2Ô3Ð3Ð3àˆ?Ü!“mˆGä�cœ7Ô#Ü�s—y‘y“{Ó#ˆCÜ˜ DÔ)ˆà×"Ñ"ÜØ˜gÐ4Wôó
ð 	
rB   c                 ó  — d}| j                   D ]]  \  }}}|j                  }|s|s|€ y|t        dt        | j                  «      z   dz   |z   t        |j
                  «      z   dz   «      z  }Œ_ |dt        | j                  «      z   dz   z  }|S )zSize of the payload.r   NrV   rÙ   )r�  rÖ   rÁ   rº   r¹   Ú_binary_headers)r—   Útotalr¢   r€   r¡  Ú	part_sizes         rC   rÖ   zMultipartWriter.sizeÓ  s³   € ð ˆØ+/¯;©;ò 	Ñ'ˆD�(˜KØŸ	™	ˆIÙ™;¨)Ð*;Ùà”SØÜ�d—n‘nÓ%ñ&àñð ñô �d×*Ñ*Ó+ñ	,ð
 ñóñ ‰Eð	ð 	�”S˜Ÿ™Ó(Ñ(¨1Ñ,Ñ,ˆØˆrB   r€   r7  c                 óT   ‡ ‡‡— dj                  ˆˆˆ fd„‰ j                  D «       «      S )zâReturn string representation of the multipart data.

        WARNING: This method may do blocking I/O if parts contain file payloads.
        It should not be called in the event loop. Use as_bytes().decode() instead.
        rc   c              3   ó¦   •K  — | ]H  \  }}}d ‰j                   z   dz   |j                  j                  ‰‰«      z   |j                  «       z   –— ŒJ y­w)rJ  z
N)r´   r©  rÏ   )rˆ   r¢   Ú_eÚ_ter€   r7  r—   s       €€€rC   rŠ   z)MultipartWriter.decode.<locals>.<genexpr>î  sb   øè ø€ ò 
ñ ��b˜#ð Ø�m‰mñàñð ×"Ñ"×)Ñ)¨(°FÓ;ñ<ð �k‰k‹mõ	ñ
ùs   ƒAA)ro   r�  r;  s   ```rC   rÏ   zMultipartWriter.decodeè  s)   ú€ ð �w‰wõ 
ð "&§¡ô
ó 
ð 	
rB   c              ƒ   ó�  K  — g }| j                   D ]~  \  }}}|j                  d| j                  z   dz   «       |j                  |j                  «       |j	                  ||«      ƒ d{  –—† }|j                  |«       |j                  d«       Œ€ |j                  d| j                  z   dz   «       dj                  |«      S 7 ŒZ­w)z‰Return bytes representation of the multipart data.

        This method is async-safe and calls as_bytes on underlying payloads.
        ró   rÚ   Nó   --
rB   )r�  rŽ   r¹   r©  r=  ro   )r—   r€   r7  r{   r¢   r®  r¯  Ú
part_bytess           rC   r=  zMultipartWriter.as_bytes÷  s´   è ø€ ð
  ˆð "Ÿ[™[ò 	"‰MˆD�"�cà�L‰L˜ §¡Ñ/°'Ñ9Ô:ð �L‰L˜×-Ñ-Ô.ð  $Ÿ}™}¨X°vÓ>×>ˆJØ�L‰L˜Ô$ð �L‰L˜Õ!ð	"ð 	�‰�U˜TŸ^™^Ñ+¨iÑ7Ô8à�x‰x˜‹Ðð ?ús   ‚A'CÁ)CÁ*ACr>  Úclose_boundaryc              ƒ   óæ  K  — | j                   D �]#  \  }}}| j                  r+t        |j                  v sJ ‚d|j                  t           v sJ ‚|j	                  d| j
                  z   dz   «      ƒ d{  –—†  |j	                  |j                  «      ƒ d{  –—†  |s|rct        |«      }|r|j                  |«       |r|j                  |«       |j	                  |«      ƒ d{  –—†  |j                  «       ƒ d{  –—†  n|j	                  |«      ƒ d{  –—†  |j	                  d«      ƒ d{  –—†  �Œ& |r*|j	                  d| j
                  z   dz   «      ƒ d{  –—†  yy7 Œð7 ŒÏ7 Œƒ7 Œm7 ŒU7 Œ>7 Œ­w)zWrite body.zname=ró   rÚ   Nr±  )r�  r¿   r   rµ   r@  r¹   r©  ÚMultipartPayloadWriterÚenable_compressionÚenable_encodingÚ	write_eof)r—   r>  r³  r¢   r€   r¡  Úws          rC   r@  zMultipartWriter.write  sO  è ø€ ð ,0¯;©;ó 	(Ñ'ˆD�(˜KØ×!Ò!ä*¨d¯l©lÑ:Ð:Ð:Ø $§,¡,Ô/BÑ"CÑCÐCÐCà—,‘,˜u t§~¡~Ñ5¸Ñ?Ó@×@Ð@Ø—,‘,˜t×3Ñ3Ó4×4Ð4á™;Ü*¨6Ó2�ÙØ×(Ñ(¨Ô2ÙØ×%Ñ% kÔ2Ø—j‘j “m×#Ð#Ø—k‘k“m×#Ñ#à—j‘j Ó(×(Ð(à—,‘,˜wÓ'×'Ò'ð)	(ñ, Ø—,‘,˜u t§~¡~Ñ5¸	ÑAÓB×BÑBð ð! AøØ4øð $øØ#øà(øà'øð Cús   ‚A0E1Á2E#Á3"E1ÂE%ÂAE1Ã#E'Ã$E1Ã;E)Ã<E1ÄE+ÄE1Ä.E-Ä/-E1ÅE/ÅE1Å%E1Å'E1Å)E1Å+E1Å-E1Å/E1c              ƒ   ó>  K  — | j                   ryd| _         t        | j                  «      D ]<  \  }\  }}}|j                  rŒ|j                  rŒ$	 |j                  «       ƒ d{  –—†  Œ> y7 Œ# t        $ r#}t        j                  d||d¬«       Y d}~Œid}~ww xY w­w)a  
        Close all part payloads that need explicit closing.

        IMPORTANT: This method must not await anything that might not finish
        immediately, as it may be called during cleanup/cancellation. Schedule
        any long-running operations without awaiting them.
        NTz%Failed to close multipart part %d: %s)Úexc_info)	Ú	_consumedr�   r�  Ú	autocloseÚconsumedÚcloseÚ	Exceptionr&   Úerror)r—   rð   r¢   r�   Úexcs        rC   r¿  zMultipartWriter.close/  s�   è ø€ ð �>Š>ØØˆŒô "+¨4¯;©;Ó!7ò 	ÑˆC‘�$˜˜1Ø—>“>¨$¯-«-ðØŸ*™*›,×&Ñ&ñ	ð 'ùÜ ò Ü#×)Ñ)Ø?ÀÀcÐTX÷ò ûðüsH   ‚A BÁBÁA.Á$A,Á%A.Á)BÁ,A.Á.	BÁ7BÂBÂBÂB)r°   N)rG   r6   rK   rB  )Tr­   ).r>   r?   r@   r®   rC  Ú
_autoclosern   r   r˜   rƒ  r   ÚBaseExceptionr   rˆ  r   Ú_Partr‹  rÁ   r�  rL   r�  rg   Úcompiler”  r–  Úpropertyr€  r´   r   r   r*   rŽ   r�  r£  r   r   r   r§  rÖ   rÏ   r,  r=  r   r@  r¿  rD  rE  s   @rC   r6   r6   ,  s?  ø… Ù àƒLà€Jñ4 ð 4¸À#¹ð 4ÐRVõ 4ó$ðà˜4 Ñ.Ñ/ðð ˜-Ñ(ðð ˜Ñ'ð	ð
 
óð!˜( 5™/ó !ð ˜ó  ð˜$ó ð $˜Ÿ™Ð$AÓBÐØ!+ §¡Ð,HÓ!IÐàð@ ò @ó ð@ð> ð.˜#ò .ó ð.ñ4˜#ð 4¨°¸¸c¸Ñ1BÑ(Cð 4Èwó 4ð$ gð $°'ó $ðN @DñFØðFØ!)¨'°#°s°(Ñ*;Ñ!<ðFà	óFð 04ñ
à�8˜E # s (™OÑ,¨g°c¸3°hÑ.?Ð?Ñ@ð
ð ˜' # s (Ñ+Ñ,ð
ð 
ó	
ð* ð�h˜s‘mò ó ðñ(
˜sð 
°cð 
Èó 
ñ sð ¸cð ÐQVó ð8 DHñCØ*ðCØ<@ðCà	óC÷:rB   r6   c                   ób   — e Zd Zdeddfd„Zdeddfd„Z	 ddedee   ddfd„Z	dd	„Z
d
eddfd„Zy)rµ  r>  rG   Nc                 ó<   — || _         d | _        d | _        d | _        y rK   )Ú_writerÚ	_encodingÚ	_compressÚ_encoding_buffer)r—   r>  s     rC   r˜   zMultipartPayloadWriter.__init__J  s   € ØˆŒØ(,ˆŒØ37ˆŒØ59ˆÕrB   r€   c                 óV   — |dk(  r|| _         t        «       | _        y |dk(  rd| _         y y )NrØ   r  )rË  rÑ   rÍ  )r—   r€   s     rC   r·  z&MultipartPayloadWriter.enable_encodingP  s0   € Ø�xÒØ%ˆDŒNÜ$-£KˆDÕ!ØÐ+Ò+Ø/ˆD�Nð ,rB   Ústrategyc                 ó*   — t        |d|¬«      | _        y )NT)r€   r  rÏ  )r   rÌ  )r—   r€   rÏ  s      rC   r¶  z)MultipartPayloadWriter.enable_compressionW  s   € ô (ØØ$(Øô
ˆ�rB   c              ƒ   ó^  K  — | j                   �<| j                   j                  «       }|r d | _         | j                  |«      ƒ d {  –—†  | j                  dk(  rN| j                  rA| j
                  j                  t        j                  | j                  «      «      ƒ d {  –—†  y y y 7 Œb7 Œ	­w)NrØ   )rÌ  Úflushr@  rË  rÍ  rÊ  rØ   Ú	b64encodern  s     rC   r¸  z MultipartPayloadWriter.write_eof`  s’   è ø€ Ø�>‰>Ð%Ø—N‘N×(Ñ(Ó*ˆEÙØ!%�”Ø—j‘j Ó'×'Ð'à�>‰>˜XÒ%Ø×$Ò$Ø—l‘l×(Ñ(¬×)9Ñ)9¸$×:OÑ:OÓ)PÓQ×QÑQð %ð &ð (øð Rús%   ‚AB-ÁB)ÁAB-Â!B+Â"B-Â+B-rß   c              ƒ   ó’  K  — | j                   �(|r&| j                   j                  |«      ƒ d {  –—† }|sy | j                  dk(  rŽ| j                  }|€J ‚|j	                  |«       |rjt        t        |«      d«      \  }}|d |dz   ||dz  d  c}| _        |r9t        j                  |«      }| j                  j                  |«      ƒ d {  –—†  y y y | j                  dk(  r7| j                  j                  t        j                  |«      «      ƒ d {  –—†  y | j                  j                  |«      ƒ d {  –—†  y 7 �Œ7 Œt7 Œ.7 Œ­w)NrØ   r/   r  )rÌ  ÚcompressrË  rÍ  rÒ   Údivmodrº   rØ   rÓ  rÊ  r@  r   Úb2a_qp)r—   rß   ÚbufÚdivÚmodÚ	enc_chunkÚb64chunks          rC   r@  zMultipartPayloadWriter.writek  s'  è ø€ Ø�>‰>Ð%ÙØ"Ÿn™n×5Ñ5°eÓ<×<�ÙØà�>‰>˜XÒ%Ø×'Ñ'ˆCØ�?Ð"�?Ø�J‰J�uÔáÜ!¤# c£(¨AÓ.‘��SØ47¸	¸#À¹'°NÀCÈÈaÉÈ	ÀNÐ0�	˜4Ô0ÙÜ%×/Ñ/°	Ó:�HØŸ,™,×,Ñ,¨XÓ6×6Ñ6ð ð ð �^‰^Ð1Ò1Ø—,‘,×$Ñ$¤X§_¡_°UÓ%;Ó<×<Ñ<à—,‘,×$Ñ$ UÓ+×+Ñ+ð% =ùð 7øà<øà+úsG   ‚-E¯D>°BEÃEÃAEÄEÄ#EÄ8EÄ9EÅEÅEÅE)r  Nr­   )r>   r?   r@   r   r˜   rn   r·  r   rÁ   r¶  r¸  r,  r@  rA   rB   rC   rµ  rµ  I  sj   „ ð:Ð3ð :¸ó :ð0¨ð 0°ó 0ð DHñ
Øð
Ø3;¸C±=ð
à	ó
ó	Rð, ð ,¨4ô ,rB   rµ  )r+  )TrØ   r   r  rg   Úsysr|  rs   Úcollectionsr   Úcollections.abcr   r   Útypesr   Útypingr   r   r	   r
   r   r   r   r   r   r   r   Úurllib.parser   r   r   Ú	multidictr   r   Úabcr   Úcompression_utilsr   r   r   Úhdrsr   r   r   r   r    Úhelpersr!   r"   r#   r$   Úhttpr%   Úlogr&   rž  r'   r(   r)   r*   r+   r,   r-   Ústreamsr.   Úversion_infor1   r2   Ú__all__Úclient_reqrepr;   ÚRuntimeWarningr7   r8   rn   r9   r:   r“   r3   Ú	try_firstr/  r5   rÅ  r6   rµ  rA   rB   rC   ú<module>rð     s   ðÛ Û Û Û 	Û 
Û Û Ý ß -Ý ÷÷ ÷ ñ ÷ 7Ñ 6ç 3å %÷ñ ÷
õ ÷ 8Ó 7Ý Ý  ÷÷ ñ õ "à×Ñ�wÒÞåá�6Ð!1Ô2€Dð€ñ Ý-ô	 .ô 	ô	 ô 	ðd$Ø�S‰Mðd$à
ˆ8�C‰=˜$˜s C˜x™.Ð(Ñ)ód$ðP ,6ñØ�C˜�HÑðØ%(ðàˆc�]ó÷B,"ñ ,"÷^i@ñ i@ñX	 ˆn E§O¡OÔ4ô"7˜Gó "7ó 5ð"7÷JH#ñ H#ðV 	ˆg�s˜CÐÑ €ôZ�gô Z÷z7,ò 7,rB   