Ë
    þÍ: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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 d dlmZ d dlmZ d dlmZ er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 d dlmZ  ej>                  «       r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$  ee%«      Z&dZ' G d„ de«      Z( G d„ de«      Z) G d„ de«      Z* G d „ d!e«      Z+	 d,dd"d#œ	 	 	 	 	 	 	 	 	 d-d$„Z,d.d%„Z-	 d/	 	 	 	 	 	 	 d0d&„Z.d1d'„Z/	 	 	 d2	 	 	 	 	 	 	 	 	 d3d(„Z0	 	 	 	 	 	 	 	 	 	 	 	 d4d)„Z1d5d*„Z2d6d+„Z3y)7é    )ÚannotationsN)ÚAny)Ú
NamedTuple)ÚTYPE_CHECKING)Úoptuna_warn)Ú
get_logger)Ú_CONSTRAINTS_KEY)ÚStudy)ÚStudyDirection)ÚFrozenTrial)Ú
TrialState)Ú_imports)ÚCallable)Ú_check_plot_args)Ú_filter_nonfinite)Ú_is_log_scale)Ú_is_numerical)Ú_is_reverse_scale)ÚContour)Úgo)Úmake_subplots)ÚScatter)ÚCOLOR_SCALEgš™™™™™©?c                  óJ   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   y)Ú	_AxisInfoÚstrÚnameztuple[float, float]ÚrangeÚboolÚis_logÚis_catzlist[str | int | float]Úindiceszlist[str | float | None]ÚvaluesN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úr/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/optuna/visualization/_contour.pyr   r   +   s#   … Ø
ƒIØÓØƒLØƒLØ$Ó$Ø$Ô$r*   r   c                  ó:   — e Zd ZU ded<   ded<   ded<   g Zded<   y)	Ú_SubContourInfor   ÚxaxisÚyaxiszdict[tuple[int, int], float]Úz_valuesz
list[bool]ÚconstraintsN)r%   r&   r'   r(   r1   r)   r*   r+   r-   r-   4   s   … ØÓØÓØ*Ó*Ø €K�Ô r*   r-   c                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y	)
Ú_ContourInfoz	list[str]Úsorted_paramszlist[list[_SubContourInfo]]Úsub_plot_infosr   Úreverse_scaler   Útarget_nameNr$   r)   r*   r+   r3   r3   ;   s   … ØÓØ/Ó/ØÓØÔr*   r3   c                  ó"   — e Zd ZU ded<   ded<   y)Ú_PlotValuesú	list[Any]ÚxÚyNr$   r)   r*   r+   r9   r9   B   s   … ØƒLØ„Lr*   r9   úObjective Value)Útargetr7   c               ó\   — t        j                  «        t        | |||«      }t        |«      S )aø  Plot the parameter relationship as contour plot in a study.

    Note that, if a parameter contains missing values, a trial with missing values is not plotted.

    Args:
        study:
            A :class:`~optuna.study.Study` object whose trials are plotted for their target values.
        params:
            Parameter list to visualize. The default is all parameters.
        target:
            A function to specify the value to display. If it is :obj:`None` and ``study`` is being
            used for single-objective optimization, the objective values are plotted.

            .. note::
                Specify this argument if ``study`` is being used for multi-objective optimization.
        target_name:
            Target's name to display on the color bar.

    Returns:
        A :class:`plotly.graph_objects.Figure` object.

    .. note::
        The colormap is reversed when the ``target`` argument isn't :obj:`None` or ``direction``
        of :class:`~optuna.study.Study` is ``minimize``.
    )r   ÚcheckÚ_get_contour_infoÚ_get_contour_plot)ÚstudyÚparamsr>   r7   Úinfos        r+   Úplot_contourrF   G   s*   € ôB ‡N�NÔÜ˜U F¨F°KÓ@€DÜ˜TÓ"Ð"r*   c           	     óŒ	  — t        j                  d¬«      }| j                  }| j                  }| j                  }| j
                  }t        |«      dk  rt        j                  g |¬«      S t        |«      dk(  �r”|d   }|d   }|d   d   }t        |||«      }	t        j                  |	|¬«      }
|
j                  ||j                  j                  ¬«       |
j                  ||j                  j                  ¬«       |j                  j                  r|
j                  d¬	«       |j                  j                  r|
j                  d¬	«       |j                  j                  rI|j                  j                  D �cg c]  }t!        j"                  |«      ‘Œ }}|
j                  |d
¬«       |j                  j                  rI|j                  j                  D �cg c]  }t!        j"                  |«      ‘Œ }}|
j                  |d
¬«       |
S t%        t        |«      t        |«      dd¬«      }
|
j'                  |«       d}t)        |«      D �]^  \  }}t)        |«      D �]I  \  }}||k(  r-|
j+                  t        j,                  «       |dz   |dz   ¬«       ngt        ||   |   ||«      }	|	d   }|	d   }|j/                  |¬«       |rd}|
j+                  ||dz   |dz   ¬«       |
j+                  ||dz   |dz   ¬«       ||   |   j                  }||   |   j                  }|
j                  |j                  |dz   |dz   ¬«       |
j                  |j                  |dz   |dz   ¬«       |j                  r|
j                  d|dz   |dz   ¬«       |j                  r|
j                  d|dz   |dz   ¬«       |j                  rG|j                  D �cg c]  }t!        j"                  |«      ‘Œ }}|
j                  |d
|dz   |dz   ¬«       |j                  rG|j                  D �cg c]  }t!        j"                  |«      ‘Œ }}|
j                  |d
|dz   |dz   ¬«       |dk(  r|
j                  ||dz   |dz   ¬«       |t        |«      dz
  k(  s�Œ0|
j                  ||dz   |dz   ¬«       �ŒL �Œa |
S c c}w c c}w c c}w c c}w )NzContour Plot)Útitleé   )ÚdataÚlayouté   r   )Ú
title_textr   Úcategory)ÚtypeÚlog)r   rO   T)ÚrowsÚcolsÚshared_xaxesÚshared_yaxes)ÚrowÚcol)Ú	showscaleF)r   rU   rV   )rO   rU   rV   )r   rO   rU   rV   )rM   rU   rV   )r   ÚLayoutr4   r5   r6   r7   ÚlenÚFigureÚ_get_contour_subplotÚupdate_xaxesr.   r   Úupdate_yaxesr/   r!   r    ÚmathÚlog10r   Úupdate_layoutÚ	enumerateÚ	add_tracer   Úupdate)rE   rK   r4   r5   r6   r7   Úx_paramÚy_paramÚsub_plot_infoÚ	sub_plotsÚfigureÚpÚ	log_rangerW   Úx_iÚy_iÚcontourÚscatterr.   r/   s                       r+   rB   rB   m   s’  € Ü�Y‰Y˜^Ô,€Fà×&Ñ&€MØ×(Ñ(€NØ×&Ñ&€MØ×"Ñ"€Kä
ˆ=Ó˜QÒÜ�y‰y˜b¨Ô0Ð0ä
ˆ=Ó˜QÓØ Ñ"ˆØ Ñ"ˆØ& qÑ)¨!Ñ,ˆÜ(¨¸À{ÓSˆ	Ü—‘ 	°&Ô9ˆØ×Ñ w°m×6IÑ6I×6OÑ6OÐÔPØ×Ñ w°m×6IÑ6I×6OÑ6OÐÔPà×Ñ×%Ò%Ø×Ñ ZÐÔ0Ø×Ñ×%Ò%Ø×Ñ ZÐÔ0à×Ñ×%Ò%Ø0=×0CÑ0C×0IÑ0IÖJ¨1œŸ™ A�ÐJˆIÐJØ×Ñ i°eÐÔ<Ø×Ñ×%Ò%Ø0=×0CÑ0C×0IÑ0IÖJ¨1œŸ™ A�ÐJˆIÐJØ×Ñ i°eÐÔ<ðZ €MôW Ü�]Ó#¬#¨mÓ*<È4Ð^bô
ˆð 	×Ñ˜VÔ$Øˆ	Ü% mÓ4ó $	V‰LˆC�Ü )¨-Ó 8ó #V‘��WØ˜gÒ%Ø×$Ñ$¤R§Z¡Z£\°s¸Q±wÀCÈ!ÁGÐ$ÕLä 4Ø& sÑ+¨CÑ0°-Àó!�Ið (¨™l�GØ'¨™l�GØ—N‘N¨Y�NÔ7Ù Ø$)˜	Ø×$Ñ$ W°#¸±'¸sÀQ¹wÐ$ÔGØ×$Ñ$ W°#¸±'¸sÀQ¹wÐ$ÔGà& sÑ+¨CÑ0×6Ñ6�Ø& sÑ+¨CÑ0×6Ñ6�Ø×#Ñ#¨%¯+©+¸3À¹7ÈÈaÉÐ#ÔPØ×#Ñ#¨%¯+©+¸3À¹7ÈÈaÉÐ#ÔPà—<’<Ø×'Ñ'¨Z¸SÀ1¹WÈ#ÐPQÉ'Ð'ÔRØ—<’<Ø×'Ñ'¨Z¸SÀ1¹WÈ#ÐPQÉ'Ð'ÔRà—<’<Ø8=¿¹Ö D°1¤§¡¨A¥Ð D�IÐ DØ×'Ñ'¨i¸eÈÈqÉÐVYÐ\]ÑV]Ð'Ô^Ø—<’<Ø8=¿¹Ö D°1¤§¡¨A¥Ð D�IÐ DØ×'Ñ'¨i¸eÈÈqÉÐVYÐ\]ÑV]Ð'Ô^à˜!’8Ø×'Ñ'°7ÀÀaÁÈSÐSTÉWÐ'ÔUØœ#˜mÓ,¨qÑ0Ô0Ø×'Ñ'°7ÀÀaÁÈSÐSTÉWÐ'ÖUòG#Vð$	VðL €Mùòc Kùò KùòF !Eùò !Es   Å=R2ÇR7ÏR<Ð%Sc                ó  — | j                   j                  }| j                  j                  }t        |«      dk  st        |«      dk  r;t	        j
                  «       t	        j                  «       t	        j                  «       fS t        | j                  «      dk(  rut        d| j                   j                  › d| j                  j                  › d�«       t	        j
                  «       t	        j                  «       t	        j                  «       fS t        g g «      }t        g g «      }t        | j                   j                  | j                  j                  | j                  «      D ]{  \  }}}	|€Œ
|€Œ|	r7|j                  j                  |«       |j                   j                  |«       ŒF|j                  j                  |«       |j                   j                  |«       Œ} t#        j$                  t        |«      t        |«      ft"        j&                  «      }
t#        j(                  t+        | j                  j-                  «       «      «      }t#        j(                  t+        | j                  j                  «       «      «      }||
|d d …df   |d d …df   f<   t	        j
                  |||
d|it.        dd	d
d|¬«
      }|t1        |j                  |j                   d¬«      t1        |j                  |j                   d¬«      fS )NrL   r   z,Contour plot will not be displayed because `z` and `z$` cannot co-exist in `trial.params`.rI   rH   TÚheatmapÚnonegÍÌÌÌÌÌô?)
r;   r<   ÚzÚcolorbarÚ
colorscaleÚconnectgapsÚcontours_coloringÚ	hoverinfoÚline_smoothingÚreversescale)Úis_feasibleF)r.   r"   r/   rY   r   r   r   r0   r   r   r9   Úzipr#   r1   r;   Úappendr<   ÚnpÚfullÚnanÚarrayÚlistÚkeysr   Ú_create_scatter)rE   r6   r7   Ú	x_indicesÚ	y_indicesÚfeasibleÚ
infeasibleÚx_valueÚy_valueÚcr0   ÚxysÚzsrm   s                 r+   r[   r[   »   sP  € ð
 —
‘
×"Ñ"€IØ—
‘
×"Ñ"€Iä
ˆ9ƒ~˜ÒœS ›^¨aÒ/Ü�z‰z‹|œRŸZ™Z›\¬2¯:©:«<Ð7Ð7Ü
ˆ4�=‰=Ó˜QÒÜØ:¸4¿:¹:¿?¹?Ð:Kð LØ—
‘
—‘Ð Ð DðFô	
ô �z‰z‹|œRŸZ™Z›\¬2¯:©:«<Ð7Ð7ä˜2˜rÓ"€HÜ˜R Ó$€Jä" 4§:¡:×#4Ñ#4°d·j±j×6GÑ6GÈ×IYÑIYÓZò -Ñˆ�˜!ØÑ 7Ñ#6ÙØ—
‘
×!Ñ! 'Ô*Ø—
‘
×!Ñ! 'Õ*à—‘×#Ñ# GÔ,Ø—‘×#Ñ# GÕ,ð-ô �w‰wœ˜I›¬¨I«Ð7¼¿¹Ó@€Hä
�(‰(”4˜Ÿ™×*Ñ*Ó,Ó-Ó
.€CÜ	�‰”$�t—}‘}×+Ñ+Ó-Ó.Ó	/€Bà%'€HˆS’�A�‰Y˜šA˜q˜D™	Ð!Ñ"ä�j‰jØ
Ø
Ø
Ø˜;Ð'ÜØØ#ØØØ"ô€Gð 	Ü˜Ÿ
™
 H§J¡J¸DÔAÜ˜
Ÿ™ j§l¡lÀÔFðð r*   c                ó`   — d}|rdnd}|rdnd}t        j                  | |d|dœ|dœd	|d
¬«      S )NÚGrayÚblackz#cccccczFeasible TrialzInfeasible Trialg       @)ÚwidthÚcolor)Úliner‘   ÚmarkersF)r;   r<   ÚmarkerÚmoder   Ú
showlegend)r   r   )r;   r<   rz   Ú
edge_colorÚmarker_colorr   s         r+   rƒ   rƒ   ó   sM   € Ø€JÙ)‘7¨y€LÙ*ÑÐ0B€DÜ�:‰:Ø
Ø
à!¨JÑ7Ø!ñ
ð ØØô
ð 
r*   c           	     ó  — t        | ||«       t        | j                  dt        j                  f¬«      |¬«      }|D ��ch c]#  }|j
                  j                  «       D ]  }|’Œ Œ% }}}t        |«      dk(  rt        j                  d«       g }n_|€t        |«      }nQt        |«      dk  rt        j                  d«       |D ]  }	|	|vsŒt        d|	› d	�«      ‚ t        t        |«      «      }t        |«      d
k(  r|d   }
|d   }t        | ||
||«      }|gg}nPg }t        |«      D ]@  \  }}|j                  g «       |D ]%  }
t        | ||
||«      }||   j                  |«       Œ' ŒB t!        | |«      }t#        ||||¬«      S c c}}w )NF)ÚdeepcopyÚstates)r>   r   z.Your study does not have any completed trials.rI   z,The length of params must be greater than 1.z
Parameter z does not exist in your study.rL   )r4   r5   r6   r7   )r   r   Ú
get_trialsr   ÚCOMPLETErD   r‚   rY   Ú_loggerÚwarningÚsortedÚ
ValueErrorÚsetÚ_get_contour_subplot_infora   r|   r   r3   )rC   rD   r>   r7   ÚtrialsÚtÚp_nameÚ
all_paramsr4   Úinput_p_namerd   re   rf   r5   Úir6   s                   r+   rA   rA     s¶  € ô �U˜F KÔ0äØ×Ñ %´×1DÑ1DÐ0FÐÓGÐPVô€Fð #)×G˜Q°q·x±x·}±}³ÒG¨V’&ÐG�&ÐG€JÑGÜ
ˆ6ƒ{�aÒÜ�‰ÐHÔIØ‰Ø	ˆÜ˜zÓ*‰äˆv‹;˜!ÒÜ�O‰OÐJÔKà"ò 	\ˆLØ :Ò-Ü  :¨l¨^Ð;YÐ!ZÓ[Ð[ð	\ô œs 6›{Ó+ˆô ˆ=Ó˜QÒØ Ñ"ˆØ Ñ"ˆÜ1°%¸ÀÈ'ÐSYÓZˆØ(˜/Ð*‰àˆÜ# MÓ2ò 	8‰JˆAˆwØ×!Ñ! "Ô%Ø(ò 8�Ü 9¸%ÀÈÐRYÐ[aÓ b�Ø˜qÑ!×(Ñ(¨Õ7ñ8ð	8ô & e¨VÓ4€MäØ#Ø%Ø#Øô	ð ùó? Hs   Á (Fc                ó¬  — t        ||«      }t        ||«      }||k(  rt        ||i ¬«      S t        |j                  «      dk  r't        j                  d|› d�«       t        ||i ¬«      S t        |j                  «      dk  r't        j                  d|› d�«       t        ||i ¬«      S i }t        |«      D ]ñ  \  }}	||	j                  vs||	j                  vrŒ#|j                  |   }
|j                  |   }|
€J ‚|€J ‚|j                  j                  |
«      }|j                  j                  |«      }|€|	j                  }n ||	«      }|€J ‚|j                  ||f«      }|�|�||||f<   Œ¹| j                  t        j                  u rt        ||«      nt!        ||«      |||f<   Œó t        ||||D �cg c]  }t#        |«      ‘Œ c}¬«      S c c}w )N)r.   r/   r0   rL   zParam z$ unique value length is less than 2.)r.   r/   r0   r1   )Ú_get_axis_infor-   rY   r"   rž   rŸ   ra   rD   r#   ÚindexÚvalueÚgetÚ	directionr   ÚMINIMIZEÚminÚmaxÚ_satisfy_constraints)rC   r¤   rd   re   r>   r.   r/   r0   r©   Útrialrˆ   r‰   rk   rl   r­   Úexistingr¥   s                    r+   r£   r£   7  sé  € ô ˜6 7Ó+€EÜ˜6 7Ó+€Eà�'ÒÜ U°%À"ÔEÐEä
ˆ5�=‰=Ó˜AÒÜ�‰˜&  	Ð)MÐNÔOÜ U°%À"ÔEÐEÜ
ˆ5�=‰=Ó˜AÒÜ�‰˜&  	Ð)MÐNÔOÜ U°%À"ÔEÐEà-/€HÜ˜fÓ%ò ‰ˆˆ5Ø˜%Ÿ,™,Ñ&¨'¸¿¹Ñ*EØØ—,‘,˜q‘/ˆØ—,‘,˜q‘/ˆØÐ"Ð"Ð"ØÐ"Ð"Ð"Ø�m‰m×!Ñ! 'Ó*ˆØ�m‰m×!Ñ! 'Ó*ˆàˆ>Ø—K‘K‰Eá˜5“MˆEØÐ Ð Ð à—<‘<  c 
Ó+ˆØÐ˜vÐ1ð $)ˆH�c˜3�ZÒ ð —?‘?¤n×&=Ñ&=Ñ=ô �H˜eÔ$ä˜ 5Ó)ð �c˜3�ZÒ ð-ô8 ØØØØ6<Ö=°Ô)¨!Õ,Ò=ô	ð ùò >s   Æ7Gc                óŽ   — | j                   j                  t        «      }|d u xs t        |D �cg c]  }|dk  ‘Œ	 c}«      S c c}w )Ng        )Úsystem_attrsr®   r	   Úall)r´   r1   r;   s      r+   r³   r³   p  s@   € Ø×$Ñ$×(Ñ(Ô)9Ó:€KØ˜$ÐÒF¤#¸Ö&E°A q¨C£xÒ&EÓ"FÐFùÒ&Es   ¯Ac                óê  — t        | |«      r)| D �cg c]  }|j                  j                  |«      ‘Œ }}nA| D �cg c]6  }||j                  v r$t        |j                  j                  |«      «      nd ‘Œ8 }}t	        |D �cg c]  }|€Œ|‘Œ	 c}«      }t        |D �cg c]  }|€Œ|‘Œ	 c}«      }t        | |«      r¥t        |«      }t        |«      }t        j                  |«      t        j                  |«      z
  t        z  }t        j                  dt        j                  |«      |z
  «      }t        j                  dt        j                  |«      |z   «      }d}d}	ntt        | |«      r1t        |«      }t        |«      }||z
  t        z  }||z
  }||z   }d}d}	n7t        |«      }
t        |
«      dz
  }d |
v r|dz  }|t        z  }| }||z   }d}d}	t        t        |D �cg c]  }|€Œ|‘Œ	 c}«      «      }t        |«      dk  rt        |||f||	||¬«      S t        | |«      r#|j!                  d|«       |j#                  |«       t        |||f||	||¬«      S c c}w c c}w c c}w c c}w c c}w )Né
   TFrI   rL   )r   r   r    r!   r"   r#   r   )r   rD   r®   r   r±   r²   r   Úfloatr^   r_   ÚPADDING_RATIOÚpowr¢   rY   r    r   Úinsertr|   )r¤   Ú
param_namer¥   r#   ÚvÚ	min_valueÚ	max_valueÚpaddingr    r!   Úunique_valuesÚspanr"   s                r+   r«   r«   u  so  € ä�V˜ZÔ(Ø4:Ö;¨q�!—(‘(—,‘,˜zÕ*Ð;ˆÑ;ð X^ö
ØRS¨Z¸1¿8¹8Ñ-CŒC�—‘—‘˜ZÓ(Ô)ÈÑMð
ˆð 
ô  Ö8˜1¨!©-’QÒ8Ó9€IÜ Ö8˜1¨!©-’QÒ8Ó9€Iä�V˜ZÔ(Ü˜)Ó$ˆ	Ü˜)Ó$ˆ	Ü—:‘:˜iÓ(¬4¯:©:°iÓ+@Ñ@ÄMÑQˆÜ—H‘H˜R¤§¡¨IÓ!6¸Ñ!@ÓAˆ	Ü—H‘H˜R¤§¡¨IÓ!6¸Ñ!@ÓAˆ	ØˆØ‰ä	�v˜zÔ	*Ü˜)Ó$ˆ	Ü˜)Ó$ˆ	Ø˜yÑ(¬MÑ9ˆØ Ñ'ˆ	Ø Ñ'ˆ	ØˆØ‰ô ˜F›ˆÜ�=Ó! AÑ%ˆØ�=Ñ Ø�A‰IˆDØœÑ&ˆØ�Hˆ	Ø˜7‘Nˆ	ØˆØˆä”S VÖ= ¨q©}š!Ò=Ó>Ó?€Gä
ˆ7ƒ|�aÒÜØØ˜iÐ(ØØØØô
ð 	
ô �V˜ZÔ(Ø�‰�q˜)Ô$Ø�‰�yÔ!äØØ˜)Ð$ØØØØôð ùòm <ùò
ùò 9ùÚ8ùò> >s.   ‘"Iº;I!Â I&ÂI&ÂI+Â$I+Ç"I0Ç*I0)N)
rC   r
   rD   úlist[str] | Noner>   ú%Callable[[FrozenTrial], float] | Noner7   r   Úreturnú'go.Figure')rE   r3   rÈ   rÉ   )r=   )rE   r-   r6   r   r7   r   rÈ   z&tuple['Contour', 'Scatter', 'Scatter'])r;   r:   r<   r:   rz   r   rÈ   r   )NNr=   )
rC   r
   rD   rÆ   r>   rÇ   r7   r   rÈ   r3   )rC   r
   r¤   úlist[FrozenTrial]rd   r   re   r   r>   rÇ   rÈ   r-   )r´   r   rÈ   r   )r¤   rÊ   r¿   r   rÈ   r   )4Ú
__future__r   r^   Útypingr   r   r   Únumpyr}   Úoptuna._warningsr   Úoptuna.loggingr   Úoptuna.samplers._baser	   Úoptuna.studyr
   r   Úoptuna.trialr   r   Ú$optuna.visualization._plotly_importsr   Úcollections.abcr   Úoptuna.visualization._utilsr   r   r   r   r   Úis_successfulr   r   r   r   r   r%   rž   r¼   r   r-   r3   r9   rF   rB   r[   rƒ   rA   r£   r³   r«   r)   r*   r+   ú<module>r×      s°  ðÝ "ã Ý Ý Ý  ã å (Ý %Ý 2Ý Ý 'Ý $Ý #Ý 9ñ Ý(å 8Ý 9Ý 5Ý 5Ý 9ð €8×ÑÔÝ<Ý7ÝBÝ<Ý7á
�XÓ
€ð €ô%�
ô %ô!�jô !ô�:ô ô�*ô ð  $ð##ð 59Ø(ñ##Øð##àð##ð 2ð	##ð
 ð##ð ó##óLKðb )ð5Ø
ð5àð5ð ð5ð ,ó	5ópð&  $Ø48Ø(ð	0Øð0àð0ð 2ð0ð ð	0ð
 ó0ðf6Øð6àð6ð ð6ð ð	6ð
 2ð6ð ó6órGô
@r*   