+
    AžÀjŒ8  ã                  óP  € R t ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RI	H
t
 ^RIHt ^RIHt ^RIHt ]P"                  '       d   ^ R	IHt ^ R
IHt ^ RIHt  ! R R]4      t ! R R]4      t]3R R llt ! R R4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      tR# )a‹  
WSGI Protocol Linter
====================

This module provides a middleware that performs sanity checks on the
behavior of the WSGI server and application. It checks that the
:pep:`3333` WSGI spec is properly implemented. It also warns on some
common HTTP errors such as non-empty responses for 304 status codes.

.. autoclass:: LintMiddleware

:copyright: 2007 Pallets
:license: BSD-3-Clause
)ÚannotationsN)ÚTracebackType)Úurlparse)Úwarn)ÚHeaders)Úis_entity_header)ÚFileWrapper)ÚStartResponse)ÚWSGIApplication)ÚWSGIEnvironmentc                  ó   € ] tR t^!tRtRtR# )ÚWSGIWarningz Warning class for WSGI warnings.© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Úl/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.14/site-packages/werkzeug/middleware/lint.pyr   r   !   ó   † Ý*r   r   c                  ó   € ] tR t^%tRtRtR# )ÚHTTPWarningz Warning class for HTTP warnings.r   Nr   r   r   r   r   r   %   r   r   r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   ÚcontextÚstrÚobjÚobjectÚneedÚtypeÚreturnÚNoner   )Úformats   "r   Ú__annotate__r&   )   s(   € ÷ 
ñ 
˜ð 
 &ð 
°ð 
¸tñ 
r   c           	     óž   € \        V4      VJd>   \        V : R VP                  : R\        V4      P                  : R2\        ^R7       R# R# )z
 requires z, got Ú.©Ú
stacklevelN)r"   r   r   r   )r   r   r!   s   &&&r   Ú
check_typer+   )   sH   € ÜˆCƒy˜ÓÜØ‰k˜ D§M¡MÑ#4°F¼4À»9×;MÑ;MÑ:PÐPQÐRÜØ÷	
ñ r   c                  óR   € ] tR t^2tR R ltR R ltR R ltR R ltR	 R
 ltRt	R# )ÚInputStreamc               ó    € V ^8„  d   QhRRRR/# )r   Ústreamzt.IO[bytes]r#   r$   r   )r%   s   "r   r&   ÚInputStream.__annotate__3   s   € ÷ ñ ˜{ð ¨tñ r   c                	ó   € Wn         R # ©N©Ú_stream©Úselfr/   s   &&r   Ú__init__ÚInputStream.__init__3   ó   € ØŽr   c               ó    € V ^8„  d   QhRRRR/# ©r   Úargsút.Anyr#   Úbytesr   )r%   s   "r   r&   r0   6   s   € ÷ (ñ (˜%ð ( Eñ (r   c                	óÀ   € \        V4      ^ 8X  d   \        R\        ^R7       M"\        V4      ^8w  d   \        R\        ^R7       V P                  P                  ! V!  # )é    zŸWSGI does not guarantee an EOF marker on the input stream, thus making calls to 'wsgi.input.read()' unsafe. Conforming servers may never return from this call.r)   z2Too many parameters passed to 'wsgi.input.read()'.)Úlenr   r   r4   Úread©r6   r<   s   &*r   rB   ÚInputStream.read6   sW   € Üˆt‹9˜Œ>Üð*ô Øöô �‹Y˜!Œ^ÜØDÜØõð
 �|‰|× Ò  $Ñ'Ð'r   c               ó    € V ^8„  d   QhRRRR/# r;   r   )r%   s   "r   r&   r0   G   s   € ÷ ,ñ ,˜eð ,¨ñ ,r   c                	óØ   € \        V4      ^ 8X  d   \        R\        ^R7       M.\        V4      ^8X  d   \        R\        ^R7       M\        R4      hV P                  P
                  ! V!  # )r@   z_Calls to 'wsgi.input.readline()' without arguments are unsafe. Use 'wsgi.input.read()' instead.r)   z~'wsgi.input.readline()' was called with a size hint. WSGI does not support this, although it's available on all major servers.z5Too many arguments passed to 'wsgi.input.readline()'.)rA   r   r   Ú	TypeErrorr4   ÚreadlinerC   s   &*r   rH   ÚInputStream.readlineG   sd   € Üˆt‹9˜Œ>Üð0äØö	ô �‹Y˜!Œ^ÜðOäØö	ô ÐSÓTÐTØ�|‰|×$Ò$ dÑ+Ð+r   c               ó   € V ^8„  d   QhRR/# )r   r#   zt.Iterator[bytes]r   )r%   s   "r   r&   r0   Z   s   € ÷ ñ Ð+ñ r   c                	óŠ   €  \        V P                  4      #   \         d!    \        R \        ^R7       \        R4      u # i ; i)z'wsgi.input' is not iterable.r)   r   )Úiterr4   rG   r   r   ©r6   s   &r   Ú__iter__ÚInputStream.__iter__Z   s;   € ð	Ü˜Ÿ™Ó%Ð%øÜô 	ÜÐ0´+È!ÕLÜ˜“8ŠOð	ús   ‚ —(AÁAc               ó   € V ^8„  d   QhRR/# ©r   r#   r$   r   )r%   s   "r   r&   r0   a   ó   € ÷ ñ �tñ r   c                	ó^   € \        R \        ^R7       V P                  P                  4        R# )z(The application closed the input stream!r)   N©r   r   r4   ÚcloserM   s   &r   rU   ÚInputStream.closea   ó    € ÜÐ7¼ÐQRÕSØ�‰×ÑÖr   r3   N)
r   r   r   r   r7   rB   rH   rN   rU   r   r   r   r   r-   r-   2   s    † õõ(õ",õ&÷ñ r   r-   c                  óR   € ] tR t^ftR R ltR R ltR R ltR R ltR	 R
 ltRt	R# )ÚErrorStreamc               ó    € V ^8„  d   QhRRRR/# )r   r/   z	t.IO[str]r#   r$   r   )r%   s   "r   r&   ÚErrorStream.__annotate__g   s   € ÷ ñ ˜yð ¨Tñ r   c                	ó   € Wn         R # r2   r3   r5   s   &&r   r7   ÚErrorStream.__init__g   r9   r   c               ó    € V ^8„  d   QhRRRR/# )r   Úsr   r#   r$   r   )r%   s   "r   r&   r[   j   s   € ÷ ñ �sð ˜tñ r   c                	ó^   € \        R V\        4       V P                  P                  V4       R# )zwsgi.error.write()N)r+   r   r4   Úwrite©r6   r_   s   &&r   ra   ÚErrorStream.writej   s!   € ÜÐ'¨¬CÔ0Ø�‰×Ñ˜1Ör   c               ó   € V ^8„  d   QhRR/# rQ   r   )r%   s   "r   r&   r[   n   s   € ÷ ñ �tñ r   c                	ó:   € V P                   P                  4        R # r2   )r4   ÚflushrM   s   &r   rf   ÚErrorStream.flushn   s   € Ø�‰×ÑÖr   c               ó    € V ^8„  d   QhRRRR/# )r   Úseqzt.Iterable[str]r#   r$   r   )r%   s   "r   r&   r[   q   s   € ÷ ñ ˜oð °$ñ r   c                	ó:   € V F  pV P                  V4       K  	  R # r2   )ra   )r6   ri   Úlines   && r   Ú
writelinesÚErrorStream.writelinesq   s   € ÛˆDØ�J‰J�tÖó r   c               ó   € V ^8„  d   QhRR/# rQ   r   )r%   s   "r   r&   r[   u   rR   r   c                	ó^   € \        R \        ^R7       V P                  P                  4        R# )z(The application closed the error stream!r)   NrT   rM   s   &r   rU   ÚErrorStream.closeu   rW   r   r3   N)
r   r   r   r   r7   ra   rf   rl   rU   r   r   r   r   rY   rY   f   s    † õõõõ÷ñ r   rY   c                  ó.   € ] tR t^ztR R ltR R ltRtR# )ÚGuardedWritec               ó$   € V ^8„  d   QhRRRRRR/# )r   ra   zt.Callable[[bytes], object]Úchunksú	list[int]r#   r$   r   )r%   s   "r   r&   ÚGuardedWrite.__annotate__{   s#   € ÷ ñ Ð9ð À9ð ÐQUñ r   c                	ó   € Wn         W n        R # r2   )Ú_writeÚ_chunks)r6   ra   rt   s   &&&r   r7   ÚGuardedWrite.__init__{   s   € ØŒØŽr   c               ó    € V ^8„  d   QhRRRR/# )r   r_   r>   r#   r$   r   )r%   s   "r   r&   rv      s   € ÷ $ñ $˜%ð $ Dñ $r   c                	ó’   € \        R V\        4       V P                  V4       V P                  P	                  \        V4      4       R# )zwrite()N)r+   r>   rx   ry   ÚappendrA   rb   s   &&r   Ú__call__ÚGuardedWrite.__call__   s/   € Ü�9˜a¤Ô'Ø�‰�AŒØ�‰×ÑœC ›FÖ#r   )ry   rx   N)r   r   r   r   r7   r~   r   r   r   r   rr   rr   z   s   † õ÷$ñ $r   rr   c                  óR   € ] tR t^…tR R ltR R ltR R ltR R ltR	 R
 ltRt	R# )ÚGuardedIteratorc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Úiteratorút.Iterable[bytes]Úheaders_setútuple[int, Headers]rt   ru   r#   r$   r   )r%   s   "r   r&   ÚGuardedIterator.__annotate__†   s2   € ÷ 
ñ 
à#ð
ð )ð
ð ð	
ð
 
ñ
r   c                	ól   € Wn         \        V4      P                  V n        R V n        W n        W0n        R# )FN)Ú	_iteratorrL   Ú__next__Ú_nextÚclosedr…   rt   )r6   rƒ   r…   rt   s   &&&&r   r7   ÚGuardedIterator.__init__†   s,   € ð "ŒÜ˜(“^×,Ñ,ˆŒ
ØˆŒØ&ÔØŽr   c               ó   € V ^8„  d   QhRR/# )r   r#   r�   r   )r%   s   "r   r&   r‡   ’   s   € ÷ ñ ˜/ñ r   c                	ó   € V # r2   r   rM   s   &r   rN   ÚGuardedIterator.__iter__’   s   € Øˆr   c               ó   € V ^8„  d   QhRR/# )r   r#   r>   r   )r%   s   "r   r&   r‡   •   s   € ÷ ñ ˜%ñ r   c                	ó   € V P                   '       d   \        R \        ^R7       V P                  4       pV P                  '       g   \        R\        ^R7       \        RV\        4       V P                  P                  \        V4      4       V# )z Iterated over closed 'app_iter'.r)   z8The application returned before it started the response.zapplication iterator items)
rŒ   r   r   r‹   r…   r+   r>   rt   r}   rA   )r6   Úrvs   & r   rŠ   ÚGuardedIterator.__next__•   sj   € Ø�;�;ˆ;ÜÐ3´[ÈQÕOà�Z‰Z‹\ˆà××ÐÜØJÜØõô 	Ð/°´UÔ;Ø�‰×Ñœ3˜r›7Ô#Øˆ	r   c               ó   € V ^8„  d   QhRR/# rQ   r   )r%   s   "r   r&   r‡   ¦   s   € ÷ /ñ /�tñ /r   c                	óî  € R V n         \        V P                  R4      '       d   V P                  P                  4        V P                  '       Ed%   V P                  w  r\        V P                  4      pVP                  R\        R7      pVR8X  dm   V FH  w  rVVP                  4       pVR9  g   K  \        V4      '       g   K1  \        RV: R2\        ^R7       KJ  	  V'       d   \        R\        ^R7       R# R# ^dTu;8:  d   ^È8  g
   M V^Ì8X  d>   V^ 8w  d   \        V R	2\        ^R7       V'       d   \        V R
2\        ^R7       R# R# Ve   WC8w  d   \        R\        ^R7       R# R# R# R# )TrU   zcontent-length)r"   i0  zEntity header z found in 304 response.r)   z#304 responses must not have a body.z- responses must have an empty content length.z  responses must not have a body.NzGContent-Length and the number of bytes sent to the client do not match.)Úexpireszcontent-location)rŒ   Úhasattrr‰   rU   r…   Úsumrt   ÚgetÚintÚlowerr   r   r   r   )r6   Ústatus_codeÚheadersÚ
bytes_sentÚcontent_lengthÚkeyÚ_values   &      r   rU   ÚGuardedIterator.close¦   s`  € ØˆŒä�4—>‘> 7×+Ò+Ø�N‰N× Ñ Ô"à××ÑØ#'×#3Ñ#3Ñ ˆKÜ˜TŸ[™[Ó)ˆJØ$Ÿ[™[Ð)9Ä˜[ÓDˆNà˜cÔ!Û#*‘K�CØŸ)™)›+�CØÐ"AÖAÔFVØ÷Gô Gô Ø,¨S©GÐ3JÐKÜ'Ø'(÷ñ $+÷ ÜØ=Ü#Ø#$÷ñ ð ˜Ö) cÖ)¨[¸CÔ-?Ø! QÔ&ÜØ&˜-Ð'TÐUÜ#Ø#$õ÷
 ÜØ&˜-Ð'GÐHÜ#Ø#$÷ñ ð  Ò+°Ô0LÜð,äØ ÷	ñ 1MÑ+ñG r   c               ó   € V ^8„  d   QhRR/# rQ   r   )r%   s   "r   r&   r‡   ×   s   € ÷ 	ñ 	˜ñ 	r   c                	óx   € V P                   '       g    \        R \        ^R7       R# R#   \         d     R# i ; i)z4Iterator was garbage collected before it was closed.r)   N)rŒ   r   r   Ú	ExceptionrM   s   &r   Ú__del__ÚGuardedIterator.__del__×   s:   € Ø�{�{ˆ{ðÜØJÜØ ÷ñ øô ô Úðús   ”* ª9¸9)r‰   r‹   rt   rŒ   r…   N)
r   r   r   r   r7   rN   rŠ   rU   r§   r   r   r   r   r�   r�   …   s!   † õ
õõõ"/÷b	ñ 	r   r�   c                  ób   € ] tR t^ãtRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
RtR# )ÚLintMiddlewarea`  Warns about common errors in the WSGI and HTTP behavior of the
server and wrapped application. Some of the issues it checks are:

-   invalid status codes
-   non-bytes sent to the WSGI server
-   strings returned from the WSGI application
-   non-empty conditional responses
-   unquoted etags
-   relative URLs in the Location header
-   unsafe calls to wsgi.input
-   unclosed iterators

Error information is emitted using the :mod:`warnings` module.

:param app: The WSGI application to wrap.

.. code-block:: python

    from werkzeug.middleware.lint import LintMiddleware
    app = LintMiddleware(app)
c               ó    € V ^8„  d   QhRRRR/# )r   Úappr
   r#   r$   r   )r%   s   "r   r&   ÚLintMiddleware.__annotate__ú   s   € ÷ ñ ˜Oð °ñ r   c                	ó   € Wn         R # r2   ©r¬   )r6   r¬   s   &&r   r7   ÚLintMiddleware.__init__ú   s   € ØŽr   c               ó    € V ^8„  d   QhRRRR/# )r   Úenvironr   r#   r$   r   )r%   s   "r   r&   r­   ý   s   € ÷ *ñ * _ð *¸ñ *r   c                	óà  € \        V4      \        Jd   \        R \        ^R7       R F"  pW!9  g   K  \        RV: R2\        ^R7       K$  	  VR,          R8w  d   \        R\        ^R7       VP	                  RR4      pVP	                  RR4      pV'       d%   V^ ,          R	8w  d   \        R
V: 2\        ^R7       V'       d)   V^ ,          R	8w  d   \        RV: 2\        ^R7       R# R# R# )z/WSGI environment is not a standard Python dict.r)   úwsgi.versionzRequired environment key z
 not foundz"Environ is not a WSGI 1.0 environ.ÚSCRIPT_NAMEÚ Ú	PATH_INFOÚ/z+'SCRIPT_NAME' does not start with a slash: z)'PATH_INFO' does not start with a slash: N)	ÚREQUEST_METHODÚSERVER_NAMEÚSERVER_PORTr´   ú
wsgi.inputúwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_once)é   r@   )r"   Údictr   r   rš   )r6   r²   r¡   Úscript_nameÚ	path_infos   &&   r   Úcheck_environÚLintMiddleware.check_environý   sÞ   € Ü�‹=¤Ó$ÜØAÜØõó


ˆCð Ö!ÜØ/°©w°jÐAÜØ ÷ñ

ð" �>Õ" fÔ,ÜÐ5´{ÈqÕQà—k‘k -°Ó4ˆØ—K‘K ¨RÓ0ˆ	ç˜; q�>¨SÔ0ÜØ=¸k¹_ÐMÜØõ÷ ˜ 1�¨Ô,ÜØ;¸I¹=ÐIÜØ÷ñ -‰9r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Ústatusr   rž   zlist[tuple[str, str]]Úexc_infoz?None | tuple[type[BaseException], BaseException, TracebackType]r#   r†   r   )r%   s   "r   r&   r­   )  s3   € ÷ 2(ñ 2(àð2(ð 'ð2(ð Tð	2(ð
 
ñ2(r   c                	óž  € \        R V\        4       VP                  R^4      ^ ,          p\        V4      ^8w  g   VP	                  4       '       g   \        R\        ^R7       \        V4      ^8  g   V^,          R8w  d   \        RV: R2\        ^R7       \        V4      pV^d8  d   \        R\        ^R7       \        V4      \        Jd   \        R\        ^R7       V F�  p\        V4      \        Jg   \        V4      ^8w  d   \        R	\        ^R7       Vw  rx\        V4      \        Jg   \        V4      \        Jd   \        R
\        ^R7       VP                  4       R 8X  g   K‹  \        R\        ^R7       KŸ  	  Ve)   \        V\        4      '       g   \        R\        ^R7       \        V4      p	V P                  V	4       WY3# )rÅ   Nz!Status code must be three digits.r)   Ú zInvalid value for status zJ. Valid status strings are three digits, a space and a status explanation.zStatus code < 100 detected.zHeader list is not a list.z#Header items must be 2-item tuples.z'Header keys and values must be strings.zFThe status header is not supported due to conflicts with the CGI spec.zInvalid value for exc_info.)r+   r   ÚsplitrA   Ú	isdecimalr   r   r›   r"   ÚlistÚtuplerœ   Ú
isinstancer   Úcheck_headers)
r6   rÅ   rž   rÆ   Ústatus_code_strr�   ÚitemÚnameÚvalueÚheaders_objs
   &&&&      r   Úcheck_start_responseÚ#LintMiddleware.check_start_response)  s}  € ô 	�8˜V¤SÔ)Ø Ÿ,™, t¨QÓ/°Õ2ˆäˆÓ 1Ô$¨O×,EÑ,E×,GÒ,GÜÐ4´kÈaÕPäˆv‹;˜Œ?˜f Q�i¨3Ô.ÜØ+¨F©:ð 6=ð =äØõ	ô ˜/Ó*ˆà˜ÔÜÐ.´ÈÕJä�‹=¤Ó$ÜÐ-¬{ÀqÕIãˆDÜ�D‹z¤Ó&¬#¨d«)°q¬.ÜÐ:¼KÐTUÕVØ‰KˆDÜ�D‹z¤Ó$¬¨U«¼3Ó(>ÜØ=¼{ÐWXõð �z‰z‹|˜xÖ'Üð4äØ ÷	ñ ð  Ò¬
°8¼U×(CÒ(CÜÐ.´ÈÕJä˜gÓ&ˆØ×Ñ˜;Ô'àÐ'Ð'r   c               ó    € V ^8„  d   QhRRRR/# )r   rž   r   r#   r$   r   )r%   s   "r   r&   r­   ]  s   € ÷ ñ  Wð °ñ r   c                	ó¨  € VP                  R 4      pVew   VP                  R4      '       d3   VP                  R4      '       d   \        R\        ^R7       VR,          pVR,          VRR u;8X  d   R8X  g   M \        R\        ^R7       VP                  R	4      pVe2   \	        V4      P
                  '       g   \        R
\        ^R7       R# R# R# )ÚetagNúw/z)Weak etag indicator should be upper case.r)   :r   NN:Nr¾   NÚ"zUnquoted etag emitted.Úlocationz+Absolute URLs required for location header.)zW/rÙ   éÿÿÿÿ)rš   Ú
startswithr   r   r   Únetloc)r6   rž   rØ   rÛ   s   &&  r   rÎ   ÚLintMiddleware.check_headers]  s´   € Ø�{‰{˜6Ó"ˆàÒØ�‰˜|×,Ò,Ø—?‘? 4×(Ò(ÜØCÜ#Ø#$õð ˜B•x�à˜•H  R S 	Ö0¨SÖ0ÜÐ-¬{ÀqÕIà—;‘;˜zÓ*ˆàÒÜ˜HÓ%×,×,Ð,ÜØAÜØ ÷ñ -ñ  r   c               ó    € V ^8„  d   QhRRRR/# )r   Úapp_iterr„   r#   r$   r   )r%   s   "r   r&   r­   x  s   € ÷ ñ Ð'8ð ¸Tñ r   c                	óZ   € \        V\        4      '       d   \        R \        ^R7       R# R# )z The application returned a string. The response will send one character at a time to the client, which will kill performance. Return a list or iterable instead.r)   N)rÍ   r   r   r   )r6   rá   s   &&r   Úcheck_iteratorÚLintMiddleware.check_iteratorx  s)   € Ü�h¤×$Ò$Üð6ô Ø÷ñ %r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r<   r=   Úkwargsr#   r„   r   )r%   s   "r   r&   r­   ‚  s"   € ÷ 5
ñ 5
˜eð 5
¨uð 5
Ð9Jñ 5
r   c                	ó,  a aaa€ \        V4      ^8w  d   \        R\        ^R7       V'       d   \        R\        ^R7       V^ ,          pV^,          oS P                  V4       \	        VR,          4      VR&   \        VR,          4      VR&   \        VR&   . o. oR VVV V3R llpS P                  V\        P                  ! R	V4      4      pS P                  V4       \        V\        P                  ! \        \        \        3,          S4      S4      # )
r   zA WSGI app takes two arguments.r)   z+A WSGI app does not take keyword arguments.r¼   r½   zwsgi.file_wrapperc               ó$   € V ^8„  d   QhRRRRRR/# )r   r<   r=   ræ   r#   zt.Callable[[bytes], None]r   )r%   s   "r   r&   Ú-LintMiddleware.__call__.<locals>.__annotate__™  s)   € ÷ 	Sñ 	SØð	SØ$)ð	Sà&ñ	Sr   c                 ó@  <€ \        V 4      R9  d    \        R\        V 4       R2\        ^R7       V'       d   \        R\        ^R7       V ^ ,          pV ^,          p\        V 4      ^8X  d
   V ^,          MRpSP                  W#V4      SR&   \	        S! W#V4      S4      # )r   zInvalid number of arguments: z, expected 2 or 3.r)   z1'start_response' does not take keyword arguments.N:NNN>   r   é   )rA   r   r   rÔ   rr   )	r<   ræ   rÅ   rž   rÆ   rt   r…   r6   Ústart_responses	   *,   €€€€r   Úchecking_start_responseÚ8LintMiddleware.__call__.<locals>.checking_start_response™  s    ø€ ô �4‹y Ô&ÜØ3´C¸³I°;Ð>PÐQÜØ õ÷ ÜØGÜØ õð ˜q�'ˆFØ-1°!­WˆGô ˜t›9¨œ>��Q–¨tð ð "×6Ñ6°vÈÓQˆK˜‰NÜ¡¨vÀÓ IÈ6ÓRÐRr   r	   )rA   r   r   rÂ   r-   rY   r   r¬   ÚtÚcastrã   r�   rÌ   r›   r   )	r6   r<   ræ   r²   rí   rá   rt   r…   rì   s	   f*,   @@@r   r~   ÚLintMiddleware.__call__‚  sï   û€ Üˆt‹9˜Œ>ÜÐ2´KÈAÕNçÜØ=¼{ÐWXõð $(¨¥7ˆØ(,¨Q­ˆà×Ñ˜7Ô#Ü +¨G°LÕ,AÓ Bˆ�ÑÜ!,¨W°]Õ-CÓ!Dˆ�Ñô (3ˆÐ#Ñ$à#%ˆØˆ÷	Só 	Sð4 —8‘8˜G¤Q§V¢V¨OÐ=TÓ%UÓVˆØ×Ñ˜HÔ%ÜØ”a—f’fœU¤3¬ <Õ0°+Ó>Àó
ð 	
r   r¯   N)r   r   r   r   r   r7   rÂ   rÔ   rÎ   rã   r~   r   r   r   r   rª   rª   ã   s,   † ñõ,õ*õX2(õhõ6÷5
ñ 5
r   rª   ) r   Ú
__future__r   Útypingrï   Útypesr   Úurllib.parser   Úwarningsr   Údatastructuresr   Úhttpr   Úwsgir   ÚTYPE_CHECKINGÚ_typeshed.wsgir	   r
   r   ÚWarningr   r   r   r+   r-   rY   rr   r�   rª   r   r   r   Ú<module>rý      s�   ðñõ #ã Ý Ý !Ý å $Ý #Ý à‡?‡?€?Ý,Ý.Ý.ô+�'ô +ô+�'ô +ð 8;÷ 
÷1ñ 1÷hñ ÷($ñ $÷[ñ [÷|T
ó T
r   