
    G/PhI                        d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZ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ZddlZd Z G d d          Z G d d	          Z G d
 d          Z G d d          Z  G d d          Z! G d d          Z"d Z#d Z$d Z%d Z&d Z'd Z( G d d          Z) G d d          Z* G d d          Z+ G d d          Z,dS ) z"Test functions for matrix module

    )assert_equalassert_array_equalassert_array_max_ulpassert_array_almost_equalassert_raisesassert_)arangeaddfliplrflipudzerosoneseyearraydiaghistogram2dtrimask_indicestriu_indicestriu_indices_fromtril_indicestril_indices_fromvanderNc                 N    t          |           }t          j        ||          }|S N)r	   r
   outer)ndatas     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/lib/tests/test_twodim_base.pyget_matr       s#    !99D9T4  DK    c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestEyec           
      N   t          t          d          t          g dg dg dg dg                     t          t          dd          t          g dg dg dg dgd                     t          t          d          d	k    t          dt                               d S )
N      r   r   r   r   r'   r   r   r   r   r'   r   r   r   r   r'   fdtype   r'   )r   r   r   boolselfs    r   
test_basiczTestEye.test_basic   s    SVVLLL(LL(LL(LL* + +	, 	, 	, 	S#&&&LLL(LL(LL(LL* ,/0 0	1 	1 	1 	SVVq[$'''	) 	) 	) 	) 	)r!   c           	      j   t          t          t          j        d          t                    t          ddgddgg                     t          t          t          j        d          t          j        d          t          j        d                    t          g dg dg                     d S )	N   r,   r'   r   r%   )Mkr(   r)   )r   r   npuint64intr   r0   s    r   test_uint64zTestEye.test_uint64)   s    S1S11151a&1a&9I3J3JKKKS111FFFLLL,,,788	: 	: 	: 	: 	:r!   c           
          t          t          dd          t          g dg dg dg dg                     t          t          dd          t          g dg d	g dg dg                     d S )
Nr%   r'   r6   r(   r)   r*   r   r   r   r   r&   r   r   r   r0   s    r   	test_diagzTestEye.test_diag/   s    Sa[[[LLL(LL(LL(LL* + +	, 	, 	, 	Sb\\\LLL(LL(LL(LL* + +	, 	, 	, 	, 	,r!   c           
          t          t          dd          t          g dg dg dg dg                     t          t          dd          t          g dg dg d	g                     d S )
Nr%   r.   r'   r   r   r   r'   r   )r   r   r'   r   r   r   r&   r(   r)   r?   r0   s    r   test_2dzTestEye.test_2d<   s    SAYYIII%II%II%II' ( (	) 	) 	) 	SAYYLLL(LL(LL* + +	, 	, 	, 	, 	,r!   c           
          t          t          ddd          t          g dg dg dg                     t          t          ddd          t          g d	g d	g d
g dg                     d S )Nr.   r%   r4   r<   r)   r*   r=   rD   rB   rC   r?   r0   s    r   test_diag2dzTestEye.test_diag2dH   s    SA^^^LLL(LL(LL* + +	, 	, 	,
 	SA___III%II%II%II' ( (	) 	) 	) 	) 	)r!   c                    t          t          ddd          ddgddgg           t          t          ddd          ddgddgg           t          t          ddd          ddgddgg           t          t          ddd          ddgddgg           t          t          ddd          ddgddgddgg           t          t          ddd          ddgddgddgg           t          t          ddd          ddgddgddgg           t          t          ddd          ddgddgddgg           t          t          ddd          ddgddgddgg           d S )Nr4   r'   r   r>   rG   r.   r   r   r0   s    r   test_eye_boundszTestEye.test_eye_boundsT   s   SAq\\QFQF#3444SAr]]aVaV$4555SAq\\QFQF#3444SAr]]aVaV$4555SAq\\QFQFQF#;<<<SAq\\QFQFQF#;<<<SAr]]aVaVaV$<===SAr]]aVaVaV$<===SAr]]aVaVaV$<=====r!   c                 R    t          t          ddd          ddgddgg           d S )Nr4   S3r,      1r!   rK   r0   s    r   test_stringszTestEye.test_strings_   s?    SAT***SkC;/	1 	1 	1 	1 	1r!   c                 \    t          t          ddt                    ddgddgg           d S )Nr4   r,   TF)r   r   r/   r0   s    r   	test_boolzTestEye.test_boolc   s4    SAT***dE]UDM,JKKKKKr!   c                     t          ddd          }t          dddd          }t          ||           |j        j        sJ |j        j        rJ |j        j        rJ |j        j        sJ d S )Nr%   r.   r>   r<   F)r6   order)r   r   flagsc_contiguousf_contiguous)r1   mat_cmat_fs      r   
test_orderzTestEye.test_orderf   s    AqBAqBc***UE"""{'''';++++;++++{''''''r!   N)__name__
__module____qualname__r2   r:   r@   rE   rH   rL   rP   rR   r[    r!   r   r#   r#      s        ) ) ) : : :, , ,
, 
, 
,
) 
) 
)	> 	> 	>1 1 1L L L( ( ( ( (r!   r#   c                   .    e Zd Zd ZddZd Zd Zd ZdS )TestDiagc                    dt          d          z                      d          }t          d          }t          d          D ]}||         |||f<   t	          t          |          |           t          d          }|                                }t          d          D ]"}||         |||dz   f<   ||         ||dz   |f<   #t	          t          |d          |           t	          t          |d          |           d S )	Nd      l)rd   rd   )   rf   r4   r<   rG   )r	   astyper   ranger   r   copy)r1   valsbr6   cs        r   test_vectorzTestDiag.test_vectorq   s    fQii'',,&MMq 	 	A1gAadGGT$ZZ###&MMFFHHq 	" 	"Aq'AaQhKq'Aa!eQhKKT$!___a(((T$"%%%q)))))r!   Nc                    |(dt          d          z  dz                       d          }t          d          }t          d          D ]}|||f         ||<   t	          t          |          |           |dz  }t          d          D ]}|||dz   f         ||<   t	          t          |d          |d d                    t          d          D ]}||dz   |f         ||<   t	          t          |d	          |d d                    d S )
Nrc   rd   r'   re   )rd   r   r.   r4   rG   )r    rg   r   rh   r   r   )r1   rj   rk   r6   s       r   test_matrixzTestDiag.test_matrix   s   <'!**$q(0055D$KKq 	 	A1:AaDDT$ZZ###Eq 	" 	"A1q5>AaDDT$]]AbqbE***q 	" 	"AAq>AaDDT$^^QrrU+++++r!   c                 z    t          dt          d          z  dz   dd          }|                     |           d S )Nrc   rd   r'   rT   re   )rU   r-   )r   r    ro   )r1   rj   s     r   test_fortran_orderzTestDiag.test_fortran_order   s@    cGAJJ&*3cBBBr!   c                    ddgddgddgg}t          t          |d          g            t          t          |d          dg           t          t          |d          ddg           t          t          |d	          ddg           t          t          |d
          dg           t          t          |d          g            d S )Nr'   r4   r.   r%   rd      r<   r   r>   rG   rJ   )r   r   )r1   As     r   test_diag_boundszTestDiag.test_diag_bounds   s    VaVaV$T!q\\\2&&&T!q\\\A3'''T!q\\\Aq6***T!r]]]QF+++T!r]]]QC(((T!r]]]B'''''r!   c                 B    t          t          t          dggg           d S )Nr'   )r   
ValueErrorr   r0   s    r   test_failurezTestDiag.test_failure   s     j$1#00000r!   r   )r\   r]   r^   rm   ro   rq   ru   rx   r_   r!   r   ra   ra   p   sd        * * *, , , ,  ( ( (1 1 1 1 1r!   ra   c                       e Zd Zd ZdS )
TestFliplrc                 &   t          t          t          t          d                     t	          d          }|d d d d df         }t          t          |          |           g dg dg}g dg dg}t          t          |          |           d S )Nr%   r>   r   r'   r4   r.   r%   rd   )r4   r'   r   )rd   r%   r.   )r   rw   r   r   r    r   r1   ark   s      r   r2   zTestFliplr.test_basic   s    j&$q''222AJJaaa2gJVAYY"""YYYYYYYYVAYY"""""r!   Nr\   r]   r^   r2   r_   r!   r   rz   rz      s#        	# 	# 	# 	# 	#r!   rz   c                       e Zd Zd ZdS )
TestFlipudc                     t          d          }|d d dd d f         }t          t          |          |           g dg dg}g dg dg}t          t          |          |           d S )Nr%   r>   r|   r}   )r    r   r   r~   s      r   r2   zTestFlipud.test_basic   s    AJJdddAAAgJVAYY"""YYYYYYYYVAYY"""""r!   Nr   r_   r!   r   r   r      s#        # # # # #r!   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                            dd	d
g          d             ZdS )TestHistogram2dc                    t          g d          }t          g d          }t          j        ddd          }t          j        ddd          }t          ||||f          d         }t          g dg dg dg d	g d
g dg dg dg dg	          }t	          |j        |           t          |||          d         }t	          |j        |           t          t          t          d                    t          t          d                              \  }}}t	          |t          dd                     t	          |t          j        ddd                     t	          |t          j        ddd                     d S )N)g̙
}?g%?g$F?g;cjY?gI+?)gp5x?g?_?gp?gbd?gg<=?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   r   r   r   r   )	r'   r   r'   r   r   r   r   r   r   )	r   r'   r   r   r   r   r   r   r   	      )	r   r7   linspacer   r   Tlistrh   r   )r1   xyxedgesyedgesHanswers          r   test_simplezTestHistogram2d.test_simple   s   LLLN NHHHJ JQ2&&Q2&&1vv.//2(((((((((((((((((((((((((((*	+ 	+ 	13'''1f%%a(13''''U2YYeBiiII661c"bkk***62;q!R#8#899962;q!R#8#899999r!   c           	         t          g d          }t          g d          }t          ||dddgddggd          \  }}}t          g d	g d
g dg dg dg dg          }t          ||dz  d           t          |t	          j        ddd                     t          |t	          j        ddd                     d S )N)r'   r'   r4   r.   r%   r%   r%   rd   )r'   r.   r4   r   r'   r4   r.   r%   )rs   rd   r   rs   rd   T)rh   density)        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   r   r   r   r'   g       @r.   rf   )r   r   r   r   r7   r   r1   r   r   r   xedyedr   s          r   	test_asymzTestHistogram2d.test_asym   s    ***++***++!q&!Q!Q 0$@ @ @3__________  	"!VBY2223Aq! 4 45553Aq! 4 455555r!   c                     t          g d          }t          g d          }t          ||g dg dgd          \  }}}t          g dg dg dg          dz  }t          ||d	           d S )
N)	r'   r4   r.   r'   r4   r.   r'   r4   r.   )	r'   r'   r'   r4   r4   r4   r.   r.   r.   )r'   r4   r.   rd   T)r   )r'   r'         ?)r   r         ?g      "@r.   )r   r   r   r   s          r   test_densityzTestHistogram2d.test_density   s    ---..---..!q<<<.> > >3


"

%' ( ((*+ 	"!VQ/////r!   c                     t           j                            d          dz   dz   }t          ||dddgddgf          \  }}}t	          |d           d S )Nrc         ?g    .A)r%   rd   r   r'   )rh   )r7   randomrandr   r   )r1   rr   r   r   s        r   test_all_outliersz!TestHistogram2d.test_all_outliers   s^    INN3"$s*!!Q1v1v6FGGG31a     r!   c                     t          g g ddgddgf          \  }}}t          |t          dgg                     t          g g d          \  }}}t          |t          j        d                     d S )Nr   r'   binsr   r%   )r%   r%   )r   r   r   r7   r   )r1   r   edge1edge2s       r   
test_emptyzTestHistogram2d.test_empty   s}    %b"QFQF3CDDD5%Qtf...%b"15555%Q 0 011111r!   c                    t          g d          }t          g d          }d}t          |||df          \  }}}t          g dg dg dg dg dg dg dg dg dg d	g
          }t          ||           t          |t          g d
                     t          ||d|f          \  }}}t          g dg dg dg dg          }t          ||           t          |t          g d
                     d S )N)r   g<D瑷?g ?g!,3{?glyT?gf.?r'   )r   g(@TT\?gIZ?gYN?gK?~?g&W-U?r'   )r   g?g?g333333?g?r   g333333?gffffff?g?g?r'   r%   )g       @r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   g      ?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   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r   r   )r1   r   r   edgesr   xeyer   s           r   test_binparameter_combinationz-TestHistogram2d.test_binparameter_combination   s           D1uaj11	2r	
  
  	1f%%%2u%=%=%=>>???1q%j11	2r55555555555578 8
 	1f%%%2u%=%=%=>>?????r!   c           	      j    G d d          }ddg} |            }t          ||          }t          ||f||fi fk               t          ||          }t          ||f||fi fk               t          |||          }t          ||f||ft          |          f           t          |||dg          }t          ||f||ft          |dg          f           t          t          t           |||g           t          |||          }t          ||f||ft          |          f           d S )Nc                       e Zd Zd ZdS )5TestHistogram2d.test_dispatch.<locals>.ShouldDispatchc                     |||fS r   r_   )r1   functiontypesargskwargss        r   __array_function__zHTestHistogram2d.test_dispatch.<locals>.ShouldDispatch.__array_function__  s    dF**r!   N)r\   r]   r^   r   r_   r!   r   ShouldDispatchr     s#        + + + + +r!   r   r'   r4   r   rd   )weights)r   r   dictr   	Exception)r1   r   xys_dr   s        r   test_dispatchzTestHistogram2d.test_dispatch  s   	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ VnR  ~'#rB77888C  ~'"cB77888BS)))^%Bx3@AAABc1X...^%BxC81D1D1DEFFFib"C5AAAAB,,,^%Bxc1B1B1BCDDDDDr!   )x_leny_len)r   r   )      c                     t          j        |          t          j        |          }}t          j        t          d          5  t          ||           d d d            d S # 1 swxY w Y   d S )Nz"x and y must have the same length.)match)r7   r   pytestraisesrw   r   )r1   r   r   r   r   s        r   test_bad_lengthzTestHistogram2d.test_bad_length,  s    wu~~rwu~~1]:!EG G G 	 	1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A""A&)A&N)r\   r]   r^   r   r   r   r   r   r   r   r   markparametrizer   r_   r!   r   r   r      s        : : :46 6 6 0 0 0! ! !
2 2 2@ @ @>E E E( [/(H1EFF  GF  r!   r   c                       e Zd Zd ZdS )TestTric                     t          g dg dg dg          }t          t          d          |           t          t          dt                    |                    t                               d S )NrB   r'   r'   r   r'   r'   r'   r.   r,   )r   r   r   r/   rg   )r1   outs     r   
test_dtypezTestTri.test_dtype5  sq    YYYYYYY  ! ! 	3q663'''3q---szz$/?/?@@@@@r!   N)r\   r]   r^   r   r_   r!   r   r   r   4  s(        A A A A Ar!   r   c                     t           j        d         t           j        d         z   D ]} t          j        d|           }t          j        |          }t          j        |          }t          |ddgddgg           t          ||j                   t          |j        |j                   t          |j        |j                   d S )NAllFloat
AllInteger)r4   r4   r,   r'   r   )	r7   	typecodesr   triltriur   r   r   r-   )r-   r   rk   rl   s       r   test_tril_triu_ndim2r   =  s    j)BL,FF ' 'GF%(((GAJJGAJJ11v1v.///1ac"""QWag&&&QWag&&&&' 'r!   c                  T   t           j        d         t           j        d         z   D ] } t          j        ddgddggddgddggddgddggg|           }t          j        ddgddggddgddggddgddggg|           }t          j        ddgddggddgddggddgddggg|           }t          j        |          }t          j        |          }t          ||           t          ||           t          |j        |j                   t          |j        |j                   d S )Nr   r   r'   r   r,   )r7   r   r   r   r   r   r   r-   )r-   r   a_tril_desireda_triu_desireda_triu_observeda_tril_observeds         r   test_tril_triu_ndim3r   I  s   j)BL,FF 5 5HVaVVaVVaV 	  
 VaVVaVVaV# 	  
 VaVVaVVaV# 	  
 '!**'!**?N;;;?N;;;_*AG444_*AG4444+5 5r!   c                  R   t          j        ddt           j        gg dt           j        ddgg          } t          j        g dg dt           j        ddgg          }|j        }t	          t          j        |           |           t	          t          j        |           |           d S )Nr'   r   rB   r   )r7   r   infr   r   r   r   )arrout_trilout_trius      r   test_tril_triu_with_infr   b  s    
(Q26NIIVQN$ % %C x"&!Q) * *H zHrws||X...rws||X.....r!   c                     t           j        d         D ]w} | dk    r	t          j        d|           }t          t          j        |          j        |j                   t          t          j        |          j        |j                   xt          j        ddgddggd	          }t          t          j        |          j        |j                   t          t          j        |          j        |j                   t          j        dd
          }t          t          j        |          j        |j                   t          t          j        |          j        |j                   d S )NAllV)r.   r.   r,   z2001-01-01T12:00z2002-02-03T13:56z2004-01-01T12:00z2003-01-03T13:45
datetime64zf4,f4)r7   r   r   r   r   r-   r   r   )rl   r   s     r   test_tril_triu_dtyper   o  s9    \%  4 488hvQ'''RWS\\'333RWS\\'3333 (');<');<>%' ' 'C #SY///#SY///
(6
)
)
)C#SY///#SY/////r!   c                  T   t          dt          j                  } t          j        d                              dd          }t          ||          t          g d                     t          dt          j        d          }t          ||         t          g d                     d S )Nr.   r   )r   r'   r4   r%   rd      r'   )r'   r4   rd   )r   r7   r   r	   reshaper   r   )iur   iu1s      r   test_mask_indicesr     s    	a	!	!B
	!Q""Aque$6$6$677888
q"'1
%
%CqvuYYY//00000r!   c            
      "   t          d          } t          dd          }t          dd          }t          ddd          }t          j        g dg dg d	g d
g          }t          j        dd                              dd          }t          ||          t          g d                     t          ||         t          g d                     d|| <   t          |t          g dg dg dg dg                     d||<   t          |t          g dg dg dg dg                     d||<   t          |t          g dg dg dg dg                     d||<   t          |t          g dg dg dg dg                     d S )Nr%   r4   r<   rd   mr6   r   r'   r4   r.   r%   rd   rs   rf   r   r   r   r                  r'      )
r'   rd   rs   r   r   r   r   r   r   r   )
r'   rs   rf   r   r   r   r         r   r>   )r>   r4   r.   r%   )r>   r>   rf   r   )r>   r>   r>   r   r>   r>   r>   r>   )r>   r4   r.   r%   rd   )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  r  r%   rd   )r  r  r  r  r   )r  r  r  r  r  )r   r7   r   r	   r   r   )il1il2il3il4r   rk   s         r   test_tril_indicesr    sP   
q//C
qA


C
qA


C
qA
#
#
#C
,,,,,!//"""$ 	% 	%A 		!R  A&&A qvAAABBD D DqvBBBCCE E E AcFqmmm,nn......0 1 12 2 2
 AcFq...0002222224 5 56 6 6 AcFq0002222222224 5 56 6 6
 AcFq3336667777779 : :; ; ; ; ;r!   c                       e Zd Zd ZdS )TestTriuIndicesc           
      "   t          d          }t          dd          }t          dd          }t          ddd          }t          j        g dg dg d	g d
g          }t          j        dd                              dd          }t          ||         t          g d                     t          ||         t          g d                     d||<   t          |t          g dg dg dg dg                     d||<   t          |t          g dg dg dg dg                     d||<   t          |t          g dg dg dg dg                     d||<   t          |t          g dg dg dg dg                     d S )Nr%   r4   r<   rd   r   r   r   r   r   r   r'   r   )
r'   r4   r.   r%   rs   rf   r   r   r   r   )r'   r4   r.   r%   rd   rf   r   r   r   r   r   r   r   r   r>   r  )rd   r>   r>   r>   )r   r   r>   r>   )r   r   r   r>   )r>   r>   r>   r>   r>   )rs   r>   r>   r>   r>   )r   r   r>   r>   r>   )r   r   r   r>   r>   r  )r>   r>   r  r  )rd   r>   r>   r  )r>   r>   r  r  r  )rs   r>   r>   r  r  )r   r   r>   r>   r  )r   r7   r   r	   r   r   )r1   r   iu2iu3iu4r   rk   s          r   test_triu_indicesz!TestTriuIndices.test_triu_indices  sV   1oo1"""1"""1Q'''Hlll"ll%oo&&&( ) ) Ia$$Q** 	1S6 !B!B!BCC	E 	E 	E1S6  ": ": ": ; ;	< 	< 	<
 #1 "2"2"2"1//"1//"2"2"2"4 5 5	6 	6 	6
 #1 "6"6"6"5"5"5"6"6"6"6"6"6"8 9 9	: 	: 	: #1 "4"4"4"2"2"2"1//"2"2"2"4 5 5	6 	6 	6
 #1 "9"9"9"7"7"7"7"7"7"6"6"6"8 9 9	: 	: 	: 	: 	:r!   N)r\   r]   r^   r  r_   r!   r   r	  r	    s#        .: .: .: .: .:r!   r	  c                       e Zd Zd ZdS )TestTrilIndicesFromc                     t          t          t          t          j        d                     t          t          t          t          j        d                     d S N)r4   )r4   r4   r4   )r   rw   r   r7   r   r0   s    r   test_exceptionsz#TestTrilIndicesFrom.test_exceptions  @    j"3RWT]]CCCj"3RWY5G5GHHHHHr!   Nr\   r]   r^   r  r_   r!   r   r  r    (        I I I I Ir!   r  c                       e Zd Zd ZdS )TestTriuIndicesFromc                     t          t          t          t          j        d                     t          t          t          t          j        d                     d S r  )r   rw   r   r7   r   r0   s    r   r  z#TestTriuIndicesFrom.test_exceptions  r  r!   Nr  r_   r!   r   r  r    r  r!   r  c                       e Zd Zd Zd ZdS )
TestVanderc                 f   t          j        g d          }t          |          }t          j        g dg dg dg dg          }t          ||d d dd f                    |j        d         }t          d          D ]2}t          ||          }t          ||d d ||z
  |f                    3d S )	N)r   r'   rG   r.   r   )r'   r'   r'   r'   r'   )r   ir%   rG   r'   )Q      r   r.   r'   r'   rs   N)r7   r   r   r   shaperh   )r1   rl   vpowersr   r   s         r   r2   zTestVander.test_basic  s    H]]]##1II???*??---,,,. / /
 	1fQQQUm,,,LOq 	4 	4AqAAq&AaCE"23333	4 	4r!   c                 P   t          g dt          j                  }t          |          }t          j         g dg dg dg          }t	          ||           t          ddg          }t          |d	          }t          j         g d
g dg          }t	          ||           d S )N)r   r   r,   )y   r   r'   )   r%  r'   )   r   r'         ?      ?      ?      r.   r  )y               @r)  r'   )y              r*  r'   )r   r7   int8r   r   )r1   rl   r"  expecteds       r   test_dtypeszTestVander.test_dtypes  s    ---rw///1II8\\\*]])\\+ , , 	1h'''66"##1NNN8]]]+^^- . .
 	1h'''''r!   N)r\   r]   r^   r2   r-  r_   r!   r   r  r    s2        4 4 4( ( ( ( (r!   r  )-__doc__numpy.testingr   r   r   r   r   r   numpyr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r   r    r#   ra   rz   r   r   r   r   r   r   r   r   r  r	  r  r  r  r_   r!   r   <module>r1     sd                                                       
       U( U( U( U( U( U( U( U(p,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1^
# 
# 
# 
# 
# 
# 
# 
#	# 	# 	# 	# 	# 	# 	# 	#y y y y y y y yxA A A A A A A A	' 	' 	'5 5 52
/ 
/ 
/0 0 0,1 1 1,; ,; ,;^/: /: /: /: /: /: /: /:dI I I I I I I II I I I I I I I( ( ( ( ( ( ( ( ( (r!   