§
    §éUgª—  ã                   óˆ  — d Z ddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZ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' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0 ej1         2                    d¦  «        Z3d\  Z4Z5e3 6                    e4e5¦  «        Z7e3 8                    dde4¬¦  «        Z9e3 8                    dde4¬¦  «        Z:e3 6                    e4¦  «        Z;e3 6                    e4¦  «        Z< ej=        d¬¦  «        d„ ¦   «         Z> G d„ de¦  «        Z?d„ Z@ejA         B                    d e e¦   «         ¬¦  «         e e¦   «         ¬¦  «         e e¦   «         ¬¦  «         e e¦   «          e¦   «         ¬¦  «         e e¦   «          e¦   «         ¬¦  «        g¦  «        d„ ¦   «         ZCejA         B                    dg d¢¦  «        d„ ¦   «         ZDejA         B                    dg d¢¦  «        d „ ¦   «         ZEd!„ ZFd"„ ZGd#„ ZHd$„ ZIejA         B                    d%e!¦  «        ejA         B                    d&dd&g g¦  «        d'„ ¦   «         ¦   «         ZJd(„ ZKd)„ ZLd*„ ZMd+„ ZNd,„ ZOd-„ ZPd.„ ZQd/„ ZRd0„ ZSd1„ ZTd2„ ZUd3„ ZVd4„ ZWejA         B                    d5 e#d6d7¬8¦  «         X                    d9d:¬;¦  «        d<f e)d6¬=¦  «        d>f e*d6¬=¦  «         Y                     e¦   «          e+¦   «          Y                    d?d?¬@¦  «        ¬A¦  «        dBfg¦  «        dC„ ¦   «         ZZejA         B                    dD e+¦   «         dEd7dFd@œe[dGf e+¦   «         dEdFd7d@œe[dHf e*d6¬=¦  «        dIdJ e*d6¬=¦  «        ie[dKf e¦   «         dLdFdie\dMfg¦  «        dN„ ¦   «         Z]dO„ Z^dP„ Z_dQ„ Z`dR„ ZadS„ ZbdT„ ZcdU„ ZddV„ ZedW„ ZfdX„ ZgdY„ ZhdZ„ ZidS )[z 
Metadata Routing Utility Tests
é    N©Úconfig_context)ÚBaseEstimatorÚclone)ÚUnsetMetadataPassedError)ÚLinearRegression)ÚPipeline)ÚConsumingClassifierÚConsumingRegressorÚConsumingTransformerÚMetaRegressorÚMetaTransformerÚNonConsumingClassifierÚWeightedMetaClassifierÚWeightedMetaRegressorÚ	_RegistryÚassert_request_equalÚassert_request_is_emptyÚcheck_recorded_metadata)Úmetadata_routing)ÚCOMPOSITE_METHODSÚMETHODSÚSIMPLE_METHODSÚMethodMetadataRequestÚ
MethodPairÚ_MetadataRequesterÚrequest_is_aliasÚrequest_is_valid)ÚMetadataRequestÚMetadataRouterÚMethodMappingÚ_RoutingNotSupportedMixinÚget_routing_for_objectÚprocess_routing)Úcheck_is_fittedé*   )éd   é   é   )Úsizeé
   T)Úautousec               #   ód   K  — t          d¬¦  «        5  dV — ddd¦  «         dS # 1 swxY w Y   dS )zEnable SLEP006 for all tests.T©Úenable_metadata_routingNr   © ó    úb/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/tests/test_metadata_routing.pyÚenable_slep006r3   A   s†   è è € õ 
°Ð	5Ñ	5Ô	5ð ð Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   “%¥)¬)c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚSimplePipelinezÓA very simple pipeline, assuming the last step is always a predictor.

    Parameters
    ----------
    steps : iterable of objects
        An iterable of transformers with the last step being a predictor.
    c                 ó   — || _         d S ©N)Ústeps)Úselfr8   s     r2   Ú__init__zSimplePipeline.__init__Q   s   € ØˆŒ
ˆ
ˆ
r1   c           	      óþ  — g | _         t          | dfi |¤Ž}|}t          | j        d d…         ¦  «        D ]\  }} t	          |¦  «        j        ||fi |                     d|› �¦  «        j        ¤Ž}| j                              |¦  «          |j        |fi |                     d|› �¦  «        j        ¤Ž}Œ€| j                               t	          | j        d         ¦  «        j        ||fi |j	        j        ¤Ž¦  «         | S )NÚfitéÿÿÿÿÚstep_)
Ústeps_r$   Ú	enumerater8   r   r<   ÚgetÚappendÚ	transformÚ	predictor)	r9   ÚXÚyÚ
fit_paramsÚparamsÚX_transformedÚiÚstepÚtransformers	            r2   r<   zSimplePipeline.fitT   s.  € ØˆŒÝ   uÐ;Ð;°
Ð;Ð;ˆØˆÝ  ¤¨C¨R¨C¤Ñ1Ô1ð 	ð 	‰GˆAˆtØ)�% ™+œ+œ/Ø˜qðð Ø$*§J¢J¨{°q¨{¨{Ñ$;Ô$;Ô$?ðð ˆKð ŒK×Ò˜{Ñ+Ô+Ð+Ø1˜KÔ1Øðð Ø!'§¢¨K°A¨K¨KÑ!8Ô!8Ô!Bðð ˆMˆMð 	Œ×ÒØ%�E�$”*˜R”.Ñ!Ô!Ô% m°QÐOÐO¸&Ô:JÔ:NÐOÐOñ	
ô 	
ð 	
ð ˆr1   c           	      ó  — t          | ¦  «         |}t          | dfi |¤Ž}t          | j        d d…         ¦  «        D ].\  }} |j        |fi |                     d|› �¦  «        j        ¤Ž}Œ/ | j        d         j        |fi |j        j        ¤ŽS )NÚpredictr=   r>   )r%   r$   r@   r?   rC   rA   rN   rD   )r9   rE   Úpredict_paramsrI   rH   rJ   rK   s          r2   rN   zSimplePipeline.predictf   s«   € Ý˜ÑÔÐØˆÝ   yÐCÐC°NÐCÐCˆÝ  ¤¨S¨b¨SÔ!1Ñ2Ô2ð 	Sð 	S‰GˆAˆtØ*˜DœN¨1ÐRÐR°·
²
¸;À1¸;¸;Ñ0GÔ0GÔ0QÐRÐRˆMˆMà&ˆtŒ{˜2ŒÔ& }ÐQÐQ¸Ô8HÔ8PÐQÐQÐQr1   c           
      óð  — t          | j        j        ¬¦  «        }t          | j        d d…         ¦  «        D ]f\  }} |j        d
i d|› �|i¤dt          ¦   «                              dd¬¦  «                             dd¬¦  «                             dd¬¦  «        i¤Ž Œg|                     | j        d         t          ¦   «                              dd¬¦  «                             dd¬¦  «        ¬	¦  «         |S )N©Úownerr=   r>   Úmethod_mappingr<   ©ÚcallerÚcalleerC   rN   )rD   rS   r0   )r    Ú	__class__Ú__name__r@   r8   Úaddr!   )r9   ÚrouterrJ   rK   s       r2   Úget_metadata_routingz#SimplePipeline.get_metadata_routingo   s  € Ý d¤nÔ&=Ð>Ñ>Ô>ˆÝ  ¤¨C¨R¨C¤Ñ1Ô1ð 	ð 	‰GˆAˆtØˆFŒJð ð Ø˜1�;�; Ð%ðð å,™œß’˜E¨%�Ñ0Ô0ß’˜E¨+�Ñ6Ô6ß’˜I¨k�Ñ:Ô:ðð ð ð ð ð 	�
Š
Ø”j ”nÝ(™?œ?ßŠS˜ eˆSÑ,Ô,ßŠS˜	¨)ˆSÑ4Ô4ð	 	ñ 	
ô 	
ð 	
ð ˆr1   N)rX   Ú
__module__Ú__qualname__Ú__doc__r:   r<   rN   r[   r0   r1   r2   r5   r5   H   s]   € € € € € ðð ðð ð ðð ð ð$Rð Rð Rðð ð ð ð r1   r5   c            	      óV  — t          d¬¦  «        } t          | ¦  «         | j                             dd ¬¦  «         t          | ¦  «         | j                             dd¬¦  «         t	          j        t          ¦  «        5  t          | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          | d¬¦  «         | j                             d	d
¬¦  «         t	          j        t          ¦  «        5  t          | d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          | ddg¬¦  «         t          t          d¬¦  «         	                    t          d ¬¦  «        ¦  «                             t          ¦   «         t          ¦   «                              dd¬¦  «        ¬¦  «        ¦  «         d S )NÚtestrQ   Úfoo©ÚparamÚaliasÚbarÚvaluer<   ©ÚexcludeÚcarrotTÚscore©Ú	estimatorrT   ©rl   rS   )r   r   r<   Úadd_requestÚpytestÚraisesÚAssertionErrorrj   r    Úadd_self_requestr   rY   r   r!   )Úrequestss    r2   Útest_assert_request_is_emptyrt   ‚   s  € Ý VÐ,Ñ,Ô,€HÝ˜HÑ%Ô%Ð%à„L×Ò 5°ÐÑ5Ô5Ð5å˜HÑ%Ô%Ð%à„L×Ò 5°ÐÑ8Ô8Ð8Ý	Œ•~Ñ	&Ô	&ð *ð *å Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ
 ˜H¨eÐ4Ñ4Ô4Ð4à„N×Ò X°TÐÑ:Ô:Ð:Ý	Œ•~Ñ	&Ô	&ð 9ð 9å °%Ð8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9õ
 ˜H¨u°gÐ.>Ð?Ñ?Ô?Ð?õ Ý˜VÐ$Ñ$Ô$ß	Ò	Õ/¸$Ð?Ñ?Ô?Ñ	@Ô	@ß	ŠÝ(Ñ*Ô*Ý(™?œ?×.Ò.°eÀEÐ.ÑJÔJð 
ñ 

ô 

ñô ð ð ð s$   Â BÂB Â#B Ã-DÄDÄDrl   )Úregistry)rl   ru   c                 ó\   — |                       t          t          ¦  «         | | j        v sJ ‚dS )z=Check that an estimator puts itself in the registry upon fit.N)r<   rE   rF   ru   rk   s    r2   Ú$test_estimator_puts_self_in_registryrw   ¥   s2   € ð ‡M‚M•!•QÑÔÐØ˜	Ô*Ð*Ð*Ð*Ð*Ð*Ð*r1   zval, res))FF)TF)NF)ú$UNUSED$F)ú$WARN$F©zinvalid-inputF)Ú	valid_argTc                 ó0   — t          | ¦  «        |k    sJ ‚d S r7   )r   ©ÚvalÚress     r2   Útest_request_type_is_aliasr€   µ   ó#   € õ ˜CÑ Ô  CÒ'Ð'Ð'Ð'Ð'Ð'r1   ))FT)TT)NT)rx   T)ry   Trz   )Ú	alias_argFc                 ó0   — t          | ¦  «        |k    sJ ‚d S r7   )r   r}   s     r2   Útest_request_type_is_validr„   Æ   r�   r1   c                  ój  —  G d„ dt           ¦  «        } t           | ¦   «         ¦  «        }|j        j        ddik    sJ ‚t	          t          t          ¦   «         ¦  «        j        j        ¦  «        rJ ‚t          t          ¦   «                              ¦   «         ¦  «         t          t          ¦   «         ¦  «        }|j        j        d d dœk    sJ ‚|j	        j        d d dœk    sJ ‚t          |¦  «         t          t          ¦   «         ¦  «        }|j        j        d d dœk    sJ ‚t          |¦  «         d S )Nc                   ó   — e Zd ZddiZdS )ú+test_default_requests.<locals>.OddEstimatorÚsample_weightTN)rX   r\   r]   Ú$_OddEstimator__metadata_request__fitr0   r1   r2   ÚOddEstimatorr‡   Ø   s   € € € € € ð ˜Tð#
ÐÐÐr1   rŠ   rˆ   T©rˆ   Úmetadata©rŒ   rˆ   )r   r#   r<   rs   Úlenr   r   r[   r   rC   r
   )rŠ   Úodd_requestÚtrs_requestÚest_requests       r2   Útest_default_requestsr’   ×   so  € ð
ð 
ð 
ð 
ð 
•}ñ 
ô 
ð 
õ )¨¨©¬Ñ8Ô8€KØŒ?Ô#¨¸Ð'>Ò>Ð>Ð>Ð>õ Õ)Õ*@Ñ*BÔ*BÑCÔCÔGÔPÑQÔQÐQÐQÐQÝÕ2Ñ4Ô4×IÒIÑKÔKÑLÔLÐLå(Õ)=Ñ)?Ô)?Ñ@Ô@€KØŒ?Ô#ØØð(ð (ò ð ð ð ð Ô Ô)¸$ÐQUÐ-VÐ-VÒVÐVÐVÐVÝ˜KÑ(Ô(Ð(å(Õ)<Ñ)>Ô)>Ñ?Ô?€KØŒ?Ô#ØØð(ð (ò ð ð ð õ ˜KÑ(Ô(Ð(Ð(Ð(r1   c                  ó  —  G d„ dt           ¦  «        }  G d„ d| ¦  «        } G d„ d| ¦  «        }t           |¦   «                              ¦   «         ddd	ii¦  «         t           |¦   «                              ¦   «         ddd	ii¦  «         d
S )zþTest that default requests are correctly overridden regardless of the ASCII order
    of the class names, hence testing small and capital letter class name starts.
    Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/28430
    c                   ó   — e Zd ZddiZdS )ú+test_default_request_override.<locals>.BaseÚgroupsTN)rX   r\   r]   Ú_Base__metadata_request__splitr0   r1   r2   ÚBaser•   û   s   € € € € € Ø%-¨tÐ$4Ð!Ð!Ð!r1   r˜   c                   ó   — e Zd ZddiZdS )ú.test_default_request_override.<locals>.class_1r–   Úsample_domainN)rX   r\   r]   Ú!_class_1__metadata_request__splitr0   r1   r2   Úclass_1rš   þ   ó   € € € € € Ø%-¨Ð$?Ð!Ð!Ð!r1   r�   c                   ó   — e Zd ZddiZdS )ú.test_default_request_override.<locals>.Class_1r–   r›   N)rX   r\   r]   Ú!_Class_1__metadata_request__splitr0   r1   r2   ÚClass_1r      rž   r1   r¢   Úsplitr–   r›   N)r   r   Ú_get_metadata_request)r˜   r�   r¢   s      r2   Útest_default_request_overrider¥   õ   s  € ð5ð 5ð 5ð 5ð 5�}ñ 5ô 5ð 5ð@ð @ð @ð @ð @�$ñ @ô @ð @ð@ð @ð @ð @ð @�$ñ @ô @ð @õ Øˆ‰	Œ	×'Ò'Ñ)Ô)¨G°hÀÐ5PÐ+Qñô ð õ Øˆ‰	Œ	×'Ò'Ñ)Ô)¨G°hÀÐ5PÐ+Qñô ð ð ð r1   c                  ó´   — t          j        t          d¬¦  «        5  t          t	          ¦   «         dt
          ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz Can only route and process input©ÚmatchÚinvalid_method©r–   )ro   rp   Ú	TypeErrorr$   r
   Ú	my_groupsr0   r1   r2   Ú#test_process_routing_invalid_methodr­     s­   € Ý	Œ•yÐ(JÐ	KÑ	KÔ	Kð Sð SÝÕ+Ñ-Ô-Ð/?Í	ÐRÑRÔRÐRðSð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Ss   œ$AÁAÁAc                  óÆ   —  G d„ d¦  «        } t          j        t          d¬¦  «        5  t           | ¦   «         dt          ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó   — e Zd ZdS )ú:test_process_routing_invalid_object.<locals>.InvalidObjectN)rX   r\   r]   r0   r1   r2   ÚInvalidObjectr°     s   € € € € € Øˆr1   r±   z#either implement the routing methodr§   r<   rª   )ro   rp   ÚAttributeErrorr$   r¬   )r±   s    r2   Ú#test_process_routing_invalid_objectr³     sÕ   € ðð ð ð ð ñ ô ð õ 
Œ•~Ð-RÐ	SÑ	SÔ	Sð Bð BÝ˜˜™œ¨µyÐAÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð Bð Bs   © AÁAÁAÚmethodÚdefaultc                 ó,  — i }t          t          ¦   «         dfi |¤Ž}||          }t          |t          ¦  «        sJ ‚t	          |                     ¦   «         ¦  «        t	          t          ¦  «        k    sJ ‚|                     | |¬¦  «        }||k    sJ ‚d S )Nr<   )rµ   )r$   r
   Ú
isinstanceÚdictÚsetÚkeysr   rA   )r´   rµ   Úempty_paramsÚrouted_paramsÚparams_for_methodÚdefault_params_for_methods         r2   Ú2test_process_routing_empty_params_get_with_defaultr¿     sª   € ð €LÝ#Õ$7Ñ$9Ô$9¸5ÐQÐQÀLÐQÐQ€Mð & fÔ-ÐÝÐ'­Ñ.Ô.Ð.Ð.Ð.ÝÐ ×%Ò%Ñ'Ô'Ñ(Ô(­Cµ©L¬LÒ8Ð8Ð8Ð8ð !.× 1Ò 1°&À'Ð 1Ñ JÔ JÐØ$Ð(9Ò9Ð9Ð9Ð9Ð9Ð9r1   c                  ó¼  — t          t          ¦   «         ¬¦  «        } |                      t          t          ¦  «         t          t          ¦   «         ¬¦  «        } |                      t          t          t
          ¬¦  «         t          t          ¦   «         ¬¦  «        } d}t          j        t          t          j        |¦  «        ¬¦  «        5  |                      t          t          t
          ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦   «                              d¬¦  «        ¬¦  «        } |                      t          t          t
          ¬¦  «         t          | j        d¦  «         t          t          ¦   «                              d¬¦  «        ¬¦  «        } |                      t          t          t
          ¬¦  «         t          | j        dt
          ¬¦  «         t          t          ¦   «                              d¬¦  «        ¬¦  «        } |                      t          t          t
          ¬	¦  «         t          | j        dt
          ¬¦  «         d S )
Nrk   ©rˆ   zo[sample_weight] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.fitr§   Fr<   TÚalternative_weight)rÂ   )r   r   r<   rE   rF   Ú
my_weightsr
   ro   rp   Ú
ValueErrorÚreÚescapeÚset_fit_requestr   Ú
estimator_)ÚclfÚerr_messages     r2   Útest_simple_metadata_routingrË   )  s9  € õ !Õ+AÑ+CÔ+CÐ
DÑ
DÔ
D€CØ‡G‚G�A�q�M„M€Mõ !Õ+AÑ+CÔ+CÐ
DÑ
DÔ
D€CØ‡G‚G�A�q¥
€GÑ+Ô+Ð+õ !Õ+>Ñ+@Ô+@Ð
AÑ
AÔ
A€Cð	5ð õ 
Œ•z­¬°;Ñ)?Ô)?Ð	@Ñ	@Ô	@ð 0ð 0Ø�Š••1¥JˆÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0õ !Ý%Ñ'Ô'×7Ò7ÀeÐ7ÑLÔLðñ ô €Cð ‡G‚G�A�q¥
€GÑ+Ô+Ð+Ý˜CœN¨EÑ2Ô2Ð2õ !Ý%Ñ'Ô'×7Ò7ÀdÐ7ÑKÔKðñ ô €Cð ‡G‚G�A�q¥
€GÑ+Ô+Ð+Ý˜CœN¨EÅÐLÑLÔLÐLõ !Ý%Ñ'Ô'×7Ò7Ø.ð 8ñ 
ô 
ðñ ô €Cð
 ‡G‚G�A�q¥Z€GÑ0Ô0Ð0Ý˜CœN¨EÅÐLÑLÔLÐLÐLÐLs   Ã(C?Ã?DÄDc            	      óV  — t          t          t          ¦   «                              dd¬¦  «                             dd¬¦  «        ¬¦  «        t          t          ¦   «                              dd¬¦  «                             d¬¦  «        ¬¦  «                             d	¬¦  «        g¦  «        } d
gdgdg}}}|                      t          t          t          |||¬¦  «         t          | j        d         j        dt          d ¬¦  «         t          | j        d         j        d|d ¬¦  «         t          | j        d
         d|¬¦  «         t          | j        d
         j        d|¬¦  «         |                      t          |¬¦  «         t          | j        d         j        d|d ¬¦  «         d S )NTFr�   r‹   ©rL   Úinner_weightsrÁ   rk   Úouter_weightsé   r)   é   )rŒ   rˆ   rÏ   rÎ   r   r<   rC   )r5   r   r   rÇ   Úset_transform_requestr   r   Úset_predict_requestr<   rE   rF   r¬   r   r?   Útransformer_rÈ   rN   )ÚpipelineÚw1Úw2Úw3s       r2   Útest_nested_routingrÙ   ]  sÉ  € ååÝ0Ñ2Ô2ß ’¨$¸e�ÑDÔDß&Ò&°TÀEÐ&ÑJÔJðñ ô õ
 "Ý,Ñ.Ô.ß ’¨È�ÑOÔOß$Ò$°5Ð$Ñ9Ô9ðñ ô ÷ Šo¨OˆoÑ<Ô<ð	
ñô €Hð ��q�c˜A˜3ˆBˆ€BØ‡L‚LÝ	�1•y°À"ÐTVð ñ ô ð õ ØŒ˜ÔÔ'¨½ÐRVðñ ô ð õ ØŒ˜ÔÔ'¨ÀBÐQUðñ ô ð õ ˜HœO¨AÔ.°ÀRÐHÑHÔHÐHÝ˜HœO¨AÔ.Ô9¸5ÐPRÐSÑSÔSÐSà×Ò•Q bÐÑ)Ô)Ð)ÝØŒ˜ÔÔ'¨ÀBÐQUðñ ô ð ð ð r1   c                  ó  — t          t          t          ¦   «                              dd¬¦  «                             d¬¦  «        ¬¦  «        t          t          ¦   «                              d¬¦  «        ¬¦  «                             d¬¦  «        g¦  «        } dgd	g}}t          j        t          t          j        d
¦  «        ¬¦  «        5  |                      t          t          t          ||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NTFr�   rÁ   rÍ   rk   rÏ   rÐ   r)   zñIn WeightedMetaRegressor, there is a conflict on sample_weight between what is requested for this estimator and what is requested by its children. You can resolve this conflict by using an alias for the child estimator(s) requested metadata.r§   )rŒ   rˆ   rÏ   )r5   r   r   rÇ   rÒ   r   r   ro   rp   rÄ   rÅ   rÆ   r<   rE   rF   r¬   )rÕ   rÖ   r×   s      r2   Útest_nested_routing_conflictrÛ   €  sc  € ååÝ0Ñ2Ô2ß ’¨$¸e�ÑDÔDß&Ò&°TÐ&Ñ:Ô:ðñ ô õ
 "Ý,Ñ.Ô.×>Ò>ÈTÐ>ÑRÔRðñ ô çŠo¨OˆoÑ<Ô<ð		
ñô €Hð ˆS�1�#ˆ€BÝ	ŒÝåŒIð:ñô ð

ñ 

ô 

ð Sð Sð 	�Š•Q�¥I¸RÈrˆÑRÔRÐRðSð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Ss   Ã
*DÄDÄDc                  óØ  — t          t          ¦   «                              d¬¦  «        ¬¦  «        } t          j        t
          t          j        d¦  «        ¬¦  «        5  |                      t          t          ¦  «                             t          t          ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦   «                              d¬¦  «        ¬¦  «        } t          j        t
          t          j        d¦  «        ¬¦  «        5  |                      t          t          ¦  «                             t          t          ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	NTrÁ   rÍ   z4transform got unexpected argument(s) {'other_param'}r§   ©Úother_paramFz6transform got unexpected argument(s) {'sample_weight'})r   r   rÒ   ro   rp   r«   rÅ   rÆ   r<   rE   rF   rC   rÃ   )Útrss    r2   Útest_invalid_metadatarà   �  s»  € å
Ý(Ñ*Ô*×@Ò@ÈtÐ@ÑTÔTðñ ô €Cõ 
ŒÝÝŒyÐOÑPÔPð
ñ 
ô 
ð ;ð ;ð 	�Š••1‰Œ×Ò¥­zÐÑ:Ô:Ð:ð	;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;õ Ý(Ñ*Ô*×@Ò@ÈuÐ@ÑUÔUðñ ô €Cõ 
ŒÝÝŒyÐQÑRÔRð
ñ 
ô 
ð =ð =ð 	�Š••1‰Œ×Ò¥µÐÑ<Ô<Ð<ð	=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s&   ÁA B*Â*B.Â1B.ÄA EÅE#Å&E#c                  óž  —  G d„ dt           ¦  «        }  G d„ dt           ¦  «        }t          j        t          d¬¦  «        5   | ¦   «                              ¦   «          d d d ¦  «         n# 1 swxY w Y   dd d dœd d d	œd
didœ}t           |¦   «                              ¦   «         |¦  «          |¦   «                              d¬¦  «        }dd d dœd d d	œd
didœ}t          |                     ¦   «         |¦  «          |¦   «                              d¬¦  «        }dd d dœd dd	œd
didœ}t          |                     ¦   «         |¦  «         d S )Nc                   ó,   — e Zd ZdddœZddddœZddiZdS )ú<test_get_metadata_routing.<locals>.TestDefaultsBadMethodNameN)rˆ   Úmy_paramT©rˆ   rä   Úmy_other_paramrä   )rX   r\   r]   Ú1_TestDefaultsBadMethodName__metadata_request__fitÚ3_TestDefaultsBadMethodName__metadata_request__scoreÚ:_TestDefaultsBadMethodName__metadata_request__other_methodr0   r1   r2   ÚTestDefaultsBadMethodNamerã   ´  sH   € € € € € à!Øð#
ð #
Ðð
 "ØØ"ð%
ð %
Ð!ð -7¸Ð+=Ð(Ð(Ð(r1   rê   c                   ó,   — e Zd ZdddœZddddœZddiZdS )ú/test_get_metadata_routing.<locals>.TestDefaultsN)rˆ   ræ   Trå   rä   )rX   r\   r]   Ú$_TestDefaults__metadata_request__fitÚ&_TestDefaults__metadata_request__scoreÚ(_TestDefaults__metadata_request__predictr0   r1   r2   ÚTestDefaultsrì   Á  sH   € € € € € à!Ø"ð#
ð #
Ðð
 "ØØ"ð%
ð %
Ð!ð
 (2°4Ð&8Ð#Ð#Ð#r1   rð   z8'MetadataRequest' object has no attribute 'other_method'r§   T)rä   ræ   rˆ   )ræ   rˆ   rä   )rj   r<   rN   rÞ   )rä   rÁ   )r   ro   rp   r²   r[   r   Úset_score_requestrÇ   )rê   rð   ÚexpectedÚests       r2   Útest_get_metadata_routingrô   ³  s>  € ð>ð >ð >ð >ð >Õ$6ñ >ô >ð >ð
9ð 
9ð 
9ð 
9ð 
9Õ)ñ 
9ô 
9ð 
9õ 
ŒÝÐXð
ñ 
ô 
ð ;ð ;ð 	"Ð!Ñ#Ô#×8Ò8Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð Ø"Ø!ð
ð 
ð #Ø!ð
ð 
ð  Ð%ðð €Hõ ˜˜™œ×<Ò<Ñ>Ô>ÀÑIÔIÐIà
ˆ,‰.Œ.×
*Ò
*°MÐ
*Ñ
BÔ
B€Cð &Ø"Ø!ð
ð 
ð #Ø!ð
ð 
ð  Ð%ðð €Hõ ˜×1Ò1Ñ3Ô3°XÑ>Ô>Ð>à
ˆ,‰.Œ.×
(Ò
(°tÐ
(Ñ
<Ô
<€Cð Ø"Ø!ð
ð 
ð #Ø!ð
ð 
ð  Ð%ðð €Hõ ˜×1Ò1Ñ3Ô3°XÑ>Ô>Ð>Ð>Ð>s   ÁA+Á+A/Á2A/c                  ó  — t          ¦   «         }  G d„ dt          ¦  «        }dd i| |<    G d„ dt          ¦  «        }ddi| |<    G d„ dt          ¦  «        }dd i| |<    G d	„ d
t          ¦  «        }i | |<   |                      ¦   «         D ]u\  }}t           |¦   «         ¦  «        j        j        |k    sJ ‚t           |¦   «                              ¦   «         d¬¦  «          |¦   «                              d d ¦  «         Œvd S )Nc                   ó   — e Zd ZddiZd„ ZdS )ú6test_setting_default_requests.<locals>.ExplicitRequestÚpropNc                 ó   — | S r7   r0   ©r9   rE   rF   Úkwargss       r2   r<   z:test_setting_default_requests.<locals>.ExplicitRequest.fit  ó   € ØˆKr1   )rX   r\   r]   Ú'_ExplicitRequest__metadata_request__fitr<   r0   r1   r2   ÚExplicitRequestr÷     s-   € € € € € à#)¨4 .Ðð	ð 	ð 	ð 	ð 	r1   rþ   rø   c                   ó   — e Zd ZddiZdd„ZdS )ú?test_setting_default_requests.<locals>.ExplicitRequestOverwriterø   TNc                 ó   — | S r7   r0   ©r9   rE   rF   rø   rû   s        r2   r<   zCtest_setting_default_requests.<locals>.ExplicitRequestOverwrite.fit  rü   r1   r7   )rX   r\   r]   Ú0_ExplicitRequestOverwrite__metadata_request__fitr<   r0   r1   r2   ÚExplicitRequestOverwriter     s4   € € € € € ð $*¨4 .Ðð	ð 	ð 	ð 	ð 	ð 	r1   r  Tc                   ó   — e Zd Zdd„ZdS )ú6test_setting_default_requests.<locals>.ImplicitRequestNc                 ó   — | S r7   r0   r  s        r2   r<   z:test_setting_default_requests.<locals>.ImplicitRequest.fit  rü   r1   r7   ©rX   r\   r]   r<   r0   r1   r2   ÚImplicitRequestr    s(   € € € € € ð	ð 	ð 	ð 	ð 	ð 	r1   r	  c                   ó(   — e Zd Zdej        iZdd„ZdS )ú=test_setting_default_requests.<locals>.ImplicitRequestRemovalrø   Nc                 ó   — | S r7   r0   r  s        r2   r<   zAtest_setting_default_requests.<locals>.ImplicitRequestRemoval.fit"  rü   r1   r7   )rX   r\   r]   r   ÚUNUSEDÚ._ImplicitRequestRemoval__metadata_request__fitr<   r0   r1   r2   ÚImplicitRequestRemovalr    s9   € € € € € ð $*Ð+;Ô+BÐ"CÐð	ð 	ð 	ð 	ð 	ð 	r1   r  r<   rg   )r¸   r   Úitemsr#   r<   rs   r   r[   )Ú
test_casesrþ   r  r	  r  ÚKlassrs   s          r2   Útest_setting_default_requestsr  ÿ  s�  € å‘”€Jðð ð ð ð �-ñ ô ð ð $*¨4 .€JˆÑðð ð ð ð ¥=ñ ô ð ð -3°D¨>€JÐ'Ñ(ðð ð ð ð �-ñ ô ð ð
 $*¨4 .€JˆÑðð ð ð ð ¥ñ ô ð ð *,€JÐ%Ñ&à%×+Ò+Ñ-Ô-ð  ð  ‰ˆˆxÝ% e e¡g¤gÑ.Ô.Ô2Ô;¸xÒGÐGÐGÐGÝ  ¡¤× <Ò <Ñ >Ô >ÈÐNÑNÔNÐNØˆ‰Œ�Š�D˜$ÑÔÐÐð ð  r1   c                  óÌ   —  G d„ dt           ¦  «        } t          j        t          d¬¦  «        5   | ¦   «                              ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )zFTest that removing a metadata using UNUSED which doesn't exist raises.c                   ó&   — e Zd Zdej        iZd„ ZdS )úFtest_removing_non_existing_param_raises.<locals>.InvalidRequestRemovalrø   c                 ó   — | S r7   r0   rú   s       r2   r<   zJtest_removing_non_existing_param_raises.<locals>.InvalidRequestRemoval.fit5  rü   r1   N)rX   r\   r]   r   r  Ú-_InvalidRequestRemoval__metadata_request__fitr<   r0   r1   r2   ÚInvalidRequestRemovalr  0  s4   € € € € € ð $*Ð+;Ô+BÐ"CÐð	ð 	ð 	ð 	ð 	r1   r  zTrying to remove parameterr§   N)r   ro   rp   rÄ   r[   )r  s    r2   Ú'test_removing_non_existing_param_raisesr  -  sÃ   € ðð ð ð ð ¥ñ ô ð õ 
Œ•zÐ)EÐ	FÑ	FÔ	Fð 7ð 7ØÐÑÔ×4Ò4Ñ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   ¯AÁAÁ Ac                  ó¬  — t          dd¬¦  «        } t          j        t          d¬¦  «        5  |                      dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dd ¬¦  «         | j        dd ik    sJ ‚|                      dd	¬¦  «         | j        dd	ik    sJ ‚|                      dd
¬¦  «         | j        dd
ik    sJ ‚|                      dd¬¦  «         | j        dd
ik    sJ ‚|                      dd¬¦  «         | j        ddik    sJ ‚|                      d	¬¦  «        dhk    sJ ‚|                      d
¬¦  «        dhk    sJ ‚d S )Nr`   r<   ©rR   r´   zThe alias you're setting forr§   ra   gffffffö?rb   FTre   )Úreturn_alias)r   ro   rp   rÄ   rn   rs   Ú_get_param_names)Úmmrs    r2   Útest_method_metadata_requestr   <  sÆ  € Ý
 f°UÐ
;Ñ
;Ô
;€Cå	Œ•zÐ)GÐ	HÑ	HÔ	Hð 0ð 0Ø�Š˜e¨3ˆÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð ‡O‚O˜% t€OÑ,Ô,Ð,ØŒ<˜E 4˜=Ò(Ð(Ð(Ð(Ø‡O‚O˜% u€OÑ-Ô-Ð-ØŒ<˜E 5˜>Ò)Ð)Ð)Ð)Ø‡O‚O˜% t€OÑ,Ô,Ð,ØŒ<˜E 4˜=Ò(Ð(Ð(Ð(Ø‡O‚O˜% u€OÑ-Ô-Ð-ØŒ<˜E 4˜=Ò(Ð(Ð(Ð(Ø‡O‚O˜% u€OÑ-Ô-Ð-ØŒ<˜E 5˜>Ò)Ð)Ð)Ð)Ø×Ò¨UÐÑ3Ô3¸°wÒ>Ð>Ð>Ð>Ø×Ò¨TÐÑ2Ô2°u°gÒ=Ð=Ð=Ð=Ð=Ð=s   ­AÁAÁAc                  óì  —  G d„ dt           ¦  «        } t          t          d ¦  «        ¦  «         t          t          t          ¦   «         ¦  «        ¦  «         t	          d¬¦  «        }|j                             dd¬¦  «         t          |¦  «        }t          |d¬	¦  «         |j        j        ddik    sJ ‚t           | ¦   «         ¦  «        }t          |d¬	¦  «         |j        j        d
d ik    sJ ‚d S )Nc                   ó   — e Zd ZddiZdS )ú-test_get_routing_for_object.<locals>.Consumerrø   N)rX   r\   r]   Ú _Consumer__metadata_request__fitr0   r1   r2   ÚConsumerr#  Q  s   € € € € € Ø#)¨4 .ÐÐÐr1   r%  r`   rQ   ra   re   rb   r<   rg   rø   )r   r   r#   Úobjectr   r<   rn   rs   )r%  ÚmrÚ
mr_factorys      r2   Útest_get_routing_for_objectr)  P  s
  € ð1ð 1ð 1ð 1ð 1•=ñ 1ô 1ð 1õ Õ2°4Ñ8Ô8Ñ9Ô9Ð9ÝÕ2µ6±8´8Ñ<Ô<Ñ=Ô=Ð=å	˜vÐ	&Ñ	&Ô	&€BØ„F×Ò˜U¨%ÐÑ0Ô0Ð0Ý'¨Ñ+Ô+€JÝ˜J°Ð6Ñ6Ô6Ð6ØŒ>Ô" u¨e nÒ4Ð4Ð4Ð4å	  ¡
¤
Ñ	+Ô	+€BÝ˜B¨Ð.Ñ.Ô.Ð.ØŒ6Œ?˜v t˜nÒ,Ð,Ð,Ð,Ð,Ð,r1   c                  ó¨  — t          d¬¦  «        } |                      ddh¬¦  «        t          ¦   «         k    sJ ‚t          d¬¦  «        } | j                             dd¬¦  «         |                      ddh¬¦  «        dhk    sJ ‚t          d¬¦  «        } | j                             dd¬¦  «         |                      dddh¬¦  «        dhk    sJ ‚d	S )
z@Test that MetadataRequest().consumes() method works as expected.r`   rQ   r<   ra   ©r´   rH   Trb   re   N)r    Úconsumesr¹   r   r<   rn   )Úrequests    r2   Ú%test_metadata_request_consumes_methodr.  b  sê   € å 6Ð*Ñ*Ô*€GØ×Ò 5°%°ÐÑ9Ô9½S¹U¼UÒBÐBÐBÐBå FÐ+Ñ+Ô+€GØ„K×Ò %¨tÐÑ4Ô4Ð4Ø×Ò 5°%°ÐÑ9Ô9¸e¸WÒDÐDÐDÐDå FÐ+Ñ+Ô+€GØ„K×Ò %¨uÐÑ5Ô5Ð5Ø×Ò 5°%¸°ÐÑ@Ô@ÀUÀGÒKÐKÐKÐKÐKÐKr1   c                  óL  — t          t          ¦   «                              d¬¦  «        ¬¦  «        dhdhft          t          ¦   «                              d¬¦  «        ¬¦  «        ddhdhfg} | D ]5\  }}}|                     ¦   «                              d|¬¦  «        |k    sJ ‚Œ6dS )	z=Test that MetadataRouter().consumes method works as expected.TrÁ   rk   rˆ   rÃ   r<   r+  N)r   r   rÇ   r[   r,  )ÚcasesÚobjÚinputÚoutputs       r2   Ú$test_metadata_router_consumes_methodr4  p  sí   € õ "Ý,Ñ.Ô.×>Ò>ÈTÐ>ÑRÔRðñ ô ð ÐØÐð	
õ "Ý,Ñ.Ô.×>Ò>Ø".ð ?ñ ô ðñ ô ð
 ˜?Ð+ØˆNð	
ð€Eð& $ð Yð YÑˆˆU�FØ×'Ò'Ñ)Ô)×2Ò2¸%ÈÐ2ÑNÔNÐRXÒXÐXÐXÐXÐXðYð Yr1   c                  ó6  —  G d„ dt           ¦  «        } t          j        t          d¬¦  «        5   | t	          ¦   «                              d¬¦  «        ¬¦  «                             t          t          t          ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó    — e Zd Zdej        iZdS )ú>test_metaestimator_warnings.<locals>.WeightedMetaRegressorWarnrˆ   N)rX   r\   r]   r   ÚWARNÚ1_WeightedMetaRegressorWarn__metadata_request__fitr0   r1   r2   ÚWeightedMetaRegressorWarnr7  Œ  ó   € € € € € Ø#2Ð4DÔ4IÐ"JÐÐÐr1   r:  ú4Support for .* has recently been added to this classr§   FrÁ   rk   )
r   ro   ÚwarnsÚUserWarningr   rÇ   r<   rE   rF   rÃ   )r:  s    r2   Útest_metaestimator_warningsr?  ‹  sÿ   € ðKð Kð Kð Kð KÕ$9ñ Kô Kð Kõ 
ŒÝÐQð
ñ 
ô 
ð .ð .ð 	"Ð!Ý&Ñ(Ô(×8Ò8ÀuÐ8ÑMÔMð	
ñ 	
ô 	
ç
Š#�a•¥*ˆ#Ñ
-Ô
-Ð
-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s   ¯ABÂBÂBc                  ó  —  G d„ dt           ¦  «        } t          j        t          d¬¦  «        5  t	           | ¦   «         ¬¦  «                             t          t          t          ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó    — e Zd Zdej        iZdS )ú7test_estimator_warnings.<locals>.ConsumingRegressorWarnrˆ   N)rX   r\   r]   r   r8  Ú._ConsumingRegressorWarn__metadata_request__fitr0   r1   r2   ÚConsumingRegressorWarnrB  ˜  r;  r1   rD  r<  r§   rk   rÁ   )	r   ro   r=  r>  r   r<   rE   rF   rÃ   )rD  s    r2   Útest_estimator_warningsrE  —  só   € ðKð Kð Kð Kð KÕ!3ñ Kô Kð Kõ 
ŒÝÐQð
ñ 
ô 
ð 
ð 
õ 	Ð 6Ð 6Ñ 8Ô 8Ð9Ñ9Ô9×=Ò=Ý�q¥
ð 	>ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ¯>A:Á:A>ÂA>zobj, stringr`   r<   r  ra   re   rb   z{'foo': 'bar'}rQ   z{}rN   rT   rm   a*  {'estimator': {'mapping': [{'caller': 'predict', 'callee': 'predict'}], 'router': {'fit': {'sample_weight': None, 'metadata': None}, 'partial_fit': {'sample_weight': None, 'metadata': None}, 'predict': {'sample_weight': None, 'metadata': None}, 'score': {'sample_weight': None, 'metadata': None}}}}c                 ó0   — t          | ¦  «        |k    sJ ‚d S r7   )Ústr)r1  Ústrings     r2   Útest_string_representationsrI  £  s!   € õ: ˆs‰8Œ8�vÒÐÐÐÐÐr1   z%obj, method, inputs, err_cls, err_msgrY   ÚinvalidzGiven calleezGiven callerrr   r1  z@Given `obj` is neither a `MetadataRequest` nor does it implementrÇ   zUnexpected argsc                 ó�   — t          j        ||¬¦  «        5   t          | |¦  «        di |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nr§   r0   )ro   rp   Úgetattr)r1  r´   ÚinputsÚerr_clsÚerr_msgs        r2   Útest_validationsrP  Ã  sž   € õD 
Œ�w gÐ	.Ñ	.Ô	.ð 'ð 'Ø���VÑÔÐ&Ð&˜vÐ&Ð&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   —;»?Á?c                  ó$  — t          ¦   «                              dd¬¦  «                             dd¬¦  «        } t          | ¦  «        }|d         dk    sJ ‚|d         dk    sJ ‚t          ¦   «         } t          D ]2}|                      ||¬¦  «         t	          ||¦  «        | j        v sJ ‚Œ3t          | j        ¦  «        t          t          ¦  «        k    sJ ‚t          ¦   «                              dd¬¦  «        } t          | ¦  «        d	k    sJ ‚d S )
Nr<   rC   rT   r   )r<   rC   rÐ   )r<   r<   rj   z([{'caller': 'score', 'callee': 'score'}])r!   rY   Úlistr   r   Ú_routesrŽ   Úrepr)ÚmmÚmm_listr´   s      r2   Útest_methodmappingrW  é  s  € å‰Œß	Š�E +ˆÑ	.Ô	.ß	Š�E %ˆÑ	(Ô	(ð õ �2‰hŒh€GØ�1Œ:Ð-Ò-Ð-Ð-Ð-Ø�1Œ:˜Ò'Ð'Ð'Ð'å	‰Œ€BÝð 8ð 8ˆØ
�Š�f VˆÑ,Ô,Ð,Ý˜& &Ñ)Ô)¨R¬ZÐ7Ð7Ð7Ð7Ð7ÝˆrŒz‰?Œ?�c¥'™lœlÒ*Ð*Ð*Ð*å	‰Œ×	Ò	 G°GÐ	Ñ	<Ô	<€BÝ�‰8Œ8ÐAÒAÐAÐAÐAÐAÐAr1   c                  ó  — t          d¬¦  «        } | j                             dd¬¦  «         t          d¬¦  «                             | ¦  «        }t          |j        ¦  «        t          | ¦  «        k    sJ ‚|j        | usJ ‚t          ¦   «                              d¬¦  «        }t          d¬¦  «                             |¬	¦  «        }t          |j        ¦  «        t          | 	                    ¦   «         ¦  «        k    sJ ‚|j        | 	                    ¦   «         usJ ‚t          t          ¦   «                              d
¬¦  «        ¬¦  «        }t          d¬¦  «                             |¬	¦  «        }t          |j        ¦  «        t          |                     ¦   «         ¦  «        k    sJ ‚t          |j        ¦  «        t          | 	                    ¦   «         ¦  «        k    sJ ‚|j        |                     ¦   «         usJ ‚d S )NÚnestedrQ   rc   Trb   r`   rÃ   rÁ   )r1  Únested_weightsrk   )r   r<   rn   r    rr   rG  Ú_self_requestr   rÇ   r[   r   r¤   )r-  rZ   ró   s      r2   Ú$test_metadatarouter_add_self_requestr\  þ  sì  € å HÐ-Ñ-Ô-€GØ„K×Ò '°ÐÑ6Ô6Ð6Ý &Ð)Ñ)Ô)×:Ò:¸7ÑCÔC€FÝˆvÔ#Ñ$Ô$­¨G©¬Ò4Ð4Ð4Ð4àÔ wÐ.Ð.Ð.Ð.õ Ñ
Ô
×
.Ò
.¸\Ð
.Ñ
JÔ
J€CÝ &Ð)Ñ)Ô)×:Ò:¸sÐ:ÑCÔC€FÝˆvÔ#Ñ$Ô$­¨C×,DÒ,DÑ,FÔ,FÑ(GÔ(GÒGÐGÐGÐGØÔ s×'?Ò'?Ñ'AÔ'AÐAÐAÐAÐAõ  Ý$Ñ&Ô&×6Ò6ÐEUÐ6ÑVÔVðñ ô €Cõ  &Ð)Ñ)Ô)×:Ò:¸sÐ:ÑCÔC€FåˆvÔ#Ñ$Ô$­¨C×,EÒ,EÑ,GÔ,GÑ(HÔ(HÒHÐHÐHÐHõ ˆvÔ#Ñ$Ô$­¨C×,DÒ,DÑ,FÔ,FÑ(GÔ(GÒGÐGÐGÐGàÔ s×'@Ò'@Ñ'BÔ'BÐBÐBÐBÐBÐBÐBr1   c                  óò  — t          d¬¦  «                             t          ¦   «                              d¬¦  «        t	          ¦   «                              dd¬¦  «        ¬¦  «        } t          | ¦  «        dk    sJ ‚t          d¬¦  «                             t	          ¦   «                              dd	¬¦  «        t          ¦   «                              d
¬¦  «        ¬¦  «        } t          | ¦  «        dk    sJ ‚d S )Nr`   rQ   ÚweightsrÁ   r<   rT   )ró   rS   a!  {'est': {'mapping': [{'caller': 'fit', 'callee': 'fit'}], 'router': {'fit': {'sample_weight': 'weights', 'metadata': None}, 'partial_fit': {'sample_weight': None, 'metadata': None}, 'predict': {'sample_weight': None, 'metadata': None}, 'score': {'sample_weight': None, 'metadata': None}}}}rj   T)rS   ró   a  {'est': {'mapping': [{'caller': 'fit', 'callee': 'score'}], 'router': {'fit': {'sample_weight': None, 'metadata': None}, 'partial_fit': {'sample_weight': None, 'metadata': None}, 'predict': {'sample_weight': None, 'metadata': None}, 'score': {'sample_weight': True, 'metadata': None}}}})r    rY   r   rÇ   r!   rG  rñ   ©rZ   s    r2   Útest_metadata_routing_addr`    s  € å &Ð)Ñ)Ô)×-Ò-ÝÑ Ô ×0Ò0¸yÐ0ÑIÔIÝ$‘”×*Ò*°%ÀÐ*ÑFÔFð .ñ ô €Fõ
 	ˆF‰Œðò	ð 	ð 	ð 	õ  &Ð)Ñ)Ô)×-Ò-Ý$‘”×*Ò*°%ÀÐ*ÑHÔHÝÑ Ô ×2Ò2ÀÐ2ÑFÔFð .ñ ô €Fõ
 	ˆF‰Œðò	ð 	ð 	ð 	ð 	ð 	r1   c                  ó¦  — t          d¬¦  «                             t          t          ¦   «         ¬¦  «                             d¬¦  «        ¦  «                             t          ¦   «                              d¬¦  «        t          ¦   «                              dd¬¦  «        ¬	¦  «        } t          | ¦  «        d
k    sJ ‚|  	                    ddd¬¦  «        h d£k    sJ ‚|  	                    ddd¬¦  «        h d£k    sJ ‚|  	                    ddd¬¦  «        ddhk    sJ ‚|  	                    ddd¬¦  «        |  	                    ddd¬¦  «        k    sJ ‚d S )Nr`   rQ   rk   Úself_weightsrÁ   Útransform_weightsr<   rT   )rß   rS   a^  {'$self_request': {'fit': {'sample_weight': 'self_weights'}, 'score': {'sample_weight': None}}, 'trs': {'mapping': [{'caller': 'fit', 'callee': 'fit'}], 'router': {'fit': {'sample_weight': 'transform_weights', 'metadata': None}, 'transform': {'sample_weight': None, 'metadata': None}, 'inverse_transform': {'sample_weight': None, 'metadata': None}}}}TF)r´   r  Úignore_self_request>   rŒ   rb  rc  >   rŒ   rˆ   rc  rŒ   )
r    rr   r   r   rÇ   rY   r   r!   rG  r  r_  s    r2   Ú%test_metadata_routing_get_param_namesre  9  sç  € å˜VÐ$Ñ$Ô$ß	Ò	Ý!Õ,>Ñ,@Ô,@ÐAÑAÔA×QÒQØ,ð Rñ ô ñ

ô 

÷
 
ŠÝ$Ñ&Ô&×6Ò6Ø1ð 7ñ ô õ )™?œ?×.Ò.°eÀEÐ.ÑJÔJð	 
ñ 

ô 

ð õ  	ˆF‰ŒðMò	Mð 	Mð 	Mð 	Mð ×"Ò"Ø 4¸Uð #ñ ô à	:Ð	:Ð	:ò;ð ;ð ;ð ;ð ×"Ò"Ø 5¸eð #ñ ô à	;Ð	;Ð	;ò<ð <ð <ð <ð ×"Ò"Ø 5¸dð #ñ ô à
Ð)Ð	*ò+ð +ð +ð +ð ×"Ò"Ø 4¸Tð #ñ ô à	×	 Ò	 Ø 5¸dð 
!ñ 
ô 
òð ð ð ð ð r1   c                  óB  —  G d„ dt           ¦  «        } t          D ] }t           | ¦   «         d|› d�¦  «        rJ ‚Œ! G d„ dt           ¦  «        } t          D ] }t           | ¦   «         d|› d�¦  «        rJ ‚Œ!t          D ] }t           | ¦   «         d|› d�¦  «        sJ ‚Œ!d S )Nc                   óX   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zdd„Zd„ Zd„ Zd
S )ú/test_method_generation.<locals>.SimpleEstimatorc                 ó   — d S r7   r0   ©r9   rE   rF   s      r2   r<   z3test_method_generation.<locals>.SimpleEstimator.fitl  ó   € ØˆDr1   c                 ó   — d S r7   r0   rj  s      r2   Úfit_transformz=test_method_generation.<locals>.SimpleEstimator.fit_transformo  rk  r1   c                 ó   — d S r7   r0   rj  s      r2   Úfit_predictz;test_method_generation.<locals>.SimpleEstimator.fit_predictr  rk  r1   c                 ó   — d S r7   r0   rj  s      r2   Úpartial_fitz;test_method_generation.<locals>.SimpleEstimator.partial_fitu  rk  r1   c                 ó   — d S r7   r0   ©r9   rE   s     r2   rN   z7test_method_generation.<locals>.SimpleEstimator.predictx  rk  r1   c                 ó   — d S r7   r0   rs  s     r2   Úpredict_probaz=test_method_generation.<locals>.SimpleEstimator.predict_proba{  rk  r1   c                 ó   — d S r7   r0   rs  s     r2   Úpredict_log_probazAtest_method_generation.<locals>.SimpleEstimator.predict_log_proba~  rk  r1   c                 ó   — d S r7   r0   rs  s     r2   Údecision_functionzAtest_method_generation.<locals>.SimpleEstimator.decision_function�  rk  r1   c                 ó   — d S r7   r0   rj  s      r2   rj   z5test_method_generation.<locals>.SimpleEstimator.score„  rk  r1   Nc                 ó   — d S r7   r0   rj  s      r2   r£   z5test_method_generation.<locals>.SimpleEstimator.split‡  rk  r1   c                 ó   — d S r7   r0   rs  s     r2   rC   z9test_method_generation.<locals>.SimpleEstimator.transformŠ  rk  r1   c                 ó   — d S r7   r0   rs  s     r2   Úinverse_transformzAtest_method_generation.<locals>.SimpleEstimator.inverse_transform�  rk  r1   r7   ©rX   r\   r]   r<   rm  ro  rq  rN   ru  rw  ry  rj   r£   rC   r~  r0   r1   r2   ÚSimpleEstimatorrh  j  sÍ   € € € € € ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r1   r€  Úset_Ú_requestc                   ón   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd	„Z
dd
„Zdd„Zdd„Zdd„ZdS )rh  Nc                 ó   — d S r7   r0   ©r9   rE   rF   rˆ   s       r2   r<   z3test_method_generation.<locals>.SimpleEstimator.fit•  rk  r1   c                 ó   — d S r7   r0   r…  s       r2   rm  z=test_method_generation.<locals>.SimpleEstimator.fit_transform˜  rk  r1   c                 ó   — d S r7   r0   r…  s       r2   ro  z;test_method_generation.<locals>.SimpleEstimator.fit_predict›  rk  r1   c                 ó   — d S r7   r0   r…  s       r2   rq  z;test_method_generation.<locals>.SimpleEstimator.partial_fitž  rk  r1   c                 ó   — d S r7   r0   ©r9   rE   rˆ   s      r2   rN   z7test_method_generation.<locals>.SimpleEstimator.predict¡  rk  r1   c                 ó   — d S r7   r0   rŠ  s      r2   ru  z=test_method_generation.<locals>.SimpleEstimator.predict_proba¤  rk  r1   c                 ó   — d S r7   r0   rŠ  s      r2   rw  zAtest_method_generation.<locals>.SimpleEstimator.predict_log_proba§  rk  r1   c                 ó   — d S r7   r0   rŠ  s      r2   ry  zAtest_method_generation.<locals>.SimpleEstimator.decision_functionª  rk  r1   c                 ó   — d S r7   r0   r…  s       r2   rj   z5test_method_generation.<locals>.SimpleEstimator.score­  rk  r1   c                 ó   — d S r7   r0   r…  s       r2   r£   z5test_method_generation.<locals>.SimpleEstimator.split°  rk  r1   c                 ó   — d S r7   r0   rŠ  s      r2   rC   z9test_method_generation.<locals>.SimpleEstimator.transform³  rk  r1   c                 ó   — d S r7   r0   rŠ  s      r2   r~  zAtest_method_generation.<locals>.SimpleEstimator.inverse_transform¶  rk  r1   r7   ©NNr  r0   r1   r2   r€  z/test_method_generation.<locals>.SimpleEstimator“  s  € € € € € ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	r1   )r   r   Úhasattrr   r   )r€  r´   s     r2   Útest_method_generationr”  e  s$  € ð
$ð $ð $ð $ð $�-ñ $ô $ð $õL ð Gð GˆÝ˜?˜?Ñ,Ô,Ð.E°VÐ.EÐ.EÐ.EÑFÔFÐFÐFÐFÐFð$ð $ð $ð $ð $�-ñ $ô $ð $õN $ð Gð GˆÝ˜?˜?Ñ,Ô,Ð.E°VÐ.EÐ.EÐ.EÑFÔFÐFÐFÐFÐFõ !ð Cð CˆÝ��Ñ(Ô(Ð*A°Ð*AÐ*AÐ*AÑBÔBÐBÐBÐBÐBðCð Cr1   c                  óD  —  G d„ dt           ¦  «        }  | ¦   «         }|                     ¦   «         j        j        d d d dœk    sJ ‚|                     ¦   «         j        j        d d dœk    sJ ‚|                     dd¬¦  «         t          j        t          d¬	¦  «        5  |                     ¦   «         j         d d d ¦  «         n# 1 swxY w Y   | 	                    d¬
¦  «         t          j        t          d¬	¦  «        5  |                     ¦   «         j         d d d ¦  «         n# 1 swxY w Y   | 	                    dd¬¦  «         |                     ¦   «         j         | 
                    d¬¦  «         |                     ¦   «         j        j        ddddœk    sJ ‚d S )Nc                   ó&   — e Zd Zdd„Zdd„Zdd„ZdS )ú/test_composite_methods.<locals>.SimpleEstimatorNc                 ó   — d S r7   r0   )r9   rE   rF   ra   re   s        r2   r<   z3test_composite_methods.<locals>.SimpleEstimator.fitÉ  rk  r1   c                 ó   — d S r7   r0   )r9   rE   ra   re   s       r2   rN   z7test_composite_methods.<locals>.SimpleEstimator.predictÌ  rk  r1   c                 ó   — d S r7   r0   )r9   rE   rÞ   s      r2   rC   z9test_composite_methods.<locals>.SimpleEstimator.transformÏ  rk  r1   r’  r7   )rX   r\   r]   r<   rN   rC   r0   r1   r2   r€  r—  Ç  sP   € € € € € ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	r1   r€  )re   ra   rÞ   )re   ra   Tr`   )ra   re   z!Conflicting metadata requests forr§   )re   rÝ   )r   r[   rm  rs   ro  rÇ   ro   rp   rÄ   rÓ   rÒ   )r€  ró   s     r2   Útest_composite_methodsr›  Â  sn  € ð
	ð 	ð 	ð 	ð 	�-ñ 	ô 	ð 	ð ˆ/Ñ
Ô
€Cð ×#Ò#Ñ%Ô%Ô3Ô<ØØØðAð Aò ð ð ð ð
 ×#Ò#Ñ%Ô%Ô1Ô:ÀdÐSWÐ>XÐ>XÒXÐXÐXÐXð ×Ò˜D fÐÑ-Ô-Ð-Ý	Œ•zÐ)LÐ	MÑ	MÔ	Mð /ð /Ø× Ò Ñ"Ô"Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð
 ×Ò ÐÑ%Ô%Ð%Ý	Œ•zÐ)LÐ	MÑ	MÔ	Mð /ð /Ø× Ò Ñ"Ô"Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð
 ×Ò ¨&ÐÑ1Ô1Ð1Ø×ÒÑÔÔ*Ð*ð ×Ò¨$ÐÑ/Ô/Ð/Ø×#Ò#Ñ%Ô%Ô3Ô<ØØØðAð Aò ð ð ð ð ð s$   ÂCÃC	ÃC	ÄD'Ä'D+Ä.D+c                  ó  — t          d¬¦  «        5  t          j        t          d¬¦  «        5  t	          ¦   «                              d¬¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zCTest that when feature flag disabled, set_{method}_requests raises.Fr.   zThis method is only availabler§   TrÁ   N)r   ro   rp   ÚRuntimeErrorr
   rÇ   r0   r1   r2   Ú!test_no_feature_flag_raises_errorrž  ö  s$  € å	°Ð	6Ñ	6Ô	6ð Fð FÝŒ]�<Ð/NÐOÑOÔOð 	Fð 	FÝÑ!Ô!×1Ò1ÀÐ1ÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	FðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Fs4   ‘A4­#AÁA4ÁA 	Á A4Á#A 	Á$A4Á4A8Á;A8c                  ó~   — t          t          ¦   «         ¬¦  «                             t          t          d¬¦  «         dS )zCTest that passing None as metadata when not requested doesn't raiserk   NrÁ   )r   r   r<   rE   rF   r0   r1   r2   Útest_none_metadata_passedr   ý  s5   € åÕ.Ñ0Ô0Ð1Ñ1Ô1×5Ò5µa½È$Ð5ÑOÔOÐOÐOÐOr1   c                  ó†  —  G d„ dt           t          ¦  «        } t           | ¦   «         ¬¦  «                             t          t
          ¦  «         t          j        t          d¬¦  «        5  t           | ¦   «         ¬¦  «                             t          t
          t          ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zÐTest that when no metadata is passed, having a meta-estimator which does
    not yet support metadata routing works.

    Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/28246
    c                   ó   — e Zd Zdd„ZdS )ú0test_no_metadata_always_works.<locals>.EstimatorNc                 ó   — | S r7   r0   )r9   rE   rF   rŒ   s       r2   r<   z4test_no_metadata_always_works.<locals>.Estimator.fit
  rü   r1   r7   r  r0   r1   r2   Ú	Estimatorr£  	  ó(   € € € € € ð	ð 	ð 	ð 	ð 	ð 	r1   r¥  rk   z3Estimator has not implemented metadata routing yet.r§   ©rŒ   N)
r"   r   r   r<   rE   rF   ro   rp   ÚNotImplementedErrorr¬   )r¥  s    r2   Útest_no_metadata_always_worksr©    s  € ðð ð ð ð Õ-­}ñ ô ð õ
 ˜I˜I™KœKÐ(Ñ(Ô(×,Ò,­QµÑ2Ô2Ð2å	ŒÝÐ#Xð
ñ 
ô 
ð Kð Kõ 	 	 	¡¤Ð,Ñ,Ô,×0Ò0µµAÅ	Ð0ÑJÔJÐJðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð Kð Ks   Á+>B6Â6B:Â=B:c                  ó2  — t          t          ¦   «         ¬¦  «        } t          | g¦  «        }t          j        d¦  «        }t          j        t          |¬¦  «        5  |                     t          t          d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z}Test that UnsetMetadataPassedError raises the correct error message when
    set_{method}_request is not set in nested cases.rk   a  [metadata] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.fit, which is used within WeightedMetaClassifier.fit. Call `ConsumingClassifier.set_fit_request({metadata}=True/False)` for each metadata you want to request/ignore.r§   Úblahr§  N)r   r
   r5   rÅ   rÆ   ro   rp   r   r<   rE   rF   )Úweighted_metaÚpipeÚmsgs      r2   Ú%test_unsetmetadatapassederror_correctr¯    sÔ   € õ +Õ5HÑ5JÔ5JÐKÑKÔK€MÝ˜=˜/Ñ*Ô*€DÝ
Œ)ð	0ñô €Cõ 
ŒÕ/°sÐ	;Ñ	;Ô	;ð (ð (Ø�Š••A ˆÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   Á#BÂBÂBc                  ó  — t          ¦   «         } t          d| fg¦  «        }t          j        d¦  «        }t	          j        t          |¬¦  «        5  |                     t          t          d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zŒTest that UnsetMetadataPassedError raises the correct error message when
    composite metadata request methods are not set in nested cases.Úconsuming_transformeraA  [metadata] are passed but are not explicitly set as requested or not requested for ConsumingTransformer.fit_transform, which is used within Pipeline.fit_transform. Call `ConsumingTransformer.set_fit_request({metadata}=True/False).set_transform_request({metadata}=True/False)` for each metadata you want to request/ignore.r§   r«  r§  N)
r   r	   rÅ   rÆ   ro   rp   r   rm  rE   rF   )r±  r­  r®  s      r2   Ú;test_unsetmetadatapassederror_correct_for_composite_methodsr²  &  sÔ   € õ 1Ñ2Ô2ÐÝÐ-Ð/DÐEÐFÑGÔG€Då
Œ)ð	9ñô €Cõ 
ŒÕ/°sÐ	;Ñ	;Ô	;ð 2ð 2Ø×Ò�1�a¨&ÐÑ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   Á#B Â BÂBc                  óê  —  G d„ dt           ¦  «        } t          j        d¦  «        }t          j        t
          |¬¦  «        5   | ¦   «                              d¦  «         ddd¦  «         n# 1 swxY w Y   | j        | _         | ¦   «                              d¬¦  «         t          j        t
          |¬¦  «        5   | ¦   «                              d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )a  Tests that if the set_{method}_request is unbound, it still works.

    Also test that passing positional arguments to the set_{method}_request fails
    with the right TypeError message.

    Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/28632
    c                   ó   — e Zd Zdd„ZdS )ú(test_unbound_set_methods_work.<locals>.ANc                 ó   — | S r7   r0   r…  s       r2   r<   z,test_unbound_set_methods_work.<locals>.A.fitB  rü   r1   r7   r  r0   r1   r2   ÚArµ  A  r¦  r1   r·  z>set_fit_request() takes 0 positional argument but 1 were givenr§   TNrÁ   )r   rÅ   rÆ   ro   rp   r«   rÇ   )r·  Úerror_messages     r2   Útest_unbound_set_methods_workr¹  8  s‰  € ðð ð ð ð �Mñ ô ð õ ”IØHñô €Mõ
 
Œ•y¨Ð	6Ñ	6Ô	6ð "ð "Ø	ˆ‰Œ×Ò˜DÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð Ô)€AÔð €A�C„C×Ò dÐÑ+Ô+Ð+õ 
Œ•y¨Ð	6Ñ	6Ô	6ð "ð "Ø	ˆ‰Œ×Ò˜DÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s$   ÁA-Á-A1Á4A1Â=C(Ã(C,Ã/C,)jr^   rÅ   ÚnumpyÚnpro   Úsklearnr   Úsklearn.baser   r   Úsklearn.exceptionsr   Úsklearn.linear_modelr   Úsklearn.pipeliner	   Ú%sklearn.tests.metadata_routing_commonr
   r   r   r   r   r   r   r   r   r   r   r   Úsklearn.utilsr   Ú sklearn.utils._metadata_requestsr   r   r   r   r   r   r   r   Úsklearn.utils.metadata_routingr   r    r!   r"   r#   r$   Úsklearn.utils.validationr%   ÚrandomÚRandomStateÚrngÚNÚMÚrandrE   ÚrandintrF   r¬   rÃ   Úmy_other_weightsÚfixturer3   r5   rt   ÚmarkÚparametrizerw   r€   r„   r’   r¥   r­   r³   r¿   rË   rÙ   rÛ   rà   rô   r  r  r   r)  r.  r4  r?  rE  rn   rY   rI  rÄ   r«   rP  rW  r\  r`  re  r”  r›  rž  r   r©  r¯  r²  r¹  r0   r1   r2   ú<module>rÑ     s4  ððð ð 
€	€	€	à Ð Ð Ð Ø €€€à "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4à„i×Ò˜BÑÔ€Ø�€€1Ø‡H‚HˆQ��N„N€Ø‡K‚K��1˜1€KÑÔ€Ø�KŠK˜˜2 AˆKÑ&Ô&€	Ø�XŠX�a‰[Œ[€
Ø—8’8˜A‘;”;Ð ð €„˜ÐÑÔðð ñ Ôðð7ð 7ð 7ð 7ð 7�]ñ 7ô 7ð 7ðt ð  ð  ðF „×ÒØàÐ Y Y¡[¤[Ð1Ñ1Ô1ØÐ I I¡K¤KÐ0Ñ0Ô0ØÐ i i¡k¤kÐ2Ñ2Ô2ØÐÐ)<Ð)<Ñ)>Ô)>ÈÈÉÌÐUÑUÔUØÐÐ(:Ð(:Ñ(<Ô(<ÀyÀyÁ{Ä{ÐSÑSÔSðñ	ô 	ð+ð +ñ	ô 	ð+ð „×ÒØðð ð ñô ð(ð (ñô ð(ð
 „×ÒØðð ð ñô ð(ð (ñô ð(ð
)ð )ð )ð<ð ð ð.Sð Sð Sð
Bð Bð Bð „×Ò˜ 7Ñ+Ô+Ø„×Ò˜ T¨9°bÐ$9Ñ:Ô:ð:ð :ñ ;Ô:ñ ,Ô+ð:ð1Mð 1Mð 1Mðh ð  ð  ðFSð Sð Sð:=ð =ð =ð,I?ð I?ð I?ðX+ ð + ð + ð\7ð 7ð 7ð>ð >ð >ð(-ð -ð -ð$Lð Lð LðYð Yð Yð6	.ð 	.ð 	.ð	
ð 	
ð 	
ð „×ÒØð "Ð!¨°uÐ=Ñ=Ô=×IÒIØ 5ð Jñ ô ð ð		
ð ˆO &Ð)Ñ)Ô)Øð	
ð
 ˆN Ð(Ñ(Ô(×,Ò,Ø,Ð,Ñ.Ô.Ø,˜}™œ×2Ò2¸)ÈIÐ2ÑVÔVð -ñ ô ð
@ð	
ðñô ð8ð ñ9ô ð8ð „×ÒØ+ð ˆM‰OŒOØØ¨	Ð2Ð2ØØð	
ð ˆM‰OŒOØØ ¨EÐ2Ð2ØØð	
ð ˆN Ð(Ñ(Ô(ØØ�N�N¨Ð0Ñ0Ô0Ð1ØØNð	
ð  ÐÑ!Ô!ØØ˜ÐØØð	
ð-ñ ô  ðB'ð 'ñC ô  ðB'ð
Bð Bð Bð*Cð Cð Cð:ð ð ð<)ð )ð )ðXZCð ZCð ZCðz1ð 1ð 1ðhFð Fð FðPð Pð Pð
Kð Kð Kð((ð (ð (ð 2ð 2ð 2ð$"ð "ð "ð "ð "r1   