§
    ¥”joG  ã                   ó–  — d 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mZ ddlmZ ddlmZ ddlmZmZmZmZ d	d
lmZ d	dlmZ  ej        d¦  «        Z ej        d¦  «        Z  ej!        ¦   «         Z"	  ej#        e"¦  «        j$        dk    rdZ"n# e%$ r dZ"Y nw xY wde› �dddœZ& G d„ de¦  «        Z'd„ Z(d„ Z)d„ Z*d+d„Z+d„ Z,d„ Z-d„ Z.d„ Z/	 	 d,d „Z0ej1        	 	 d-d!„¦   «         Z2 G d"„ d#e3¦  «        Z4 G d$„ d%e5¦  «        Z6 G d&„ d'ej7        ¦  «        Z8 G d(„ d)¦  «        Z9ej1        d*„ ¦   «         Z:dS ).z9Various utility functions and classes for URL management.é    N)ÚEmailMessage)ÚGzipFile)ÚBytesIOÚStringIO)ÚPath)Úrequest)ÚquoteÚunquoteÚurljoinÚurlsplité   )Ú__version__)ÚLOGGERz^([a-zA-Z][a-zA-Z0-9.+-]+):s   ^([a-zA-Z][a-zA-Z0-9.+-]+):Úasciiúutf-8zWeasyPrint z*/*zgzip, deflate)z
User-AgentÚAcceptzAccept-Encodingc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚStreamingGzipFilec                 ó@   — t          j        | |¬¦  «         || _        d S )N©Úfileobj)r   Ú__init__Úfileobj_to_close)Úselfr   s     ú^/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/weasyprint/urls.pyr   zStreamingGzipFile.__init__+   s&   € ÝÔ˜$¨Ð0Ñ0Ô0Ð0Ø 'ˆÔÐÐó    c                 ó`   — t          j        | ¦  «         | j                             ¦   «          d S ©N)r   Úcloser   ©r   s    r   r   zStreamingGzipFile.close/   s-   € ÝŒ�tÑÔÐØÔ×#Ò#Ñ%Ô%Ð%Ð%Ð%r   c                 ó   — dS )NF© r    s    r   ÚseekablezStreamingGzipFile.seekable3   s   € Øˆur   N)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r"   r   r   r   r   *   sA   € € € € € ð(ð (ð (ð&ð &ð &ðð ð ð ð r   r   c                 ó´   — |                       d¦  «        r| S |                      |                       d¦  «        rt          nd¦  «        } t          | d¬¦  «        S )zDTurn a Unicode IRI into an ASCII-only URI that conforms to RFC 3986.zdata:úfile:r   s   /:?#[]@!$&'()*+,;=~%)Úsafe)Ú
startswithÚencodeÚFILESYSTEM_ENCODINGr	   ©Úurls    r   Ú
iri_to_urir/   7   sY   € à
‡~‚~�gÑÔð àˆ
à
�*Š*¨C¯NªN¸7Ñ,CÔ,CÐPÕ(Ð(ÈÑ
QÔ
Q€Cõ �Ð2Ð3Ñ3Ô3Ð3r   c                 ó@  — t          | t          ¦  «        rt          | ¦  «        } n/t          | t          ¦  «        r|                      t
          ¦  «        } |                      t          j        j	        df¦  «        }t          j         
                    | ¦  «        } |st          j                             | ¦  «        r| t          j        j	        z  } d}t          j        | ¦  «        } |r|                      d¦  «        s| dz  } |                      d¦  «        rd| › �S d| › �S )zVReturn file URL of `path`.

    Accepts 'str', 'bytes' or 'Path', returns 'str'.

    ú/Tz///r(   zfile://)Ú
isinstancer   ÚstrÚbytesÚdecoder,   ÚendswithÚosÚpathÚsepÚabspathÚisdirr   Úpathname2urlr*   )r8   Úwants_trailing_slashs     r   Úpath2urlr>   G   s  € õ �$�ÑÔð 0Ý�4‰yŒyˆˆÝ	�D�%Ñ	 Ô	 ð 0Ø�{Š{Õ.Ñ/Ô/ˆàŸ=š=­"¬'¬+°sÐ);Ñ<Ô<ÐÝŒ7�?Š?˜4Ñ Ô €DØð $�rœwŸ}š}¨TÑ2Ô2ð $ð 	•””ÑˆØ#ÐÝÔ Ñ%Ô%€Dàð  D§M¢M°#Ñ$6Ô$6ð Ø�‰ˆØ‡‚�uÑÔð  ð �tˆ~ˆ~Ðà˜ÐÐÐr   c                 óŒ   — t          | t          ¦  «        rt          nt          }t	          |                     | ¦  «        ¦  «        S )z4Return whether an URL (bytes or string) is absolute.)r2   r3   ÚUNICODE_SCHEME_REÚBYTES_SCHEME_REÚboolÚmatch)r.   Úschemes     r   Úurl_is_absoluterE   f   s6   € å",¨Sµ#Ñ"6Ô"6ÐKÕÐ½O€FÝ�—’˜SÑ!Ô!Ñ"Ô"Ð"r   Fc           	      ó”   — |                       |d¦  «                             ¦   «         }|rt          |pd||d| j        ||f¦  «        S dS )a'  Get the URI corresponding to the ``attr_name`` attribute.

    Return ``None`` if:

    * the attribute is empty or missing or,
    * the value is a relative URI but the document has no base URI and
      ``allow_relative`` is ``False``.

    Otherwise return an URI, absolute if possible.

    Ú z<%s %s="%s">N)ÚgetÚstripÚurl_joinÚtag)ÚelementÚ	attr_nameÚbase_urlÚallow_relativeÚvalues        r   Úget_url_attributerQ   l   s`   € ð �KŠK˜	 2Ñ&Ô&×,Ò,Ñ.Ô.€EØð -ÝØˆN˜˜E >°>ØŒ[˜) UÐ+ñ-ô -ð 	-ð-ð -r   c                 óä   — |                       d¦  «        rdt          | dd…         ¦  «        fS t          | ¦  «        rdt          | ¦  «        fS |rdt          t	          || ¦  «        ¦  «        fS dS )z.Get tuple describing internal or external URI.ú#Úinternalr   NÚexternal)r*   r
   rE   r/   r   )r.   rN   s     r   Úget_url_tuplerV      s†   € à
‡~‚~�cÑÔð @Ø�G C¨¨¨¤GÑ,Ô,Ð-Ð-Ý	˜Ñ	Ô	ð @Ø�J s™OœOÐ,Ð,Ø	ð @Ø�J¥w¨x¸Ñ'=Ô'=Ñ>Ô>Ð?Ð?ð@ð @r   c                 óÌ   — t          |¦  «        rt          |¦  «        S | rt          t          | |¦  «        ¦  «        S |rt          |¦  «        S t          j        d|› �g|¢R Ž  dS )zBLike urllib.urljoin, but warn if base_url is required but missing.z+Relative URI reference without a base URI: N)rE   r/   r   r   Úerror)rN   r.   rO   ÚcontextÚcontext_argss        r   rJ   rJ   ‰   s…   € å�sÑÔð 
Ý˜#‰ŒÐØ	ð Ý�' (¨CÑ0Ô0Ñ1Ô1Ð1Ø	ð Ý˜#‰ŒÐåŒØC¸'ÐCÐCð	àð	ð 	ð 	ð 	ð ˆtr   c                 óV  — |                       |d¦  «                             ¦   «         }|                     d¦  «        r.t          |¦  «        dk    rddt	          |dd…         ¦  «        ffS t          | ||d¬¦  «        }|r¨|r 	 t          |¦  «        }	 t          |¦  «        }|j        r.|dd	…         |dd	…         k    rddt	          |j        ¦  «        ffS nJ# t          $ r t          j
        d
|¦  «         Y n)w xY w# t          $ r t          j
        d|¦  «         Y nw xY wdd|ffS dS )z˜Get the URL value of an element attribute.

    Return ``('external', absolute_uri)``, or ``('internal',
    unquoted_fragment_id)``, or ``None``.

    rG   rS   r   r.   rT   NT)rO   éÿÿÿÿzMalformed base URL: %szMalformed URL: %srU   )rH   rI   r*   Úlenr
   rQ   r   ÚfragmentÚ
ValueErrorr   Úwarning)rL   rM   rN   Ú
attr_valueÚuriÚparsedÚparsed_bases          r   Úget_link_attributere   ˜   sƒ  € ð —’˜Y¨Ñ+Ô+×1Ò1Ñ3Ô3€JØ×Ò˜SÑ!Ô!ð >¥c¨*¡o¤o¸Ò&9Ð&9à˜
¥G¨J°q°r°r¬NÑ$;Ô$;Ð<Ð=Ð=Ý
˜G Y°ÈÐ
NÑ
NÔ
N€CØ
ð *Øð 	OðOÝ! #™œ�ðOÝ"*¨8Ñ"4Ô"4�Kð
 ”ð O¨6°#°2°#¬;¸+ÀcÀrÀcÔ:JÒ+JÐ+JØ %¨
µG¸F¼OÑ4LÔ4LÐ'MÐNÐNøøõ "ð Gð Gð GÝ”NÐ#;¸XÑFÔFÐFÐFÐFðGøøøøõ ð 9ð 9ð 9Ý”Ð2°CÑ8Ô8Ð8Ð8Ð8ð9øøøð ˜
 CÐ(Ð)Ð)ð*ð *s$   ÂC> ÂC ÃC;Ã:C;Ã>D ÄD c                 óB   — t          | ¦  «        r| nt          | ¦  «        S )z²Get a ``scheme://path`` URL from ``string``.

    If ``string`` looks like an URL, return it unchanged. Otherwise assume a
    filename and convert it to a ``file://`` URL.

    )rE   r>   )Ústrings    r   Ú
ensure_urlrh   ¶   s#   € õ % VÑ,Ô,ÐBˆ6ˆ6µ(¸6Ñ2BÔ2BÐBr   é
   c                 óŠ   — t          j        dt          ¬¦  «         t          ||||d¬¦  «        }|                     | ¦  «        S )z~Fetch an external resource such as an image or stylesheet.

    This function is deprecated, use ``URLFetcher`` instead.

    a-  default_url_fetcher is deprecated and will be removed in WeasyPrint 69.0, please use URLFetcher instead. For security reasons, HTTP redirects are not supported anymore with default_url_fetcher, but are with URLFetcher.

See https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#url-fetchers©ÚcategoryF)Úallow_redirects)ÚwarningsÚwarnÚDeprecationWarningÚ
URLFetcherÚfetch)r.   ÚtimeoutÚssl_contextÚhttp_headersÚallowed_protocolsÚfetchers         r   Údefault_url_fetcherrx   À   s_   € õ „Mð	Xõ $ð%ñ %ô %ð %õ Ø�˜lÐ,=ÈuðVñ Vô V€Gà�=Š=˜ÑÔÐr   c              #   óœ  K  — |�t          |¦  «        }|€t          ¦   «         }d„ | ||||fD ¦   «         }t          |¦  «        dk    r)d                     |¦  «        pd}	t	          d|	› �¦  «        ‚| �~|||dœ}
t          | d¦  «        r| |
d	<   n5t          | t          ¦  «        r| |
d
<   nt          | ¦  «        r| |
d<   n| |
d
<   t          di |
¤Ž}|5 }|V — ddd¦  «         dS # 1 swxY w Y   dS |�D|€t          |¦  «        }t          |d¦  «        5 }||ddfV — ddd¦  «         dS # 1 swxY w Y   dS |��t          ||¦  «        5 }|rE|j        dk    r:t          j        d|j        › d|j        › �¦  «         t#          d¦  «        |ddfV — n|€|j        }|||j        |j        fV — ddd¦  «         dS # 1 swxY w Y   dS |�C|€7t'          |dd¦  «        }|r$|                     d¦  «        st          |¦  «        }||ddfV — dS t          |t*          ¦  «        rt#          |¦  «        |ddfV — dS t-          |¦  «        |ddfV — dS )z†If only one input is given, return it.

    Yield a file object, the base url, the protocol encoding and the protocol mime-type.

    Nc                 ó   — g | ]}|®|‘ŒS r   r"   )Ú.0Úparams     r   ú
<listcomp>z!select_source.<locals>.<listcomp>ß   s(   € ð ð ð ØØÐð 	ØÐÐr   r   z, Únothingz!Expected exactly one source, got )rN   Úurl_fetcherÚcheck_css_mime_typeÚreadÚfile_objÚfilenamer.   Úrbztext/csszUnsupported stylesheet type z for rG   Únameú<r"   )rh   rq   r]   ÚjoinÚ	TypeErrorÚhasattrr2   r   rE   Úselect_sourcer>   Úopenrr   Úcontent_typer   rX   r.   r   ÚcharsetÚgetattrr*   r3   r   )Úguessrƒ   r.   r‚   rg   rN   r   r€   Úselected_paramsÚsourceÚkwargsÚresultÚresponser…   s                 r   rŠ   rŠ   Ò   s  è è € ð ÐÝ˜hÑ'Ô'ˆØÐÝ ‘l”lˆðð Ø! 8¨S°(¸FÐCðñ ô €Oõ ˆ?ÑÔ˜qÒ Ð Ø—’˜?Ñ+Ô+Ð8¨yˆÝÐD¸FÐDÐDÑEÔEÐEØ	Ð	à Ø&Ø#6ð
ð 
ˆõ
 �5˜&Ñ!Ô!ð 	'Ø!&ˆF�:ÑÐÝ˜�tÑ$Ô$ð 	'Ø!&ˆF�:ÑÐÝ˜UÑ#Ô#ð 	'Ø!ˆF�5‰MˆMà!&ˆF�:ÑÝÐ(Ð( Ð(Ð(ˆØð 	�vØˆLˆLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	à	Ð	ØÐÝ Ñ)Ô)ˆHÝ�(˜DÑ!Ô!ð 	1 XØ˜H d¨DÐ0Ð0Ð0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	1ð 	1à	ˆÝ�; Ñ$Ô$ð 		R¨Ø"ð R xÔ'<À
Ò'JÐ'JÝ”ð*°8Ô3Hð *ð *Ø#œ<ð*ð *ñ+ô +ð +õ ˜r‘l”l H¨d°DÐ8Ð8Ð8Ð8Ð8àÐ#Ø'œ|�HØ ¨(Ô*:¸HÔ<QÐQÐQÐQÐQð		Rð 		Rð 		Rñ 		Rô 		Rð 		Rð 		Rð 		Rð 		Rð 		Rð 		Rð 		Røøøð 		Rð 		Rð 		Rð 		Rð 		Rð 		Rð 
Ð	ØÐå˜8 V¨TÑ2Ô2ˆDàð ,˜DŸOšO¨CÑ0Ô0ð ,Ý% dÑ+Ô+�Ø˜ $¨Ð,Ð,Ð,Ð,Ð,Ð,å�f�cÑ"Ô"ð 	8Ý˜6Ñ"Ô" H¨d°DÐ8Ð8Ð8Ð8Ð8Ð8å˜&‘/”/ 8¨T°4Ð7Ð7Ð7Ð7Ð7Ð7s7   ÃC$Ã$C(Ã+C(Ä	D*Ä*D.Ä1D.Å	A#F9Æ9F=Ç F=c                   ó   — e Zd ZdZdS )ÚURLFetchingErrorz)Some error happened when fetching an URL.N©r$   r%   r&   Ú__doc__r"   r   r   r–   r–     s   € € € € € Ø3Ð3Ð3Ð3r   r–   c                   ó   — e Zd ZdZdS )ÚFatalURLFetchingErrorzESome error happened when fetching an URL and must stop the rendering.Nr—   r"   r   r   rš   rš     s   € € € € € ØOÐOÐOÐOr   rš   c                   óB   ‡ — e Zd ZdZ	 	 d
ˆ fd„	Zdˆ fd„	Zdd„Zd	„ Zˆ xZS )rq   a`  Fetcher of external resources such as images or stylesheets.

    :param int timeout: The number of seconds before HTTP requests are dropped.
    :param ssl.SSLContext ssl_context: An SSL context used for HTTPS requests.
    :param dict http_headers: Additional HTTP headers used for HTTP requests.
    :type allowed_protocols: :term:`sequence`
    :param allowed_protocols: A set of authorized protocols, :obj:`None` means all.
    :param bool allow_redirects: Whether HTTP redirects must be followed.
    :param bool fail_on_errors: Whether HTTP errors should stop the rendering.

    Another class inheriting from this class, with a ``fetch`` method that has a
    compatible signature, can be given as the ``url_fetcher`` argument to
    :class:`weasyprint.HTML` or :class:`weasyprint.CSS`.

    See :ref:`URL Fetchers` for more information and examples.

    ri   NTFc                 óf  •— t          ¦   «                              ¦   «          t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j	        ¦   «         t          j
        ¦   «         t          j        |¬¦  «        g	}|r&|                     t          j        ¦   «         ¦  «         |D ]}	|                      |	¦  «         Œ|| _        i t           ¥|pi ¥| _        || _        || _        d S )N)rY   )Úsuperr   r   ÚProxyHandlerÚUnknownHandlerÚHTTPHandlerÚHTTPDefaultErrorHandlerÚ
FTPHandlerÚFileHandlerÚHTTPErrorProcessorÚDataHandlerÚHTTPSHandlerÚappendÚHTTPRedirectHandlerÚadd_handlerÚ_timeoutÚHTTP_HEADERSÚ_http_headersÚ_allowed_protocolsÚ_fail_on_errors)r   rs   rt   ru   rv   rm   Úfail_on_errorsr’   ÚhandlersÚhandlerÚ	__class__s             €r   r   zURLFetcher.__init__0  s  ø€ õ 	‰Œ×ÒÑÔÐåÔ Ñ"Ô"¥GÔ$:Ñ$<Ô$<½gÔ>QÑ>SÔ>SÝÔ+Ñ-Ô-­wÔ/AÑ/CÔ/CÝÔÑ!Ô!¥7Ô#=Ñ#?Ô#?ÅÔATÑAVÔAVÝÔ ¨Ð5Ñ5Ô5ð	7ˆð
 ð 	;Ø�OŠO�GÔ7Ñ9Ô9Ñ:Ô:Ð:Øð 	&ð 	&ˆGØ×Ò˜WÑ%Ô%Ð%Ð%àˆŒØE¥ÐE°Ð1CÀÐEˆÔØ"3ˆÔØ-ˆÔÐÐr   c                 ó2  •— t                                |¦  «        x}st          d|› �¦  «        ‚|d                              ¦   «         }| j        �|| j        vrt          d|› �¦  «        ‚|dk    r|                     d¦  «        d         }t          |¦  «        }i | j        ¥|pi ¥}t          j	        ||¬¦  «        }t          ¦   «                              || j        ¬	¦  «        }|}d
|j        v r†|j        d
         }|j        d
= |dk    rt          |¬¦  «        }nZ|dk    rT|                     ¦   «         }		 t!          j        |	¦  «        }n*# t           j        $ r t!          j        |	d¦  «        }Y nw xY wt'          |j        ||j        |j        ¦  «        S )aE  Fetch a given URL.

        :returns: A :obj:`URLFetcherResponse` instance.
        :raises: An exception indicating failure, e.g. :obj:`ValueError` on
            syntactically invalid URL. All exceptions are catched internally by
            WeasyPrint, except when they inherit from :obj:`FatalURLFetchingError`.

        zNot an absolute URI: r   NzURI uses disallowed protocol: Úfileú?r   ©Úheaders)rs   zContent-EncodingÚgzipr   Údeflateiñÿÿÿ)r@   rC   r_   Úlowerr­   Úsplitr/   r¬   r   ÚRequestr�   r‹   rª   r·   r   r�   ÚzlibÚ
decompressrX   ÚURLFetcherResponser.   Ústatus)r   r.   r·   rC   rD   Úhttp_requestr”   ÚbodyÚcontent_encodingÚdatar²   s             €r   rr   zURLFetcher.fetchC  s¹  ø€ õ +×0Ò0°Ñ5Ô5Ð5�ð 	<ÝÐ:°SÐ:Ð:Ñ;Ô;Ð;Ø�q”—’Ñ!Ô!ˆð Ô"Ð.Ø˜TÔ4Ð4Ð4Ý Ð!GÀ#Ð!GÐ!GÑHÔHÐHð �VÒÐØ—)’)˜C‘.”. Ô#ˆCõ ˜‰oŒoˆð <�TÔ'Ð;¨G¨M°rÐ;ˆÝ” s°GÐ<Ñ<Ô<ˆÝ‘7”7—<’< °d´m�<ÑDÔDˆð ˆØ Ô!1Ð1Ð1Ø'Ô/Ð0BÔCÐØÔ Ð!3Ð4Ø 6Ò)Ð)Ý(°Ð:Ñ:Ô:��Ø! YÒ.Ð.Ø—}’}‘”�ð6Ýœ?¨4Ñ0Ô0�D�DøÝ”zð 6ð 6ð 6åœ?¨4°Ñ5Ô5�D�D�Dð6øøøõ " (¤,°°hÔ6FÈÌÑXÔXÐXs   Ä9E Å$E5Å4E5c                 ó    — t          |t          j        ¦  «        r |                      |j        |j        ¦  «        S |                      |¦  «        S r   )r2   r   r¼   rr   Úfull_urlr·   )r   r.   rÄ   rs   s       r   r‹   zURLFetcher.opent  s>   € Ý�c�7œ?Ñ+Ô+ð 	9Ø—:’:˜cœl¨C¬KÑ8Ô8Ð8Ø�zŠz˜#‰ŒÐr   c                 ó,   — |                       |¦  «        S r   )rr   )r   r.   s     r   Ú__call__zURLFetcher.__call__y  s   € Ø�zŠz˜#‰ŒÐr   )ri   NNNTFr   )NN)	r$   r%   r&   r˜   r   rr   r‹   rÈ   Ú__classcell__)r²   s   @r   rq   rq     s™   ø€ € € € € ðð ð$ CGØNSð.ð .ð .ð .ð .ð .ð&/Yð /Yð /Yð /Yð /Yð /Yðbð ð ð ð
ð ð ð ð ð ð r   rq   c                   ó�   — e Zd ZdZdd„Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	ed	„ ¦   «         Z
d
„ Zd„ Zed„ ¦   «         Zd„ ZdS )r¿   u  The HTTP response of an URL fetcher.

    :param str url: The URL of the HTTP response.
    :type body: :class:`str`, :class:`bytes` or :term:`file object`
    :param body: The body of the HTTP response.
    :type headers: dict or email.message.EmailMessage
    :param headers: The headers of the HTTP response.
    :param int status: The status of the HTTP response.

    Has the same interface as :class:`urllib.response.addinfourl`.

    If a :term:`file object` is given for the body, it is the callerâ€™s responsibility to
    call ``close()`` on it. The default function used internally to fetch data in
    WeasyPrint tries to close the file object after retreiving; but if this URL fetcher
    is used elsewhere, the file object has to be closed manually.

    NéÈ   c                 óü  — || _         || _        t          |t          ¦  «        r|| _        nJt          ¦   «         | _        |pi                      ¦   «         D ] \  }}	 || j        |<   Œ# t          $ r Y Œw xY wt          |d¦  «        r	|| _        d S t          |t          ¦  «        rD| j         
                    dd¦  «         t          |                     d¦  «        ¦  «        | _        d S t          |¦  «        | _        d S )Nr�   r�   r   )r.   rÀ   r2   r   r·   Úitemsr_   r‰   Ú	_file_objr3   Ú	set_paramr   r+   )r   r.   rÂ   r·   rÀ   r’   ÚkeyrP   s           r   r   zURLFetcherResponse.__init__�  s  € ØˆŒØˆŒå�g�|Ñ,Ô,ð 	Ø"ˆDŒLˆLå'™>œ>ˆDŒLØ&˜}¨"×3Ò3Ñ5Ô5ð ð ‘
��UðØ(-�D”L Ñ%Ð%øÝ!ð ð ð Ø�Dðøøøõ �4˜Ñ Ô ð 	+Ø!ˆDŒNˆNˆNÝ˜�cÑ"Ô"ð 	+ØŒL×"Ò" 9¨gÑ6Ô6Ð6Ý$ T§[¢[°Ñ%9Ô%9Ñ:Ô:ˆDŒNˆNˆNå$ T™]œ]ˆDŒNˆNˆNs   Á
A&Á&
A3Á2A3c                 ó&   —  | j         j        |i |¤ŽS r   )rÎ   r�   )r   Úargsr’   s      r   r�   zURLFetcherResponse.read¥  s   € Ø"ˆtŒ~Ô" DÐ3¨FÐ3Ð3Ð3r   c                 ó´   — 	 | j                              ¦   «          d S # t          $ r0 t          j        d| j        t          j        ¦   «         ¦  «         Y d S w xY w)Nz$Error when closing stream for %s:
%s)rÎ   r   Ú	Exceptionr   r`   r.   Ú	tracebackÚ
format_excr    s    r   r   zURLFetcherResponse.close¨  st   € ð	2ØŒN× Ò Ñ"Ô"Ð"Ð"Ð"øÝð 	2ð 	2ð 	2õ ŒNØ7Ø”�)Ô.Ñ0Ô0ñ2ô 2ð 2ð 2ð 2ð 2ð	2øøøs   ‚ �6AÁAc                 óÄ   — | j                              d¦  «        rEt          j        | j                              d¦  «        d                              d¦  «        ¦  «        S d S )Nr(   rµ   r   )r.   r*   r   Úurl2pathnamer»   Úremoveprefixr    s    r   r8   zURLFetcherResponse.path²  sY   € àŒ8×Ò˜wÑ'Ô'ð 	VÝÔ'¨¬¯ª°sÑ(;Ô(;¸AÔ(>×(KÒ(KÈGÑ(TÔ(TÑUÔUÐUð	Vð 	Vr   c                 ó4   — | j                              ¦   «         S r   )r·   Úget_content_typer    s    r   rŒ   zURLFetcherResponse.content_type·  s   € àŒ|×,Ò,Ñ.Ô.Ð.r   c                 ó6   — | j                              d¦  «        S )Nr�   )r·   Ú	get_paramr    s    r   r�   zURLFetcherResponse.charset»  s   € àŒ|×%Ò% iÑ0Ô0Ð0r   c                 ó   — | j         S r   r-   r    s    r   ÚgeturlzURLFetcherResponse.geturl¿  s	   € ØŒxˆr   c                 ó   — | j         S r   r¶   r    s    r   ÚinfozURLFetcherResponse.infoÂ  s
   € ØŒ|Ðr   c                 ó   — | j         S r   ©rÀ   r    s    r   ÚcodezURLFetcherResponse.codeÅ  s
   € àŒ{Ðr   c                 ó   — | j         S r   rã   r    s    r   ÚgetcodezURLFetcherResponse.getcodeÉ  s
   € ØŒ{Ðr   )NNrË   )r$   r%   r&   r˜   r   r�   r   Úpropertyr8   rŒ   r�   rß   rá   rä   ræ   r"   r   r   r¿   r¿   }  sì   € € € € € ðð ð"+ð +ð +ð +ð,4ð 4ð 4ð2ð 2ð 2ð ðVð Vñ „XðVð ð/ð /ñ „Xð/ð ð1ð 1ñ „Xð1ðð ð ðð ð ð ðð ñ „Xððð ð ð ð r   r¿   c              #   ó  K  — 	  | |¦  «        }n]# t           $ rP}t          | dd¦  «        rt          d|› d�¦  «        |‚t          t	          |¦  «        j        › d|› �¦  «        ‚d}~ww xY wt          |t          ¦  «        r¬t          j	        dt          ¬¦  «         d	|vr|                     d
|¦  «        |d	<   |                     d|                     d¦  «        ¦  «        |d<   |                     dd¦  «        }|                     d¦  «        x}r|d|› �z  }d|i|d<   t          di |¤Ž}t          |t          ¦  «        s
J d¦   «         ‚	 |V — |                     ¦   «          dS # |                     ¦   «          w xY w)aD  Fetch an ``url`` with ```url_fetcher``, fill in optional data, and clean up.

    Fatal errors must raise a ``FatalURLFetchingError`` that stops the rendering. All
    other exceptions are catched and raise an ``URLFetchingError``, that is usually
    catched by the code that fetches the resource and emits a warning.

    r®   FzError fetching "ú"z: NzReturning dicts in URL fetchers is deprecated and will be removed in WeasyPrint 69.0, please return URLFetcherResponse instead.rk   r.   Úredirected_urlr‚   rg   rÂ   Ú	mime_typezapplication/octet-streamÚencodingz
; charset=zContent-Typer·   zFURL fetcher must return either a dict or a URLFetcherResponse instancer"   )rÔ   rŽ   rš   r–   Útyper$   r2   Údictrn   ro   rp   rH   r¿   r   )r   r.   ÚresourceÚ	exceptionrŒ   r�   s         r   rr   rr   Í  sá  è è € ðKØ�;˜sÑ#Ô#ˆˆøÝð Kð Kð KÝ�;Ð 1°5Ñ9Ô9ð 	RÝ'Ð(A¸3Ð(AÐ(AÐ(AÑBÔBÈ	ÐQÝ¥$ y¡/¤/Ô":ÐIÐI¸iÐIÐIÑJÔJÐJøøøøðKøøøõ
 �(�DÑ!Ô!ð 2ÝŒðLå'ð	)ñ 	)ô 	)ð 	)ð ˜Ð Ð Ø&ŸlšlÐ+;¸SÑAÔAˆH�U‰OØ#Ÿ<š<¨
°H·L²LÀÑ4JÔ4JÑKÔKˆ�ÑØ—|’| KÐ1KÑLÔLˆØ—l’l :Ñ.Ô.Ð.ˆ7ð 	3ØÐ2¨Ð2Ð2Ñ2ˆLØ-¨|Ð<ˆ�ÑÝ%Ð1Ð1¨Ð1Ð1ˆå�hÕ 2Ñ3Ô3ð Rð RØPñRô Rð RðØˆˆˆà�ŠÑÔÐÐÐøˆ�ŠÑÔÐÐøøøs!   „ �
A*šAA%Á%A*ÅE( Å(E>)F)ri   NNN)NNNNNNNF);r˜   ÚcodecsÚ
contextlibÚos.pathr7   ÚreÚsysrÕ   rn   r½   Úemail.messager   r¸   r   Úior   r   Úpathlibr   Úurllibr   Úurllib.parser	   r
   r   r   rG   r   Úloggerr   Úcompiler@   rA   Úgetfilesystemencodingr,   Úlookupr…   ÚLookupErrorr«   r   r/   r>   rE   rQ   rV   rJ   re   rh   rx   ÚcontextmanagerrŠ   ÚIOErrorr–   ÚBaseExceptionrš   ÚOpenerDirectorrq   r¿   rr   r"   r   r   ú<module>r     sŠ  ðØ ?Ð ?à €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð
 �B”JÐ<Ñ=Ô=Ð Ø�"”*Ð;Ñ<Ô<€ð 0�cÔ/Ñ1Ô1Ð ð"Ø€v„}Ð(Ñ)Ô)Ô.°'Ò9Ð9Ø%ÐøøØð "ð "ð "Ø!ÐÐÐð"øøøð . Ð-Ð-ØØ&ðð €ð
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ð4ð 4ð 4ð  ð  ð  ð>#ð #ð #ð-ð -ð -ð -ð&@ð @ð @ðð ð ð*ð *ð *ð<Cð Cð Cð IMØ*.ðð ð ð ð$ ÔØMQØGLð?8ð ?8ð ?8ñ Ôð?8ðD4ð 4ð 4ð 4ð 4�wñ 4ô 4ð 4ðPð Pð Pð Pð P˜Mñ Pô Pð Pð]ð ]ð ]ð ]ð ]�Ô'ñ ]ô ]ð ]ð@Mð Mð Mð Mð Mñ Mô Mð Mð` Ôð#ð #ñ Ôð#ð #ð #s   ÂB' Â'B1Â0B1