§
    ¨éUg'^  ã                   óŽ  — d dl Z d dlZd dlZd dlmZmZ d dlmZm	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mZ d d
lmZmZ d dlmZ ej                             d ¦  «        ZdZddgde                      ed¦  «        z  z   Z!ddgde                      ed¦  «        z  z   Z"ddgde                      ed¦  «        z  z   Z#ddgde                      ed¦  «        z  z   Z$ddgde                      ed¦  «        z  z   Z%ddgde                      ed¦  «        z  z   Z& ej'        e!e"e#e$e%e&f¦  «        Z(ej)         *                    dg d¢dgg d¢d gdddd d!dej+        gdgdddd d!dej+        gdgg¦  «        d"„ ¦   «         Z,ej)         *                    dddd#d$dd%d%ej+        gdgddd#d$d&dd%d%ej+        g	d gddd#dej+        gd gddd#ej+        gdgg¦  «        d'„ ¦   «         Z-ej)         *                    d(g d)¢d dgddggg d*¢gg d)¢d dgddggg d+¢gg d)¢d dgddgd dggg d+¢gg d,¢d dgddgd dggg d-¢gg¦  «        d.„ ¦   «         Z.d/„ Z/d0„ Z0ej)         *                    d1d2gd3„ eD ¦   «         z   ¦  «        d4„ ¦   «         Z1d5„ Z2d6„ Z3d7„ Z4d8„ Z5d9„ Z6d:„ Z7d;„ Z8ej)         *                    d<g d=¢¦  «        ej)         *                    d>g d?¢¦  «        ej)         *                    d1d2d@gdA„ eD ¦   «         z   ¦  «        dB„ ¦   «         ¦   «         ¦   «         Z9dC„ Z:ej)         *                    dD e;de(j<        d          dz  dE¦  «        ¦  «        dF„ ¦   «         Z=ej)         *                    dGe¦  «        dH„ ¦   «         Z>dI„ Z?dJ„ Z@dK„ ZAej)         *                    dGdgez   ¦  «        dL„ ¦   «         ZBej)         *                    dGe¦  «        dM„ ¦   «         ZCdN„ ZDdS )Oé    N)ÚDBSCANÚOPTICS)Ú_extend_regionÚ_extract_xi_labels)Úgenerate_clustered_data)Ú
make_blobs)ÚDataConversionWarningÚEfficiencyWarning)Úcontingency_matrix)Úpairwise_distances)Úshuffle)Úassert_allcloseÚassert_array_equal)ÚCSR_CONTAINERSé
   éûÿÿÿéþÿÿÿçš™™™™™é?é   é   éÿÿÿÿçš™™™™™¹?é   çš™™™™™É?é   ç333333Ó?gš™™™™™ù?é   é   )Úr_plotÚend)r   çÍÌÌÌÌÌ!@çš™™™™™!@çffffff!@é   r   )r   r!   r"   r#   g333333!@r$   r   r!   r"   r#   r$   c                 ó¤   — t          j        | ¦  «        } | d d…         | dd …         z  }|dk    }|dk     }t          ||dd¦  «        }||k    sJ ‚d S )Nr   r   grÇqÇñ?r   r   ©ÚnpÚarrayr   )r   r    ÚratioÚsteep_downwardÚupwardÚes         ú`/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/cluster/tests/test_optics.pyÚtest_extend_downwardr.      sd   € õ ŒX�fÑÔ€FØ�3�B�3ŒK˜&   œ*Ñ$€EØ˜gÒ%€NØ�QŠY€Få�~ v¨q°!Ñ4Ô4€AØ�Š8ˆ8ˆ8ˆ8ˆ8ˆ8ó    gÍÌÌÌÌÌ @gš™™™™™@é   gffffff@c                 ó¤   — t          j        | ¦  «        } | d d…         | dd …         z  }|dk    }|dk    }t          ||dd¦  «        }||k    sJ ‚d S )Nr   r   gÍÌÌÌÌÌì?r   r   r&   )r   r    r)   Ústeep_upwardÚdownwardr,   s         r-   Útest_extend_upwardr4   2   sc   € õ ŒX�fÑÔ€FØ�3�B�3ŒK˜&   œ*Ñ$€EØ˜C’<€LØ�qŠy€Hå�| X¨q°!Ñ4Ô4€AØ�Š8ˆ8ˆ8ˆ8ˆ8ˆ8r/   )ÚorderingÚclustersÚexpected©r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 óF   — t          | |¦  «        }t          ||¦  «         d S ©N)r   r   )r5   r6   r7   Úlabelss       r-   Útest_the_extract_xi_labelsr<   E   s)   € õ   ¨(Ñ3Ô3€Få�v˜xÑ(Ô(Ð(Ð(Ð(r/   c                 óð  — t           j                             d¦  «        }d}ddgd|                     |d¦  «        z  z   }ddgd	|                     |d¦  «        z  z   }d
dgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }t          j        |||||t          j        ddgg¦  «        |f¦  «                             | d¬¦  «        }	t           j        dgdz  dgdz  d
gdz  dgdz  d
gdz  ddgdz  f         }
t          |	|
|¬¦  «        \  }	}
t          ddddd¬¦  «         
                    |	¦  «        }t          |j        |
¦  «         t          d	dddd¬¦  «         
                    |	¦  «        }t          |j        |
¦  «         t          j        |||||t          j        ddggdz  ¦  «        |f¦  «                             | d¬¦  «        }	t           j        d
gdz  dgdz  dgdz  dgdz  dgdz  dddgdz  f         }
t          |	|
|¬¦  «        \  }	}
t          ddddd¬¦  «         
                    |	¦  «        }t          |j        |
¦  «         ddgdd	gddgd	dgg}ddgddgddgddgg}ddgddgddgddgg}t          j        |||f¦  «                             | d¬¦  «        }	t           j        dgdz  d
gdz  dgdz  f         }
t          |	|
|¬¦  «        \  }	}
t          ddt           j        dd¬¦  «         
                    |	¦  «        }t          |j        |
¦  «         d S ) Nr   r   r   r   r   r   r   r   r   r   r   r   r   g333333ã?r   éd   F©Úcopy©Úrandom_stateé   Úxiçš™™™™™Ù?)Úmin_samplesÚmin_cluster_sizeÚmax_epsÚcluster_methodrD   g{®Gáz´?çš™™™™™¹¿r   é	   é   éZ   én   ç{®Gáz¤?)r'   ÚrandomÚRandomStateÚrandnÚvstackr(   ÚastypeÚr_r   r   Úfitr   Úlabels_Úinf)Úglobal_dtypeÚrngÚn_points_per_clusterÚC1ÚC2ÚC3ÚC4ÚC5ÚC6ÚXÚexpected_labelsÚclusts               r-   Útest_extract_xire   T   s  € õ Œ)×
Ò
 Ñ
"Ô
"€CØÐà
ˆbˆ�C˜#Ÿ)š)Ð$8¸!Ñ<Ô<Ñ<Ñ	<€BØ
ˆRˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆRˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆaˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆRˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆQˆ�#˜Ÿ	š	Ð"6¸Ñ:Ô:Ñ:Ñ	:€Bå
Œ	�2�r˜2˜r 2¥r¤x°#°s°°Ñ'=Ô'=¸rÐBÑCÔC×JÒJØ˜5ð 	Kñ 	ô 	€Aõ ”e˜Q˜C !™G a S¨1¡W¨q¨c°A©g¸°s¸Q±wÀÀÀaÁÈÈaÈSÐSTÉWÐTÔU€OÝ   OÀ#ÐFÑFÔFÑ€A€åØ¨°2ÀdÈsðñ ô ç	‚cˆ!�f„fð 
õ �u”} oÑ6Ô6Ð6õ Ø¨$¸È4ÐTWðñ ô ç	‚cˆ!�f„fð 
õ �u”} oÑ6Ô6Ð6å
Œ	�2�r˜2˜r 2¥r¤x°#°s°°¸qÑ0@Ñ'AÔ'AÀ2ÐFÑGÔG×NÒNØ˜5ð 	Oñ 	ô 	€Aõ ”eØ	
ˆˆa‰�!��q‘˜1˜# ™' A 3¨¡7¨Q¨C°!©G°R¸¸a¸SÀ1¹WÐDô€Oõ !  OÀ#ÐFÑFÔFÑ€A€åØ¨°2ÀdÈsðñ ô ç	‚cˆ!�f„fð 
õ �u”} oÑ6Ô6Ð6àˆaˆ&�1�c�(˜Q ˜I¨¨Q xÐ	0€BØˆrˆ(�R˜�G˜b "˜X¨¨2 wÐ	/€BØ�ˆ*�s˜B�i # s ¨b°#¨YÐ	7€BÝ
Œ	�2�r˜2�,ÑÔ×&Ò& |¸%Ð&Ñ@Ô@€AÝ”e˜Q˜C !™G a S¨1¡W¨q¨c°A©gÐ5Ô6€OÝ   OÀ#ÐFÑFÔFÑ€A€åØ¨µ2´6È$ÐSWðñ ô ç	‚cˆ!�f„fð 
õ �u”} oÑ6Ô6Ð6Ð6Ð6r/   c                 ó\  — t           j                             d¦  «        }d}ddgd|                     |d¦  «                             | d¬¦  «        z  z   }ddgd|                     |d¦  «                             | d¬¦  «        z  z   }t          j        ||f¦  «        }t          |d¬¦  «        }t          dd	¬
¦  «                             |¦  «        j	        }|j
        dk    sJ ‚t          j        |t          j        ddgddgg¦  «        z
  ¦  «        }|t          |¦  «        z  dk     sJ ‚d S )Nr   r>   r   Fr?   é2   rA   rC   r   )rF   rD   )r   r   éc   éÇ   çš™™™™™©?)r'   rP   rQ   rR   rT   rS   r   r   rV   Úcluster_hierarchy_ÚshapeÚsumr(   Úlen)rY   rZ   r[   r\   r]   rb   r6   Údiffs           r-   Útest_cluster_hierarchy_rp   �   sJ  € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØÐØ
ˆQˆ�!�c—i’iÐ 4°aÑ8Ô8×?Ò?Ø˜5ð @ñ ô ñ ñ 
€Bð ˆQˆ�"�s—y’yÐ!5°qÑ9Ô9×@Ò@Ø˜5ð Añ ô ñ ñ 
€Bõ 	Œ	�2�r�(ÑÔ€AÝ� Ð"Ñ"Ô"€Aå "¨Ð-Ñ-Ô-×1Ò1°!Ñ4Ô4ÔG€HØŒ>˜VÒ#Ð#Ð#Ð#ÝŒ6�(�RœX¨¨2 w°°C°Ð&9Ñ:Ô:Ñ:Ñ;Ô;€DØ•#�a‘&”&‰=˜4ÒÐÐÐÐÐr/   zcsr_container, metric)NÚ	minkowskic                 ó   — g | ]}|d f‘ŒS ©Ú	euclidean© ©Ú.0Ú	containers     r-   ú
<listcomp>ry   ¡   s   € ÐVÐVÐV¸)˜i¨Ð5ÐVÐVÐVr/   c                 óN  — d}t          |¬¦  «        }t          ddd| ¬¦  «        }|                     |� ||¦  «        n|¦  «         t          t	          |j        ¦  «        ¦  «        t          d|j        v ¦  «        z
  }||k    sJ ‚|j        j        t          |¦  «        fk    sJ ‚|j        j        j	        dk    sJ ‚|j
        j        t          |¦  «        fk    sJ ‚|j
        j        j	        d	k    sJ ‚|j        j        t          |¦  «        fk    sJ ‚|j        j        j	        d	k    sJ ‚|j        j        t          |¦  «        fk    sJ ‚|j        j        j	        dk    sJ ‚t	          |j        ¦  «        t	          t          t          |¦  «        ¦  «        ¦  «        k    sJ ‚d S )
Nr   )Ú
n_clustersg      >@r   r   )rH   rF   rD   Úmetricr   ÚiÚf)r   r   rV   rn   ÚsetrW   Úintrl   ÚdtypeÚkindÚreachability_Úcore_distances_Ú	ordering_Úrange)r|   Úcsr_containerr{   rb   rd   Ún_clusters_1s         r-   Útest_correct_number_of_clustersr‰   Ÿ   sª  € ð €JÝ¨:Ð6Ñ6Ô6€Aõ ˜9°!¸ÀFÐKÑKÔK€EØ	‡I‚I -Ð";ˆmˆm˜AÑÔÐÀÑCÔCÐCå•s˜5œ=Ñ)Ô)Ñ*Ô*­S°°u´}Ð1DÑ-EÔ-EÑE€LØ˜:Ò%Ð%Ð%Ð%ð Œ=Ô¥3 q¡6¤6 )Ò+Ð+Ð+Ð+ØŒ=ÔÔ# sÒ*Ð*Ð*Ð*àÔÔ$­¨Q©¬¨	Ò1Ð1Ð1Ð1ØÔÔ$Ô)¨SÒ0Ð0Ð0Ð0àÔ Ô&­3¨q©6¬6¨)Ò3Ð3Ð3Ð3ØÔ Ô&Ô+¨sÒ2Ð2Ð2Ð2àŒ?Ô ¥S¨¡V¤V IÒ-Ð-Ð-Ð-ØŒ?Ô Ô%¨Ò,Ð,Ð,Ð,ÝˆuŒÑÔ¥3¥u­S°©V¬V¡}¤}Ñ#5Ô#5Ò5Ð5Ð5Ð5Ð5Ð5r/   c                  óÊ   — d} ddgg}t          ddd¬¦  «        }t          j        t          | ¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz#min_samples must be no greater thanr   g      ø?r   ç      ð?)rH   rF   rG   ©Úmatch)r   ÚpytestÚraisesÚ
ValueErrorrV   )Úmsgrb   rd   s      r-   Ú#test_minimum_number_of_sample_checkr’   ¿   s²   € à
/€Cð ˆQˆˆ€AÝ˜9°"ÀsÐKÑKÔK€Eõ 
Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�	Š	�!‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   µAÁAÁAc                  ó  — d} ddgddgddgg}t          d|dd¬¦  «        \  }}t          dd	d
d¬¦  «        }t          j        t          | ¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz.Specify an epsilon smaller than 0.15. Got 0.3.r   r   éî  rE   r   ©Ú	n_samplesÚcentersÚcluster_stdrB   g333333Ã?Údbscanr   r   ©rH   rI   ÚepsrF   rŒ   )r   r   rŽ   r�   r�   rV   ©r‘   r—   rb   Úlabels_truerd   s        r-   Útest_bad_extractrž   Ì   sá   € à
:€CØ�1ˆv˜˜B�x ! R Ð)€GÝØ˜w°CÀaðñ ô �N€A€{õ
 ˜:°hÀCÐUWÐXÑXÔX€EÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�	Š	�!‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA5Á5A9Á<A9c                  ó  — d} ddgddgddgg}t          d|dd¬¦  «        \  }}t          j        t          | ¬¦  «        5  t	          d	d
d	¬¦  «        }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz6All reachability values are inf. Set a larger max_eps.r   r   r”   rE   r   r•   rŒ   g¸…ëQ¸Ž?r   )rH   rF   r›   )r   rŽ   ÚwarnsÚUserWarningr   rV   rœ   s        r-   Útest_bad_reachabilityr¢   Ú   sÞ   € Ø
B€CØ�1ˆv˜˜B�x ! R Ð)€GÝØ˜w°CÀaðñ ô �N€A€{õ 
Œ•k¨Ð	-Ñ	-Ô	-ð ð Ý˜{¸ÀÐFÑFÔFˆØ�	Š	�!‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ¿(A4Á4A8Á;A8c                  ó*  — d} t           j                             ddt          ¬¦  «        }t	          j        ¦   «         5  t	          j        dt          ¦  «         t          | ¬¦  «         	                    |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚrogerstanimotor   ©r   r   ©Úsizer�   Úerror©r|   )
r'   rP   ÚrandintÚboolÚwarningsÚcatch_warningsÚsimplefilterr	   r   rV   )Úpairwise_metricrb   s     r-   Ú$test_nowarn_if_metric_bool_data_boolr°   æ   sË   € ð
 '€OÝ
Œ	×Ò˜! &µÐÑ5Ô5€Aå	Ô	 Ñ	"Ô	"ð .ð .ÝÔ˜gÕ'<Ñ=Ô=Ð=å�oÐ&Ñ&Ô&×*Ò*¨1Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s   ½>BÂBÂBc                  óF  — d} t           j                             ddt           j        ¬¦  «        }d| › �}t	          j        t          |¬¦  «        5 }t          | ¬¦  «                             |¦  «         t          |¦  «        dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )	Nr¤   r   r¥   r¦   z-Data will be converted to boolean for metric rŒ   r©   r   )
r'   rP   rª   Úint32rŽ   r    r	   r   rV   rn   )r¯   rb   r‘   Úwarn_records       r-   Ú%test_warn_if_metric_bool_data_no_boolr´   ô   sæ   € ð '€OÝ
Œ	×Ò˜! &µ´ÐÑ9Ô9€AØ
K¸/Ð
KÐ
K€Cå	ŒÕ+°3Ð	7Ñ	7Ô	7ð %¸;Ý�oÐ&Ñ&Ô&×*Ò*¨1Ñ-Ô-Ð-Ý�;ÑÔ 1Ò$Ð$Ð$Ð$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   Á9BÂBÂBc                  óÈ  — d} t           j                             ddt          ¬¦  «        }t           j                             ddt           j        ¬¦  «        }t          j        ¦   «         5  t          j        dt          ¦  «         t          | ¬¦  «         
                    |¦  «         t          | ¬¦  «         
                    |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrq   r   r¥   r¦   r¨   r©   )r'   rP   rª   r«   r²   r¬   r­   r®   r	   r   rV   )r¯   ÚX_boolÚX_nums      r-   Útest_nowarn_if_metric_no_boolr¸     s
  € ð "€OÝŒY×Ò˜q vµTÐÑ:Ô:€FÝŒI×Ò˜a fµB´HÐÑ=Ô=€Eå	Ô	 Ñ	"Ô	"ð 2ð 2ÝÔ˜gÕ'<Ñ=Ô=Ð=õ 	�oÐ&Ñ&Ô&×*Ò*¨6Ñ2Ô2Ð2å�oÐ&Ñ&Ô&×*Ò*¨5Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   Á)A!CÃCÃCc                  óÈ   — ddgddgddgg} t          d| dd¬¦  «        \  }}t          ddd	d
¬¦  «                             |¦  «        }t          |j        ¦  «        dk    sJ ‚d S )Nr   r   r”   rE   r   r•   r‹   r™   r   r   rš   r   )r   r   rV   ÚmaxrW   )r—   rb   r�   rd   s       r-   Útest_close_extractr»     s…   € ð �1ˆv˜˜B�x ! R Ð)€GÝØ˜w°CÀaðñ ô �N€A€{õ
 ˜3¨x¸SÈbÐQÑQÔQ×UÒUÐVWÑXÔX€EåˆuŒ}ÑÔ Ò"Ð"Ð"Ð"Ð"Ð"r/   r›   )r   r   ç      à?rF   )r   r   rC   )Nrt   c                 ó   — g | ]}|d f‘ŒS rs   ru   rv   s     r-   ry   ry   &  s   € Ð@Ð@Ð@ Iˆ	�;ÐÐ@Ð@Ð@r/   c           	      ó�  — ddgddgddgg}t          d|dd¬¦  «        \  }}|� ||¦  «        n|}|                     |d¬¦  «        }t          |d	| |¬
¦  «                             |¦  «        }t	          | |¬¦  «                             |¦  «        }	t          |	j        |j        ¦  «        }
t          t          j	        t          j
        |
d¬¦  «        ¦  «        t          j	        t          j
        |
d¬¦  «        ¦  «        ¦  «        }|j        d         |z
  }t          j        |dz
  |j        d         z  d¦  «        }|dk    sJ ‚d S )Nr   r   é–   rE   r   r•   Fr?   r™   )rF   rI   r›   r|   )r›   rF   )Úaxisr   rj   )r   rT   r   rV   r   r   rW   Úminr'   rm   rº   rl   Úround)r›   rF   r|   rY   r‡   r—   rb   r�   ÚopÚdbÚcontingencyÚagreeÚdisagreeÚpercent_mismatchs                 r-   Útest_dbscan_optics_parityrÉ   !  sa  € ð �1ˆv˜˜B�x ! R Ð)€GÝØ˜w°CÀaðñ ô �N€A€{ð *Ð5ˆˆ�aÑÔÐ¸1€Aà	�Š� EˆÑ*Ô*€Aõ 
Ø°¸cÈ&ð
ñ 
ô 
ç	‚cˆ!�f„fð õ
 
�C [Ð	1Ñ	1Ô	1×	5Ò	5°aÑ	8Ô	8€Bå$ R¤Z°´Ñ<Ô<€KÝÝ
Œ�rŒv�k¨Ð*Ñ*Ô*Ñ+Ô+­R¬VµB´F¸;ÈQÐ4OÑ4OÔ4OÑ-PÔ-Pñô €Eð Œw�qŒz˜EÑ!€Hå”x ¨A¡°´¸´Ñ ;¸QÑ?Ô?Ðð ˜tÒ#Ð#Ð#Ð#Ð#Ð#r/   c                 ó  — ddgddgddgg}ddgddgddgg}ddgddgdd	gg}t          j        |||f¦  «                             | d
¬¦  «        }t           j        dgdz  dgdz  dgdz  f         }t	          dddd¬¦  «                             |¦  «        }t          |j        |¦  «         t           j        dgdz  dgdz  dgdz  f         }t	          dddd¬¦  «                             |¦  «        }t          |j        |¦  «         t           j        dgdz           }t          j	        t          d¬¦  «        5  t	          dddd¬¦  «                             |¦  «        }t          |j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   rJ   r   rK   rL   r>   é`   éj   Fr?   r   r   r   r$   rD   rO   )rF   rH   rI   rD   r   zAll reachability valuesrŒ   r   )r'   rS   rT   rU   r   rV   r   rW   rŽ   r    r¡   )rY   r\   r]   r^   rb   rc   rd   s          r-   Útest_min_samples_edge_caserÍ   G  sê  € Øˆaˆ&�1�c�(˜Q ˜IÐ	&€BØˆrˆ(�R˜�G˜b "˜XÐ	&€BØ�ˆ*�s˜B�i # s Ð	,€BÝ
Œ	�2�r˜2�,ÑÔ×&Ò& |¸%Ð&Ñ@Ô@€Aå”e˜Q˜C !™G a S¨1¡W¨q¨c°A©gÐ5Ô6€OÝ˜q¨!¸DÀTÐJÑJÔJ×NÒNÈqÑQÔQ€EÝ�u”} oÑ6Ô6Ð6å”e˜Q˜C !™G a S¨1¡W¨r¨d°Q©hÐ6Ô7€OÝ˜q¨!¸DÀTÐJÑJÔJ×NÒNÈqÑQÔQ€EÝ�u”} oÑ6Ô6Ð6å”e˜R˜D 1™H”o€OÝ	Œ•kÐ)BÐ	CÑ	CÔ	Cð ;ð ;Ý 1¨aÀÈÐNÑNÔN×RÒRÐSTÑUÔUˆÝ˜5œ=¨/Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;s   Ä7<F Æ FÆFrG   é   c                 ó¼  — t           d d d…                              |d¬¦  «        }t          d| ¬¦  «                             |¦  «        }t	          j        |j        |j        dk             ¦  «        }|j        rt          |¦  «        | k    sJ ‚t          d| |j	        d         z  ¬¦  «        }|                     |¦  «         t          |j        |j        ¦  «         d S )Nr   Fr?   rK   )rF   rG   r   r   )rb   rT   r   rV   r'   ÚbincountrW   r§   rÁ   rl   r   )rG   rY   ÚredXrd   Úcluster_sizesÚ
clust_fracs         r-   Útest_min_cluster_sizerÔ   \  sØ   € åˆSˆSˆqˆSŒ6�=Š=˜¨Eˆ=Ñ2Ô2€DÝ˜qÐ3CÐDÑDÔD×HÒHÈÑNÔN€EÝ”K ¤¨e¬m¸rÒ.AÔ BÑCÔC€MØÔð 6Ý�=Ñ!Ô!Ð%5Ò5Ð5Ð5Ð5åØØ)¨D¬J°q¬MÑ9ðñ ô €Jð ‡N‚N�4ÑÔÐÝ�u”} jÔ&8Ñ9Ô9Ð9Ð9Ð9r/   r‡   c                 óä  — t          t          t          ¦  «        dz   ¬¦  «        }t          j        t
          d¬¦  «        5  |                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          t          ¦  «        dz   d¬¦  «        }t          j        t
          d¬¦  «        5  |                      | t          ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )rG   zmust be no greater than the rŒ   rt   )rG   r|   )r   rn   rb   rŽ   r�   r�   rV   )r‡   rd   s     r-   Útest_min_cluster_size_invalid2rÖ   l  sJ  € å¥C­¡F¤F¨Q¡JÐ/Ñ/Ô/€EÝ	Œ•zÐ)GÐ	HÑ	HÔ	Hð ð Ø�	Š	•!‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ ¥C­¡F¤F¨Q¡J°{ÐCÑCÔC€EÝ	Œ•zÐ)GÐ	HÑ	HÔ	Hð $ð $Ø�	Š	�-�-¥Ñ"Ô"Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s$   ÁA(Á(A,Á/A,Â4$C%Ã%C)Ã,C)c                  ó0  — dgdgdgdgg} t          dd¬¦  «                             | ¦  «        }t          |j        t          j        dddg¦  «         t          |j        ddt          j        t          j        g¦  «         t          |j        g d¢¦  «         d S )	Nr   r   iöÿÿÿé   r   é   ©rF   rH   r8   )r   rV   r   rƒ   r'   rX   r„   r…   )ÚYrd   s     r-   Útest_processing_orderrÜ   w  s”   € ð ˆˆrˆd�S�E˜B˜4Ð €Aå˜q¨"Ð-Ñ-Ô-×1Ò1°!Ñ4Ô4€EÝ�uÔ*­R¬V°R¸¸RÐ,@ÑAÔAÐAÝ�uÔ,¨r°2µr´v½r¼vÐ.FÑGÔGÐGÝ�u”¨¨¨Ñ5Ô5Ð5Ð5Ð5r/   c                  ód  — g t           j        ‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d	‘d	‘d
‘d
‘d
‘d	‘d	‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d ‘d‘d!‘d"‘d#‘d$‘d%‘d%‘d%‘d%‘d&‘d&‘d&‘d'‘} g d(¢}g d)¢}t          d*¬+¦  «                             t          ¦  «        }t          |j        t          j        |¦  «        ¦  «         t          |j        |j                 t          j        |¦  «        ¦  «         t          |j
        |j                 t          j        | ¦  «        ¦  «         |j        d,d …         D ]+}|j
        |         |j        |j        |                  k    sJ ‚Œ,g t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d-‘t           j        ‘d.‘d‘d‘d‘d‘d/‘d‘d‘d‘t           j        ‘d	‘d	‘d
‘d
‘d
‘d	‘d	‘d‘d0‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘t           j        ‘}g d1¢}g d2¢}t          d*d3¬4¦  «                             t          ¦  «        }t          |j        t          j        |¦  «        ¦  «         t          |j        |j                 t          j        |¦  «        ¦  «         t          |j
        |j                 t          j        |¦  «        ¦  «         t          j        |j        d3k    ¦  «        d5         }	t          |j        |	         |j        |	         ¦  «         d S )6NgÕÓ@zëð?g­¯N	Hè?gÞ‡~NTç?gšu™õå?gæµ”åE²í?g#íšrýËò?gÜž™„2¯
@g`ÒzÁß?gP{¾
„VÐ?gØ:×“ÚíÏ?g}~ aÁÓ?gÊ$Ôáï¦@gÐ°{änøù?göŒ Ý?g€ŒuûºLÐ?gÀ»*æëÙÌ?g$¼ý&È?gÛÐ{æ˜PÇ?gÔê¦x²¬Ì?g\xð·*xò?gù~)ÔN{õ?göÞe’E,õ?go°¸F‹ë?g–Ç>E”kÑ?gPñÖRùÀ?g�ŒBåQ¹?g‚÷òªWÁ?gÃ@¸‹*Ä?g´r©2\kÆ?gúØhGÆ?g[Øœ]N†ã?g!ì´Lõ?gª´ƒá@g¿wÏc?�@g;¹Ã©fh@gK�!Q¡œ@gó,@ùM@gÄåZôvÄ@gr/É%ñA@)<r   r   r   r   r$   r0   r   rK   r   r   é   é   é    é"   é!   é&   é'   é#   é%   é$   é,   é   rÎ   é   é   rØ   é   é   é   é   rC   é(   é-   é.   r   rÙ   rL   é   é   é   é   é   é   é   é/   é1   é+   é0   é*   é)   é5   é9   é3   é4   é8   é;   é6   é7   é:   rg   )<r   r   r   r   r   r   r0   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Ù   rL   rõ   rÙ   r   rú   r÷   rñ   rù   rü   rþ   r   r  r  r  r  r  r  r  r  r   )rF   r   gÄ9'Ê%Šß?g�ÉÎ–FÑ?gx»ôåÕôÇ?gÑ*üùÖ?)<r   r   r   r   r   r   r   r$   r0   rK   r   rÙ   rL   ró   rô   rõ   rö   r÷   rø   rù   rú   rò   rC   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û   rg   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Ù   rL   rõ   rÙ   r   rú   r   rC   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   r¼   rÚ   r   )r'   rX   r   rV   rb   r   r…   r(   Úpredecessor_r   rƒ   r„   Úwhere)
Úr1Úo1Úp1Úclust1r}   Úr2Úo2Úp2Úclust2Úindexs
             r-   Útest_compare_to_ELKIr  ‚  sH  € ð
=
Ý
Œð=
àð=
ð 	ð=
ð 	ð	=
ð
 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð  	ð!=
ð" 	ð#=
ð$ 	ð%=
ð& 	ð'=
ð( 	ð)=
ð* 	ð+=
ð, 	ð-=
ð. 	ð/=
ð0 	ð1=
ð2 	ð3=
ð4 	ð5=
ð6 	ð7=
ð8 	ð9=
ð: 	ð;=
ð< 	ð==
ð> 	ð?=
ð@ 	ðA=
ðB 	ðC=
ðD 	ðE=
ðF 	ðG=
ðH 	ðI=
ðJ 	ðK=
ðL 	ðM=
ðN 	ðO=
ðP 	ðQ=
ðR 	ðS=
ðT 	ðU=
ðV 	ðW=
ðX 	ðY=
ðZ 	ð[=
ð\ 	ð]=
ð^ 	ð_=
ð` 	ða=
ðb 	ðc=
ðd 	ðe=
ðf 	ðg=
ðh 	ði=
ðj 	ðk=
ðl 	ðm=
ðn 	ðo=
ðp 	ðq=
ðr 	ðs=
ðt 	ðu=
ðv 	ðw=
ðx 	ðy=
€Bð|=
ð =
ð =
€Bð|=
ð =
ð =
€BõD  Ð"Ñ"Ô"×&Ò&¥qÑ)Ô)€Få�vÔ'­¬°"©¬Ñ6Ô6Ð6Ý�vÔ*¨6Ô+;Ô<½b¼hÀr¹l¼lÑKÔKÐKÝ�FÔ(¨Ô)9Ô:½B¼HÀR¹L¼LÑIÔIÐIð Ô˜a˜b˜bÔ!ð Yð YˆØÔ# AÔ&¨&Ô*@ÀÔATÐUVÔAWÔ*XÒXÐXÐXÐXÐXð=
Ý
Œð=
å
Œð=
õ 	Œð=
õ 	Œð	=
õ
 	Œð=
õ 	Œð=
õ 	Œð=
õ 	Œð=
õ 	Œð=
õ 	Œð=
õ 	Œð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð  	ð!=
ð" 	ð#=
ð$ 	ð%=
ð& 	ð'=
ð( 	ð)=
ð* 	ð+=
ð, 	ð-=
õ. 	Œð/=
ð0 	ð1=
ð2 	ð3=
ð4 	ð5=
ð6 	ð7=
ð8 	ð9=
ð: 	ð;=
ð< 	ð==
ð> 	ð?=
ð@ 	ðA=
õB 	ŒðC=
ðD 	ðE=
ðF 	ðG=
ðH 	ðI=
ðJ 	ðK=
ðL 	ðM=
ðN 	ðO=
ðP 	ðQ=
ðR 	ðS=
ðT 	ðU=
õV 	ŒðW=
õX 	ŒðY=
õZ 	Œð[=
õ\ 	Œð]=
õ^ 	Œð_=
õ` 	Œða=
õb 	Œðc=
õd 	Œðe=
õf 	Œðg=
õh 	Œði=
õj 	Œðk=
õl 	Œðm=
õn 	Œðo=
õp 	Œðq=
õr 	Œðs=
õt 	Œðu=
õv 	Œðw=
õx 	Œðy=
€Bð|=
ð =
ð =
€Bð|=
ð =
ð =
€Bõ|  ¨3Ð/Ñ/Ô/×3Ò3µAÑ6Ô6€Få�vÔ'­¬°"©¬Ñ6Ô6Ð6Ý�vÔ*¨6Ô+;Ô<½b¼hÀr¹l¼lÑKÔKÐKÝ�FÔ(¨Ô)9Ô:½B¼HÀR¹L¼LÑIÔIÐIåŒH�VÔ+¨sÒ2Ñ3Ô3°AÔ6€EÝ�FÔ*¨5Ô1°6Ô3IÈ%Ô3PÑQÔQÐQÐQÐQr/   c                 óP  — t           j                             d¦  «        }d}ddgd|                     |d¦  «        z  z   }ddgd|                     |d¦  «        z  z   }d	dgd|                     |d¦  «        z  z   }dd
gd|                     |d¦  «        z  z   }t          j        ||||f¦  «                             | d¬¦  «        }t          dd¬¦  «                             |¦  «        }t          t          j	        t          j
        |j        ¦  «        ¦  «        g d¢¦  «         d S )Nr   rC   r   r   r   r   r   r   r   r   Fr?   r™   r¼   )rI   r›   r8   )r'   rP   rQ   rR   rS   rT   r   rV   r   ÚsortÚuniquerW   )	rY   rZ   r[   r\   r]   r^   r_   rb   rd   s	            r-   Útest_extract_dbscanr    s"  € õ Œ)×
Ò
 Ñ
"Ô
"€CØÐØ
ˆbˆ�C˜#Ÿ)š)Ð$8¸!Ñ<Ô<Ñ<Ñ	<€BØ
ˆRˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BØ
ˆQˆ�#˜Ÿ	š	Ð"6¸Ñ:Ô:Ñ:Ñ	:€BØ
ˆaˆ�3˜ŸšÐ#7¸Ñ;Ô;Ñ;Ñ	;€BÝ
Œ	�2�r˜2˜rÐ"Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€Aå (°Ð4Ñ4Ô4×8Ò8¸Ñ;Ô;€EÝ•r”w�rœy¨¬Ñ7Ô7Ñ8Ô8¸,¸,¸,ÑGÔGÐGÐGÐGr/   c                 ó  — t           d d d…                              | d¬¦  «        }t          |d¬¦  «        }|� ||¦  «        n|}t          j        ¦   «         5  t          j        dt          ¦  «         t          ddd	¬
¦  «                             |¦  «        }d d d ¦  «         n# 1 swxY w Y   t          ddd¬
¦  «                             |¦  «        }t          |j
        |j
        ¦  «         t          |j        |j        ¦  «         d S )Nr   Fr?   rt   r©   Úignorer   ÚbruteÚprecomputed)rF   Ú	algorithmr|   )rb   rT   r   r¬   r­   r®   r
   r   rV   r   rƒ   r   rW   )rY   r‡   rÑ   Údistsr  r  s         r-   Útest_precomputed_distsr  #  s?  € åˆSˆSˆqˆSŒ6�=Š=˜¨Eˆ=Ñ2Ô2€DÝ˜t¨KÐ8Ñ8Ô8€EØ$1Ð$=ˆMˆM˜%Ñ Ô Ð À5€EÝ	Ô	 Ñ	"Ô	"ð 
ð 
ÝÔ˜hÕ(9Ñ:Ô:Ð:Ý B°'À-ÐPÑPÔP×TÒTØñ
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
  ¨g¸kÐJÑJÔJ×NÒNÈtÑTÔT€Få�FÔ(¨&Ô*>Ñ?Ô?Ð?Ý�v”~ v¤~Ñ6Ô6Ð6Ð6Ð6s   ÁA B%Â%B)Â,B)c                 ó  — t           j                             d¦  «                             dd¦  «        }t          j        |d¦  «          | |¦  «        }t          d„ t          |                     ¦   «         Ž D ¦   «         ¦  «        sJ ‚|                     ¦   «         }t          d¬¦  «         
                    |¦  «         |j        |j        k    sJ ‚t          |                     ¦   «         |                     ¦   «         ¦  «         dS )z£Check that we don't modify in-place the pre-computed sparse matrix.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27508
    r   r   c              3   ó(   K  — | ]\  }}||k    V — Œd S r:   ru   )rw   ÚrowÚcols      r-   ú	<genexpr>zKtest_optics_input_not_modified_precomputed_sparse_nodiag.<locals>.<genexpr>?  s*   è è € Ð<Ð<™h˜c 3ˆs�cŠzÐ<Ð<Ð<Ð<Ð<Ð<r/   r  r©   N)r'   rP   rQ   ÚrandÚfill_diagonalÚallÚzipÚnonzeror@   r   rV   Únnzr   Útoarray)r‡   rb   ÚX_copys      r-   Ú8test_optics_input_not_modified_precomputed_sparse_nodiagr-  3  sè   € õ 	Œ	×Ò˜aÑ Ô ×%Ò% a¨Ñ+Ô+€Aõ Ô�Q˜ÑÔÐØˆ�aÑÔ€AÝÐ<Ð<­#¨q¯yªy©{¬{Ð*;Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ø�VŠV‰XŒX€FÝ
�-Ð Ñ Ô ×$Ò$ QÑ'Ô'Ð'ð Œ5�F”JÒÐÐÐÝ�q—y’y‘{”{ F§N¢NÑ$4Ô$4Ñ5Ô5Ð5Ð5Ð5r/   c                  óB  — t          j        g d¢¦  «                             dd¦  «        } g d¢}| |         }t          dd¬¦  «                             | ¦  «        }t          dd¬¦  «                             |¦  «        }t          |j        |         |j        ¦  «         dS )	aƒ  Check that cluster correction using predecessor is working as expected.

    In the following example, the predecessor correction was not working properly
    since it was not using the right indices.

    This non-regression test check that reordering the data does not change the results.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26324
    )r   r   r   r   r0   r0   r$   r>   r   r   )r   r   r   r   r   r   r$   r   r   rt   )rF   r|   N)r'   r(   Úreshaper   rV   r   rW   )ÚX_1ÚreorderÚX_2Úoptics_1Úoptics_2s        r-   Ú+test_optics_predecessor_correction_orderingr5  H  sŸ   € õ Œ(Ð-Ð-Ð-Ñ
.Ô
.×
6Ò
6°r¸1Ñ
=Ô
=€CØ&Ð&Ð&€GØ
ˆgŒ,€Cå !¨KÐ8Ñ8Ô8×<Ò<¸SÑAÔA€HÝ !¨KÐ8Ñ8Ô8×<Ò<¸SÑAÔA€Hå�xÔ'¨Ô0°(Ô2BÑCÔCÐCÐCÐCr/   )Er¬   Únumpyr'   rŽ   Úsklearn.clusterr   r   Úsklearn.cluster._opticsr   r   Úsklearn.cluster.tests.commonr   Úsklearn.datasetsr   Úsklearn.exceptionsr	   r
   Úsklearn.metrics.clusterr   Úsklearn.metrics.pairwiser   Úsklearn.utilsr   Úsklearn.utils._testingr   r   Úsklearn.utils.fixesr   rP   rQ   rZ   r[   rR   r\   r]   r^   r_   r`   ra   rS   rb   ÚmarkÚparametrizerX   r.   r4   r<   re   rp   r‰   r’   rž   r¢   r°   r´   r¸   r»   rÉ   rÍ   r†   rl   rÔ   rÖ   rÜ   r  r  r  r-  r5  ru   r/   r-   ú<module>rC     s}  ðð €€€à Ð Ð Ð Ø €€€à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ @Ð @Ð @Ð @Ð @Ð @Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø !Ð !Ð !Ð !Ð !Ð !Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ .Ð .Ð .Ð .Ð .Ð .à„i×Ò˜AÑÔ€ØÐ Øˆ"€X��c—i’iÐ 4°aÑ8Ô8Ñ8Ñ8€Øˆ€Wˆs�S—Y’YÐ3°QÑ7Ô7Ñ7Ñ7€Øˆ€Wˆs�S—Y’YÐ3°QÑ7Ô7Ñ7Ñ7€Øˆ!€Wˆs�S—Y’YÐ3°QÑ7Ô7Ñ7Ñ7€Øˆ€Wˆs�S—Y’YÐ3°QÑ7Ô7Ñ7Ñ7€Øˆ€Vˆa�#—)’)Ð0°!Ñ4Ô4Ñ4Ñ4€Ø€B„Iˆr�2�r˜2˜r 2Ð&Ñ'Ô'€ð „×ÒØà	#Ð	#Ð	# QÐ'Ø	(Ð	(Ð	(¨!Ð,Ø
ˆc�3˜˜Q  2¤6Ð	*¨AÐ.Ø
ˆc�3˜˜Q  2¤6Ð	*¨AÐ.ð	ñô ðð ñô ðð „×ÒØà
ˆQ��S˜!˜Q  2¤6Ð	*¨AÐ.Ø
ˆQ��S˜#˜q ! Q¨¬Ð	/°Ð3Ø
ˆQ��Q˜œÐ	 Ð#Ø
ˆQ��R”VÐ	˜aÐ ð	ñô ðð ñô ðð „×ÒØ(à	ˆˆ˜˜A˜  A Ð'¨¨¨Ð6Ø	ˆˆ˜˜A˜  A Ð'¨¨¨Ð7Ø	ˆˆ˜˜A˜  A ¨¨A¨Ð/°°°Ð?Ø	ˆˆ˜˜A˜  A ¨¨A¨Ð/°°°Ð?ð	ñô ð)ð )ñô ð)ð67ð 67ð 67ðr ð  ð  ð$ „×ÒØØÐÐVÐVÀ~ÐVÑVÔVÑVñô ð6ð 6ñ	ô ð6ð8
ð 
ð 
ðð ð ð	ð 	ð 	ð.ð .ð .ð%ð %ð %ð2ð 2ð 2ð #ð #ð #ð „×Ò˜   Ñ0Ô0Ø„×Ò˜¨¨¨Ñ4Ô4Ø„×ÒØØÐ-Ð.Ø@Ð@°Ð@Ñ@Ô@ñAñô ð
$ð $ñô ñ 5Ô4ñ 1Ô0ð$ð>;ð ;ð ;ð* „×ÒÐ+¨U¨U°1°a´g¸a´jÀBÑ6FÈÑ-KÔ-KÑLÔLð:ð :ñ MÔLð:ð „×Ò˜¨.Ñ9Ô9ð$ð $ñ :Ô9ð$ð6ð 6ð 6ðORð ORð ORðdHð Hð Hð „×Ò˜¨4¨&°>Ñ*AÑBÔBð7ð 7ñ CÔBð7ð „×Ò˜¨.Ñ9Ô9ð6ð 6ñ :Ô9ð6ð(Dð Dð Dð Dð Dr/   