§
    ÷yIf‘C  ã                  óÈ   — d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZmZ erd dlmZ  G d„ d¦  «        ZdS )é    )ÚannotationsN)Údefaultdict)ÚTYPE_CHECKINGÚLiteral)Ú
exceptionsÚ
interfaces)ÚMSG_STATE_CONFIDENCEÚMSG_STATE_SCOPE_CONFIGÚMSG_STATE_SCOPE_MODULEÚ	MSG_TYPESÚMSG_TYPES_LONG)ÚHIGH)ÚMessageDefinition)ÚManagedMessage)Ú	OPTION_POÚInvalidPragmaErrorÚUnRecognizedOptionErrorÚparse_pragma)ÚPyLinterc                  ó¶   — e Zd ZdZd,d„Zd-d„Z	 d.d/d„Z	 	 	 d0d1d„Z	 d2d3d„Z	 	 	 d0d4d„Z		 	 	 d0d5d„Z
	 	 	 d0d4d„Zd6d „Zd6d!„Z	 	 d7d8d%„Zd9d&„Z	 	 d7d:d(„Zd;d+„ZdS )<Ú_MessageStateHandlerz[Class that handles message disabling & enabling and processing of inline
    pragma's.
    Úlinterr   ÚreturnÚNonec                óÖ   — || _         i | _        | j        | j        | j        dœ| _        | j        d         | j        d         dœ| _        i | _        t          t          ¦  «        | _
        d S )N)ÚenableÚdisableúdisable-nextr   r   )zdisable-msgz
enable-msg)r   Ú_msgs_stater   r   Údisable_nextÚ_options_methodsÚ_bw_options_methodsÚ_pragma_linenor   ÚlistÚ_stashed_messages)Úselfr   s     úU/var/www/piapp/venv/lib/python3.11/site-packages/pylint/lint/message_state_handler.pyÚ__init__z_MessageStateHandler.__init__&   s€   € ØˆŒØ,.ˆÔà”kØ”|Ø Ô-ð!
ð !
ˆÔð  Ô0°Ô;ØÔ/°Ô9ð$
ð $
ˆÔ ð /1ˆÔõ �ÑÔð 	Ôð	ð 	ó    ÚscopeÚstrÚmsgr   Úlineú
int | Noner   Úboolc                ó  — |dv rut          |t          ¦  «        sJ ‚| j        j                             ||||¦  «         |s6|j        dk    r-| j                             d||j        |j        f¬¦  «         dS dS dS | j        }|||j        <   dS )z(Set the status of an individual message.>   r-   Úmodulezlocally-disabled©r-   ÚargsN)	Ú
isinstanceÚintr   Ú
file_stateÚset_msg_statusÚsymbolÚadd_messageÚmsgidr   )r&   r*   r,   r-   r   Úmsgss         r'   Ú_set_one_msg_statusz(_MessageStateHandler._set_one_msg_status=   s¼   € ð Ð&Ð&Ð&Ý˜d¥CÑ(Ô(Ð(Ð(Ð(àŒKÔ"×1Ò1°#°t¸VÀUÑKÔKÐKØð ˜cœjÐ,>Ò>Ð>Ø”×'Ò'Ø&¨T¸¼ÀSÄYÐ8Oð (ñ ô ð ð ð ðð Ð>Ð>ð
 Ô#ˆDØ$ˆD�”‰OˆOˆOr)   Fr:   Úignore_unknownúlist[MessageDefinition]c           	     ó¦  — g }|dk    r6t           D ],}|                     |                      |||¦  «        ¦  «         Œ-|S |                     ¦   «         }|t           vrt	          j        |¦  «        }n|}|�F| j        j        j        |         D ],}|                     |                      |||¦  «        ¦  «         Œ-|S | 	                    ¦   «         | j        j
        v r]| j        j
        | 	                    ¦   «                  D ]6}|j        D ],}|                     |                      |||¦  «        ¦  «         Œ-Œ7|S | 	                    ¦   «                              d¦  «        r9|r| j                             |¦  «         n| j                             |¦  «         |S 	 | j        j                             |¦  «        }n# t           j        $ r |s‚ Y nw xY w|S )zMDo some tests and find the actual messages of which the status should be set.ÚallNÚrp)r   ÚextendÚ_get_messages_to_setÚupperr   Úgetr   Ú
msgs_storeÚ_msgs_by_categoryÚlowerÚ	_checkersr;   Ú
startswithÚenable_reportÚdisable_reportÚget_message_definitionsr   ÚUnknownMessageError)	r&   r:   r   r=   Úmessage_definitionsÚ_msgidÚcategory_idÚcategory_id_formattedÚcheckers	            r'   rC   z)_MessageStateHandler._get_messages_to_setM   s6  € ð 8:ÐØ�EŠ>ˆ>Ý#ð ð �Ø#×*Ò*Ø×-Ò-¨f°f¸nÑMÔMñô ð ð ð 'Ð&ð —k’k‘m”mˆØ�iÐ'Ð'Ý$2Ô$6°{Ñ$CÔ$CÐ!Ð!à$/Ð!Ø Ð,Øœ+Ô0ÔBØ%ôð ð �ð $×*Ò*Ø×-Ò-¨f°f¸nÑMÔMñô ð ð ð 'Ð&ð �;Š;‰=Œ=˜DœKÔ1Ð1Ð1Øœ;Ô0°·²±´Ô?ð ð �Ø%œlð ð �FØ'×.Ò.Ø×1Ò1°&¸&À.ÑQÔQñô ð ð ðð 'Ð&ð �;Š;‰=Œ=×#Ò# DÑ)Ô)ð 	'Øð 2Ø”×)Ò)¨%Ñ0Ô0Ð0Ð0à”×*Ò*¨5Ñ1Ô1Ð1Ø&Ð&ð	à"&¤+Ô"8×"PÒ"PÐQVÑ"WÔ"WÐÐøÝÔ-ð 	ð 	ð 	Ø!ð Øðð ð	øøøð #Ð"s   ÆF9 Æ9GÇGÚpackageNc                ó¼  — |dv sJ ‚|                       |||¦  «        }|D ]}|                      ||||¦  «         Œg | j        j        _        g | j        j        _        | j                             ¦   «         D ]e\  }}	d„ | j        j         	                    |¦  «        D ¦   «         }
|	r| j        j        xj        |
z  c_        ŒK| j        j        xj        |
z  c_        ŒfdS )zEDo some tests and then iterate over message definitions to set state.>   r-   r1   rT   c                ó   — g | ]	}|j         ‘Œ
S © )r8   )Ú.0Úms     r'   ú
<listcomp>z8_MessageStateHandler._set_msg_status.<locals>.<listcomp>•   s*   € ð ð ð àð ”ðð ð r)   N)
rC   r<   r   Úconfigr   r   r   ÚitemsrF   rM   )r&   r:   r   r*   r-   r=   rO   Úmessage_definitionÚmsgid_or_symbolÚ
is_enabledÚsymbolss              r'   Ú_set_msg_statusz$_MessageStateHandler._set_msg_status�   s  € ð Ð5Ð5Ð5Ð5Ð5à"×7Ò7¸¸vÀ~ÑVÔVÐà"5ð 	Nð 	NÐØ×$Ò$ UÐ,>ÀÀfÑMÔMÐMÐMð %'ˆŒÔÔ!Ø%'ˆŒÔÔ"Ø+/Ô+;×+AÒ+AÑ+CÔ+Cð 	6ð 	6Ñ'ˆO˜Zðð àœÔ/×GÒGÈÑXÔXðñ ô ˆGð ð 6Ø”Ô"Ð)Ô)¨WÑ4Ð)Ô)Ð)à”Ô"Ð*Ô*¨gÑ5Ð*Ô*Ð*ð	6ð 	6r)   Tr^   Úis_disabledc                ó4  — |dd…                               ¦   «         r{	 | j        j        j                             |¬¦  «        }n# t
          j        $ r Y dS w xY wt          | j        j        ||||¦  «        }| j        j	         
                    |¦  «         dS dS )z~If the msgid is a numeric one, then register it to inform the user
        it could furnish instead a symbolic msgid.
        é   N)r:   )Úisdigitr   rF   Úmessage_id_storeÚ
get_symbolr   rN   r   Úcurrent_nameÚ_by_id_managed_msgsÚappend)r&   r^   r-   rb   r8   Úmanageds         r'   Ú_register_by_id_managed_msgz0_MessageStateHandler._register_by_id_managed_msgž   s¿   € ð ˜1˜2˜2Ô×&Ò&Ñ(Ô(ð 
	<ðØœÔ/Ô@×KÒKØ)ð Lñ ô ��øõ Ô1ð ð ð Ø��ðøøøå$Ø”Ô(¨/¸6À4Èñô ˆGð ŒKÔ+×2Ò2°7Ñ;Ô;Ð;Ð;Ð;ð
	<ð 
	<s   ž%A ÁAÁAc                óf   — |                       |d|||¬¦  «         |                      ||¦  «         dS )zDisable a message for a scope.F©r   r*   r-   r=   N©ra   rl   ©r&   r:   r*   r-   r=   s        r'   r   z_MessageStateHandler.disable°   sJ   € ð 	×ÒØ˜% u°4Èð 	ñ 	
ô 	
ð 	
ð 	×(Ò(¨°Ñ5Ô5Ð5Ð5Ð5r)   Ú_c                óŽ   — |st           j        ‚|                      |dd|dz   |¬¦  «         |                      ||dz   ¦  «         dS )z$Disable a message for the next line.Fr-   rd   rn   N)r   ÚNoLineSuppliedErrorra   rl   )r&   r:   rq   r-   r=   s        r'   r    z!_MessageStateHandler.disable_next½   sg   € ð ð 	1ÝÔ0Ð0Ø×ÒØØØØ˜‘Ø)ð 	ñ 	
ô 	
ð 	
ð 	×(Ò(¨°°q±Ñ9Ô9Ð9Ð9Ð9r)   c                ój   — |                       |d|||¬¦  «         |                      ||d¬¦  «         dS )zEnable a message for a scope.Trn   F)rb   Nro   rp   s        r'   r   z_MessageStateHandler.enableÐ   sO   € ð 	×ÒØ˜$ e°$À~ð 	ñ 	
ô 	
ð 	
ð 	×(Ò(¨°À%Ð(ÑHÔHÐHÐHÐHr)   c                ób   — | j         j        j        D ]}|dv rŒ|                      |¦  «         ŒdS )z:Disable message categories other than `error` and `fatal`.>   ÚEÚFN)r   rF   rG   r   )r&   Úmsgcats     r'   Údisable_noerror_messagesz-_MessageStateHandler.disable_noerror_messagesÝ   sF   € à”kÔ,Ô>ð 	!ð 	!ˆFØ˜Ð#Ð#ØØ�LŠL˜Ñ Ô Ð Ð ð	!ð 	!r)   c                ó:  — | j         j                             ¦   «         \  }}g }g }|D ]i}|                      |j        ¦  «        r'|                     d|j        › d|j        › d�¦  «         ŒC|                     d|j        › d|j        › d�¦  «         Œjt          d¦  «         |D ]}t          |¦  «         Œt          d¦  «         |D ]}t          |¦  «         Œt          d¦  «         |D ]"}t          d|j        › d|j        › d�¦  «         Œ#t          d¦  «         d S )Nz  z (ú)zEnabled messages:z
Disabled messages:z1
Non-emittable messages with current interpreter:Ú )r   rF   Úfind_emittable_messagesÚis_message_enabledr:   rj   r8   Úprint)r&   Ú	emittableÚnon_emittableÚenabledÚdisabledÚmessager,   Úmsg_defs           r'   Úlist_messages_enabledz*_MessageStateHandler.list_messages_enabledä   sW  € Ø#'¤;Ô#9×#QÒ#QÑ#SÔ#SÑ ˆ	�=ØˆØ ˆØ ð 	Ið 	IˆGØ×&Ò& w¤}Ñ5Ô5ð IØ—’ÐF G¤NÐFÐF°g´mÐFÐFÐFÑGÔGÐGÐGà—’Ð G W¤^Ð GÐ G°w´}Ð GÐ GÐ GÑHÔHÐHÐHÝÐ!Ñ"Ô"Ð"Øð 	ð 	ˆCÝ�#‰JŒJˆJˆJÝÐ$Ñ%Ô%Ð%Øð 	ð 	ˆCÝ�#‰JŒJˆJˆJÝÐBÑCÔCÐCØ$ð 	;ð 	;ˆGÝÐ9�w”~Ð9Ð9¨¬Ð9Ð9Ð9Ñ:Ô:Ð:Ð:Ýˆb‰	Œ	ˆ	ˆ	ˆ	r)   Ú
confidenceúinterfaces.Confidence | NoneúLiteral[0, 1, 2] | Nonec                óà   — |€t           j        }|j        | j        j        j        vrt          S 	 || j        j        j        |         v rt          S n# t          t          f$ r
 t          cY S w xY wdS )z:Returns the scope at which a message was enabled/disabled.N)r   Ú	UNDEFINEDÚnamer   r[   r‡   r	   r6   Ú_module_msgs_stater   ÚKeyErrorÚ	TypeErrorr
   )r&   r:   r-   r‡   s       r'   Ú_get_message_state_scopez-_MessageStateHandler._get_message_state_scopeø   s‡   € ð ÐÝ#Ô-ˆJØŒ? $¤+Ô"4Ô"?Ð?Ð?Ý'Ð'ð	*Ø�t”{Ô-Ô@ÀÔGÐGÐGÝ-Ð-ð Høå�)Ð$ð 	*ð 	*ð 	*Ý)Ð)Ð)Ð)ð	*øøøàˆts   ¯A ÁA+Á*A+c                ó,  ‡— ‰€| j                              |d¦  «        S 	 | j        j        j        |         ‰         S # t
          $ rÌ | j        j                             ¦   «         }|rŽ‰|k    rˆd}| j        j        j                             |i ¦  «        }t          ˆfd„| 	                    ¦   «         D ¦   «         ¦  «        }t          |d¦  «        \  }}|�|}| j                              ||¦  «        cY S | j                              |d¦  «        cY S w xY w)z¡Checks state of a single message for the current file.

        This function can't be cached as it depends on self.file_state which can
        change.
        NTc                ó*   •— g | ]\  }}|‰k    ¯||f‘ŒS rW   rW   )rX   Úmessage_liner   r-   s      €r'   rZ   z@_MessageStateHandler._is_one_message_enabled.<locals>.<listcomp>!  s7   ø€ ð ð ð á0˜L¨&Ø'¨4Ò/Ð/ð & vÐ.à/Ð/Ð/r)   ©NN)r   rE   r   r6   r�   rŽ   Úget_effective_max_line_numberÚ_raw_module_msgs_stateÚreversedr\   Únext)	r&   r:   r-   Úmax_line_numberÚfallbackÚlinesÚclosest_linesrq   Úfallback_iters	     `      r'   Ú_is_one_message_enabledz,_MessageStateHandler._is_one_message_enabled
  sF  ø€ ð ˆ<ØÔ#×'Ò'¨¨tÑ4Ô4Ð4ð	5Ø”;Ô)Ô<¸UÔCÀDÔIÐIøÝð 	5ð 	5ð 	5ð
 #œkÔ4×RÒRÑTÔTˆOØð = 4¨/Ò#9Ð#9Ø�ØœÔ.ÔE×IÒIÈ%ÐQSÑTÔT�õ !)ðð ð ð à49·K²K±M´Mðñ ô ñ!ô !�õ $(¨°|Ñ#DÔ#DÑ ��=Ø Ð,Ø,�HàÔ'×+Ò+¨E°8Ñ<Ô<Ð<Ð<Ð<ØÔ#×'Ò'¨¨tÑ4Ô4Ð4Ð4Ð4ð1	5øøøs    = ½B6DÃ5DÄDÚ	msg_descrc                óò   ‡ ‡— |r|j         ‰ j        j        j        vrdS 	 ‰ j        j        j                             |¦  «        }n# t          j        $ r |g}Y nw xY wt          ˆˆ fd„|D ¦   «         ¦  «        S )a  Return whether this message is enabled for the current file, line and
        confidence level.

        This function can't be cached right now as the line is the line of
        the currently analysed file (self.file_state), if it changes, then the
        result for the same msg_descr/line might need to change.

        :param msg_descr: Either the msgid or the symbol for a MessageDefinition
        :param line: The line of the currently analysed file
        :param confidence: The confidence of the message
        Fc              3  óD   •K  — | ]}‰                      |‰¦  «        V — Œd S )N)rž   )rX   r:   r-   r&   s     €€r'   ú	<genexpr>z:_MessageStateHandler.is_message_enabled.<locals>.<genexpr>J  s3   øè è € ÐQÐQÀ�4×/Ò/°°tÑ<Ô<ÐQÐQÐQÐQÐQÐQr)   )
rŒ   r   r[   r‡   rF   rf   Úget_active_msgidsr   rN   Úany)r&   rŸ   r-   r‡   Úmsgidss   ` `  r'   r~   z'_MessageStateHandler.is_message_enabled.  s£   øø€ ð" ð 	˜*œ/°´Ô1CÔ1NÐNÐNØ�5ð	!Ø”[Ô+Ô<×NÒNØñô ˆFˆFøõ Ô-ð 	!ð 	!ð 	!ð  �[ˆFˆFˆFð		!øøøõ
 ÐQÐQÐQÐQÐQÈ&ÐQÑQÔQÑQÔQÐQs    $A ÁAÁAÚtokensúlist[tokenize.TokenInfo]c                ó`  — h d£}d}d}d}|D �]\  }}}}	}	|r||d         k    r|}d}|d         }|t           j        t           j        fv rd}|t           j        k    rŒPt	          j        |¦  «        }
|
€Œg	 t          |
                     d¦  «        ¦  «        D �]}|j        dv r[|j        dk    r#| j	         
                    d	|d         d
¬¦  «         | j	         
                    d|d         ¬¦  «         d| _          dS 	 | j        |j                 }ne# t          $ rX | j        |j                 }| j	         
                    d	|d         |j        |j                             dd¦  «        f¬¦  «         Y nw xY w|j        D �]/}|j        |v r|d         | j        |<   |j        |fdk    rQ| j	         
                    d	|d         d¬¦  «         | j	         
                    d|d         ¬¦  «         d| _           dS |d         }|s|dz  }	  ||d|¦  «         Œ˜# t$          j        t$          j        f$ r:}| j	         
                    d|j        |f|d         t*          ¬¦  «         Y d}~Œèd}~wt$          j        $ r4 | j	         
                    d|j        |f|d         t*          ¬¦  «         Y �Œ-w xY w�Œ�Œ¦# t.          $ r3}| j	         
                    d|j        |d         ¬¦  «         Y d}~�ŒÞd}~wt2          $ r3}| j	         
                    d|j        |d         ¬¦  «         Y d}~�Œd}~ww xY wdS )zªProcess tokens from the current module to search for module/block level
        options.

        See func_block_disable_msg.py test case for expected behaviour.
        >   r   r   r   NTr   Fé   >   ú	skip-fileúdisable-allr«   zdeprecated-pragma)r«   rª   r2   zfile-ignored)r-   z-msgr|   )r   r@   )zdisable=allrª   rd   r1   zuseless-option-value)r3   r-   r‡   zunknown-option-valuezunrecognized-inline-option)r3   r-   zbad-inline-option)ÚtokenizeÚNLÚNEWLINEÚCOMMENTr   Úsearchr   ÚgroupÚactionr   r9   Ú_ignore_filer!   rŽ   r"   ÚreplaceÚmessagesr#   r   ÚDeletedMessageErrorÚMessageBecameExtensionErrorr   rN   r   Útokenr   )r&   r¦   Úcontrol_pragmasÚ	prev_lineÚsaw_newlineÚseen_newlineÚtok_typeÚcontentÚstartrq   ÚmatchÚpragma_reprÚmethr:   Úl_startÚeÚerrs                    r'   Úprocess_tokensz#_MessageStateHandler.process_tokensL  sV  € ð @Ð?Ð?ˆØˆ	ØˆØˆØ.4ð W	ñ W	Ñ*ˆH�g˜u a¨Øð %˜Y¨%°¬(Ò2Ð2Ø*�Ø$�à˜aœˆIØ�HœK­Ô)9Ð:Ð:Ð:Ø#�à�8Ô+Ò+Ð+ØÝÔ$ WÑ-Ô-ˆEØˆ}ØðIÝ#/°·²¸A±´Ñ#?Ô#?ð =ñ =�KØ"Ô)Ð-IÐIÐIØ&Ô-°Ò>Ð>Ø œK×3Ò3Ø 3Ø%*¨1¤XØ%Að 4ñ ô ð ð
 œ×/Ò/°ÀUÈ1ÄXÐ/ÑNÔNÐNØ,0˜Ô)Ø˜˜˜ðØ#Ô4°[Ô5GÔH˜˜øÝ#ð 
ð 
ð 
Ø#Ô7¸Ô8JÔK˜àœ×/Ò/Ø/Ø!& q¤à +Ô 2Ø +Ô 2× :Ò :¸6À2Ñ FÔ Fð"ð 0ñ ô ð ð ð ð
øøøð "-Ô!5ð %ñ %˜à&Ô-°Ð@Ð@Ø9>¸q¼˜DÔ/°Ñ6à'Ô.°Ð6Ð:LÒLÐLØ œK×3Ò3Ø 3Ø%*¨1¤XØ%Að 4ñ ô ð ð
 !œK×3Ò3°NÈÈqÌÐ3ÑRÔRÐRØ04˜DÔ-Ø"˜F˜F˜F˜Fð #(¨¤(˜Ø*ð )Ø# q™L˜GðØ ˜D ¨°'Ñ:Ô:Ð:Ð:øå&Ô:Ý&ÔBð ð 	ð 	ð 	ð !œK×3Ò3Ø 6Ø&1Ô&8¸!Ð%<Ø%*¨1¤XÝ+/ð	 4ñ ô ð ð ð ð ð ð øøøøõ  *Ô=ð ð ð Ø œK×3Ò3Ø 6Ø&1Ô&8¸%Ð%@Ø%*¨1¤XÝ+/ð	 4ñ ô ð ð ñ ðøøøñ?%ñ1=øõ~ +ð ð ð Ø”×'Ò'Ø0°s´yÀuÈQÄxð (ñ ô ð ð ���‘øøøøÝ%ð ð ð Ø”×'Ò'Ø'¨c¬i¸eÀA¼hð (ñ ô ð ð ���‘øøøøð	øøøðgW	ð W	sˆ   Á5BJ3Ã?DÄJ3ÄAE4Å1J3Å3E4Å4BJ3Ç8J3ÈHÈJ3ÈJ,	È10I&	É!J3É&AJ,	Ê(J3Ê+J,	Ê,J3Ê3
L+Ê=(K+Ë+L+Ë8(L&Ì&L+)r   r   r   r   )
r*   r+   r,   r   r-   r.   r   r/   r   r   )F)r:   r+   r   r/   r=   r/   r   r>   )rT   NF)r:   r+   r   r/   r*   r+   r-   r.   r=   r/   r   r   )T)r^   r+   r-   r.   rb   r/   r   r   )
r:   r+   r*   r+   r-   r.   r=   r/   r   r   )
r:   r+   rq   r+   r-   r.   r=   r/   r   r   )r   r   r”   )r:   r+   r-   r.   r‡   rˆ   r   r‰   )r:   r+   r-   r.   r   r/   )rŸ   r+   r-   r.   r‡   rˆ   r   r/   )r¦   r§   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r<   rC   ra   rl   r   r    r   ry   r†   r�   rž   r~   rÆ   rW   r)   r'   r   r   !   sº  € € € € € ðð ðð ð ð ð.%ð %ð %ð %ð" @Eð2#ð 2#ð 2#ð 2#ð 2#ðp ØØ$ð6ð 6ð 6ð 6ð 6ð< KOð<ð <ð <ð <ð <ð* ØØ$ð6ð 6ð 6ð 6ð 6ð  ØØ$ð:ð :ð :ð :ð :ð, ØØ$ðIð Ið Ið Ið Ið!ð !ð !ð !ðð ð ð ð.  Ø37ð	ð ð ð ð ð$"5ð "5ð "5ð "5ðN  Ø37ð	Rð Rð Rð Rð Rð<að að að að að ar)   r   )Ú
__future__r   r¬   Úcollectionsr   Útypingr   r   Úpylintr   r   Úpylint.constantsr	   r
   r   r   r   Úpylint.interfacesr   Úpylint.messager   Úpylint.typingr   Úpylint.utils.pragma_parserr   r   r   r   Úpylint.lint.pylinterr   r   rW   r)   r'   ú<module>rÕ      sv  ðð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð .Ø-Ð-Ð-Ð-Ð-Ð-ðLð Lð Lð Lð Lñ Lô Lð Lð Lð Lr)   