§
    ‚ŠtjJ  ã                   ó*  — d dl mZ d dlZd dl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 dd	lmZ dd
lmZ ddlmZmZmZ ddlmZ ddlmZ ddlmZ  ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z G d„ dej        ¦  «        Ze G d„ de¦  «        ¦   «         Z  ed¬¦  «         G d„ de ¦  «        ¦   «         Z! ed¬¦  «         G d „ d!e e	¦  «        ¦   «         Z"g d"¢Z#dS )#é    )Ú	dataclassN)Únné   )ÚACT2FN)ÚCache)ÚGenerationMixin)ÚBaseModelOutputWithPastÚBaseModelOutputWithPoolingÚModelOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚtorch_compilable_check)Úcan_return_tupleé   )Ú	AutoModelé   )ÚVipLlavaConfigzM
    Base class for VipLlava outputs, with hidden states and attentions.
    ©Úcustom_introc                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )ÚVipLlavaModelOutputWithPastaÏ  
    past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
        It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

        Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
        `past_key_values` input) to speed up sequential decoding.
    image_hidden_states (`torch.FloatTensor`, *optional*):
        A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
        image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
    NÚimage_hidden_states)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚFloatTensorÚ__annotations__© ó    úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/vipllava/modeling_vipllava.pyr   r   &   s7   € € € € € € ð	ð 	ð 59Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r#   r   zT
    Base class for VipLlava causal language model (or autoregressive) outputs.
    c                   óÖ   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
dz  ed<   dZeej                 dz  ed<   dZeej                 dz  ed<   dZej        dz  ed<   dS )	ÚVipLlavaCausalLMOutputWithPasta4  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
        Language modeling loss (for next-token prediction).
    logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.vocab_size)`):
        Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
    past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
        It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

        Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
        `past_key_values` input) to speed up sequential decoding.
    image_hidden_states (`torch.FloatTensor`, *optional*):
        A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
        image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
    NÚlossÚlogitsÚpast_key_valuesÚhidden_statesÚ
attentionsr   )r   r   r   r   r'   r   r    r!   r(   r)   r   r*   Útupler+   r   r"   r#   r$   r&   r&   ;   sµ   € € € € € € ðð ð &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø'+€FˆEÔ Ñ$Ð+Ð+Ñ+Ø$(€O�U˜T‘\Ð(Ð(Ñ(Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ø48Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r#   r&   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚVipLlavaMultiModalProjectorÚconfigc                 óö  •— t          ¦   «                              ¦   «          t          |j        t          ¦  «        rdnt          |j        ¦  «        }t          j        ||j        j	        z  |j
        ¬¦  «        | _        t          j        ||j        j	        z  |j        j	        d¬¦  «        | _        t          |j                 | _        t          j        |j        j	        |j        j	        d¬¦  «        | _        d S )Nr   )ÚepsT©Úbias)ÚsuperÚ__init__Ú
isinstanceÚvision_feature_layersÚintÚlenr   Ú	LayerNormÚvision_configÚhidden_sizeÚprojector_layernorm_epsÚprojector_layernormÚLinearÚtext_configÚlinear_1r   Úprojector_hidden_actÚactÚlinear_2)Úselfr/   Únum_feature_layersÚ	__class__s      €r$   r5   z$VipLlavaMultiModalProjector.__init__Z   sÜ   ø€ Ý‰Œ×ÒÑÔÐÝ",¨VÔ-IÍ3Ñ"OÔ"OÐv˜Q˜QÕUXÐY_ÔYuÑUvÔUvÐÝ#%¤<Ø Ô!5Ô!AÑAÀvÔGeð$
ñ $
ô $
ˆÔ õ œ	Ø Ô!5Ô!AÑAØÔÔ*Øð
ñ 
ô 
ˆŒõ
 ˜&Ô5Ô6ˆŒÝœ	 &Ô"4Ô"@À&ÔBTÔB`ÐgkÐlÑlÔlˆŒˆˆr#   c                 ó®   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S ©N)r>   rA   rC   rD   )rE   r*   s     r$   Úforwardz#VipLlavaMultiModalProjector.forwardi   sN   € Ø×0Ò0°Ñ?Ô?ˆØŸš mÑ4Ô4ˆØŸš Ñ/Ô/ˆØŸš mÑ4Ô4ˆØÐr#   )r   r   r   r   r5   rJ   Ú__classcell__©rG   s   @r$   r.   r.   Y   sZ   ø€ € € € € ðm˜~ð mð mð mð mð mð mðð ð ð ð ð ð r#   r.   c                   ó@   — e Zd ZU eed<   dZdZdZdgZdZ	dZ
dZdZdZdS )ÚVipLlavaPreTrainedModelr/   Úmodel)ÚimageÚtextTr)   N)r   r   r   r   r!   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_can_compile_fullgraphÚ_supports_flex_attnÚ_supports_attention_backendr"   r#   r$   rN   rN   q   sV   € € € € € € àÐÐÑØÐØ(ÐØ&*Ð#Ø#4Ð"5ÐàÐØ€Nà!ÐØÐØ"&ÐÐÐr#   rN   zx
    The VipLlava model which consists of a vision backbone and a language model, without a language modeling head.
    c                   óÂ  ‡ — e Zd Zdefˆ fd„Ze ed¬¦  «        	 ddej        de	e
e	         z  dz  dee         d	eez  fd
„¦   «         ¦   «         Zdej        dej        dej        fd„Zee	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dedz  dej        dz  de	e
e	         z  dz  dedz  dee         d	eez  fd„¦   «         ¦   «         Zˆ xZS )ÚVipLlavaModelr/   c                 ó  •— t          ¦   «                              |¦  «         t          j        |j        ¦  «        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _	        |  
                    ¦   «          d S rI   )r4   r5   r   Úfrom_configr;   Úvision_towerr.   Úmulti_modal_projectorr@   Úlanguage_modelÚ	post_init©rE   r/   rG   s     €r$   r5   zVipLlavaModel.__init__‡   sm   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý%Ô1°&Ô2FÑGÔGˆÔå%@ÀÑ%HÔ%HˆÔ"Ý'Ô3°FÔ4FÑGÔGˆÔØ�ŠÑÔÐÐÐr#   zWObtains image last hidden states from the vision tower and apply multimodal projection.r   NÚpixel_valuesr7   ÚkwargsÚreturnc                 ó,  ‡— |�|n| j         j        }d|d<    | j        |fi |¤ŽŠt          |t          ¦  «        r‰j        |         dd…dd…f         }n$ˆfd„|D ¦   «         }t          j        |d¬¦  «        }|                      |¦  «        }|‰_	        ‰S )á\  
        pixel_values (`torch.FloatTensor]` of shape `(batch_size, channels, height, width)`):
            The tensors corresponding to the input images.
        vision_feature_layers (`Union[int, list[int]]`, *optional*):
            The vision feature layer, or the list of indexes of the layers to select
            the vision feature.
        NTÚoutput_hidden_statesr   c                 óB   •— g | ]}‰j         |         d d …dd …f         ‘ŒS )Nr   )r*   )Ú.0ÚindexÚimage_outputss     €r$   ú
<listcomp>z4VipLlavaModel.get_image_features.<locals>.<listcomp>°   s2   ø€ ÐkÐkÐkÈE˜mÔ9¸%Ô@ÀÀÀÀAÀBÀBÀÔGÐkÐkÐkr#   éÿÿÿÿ)Údim)
r/   r7   r_   r6   r8   r*   r   Úcatr`   Úpooler_output)rE   rd   r7   re   Úimage_featuresrm   s        @r$   Úget_image_featuresz VipLlavaModel.get_image_features�   sÝ   ø€ ð$ &;Ð%FÐ!Ð!ÈDÌKÔLmð 	ð *.ˆÐ%Ñ&Ø)˜Ô)Øð
ð 
àð
ð 
ˆõ Ð+­SÑ1Ô1ð 	?Ø*Ô8Ð9NÔOÐPQÐPQÐPQÐSTÐSUÐSUÐPUÔVˆNˆNð lÐkÐkÐkÐUjÐkÑkÔkˆNÝ"œY ~¸2Ð>Ñ>Ô>ˆNØ×3Ò3°NÑCÔCˆØ&4ˆÔ#àÐr#   Ú	input_idsÚinputs_embedsrs   c                 ó   — |€e| |                       ¦   «         t          j        | j        j        t          j        |j        ¬¦  «        ¦  «        k    }|                     d¦  «        }n|| j        j        k    }|                     ¦   «         }|j	        d         |j	        d         z  }| 
                    d¦  «                             |j        ¦  «        }t          ||j	        d         z  |                     ¦   «         k    d|› d|› �¦  «         |S )zï
        Obtains multimodal placeholder mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is
        equal to the length of multimodal features. If the lengths are different, an error is raised.
        N)ÚdtypeÚdevicero   r   r   z6Image features and image tokens do not match, tokens: z, features: )Úget_input_embeddingsr   Útensorr/   Úimage_token_idÚlongry   ÚallÚsumÚshapeÚ	unsqueezeÚtor   Únumel)rE   ru   rv   rs   Úspecial_image_maskÚn_image_tokensÚn_image_featuress          r$   Úget_placeholder_maskz"VipLlavaModel.get_placeholder_mask·   s  € ð ÐØ!.Ð2M°$×2KÒ2KÑ2MÔ2MÝ”˜Tœ[Ô7½u¼zÐR_ÔRfÐgÑgÔgñ3ô 3ò "Ðð "4×!7Ò!7¸Ñ!;Ô!;ÐÐà!*¨d¬kÔ.HÒ!HÐà+×/Ò/Ñ1Ô1ˆØ)Ô/°Ô2°^Ô5IÈ!Ô5LÑLÐØ/×9Ò9¸"Ñ=Ô=×@Ò@ÀÔAUÑVÔVÐÝØ˜]Ô0°Ô4Ñ4¸×8LÒ8LÑ8NÔ8NÒNØsÀ^ÐsÐsÐaqÐsÐsñ	
ô 	
ð 	
ð "Ð!r#   Úattention_maskÚposition_idsr)   Ú	use_cacheÚ	lm_kwargsc	           	      óê  — |�|n| j         j        }|du |duz  rt          d¦  «        ‚|€ |                      ¦   «         |¦  «        }|�j|                      ||¬¦  «        j        }
|
                     |j        |j        ¦  «        }
|  	                    |||
¬¦  «        }| 
                    ||
¦  «        } | j        d|||||dœ|	¤Ž}t          |j        |j        |j        |j        |�|
nd¬¦  «        }|S )zÃ
        vision_feature_layers (`Union[int, list[int]]`, *optional*):
            The vision feature layer, or the list of indexes of the layers to select
            the vision feature.
        Nz:You must specify exactly one of input_ids or inputs_embeds©rd   r7   )rv   rs   )rˆ   r‰   r)   rv   rŠ   )Úlast_hidden_stater)   r*   r+   r   r"   )r/   r7   Ú
ValueErrorrz   rt   rr   r‚   ry   rx   r‡   Úmasked_scatterra   r   rŽ   r)   r*   r+   )rE   ru   rd   rˆ   r‰   r)   rv   r7   rŠ   r‹   rs   r„   ÚoutputsÚoutputs                 r$   rJ   zVipLlavaModel.forwardÏ   sb  € ð( &;Ð%FÐ!Ð!ÈDÌKÔLmð 	ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMàÐ#Ø!×4Ò4Ø)ÐAVð 5ñ ô äð ð ,×.Ò.¨}Ô/CÀ]ÔEXÑYÔYˆNØ!%×!:Ò!:Ø¨À~ð ";ñ "ô "Ðð *×8Ò8Ð9KÈ^Ñ\Ô\ˆMà+>¨4Ô+>ð ,
Ø)Ø%Ø+Ø'Øð,
ð ,
ð ð,
ð ,
ˆõ -Ø%Ô7Ø#Ô3Ø!Ô/ØÔ)Ø2>Ð2J  ÐPTð
ñ 
ô 
ˆð ˆr#   rI   )NNNNNNNN)r   r   r   r   r5   r   r   r   r    r8   Úlistr   r   r,   r
   rt   Ú
LongTensorr‡   ÚTensorr   Úboolr   rJ   rK   rL   s   @r$   r\   r\   �   sü  ø€ € € € € ð˜~ð ð ð ð ð ð ð Ø€^Ønðñ ô ð 9=ð"ð "àÔ'ð"ð  # T¨#¤Y™°Ñ5ð"ð Ð+Ô,ð	"ð
 
Ð+Ñ	+ð"ð "ð "ñô ñ Ôð"ðH"ØÔ)ð"Ø:?Ô:Kð"Ø]bÔ]nð"ð "ð "ð "ð0 Øð .2Ø15Ø.2Ø04Ø(,Ø26Ø8<Ø!%ð5ð 5àÔ# dÑ*ð5ð Ô'¨$Ñ.ð5ð œ tÑ+ð	5ð
 Ô&¨Ñ-ð5ð  ™ð5ð Ô(¨4Ñ/ð5ð  # T¨#¤Y™°Ñ5ð5ð ˜$‘;ð5ð Ð.Ô/ð5ð 
Ð,Ñ	,ð5ð 5ð 5ñ „^ñ Ôð5ð 5ð 5ð 5ð 5r#   r\   zV
    The VIPLLAVA model which consists of a vision backbone and a language model.
    c                   óÎ  ‡ — e Zd ZddiZdefˆ fd„Zdej        fd„Ze		 dde
j        d	eee         z  dz  d
ee         deez  fd„¦   «         Zee		 	 	 	 	 	 	 	 	 	 dde
j        dz  de
j        dz  de
j        dz  de
j        dz  dedz  de
j        dz  d	eee         z  dz  de
j        dz  dedz  dee
j        z  dee         deez  fd„¦   «         ¦   «         Z	 	 	 	 	 	 dˆ fd„	Zˆ xZS )Ú VipLlavaForConditionalGenerationzlm_head.weightz(model.language_model.embed_tokens.weightr/   c                 óú   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        j        |j        j        d¬¦  «        | _	        |  
                    ¦   «          d S )NFr2   )r4   r5   r\   rO   r   r?   r@   r<   Ú
vocab_sizeÚlm_headrb   rc   s     €r$   r5   z)VipLlavaForConditionalGeneration.__init__  se   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý" 6Ñ*Ô*ˆŒ
Ý”y Ô!3Ô!?ÀÔASÔA^ÐejÐkÑkÔkˆŒØ�ŠÑÔÐÐÐr#   rf   c                 ó   — | j         S rI   )r›   )rE   s    r$   Úget_output_embeddingsz6VipLlavaForConditionalGeneration.get_output_embeddings  s
   € ØŒ|Ðr#   Nrd   r7   re   c                 ó,   —  | j         j        d||dœ|¤ŽS )rh   r�   r"   )rO   rt   )rE   rd   r7   re   s       r$   rt   z3VipLlavaForConditionalGeneration.get_image_features  s5   € ð -ˆtŒzÔ,ð 
Ø%Ð=Rð
ð 
ØV\ð
ð 
ð 	
r#   r   ru   rˆ   r‰   r)   rv   ÚlabelsrŠ   Úlogits_to_keepr‹   c                 ó˜  — |�|n| j         j        } | j        d|||||||	|dœ|¤Ž}|j        }t	          |
t
          ¦  «        rt          |
 d¦  «        n|
}|                      |dd…|dd…f         ¦  «        }d}|�'|                      ||| j         j	        j
        ¬¦  «        }t          |||j        |j        |j        |j        ¬¦  «        S )aó  
        vision_feature_layers (`Union[int, list[int]]`, *optional*):
            The vision feature layer, or the list of indexes of the layers to select
            the vision feature.
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example:

        ```python
        >>> import torch
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO
        >>> from transformers import AutoProcessor, VipLlavaForConditionalGeneration

        >>> model = VipLlavaForConditionalGeneration.from_pretrained("llava-hf/vip-llava-7b-hf", device_map="auto", dtype=torch.float16)
        >>> processor = AutoProcessor.from_pretrained("llava-hf/vip-llava-7b-hf")

        >>> prompt = "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions.###Human: <image>\n{}###Assistant:"
        >>> question = "Can you please describe this image?"
        >>> prompt = prompt.format(question)
        >>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/compel-neg.png"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> inputs = processor(text=text, images=image, return_tensors="pt").to(0, torch.float16)

        >>> # Generate
        >>> generate_ids = model.generate(**inputs, max_new_tokens=20)
        >>> processor.decode(generate_ids[0][len(inputs["input_ids"][0]):], skip_special_tokens=True)
        The image features a brown and white cat sitting on a green surface, with a red ball in its
        ```N)ru   rd   rˆ   r‰   r)   rv   rŠ   r7   )r(   rŸ   rš   )r'   r(   r)   r*   r+   r   r"   )r/   r7   rO   rŽ   r6   r8   Úslicer›   Úloss_functionr@   rš   r&   r)   r*   r+   r   )rE   ru   rd   rˆ   r‰   r)   rv   r7   rŸ   rŠ   r    r‹   r‘   r*   Úslice_indicesr(   r'   s                    r$   rJ   z(VipLlavaForConditionalGeneration.forward,  s  € ðj &;Ð%FÐ!Ð!ÈDÌKÔLmð 	ð 0:¨t¬zð 
0
ØØ%Ø)Ø%Ø+Ø'ØØ"7ð
0
ð 
0
ð ð
0
ð 
0
ˆð  Ô1ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ×%Ò%¨V¸FÈtÌ{ÔOfÔOqÐ%ÑrÔrˆDå-ØØØ#Ô3Ø!Ô/ØÔ)Ø 'Ô ;ð
ñ 
ô 
ð 	
r#   Fc           	      ó‚   •—  t          ¦   «         j        |f|||||dœ|¤Ž}	|s|                     dd¦  «        s||	d<   |	S )N)r)   rv   rˆ   r    Úis_first_iterationrŠ   Trd   )r4   Úprepare_inputs_for_generationÚget)rE   ru   r)   rv   rd   rˆ   r    r¦   re   Úmodel_inputsrG   s             €r$   r§   z>VipLlavaForConditionalGeneration.prepare_inputs_for_generation‚  st   ø€ ð =•u‘w”wÔ<Øð
à+Ø'Ø)Ø)Ø1ð
ð 
ð ð
ð 
ˆð ð 	8 V§Z¢Z°¸TÑ%BÔ%Bð 	8ð
 ,8ˆL˜Ñ(àÐr#   rI   )
NNNNNNNNNr   )NNNNNF)r   r   r   Ú_tied_weights_keysr   r5   r   ÚModuler�   r   r   r    r8   r“   r   r   r,   r
   rt   r   r”   r•   r   r–   r&   rJ   r§   rK   rL   s   @r$   r˜   r˜   	  s<  ø€ € € € € ð +Ð,VÐWÐð˜~ð ð ð ð ð ð ð r¤yð ð ð ð ð ð 9=ð
ð 
àÔ'ð
ð  # T¨#¤Y™°Ñ5ð
ð Ð+Ô,ð	
ð
 
Ð+Ñ	+ð
ð 
ð 
ñ „^ð
ð" Øð .2Ø15Ø.2Ø04Ø(,Ø26Ø8<Ø*.Ø!%Ø-.ðR
ð R
àÔ# dÑ*ðR
ð Ô'¨$Ñ.ðR
ð œ tÑ+ð	R
ð
 Ô&¨Ñ-ðR
ð  ™ðR
ð Ô(¨4Ñ/ðR
ð  # T¨#¤Y™°Ñ5ðR
ð Ô  4Ñ'ðR
ð ˜$‘;ðR
ð ˜eœlÑ*ðR
ð Ð.Ô/ðR
ð 
Ð/Ñ	/ðR
ð R
ð R
ñ „^ñ ÔðR
ðn ØØØØØ ðð ð ð ð ð ð ð ð ð r#   r˜   )r\   r˜   rN   )$Údataclassesr   r   r   Úactivationsr   Úcache_utilsr   Ú
generationr   Úmodeling_outputsr	   r
   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úautor   Úconfiguration_vipllavar   r   r&   r«   r.   rN   r\   r˜   Ú__all__r"   r#   r$   ú<module>r¸      sß  ðð* "Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ø )Ð )Ð )Ð )Ð )Ð )Ø `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9Ð"9ñ 9ô 9ñ „ñô ð9ð €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9 [ñ 9ô 9ñ „ñô ð9ð0ð ð ð ð  "¤)ñ ô ð ð0 ð'ð 'ð 'ð 'ð '˜oñ 'ô 'ñ „ð'ð €ððñ ô ð
@ð @ð @ð @ð @Ð+ñ @ô @ñô ð
@ðF €ððñ ô ð
Rð Rð Rð Rð RÐ'>Àñ Rô Rñô ð
Rðj [Ð
ZÐ
Z€€€r#   