
    &Vf                        d dl 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 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 ej        ej        ej        ej        fZd Zd Zd Zd Zd ZddZddZddZ ddZ!ddZ"d Z#d Z$ddZ%ddZ&ddZ'ddZ(ddZ)dd!Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1dd)Z2dd*Z3dd,Z4dd-Z5dd.Z6dd/Z7d0 Z8d1 Z9d2 Z:dd3Z;d4 Z<d5 Z=d6 Z>d7 Z?d8 Z@dd9ZAdd:ZBdd;ZCdd<ZDdd=ZEdd>ZFdd?ZGd@ ZHdA ZIddBZJdC ZKdD ZLdE ZMdF ZNddGZOdH ZPddIZQddJZRdK ZSdL ZTdM ZUddNZVdO ZWdP ZXdQ ZYdR ZZdS Z[dT Z\dU Z]	 ddXZ^dY Z_dZ Z`d[ Zad\ Zbd] Zcd^ Zdd_ Zed` ZfddbZgdc ZhdddZidedfdgZjddhZkdi Zldj Zmdk ZnddmZodn Zpdo Zqdp ZrddqZsdr ZtddtZudduZvddwZwdx Zxdy Zydz Zzdd{Z{d| Z|dd}Z}d~ Z~d Zd Zd ZddZddZddZddZd ZddZddZd Zd ZddZddZd ZddZddZddZddZd Zd ZddddZd Zd Zd Zd Zd Zd Zd Zd ZddZddZddZddZddZd Zd ZddZddZd ZdS )    N)KerasTensor)config)dtypescanonicalize_axis)to_tuple_or_list)vectorize_impl)standardize_dtypecastconvert_to_tensor)
get_device)	is_tensor)to_torch_dtypec                 h    t          |           } t          |          }t          j        | |          S N)r   torchaddx1x2s     Z/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/backend/torch/numpy.pyr   r      s.    	2		B	2		B9R    c                 t   d |D             }t          t          d |D                                 }t          |          dk    ra|d         dk    rUdt                      dk    rt	          j                    fd|D             }t          t          j        | g|R  d          S t          j        | g|R  S )	Nc                 ,    g | ]}t          |          S  r   ).0operands     r   
<listcomp>zeinsum.<locals>.<listcomp>"   s!    CCCw!'**CCCr   c              3   >   K   | ]}t          |j                  V  d S r   )r
   dtyper   xs     r   	<genexpr>zeinsum.<locals>.<genexpr>%   s-       N N!217!;!; N N N N N Nr      r   int8int32cudac                 0    g | ]}t          |          S r   r   )r   r   compute_dtypes     r   r    zeinsum.<locals>.<listcomp>,   s#    IIIWD-00IIIr   )	listsetlenr   r   floatxr   r   einsum)
subscriptsoperandskwargsdtypes_to_resolver+   s       @r   r0   r0   !   s    CC(CCCH S N NX N N NNNOO
""'8';v'E'E<<6!!"MOOMIIIIIIIEL7h777AAA<
.X....r   c                    t          |           } t          |          }t          | j                  dk    rt          | |j                  } t          |j                  dk    rt          || j                  }t	          j        | |          S Nbool)r   r
   r"   r   r   subtractr   s     r   r8   r8   1   sz    	2		B	2		B""f,,"bh""f,,"bh>"b!!!r   c                 t   t          |           } t          |          }d } || |          rt          j        | |          S t          | j                  }t          |j                  }|dk    r	|dk    rd}nt          j        | j        |j                  }|}|dk    rt          j                    }t                      dk    r|dk    rd}t                      dk    rd	|v rt          j                    }t          | |          } t          ||          }t          t          j        | |          |          S )
Nc                    t                      dk    rdS t          | j                  }t          |j                  }|dk    s|dk    rdS | j        }|j        }| j        dk    s|j        dk    rdS |d         dk    s|d         dk     s|d         dz  dk    rdS |d         dk     s|d         dz  dk    s|d         dz  dk    rdS d	S )
Nr)   Fr'      r      r&      T)r   r
   r"   shapendim)r   r   x1_dtypex2_dtypex1_shapex2_shapes         r   can_use_int_matmulz"matmul.<locals>.can_use_int_matmul@   s     <<6!!5$RX..$RX..vV!3!35887a<<27a<<5A;"b 0 0HQK!Oq4H4H5A;x{Q!33x{Q!7K7K5tr   r'   r(   r7   cpufloat16float32r)   int)r   r   _int_mmr
   r"   r   result_typer   r/   r   r   matmul)r   r   rD   r@   rA   result_dtyper+   s          r   rK   rK   <   s=   	2		B	2		B  4 "b!! %}R$$$ **H **H6h&00)"(BH== M ||u)!;!;!||v%="8"8	b-	 	 B	b-	 	 BR$$l333r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   multiplyr   s     r   rN   rN   t   s.    	2		B	2		B>"b!!!r   Fc                    t          | t          t          f          rt          |           } t	          |           } |dk    s|g k    r| S t          |          }t          | j                  }t          j	        | j        d          }d|v s|dk    r|}n|}t          j        | ||t          |                    }t          ||          S )Nr   rG   rH   r7   r"   )
isinstancer,   tuplestackr   r   r
   r"   r   rJ   r   meanr   r   )r$   axiskeepdims	ori_dtyper+   rL   results          r   rT   rT   z   s    !dE]## !HH!ArzzTRZZD!!D!!'**I&qw	::M	Y&00$  Z	]++	  F %%%r   c                 6   t          |           } d| j        v rQ|t          d          |r*t          j        dt          | j                  z  |          S t          j        |          S |t          j        |           }nt          | ||          }t          t          |dd           t          j                  r|j        }|Tt          |j                  }t          ||          }t          j        |t          j        |j        ||                    S |S )Nr   z*Cannot compute the max of an empty tensor.r&   rU   rV   valuesrP   )r   r>   
ValueErrorr   fullr.   tensormaxamaxrQ   getattrTensorr\   r   r"   maximumr$   rU   rV   initialrX   r"   s         r   r`   r`      s   !AAG||?IJJJ 	):dS\\17;;;<(((|1adX666'&(D115<@@ v|,,#G5999}EJv|WEBBB
 
 	
 Mr   c                     t          |pt          j                              }t          | t                    r| f} t          j        | |t                                S Nsizer"   device)r   r   r/   rQ   rH   r   onesr   r>   r"   s     r   rl   rl      sN    53FMOO44E% :5jllCCCCr   c                     t          |pt          j                              }t          | t                    r| f} t          j        | |t                                S rh   )r   r   r/   rQ   rH   r   zerosr   rm   s     r   ro   ro      sN    53FMOO44E% ;Ez||DDDDr   c                 x    t          |           } t          |p| j                  }t          j        | |          S NrP   )r   r   r"   r   
zeros_liker$   r"   s     r   rr   rr      s9    !A5+AG,,EAU++++r   c                 |    t          |           } t          | j                  dk    r| S t          j        |           S r6   )r   r
   r"   r   absr$   s    r   absoluterw      s7    !A!!V++9Q<<r   c                      t          |           S r   )rw   rv   s    r   ru   ru      s    A;;r   c                     t          |           } |"t          t          j        |           d          S t	          |          }|D ]}t          j        | ||          } t          | d          S Nr7   dimkeepdim)r   r   r   allr   r$   rU   rV   as       r   r~   r~      n    !A|EIaLL&)))D!!D 2 2IaQ1116??r   c                     t          |           } |"t          t          j        |           d          S t	          |          }|D ]}t          j        | ||          } t          | d          S rz   )r   r   r   anyr   r   s       r   r   r      r   r   c                     t          |           } |t          j        |           S |dk    s|g k    r| S t          j        | ||          S Nr   r{   )r   r   ra   r$   rU   rV   s      r   ra   ra      O    !A|z!}}rzzTRZZ:aT84444r   c                     t          |           } |t          j        |           S |dk    s|g k    r| S t          j        | ||          S r   )r   r   aminr   s      r   r   r      r   r   c                     t          |           t          |          }} |:t          j        |                                 |                                f          S t          j        | |f|          S Nr|   )r   r   catflatten)r   r   rU   s      r   appendr     s_    r""$5b$9$9B|y"**,,

56669b"X4((((r   r&   c           	         |}t          | dt          |                     t          |dt          |                    g}|1|                    t          |dt          |                               t          j        | }t          |          }|#t          j        | |t                                S t          j        | |||t                                S )Nr"   )endr"   rk   )stepr"   rk   )	rb   typer   r   rJ   r   r   aranger   )startstopr   r"   r4   s        r   r   r   	  s    }E7DKK00D'4::..
 $$WT7DJJ%G%GHHH"$565!!E||U:<<HHHH<t$eJLL   r   c                 H    t          |           } t          j        |           S r   )r   r   arccosrv   s    r   r   r         !A<??r   c                 H    t          |           } t          j        |           S r   )r   r   arccoshrv   s    r   r   r         !A=r   c                 H    t          |           } t          j        |           S r   )r   r   arcsinrv   s    r   r   r   $  r   r   c                 H    t          |           } t          j        |           S r   )r   r   arcsinhrv   s    r   r   r   )  r   r   c                 H    t          |           } t          j        |           S r   )r   r   arctanrv   s    r   r   r   .  r   r   c                 F   t          |           } t          |          }t          j        | j        |j        t                    }|}t                      dk    r|dk    rd}t          | |          } t          ||          }t          t          j        | |          |          S NrE   rF   rG   )	r   r   rJ   r"   floatr   r   r   arctan2r   r   rL   r+   s       r   r   r   3  s    	2		B	2		B%bh%@@L M||u)!;!;!	b-	 	 B	b-	 	 Bb"%%|444r   c                 H    t          |           } t          j        |           S r   )r   r   arctanhrv   s    r   r   r   @  r   r   c                     t          |           } t          | j                  dk    rt          | d          } t          t	          j        | ||          d          S Nr7   uint8r{   r(   rP   )r   r
   r"   r   r   argmaxr   s      r   r   r   E  Y    !A !!V++GQD(;;;7KKKKr   c                     t          |           } t          | j                  dk    rt          | d          } t          t	          j        | ||          d          S r   )r   r
   r"   r   r   argminr   s      r   r   r   O  r   r   c                     t          |           } t          | j                  dk    rt          | d          } |d}|                     d          } t          t          j        | |d          d          S )Nr7   r   r   T)r|   stabler(   rP   )r   r
   r"   r   reshaper   argsortr$   rU   s     r   r   r   Y  sr    !A !!V++G|IIbMMaT$777wGGGGr   c                 $    t          | |          S rq   r   rs   s     r   arrayr   f  s    Qe,,,,r   c                    t          |           } | j        t          g}|)t          |          }|                    |j                   t	          j        | }t          | |          } |t          ||          }|dk    s|g k    r| S |@t          j        t          j	        | |          |          t          j        |d          z  S t          j
        | |          S )Nr   r   r   )r   r"   r   r   r   rJ   r   r   summulrT   )r$   rU   weightsr4   r"   s        r   averager   j  s    !A%(#G,,  /// 12EQAw&&rzzTRZZy1g..D999EI=
 =
 =
 
 	
 :ar   c           	      2   |rt          d          t          |           } | j        g}|8t          |          }|                    |j                   t	          j        | }nd}t          | j                  dk    rw|#fd}t          t          ||                     }n0fd}t          t          |t          | |                              }t          t          j        |          |          S t          t          j        | |          |          S )Nz2Unsupported value `sparse=True` with torch backendr(   r;   c                 0    t          j        |           S )N)	minlengthr   bincount)arrr   s    r   bincount_fnzbincount.<locals>.bincount_fn  s    ~cY????r   c                 J    t          j        | d         | d                   S )Nr   r&   )r   r   r   )arr_wr   s    r   r   zbincount.<locals>.bincount_fn  s+    ~!HeAh)   r   )r]   r   r"   r   r   rJ   r.   r>   r,   mapzipr   r   rS   r   )r$   r   r   sparser4   r"   r   	bincountss     `     r   r   r   ~  s3    OMNNN!A	#G,,  ///"$56
17||q?@ @ @ @ @ Sa0011II    
 Sc!Woo>>??IEK	**E222q'955u===r   c                 J    t          |           } t          j        | |          S r   )r   r   broadcast_to)r$   r>   s     r   r   r     s"    !Aa'''r   c                    t          |           } t          | j                  }|dk    rt          | d          } n9t	                      dk    r'|dk    r!t          | t          j                              } |dk    rt          j                    }nt          j        |t                    }t          t          j        |           |          S )Nr7   r   rE   rF   int64rP   )r   r
   r"   r   r   r   r/   r   rJ   r   r   ceil)r$   rW   r"   s      r   r   r     s    !A!!'**I FG			9	#9#9FMOO$$G"9e44
1U++++r   c                 x   t          |           } t          |          }t          |          }t          | j                  }t                      dk    r;|dk    r5t	          | d          } t	          t          j        | ||          d          S |dk    rt	          | d          } t          j        | ||          S )NrE   rF   rG   )minr`   r7   r(   )r   r
   r"   r   r   r   clip)r$   x_minx_maxrW   s       r   r   r     s    !Ae$$Ee$$E!!'**I ||ui!7!7IEJqe777CCCFG:aU....r   c                 F    d | D             } t          j        | |          S )Nc                 ,    g | ]}t          |          S r   r   r#   s     r   r    zconcatenate.<locals>.<listcomp>  !    	+	+	+1
A

	+	+	+r   r   )r   r   )xsrU   s     r   concatenater     s*    	+	+	+	+	+B9RT""""r   c                     t          | t          j                  st          j        |           } t          j        |                                           S r   rQ   r   rc   
from_numpyconjresolve_conjrv   s    r   	conjugater     @    a&&  Q:a==%%'''r   c                     t          | t          j                  st          j        |           } t          j        |                                           S r   r   rv   s    r   r   r     r   r   c                 H    t          |           } t          j        |           S r   )r   r   clonerv   s    r   copyr         !A;q>>r   c                 H    t          |           } t          j        |           S r   )r   r   cosrv   s    r   r   r         !A9Q<<r   c                 H    t          |           } t          j        |           S r   )r   r   coshrv   s    r   r   r         !A:a==r   c                     t          |           } |dk    s|g k    r#t          t          j        | d          d          S t          t          j        | |          j        d          S )Nr   r   r(   r   )r   r   r   necount_nonzeroTr   s     r   r   r     s]    !ArzzTRZZEHQNNG,,,#A40002G<<<r   c           	         |dk    s|dk    s|dk    rt          d| d| d| d          t          |           } t          |          }t          j        | j        |j                  }|}t                      dk    r	|dk    rd}nt                      d	k    r|d
k    rd}t          | |          } t          ||          }t          t          j        | ||          |          S )Nr   zMTorch backend does not support `axisa`, `axisb`, or `axisc`. Received: axisa=z, axisb=z, axisc=z). Please use `axis` arg in torch backend.r)   bfloat16rG   rE   rF   r   )	r]   r   r   rJ   r"   r   r   r   cross)r   r   axisaaxisbaxiscrU   r+   rL   s           r   r   r     s   {{erkkUb[[/$/ /.3/ /=B/ / /
 
 	

 
2		B	2		B&rx::M L||v-:"="=!			=I#=#=!	b-	 	 B	b-	 	 BB---|<<<r   c           	      t   t          |           } ||                                 } d}t          j        |p| j                  }|dk    rd}nJt                      dk    r8|dk    r2t          t          j        | |t          d                    d          S t          j        | |t          |                    S Nr   r7   r(   rE   rF   rG   r|   r"   )
r   r   r   rJ   r"   r   r   r   cumprodr   r$   rU   r"   s      r   r   r     s    !A|IIKKu/00E			5I#5#5M!^I-F-FGGG
 
 	
 =N5,A,ABBBBr   c           	      t   t          |           } ||                                 } d}t          j        |p| j                  }|dk    rd}nJt                      dk    r8|dk    r2t          t          j        | |t          d                    d          S t          j        | |t          |                    S r   )
r   r   r   rJ   r"   r   r   r   cumsumr   r   s      r   r   r     s    !A|IIKKu/00E			5I#5#5LN9,E,EFFF
 
 	
 <t>%+@+@AAAAr   c                 L    t          |           } t          j        | |          S Ndiagonal)r   r   diagr$   ks     r   r  r  $  $    !A:a!$$$$r   c                 P    t          |           } t          j        | |||          S )N)offsetdim1dim2)r   r   r   )r$   r  axis1axis2s       r   r   r   )  s4    !A>		   r   c                 N    t          |           } t          j        | ||          S )N)nr|   )r   r   diff)r   r  rU   s      r   r  r  3  s&    !A:a1$''''r   c                     t          |           } t          |          }t          | j                  dk    rt          | d          } t          t	          j        | |d          d          S )Nr7   r   T)rightr(   )r   r
   r"   r   r   	bucketize)r$   binss     r   digitizer  8  sa    !AT""D!!V++G4t444g>>>r   c                    t          |           } t          |          }t          j        | j        |j                  }t          j        |t                    }t                      dk    r|dk    rd}t          | |          } t          ||          }| j        dk    s|j        dk    r#t          t          j	        | |          |          S t          t          j
        | |          |          S )NrE   rF   rG   r   )r   r   rJ   r"   r   r   r   r?   r   rN   rK   )r$   yrL   r+   s       r   dotr  @  s    !A!A%agqw77L&|U;;M ||u)!;!;!QAQAv{{afkkEN1a((,777Q""L111r   c                     t          |pt          j                              }t          j        | |t                                S rh   )r   r   r/   r   emptyr   rm   s     r   r  r  R  s5    53FMOO44E;Ez||DDDDr   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   eqr   s     r   equalr  W  s.    r""$5b$9$9B8Br   c                     t          |           } t          | j                  }d|v s|dk    r!t          | t	          j                              } t          j        |           S NrH   r7   )r   r
   r"   r   r   r/   r   expr$   rW   s     r   r  r  \  sV    !A!!'**I	Y&00FMOO$$9Q<<r   c                     t          |           } t          |          }t          | j                  t          |          z   t	          fd|D                       }|D ]}t          j        | |          } | S )Nc                 0    g | ]}t          |          S r   r   )r   r   out_ndims     r   r    zexpand_dims.<locals>.<listcomp>h  s$    @@@a$Q11@@@r   r   )r   r   r.   r>   sortedr   	unsqueeze)r$   rU   r   r!  s      @r   expand_dimsr$  d  s    !AD!!D17||c$ii'H@@@@4@@@AAD & &OA1%%%Hr   c                     t          |           } t          | j                  }d|v s|dk    r!t          | t	          j                              } t          j        |           S r  )r   r
   r"   r   r   r/   r   expm1r  s     r   r&  r&  n  sV    !A!!'**I	Y&00FMOO$$;q>>r   c                     t          |           } |!t          t          | j                            }t	          |          }t          j        | |          S Ndims)r   rR   ranger?   r   r   flipr   s     r   r,  r,  v  sK    !A|U16]]##D!!D:ad####r   c                     t          |           } t          | j                  dk    rt          j                    nt          j        | j        t                    }t          | |          } t          j
        |           S Nr   )r   r
   r"   r   r/   r   rJ   r   r   r   floorrs   s     r   r/  r/  ~  sg    !A QW%%00 	// 

 	QA;q>>r   c                    t          |          }t          ||          }t          |j                  dk    rht          |           t          |j                  z
  }t	          | d |                   dt          |j                  z  z   }t          j        ||          S t          j        | ||t                                S )NrP   r   rZ   )rj   
fill_valuer"   rk   )	r   r   r.   r>   rR   r   tiler^   r   )r>   r1  r"   expand_size
tile_shapes        r   r^   r^     s    5!!E":U;;;J
:q  %jj3z'7#8#885+.//$Z=M9N9N2NN
z*j111:zz||   r   c                 B    |p| j         }t          | j        ||          S )N)r>   r1  r"   )r"   r^   r>   )r$   r1  r"   s      r   	full_liker6    s%    QWEag*EBBBBr   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   greaterr   s     r   r8  r8    s.    r""$5b$9$9B=R   r   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   greater_equalr   s     r   r:  r:    s/    r""$5b$9$9Br2&&&r   c                 B    d | D             } t          j        |           S )Nc                 ,    g | ]}t          |          S r   r   r#   s     r   r    zhstack.<locals>.<listcomp>  r   r   )r   hstackr   s    r   r=  r=    %    	+	+	+	+	+B<r   c                 L   t          |pt          j                              }t                      dk    rN|t          j        k    r>t          t	          j        | t          d          t                                |          S t	          j        | |t                                S )NrE   rG   r"   rk   )r   r   r/   r   r   r   r   eye)r  r"   s     r   identityrC    s    53FMOO44E ||u%.!8!8Ia~i88NNN
 
 	
 9QeJLL9999r   c                     t          | t          j                  st          j        |           } t          j        |           S r   )rQ   r   rc   r   imagrv   s    r   rE  rE    4    a&&  Q:a==r   c                     t          |           } t          |          }t          j        | j        |j                  }t	          | |          } t	          ||          }t          j        | |          S r   )r   r   rJ   r"   r   r   isclose)r   r   rL   s      r   rH  rH    sb    	2		B	2		B%bh99L	b,		B	b,		B=R   r   c                 H    t          |           } t          j        |           S r   )r   r   isfiniterv   s    r   rJ  rJ        !A>!r   c                 H    t          |           } t          j        |           S r   )r   r   isinfrv   s    r   rM  rM    r   r   c                 H    t          |           } t          j        |           S r   )r   r   isnanrv   s    r   rO  rO    r   r   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   lessr   s     r   rQ  rQ    s.    r""$5b$9$9B:b"r   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   
less_equalr   s     r   rS  rS    /    r""$5b$9$9BB###r   2   Tc                 H   |dk    rt          d|           |Pt          | dt          |                     t          |dt          |                    t          g}t	          j        | }t          |          }t          t          j	                  }|r|dk    r|| z
  |dz
  z  }n|dk    r|| z
  |z  }|dk    r||| z
  |z  z
  }t          | d          rt          |d          rt          | |          } t          ||          }t          j        ||t                                |dz
  z  }	t          | j                  D ]}
|	                    d          }	| d          |	|| z
  d          z  z   }n%t          j        | |||t                      	          }|d
u r||fS |S )Nr   zBtorch.linspace does not support an `axis` argument. Received axis=r"   r&   __len__rP   rA  r   )r   r   stepsr"   rk   T)r]   rb   r   r   r   rJ   r   r   r   nanhasattrr   r   r+  r?   r#  linspace)r   r   numendpointretstepr"   rU   r4   r   rX  ir[  s               r   r[  r[    s    qyy$!$ $
 
 	
 }E7DKK00D'4::..

 "$565!!EUY''D 1775LS1W-D775LC'D77D5LC/0Dui   
WT9%=%= 
!%u555 U333SjllCCCsQwO uz"" 	( 	(AOOB''EE ;$,)=!==><<
 
 
 $$Or   c                 H    t          |           } t          j        |           S r   )r   r   logrv   s    r   ra  ra    r   r   c                 H    t          |           } t          j        |           S r   )r   r   log10rv   s    r   rc  rc    r   r   c                 H    t          |           } t          j        |           S r   )r   r   log1prv   s    r   re  re    r   r   c                 H    t          |           } t          j        |           S r   )r   r   log2rv   s    r   rg  rg    r   r   c                    t          |           } t          |          }t          j        | j        |j        t                    }t                      dk    rI|dk    rCt          | d          } t          |d          }t          t          j        | |          |          S t          | |          } t          ||          }t          j        | |          S r   )	r   r   rJ   r"   r   r   r   r   	logaddexpr   r   r"   s      r   ri  ri  $  s    	2		B	2		Brx599E ||u)!3!3"i  "i  EOB++U333"e__"e__r2&&&r   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   logical_andr   s     r   rl  rl  4  /    r""$5b$9$9BR$$$r   c                 H    t          |           } t          j        |           S r   )r   r   logical_notrv   s    r   ro  ro  9  s     !AQr   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   
logical_orr   s     r   rq  rq  >  rT  r   
   c                 F   |dk    rt          d|           |Pt          | dt          |                     t          |dt          |                    t          g}t	          j        | }t          |          }|du r||| z
  |z  z
  }t          | d          rt          |d          rt          | |          } t          ||          }t          j
        ||t                                |dz
  z  }t          | j                  D ]}	|                    d	          }| d          ||| z
  d          z  z   }
||
z  }nd|}t                      d
k    r|t          j        k    rt          j        }t#          t          j        | ||||t                                |          }|S )Nr   zBtorch.logspace does not support an `axis` argument. Received axis=r"   FrW  rP   rA  r&   r   rE   )r   r   rX  baser"   rk   )r]   rb   r   r   r   rJ   r   rZ  r   r   r   r   r+  r?   r#  rF   rG   r   logspace)r   r   r\  r]  rt  r"   rU   r4   rX  r_  r[  ru  r+   s                r   ru  ru  C  s   qyy$!$ $
 
 	
 }E7DKK00D'4::..

 "$565!!E5u+,ui   
WT9%=%= 
!%u555 U333SjllCCCsQwO uz"" 	( 	(AOOB''EE ;$,)=!==><<5  Uem%;%;!MMN#!||   

 

 Or   c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          | |          } t          ||          }t          j	        | |          S Nr"   )
rQ   rH   r   r   r   rJ   rb   r   r   rd   rj  s      r   rd   rd   s      b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E 
2u	%	%B	2u	%	%B=R   r   c                 D    t                      t          j         j        d          }t          j         j        t                    }t           |           |&|du r"t          t          j                   |          S t          |t                    r+t          t          j         ||          d         |          S |t           dg          }nψ fd|D             }t          t          t           j                                                |                    }|t!          |          z   }t          j         |          }t!           j                  fd|D             }	t'          j        fd	|D                       g}
|	|
z   }t          ||          }t          j        |d
          d         }|rN|)t           j                  D ]}t+          |d          }n#t          |          D ]}t+          ||          }t          ||          S )NrG   Fr{   r   r   c                 :    g | ]}t          |j                  S r   r   r?   r   r   r$   s     r   r    zmedian.<locals>.<listcomp>  &    ;;;!!QV,,;;;r   r)  c                      g | ]
}|         S r   r   r   r_  x_shapes     r   r    zmedian.<locals>.<listcomp>      666awqz666r   c                      g | ]
}|         S r   r   r  s     r   r    zmedian.<locals>.<listcomp>      999q
999r   r   rU   )r   r   rJ   r"   r   r   r   medianrQ   rH   r   r"  r-   r+  r?   
differencer,   permuter>   mathprodr$  )r$   rU   rV   r+   rL   r  
other_dimspermx_permedother_shape	end_shape
full_shape_r_  r  s   `             @r   r  r    s)   !A&qw	::M%agu55LQA|E))ELOO\222	D#		 
Lh777:L
 
 	

 |At <;;;d;;;Caf..99$??@@
DJJ&=...qw--6666:666Y9999D999::;	 9,
Hj))QB"A +<16]] , ,+++, D\\ + +***<   r   xyindexingc                 F    d |D             }t          j        ||           S )Nc                 ,    g | ]}t          |          S r   r   )r   	sc_tensors     r   r    zmeshgrid.<locals>.<listcomp>  s!    999)	9	%	%999r   r  )r   meshgrid)r  r$   s     r   r  r    s*    99q999A>!h////r   c                    t          |           } d| j        v rQ|t          d          |r*t          j        dt          | j                  z  |          S t          j        |          S |t          j        |           }nt          | ||          }t          t          |dd           t          j                  r|j        }|:t          |j                  }t          ||          }t          j        ||          S |S )Nr   z*Cannot compute the min of an empty tensor.rZ   r[   r\   rP   )r   r>   r]   r   r^   r.   r_   r   r   rQ   rb   rc   r\   r   r"   minimumre   s         r   r   r     s    !AAG||?IJJJ 	):dS\\17;;;<(((|1adX666'&(D115<@@ v|,,#G5999}VW---Mr   c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          | |          } t          ||          }t          j	        | |          S rw  )
rQ   rH   r   r   r   rJ   rb   r   r   r  rj  s      r   r  r    rx  r   c                     t          |           } t          |          }t          j        | j        |j                  }|dk    r t	          | d          } t	          |d          }t          j        | |          S Nr7   r(   )r   r   rJ   r"   r   r   	remainderrj  s      r   modr    sk    	2		B	2		Brx22E"g"g?2r"""r   c                 N    t          |           } t          j        | ||          S )N)sourcedestination)r   r   moveaxis)r$   r  r  s      r   r  r    s&    !A>!FDDDDr           c                 P    t          |           } t          j        | |||          S )N)rY  posinfneginf)r   r   
nan_to_num)r$   rY  r  r  s       r   r  r    s)    !AA3vfEEEEr   c                 .    t          |           } | j        S r   )r   r?   rv   s    r   r?   r?     s    !A6Mr   c                     t          |           } t          d t          j        |           j        D                       S )Nc              3   6   K   | ]}t          |d           V  dS )r(   Nr   )r   indicess     r   r%   znonzero.<locals>.<genexpr>  s,      JJGgw''JJJJJJr   )r   rR   r   nonzeror   rv   s    r   r  r    s9    !AJJu}Q7G7G7IJJJJJJr   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   	not_equalr   s     r   r  r    s.    r""$5b$9$9B?2r"""r   c                 x    t          |           } t          |p| j                  }t          j        | |          S rq   )r   r   r"   r   	ones_likers   s     r   r  r    s8    !A5+AG,,E?1E****r   c                     t          |           t          |          }} t          j        |                                 |                                          S r   )r   r   outerr   r   s     r   r  r     s>    r""$5b$9$9B;rzz||RZZ\\222r   constantc           	      J   i }||dk    rt          d|           ||d<   t          |           } g }t          |          d d d         }d}|D ]}||d         |d         z   z  }|D ]#}||z  }||d         |d         z   z  }|dk    r n$|dk    rd}|dk    rt          j        j        j        | f||d	|S | j        }| j        }	d
}
| j        dk     r$d}
dgd| j        z
  z  } | j	        g || j
        R  } d
}| j        t          j        t          j        fvrd}t          | t          j                  } t          j        j                            | ||	          } |rt          | |          } |
r3t          j        | t          t!          d|	z
                                } | S )Nr  zZArgument `constant_values` can only be provided when `mode == 'constant'`. Received: mode=valuer   r   r&   	symmetric	replicate)padmodeF   Tr   )r]   r   r,   r   nn
functionalr  r"   r?   viewr>   rG   float64r   squeezerR   r+  )r$   	pad_widthr  constant_valuesr3   pad_sumpad_width_sumr  rW   ori_ndimneed_squeezenew_dims	need_casts                r   r  r    s   F":)"&) )  
 *w!AGY"%IM ) )Q#a&(  3Q#a&(AE {zx"&qKgDKKFKKK
 IvHLvzz3!af*%AF'H'qw'''Iwu}em444 	EM""wT::A I =M!uQ\':':!;!;<<<Hr   c                    t          |           } |1t          j        | j                  }|dk    rd}n|dv rd}n|dk    rd}|}t	                      dk    r|dk    rd}|1t          t          j        | t          |                    |          S t          |          }|D ]5}t          t          j        | ||t          |          	          |          } 6| S )
Nr7   r(   )r'   int16r   rE   rF   rG   rP   )r|   r}   r"   )
r   r   rJ   r"   r   r   r   r  r   r   )r$   rU   rV   r"   r+   r   s         r   r  r  7  s   !A}"17++F??EE'''EEgEM||u)!;!;!|EJq}(E(EFFFNNND!!D 
 
Jq(.2O2O   	
 
 Hr   linearc                     t                      t          |          }t          |          }t          j         j        d          }t          j         j        t
                    }t           |            j        |j        k    rt          | j                  }|t           dg          }nψ fd|D             }t          t          t           j                                                |                    }|t          |          z   }	t          j         |	          }
t           j                  fd|D             }t#          j        fd|D                       g}||z   }t          |
|          }t          j        ||d|          }|r`|)t           j                  D ]}t)          |d          }n5t          |          D ]%}|j        d	k    r|d
z   n|}t)          ||          }&t          ||          S )NrG   r   c                 :    g | ]}t          |j                  S r   r{  r|  s     r   r    zquantile.<locals>.<listcomp>f  r}  r   r)  c                      g | ]
}|         S r   r   r  s     r   r    zquantile.<locals>.<listcomp>l  r  r   c                      g | ]
}|         S r   r   r  s     r   r    zquantile.<locals>.<listcomp>m  r  r   )r|   interpolationr  r   r&   )r   r   r   rJ   r"   r   r   r   r"  r-   r+  r?   r  r,   r   r  r>   r  r  quantiler$  )r$   qrU   methodrV   r+   rL   r  r  r  r  r  r  r  r  r_  r  s   `               @r   r  r  T  s   !A!AD!!D&qw	::M%agu55LQAw!'AG |At <;;;d;;;Caf..99$??@@
DJJ&=...qw--6666:666Y9999D999::;	 9,
Hj))q!6:::A +<16]] , ,+++, D\\ + +VaZZAEEQ***<   r   c                 H    t          |           } t          j        |           S r   )r   r   ravelrv   s    r   r  r    r   r   c                     t          | t          j                  st          j        |           } t          j        |           S r   )rQ   r   rc   r   realrv   s    r   r  r    rF  r   c                 H    t          |           } t          j        |           S r   )r   r   
reciprocalrv   s    r   r  r    s     !AAr   c                    t          |           } t                      dk    rst          | j        t	          | j                            } t          | ||          }t          j        |j        t          |j                  t                                S t          |t                    }t          j        | ||          S )Nmetar  ri   rP   r   )r   r   r   r>   r
   r"   repeatr   r  r   rH   repeat_interleave)r$   repeatsrU   outputss       r   r  r    s    !A||v!217!;!;<<G$///{ //<<
 
 
 	
  s333G"1g48888r   c                     t          |t          t          f          s|f}t          |           } t	          j        | |          S r   )rQ   r,   rR   r   r   r   )r$   newshapes     r   r   r     s>    hu.. ;!A=H%%%r   c                 N    t          |           } t          j        | ||          S r(  )r   r   roll)r$   shiftrU   s      r   r  r    s&    !A:aT****r   c                 H    t          |           } t          j        |           S r   )r   r   signrv   s    r   r  r    r   r   c                 H    t          |           } t          j        |           S r   )r   r   sinrv   s    r   r  r    r   r   c                 H    t          |           } t          j        |           S r   )r   r   sinhrv   s    r   r  r    r   r   c                 l    t          t          | j                            }t          j        |          S r   )r   rR   r>   r   r  )r$   r  s     r   rj   rj     s'    ag//G:gr   c                    t          |           } t                      dk    rQt          | j                  dk    r9t	          | d          } t	          t          j        | |          j        d          S t          j        | |          j        S )Nr)   r7   r   r   )r   r   r
   r"   r   r   sortr\   r   s     r   r  r    s|    !A||v"3AG"<"<"F"FGEJqd+++2F;;;:aT"""))r   c                 h   t          |           } | j        |         }t          |t                    sft          |          }|dd         }||dd          z
  }t	          j        |t	          j        |          |gd          }|                                }n?||z  dk    r1t          d| d| d| d| j        |          d	| d
| j                   ||z  }t	          j	        | ||          |dk    r=t          |t                    r(t          fdt          |          D                       S )Nr   r&   r   r   zReceived indices_or_sections=z0 (interpreted as a number of sections) and axis=z, but input dimension x.shape[z]=z is not divisible by z. Full input shape: x.shape=)r_   split_size_or_sectionsr|   c              3   L   K   | ]}d                                           V  dS )r   N)r   )r   r  outs     r   r%   zsplit.<locals>.<genexpr>  s/      GGqCFLLNNGGGGGGr   )r   r>   rQ   rH   r   concatr  tolistr]   splitrR   r+  )r$   indices_or_sectionsrU   r|   
start_sizeend_sizechunk_sizesr  s          @r   r  r    s   !A
'$-C)3// 1/0CDD(1-
,RSS11l$788(C
 
 
 "((**$$))70C 7 7BF7 7/37 778wt}7 7 (;7 7 ./W	7 7   00
+*  C
 axxJ2C88xGGGGE2E,F,FGGGGGJr   c                 F    d | D             } t          j        | |          S )Nc                 ,    g | ]}t          |          S r   r   )r   elems     r   r    zstack.<locals>.<listcomp>  s!    ///T	4	 	 ///r   r   )r   rS   r   s     r   rS   rS     s*    //Q///A;qd####r   c                     t          |           } t          | j                  }d|v s|dk    rt          | d          } t	          j        | ||d          S )NrH   r7   rG   F)r|   r}   unbiased)r   r
   r"   r   r   std)r$   rU   rV   rW   s       r   r  r    s[    !A!!'**I	Y&00I9QD(UCCCCr   c                 N    t          |           } t          j        | ||          S )N)axis0r	  )r   r   swapaxes)r$   r	  r
  s      r   r   r     s&    !A>!56666r   c                    t          |           } t          |                                          }|| j        |         n| j        d         }t          j        |dk     ||z   |          }| j        dk    r+|dk    r%t          j        j                            ||           S |t          j	        | d          } d}|t          || j                  }| j        d |         |j        z   | j        |dz   d          z   }|                                }t          j        | ||                              |          }|	                    |          S t          j        | |          S )Nr   r;   r   r&   )r|   index)r  )r   longr>   r   wherer?   r  r  	embeddingr   r   r  index_selectr  take)r$   r  rU   x_dimr>   r  s         r   r  r    sK   !A((--//G!-AGDMM171:Ek!% G
 	v{{tqyyx",,Wa888|M!U## qv...1DD --// G<<<DDTJJ{{5!!!:aw''''r   c                    t          |           } t          |                                          }|| j        |         n| j        d         }t          j        |dk     ||z   |          }t          j        | ||          S )Nr   r   )r   r  r>   r   r  take_along_dim)r$   r  rU   r	  s       r   take_along_axisr    s~    !A((--//G!-AGDMM171:Ek!% G
 75555r   c                 H    t          |           } t          j        |           S r   )r   r   tanrv   s    r   r  r  %  r   r   c                 H    t          |           } t          j        |           S r   )r   r   tanhrv   s    r   r  r  *  r   r   r;   c                 4   t          |           } t          |          }t          j        | j        |j                  }t          j        |t                    }t                      dk    r|dk    rd}t          | |          } t          ||          }t          |t          t          f          rG|\  }}t          |t          t          f          s|f}t          |t          t          f          s|f}||f}t          t          j        | ||          |          S )NrE   rF   rG   r)  )r   r   rJ   r"   r   r   r   rQ   r,   rR   r   	tensordot)r   r   axesrL   r+   firstseconds          r   r  r  /  s   	2		B	2		B%bh99L&|U;;M||u)!;!;!	b-	 	 B	b-	 	 B$u&& v%$// 	HE&4-00 	YFvBT222LAAAr   c                    t          |           } t          | j                  }d|v rEt          | t	          j                              } t          t          j        | |          |          S t          j        | |          S )NrH   )decimals)r   r
   r"   r   r   r/   r   round)r$   r  rW   s      r   r  r  E  sr    !A!!'**I	FMOO$$EKH555yAAA;q8,,,,r   c                     t          |          r3t          |                                                                          }t	          |           } t          j        | |          S r(  )r   rR   rH   numpyr   r   r2  )r$   r  s     r   r2  r2  O  sU     /++--..!A:ag&&&&r   c                     t          |           } t          | j                  }|dk    rt          j        |d          }t          j        t          j        | |||          dt          |                    S )Nr   r(   r   r   )	r   r
   r"   r   rJ   r   r   r   r   )r$   r  r	  r
  r"   s        r   tracer  V  su    !Aag&&E"5'229q&%//U##   r   c                     t          |pt          j                              }|p| }t          j        | |f|t                                }t          j        ||          S )NrA  r   )r   r   r/   r   rl   r   tril)NMr  r"   r$   s        r   trir!  b  sV    53FMOO44E	QA
Aq6z||<<<A:a!$$$$r   c                 L    t          |           } t          j        | |          S r   )r   r   r  r  s     r   r  r  i  r  r   c                 L    t          |           } t          j        | |          S r   )r   r   triur  s     r   r$  r$  n  r  r   c                 j   t          |           } t          |          }t          j        | j        |j                  }t          j        |t                    }t                      dk    r|dk    rd}t          | |          } t          ||          }t          t          j        | |          |          S r   )	r   r   rJ   r"   r   r   r   r   vdotr   s       r   r&  r&  s  s    	2		B	2		B%bh99L&|U;;M ||u)!;!;!	b-	 	 B	b-	 	 B
2r""L111r   c                 B    d | D             } t          j        |           S )Nc                 ,    g | ]}t          |          S r   r   r#   s     r   r    zvstack.<locals>.<listcomp>  r   r   )r   vstackr>  s    r   r)  r)    r?  r   excluded	signaturec                <    t          | t          j        ||          S )Nr*  )r	   r   vmap)pyfuncr+  r,  s      r   	vectorizer0    s$    
X   r   c                     t          | t                    } |6|4t          |          }t          |          }t          j        | ||          S t          j        |           S rq   )r   r7   r   r  )	conditionr   r   s      r   r  r    s[    !)4888I	~".r""r""{9b"---{9%%%r   c                     t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        | |          S r   )rQ   rH   r   r   r   divider   s     r   r4  r4    sZ    b3,'' #r""b3,'' #r""<Br   c                    t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        |dk    dt	          j        | |                    S )Nr   )rQ   rH   r   r   r   r  r4  r   s     r   divide_no_nanr6    sl    b3,'' #r""b3,'' #r"";rQw5<B#7#7888r   c                 "    t          | |          S r   )r4  r   s     r   true_divider8    s    "b>>r   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   powr   s     r   powerr;    s.    r""$5b$9$9B9Rr   c                 H    t          |           } t          j        |           S r   )r   r   negativerv   s    r   r=  r=    rK  r   c                     t          |           } t          | j                  dk    rt          | d          } t	          j        |           S r  )r   r
   r"   r   r   squarerv   s    r   r?  r?    sA    !A!!V++G<??r   c                     t          |           } t          | j                  dk    r!t          | t	          j                              } t          j        |           S r.  )r   r
   r"   r   r   r/   r   sqrtrv   s    r   rA  rA    sG    !A!!W,,FMOO$$:a==r   c                 x    t          |           } |t          j        | |          S t          j        |           S r   )r   r   r  r   s     r   r  r    s:    !A}QD))))=r   c                 ^    t          |           } |t          j        | |          S | j        S r(  )r   r   r  r   )r$   r  s     r   	transposerD    s1    !A}QT****3Jr   c                 6   t          |           } t          j        | j        d          }t          j        | j        t                    }|g k    s|dk    rt          | |          S t          | |          } t          t          j        | ||d          |          S )NrG   r   r   )r|   r}   
correction)	r   r   rJ   r"   r   rr   r   r   var)r$   rU   rV   r+   rL   s        r   rG  rG    s    !A&qw	::M%agu55LrzzTRZZ!\***QA	!xA>>>  r   c                 X   t          | t          t          f          rt          |           } t	          |           } |dk    s|g k    r| S t          | j                  }|dv rd}|%t          t          j	        | ||          |          S t          t          j	        |           |          S )Nr   )r7   r   r'   r  r(   )rU   r}   )
rQ   r,   rR   rS   r   r
   r"   r   r   r   )r$   rU   rV   r"   s       r   r   r     s    !dE]## !HH!ArzzTRZZag&&E 222EIadH===uEEE	!e$$$r   c           	      (   t          |pt          j                              }|| n|}|dn|}|dk    rt                      dk    rO|t          j        k    r?t          t	          j        | |t          d          t                                |          S t	          j        | ||t                                S t          j	        | |          }t	          j
        ||t                                }t	          j        ||          d | d |f         S )Nr   rE   rG   rA  r   )r   r   r/   r   r   r   r   rB  builtinsr`   rl   r  )r  r   r  r"   diag_lengthr  s         r   rB  rB    s   53FMOO44EYAAYAAAvv<<5  Uen%<%<	qy 9 9*,,   	   yAU:<<@@@@,q!$$K:kz||DDDD:dQ'''BQB//r   c           
         t          | t          t          f          st          |           } t          |t          t          f          st          |          }t	          j        t          | dt          |                     t          |dt          |                              }t          t          j
        | |          |          S rw  )rQ   rH   r   r   r   rJ   rb   r   r   r   floor_dividerj  s      r   rM  rM    s    b3,'' #r""b3,'' #r""GT"XX&&GT"XX&& E "2r**E222r   c                 h    t          |           t          |          }} t          j        | |          S r   )r   r   logical_xorr   s     r   rO  rO    rm  r   validc           
      ^   t          |           } t          |          }t          j        t          | dt	          |                     t          |dt	          |                              }|dk    rd}n|dvrd}t          | |          } t          ||          }|                     d          |                    d          }}| j        d d         |j        d d         k    r|d t          | j        d d         |j        d d                   D             }t          j
        | || j        d         gz             } t          j
        |||j        d         gz             }t          j        | j        d d                                                   }t          j        | t          |          |                     d          f          } t          j        |t          |          |                    d          f          }t          j        j                            | |                    d	          |                     d          |                    d          d	z
  
          }| j        d d         dz   }	|                    |	          }
|dk    rXt'          j        ||          t'          j        ||          z
  d	z   }|
                    d          |z
  dz  }|
d|||z   f         }
|dk    r*|
                    d          |z
  dz  }|
d|||z   f         }
t          j        |
          S )Nr"   r   r  )r   rF   r  rG   r   r   c                 4    g | ]\  }}t          ||          S r   )r`   )r   r_  js      r   r    zcorrelate.<locals>.<listcomp>(  s$    MMM41aSAYYMMMr   r&   )groupspaddingr  rP  r;   .same)r   r   rJ   rb   r   r   rj   r>   r   r   r   r_   r  r   rH   r  r  conv1dr#  rJ  r`   r   r  )r   r   r  r"   x1_lenx2_len	new_shapenum_signalsoutputoutput_shaperX   target_length	start_idxs                r   	correlater`    s   	2		B	2		BGT"XX&&GT"XX&& E 	8	8	8	b%B	b%BWWQZZFF	x}"%%MM3rx}bhssm+L+LMMM	I"$>??I"$>??,rx}--2244K	rC,,bggbkk:	;	;B	rC,,bggbkk:	;	;BX ''
BLLOOBGGAJJa (  F 8CRC=5(L^^L))FwL((8<+G+GG!K 	 [[__}4:	Y])BBBCv~~[[__v-!3	YV);;;<=   r   c                     d | D             } d |D             }t          |          }t          t          t          | |                              D ]\  }}t	          j        |||          }|S )Nc                 ,    g | ]}t          |          S r   r   r   cs     r   r    zselect.<locals>.<listcomp>E  s!    777!!$$777r   c                 ,    g | ]}t          |          S r   r   rc  s     r   r    zselect.<locals>.<listcomp>F  s!    ;;;1#A&&;;;r   )r   reversedr,   r   r   r  )condlist
choicelistdefaultr  rd  vs         r   selectrk  D  s|    77h777H;;
;;;J
G
$
$Cc(J778899 % %1k!Q$$Jr   c                 x    t          |           } t          t          j                            |                     S r   )r   rR   r   linalgslogdetrv   s    r   rn  rn  M  s-    !A%%a(()))r   )NF)NFNr   )Nr&   Nr  )NN)Nr   F)r   )r   r   r   r   )r   r   r&   )r&   r   )rU  TFNr   )rU  Trr  Nr   )r  NN)r  N)Nr  F)r;   )NNN)Nr   N)rP  )rJ  r  r   keras.src.backendr   r   keras.src.backend.commonr   &keras.src.backend.common.backend_utilsr   r   r	   "keras.src.backend.common.variablesr
   keras.src.backend.torch.corer   r   r   r   r   r'   r  r(   r   TORCH_INT_TYPESr   r0   r8   rK   rN   rT   r`   rl   ro   rr   rw   ru   r~   r   ra   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^   r6  r8  r:  r=  rC  rE  rH  rJ  rM  rO  rQ  rS  r[  ra  rc  re  rg  ri  rl  ro  rq  ru  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  rj   r  r  rS   r  r   r  r  r  r  r  r  r2  r  r!  r  r$  r&  r)  r0  r  r4  r6  r8  r;  r=  r?  rA  r  rD  rG  r   rB  rM  rO  r`  rk  rn  r   r   r   <module>ru     s      ) ) ) ) ) ) $ $ $ $ $ $ + + + + + + D D D D D D C C C C C C A A A A A A @ @ @ @ @ @ - - - - - - : : : : : : 3 3 3 3 3 3 2 2 2 2 2 2 7 7 7 7 7 7 
J	K	K	K	  / / / " " "54 54 54p" " "!& !& !& !&H   4D D D DE E E E, , , ,          5 5 5 55 5 5 5) ) ) )   "  
  
  
  
  

5 
5 
5  
L L L LL L L L
H 
H 
H 
H- - - -   (> > > >>( ( (
, , ,$/ / / # # # #
( ( (( ( (  
  
  
= = = == = = =,C C C C"B B B B"% % % %
   ( ( ( (
? ? ?2 2 2$E E E E
  
      $ $ $ $  
 
 
 
C C C C
! ! !
' ' '
  
	: 	: 	: 	:  ! ! !  
  
  
  
$ $ $ IJ/ / / /d  
  
  
  
' ' ' % % %
     
$ $ $
- - - -`! ! !'! '! '! '!T  0 0 0 0 0
   2! ! !# # #E E E
F F F F
  
K K K
# # #
+ + + +3 3 3
/ / / /d   :(! (! (! (!V  
    
9 9 9 9$& & &+ + + +
  
  
  
  
* * * *   @$ $ $ $
D D D D7 7 7
( ( ( (6
6 
6 
6 
6  
  
B B B B,- - - -' ' '	 	 	 	% % % %% % % %
% % % %
2 2 2   
 #'$     & & &     9 9 9    
  
             % % % %"0 0 0 0&	3 	3 	3% % %
,! ,! ,! ,!^   * * * * *r   