Ë
    úÍ:jTQ  ã            !       ór  — d dl mZmZmZ d dlZd dlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ ddgZ G d„ de«      Zd	d
e› de
› de› de	› d�	z   e_        	 	 	 	 	 	 	 d$dee   dee   dee   dee   dee   dee   dee   dedee   dededededededef d„Zd„ Zdee   dee   dee   dee   dee   dee   dedededededededefd „Zdee   dee   dee   dee   dee   dee   dedededededededefd!„Zdee   dee   dee   dee   dee   dee   dedededededededed"dfd#„Zy)%é    )ÚcastÚOptionalÚUnionN)ÚTensoré   )Ú_default_to_fused_or_foreachÚ_device_dtype_check_for_fusedÚ_differentiable_docÚ_foreach_docÚ_get_scalar_dtypeÚ
_get_valueÚ_maximize_docÚ_params_docÚ
_to_scalarÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚAdagradÚadagradc                   óž   ‡ — e Zd Z	 	 	 	 	 	 dddddœdedeeef   dededed	ed
ee   dededee   fˆ fd„Z	ˆ fd„Z
d„ Zd„ Zedd„«       Zˆ xZS )r   NF)ÚmaximizeÚdifferentiableÚfusedÚparamsÚlrÚlr_decayÚweight_decayÚinitial_accumulator_valueÚepsÚforeachr   r   r   c                óF  •— t        |t        «      r|j                  «       dk7  rt        d«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚t	        ||||||||	|
¬	«	      }t
        ‰| �  ||«       |
r!|	rt        d
«      ‚|rt        d«      ‚d| _        | j                  D ]½  }|d   D ]³  }| j                  |   }|d   r/t        j                  dt        |d   ¬«      |j                  ¬«      nt        j                  dt        «       ¬«      |d<   t        j                   |«      rt#        ||«      n|}t        j$                  ||t        j&                  ¬«      |d<   Œµ Œ¿ y )Nr   zTensor lr must be 1-elementg        zInvalid learning rate: zInvalid lr_decay value: zInvalid weight_decay value: z)Invalid initial_accumulator_value value: zInvalid epsilon value: )	r   r   r    r   r   r!   r   r   r   z)`fused` does not support `differentiable`z0`fused` and `foreach` cannot be `True` together.Tr   r   © ©Úis_fused)ÚdtypeÚdevice©r&   Ústep)Úmemory_formatÚsum)Ú
isinstancer   ÚnumelÚ
ValueErrorÚdictÚsuperÚ__init__ÚRuntimeErrorÚ"_need_device_dtype_check_for_fusedÚparam_groupsÚstateÚtorchÚzerosr   r'   ÚtensorÚ
is_complexÚcomplexÚ	full_likeÚpreserve_format)Úselfr   r   r   r   r   r    r!   r   r   r   ÚdefaultsÚgroupÚpr5   Ú
init_valueÚ	__class__s                   €úh/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torch/optim/adagrad.pyr1   zAdagrad.__init__   sÙ  ø€ ô �bœ&Ô! b§h¡h£j°A¢oÜÐ:Ó;Ð;Ø�bŠyÜÐ6°r°dÐ;Ó<Ð<Ø�hŠÜÐ7¸°zÐBÓCÐCØ�lÒ"ÜÐ;¸L¸>ÐJÓKÐKØÐ/Ò/ÜØ;Ð<UÐ;VÐWóð ð �cŠzÜÐ6°s°eÐ<Ó=Ð=äØØØØ%Ø&?ØØØ)Øô

ˆô 	‰Ñ˜ Ô*áÙÜ"Ð#NÓOÐOÙÜ"Ð#UÓVÐVØ6:ˆDÔ3à×&Ñ&ò 	ˆEØ˜8‘_ò �ØŸ
™
 1™�ð ˜W’~ô —K‘KØÜ/¸¸w¹ÔHØ Ÿx™xõô Ÿ™ cÔ1BÓ1DÔEð �f‘ô ×'Ñ'¨Ô*ô Ð5Ð7PÔQà2ð ô
  %Ÿ™Ø�z´×1FÑ1Fô ��e’ñ!ñ	ó    c                 óê  •— t         ‰| �  |«       d }| j                  D ]J  }|j                  dd «       |j                  dd«       |j                  dd«       |j                  dd «      }ŒL t	        | j
                  j                  «       «      }t        |«      dk7  xr t        j                  |d   d   «      }|s8|D ]2  }t        j                  t        |d   «      t        |¬«      ¬	«      |d<   Œ4 y y )
Nr!   r   Fr   r   r   r)   r$   r(   )r0   Ú__setstate__r4   Ú
setdefaultÚlistr5   ÚvaluesÚlenr6   Ú	is_tensorr8   Úfloatr   )r=   r5   r   r?   Ústate_valuesÚstep_is_tensorÚsrB   s          €rC   rF   zAdagrad.__setstate__b   sò   ø€ Ü‰Ñ˜UÔ#ð ˆØ×&Ñ&ò 	4ˆEØ×Ñ˜Y¨Ô-Ø×Ñ˜Z¨Ô/Ø×ÑÐ-¨uÔ5Ø×$Ñ$ W¨dÓ3‰Eð		4ô ˜DŸJ™J×-Ñ-Ó/Ó0ˆÜ˜lÓ+¨qÑ0ò 
´e·o±oØ˜‰O˜FÑ#ó7
ˆñ Ø!ò �Ü!ŸL™LÜ˜!˜F™)Ó$Ô,=ÀuÔ,Mô��&’	ñð rD   c                 ó~   — | j                   D ].  }|d   D ]$  }| j                  |   }|d   j                  «        Œ& Œ0 y )Nr   r+   )r4   r5   Úshare_memory_)r=   r?   r@   r5   s       rC   Úshare_memoryzAdagrad.share_memoryw   sG   € Ø×&Ñ&ò 	-ˆEØ˜8‘_ò -�ØŸ
™
 1™�Ø�e‘×*Ñ*Õ,ñ-ñ	-rD   c                 ó¶  — d\  }}|d   D ]É  }|j                   €Œ|d   r!t        | dd«      rt        |d¬«       d| _        ||j                   j                  z  }|t        j                  |«      z  }|j                  |«       |j                  |j                   «       | j                  |   }	|j                  |	d   «       |j                  |	d	   «       ŒË ||fS )
N)FFr   r   r3   T)Úcuda_unsupportedFr+   r)   )	ÚgradÚgetattrr	   r3   Ú	is_sparser6   r9   Úappendr5   )
r=   r?   Úparams_with_gradÚgradsÚ
state_sumsÚstate_stepsÚhas_sparse_gradÚhas_complexr@   r5   s
             rC   Ú_init_groupzAdagrad._init_group}   sÙ   € Ø'3Ñ$ˆ˜Ø�x‘ò 	2ˆAØ�v‰vÑ!Ø˜’>¤gØØ8Øô'ô
 2°!ÀdÕKØ>C�DÔ;Ø 1§6¡6×#3Ñ#3Ñ3�Øœu×/Ñ/°Ó2Ñ2�Ø ×'Ñ'¨Ô*Ø—‘˜QŸV™VÔ$ØŸ
™
 1™�Ø×!Ñ! %¨¡,Ô/Ø×"Ñ" 5¨¡=Õ1ð	2ð"  Ð+Ð+rD   c                 ób  — d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]k  }g }g }g }g }| j                  |||||«      \  }}	t	        |||||d   |d   |d   |d   ||d   |d   |d   |	|d	   t        | d
d«      t        | dd«      ¬«       Œm |S # 1 sw Y   Œ…xY w)z°Perform a single optimization step.

        Args:
            closure (Callable, optional): A closure that reevaluates the model
                and returns the loss.
        Nr   r   r   r    r!   r   r   r   Ú
grad_scaleÚ	found_inf)r   r   r   r    r]   r!   r   r   r^   r   ra   rb   )r6   Úenable_gradr4   r_   r   rV   )
r=   ÚclosureÚlossr?   rY   rZ   r[   r\   r]   r^   s
             rC   r)   zAdagrad.step’   sþ   € ð ˆàÐÜ×"Ñ"Ó$ñ !Ù“y�÷!ð ×&Ñ&ò 	ˆEØ-/ÐØ"$ˆEØ')ˆJØ(*ˆKà+/×+;Ñ+;ØÐ'¨°
¸Kó,Ñ(ˆO˜[ô Ø ØØØØ˜‘;Ø" >Ñ2Ø˜zÑ*Ø˜%‘LØ /Ø˜iÑ(Ø˜zÑ*Ø$Ð%5Ñ6Ø'Ø˜G‘nÜ" 4¨°tÓ<Ü! $¨°TÓ:ö!ð	ð: ˆ÷A!ð !ús   ™B%Â%B.)g{®Gáz„?r   r   r   g»½×Ùß|Û=N©N)Ú__name__Ú
__module__Ú__qualname__r   r   rL   r   r   Úboolr1   rF   rR   r_   r   r)   Ú__classcell__)rB   s   @rC   r   r      sÏ   ø„ ð $(ØØØ+,ØØ"&ðDð Ø$Ø $òDàðDð �%˜�-Ñ ðDð ð	Dð
 ðDð $)ðDð ðDð ˜$‘ðDð ðDð ðDð ˜‰~õDôLò*-ò,ð* "ò*ó "ô*rD   a[  Implements Adagrad algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma \text{ (lr)}, \: \theta_0 \text{ (params)}, \: f(\theta)
                \text{ (objective)}, \: \lambda \text{ (weight decay)},                          \\
            &\hspace{12mm}    \tau \text{ (initial accumulator value)}, \: \eta\text{ (lr decay)}\\
            &\textbf{initialize} :  state\_sum_0 \leftarrow \tau                          \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})           \\
            &\hspace{5mm} \tilde{\gamma}    \leftarrow \gamma / (1 +(t-1) \eta)                  \\
            &\hspace{5mm} \textbf{if} \: \lambda \neq 0                                          \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda \theta_{t-1}                             \\
            &\hspace{5mm}state\_sum_t  \leftarrow  state\_sum_{t-1} + g^2_t                      \\
            &\hspace{5mm}\theta_t \leftarrow
                \theta_{t-1}- \tilde{\gamma} \frac{g_t}{\sqrt{state\_sum_t}+\epsilon}            \\
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
            &\bf{return} \:  \theta_t                                                     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
       \end{aligned}

    For further details regarding the algorithm we refer to `Adaptive Subgradient Methods for Online Learning
    and Stochastic Optimization`_.
    z
    Args:
        aÙ  
        lr (float, Tensor, optional): learning rate (default: 1e-2)
        lr_decay (float, optional): learning rate decay (default: 0)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        initial_accumulator_value (float, optional): initial value of the
            sum of squares of gradients (default: 0)
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-10)
        z	
        aÒ  
        fused (bool, optional): whether the fused implementation (CPU only) is used.
            Currently, `torch.float64`, `torch.float32`, `torch.float16`, and `torch.bfloat16`
            are supported. (default: None). Please note that the fused implementations does not
            support sparse or complex gradients.
    .. _Adaptive Subgradient Methods for Online Learning and Stochastic
        Optimization: http://jmlr.org/papers/v12/duchi11a.html

    r   rZ   r[   r\   r   ra   rb   r]   r!   r   r^   r   r   r   r    r   c                óø  — t        d„ |D «       «      st        d«      ‚|€|€t        | |	d¬«      \  }}|€d}|€d}|r)t        j                  j                  «       rt        d«      ‚|r)t        j                  j                  «       rt        d«      ‚|r%t        j                  j                  «       st        }n-|r%t        j                  j                  «       st        }nt        } || ||||||||||	|
||¬«       y)	ztFunctional API that performs Adagrad algorithm computation.

    See :class:`~torch.optim.Adagrad` for details.
    c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrf   )r,   r6   r   )Ú.0Úts     rC   ú	<genexpr>zadagrad.<locals>.<genexpr>  s   è ø€ Ò@¨qŒz˜!œUŸ\™\×*Ñ@ùs   ‚$&zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizersz4torch.jit.script not supported with fused optimizers©
r   r   r   r    r]   r   r   r^   ra   rb   )	Úallr2   r   r6   ÚjitÚis_scriptingÚ_fused_adagradÚ_multi_tensor_adagradÚ_single_tensor_adagrad)r   rZ   r[   r\   r   ra   rb   r]   r!   r   r^   r   r   r   r    r   Ú_Úfuncs                     rC   r   r   ó   sù   € ô2 Ñ@°KÔ@Ô@ÜØ^ó
ð 	
ð €}˜˜Ü1Ø�N¨eô
‰
ˆˆ7ð €}ØˆØ€Øˆá”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTÙ”—‘×'Ñ'Ô)ÜÐQÓRÐRá”U—Y‘Y×+Ñ+Ô-Ü‰Ù	œŸ™×/Ñ/Ô1Ü$‰ä%ˆáØØØØØØ!ØØØ'ØØ%ØØØörD   c                 óP   — | j                  «       }t        j                  |||«      S rf   )Úsizer6   Úsparse_coo_tensor)rU   Úgrad_indicesrI   r|   s       rC   Ú_make_sparser   =  s"   € Ø�9‰9‹;€DÜ×"Ñ" <°¸Ó>Ð>rD   c          
      ó”  — |€|�J ‚t         j                  j                  «       st        |«      }t	        | |||«      D �]  \  }}}}|dz  }t        |«      }|s|n| }|dk7  r*|j                  rt        d«      ‚|j                  ||¬«      }|d|dz
  |z  z   z  }|j                  r½|j                  «       }|j                  «       }|j                  «       }|j                  t        |||j                  d«      «      «       |j                  |«      }|j                  «       j!                  «       j                  |	«      }|j                  t        ||||z  «      | ¬«       �Œ&t        j"                  |«      }|r?t        j$                  |«      }t        j$                  |«      }t        j$                  |«      }|j'                  ||d¬«       |r|j)                  «       |	z   }n|j)                  «       j                  |	«      }|j+                  ||| ¬«       |s�ŒÞt        j,                  |«      }t        j,                  |«      }�Œ
 y )Nr   r   z;weight_decay option is not compatible with sparse gradients©Úalphaé   ©Úvalue)r6   rt   ru   r   Úzipr   rW   r2   ÚaddÚcoalesceÚ_indicesÚ_valuesÚadd_r   ÚpowÚsparse_maskÚsqrt_r9   Úview_as_realÚaddcmul_ÚsqrtÚaddcdiv_Úview_as_complex)r   rZ   r[   r\   ra   rb   r   r   r   r    r]   r   r   r^   ÚparamrU   Ú	state_sumÚstep_tr)   Úclrr~   Úgrad_valuesÚstdÚ
std_valuesr9   s                            rC   rx   rx   B  s  € ð" Ð )Ð"3Ð3Ð3ä�9‰9×!Ñ!Ô#Ü˜‹^ˆä*-¨f°e¸ZÈÓ*Uó (=Ñ&ˆˆt�Y à�!‰ˆÜ˜&Ó!ˆÙ#‰t¨$¨ˆà˜1ÒØ�~Š~Ü"ØQóð ð —8‘8˜E¨�8Ó6ˆDà�A˜ ™ XÑ-Ñ-Ñ.ˆà�>Š>Ø—=‘=“?ˆDØŸ=™=›?ˆLØŸ,™,›.ˆKà�N‰Nœ<¨¨l¸K¿O¹OÈAÓ<NÓOÔPØ×'Ñ'¨Ó-ˆCØŸ™›×,Ñ,Ó.×3Ñ3°CÓ8ˆJØ�J‰JÜ˜T <°¸zÑ1IÓJÐSVÐRVð ö ô ×)Ñ)¨%Ó0ˆJÙÜ×)Ñ)¨$Ó/�Ü!×.Ñ.¨yÓ9�	Ü×*Ñ*¨5Ó1�Ø×Ñ˜t T°ÐÔ3ÙØ—n‘nÓ&¨Ñ,‘à—n‘nÓ&×+Ñ+¨CÓ0�Ø�N‰N˜4 ¨S¨DˆNÔ1ÛÜ×-Ñ-¨eÓ4�Ü!×1Ñ1°)Ó<’	ñQ(=rD   c                óö  — |rJ d«       ‚|€|�J ‚t        | «      dk(  ry t        |«      }t        j                  | |||g«      }|j	                  «       D �]  \  \  }}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }|
xr t        d„ |D «       «      }|rt        ||||||||	d|||||¬«       Œš|rt        |||«       |rt        j                  |«      }t        j                  j                  «       s=|d   j                  r.t        j                   |t        j"                  dd¬«      d¬	«       nt        j                   |d
«       |dk7  r3|rt        j                   |||¬	«       nt        j$                  |||¬	«      }|D �cg c]  }| d
t'        |«      d
z
  |z  z   z  ‘Œ }}t        j(                  |||d
¬«       t        j*                  |«      }t        j                   ||	«       |dk7  s|rt        j,                  ||«       |}nt        j.                  ||«      }t        j0                  |||«       �Œ! y c c}w )Nz#_foreach ops don't support autogradr   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrf   )rW   )rn   rU   s     rC   rp   z(_multi_tensor_adagrad.<locals>.<genexpr>«  s   è ø€ ò 9
Ø#ˆD�N�Nñ9
ùs   ‚Trr   g      ð?Úcpu)r'   r�   r   r„   )rJ   r   r   Ú"_group_tensors_by_device_and_dtyperI   r   rH   r   Úanyrx   r   r6   Ú_foreach_negÚcompilerÚis_compilingÚis_cpuÚ_foreach_add_r8   Ú_foreach_addr   Ú_foreach_addcmul_Ú_foreach_sqrtÚ_foreach_mul_Ú_foreach_mulÚ_foreach_addcdiv_)r   rZ   r[   r\   ra   rb   r   r   r   r    r]   r   r   r^   Úgrouped_tensorlistsÚdevice_params_Údevice_grads_Údevice_state_sums_Údevice_state_steps_ry   Údevice_paramsÚdevice_gradsÚdevice_state_sumsÚdevice_state_stepsÚdevice_has_sparse_gradr)   Ú	minus_clrr™   Ú	numerators                                rC   rw   rw   ƒ  s•  € ñ" ÐDÐDÓDÐØÐ )Ð"3Ð3Ð3ô ˆ6ƒ{�aÒØä	�B‹€Bä#×FÑFØ	�˜
 KÐ0óÐð  ×&Ñ&Ó(óM?ñ 		ñ 	ØØØØØÜœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜ ¤¤f¡Ð/AÓBÐÜ!¤$¤v¡,Ð0CÓDÐà!0ò "
´Sñ 9
Ø'3ô9
ó 6
Ðñ "Ü"ØØØ!Ø"ØØ)Ø!ØØ $Ø!Ø-Ø'Ø%Ø#õð  ñ Ü˜-¨Ð7HÔIáÜ ×-Ñ-¨lÓ;ˆLô �~‰~×*Ñ*Ô,Ð1CÀAÑ1F×1MÒ1MÜ×ÑØ"¤E§L¡L°¸UÔ$CÈ3öô ×ÑÐ 2°AÔ6à˜1ÒáÜ×#Ñ# L°-À|ÖTä$×1Ñ1Ø  -°|ô �ð
 GYö
Ø>BˆRˆC�1œ
 4Ó(¨1Ñ,°Ñ8Ñ8Ó9ð
ˆ	ð 
ô 	×ÑÐ 1°<ÀÐUVÕWä×!Ñ!Ð"3Ó4ˆÜ×Ñ˜C Ô%à˜1Ò¡ä×Ñ ¨iÔ8Ø$‰Iä×*Ñ*¨<¸ÓCˆIä×Ñ ¨y¸#Ö>ñ[M?ùòz
s   Ç I6Úreturnc                ó"  — | sy |
s|rt        d«      ‚|rt        d«      ‚t        |«      }|�|j                  |ind }|�|j                  |ind }t        j                  | |||g«      }|j                  «       D �]  \  \  }}\  \  }}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }d\  }}|�!|�||vr|j                  |d¬«      ||<   ||   }|�!|�||vr|j                  |d¬«      ||<   ||   }t        j                  |d«       t        j                  ||||||||	|||¬«       |€Œòt        j                  ||gt        |«      z  «       �Œ y )Nz5`fused` does not support sparse grad or complex paramz<adagrad with fused=True does not support differentiable=True)NNT)Únon_blockingr   )r   r   r   r    r   ra   rb   )r2   r   r'   r   rž   Úitemsr   rH   r   Útor6   r¤   Ú_fused_adagrad_Ú_foreach_sub_rJ   )r   rZ   r[   r\   ra   rb   r   r   r   r    r]   r   r   r^   Úgrad_scale_dictÚfound_inf_dictÚgrouped_tensorsr'   ry   r¬   r­   r®   r¯   r°   r±   r²   r³   Údevice_grad_scaleÚdevice_found_infs                                rC   rv   rv   ð  sí  € ñ" ØÙ™+ÜÐRÓSÐSáÜØJó
ð 	
ô 
�B‹€Bð ,6Ð+Aˆ×	Ñ	˜JÑ'Àtð ð 7@Ð6K�i×&Ñ&¨	Ñ2ÐQU€Nä×BÑBØ	�˜
 KÐ0ó€Oð 
×	Ñ	Ó	 ó(ñ 	‰ˆ�ñ ñ	
ØØØØà	äœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜ ¤¤f¡Ð/AÓBÐÜ!¤$¤v¡,Ð0CÓDÐà.8Ñ+ÐÐ+ØÐ! oÐ&AØ˜_Ñ,Ø*4¯-©-¸ÈT¨-Ó*R� Ñ'Ø /°Ñ 7ÐØÐ  ^Ð%?Ø Ñ.Ø)2¯©°fÈ4¨Ó)P�˜vÑ&Ø-¨fÑ5ÐÜ×ÑÐ.°Ô2Ü×ÑØØØØØØØ%ØØØ(Ø&õ	
ð Ñ'Ü×ÑØ"Ð%5Ð$6¼Ð=OÓ9PÑ$PöñM(rD   )NNNFNFF)Útypingr   r   r   r6   r   Ú	optimizerr   r	   r
   r   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rH   rj   rL   r   r   rx   rw   rv   r#   rD   rC   ú<module>rÇ      sš  ðç (Ñ (ã Ý ÷÷ ÷ õ ð" �iÐ
 €ôbˆiô bðLð4	à	ˆð 	ð 
ˆð 	Ø	ˆð 	Ø	Ðð ðñ5.ð „ðp !Ø#'Ø"&ð "Ø"Ø ØñGØ�‰LðGà�‰<ðGð �V‘ðGð �f‘ð	Gð
 �D‰>ðGð ˜Ñ ðGð ˜ÑðGð ðGð �d‰^ðGð ðGð ðGð 	ðGð  ð!Gð" ð#Gð$ 
ð%Gð& ó'GòT?ð
>=Ø�‰Lð>=à�‰<ð>=ð �V‘ð>=ð �f‘ð	>=ð
 ˜Ñ ð>=ð ˜Ñð>=ð 	ð>=ð ð>=ð ð>=ð 
ð>=ð ð>=ð ð>=ð ð>=ð ó>=ðBj?Ø�‰Lðj?à�‰<ðj?ð �V‘ðj?ð �f‘ð	j?ð
 ˜Ñ ðj?ð ˜Ñðj?ð 	ðj?ð ðj?ð ðj?ð 
ðj?ð ðj?ð ðj?ð ðj?ð ój?ðZMØ�‰LðMà�‰<ðMð �V‘ðMð �f‘ð	Mð
 ˜Ñ ðMð ˜ÑðMð 	ðMð ðMð ðMð 
ðMð ðMð ðMð ðMð ðMð  
ô!MrD   