
    Vpf                        d Z 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
mZ ddl
mZ ddl
mZ dd	lmZ dd
lmZ ddlmZ ddl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! ej"        Z#e	j$        e	j%        e	j&        dZ'd Z(ddZ)ddZ* e e	j+        d           eed          dd                        Z+ e  e,e	de	j-                  d           eed          dd                        Z. e e	j/        d           eed          dd                        Z/ e e	j-        d           eed          dd                        Z- e e	j0        d           eed          dd                        Z0 e e	j1        d           eed          dd                         Z1 e e	j2        d           eed          dd!                        Z2 e e	j3        d           eed          dd"                        Z3 e e	j4        d           eed          dd#                        Z4 e e	j5        d           eed          dd$                        Z5 e e	j6        d           eed          dd%                        Z6 e e	j7        d           eed          dd&                        Z7 e e	j8        d           eed          dd'                        Z8 e e	j9        d           eed          dd(                        Z9 e e	j:        d           eed          dd)                        Z: e e	j;        d           eed          dd*                        Z; e e	j<        d           eed          dd+                        Z< e e	j=        d           eed          dd,                        Z= e e	j>        d           eed          dd-                        Z> e e	j?        d           eed          dd.                        Z? e e	j@        d           eed          dd/                        Z@ e e	jA        d           eed          dd0                        ZA e e	jB        d          edd1                        ZB e e	jC        d           eed          dd2                        ZC e e	jD        d           eed          dd3                        ZD e e	jE        d           eed          dd4                        ZE e e	jF        d           eed          dd5                        ZF e e	jG        d           eed          dd7                        ZG e e	jH        d           eed          dd8                        ZH e e	jI        d           eed          dd9                        ZI e e	jJ        d           eed          dd:                        ZJ e e	jK        d           eed          dd;                        ZK e e	jL        d           eed          dd<                        ZL e  e,e	d=e	jL                  d           eed          dd>                        ZM e e	jN        d           eed          dd?                        ZN e e	jO        d           eed          dd@                        ZO e e	jP        d           eed          ddA                        ZP e e	jQ        d           eed          ddB                        ZQ e e	jR        d           eed          ddC                        ZR e e	jS        d           eed          ddD                        ZS e e	jT        d           eed          ddE                        ZT e e	jU        d           eed          ddF                        ZU e e	jV        d           eed          ddG                        ZV e e	jW        d           eed          ddH                        ZW e e	jX        d           eed          ddI                        ZX e e	jY        d           eed          ddJ                        ZYddMZZ e e	j[        d           eed          ddN                        Z[ e e	j\        d           eed          ddO                        Z\ e e	j]        d           eed          ddP                        Z] e e	j^        d           eed          ddQ                        Z^ eed          ddR            Z_ eed          ddS            Z` eed          ddT            Za eed          ddU            Zb eed          ddV            Zc eed          ddW            Zd eed          ddX            ZeeddY            Zf eed          dd\            Zg e  e,e	d]e	jg                  d           eed          dd^                        Zh eed          dd_            Zi eed          dd`            Zjedda            Zkeddb            Zl e e	jm        d           eed          ddc                        ZmemZneddd            Zoeddf            ZpddgZq e e	jr        d          ddh            ZrerZs eed          ddi            Ztdj Zue e e	jv        d          eddk                                    Zvdl Zwevjx        dm             Zye e e	jz        d          eddn                                    Zzezjx        do             Z{ eed          ddp            Z| eed          ddq            Z} e e	j~        d           eed          ddr                        Z~ e e	j        d          edds                        Zdt Z e e	j        d          eddu                        Z e e	j        d          eddv                        Z e e	j        d          eddw                        Z  e e	j        d          e          Z e e	j        d          eddx                        Z e e	j        d           eed          ddy                        Z e e	j        d           eed          ddz                        Z e e	j        d           eed          dd{                        ZeZeZ e e	j        d           eed          dd|                        ZeZ e e	j                   eed          dd~                        Z e e	j                   eed          dd                        Z e e	j        ddg          eddd                        Z e e	j        d           eed          dd                        Z e e	j        d          edd                        ZddZ e e	j        d          dd            Z e e	j        d          dd            Z e e	j        d           eed          dd                        Z e e	j        d          edd                        Z ej        d            e e	j        d          edd                        Z e e	j        d           eed          dd                        Z e e	j        d          edd                        Z eed          d             Zejx        d             ZdS )z"
Implements ufuncs for jax.numpy.
    )annotations)Callable)partialN)core)deprecations)dtypes)jit)
custom_jvp)lax)Array	ArrayLike)
check_arraylikepromote_argspromote_args_inexactpromote_args_numericpromote_dtypes_inexactpromote_dtypes_numericpromote_shapes_where
implementscheck_no_float0s)       @   c                R    t          j        |t          j        |                     S )Ndtype)nparrayr   r   )xconsts     U/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/_src/numpy/ufuncs.py_constant_liker#   /   s    	%v|A	/	/	//    r    r   returnr   c                    t          j        t          t          |                     t          j        |           |           S N)r   selectisposinfreal_zerosr    s    r"   _replace_infr-   2   s,    	HT!WW%%sz!}}a	8	88r$   c                l    | j         t          k    r| n"t          j        | t	          | d                    S )Nr   )r   boolr   ne
_lax_constr,   s    r"   _to_boolr2   5   s,    goo36!Z1-=-=#>#>>r$   numpy)moduleT)inlinec               :    t          j        t          d|            S )Nfabs)r   absr   r,   s    r"   r7   r7   8   s     
&vq11	22r$   bitwise_invertc               :    t          j        t          d|            S )Nr9   r   bitwise_notr   r,   s    r"   r9   r9   =   s     
,'7;;	<<r$   c               :    t          j        t          d|            S )Nr<   r;   r,   s    r"   r<   r<   B   s     
,}a88	99r$   c               :    t          j        t          d|            S )Ninvertr;   r,   s    r"   r?   r?   G   s     
,x33	44r$   c               :    t          j        t          d|            S )Nnegative)r   negr   r,   s    r"   rA   rA   L   s     
,z1--	..r$   c               :    t          j        t          d|            S )Npositive)r   asarrayr   r,   s    r"   rD   rD   Q   s     
l:q11	22r$   c               :    t          j        t          d|            S )Nsign)r   rG   r   r,   s    r"   rG   rG   V   s     
<**	++r$   c                   t          d|            t          j        t          j        |           d          rt	          j        |           S t	          j        t          d|            S )Nfloorintegralr/   )r   r   isdtyper   r   rE   rI   r   r,   s    r"   rI   rI   [   sW     '1^FLOO%9:: ;q>>	(!44	55r$   c                   t          d|            t          j        t          j        |           d          rt	          j        |           S t	          j        t          d|            S )NceilrJ   )r   r   rL   r   r   rE   rN   r   r,   s    r"   rN   rN   c   sW     &!^FLOO%9:: ;q>>	'22	33r$   c               :    t          j        t          d|            S )Nexp)r   rP   r   r,   s    r"   rP   rP   k        
&ua00	11r$   c               :    t          j        t          d|            S )Nlog)r   rS   r   r,   s    r"   rS   rS   p   rQ   r$   c               :    t          j        t          d|            S )Nexpm1)r   rU   r   r,   s    r"   rU   rU   u        
(!44	55r$   c               :    t          j        t          d|            S )Nlog1p)r   rX   r   r,   s    r"   rX   rX   z   rV   r$   c               :    t          j        t          d|            S )Nsin)r   rZ   r   r,   s    r"   rZ   rZ      rQ   r$   c               :    t          j        t          d|            S )Ncos)r   r\   r   r,   s    r"   r\   r\      rQ   r$   c               :    t          j        t          d|            S )Ntan)r   r^   r   r,   s    r"   r^   r^      rQ   r$   c               :    t          j        t          d|            S )Narcsin)r   asinr   r,   s    r"   r`   r`           
'!44	55r$   c               :    t          j        t          d|            S )Narccos)r   acosr   r,   s    r"   rd   rd      rb   r$   c               :    t          j        t          d|            S )Narctan)r   atanr   r,   s    r"   rg   rg      rb   r$   c               :    t          j        t          d|            S )Nsinh)r   rj   r   r,   s    r"   rj   rj           
'22	33r$   c               :    t          j        t          d|            S )Ncosh)r   rm   r   r,   s    r"   rm   rm      rk   r$   c               :    t          j        t          d|            S )Narcsinh)r   asinhr   r,   s    r"   ro   ro           
(A66	77r$   c                   t          j        t          d|            }t          j        |j        t          j                  r4t          t          |          dk     t          j
        |          |          }|S )Narccoshr   )r   acoshr   r   
issubdtyper   r   complexfloatingr   r*   rB   )r    results     r"   rs   rs      s^    
 9*9a889&v|R%788 ?DLL1$cgfoov>>F	-r$   c               :    t          j        t          d|            S )Ntanh)r   ry   r   r,   s    r"   ry   ry      rk   r$   c               :    t          j        t          d|            S )Narctanh)r   atanhr   r,   s    r"   r{   r{      rq   r$   c               :    t          j        t          d|            S )Nsqrt)r   r~   r   r,   s    r"   r~   r~      rk   r$   c               :    t          j        t          d|            S )Ncbrt)r   r   r   r,   s    r"   r   r      rk   r$   yc                   t          d| |          \  } }| j        t          k    rt          j        | |          nt          j        | |          S )Nadd)r   r   r/   r   r   
bitwise_orr    r   s     r"   r   r      sC     
eQ	"	"$!Q'T//As~a/C/CCr$   c                   t          d| |          \  } }| j        t          k    rt          j        | |          nt          j        | |          S )Nmultiply)r   r   r/   r   mulbitwise_andr   s     r"   r   r      sC     
j!Q	'	'$!Q'T//Asq!/D/DDr$   c               <    t          j        t          d| |           S )Nr   )r   r   r   r   s     r"   r   r           
,}a;;	<<r$   c               <    t          j        t          d| |           S )Nr   )r   r   r   r   s     r"   r   r      s     
lAq99	::r$   c               <    t          j        t          d| |           S )Nbitwise_xor)r   r   r   r   s     r"   r   r      r   r$   c               <    t          j        t          d| |           S )N
left_shiftr   
shift_leftr   r   s     r"   r   r      s     
-lAqAA	BBr$   bitwise_left_shiftc               <    t          j        t          d| |           S )Nr   r   r   s     r"   r   r      s     
-.BAqII	JJr$   c               <    t          j        t          d| |           S )Nequal)r   eqr   r   s     r"   r   r      s     
gq!,,	--r$   c               <    t          j        t          d| |           S )N	not_equal)r   r0   r   r   s     r"   r   r      s     
k1a00	11r$   c               <    t          j        t          d| |           S )Nsubtract)r   subr   r   s     r"   r   r      s     
,z1a00	11r$   c               <    t          j        t          d| |           S )Narctan2)r   atan2r   r   s     r"   r   r      s     
(Aq99	::r$   c               <    t          j        t          d| |           S )Nminimum)r   minr   r   s     r"   r   r          
,y!Q//	00r$   c               <    t          j        t          d| |           S )Nmaximum)r   maxr   r   s     r"   r   r     r   r$   c               <    t          j        t          d| |           S )Nfloat_power)r   powr   r   s     r"   r   r     s     
&}a;;	<<r$   c               <    t          j        t          d| |           S )N	nextafter)r   r   r   r   s     r"   r   r     s     
,[!Q??	@@r$   c          
     b    t          j        t          t          t	          d| |                     S )Nlogical_and)r   r   mapr2   r   r   s     r"   r   r     '     
#h]Aq(I(IJJ	KKr$   c          
     b    t          j        t          t          t	          d| |                     S )N
logical_or)r   r   r   r2   r   r   s     r"   r   r     s'     
X|L!Q'G'GHH	IIr$   c          
     b    t          j        t          t          t	          d| |                     S )Nlogical_xor)r   r   r   r2   r   r   s     r"   r   r   "  r   r$   c          	     `    t          j        t          t          t	          d|                      S )Nlogical_not)r   r<   r   r2   r   r,   s    r"   r   r   '  s%     
#h]A(F(FGG	HHr$   lax_op'Callable[[ArrayLike, ArrayLike], Array]c                   t          j        |j        t          j                  r[t          j        t          j        |j        |j                   | |j	        |j	                   | |j        |j                            S  | ||          S r'   )
r   ru   r   r   rv   r   r(   r   r*   imag)r   r    r   s      r"   _complex_comparisonr   -  sz    qw 233 .:cfQVQV,,fQVQV,,fQVQV,,. . . 
1r$   c               N    t          t          j        gt          d| |          R  S )Ngreater_equal)r   r   ger   r   s     r"   r   r   5  s(     
SV	Jl?Aq&I&I	J	J	JJr$   c               N    t          t          j        gt          d| |          R  S )Ngreater)r   r   gtr   r   s     r"   r   r   :  s(     
SV	Dl9a&C&C	D	D	DDr$   c               N    t          t          j        gt          d| |          R  S )N
less_equal)r   r   ler   r   s     r"   r   r   ?  s(     
SV	Gl<A&F&F	G	G	GGr$   c               N    t          t          j        gt          d| |          R  S )Nless)r   r   ltr   r   s     r"   r   r   D  s(     
SV	Al61a&@&@	A	A	AAr$   c               0    t          t          d|            S )z!Alias of :func:`jax.numpy.arccos`re   )rd   r   r,   s    r"   re   re   J       
fa((	))r$   c               0    t          t          d|            S )z"Alias of :func:`jax.numpy.arccosh`rt   )rs   r   r,   s    r"   rt   rt   O       
,w**	++r$   c               0    t          t          d|            S )z!Alias of :func:`jax.numpy.arcsin`ra   )r`   r   r,   s    r"   ra   ra   T  r   r$   c               0    t          t          d|            S )z"Alias of :func:`jax.numpy.arcsinh`rp   )ro   r   r,   s    r"   rp   rp   Y  r   r$   c               0    t          t          d|            S )z!Alias of :func:`jax.numpy.arctan`rh   )rg   r   r,   s    r"   rh   rh   ^  r   r$   c               0    t          t          d|            S )z"Alias of :func:`jax.numpy.arctanh`r|   )r{   r   r,   s    r"   r|   r|   c  r   r$   c               2    t          t          d| |           S )z"Alias of :func:`jax.numpy.arctan2`r   )r   r   r   s     r"   r   r   h  s     
,w1--	..r$   c                   t          d|           \  } t          j        t          |                                         d          S )a  Counts the number of 1 bits in the binary representation of the absolute value
  of each element of ``x``.

  LAX-backend implementation of :func:`numpy.bitwise_count`.

  Args:
    x: Input array, only accepts integer subtypes

  Returns:
    An array-like object containing the binary 1 bit counts of the absolute value of
    each element in ``x``, with the same shape as ``x`` of dtype uint8.

  Examples:
    >>> x1 = jnp.array([64, 32, 31, 20])
    >>> # 64 = 0b1000000, 32 = 0b100000, 31 = 0b11111, 20 = 0b10100
    >>> jnp.bitwise_count(x1)
    Array([1, 1, 5, 2], dtype=uint8)

    >>> x2 = jnp.array([-16, -7, 7])
    >>> # |-16| = 0b10000, |-7| = 0b111, 7 = 0b111
    >>> jnp.bitwise_count(x2)
    Array([1, 3, 3], dtype=uint8)

    >>> x3 = jnp.array([[2, -7],[-9, 7]])
    >>> # 2 = 0b10, |-7| = 0b111, |-9| = 0b1001, 7 = 0b111
    >>> jnp.bitwise_count(x3)
    Array([[1, 3],
           [2, 3]], dtype=uint8)
  bitwise_countuint8)r   r   population_countr8   astyper,   s    r"   r   r   m  s:    > OQ//"!		c!ff	%	%	,	,W	5	55r$   x1x2c                   t          t          j        j        | |          \  } }t          j        | j        t          j                  rt          j        nt          j	        } || |          S )aR  Right shift the bits of ``x1`` to the amount specified in ``x2``.

  LAX-backend implementation of :func:`numpy.right_shift`.

  Args:
    x1: Input array, only accepts unsigned integer subtypes
    x2: The amount of bits to shift each element in ``x1`` to the right, only accepts
      integer subtypes

  Returns:
    An array-like object containing the right shifted elements of ``x1`` by the
    amount specified in ``x2``, with the same shape as the broadcasted shape of
    ``x1`` and ``x2``.

  Note:
    If ``x1.shape != x2.shape``, they must be compatible for broadcasting to a
    shared shape, this shared shape will also be the shape of the output. Right shifting
    a scalar x1 by scalar x2 is equivalent to ``x1 // 2**x2``.

  Examples:
    >>> def print_binary(x):
    ...   return [bin(int(val)) for val in x]

    >>> x1 = jnp.array([1, 2, 4, 8])
    >>> print_binary(x1)
    ['0b1', '0b10', '0b100', '0b1000']
    >>> x2 = 1
    >>> result = jnp.right_shift(x1, x2)
    >>> result
    Array([0, 1, 2, 4], dtype=int32)
    >>> print_binary(result)
    ['0b0', '0b1', '0b10', '0b100']

    >>> x1 = 16
    >>> print_binary([x1])
    ['0b10000']
    >>> x2 = jnp.array([1, 2, 3, 4])
    >>> result = jnp.right_shift(x1, x2)
    >>> result
    Array([8, 4, 2, 1], dtype=int32)
    >>> print_binary(result)
    ['0b1000', '0b100', '0b10', '0b1']
  )
r   r   right_shift__name__ru   r   unsignedintegerr   shift_right_logicalshift_right_arithmeticr   r   lax_fns      r"   r   r     s\    Z   7R@@&"bM"(B.//P3""585O 		Br$   bitwise_right_shiftc                   t          d| |          \  } }t          j        | j        t          j                  rt
          j        nt
          j        } || |          S )Nr   )r   r   ru   r   r   r   r   r   r   s      r"   r   r     sW       5r2>>&"bM"(B.//P3""585O 		Br$   c                   t          d|            t          j        |           }|t          j        k    st          j        |t          j                  rt          j        |           nt          j	        |           S )a  Calculate the absolute value element-wise.

  LAX-backend implementation of :func:`numpy.absolute`.

  This is the same function as :func:`jax.numpy.abs`.

  Args:
    x: Input array

  Returns:
    An array-like object containing the absolute value of each element in ``x``,
    with the same shape as ``x``. For complex valued input, :math:`a + ib`,
    the absolute value is :math:`\sqrt{a^2+b^2}`.

  Examples:
    >>> x1 = jnp.array([5, -2, 0, 12])
    >>> jnp.absolute(x1)
    Array([ 5,  2,  0, 12], dtype=int32)

    >>> x2 = jnp.array([[ 8, -3, 1],[ 0, 9, -6]])
    >>> jnp.absolute(x2)
    Array([[8, 3, 1],
           [0, 9, 6]], dtype=int32)

    >>> x3 = jnp.array([8 + 15j, 3 - 4j, -5 + 0j])
    >>> jnp.absolute(x3)
    Array([17.,  5.,  5.], dtype=float32)
  absolute)
r   r   r   r   bool_ru   r   r   rE   r8   )r    dts     r"   r   r     s^    < *a   |A">>V->r2CU-V-V>Q\_\cde\f\ffr$   c                    t          |           S )z$Alias of :func:`jax.numpy.absolute`.)r   r,   s    r"   r8   r8     s     
!r$   c                  t          d|            t          j        |           }|t          k    st          j        |t
          j                  rt          j        | t          j	                  S t          j        |t
          j
                  rSt          j        t          t          j        |                     t          t          j        |                               S t          j        | t          j        j                  S )a  Rounds the elements of x to the nearest integer

  LAX-backend implementation of :func:`numpy.rint`.

  Args:
    x: Input array

  Returns:
    An array-like object containing the rounded elements of ``x``. Always promotes
    to inexact.

  Note:
    If an element of x is exactly half way, e.g. ``0.5`` or ``1.5``, rint will round
    to the nearest even integer.

  Example:
    >>> x1 = jnp.array([5, 4, 7])
    >>> jnp.rint(x1)
    Array([5., 4., 7.], dtype=float32)

    >>> x2 = jnp.array([-2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5])
    >>> jnp.rint(x2)
    Array([-2., -2., -0.,  0.,  2.,  2.,  4.,  4.], dtype=float32)

    >>> x3 = jnp.array([-2.5+3.5j, 4.5-0.5j])
    >>> jnp.rint(x3)
    Array([-2.+4.j,  4.-0.j], dtype=complex64)
  rint)r   r   r   r/   ru   r   integerr   convert_element_typefloat_rv   complexr   r*   r   roundRoundingMethodTO_NEAREST_EVENr    r   s     r"   r   r     s    < &!
,q//%
d]]f'rz::]#Av}555ub011 =;tCHQKK(($sx{{*;*;<<<	1c(8	9	99r$   c               `   t          d| |          \  } }t          j        t          j        |           t          j                  rt          d          t          t          |          	                    t                    t          j        |            t          j        |                     S )a  Copies the sign of each element in ``x2`` to the corresponding element in ``x1``.

  LAX-backend implementation of :func:`numpy.copysign`.

  Args:
    x1: Input array
    x2: The array whose elements will be used to determine the sign, must be
      broadcast-compatible with ``x1``

  Returns:
    An array object containing the potentially changed elements of ``x1``, always promotes
    to inexact dtype, and has a shape of ``jnp.broadcast_shapes(x1.shape, x2.shape)``

  Examples:
    >>> x1 = jnp.array([5, 2, 0])
    >>> x2 = -1
    >>> jnp.copysign(x1, x2)
    Array([-5., -2., -0.], dtype=float32)

    >>> x1 = jnp.array([6, 8, 0])
    >>> x2 = 2
    >>> jnp.copysign(x1, x2)
    Array([6., 8., 0.], dtype=float32)

    >>> x1 = jnp.array([2, -3])
    >>> x2 = jnp.array([[1],[-4], [5]])
    >>> jnp.copysign(x1, x2)
    Array([[ 2.,  3.],
           [-2., -3.],
           [ 2.,  3.]], dtype=float32)
  copysignz/copysign does not support complex-valued inputs)r   r   ru   r   r   rv   	TypeErrorr   signbitr   r/   r   r8   r   r   s     r"   r   r     s    B  
B33&"bv|B'');<< G
E
F
FF	""4((372;;,	D	DDr$   c               T    t          d| |          \  } }t          j        | |          S )Ntrue_divide)r   r   divr   s     r"   r   r   B  s)      r266&"b	Rr$   c               p   t          d| |          \  } }t          j        |           }t          j        |t          j                  rt          j        | |          S t          j        |t          j                  rxt          j        | |          }t          t          j
        |           t          j
        |          k    t          j        | |          dk              }t          ||dz
  |          S t          j        |t          j                  rt          d          t          | |          d         S )aA  Calculates the floor division of x1 by x2 element-wise

  LAX-backend implementation of :func:`numpy.floor_divide`.

  Args:
    x1: Input array, the dividend
    x2: Input array, the divisor

  Returns:
    An array-like object containing each of the quotients rounded down
    to the nearest integer towards negative infinity. This is equivalent
    to ``x1 // x2`` in Python.

  Examples:
    >>> x1 = jnp.array([10, 20, 30])
    >>> x2 = jnp.array([3, 4, 7])
    >>> jnp.floor_divide(x1, x2)
    Array([3, 5, 4], dtype=int32)

    >>> x1 = jnp.array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5])
    >>> x2 = 3
    >>> jnp.floor_divide(x1, x2)
    Array([-2, -2, -1, -1, -1,  0,  0,  0,  1,  1,  1], dtype=int32)

    >>> x1 = jnp.array([6, 6, 6], dtype=jnp.int32)
    >>> x2 = jnp.array([2.0, 2.5, 3.0], dtype=jnp.float32)
    >>> jnp.floor_divide(x1, x2)
    Array([3., 2., 2.], dtype=float32)

  Note:
    ``x1 // x2`` is equivalent to ``jnp.floor_divide(x1, x2)`` for arrays ``x1`` and ``x2``

  See Also:
    :func:`jnp.divide` and :func:`jnp.true_divide` for floating point division
  floor_divider      z3floor_divide does not support complex-valued inputs)r   r   r   ru   r   r   r   r   r   r   rG   remr   rv   r   _float_divmod)r   r   r   quotientr(   s        r"   r   r   K  s    J  B77&"b
,r

%ub011 
$72r??
++ $wr2H""5swr2!7KLLF&(Q,111 233 $
I
J
JJR  ##r$   tuple[Array, Array]c                   t          d| |          \  } }t          j        t          j        |           t          j                  r t          | |          t          | |          fS t          | |          S )a  Calculates the integer quotient and remainder of x1 by x2 element-wise

  LAX-backend implementation of :func:`numpy.divmod`.

  Args:
    x1: Input array, the dividend
    x2: Input array, the divisor

  Returns:
    A tuple of arrays ``(x1 // x2, x1 % x2)``.

  Examples:
    >>> x1 = jnp.array([10, 20, 30])
    >>> x2 = jnp.array([3, 4, 7])
    >>> jnp.divmod(x1, x2)
    (Array([3, 5, 4], dtype=int32), Array([1, 0, 2], dtype=int32))

    >>> x1 = jnp.array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5])
    >>> x2 = 3
    >>> jnp.divmod(x1, x2)
    (Array([-2, -2, -1, -1, -1,  0,  0,  0,  1,  1,  1], dtype=int32),
     Array([1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int32))

    >>> x1 = jnp.array([6, 6, 6], dtype=jnp.int32)
    >>> x2 = jnp.array([1.9, 2.5, 3.1], dtype=jnp.float32)
    >>> jnp.divmod(x1, x2)
    (Array([3., 2., 1.], dtype=float32),
     Array([0.30000007, 1.        , 2.9       ], dtype=float32))

  See Also:
    - :func:`jax.numpy.floor_divide`: floor division function
    - :func:`jax.numpy.remainder`: remainder function
  divmod)	r   r   ru   r   r   r   r   	remainderr   r   s     r"   r   r     sj    F  "b11&"bv|B''44 !B2r!2!222R   r$   c                   t          j        | |          }t          j        t          j        | |          |          }t          j        |dk    t          j        |          t          j        |          k              }t          j        |||z   |          }t          j        ||t          |d          z
  |          }t          j        |          |fS )Nr   r   )	r   r   r   r   r   rG   r(   r#   r   )r   r   modr   inds        r"   r   r     s    B#C  "%%#q#(2,,#(3--"?@@#
3b#&&#
3nS!444c::#	3	r$   c               T   t          d| |           t          d| |           t          t          j        |          t          j                  rK	 t          j        |          }t          |           \  } t          j
        | |          S # t          $ r Y nw xY wt          | |          S )Npower)r   r   
isinstancer   get_avalConcreteArrayoperatorindexr   r   integer_powr   _powerr   s     r"   r  r    s    '2r"""7B###  b!!4#566 %%>"b #2&&cb_R$$$	    
d 
Bs   B
 

BBc                   t          d| |          \  } }t          d| |          \  }}t          j        t          j        |          t
          j                  s1t          j        t          j        |          t
          j                  rAt          j        t          j        |                    j	        dk    sJ t          ||          S t          j        |           t          j        |          }}t          j        |t
          j                  r4t          j        |t
          j                  rt          j        | |          S t          j        ||          S )Nr  r   )r   r   r   ru   r   r   r   r   iinfobits_pow_int_intinexactr   r   )r   r   x1_x2_d1d2s         r"   r  r    s   '2r**&"b "'2r22(#sS))2:66 "S))2844"8FL%%&&+r1111S!!! <V\"--b"r2:&& 6+<R+L+L 72r?? 
c		r$   c           	        d}t          |d          }t          |d          }t          t          j        t          j        | |          t          j        ||                    ||          }t          |          D ]c}t          t          j        ||          t          j        ||           |          }t          j        | |           } t          j        ||          }d|S )N   r   r   )	r#   r   r   r   r   r0   ranger   r   )r   r   r  zerooneacc_s          r"   r  r    s    	
$	A		$r1#ssvb$//D1A1ABBD#NN#;; * *a
S))373+;+;S
A
AC	RB		 S	)	)BB	*r$   c                  t          d| |          \  } }t          j        | |          }t          j        | j        t          j                  rt          j        | |          }t          j	        t          j
        |          t          j        | |          t          j        |t          j        t          j        t          j        t          j        |                                                            S t          j        t          j        | |          t          j        |t#          |d                              }t          j        |t          j        t          j        |                              }t          j        t          j        |          t)          t          j        |          t          j                            S )N	logaddexp   )r   r   r   r   ru   r   r   floatingr   r(   _isnanr   rX   rP   rB   r8   r   r#   r   r*   _wrap_betweenr   pir   r   amaxdeltaouts        r"   r  r    s:     R44&"b	R$rx-- KGBOOE:cj''gb"oogdCIcgcgcgenn6M6M.N.N$O$OPPR R R GCGBOOSWT>$3J3J%K%KLLE
'$	#'%..11
2
2C;sx}}mCHSMM25&I&IJJJr$   c                Z   t          | |          }t          | d|z            }t          | d          }t          j        t          j        | |          |          }t          j        t          j        ||          t          j        ||          |          }t          j        ||          S )zWraps `x` between `[-a, a]`.r   r   )r#   r   r   r   r(   r   r   )r    _aatwo_ar  r   s         r"   r#  r#    s    Q!
AF
#
#%	1		$1u%%#
36#t$$cgc5&9&93??#	ar$   c                   | \  }}|\  }}t          d||||          \  }}}}t          ||          }t          j        t          j        |t          t          j        t          |          t          |                                        t          j        |t          t          j        t          |          t          |                                                  }||fS )Nlogaddexp_jvp)r   r  r   r   r   rP   r   r-   primalstangentsr   r   t1t2
primal_outtangent_outs           r"   _logaddexp_jvpr6    s    &"b&"b'RRHH."b"bR  *CR0@0@,zBZBZ([([$\$\]]CR0@0@,zBZBZ([([$\$\]]_ _+	[	  r$   c               z   t          d| |          \  } }t          j        | |          }t          j        | j        t          j                  rt          j        | |          }t          j	        t          j
        |          t          j        | |          t          j        |t          j        t          j        t          t          j        t          j        |                                        t#          | t          j        d                                                  S t          j        t          j        | |          t          j        |t#          |d                              }t          j        |t          j        t          j        t          |                    t#          | t          j        d                                        }t          j        t          j        |          t-          t          j        |          t          j        t          j        d          z                      S )N
logaddexp2r   )r   r   r   r   ru   r   r   r!  r   r(   r"  r   r   rX   exp2rB   r8   r#   rS   r   r   r*   r#  r   r$  r%  s        r"   r8  r8     s     b"55&"b	R$rx-- 	WGBOOE:cj''gb"oogdCGCId37375>>;R;R6S6S,T,T,:2rvayy,I,I%K %K L LM M M
 GCGBOOSWT>$3J3J%K%KLLE
'$	$u++ 6 6r26RS998U8UVV
W
WC;sx}}mCHSMM2526RS99CT&U&UVVVr$   c                   | \  }}|\  }}t          d||||          \  }}}}t          ||          }t          j        t          j        |t          t          j        t          |          t          |                                        t          j        |t          t          j        t          |          t          |                                                  }||fS )Nlogaddexp2_jvp)r   r8  r   r   r   r9  r   r-   r/  s           r"   _logaddexp2_jvpr<  2  s    &"b&"b'(8"b"bII."b"b"b!!*Db1A1A<PZC[C[)\)\$]$]^^Db1A1A<PZC[C[)\)\$]$]^^` `+	[	  r$   c          	         t          d|           \  } t          j        t          j        |           t          j        t	          | d                              S )a  Calculates the base-2 logarithm of x element-wise

  LAX-backend implementation of :func:`numpy.log2`.

  Args:
    x: Input array

  Returns:
    An array containing the base-2 logarithm of each element in ``x``, promotes
    to inexact dtype.

  Examples:
    >>> x1 = jnp.array([0.25, 0.5, 1, 2, 4, 8])
    >>> jnp.log2(x1)
    Array([-2., -1.,  0.,  1.,  2.,  3.], dtype=float32)
  log2r   r   r   r   rS   r#   r,   s    r"   r>  r>  =  sC    $ FA&&"!	SW^Aq%9%9::	;	;;r$   c          	         t          d|           \  } t          j        t          j        |           t          j        t	          | d                              S )a  Calculates the base-10 logarithm of x element-wise

  LAX-backend implementation of :func:`numpy.log10`.

  Args:
    x: Input array

  Returns:
    An array containing the base-10 logarithm of each element in ``x``, promotes
    to inexact dtype.

  Examples:
    >>> x1 = jnp.array([0.01, 0.1, 1, 10, 100, 1000])
    >>> with jnp.printoptions(precision=2, suppress=True):
    ...   print(jnp.log10(x1))
    [-2. -1.  0.  1.  2.  3.]
  log10
   r?  r,   s    r"   rA  rA  S  sC    & GQ''"!	SW^Ar%:%:;;	<	<<r$   c               N    t          d|           \  } t          j        |           S )Nr9  )r   r   r9  r,   s    r"   r9  r9  j  s#     FA&&"!	!r$   c                  t          d|           \  } t          j        |           }t          j        |t          j                  r#t          j        | t          | d                    S t          j        |t          j	                  r!t          j
        | dt          j	                  S t          j        |t          j                  st          d|z            t          j        |          }|j        t          vrt!          d          t          |j                 }t          j        | |          } t          j        | |j        |j        z   z	  t          j	                  S )Nr   r   Fr   z,jax.numpy.signbit is not well defined for %sz9jax.numpy.signbit only supports 16, 32, and 64-bit types.)r   r   r   ru   r   r   r   r   r#   r   	full_liker!  
ValueErrorfinfor  _INT_DTYPESNotImplementedErrorbitcast_convert_typer   nexpnmant)r    r   infoint_types       r"   r   r   q  s3    Iq!!"!
,q//%ubj)) @6!^Aq))***)) @=E2222UBK00 @
6>@ @ @ 
e		$	Yk!!
CE E E#(	q(++!		!!	DJ(>"?	J	JJr$   c           	        t          j        t          j        |                     }t          |j                 }t          j        |           |j        k     }t          || t          | d|j
        z            z  |           }t          | ||j
                    |d                    }t          j        ||          |fS )Nr   r   )r   rG  r   rH  r  r   r8   tinyr   r1   rL  rJ  )r    rM  rN  condr   r   s         r"   _normalize_floatrR    s    	fl1oo	&	&$#(	di	$dA
1a4:o666::"dHHdj[))88A;;77"		!"h	/	/	33r$   c                  t          d| |           t          j        |           }t          j        |          }t          j        |t          j                  st          j        |t          j                  rt          d||f           t          d| |          \  } }t          j	        t          j
        |                    }t          j        |          }t          |j                 }t          j        | |          } t          j        ||          }d|j        z  dz
  }d|j        z
  }t%          |           \  }	}
||
|	|j        z	  |z  z   |z
  z  }t)          |||j        z              }t+          ||          }t          j        |	d|          }t)          || dz             }t/          |||j        z   |          }t/          ||d|j        z  z  |          }t          j        |t          j                  }|	||j        z   z  }	|	t          j        ||          |z   |j        z  z  }	t          j        ||          t          j        |	|          z  }	t/          |t          j        |	d|          |	          }	t/          |t          j        |           t          j        |	t          j                  z  |	          }	t/          t9          |           t;          |           z  | dk    z  | |	          S )Nldexpz$ldexp not supported for input types r   r   r   )r   r   r   ru   r   rv   r  rF  r   canonicalize_dtypeto_inexact_dtyperG  rH  r  r   r   rK  minexprR  rL  r   r   rE  r   int32rJ  rG   infisinfisnan)r   r   x1_dtypex2_dtyper   rM  rN  maskbiasr    eunderflow_condoverflow_condmrQ  s                  r"   rT  rT    s    '2r"""\"(\"(""455 T		8RZ	0	0T
RXx<PRR
S
SS'2r**&"b

#F$;H$E$E
F
F%	e		$#(
E**"
H--"
ty.A	$	
T[$	"		$!Qa4:o%&--" dTZ/011."d##-	mAq&&&! 
b4%!)		$dBOR(("T1TZ(!,,!
BH--"	!	!"h	/	/$	64:EF!	q%((3+CAu+M+MM! ^S]1au===qAA!]CHRLL3=BF+C+CCQGG!	b		E"II%q12q	9	99r$   c                  t          d|            t          |           \  } t          j        | j        t
          j                  rt          d          t          j        |           }t          j        |          }d|j	        z  dz
  }d|j
        z
  }t          |           \  }}|||j        z	  |z  |z
  dz   z  }|||j        z   z  }||dz
  |j        z  z  }t          j        ||          }t          |           t!          |           z  | dk    z  }t#          |t          j        |          |          }t#          || |          t          j        |t
          j                  fS )Nfrexpz,frexp does not support complex-valued inputsr   r   )r   r   r   ru   r   r   rv   r   rG  rK  rW  rR  rL  r   rJ  rZ  r[  r   r+   r   rX  )r    r   rM  r^  r_  r   r   rQ  s           r"   re  re    sN    '1a  "!qw 233 D
B
C
CC
,q//%	e		$
ty.A	$	
T[$A&"b"

d	"d*Q.."$$*
"dj  "
E**"	qE!HH	Q	'$dCJrNNB''"	a		c6r28DD	DDr$   c          	     "   t          d| |          \  } }t          | d          }t          j        |j        t
          j                  r't          |dk    t          j	        |          |          }t          j
        | |          }t          j        ||          }t          j        t          j        t          j        ||          t          j        ||                    |          }t          j        |t          j        ||          |          S )Nr  r   )r   r#   r   ru   r   r   r   r   r   _onesr   r0   r   r   r(   r   )r   r   r  	trunc_modtrunc_mod_not_zerodo_pluss         r"   r  r    s      R44&"b	A		$rx,, ,	a2	+	+Bgb"oo)vi..O	fSVIt$$cfR&6&6779KM M'	GSWY33Y	?	??r$   c                  t          d| |           t          j        t          j        | |          t          j                  r't          |dk    t          j        |          |          }t          j	        t          d| |           S )Nfmodr   )r   r   ru   result_typer   r   r   r   rg  r   r   r   s     r"   rl  rl    sq     &"b!!!v)"b112:>> ,	a2	+	+B	&vr266	77r$   c               n    t          d|            t          |           \  } t          j        | d          S )Nsquarer   )r   r   r   r  r,   s    r"   ro  ro    s5     (Aa  "!	A		r$   c                   t          d|           \  } t          j        | t          | t          j        dz                      S )Ndeg2rad   r   r   r   r1   r   r$  r,   s    r"   rq  rq    s7     Iq))"!	Jq"%#+..	/	//r$   c                   t          d|           \  } t          j        | t          | dt          j        z                      S )Nrad2degrr  rs  r,   s    r"   ru  ru     s7     Iq))"!	Jq#+..	/	//r$   c                   t          d|            t          j        |           rt          j        |           nt          j        |           S )N	conjugate)r   r   iscomplexobjr   conjrE   r,   s    r"   rw  rw    s=     +q!!!**	>!A>r$   valc                   t          d|            t          j        |           rt          j        |           nt          j        | d          S )Nr   r   )r   r   rx  r   r   rE  rz  s    r"   r   r     sA     &#/#..	I#CM#q4I4IIr$   c                   t          d|            t          j        |           rt          j        |           nt          j        |           S )Nr*   )r   r   rx  r   r*   rE   r|  s    r"   r*   r*     s?     &#/#..	D#CK4D4DDr$   r(  )r4   skip_paramsc                  t          d|            t          |           \  } |t          d          t          t	          j        | t	          j        |                     t          |           t          |                     }| |z
  |fS )Nmodfz0The 'out' argument to jnp.modf is not supported.)	r   r   rI  r   r   r   _zerorI   rN   )r    r(  wholes      r"   r  r     sw     &!a  "!_
P
Q
QQ
39Q<<((%((DGG
<
<%	
UE	r$   c                  t          d|            t          j        |           }t          j        |t          j                  rt          j        |           S t          j        |t          j                  rSt          j	        t          j        t          |                     t          j        t          |                               S t          j        | dt          j                  S )NisfiniteTr   )r   r   r   ru   r   r!  r   	is_finiterv   r   r*   r   rE  r   r   s     r"   r  r  +  s     *a   
,q//%ubk** 2= 233 2?3=a113=a3I3IJJJ=D1111r$   c          
        t          d|            t          j        |           }t          j        |t          j                  r?t          j        t          j        |           t          | t          j
                            S t          j        |t          j                  rt          j        |           }t          j        |           }t          j        t          j        t          j        |          t          |t          j
                            t          j        t          j        |          t          |t          j
                                      S t          j        | dt          j                  S )NrZ  Fr   )r   r   r   ru   r   r!  r   r   r8   r#   rY  rv   r*   r   r   rE  r   )r    r   reims       r"   rZ  rZ  8  s    '1
,q//%ubk** 36#'!**nQ77888 233 3	!B	!B>#&nR.H.HII&nR.H.HIIK K K =E2222r$   infinityfloatc                n   |t          d          t          j        |          }t          j        |t          j                  r#t          j        |t          ||                     S t          j        |t          j	                  rt          d          t          j        |dt          j                  S )Nz9The 'out' argument to isneginf/isposinf is not supported.z8isposinf/isneginf are not well defined for complex typesFr   )rI  r   r   ru   r   r!  r   r   r#   rv   rF  rE  r   )r  r    r(  r   s       r"   _isposneginfr  H  s    _
Y
Z
ZZ
,q//%ubk** 36!^Ax00111 233 3
O
P
PP=E2222r$   c               8    t          t          j        | |          S r'   r  r   rY  r    r(  s     r"   r)   r)   T  s    	bfa	%	%%r$   c               :    t          t          j         | |          S r'   r  r  s     r"   isneginfr  Y  s    	rvgq#	&	&&r$   c               L    t          d|            t          j        | |           S )Nr[  )r   r   r0   r,   s    r"   r[  r[  ^  s$     '1	1r$   c                  t          d| |           t          | |          \  } }t          | d          }t          t	          j        | |          |t          t	          j        | |          t          | d          |                    S )N	heavisider   r   )r   r   r1   r   r   r   r   )r   r   r  s      r"   r  r  e  s     +r2&&&!"b))&"b	B		$	r4  $svb$''B):):B??
A 
A Ar$   jax-numpy-hypot-complexc                  t          d| |          \  } }t          j        | j        t          j                  rt          j        ddd           t          j	        |           t          j	        |          }} t          j
        t          |           t          |                    }t          | |          t          | |          }} t          | dk    | | t          j        dt          j        t          j        |t          | dk    t          j        |           |                               z             z            }t          |t'          |t          j                  |          S )Nhypotr  zPassing complex-valued inputs to hypot is deprecated and will raise a ValueError in the future. Please convert to real values first, such as by using jnp.real or jnp.imag to take the real or imaginary components respectively.r   )
stacklevelr   r   )r   r   ru   r   r   rv   r   warnr   r8   r   r)   r   r   r   r~   ro  r   rg  r1   rY  )r   r   idx_infr    s       r"   r  r  r  s)     R00&"b rx!344      72;;b"N8B<<"66'2r??GBOOb"R1Wb"sxCJswr6"PQ'SVS\]_S`S`bdCeCe7f7f,g,g(ghhhii!	Arv..	2	22r$   c               n    t          d|            t          |           \  } t          j        | d          S )N
reciprocal)r   r   r   r  r,   s    r"   r  r    s5     ,"""a  "!	B		r$   F)
update_docc          	        t          d|            t          |           \  } t          j        | t	          | d                    }t          j        t	          | t          j                  |           }t          |t	          | d          |          }t          |t          d|          t          j
        t          j        |          |                    S )Nsincr   r   )r   r   r   r   r1   r   r   r$  r   _sinc_maclaurinr   rZ   )r    eq_zeropi_x	safe_pi_xs       r"   r  r    s     &!a  "!F1jA&&'''	Aru%%q	)	)$WjA..55)	D11	**I66
8 
8 8r$   )r   )nondiff_argnumsc                Z    | dz  r|dz  S |dz  t          |d| dz  z  | dz   z            z   S )Nr   r   r  r   )r1   )kr    s     r"   r  r    sD    
 U =q5Lq5:a"!q&!1QU!;<<<<r$   c                `    ||c\  }\  }t          | |          t          | dz   |          |z  fS )Nr   )r  )r  r0  r1  r    ts        r"   _sinc_maclaurin_jvpr    s9    *$1	A		Aq 9 9A =	==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   )rz  r   r%   r   r'   )r  r  r    r   r%   r   )__doc__
__future__r   collections.abcr   	functoolsr   r
  r3   r   jax._srcr   r   r   jax._src.apir	   jax._src.custom_derivativesr
   jax._src.laxr   jax._src.typingr   r   jax._src.numpy.utilr   r   r   r   r   r   r   r   r   r   _constr1   int16rX  int64rH  r#   r-   r2   r7   getattrr?   r9   r<   rA   rD   rG   rI   rN   rP   rS   rU   rX   rZ   r\   r^   r`   rd   rg   rj   rm   ro   rs   ry   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   re   rt   ra   rp   rh   r|   r   r   r   r   r   r8   r   r   r   divider   r   r   r  r   r  r  r  r#  defjvpr6  r8  r<  r>  rA  r9  r   rR  rT  re  r  r  rl  ro  rq  ru  degreesradiansrw  ry  r   r*   r  r  rZ  r  r)   r  r[  r  registerr  r  r  r  r   r$   r"   <module>r     s}    # " " " " " $ $ $ $ $ $                  ! ! ! ! ! !             2 2 2 2 2 2       , , , , , , , ,9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 Z
 	hhh 0 0 09 9 9 9? ? ? ? BGG$$$T3 3 3  %$3 GGB(")44WEEET= = =  FE= BN7+++T: : :  ,+: BIg&&&T5 5 5  '&5 BK(((T/ / /  )(/ BK(((T3 3 3  )(3 BGG$$$T, , ,  %$, BHW%%%T6 6 6  &%6 BGG$$$T4 4 4  %$4 BF7###T2 2 2  $#2 BF7###T2 2 2  $#2 BHW%%%T6 6 6  &%6 BHW%%%T6 6 6  &%6 BF7###T2 2 2  $#2 BF7###T2 2 2  $#2 BF7###T2 2 2  $#2 BIg&&&T6 6 6  '&6 BIg&&&T6 6 6  '&6 BIg&&&T6 6 6  '&6 BGG$$$T4 4 4  %$4 BGG$$$T4 4 4  %$4 BJw'''T8 8 8  ('8 BJw'''    (' BGG$$$T4 4 4  %$4 BJw'''T8 8 8  ('8 BGG$$$T4 4 4  %$4 BGG$$$T4 4 4  %$4 BF7###TD D D  $#D BK(((TE E E  )(E BN7+++T= = =  ,+= BM'***T; ; ;  +*; BN7+++T= = =  ,+= BM'***TC C C  +*C GGB,bm<<WMMMTK K K  NMK BHW%%%T. . .  &%. BL)))T2 2 2  *)2 BK(((T2 2 2  )(2 BJw'''T; ; ;  ('; BJw'''T1 1 1  ('1 BJw'''T1 1 1  ('1 BN7+++T= = =  ,+= BL)))TA A A  *)A BN7+++TL L L  ,+L BM'***TJ J J  +*J BN7+++TL L L  ,+L BN7+++TI I I  ,+I    BW---TK K K  .-K BJw'''TE E E  ('E BM'***TH H H  +*H BGG$$$TB B B  %$B 	T* * * * 	T, , , , 	T* * * * 	T, , , , 	T* * * * 	T, , , , 	T/ / / /  6  6  6  6D 	T/ / / /b GGB-r~>>wOOOT    PO 	Tg g g gD 	T   
 #: #: #: #:L #E #E #E #EL BN7+++T    ,+ 
 0$ 0$ 0$ 0$f &! &! &! &!R	 	 	 	 BHW%%%   &%> T   (   BL)))K K K  *) K   ! ! ! BM'***W W W  +* W ! ! ! 	T< < < <* 	T= = = =, BGG$$$T    %$
 BJw'''K K K  ('K(4 4 4 BHW%%%,: ,: ,:  &%,:^ BHW%%%E E E  &%E, BL)))	@ 	@ 	@  *)	@ )jj(((33 BGG$$$8 8 8  %$8 BIg&&&T    '& BJw'''T0 0 0  ('0
 BJw'''T0 0 0  ('0
 
 BL)))T? ? ?  *)?  BGTJ J J  J
 BGTE E E  E BGG%999     :9 BK(((T2 2 2  )(2 BHW%%%3 3 3  &%3	3 	3 	3 	3 BK(((& & & )(& BK(((' ' ' )(' BHW%%%T    &%
 BL)))A A A  *)A  / 0 0 0 BHW%%%3 3 3  &%3( BM'***T       +*  BG&&&8 8 8  '&8 	T***= = +*= > > > > >r$   