Ë
    °Ó^j¹5  ã                   óv  — d Z ddlmZmZmZmZmZmZmZ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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, ddl+m-Z. ddl/m0Z0 ddl1m2Z2m3Z3 de4ded   deddfd„Z5de4ded   deddfd„Z6de4ded   deddfd„Z7dede4ded   de8ddf
d„Z9de8de8de4d e:d!e;ddfd"„Z<dede8defd#„Z=dedee4   fd$„Z>ded%e8d&e8d'e8d(e8de4deej~                  ej€                  ej€                  f   fd)„ZAdede4ddfd*„ZBe	d+d+d+d,œded%e8d&e8d-e8d.e;d/ed   d0ej                  j†                  deej~                  ej€                  f   fd1„«       Z-e	d+d+d2œded%e8d&e8d-e8d.e;d/e8d0ej                  j†                  deej~                  eej€                  ej~                  f   f   fd3„«       Z-d4dejˆ                  d,œded%e8d&e8d-e8d.e;d/e8d0ej                  j†                  deej~                  eej€                  ej~                  f   f   fd5„Z-dede2ddfd6„ZEy)7z0Tests for dask shared by different test modules.é    )ÚAnyÚListÚLiteralÚTupleÚTypeÚUnionÚcastÚoverloadN)Úarray)Ú	dataframe)ÚClientÚ
get_worker)Úparse)Úmake_classification)Úconcat)Úget_basescoreé   )Údask)ÚEvalsLog)Ú_get_rabit_args)Ú_DASK_VERSIONé   )Úmake_batches)Úmake_categorical)Úmake_recoded)ÚDeviceÚassert_allcloseÚtree_methodÚdevice)ÚcpuÚcudaÚclientÚreturnc                 óà  — t        ddd¬«      \  }}t        j                  dd| |¬«      }|j                  ||«       t	        |«      }t        j                  |«      j                  d¬«      }t        j                  |«      j                  d	¬«      }t        j                  dd| |¬«      }	||	_
        |	j                  ||«       t	        |	«      }
t        j                  j                  ||
«       y
)z%Test init estimation for classsifier.é    é    éÊ  ©Ú	n_samplesÚ
n_featuresÚrandom_stater   ©Ún_estimatorsÚ	max_depthr   r   ©r&   N©Úchunks©r&   N)r   ÚxgbÚXGBClassifierÚfitr   ÚdaÚ
from_arrayÚrechunkÚdxgbÚDaskXGBClassifierr"   ÚnpÚtestingr   )r   r   r"   ÚXÚyÚclfÚ
base_scoreÚdxÚdyÚdclfÚdbase_scores              ú_/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/xgboost/testing/dask.pyÚcheck_init_estimation_clfrF      sÑ   € ô ¨¸bÈtÔT�D€A€qÜ
×
Ñ
Ø !°ÀVô€Cð ‡G�GˆAˆq„MÜ˜sÓ#€Jä	�‰�qÓ	×	!Ñ	!¨Ð	!Ó	4€BÜ	�‰�qÓ	×	!Ñ	!¨Ð	!Ó	/€BÜ×!Ñ!ØØØØô	€Dð €D„KØ‡H�HˆR�ÔÜ Ó%€KÜ‡J�J×Ñ˜z¨;Õ7ó    c                 óæ  — ddl m}  |ddd¬«      \  }}t        j                  dd| |¬«      }|j	                  ||«       t        |«      }t        j                  |«      j                  d	¬
«      }t        j                  |«      j                  d¬
«      }	t        j                  dd| |¬«      }
||
_        |
j	                  ||	«       t        |
«      }t        j                  j                  ||«       y)z#Test init estimation for regressor.r   )Úmake_regressionr%   r&   r'   r(   r   r,   r/   r0   r2   N)Úsklearn.datasetsrI   r3   ÚXGBRegressorr5   r   r6   r7   r8   r9   ÚDaskXGBRegressorr"   r;   r<   r   )r   r   r"   rI   r=   r>   Úregr@   rA   rB   ÚdregrD   s               rE   Úcheck_init_estimation_regrO   5   sÓ   € õ 1ñ  X¸"È4ÔP�D€A€qÜ
×
Ñ
Ø !°ÀVô€Cð ‡G�GˆAˆq„MÜ˜sÓ#€Jä	�‰�qÓ	×	!Ñ	!¨Ð	!Ó	4€BÜ	�‰�qÓ	×	!Ñ	!¨Ð	!Ó	/€BÜ× Ñ Ø !°ÀVô€Dð €D„KØ‡H�HˆR�ÔÜ Ó%€KÜ‡J�J×Ñ˜z¨;Õ7rG   c                 ó8   — t        | ||«       t        | ||«       y)zTest init estimation.N)rO   rF   )r   r   r"   s      rE   Úcheck_init_estimationrQ   N   s   € ô ˜k¨6°6Ô:Ü˜k¨6°6Õ:rG   Ú	n_workersc           	      ó  — |dk\  sJ ‚| j                  «       5  t        j                  ||¬«      }t        j                  t        d«      t        ddd«      dœ«      }t        j                  g dgdz  ¢dgdz  ¢«      }t        j                  |j                  d	d
d…df<   | j                  |¬«       |j                  t        j                  ||¬«      t        j                  ||¬«      «       d	d	d	«       y	# 1 sw Y   y	xY w)z0Issue #9271, not every worker has missing value.r   )r   r   i'  r   éÿÿÿÿ)ÚaÚbiˆ  r   Ni¸  iè  rU   )rR   ©Únpartitions)Ú
as_currentr9   r:   ÚpdÚ	DataFrameÚrangeÚSeriesr;   ÚnanÚlocÚwait_for_workersr5   ÚddÚfrom_pandas)r"   r   r   rR   r?   r=   r>   s          rE   Úcheck_uneven_nanrc   V   sÝ   € ð ˜Š>Ðˆ>à	×	Ñ	Ó	ñ 
Ü×$Ñ$°ÀVÔLˆÜ�L‰Lœu U›|´%¸¸qÀ"Ó2EÑFÓGˆÜ�I‰IÐ0˜˜˜d™
Ð0 a S¨4¡ZÐ0Ó1ˆä!#§¡ˆ�‰ˆjˆt�Dˆj˜#ˆoÑà×Ñ¨)ÐÔ4à�‰Ü�N‰N˜1¨)Ô4Ü�N‰N˜1¨)Ô4ô	
÷
÷ 
ñ 
ús   ˜CC6Ã6C?Ú	worker_idÚ	comm_argsÚis_qdmc           
      ó   — d}d}d}|dk7  }t        «       j                  j                  }	t        j                  j
                  dddi|¤Ž5  t        j                  t        ||||| ¬«      ddiŽ}
|rt        j                  |
|	¬	«      }nt        j                  |
|	¬	«      }i }t        j                  d
|	|dœ||dfgd|¬«       t        j                  t        t        t           |d   d   «      «      sJ ‚	 ddd«       g g g }}}t!        |«      D ]I  }t        |||||¬«      \  }}}|j#                  |«       |j#                  |«       |j#                  |«       ŒK t%        |«      }t%        |«      }t%        |«      }|rt        j&                  ||||	¬«      }nt        j                  ||||	¬«      }i }t        j                  d
|	|dœ||dfgd|¬«       t(        j*                  j-                  d   d   |d   d   d¬«       y# 1 sw Y   �ŒxY w)z-Basic checks for distributed external memory.r&   é   é   r    Údmlc_communicatorÚrabit)Úuse_cupyr+   Úcache)ÚnthreadÚhist)r   rn   r   ÚTrain)ÚevalsÚnum_boost_roundÚevals_resultÚrmseN)Úweightrn   g-Cëâ6?©Úrtol© )r   ÚstateÚnthreadsr3   Ú
collectiveÚCommunicatorContextÚtmÚIteratorForTestr   ÚExtMemQuantileDMatrixÚDMatrixÚtrainÚnon_increasingr	   r   Úfloatr\   Úextendr   ÚQuantileDMatrixr;   r<   r   )rd   rR   r   re   rf   Ún_samples_per_batchr*   Ú	n_batchesrl   Ú	n_threadsÚitÚXyÚresultsÚlxÚlyÚlwÚiÚxr>   Úwr=   ÚyconcatÚwconcatÚresults_locals                           rE   Úcheck_external_memoryr•   k   s$  € ð ÐØ€JØ€IØ˜‰€Hä“×"Ñ"×+Ñ+€IÜ	�‰×	+Ñ	+Ñ	S¸gÐ	SÈÑ	Sñ NÜ×ÑÜØ#ØØØ!Ø&ôð	
ð ñ	
ˆñ Ü!×7Ñ7¸ÀIÔN‰Bä—‘˜R¨Ô3ˆBØˆÜ�	‰	Ø"¨yÀFÑKØØ˜�=�/ØØ õ	
ô × Ñ ¤¤d¬5¡k°7¸7Ñ3CÀFÑ3KÓ!LÔMÐMÑM÷/Nð2 �R˜ˆBˆ€BÜ�9Óò 
ˆÜØØØØØô
‰ˆˆ1ˆað 	�	‰	�!ŒØ
�	‰	�!ŒØ
�	‰	�!�ð
ô 	ˆr‹
€AÜ�R‹j€GÜ�R‹j€GÙÜ× Ñ   G°GÀYÔO‰ä�[‰[˜˜G¨G¸YÔGˆà €MÜ‡I�IØ¨9ÀÑGØ
Ø�Gˆ}ˆoØØ"õô ‡J�J×ÑØ�Ñ˜Ñ  -°Ñ"8¸Ñ"@Àtð õ ÷mNñ Nús   ÁB*HÈHc                 ó0   — | j                  t        | |«      S )z6Get RABIT collective communicator arguments for tests.)Úsyncr   )r"   rR   s     rE   Úget_rabit_argsr˜   ´   s   € à�;‰;”¨°	Ó:Ð:rG   c                 ó–   — t        «       t        d«      k\  rddini } | j                  di |¤Žd   }t        |j	                  «       «      S )zGet workers from a dask client.z2025.4.0rR   rT   Úworkersrx   )r   Úparse_versionÚscheduler_infoÚlistÚkeys)r"   Úkwargsrš   s      rE   Úget_client_workersr    ¹   sH   € ä"/£/´]À:Ó5NÒ"Nˆk˜2ÑÐTV€FØ#ˆf×#Ñ#Ñ- fÑ-¨iÑ8€GÜ�—‘“ÓÐrG   r)   r*   Ún_query_groupsÚmax_relc                óª  ‡‡‡‡— t        | «      }|t        |«      z  }|dk(  rddlmŠ nddlmŠ dt
        dt
        dt        j                  fˆˆˆˆfd„}g }	d}
t        d||«      D ]=  }| j                  |||||
t        |«      z     g¬«      }|	j                  |«       |
d	z  }
Œ? ||t        |«      z  z
  }|dk7  r1| j                  |||t        |«      z  ¬
«      }|	j                  |«        |d	d«      }t        j                  |	|¬«      }t        |t        j                  «      sJ ‚|j                  ddgd	¬«      |j                  |j                  fS )z'Synthetic dataset for learning to rank.r    r   )r[   ÚnÚseedr#   c                 óþ   •— t         j                  j                  |«      }t        | ‰
‰
d‰	|¬«      \  }}|j	                  | fd‰¬«      } ‰|t        ‰
«      D �cg c]  }d|› �‘Œ	 c}¬«      }||d<   ||d<   |S c c}w )Nr   )Ún_informativeÚn_redundantÚ	n_classesr+   )ÚsizeÚlowÚhighÚf)ÚcolumnsÚqidr>   )r;   ÚrandomÚdefault_rngr   Úintegersr\   )r¤   r¥   Úrngr=   r>   r¯   r�   ÚdfÚDFr¢   r*   r¡   s           €€€€rE   Úmakezmake_ltr.<locals>.makeÒ   sŽ   ø€ Ü�i‰i×#Ñ# DÓ)ˆÜ"ØØØ$ØØØô
‰ˆˆ1ð �l‰l  ¨!°.ˆlÓAˆÙ�¬U°:Ó->Ö?¨˜a ˜sšGÒ?Ô@ˆØˆˆ5‰	Øˆˆ3‰Øˆ	ùò @s   ÁA:
)r¤   r¥   rš   r   )r¤   r¥   ©Úmetar¯   r>   )Úaxis)r    ÚlenÚpandasr[   ÚcudfÚintrZ   r\   ÚsubmitÚappendra   Úfrom_delayedÚ
isinstanceÚdropr>   r¯   )r"   r)   r*   r¡   r¢   r   rš   Ún_samples_per_workerr¶   Úfuturesr�   ÚkÚfutÚlastr¸   r´   rµ   s     ```           @rE   Úmake_ltrrÈ   À   sT  û€ ô ! Ó(€GØ$¬¨G«Ñ4Ðà�‚Þ*å(ð”ð œ3ð ¤2§<¡<÷ ð ð  €GØ	€AÜ�1�iÐ!5Ó6ò ˆØ�m‰mØÐ(¨q¸7À1ÄsÈ7Ã|ÑCSÑ;TÐ:Uð ó 
ˆð 	�‰�sÔØ	ˆQ‰‰ðð Ð,¬s°7«|Ñ;Ñ<€DØˆq‚yØ�m‰m˜D DÐ/CÄcÈ'ÃlÑ/RˆmÓSˆØ�‰�sÔá��1‹:€DÜ	�‰˜ tÔ	,€BÜ�bœ"Ÿ,™,Ô'Ð'Ð'Ø�7‰7�E˜3�< aˆ7Ó(¨"¯$©$°·±Ð6Ð6rG   c                 óÞ  — t        | dddd|¬«      \  }}}t        | dddd|¬«      \  }}}t        j                  dd|d	¬
«      }|j                  |||||f||fg||gd¬«       |j                  dk(  sJ ‚|j
                  d   |j                  k(  sJ ‚|j                  «       d   d   }	t        j                  |	dd d¬«      sJ |	«       ‚t        j                  j                  |	d   dd¬«       y)z)Test for the allow_group_split parameter.i   é€   rh   é   )r¡   r¢   r   i   Fé$   zrank:pairwise)Úallow_group_splitr-   r   Ú	objectiveT)r¯   Úeval_setÚeval_qidÚverboser   Úvalidation_0zndcg@32Nri   g{®Gáz„?)Ú	tolerancerT   g      ð?rv   )rÈ   r9   ÚDaskXGBRankerr5   Ún_features_in_Úshapers   r}   Únon_decreasingr;   r<   r   )
r"   r   ÚX_trÚq_trÚy_trÚX_vaÚq_vaÚy_vaÚltrÚndcgs
             rE   Úcheck_no_group_splitrà   ö   s  € äØ��c¨!°Q¸vôÑ€Dˆ$�ô  Ø��c¨!°Q¸vôÑ€Dˆ$�ô ×
Ñ
ØØØØ!ô	€Cð ‡G�GØØØØ˜�,  t Ð-Ø˜�Øð ô ð ×Ñ Ò$Ð$Ð$Ø�:‰:�a‰=˜C×.Ñ.Ò.Ð.Ð.Ø×ÑÓ˜nÑ-¨iÑ8€DÜ×Ñ˜T # 2˜Y°$Õ7Ð=¸Ó=Ð7Ü‡J�J×Ñ˜t B™x¨°4ÐÕ8rG   .)ÚonehotÚ	n_targetsÚ	cat_dtypeÚn_categoriesrá   râ   rã   c                 ó   — y ©Nrx   ©r"   r)   r*   rä   rá   râ   rã   s          rE   r   r     s   € ð &)rG   )rá   rã   c                 ó   — y ræ   rx   rç   s          rE   r   r   "  s   € ð ;>rG   Fc                ó�  — t        | «      }t        |«      }g }	|dkD  rt        |«      D �
cg c]  }
d|
› �‘Œ	 c}
ndg}dt        dt        j
                  fd„} |d||d||¬«      }t        |«      D ]T  \  }
}t        ||z  ||
||z  z  z
  «      }|dk(  r|
d	k(  rd}| j                  ||||||d|g¬
«      }|	j                  |«       ŒV t        t        j
                  t	        j                  |	|¬«      «      }||   }|dk(  r||d	      }||j                  j                  |«         }|rt	        j                  |«      |fS ||fS c c}
w )z&Synthesize categorical data with dask.r   Úlabel_ÚlabelrŸ   r#   c                  ó¦   — t        di | ¤Ž\  }}|j                  dk(  r.t        |j                  d   «      D ]  }|d d …|f   |d|› �<   Œ |S ||d<   |S )Nr   r   rê   rë   rx   )Úmake_cat_localÚndimr\   rÖ   )rŸ   r=   r>   r�   s       rE   Úpackzmake_categorical.<locals>.packB  sh   € ÜÑ' Ñ'‰ˆˆ1Ø�6‰6�QŠ;Ü˜1Ÿ7™7 1™:Ó&ò *�Ø"#¢A q D¡'��F˜1˜#�,’ð*ð ˆð ˆAˆg‰JØˆrG   F)r)   r*   rä   rá   râ   rã   r   )r)   r*   rä   râ   rã   rá   rš   r·   )r    rº   r\   r   ra   r[   Ú	enumerateÚminr¾   r¿   r	   rÀ   r®   Ú
differenceÚget_dummies)r"   r)   r*   rä   rá   râ   rã   rš   rR   Údfsr�   Ú
label_colsrï   r¸   ÚworkerÚl_n_samplesÚfuturer´   r>   r=   s                       rE   r   r   /  s�  € ô ! Ó(€GÜ�G“€IØ
€Cð 5>À²Mœu YÓ/Ö0˜!ˆ6�!�ŠÓ0ÈÀyð ð”sð œrŸ|™|ó ñ ØØØ!ØØØô€Dô ˜wÓ'ò ‰	ˆˆ6ÜØ˜Ñ" I°°YÀ)Ñ5KÑ0LÑ$Ló
ˆð ˜Š>˜a 1šfØˆKØ—‘ØØ!Ø!Ø%ØØØØ�Hð ó 	
ˆð 	�
‰
�6Õð#ô& œBŸL™L¬"¯/©/¸#ÀDÔ*IÓJ€BØ
ˆ:‰€AØ�A‚~Øˆj˜‰mÑˆØ
ˆ2�:‰:× Ñ  Ó,Ñ-€AáÜ�~‰~˜aÓ  !Ð#Ð#Øˆaˆ4€Kùòa 	1s   «Ec                 ó  ‡ ‡‡— dt         t        j                     dt        dt        dt        j                  fd„Šdt         t        j                     ddfˆ ˆˆfd„}t        j                  t        j                  fD ]
  } ||«       Œ y)z+Run re-coding test with the Dask interface.ÚDMatrixTÚargsrŸ   r#   c                 ó’   — | t         j                  u r|j                  dd «      } | |d|i|¤ŽS |j                  dd «        | |i |¤ŽS )NÚref)r9   ÚDaskQuantileDMatrixÚpop)rú   rû   rŸ   rý   s       rE   Úcreate_dmatrixz"run_recode.<locals>.create_dmatrixv  sU   € ð ”t×/Ñ/Ñ/Ø—*‘*˜U DÓ)ˆCÙ˜TÐ5 sÐ5¨fÑ5Ð5à�
‰
�5˜$ÔÙ˜Ð( Ñ(Ð(rG   Nc                 óÈ  •— t        ‰d¬«      \  }}}}}t        ‰«      }t        j                  |d¬«      j	                  |¬«      t        j                  |d¬«      j	                  |¬«      t        j                  ||j                  d   dz  f¬«      j	                  |¬«      }}} ‰| ‰||d¬	«      }	 ‰| ‰||d|	¬
«      }
t        j                  ‰d‰i|	|
dfg¬«      } ‰| ‰||d¬	«      }	 ‰| ‰||d|	¬
«      }
t        j                  ‰d‰i|	|
dfg|d   ¬«      } ‰| ‰||d¬	«      }	 ‰| ‰||d|	¬
«      }
t        j                  ‰d‰i|	|
dfg|d   ¬«      }t        j                  |d   d   d   «      j                  «       sJ ‚t        j                  |d   d   d   «      j                  «       sJ ‚t        j                  ‰||«      j                  «       }t        j                  ‰||«      j                  «       }t        ‰||«       t        j                   ‰||	«      j                  «       }t        j                   ‰||
«      j                  «       }t        ‰||«       y )Né`   )r*   é   rW   )rš   r   r0   T)Úenable_categorical)r  rý   r   ÚValid)rq   Úbooster)rq   Ú	xgb_modelÚhistoryrt   )r   r    ra   rb   Úpersistr6   r7   rÖ   r9   r�   r;   ÚisfiniteÚallÚinplace_predictÚcomputer   Úpredict)rú   ÚencÚreencr>   Ú_ÚtoÚdencÚdreencrB   rŠ   ÚXy_validr‹   Ú	results_1Ú	results_2Úpredt_0Úpredt_1r"   r   r   s                   €€€rE   Úrunzrun_recode.<locals>.run€  sy  ø€ Ü*¨6¸bÔAÑˆˆU�A�q˜!Ü Ó'ˆô �N‰N˜3¨AÔ.×6Ñ6¸rÐ6ÓBÜ�N‰N˜5¨aÔ0×8Ñ8ÀÐ8ÓDÜ�M‰M˜! Q§W¡W¨Q¡Z°1¡_Ð$6Ô7×?Ñ?ÈÐ?ÓKð ˆfˆñ ˜H f¨d°BÈ4ÔPˆÙ!Ø�f˜f b¸TÀrô
ˆô —*‘*Ø�X˜vÐ&¨°H¸gÐ3FÐ2Gô
ˆñ
 ˜H f¨d°BÈ4ÔPˆÙ!Ø�f˜f b¸TÀrô
ˆô —J‘JØØ�vÐØØ˜gÐ&Ð'Ø˜iÑ(ô
ˆ	ñ ˜H f¨f°bÈTÔRˆÙ!Ø�f˜d B¸4ÀRô
ˆô —J‘JØØ�vÐØØ˜gÐ&Ð'Ø˜iÑ(ô
ˆ	ô �{‰{˜9 YÑ/°Ñ8¸Ñ@ÓA×EÑEÔGÐGÐGÜ�{‰{˜9 YÑ/°Ñ8¸Ñ@ÓA×EÑEÔGÐGÐGä×&Ñ& v¨w¸Ó=×EÑEÓGˆÜ×&Ñ& v¨w¸Ó?×GÑGÓIˆÜ˜ ¨Ô1ä—,‘,˜v w°Ó3×;Ñ;Ó=ˆÜ—,‘,˜v w°Ó9×AÑAÓCˆÜ˜ ¨Õ1rG   )r   r9   ÚDaskDMatrixr   rþ   )r"   r   r  rú   r   s   ``  @rE   Ú
run_recoder  s  s�   ú€ ð)Ü”t×'Ñ'Ñ(ð)Ü14ð)Ü@Cð)ä	×	Ñ	ó)ð52”dœ4×+Ñ+Ñ,ð 52°÷ 52ôn ×%Ñ%¤t×'?Ñ'?Ð@ò ˆÙˆH�ñrG   )FÚ__doc__Útypingr   r   r   r   r   r   r	   r
   Únumpyr;   r»   rZ   r   r   r6   r   ra   Údistributedr   r   Úpackaging.versionr   r›   rJ   r   Úxgboostr3   Úxgboost.testingr<   r}   Úxgboost.compatr   Úxgboost.testing.updaterr   Ú r9   Ú_typingr   r   Ú
dask.utilsr   Údatar   r   rí   Úordinalr   Úutilsr   r   ÚstrrF   rO   rQ   r½   rc   ÚdictÚboolr•   r˜   r    r[   r]   rÈ   rà   Ú	DTypeLikeÚint64r  rx   rG   rE   ú<module>r1     s¹  ðÙ 6ç I× IÓ Iã Û Ý Ý  ß *Ý 4Ý 0ã Ý Ý !Ý 1å Ý Ý "Ý &Ý Ý 4Ý !ß *ð8Øð8Ø% mÑ4ð8Ø>Dð8à	ó8ð28Øð8Ø% mÑ4ð8Ø>Dð8à	ó8ð2;Øð;Ø% mÑ4ð;Ø>Dð;à	ó;ð
Øð
Ø!$ð
Ø.5°mÑ.Dð
ØQTð
à	ó
ð*FØðFàðFð ðFð ð	Fð
 ðFð 
óFðR;˜6ð ;¨cð ;°có ;ð
 ˜vð  ¨$¨s©)ó  ð37Øð37àð37ð ð37ð
 ð37ð ð37ð ð37ð ˆ2�<‰<˜Ÿ™ B§I¡IÐ-Ñ.ó37ðl9 ð 9°ð 9¸ó 9ð> 
ð ØØ%(ò	)Øð	)àð	)ð ð	)ð ð		)ð ð	)ð �q‰zð	)ð �y‰y×"Ñ"ð	)ð ˆ2�<‰<˜Ÿ™Ð"Ñ#ò	)ó 
ð	)ð 
ð à%(ò	>Øð	>àð	>ð ð	>ð ð		>ð ð	>ð ð	>ð �y‰y×"Ñ"ð	>ð ˆ2�<‰<˜˜rŸy™y¨"¯,©,Ð6Ñ7Ð7Ñ8ò	>ó 
ð	>ð$ ØØ%'§X¡Xò@Øð@àð@ð ð@ð ð	@ð ð@ð ð@ð �y‰y×"Ñ"ð@ð ˆ2�<‰<˜˜rŸy™y¨"¯,©,Ð6Ñ7Ð7Ñ8ó@ðHE�vð E vð E°$ô ErG   