
    d}^                       d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	Z
d dl	mZmZ d dlmZmZmZmZmZ ej                            dd          dd            Zej                            dd          ej                            dej        dgej        ej        gf          dd                        Zeej                            dd          ej                            dej        dgej        ej        gf          d                                     Zeeej                            dd          ej                            dd          d                                                 Zej                            dddgdfdd gdfd d gej        fddgej        ff          d             Zej                            dddgdfdd gej        fd d gej        fddgdff          d             Zd Zej                            dddgdej        gej        ej        gf          ej                            d g d!          ej                            d"d          d#                                     Zej                            dddgd$fd dgd%fd d gd ff          d&             Zej                            dddgd%fd dgd%fdd gd fd d gd ff          ej                            d"d          d'                         Zej                             d(          ej                            dddgdej        gej        ej        gf          ej                            d"d          ej                            d g d)          d*                                                 Z!ej                            dd%d+gd,fdd gdfd d gej        ff          d-             Z"ej                            dg d.g d/fg d0g d1ff          d2             Z#d3 Z$d4 Z%ej                            d"d          d5             Z&ej                            d ej'        g d6d78           ej'        dd9d:dd;d<ej        gd=8           ej'        ej        ej        ej        gd>ej                             d?          @          f          ej                            dAdB          ej                            d"d          ej                            d ddCg          ddF                                                Z(ej        )                    dGH          ej                            dg d6dd9d:dd;d<ej        gej        ej        ej        gf          ej                            dAdB          ej                            d"d          ej                            dIg dJ          dK                                                             Z*dL Z+ej                            dAdM          dN             Z,ej                            dd%d+gdOfdd gej        fd d gej        ff          ej                            d"d          dP                         Z-dQ Z.ej                            dddgdRfdd gd fd d gd fddgd ff          dS             Z/ej                            dddgd fdd gd fd d gd fddgd ff          dT             Z0ej                             d(          ej                            dddgdej        gf          ej                            d"d          ej                            d g d)          dU                                                 Z1ej                            dd%d+gdVfdd gdWfd d gej        ff          dX             Z2ej                            dd%d+gd fdd gej        fd d gej        ff          dY             Z3dZ Z4ej                             d(          ej                            dddgdej        gf          ej                            d"d          ej                            d g d)          d[                                                 Z5ej                            dd%d+g ej6        dV          fdd gdWfd d gej        ff          d\             Z7ej                            dd%d+gd fdd gej        fd d gej        ff          d]             Z8d^ Z9d_ Z:d` Z;ej                            dadb          ej                            dcd          ej                            d"dd          ej                             de          df                                                 Z<ej                            dadb          ej                            dAdg          ej                            dcd          ej                            d"dd          dh                                                 Z=ej                            dig djg dkdlfg djg dmdnfg dmg djdofg          ddt            Z>ej                            dudv          ej                            dwdv          ej                            dcd          ej                            d"dd          ej                             de          dx                                                             Z?ej                            dydz          ej                            dd          ej                            d{d|          d}                                     Z@ej                            dydz          d~             ZAej                            dyd          ej                            dd          d                         ZBdS )    )annotations)Iterable)AnyN)	DataArrayDataset)assert_allcloseassert_equalraise_if_dask_computesrequires_cftimerequires_dask
as_dataset)TFboolreturnNonec                    t          ddg          }| r|                    d          }t          j        t          d          5  |                    ddg           d d d            d S # 1 swxY w Y   d S )N      datanamez`weights` must be a DataArraymatchr   
to_datasetpytestraises
ValueErrorweighted)r   r   s     :lib/python3.11/site-packages/xarray/tests/test_weighted.py#test_weighted_non_DataArray_weightsr       s     )1a& 1 1D ,F++	z)I	J	J	J  q!f                 s   A**A.1A.weightsr   list[float]c                   t          ddg          }| r|                    d          }t          j        t          d          5  |                    t          |                     d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   (`weights` cannot contain missing values.r   r   )r   r!   r   s      r    test_weighted_weights_nan_raisesr%      s     !*1a& 1 1D ,F++	z)S	T	T	T * *i(()))* * * * * * * * * * * * * * * * * *s   #A55A9<A9c                   t          ddg                              ddi          }| r|                    d          }t          |                              ddi          }t                      5  |                    |          }d d d            n# 1 swxY w Y   t          j        t          d          5  |                                	                                 d d d            d S # 1 swxY w Y   d S )	Nr   r   dim_0r   r   r$   r   )
r   chunkr   r
   r   r   r   r   sumload)r   r!   r   r   s       r   %test_weighted_weights_nan_raises_daskr,   )   si    aV""GR=11D ,F++  &&}55G		!	! * *==))* * * * * * * * * * * * * * * 
z)S	T	T	T                   s$   1BBB9'C--C14C1time_chunks)r      resample_spec)1AS5AS10ASc                B   d }t          j        ddd          }t          j        t          j                            t          |                    dgd|i          }t          j        t          j                            t          |                    dg||d          }t          j        d	|i                              d| i          }t                      5  |
                    |
                              |           d d d            d S # 1 swxY w Y   d S )Nc                \    |                      | j                                      d          S )Ntime)r   r!   mean)dss    r   	mean_funcz.test_weighted_lazy_resample.<locals>.mean_funcB   s$    {{2:&&++F333    2000   r0   )startperiodsfreqr5   dimscoords)r5   r!   r   )r5   )xrcftime_ranger   nprandomrandlenr   r)   r
   resamplemap)r-   r/   r8   tr!   r   r7   s          r   test_weighted_lazy_resamplerK   :   sO   4 4 4 	fbu===Al29>>#a&&11&RSUUUG<
	s1vvfXqW6U6U  D 
VTN	#	#	)	)6;*?	@	@B		!	! 7 7
''++I6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   *DDD)r!   expectedr      r(   c                    t          ddg          }t          |           } |                    |                                           }t          |          }t          ||           d S Nr   r   r   r   sum_of_weightsr	   r!   rL   daresults       r   #test_weighted_sum_of_weights_no_nanrU   Q   b    
 
Aq6		B  G[[!!0022F""H6"""""r9   c                    t          t          j        dg          }t          |           } |                    |                                           }t          |          }t          ||           d S Nr   )r   rD   nanr   rQ   r	   rR   s       r    test_weighted_sum_of_weights_nanrZ   _   d    
 
BFA;		B  G[[!!0022F""H6"""""r9   c                     t          ddg          } t          ddg          }|                     |                                          }t          d          }t          ||           d S )Nr   r   TrP   )rS   r!   rT   rL   s       r   !test_weighted_sum_of_weights_boolr]   m   sd     
Aq6		Bt%%G[[!!0022F||H6"""""r9   rS         ?factor)r   r   Q	@skipnac                    t          |           } t          j        | |          }|                     |          |z  }|                     |                              |          }t          ||           d S Nra   )r   rB   	full_liker*   r   r	   )rS   r_   ra   r!   rL   rT   s         r   test_weighted_sum_equal_weightsrf   y   sp     
2Bl2v&&GvvVv$$v-H[[!!%%V%44F6"""""r9   r.      c                    t          ddg          }t          |           } |                    |                                           }t          |          }t          ||           d S rO   )r   r   r*   r	   rR   s       r   test_weighted_sum_no_nanri      sb     
Aq6		B  G[[!!%%''F""H6"""""r9   c                "   t          t          j        dg          }t          |           } |                    |                               |          }|rt          |          }nt          t          j                  }t          ||           d S Nr   rd   )r   rD   rY   r   r*   r	   r!   rL   ra   rS   rT   s        r   test_weighted_sum_nanrm      s    
 
BFA;		B  G[[!!%%V%44F %X&&RV$$6"""""r9   error)r   r   r`   c                    t          |           } t          j        | |          }|                     |          }|                     |                              |          }t          ||           d S rc   )r   rB   re   r6   r   r	   rS   ra   r_   r!   rL   rT   s         r    test_weighted_mean_equal_weightsrq      sm     
2B l2v&&Gwwfw%%H[[!!&&f&55F6"""""r9      g?c                    t          ddg          }t          |           } t          |          }|                    |                                           }t          ||           d S rO   r   r   r6   r	   rR   s       r   test_weighted_mean_no_nanru      sb     
Aq6		B  G""H[[!!&&((F6"""""r9   )      ?皙?333333?rv   rx   皙?rw   )gf?gCbԵ@g      @g#g]%@)rw   rw   ry   rx   rx   rv   rv   )gQ@g%T@gM-N@gqS@c                    t          g d          }g d}t          |           } t          |d|i          }|                    |                               |          }t          ||           d S )Nr   ffffff?皙@rM   皙@ffffff@r.   皙?皙?333333?皙?quantilerA   r   r   r   r   )r!   rL   rS   qrT   s        r   test_weighted_quantile_no_nanr      s{    " 
000	1	1BA  G:q/:::H[[!!**1--FHf%%%%%r9   c                    t          g d          } t          g d          }d}|                     |                              |          }t          ddg                              d          }t          ||           d S )Nr   r   r   rM   r   r   r   r         ?r   r   r   )rS   r!   r   rT   rL   s        r   #test_weighted_quantile_zero_weightsr      s}    	<<<	 	 B%%GA[[!!**1--F!Q  ))$//HHf%%%%%r9   c                    t          g d          } t          g d          }t          g d          }d}t          t          j        ddg|          d|i          }t          ||                     |                              |                     t          ||                     |                              |          d	
           d S )Nr   r   )r   -C6?r   r   r   r   r   r   r   gMbP?)rtol)r   rD   r   r	   r   r   )rS   ww_epsr   rL   s        r   test_weighted_quantile_simpler      s    	<<<	 	 B,,,A,,,--EAaVQ//QHHHH2;;q>>22155666Hbkk%0099!<<5IIIIIIr9   c                   t          ddddt          j        g          }t          g d          }ddg}|                    |                              ||           }| r)t          t          j        ddg|          d	|i
          }n=t          t          j        t          |          t          j                  d	|i
          }t          ||           d S )Nr   r   r   rM   )r   r   r   r   r         ?r   rd   r   r   )r   rD   rY   r   r   fullrG   r   )ra   rS   r   r   rT   rL   s         r   test_weighted_quantile_nanr      s     
Aq!Q'	(	(B///""A	dA[[^^$$Qv$66F NR[!Q33ZOLLLRWSVVRV44j!_MMMHf%%%%%r9   r{   nonan)idr|   r}   r~   r   	singlenanallnanz/ignore:All-NaN slice encountered:RuntimeWarning)r   marksr   )r   )r   r   r`   float | tuple[float, ...]floatc                    t          |           }t          j        ||          }|                    ||          }|                    |                              ||          }t          ||           d S rc   r   rB   re   r   r   r   )rS   r   ra   r_   r   r!   rL   rT   s           r   $test_weighted_quantile_equal_weightsr     so    , R==Dl4((G}}Qv}..H]]7##,,Qv,>>FHf%%%%%r9   z*`method` argument is not currently exposed)reasonmethod)linearinterpolated_inverted_cdfhazenweibullmedian_unbiasednormal_unbiased2c                    t          |           } t          j        | d          }|                     |||          }|                     |                              |||          }t          ||           d S )Nr`   )ra   r   r   )rS   r   ra   r_   r   r!   rL   rT   s           r   0test_weighted_quantile_equal_weights_all_methodsr   *  ss    2 
2Bl2t$$G{{1VF{;;H[[!!**1VF*KKFHf%%%%%r9   c                    t          ddg          } t          ddg          }d}t          dgd|gi                                          }|                     |                              |          }t	          ||           d S )Nr   Tr   r   r   )r   squeezer   r   r	   )rS   r!   r   rL   rT   s        r   test_weighted_quantile_boolr   L  s    	Aq6		Bt%%GA!j1#%6777??AAH[[!!**1--F6"""""r9   )r(   皙?)r   r   ))r   r   )r   r   c                   t          g d          }t          j        |           } t          j        |          }| j        dk    r^t          j        t          d          5  |	                    |          
                    |            d d d            d S # 1 swxY w Y   d S t          j        t          d          5  |	                    |          
                    |            d d d            d S # 1 swxY w Y   d S )Nr{   r   z q values must be between 0 and 1r   zq must be a scalar or 1d)r   rD   asarrayrB   	ones_likendimr   r   r   r   r   )r   rS   r!   s      r   %test_weighted_quantile_with_invalid_qr   X  ss   	000	1	1B

1Al2Gv{{]:-OPPP 	- 	-KK  ))!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- ]:-GHHH 	- 	-KK  ))!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$    )BBB>)C44C8;C8       @c                "   t          t          j        dg          }t          |           } |rt          |          }nt          t          j                  }|                    |                               |          }t          ||           d S rk   )r   rD   rY   r   r6   r	   rl   s        r   test_weighted_mean_nanr   f  s    
 
BFA;		B  G %X&&RV$$[[!!&&f&55F6"""""r9   c                     t          ddg          } t          ddg          }t          d          }|                     |                                          }t          ||           d S )Nr   Trt   rS   r!   rL   rT   s       r   test_weighted_mean_boolr   x  sb    	Aq6		Bt%%G||H[[!!&&((F6"""""r9   gUUUUUU?c                    t          ddg          }t          |           } |                    |                                           }t          |          }t          ||           d S rO   )r   r   sum_of_squaresr	   rR   s       r   #test_weighted_sum_of_squares_no_nanr     rV   r9   c                    t          t          j        dg          }t          |           } |                    |                                           }t          |          }t          ||           d S rX   )r   rD   rY   r   r   r	   rR   s       r    test_weighted_sum_of_squares_nanr     r[   r9   c                    t          |           } t          j        | |          }|                     |          }|                     |                              |          }t          ||           d S rc   )r   rB   re   varr   r	   rp   s         r   test_weighted_var_equal_weightsr     m     
2B l2v&&GvvVv$$H[[!!%%V%44F6"""""r9   gQ?g        c                    t          ddg          }t          |           } t          |          }|                    |                                           }t          ||           d S rO   r   r   r   r	   rR   s       r   test_weighted_var_no_nanr     b     
Aq6		B  G""H[[!!%%''F6"""""r9   c                    t          t          j        dg          }t          |           } t          |          }|                    |                                           }t          ||           d S rX   )r   rD   rY   r   r   r	   rR   s       r   test_weighted_var_nanr     d     
BFA;		B  G""H[[!!%%''F6"""""r9   c                     t          ddg          } t          ddg          }t          d          }|                     |                                          }t          ||           d S Nr   Tr   r   r   s       r   test_weighted_var_boolr     b    	Aq6		Bt%%G||H[[!!%%''F6"""""r9   c                    t          |           } t          j        | |          }|                     |          }|                     |                              |          }t          ||           d S rc   )r   rB   re   stdr   r	   rp   s         r   test_weighted_std_equal_weightsr     r   r9   c                    t          ddg          }t          |           } t          |          }|                    |                                           }t          ||           d S rO   r   r   r   r	   rR   s       r   test_weighted_std_no_nanr     r   r9   c                    t          t          j        dg          }t          |           } t          |          }|                    |                                           }t          ||           d S rX   )r   rD   rY   r   r   r	   rR   s       r   test_weighted_std_nanr     r   r9   c                     t          ddg          } t          ddg          }t          d          }|                     |                                          }t          ||           d S r   r   r   s       r   test_weighted_std_boolr     r   r9   c                   | |z                       ||          }|dk    r|S |                    |                                           }|                     |d          }|dk    }|                    |          }|dk    r|S ||z  }	|dk    r|	S | |	z
  }
|
dz  |z                       ||          }|dk    r|S ||z  }|d	k    r|S |d
k    rt          j        |          S dS )z
    Generate expected result using ``*`` and ``sum``. This is checked against
    the result of da.weighted which uses ``dot``
    dimra   r*   Tr   rQ   r6   r   r   r   r   N)r*   wherenotnullrD   sqrt)rS   r!   r   ra   	operationweighted_summasked_weightsrQ   valid_weightsweighted_meandemeanedr   r   s                r   expected_weightedr     s$    L%%#f%==LE]]2::<<00N#''C'==N"a'M#))-88N$$$ >1MFM!H{g-22s62JJN$$$
>
)CE
Ews|| r9   c                   |                      |                              |          }t          | |||d          }t          ||           |                      |                              ||          }t          | |||d          }t          ||           |                      |                              ||          }t          | |||d          }t          ||           |                      |                              ||          }t          | |||d          }t          ||           |                      |                              ||          }t          | |||d          }t          ||           |                      |                              ||          }t          | |||d          }t          ||           d S )NrQ   rd   r*   r6   r   r   r   )	r   rQ   r   r   r*   r6   r   r   r   )r   r!   r   ra   rT   rL   s         r   check_weighted_operationsr   4  s   ]]7##22377F wV=MNNHHf%%% ]]7##''F';;F wVUCCHHf%%% ]]7##((V(<<F wVVDDHHf%%% ]]7##223v2FFF wV=MNNHHf%%% ]]7##''F';;F wVUCCHHf%%% ]]7##''F';;F wVUCCHHf%%%%%r9   r   )abc)r   r   r   r   r   Nadd_nans)NTFz(ignore:invalid value encountered in sqrtc                4   d}t          g dg dg d          }t          t          j                            ddd          ||          }t          j                            ddd          }|r]t          |j        dz            }t          j        |                                t          j        	                    |j        |d          <   t          |||          }t          ||| |           |                    d	          }t          ||| |           d S )
Nr   r   rg   r?   rv   Freplacer   r   )dictr   rD   rE   randnintsizeNaNravelchoicer   r   )r   r   ra   r@   rA   r!   r   r   s           r   test_weighted_operations_3Dr   T  s   
 DLLLLLLLLLAAAF	1a00tFKKKG9??1a##D  M	D !!FHf

RY%%diE%BBCTV444DdGS&999???''DdGS&99999r9   )r   )ry   g?r   c                   d}t          g dg dg d          }t          j        d                              ddd                              t
                    }|r]t          |j        d	z            }t          j        |	                                t          j
                            |j        |d
          <   t          |||          }t          j        |          }	|                    |	                              || |          }
|                    || |          }t#          ||
           |                    d          }|                    |	                              || |          }t#          ||j                   d S )Nr   )r   r   r   r   )r   r   r   rM   rg   <   rM   rg   r.   rv   Fr   r?   r   r   r   )r   rD   arangereshapeastyper   r   r   r   r   rE   r   r   rB   r   r   r   r   r   r   )r   r   r   ra   r@   rA   r   r   rS   r!   rT   rL   r7   result2s                 r   test_weighted_quantile_3Dr   m  se   
 DIIIAAAF9R==  Aq))0077D  M	D !!FHf

RY%%diE%BBC	4d6	2	2	2B l2G[[!!**1#f*EEF{{1#f{55HHf%%%	F	#	#Bkk'""++A3v+FFGHgl+++++r9   z@coords_weights, coords_data, expected_value_at_weighted_quantiler   r   r   rM   rg   g      @)r   rM   rg   r.   g?gffffff@coords_weightsIterable[Any]coords_data#expected_value_at_weighted_quantilec                h   t          g ddt          |                     }t          g ddt          |                    }t          ||dd           d}|                    |                              |d	          }t          |gd
|gi                                          }t          ||           |                    d          }t          ||dd           |                    |                              |d	          }	t          |	|                    d                     dS )aW  Check that weighted operations work with unequal coords.


    Parameters
    ----------
    coords_weights : Iterable[Any]
        The coords for the weights.
    coords_data : Iterable[Any]
        The coords for the data.
    expected_value_at_weighted_quantile : float
        The expected value for the quantile of the weighted data.
    )r   r^   r^   r   )r   r?   r   r   Nr   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   )
r  r  r  
da_weightsda_datar   	da_actualda_expectedds_data	ds_actuals
             r   (test_weighted_operations_nonequal_coordsr    sR   2 6$2H2H2H  J 6$:M:M:MNNNGgzs4HHHHH  ,,55hC5HHI	,-zH:6N  gii  I{+++  f --Ggzs4HHHH  ,,55hC5HHII{5565BBCCCCCr9   
shape_data))rg   )rg   rg   )rg   rg   rg   shape_weightsc                   t          t          j        j        |           }t          j        j        |  }|r]t	          |j        dz            }t          j        |                                t          j                            |j        |d          <   t          |          }t          ||d|           t          ||d |           |
                    d          }t          ||d|           t          ||d |           d S )Nrv   Fr   r'   r   r   )r   rD   rE   r   r   r   r   r   r   r   r   )r  r  r   ra   r!   r   r   s          r   )test_weighted_operations_different_shapesr    s     	788G9?J'D  M	D !!FHf

RY%%diE%BBCT??DdGWf===dGT6:::???''DdGWf===dGT6:::::r9   r   )rQ   r*   r6   r   r   r   r   
keep_attrs)TFNc                d   t          t          j                            dd          t	          d                    }t          t          j                            dd                    }|r|                    d          }t	          d          |_        d|i}| dk    rd	|d
<    t          |                    |          |           di |}| dk    r.|j        |r|j        ni k    sJ |j        |r|j        ni k    sJ d S |j        |r|j        ni k    sJ |j        |r|j        ni k    sJ d S )Nr   r!   attrattrsr   r   r  r   r   r   rQ    )	r   rD   rE   r   r   r   r  getattrr   )r   r   r  r!   r   kwargsrT   s          r   "test_weighted_operations_keep_attrr    sT    	1--Ty5I5I5IJJJGRY__Q**++D ,F++9%%%DJJ'FJs7WT]]7++Y77AA&AAF$$$| CDDDD| CDDDDDD| CDDDD|j @

bAAAAAAr9   c                   t          t          j                            dd                    }t          t          j                            dd          t	          d                    }|                    d          }ddi}| d	k    rd
|d<    t          |                    |          |           di |}|j        j	        |j        j	        k    sJ d S )Nr   r   r  r  r   r   r  Tr   r   r   r  )
r   rD   rE   r   r   r   r  r   r   r  )r   r!   r   r  rT   s        r   +test_weighted_operations_keep_attr_da_in_dsr    s     	1--..GRY__Q**$F2C2C2CDDDD???$$DD!FJs7WT]]7++Y77AA&AAF6<68>))))))r9   )rQ   r*   r6   r   c                   t          t          j                            dd                    }t	          j        |          }|r|                    d          }ddi}| dk    rd|d<   |j        j         d	}t          j
        t          |
          5   t          |                    |          |           di | d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   bad_dimr   r   r   z5Weighted does not contain the dimensions: {'bad_dim'}r   r  )r   rD   rE   r   rB   r   r   	__class____name__r   r   r   r  r   )r   r   r   r!   r  	error_msgs         r   test_weighted_bad_dimr"    s.    RY__Q**++Dl4  G ,F++YFJs >" 	8 	8 	8  
z	3	3	3 = =2g&&	22<<V<<<= = = = = = = = = = = = = = = = = =s   *C

CC)r   r   r   r   )r   r   r!   r"   r   r   )
rS   r"   r   r   ra   r   r_   r   r   r   )r  r  r  r  r  r   r   r   )C
__future__r   collections.abcr   typingr   numpyrD   r   xarrayrB   r   r   xarray.testsr   r	   r
   r   r   markparametrizer    rY   r%   r,   rK   rU   rZ   r]   rf   ri   rm   filterwarningsrq   ru   r   r   r   r   paramr   skipr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r  r9   r   <module>r.     s   " " " " " " $ $ $ $ $ $                % % % % % % % %              }55   65 }55bfa[26262B$CDD* * * ED 65* }55bfa[26262B$CDD  ED 65  //*@AA7 7 BA 0/  7& !fa[Aq61+A/2q'261BC # #	 # !fa[Aq626"aVRV$4AwlC # #	 #	# 	# 	# a1bf+7GHII<<<00=11	# 	# 21 10 JI	# 1vqkQFA;!QD # # # 1vqkQFA;!Qq!fa[Q  =11# # 21 # G$$a1bf+7GHII=11<<<00# # 10 21 JI %$# 1vsmq!fc]aVRV<LM # # #  655444	

 655444	
	 & & && & &J J J =11& & 21&  222w???ac1c37KHHHVRVRV$+,,A 	
 	
 	

  /00=11At9--& & & .- 21 10 "& EFF%%%	
Cac26*	   /00=11  
 
	& 	&
 
 21 10  GF,	&	# 	# 	# MNN
- 
- ON
- 1vsmq!fbf-=A?OP  =11# # 21 ## # # !fe_1vqkQFA;"a!= # #	 # !fa[Aq61+A{b!WaL9 # #	 # G$$a1bf+677=11<<<00# # 10 21 87 %$# 1vtn1vsmq!fbf=MN # # # 1vqkQFBF+;q!fbf=MN # # ## # # G$$a1bf+677=11<<<00# # 10 21 87 %$# 1vwrwt}}5A}1vrvFVW # # # 1vqkQFBF+;q!fbf=MN # # ## # #$ $ $N& & &@  RSS]33#677FGG: : HG 87 43 TS:*  RSSEFF]33#677, , 87 43 GF TS,6 F	|||S)	|||S)	|||S) "D "D "D "DJ '@AA*CDD]33#677FGG; ; HG 87 43 ED BA
;, Q  }55':;;B B <; 65	 B. Q * *	 *  &STT}55= = 65 UT= = =r9   