§
    ŒŸj¨U  ã                   ó´  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ  e	d¦  «        Z
ddgdgdgd	œZ e	d
¦  «        Zd                     d„  e ed d¦  «         edd¦  «         edd¦  «        ¦  «        D ¦   «         ¦  «        Z ej        dez   dz   ej        ¦  «        ZdZ G d„ de¦  «        Z G d„ d¦  «        Zd„ Z G d„ dej        ¦  «        ZdS )é    )ÚchainN)Úunescape)Úhtml5lib_shim)Ú
parse_shim)ÚaÚabbrÚacronymÚbÚ
blockquoteÚcodeÚemÚiÚliÚolÚstrongÚulÚhrefÚtitle)r   r   r	   )ÚhttpÚhttpsÚmailtoÚ c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Úchr)Ú.0Úcs     ú]/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/bleach/sanitizer.pyú
<listcomp>r   *   s   € ÐFÐFÐF�…Sˆ�V„VÐFÐFÐFó    é	   é   é   é   é    ú[ú]ú?c                   ó   — e Zd ZdS )ÚNoCssSanitizerWarningN)Ú__name__Ú
__module__Ú__qualname__r   r    r   r*   r*   5   s   € € € € € Ø€Dr    r*   c                   ó.   — e Zd ZdZeeeddddfd„Zd„ ZdS )ÚCleanera¨  Cleaner for cleaning HTML fragments of malicious content

    This cleaner is a security-focused function whose sole purpose is to remove
    malicious content from a string such that it can be displayed as content in
    a web page.

    To use::

        from bleach.sanitizer import Cleaner

        cleaner = Cleaner()

        for text in all_the_yucky_things:
            sanitized = cleaner.clean(text)

    .. Note::

       This cleaner is not designed to use to transform content to be used in
       non-web-page contexts.

    .. Warning::

       This cleaner is not thread-safe--the html parser has internal state.
       Create a separate cleaner per thread!


    FTNc                 óf  — || _         || _        || _        || _        || _        |pg | _        || _        t          j        | j         | j        dd¬¦  «        | _	        t          j
        d¦  «        | _        t          j        dddddd¬¦  «        | _        |€šg }t          |t          ¦  «        r|}n_t          |t           ¦  «        rJg }|                     ¦   «         D ]3}	t          |	t          t$          f¦  «        r|                     |	¦  «         Œ4d|v rt)          j        d	t,          ¬
¦  «         dS dS dS )a8  Initializes a Cleaner

        :arg set tags: set of allowed tags; defaults to
            ``bleach.sanitizer.ALLOWED_TAGS``

        :arg dict attributes: allowed attributes; can be a callable, list or dict;
            defaults to ``bleach.sanitizer.ALLOWED_ATTRIBUTES``

        :arg set protocols: set of allowed protocols for links; defaults
            to ``bleach.sanitizer.ALLOWED_PROTOCOLS``

        :arg bool strip: whether or not to strip disallowed elements

        :arg bool strip_comments: whether or not to strip HTML comments

        :arg list filters: list of html5lib Filter classes to pass streamed content through

            .. seealso:: http://html5lib.readthedocs.io/en/latest/movingparts.html#filters

            .. Warning::

               Using filters changes the output of ``bleach.Cleaner.clean``.
               Make sure the way the filters change the output are secure.

        :arg CSSSanitizer css_sanitizer: instance with a "sanitize_css" method for
            sanitizing style attribute values and style text; defaults to None

        F)ÚtagsÚstripÚconsume_entitiesÚnamespaceHTMLElementsÚetreeÚalwaysT)Úquote_attr_valuesÚomit_optional_tagsÚescape_lt_in_attrsÚresolve_entitiesÚsanitizeÚalphabetical_attributesNÚstylez7'style' attribute specified, but css_sanitizer not set.)Úcategory)r1   Ú
attributesÚ	protocolsr2   Ústrip_commentsÚfiltersÚcss_sanitizerr   ÚBleachHTMLParserÚparserÚgetTreeWalkerÚwalkerÚBleachHTMLSerializerÚ
serializerÚ
isinstanceÚlistÚdictÚvaluesÚtupleÚextendÚwarningsÚwarnr*   )
Úselfr1   r?   r@   r2   rA   rB   rC   Úattributes_valuesrM   s
             r   Ú__init__zCleaner.__init__V   st  € ðL ˆŒ	Ø$ˆŒØ"ˆŒØˆŒ
Ø,ˆÔØ�} "ˆŒØ*ˆÔå#Ô4Ø”Ø”*Ø"Ø"'ð	
ñ 
ô 
ˆŒõ $Ô1°'Ñ:Ô:ˆŒÝ'Ô<Ø&Ø$Ø#ð #àà$)ð
ñ 
ô 
ˆŒð Ð ð !#ÐÝ˜*¥dÑ+Ô+ð 9Ø$.Ð!Ð!å˜J­Ñ-Ô-ð 9Ø$&Ð!Ø(×/Ò/Ñ1Ô1ð 9ð 9�FÝ! &­4µ¨-Ñ8Ô8ð 9Ø)×0Ò0°Ñ8Ô8Ð8øàÐ+Ð+Ð+Ý”ØMÝ2ðñ ô ð ð ð ð !Ð ð ,Ð+r    c           	      óš  — t          |t          ¦  «        s"d|j        j        ›d�dz   }t	          |¦  «        ‚|sdS | j                             |¦  «        }t          |                      |¦  «        | j	        | j
        | j        | j        | j        | j        ¬¦  «        }| j        D ]} ||¬¦  «        }Œ| j                             |¦  «        S )zÐCleans text and returns sanitized result as unicode

        :arg str text: text to be cleaned

        :returns: sanitized text as unicode

        :raises TypeError: if ``text`` is not a text type

        zargument cannot be of z type, zmust be of text typer   )ÚsourceÚallowed_tagsr?   Ústrip_disallowed_tagsÚstrip_html_commentsrC   Úallowed_protocols)rV   )rJ   ÚstrÚ	__class__r+   Ú	TypeErrorrE   ÚparseFragmentÚBleachSanitizerFilterrG   r1   r?   r2   rA   rC   r@   rB   rI   Úrender)rR   ÚtextÚmessageÚdomÚfilteredÚfilter_classs         r   ÚcleanzCleaner.clean«   sè   € õ ˜$¥Ñ$Ô$ð 	%àK¨¬Ô)@ÐKÐKÐKØ(ñ)ð õ ˜GÑ$Ô$Ð$àð 	Ø�2àŒk×'Ò'¨Ñ-Ô-ˆÝ(Ø—;’;˜sÑ#Ô#ØœØ”Ø"&¤*Ø $Ô 3ØÔ,Ø"œnð
ñ 
ô 
ˆð !œLð 	5ð 	5ˆLØ#�|¨8Ð4Ñ4Ô4ˆHˆHàŒ×%Ò% hÑ/Ô/Ð/r    )	r+   r,   r-   Ú__doc__ÚALLOWED_TAGSÚALLOWED_ATTRIBUTESÚALLOWED_PROTOCOLSrT   rf   r   r    r   r/   r/   9   s]   € € € € € ðð ð< Ø%Ø#ØØØØðSð Sð Sð Sðj#0ð #0ð #0ð #0ð #0r    r/   c                 ó´   ‡ — t          ‰ ¦  «        r‰ S t          ‰ t          ¦  «        rˆ fd„}|S t          ‰ t          ¦  «        rˆ fd„}|S t	          d¦  «        ‚)a0  Generates attribute filter function for the given attributes value

    The attributes value can take one of several shapes. This returns a filter
    function appropriate to the attributes value. One nice thing about this is
    that there's less if/then shenanigans in the ``allow_token`` method.

    c                 ó¼   •— | ‰v r*‰|          }t          |¦  «        r || ||¦  «        S ||v rdS d‰v r(‰d         }t          |¦  «        r || ||¦  «        S ||v S dS )NTÚ*F)Úcallable)ÚtagÚattrÚvalueÚattr_valr?   s       €r   Ú_attr_filterz.attribute_filter_factory.<locals>._attr_filterÞ   s“   ø€ Ø�jÐ Ð Ø% cœ?�Ý˜HÑ%Ô%ð 6Ø#˜8 C¨¨uÑ5Ô5Ð5à˜8Ð#Ð#Ø˜4à�jÐ Ð Ø% cœ?�Ý˜HÑ%Ô%ð 6Ø#˜8 C¨¨uÑ5Ô5Ð5à˜xÐ'Ð'à�5r    c                 ó   •— |‰v S ©Nr   )ro   rp   rq   r?   s      €r   rs   z.attribute_filter_factory.<locals>._attr_filterô   s   ø€ Ø˜:Ð%Ð%r    z3attributes needs to be a callable, a list or a dict)rn   rJ   rL   rK   Ú
ValueError)r?   rs   s   ` r   Úattribute_filter_factoryrw   Ñ   s�   ø€ õ �
ÑÔð ØÐå�*�dÑ#Ô#ð ð	ð 	ð 	ð 	ð 	ð$ Ðå�*�dÑ#Ô#ð ð	&ð 	&ð 	&ð 	&ð 	&ð Ðå
ÐJÑ
KÔ
KÐKr    c            	       óz   — e Zd ZdZeeeej        ej	        ej
        dddf	d„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )r_   zmhtml5lib Filter that sanitizes text

    This filter can be used anywhere html5lib filters can be used.

    FTNc                 ó  — t           j                             | |¦  «         t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        || _        |	| _	        || _
        || _        |
| _        || _        dS )a]  Creates a BleachSanitizerFilter instance

        :arg source: html5lib TreeWalker stream as an html5lib TreeWalker

        :arg set allowed_tags: set of allowed tags; defaults to
            ``bleach.sanitizer.ALLOWED_TAGS``

        :arg dict attributes: allowed attributes; can be a callable, list or dict;
            defaults to ``bleach.sanitizer.ALLOWED_ATTRIBUTES``

        :arg set allowed_protocols: set of allowed protocols for links; defaults
            to ``bleach.sanitizer.ALLOWED_PROTOCOLS``

        :arg attr_val_is_uri: set of attributes that have URI values

        :arg svg_attr_val_allows_ref: set of SVG attributes that can have
            references

        :arg svg_allow_local_href: set of SVG elements that can have local
            hrefs

        :arg bool strip_disallowed_tags: whether or not to strip disallowed
            tags

        :arg bool strip_html_comments: whether or not to strip HTML comments

        :arg CSSSanitizer css_sanitizer: instance with a "sanitize_css" method for
            sanitizing style attribute values and style text; defaults to None

        N)r   ÚFilterrT   Ú	frozensetrW   rZ   rw   Úattr_filterrX   rY   Úattr_val_is_uriÚsvg_attr_val_allows_refrC   Úsvg_allow_local_href)rR   rV   rW   r?   rZ   r}   r~   r   rX   rY   rC   s              r   rT   zBleachSanitizerFilter.__init__  s…   € õ` 	Ô×%Ò% d¨FÑ3Ô3Ð3å% lÑ3Ô3ˆÔÝ!*Ð+<Ñ!=Ô!=ˆÔå3°JÑ?Ô?ˆÔØ%:ˆÔ"Ø#6ˆÔ à.ˆÔØ'>ˆÔ$Ø*ˆÔØ$8ˆÔ!Ð!Ð!r    c              #   óˆ   K  — |D ]<}|                       |¦  «        }|sŒt          |t          ¦  «        r	|E d {V —† Œ8|V — Œ=d S ru   )Úsanitize_tokenrJ   rK   )rR   Útoken_iteratorÚtokenÚrets       r   Úsanitize_streamz%BleachSanitizerFilter.sanitize_streamA  sm   è è € Ø#ð 		ð 		ˆEØ×%Ò% eÑ,Ô,ˆCàð Øå˜#�tÑ$Ô$ð Ø��������à�	�	�	�	ð		ð 		r    c              #   óJ  K  — g }|D ]u}|rK|d         dk    r|                      |¦  «         Œ&d                     d„ |D ¦   «         ¦  «        ddœ}g }|V — n"|d         dk    r|                      |¦  «         Œq|V — Œvd                     d„ |D ¦   «         ¦  «        ddœ}|V — dS )z/Merge consecutive Characters tokens in a streamÚtypeÚ
Charactersr   c                 ó   — g | ]
}|d          ‘ŒS ©Údatar   ©r   Ú
char_tokens     r   r   z:BleachSanitizerFilter.merge_characters.<locals>.<listcomp>[  ó   € ÐTÐTÐT°J˜Z¨Ô/ÐTÐTÐTr    )r‹   r‡   c                 ó   — g | ]
}|d          ‘ŒS rŠ   r   rŒ   s     r   r   z:BleachSanitizerFilter.merge_characters.<locals>.<listcomp>i  rŽ   r    N)ÚappendÚjoin)rR   r‚   Úcharacters_bufferrƒ   Ú	new_tokens        r   Úmerge_charactersz&BleachSanitizerFilter.merge_charactersM  s  è è € àÐà#ð 	ð 	ˆEØ ð Ø˜”= LÒ0Ð0Ø%×,Ò,¨UÑ3Ô3Ð3Øð
 !#§¢ØTÐTÐBSÐTÑTÔTñ!ô !ð !-ð	!ð !�Ið )+Ð%Ø#�O�O�O�Oà�v” ,Ò.Ð.Ø!×(Ò(¨Ñ/Ô/Ð/ØàˆKˆKˆKˆKð —G’GÐTÐTÐBSÐTÑTÔTÑUÔUØ ð
ð 
ˆ	ð ˆˆˆˆˆr    c                 óŒ   — |                       |                      t          j                             | ¦  «        ¦  «        ¦  «        S ru   )r”   r…   r   rz   Ú__iter__)rR   s    r   r–   zBleachSanitizerFilter.__iter__n  s<   € Ø×$Ò$Ø× Ò ¥Ô!5×!>Ò!>¸tÑ!DÔ!DÑEÔEñ
ô 
ð 	
r    c                 ó>  — |d         }|dv rB|d         | j         v r|                      |¦  «        S | j        rdS |                      |¦  «        S |dk    r-| j        s$t          j        |d         ddd	œ¬
¦  «        |d<   |S dS |dk    r|                      |¦  «        S |S )aÕ  Sanitize a token either by HTML-encoding or dropping.

        Unlike sanitizer.Filter, allowed_attributes can be a dict of {'tag':
        ['attribute', 'pairs'], 'tag': callable}.

        Here callable is a function with two arguments of attribute name and
        value. It should return true of false.

        Also gives the option to strip tags instead of encoding.

        :arg dict token: token to sanitize

        :returns: token or list of tokens

        r‡   )ÚStartTagÚEndTagÚEmptyTagÚnameNÚCommentr‹   z&quot;z&#x27;)ú"ú')Úentitiesrˆ   )rW   Úallow_tokenrX   Údisallowed_tokenrY   r   ÚescapeÚsanitize_characters)rR   rƒ   Ú
token_types      r   r�   z$BleachSanitizerFilter.sanitize_tokens  sÙ   € ð  ˜6”]ˆ
ØÐ;Ð;Ð;Ø�VŒ} Ô 1Ð1Ð1Ø×'Ò'¨Ñ.Ô.Ð.àÔ+ð 4Ø�tð ×,Ò,¨UÑ3Ô3Ð3à˜9Ò$Ð$ØÔ+ð å -Ô 4Ø˜&”M°(ÀÐ,JÐ,Jð!ñ !ô !��f‘ð �à�tà˜<Ò'Ð'Ø×+Ò+¨EÑ2Ô2Ð2ð ˆLr    c                 ó&  — |                      dd¦  «        }|s|S t                               t          |¦  «        }||d<   d|vr|S g }t	          j        |¦  «        D ]´}|sŒ|                     d¦  «        r‚t	          j        |¦  «        }|�l|dk    r|                     dddœ¦  «         n|                     d|d	œ¦  «         |t          |¦  «        d
z   d…         }|r|                     d|dœ¦  «         Œœ|                     d|dœ¦  «         Œµ|S )a½  Handles Characters tokens

        Our overridden tokenizer doesn't do anything with entities. However,
        that means that the serializer will convert all ``&`` in Characters
        tokens to ``&amp;``.

        Since we don't want that, we extract entities here and convert them to
        Entity tokens so the serializer will let them be.

        :arg token: the Characters token to work on

        :returns: a list of tokens

        r‹   r   ú&NÚamprˆ   )r‡   r‹   ÚEntity)r‡   r›   é   )
ÚgetÚINVISIBLE_CHARACTERS_REÚsubÚINVISIBLE_REPLACEMENT_CHARr   Únext_possible_entityÚ
startswithÚmatch_entityr�   Úlen)rR   rƒ   r‹   Ú
new_tokensÚpartÚentityÚ	remainders          r   r£   z)BleachSanitizerFilter.sanitize_charactersž  sZ  € ð �yŠy˜ Ñ$Ô$ˆàð 	ØˆLå&×*Ò*Õ+EÀtÑLÔLˆØˆˆf‰ð �dˆ?ˆ?ØˆLàˆ
õ "Ô6°tÑ<Ô<ð 	Dð 	DˆDØð Øà�Š˜sÑ#Ô#ð Ý&Ô3°DÑ9Ô9�ØÐ%Ø ’�ð #×)Ò)°<ÈÐ*MÐ*MÑNÔNÐNÐNà"×)Ò)°8ÀVÐ*LÐ*LÑMÔMÐMð !%¥S¨¡[¤[°1¡_Ð%6Ð%6Ô 7�IØ ð UØ"×)Ò)°<ÈÐ*SÐ*SÑTÔTÐTØà×Ò |¸TÐBÐBÑCÔCÐCÐCàÐr    c                 óª  — t          j        |¦  «        }t          j        dd|¦  «        }|                     dd¦  «        }|                     ¦   «         }	 t          j        |¦  «        }n# t          $ r Y dS w xY w|j	        r|j	        |v r|S nD| 
                    d¦  «        r|S d|v r|                     d¦  «        d         |v r|S d|v sd	|v r|S dS )
zÄChecks a uri value to see if it's allowed

        :arg value: the uri value to sanitize
        :arg allowed_protocols: set of allowed protocols

        :returns: allowed value or None

        z[`\000-\040\177-\240\s]+r   u   ï¿½Nú#ú:r   r   r   )r   Úconvert_entitiesÚrer¬   ÚreplaceÚlowerr   Úurlparserv   Úschemer¯   Úsplit)rR   rq   rZ   Únormalized_uriÚparseds        r   Úsanitize_uri_valuez(BleachSanitizerFilter.sanitize_uri_valueÛ  s$  € õ 'Ô7¸Ñ>Ô>ˆõ œÐ ;¸RÀÑPÔPˆð (×/Ò/°¸"Ñ=Ô=ˆð (×-Ò-Ñ/Ô/ˆð	õ  Ô(¨Ñ8Ô8ˆFˆFøÝð 	ð 	ð 	à�4�4ð	øøøð Œ=ð 	àŒ}Ð 1Ð1Ð1Ø�ð 2ð
 ×(Ò(¨Ñ-Ô-ð Ø�ð �~Ð%Ð%Ø"×(Ò(¨Ñ-Ô-¨aÔ0Ð4EÐEÐEà�ð Ð*Ð*Ð*¨gÐ9JÐ.JÐ.JØ�àˆts   ÁA+ Á+
A9Á8A9c                 ó`  — d|v �r(i }|d                               ¦   «         D �]\  }}|\  }}|                      |d         ||¦  «        sŒ)|| j        v r |                      || j        ¦  «        }|€ŒP|}|| j        v r<t          j        ddt          |¦  «        ¦  «        }| 	                    ¦   «         }|sŒ•|}d|d         f| j
        v r.|dt          j        d         dffv rt          j        d	|¦  «        rŒÖ|d
k    r$| j        r| j                             |¦  «        }nd}|||<   �Œ||d<   |S )z-Handles the case where we're allowing the tagr‹   r›   Nzurl\s*\(\s*[^#\s][^)]+?\)ú )Nr   Úxlinkr   z
^\s*[^#\s])Nr=   r   )Úitemsr|   r}   rÂ   rZ   r~   rº   r¬   r   r2   r   r   Ú
namespacesÚsearchrC   Úsanitize_css)	rR   rƒ   ÚattrsÚnamespaced_nameÚvalÚ	namespacer›   Ú	new_valueÚnew_vals	            r   r    z!BleachSanitizerFilter.allow_token  s�  € à�Uˆ?‰?ð ˆEØ(-¨f¬×(;Ò(;Ñ(=Ô(=ð 5-ñ 5-Ñ$� Ø"1‘�	˜4ð ×'Ò'¨¨f¬°t¸SÑAÔAð Øð # dÔ&:Ð:Ð:Ø $× 7Ò 7¸¸TÔ=SÑ TÔ T�IØ Ð(Ø Ø#�Cð # dÔ&BÐBÐBÝ œfÐ%AÀ3ÍÐQTÉÌÑVÔV�GØ%Ÿmšm™oœo�GØ"ð &Ø ð
 &˜ð ˜% œ-Ð(¨DÔ,EÐEÐEØ&Ø&Ý&Ô1°'Ô:¸FÐCð+ð ð õ œ9 ]°CÑ8Ô8ð %Ø$ð # oÒ5Ð5ØÔ)ð 	!Ø"Ô0×=Ò=¸cÑBÔB˜˜ð !˜ð *-��oÑ&Ñ&à!ˆE�&‰Màˆr    c                 ó  — |d         }|dk    rd|d         › d�|d<   nµ|d         rž|dv sJ ‚g }|d                               ¦   «         D ]V\  \  }}}|r|s||}}|�|t          j        vr|}nt          j        |         › d|› �}|                     d	|› d
|› d�¦  «         ŒWd|d         › d                     |¦  «        › d�|d<   nd|d         › d�|d<   |                     d¦  «        r|d         d d…         › d�|d<   d|d<   |d= |S )Nr‡   r™   z</r›   ú>r‹   )r˜   rš   r¸   rÄ   z="r�   ú<r   ÚselfClosingéÿÿÿÿz/>rˆ   )rÆ   r   Úprefixesr�   r‘   rª   )rR   rƒ   r¤   rÊ   Únsr›   ÚvrË   s           r   r¡   z&BleachSanitizerFilter.disallowed_tokenZ  s€  € Ø˜6”]ˆ
Ø˜Ò!Ð!Ø1  v¤Ð1Ð1Ð1ˆE�&‰MˆMà�6Œ]ð 	1ØÐ!9Ð9Ð9Ð9Ð9ØˆEØ!& v¤×!4Ò!4Ñ!6Ô!6ð :ð :‘‘
��T˜Að ð (˜dð (Ø# R˜�Bð �: ­=Ô+AÐ!AÐ!AØ&*�O�Oå)6Ô)?ÀÔ)CÐ&LÐ&LÀdÐ&LÐ&L�Oð
 —’Ð8 Ð8Ð8°AÐ8Ð8Ð8Ñ9Ô9Ð9Ð9Ø@  f¤Ð@¨r¯wªw°u©~¬~Ð@Ð@Ð@ˆE�&‰MˆMð 1  f¤Ð0Ð0Ð0ˆE�&‰Mà�9Š9�]Ñ#Ô#ð 	6Ø$ Vœ}¨S¨b¨SÔ1Ð5Ð5Ð5ˆE�&‰Mà$ˆˆf‰à�&ˆMØˆr    )r+   r,   r-   rg   rh   ri   rj   r   r}   r~   r   rT   r…   r”   r–   r�   r£   rÂ   r    r¡   r   r    r   r_   r_   ü   sÙ   € € € € € ðð ð "Ø%Ø+Ø%Ô5Ø -Ô EØ*Ô?Ø#Ø Øð<9ð <9ð <9ð <9ð|
ð 
ð 
ðð ð ðB
ð 
ð 
ð
)ð )ð )ðV;ð ;ð ;ðz8ð 8ð 8ðtCð Cð CðJ$ð $ð $ð $ð $r    r_   )Ú	itertoolsr   rº   rP   Úxml.sax.saxutilsr   Úbleachr   r   r{   rh   ri   rj   r‘   ÚrangeÚINVISIBLE_CHARACTERSÚcompileÚUNICODEr«   r­   ÚUserWarningr*   r/   rw   ÚSanitizerFilterr_   r   r    r   ú<module>rá      sØ  ðØ Ð Ð Ð Ð Ð Ø 	€	€	€	Ø €€€à %Ð %Ð %Ð %Ð %Ð %à  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð ð ˆyðñô €ð( �'Ð	ØˆIØˆyðð Ð ð �IÐ9Ñ:Ô:Ð ð —w’wØFÐF�U�U˜5˜5  A™;œ;¨¨¨b°"©¬°u°u¸RÀ±}´}ÑEÔEÐFÑFÔFñô Ð ð
 %˜"œ* SÐ+?Ñ%?À#Ñ%EÀrÄzÑRÔRÐ ð !Ð ð	ð 	ð 	ð 	ð 	˜Kñ 	ô 	ð 	ðU0ð U0ð U0ð U0ð U0ñ U0ô U0ð U0ðp(Lð (Lð (LðVBð Bð Bð Bð B˜MÔ9ñ Bô Bð Bð Bð Br    