Ë
    ÷Q(hå  ã                   ó  — d dl Z d dl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mZ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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$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d d	l2m3Z3 d d
l4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZA d„ ZBej†                  j‰                  de;«      ej†                  j‰                  de<«      ej†                  j‰                  de:«      ej†                  j‰                  de=«      d„ «       «       «       «       ZE e8eF¬«      ej†                  j‰                  de«      d„ «       «       ZGd„ ZHej†                  j‰                  de*e.g«      d„ «       ZId„ ZJ ej–                  dd«      j™                  dd¬«      ddœZMd „ ZNej†                  j‰                  d!e*d"i fe*eeMfe*d#eMfe.d$d%dife.eNd&d'ifg«      ej†                  j‰                  d(ejž                  ej                   eQg«      d)„ «       «       ZRd*„ ZSej†                  j‰                  dg d+¢«      ej†                  j‰                  de=«      d,„ «       «       ZTd-„ ZUd.„ ZVej†                  j‰                  d/ ej®                  «       «      ej†                  j‰                  de=«      d0„ «       «       ZXd1„ ZYej†                  j‰                  d2e>«      ej†                  j‰                  de=«      d3„ «       «       ZZd4„ Z[d5„ Z\d6„ Z]ej†                  j‰                  d7d8„ d9„ d:„ ge=D � cg c]  } | fd;„‘Œ	 c} z   e>D �cg c]  }|fd<„‘Œ	 c}z   «      d=„ «       Z^ej†                  j‰                  d>d?„ e_d@fdA„ e_dBfdC„ e_dDfdE„ e`dFfdG„ e`dHfdI„ e`dJfg«      dK„ «       Zad¯dL„Zbej†                  j‰                  ddM«      dN„ «       Zcej†                  j‰                  ddM«      dO„ «       Zdej†                  jË                  dP«      dQ„ «       Zfej†                  j‰                  dRejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      ej†                  j‰                  dUejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      dV„ «       «       Ziej†                  j‰                  dUejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      dW„ «       Zjej†                  j‰                  dXdYdg«      dZ„ «       Zkd[„ Zlej†                  j‰                  dRejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      ej†                  j‰                  dUejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      d\„ «       «       Zmej†                  j‰                  dRejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      d]„ «       Znej†                  j‰                  d^g d_¢«      ej†                  j‰                  dRejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      ej†                  j‰                  dUejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      d`„ «       «       «       Zoej†                  j‰                  d^g d_¢«      ej†                  j‰                  dRejÎ                  ge=z   dSge=D �cg c]  }|jÐ                  ‘Œ c}z   ¬T«      da„ «       «       Zpej†                  j‰                  dbej                   dcddf ejâ                  ejž                  dedfej†                  jå                  dg¬h«      ¬i«      g«      ej†                  j‰                  djddkg«      dl„ «       «       Zsej†                  j‰                  dmdYdg«      dn„ «       Ztej†                  j‰                  do ejÎ                  ejê                  d gg«       ejÎ                  d ejê                   gg«      g«      ej†                  j‰                  dp ejÎ                  ejê                  d gg«       ejÎ                  d ejê                   gg«      dg«      dq„ «       «       Zvej†                  j‰                  dr ejÎ                  d dgdd gg«       ejî                  ds«      ejð                  f ejÎ                  d dgdejð                  gg«       ejî                  ds«      ejð                  f ejÎ                  ejð                  dgdejð                  gg«      ejð                  ejð                  f ejÎ                  ejð                  dgejð                  d gg«       ejî                  ds«      ejð                  f ejÎ                  d ejð                  gdejð                  gg«       ejî                  ds«      ejð                  f ejÎ                  d dgdd gg«       ejî                  ds«      dtf ejÎ                  d dgddtgg«       ejî                  ds«      dtf ejÎ                  dtdgddtgg«      ejð                  dtf ejÎ                  dtdgdtd gg«       ejî                  ds«      dtf ejÎ                  d dtgddtgg«       ejî                  ds«      dtfg
«      du„ «       Zyej†                  j‰                  dvejð                  dtg«      dw„ «       Zzej†                  j‰                  dvejð                  dtg«      dx„ «       Z{ej†                  j‰                  dvejð                  dtg«      dy„ «       Z|dz„ Z}d{„ Z~d|„ Zd}„ Z€d~„ Z�d„ Z‚ej†                  j‰                  d€e#e/e0e"e1ef«      d�„ «       Zƒej†                  j‰                  d€e#e/e0e"e1ef«      ej†                  j‰                  de=«      d‚„ «       «       Z„dƒ„ Z…d„„ Z†d…„ Z‡ej†                  j‰                  d†d‡e#fdˆefg«      ej†                  j‰                  de=«      d‰„ «       «       Zˆej†                  j‰                  de=«      dŠ„ «       Z‰d‹„ ZŠdŒ„ Z‹d�„ ZŒdŽ„ Z�ej†                  j‰                  de=«      d�„ «       ZŽd�„ Z�d‘„ Z�d’„ Z‘ej†                  j‰                  d“ddsg«      ej†                  j‰                  dd”d•g«      ej†                  j‰                  d–e*e-g«      d—„ «       «       «       Z’ej†                  j‰                  dd”d•g«      d˜„ «       Z“ej†                  j‰                  dg d™¢«      ej†                  j‰                  dšdYdgd›dœg¬T«      d�„ «       «       Z”ej†                  j‰                  dže*e+e,g«      dŸ„ «       Z•d „ Z–ej†                  j‰                  d¡g d¢¢dg d£¢g d¤¢g d¥¢gfg d¢¢d¦d§gd¨d©gd©d¨gdªd©ggfg«      d«„ «       Z—d¬„ Z˜ej†                  j‰                  de=«      d­„ «       Z™d®„ Zšyc c} w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )°é    N)ÚGeneratorType)Úlinalg)Úissparse)ÚcdistÚ	cityblockÚcosineÚ	minkowskiÚpdistÚ
squareform)Úconfig_context)ÚDataConversionWarning)ÚPAIRED_DISTANCESÚPAIRWISE_BOOLEAN_FUNCTIONSÚPAIRWISE_DISTANCE_FUNCTIONSÚPAIRWISE_KERNEL_FUNCTIONSÚ_euclidean_distances_upcastÚadditive_chi2_kernelÚcheck_paired_arraysÚcheck_pairwise_arraysÚchi2_kernelÚcosine_distancesÚcosine_similarityÚeuclidean_distancesÚhaversine_distancesÚlaplacian_kernelÚlinear_kernelÚmanhattan_distancesÚnan_euclidean_distancesÚpaired_cosine_distancesÚpaired_distancesÚpaired_euclidean_distancesÚpaired_manhattan_distancesÚpairwise_distancesÚpairwise_distances_argminÚpairwise_distances_argmin_minÚpairwise_distances_chunkedÚpairwise_kernelsÚpolynomial_kernelÚ
rbf_kernelÚsigmoid_kernel)Ú	normalize)Úassert_allcloseÚassert_almost_equalÚassert_array_equalÚignore_warnings)ÚBSR_CONTAINERSÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDOK_CONTAINERS)ÚParallelÚdelayedc                 ó¶	  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d¬«      }t        |«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d«      j	                  | d¬«      }t        ||d¬«      }t        ||«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }t         j                  |d<   t         j                  |d<   t        ||d	¬«      }t        ||«      }	t        ||	«       |j                  |	j                  cxk(  r| k(  sJ ‚ J ‚t        |D �
�cg c]  }
t        |
D �cg c]  }|‘Œ c}«      ‘Œ c}}
«      }t        |D �
�cg c]  }
t        |
D �cg c]  }|‘Œ c}«      ‘Œ c}}
«      }t        ||d¬«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d
«      j	                  | d¬«      }|d d …df   dz
  dz  t         j                  z  dz  |d d …df<   |d d …df   dz
  dz  t         j                  z  |d d …df<   t        |d¬«      }t        |«      }t        ||«       |j                  d«      j	                  | d¬«      }|d d …df   dz
  dz  t         j                  z  dz  |d d …df<   |d d …df   dz
  dz  t         j                  z  |d d …df<   t        ||d¬«      }t        ||«      }t        ||«       t        |d¬«      }t        |t        ¬«      }|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚t        ||«       t        ||d¬«      }t        ||t        ¬«      }|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚t        ||«       t        ||d¬«      }t        ||t         ¬«      }|j                  d   |j                  d   k(  sJ ‚|j                  d   |j                  d   k(  sJ ‚t        ||«       y c c}w c c}}
w c c}w c c}}
w )Nr   ©é   é   F©ÚcopyÚ	euclidean©Úmetric©é   r:   ©r   r   Únan_euclidean©r9   rA   ç      à?rA   é   Ú	haversine)rA   rA   r   Ú	manhattanr   )ÚnpÚrandomÚRandomStateÚrandom_sampleÚastyper#   r   r,   ÚdtypeÚnanr   ÚtupleÚpir   r   Úshaper   )Úglobal_dtypeÚrngÚXÚSÚS2ÚYÚX_maskedÚY_maskedÚS_maskedÚ	S2_maskedÚrowÚvÚX_tuplesÚY_tupless                 úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_pairwise.pyÚ&test_pairwise_distances_for_dense_datarb   C   sk  € ä
�)‰)×
Ñ
 Ó
"€Cð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AÜ˜1 [Ô1€AÜ	˜QÓ	€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AÜ˜1˜a¨Ô4€AÜ	˜Q Ó	"€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð × Ñ  Ó(×/Ñ/°À5Ð/ÓI€HØ× Ñ  Ó(×/Ñ/°À5Ð/ÓI€HÜ—V‘V€HˆT�NÜ—V‘V€HˆT�NÜ! (¨H¸_ÔM€HÜ'¨°(Ó;€IÜ�H˜iÔ(Ø�>‰>˜YŸ_™_Ô<°Ò<Ð<Ñ<Ð<Ð<ô ¸×;°#”e¨Ö, 1šQÒ,Õ-Ó;Ó<€HÜ¸×;°#”e¨Ö, 1šQÒ,Õ-Ó;Ó<€HÜ	˜H h°{Ô	C€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð
 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)¨AÑ-€A‚aˆ€d�GØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)€A‚aˆ€d�GÜ˜1 [Ô1€AÜ	˜QÓ	€BÜ�A�rÔð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)¨AÑ-€A‚aˆ€d�GØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)€A‚aˆ€d�GÜ˜1˜a¨Ô4€AÜ	˜Q Ó	"€BÜ�A�rÔô
 	˜1 [Ô1€AÜ	˜A¤iÔ	0€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÔô 	˜1˜a¨Ô4€AÜ	˜A˜q¬Ô	3€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÔô
 	˜1˜a¨Ô1€AÜ	˜A˜q¬Ô	0€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÕùò_ -ùÓ;ùÚ,ùÓ;s0   Æ4S

Ç	SÇ	S

Ç&S
Ç4	SÇ=	S
ÓS

ÓS
Úcoo_containerÚcsc_containerÚbsr_containerÚcsr_containerc                 óŽ  — t         j                  j                  d«      }|j                  d«      j	                  |d¬«      }|j                  d«      j	                  |d¬«      } ||«      } ||«      }	t        ||	d¬«      }
t        ||	«      }t        |
|«       |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚t        ||	d¬«      }
t        ||	«      }t        |
|«       |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚t        | ||«      d	¬«      }
t         ||«       | |«      «      }t        |
|«       |t         j                  k(  r$|
j                  |j                  cxk(  r|k(  sLJ ‚ J ‚t        j                  t        «      5  |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚	 d d d «       t        ||«      }t        |
|«       |t         j                  k(  r$|
j                  |j                  cxk(  r|k(  sLJ ‚ J ‚t        j                  t        «      5  |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚	 d d d «       d
di}t        ||fddi|¤Ž}
t        ||fdt        i|¤Ž}t        |
|«       d
di}t        |fddi|¤Ž}
t        |fdt        i|¤Ž}t        |
|«       t        j                  t         «      5  t        |d¬«       d d d «       t        j                  t         «      5  t        ||	d¬«       d d d «       y # 1 sw Y   �ŒbxY w# 1 sw Y   ŒØxY w# 1 sw Y   ŒSxY w# 1 sw Y   y xY w)Nr   r8   Fr;   r@   r=   r>   r   rH   Úpç       @r?   r	   )rI   rJ   rK   rL   rM   r#   r   r,   rN   r   r   Úfloat64ÚpytestÚraisesÚAssertionErrorr	   Ú	TypeError)rc   rd   re   rf   rS   rT   rU   rX   ÚX_sparseÚY_sparserV   rW   Úkwdss                ra   Ú'test_pairwise_distances_for_sparse_datarr   ’   s  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Añ ˜QÓ€HÙ˜QÓ€Hä˜8 X°kÔB€AÜ	˜X xÓ	0€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ä˜8 X°hÔ?€AÜ	˜( HÓ	-€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ä˜8¡]°1Ó%5¸kÔJ€AÜ	™]¨1Ó-©}¸QÓ/?Ó	@€BÜ�A�rÔØ”r—z‘zÒ!Ø�w‰w˜"Ÿ(™(Ô2 lÒ2Ð2Ñ2Ð2Ð2ô
 �]‰]œ>Ó*ñ 	7Ø—7‘7˜bŸh™hÔ6¨,Ò6Ð6Ñ6Ð6Ñ6÷	7ô 
˜Q Ó	"€BÜ�A�rÔØ”r—z‘zÒ!Ø�w‰w˜"Ÿ(™(Ô2 lÒ2Ð2Ñ2Ð2Ð2ô
 �]‰]œ>Ó*ñ 	7Ø—7‘7˜bŸh™hÔ6¨,Ò6Ð6Ñ6Ð6Ñ6÷	7ð �ˆ:€DÜ˜1˜aÑ<¨Ð<°tÑ<€AÜ	˜A˜qÑ	;¬Ð	;°dÑ	;€BÜ�A�rÔð �ˆ:€DÜ˜1Ñ9 [Ð9°DÑ9€AÜ	˜AÑ	8¤iÐ	8°4Ñ	8€BÜ�A�rÔô 
�‰”yÓ	!ñ 9Ü˜8¨KÕ8÷9ä	�‰”yÓ	!ñ <Ü˜1˜h¨{Õ;÷<ð <÷;	7ñ 	7ú÷	7ð 	7ú÷ 9ð 9ú÷<ð <ús0   Æ%LÈ&%L#ËL/Ë>L;ÌL Ì#L,Ì/L8Ì;M©Úcategoryr?   c           	      óp  — t         j                  j                  d«      }|j                  dd«      }|j	                  «       }d|d   z
  |d<   t        t        ¬«      5  |d fD ]G  }t        ||| ¬«      }t        j                  |dddd¬	«       t        j                  |dk7  «      dk(  rŒGJ ‚ 	 d d d «       d
| z  }t        j                  t        |¬«      5  t        || ¬«       d d d «       t        j                  t        |¬«      5  t        |j                  t        «      || ¬«       d d d «       t        j                  «       5  t        j                   dt        «       t        |j                  t        «      | ¬«       d d d «       y # 1 sw Y   ŒÜxY w# 1 sw Y   Œ²xY w# 1 sw Y   ŒyxY w# 1 sw Y   y xY w)Nr   r9   r:   rF   rB   rs   r>   F)rO   ÚposinfÚneginfr<   z+Data was converted to boolean for metric %s©Úmatch©rX   r?   Úerror)rI   rJ   rK   Úrandnr<   r/   r   r#   Ú
nan_to_numÚsumrk   ÚwarnsrM   ÚboolÚwarningsÚcatch_warningsÚsimplefilter)r?   rT   rU   rX   ÚZÚresÚmsgs          ra   Útest_pairwise_boolean_distancer‡   Ù   sr  € ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹€AØ	�‰‹€AØ�!�D‘'‰k€A€d�Gô 
Ô"7Ô	8ñ )Ø�T�ò 	)ˆAÜ$ Q¨°&Ô9ˆCÜ�M‰M˜# 1¨Q°q¸uÕEÜ—6‘6˜# ™(Ó# qÓ(Ð(Ð(ñ	)÷)ð 8¸&Ñ
@€CÜ	�‰Ô+°3Ô	7ñ -Ü˜1 VÕ,÷-ô 
�‰Ô+°3Ô	7ñ ?Ü˜1Ÿ8™8¤D›>¨Q°vÕ>÷?ô 
×	 Ñ	 Ó	"ñ :Ü×Ñ˜gÔ'<Ô=Ü˜1Ÿ8™8¤D›>°&Õ9÷:ð :÷#)ð )ú÷-ð -ú÷?ð ?ú÷:ð :ús7   ÁAFÂ)FÃFÄ"F Å;F,ÆFÆFÆ F)Æ,F5c                  ó  — t         j                  j                  d«      } | j                  dd«      }t	        j
                  «       5  t	        j                  dt        «       t        |d¬«       d d d «       y # 1 sw Y   y xY w)Nr   r9   r:   r{   r	   r>   )	rI   rJ   rK   r|   r�   r‚   rƒ   r   r#   )rT   rU   s     ra   Útest_no_data_conversion_warningr‰   ù   sa   € ä
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹€AÜ	×	 Ñ	 Ó	"ñ 2Ü×Ñ˜gÔ'<Ô=Ü˜1 [Õ1÷2÷ 2ñ 2ús   Á(A7Á7B Úfuncc                 óª  — t        j                  t        d¬«      5   | t        j                  d«      d¬«       d d d «       t        j                  t        d¬«      5   | t        j                  d«      t        j                  d«      d¬«       d d d «       t        j                  t        d¬«      5   | t        j                  d«      t        j                  d«      d¬«       d d d «       t        j                  d«      } | |d¬«      }||u sJ ‚t        j                  d«      } | |t        j                  d	«      d¬«      }||u sJ ‚ | t        j
                  d
ggd¬«      d¬«      }d|j                  j                  k(  sJ ‚ | dggd¬«      }t        |t        j                  «      sJ ‚y # 1 sw Y   �ŒwxY w# 1 sw Y   �Œ/xY w# 1 sw Y   ŒæxY w)Nz.* shape .*rx   )r9   é   Úprecomputedr>   )r:   r:   )r:   rŒ   ©r9   r9   )rŒ   rŒ   rF   Úint©rN   Úfç      ð?)
rk   rl   Ú
ValueErrorrI   ÚzerosÚarrayrN   ÚkindÚ
isinstanceÚndarray)rŠ   rV   rW   s      ra   Útest_pairwise_precomputedr™     sx  € ô 
�‰”z¨Ô	7ñ 5ÙŒR�X‰X�fÓ mÕ4÷5ô 
�‰”z¨Ô	7ñ GÙŒR�X‰X�fÓœrŸx™x¨Ó/¸ÕF÷Gô 
�‰”z¨Ô	7ñ GÙŒR�X‰X�fÓœrŸx™x¨Ó/¸ÕF÷Gô 	�‰�Ó€AÙ	ˆa˜Ô	&€BØ�‰7€Nˆ7ä
�‰�Ó€AÙ	ˆa”—‘˜&Ó!¨-Ô	8€BØ�‰7€Nˆ7ñ 	ŒR�X‰X˜�s�e 5Ô)°-Ô@€AØ�!—'‘'—,‘,ÒÐÐñ 	ˆsˆeˆW˜]Ô+€AÜ�aœŸ™Ô$Ð$Ñ$÷15ñ 5ú÷Gñ Gú÷Gð Gús#   œF/Á2F<Â22G	Æ/F9Æ<GÇ	Gc                  ó¦   — t        j                  t        d¬«      5  t        t	        j
                  dd«      d¬«       d d d «       y # 1 sw Y   y xY w)Nz.* non-negative values.*rx   rŽ   éÿÿÿÿr�   r>   )rk   rl   r“   r#   rI   Úfull© ó    ra   Ú&test_pairwise_precomputed_non_negativerŸ      s?   € ä	�‰”zÐ)CÔ	Dñ FÜœ2Ÿ7™7 6¨2Ó.°}ÕE÷F÷ Fñ Fús   œ"AÁArF   r9   ÚdoubleFr;   )Úwrh   c                 óˆ   — t        t        j                  | «      t        j                  |«      fi |¤Ž}|j                  «       S ©N)r)   rI   Ú
atleast_2dÚitem)ÚxÚyrq   ÚKs       ra   Úcallable_rbf_kernelr©   )  s0   € ä”2—=‘= Ó#¤R§]¡]°1Ó%5Ñ>¸Ñ>€Aà�6‰6‹8€Orž   zfunc, metric, kwdsr=   r	   Ú
polynomialÚdegreeÚgammaçš™™™™™¹?rN   c                 óz  — t         j                  j                  d«      }t        j                  d|j	                  d«      z  |¬«      }t        j                  d|j	                  d«      z  |¬«      } | |f|ddœ|¤Ž} | |f|ddœ|¤Ž}t        ||«        | ||f|ddœ|¤Ž} | ||f|ddœ|¤Ž}t        ||«       y )	Nr   r9   r8   r�   ©rŒ   r:   rF   ©r?   Ún_jobsrA   )rI   rJ   rK   r•   rL   r,   )	rŠ   r?   rq   rN   rT   rU   rX   rV   rW   s	            ra   Útest_pairwise_parallelr²   0  sÈ   € ô( �)‰)×
Ñ
 Ó
"€CÜ
�‰��S×&Ñ& vÓ.Ñ.°eÔ<€AÜ
�‰��S×&Ñ& vÓ.Ñ.°eÔ<€AáˆQÐ0�v aÑ0¨4Ñ0€AÙ	ˆaÐ	1˜ qÑ	1¨DÑ	1€BÜ�A�rÔáˆQ�Ð3˜&¨Ñ3¨dÑ3€AÙ	ˆa�Ð	4˜6¨!Ñ	4¨tÑ	4€BÜ�A�rÕrž   c                  ó4   — t        dggd„ ¬«      d   dk(  sJ ‚y )Nr’   c                  ó   — y)Nr9   r�   ©r¦   r§   s     ra   ú<lambda>z9test_pairwise_callable_nonstrict_metric.<locals>.<lambda>U  ó   � rž   r>   rB   r9   )r#   r�   rž   ra   Ú'test_pairwise_callable_nonstrict_metricr¸   Q  s"   € ô  ˜u˜g©nÔ=¸dÑCÀqÒHÐHÑHrž   )ÚrbfÚ	laplacianÚsigmoidrª   ÚlinearÚchi2Úadditive_chi2c                 ó¨  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        |    }t        || ¬«      } ||«      }t        ||«       t        ||| ¬«      } |||¬«      }t        ||«       t        |D ��	cg c]  }t        |D �	cg c]  }	|	‘Œ c}	«      ‘Œ c}	}«      }
t        |D ��	cg c]  }t        |D �	cg c]  }	|	‘Œ c}	«      ‘Œ c}	}«      }t        |
|| ¬«      }t        ||«        ||«      } ||«      }| dv ry t        ||| ¬«      }t        ||«       y c c}	w c c}	}w c c}	w c c}	}w )Nr   r8   r@   r>   rz   ©rX   )r½   r¾   )rI   rJ   rK   rL   r   r'   r,   rP   )r?   rf   rT   rU   rX   ÚfunctionÚK1ÚK2r]   r^   r_   r`   ro   rp   s                 ra   Útest_pairwise_kernelsrÄ   Y  s/  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÜ(¨Ñ0€Hä	˜! FÔ	+€BÙ	�!‹€BÜ�B˜Ôä	˜!˜q¨Ô	0€BÙ	�!�qÔ	€BÜ�B˜Ôä¸×;°#”e¨Ö, 1šQÒ,Õ-Ó;Ó<€HÜ¸×;°#”e¨Ö, 1šQÒ,Õ-Ó;Ó<€HÜ	˜( H°VÔ	<€BÜ�B˜Ôñ ˜QÓ€HÙ˜QÓ€HØÐ*Ñ*àÜ	˜( h°vÔ	>€BÜ�B˜Õùò -ùÓ;ùÚ,ùÓ;s0   ÂE
Â(	D>Â1	E
ÃE
Ã	E	Ã#	E
Ä>E
Å	E
c                  ó>  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t        }ddi}t        |f||dœ|¤Ž}t        |fd|i|¤Ž}t        ||«       t        |f||dœ|¤Ž}t        |fd|i|¤Ž}t        ||«       y )Nr   r8   r@   r¬   r­   rz   rX   )rI   rJ   rK   rL   r©   r'   r)   r,   )rT   rU   rX   r?   rq   rÂ   rÃ   s          ra   Útest_pairwise_kernels_callablerÆ   }  s°   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€Aä €FØ�Sˆ>€DÜ	˜!Ð	8˜q¨Ñ	8°4Ñ	8€BÜ	�AÑ	#˜Ð	#˜dÑ	#€BÜ�B˜Ôô 
˜!Ð	8˜q¨Ñ	8°4Ñ	8€BÜ	�AÑ	#˜Ð	#˜dÑ	#€BÜ�B˜Õrž   c                  ó^  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        ||d¬«      }dddœ}t        ||fdd	d
œ|¤Ž}t        ||«       t        j                  t        «      5  t        ||fddi|¤Ž d d d «       y # 1 sw Y   y xY w)Nr   r8   r@   r­   ©r¬   z:))r¬   Úblablar¹   T)r?   Úfilter_paramsr?   )
rI   rJ   rK   rL   r)   r'   r,   rk   rl   rn   )rT   rU   rX   r¨   ÚparamsrÃ   s         ra   Ú"test_pairwise_kernels_filter_paramrÌ   �  s¥   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÜ�1�a˜sÔ#€AØ dÑ+€FÜ	˜!˜QÐ	K u¸DÑ	KÀFÑ	K€BÜ�A�rÔä	�‰”yÓ	!ñ 7Ü˜˜AÑ6 eÐ6¨vÒ6÷7÷ 7ñ 7ús   Â
B#Â#B,zmetric, funcc                 ó€  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t	        ||| ¬«      } |||«      }t        ||«        | ||«       ||«      «      }t        ||«       | t        v r1t        |    ||«      }	t        j                  |	«      }	t        |	|«       y y )Nr   r8   r>   )rI   rJ   rK   rL   r    r,   r   Údiag)
r?   rŠ   rf   rT   rU   rX   rV   rW   ÚS3Ú	distancess
             ra   Útest_paired_distancesrÑ   �  s´   € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!€Aà×Ñ˜&Ó!€Aä˜˜A fÔ-€AÙ	ˆa�‹€BÜ�A�rÔÙ	‰m˜AÓ¡¨aÓ 0Ó	1€BÜ�A�rÔØÔ,Ñ,ô 0°Ñ7¸¸1Ó=ˆ	Ü—G‘G˜IÓ&ˆ	Ü˜	 1Õ%ð -rž   c                 ó²  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }t        ||d¬«      }t        ||d„ ¬«      }t        ||«       |j                  d«      }t        j                  t        «      5  t        ||«       d d d «       y # 1 sw Y   y xY w)	Nr   r8   Fr;   rH   r>   c                 óR   — t        j                  | |z
  «      j                  d¬«      S )Nr   ©Úaxis)rI   Úabsr~   rµ   s     ra   r¶   z0test_paired_distances_callable.<locals>.<lambda>¾  s    € ´B·F±F¸1¸q¹5³M×4EÑ4EÈ1Ð4EÓ4M€ rž   r¯   )
rI   rJ   rK   rL   rM   r    r,   rk   rl   r“   )rS   rT   rU   rX   rV   rW   s         ra   Útest_paired_distances_callabler×   ´  s¼   € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aä˜˜A kÔ2€AÜ	˜!˜QÑ'MÔ	N€BÜ�A�rÔð 	×Ñ˜&Ó!€AÜ	�‰”zÓ	"ñ Ü˜˜AÔ÷÷ ñ ús   Â7CÃCÚdok_containerc                 ó|  — t        j                  dgdgg|¬«      }t        j                  dgdgg|¬«      } | |«      } |||¬«      }ddg}ddg}ddg}	t        ||d¬	«      \  }
}t        ||d¬	«      }t	        |
|«       t	        ||«       t	        ||«       t        ||d¬	«      \  }}t        ||d¬	«      }t	        ||«       t	        ||«       t	        ||«       t        |«      t         j                  k(  sJ ‚t        |«      t         j                  k(  sJ ‚t        ||d
¬	«      \  }
}t        ||dddi¬«      \  }}t        ||d
¬	«      }t        ||dddi¬«      }t	        ||	«       t	        ||	«       t	        |
|«       t	        ||«       t	        ||«       t	        ||«       t        ||d¬	«      \  }
}t        ||d¬	«      }t	        |
|«       t	        ||«       t	        ||«       t        ||d¬	«      \  }}t        ||d¬	«      }t	        ||«       t	        ||«       t	        ||«       t        ||t        ddi¬«      \  }
}t	        |
|«       t	        ||«       t        ||dddi¬«      \  }
}t	        |
|«       t	        ||«       t         j                  j                  d«      }|j                  dd«      }|j                  dd«      }t        ||d¬	«      }|j                  d¬«      }||t        t        |«      «      f   }t        ||dd¬«      \  }}t	        ||d¬«       t	        ||d¬«       t        ||d¬«      \  }}t        ||d¬«      \  }}t	        ||«       t        ||«       t        ||d¬«      \  }}t        ||d¬«      \  }}t	        ||«       t        ||«       t        ||d¬«      }t        ||d¬«      }t        ||«       t        ||d¬«      }t        ||d¬«      }t        ||«       t        ||«      }t        t        j                   |«      t        j                   |«      «      }t        ||«       y )Nr   rF   r�   éþÿÿÿrŒ   rA   r:   r=   r>   ÚsqeuclideanÚsquaredT)r?   Úmetric_kwargsrH   rh   r	   éa   é•   éo   rÔ   )rÕ   r?   çH¯¼šò×z>©Úrtol)rI   Úasarrayr%   r$   r,   Útyper˜   r	   rJ   rK   r|   r#   ÚargminÚrangeÚlenr.   Úasfortranarray)rØ   rf   rS   rU   rX   ÚXspÚYspÚexpected_idxÚexpected_valsÚexpected_vals_sqÚidxÚvalsÚidx2ÚidxspÚvalsspÚidxsp2Úvals2Úidx3Úidx4rT   ÚdistÚdist_orig_indÚdist_orig_valÚdist_chunked_indÚdist_chunked_valÚargmin_0Údist_0Úargmin_1Údist_1Úargmin_C_contiguousÚargmin_F_contiguouss                                  ra   Ú"test_pairwise_distances_argmin_minr  È  s6  € ô 	�
‰
�Q�C˜!˜�: \Ô2€AÜ
�
‰
�R�D˜1˜#�; lÔ3€Aá
˜Ó
€CÙ
˜ Ô
.€Cà�q�6€LØ˜�F€MØ˜1�vÐô .¨a°¸;ÔG�I€CˆÜ$ Q¨°+Ô>€DÜ�C˜Ô&Ü�D˜,Ô'Ü�D˜-Ô(ä1°#°sÀ;ÔO�M€Eˆ6Ü& s¨C¸ÔD€FÜ�E˜<Ô(Ü�F˜LÔ)Ü�F˜MÔ*ä�‹;œ"Ÿ*™*Ò$Ð$Ð$Ü�‹<œ2Ÿ:™:Ò%Ð%Ð%ô .¨a°¸=ÔI�I€CˆÜ/Ø	ˆ1�[°¸DÐ0Aô�K€Dˆ%ô % Q¨°-Ô@€DÜ$Ø	ˆ1�[°¸DÐ0Aô€Dô �DÐ*Ô+Ü�EÐ+Ô,ä�C˜Ô&Ü�D˜,Ô'Ü�D˜,Ô'Ü�D˜,Ô'ô .¨a°¸;ÔG�I€CˆÜ$ Q¨°+Ô>€DÜ�C˜Ô&Ü�D˜,Ô'Ü�D˜-Ô(ä1°#°sÀ;ÔO�M€Eˆ6Ü& s¨C¸ÔD€FÜ�E˜<Ô(Ü�F˜LÔ)Ü�F˜MÔ*ô .Ø	ˆ1”Y¨s°A¨hô�I€Cˆô �C˜Ô&Ü�D˜-Ô(ô .Ø	ˆ1�[°°a°ô�I€Cˆô �C˜Ô&Ü�D˜-Ô(ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�"�cÓ€AØ�	‰	�#�sÓ€Aä˜a ¨;Ô7€DØ—K‘K Q�KÓ'€MØ˜¬¬c°-Ó.@Ó(AÐAÑB€Mä)FØ	ˆ1�1˜[ô*Ñ&ÐÐ&ô �MÐ#3¸$Õ?Ü�MÐ#3¸$Õ?ô 5°Q¸ÀÔBÑ€HˆfÜ4°Q¸ÀÔBÑ€Hˆfä�F˜FÔ#Ü�x Ô*ä4°Q¸ÀÔBÑ€HˆfÜ4°Q¸ÀÔBÑ€Hˆfä�F˜FÔ#Ü�x Ô*ô )¨¨A°AÔ6€HÜ(¨¨A°AÔ6€Hä�x Ô*ä(¨¨A°AÔ6€HÜ(¨¨A°AÔ6€Hä�x Ô*ô 4°A°qÓ9ÐÜ3Ü
×Ñ˜!Óœb×/Ñ/°Ó2óÐô Ð*Ð,?Õ@rž   c                 ó   — | d d …d d…f   S )Néd   r�   ©rø   Ústarts     ra   Ú_reduce_funcr  C  s   € Ø’�4�C�4�‰=Ðrž   c                 ó¬  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |«      d d …d d…f   }t        |d t        d¬«      }t        |t        «      sJ ‚t        |«      }t        |«      dkD  sJ ‚|d   j                  |j                  k(  sJ ‚t        t        j                  |«      |d	¬
«       y )Nr   )i�  r:   Fr;   r  ç      ð>©Úreduce_funcÚworking_memoryrF   rá   ©Úatol)rI   rJ   rK   rL   rM   r#   r&   r  r—   r   Úlistrè   rN   r,   Úvstack)rS   rT   rU   rV   ÚS_chunkss        ra   Ú&test_pairwise_distances_chunked_reducer  G  sÀ   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€Aä˜1Óša  # ˜gÑ&€AÜ)Ø	ˆ4œ\¸&ô€Hô �h¤Ô.Ð.Ð.Ü�H‹~€HÜˆx‹=˜1ÒÐÐØ�A‰;×Ñ §¡Ò'Ð'Ð'ô ”B—I‘I˜hÓ'¨°Ö6rž   c                 ó(  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d d„ d¬«      }t        |t        «      sJ ‚t        |«      }t        |«      dkD  sJ ‚t        d	„ |D «       «      sJ ‚y )
Nr   ©é
   r:   Fr;   c                  ó   — y r£   r�   r  s     ra   r¶   z=test_pairwise_distances_chunked_reduce_none.<locals>.<lambda>]  r·   rž   r
  r  rF   c              3   ó$   K  — | ]  }|d u –— Œ
 y ­wr£   r�   )Ú.0Úchunks     ra   ú	<genexpr>z>test_pairwise_distances_chunked_reduce_none.<locals>.<genexpr>b  s   è ø€ Ò3 ˆu˜Œ}Ñ3ùs   ‚)rI   rJ   rK   rL   rM   r&   r—   r   r  rè   Úall)rS   rT   rU   r  s       ra   Ú+test_pairwise_distances_chunked_reduce_noner  X  s‹   € ä
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜'Ó"×)Ñ)¨,¸UÐ)ÓC€AÜ)Ø	ˆ4Ñ5Àfô€Hô �h¤Ô.Ð.Ð.Ü�H‹~€HÜˆx‹=˜1ÒÐÐÜÑ3¨(Ô3Ô3Ð3Ñ3rž   Úgood_reducec                 ó   — t        | «      S r£   ©r  ©ÚDr  s     ra   r¶   r¶   h  s
   € œ˜a›€ rž   c                 ó,   — t        j                  | «      S r£   )rI   r•   r!  s     ra   r¶   r¶   i  s   € œŸ™ !›€ rž   c                 ó.   — t        | «      t        | «      fS r£   r   r!  s     ra   r¶   r¶   j  s   € œ$˜q›'¤4¨£7Ð+€ rž   c                 ó   —  || «      S r£   r�   )r"  r  Úscipy_csr_types      ra   r¶   r¶   m  s   € ¹ÀqÓ8I€ rž   c                 óP   —  || «      t        j                  | «      t        | «      fS r£   )rI   r•   r  )r"  r  Úscipy_dok_types      ra   r¶   r¶   q  s#   € Ù˜1ÓÜ�H‰H�Q‹KÜ�‹Gð9
€ rž   c                 ó‚   — t        j                  d«      j                  dd«      }t        |d | d¬«      }t	        |«       y )Nr  r›   rF   é@   r  )rI   ÚarangeÚreshaper&   Únext)r  rU   r  s      ra   Ú,test_pairwise_distances_chunked_reduce_validr.  e  s:   € ô* 	�	‰	�"‹×Ñ˜b !Ó$€AÜ)Ø	ˆ4˜[¸ô€Hô 	ˆ…Nrž   )Ú
bad_reduceÚerr_typeÚmessagec                 ó6   — t        j                  | | dd  g«      S ©Nr›   ©rI   Úconcatenate©r"  Úss     ra   r¶   r¶   …  s   € œŸ™¨¨A¨b¨c¨F¨Ó4€ rž   zlength 11\..* input: 10\.c                 ó:   — | t        j                  | | dd  g«      fS r3  r4  r6  s     ra   r¶   r¶   Š  s   € ˜!œRŸ^™^¨Q°°"°#°¨KÓ8Ð9€ rž   z!length \(10, 11\)\..* input: 10\.c                 ó   — | d d | fS )Né	   r�   r6  s     ra   r¶   r¶   Ž  s   € �q˜˜!�u˜a�j€ rž   z length \(9, 10\)\..* input: 10\.c                  ó   — y)Né   r�   r6  s     ra   r¶   r¶   �  r·   rž   z2returned 7\. Expected sequence\(s\) of length 10\.c                  ó   — y)N)r<  é   r�   r6  s     ra   r¶   r¶   •  r·   rž   z9returned \(7, 8\)\. Expected sequence\(s\) of length 10\.c                 ó0   — t        j                  d«      dfS )Nr  r:  )rI   r+  r6  s     ra   r¶   r¶   š  s   € œ"Ÿ)™) B›-¨Ð+€ rž   z-, 9\)\. Expected sequence\(s\) of length 10\.c                 óü   — t        j                  d«      j                  dd«      j                  | d¬«      }t	        |d |d¬«      }t        j                  ||¬«      5  t        |«       d d d «       y # 1 sw Y   y xY w)	Nr  r›   rF   Fr;   r*  r  rx   )rI   r+  r,  rM   r&   rk   rl   r-  )rS   r/  r0  r1  rU   r  s         ra   Ú.test_pairwise_distances_chunked_reduce_invalidrA  �  sn   € ôD 	�	‰	�"‹×Ñ˜b !Ó$×+Ñ+¨L¸uÐ+ÓE€AÜ)Ø	ˆ4˜Z¸ô€Hô 
�‰�x wÔ	/ñ ÜˆXŒ÷÷ ñ ús   ÁA2Á2A;c                 ó:  — t        | |||¬«      }t        |t        «      sJ ‚t        |«      }|€| n|}t	        |«      dz  dz  }|D ]"  }|j
                  }|t        ||«      dz  k  rŒ"J ‚ t        j                  |«      }t        | ||¬«      }	t        ||	d¬«       y )N©r  r?   r>  g      °>i   r>   rá   r  )r&   r—   r   r  rè   ÚnbytesÚmaxrI   r  r#   r,   )
rU   rX   r  r?   ÚgenÚblockwise_distancesÚmin_block_mibÚblockÚmemory_usedrV   s
             ra   Ú check_pairwise_distances_chunkedrK  «  s«   € Ü
$ Q¨¸.ÐQWÔ
X€CÜ�cœ=Ô)Ð)Ð)Ü˜s›)ÐØˆY‰˜A€AÜ˜“F˜Q‘J Ñ'€Mà$ò IˆØ—l‘lˆØœc .°-Ó@À5ÑHÓHÐHÐHðIô Ÿ)™)Ð$7Ó8ÐÜ˜1˜a¨Ô/€AÜÐ'¨°Ö6rž   )r=   Úl2rÛ   c                 ó@  — t         j                  j                  d«      }|j                  dd¬«      j	                  |d¬«      }t        t        |d| ¬«      «      }t        |«      dkD  sJ ‚t        t        j                  t        j                  |«      «      dd	¬
«       y )Nr   ©éè  r  ç    _ B©ÚsizeÚscaleFr;   rF   rC  ç»½×Ùß|Û=râ   )rI   rJ   rK   ÚnormalrM   r  r&   rè   r,   rÎ   r  )r?   rS   rT   rU   Úchunkss        ra   Ú(test_pairwise_distances_chunked_diagonalrW  »  sz   € ä
�)‰)×
Ñ
 Ó
"€CØ�
‰
˜
¨$ˆ
Ó/×6Ñ6°|È%Ð6ÓP€AÜÔ,¨Q¸qÈÔPÓQ€FÜˆv‹;˜Š?Ðˆ?Ü”B—G‘GœBŸI™I fÓ-Ó.°¸Ö>rž   c                 óè   — t         j                  j                  d«      }|j                  dd¬«      j	                  |d¬«      }t        || d¬«      }t        t        j                  |«      dd	¬
«       y )Nr   rN  rP  rQ  Fr;   rA   r°   rT  r  )rI   rJ   rK   rU  rM   r#   r,   rÎ   )r?   rS   rT   rU   rÐ   s        ra   Ú)test_parallel_pairwise_distances_diagonalrY  Ä  s[   € ä
�)‰)×
Ñ
 Ó
"€CØ�
‰
˜
¨$ˆ
Ó/×6Ñ6°|È%Ð6ÓP€AÜ" 1¨V¸AÔ>€IÜ”B—G‘G˜IÓ&¨°Ö6rž   z0ignore:Could not adhere to working_memory configc                 óþ  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d dd¬«       t        dd«      D ]  }t        |d d	|z  d¬«       Œ t        |j                  «       d dd¬«       |j                  d
«      j	                  | d¬«      }t        ||dd¬«       t        |j                  «       |j                  «       dd¬«       t        ||dd¬«       t        ||dd¬«       t        |«      }t        |dd¬«      }t        |t        «      sJ ‚t        |«      |u sJ ‚t        j                  t        «      5  t        |«       d d d «       y # 1 sw Y   y xY w)Nr   )éÈ   r:   Fr;   rF   r=   rC  iðÿÿÿrA   )r  r:   i'  r   r
  r�   )rI   rJ   rK   rL   rM   rK  rç   Útolistr#   r&   r—   r   r-  rk   rl   ÚStopIteration)rS   rT   rU   ÚpowerrX   r"  rF  s          ra   Útest_pairwise_distances_chunkedr_  Ì  sX  € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AÜ$ Q¨¸QÀ{ÕSä�s˜A“ò 
ˆÜ(Øˆt A u¡H°[ö	
ð
ô
 %Ø	�‰‹
�D¨°;õð 	×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AÜ$ Q¨¸!ÀKÕPÜ$Ø	�‰‹
�A—H‘H“J¨q¸õô % Q¨¸%ÈÕTô % Q¨¸!ÀKÕPô 	˜1Ó€AÜ
$ Q°vÀmÔ
T€CÜ�cœ=Ô)Ð)Ð)Ü�‹9˜‰>Ðˆ>Ü	�‰”}Ó	%ñ ÜˆSŒ	÷÷ ñ ús   ÅE3Å3E<Úx_array_constrÚdense)ÚidsÚy_array_constrc                 óf   —  | dgg«      } |dgdgg«      }t        ||«      }t        |ddgg«       y ©Nr   rF   rA   r’   ri   )r   r,   )r`  rc  rU   rX   r"  s        ra   Ú%test_euclidean_distances_known_resultrf  ñ  s@   € ñ 	˜˜�uÓ€AÙ˜˜˜a˜S�zÓ"€AÜ˜A˜qÓ!€AÜ�A˜˜c˜
�|Õ$rž   c                 óv  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd	«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd	«      } ||«      }t        ||«      }t        |||¬
«      }t        |||¬«      }	t        ||||¬«      }
t        ||«       t        |	|«       t        |
|«       t        ||t        j                  |«      t        j                  |«      ¬«      }t        j                  t        «      5  t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   ©r  r  Fr;   ©é   r  rA   rF   rÔ   r›   ©ÚX_norm_squared©ÚY_norm_squared©rl  rn  )rI   rJ   rK   rL   rM   rj   r~   r,  r   r,   Ú
zeros_likerk   rl   rm   )rS   rc  rT   rU   rX   Ú	X_norm_sqÚ	Y_norm_sqÚD1ÚD2ÚD3ÚD4Úwrong_Ds               ra   Ú#test_euclidean_distances_with_normsrx    su  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€Að —‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€Iá�qÓ€Aä	˜Q Ó	"€BÜ	˜Q °)Ô	<€BÜ	˜Q °)Ô	<€BÜ	˜Q °)ÈIÔ	V€BÜ�B˜ÔÜ�B˜ÔÜ�B˜Ôô "Ø	Ø	Ü—}‘} YÓ/Ü—}‘} YÓ/ô	€Gô 
�‰”~Ó	&ñ %Ü˜ Ô$÷%÷ %ñ %ús   ÆF/Æ/F8Ú	symmetricTc                 óL  — t         j                  j                  | «      }|j                  d«      }|r|n|j                  d«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd«      }t        ||«      }t        |||¬«      }t        |||¬«      }	t        ||||¬	«      }
t        ||«       t        |	|«       t        |
|«       y )
Nrh  ri  rA   rF   rÔ   r›   rk  rm  ro  )
rI   rJ   rK   rL   rM   Úfloat32r~   r,  r   r,   )Úglobal_random_seedry  rT   rU   rX   rq  rr  rs  rt  ru  rv  s              ra   Ú&test_euclidean_distances_float32_normsr}  (  s÷   € ô �)‰)×
Ñ
Ð 2Ó
3€CØ×Ñ˜(Ó#€AÙ‰˜C×-Ñ-¨hÓ7€AØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IÜ	˜Q Ó	"€BÜ	˜Q °)Ô	<€BÜ	˜Q °)Ô	<€BÜ	˜Q °)ÈIÔ	V€BÜ�B˜ÔÜ�B˜ÔÜ�B˜Õrž   c            	      óè  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }|dz  j	                  d¬«      }|dz  j	                  d¬«      }t        ||||¬«      }t        |||j                  dd«      |j                  dd«      ¬«      }t        |||j                  dd«      |j                  dd«      ¬«      }t        ||«       t        ||«       t        j                  t        d	¬
«      5  t        |||d d ¬«       d d d «       t        j                  t        d¬
«      5  t        |||d d ¬«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)Nr   rh  ri  rA   rF   rÔ   ro  r›   zIncompatible dimensions for Xrx   r9   rk  zIncompatible dimensions for Yrm  )rI   rJ   rK   rL   r~   r   r,  r,   rk   rl   r“   )rT   rU   rX   rl  rn  rs  rt  ru  s           ra   Ú$test_euclidean_distances_norm_shapesr  9  sg  € ä
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#€AØ×Ñ˜(Ó#€Aà˜‘d—Z‘Z Q�ZÓ'€NØ˜‘d—Z‘Z Q�ZÓ'€Nä	Ø	ˆ1˜^¸Nô
€Bô 
Ø	Ø	Ø%×-Ñ-¨b°!Ó4Ø%×-Ñ-¨b°!Ó4ô	
€Bô 
Ø	Ø	Ø%×-Ñ-¨a°Ó4Ø%×-Ñ-¨a°Ó4ô	
€Bô �B˜ÔÜ�B˜Ôä	�‰”zÐ)HÔ	Iñ EÜ˜A˜q°ÀÀÐ1CÕD÷Eä	�‰”zÐ)HÔ	Iñ EÜ˜A˜q°ÀÀÐ1CÕD÷Eð E÷Eð Eú÷Eð Eús   ÄEÅE(ÅE%Å(E1c                 óx  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }d||dk  <   |j                  d«      j	                  | d¬«      }d||dk  <   t        ||«      } ||«      } ||«      }t        ||«      }t        ||d¬«       |j                  | k(  sJ ‚y )	Nr   ©r  r  Fr;   çš™™™™™é?rh  ç�íµ ÷Æ°>râ   )	rI   rJ   rK   rL   rM   r   r   r,   rN   )rS   r`  rc  rT   rU   rX   ÚexpectedrÐ   s           ra   Útest_euclidean_distancesr…  [  s½   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¨L¸uÐ+ÓE€AØ€A€aˆ#�g�JØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AØ€A€aˆ#�g�Jä�Q˜‹{€Há�qÓ€AÙ�qÓ€AÜ# A qÓ)€Iô �I˜x¨dÕ3Ø�?‰?˜lÒ*Ð*Ñ*rž   c                 ó"  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }d||dk  <   t        t        |«      «      } ||«      }t        |«      }t        ||d¬«       |j                  | k(  sJ ‚y )Nr   r�  Fr;   r‚  rƒ  râ   )
rI   rJ   rK   rL   rM   r   r
   r   r,   rN   )rS   r`  rT   rU   r„  rÐ   s         ra   Útest_euclidean_distances_symr‡  z  s‡   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¨L¸uÐ+ÓE€AØ€A€aˆ#�g�Jäœ% ›(Ó#€Há�qÓ€AÜ# AÓ&€Iô �I˜x¨dÕ3Ø�?‰?˜lÒ*Ð*Ñ*rž   Ú
batch_size)Nr9   r<  ée   c                 óÜ  — t         j                  j                  d«      }|j                  d«      j	                  t         j
                  «      }d||dk  <   |j                  d«      j	                  t         j
                  «      }d||dk  <   t        ||«      } ||«      } ||«      }t        ||| ¬«      }t        j                  t        j                  |d«      «      }t        ||d¬«       y )Nr   r�  r‚  rh  ©rX   rˆ  rƒ  râ   )rI   rJ   rK   rL   rM   r{  r   r   ÚsqrtÚmaximumr,   )rˆ  r`  rc  rT   rU   rX   r„  rÐ   s           ra   Útest_euclidean_distances_upcastrŽ  ‘  sÄ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¬B¯J©JÓ7€AØ€A€aˆ#�g�JØ×Ñ˜(Ó#×*Ñ*¬2¯:©:Ó6€AØ€A€aˆ#�g�Jä�Q˜‹{€Há�qÓ€AÙ�qÓ€AÜ+¨A°¸zÔJ€IÜ—‘œŸ
™
 9¨aÓ0Ó1€Iô �I˜x¨dÖ3rž   c                 óp  — t         j                  j                  d«      }|j                  d«      j	                  t         j
                  «      }d||dk  <   t        t        |«      «      } ||«      }t        ||| ¬«      }t        j                  t        j                  |d«      «      }t        ||d¬«       y )Nr   r�  r‚  r‹  rƒ  râ   )rI   rJ   rK   rL   rM   r{  r   r
   r   rŒ  r�  r,   )rˆ  r`  rT   rU   r„  rÐ   s         ra   Ú#test_euclidean_distances_upcast_symr�  °  s‘   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¬B¯J©JÓ7€AØ€A€aˆ#�g�Jäœ% ›(Ó#€Há�qÓ€AÜ+¨A°¸zÔJ€IÜ—‘œŸ
™
 9¨aÓ0Ó1€Iô �I˜x¨dÖ3rž   zdtype, eps, rtolg-Cëâ6?çñhãˆµøä>g:Œ0âŽyE>g®Gáz®ï?z failing due to lack of precision)Úreason)ÚmarksÚdimi@B c                 óÆ   — t        j                  dg|z  g| ¬«      }t        j                  d|z   g|z  g| ¬«      }t        ||«      }t        ||«      }t	        ||d¬«       y )Nr’   r�   r‘  râ   )rI   r•   r   r   r,   )rN   Úepsrã   r”  rU   rX   rÐ   r„  s           ra   Ú'test_euclidean_distances_extreme_valuesr—  Ç  s]   € ô  	�‰�3�%˜#‘+� eÔ,€AÜ
�‰�3˜‘9�+ Ñ#Ð$¨EÔ2€Aä# A qÓ)€IÜ�Q˜‹{€Hä�I˜x¨dÖ3rž   rÜ   c                 óÚ   — t         j                  j                  d«      }|j                  dd«      }|j                  dd«      }t	        ||| ¬«      }t        ||| ¬«      }t        ||«       y )Né9  rŒ   r:   )rX   rÜ   )rI   rJ   rK   r|   r   r   r,   )rÜ   rT   rU   rX   Únormal_distanceÚnan_distances         ra   Ú8test_nan_euclidean_distances_equal_to_euclidean_distancerœ  à  s\   € ô �)‰)×
Ñ
 Ó
%€CØ�	‰	�!�Q‹€AØ�	‰	�!�Q‹€Aä)¨!¨q¸'ÔB€OÜ*¨1°¸7ÔC€LÜ�O \Õ2rž   rU   rX   c                 ó²   — t        j                  t        «      5 }t        | |¬«       d d d «       d}|t	        j
                  «      k(  sJ ‚y # 1 sw Y   Œ&xY w)NrÀ   zBInput contains infinity or a value too large for dtype('float64').)rk   rl   r“   r   ÚstrÚvalue)rU   rX   ÚexcinfoÚexp_msgs       ra   Ú,test_nan_euclidean_distances_infinite_valuesr¢  ì  sP   € ô 
�‰”zÓ	"ð ( gÜ  QÕ'÷(ð S€GØ”c˜'Ÿ-™-Ó(Ò(Ð(Ñ(÷	(ð (ús   šAÁAzX, X_diag, missing_valuerA   r›   c                 ó*  — t        j                  d|g|dgg«      }t        | |¬«      }t        ||«       t        | d|¬«      }t        |dz  |«       t        | | |¬«      }t        ||«       t        | | j	                  «       |¬«      }t        ||«       y )Nç        r   ©Úmissing_valuesT©rÜ   r¦  rA   )rI   r•   r   r,   r<   )rU   ÚX_diagÚmissing_valueÚexp_distrø   Údist_sqÚdist_twoÚdist_two_copys           ra   Ú test_nan_euclidean_distances_2x2r®  ö  s‡   € ô  �x‰x˜#˜v˜¨°¨Ð4Ó5€Hä" 1°]ÔC€DÜ�H˜dÔ#ä% a°ÀmÔT€GÜ�H˜a‘K Ô)ä& q¨!¸MÔJ€HÜ�H˜hÔ'ä+¨A¨q¯v©v«xÈÔV€MÜ�H˜mÕ,rž   r©  c                 óF  — t        j                  | | gddgg«      }t        j                  t         j                  t         j                  gt         j                  dgg«      }t        || ¬«      }t	        ||«       t        ||j                  «       | ¬«      }t	        ||«       y )Nr   rF   r¥  )rI   r•   rO   r   r,   r<   )r©  rU   rª  rø   s       ra   Ú)test_nan_euclidean_distances_complete_nanr°    sz   € ä
�‰�= -Ð0°1°a°&Ð9Ó:€Aä�x‰xœ"Ÿ&™&¤"§&¡&Ð)¬B¯F©F°A¨;Ð7Ó8€Hä" 1°]ÔC€DÜ�H˜dÔ#ä" 1 a§f¡f£h¸}ÔM€DÜ�H˜dÕ#rž   c           	      óœ  — t        j                  d| dddg| ddd| gd| | | dgg«      }t        j                  | dd| dg| | dddg| | | ddgg«      }t        ||| ¬«      }t        ||| ¬«      }t        ||j                  «       t        t        |d d	 |d d	 d
| ¬«      dgg«       t        t        |d	d |d	d d| ¬«      t        j                  d«      gg«       t        || ¬«      }t        ||| ¬«      }t        ||j                  «       | ¬«      }t        ||«       t        ||«       t        ||d
¬«      }t        ||d¬«      }	t        ||	«       y )Nr’   g      @g      @ri   g      @g      @g      @r¥  rF   Tr§  g      D@rA   Fg      9@r;   )rI   r•   r   r-   ÚTr,   rŒ  r<   )
r©  rU   rX   rs  rt  ru  rv  ÚD5ÚD6ÚD7s
             ra   Ú'test_nan_euclidean_distances_not_trivalr¶  "  s„  € ä
�‰à�-  c¨3Ð/Ø˜C  c¨=Ð9Ø�- °¸sÐCð	
ó	€Aô 	�‰à˜C  m°SÐ9Ø˜M¨3°°SÐ9Ø˜M¨=¸#¸sÐCð	
ó	€Aô 
!  A°mÔ	D€BÜ	   A°mÔ	D€Bä˜˜BŸD™DÔ!ô ÜØˆbˆqˆE�1�R�a�5 $°}ô	
ð 4Ð	4Ð5ô	ô ÜØˆa�ˆF�A�a˜�F E¸-ô	
ô �'‰'Ð;Ó
<Ð	=Ð>ô	ô 
! °=Ô	A€BÜ	   A°mÔ	D€BÜ	   A§F¡F£H¸]Ô	K€BÜ�B˜ÔÜ�B˜Ôô 
!  A¨DÔ	1€BÜ	   A¨EÔ	2€BÜ�B˜Õrž   c                 óÆ   — t        j                  dd| dgd| d| gg«      }t        || d¬«      }t        j                  |dk\  «      sJ ‚t        || d¬«      }t	        |d	«       y )
Ngáz®G‘^Àg     @„@gÍÌÌÌÌìB@gÿ–|Ã¯Æ@T)r¦  rÜ   r   Fr¤  )rI   r•   r   r  r,   )r©  rU   Údist_squaredrø   s       ra   Ú7test_nan_euclidean_distances_one_feature_match_positiver¹  W  ss   € ô
 	�‰à�e˜]¨EÐ2Ø�m Z°Ð?ð	
ó	€Aô +Ø	˜-°ô€Lô �6‰6�, !Ñ#Ô$Ð$Ð$ä" 1°]ÈEÔR€DÜ�D˜#Õrž   c                  ó¦  — t         j                  j                  d«      } t        j                  | j	                  d«      «      }t        j
                  ||g«      }t        |«      }t        |ddgddggd¬«       t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚t        |t        j                  |«         ddg«       t        j
                  || g«      }t        |«      }t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚t        |ddgddgg«       t        j                  | j	                  dd«      «      }t        |«      }t        |t        j                  |«         dg|j                  d	   z  «       t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚y )
Nr™  iŽ  r¤  rT  r  ri   rO  iˆ  r   )rI   rJ   rK   rÖ   Úrandr  r   r,   r  Údiag_indices_fromrR   )rT   r¦   ÚXAr"  ÚXBrt  rU   s          ra   Útest_cosine_distancesr¿  l  s†  € ä
�)‰)×
Ñ
 Ó
%€CÜ
�‰ˆs�x‰x˜‹}Ó€AÜ	�‰�A�q�6Ó	€BÜ˜Ó€AÜ�A˜˜c˜
 S¨# JÐ/°eÕ<ä�6‰6�!�s‘(ÔÐÐÜ�6‰6�!�s‘(ÔÐÐä�A”b×*Ñ*¨1Ó-Ñ.°°c°
Ô;ä	�‰�A˜�r�7Ó	€BÜ	˜"Ó	€Bä�6‰6�"˜‘)ÔÐÐÜ�6‰6�"˜‘)ÔÐÐä�B˜#˜s˜ c¨3 ZÐ0Ô1ô 	�‰ˆs�x‰x˜˜dÓ#Ó$€AÜ˜Ó€Aä�A”b×*Ñ*¨1Ó-Ñ.°°¸¿¹À¹
Ñ0BÔCÜ�6‰6�!�s‘(ÔÐÐÜ�6‰6�!�s‘(ÔÐÑrž   c                  óâ  — d„ } t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  |D ��cg c]  }|D �cg c]  } | ||«      ‘Œ c}‘Œ c}}«      }t        ||«      }t        ||«       |j                  d«      }d}t        j                  t        |¬«      5  t        |«       d d d «       y c c}w c c}}w # 1 sw Y   y xY w)Nc                 óZ  — |d   | d   z
  }|d   | d   z
  }t        j                  |dz  «      dz  t        j                  | d   «      t        j                  |d   «      z  t        j                  |dz  «      dz  z  z   }dt        j                  t        j                  |«      «      z  }|S )Nr   rF   rA   )rI   ÚsinÚcosÚarcsinrŒ  )r¦   r§   Údiff_latÚdiff_lonÚaÚcs         ra   Úslow_haversine_distancesz:test_haversine_distances.<locals>.slow_haversine_distancesŒ  s™   € Ø�Q‘4˜!˜A™$‘;ˆØ�Q‘4˜!˜A™$‘;ˆÜ�F‰F�8˜a‘<Ó  AÑ%Ü�F‰F�1�Q‘4‹Lœ2Ÿ6™6 ! A¡$›<Ñ'¬"¯&©&°¸A±Ó*>À!Ñ*CÑCñ
ˆð ”—	‘	œ"Ÿ'™' !›*Ó%Ñ%ˆØˆrž   r   rD   )r  rA   )r  rŒ   z-Haversine distance only valid in 2 dimensionsrx   )
rI   rJ   rK   rL   r•   r   r,   rk   rl   r“   )	rÉ  rT   rU   rX   r¦   r§   rs  rt  Úerr_msgs	            ra   Útest_haversine_distancesrË  Š  sÌ   € òô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜'Ó"€AÜ	�‰È×JÀ1¸AÖ>°qÑ,¨Q°Õ2Ô>ÓJÓ	K€BÜ	˜Q Ó	"€BÜ�B˜Ôà×Ñ˜'Ó"€AØ=€GÜ	�‰”z¨Ô	1ñ Ü˜AÔ÷ð ùò ?ùÓJ÷ð ús$   Á	C
Á"CÁ2C
ÃC%ÃC
Ã%C.c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y re  )r!   r,   ©rU   rX   r"  s      ra   Útest_paired_euclidean_distancesrÎ  ¥  ó6   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÜ" 1 aÓ(€AÜ�A˜˜S�zÕ"rž   c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y re  )r"   r,   rÍ  s      ra   Útest_paired_manhattan_distancesrÑ  ­  rÏ  rž   c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y )Nr   rF   rA   rE   )r   r,   rÍ  s      ra   Útest_paired_cosine_distancesrÓ  µ  s6   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÜ  1Ó%€AÜ�A˜˜S�zÕ"rž   c                  óT  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        ||«      }d}t        |||¬«      }|j                  t        k(  sJ ‚t        |«      D ]t  \  }}t        |«      D ]a  \  }}	t        j                  ||	z
  dz  ||	z   z  «       }
t        j                  ||
z  «      }t        |||f   |
«       t        |||f   |«       Œc Œv t        |«      }t        t        j                  |«      d«       t        j                  |dkD  «      sJ ‚t        j                  |t        j                  t        j                  |«      «      z
  dk  «      sJ ‚| j                  d«      j                  t         j                   «      }| j                  d«      j                  t         j                   «      }t        ||«      }|j                  t         j                   k(  sJ ‚| j                  d«      j                  t         j"                  «      }t        ||«      }t        j$                  |«      j                  «       sJ ‚|j                  t        k(  sJ ‚dd	gd
dgg}ddgddgg}t        ||«      }|d   |d   kD  sJ ‚|d   |d   kD  sJ ‚t'        j(                  t*        «      5  t        ddgg«       d d d «       t'        j(                  t*        «      5  t        ddggddgg«       d d d «       t'        j(                  t*        «      5  t        ddggddgg«       d d d «       t'        j(                  t*        «      5  t        ddggg d¢g«       d d d «       y # 1 sw Y   Œ¦xY w# 1 sw Y   Œ~xY w# 1 sw Y   ŒVxY w# 1 sw Y   y xY w)Nr   r8   r  r­   rÈ   rA   rF   g333333Ó?gffffffæ?r’   gÍÌÌÌÌÌì?rB   )r   rF   )rF   rF   )rF   r   r›   )çš™™™™™É?rÕ  g333333ã?)rI   rJ   rK   rL   r   r   rN   ÚfloatÚ	enumerater~   Úexpr-   r.   rÎ   r  rM   r{  Úint32Úisfiniterk   rl   r“   )rT   rU   rX   ÚK_addr¬   r¨   Úir¦   Újr§   r½   Úchi2_exps               ra   Útest_chi_square_kernelrß  ½  s<  € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜'Ó"€AÜ   AÓ&€EØ€EÜ�A�q Ô&€AØ�7‰7”eÒÐÐÜ˜!“ò 3‰ˆˆ1Ü˜a“Lò 	3‰DˆAˆqÜ—F‘F˜A ™E a™<¨1¨q©5Ñ1Ó2Ð2ˆDÜ—v‘v˜e d™lÓ+ˆHÜ  a¨ d¡¨TÔ2Ü  ! Q $¡¨Õ2ñ		3ð3ô 	�A‹€AÜ”r—w‘w˜q“z 1Ô%ä�6‰6�!�a‘%Œ=Ðˆ=Ü�6‰6�!”b—g‘gœbŸg™g a›jÓ)Ñ)¨AÑ-Ô.Ð.Ð.à×Ñ˜&Ó!×(Ñ(¬¯©Ó4€AØ×Ñ˜'Ó"×)Ñ)¬"¯*©*Ó5€AÜ�A�qÓ€AØ�7‰7”b—j‘jÒ Ð Ð ð 	×Ñ˜'Ó"×)Ñ)¬"¯(©(Ó3€AÜ�A�qÓ€AÜ�;‰;�q‹>×ÑÔÐÐØ�7‰7”eÒÐÐð ˆsˆ�c˜1�XÐ€AØ
ˆQˆ�#�s�Ð€AÜ�A�qÓ€AØˆT‰7�Q�t‘WÒÐÐØˆT‰7�Q�t‘WÒÐÐô 
�‰”zÓ	"ñ Ü�a˜�W�IÔ÷ä	�‰”zÓ	"ñ +Ü�a˜�W�I  R ˜zÔ*÷+ä	�‰”zÓ	"ñ *Ü�a˜�V�H  B˜x˜jÔ)÷*ô 
�‰”zÓ	"ñ 1Ü�a˜�V�HšÐ/Ô0÷1ð 1÷ð ú÷+ð +ú÷*ð *ú÷1ð 1ús0   ËM:Ë6NÌ*NÍNÍ:NÎNÎNÎN'Úkernelc                 ó¤   — t         j                  j                  d«      }|j                  d«      } | ||«      }t	        ||j
                  d«       y )Nr   r8   é   )rI   rJ   rK   rL   r,   r²  )rà  rT   rU   r¨   s       ra   Útest_kernel_symmetryrã  ó  sC   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÙˆq�!‹€AÜ�A�q—s‘s˜BÕrž   c                 ó°   — t         j                  j                  d«      }|j                  d«      } ||«      } | ||«      } | ||«      }t	        ||«       y ©Nr   r8   )rI   rJ   rK   rL   r,   )rà  rf   rT   rU   ro   r¨   rÃ   s          ra   Útest_kernel_sparseræ    sS   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÙ˜QÓ€HÙˆq�!‹€AÙ	�˜(Ó	#€BÜ�A�rÕrž   c            	      ó  — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        |j                  d d d…   |D �cg c]  }t        j                  |«      dz  ‘Œ c}«       y c c}w )Nr   r8   é   rA   )	rI   rJ   rK   rL   r   r,   Úflatr   Únorm)rT   rU   r¨   r¦   s       ra   Útest_linear_kernelrë    sc   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ�a˜Ó€Aä�A—F‘F™3˜Q˜3‘K¸qÖ!A¸!¤&§+¡+¨a£.°AÓ"5Ò!AÕBùÒ!As   ÁA>
c                  óÚ   — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        |j                  d d d…   t        j                  d«      «       y )Nr   r8   rè  r9   )rI   rJ   rK   rL   r)   r,   ré  Úones©rT   rU   r¨   s      ra   Útest_rbf_kernelrï  #  sP   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ�1�aÓ€Aä�A—F‘F™3˜Q˜3‘K¤§¡¨£Õ,rž   c                  óš  — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        t        j                  |«      t        j                  d«      «       t        j                  |dkD  «      sJ ‚t        j                  |t        j                  t        j                  |«      «      z
  dk  «      sJ ‚y )Nr   r8   r9   rF   )	rI   rJ   rK   rL   r   r,   rÎ   rí  r  rî  s      ra   Útest_laplacian_kernelrñ  +  s�   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ˜˜AÓ€Aä”B—G‘G˜A“J¤§¡¨£
Ô+ô �6‰6�!�a‘%Œ=Ðˆ=Ü�6‰6�!”b—g‘gœbŸg™g a›jÓ)Ñ)¨AÑ-Ô.Ð.Ñ.rž   zmetric, pairwise_funcr¼   r   c                 óŠ  — t         j                  j                  d«      }|j                  d«      }|j                  d«      } ||«      } ||«      } |||d¬«      }t	        |«      sJ ‚ |||d¬«      }	t	        |	«      rJ ‚t        |j                  «       |	«       t        ||| ¬«      }
t        |j                  «       |
«       y )Nr   r8   r¯   F)Údense_outputTrz   )rI   rJ   rK   rL   r   r,   Útoarrayr'   )r?   Úpairwise_funcrf   rT   rU   rX   ÚXcsrÚYcsrrÂ   rÃ   ÚK3s              ra   Ú&test_pairwise_similarity_sparse_outputrù  7  sµ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÙ˜Ó€DÙ˜Ó€Dñ 
�t˜T°Ô	6€BÜ�BŒ<Ðˆ<ñ 
�q˜!¨$Ô	/€BÜ˜Œ|ÐÐÜ�B—J‘J“L "Ô%ô 
˜!˜q¨Ô	0€BÜ�B—J‘J“L "Õ%rž   c                 óR  — t         j                  j                  d«      }|j                  d«      }|j                  d«      } | |«      } | |«      }|d f||f|d f||ffD ]E  \  }}t	        ||d¬«      }t        |«      }|�t        |«      }t	        ||d¬«      }	t        ||	«       ŒG y )Nr   r8   r¯   r   rz   r¼   )rI   rJ   rK   rL   r'   r+   r,   )
rf   rT   rU   rX   rö  r÷  ÚX_ÚY_rÂ   rÃ   s
             ra   Útest_cosine_similarityrý  Q  s·   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÙ˜Ó€DÙ˜Ó€Dà�t�9˜q !˜f t¨T l°T¸4°LÐAò  ‰ˆˆBô ˜b B¨xÔ8ˆÜ�r‹]ˆØˆ>Ü˜2“ˆBÜ˜b B¨xÔ8ˆÜ˜˜BÕñ rž   c                  ó˜   — t        j                  t        j                  d«      d«      } t        | d «      \  }}||u sJ ‚t	        | |«       y ©Né(   ©r9   r>  )rI   Úresizer+  r   r.   )r½  Ú
XA_checkedÚ
XB_checkeds      ra   Útest_check_dense_matricesr  f  sE   € ô 
�‰”2—9‘9˜R“= &Ó	)€BÜ2°2°tÓ<Ñ€J�
Ø˜Ñ#Ð#Ð#Ü�r˜:Õ&rž   c                  ó–  — t        j                  t        j                  d«      d«      } t        j                  t        j                  d«      d«      }t        | |«      \  }}t	        | |«       t	        ||«       t        j                  t        j                  d«      d«      }t        | |«      \  }}t	        | |«       t	        ||«       y )Nr   r  é    ©r:   r>  )rI   r  r+  r   r.   r   ©r½  r¾  r  r  s       ra   Útest_check_XB_returnedr
  o  s–   € ô 
�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”2—9‘9˜R“= &Ó	)€BÜ2°2°rÓ:Ñ€J�
Ü�r˜:Ô&Ü�r˜:Ô&ä	�‰”2—9‘9˜R“= &Ó	)€BÜ0°°RÓ8Ñ€J�
Ü�r˜:Ô&Ü�r˜:Õ&rž   c                  óâ  — t        j                  t        j                  d«      d«      } t        j                  t        j                  d«      d«      }t        j                  t
        «      5  t        | |«       d d d «       t        j                  t        j                  d«      d«      }t        j                  t
        «      5  t        | |«       d d d «       y # 1 sw Y   ŒaxY w# 1 sw Y   y xY w)Né-   )r9   r:  r  r  é$   )r:   r:  )rI   r  r+  rk   rl   r“   r   r   ©r½  r¾  s     ra   Útest_check_different_dimensionsr    s¨   € ä	�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”zÓ	"ñ &Ü˜b "Ô%÷&ô 
�‰”2—9‘9˜UÓ# VÓ	,€BÜ	�‰”zÓ	"ñ $Ü˜B Ô#÷$ð $÷	&ð &ú÷$ð $ús   Á,CÃC%ÃC"Ã%C.c                  ó  — t        j                  d«      j                  dd«      } t        j                  d«      j                  dd«      }t        j                  t
        «      5  t        | |«       d d d «       t        j                  d«      j                  dd«      } t        j                  d«      j                  dd«      }t        j                  t
        «      5  t        | |«       d d d «       y # 1 sw Y   Œ‚xY w# 1 sw Y   y xY w)Nr  r:  r9   r  r:   r>  )rI   r+  r,  rk   rl   r“   r   r  s     ra   Útest_check_invalid_dimensionsr  ‹  sÇ   € ô 
�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰”zÓ	"ñ &Ü˜b "Ô%÷&ä	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰”zÓ	"ñ &Ü˜b "Ô%÷&ð &÷	&ð &ú÷&ð &ús   Á$C2ÃC>Ã2C;Ã>Dc                 óR  — t         j                  j                  d«      }|j                  d«      } | |«      }|j                  d«      } | |«      }t	        ||«      \  }}t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t	        ||«      \  }}t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚y rå  )rI   rJ   rK   rL   r   r   rÖ   r~   )	rf   rT   r½  Ú	XA_sparser¾  Ú	XB_sparser  r  ÚXA_2_checkeds	            ra   Útest_check_sparse_arraysr  ™  s,  € ô �)‰)×
Ñ
 Ó
"€CØ	×	Ñ	˜6Ó	"€BÙ˜bÓ!€IØ	×	Ñ	˜6Ó	"€BÙ˜bÓ!€IÜ2°9¸iÓHÑ€J�
ô �JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1Ü�JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1ä4°YÀ	ÓJÑ€J�Ü�JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1Ü�LÔ!Ð!Ð!Üˆ|˜jÑ(Ó)×-Ñ-Ó/°1Ò4Ð4Ñ4rž   c                 ó~   — | j                   }t        |«      dkD  rt        d„ | D «       «      S t        d„ | D «       «      S )NrF   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr£   )Útuplify)r  r]   s     ra   r  ztuplify.<locals>.<genexpr>µ  s   è ø€ Ò/ c”W˜S—\Ñ/ùs   ‚c              3   ó    K  — | ]  }|–— Œ y ­wr£   r�   )r  Úrs     ra   r  ztuplify.<locals>.<genexpr>¸  s   è ø€ ’N˜1”Q‘Nùs   ‚)rR   rè   rP   )rU   r7  s     ra   r  r  °  s8   € à	�‰€AÜ
ˆ1ƒv�‚zäÑ/¨QÔ/Ó/Ð/ô ‘N ”NÓ"Ð"rž   c                  ó   — t         j                  j                  d«      } | j                  d«      }t	        |«      }| j                  d«      }t	        |«      }t        ||«      \  }}t        ||«       t        ||«       y rå  )rI   rJ   rK   rL   r  r   r.   )rT   r½  Ú	XA_tuplesr¾  Ú	XB_tuplesr  r  s          ra   Útest_check_tuple_inputr  »  sm   € ä
�)‰)×
Ñ
 Ó
"€CØ	×	Ñ	˜6Ó	"€BÜ˜“€IØ	×	Ñ	˜6Ó	"€BÜ˜“€IÜ2°9¸iÓHÑ€J�
Ü�y *Ô-Ü�y *Õ-rž   c                  óB  — t        j                  t        j                  d«      d«      j                  t         j                  «      } t        j                  t        j                  d«      d«      j                  t         j                  «      }t        | d «      \  }}|j                  t         j                  k(  sJ ‚t        | |«      \  }}|j                  t         j                  k(  sJ ‚|j                  t         j                  k(  sJ ‚t        | j                  t        «      |«      \  }}|j                  t        k(  sJ ‚|j                  t        k(  sJ ‚t        | |j                  t        «      «      \  }}|j                  t        k(  sJ ‚|j                  t        k(  sJ ‚y rÿ  )rI   r  r+  rM   r{  r   rN   rÖ  r	  s       ra   Útest_check_preserve_typer!  Ç  sD  € ä	�‰”2—9‘9˜R“= &Ó	)×	0Ñ	0´·±Ó	<€BÜ	�‰”2—9‘9˜R“= &Ó	)×	0Ñ	0´·±Ó	<€Bä2°2°tÓ<Ñ€J�
Ø×ÑœrŸz™zÒ)Ð)Ð)ô 3°2°rÓ:Ñ€J�
Ø×ÑœrŸz™zÒ)Ð)Ð)Ø×ÑœrŸz™zÒ)Ð)Ð)ô 3°2·9±9¼UÓ3CÀRÓHÑ€J�
Ø×ÑœuÒ$Ð$Ð$Ø×ÑœuÒ$Ð$Ð$ô 3°2°r·y±yÄÓ7GÓHÑ€J�
Ø×ÑœuÒ$Ð$Ð$Ø×ÑœuÒ$Ð$Ñ$rž   r±   Ú
seuclideanÚmahalanobisÚdist_functionc           
      ó8  — t        d¬«      5  t        j                  j                  d«      }|j	                  d«      }t        t        ||¬«      «      }t        j                  t         |||| ¬«      «      «      }t        ||«       d d d «       y # 1 sw Y   y xY w)Nr­   )r  r   r�  r>   r°   )
r   rI   rJ   rK   rL   r   r
   r  rP   r,   )r±   r?   r$  rT   rU   Úexpected_distrø   s          ra   Ú+test_pairwise_distances_data_derived_paramsr'  ß  s|   € ô 
 sÔ	+ñ -Ü�i‰i×#Ñ# AÓ&ˆØ×Ñ˜iÓ(ˆä"¤5¨°6Ô#:Ó;ˆÜ�y‰yœ™}¨Q°vÀfÔMÓNÓOˆä˜˜mÔ,÷-÷ -ñ -ús   �A:BÂBc                 ó
  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t	        j
                  t        d| › d�¬«      5  t        ||| ¬«       d d d «       y # 1 sw Y   y xY w)Nr   r�  z+The '(V|VI)' parameter is required for the z metricrx   r>   )rI   rJ   rK   rL   rk   rl   r“   r#   )r?   rT   rU   rX   s       ra   Ú1test_pairwise_distances_data_derived_params_errorr)  ñ  sv   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$€AØ×Ñ˜)Ó$€Aä	�‰ÜØ<À&ÀÈÐQô
ñ 0ô 	˜1˜a¨Õ/÷	0÷ 0ñ 0ús   Á!A9Á9B)Ú
braycurtisÚcanberraÚ	chebyshevÚcorrelationÚhammingr#  r	   r"  rÛ   r   r   r=   Úy_is_xzY is Xz
Y is not Xc           	      ó¢  — t         j                  j                  d«      }|j                  d«      j	                  |d¬«      }i }|r|}t        t        || ¬«      «      }nÖ|j                  d«      j	                  |d¬«      }t        ||| ¬«      }| dk(  r?dt        j                  t        j                  ||g«      ddt         j                  ¬	«      i}nb| d
k(  r]dt         j                  j                  t        j                  t        j                  ||g«      j                  «      «      j                  i}t        ||fd| i|¤Ž}t!        ||«       y )Nr   r8   Fr;   r>   r"  ÚVrF   )rÕ   ÚddofrN   r#  ÚVIr?   )rI   rJ   rK   rL   rM   r   r
   r   Úvarr  rj   r   ÚinvÚcovr²  r#   r,   )	r?   rS   r/  rT   rU   rË   rX   r&  rø   s	            ra   Ú)test_numeric_pairwise_distances_datatypesr7     s  € ô6 �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aà€FÙØˆÜ"¤5¨°6Ô#:Ó;‰à×Ñ˜fÓ%×,Ñ,¨\ÀÐ,ÓFˆÜ˜a ¨6Ô2ˆà�\Ò!Øœ2Ÿ6™6¤"§)¡)¨Q°¨FÓ"3¸!À!Ì2Ï:É:ÔVÐW‰FØ�}Ò$ØœBŸI™IŸM™M¬"¯&©&´·±¸A¸q¸6Ó1B×1DÑ1DÓ*EÓF×HÑHÐIˆFä˜a Ñ<¨6Ð<°VÑ<€Dä�D˜-Õ(rž   Úpairwise_distances_funcc                 óœ   — ddgdt         j                  gddgddgg} | ||d¬«      }t        j                  |«      j                  «       rJ ‚y)	z8Check that `nan_euclidean` is lenient with `nan` values.r   rF   rA   rŒ   r9   rC   r>   N)rI   rO   ÚisnanÚany)r8  rU   Úoutputs      ra   Útest_nan_euclidean_supportr=  1  sR   € ð ˆQˆ�!”R—V‘V�˜q !˜f q¨! fÐ-€AÙ$ Q¨°/ÔB€Fä�x‰x˜Ó×#Ñ#Ô%Ð%Ð%Ð%rž   c                  ó(  — t         j                  t         j                  gt         j                  t         j                  gt         j                  t         j                  gg} t        | | d¬«      }ddgddgddgg}t        ||d¬«      }t        ||«       y)zyCheck that the behavior of constant input is the same in the case of
    full of nan vector and full of zero vector.
    rC   r>   r   N)rI   rO   r$   r,   )ÚX_nanÚ
argmin_nanÚX_constÚargmin_consts       ra   Ú(test_nan_euclidean_constant_input_argminrC  >  su   € ô
 �f‰f”b—f‘fÐ¤§¡¬¯©Ð/´"·&±&¼"¿&¹&Ð1AÐB€EÜ*¨5°%ÀÔP€Jà�1ˆv˜˜1�v  1˜vÐ&€GÜ,¨W°gÀoÔV€Lä�J Õ-rž   zX,Y,expected_distance)rÇ  ÚabÚabc)r¤  r’   ri   )r’   r¤  r’   )ri   r’   r¤  rÇ  rD  r¤  r’   ri   c                 ó>   — d„ }t        | ||¬«      }t        ||«       y)z8Check pairwise_distances with lists of strings as input.c                 óV   — t        j                  t        | «      t        |«      z
  «      S r£   )rI   rÖ   rè   rµ   s     ra   Údummy_string_similarityzLtest_pairwise_dist_custom_metric_for_string.<locals>.dummy_string_similarity^  s   € Ü�v‰v”c˜!“fœs 1›v‘oÓ&Ð&rž   )rU   rX   r?   N)r#   r,   )rU   rX   Úexpected_distancerH  Úactual_distances        ra   Ú+test_pairwise_dist_custom_metric_for_stringrK  L  s#   € ò$'ô )¨1°Ð:QÔR€OÜ�OÐ%6Õ7rž   c                  óÀ   — d„ } t        j                  g d¢g d¢g d¢gt        ¬«      }t        j                  g d¢g d¢g d¢g«      }t        || ¬	«      }t	        ||«       y
)zjCheck that pairwise_distances does not convert boolean input to float
    when using a custom metric.
    c                 óV   — d| |z  j                  «       | |z  j                  «       z  z
  S )NrF   )r~   )Úv1Úv2s     ra   Údummy_bool_distzBtest_pairwise_dist_custom_metric_for_bool.<locals>.dummy_bool_distj  s&   € à�B˜‘G—=‘=“? b¨2¡g§]¡]£_Ñ4Ñ4Ð4rž   )rF   r   r   r   )rF   r   rF   r   )rF   rF   rF   rF   r�   )r¤  rE   ç      è?)rE   r¤  rE   )rQ  rE   r¤  )rU   r?   N)rI   r•   r€   r#   r,   )rP  rU   rI  rJ  s       ra   Ú)test_pairwise_dist_custom_metric_for_boolrR  e  sV   € ò
5ô 	�‰’,¢ªlÐ;Ä4ÔH€AäŸ™âÚÚð	
óÐô )¨1°_ÔE€OÜ�OÐ%6Õ7rž   c                 ó¼   —  | t        j                  d«      «      g} | t        j                  d«      «      g} t        dd¬«      d„ t        ||«      D «       «       y )NrŽ   rA   r   )r±   Ú
max_nbytesc              3   óN   K  — | ]  \  }} t        t        «      ||«      –— Œ y ­wr£   )r6   r   )r  Úm1Úm2s      ra   r  z9test_sparse_manhattan_readonly_dataset.<locals>.<genexpr>ƒ  s)   è ø€ ò %Ù17°°RÐ$ŒÔ#Ó$ R¨×,ñ%ùs   ‚#%)rI   rí  r5   Úzip)rf   Ú	matrices1Ú	matrices2s      ra   Ú&test_sparse_manhattan_readonly_datasetr[  |  sU   € ñ œrŸw™w v›Ó/Ð0€IÙœrŸw™w v›Ó/Ð0€Ið %„H�A !Ô$ñ %Ü;>¸yÈ)Ó;Tô%õ rž   c                  ó€  — t         j                  j                  d¬«      } t         j                  j                  d¬«      }d}t        j                  t
        |¬«      5  t        | |d¬«       d d d «       t        j                  t
        |¬«      5  t        | |d¬«       d d d «       y # 1 sw Y   Œ<xY w# 1 sw Y   y xY w)Nrh  )rR  z5'force_all_finite' was renamed to 'ensure_all_finite'rx   T)Úforce_all_finite)rI   rJ   Úuniformrk   r   ÚFutureWarningr   r#   )rU   rX   r†   s      ra   Ú$test_force_all_finite_rename_warningr`  ‰  sš   € Ü
�	‰	×Ñ˜xÐÓ(€AÜ
�	‰	×Ñ˜xÐÓ(€Aà
A€Cä	�‰”m¨3Ô	/ñ ;Ü˜a °TÕ:÷;ô 
�‰”m¨3Ô	/ñ 8Ü˜1˜a°$Õ7÷8ð 8÷;ð ;ú÷8ð 8ús   ÁB(ÂB4Â(B1Â4B=)r=   )›r�   Útypesr   ÚnumpyrI   rk   r   Úscipy.sparser   Úscipy.spatial.distancer   r   r   r	   r
   r   Úsklearnr   Úsklearn.exceptionsr   Úsklearn.metrics.pairwiser   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*   Úsklearn.preprocessingr+   Úsklearn.utils._testingr,   r-   r.   r/   Úsklearn.utils.fixesr0   r1   r2   r3   r4   Úsklearn.utils.parallelr5   r6   rb   ÚmarkÚparametrizerr   ÚDeprecationWarningr‡   r‰   r™   rŸ   r+  rM   Ú_minkowski_kwdsr©   rj   r{  r�   r²   r¸   rÄ   rÆ   rÌ   ÚitemsrÑ   r×   r  r  r  r  r.  r“   rn   rA  rK  rW  rY  Úfilterwarningsr_  r•   Ú__name__rf  rx  r}  r  r…  r‡  rŽ  r�  ÚparamÚxfailr—  rœ  Úinfr¢  rŒ  rO   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)  r7  r=  rC  rK  rR  r[  r`  )r&  r(  Ú	containers   000ra   ú<module>rw     s.  ðÛ Ý ã Û Ý Ý !÷÷ õ #Ý 4÷÷ ÷ ÷ ÷ ÷ ÷ õ õ> ,÷ó ÷õ ÷ 5òLð^ ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9ñ><ó :ó :ó :ó :ð><ñF Ð,Ô-Ø‡�×Ñ˜Ð#=Ó>ñ:ó ?ó .ð:ò<2ð ‡�×Ñ˜Ð"4Ð6FÐ!GÓHñ%ó Ið%ò:Fð "˜Ÿ	™	 ! Q›×.Ñ.¨x¸eÐ.ÓDÈ1ÑM€òð ‡�×ÑØà	˜[¨"Ð-àØØð	
ð ØØð	
ð
 
˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?ðóð$ ‡�×Ñ˜ 2§:¡:¨r¯z©z¸3Ð"?Ó@ñó Aó%ð&òIð ‡�×ÑØÚTóð ‡�×Ñ˜¨.Ó9ñó :ó	ð
ò>ò&
7ð ‡�×Ñ˜Ð)?Ð)9×)?Ñ)?Ó)AÓBØ‡�×Ñ˜¨.Ó9ñ&ó :ó Cð&ò*ð( ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9ñvAó :ó :ðvAòrò7ò"
4ð ‡�×ÑØá Ù$Ù+ðð -öàð )7ÔIòñð -öð ð )7ô 	
òñóñ(ó)ð(ð ‡�×ÑØ)ñ 5ØØ(ð	
ñ :ØØ0ð	
ñ
 
! *Ð.QÐRáØØAð	
ñ  ØØHð	
ñ ,ØØ<ð	
ð-óñ>ó?ð>ó7ð  ‡�×Ñ˜Ð#EÓFñ?ó Gð?ð ‡�×Ñ˜Ð#EÓFñ7ó Gð7ð ‡�×ÑÐNÓOñ!ó Pð!ðH ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
%óóð%ð ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
%óð
%ð@ ‡�×Ñ˜ t¨U mÓ4ñó 5ðò EðD ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
+óóð+ð* ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
+óð
+ð$ ‡�×Ñ˜Ò'8Ó9Ø‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
4óóó :ð4ð( ‡�×Ñ˜Ò'8Ó9Ø‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
4óó :ð4ð" ‡�×ÑØà	�‰�T˜4Ð Øˆ�‰Ø�J‰JØØØ—+‘+×#Ñ#Ð+MÐ#ÓNô		
ðóð ‡�×Ñ˜  G Ó-ñ	4ó .óð	4ð ‡�×Ñ˜ T¨5 MÓ2ñ3ó 3ð3ð ‡�×Ñ˜˜x˜rŸx™x¨"¯&©&°!¨¨Ó6¸¸¿¹À1ÀrÇvÁvÀgÀ,ÀÓ8PÐQÓRØ‡�×Ñ˜˜x˜rŸx™x¨"¯&©&°!¨¨Ó6¸¸¿¹À1ÀrÇvÁvÀgÀ,ÀÓ8PÐRVÐWÓXñ)ó Yó Sð)ð ‡�×ÑØà	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	# W R§W¡W¨Q£Z°·±Ð8Ø	ˆ�‰�A�q�6˜A˜rŸv™v˜;Ð'Ó	(¨'¨"¯'©'°!«*°b·f±fÐ=Ø	ˆ�‰�B—F‘F˜A�;  B§F¡F Ð,Ó	-¨r¯v©v°r·v±vÐ>Ø	ˆ�‰�B—F‘F˜A�; §¡¨ Ð,Ó	-¨w¨r¯w©w°q«z¸2¿6¹6ÐBØ	ˆ�‰�A�r—v‘v�;  B§F¡F Ð,Ó	-¨w¨r¯w©w°q«z¸2¿6¹6ÐBØ	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	# W R§W¡W¨Q£Z°Ð4Ø	ˆ�‰�A�q�6˜A˜r˜7Ð#Ó	$ g b§g¡g¨a£j°"Ð5Ø	ˆ�‰�B˜�7˜Q ˜GÐ$Ó	% r§v¡v¨rÐ2Ø	ˆ�‰�B˜�7˜R ˜GÐ$Ó	% w r§w¡w¨q£z°2Ð6Ø	ˆ�‰�A�r�7˜Q ˜GÐ$Ó	% w r§w¡w¨q£z°2Ð6ðóñ-óð-ð  ‡�×Ñ˜¨2¯6©6°2¨,Ó7ñ	$ó 8ð	$ð ‡�×Ñ˜¨2¯6©6°2¨,Ó7ñ1ó 8ð1ðh ‡�×Ñ˜¨2¯6©6°2¨,Ó7ñó 8ðò(ò<ò6#ò#ò#ò31ðl ‡�×ÑØàØØØØØðó
ñ ó
ð ð ‡�×ÑØàØØØØØðó
ð ‡�×Ñ˜¨.Ó9ñó :ó
ðòCò-ò	/ð ‡�×ÑØØ�Ð Ð+<Ð =Ð>óð ‡�×Ñ˜¨.Ó9ñ&ó :ó	ð
&ð* ‡�×Ñ˜¨.Ó9ñ ó :ð ò('ò'ò 	$ò&ð ‡�×Ñ˜¨.Ó9ñ5ó :ð5ò,#ò	.ò%ð0 ‡�×Ñ˜ A q 6Ó*Ø‡�×Ñ˜ L°-Ð#@ÓAØ‡�×ÑØÐ(Ð*DÐEóñ
-óó Bó +ð

-ð ‡�×Ñ˜ L°-Ð#@ÓAñ0ó Bð0ð ‡�×ÑØòóð" ‡�×Ñ˜ D¨% =°xÀÐ6NÐÓOñ)ó Pó#ð$)ð> ‡�×ÑØØÐ2Ð4QÐRóñ&ó	ð&ò.ð ‡�×ÑØò ØÚšoªÐ?ð	
ò Ø�$ˆKØ�3ˆZ˜#˜s˜ c¨3 ZÐ0ð	
ðóñ8óð8ò8ð. ‡�×Ñ˜¨.Ó9ñó :ðó
8ùò{ ùòùòH Iùò
 Iùò Iùòp Iùò
 Iùò4 Iùò0 Iùò
 Iùò4 IsB   ÌwÌ3wÐ"wÑ)wÒ;wÔ0w$Õ7w)×	w.Ø4w3Ù;w8Û.w=