
    {Kg5_                        d dl mZm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mZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d d	l+m,Z,  e*egegegegd
d      d{d dd       Z- G d d      Z. G d de      Z/ej`                  jc                  deeg      d        Z2ej`                  jc                  deeg      d        Z3d Z4ej`                  jc                  d eed dd       eeddd      g      d        Z5ej`                  jc                  dedddd e6d!fedd"d#d e6d$fedd dd e7d%fed dd&d e7d'fedd(dd e7d)fg      d*        Z8d+ Z9d, Z:ej`                  jc                  d-e;d.fed.fed/fejx                  d0fg      d1        Z=d2 Z>ej`                  jc                  d3 eedd d       eed dd       eeddd#       eh d4       e        ed5       e&        ed6       e         e       g
      d7        Z?ej`                  jc                  d8 eedd9d&       eed:d;d      f eedd9d&       eed:d;d#      f eedd9d&       eed<d;d      f eedd9d&       eed;dd      f eedd9d&       eed<dd#      f eed9dd       eed:d;d      f eed9dd       eed:d;d#      f eed9dd       eeddd      f eed9dd       eedd:d      f eed9dd       eedd=d#      f eed:d;d       eeddd&      f eed:d;d       eeddd      f eed:d;d       eed>d=d#      f eed:d;d       eed>d=d&      f eed:d;d#       eed?d@d#      f eed:d;d#       eed?d@d      f eeddd       eed dd      f eeddd       eed dd      fg      dA        Z@ej`                  jc                  d3 e        eeA       e        e"        e$        e%        e        eeddd#      g      dB        ZBej`                  jc                  d3 e        e        eeA       e"        e$        e%        e        e&        e        ed5       eh d4       eeh dC       eeddd#       eed d@d#       eed dd#       eedd d#       eed dd#       eed dd       eedd d&       ed6       e         e       g      dD        ZCej`                  jc                  dE eed dd      dFf eed dd#      dGf eh d4      dHf eeDej                  ej                  h      ej                  feGdI fdJdKddgd9d<ggfdK ej                  ddgd9d<gg      fdL eddgd9d<gg      fg	e,D  cg c]  } dL | ddgd9d<gg      f c} dMdNej                  j                  d       fdOe. e.       fe;dfedPfdQdRdSej                  f e       d(f e       dTf e       ddUz  f e       df e        eLdS      f e       ej                  f e       dVf ed6       e/d W      fdX      dY        ZMej`                  jc                  dZ eed dd      ef ed[d\h      ef eedFd]h      efdKefdLe%fdNe$fde"feGefe;efd^efd_e&f ed5      ef ed6      efd`efdSe!fg      da        ZNdb ZOdc ZPdd ZQde ZRdf ZSdg ZTdh ZUdi ZVdj ZWdk ZXdl ZYdm ZZdn Z[do Z\dp Z]dq Z^dr Z_ds Z`dt Zaej`                  jc                  duddvg      dw        Zbej`                  jc                  dxg dy      dz        Zcyc c} w )|    )IntegralRealN)
csr_matrix)config_context
get_config)BaseEstimator_fit_context)LeaveOneOut
deprecated)
HasMethodsHiddenIntervalInvalidParameterErrorMissingValuesOptions
RealNotInt
StrOptions_ArrayLikes	_Booleans
_Callables
_CVObjects_InstancesOf_IterablesNotString_NanConstraint_NoneConstraint_PandasNAConstraint_RandomStates_SparseMatrices_VerboseHelpergenerate_invalid_param_valgenerate_valid_parammake_constraintvalidate_params)CSR_CONTAINERS)abcdTprefer_skip_nested_validation)r)   c                     y)z/A function to test the validation of functions.N )r&   r'   r(   r)   argskwargss         m/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/utils/tests/test_param_validation.py_funcr1   )           c                   p    e Zd ZdZ edegid      d        Z e        edegid      d               Zy)_ClasszJA class to test the _InstancesOf constraint and the validation of methods.r&   Tr*   c                      y)zA validated methodNr-   selfr&   s     r0   _methodz_Class._method4   r2   r3   c                      y)zA deprecated validated methodNr-   r7   s     r0   _deprecated_methodz_Class._deprecated_method8   r2   r3   N)	__name__
__module____qualname____doc__r$   r   r9   r   r;   r-   r3   r0   r5   r5   1   sQ    TcD6]$G! H! \cD6]$G, H ,r3   r5   c                   L    e Zd ZU dZdegiZeed<   d Z e	d      d	d       Z
y)

_Estimatorz<An estimator to test the validation of estimator parameters.r&   _parameter_constraintsc                     || _         y Nr&   r7   s     r0   __init__z_Estimator.__init__C   s	    r3   Tr*   Nc                      y rD   r-   )r8   Xys      r0   fitz_Estimator.fitF       r3   NN)r<   r=   r>   r?   r   rB   dict__annotations__rF   r	   rJ   r-   r3   r0   rA   rA   >   s4    F$'$=D0 5 6r3   rA   interval_typec                     t        | ddd      }d|v sJ d|vsJ t        | ddd      }d|vsJ d|v sJ t        | ddd      }d|v sJ d|v sJ t        | ddd      }d|vsJ d|vsJ y)	z.Check the range of values depending on closed.   leftclosedrightbothneitherN)r   rO   intervals     r0   test_interval_ranger[   K   s     r1V<H>>Hr1W=HX==r1V<H>>==r1Y?HXHr3   c                 0   t        | ddd      }ddz  |vsJ ddz  |vsJ t        ddz        |vsJ t        ddz        |vsJ t        | dddz  d      }ddz  |v sJ ddz  |vsJ t        ddz        |v sJ t        ddz        |vsJ ddz  |vsJ y)	zbCheck that Interval constraint work with large integers.

    non-regression test for #26648.
    r   rR   rX   rT   A      i   N)r   floatrY   s     r0   test_interval_large_integersr`   _   s     q!I>Hb5   c6!!!B<x'''C=(((q!S&CHb5Hc6!!!B<8###C=(((d7("""r3   c                     t        t        ddd      } t        j                  | v sJ t        t        ddd      } t        j                   | v sJ t        t        ddd      } t        j                  | vsJ t        j                   | vsJ y)zjCheck that inf is included iff a bound is closed and set to None.

    Only valid for real intervals.
    r   NrV   rT   rS   rX   )r   r   npinfrZ   s    r0   test_interval_inf_in_boundsre   t   s    
 ag6H66XdAf5HFF7hdD;H66!!!FF7("""r3   rZ      rS   rT   rW   c                 ,    t         j                  | vsJ y)z)Check that np.nan is not in any interval.N)rb   nanrd   s    r0   test_nan_not_in_intervalri      s     66!!!r3   zparams, error, match      ?rR   )typerS   rV   rU   z=Expecting left to be an int for an interval over the integersg       @rX   z>Expecting right to be an int for an interval over the integersz&left can't be None when closed == leftrV   z(right can't be None when closed == rightzright can't be less than leftc                 r    t        j                  ||      5  t        di |  ddd       y# 1 sw Y   yxY w)zNCheck that informative errors are raised for invalid combination of parametersmatchNr-   )pytestraisesr   )paramserrorro   s      r0   test_interval_errorsrt      s*    @ 
uE	*6 
+	*	*s   -6c                      t        h ddh      } | j                  d      sJ | j                  d      sJ | j                  d      rJ dt        |       v sJ y)z*Sanity check for the StrOptions constraint   r&   r'   r(   r(   r   r&   r)   z'c' (deprecated)N)r   is_satisfied_bystroptionss    r0   test_stroptionsr{      s^    cU;G""3'''""3'''&&s+++W---r3   c                      t        t        ddt        j                  hdh      } | j	                  d      sJ | j	                  t        j                        sJ | j	                  d      rJ dt        |       v sJ y)z'Sanity check for the Options constraintg            ?r   Gz?z-0.5 (deprecated)N)r   r   rb   rc   rw   rx   ry   s    r0   test_optionsr      so    dT3/TFCG""4(((""266***&&t,,,#g,...r3   ztype, expected_type_nameintr_   znumpy.ndarrayc                 B    t        |       }t        |      d| dk(  sJ y)z?Check the string representation of the _InstancesOf constraint.zan instance of ''N)r   rx   )rk   expected_type_name
constraints      r0   %test_instances_of_type_human_readabler      s,     d#Jz? 01C0DAFFFFr3   c                      t        ddg      }  G d d      } G d d      }| j                   |             sJ | j                   |             rJ t        |       dk(  sJ y)	z Check the HasMethods constraint.r&   r'   c                       e Zd Zd Zd Zy)test_hasmethods.<locals>._Goodc                      y rD   r-   r8   s    r0   r&   z test_hasmethods.<locals>._Good.a       r3   c                      y rD   r-   r   s    r0   r'   z test_hasmethods.<locals>._Good.b   r   r3   N)r<   r=   r>   r&   r'   r-   r3   r0   _Goodr      s    		r3   r   c                       e Zd Zd Zy)test_hasmethods.<locals>._Badc                      y rD   r-   r   s    r0   r&   ztest_hasmethods.<locals>._Bad.a   r   r3   N)r<   r=   r>   r&   r-   r3   r0   _Badr      s    	r3   r   z"an object implementing 'a' and 'b'N)r   rw   rx   )r   r   r   s      r0   test_hasmethodsr      se    S#J'J   %%eg...))$&111z?BBBBr3   r   rv   )numeric_onlyrJ   c                 @    t        |       }| j                  |      rJ y)z>Check that the value generated does not satisfy the constraintNr!   rw   )r   	bad_values     r0   test_generate_invalid_param_valr      s%    " +:6I)))4444r3   zinteger_interval, real_interval         i   
   c                     t        |      }|j                  |      rJ | j                  |      rJ t        |       }|j                  |      rJ | j                  |      rJ y)ztCheck that the value generated for an interval constraint does not satisfy any of
    the interval constraints.
    r   Nr   )integer_intervalreal_intervalr   s      r0   +test_generate_invalid_param_val_2_intervalsr      sm    b +mDI,,Y777//	:::*6FGI,,Y777//	::::r3   c                 v    t        j                  t              5  t        |        ddd       y# 1 sw Y   yxY w)zmCheck that the function raises NotImplementedError when there's no invalid value
    for the constraint.
    N)rp   rq   NotImplementedErrorr!   r   s    r0   )test_generate_invalid_param_val_all_validr   W  s%    " 
*	+":. 
,	+	+s   /8>   rf   rR   r   c                 @    t        |       }| j                  |      sJ y)z;Check that the value generated does satisfy the constraint.N)r"   rw   )r   values     r0   test_generate_valid_paramr   l  s"    : !,E%%e,,,r3   zconstraint_declaration, valuegzG?*   r'   c                     | dz   S )Nrf   r-   )xs    r0   <lambda>r     s    QUr3   rL   z
array-likezsparse matrix)random_stater   r   )r   Nr}   )booleanF)verboserf   rh   g      i  missingrE   )	cv_objectr   c                 @    t        |       }|j                  |      sJ y)z+Sanity check for the is_satisfied_by methodN)r#   rw   )constraint_declarationr   r   s      r0   test_is_satisfied_byr     s$    L !!78J%%e,,,r3   z1constraint_declaration, expected_constraint_classoption1option2r~   r   r   r   c                 :    t        |       }|j                  |u sJ y)zICheck that make_constraint dispatches to the appropriate constraint classN)r#   	__class__)r   expected_constraint_classr   s      r0   test_make_constraintr     s$    , !!78J#<<<<r3   c                  z    t        j                  t        d      5  t        d       ddd       y# 1 sw Y   yxY w)zNCheck that an informative error is raised when an unknown constraint is passedzUnknown constraintrn   znot a valid constraintN)rp   rq   
ValueErrorr#   r-   r3   r0   test_make_constraint_unknownr     s&    	z)=	>01 
?	>	>s   1:c                     t        j                  t        d      5  t        dd       ddd       t        j                  t        d      5  t        ddgddi ddd       t        j                  t        d	      5  t        di ddi ddd       t        j                  t        d
      5  t        ddd       ddd       t        j                  t        d      5  t        dgg dddiddi ddd       t        j                  t        d	      5  t        dgg dddiddi ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   yxY w)zGCheck that validate_params works no matter how the arguments are passedz"The 'a' parameter of _func must bern   wrongrf   r(   Nz"The 'b' parameter of _func must ber(   "The 'c' parameter of _func must bez"The 'd' parameter of _func must be)r(   r)   r   )r   rR   r   r   er   rf   rR   r   four)rf   )rp   rq   r   r1   r-   r3   r0   test_validate_paramsr     sU   	%I
 	g

 
%I
 	7|!q!

 
%I
 	"C>"

 
%I
 	a1 
 
%I
 	a3/3Q33(3

 
%I
 	a2)2v2#q2
 
5
 


 


 


 

 


 
sG   D9E>E/E!E*E69EEEE'*E36E?c                  J    t        dt        gid      d        }  | dd       y)zTCheck that no error is raised when there are parameters without
    constraints
    r&   Tr*   c                      y rD   r-   )r&   r'   s     r0   funcz1test_validate_params_missing_params.<locals>.func  rK   r3   rf   rR   N)r$   r   )r   s    r0   #test_validate_params_missing_paramsr     s/    
 cC5\F G 	AJr3   c                  x    t               t              } t        j                  t        d      5   | ddd       ddd       t        j                  t        d      5  t        j
                  t        d      5   | ddd	       ddd       ddd       y# 1 sw Y   ]xY w# 1 sw Y   xY w# 1 sw Y   yxY w)
z5Check that validate_params functions can be decoratedzFunction _func is deprecatedrn   rf   rR   r   r   Nr   r   )r   r1   rp   warnsFutureWarningrq   r   )decorated_functions    r0    test_decorate_validated_functionr     s    %e,	m+I	J1a1% 
K 
m+I	J]]!)N
 q!w/
 
K	J	 
K	J

 
 
K	Js/   BB0;B$B0B!$B-	)B00B9c                     t        j                  t        d      5  t               j	                  d       ddd       t        j
                  t        d      5  t        j                  t        d      5  t               j                  d       ddd       ddd       y# 1 sw Y   kxY w# 1 sw Y   xY w# 1 sw Y   yxY w)z-Check that validate_params works with methodsz+The 'a' parameter of _Class._method must bern   r   Nz)Function _deprecated_method is deprecatedz6The 'a' parameter of _Class._deprecated_method must be)rp   rq   r   r5   r9   r   r   r;   r-   r3   r0   test_validate_params_methodr     s    	%R
 	!
 
m+V	W]]!J
 H''0	
 
X	W
 

 
 
X	Ws/   B B85B,B8 B),B5	1B88Cc                      t        d      } t        j                  t        d      5  | j	                          ddd       y# 1 sw Y   yxY w)z9Check that validate_params works with Estimator instancesr   z'The 'a' parameter of _Estimator must bern   N)rA   rp   rq   r   rJ   )ests    r0   test_validate_params_estimatorr   $  s;     W
C	%N
 		
 
 
s   AA
c                      t        j                  t        d      5  t        h dddh       ddd       y# 1 sw Y   yxY w)z@Check that the deprecated parameter must be a subset of options.z#deprecated options must be a subsetrn   rv   r&   r)   r   N)rp   rq   r   r   r-   r3   r0   !test_stroptions_deprecated_subsetr   /  s,    	z)N	O?Sz: 
P	O	Os	   7A c                  4   t        dt        t              t        gid      d        }  | dddd        | g d	       t	        j
                  t        d
      5 } | d       ddd       t        j                        }d|v sJ d|vsJ y# 1 sw Y   +xY w)zECheck that internal constraints are not exposed in the error message.paramTr*   c                      y rD   r-   r   s    r0   fz!test_hidden_constraint.<locals>.f8  s     	r3   rf   rR   r   )r&   r'   r(   r   The 'param' parameterrn   badr   Nzan instance of 'dict'zan instance of 'list')	r$   r   listrM   rp   rq   r   rx   r   r   exc_infoerr_msgs      r0   test_hidden_constraintr   5  s     	6$<&'t AAAiL	%<
		
 (..!G"g---"'111
 
s   
BBc            	      @   t        dt        dh      t        t        dh            gid      d        }  | d        | d       t        j                  t
        d      5 } | d	
       ddd       t        j                        }d|v sJ d|vsJ y# 1 sw Y   +xY w)zBCheck that we can have 2 StrOptions constraints, one being hidden.r   autowarnTr*   c                      y rD   r-   r   s    r0   r   z!test_hidden_stroptions.<locals>.fP      
 	r3   r   rn   r   r   N)r$   r   r   rp   rq   r   rx   r   r   s      r0   test_hidden_stroptionsr   M  s     	:vh'
F80D)EFG&*	 fIfI	%<
		
 (..!GW   
 
s    
BBc                  h    t        t        d      sJ t        t               j                  d      sJ y)zCheck that the validate_params decorator properly sets the parameter constraints
    as attribute of the decorated function/method.
    _skl_parameter_constraintsN)hasattrr1   r5   r9   r-   r3   r0   4test_validate_params_set_param_constraints_attributer   f  s.     5677768##%ABBBr3   c                  v    t        ddgid      d        }  | d        | t        j                  d             y)zCheck that validate_params raise a deprecation message but still passes
    validation when using an int for a parameter accepting a boolean.
    r   r   Tr*   c                      y rD   r-   r   s    r0   r   z1test_boolean_constraint_deprecated_int.<locals>.fs  rK   r3   FN)r$   rb   bool_r   s    r0   &test_boolean_constraint_deprecated_intr   n  s>    
 g	{+4P Q dGbhhuor3   c                      t        t        dgddd      dd       } t        j                  t        d      5   | d	
       ddd        G d d      } | |        |  |              y# 1 sw Y   +xY w)z5Check that validation can be skipped for a parameter.Nno_validationparam1param2Tr*   c                      y rD   r-   r   s     r0   r   ztest_no_validation.<locals>.f  r   r3   zThe 'param1' parameterrn   r   )r   c                       e Zd Zy)$test_no_validation.<locals>.SomeTypeN)r<   r=   r>   r-   r3   r0   SomeTyper     s    r3   r   )r   rL   r$   r   rp   rq   r   )r   r   s     r0   test_no_validationr   |  sr     ;/:&*	 
,4L	M	 
N  XXZ 
N	Ms   
A--A6c                      t        j                  d      } t               }|j                  | j                        sJ |j                  t        j                  g d            rJ y)z9Add a specific test for checking support for `pandas.NA`.pandasr   N)rp   importorskipr   rw   NArb   array)pdna_constraints     r0   $test_pandas_na_constraint_with_pd_nar    sR    			X	&B')M((///,,RXXi-@AAAAr3   c                      t               } | j                  g d      sJ | j                  t        d            sJ | j                  d      rJ y)zGCheck that a string does not satisfy the _IterableNotString constraint.r   r   zsome stringN)r   rw   ranger   s    r0   test_iterable_not_stringr    sM    $&J%%i000%%eBi000))-8888r3   c                     t               } | j                  d      sJ | j                  t                     sJ | j                  ddgddgfddgddgfg      sJ | j                  d      sJ | j                  d      rJ y)zUCheck that the _CVObjects constraint accepts all current ways
    to pass cv objects.r   rf   rR   r   r   Nznot a CV object)r   rw   r
   r   s    r0   test_cv_objectsr	    s     J%%a(((%%km444%%AA'71a&1a&9I&JKKK%%d+++))*;<<<<r3   c                  P     G d dt               }  | d      j                          y)zCheck that the validation from a scikit-learn estimator inherited by a third
    party estimator does not impose a match between the dict of constraints and the
    parameters of the estimator.
    c                   *     e Zd Z fdZd fd	Z xZS )7test_third_party_estimator.<locals>.ThirdPartyEstimatorc                 4    || _         t        | 	  d       y )Nr   rE   )r'   superrF   )r8   r'   r   s     r0   rF   z@test_third_party_estimator.<locals>.ThirdPartyEstimator.__init__  s    DFGq!r3   c                 &    t         |   ||       y rD   )r  rJ   )r8   rH   rI   r   s      r0   rJ   z;test_third_party_estimator.<locals>.ThirdPartyEstimator.fit  s    GK1r3   rL   )r<   r=   r>   rF   rJ   __classcell__)r   s   @r0   ThirdPartyEstimatorr    s    	"	 	r3   r  r   r'   N)rA   rJ   )r  s    r0   test_third_party_estimatorr    s!    j  !  "r3   c                  v    t        t        ddd      } | j                  d      sJ | j                  d      rJ y)z9Check for the type RealNotInt in the Interval constraint.r   rf   rW   rT   rj   N)r   r   rw   r   s    r0   test_interval_real_not_intr    s=    *a6:J%%c***))!,,,,r3   c                      t        dt              sJ t        dt              rJ t        t        j                  d      t              sJ t        t        j                  d      t              rJ y)zCheck for the RealNotInt type.rj   rf   N)
isinstancer   rb   float64int64r-   r3   r0   test_real_not_intr    sU    c:&&&!Z(((bjjmZ000"((1+z2222r3   c                      t        dt        gid      d        } t        j                  t        d      5   | d       d	d	d	       t        d
      5   | d       d	d	d	       y	# 1 sw Y   (xY w# 1 sw Y   y	xY w)z@Check that param validation can be skipped using config_context.r&   Tr*   c                      y rD   r-   rE   s    r0   r   z%test_skip_param_validation.<locals>.f  rK   r3   The 'a' parameterrn   1rE   Nskip_parameter_validation)r$   r   rp   rq   r   r   r   s    r0   test_skip_param_validationr!    so     cC5\F G 
,4G	H	C 
I 
$	7	C 
8	7	 
I	H 
8	7s   
A'
A3'A03A<r+   Fc                 n   t        dt        gid      d        t        dt        gi|       fd       }t        j                  t        d      5   |d	
       ddd       | r
 |d
       yt        j                  t        d      5   |d
       ddd       y# 1 sw Y   CxY w# 1 sw Y   yxY w)z,Check that nested validation can be skipped.r&   Tr*   c                      y rD   r-   rE   s    r0   r   z&test_skip_nested_validation.<locals>.f  rK   r3   r'   c                      d      S )Ninvalid_param_valuerE   r-   )r'   r   s    r0   gz&test_skip_nested_validation.<locals>.g  s     ())r3   zThe 'b' parameterrn   r%  r  Nrf   r  r   )r+   r&  r   s     @r0   test_skip_nested_validationr'    s     cC5\F G 	se&C*	*
 
,4G	H	!" 
I %	A]]08KLF ML 
I	H MLs   
B
B+B(+B4zJskip_parameter_validation, prefer_skip_nested_validation, expected_skipped))TTT)TFT)FTT)FFFc                     t        dt        gi|      d        }t        |       5   |d      }ddd       |k(  sJ y# 1 sw Y   xY w)z5Check interaction between global skip and local skip.r&   r*   c                     t               d   S )Nr   )r   rE   s    r0   r&  z9test_skip_nested_validation_and_config_context.<locals>.g  s     |788r3   r  rf   N)r$   r   r   )r   r+   expected_skippedr&  actual_skippeds        r0   .test_skip_nested_validation_and_config_contextr,    s\     	se4Q99 
2K	L1 
M ---- 
M	Ls   	A  A	)r   )dnumbersr   r   numpyrb   rp   scipy.sparser   sklearn._configr   r   sklearn.baser   r	   sklearn.model_selectionr
   sklearn.utilsr   sklearn.utils._param_validationr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   sklearn.utils.fixesr%   r1   r5   rA   markparametrizer[   r`   re   ri   	TypeErrorr   rt   r{   r   r   ndarrayr   r   r   r   r   r   r   rk   float32r  callabler  randomRandomStaterh   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r!  r'  r,  )	containers   0r0   <module>r?     sx
   "   # 6 4 / $      4 / &vTF$8"&:a :	:
, 
,
 
 8T*:; <& 8T*:;# <#(#  dAq((4tF*ST"	"
  sQ&IL	
 q3)LL	
 ta6J5	
 q47K7	
 q2H,	
+<=<./ 	e	5	w	_%	GGC( tQv.q$v.tT)4?#4(555 % XtQw7ZQv6	

 XtQw7ZQy9	

 XtQw7ZAf5	

 XtQw7ZD8	

 XtQw7ZD;	

 Xq$v6ZQv6	

 Xq$v6ZQy9	

 Xq$v6ZAf5	

 Xq$v6Zr&9	

 Xq$v6Zr)<	

 Xr1V4Zq9	

 Xr1V4ZD8	

 Xr1V4Zb;	

 Xr1V4Zb9	

 Xr1Y7ZBy9	

 Xr1Y7ZBv6	

 Xq$v6ZAf5	

 Xq$v6ZAf5	
KILZ
;[LZ
; T4i8	// T4(?#)$4i81b31d95495q!I.q$v.tQw/5-6-76- #	$1V	,d3	(AtI	6;	O	$c*	

BJJ/	0"**=	?#	AA'(	xrxx!Q!Q 012	*q!fq!f%567  ,

+	 i!Q!Q(89:+

  	  
..q12   	! " 
# $ 
a% & 
s' ( 	) * 	+ , 
- . 
"/ 0 
$1 2 
!T'"3 4 
$5 6 
%,'7 8 
"&&!9 : 
)$; < 
E	JO,= > 	? #H-I#H- 7	$1V	,h7	Y	*	+Z8	d|	$g.	{#	/*	'		:	l	I	N#	D	)=9	E	J'	j!	(=)(=23D	01 ;20!2C,B9=#&-3 84-H I4 P..U

s   1]8