ó
    Û£jt¿  ã                   ó6  • S SK r S SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S SKJrJrJr  S S	KJr  S S
KJrJrJrJr  S SKJr  S SKJ r   S SK!J"r"J#r#J$r$  S SK%J&r&J'r'J(r(  \RR                  RU                  S\\45      S 5       r+\RR                  RU                  SSS//0S4SSS/SS//0S4SS/S //0S4/5      S 5       r,\RR                  RU                  SSS/5      S 5       r-S r.\RR                  RU                  S/ SQ5      \RR                  RU                  SSS /5      S! 5       5       r/\RR                  RU                  S\0" SS"5      5      \RR                  RU                  S#\0" S S"5      5      \RR                  RU                  SS$S%/5      \RR                  RU                  SS&S/5      S' 5       5       5       5       r1\RR                  RU                  S(S)/S*S+/5      S, 5       r2\RR                  RU                  / S-QS$S S\Rf                  " S S/S S./S/S0//5      4S$S \Rf                  " / S1Q5      \Rf                  " SS/S2S./S/S0//5      4S$S2S\Rf                  " S S/SS//S2S3/S/S0//5      4S%S S\Rf                  " S S/S S /S/S0//5      4S%S \Rf                  " / S1Q5      \Rf                  " SS/S"S./S/S0//5      4/5      S4 5       r4\RR                  RU                  S(S)/S*S+/5      S5 5       r5S6 r6S7 r7\RR                  RU                  SS S"/5      S8 5       r8\RR                  RU                  S(S)/S*S+/5      \RR                  RU                  S/ S9Q5      S: 5       5       r9S; r:\RR                  RU                  S\0" SS 5      5      \RR                  RU                  SS$S%/5      \RR                  RU                  S/ S<Q5      \RR                  RU                  S=S>S?/5      S@ 5       5       5       5       r;\RR                  RU                  S#S"S3/5      \RR                  RU                  S=S?S>/5      \RR                  RU                  SS S2/5      \RR                  RU                  S/ S<Q5      \RR                  RU                  SAS>S?/5      SB 5       5       5       5       5       r<\RR                  RU                  S/ S<Q5      \RR                  RU                  SAS>S?/5      SC 5       5       r=\RR                  RU                  S/ S<Q5      \RR                  RU                  SAS>S?/5      SD 5       5       r>\RR                  RU                  SSSE0SF4SSG0SF4SSH0SF4SSI0SJ4/5      SK 5       r?\R€                  " 5       SL 5       rA\RR                  RU                  SMS S?S>\B" SS5      4S S>S>\B" SS5      4S S?S?S S/4S S>S?S/4SNS?S>/ SOQ4SNS>S>SS /4SNS?S?S /4SNS>S?/ 4/5      \RR                  RU                  SPS/\'-   \&-   5      SQ 5       5       rC\R€                  " 5       SR 5       rD\RR                  RU                  SMSS?S>\B" S S/5      4SS>S>\B" SS/5      4SS?S?/ SSQ4SS>S?/ STQ4SUS?S>/ SVQ4SUS>S>/ SWQ4SUS?S?S S2/4SUS>S?S2/4S S?S>\B" SS5      4S S>S>\B" SS5      4S S?S?/ SSQ4S S>S?/ STQ4SNS?S>/ SXQ4SNS>S>\B" S S5      4SNS?S?S S2/4SNS>S?S2/4SYS?S>/ SZQ4SYS>S>/ S[Q4SYS?S?S /4SYS>S?/ 4/5      \RR                  RU                  SPS/\'-   \&-   5      S\ 5       5       rES] rF\RR                  RU                  / S^QSS?S>\G4SS?S>\G4SS?S>\R�                  4SS?S>\R’                  4S S>S>\R’                  4S S>S?\R’                  4S2S>S>\R’                  4S2S>S?\R’                  4/5      \RR                  RU                  S_\&5      S` 5       5       rJ\RR                  RU                  / S^QSS?S>\G4SS?S>\G4SS?S>\R�                  4SS?S>\R’                  4S S>S>\R’                  4S S>S?\R’                  4/5      \RR                  RU                  Sa\'5      Sb 5       5       rK\RR                  RU                  Sc/ SdQ5      \RR                  RU                  Se/ SfQ5      \RR                  RU                  SgS?S>/5      \RR                  RU                  S=S?S>/5      \RR                  RU                  Sa\'5      Sh 5       5       5       5       5       rL\RR                  RU                  / S^QSS?S>\R�                  4SS?S>\R’                  4S S>S>\R’                  4S S>S?\R’                  4/5      \RR                  RU                  Sa\'5      Si 5       5       rM\RR                  RU                  / SjQ/ SkQ5      \RR                  RU                  Sa\'5      Sl 5       5       rN\RR                  RU                  S=Sg// SmQ5      \RR                  RU                  Sa\'5      Sn 5       5       rO\RR                  RU                  / SoQ/ SpQ5      \RR                  RU                  Sa\'5      Sq 5       5       rP\RR                  RU                  SgS?S>/5      \RR                  RU                  S=S?S>/5      \RR                  RU                  Sa\'5      Sr 5       5       5       rQ\RR                  RU                  SsStSuS\G" \R¤                  " \R¦                  " \R¨                  5      Rª                  5      S-   5      4SvS\G" \R¤                  " \R¦                  " \R¨                  5      Rª                  5      5      4/5      \RR                  RU                  SgS?S>/5      \RR                  RU                  S=S?S>/5      \RR                  RU                  Sa\'5      Sw 5       5       5       5       rV\RR                  RU                  SgS?S>/5      \RR                  RU                  S=S?S>/5      \RR                  RU                  Sa\'5      Sx 5       5       5       rW\RR                  RU                  Sy\'\&-   5      Sz 5       rXS{ rY\RR                  Rµ                  \R¶                  S|:H  S}S?S~9\RR                  RU                  Sa\'5      S 5       5       r\\RR                  RU                  S€\" 5       5      \RR                  RU                  SgS?S>/5      \RR                  RU                  S=S?S>/5      \RR                  RU                  S/ S�Q5      S‚ 5       5       5       5       r]\RR                  RU                  S€\" 5       5      Sƒ 5       r^g)„é    N)Úassert_allcloseÚassert_array_equal)Úsparse)ÚBSpline)Úconfig_context)ÚLinearRegression)ÚPipeline)ÚKBinsDiscretizerÚPolynomialFeaturesÚSplineTransformer)Ú_get_sizeof_LARGEST_INT_t)Ú_is_numpy_namespaceÚget_namespaceÚmove_toÚ)yield_namespace_device_dtype_combinations©Údevice)Ú	_get_mask)Ú_array_api_for_testsÚassert_allclose_dense_sparseÚassert_array_almost_equal)ÚCSC_CONTAINERSÚCSR_CONTAINERSÚ_sparse_random_arrayÚestc                 ó@  • [         R                  " S5      R                  SS5      nS nU" U " 5       R                  U5      5      (       d   eU" U " SS9R                  U5      5      (       d   e[         R                  " U " SS9R                  U5      5      (       d   eg)	z+Test that output array has the given order.é
   é   é   c                 óB   • [         R                  " U R                  5      $ )N)ÚnpÚ	isfortranÚT)Úas    Ú¹C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\sklearn/preprocessing/tests/test_polynomial.pyÚis_c_contiguousÚ?test_polynomial_and_spline_array_order.<locals>.is_c_contiguous0   s   € Ü�|Š|˜AŸC™CÓ Ð ó    ÚC©ÚorderÚFN)r!   ÚarangeÚreshapeÚfit_transformr"   )r   ÚXr&   s      r%   Ú&test_polynomial_and_spline_array_orderr1   +   s‡   € ô 	�	Š	�"‹×Ñ˜a Ó#€Aò!ñ ™3›5×.Ñ.¨qÓ1×2Ñ2Ð2Ð2Ù™3 S™>×7Ñ7¸Ó:×;Ñ;Ð;Ð;Ü�<Š<™ #™×4Ñ4°QÓ7×8Ñ8Ð8Ñ8r(   zparams, err_msgÚknotsé   z0Number of knots, knots.shape\[0\], must be >= 2.r   z*knots.shape\[1\] == n_features is violatedz(knots must be sorted without duplicates.c                 óª   • S/S//n[         R                  " [        US9   [        S0 U D6R	                  U5        SSS5        g! , (       d  f       g= f)zATest that we raise errors for invalid input in SplineTransformer.r3   r   ©ÚmatchN© )ÚpytestÚraisesÚ
ValueErrorr   Úfit©ÚparamsÚerr_msgr0   s      r%   Ú(test_spline_transformer_input_validationr?   8   sA   € ð ˆˆqˆcˆ
€Aä	�Š”z¨Ó	1ÜÑ#˜FÑ#×'Ñ'¨Ô*÷ 
2×	1Ö	1úó    AÁ
AÚextrapolationÚcontinueÚperiodicc                 ó¤   • [         R                  " S5      R                  SS5      nSS/SS/SS/SS/SS//n[        S	X S
9R	                  U5      ng)zATest that SplineTransformer accepts integer value knot positions.é   r   r   r   r3   r   é   é   é   )Údegreer2   rA   N)r!   r-   r.   r   r/   )rA   r0   r2   Ú_s       r%   Ú%test_spline_transformer_integer_knotsrK   H   s^   € ô 	�	Š	�"‹×Ñ˜b !Ó$€AØ�ˆV�a˜�V˜a ˜V b¨" X°°B¨xÐ8€EÜØ˜ñ	ç�m�AÓñ r(   c                  ó6  • [         R                  " S5      R                  SS5      n [        SSSS9R	                  U 5      nUR                  5       n[        U/ SQ5        [        SSSS9R	                  U 5      nUR                  S	S
/5      n[        U/ SQ5        g)z<Test that SplineTransformer generates correct feature names.rE   r   r   rH   T)Ún_knotsrI   Úinclude_bias)
Úx0_sp_0Úx0_sp_1Úx0_sp_2Úx0_sp_3Úx0_sp_4Úx1_sp_0Úx1_sp_1Úx1_sp_2Úx1_sp_3Úx1_sp_4Fr$   Úb)Úa_sp_0Úa_sp_1Úa_sp_2Úa_sp_3Úb_sp_0Úb_sp_1Úb_sp_2Úb_sp_3N)r!   r-   r.   r   r;   Úget_feature_names_outr   )r0   ÚspltÚfeature_namess      r%   Ú%test_spline_transformer_feature_namesre   R   s’   € ä
�	Š	�"‹×Ñ˜b !Ó$€AÜ Q¨q¸tÑD×HÑHÈÓK€DØ×.Ñ.Ó0€MÜØò	
ôô   Q¨q¸uÑE×IÑIÈ!ÓL€DØ×.Ñ.°°S¨zÓ:€MÜØò		
õr(   )ÚconstantÚlinearrB   rC   rI   rH   c                 ó:  • [         R                  " S5      R                  SS5      n[        XS9R	                  U5      nUR                  SS/5      n[        U5      UR                  :X  d   eUR                  U5      nUR                  S   [        U5      :X  d   eg)	zkTest feature names are correct for different extrapolations and degree.

Non-regression test for gh-25292.
rE   r   r   )rI   rA   r$   rY   r3   N)
r!   r-   r.   r   r;   rb   ÚlenÚn_features_out_Ú	transformÚshape)rA   rI   r0   rc   rd   ÚX_transs         r%   Ú7test_split_transform_feature_names_extrapolation_degreern   x   sŠ   € ô 	�	Š	�"‹×Ñ˜b !Ó$€AÜ FÑH×LÑLÈQÓO€DØ×.Ñ.°°S¨zÓ:€MÜˆ}Ó ×!5Ñ!5Ó5Ð5Ð5à�n‰n˜QÓ€GØ�=‰=˜Ñœs =Ó1Ó1Ð1Ñ1r(   r   rM   ÚuniformÚquantilerf   c                 ób  • [         R                  " SSS5      SS2S4   n[         R                  S//USSS2SS24   S//4   nUSSS2SS24   nUS:X  a  X-   n[        UU USUS9nUR	                  U5        XV4 H1  n[        [         R                  " UR                  U5      SS	9S5        M3     g)
zŽTest that B-splines are indeed a decomposition of unity.

Splines basis functions must sum up to 1 per row, if we stay in between boundaries.
r   r3   éd   Nr   rC   T)rM   rI   r2   rN   rA   ©Úaxis)r!   ÚlinspaceÚr_r   r;   r   Úsumrk   )rI   rM   r2   rA   r0   ÚX_trainÚX_testrc   s           r%   Ú+test_spline_transformer_unity_decompositionrz   ‹   s½   € ô 	�Š�A�q˜#Óšq $˜wÑ'€Aä�e‰e�a�S�E˜1™S˜q˜S¢!˜V™9¨ s eÐ+Ñ,€GØˆqˆt�!ˆt’Qˆw‰Z€Fà˜
Ó"ØÑ"ˆäØØØØØ#ñ€Dð 	‡H�HˆWÔØÓˆÜœŸš˜tŸ~™~¨aÓ0°qÑ9¸1Ö=ò r(   ÚbiasÚ	intercept©TF©FTc           
      ó  • [         R                  " SSS5      SS2S4   n[         R                  " USS2S4   5      S-   n[        S[	        SSU S	S
94S[        US94/S9nUR                  X#5        [        UR                  U5      USS9  g)z7Test that B-splines fit a sinusodial curve pretty well.r   r   rr   Nr   Úsplineé   rH   rf   ©rM   rI   rN   rA   Úols©Úfit_intercept©Ústepsçü©ñÒMbP?©Úrtol)	r!   ru   Úsinr	   r   r   r;   r   Úpredict)r{   r|   r0   ÚyÚpipes        r%   Ú)test_spline_transformer_linear_regressionr�   ¨   s—   € ô 	�Š�A�r˜3Ó¢ 4 Ñ(€AÜ
�Šˆq’�A�‰w‹˜!Ñ€AÜð Ü!ØØØ!%Ø",ñ	ðð Ô$°9Ñ=Ð>ð
ñ€Dð 	‡H�HˆQ„NÜ�D—L‘L “O Q¨TÓ2r(   )r2   rM   Úsample_weightÚexpected_knotsé   é   é   )r   r   r3   r3   r   rH   r3   é   r   c           
      óš   • [         R                  " SS/SS/SS/SS/SS/SS/SS//5      n[        R                  " X@XS	9n[	        XS5        g
)zJCheck the behaviour to find knot positions with and without sample_weight.r   r   rH   r•   r“   r   r’   r”   )r0   r2   rM   r�   N)r!   Úarrayr   Ú_get_base_knot_positionsr   )r2   rM   r�   r‘   r0   Ú
base_knotss         r%   Ú/test_spline_transformer_get_base_knot_positionsrš   ¿   s\   € ô0 	�Š�1�a�&˜1˜a˜& 1 a &¨1¨a¨&°1°a°&¸1¸a¸&À1ÀbÀ'ÐJÓK€AÜ"×;Ò;Ø
 'ñ€Jô �JÕ/r(   c           
      óv  • S n[         R                  " SSS5      SS2S4   n[        S[        SSU S	S
94S[	        US94/S9nUR                  X2" USS2S4   5      5        [         R                  " SSS5      SS2S4   nUR                  U5      n[        Xb" USS2S4   5      SSS9  [        USS USS SS9  g)z5Test that B-splines fit a periodic curve pretty well.c                 ó²   • [         R                  " S[         R                  -  U -  5      [         R                  " S[         R                  -  U -  5      -
  S-   $ )Nr   r’   rH   )r!   r‹   Úpi)Úxs    r%   ÚfÚ=test_spline_transformer_periodic_linear_regression.<locals>.fã   s<   € Ü�vŠv�aœ"Ÿ%™%‘i !‘mÓ$¤r§v¢v¨a´"·%±%©i¸!©mÓ'<Ñ<¸qÑ@Ð@r(   r   r3   ée   Nr€   rE   rH   rC   r‚   rƒ   r„   r†   éÿÿÿÿr   i-  g{®Gáz„?)ÚatolrŠ   rr   éÈ   rˆ   r‰   )r!   ru   r	   r   r   r;   rŒ   r   )r{   r|   rŸ   r0   rŽ   ÚX_Úpredictionss          r%   Ú2test_spline_transformer_periodic_linear_regressionr§   Þ   sÝ   € ò
Aô 	�Š�A�q˜#Óšq $˜wÑ'€AÜð Ü!ØØØ!%Ø",ñ	ðð Ô$°9Ñ=Ð>ð
ñ€Dð 	‡H�HˆQ��!’A�q�D‘'“
Ôô 
�Š�R˜˜CÓ	 ¢ D Ñ	)€BØ—,‘,˜rÓ"€KÜ�K  2¢a¨ d¡8£°4¸dÒCÜ�K  #Ð&¨°C¸Ð(<À4ÓHr(   c                  óF  • [         R                  " SSS5      SS2S4   n Sn[        USS/S/S	//S
9nUR                  U 5      n[         R                  " S	S/SS	/S	S/SS	//5      n[        [         R                  " SS5      XAS5      nU" U SS2S4   5      n[        X65        g)z@Test that the backport of extrapolate="periodic" works correctlyéþÿÿÿg      @r   Nr   rC   g      ð¿ç        ç      ð?©rI   rA   r2   éýÿÿÿr•   r   )r!   ru   r   r/   r—   r   r-   r   )r0   rI   ÚtransformerÚXtÚcoefÚsplÚXspls          r%   Ú0test_spline_transformer_periodic_spline_backportr³   þ   s¯   € ä
�Š�B˜˜RÓ ¢ D Ñ)€AØ€Fô $Ø Z¸¸ÀÀÈÀuÐ7Mñ€Kð 
×	"Ñ	" 1Ó	%€Bô �8Š8�c˜3�Z # s ¨c°3¨Z¸#¸s¸ÐDÓE€DÜ
”"—)’)˜B Ó" D°*Ó
=€CÙˆq’�A�‰w‹<€DÜ�BÕr(   c            
      ó
  • [         R                  " SSS5      SS2S4   n [        SSS/S/S	/S
/S/S//S9n[        SSS/S	/S
/S/S/S//S9nUR                  U 5      nUR                  U 5      n[	        X4SS2/ SQ4   5        g)zJTest if shifted knots result in the same transformation up to permutation.r   r   r¡   NrH   rC   rª   r«   ç      @ç      @ç      @ç       @r¬   g      "@)r•   r   r3   r   rH   )r!   ru   r   r/   r   )r0   Útransformer_1Útransformer_2ÚXt_1ÚXt_2s        r%   Ú4test_spline_transformer_periodic_splines_periodicityr½     s«   € ä
�Š�A�r˜3Ó¢ 4 Ñ(€Aä%ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ñ€Mô &ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ñ€Mð ×&Ñ& qÓ)€DØ×&Ñ& qÓ)€Dä�Dšq¢/Ð1Ñ2Õ3r(   c           
      ó*  • [         R                  " SSS5      SS2S4   n[        U SS/S/S/S	/S
/S//S9nUR                  U5      nUR	                  5       UR                  5       -
  [        U5      -  nSU-  nUn[        SU S-   5       HF  n[         R                  " USS9n[         R                  " U5      R	                  5       U:  d   eX„-  nMH     [         R                  " USS9n[         R                  " U5      R	                  5       S:”  d   eg)z?Test that spline transformation is smooth at first / last knot.r©   r   i'  NrC   rª   r«   rµ   r¶   r·   r¸   r¬   r3   r   rs   )
r!   ru   r   r/   ÚmaxÚminri   ÚrangeÚdiffÚabs)	rI   r0   r®   r¯   ÚdeltaÚtolÚdXtÚdrÂ   s	            r%   Ú3test_spline_transformer_periodic_splines_smoothnessrÈ   &  s  € ô 	�Š�B˜˜FÓ#¢A t GÑ,€Aä#ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ñ€Kð
 
×	"Ñ	" 1Ó	%€Bà�U‰U‹W�q—u‘u“wÑ¤# a£&Ñ(€EØ
ˆu‰*€Cà
€Cô �1�f˜q‘jÖ!ˆä�wŠw�s Ñ#ˆÜ�vŠv�d‹|×ÑÓ! CÓ'Ð'Ð'à‰lŠñ "ô �7Š7�3˜QÑ€DÜ�6Š6�$‹<×ÑÓ Ó!Ð!Ñ!r(   )r3   r   rH   r•   r   c           
      ó  • [         R                  " SSS5      SS2S4   nUR                  5       n[        S[	        SUU SS9/S	[        US
9//5      nUR                  X45        [        UR                  S/S//5      SS/5        [        S[	        SUU SS9/S	[        US
9//5      nUR                  X45        [        UR                  S/S//5      SS/5        [	        SX SS9nUR                  U5        Sn[        R                  " [        US9   UR                  S//5        SSS5        [        R                  " [        US9   UR                  S//5        SSS5        g! , (       d  f       ND= f! , (       d  f       g= f)z1Test that B-spline extrapolation works correctly.r¢   r3   rr   Nr€   r•   rf   r‚   rƒ   r„   iöÿÿÿr   rg   Úerrorú2`X` contains values beyond the limits of the knotsr5   )r!   ru   Úsqueezer	   r   r   r;   r   rŒ   r8   r9   r:   rk   )r{   r|   rI   r0   r�   rŽ   rc   Úmsgs           r%   Ú%test_spline_transformer_extrapolationrÎ   M  s~  € ô
 	�Š�B˜˜3Ó¢ 4 Ñ(€AØ	�	‰	‹€Aô ð Ü!ØØ!Ø!%Ø",ñ	ðð Ô$°9Ñ=Ð>ð	
ó€Dð 	‡H�HˆQ„NÜ�D—L‘L 3 %¨!¨ Ó.°°Q°Ô8ô ð Ü!ØØ!Ø!%Ø"*ñ	ðð Ô$°9Ñ=Ð>ð	
ó€Dð 	‡H�HˆQ„NÜ�D—L‘L 3 %¨!¨ Ó.°°a°Ô9ô Ø˜&À7ñ€Dð 	‡H�HˆQ„KØ
>€CÜ	�Š”z¨Ó	-Ø�‰˜˜�wÔ÷ 
.ä	�Š”z¨Ó	-Ø�‰˜˜�uÔ÷ 
.Ð	-÷ 
.Õ	-úç	-Õ	-ús   ÄE!ÅE2Å!
E/Å2
F c                 ó  • [         R                  R                  U 5      nUR                  S5      R	                  SS5      nSnUS-   n[        USSSS9nUR                  U5      n[        USSS	S
9nUR                  U5      n[        XhSS9  g)zCTest that a B-spline of degree=0 is equivalent to KBinsDiscretizer.r¤   r3   r   r   rp   T)rM   rI   r2   rN   zonehot-denseÚaveraged_inverted_cdf)Ún_binsÚencodeÚstrategyÚquantile_methodg‚vIhÂ%<=r‰   N)	r!   ÚrandomÚRandomStateÚrandnr.   r   r/   r
   r   )	Úglobal_random_seedÚrngr0   rÑ   rM   rc   ÚsplinesÚkbdÚkbinss	            r%   Ú'test_spline_transformer_kbindiscretizerrÝ   …  s˜   € ä
�)‰)×
Ñ
Ð 2Ó
3€CØ�	‰	�#‹×Ñ˜s AÓ&€AØ€FØ�q‰j€GäØ ¨À$ñ€Dð × Ñ  Ó#€Gä
ØØØØ/ñ	€Cð ×Ñ˜aÓ €Eô �G¨Ó/r(   )rÊ   rf   rg   rB   rC   rN   FTc                 óB  • [         R                  R                  U5      nUR                  S5      R	                  SS5      n[        U UUUSS9n[        U UUUSS9nUR                  U5        UR                  U5        UR                  U5      n	UR                  U5      n
[        R                  " U	5      (       a  U	R                  S:X  d   e[        X©R                  5       5        [         R                  " USS	9n[         R                  " USS	9n[         R                  [         R                   " US-
  US
5      [         R                   " XÌS-   S
5      4   nUS:X  ak  Sn["        R$                  " [&        US9   UR                  U5        S S S 5        Sn["        R$                  " [&        US9   UR                  U5        S S S 5        g [        UR                  U5      UR                  U5      R                  5       5        g ! , (       d  f       N}= f! , (       d  f       g = f)Nr¤   é(   r   F)rI   r2   rA   rN   Úsparse_outputTÚcsrr   rs   r   rÊ   rË   r5   zOut of bounds)r!   rÕ   rÖ   r×   r.   r   r;   rk   r   ÚissparseÚformatr   ÚtoarrayÚaminÚamaxrv   ru   r8   r9   r:   )rI   r2   rA   rN   rØ   rÙ   r0   Ú
splt_denseÚsplt_sparseÚX_trans_sparseÚX_trans_denseÚX_minÚX_maxÚX_extrarÍ   s                  r%   Ú%test_spline_transformer_sparse_outputrî   ž  sÅ  € ô �)‰)×
Ñ
Ð 2Ó
3€CØ�	‰	�#‹×Ñ˜r 1Ó%€Aä"ØØØ#Ø!Øñ€Jô $ØØØ#Ø!Øñ€Kð ‡N�N�1ÔØ‡O�O�AÔà ×*Ñ*¨1Ó-€NØ×(Ñ(¨Ó+€MÜ�?Š?˜>×*Ñ*¨~×/DÑ/DÈÓ/MÐMÐMÜ�M×#9Ñ#9Ó#;Ô<ô �GŠG�A˜AÑ€EÜ�GŠG�A˜AÑ€EÜ�e‰eÜ
�Š�E˜A‘I˜u bÓ)¬2¯;ª;°uÀa¹iÈÓ+LÐLñ€Gð ˜ÓØBˆÜ�]Š]œ:¨SÓ1Ø× Ñ  Ô)÷ 2àˆÜ�]Š]œ:¨SÓ1Ø×!Ñ! 'Ô*÷ 2Ð1ô 	Ø× Ñ  Ó)¨;×+@Ñ+@ÀÓ+I×+QÑ+QÓ+Sõ	
÷ 2Õ1ú÷ 2Õ1ús   Å6G?Æ+HÇ?
HÈ
Hrà   c                 óÚ   • [        U UUUUS9n[        R                  " SSS5      SS2S4   nUR                  U5        UR	                  U5      R
                  S   UR                  :X  d   eg)z8Test that transform results in n_features_out_ features.)rM   rI   rN   rA   rà   r   r3   r   N)r   r!   ru   r;   rk   rl   rj   )rM   rN   rI   rA   rà   rc   r0   s          r%   Ú&test_spline_transformer_n_features_outrð   Ô  sm   € ô ØØØ!Ø#Ø#ñ€Dô 	�Š�A�q˜"Óša ˜gÑ&€AØ‡H�HˆQ„Kà�>‰>˜!Ó×"Ñ" 1Ñ%¨×)=Ñ)=Ó=Ð=Ñ=r(   c                 óþ  • [         R                  " SS/SS/SS/SS/SS//[         R                  S9nUR                  5       n[         R                  US'   Sn[
        R                  " [        [        R                  " U5      S	9   [        SSS
U S9nUR                  U5        SSS5        [        SSSU US9nUR                  U5      nUR                  U5      R                  U5      n[        Xg5        UR                  U/ SQS9n[        Xh5        UR                  U5      SSS2   n	UR                  U5      R                  USSS2   5      n
[        Xš5        [        U[         R                  5      n[         R                   " XµR"                  S   R$                  R&                  S   SS9nXl   S:H  R)                  5       (       d   eUR                  U5      n[*        R,                  " U5      (       a  UR/                  5       nUS:¬  R)                  5       (       d   eUS:*  R)                  5       (       d   eUR                  U5      nUR                  U5      n[        XÜ)    Xl)    5        g! , (       d  f       GNÑ= f)z×Test that SplineTransformer handles missing values correctly.
We only test for knots="uniform", since for "quantile" the metrics are calculated
differently with nans present and a different result is thus expected.
r3   r   rH   r•   r   ©Údtype)rH   r   zJInput X contains NaN values and `SplineTransformer` is configured to errorr5   rÊ   )rI   rM   Úhandle_missingrA   NÚzeros©rI   rM   rô   rA   rà   )r3   r3   r3   r3   r3   )r�   r   rs   )r!   r—   Úfloat64ÚcopyÚnanr8   r9   r:   ÚreÚescaper   r/   r;   rk   r   r   ÚrepeatÚ	bsplines_Úcrl   Úallr   râ   rä   )rA   rà   r0   ÚX_nanrÍ   r€   ÚX_nan_transformÚX_nan_fit_then_transformÚ"X_nan_transform_with_sample_weightÚX_nan_transform_same_shapeÚ X_nan_transform_different_shapesÚnan_maskÚencoded_nan_maskÚX_transforms                 r%   Ú.test_spline_transformer_handles_missing_valuesr	  ì  s\  € ô 	�Š�1�a�&˜1˜a˜& 1 a &¨1¨a¨&°1°a°&Ð9ÄÇÁÑL€AØ�F‰F‹H€EÜ—&‘&€Eˆ$�Kð W€CÜ	�Š”z¬¯ª°3«Ó	8Ü"ØØØ"Ø'ñ	
ˆð 	×Ñ˜UÔ#÷ 
9ô ØØØØ#Ø#ñ€Fð ×*Ñ*¨5Ó1€OØ%Ÿz™z¨%Ó0×:Ñ:¸5ÓAÐÜ  ÔKð *0×)=Ñ)=Øš_ð *>ð *Ð&ô ! ÔUð "(×!5Ñ!5°eÓ!<¹S¸q¸SÑ!AÐØ'-§z¡z°%Ó'8×'BÑ'BÀ5ÉÈ1ÈÁ:Ó'NÐ$Ü Ø"ôô
 ˜¤§¡Ó'€HÜ—y’y ×+;Ñ+;¸AÑ+>×+@Ñ+@×+FÑ+FÀqÑ+IÐPQÑRÐØÑ-°Ñ2×7Ñ7×9Ñ9Ð9Ð9ð ×*Ñ*¨5Ó1€OÜ‡‚�×'Ñ'Ø)×1Ñ1Ó3ˆØ˜qÑ ×%Ñ%×'Ñ'Ð'Ð'Ø˜qÑ ×%Ñ%×'Ñ'Ð'Ð'ð ×&Ñ& qÓ)€KØ×*Ñ*¨5Ó1€OÜ ØÐ%Ñ&¨Ð8IÑ(Jõ÷s 
9Ö	8ús   ÂI-É-
I<c                 ó  • [         R                  " SS/SS/SS/SS/SS//5      n[         R                  " [         R                  [         R                  /[         R                  S//5      n[        SSSU US9nUR	                  U5        UR                  U5      n[        U[         R                  5      n[         R                  " XdR                  S   R                  R                  S   SS	9nXW   S:H  R                  5       (       d   eg
)zVTest that SplineTransformer encodes missing values to zeros even for
all-nan-features.r3   r   rH   r•   r   rõ   rö   r   rs   N)r!   r—   rù   r   r;   rk   r   rü   rý   rþ   rl   rÿ   )rA   rà   r0   ÚX_nan_full_columnr€   Úall_missing_column_encodedr  r  s           r%   Ú(test_spline_transformer_handles_all_nansr  9  sð   € ô 	�Š�1�a�&˜1˜a˜& 1 a &¨1¨a¨&°1°a°&Ð9Ó:€AÜŸš¤2§6¡6¬2¯6©6Ð"2´R·V±V¸Q°KÐ!@ÓAÐäØØØØ#Ø#ñ€Fð ‡J�JÐ Ô!à!'×!1Ñ!1Ð2CÓ!DÐÜÐ*¬B¯F©FÓ3€HÜ—y’y ×+;Ñ+;¸AÑ+>×+@Ñ+@×+FÑ+FÀqÑ+IÐPQÑRÐØ&Ñ8¸AÑ=×BÑB×DÑDÐDÑDr(   )r¢   r   z&degree=\(min_degree, max_degree\) must)r   g      ø?©rH   r   )r3   r   rH   z'int or tuple \(min_degree, max_degree\)c                 óª   • S/S//n[         R                  " [        US9   [        S0 U D6R	                  U5        SSS5        g! , (       d  f       g= f)zBTest that we raise errors for invalid input in PolynomialFeatures.r3   r   r5   Nr7   )r8   r9   r:   r   r;   r<   s      r%   Ú)test_polynomial_features_input_validationr  S  sA   € ð ˆˆqˆcˆ
€Aä	�Š”z¨Ó	1ÜÑ$˜VÑ$×(Ñ(¨Ô+÷ 
2×	1Ö	1úr@   c                  óÄ   • [         R                  " S5      S S 2[         R                  4   n [         R                  " [         R                  " U 5      X S-  U S-  /5      nX4$ )Nr“   r   rH   )r!   r-   ÚnewaxisÚhstackÚ	ones_like)r0   ÚPs     r%   Úsingle_feature_degree3r  d  sH   € ä
�	Š	�!‹’QœŸ
™
�]Ñ#€AÜ
�	Š	”2—<’< “? A¨!¡t¨Q°©TÐ2Ó3€AØˆ4€Kr(   z/degree, include_bias, interaction_only, indices©r   rH   )r   r   rH   ÚX_containerc                 óF  • U u  pgUb  U" U5      n[        XUS9R                  U5      nUR                  U5      n	Ub  U	R                  5       n	[	        X—SS2U4   5        UR
                  S:”  a3  UR                  R                  UR
                  UR                  4:X  d   egg)z9Test PolynomialFeatures on single feature up to degree 3.N©rI   rN   Úinteraction_onlyr   ©	r   r;   rk   rä   r   Ún_output_features_Úpowers_rl   Ún_features_in_)
r  rI   rN   r  Úindicesr  r0   r  ÚtfÚouts
             r%   Ú$test_polynomial_features_one_featurer#  k  s¢   € ð. "�D€AØÑÙ˜‹NˆÜ	ØÐCSñ
ç	�cˆ!ƒfð ð �,‰,�q‹/€CØÑØ�k‰k‹mˆÜ�Cš1˜g˜:™Ô'Ø	×Ñ˜qÓ Ø�z‰z×Ñ B×$9Ñ$9¸2×;LÑ;LÐ#MÓMÐMÑMð !r(   c                  ór  • [         R                  " S5      R                  S5      n U S S 2S S24   nU S S 2SS 24   n[         R                  " US-  US-  -  US-  US-  -  US-  US-  -  US-  US-  -  US-  US-  -  US-  US-  -  US-  US-  -  US-  US-  -  US-  US-  -  US-  US-  -  /
5      nX4$ )Nr“   r  r3   r   r   rH   )r!   r-   r.   r  )r0   Úx1Úx2r  s       r%   Útwo_features_degree3r'  �  sì   € ä
�	Š	�!‹×Ñ˜VÓ$€AØ	
Š1ˆbˆqˆbˆ5‰€BØ	
Š1ˆa‰bˆ5‰€BÜ
�	Š	à�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰Mð	
ó	€Að ˆ4€Kr(   )r   r3   r   r•   )r3   r   r•   ©r   r   )r   rH   r•   r   )rH   r•   r   )r   rH   r•   r   r“   é   r’   é	   ©rH   rH   )r   r“   r)  r’   r*  )r“   r)  r’   r*  c                 óF  • U u  pgUb  U" U5      n[        XUS9R                  U5      nUR                  U5      n	Ub  U	R                  5       n	[	        X—SS2U4   5        UR
                  S:”  a3  UR                  R                  UR
                  UR                  4:X  d   egg)z5Test PolynomialFeatures on 2 features up to degree 3.Nr  r   r  )
r'  rI   rN   r  r   r  r0   r  r!  r"  s
             r%   Ú%test_polynomial_features_two_featuresr-  ¦  s£   € ðF  �D€AØÑÙ˜‹NˆÜ	ØÐCSñ
ç	�cˆ!ƒfð ð �,‰,�q‹/€CØÑØ�k‰k‹mˆÜ�Cš1˜g˜:™Ô'Ø	×Ñ˜qÓ Ø�z‰z×Ñ B×$9Ñ$9¸2×;LÑ;LÐ#MÓMÐMÑMð !r(   c                  óø  • [         R                  " S5      R                  SS5      n [        SSS9R	                  U 5      nUR                  5       n[        / SQU5        [        U5      UR                  U 5      R                  S   :X  d   e[        SS	S9R	                  U 5      nUR                  / S
Q5      n[        / SQU5        [        U5      UR                  U 5      R                  S   :X  d   e[        SS	S9R	                  U 5      nUR                  / S
Q5      n[        / SQU5        [        U5      UR                  U 5      R                  S   :X  d   e[        SSSS9R	                  U 5      nUR                  / S
Q5      n[        SS/U5        [        U5      UR                  U 5      R                  S   :X  d   e[        SSS9R	                  U 5      nUR                  / SQ5      n[        / SQU5        g )Né   r   rH   r   T©rI   rN   )
Ú1Úx0r%  r&  zx0^2zx0 x1zx0 x2zx1^2zx1 x2zx2^2r3   F)r$   rY   rþ   )r$   rY   rþ   úa^2úa búa cúb^2úb cúc^2úa^3úa^2 búa^2 cúa b^2úa b cúa c^2úb^3úb^2 cúb c^2úc^3r  )r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  r+  r  r1  r=  )úF40Dõ   â˜®õ   ×�)r1  rC  rD  rE  )
r!   r-   r.   r   r;   rb   r   ri   rk   rl   )r0   Úpolyrd   s      r%   Útest_polynomial_feature_namesrG  ×  sÕ  € Ü
�	Š	�"‹×Ñ˜b !Ó$€AÜ Q°TÑ:×>Ñ>¸qÓA€DØ×.Ñ.Ó0€MÜÚRØôô ˆ}Ó §¡°Ó!2×!8Ñ!8¸Ñ!;Ó;Ð;Ð;ä Q°UÑ;×?Ñ?ÀÓB€DØ×.Ñ.ªÓ?€MÜò	
ð* 	ô-ô0 ˆ}Ó §¡°Ó!2×!8Ñ!8¸Ñ!;Ó;Ð;Ð;ä V¸%Ñ@×DÑDÀQÓG€DØ×.Ñ.ªÓ?€MÜò	
ð$ 	ô'ô* ˆ}Ó §¡°Ó!2×!8Ñ!8¸Ñ!;Ó;Ð;Ð;äØ D¸4ñç	�cˆ!ƒfð 	ð ×.Ñ.ªÓ?€MÜ˜˜W�~ }Ô5Üˆ}Ó §¡°Ó!2×!8Ñ!8¸Ñ!;Ó;Ð;Ð;ô  Q°TÑ:×>Ñ>¸qÓA€DØ×.Ñ.Ò/QÓR€MÜÒ>ÀÕNr(   )ÚdegrN   r  ró   Úcsc_containerc                 óÒ  • [         R                  R                  U5      nUR                  SSS5      nU" U5      n[	        XUS9n	U	R                  UR                  U5      5      n
U	R                  UR                  U5      5      n[        R                  " U
5      (       a  U
R                  S:X  d   eU
R                  UR                  :X  d   e[        U
R                  5       U5        g )Nr   r   ©rr   r   ©rN   r  Úcsc©r!   rÕ   rÖ   Úrandintr   r/   Úastyper   râ   rã   ró   r   rä   )rH  rN   r  ró   rI  rØ   rÙ   r0   ÚX_cscr   ÚXt_cscÚXt_denses               r%   Útest_polynomial_features_csc_XrT  #  s¿   € ô" �)‰)×
Ñ
Ð 2Ó
3€CØ�‰�A�q˜(Ó#€AÙ˜!Ó€Eä
ØÐ9Iñ€Cð ×Ñ˜uŸ|™|¨EÓ2Ó3€FØ× Ñ  §¡¨%£Ó1€Hä�?Š?˜6×"Ñ" v§}¡}¸Ó'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ó)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r(   Úcsr_containerc                 óÐ  • [         R                  R                  U5      nUR                  SSS5      nU" U5      n[	        XUS9n	U	R                  UR                  U5      5      n
U	R                  UR                  USS95      n[        R                  " U
5      (       a  U
R                  S:X  d   eU
R                  UR                  :X  d   e[        U
R                  5       U5        g )Nr   r   rK  rL  F)rø   rá   rN  )rH  rN   r  ró   rU  rØ   rÙ   r0   ÚX_csrr   ÚXt_csrrS  s               r%   Útest_polynomial_features_csr_XrY  C  sÄ   € ô �)‰)×
Ñ
Ð 2Ó
3€CØ�‰�A�q˜(Ó#€AÙ˜!Ó€Eä
ØÐ9Iñ€Cð ×Ñ˜uŸ|™|¨EÓ2Ó3€FØ× Ñ  §¡¨%°e Ð!<Ó=€Hä�?Š?˜6×"Ñ" v§}¡}¸Ó'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ó)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r(   Ú
n_features)r3   r•   r   zmin_degree, max_degree))r   r3   )r   r   )r3   rH   )r   r•   )rH   r•   r  c                 óö   • U" S/S/U S-
  /445      n[        UUUS9nUR                  U5        UR                  n[         R                  " U SUUUS9n	U[	        U	 V
s/ s H  n
SPM     sn
5      :X  d   egs  sn
f )z7
Test that n_output_features_ is calculated correctly.
r3   r   )rI   r  rN   ©rZ  Ú
min_degreeÚ
max_degreer  rN   N)r   r;   r  Ú_combinationsrw   )rZ  r]  r^  r  rN   rU  rž   r   Ú
num_combosÚcombosrJ   s              r%   Útest_num_combinationsrb  a  s”   € ñ 	˜�s˜a˜S :°¡>Ð"2Ð3Ð4Ó5€AÜ
ØØ)Ø!ñ€Cð
 ‡G�GˆA„JØ×'Ñ'€Jä×-Ò-ØØØØ)Ø!ñ€Fð œ©Ó0ª A›a©Ñ0Ó1Ó1Ð1Ñ1ùÒ0s   ÁA6
c                 ó   • U" [        SSUS95      nUR                  5       n[        XUS9nUR                  UR	                  U5      5      n	UR                  UR	                  U5      5      n
[
        R                  " U	5      (       a  U	R                  S:X  d   eU	R                  U
R                  :X  d   e[        U	R                  5       U
5        g )N©éè  r   ç      à?©ÚdensityÚrandom_staterL  rá   )
r   rä   r   r/   rP  r   râ   rã   ró   r   )rH  rN   r  ró   rU  rØ   rW  r0   r   rX  rS  s              r%   Ú%test_polynomial_features_csr_X_floatsrj  �  s²   € ñ Ü˜Z°ÐCUÑVó€Eð 	�‰‹€Aä
ØÐ9Iñ€Cð ×Ñ˜uŸ|™|¨EÓ2Ó3€FØ× Ñ  §¡¨%£Ó1€Hä�?Š?˜6×"Ñ" v§}¡}¸Ó'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ó)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r(   )Úzero_row_indexrH  r  ))r   r   T)r3   r   T©r   r   T)r   rH   T)r3   rH   T)r   rH   T)r   r   F)r3   r   F©r   r   F)r   rH   F)r3   rH   F)r   rH   Fc                 óv  • U" [        SSUS95      nSXPS S 24'   UR                  5       n[        USUS9nUR                  U5      nUR                  U5      n	[        R
                  " U5      (       a  UR                  S:X  d   eUR                  U	R                  :X  d   e[        UR                  5       U	5        g )N)rH   r   r«   rg  rª   FrL  rá   ©	r   rä   r   r/   r   râ   rã   ró   r   )
rk  rH  r  rU  rØ   rW  r0   r   rX  rS  s
             r%   Ú'test_polynomial_features_csr_X_zero_rowrp  ž  s«   € ñ* Ü˜W¨cÐ@RÑSó€Eð  #€Eš!Ð
ÑØ�‰‹€Aä
˜S¨uÐGWÑ
X€CØ×Ñ˜uÓ%€FØ× Ñ  Ó#€Hä�?Š?˜6×"Ñ" v§}¡}¸Ó'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ó)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r(   ))TTr}   r~   )FFc                 ód  • U" [        SSUS95      nUR                  5       n[        SXS9nUR                  U5      nUR                  U5      n[        R
                  " U5      (       a  UR                  S:X  d   eUR                  UR                  :X  d   e[        UR                  5       U5        g )Nrd  rf  rg  r•   rL  rá   ro  )	rN   r  rU  rØ   rW  r0   r   rX  rS  s	            r%   Ú'test_polynomial_features_csr_X_degree_4rr  Ä  s    € ñ Ü˜Z°ÐCUÑVó€Eð 	�‰‹€Aä
Ø	˜ñ€Cð ×Ñ˜uÓ%€FØ× Ñ  Ó#€Hä�?Š?˜6×"Ñ" v§}¡}¸Ó'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ó)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r(   )rH  Údimr  )
)r   r3   Trl  )rH   r3   T)rH   r   T)rH   rH   T)r   r3   Frm  )rH   r3   F)rH   r   F)rH   rH   Fc                 óf  • U" [        SU4SUS95      nUR                  5       n[        XS9nUR                  U5      nUR                  U5      n	[        R
                  " U5      (       a  UR                  S:X  d   eUR                  U	R                  :X  d   e[        UR                  5       U	5        g )Nre  rf  rg  )r  rá   ro  )
rH  rs  r  rU  rØ   rW  r0   r   rX  rS  s
             r%   Ú(test_polynomial_features_csr_X_dim_edgesru  Ü  s�   € ñ& Ü˜d C˜[°#ÐDVÑWó€Eð 	�‰‹€Aä
˜SÑ
D€CØ×Ñ˜uÓ%€FØ× Ñ  Ó#€Hä�?Š?˜6×"Ñ" v§}¡}¸Ó'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ó)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r(   c           
      óœ  ^ • U 4S jnSnSn[         R                  n[         R                  " SS[         R                  S9n[         R                  " US-
  US-
  US-
  US-
  /5      n[         R                  " US-
  US-
  US-
  US-
  /[         R                  S9n	U" XxU	44XE4US9n
[        T USS	9nUR                  US
SUR                  UR                  S9nU[         R                  " [         R                  5      R                  :”  a6  Sn[        R                  " [        US9   UR                  U
5        SSS5        gUR!                  U
5      nUR#                  5       u  nnXQ-   nU" XY[%        T (       + 5         U	S   5      U-   nU(       a	  S/US-
  -  O/ nU(       a	  S
/US-
  -  O/ n['        S5       GH  nUSU-     nUSU-  S-      nU	SU-     nU	SU-  S-      nU(       a"  UR)                  S5        UR)                  S
5        UR+                  UU/5        UR+                  U[%        U5      -   U[%        U5      -   /5        T (       dT  UR+                  UU-  UU-  UU-  /5        UR+                  U" UUU5      U-   U" UUU5      U-   U" UUU5      U-   /5        Mì  UR+                  UU-  /5        UR)                  U" UUU5      U-   5        GM      [%        U5      S-   S[%        T (       + 5      -  -   nUR,                  US-   :X  d   eUR.                  U:X  d   eUR0                  UUS-   4:X  d   eUR2                  R.                  UR4                  R.                  s=:X  a  [         R                  :X  d   e   eUR4                  R                  5       [         R                  " [         R6                  5      R                  :”  d   eU(       a  [9        ['        US-
  5      5      O/ nUR+                  US-
  /U-  US-
  /U-  -   5        [;        UR<                  U5        [?        UU5        [?        UU5        g! , (       d  f       g= f)a˜  Check the automatic index dtype promotion to `np.int64` when needed.

This ensures that sufficiently large input configurations get
properly promoted to use `np.int64` for index and indptr representation
while preserving data integrity. Non-regression test for gh-16803.

Note that this is only possible for Python runtimes with a 64 bit address
space. On 32 bit platforms, a `ValueError` is raised instead.
c                 ój   >• T(       a  X-  US-  SU-  -   S-  -
  S-
  U-   $ X-  US-  U-   S-  -
  U-   $ )Nr   rH   r3   r7   )rÇ   ÚiÚjr  s      €r%   Údegree_2_calcÚRtest_csr_polynomial_expansion_index_overflow_non_regression.<locals>.degree_2_calc  sL   ø€ ÞØ‘5˜A˜q™D 1 q¡5™L¨QÑ.Ñ.°Ñ2°QÑ6Ð6à‘5˜A˜q™D 1™H¨™?Ñ*¨QÑ.Ð.r(   é   iÁÔ r3   r   rò   r   )rl   ró   ©r  rN   rI   r   r\  útThe output that would result from the current configuration would have \d* features which is too large to be indexedr5   NrH   ) r!   Úfloat32r-   Úint64r—   r   Ú_num_combinationsr  rN   ÚiinfoÚintpr¿   r8   r9   r:   r;   r/   ÚnonzeroÚintrÁ   ÚappendÚextendr  ró   rl   Úindptrr   Úint32Úlistr   Údatar   )r  rN   rU  rz  Ú	n_samplesrZ  Ú
data_dtyper‹  ÚrowÚcolr0   ÚpfÚnum_combinationsrÍ   rm   Úrow_nonzeroÚcol_nonzeroÚn_degree_1_features_outÚmax_degree_2_idxÚdata_targetÚcol_nonzero_targetrx  rž   r�   Úx_idxÚy_idxÚnnz_per_rowÚrow_nonzero_targets   `                           r%   Ú;test_csr_polynomial_expansion_index_overflow_non_regressionrœ  ý  sG  ø€ õ /ð €IØ€JÜ—‘€JÜ�9Š9�Q˜¤§¡Ñ*€DÜ
�(Š(�I ‘M 9¨q¡=°)¸a±-ÀÈQÁÐOÓ
P€Cô �(Š(Ø	�a‰˜ a™¨°a©¸Àa¹ÐHÔPR×PXÑPXñ€Cñ 	Ø	�SˆzÐØÐ%Øñ	€Aô
 
Ø)¸ÈQñ
€Bð ×+Ñ+ØØØØ×,Ñ,Ø—_‘_ð ,ð Ðð œ"Ÿ(š(¤2§7¡7Ó+×/Ñ/Ó/ð>ð 	ô �]Š]œ:¨SÓ1Ø�F‰F�1ŒI÷ 2àØ×Ñ˜qÓ!€GØ&Ÿ™Ó0Ñ€K�Ø(Ñ7Ðá�j¤cÐ.>Ô*>Ó&?Ñ"@À#ÀaÁ&ÓIØ
!ñ	"ð ö ,8�1�#˜ Q™Ò'¸R€KÞ2>˜!˜ 	¨A¡Ò.ÀBÐä�1�XˆØ��Q‘‰KˆØ��Q‘˜‘‰OˆØ�A˜‘E‘
ˆØ�A˜‘E˜A‘I‘ˆÞØ×Ñ˜qÔ!Ø×%Ñ% aÔ(Ø×Ñ˜A˜q˜6Ô"Ø×!Ñ!Ø”S˜Ó&Ñ&¨´°LÓ0AÑ(AÐBô	
ö  Ø×Ñ  A¡ q¨1¡u¨a°!©eÐ4Ô5Ø×%Ñ%á! *¨e°UÓ;Ð>UÑUÙ! *¨e°UÓ;Ð>UÑUÙ! *¨e°UÓ;Ð>UÑUðöð ×Ñ  A¡˜wÔ'Ø×%Ñ%Ù˜j¨%°Ó7Ð:QÑQ÷ñ/ ô6 �lÓ# aÑ'¨!¬cÐ6FÔ2FÓ.GÑ*GÑG€Kà× Ñ Ð$4°qÑ$8Ó8Ð8Ð8Ø�=‰=˜JÓ&Ð&Ð&Ø�=‰=˜YÐ(8¸1Ñ(<Ð=Ó=Ð=Ð=Ø�>‰>×Ñ 7§?¡?×#8Ñ#8ÕD¼B¿H¹HÓDÐDÑDÐDÐDà�?‰?×ÑÓ ¤2§8¢8¬B¯H©HÓ#5×#9Ñ#9Ó9Ð9Ð9æ7Cœœe I°¡MÓ2Ô3ÈÐØ×ÑØ	�Q‰ˆ˜+Ñ%¨°Q©¨¸+Ñ(EÑEôô �G—L‘L +Ô.Ü�{Ð$6Ô7Ü�{Ð$6Õ7÷w 2Ô1àús   Ä$P=Ð=
Qzdegree, n_features)r   éÿÿ  )rH   i(	  )rH   r�  c                 ó^  • S/nUS-
  [         R                  " [         R                  5      R                  ::  a  [         R                  O[         R                  n[         R
                  " S/US9n[         R
                  " US-
  /US9nUS-
  [        U5      -   /n	U	R                  XS-   -  S-  U	S   -   5        U	R                  XS-   -  US-   -  S-  U	S   -   5        U" XWU445      n
[        X#U S9nUR                  USU UR                  UR                  S9nU[         R                  " [         R                  5      R                  :”  a6  S	n[        R                  " [        US
9   UR!                  U
5        SSS5        gUR#                  U
5      nU[         R                  " [         R                  5      R                  :”  a  [         R                  O[         R                  nSU S-
  [        U(       + 5      -  -   n[        U5      U-   nUR$                  U
R$                  :X  d   eUR&                  SUR(                  4:X  d   eUR*                  R$                  UR,                  R$                  s=:X  a  U:X  d   e   eUR.                  U:X  d   eU(       a  US   [        R0                  " S5      :X  d   e[3        U5       H'  nUSU	U   4   [        R0                  " S5      :X  a  M'   e   X!-  nU S:X  a  USU-   -  nUR(                  X�S-
     S-   U-
  :X  d   eg! , (       d  f       g= f)zŽTests known edge-cases to the dtype promotion strategy and custom
Cython code, including a current bug in the upstream
`scipy.sparse.hstack`.
r«   r3   r   rò   r   r“   r}  r\  r~  r5   N©r   r   rH   )r!   r‚  r‰  r¿   r€  r—   r…  r†  r   r�  r  rN   rƒ  r8   r9   r:   r;   r/   ró   rl   r  rˆ  r   ÚnnzÚapproxrÁ   )rI   rZ  r  rN   rU  r‹  Úindices_dtyperŽ  r�  Úexpected_indicesr0   r�  r‘  rÍ   rm   Úexpected_dtypeÚnon_bias_termsÚexpected_nnzÚidxÚoffsets                       r%   Ú,test_csr_polynomial_expansion_index_overflowr©  r  sñ  € ð4 ˆ5€Dà *¨Q¡´"·(²(¼2¿8¹8Ó2D×2HÑ2HÓ H”B—H’HÌbÏhÉh€MÜ
�(Š(�A�3˜mÑ
,€CÜ
�(Š(�J ‘NÐ#¨=Ñ
9€Cð 	�Q‰œ˜\Ó*Ñ*ðÐð ×Ñ˜J°q©.Ñ9¸QÑ>ÐAQÐRSÑATÑTÔUà×ÑØ 1‘nÑ%¨°a©Ñ8¸AÑ=Ð@PÐQRÑ@SÑSôñ 	�t 3˜ZÐ(Ó)€AÜ	Ø)ÈVñ
€Bð ×+Ñ+ØØØØ×,Ñ,Ø—_‘_ð ,ð Ðð œ"Ÿ(š(¤2§7¡7Ó+×/Ñ/Ó/ð>ð 	ô �]Š]œ:¨SÓ1Ø�F‰F�1ŒI÷ 2àà×Ñ˜qÓ!€Gà!1´B·H²H¼R¿X¹XÓ4F×4JÑ4JÓ!J”R—X’XÔPR×PXÑPX€Nà˜& 1™*¬Ð0@Ô,@Ó(AÑAÑA€NÜ�|Ó$ ~Ñ5€LØ�=‰=˜AŸG™GÓ#Ð#Ð#Ø�=‰=˜Q × 5Ñ 5Ð6Ó6Ð6Ð6Ø�>‰>×Ñ 7§?¡?×#8Ñ#8ÕJ¸NÓJÐJÑJÐJÐJØ�;‰;˜,Ó&Ð&Ð&æØ�t‰}¤§¢¨cÓ 2Ó2Ð2Ð2Ü�^Ö$ˆØ�qÐ*¨3Ñ/Ð/Ñ0´F·M²MÀ#Ó4FÕFÐFÐFñ %ð Ñ*€FØ�ƒ{Ø�!�j‘.Ñ ˆØ× Ñ Ð$4¸a±ZÑ$@À1Ñ$DÀvÑ$MÓMÐMÑM÷/ 2Ô1àús   Å'LÌ
L,c                 ó¼  • [         R                  " [         R                  5      R                  S-  nS/nS/nUS-
  /nU" XEU445      n[	        XSS9nSn	[
        R                  " [        U	S9   UR                  U5        S S S 5        [
        R                  " [        U	S9   UR                  U5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)	Nr   r«   r   r3   r(  r}  r~  r5   )
r!   r‚  r€  r¿   r   r8   r9   r:   r;   r/   )
r  rN   rU  rZ  r‹  rŽ  r�  r0   r�  rÍ   s
             r%   Ú0test_csr_polynomial_expansion_too_large_to_indexr«  Ê  s¹   € ô —’œ"Ÿ(™(Ó#×'Ñ'¨1Ñ,€JØˆ5€DØˆ#€CØ˜‰>Ð
€CÙ�t 3˜ZÐ(Ó)€AÜ	Ø)ÈVñ
€Bð	6ð ô 
�Š”z¨Ó	-Ø
�‰ˆqŒ	÷ 
.ä	�Š”z¨Ó	-Ø
×Ñ˜Ô÷ 
.Ð	-÷ 
.Õ	-úç	-Õ	-ús   Á.B<Â!CÂ<
C
Ã
CÚsparse_containerc                 óz  • [         R                  " S5      n[        SSS9nSn[        R                  " [
        US9   UR                  U5        SSS5        [        SSS9nS	n[        R                  " [
        US9   UR                  U5        SSS5        X" U5      4 Hx  n[        SS
S9nUR                  U5      n[        R                  " U5      (       a  UR                  5       n[        U[         R                  " UR                  S   S45      5        Mz     g! , (       d  f       NÓ= f! , (       d  f       N¥= f)zŒCheck that PolynomialFeatures raises error when degree=0 and include_bias=False,
and output a single constant column when include_bias=True
)r   r   r   Fr0  zWSetting degree to zero and include_bias to False would result in an empty output array.r5   NrŸ  zoSetting both min_degree and max_degree to zero and include_bias to False would result in an empty output array.Tr3   )r!   Úonesr   r8   r9   r:   r/   r   râ   rä   r   rl   )r¬  r0   rF  r>   Ú_XÚoutputs         r%   Ú1test_polynomial_features_behaviour_on_zero_degreer±  â  s  € ô
 	�Š�Ó€AÜ Q°UÑ;€Dð	"ð ô 
�Š”z¨Ó	1Ø×Ñ˜1Ô÷ 
2ô  V¸%Ñ@€Dð	8ð ô 
�Š”z¨Ó	1Ø×Ñ˜1Ô÷ 
2ð Ð" 1Ó%Ó&ˆÜ!¨¸Ñ>ˆØ×#Ñ# BÓ'ˆä�?Š?˜6×"Ñ"Ø—^‘^Ó%ˆFÜ˜6¤2§7¢7¨A¯G©G°A©J¸¨?Ó#;Ö<ò '÷ 
2Õ	1ú÷ 
2Õ	1ús   ¼DÁ;D,Ä
D)Ä,
D:c                  ó¦   • [         R                  S:X  d(  [         R                  S::  a  [         R                  S:w  a  Sn OSn [        5       U :X  d   eg )NÚwin32ì        Ú
emscriptenr’   é   )ÚsysÚplatformÚmaxsizer   )Úexpected_sizes    r%   Útest_sizeof_LARGEST_INT_tr»    sB   € ô ‡|�|�wÓÜ�‰�uÓ¤§¡°Ó!=à‰àˆä$Ó&¨-Ó7Ð7Ñ7r(   r³  zyOn Windows, scikit-learn is typically compiled with MSVC that does not support int128 arithmetic (at the time of writing))ÚreasonÚrunc                 ó¼  • [        [        R                  " [        R                  5      R                  S-  S-   5      nS/nS/nUS-
  /nUS-
  /nUR                  [        XS-   -  S-  US   -   5      5        UR                  [        XS-   -  US-   -  S-  US   -   5      5        U " X#U445      n[        SSSS	9n[        R                  S
::  a6  Sn[        R                  " [        US9   UR                  U5        S S S 5        g UR                  U5      n	[        S5       H&  n
U	SXZ   4   [        R                  " S5      :X  a  M&   e   g ! , (       d  f       g = f)NgUUUUUUÕ?rH   r«   r   r3   r   r“   Fr}  r´  r~  r5   )r…  r!   r‚  r€  r¿   r†  r   r·  r¹  r8   r9   r:   r/   rÁ   r¡  )rU  rZ  r‹  rŽ  r�  r£  r0   r�  rÍ   rm   r§  s              r%   Ú*test_csr_polynomial_expansion_windows_failr¿    si  € ô ”R—X’XœbŸh™hÓ'×+Ñ+°Ñ6¸Ñ:Ó;€JØˆ5€DØˆ#€CØ˜‰>Ð
€Cð 	�Q‰ðÐð ×ÑÜˆJ q™.Ñ)¨QÑ.Ð1AÀ!Ñ1DÑDÓEôð ×ÑÜˆJ q™.Ñ)¨Z¸!©^Ñ<ÀÑAÐDTÐUVÑDWÑWÓXôñ 	�t 3˜ZÐ(Ó)€AÜ	¨UÀÈqÑ	Q€BÜ
‡{�{�eÓð:ð 	ô
 �]Š]œ:¨SÓ1Ø×Ñ˜QÔ÷ 2Ð1ð ×"Ñ" 1Ó%ˆÜ˜–8ˆCØ˜1Ð.Ñ3Ð3Ñ4¼¿ºÀcÓ8JÕJÐJÐJò ÷	 2Õ1ús   Ã+EÅ
Ez(array_namespace, device_name, dtype_name)r   r(  rH   r+  c           	      óF  • [        XEU5      u  pxU u  pšU	R                  U5      nUR                  X¸S9n[        SS9   [	        XUS9R                  U5      n[	        XUS9R                  U5      nUR                  U5      nUR                  U5      n[        [        U[        SS9U5        [        U5      S   R                  UR                  :X  d   e[        U5      [        U5      :X  d   eUR                  UR                  :X  d   e SSS5        g! , (       d  f       g= f)	zNTest array API compliance for PolynomialFeatures on 2 features up to degree 3.r   T©Úarray_api_dispatchr  Úcpu)Úxpr   r   N)r   rP  Úasarrayr   r   r;   rk   r   r   r!   r   Ú__name__Úarray_api_deviceró   )r'  rI   rN   r  Úarray_namespaceÚdevice_nameÚ
dtype_namerÄ  r   r0   rJ   ÚX_npÚX_xpÚtf_npÚtf_xpÚout_npÚout_xps                    r%   Ú-test_polynomial_features_array_api_compliancerÑ  =  s  € ô" & oÀJÓO�J€BØ�D€AØ�8‰8�JÓ€DØ�:‰:�dˆ:Ð*€DÜ	¨4Ó	0Ü"ØÐGWñ
ç
‰#ˆd‹)ð 	ô #ØÐGWñ
ç
‰#ˆd‹)ð 	ð —‘ Ó&ˆØ—‘ Ó&ˆÜœ ¬2°eÑ<¸fÔEÜ˜VÓ$ QÑ'×0Ñ0°B·K±KÓ?Ð?Ð?Ü Ó'Ô+;¸DÓ+AÓAÐAÐAØ�|‰|˜tŸz™zÓ)Ð)Ñ)÷ 
1×	0Ö	0ús   ¼CDÄ
D c                 óì  • [        XU5      u  p4[        R                  " S5      R                  S5      R	                  U5      nUR                  XTS9nSn[        SS9   [        SS9R                  U5      n[        U5      (       a  UR                  U5        O3[        R                  " [        US	9   UR                  U5        S
S
S
5        S
S
S
5        g
! , (       d  f       N= f! , (       d  f       g
= f)zgTest that PolynomialFeatures with order='F' raises ValueError on
array API namespaces other than numpy.r“   r  r   zBPolynomialFeatures does not support order='F' for non-numpy arraysTrÁ  r,   r*   r5   N)r   r!   r-   r.   rP  rÅ  r   r   r;   r   rk   r8   r9   r:   )	rÈ  rÉ  rÊ  rÄ  r   r0   rÌ  rÍ   r�  s	            r%   Ú4test_polynomial_features_array_api_raises_on_order_FrÓ  b  s·   € ô & oÀJÓO�J€BÜ
�	Š	�!‹×Ñ˜VÓ$×+Ñ+¨JÓ7€AØ�:‰:�aˆ:Ð'€DØ
N€CÜ	¨4Ó	0Ü cÑ*×.Ñ.¨tÓ4ˆÜ˜r×"Ñ"Ø�L‰L˜Õä—’œz°Ó5Ø—‘˜TÔ"÷ 6÷ 
1Ð	0÷
 6Õ5ú÷ 
1Õ	0ús%   ÁAC%Â1CÃC%Ã
C"	ÃC%Ã%
C3)_rú   r·  Únumpyr!   r8   Únumpy.testingr   r   Úscipyr   Úscipy.interpolater   Úsklearn._configr   Úsklearn.linear_modelr   Úsklearn.pipeliner	   Úsklearn.preprocessingr
   r   r   Ú/sklearn.preprocessing._csr_polynomial_expansionr   Úsklearn.utils._array_apir   r   r   r   r   rÇ  Úsklearn.utils._maskr   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr   r   r   ÚmarkÚparametrizer1   r?   rK   re   rn   rÁ   rz   r�   r—   rš   r§   r³   r½   rÈ   rÎ   rÝ   rî   rð   r	  r  r  Úfixturer  Úslicer#  r'  r-  rG  r…  r  r÷   rT  rY  rb  rj  rp  rr  ru  rœ  Úsqrtr‚  r€  r¿   r©  r«  r±  r»  Úxfailr¸  r¿  rÑ  rÓ  r7   r(   r%   Ú<module>rç     sÊ  ðÛ 	Û 
ã Û ß =Ý Ý %å *Ý 1Ý %÷ñ õ
÷ó õõ *÷ñ ÷
ñ ð ‡�×Ñ˜Ð!3Ð5FÐ GÓHñ	9ó Ið	9ð ‡�×ÑØà
�Q�C�5Ð	ÐNÐOØ
�Q˜�F˜Q ˜FÐ#Ð	$Ð&SÐTØ
�Q�C˜!˜�:Ð	Ð JÐKðóñ+óð+ð ‡�×Ñ˜¨:°zÐ*BÓCñó Dðò#ðL ‡�×ÑØÚ2óð ‡�×Ñ˜ A q 6Ó*ñ2ó +ó	ð
2ð ‡�×Ñ˜¡5¨¨A£;Ó/Ø‡�×Ñ˜¡E¨!¨Q£KÓ0Ø‡�×Ñ˜ 9¨jÐ"9Ó:Ø‡�×Ñ˜¨:°zÐ*BÓCñ>ó Dó ;ó 1ó 0ð>ð2 ‡�×Ñ˜& +Ð.°ÀÐ0NÓOñ3ó Pð3ð, ‡�×ÑÚ;à	�A�t˜RŸXšX¨¨1 v°°1¨v¸¸2°wÐ&?Ó@ÐAàØØ�HŠHÒ*Ó+Ø�HŠH�q˜!�f˜q !˜f q¨" gÐ.Ó/ð		
ð 
�A�t˜RŸXšX¨¨1 v°°1¨v¸¸2°wÀÀBÀÐ&HÓIÐJØ	�Q˜˜bŸhšh¨¨A¨°°A°¸¸B¸Ð'@ÓAÐBàØØ�HŠHÒ*Ó+Ø�HŠH�q˜!�f˜q !˜f q¨" gÐ.Ó/ð		
ðóñ(0ó)ð(0ð ‡�×Ñ˜& +Ð.°ÀÐ0NÓOñIó PðIò>ò$4ð, ‡�×Ñ˜ A q 6Ó*ñ#"ó +ð#"ðL ‡�×Ñ˜& +Ð.°ÀÐ0NÓOØ‡�×Ñ˜¢?Ó3ñ3ó 4ó Pð3òl0ð2 ‡�×Ñ˜¡5¨¨A£;Ó/Ø‡�×Ñ˜ 9¨jÐ"9Ó:Ø‡�×ÑØÒLóð ‡�×Ñ˜¨%°¨Ó7ñ-
ó 8óó ;ó 0ð-
ð` ‡�×Ñ˜ Q¨ GÓ,Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜ A q 6Ó*Ø‡�×ÑØÒLóð ‡�×Ñ˜¨5°$¨-Ó8ñ>ó 9óó +ó 8ó -ð>ð" ‡�×ÑØÒLóð ‡�×Ñ˜¨5°$¨-Ó8ñFó 9óðFðR ‡�×ÑØÒLóð ‡�×Ñ˜¨5°$¨-Ó8ñEó 9óðEð, ‡�×ÑØà
�GÐ	ÐGÐHØ
�HÐ	ÐHÐIØ
�FÐ	ÐFÐGØ
�IÐ	Ð JÐKð	óñ,óð,ð ‡‚Óñó ðð ‡�×ÑØ5à	
ˆD�%™˜t TÓ*Ð+Ø	
ˆE�5™%  4›.Ð)Ø	
ˆD�$˜˜A˜ÐØ	
ˆE�4˜!˜ÐØ	��ušiÐ(Ø	�˜  1˜vÐ&Ø	��t˜a˜SÐ!Ø	�˜˜bÐ!ð	óð ‡�×Ñ˜¨¨°Ñ(?À.Ñ(PÓQñNó RóðNð. ‡‚Óñó ðð* ‡�×ÑØ5à	
ˆD�%™˜q !›Ð%Ø	
ˆE�5™%  1›+Ð&Ø	
ˆD�$šÐ%Ø	
ˆE�4šÐ#Ø	��ušlÐ+Ø	�˜šyÐ)Ø	��t˜a ˜VÐ$Ø	�˜˜q˜cÐ"Ø	
ˆD�%™˜t TÓ*Ð+Ø	
ˆE�5™%  4›.Ð)Ø	
ˆD�$šÐ%Ø	
ˆE�4šÐ#Ø	��uÒ6Ð7Ø	�˜™u Q¨›~Ð.Ø	��t˜a ˜VÐ$Ø	�˜˜q˜cÐ"Ø	��ušoÐ.Ø	�˜š|Ð,Ø	��t˜a˜SÐ!Ø	�˜˜bÐ!ð)óð2 ‡�×Ñ˜¨¨°Ñ(?À.Ñ(PÓQñNó Ró3ð4Nò.IOðX ‡�×ÑÚ8à	
ˆD�%˜ÐØ	
ˆD�%˜ÐØ	
ˆD�%˜Ÿ™Ð$Ø	
ˆD�%˜Ÿ™Ð$Ø	
ˆE�5˜"Ÿ*™*Ð%Ø	
ˆE�4˜Ÿ™Ð$Ø	
ˆE�5˜"Ÿ*™*Ð%Ø	
ˆE�4˜Ÿ™Ð$ð	óð ‡�×Ñ˜¨.Ó9ñ:ó :óð:ð$ ‡�×ÑÚ8à	
ˆD�%˜ÐØ	
ˆD�%˜ÐØ	
ˆD�%˜Ÿ™Ð$Ø	
ˆD�%˜Ÿ™Ð$Ø	
ˆE�5˜"Ÿ*™*Ð%Ø	
ˆE�4˜Ÿ™Ð$ðó
ð ‡�×Ñ˜¨.Ó9ñ:ó :ó
ð:ð$ ‡�×Ñ˜¢yÓ1Ø‡�×ÑØÒFóð ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜¨.Ó9ñ2ó :ó 8ó <óó 2ð2ð2 ‡�×ÑÚ8à	
ˆD�%˜Ÿ™Ð$Ø	
ˆD�%˜Ÿ™Ð$Ø	
ˆE�5˜"Ÿ*™*Ð%Ø	
ˆE�4˜Ÿ™Ð$ð	óð ‡�×Ñ˜¨.Ó9ñ:ó :óð:ð& ‡�×ÑÚ1òóð" ‡�×Ñ˜¨.Ó9ñ:ó :ó#ð$:ð( ‡�×ÑØÐ'Ð(Ú@óð ‡�×Ñ˜¨.Ó9ñ:ó :ó	ð
:ð& ‡�×ÑÚ&òóð ‡�×Ñ˜¨.Ó9ñ:ó :óð :ð" ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜¨.Ó9ño8ó :ó 8ó <ðo8ðd ‡�×ÑØð 	Øð 
‰C�—’˜Ÿš §¡Ó*×.Ñ.Ó/°!Ñ3Ó4Ð5Øð 
‰C�—’˜Ÿš §¡Ó*×.Ñ.Ó/Ó0Ð1ðóð  ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜¨.Ó9ñBNó :ó 8ó <ó!ð&BNðJ ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜¨.Ó9ñó :ó 8ó <ðð* ‡�×ÑÐ+¨^¸nÑ-LÓMñ=ó Nð=ò<8ð ‡�×ÑØ‡L�L�GÑð	6ð 	ð ð ð ‡�×Ñ˜¨.Ó9ñ"Kó :óð"KðJ ‡�×ÑØ.Ù-Ó/óð ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜Ò#9Ó:ñ*ó ;ó 8ó <ó	ð*ð< ‡�×ÑØ.Ù-Ó/óñ#ó	ñ#r(   