
    %VjiS                    6   d dl mZ d dlZd dlZd dlZd dlmZ d dlZddlm	Z	m
Z
mZmZmZ ddlmZmZmZmZ dZg dZdd	d
ddddddd	Z G d d          ZdRdZi ddddddddddddddddddddddd dd!dd"dd#dd$dd%ddddddddddddd&Zd'dd(d)d*d+d,d-d.Zdd/d0d1d2d3d4d5d6d7d8d9dd:Zd; Zd< Zd= Zd> Zd? Z G d@ dA          Z  e             e _!         G dB dC          Z"dD Z#dRdEdFdGd ddHdIZ$dSddJdKZ%dRddJdLZ&dM Z'dN Z(dTdPZ)dQ Z*dS )U    )annotationsN)Sequence   )_dtypes_dtypes_impl_funcs_ufuncs_util)	ArrayLikenormalize_array_like
normalizerNotImplementedType)C_CONTIGUOUSF_CONTIGUOUSOWNDATA	WRITEABLEALIGNEDWRITEBACKIFCOPYFNCFORCBEHAVEDCARRAYFARRAYr   r   r   r   r   r   r   r   r   )	CFOWAXBCAFAc                  :     e Zd Zd
dZddZd Z fdZd	 Z xZS )Flagsflag_to_valuedictc                n    t          d |                                D                       sJ || _        d S )Nc              3  (   K   | ]}|t           v V  d S N)FLAGS).0ks     O/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_numpy/_ndarray.py	<genexpr>z!Flags.__init__.<locals>.<genexpr>4   s&      <<!1:<<<<<<    )allkeys_flag_to_value)selfr%   s     r-   __init__zFlags.__init__3   s?    <<}'9'9';';<<<<<<<<+r/   attrstrc                    |                                 r5|                                t          v r| |                                         S t          d| d          )NzNo flag attribute '')islowerupperr*   AttributeError)r3   r5   s     r-   __getattr__zFlags.__getattr__7   sR    <<>> 	@djjlle33

%% !>t!>!>!>???r/   c                    |t                                           v rt           |         }|t          v r3	 | j        |         S # t          $ r}t          d|          |d }~ww xY wt	          d| d          )Nzkey=No flag key 'r8   )SHORTHAND_TO_FLAGSr1   r*   r2   KeyErrorNotImplementedError)r3   keyes      r-   __getitem__zFlags.__getitem__=   s    $))++++$S)C%<<<*3// < < <))S))44!;< 13111222s   A   
A"
AA"c                    |                                 r4|                                t          v r|| |                                <   d S t                                          ||           d S r)   )r9   r:   r*   super__setattr__)r3   r5   value	__class__s      r-   rG   zFlags.__setattr__H   s]    <<>> 	-djjlle33!&DGGe,,,,,r/   c                    |t           v s|t                                          v rt          d          t	          d| d          )Nz"Modifying flags is not implementedr>   r8   )r*   r?   r1   rA   r@   )r3   rB   rH   s      r-   __setitem__zFlags.__setitem__N   sK    %<<3"4"9"9";";;;%&JKKK13111222r/   )r%   r&   )r5   r6   )	__name__
__module____qualname__r4   r<   rD   rG   rK   __classcell__)rI   s   @r-   r$   r$   2   s        , , , ,@ @ @ @	3 	3 	3- - - - -3 3 3 3 3 3 3r/   r$   c                F     |p j         } fd}||_         d| |_        |S )Nc                      | i |S r)    )argskwargsfns     r-   fzcreate_method.<locals>.fX   s    r4"6"""r/   zndarray.)rL   rN   )rU   namerV   s   `  r-   create_methodrX   U   sE    2;D# # # # # AJ&&&ANHr/   clipnonzerorepeatroundsqueezeswapaxesraveldiagonaldottraceargsortsearchsortedargmaxargminanyr0   max)minptpsumprodmeanvarstdcumsumcumprodtakechooseabsolutepositivenegativegreaterlessgreater_equal
less_equal)absinvertposneggtltgelesubtractmultiplydividefloor_dividepower	remainderbitwise_and
bitwise_orbitwise_xor
left_shiftright_shift)addsubmultruedivfloordivpowmodandorxorlshiftrshiftmatmulc                @   t          | t          j                  rU| j        t          j        t          j        t          j        t          j        fv r|                     t          j	                  S n.t          | t                    rt          d | D                       S | S )Nc              3  4   K   | ]}t          |          V  d S r)   )_upcast_int_indices)r+   is     r-   r.   z&_upcast_int_indices.<locals>.<genexpr>   s+      ;;(++;;;;;;r/   )
isinstancetorchTensordtypeint8int16int32uint8toint64tupleindexs    r-   r   r      s    %&& <;5:u{EKMMM88EK((( N	E5	!	! <;;U;;;;;;Lr/   c                4    t          d | D                       S )z&Check if there's any advanced indexingc              3     K   | ]Z}t          |t          t          f          p9t          |t          j                  o|j        t          j        k    p
|j        d k    V  [dS r   N)r   r   boolr   r   r   ndimr+   idxs     r-   r.   z)_has_advanced_indexing.<locals>.<genexpr>   sv          	34()) 	YsEL))WsyEJ/F/V#(UV,     r/   )rg   r   s    r-   _has_advanced_indexingr      s2            r/   c                   t          | t                    s| f} t          |           }|s| S g }| D ]}t          |t                    r,t          |t                    s|                    |g           Ct          |t          j                  rK|j        dk    r@t          j	        |          s,|j
        t          j        k    r|                    |g           |                    |           t          |          S )zZConvert scalar indices to lists when advanced indexing is present for NumPy compatibility.r   )r   r   r   intr   appendr   r   r   is_floating_pointr   )r   has_advanced	convertedr   s       r-   _numpy_compatible_indexingr      s   eU##  *%00L  I " "c3 	"
3(=(= 	"cU####sEL))
	"A+C00 	UZ'' cU#### S!!!!r/   c                (   t          | t                    rdS t          | t          j                  r| j        t          j        k    r	d| j        fS t          | t                    r| r| d         | k    sdS t          | d                   \  }}||dz   fS )z.Returns the depth of a boolean sequence/tensor)Tr   Tr   )Fr   r   )r   r   r   r   r   r   r   _get_bool_depth)sis_booldepths      r-   r   r      s    !T w!U\"" qw%*'<'<QV|q(##  adaiix$QqT**NGUEAIr/   c                "   t          | t                    s| f} d}t          |           D ]\  }}|t          u r|} n|| d d fS d}| D ]-}t	          |          \  }}|r||z  }|t          u s|(|dz  }.||z
  }|dk    rt          | d|                   }	t          | |dz   d                   }
|	rS|
rQ| d|         dz   | |dz   d         z   }dt          d | |dz   d         D                       z   fd}fd	}|||fS | d
 d fS )a  
    Patch for NumPy-compatible ellipsis behavior when ellipsis doesn't match any dimensions.

    In NumPy, when an ellipsis (...) doesn't actually match any dimensions of the input array,
    it still acts as a separator between advanced indices. PyTorch doesn't have this behavior.

    This function detects when we have:
    1. Advanced indexing on both sides of an ellipsis
    2. The ellipsis doesn't actually match any dimensions
    Nc                    | S r)   rR   xs    r-   <lambda>z-_numpy_empty_ellipsis_patch.<locals>.<lambda>   s     r/   c                    | S r)   rR   r   s    r-   r   z-_numpy_empty_ellipsis_patch.<locals>.<lambda>   s    Q r/   r   r   r)   c              3  D   K   | ]}t          |t                    d V  dS )r   N)r   slicer   s     r-   r.   z._numpy_empty_ellipsis_patch.<locals>.<genexpr>  sE          *S%:P:P            r/   c                0    |                                 S r)   )r]   r   	end_ndimss    r-   
squeeze_fnz/_numpy_empty_ellipsis_patch.<locals>.squeeze_fn  s    yy),,,r/   c                ~    t          | t          j                  r!| j        k    r|                                S | S r)   )r   r   r   r   	unsqueezer   s    r-   unsqueeze_fnz1_numpy_empty_ellipsis_patch.<locals>.unsqueeze_fn  s<    a.. 316Y3F3F;;	z222r/   c                    | S r)   rR   r   s    r-   r   z-_numpy_empty_ellipsis_patch.<locals>.<lambda>!  s    A r/   c                    | S r)   rR   r   s    r-   r   z-_numpy_empty_ellipsis_patch.<locals>.<lambda>!  s     r/   )r   r   	enumerateEllipsisr   r   rk   )r   tensor_ndimellipsis_posr   r   consumed_dimsr   r   ellipsis_dimsleft_advancedright_advanced	new_indexr   r   r   s                 @r-   _numpy_empty_ellipsis_patchr      s    eU##  LE""  3(??LE 
 kk;;.. M  (-- 	U"MMH__QMM  -/M .u]l]/CDD/lQ6F6H6H0IJJ 	7^ 	7 m|m,w6|a?O?Q?Q9RRIC    "<!#3#5#56        I- - - - -    
 j,66++{{**r/   c                      e Zd ZdS )_UnspecifiedN)rL   rM   rN   rR   r/   r-   r   r   &  s        Dr/   r   c                  8   e Zd ZdCdZe                                D ]*\  ZZ ee	epe          Z
 ee
e           e            e<   + eej        d          Z eej                  Ze                                D ]0\  ZZ eeepe          Z
de dZ ee
e           e            e<   1e                                D ]p\  ZZ eeepe          Z
de dZ ee
e           e            e<   de dZ ee
fde           e            e<   de dZ ee
fde           e            e<   q eej        d	          Z ed
 d          Z[[[[[
[ed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Z ed             Z!ed             Z"ed             Z#e#j$        d             Z#ed             Z%e%j$        d             Z%dDdZ&e'dEdFd#            Z(e'dEdFd$            Z)d%d&d'Z*e+j,        e+j,        fd(Z-e'dGd*            Z.d+ Z/d, Z0d- Z1 ee1          Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;d7 Z<d8 Z=dd9d:Z>dHd<Z?d= Z@d> ZAd? ZBe	jC        ZCe	jD        ZDdd@dAZEdB ZFdS )IndarrayNc                    |t          j                    | _        d S t          |t           j                  r	|| _        d S t	          d          )NzSndarray constructor is not recommended; prefereither array(...) or zeros/empty(...))r   r   tensorr   
ValueError)r3   ts     r-   r4   zndarray.__init__2  sN    9,..DKKK5<(( 	DKKK8  r/   conj____rc                     |||           S r)   rR   r3   otherrU   s      r-   r   zndarray.<lambda>P  s    5$ r/   __ic                     || ||           S )N)outrR   r   s      r-   r   zndarray.<lambda>S  s    rr$4'@'@'@ r/   
__divmod__c                ,    t          j        ||           S r)   )r	   divmodr3   r   s     r-   r   zndarray.<lambda>Y  s    GN5$77 r/   __rdivmod__c                4    t          | j        j                  S r)   )r   r   shaper3   s    r-   r   zndarray.shape_  s    T[&'''r/   c                4    | j                                         S r)   )r   numelr   s    r-   sizezndarray.sizec  s    {  """r/   c                    | j         j        S r)   )r   r   r   s    r-   r   zndarray.ndimg  s    {r/   c                >    t          j        | j        j                  S r)   )r   r   r   r   s    r-   r   zndarray.dtypek  s    }T[.///r/   c                    | j                                         t          fd| j                                         D                       S )Nc              3  "   K   | ]	}|z  V  
d S r)   rR   )r+   strideelsizes     r-   r.   z"ndarray.strides.<locals>.<genexpr>r  s'      HHVf_HHHHHHr/   )r   element_sizer   r   )r3   r   s    @r-   strideszndarray.strideso  sG    ))++HHHH4;3E3E3G3GHHHHHHr/   c                4    | j                                         S r)   )r   r   r   s    r-   itemsizezndarray.itemsizet  s    {'')))r/   c                    t          | j                                        | j        j                                        | j        j        d u dd          S )NT)r   r   r   r   )r$   r   is_contiguousT_baser   s    r-   flagszndarray.flagsx  sT      $ 9 9 ; ; $ ; ; = =;,4!	 
 
 	
r/   c                4    | j                                         S r)   )r   data_ptrr   s    r-   datazndarray.data  s    {##%%%r/   c                X    | j                                                                         S r)   )r   storagenbytesr   s    r-   r  zndarray.nbytes  s"    {""$$++---r/   c                *    |                                  S r)   )	transposer   s    r-   r  z	ndarray.T  s    ~~r/   c                *    t          j        |           S r)   )r   realr   s    r-   r  zndarray.real      {4   r/   c                B    t          |          j        | j        _        d S r)   )asarrayr   r  r3   rH   s     r-   r  zndarray.real      "5>>0r/   c                *    t          j        |           S r)   )r   imagr   s    r-   r  zndarray.imag  r  r/   c                B    t          |          j        | j        _        d S r)   )r  r   r  r  s     r-   r  zndarray.imag  r  r/   KunsafeTc                >   |dk    rt          d| d          |dk    rt          d| d          |st          d| d          |st          d| d          t          j        |          j        }| j                            |          }t          |          S )Nr  zastype(..., order= is not implemented.r  zastype(..., casting=zastype(..., subok=zastype(..., copy=)rA   r   r   torch_dtyper   r   r   )r3   r   ordercastingsubokcopyr  r   s           r-   astypezndarray.astype  s    C<<%&V5&V&V&VWWWh%DwDDD    	X%&V5&V&V&VWWW 	V%&T$&T&T&TUUUmE**6KNN;''qzzr/   r   r3   r   r  r   c                *    |                                  S r)   )cloner3   r  s     r-   r   zndarray.copy  s    zz||r/   c                *    t          j        |           S r)   )r   flattenr$  s     r-   r&  zndarray.flatten  s    }T"""r/   F)refcheckc               :   |rt          d| d          |dv rd S t          |          dk    r|d         }t          |t                    r|f}t	          j        d |D                       rt          d          t          j        |          | j	        
                                }}| j	                            |           ||k    rR| j	                                        sJ | j	                                        }||d                                           d S d S )Nzresize(..., refcheck=r  )rR   r)   r   r   c              3  "   K   | ]
}|d k     V  dS r   rR   r+   r   s     r-   r.   z!ndarray.resize.<locals>.<genexpr>  s&      11!A111111r/   z0all elements of `new_shape` must be non-negative)rA   lenr   r   builtinsrg   r   mathrl   r   r   resize_r  r&  zero_)r3   r'  	new_shape	new_numel	old_numelbs         r-   resizezndarray.resize  s9    	%FFFF   %%F y>>Q!!Ii%% 	%"I<11y11111 	QOPPP#y33T[5F5F5H5H9	I&&&	!!;,,.....##%%AijjM!!!!!	 "!r/   c                    |t           j        u r| j        }|t           j        urt          d| d          t	          j        |          j        }| j                            |          }t          |          S )Nzview(..., type=r  )	r   unspecifiedr   rA   r   r  r   viewr   )r3   r   typer  tviews        r-   r7  zndarray.view  sr    L,,,JE|///%&R&R&R&RSSSmE**6  --u~~r/   rH   c                :    | j                             |           d S r)   )r   fill_r  s     r-   fillzndarray.fill  s      	%     r/   c                4    | j                                         S r)   )r   tolistr   s    r-   r>  zndarray.tolist  s    {!!###r/   c                H    d | j                                         D             S )Nc              3  4   K   | ]}t          |          V  d S r)   )r   r*  s     r-   r.   z#ndarray.__iter__.<locals>.<genexpr>  s(      ;;q

;;;;;;r/   )r   __iter__r   s    r-   rA  zndarray.__iter__  s$    ;;DK$8$8$:$:;;;;r/   c                z    t          | j                                      dd                              dd          S )Nr   ztorch.ndarrayzdtype=torch.zdtype=)r6   r   replacer   s    r-   __str__zndarray.__str__  s2    WX//W^X..	
r/   c                    	 t          j        | |          S # t          t          f$ r3 t	          j        | j        dt                    }t          |          cY S w xY w)NF)
fill_valuer   )	r	   equalRuntimeError	TypeErrorr   fullr   r   r  )r3   r   falsys      r-   __eq__zndarray.__eq__  sc    	"=u---i( 	" 	" 	"Jtze4HHHE5>>!!!	"s    AAAc                    | |k     S r)   rR   r   s     r-   __ne__zndarray.__ne__  s    r/   c                    	 t          j        | j                                                  S # t          $ r}t          d          |d }~ww xY w)Nz=only integer scalar arrays can be converted to a scalar index)operatorr   r   item	ExceptionrI  )r3   excs     r-   	__index__zndarray.__index__  s\    	>$+"2"2"4"4555 	 	 	O 	s   *- 
AAAc                *    t          | j                  S r)   )r   r   r   s    r-   __bool__zndarray.__bool__  s    DK   r/   c                *    t          | j                  S r)   )r   r   r   s    r-   __int__zndarray.__int__  s    4;r/   c                *    t          | j                  S r)   )floatr   r   s    r-   	__float__zndarray.__float__  s    T[!!!r/   c                *    t          | j                  S r)   )complexr   r   s    r-   __complex__zndarray.__complex__  s    t{###r/   c                    	 | j                                         }t          |          |k    }n# t          $ r d}Y nw xY w|S )NF)r   rQ  r   rR  )r3   vresults      r-   
is_integerzndarray.is_integer  sT    	  ""AVVq[FF 	 	 	FFF	s   ,/ >>c                &    | j         j        d         S )Nr   )r   r   r   s    r-   __len__zndarray.__len__  s    { ##r/   c                6    | j                             |          S r)   )r   __contains__)r3   r   s     r-   rf  zndarray.__contains__  s    {''***r/   c                ,    t          j        | |          S r)   )r   r  )r3   axess     r-   r  zndarray.transpose  s    d+++r/   r  c               0    t          j        | ||          S )Nri  )r   reshape)r3   r  r   s      r-   rk  zndarray.reshape#  s    ~dE7777r/   c           	     Z    t          j        | t          j        | |||                     d S r)   )r   copytosort)r3   axiskindr  s       r-   ro  zndarray.sort'  s*    dFKdD%@@AAAAAr/   c                    |dk    r| j                                         S t          |          dk    r |                                 |d                  S |                     |          S )NrR   r   r   )r   rQ  r+  r_   rD   )r3   rS   s     r-   rQ  zndarray.item+  s[     2::;##%%%YY!^^::<<Q((##D)))r/   c                   | j         fdt          |t                    r2 t          |          fdt	          |          D                       }n d|          }t          j        |          }t          |          }t          |          }t          |j
                  \  }}} |t                              |                              S )Nc                   t          |t                    r|j        |j        dk     s|S t          j        | f          t          |j        t                    s	|j        J t          |j        t                    s	|j        J |j        r
|j        dz   nd }|j        r
|j        dz   nd }t          |||j                   S )Nr   r   )r   r   stepr   flipstartr   stop)r   r   rw  rx  r   s       r-   neg_stepz%ndarray.__getitem__.<locals>.neg_step:  s    q%(( QV-?AFQJJ Z--F ags++>qw>afc**<afnn<"#&2AFQJJdE"#'317Q;;tDqvg...r/   c              3  6   K   | ]\  }} ||          V  d S r)   rR   )r+   r   r   ry  s      r-   r.   z&ndarray.__getitem__.<locals>.<genexpr>J  s1      LL41aALLLLLLr/   r   )r   r   r   r8  r   r
   ndarrays_to_tensorsr   r   r   r   r   rD   )r3   r   maybe_squeeze_ry  r   s       @@r-   rD   zndarray.__getitem__7  s    	/ 	/ 	/ 	/ 	/ eX&& 	'DKKLLLL9U;K;KLLLLLEEHQ&&E)%00#E***511"=eV["Q"Q}a}WV%7%7%>%>??@@@r/   c                n   t          j        |          }t          |          }t          |          }t	          || j        j                  \  }}}t          j        |          s.t          |          }t          j
        || j        j                  }| j                            | ||                    S r)   )r
   r{  r   r   r   r   r   r   	is_scalarr   cast_if_neededr   rK   )r3   r   rH   r}  maybe_unsqueezes        r-   rK   zndarray.__setitem__U  s    )%00#E***511$?t{GW$X$X!q/%e,, 	C(//E(0ABBE{&&uooe.D.DEEEr/   streamc               8    | j                             |          S )Nr  )r   
__dlpack__)r3   r  s     r-   r  zndarray.__dlpack__f  s    {%%V%444r/   c                4    | j                                         S r)   )r   __dlpack_device__r   s    r-   r  zndarray.__dlpack_device__i  s    {,,...r/   r)   )r  r  TT)r   )r3   r   r  r   )rH   r   )rl  NN)GrL   rM   rN   r4   methodsitemsmethodrW   getattrr   rU   rX   varsr	   	conjugater   dunder	ri_dunderplainrvarivarr   r   r   propertyr   r   r   r   r   r   r  r  r  r  r  setterr  r!  r   r   r&  r4  r   r6  r7  r<  r>  rA  rD  __repr__rL  rN  rT  rV  rX  r[  r^  rb  rd  rf  r  rk  ro  rQ  rD   rK   rr   putr  r  rR   r/   r-   r   r   1  s       	 	 	 	   3 3WVT^V,,&r622v =*F33Dg/00I 3 3WWdnf-- f&r622v!)) 	
 	
WWdnf--V%b%00uV$}B%O%O%OQUVVtV$}#%@@@$
 
t
 w~|<<J-77 K
 	dD%V( ( X( # # X#     X  0 0 X0 I I XI * * X* 	
 	
 X	
 & & X& . . X.     X  ! ! X! 
[1 1 [1 ! ! X! 
[1 1 [1        Z # # # # Z# +0 " " " " "8 &18P     ! ! ! Z!
$ $ $< < <
 
 
 }W%%H" " "       ! ! !     " " "$ $ $  $ $ $+ + +, , , %( 8 8 8 8 8B B B B
* 
* 
*A A A<F F F ;D
*C#' 5 5 5 5 5/ / / / /r/   r   c                   g }| D ]}t          |t          t          f          rt          |          }t          |t                    r-|                    |j                                                   o|                    |           |S )z'Recursively convert tensors into lists.)r   listr   _tolistr   r   r   r>  )obja1elems      r-   r  r  m  s    	B  dT5M** 	!4==DdG$$ 	IIdk((**++++IIdOOOOIr/   Tr  F)r   r  r  ndminlikec               (   |durt          d          |t          d          |dk    rt           t          | t                    r|du r||| j        k    r| S t          | t          t
          f          r?| r.t          d | D                       rt          j        |           } nt          |           } t          | t                    r| j
        } d }|t          j        |          j        }t          j        | |||          }t          |          S )NFz#'subok' parameter is not supported.z"'like' parameter is not supported.r  c              3  J   K   | ]}t          |t          j                  V  d S r)   )r   r   r   r*  s     r-   r.   zarray.<locals>.<genexpr>  s.      @@qz!U\22@@@@@@r/   )rA   r   r   r   r  r   r0   r   stackr  r   r   r   r  r
   _coerce_to_tensor)	r  r   r   r  r  r  r  r  r   s	            r-   arrayr  ~  s*   E!"GHHH!"FGGG||!! 	3  EMMMSX
#e}%%  	3@@C@@@@@ 	+c""CC #,,C #w j KmE**6$S+tUCCF6??r/   )r  c               ,    t          | |||dd          S )NFr   )r   r  r  r   r  )r  )ar   r  r  s       r-   r  r    s    %u4e1MMMMr/   c                   t          | ||          }|j                                        s|j                                        |_        |S )N)r   r  )r  r   r  
contiguous)r  r   r  arrs       r-   ascontiguousarrayr    sF    
!5t
,
,
,C:##%% -Z**,,
Jr/   c               H    t          j        |           }t          |          S r)   )r   from_dlpackr   )r   r   s     r-   r  r    s    !A1::r/   c                z    	 t          j        |           }n$# t          $ r t          |           j        }Y nw xY w|S r)   )r   r   rR  r  )entrydtys     r-   _extract_dtyper    sJ    #mE"" # # #enn"#Js    88safec                ~    t          |           } t          |          }t          j        | j        |j        |          S r)   )r  r   can_cast_implr  )from_r   r  to_s       r-   can_castr    s6    5!!E


C%e&7'RRRr/   c                 B   g }| D ]y}	 t          |          j        }nL# t          t          t          f$ r2 t          j        |          }t          j        d|j	                  }Y nw xY w|
                    |           zt          j        | }t          j        |          S )Nr   )r   )r  r   rH  r   rI  r   r   r   emptyr  r   r   result_type_impl)arrays_and_dtypestensorsr  r   r  r  s         r-   result_typer    s    G"  	6%AAj)4 	6 	6 	6-&&CAS_555AAA	6 	q/9K=%%%s   AA&%A&r)   )Nr  )r  )+
__future__r   r,  r-  rP  collections.abcr   r    r   r   r   r	   r
   _normalizationsr   r   r   r   newaxisr*   r?   r$   rX   r  r  r  r   r   r   r   r   r   r6  r   r  r  r  r  r  r  r  r  rR   r/   r-   <module>r     s   # " " " " "    $ $ $ $ $ $  ; ; ; ; ; ; ; ; ; ; ; ; ; ;            	 	 	 
						


 
  3  3  3  3  3  3  3  3F   "
D"t" d" T	"
 t" " T" " 
4" T" t" D"  d!"" d#"$ 
4%"& 
4'"( 
4)"* C" " "J 



	
 	
 
 	"      B	 	 	?+ ?+ ?+H	 	 	 	 	 	 	 	 (<>> y/ y/ y/ y/ y/ y/ y/ y/x	
 
 
"%4s%qt % % % % %PNd N N N N NT       
  S S S S& & & & &r/   