
    Mpj\                     $   S SK r S SKJr  S SKrS SKrS SKJr  S SK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JrJrJr  S S	KJr  S S
KJrJrJrJ r J!r!  S SK"J#r#  S SK$J%r%J&r&J'r'J(r(J)r)J*r*  \RV                  " S S/SS //5      r,S \,SS2S 4'   \-" \\-   \-   \ -   \!-   5      \.\/\R`                  \Rb                  \2\Rf                  44S jr4/ \4" \Rj                  Rm                  S5      Ro                  SSS9\\/4S9QS S/SS //PS S//P\4" \,\\/4S9Q\4" S S/SS //5      Q\4" S S /S S //5      Q\4" S S//5      QSS/SS//P\RV                  " SS/SS//5      P\RV                  " SS/SS//5      P\" \RV                  " SS/SS//5      5      P/ SQ\RV                  " / SQ5      \RV                  " / SQ\R`                  S9\RV                  " / SQ\Rb                  S9\RV                  " / SQ\2S9\RV                  " / SQ\Rf                  S9\RV                  " S/S /S//5      \" \RV                  " / SQ5      5      / SQ/ SQ\RV                  " / SQ5      \RV                  " / SQ\8S9\RV                  " / SQ\8S9// SQ/ SQ/SS/S S!//\RV                  " / SQ/ SQ/5      \RV                  " / SQ/ SQ/\R`                  S9\RV                  " / SQ/ SQ/\Rb                  S9\RV                  " / SQ/ SQ/\2S9\RV                  " / SQ/ SQ/\Rf                  S9/\4" / SQ/ SQ/\\-   \/\R`                  \Rb                  \2\Rf                  4S9Q\RV                  " SS/S S!//5      P\RV                  " SS/S S!//5      P\RV                  " SS/S S!//\8S9P\RV                  " / SQ/5      P\" \RV                  " / SQ/5      5      PS S/SS// S /\RV                  " / S"Q5      \RV                  " / S"Q\.S9\RV                  " / S"Q\R`                  S9\RV                  " / S"Q\Rb                  S9\RV                  " / S"Q\2S9\RV                  " / S"Q\Rf                  S9\RV                  " S /S//5      \" \RV                  " S /S//5      5      SS/SS#/S/SS/S$S%/\RV                  " S$S%/5      SS/\RV                  " S$S%/\8S9/S&/S S'/\RV                  " S /S'//5      \RV                  " S /S'//\Rf                  S9/\RV                  " S S'/S'S //5      \RV                  " S S'/S'S //\Rf                  S9\RV                  " S S'//5      /\4" S S'/S'S //\\-   \2\Rf                  4S9Q\4" S S'//\\-   \2\Rf                  4S9Q/ /\RV                  " / /\8S9S(/\RV                  " \RV                  " / 5      \RV                  " / S)Q5      /\8S9\RV                  " / 5      \RV                  " / S)Q5      /1 S*kSS1/\9" / S)Q5      \9" SS/5      /SSS+.S S0/\RV                  " S 5      \RV                  " / / /5      \RV                  " S S/SS//S,S#/S-S.///5      /S/.r:\Rj                  Rm                  S5      Ro                  SSS9S S/SS //S S//\,S S /S S //SS/SS//\RV                  " SS/SS//5      \RV                  " SS/SS//5      \" \RV                  " SS/SS//5      5      /	/ SQ\RV                  " / SQ5      \RV                  " / SQ\R`                  S9\RV                  " / SQ\Rb                  S9\RV                  " / SQ\2S9\RV                  " / SQ\Rf                  S9\RV                  " S/S /S//5      \" \RV                  " / SQ5      5      / SQ/	/ SQ/ SQ/\RV                  " / SQ/ SQ/5      \RV                  " / SQ/ SQ/\R`                  S9\RV                  " / SQ/ SQ/\Rb                  S9\RV                  " / SQ/ SQ/\2S9\RV                  " / SQ/ SQ/\Rf                  S9\RV                  " / SQ/5      \" \RV                  " / SQ/5      5      /S S/SS// S /\RV                  " / S"Q5      \RV                  " / S"Q\.S9\RV                  " / S"Q\R`                  S9\RV                  " / S"Q\Rb                  S9\RV                  " / S"Q\2S9\RV                  " / S"Q\Rf                  S9\RV                  " S /S//5      \" \RV                  " S /S//5      5      SS/SS#//S&/S S'/\RV                  " S /S'//5      \RV                  " S /S'//\Rf                  S9/\RV                  " S S'/S'S //5      \RV                  " S S'/S'S //\Rf                  S9\RV                  " S S'//5      // /S(/\RV                  " S 5      \RV                  " S S/SS//S,S#/S-S.///5      /S/.r;1 S*kSSS+.S#/S#/S+.S$\9" / S)Q5      S/r<S/S/S S/// S0Q\RV                  " / SS//S1S9\" \RV                  " / SS//S1S95      /r=S2 r>\S3 5       r?\R                  R                  S4\" 5       5      S5 5       rBS6 rCS7 rDS8 rES9 rF\R                  R                  S:\" 5       5      S; 5       rGS< rHS= rIS> rJS? rK\R                  R                  S@/ SAQ5      SB 5       rL\R                  R                  SC\5      SD 5       rMSE rNSF rO\R                  R                  SGSHSI/5      SJ 5       rPg)K    N)product)issparse)config_contextdatasets)ShuffleSplit)SVC)_atol_for_typemove_to)yield_namespace_device_dtype_combinations)_array_api_for_tests_convert_containerassert_allcloseassert_array_almost_equalassert_array_equal'skip_if_array_api_compat_not_configured)_NotAnArray)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)_safe_split)_ovr_decision_functioncheck_classification_targetsclass_distributionis_multilabeltype_of_targetunique_labels   c           
      T    U VVs/ s H  nU  H	  nU" XS9PM     M     snn$ s  snnf )Ndtype )datasparse_containersdtypessparse_containerr"   s        _/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/utils/tests/test_multiclass.py_generate_sparser)   .   s<     !2 1E 	+ 	, 1  s   $*      )
   r,   )size)r%   r&      )
r   r   r+   r+   r      r+   r1   r1   r1   r   r   r+   r!   r   r   r+   abc)r   r   r+   r+   )r   r1   r+   r1   r5   r6   r7   d)
r   r   r   r   r   r   r   r   r   r      abcdefgh㈵>      ?r#   r   r+   r0   >   r   r+   r0   r   r   r1         )multilabel-indicator
multiclassmulticlass-multioutputbinary
continuouscontinuous-multioutputunknown)r#   r+   r>   objectc            
         [         R                  " [        SS9   [        5         S S S 5        [	        [        [        S5      5      [        R                  " S5      5        [	        [        [        R                  " S5      5      [        R                  " S5      5        [	        [        / SQ5      [        R                  " / SQ5      5        [	        [        [        R                  " / SQ/ SQ/ SQ/5      5      [        R                  " S	5      5        [	        [        [        R                  " / SQ/ SQ/5      5      [        R                  " S	5      5        [	        [        / SQ[        S
5      5      [        R                  " S
5      5        [	        [        SSS5      [        R                  " S	5      5        [         R                  " [        SS9   [        / SQ[        R                  " S5      5        S S S 5        [         R                  " [        SS9   [        [        R                  " S5      [        R                  " S5      5        S S S 5        [	        [        [        R                  " S5      [        R                  " S5      5      [        R                  " S
5      5        [         R                  " [        SS9   [        / SQ/ SQ5        S S S 5        [         R                  " [        SS9   [        [        R                  " / SQ5      [        R                  " / SQ5      5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNV= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)NzNo argument has been passedmatchr,   )r1   r   r+   )r   r+   r1   )r   r   r   )r   r   r   )r   r   r   r0   r9   r3   )r   )r+   r   zMix type of y not allowed)r9   r9   z'Multi-label binary indicator input with)r9   r1   )r1   r9   z.Mix of label input types \(string and number\)r4   )
pytestraises
ValueErrorr   r   rangenparangearrayonesr#       r(   test_unique_labelsrU     s   	z)F	G 
H }U2Y/2?}RYYr]3RYYr]C}Y/)1DE bhh	9i@ABBIIaL }RXXy).D%EF		RSU }Ya9299Q<H}Yf=ryy|L 
z)D	Ei1 
F	z)R	Sbggforwwv7 
T }RWWV_bggfoF		RSU 
K
 	i1
 
K
 	bhhy)288O+DE	
 
A 
H	G( 
F	E	S	S
 

 
s;   L+#L=5M7M!)9M2+
L:=
M
M!
M/2
N c                     [         R                  " / SQ5      n [         R                  " / SQ[        S9n[         R                  " / SQ5      n[        SS9   [        R
                  " [        SS9   [        X5        SSS5        [        R
                  " [        SS9   [        X5        SSS5        SSS5        g! , (       d  f       ND= f! , (       d  f       N(= f! , (       d  f       g= f)	zTest error is raised for mixed string and numerical input and dispatch enabled.

Mixed string and numerical NumPy input with array API dispatch enabled should raise
the correct error.
)r5   r6   r5   r5   r!   r   r   r   r   Tarray_api_dispatchzMix of label input typesrJ   N)rP   rR   rH   r   rL   rM   rN   r   )y_stringy_objecty_numericals      r(   0test_unique_labels_mixed_str_numerical_array_apir]   7  s     xx,-Hxx,F;H((<(K	4	0]]:-GH(0 I]]:-GH(0 I 
1	0HHHH 
1	0s<   C/B9;!CC
(C9
C	C

C	C
C)z#array_namespace, device, dtype_namec                 l   [        X5      u  p4[        R                  " / SQUS9n[        R                  " / SQUS9nUR                  XTS9nUR                  XdS9n[	        XV5      n	[        SS9   [	        Xx5      n
[        U
[        SS9n[        X[        U5      S	9  S
S
S
5        g
! , (       d  f       g
= f)z/Check `unique_labels` compliance for array API.r=   r!   )r+   r0   r1   deviceTrX   cpu)xpr`   atolN)	r   rP   rR   asarrayr   r   r
   r   r	   )array_namespacer`   
dtype_namerb   device_y1_npy2_npy1_xpy2_xp	labels_np	labels_xplabels_xp_nps               r(   test_unique_labels_array_apirp   I  s     '?KBHHYj1EHHYj1EJJuJ-EJJuJ-Ee+I	4	0!%/	yR>	nZ6PQ 
1	0	0s   ..B%%
B3c                  |   [         R                  " S5      n Sn[        R                  " [        US9   [        U 5        SSS5        [         R                  " S5      n [        R                  " 5          [        R                  " S5        [        U 5        SSS5        g! , (       d  f       Nd= f! , (       d  f       g= f)zCheck that we raise a warning when the number of unique classes is greater than
50% of the number of samples.

We need to check that we don't raise if we have less than 20 samples.
   zJThe number of unique classes is greater than 50% of the number of samples.rJ   Nr,   error)	rP   rQ   rL   warnsUserWarningr   warningscatch_warningssimplefilter)ymsgs     r(   9test_check_classification_targets_too_many_unique_classesr{   ]  s|     			"A
WC	k	-$Q' 
. 			"A		 	 	"g&$Q' 
#	" 
.	-
 
#	"s   B1"B-
B*-
B;c                     S H  n [         U     H  n[        U5        M     M      [         H1  n[        R                  " [
        5         [        U5        S S S 5        M3     S HA  n[         U    H1  n[        R                  " [
        5         [        U5        S S S 5        M3     MC     g ! , (       d  f       M  = f! , (       d  f       M[  = f)N)rD   rB   rA   )rG   rE   rF   rC   )EXAMPLESr   NON_ARRAY_LIKE_EXAMPLESrL   rM   rN   )formatry   exampley_types       r(   test_unique_labels_non_specificr   q  s     C&!A! " C
 +]]:&'" '& +  'Gz*g& +* ( '& +*s   B(B:(
B7	:
C	c                     [        [        S   [        S   [        S   -   5      n U  Ha  u  p[        R                  " [        5         [        X!5        S S S 5        [        R                  " [        5         [        X5        S S S 5        Mc     [        R                  " [        5         [        SS//SS//5        S S S 5        [        R                  " [        5         [        SS/5        S S S 5        [        R                  " [        5         [        SS/SS	//5        S S S 5        [        R                  " [        5         [        SS
/SS	//5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GMU  = f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NrA   rB   rD   r   r+   r5   r8   1r0   2)r   r}   rL   rM   rN   r   )mix_clf_formaty_multilabely_multiclasss      r(   test_unique_labels_mixed_typesr     s9   '((<*@8HCU*UN '5"]]:&,5 ']]:&,5 '& '5 
z	"1vh#s- 
# 
z	"sAh 
# 
z	"Qx!Q() 
# 
z	"SzAq6*+ 
#	" '&&& 
#	" 
#	" 
#	" 
#	"sH   E4E,&E?FF!?F2
E)	,
E<	?
F
F!
F/2
G c                     [         R                  5        GH_  u  pU S:H  nU GHM  nU=(       a    [        U5      n[        U5      (       d  [        US5      (       a  [        R
                  " U5      R                  S:X  a  [        R
                  " U5      R                  R                  S;   a  [        R
                  " U5      R                  S   S:  a^  [        [        -   [        -   [        -   [        -    Vs/ s H  nU" U5      PM     nnU H   nU[        U5      :X  a  M   SU< SU 35       e   [        U5      (       a  UR!                  5       nU[        U5      :X  a  GMB   SU< SU 35       e   GMb     g s  snf )	NrA   	__array__r+   biufr   r   is_multilabel() should be )r}   itemsr   hasattrrP   re   ndimr"   kindshaper   r   r   r   r   r   toarray)groupgroup_examples	dense_expr   
sparse_expr'   examples_sparseexmpl_sparses           r(   test_is_multilabelr     su   !)!133	%G #8x'8J  --JJw',,1JJw'--22f<JJw'--a014
 '()() )) )	)	#) ) %W-)   	# %4L%|)DD ((8ZLQD %4   !//+g 66  <	{C6= & "2	#s   8E:z(array_namespace, device_name, dtype_namec                    [        XU5      u  p4[        R                  5        H  u  pVUS:H  nU H  n[        R                  " U5      R
                  R                  S:X  a  [        R                  " XS9nO[        R                  " U5      nUR	                  XS9n[        SS9   U[        U5      :X  d   SU< SU 35       e S S S 5        M     M     g ! , (       d  f       M  = f)	NrA   fr!   r_   TrX   r   r   )	r   ARRAY_API_EXAMPLESr   rP   re   r"   r   r   r   )	rf   device_namerg   rb   r`   r   r   r   r   s	            r(   'test_is_multilabel_array_api_compliancer     s    
 &oJOJB!3!9!9!;33	%Gzz'"((--4**W?**W-jjj8G48 M'$:: $WK|I;G: 98 & "< 98s   #C
C"c                  "   [         R                  5        He  n U S;   aA  [         U     H2  nSn[        R                  " [        US9   [        U5        S S S 5        M4     MJ  [         U     H  n[        U5        M     Mg     g ! , (       d  f       Mg  = f)N)rG   rE   rF   zUnknown label type: rJ   )r}   keysrL   rM   rN   r   )r   r   rz   s      r(   !test_check_classification_targetsr     so    --/HH#F+,]]:S909 :9 ,
 $F+,W5 , " :9s   A??
Bc                     [         R                  5        H9  u  pU H.  n[        U5      U :X  a  M   SU< SU < S[        U5      < 35       e   M;     [         H2  nSn[        R
                  " [        US9   [        U5        S S S 5        M4     [         H2  nSn[        R
                  " [        US9   [        U5        S S S 5        M4     g ! , (       d  f       M  = f! , (       d  f       MX  = f)Nztype_of_target(r   z, got z6Expected array-like \(array or non-string sequence\).*rJ   zYou appear to be using a legacy multi-label data representation. Sequence of sequences are no longer supported; use a binary array or sparse matrix instead.)r}   r   r   r~   rL   rM   rN   MULTILABEL_SEQUENCES)r   r   r   	msg_regexrz   s        r(   test_type_of_targetr     s    !)!1%G!'*e3  "7+	3 & "2 +M	]]:Y77# 87 +
 (< 	
 ]]:S17# 21 ( 87 21s   6C2C
C	
C,	c                  D   [         R                  " S5      n U R                  R                  S[        R
                  [        R
                  S[        R
                  /5      nSn[         R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       g = f)Npandasr   z1y cannot be class 'SparseSeries' or 'SparseArray'rJ   )	rL   importorskiparraysSparseArrayrP   nanrM   rN   r   )pdry   rz   s      r(   !test_type_of_target_pandas_sparser     sd    			X	&B
		q"&&"&&!RVV<=A
=C	z	-q 
.	-	-s   <B
Bc                     [         R                  " S5      n S HI  nU R                  / SQUS9n[        U5      S:X  d   eU R                  / SQUS9n[        U5      S:X  a  MI   e   U R	                  SS	/S	S//S
S9n[        U5      S:X  d   eU R	                  SS/SS//SS9n[        U5      S:X  d   eU R	                  SS/SS//SS9n[        U5      S:X  d   eg)z<Check that type_of_target works with pandas nullable dtypes.r   )Int32Float32)r   r   r+   r0   r1   r!   rB   )r   r   r   r   rD   gffffff?g@r   rF   r   r   r   rA   r+   r0   rC   N)rL   r   Seriesr   	DataFrame)r   r"   y_trues      r(   #test_type_of_target_pandas_nullabler     s   			X	&B%?%8f%555<u5f%111 & \\C:Sz2)\DF&!%====\\Aq6Aq6*'\:F&!%;;;;\\Aq6Aq6*'\:F&!%====rT   r"   )Int64Float64booleanc                     [         R                  " S5      nUR                  / SQU S9nUR                  / SQSS9n[        X#5      n[	        USS/5        g)	z_Checks that unique_labels work with pandas nullable dtypes.

Non-regression test for gh-25634.
r   )	r   r   r   r   r   r   r   r   r   r!   )	r   r   r   r   r   r   r   r   r   int64r   r   N)rL   r   r   r   r   )r"   r   r   y_predictedlabelss        r(   "test_unique_labels_pandas_nullabler   $  sR     
		X	&BYY2%Y@F))7w)GK6/Fv1v&rT   csc_containerc           	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      nU " X#U4S	S
9n[        U5      u  pgn[        U5      u  pn/ SQ/ SQS/S//n/ SQn/ SQ/ SQS/S//n[        UR                  S   5       Hc  n[        Xo   X   5        [        X   X   5        [        X   X   5        [        X   X   5        [        X   X   5        [        X   X   5        Me     [        U/ SQ5      u  pgn[        U/ SQ5      u  pn/ SQ/ SQS/S//n[        UR                  S   5       Hc  n[        Xo   X   5        [        X   X   5        [        X   X   5        [        X   X   5        [        X   X   5        [        X   X   5        Me     g )NrW   )r+   r+   r   r   )r   r0   r   r   )r1   r+   r   r   )r+   r   r   r   )r   r+   r   r1   r+   r   r   r+   r0   r+   r0   r   r   r   r   r   r   )r   r   r+   r0   r1   r9   r   r   r+   r0   r9   r   r   r+   r0   r1   r9   )r   r?      r      )r?   r1   )r   )r   r+   r1   )r   r+   r0   r   r   )r0   r0   r   r   )r<   UUUUUU?gUUUUUU?)r   r   r         ?)r          @r   r   r   r   )qq?r   qq?)r   r   r   )rP   rR   r   rO   r   r   )r   ry   r$   indicesindptry_spclasses	n_classesclass_prior
classes_spn_classes_spclass_prior_spclasses_expectedn_classes_expectedclass_prior_expectedks                   r(   test_class_distributionr   3  s   
	
		A 88GHDhhJKGXX()F$0?D&8&;#G/A$/G,Jn!9qcA37%13H3%RUQVW1771:!'*.>.AB!),0B0EF!+.2F2IJ!*-1A1DE!,/3E3HI!."35I5LM  );	))%W 2D	)2.Z~ 23H3%RUQVW1771:!'*.>.AB!),0B0EF!+.2F2IJ!*-1A1DE!,/3E3HI!."35I5LM rT   c                  l   [        5       n [        SS9n[        R                  " 5       nUR                  UR                  pC[
        R                  " X3R                  5      n[        SSS9n[        [        UR                  U5      5      5      u  px[        XXG5      u  p[        XXG5      u  p[        U[
        R                  " XR                  5      5        [        X5        [        XXHU5      u  p[        XXHU5      u  nn[        U[
        R                  " XR                  5      5        [        UU5        g )Nprecomputed)kernelg      ?r   )	test_sizerandom_state)r   r   	load_irisr$   targetrP   dotTr   nextitersplitr   r   )clfclfpirisXry   KcvtraintestX_trainy_trainK_trainy_train2X_testy_testK_testy_test2s                    r(   'test_safe_split_with_precomputed_kernelr   g  s    
%Cm$DD99dkkq
q##A	1	5BtBHHQK()KE"314G#DQ6Ggrvvgyy'ABg0 %8NF!$1E:OFGfbffVYY&?@fg.rT   c            
      V   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ/ SQ/ SQ/ SQ/5      nSn[        XU5      n[         R                  " / SQ/ S	Q/ SQ/ SQ/5      n[        XCS
S9  [         R                  " / SQ5      n[	        [         R
                  " USS9U5        US   US   :  d   e[        S5       Vs/ s HA  n[        [         R                  " X   /5      [         R                  " X   /5      U5      S   PMC     nn[        X7SS9  g s  snf )N)r   r   r   )r   r   r   ) 7yAr   r   )r   r   g      )g      r   g      @)g      g?r<   r0   r2   )r   r   r   r<   rc   )r+   r   r+   r+   r   )axis)r+   r+   )r0   r+   r1   r   gư>)rP   rR   r   r   r   argmaxrO   )predictionsconfidencesr   
dec_valuesvotesexpected_predictionidec_values_ones           r(   test_ovr_decision_functionr   }  s    ((Iy)YGHK((	,.>@PQK I')LJ HHiIyABEEC0
 ((<0ryy!46IJ dj.... q	 A 	HHkn%&+.1A(BI	

	 	   JT:s   AD&
input_typelistrR   c                     [        SS/U 5      nSn[        R                  " [        US9   [	        U5        S S S 5        g ! , (       d  f       g = f)N   a   bz8Support for labels represented as bytes is not supportedrJ   )r   rL   rM   	TypeErrorr   )r   r   err_msgs      r(   !test_labels_in_bytes_format_errorr    s;    
  tj9FHG	y	0v 
1	0	0s	   ?
A)Qrv   	itertoolsr   numpyrP   rL   scipy.sparser   sklearnr   r   sklearn.model_selectionr   sklearn.svmr   sklearn.utils._array_apir	   r
   r   sklearn.utils._testingr   r   r   r   r   r   sklearn.utils.estimator_checksr   sklearn.utils.fixesr   r   r   r   r   sklearn.utils.metaestimatorsr   sklearn.utils.multiclassr   r   r   r   r   r   rR   multilabel_explicit_zerotupleboolintint8uint8floatfloat32r)   randomRandomStaterandintrH   	frozensetr}   r   r~   r   rU   r]   markparametrizerp   r{   r   r   r   r   r   r   r   r   r   r   r   r   r  r#   rT   r(   <module>r!     s       ! , 0  
  7  5  88aVaV$45 !" A 
 
	
	 	 		 #rww%<& 
II!!"%--ah-?,6

 Q!Q Q 
$PSv

 
Aq6Aq6*	+ 
Aq6Aq6*	+ 
Aq6(	#" a1b'#$ 	2q'Ar7#$%& 	2q'Ar7#$'( 	BHHr1g2w/01). 	'

"''*
"((+
%(
"**-
1#sQC!BHHY'(
!
/
/  
|$
sc3Z 
,-.
,-RWW=
,-RXX>
,-U;
,-RZZ@ 
<(,~="((E2::>

 	3*sCj)* 	3*sCj)* 	3*sCj)8  	)!" 	BHHi[)*#( 
A	
A
	

/0
/t<
/rww?
/rxx@
/u=
/rzzB
1#sBHHqcA3Z()	
B	
A		c
	
% 	c

%v.). 
	
C
1#u
1#uRZZ0	 	1c(S!H%&
1c(S!H%RZZ8
1c( 
XQx ,~=2::&

	 
XJ,~=2::&

  

"V$	
"((2, 34FC	"rxx	*+	QF	9	y!Q01S	As8$

"b
Aq6Aq6"aVaV$456!Ivt 			b!))!();
Q!Q
Q 
Q!Q
a1b'
2q'Ar7#$
2q'Ar7#$BHHr1g2w/01
 	'

"''*
"((+
%(
"**-
1#sQC!BHHY'(
 
|$
,-.
,-RWW=
,-RXX>
,-U;
,-RZZ@
)BHHi[)*	 
A	
A
	

/0
/t<
/rww?
/rxx@
/u=
/rzzB
1#sBHHqcA3Z()	
B	
A" 
	
C
1#u
1#uRZZ0	 	1c(S!H%&
1c(S!H%RZZ8
1c( 
	

Aq6Aq6"aVaV$456	yB L 	
	i  S1#1vHHb1a&\*"q!fX67	 &FR )1 )1" )-/R	R (('0,2$N .-/	$	6$6>* "AB' C' .90N :0Nf/,$;N '89 :rT   