Ë
    g^(h`ç  ã            
      óœ	  — d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	Z	ddl
mZmZ erddlmZ ddlmZmZmZmZmZmZmZ 	 d£	 	 	 	 	 d¤d„Z	 	 d¥	 	 	 	 	 	 	 d¦d„Zd§d„Zd§d„Zd§d„Zd„ Zd¨d„Z	 d©	 dªd„Z	 	 	 	 d©	 	 	 	 	 	 	 d«d„Zdddœ	 	 	 	 	 d¬d„Z e Z!dddœ	 	 	 	 	 d¬d„Z"dddœ	 	 	 	 	 d¬d„Z#dddœ	 	 	 	 	 d¬d„Z$	 	 d­dddœ	 	 	 	 	 	 	 d®d„Z%d¯d°d„Z&d±d„Z'd±d„Z(d„ Z)d²d³d„Z*d²d³d „Z+d³d!„Z,d³d"„Z-d³d#„Z.d´d$„Z/dµd¶d%„Z0	 	 	 	 	 d·	 	 	 	 	 d¸d'„Z1	 	 	 	 d¹	 	 	 	 	 d¸d(„Z2	 	 	 	 	 dº	 d»d)„Z3	 	 	 	 d¼dd*œ	 	 	 	 	 	 	 	 	 d½d+„Z4	 	 d¾dd*œ	 	 	 	 	 d¿d,„Z5	 	 	 	 dÀ	 	 	 	 	 	 	 dÁd-„Z6	 	 d¾dd*œ	 	 	 	 	 	 	 dÂd.„Z7	 	 	 	 dÀ	 	 	 	 	 	 	 dÃd/„Z8	 	 d¾dd*œ	 	 	 	 	 d¿d0„Z9	 	 	 	 dÀ	 	 	 	 	 	 	 dÃd1„Z:	 	 d¾dd*œ	 	 	 	 	 d¿d2„Z;	 	 	 	 dÀ	 	 	 	 	 	 	 dÃd3„Z<dÄd4„Z=	 	 	 	 dÅdd5œ	 	 	 	 	 dÆd6„Z>	 	 	 	 	 	 dÇdd5œ	 	 	 	 	 	 	 	 	 dÈd7„Z?d8„ Z@dÉdÊd9„ZAdËdÊd:„ZBdÌdÍd;„ZC	 	 dÎ	 	 	 	 	 dÏd<„ZDdÐd=„ZEdÐd>„ZFd¯dÐd?„ZGdÐd@„ZHd¯dÑdA„ZIdÑdB„ZJdÑdC„ZKdÒdÑdD„ZLd±dÓdE„ZMddFl	mNZN d
dGœdÔdH„ZOd&d
dIdJœdÕdK„ZPeQd
fd»dL„ZRd²dÑdM„ZSd²dÑdN„ZTd­dO„ZUd­dP„ZVd²dÖdQ„ZWd²dÖdR„ZX	 	 	 d×dd*œ	 	 	 dØdS„ZYdÙd´dT„ZZdÙd´dU„Z[d±dV„Z\d±dÚdW„Z]dÚdX„Z^	 dÛ	 	 	 dÜdY„Z_	 	 	 dÝ	 	 	 	 	 	 	 dÞdZ„Z`dßd[„Za	 dà	 	 	 	 	 	 	 dád\„Zbdâd]„Zc	 	 dã	 	 	 	 	 	 	 däd^„Zd	 	 	 	 dåd&d_œ	 	 	 	 	 dæd`„ZedÐda„ZfdÐdb„ZgdÐdc„Zh	 	 	 dç	 	 	 	 	 	 	 dèdd„Zid¯déde„Zjdêdf„Zkd¯dÐdg„ZldëdÐdh„Zm	 	 	 	 	 dì	 	 	 	 	 dídi„Zn	 	 	 	 dîdd*œ	 	 	 	 	 d¿dj„Zod¯dd*œdØdk„Zpd²dïdl„Zqd²dïdm„Zrdðdo„ZsdÖdp„Ztd±dñdq„Zud´dr„Zvdðd´ds„Zwd¯dòdt„Zxd´du„Zyd¯dòdv„Zzdód´dw„Z{ddd	dxd
dyœdz„Z|d{„ Z}dôdõd|„Z~dôdõd}„Z	 dö	 	 	 	 	 d÷d~„Z€dÐd„Z�dÐd€„Z‚d²dÐd�„Zƒd¯dÐd‚„Z„d¯dÐdƒ„Z…dødõd„„Z†d¯dÐd…„Z‡dødõd†„Zˆ	 	 	 	 dù	 	 	 	 	 dúd‡„Z‰d±dûdˆ„ZŠd¶d‰„Z‹dddŠœdüd‹„ZŒd­dýdŒ„Z�e�ZŽe�Z�dþdÐd�„Z�dÐdŽ„Z‘dÐd�„Z’d¶d�„Z“d¶d‘„Z”d¶d’„Z•d¶d“„Z–d¯dÿd”„Z—d¯dÿd•„Z˜d¶d–„Z™d—„ Zšd˜„ Z›d™„ Zœdš„ Z�d›„ Zždœ„ ZŸe	�j@                  e	�jB                  e	�jD                  gde	�jF                  e	�jH                  ggZ¥e	�j@                  de	�jB                  de	�jD                  dne	�jF                  de	�jH                  dniZ¦�d d�„Z§	 	 	 	 	 �d	 	 	 	 	 �ddž„Z¨	 	 	 	 	 �d	 	 	 �ddŸ„Z©	 	 	 	 	 �d	 	 	 �dd „ZªdÐd¡„Z«�d�dd¢„Z¬y(  z�A thin pytorch / numpy compat layer.

Things imported from here have numpy-compatible signatures but operate on
pytorch tensors.
é    )ÚannotationsN)ÚOptionalÚTYPE_CHECKINGé   )Ú_dtypes_implÚ_util)ÚSequence)Ú	ArrayLikeÚArrayLikeOrScalarÚCastingModesÚ	DTypeLikeÚNDArrayÚNotImplementedTypeÚOutArrayÚKFc                ó"   — | j                  «       S ©N)Úclone)ÚaÚorderÚsuboks      úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_numpy/_funcs_impl.pyÚcopyr   $   s   € ð �7‰7‹9Ðó    Ú	same_kindc                óp   — t        j                  |f| j                  |¬«      \  }| j                  |«       y )N©Úcasting)r   Útypecast_tensorsÚdtypeÚcopy_)ÚdstÚsrcr   Úwheres       r   Úcopytor%   *   s+   € ô ×#Ñ# S F¨C¯I©I¸wÔG�F€SØ‡I�Iˆc…Nr   c                 ó`   — t        j                  | Ž }t        |t        «      rt	        |«      S |S r   )ÚtorchÚ
atleast_1dÚ
isinstanceÚtupleÚlist©ÚarysÚress     r   r(   r(   4   ó+   € Ü
×
Ñ
˜DÐ
!€CÜ�#”uÔÜ�C‹yÐàˆ
r   c                 ó`   — t        j                  | Ž }t        |t        «      rt	        |«      S |S r   )r'   Ú
atleast_2dr)   r*   r+   r,   s     r   r1   r1   <   r/   r   c                 ó`   — t        j                  | Ž }t        |t        «      rt	        |«      S |S r   )r'   Ú
atleast_3dr)   r*   r+   r,   s     r   r3   r3   D   r/   r   c                óF   — | dk(  rt        d«      ‚	 |�|�t        d«      ‚y y )N© z&need at least one array to concatenatezQconcatenate() only takes `out` or `dtype` as an argument, but both were provided.)Ú
ValueErrorÚ	TypeError)Útupr    Úouts      r   Ú_concat_checkr:   L   s;   € Ø
ˆb‚yÜÐAÓBÐBà,Ø
€˜5Ð,äð0ó
ð 	
ð -€r   c                ó–   — |€|�|€|j                   j                  n|}nt        j                  | Ž }t	        j
                  | ||«      } | S )z%Figure out dtypes, cast if necessary.)r    Útorch_dtyper   Úresult_type_implr   r   )Útensorsr9   r    r   Ú	out_dtypes        r   Ú_concat_cast_helperr@   Y   sN   € ð €˜%Ð+à-2¨]�C—I‘I×)Ò)À‰	ä ×1Ñ1°7Ð;ˆ	ô ×$Ñ$ W¨i¸ÓA€Gà€Nr   c                óz   — t        j                  | d|iŽ\  } }t        | |||«      } t        j                  | |«      S )NÚaxis)r   Úaxis_none_flattenr@   r'   Úcat)r>   rB   r9   r    r   s        r   Ú_concatenaterE   h   s>   € ô ×+Ñ+¨WÐ@¸4Ñ@�M€GˆTÜ! '¨3°°wÓ?€GÜ�9‰9�W˜dÓ#Ð#r   c                óB   — t        | ||¬«       t        | ||||¬«      }|S )N©r9   )rB   r9   r    r   )r:   rE   )Úar_tuplerB   r9   r    r   Úresults         r   ÚconcatenaterJ   q   s'   € ô �(˜E sÕ+Ü˜(¨°3¸eÈWÔU€FØ€Mr   ©r    r   c               ód   — t        | |d ¬«       t        | ||¬«      }t        j                  |«      S ©NrG   rK   )r:   r@   r'   Úvstack©r8   r    r   r>   s       r   rN   rN   }   ó-   € ô �#�u $Õ'Ü! #¨U¸GÔD€GÜ�<‰<˜Ó Ð r   c               ód   — t        | |d ¬«       t        | ||¬«      }t        j                  |«      S rM   )r:   r@   r'   ÚhstackrO   s       r   rR   rR   ‹   rP   r   c               ód   — t        | |d ¬«       t        | ||¬«      }t        j                  |«      S rM   )r:   r@   r'   ÚdstackrO   s       r   rT   rT   –   s-   € ô �#�u $Õ'Ü! #¨U¸GÔD€GÜ�<‰<˜Ó Ð r   c               ód   — t        | |d ¬«       t        | ||¬«      }t        j                  |«      S rM   )r:   r@   r'   Úcolumn_stackrO   s       r   rV   rV   £   s/   € ô �#�u $Õ'Ü! #¨U¸GÔD€GÜ×Ñ˜gÓ&Ð&r   c               ó¸   — t        | ||¬«       t        | ||¬«      }|d   j                  dz   }t        j                  ||«      }t        j                  ||¬«      S )NrG   rK   r   r   ©rB   )r:   r@   Úndimr   Únormalize_axis_indexr'   Ústack)ÚarraysrB   r9   r    r   r>   Úresult_ndims          r   r[   r[   ±   sS   € ô �&˜% SÕ)ä! &°¸wÔG€GØ˜!‘*—/‘/ AÑ%€KÜ×%Ñ% d¨KÓ8€DÜ�;‰;�w TÔ*Ð*r   c                ó    — |€>| j                   dk7  r| j                  «       } |j                  «       }| j                   dz
  }t        | |f|¬«      S )Nr   rX   )rY   ÚflattenrE   )ÚarrÚvaluesrB   s      r   Úappendrb   Á   sG   € Ø€|Ø�8‰8�qŠ=Ø—+‘+“-ˆCØ—‘Ó!ˆØ�x‰x˜!‰|ˆÜ˜˜f˜¨DÔ1Ð1r   c                óÀ   — t        |t        «      rt        | |||«      S t        |t        t        f«      rt        | t        |«      |«      S t        dt        |«      «      ‚)Nzsplit_helper: )r)   ÚintÚ_split_helper_intr+   r*   Ú_split_helper_listr7   Útype)ÚtensorÚindices_or_sectionsrB   Ústricts       r   Ú_split_helperrk   Í   sW   € ÜÐ%¤sÔ+Ü  Ð)<¸dÀFÓKÐKÜ	Ð'¬$´¨Ô	7ä! &¬$Ð/BÓ*CÀTÓJÐJäÐ(¬$Ð/BÓ*CÓDÐDr   c                óh  — t        |t        «      st        d«      ‚t        j                  || j
                  «      }| j                  |   |}}|dk  rt        ‚||z  dk(  r|||z  }}|g|z  }n |rt        d«      ‚||z  ||z  dz   }}|g|z  }||dz
  g||z
  z  z  }t        j                  | ||«      S )Nzsplit: indices_or_sectionsr   z0array split does not result in an equal divisionr   )
r)   rd   ÚNotImplementedErrorr   rZ   rY   Úshaper6   r'   Úsplit)	rh   ri   rB   rj   ÚlÚnÚnumÚszÚlsts	            r   re   re   ×   sÏ   € ÜÐ)¬3Ô/Ü!Ð">Ó?Ð?ä×%Ñ% d¨F¯K©KÓ8€Dð �<‰<˜ÑÐ2€q€AàˆA‚vÜÐàˆ1�u�‚zØ�Q˜!‘VˆRˆØˆd�S‰j‰áÜÐOÓPÐPà�a‘%˜˜a™ !™ˆRˆØˆd�S‰jˆàˆB�‰Fˆ8�q˜3‘wÑÑ€Cä�;‰;�v˜s DÓ)Ð)r   c                óš  — t        |t        «      st        d«      ‚|D �cg c]  }|| j                  |   k  sŒ|‘Œ }}t	        |«      t	        |«      z
  }|j                  | j                  |   «       |d   gt        |dd  |d d «      D ��cg c]
  \  }}||z
  ‘Œ c}}z   }|dg|z  z  }t        j                  | ||«      S c c}w c c}}w )Nz split: indices_or_sections: listr   r   éÿÿÿÿ)	r)   r+   rm   rn   Úlenrb   Úzipr'   ro   )rh   ri   rB   Úxrt   Ú	num_extrar   Úbs           r   rf   rf   ò   sÓ   € ÜÐ)¬4Ô0Ü!Ð"DÓEÐEð *Ö
E�¨Q°&·,±,¸tÑ2DÓ-DŠ1Ð
E€CÐ
EÜÐ'Ó(¬3¨s«8Ñ3€Ià‡J�Jˆv�|‰|˜DÑ!Ô"àˆA‰ðä˜s 1 2˜w¨¨C¨R¨Ó1×2‘4�1�aˆˆQ‹Ó2ñ3€Cð ˆAˆ3�‰?Ñ€Cä�;‰;�v˜s DÓ)Ð)ùò Fùó 	3s    C¸CÂCc                ó   — t        | ||«      S r   ©rk   ©Úaryri   rB   s      r   Úarray_splitr€     s   € Ü˜Ð1°4Ó8Ð8r   c                ó    — t        | ||d¬«      S )NT©rj   r}   r~   s      r   ro   ro     s   € Ü˜Ð1°4ÀÔEÐEr   c                óz   — | j                   dk(  rt        d«      ‚| j                   dkD  rdnd}t        | ||d¬«      S )Nr   z3hsplit only works on arrays of 1 or more dimensionsr   Tr‚   ©rY   r6   rk   r~   s      r   Úhsplitr…     s<   € Ø
‡x�x�1‚}ÜÐNÓOÐOØ—‘˜1’‰1 !€DÜ˜Ð1°4ÀÔEÐEr   c                óT   — | j                   dk  rt        d«      ‚t        | |dd¬«      S )Né   z3vsplit only works on arrays of 2 or more dimensionsr   Tr‚   r„   ©r   ri   s     r   Úvsplitr‰     ó+   € Ø
‡x�x�!‚|ÜÐNÓOÐOÜ˜Ð1°1¸TÔBÐBr   c                óT   — | j                   dk  rt        d«      ‚t        | |dd¬«      S )Né   z3dsplit only works on arrays of 3 or more dimensionsr‡   Tr‚   r„   rˆ   s     r   Údsplitr�     rŠ   r   c                ó.   — t        j                  | |«      S r   )r'   Úkron)r   r{   s     r   r�   r�     ó   € Ü�:‰:�a˜ÓÐr   c                ó0   — t        j                  | ||«      S r   )r'   Úvander)ry   ÚNÚ
increasings      r   r’   r’   "  s   € Ü�<‰<˜˜1˜jÓ)Ð)r   Tc                ó’   — |dk7  s|s|st         ‚|€t        j                  «       j                  }t	        j
                  | |||¬«      S ©Nr   ©r    )rm   r   Údefault_dtypesÚfloat_dtyper'   Úlinspace)ÚstartÚstoprr   ÚendpointÚretstepr    rB   s          r   rš   rš   )  sC   € ð ˆq‚y‘G¡8Ü!Ð!Ø€}Ü×+Ñ+Ó-×9Ñ9ˆä�>‰>˜%  s°%Ô8Ð8r   c                ó  — |dk7  s|st         ‚t        j                  || z  d|dz
  z  «      }t        j                  |«      }t        j                  t        j                  | «      |z  t        j                  |«      |z  ||¬«      S )Nr   ç      ð?r   )Úbase)rm   r'   ÚpowÚlogÚlogspace)r›   rœ   rr   r�   r    rB   r¡   Úlogbases           r   Ú	geomspacer¦   :  st   € ð ˆq‚y™Ü!Ð!Ü�9‰9�T˜E‘\ 3¨#°©'¡?Ó3€DÜ�i‰i˜‹o€GÜ�>‰>Ü�	‰	�%Ó˜7Ñ"Ü�	‰	�$‹˜'Ñ!ØØô	ð r   c                óP   — |dk7  s|st         ‚t        j                  | ||||¬«      S )Nr   )r¡   r    )rm   r'   r¤   )r›   rœ   rr   r�   r¡   r    rB   s          r   r¤   r¤   N  s*   € ð ˆq‚y™Ü!Ð!Ü�>‰>˜%  s°¸UÔCÐCr   )Úlikec               ó  — |dk(  rt         ‚|€| €t        ‚|€d| }} | €d} |€Qt        d„ | ||fD «       «      rt        j                  «       j
                  nt        j                  «       j                  }|j                  rt        j                  n|}t        d„ | ||fD «       «      rt        ‚|dkD  r| |kD  s
|dk  r| |k  rt        j                  d|¬«      S t        j                  | |||¬«      }t        j                  ||«      }|S )Nr   c              3  óF   K  — | ]  }t        j                  |«      –— Œ y ­wr   )r   Úis_float_or_fp_tensor©Ú.0ry   s     r   ú	<genexpr>zarange.<locals>.<genexpr>s  s   è ø€ ÒV¸Q”<×5Ñ5°a×8ÑVùó   ‚!c              3  óF   K  — | ]  }t        j                  |«      –— Œ y ­wr   )r   Úis_complex_or_complex_tensorr¬   s     r   r®   zarange.<locals>.<genexpr>y  s   è ø€ Ò
U¸AŒ<×4Ñ4°Q×7Ñ
Uùr¯   r—   )ÚZeroDivisionErrorr7   Úanyr   r˜   r™   Ú	int_dtypeÚ
is_complexr'   Úfloat64rm   ÚemptyÚaranger   Úcast_if_needed)r›   rœ   Ústepr    r¨   Ú
work_dtyperI   s          r   r¸   r¸   \  s
  € ð ˆq‚yÜÐØ€|˜˜ÜˆØ€|ð ˜ˆtˆØ€}Øˆð €}ô ÑVÀ5È$ÐPTÐBUÔVÔVô ×'Ñ'Ó)×5Ò5ä×,Ñ,Ó.×8Ñ8ð 	ð
 #(×"2Ò"2”—’¸€Jô Ñ
UÀ%ÈÈtÐATÔ
UÔUÜ!Ð!àˆqŠ�U˜T’\ t¨a¢x°E¸D²Lä�{‰{˜1 EÔ*Ð*ä�\‰\˜%  t°:Ô>€FÜ×!Ñ! &¨%Ó0€FØ€Mr   c               óp   — |€t        j                  «       j                  }t        j                  | |¬«      S ©Nr—   )r   r˜   r™   r'   r·   ©rn   r    r   r¨   s       r   r·   r·   ˆ  ó.   € ð €}Ü×+Ñ+Ó-×9Ñ9ˆÜ�;‰;�u EÔ*Ð*r   c                óZ   — t        j                  | |¬«      }|�|j                  |«      }|S r½   )r'   Ú
empty_likeÚreshape)Ú	prototyper    r   r   rn   rI   s         r   rÁ   rÁ   ˜  s/   € ô ×Ñ˜i¨uÔ5€FØÐØ—‘ Ó&ˆØ€Mr   c               ó¦   — t        | t        «      r| f} |€|j                  }t        | t        t        f«      s| f} t        j                  | ||¬«      S r½   )r)   rd   r    r*   r+   r'   Úfull)rn   Ú
fill_valuer    r   r¨   s        r   rÅ   rÅ   ¥  sM   € ô �%œÔØ�ˆØ€}Ø× Ñ ˆÜ�eœe¤T˜]Ô+Ø�ˆÜ�:‰:�e˜Z¨uÔ5Ð5r   c                ó\   — t        j                  | ||¬«      }|�|j                  |«      }|S r½   )r'   Ú	full_likerÂ   )r   rÆ   r    r   r   rn   rI   s          r   rÈ   rÈ   ¶  s/   € ô �_‰_˜Q 
°%Ô8€FØÐØ—‘ Ó&ˆØ€Mr   c               óp   — |€t        j                  «       j                  }t        j                  | |¬«      S r½   )r   r˜   r™   r'   Úonesr¾   s       r   rÊ   rÊ   Å  s.   € ð €}Ü×+Ñ+Ó-×9Ñ9ˆÜ�:‰:�e 5Ô)Ð)r   c                óZ   — t        j                  | |¬«      }|�|j                  |«      }|S r½   )r'   Ú	ones_likerÂ   ©r   r    r   r   rn   rI   s         r   rÌ   rÌ   Ñ  s-   € ô �_‰_˜Q eÔ,€FØÐØ—‘ Ó&ˆØ€Mr   c               óp   — |€t        j                  «       j                  }t        j                  | |¬«      S r½   )r   r˜   r™   r'   Úzerosr¾   s       r   rÏ   rÏ   Þ  r¿   r   c                óZ   — t        j                  | |¬«      }|�|j                  |«      }|S r½   )r'   Ú
zeros_likerÂ   rÍ   s         r   rÑ   rÑ   ê  s/   € ô ×Ñ˜a uÔ-€FØÐØ—‘ Ó&ˆØ€Mr   c                ó¼  — |�Ùd| j                   z
  }|dkD  r!| j                  d|z  | j                  z   «      } |s| j                  d   dk7  r| j                  } | j	                  «       } d|j                   z
  }|dkD  r!|j                  d|z  |j                  z   «      }|s|j                  d   dk7  r|j                  }|j	                  «       }t        | |fd¬«      } | S )z$Prepare inputs for cov and corrcoef.r‡   r   ©r   r   rX   )rY   Úviewrn   ÚmTr   rE   )Úx_tensorÚy_tensorÚrowvarÚ
ndim_extras       r   Ú_xy_helper_corrcoefrÚ   ú  sÒ   € ð Ðà˜Ÿ™Ñ&ˆ
Ø˜Š>Ø—}‘} T¨JÑ%6¸¿¹Ñ%GÓHˆHÙ˜(Ÿ.™.¨Ñ+¨qÒ0Ø—{‘{ˆHØ—>‘>Ó#ˆà˜Ÿ™Ñ&ˆ
Ø˜Š>Ø—}‘} T¨JÑ%6¸¿¹Ñ%GÓHˆHÙ˜(Ÿ.™.¨Ñ+¨qÒ0Ø—{‘{ˆHØ—>‘>Ó#ˆä ¨8Ð 4¸1Ô=ˆà€Or   r—   c               óF  — |€|�t         ‚t        | ||«      }|j                  t        j                  k(  xr |j
                  }|rt        j                  }t        j                  ||«      }t        j                  |«      }|r|j                  t        j                  «      }|S r   )rm   rÚ   r    r'   Úfloat16Úis_cpuÚfloat32r   r¹   ÚcorrcoefÚto)	ry   ÚyrØ   ÚbiasÚddofr    Ú	xy_tensorÚis_halfrI   s	            r   rß   rß     s†   € ð Ð˜4Ð+ä!Ð!Ü# A q¨&Ó1€Ià�‰¤%§-¡-Ñ/ÒE°Y×5EÑ5E€GÙä—‘ˆä×$Ñ$ Y°Ó6€IÜ�^‰^˜IÓ&€FáØ—‘œ5Ÿ=™=Ó)ˆà€Mr   c               óP  — t        | ||«      } |€	|dk(  rdnd}| j                  t        j                  k(  xr | j                  }|rt        j
                  }t        j                  | |«      } t        j                  | |||¬«      }	|r|	j                  t        j                  «      }	|	S )Nr   r   )Ú
correctionÚaweightsÚfweights)
rÚ   r    r'   rÜ   rÝ   rÞ   r   r¹   Úcovrà   )
Úmrá   rØ   râ   rã   ré   rè   r    rå   rI   s
             r   rê   rê   /  s‹   € ô 	˜A˜q &Ó)€Aà€|Ø˜A’I‰q 1ˆà�w‰wœ%Ÿ-™-Ñ'Ò5¨Q¯X©X€GÙä—‘ˆä×Ñ˜Q Ó&€AÜ�Y‰Y�q T°HÀxÔP€FáØ—‘œ5Ÿ=™=Ó)ˆà€Mr   c                ó’  — t        j                  | |«      }t        j                  | |«      } t        j                  ||«      }|dk(  r|j                  d   dz
  n|}|dk(  r |j                  d   dz  dk(  rt        d«      ‚| d d d …f   }|d d d d …f   }t        j                  j                  j                  |||¬«      }|dd d …f   S )NrÅ   r   r   Úsamer‡   z#mode='same' and even-length weights)Úpadding)
r   r=   r   r¹   rn   rm   r'   ÚnnÚ
functionalÚconv1d)r   ÚvÚmodeÚdtrî   ÚaaÚvvrI   s           r   Ú_conv_corr_implr÷   M  sÊ   € Ü	×	&Ñ	& q¨!Ó	,€BÜ×Ñ˜Q Ó#€AÜ×Ñ˜Q Ó#€Aà $¨¢ˆa�g‰g�a‰j˜1Šn°D€Gà�&Ò˜QŸW™W Q™Z¨!™^¨qÒ0ô "Ð"GÓHÐHð 
ˆ4’ˆ7‰€BØ	
ˆ4�’qˆ=Ñ	€Bä�X‰X× Ñ ×'Ñ'¨¨B¸Ð'Ó@€Fð �!’Q�$‰<Ðr   c                óŽ   — | j                   d   |j                   d   k  r|| }} t        j                  |d«      }t        | ||«      S )Nr   ©r   )rn   r'   Úflipr÷   ©r   rò   ró   s      r   Úconvolverü   d  sD   € à‡w�wˆq�z�A—G‘G˜A‘JÒØ�!ˆ1ˆô 	�
‰
�1�dÓ€Aä˜1˜a Ó&Ð&r   c                óF   — t        j                  |«      }t        | ||«      S r   )r'   Úconj_physicalr÷   rû   s      r   Ú	correlaterÿ   o  s!   € Ü×Ñ˜AÓ€AÜ˜1˜a Ó&Ð&r   c               óö   — | j                  «       dk(  r| j                  dt        ¬«      } t        j                  «       j
                  }t        j                  | f|d¬«      \  } t        j                  | ||«      S )Nr   r—   Úsafer   )
ÚnumelÚ	new_emptyrd   r   r˜   r´   r   r   r'   Úbincount)ry   ÚweightsÚ	minlengthr´   s       r   r  r  w  s`   € Ø‡w�wƒy�A‚~à�K‰K˜¤ˆKÓ%ˆä×+Ñ+Ó-×7Ñ7€IÜ×!Ñ! 1 $¨	¸6ÔB�D€Qä�>‰>˜!˜W iÓ0Ð0r   c               ó
  — |d u |d u k7  rt        d«      ‚| j                  t        j                  k7  r| j	                  t        j                  «      } |€|€t        j
                  | «      }|S t        j
                  | ||«      }|S )Nz1either both or neither of x and y should be given)r6   r    r'   Úboolrà   r$   )Ú	conditionry   rá   rI   s       r   r$   r$   ‚  sy   € ð 	
ˆTˆ	�q˜D�yÒ!ÜÐLÓMÐMà‡�œ%Ÿ*™*Ò$Ø—L‘L¤§¡Ó,ˆ	à€y�Q�YÜ—‘˜YÓ'ˆð €Mô —‘˜Y¨¨1Ó-ˆØ€Mr   c                ó   — | j                   S r   )rY   ©r   s    r   rY   rY   ˜  s   € Ø�6‰6€Mr   c                ó,   — t        | j                  «      S r   )r*   rn   r  s    r   rn   rn   œ  s   € Ü�—‘‹>Ðr   c                óD   — |€| j                  «       S | j                  |   S r   )r  rn   )r   rB   s     r   Úsizer     s!   € Ø€|Ø�w‰w‹yÐà�w‰w�t‰}Ðr   c                ód   — t        j                  | j                  |«      }| j                  |«      S r   )r   Úexpand_shapern   rÔ   )r   rB   rn   s      r   Úexpand_dimsr  ª  s&   € Ü×Ñ˜qŸw™w¨Ó-€EØ�6‰6�%‹=Ðr   c                ó°   — |€t        t        | j                  «      «      }n t        j                  || j                  «      }t        j                  | |«      S r   )r*   ÚrangerY   r   Únormalize_axis_tupler'   rú   )rë   rB   s     r   rú   rú   ¯  s@   € à€|Ü”U˜1Ÿ6™6“]Ó#‰ä×)Ñ)¨$°·±Ó7ˆÜ�:‰:�a˜ÓÐr   c                ó,   — t        j                  | «      S r   )r'   Úflipud©rë   s    r   r  r  ¸  ó   € Ü�<‰<˜‹?Ðr   c                ó,   — t        j                  | «      S r   )r'   Úfliplrr  s    r   r  r  ¼  r  r   c                óp   — t        j                  || j                  «      }t        j                  | ||«      S r   )r   r  rY   r'   Úrot90)rë   ÚkÚaxess      r   r  r  À  s+   € Ü×%Ñ% d¨A¯F©FÓ3€DÜ�;‰;�q˜!˜TÓ"Ð"r   c                ó0   — t        j                  | |¬«      S )N)r  )r'   Úbroadcast_to)Úarrayrn   r   s      r   r   r   È  s   € Ü×Ñ˜e¨%Ô0Ð0r   )Úbroadcast_shapes)r   c                ó&   — t        j                  |Ž S r   )r'   Úbroadcast_tensors)r   Úargss     r   Úbroadcast_arraysr&  Ð  s   € Ü×"Ñ" DÐ)Ð)r   Úxy)r   ÚsparseÚindexingc           
     óÐ  — t        |«      }|dvrt        d«      ‚d|z  }t        |«      D ��cg c]%  \  }}|j                  |d | dz   ||dz   d  z   «      ‘Œ' }}}|dk(  r?|dkD  r:|d   j                  d|d	d  z   «      |d<   |d   j                  d
|d	d  z   «      |d<   |st	        j
                  |Ž }| r|D �cg c]  }|j                  «       ‘Œ }}t        |«      S c c}}w c c}w )N)r'  Úijz.Valid values for `indexing` are 'xy' and 'ij'.rÓ   )rv   r   r'  r   )r   rv   r‡   )rv   r   )rw   r6   Ú	enumeraterÂ   r'   r$  r   r+   )	r   r(  r)  ÚxirY   Ús0Úiry   Úoutputs	            r   Úmeshgridr1  Ô  sý   € Üˆr‹7€Dà�|Ñ#ÜÐIÓJÐJà	�‰€BÜBKÈBÃ-×P¹$¸!¸Qˆa�i‰i˜˜2˜A˜ ™¨¨A°©E¨G¨Ñ4Õ5ÐP€FÑPà�4Ò˜D 1šHà˜1‘I×%Ñ% g°°1°2°Ñ&6Ó7ˆˆq‰	Ø˜1‘I×%Ñ% g°°1°2°Ñ&6Ó7ˆˆq‰	áä×(Ñ(¨&Ð1ˆáØ%+Ö, �!—'‘'•)Ð,ˆÐ,ä�‹<Ðùó Qùò -s   ®*CÂ9C#c                ó*  — t        | «      } t        | «      }d|z  }|rd}nt        j                  |f| z   |¬«      }t	        | «      D ]I  \  }}t        j
                  ||¬«      j                  |d | |fz   ||dz   d  z   «      }|r||fz   }ŒE|||<   ŒK |S )NrÓ   r5   r—   r   )r*   rw   r'   r·   r,  r¸   rÂ   )	Ú
dimensionsr    r(  r“   rn   r.   r/  ÚdimÚidxs	            r   Úindicesr6  ì  s¯   € ä�zÓ"€JÜˆJ‹€AØ�1‰H€EÙØ‰ä�k‰k˜1˜$ Ñ+°5Ô9ˆÜ˜JÓ'ò ‰ˆˆ3Ü�l‰l˜3 eÔ,×4Ñ4Ø�"�1ˆI˜˜Ñ  q¨1¡u w Ñ/ó
ˆñ Ø˜˜‘,‰CàˆC�ŠFðð €Jr   c                ó.   — t        j                  | |«      S r   )r'   Útril©rë   r  s     r   r8  r8    r�   r   c                ó.   — t        j                  | |«      S r   )r'   Útriur9  s     r   r;  r;    r�   r   c                ó:   — |€| }t        j                  | ||¬«      S ©N©Úoffset)r'   Útril_indices©rq   r  rë   s      r   r@  r@    ó!   € Ø€yØˆÜ×Ñ˜a ¨1Ô-Ð-r   c                ó:   — |€| }t        j                  | ||¬«      S r=  )r'   Útriu_indicesrA  s      r   rD  rD    rB  r   c                óš   — | j                   dk7  rt        d«      ‚t        j                  | j                  d   | j                  d   |¬«      S ©Nr‡   zinput array must be 2-dr   r   r>  )rY   r6   r'   r@  rn   ©r`   r  s     r   Útril_indices_fromrH    ó>   € Ø
‡x�x�1‚}ÜÐ2Ó3Ð3ä×Ñ˜cŸi™i¨™l¨C¯I©I°a©LÀÔCÐCr   c                óš   — | j                   dk7  rt        d«      ‚t        j                  | j                  d   | j                  d   |¬«      S rF  )rY   r6   r'   rD  rn   rG  s     r   Útriu_indices_fromrK    rI  r   c               ój   — |€| }t        j                  | |f|¬«      }t        j                  ||¬«      S )Nr—   )Údiagonal)r'   rÊ   r8  )r“   ÚMr  r    r¨   rh   s         r   ÚtrirO  %  s3   € ð 	€yØˆÜ�Z‰Z˜˜A˜ eÔ,€FÜ�:‰:�f qÔ)Ð)r   c                óº   — t        j                  | |«      }t        j                  | |«      } t        j                  ||«      }t	        j
                  | ||||¬«      S ©N)ÚrtolÚatolÚ	equal_nan)r   r=   r   r¹   r'   Úisclose©r   r{   rR  rS  rT  r    s         r   rU  rU  6  sO   € Ü×)Ñ)¨!¨QÓ/€EÜ×Ñ˜Q Ó&€AÜ×Ñ˜Q Ó&€AÜ�=‰=˜˜A D¨t¸yÔIÐIr   c                óº   — t        j                  | |«      }t        j                  | |«      } t        j                  ||«      }t	        j
                  | ||||¬«      S rQ  )r   r=   r   r¹   r'   ÚallcloserV  s         r   rX  rX  =  sO   € Ü×)Ñ)¨!¨QÓ/€EÜ×Ñ˜Q Ó&€AÜ×Ñ˜Q Ó&€AÜ�>‰>˜!˜Q T°À	ÔJÐJr   c                óÜ   — | j                   |j                   k7  ry| |k(  }|r.|t        j                  | «      t        j                  |«      z  z  }|j                  «       j	                  «       S ©NF)rn   r'   ÚisnanÚallÚitem)Úa1Úa2rT  Úconds       r   Ú_tensor_equalra  D  sS   € à	‡x�x�2—8‘8ÒØØ�‰8€DÙØ”u—{‘{ 2“¬¯©°R«Ñ8Ñ9ˆØ�8‰8‹:�?‰?ÓÐr   c                ó   — t        | ||¬«      S )N©rT  )ra  )r^  r_  rT  s      r   Úarray_equalrd  N  s   € Ü˜˜R¨9Ô5Ð5r   c                ól   — 	 t        j                  | |«      \  }}t        ||«      S # t        $ r Y yw xY wrZ  )r'   r$  ÚRuntimeErrorra  )r^  r_  Úa1_tÚa2_ts       r   Úarray_equivri  R  s@   € ðÜ×,Ñ,¨R°Ó4‰
ˆˆdô ˜˜tÓ$Ð$øô ò áðús   ‚' §	3²3c                óð   — | j                  «       rNt        j                  | j                  |||¬«      }t        j                  | j                  |||¬«      }|d|z  z   S t        j                  | |||¬«      S )N)ÚnanÚposinfÚneginfy              ð?)rµ   r'   Ú
nan_to_numÚrealÚimag)ry   r   rk  rl  rm  ÚreÚims          r   rn  rn  \  sf   € ð 	‡|�|„~Ü×Ñ˜aŸf™f¨#°fÀVÔLˆÜ×Ñ˜aŸf™f¨#°fÀVÔLˆØ�B˜‘G‰|Ðä×Ñ  s°6À&ÔIÐIr   c                ó°   — t        j                  | |¬«      \  \  } }t        j                  || j                  «      }t	        d «      f|z  |dfz   }| |   }|S )NrX   .)r   rC   rZ   rY   Úslice)r   r6  rB   r9   ró   r5  rI   s          r   Útakeru  k  sY   € ô ×(Ñ(¨°Ô6�J�D€Qˆ$Ü×%Ñ% d¨A¯F©FÓ3€DÜ�‹;ˆ.˜4Ñ
 7¨C .Ñ
0€CØˆs‰V€FØ€Mr   c                ó¨   — t        j                  | |¬«      \  \  } }t        j                  || j                  «      }t	        j
                  | ||«      S ©NrX   )r   rC   rZ   rY   r'   Útake_along_dim)r`   r6  rB   s      r   Útake_along_axisry  y  sE   € Ü×*Ñ*¨3°TÔ:�L�F€SˆDÜ×%Ñ% d¨C¯H©HÓ5€DÜ×Ñ  W¨dÓ3Ð3r   c                óî  — |j                  | j                  «      }|j                  «       |j                  «       kD  rc|j                  «       |j                  «       z   dz
  |j                  «       z  }|j                  d«      j	                  |f|j
                  z   «      }|j                  «       |j                  «       k  r#|j                  «       }|d |j                  «        }| j                  ||«       y ©Nr   r   )rg   r    r  Ú	unsqueezeÚexpandrn   r_   Úput_)r   r6  ra   ró   rò   Úratios         r   Úputr€    sº   € ð 	�‰�A—G‘GÓ€Að ‡}�}ƒ˜Ÿ™›Ò"Ø—‘“ 1§7¡7£9Ñ,¨qÑ0°Q·W±W³YÑ>ˆØ�K‰K˜‹N×!Ñ! 5 (¨Q¯W©WÑ"4Ó5ˆð ‡}�}ƒ˜Ÿ™›Ò"Ø�I‰I‹KˆØÐ�—‘“Ð ˆØ‡F�Fˆ7�AÔØr   c                ór  — t        j                  | |¬«      \  \  } }t        j                  || j                  «      }t	        j
                  ||«      \  }}t        j                  || j                  «      }t	        j                  | |||«      }| j                  |j                  | j                  «      «       y rw  )r   rC   rZ   rY   r'   r$  r¹   r    Úscatterr!   rÂ   rn   )r`   r6  ra   rB   rI   s        r   Úput_along_axisrƒ  ”  sŒ   € Ü×*Ñ*¨3°TÔ:�L�F€SˆDÜ×%Ñ% d¨C¯H©HÓ5€Dä×-Ñ-¨g°vÓ>�O€GˆVÜ×!Ñ! &¨#¯)©)Ó4€FÜ�]‰]˜3  g¨vÓ6€FØ‡I�Iˆf�n‰n˜SŸY™YÓ'Ô(Ør   c           
     óV  — t        j                  t        j                  |Ž «      }t        |j                  «      D ��cg c]F  \  }}t        j
                  |«      j                  d|z  |fz   d|j                  |z
  dz
  z  z   «      ‘ŒH }}}| |d<   ||   j                  d«      S c c}}w )NrÓ   r   r   )	r'   r[   r$  r,  rn   r¸   rÔ   rY   Úsqueeze)r   Úchoicesr9   ró   r/  r4  Úidx_lists          r   Úchooserˆ  Ÿ  s¦   € ô �k‰kœ%×1Ñ1°7Ð;Ó<€Gô   §¡Ó.÷áˆAˆsô 	�‰�SÓ×Ñ˜t a™x¨3¨&Ñ0°4¸7¿<¹<È!Ñ;KÈaÑ;OÑ3PÑPÕQð€Hñ ð
 €HˆQ�KØ�8Ñ×$Ñ$ QÓ'Ð'ùós   ¾AB%rc  c               ó°   — t        j                  | |¬«      \  \  } }t        j                  || j                  «      }t	        j
                  | |||¬«      }|S )NrX   )Úreturn_inverseÚreturn_countsr4  )r   rC   rZ   rY   r'   Úunique)ÚarÚreturn_indexrŠ  r‹  rB   rT  rI   s          r   rŒ  rŒ  ¶  sP   € ô ×)Ñ)¨"°4Ô8�K�E€Rˆ4Ü×%Ñ% d¨B¯G©GÓ4€Dä�\‰\Ø
˜>¸ÈDô€Fð €Mr   c                ó0   — t        j                  | d¬«      S )NT©Úas_tuple)r'   Únonzeror  s    r   r’  r’  É  s   € Ü�=‰=˜ TÔ*Ð*r   c                ó,   — t        j                  | «      S r   )r'   Úargwherer  s    r   r”  r”  Í  ó   € Ü�>‰>˜!ÓÐr   c                óR   — t        j                  | «      j                  d¬«      d   S )NTr�  r   )r'   r_   r’  r  s    r   Úflatnonzeror—  Ñ  s$   € Ü�=‰=˜Ó×#Ñ#¨TÐ#Ó2°1Ñ5Ð5r   c                ó0   — t        j                  | ||«      S r   )r'   Úclamp)r   ÚminÚmaxr9   s       r   Úcliprœ  Õ  s   € ô �;‰;�q˜#˜sÓ#Ð#r   c                ó0   — t        j                  | ||«      S r   )r'   Úrepeat_interleave)r   ÚrepeatsrB   s      r   Úrepeatr   Þ  s   € Ü×"Ñ" 1 g¨tÓ4Ð4r   c                óT   — t        |t        «      r|f}t        j                  | |«      S r   )r)   rd   r'   Útile)ÚAÚrepss     r   r¢  r¢  â  s$   € Ü�$œÔØˆwˆÜ�:‰:�a˜ÓÐr   c                ód  — |€| S t        |t        «      r|f}| j                  «       } d}|D ]  }||z  }|dk  sŒt        d«      ‚ | j	                  «       dk(  s|dk(  r!t        j                  || j                  ¬«      S | | j	                  «       z   }t        | f|z  «      d | } t        | |«      S )Nr   r   z0all elements of `new_shape` must be non-negativer—   )
r)   rd   r_   r6   r  r'   rÏ   r    rJ   rÂ   )r   Ú	new_shapeÚnew_sizeÚ
dim_lengthrŸ  s        r   Úresizer©  è  sÁ   € ð ÐØˆä�)œSÔ!Ø�Lˆ	à	�	‰	‹€Aà€HØò Qˆ
Ø�JÑˆØ˜‹>ÜÐOÓPÐPðQð
 	‡w�wƒy�A‚~˜ Qšä�{‰{˜9¨A¯G©GÔ4Ð4à�	˜QŸW™W›YÑ&Ð'€GÜ�Q�D˜7‘NÓ# I XÐ.€Aä�1�iÓ Ð r   c                ó²   — t        j                  || j                  «      }t        j                  || j                  «      }t        j                  | |||«      S r   )r   rZ   rY   r'   rM  )r   r?  Úaxis1Úaxis2s       r   rM  rM    sC   € Ü×&Ñ& u¨a¯f©fÓ5€EÜ×&Ñ& u¨a¯f©fÓ5€EÜ�>‰>˜!˜V U¨EÓ2Ð2r   c                óZ   — t        j                  | |||¬«      j                  d|¬«      }|S )N)Údim1Údim2rv   r—   )r'   rM  Úsum)r   r?  r«  r¬  r    r9   rI   s          r   Útracer±    s-   € ô �^‰^˜A˜v¨E¸Ô>×BÑBÀ2ÈUÐBÓS€FØ€Mr   c               ó¾   — |€t        j                  «       j                  }|€| }t        j                  | ||¬«      }|j                  |«      j                  d«       |S )Nr—   r   )r   r˜   r™   r'   rÏ   rM  Úfill_)r“   rN  r  r    r   r¨   Úzs          r   Úeyerµ    sT   € ð €}Ü×+Ñ+Ó-×9Ñ9ˆØ€yØˆÜ�‰�A�q Ô&€AØ‡J�JˆqƒM×Ñ˜ÔØ€Hr   c               ó0   — t        j                  | |¬«      S r½   )r'   rµ  )rq   r    r¨   s      r   Úidentityr·  *  s   € Ü�9‰9�Q˜eÔ$Ð$r   c                ó.   — t        j                  | |«      S r   )r'   Údiag©rò   r  s     r   r¹  r¹  .  r�   r   c                ó.   — t        j                  | |«      S r   )r'   Údiagflatrº  s     r   r¼  r¼  2  s   € Ü�>‰>˜!˜QÓÐr   r‡   c                ó8   — t        j                  | «      }|f|z  S r   )r'   r¸   )rq   rY   r5  s      r   Údiag_indicesr¾  6  s   € Ü
�,‰,�q‹/€CØˆ6�D‰=Ðr   c                ó¬   — | j                   dk\  st        d«      ‚| j                  }|dd  |d d k7  rt        d«      ‚t        |d   | j                   «      S )Nr‡   z input array must be at least 2-dr   rv   z/All dimensions of input must be of equal lengthr   )rY   r6   rn   r¾  )r`   Úss     r   Údiag_indices_fromrÁ  ;  sX   € Ø�8‰8�qŠ=ÜÐ;Ó<Ð<ð 	�	‰	€AØˆˆ€u��#�2�‚ÜÐJÓKÐKÜ˜˜!™˜cŸh™hÓ'Ð'r   c                óŠ  — | j                   dk  rt        d«      ‚|j                  «       dk(  r|s| j                  |«       | S |j                   dk(  r|j	                  d«      }| j                   dk(  r±| j
                  d   | j
                  d   kD  }|r|s4| j                  «       }|j                  |d |j                  «        «       | S | j
                  \  }}t        j                  |||dz   z  z
  «      }||z  }||z  }	|d |j                  «        | |	|dz   z  |z   |f<   | S t        | «      }|d | j
                  d    | |<   | S )Nr‡   zarray must be at least 2-dr   r   )rY   r6   r  Úfill_diagonal_r|  rn   rM  r!   r'   r¸   rÁ  )
r   ÚvalÚwrapÚtallr¹  Úmax_Úmin_r5  ÚmodÚdivs
             r   Úfill_diagonalrË  F  sC  € Ø‡v�v�‚zÜÐ5Ó6Ð6Ø
‡y�yƒ{�aÒ¡Ø	×Ñ˜ÔØˆà
‡x�x�1‚}Ø�m‰m˜AÓˆð 	‡v�v�‚{Ø�w‰w�q‰z˜AŸG™G A™JÑ&ˆá™4à—:‘:“<ˆDØ�J‰J�s˜>˜TŸZ™Z›\Ð*Ô+ð €Hð Ÿ™‰JˆD�$Ü—,‘,˜t d¨t°a©xÑ&8Ñ8Ó9ˆCØ˜‘*ˆCØ˜‘+ˆCØ/2°=°S·Y±Y³[Ð/AˆAˆs�d˜Q‘hÑ #Ñ% sÐ+Ñ,ð €Hô	   Ó"ˆà�\�q—w‘w˜q‘zÐ"ˆˆ#‰à€Hr   c               óº  — t        j                  | |«      \  }}|j                  dkD  r|j                  «       }|j                  dkD  r|j                  «       }t	        j
                  ||«      }|t         j                  k(  xr |j                  xs |j                  }|t         j                  k(  }|rt         j                  }n|rt         j                  }t        j                  ||«      }t        j                  ||«      }t        j                  ||«      }|r!|j                  t         j                  «      }|S |r|j                  t         j                  «      }|S ©Nr   )r'   r(   rY   r_   r   r=   rÜ   rÝ   r  rÞ   Úuint8r   r¹   Úvdotrà   )r   r{   Út_aÚt_br    rå   Úis_boolrI   s           r   rÏ  rÏ  h  s  € ô ×Ñ  1Ó%�H€CˆØ
‡x�x�!‚|Ø�k‰k‹mˆØ
‡x�x�!‚|Ø�k‰k‹mˆä×)Ñ)¨#¨sÓ3€EØ”u—}‘}Ñ$ÒC¨#¯*©*Ò*B¸¿
¹
€GØ”u—z‘zÑ!€Gñ Ü—‘‰Ù	Ü—‘ˆä
×
Ñ
˜s EÓ
*€CÜ
×
Ñ
˜s EÓ
*€Cä�Z‰Z˜˜SÓ!€FáØ—‘œ5Ÿ=™=Ó)ˆð €Mñ 
Ø—‘œ5Ÿ:™:Ó&ˆà€Mr   c                ó0  — t        |t        t        f«      r"|D �cg c]  }t        |t        «      r|gn|‘Œ }}t	        j
                  | |«      }t        j                  | |«      } t        j                  ||«      }t        j                  | ||¬«      S c c}w )N)Údims)
r)   r+   r*   rd   r   r=   r   r¹   r'   Ú	tensordot)r   r{   r  ÚaxÚtarget_dtypes        r   rÕ  rÕ  ˆ  s‚   € Ü�$œœu˜Ô&Ø>BÖC¸œ
 2¤sÔ+�‘°Ñ3ÐCˆÐCä×0Ñ0°°AÓ6€LÜ×Ñ˜Q Ó-€AÜ×Ñ˜Q Ó-€Aä�?‰?˜1˜a dÔ+Ð+ùò Ds   ›Bc                óŠ  — t        j                  | |«      }|t        j                  k(  }|rt        j                  }t        j                  | |«      } t        j                  ||«      }| j                  dk(  s|j                  dk(  r| |z  }nt        j                  | |«      }|r|j                  t        j                  «      }|S ©Nr   )
r   r=   r'   r  rÎ  r   r¹   rY   Úmatmulrà   )r   r{   r9   r    rÒ  rI   s         r   ÚdotrÛ  “  sš   € Ü×)Ñ)¨!¨QÓ/€EØ”u—z‘zÑ!€GÙÜ—‘ˆä×Ñ˜Q Ó&€AÜ×Ñ˜Q Ó&€Aà‡v�v�‚{�a—f‘f ’kØ�Q‘‰ä—‘˜a Ó#ˆáØ—‘œ5Ÿ:™:Ó&ˆà€Mr   c               ó  — t        j                  | |«      }|t        j                  k(  xr | j                  xs |j                  }|t        j
                  k(  }|rt        j                  }n|rt        j                  }t        j                  | |«      } t        j                  ||«      }t        j                  | |«      }|r!|j                  t        j                  «      }|S |r|j                  t        j
                  «      }|S r   )r   r=   r'   rÜ   rÝ   r  rÞ   rÎ  r   r¹   Úinnerrà   )r   r{   r    rå   rÒ  rI   s         r   rÝ  rÝ  §  sÆ   € Ü×)Ñ)¨!¨QÓ/€EØ”u—}‘}Ñ$Ò?¨!¯(©(Ò*>°a·h±h€GØ”u—z‘zÑ!€Gáä—‘‰Ù	Ü—‘ˆä×Ñ˜Q Ó&€AÜ×Ñ˜Q Ó&€Aä�[‰[˜˜AÓ€FáØ—‘œ5Ÿ=™=Ó)ˆð €Mñ 
Ø—‘œ5Ÿ:™:Ó&ˆØ€Mr   c                ó.   — t        j                  | |«      S r   )r'   Úouter)r   r{   r9   s      r   rß  rß  ¾  s   € Ü�;‰;�q˜!ÓÐr   c                óÌ  — |�
|fdz  \  }}}t        j                  || j                  «      }t        j                  ||j                  «      }t        j                  | |d«      } t        j                  ||d«      }d}| j
                  d   dvs|j
                  d   dvrt        |«      ‚t        | d   j
                  |d   j
                  «      }| j
                  d   dk(  s|j
                  d   dk(  r$|dz  }t        j                  |t        |«      «      }t        j                  | |«      }t        j                  ||¬«      }	t        j                  | |«      } t        j                  ||«      }| d   }
| d   }| j
                  d   dk(  r| d	   }|d   }|d   }|j
                  d   dk(  r|d	   }|	j                  d
k7  r!|	j
                  d   dk(  r|	d   }|	d   }|	d	   }| j
                  d   dk(  rV|j
                  d   dk(  r|
|z  ||z  z
  |	d<   |	S |j
                  d   dk(  sJ ‚|z  d<   |
 |z  d<   |
|z  ||z  z
  d<   n„| j
                  d   dk(  sJ ‚|j
                  d   dk(  r+|z  |z  z
  d<   ||z  |
|z  z
  d<   |
|z  ||z  z
  d<   n3|j
                  d   dk(  sJ ‚ |z  d<   ||z  d<   |
|z  ||z  z
  d<   t        j                  |	d|«      S )NrŒ   rv   zDincompatible dimensions for cross product
(dimension must be 2 or 3))r‡   rŒ   ).r   )rŒ   r—   ).r   ).r‡   r   r‡   .)r   rZ   rY   r'   Úmoveaxisrn   r6   r"  rw   r   r=   r·   r¹   )r   r{   ÚaxisaÚaxisbÚaxiscrB   Úmsgrn   r    ÚcpÚa0r^  r_  Úb0Úb1Úb2Úcp0Úcp1Úcp2s                      r   Úcrossrî  Â  s  € ð ÐØ#˜g¨™kÑˆˆu�eô ×&Ñ& u¨a¯f©fÓ5€EÜ×&Ñ& u¨a¯f©fÓ5€Eô 	�‰�q˜% Ó$€AÜ�‰�q˜% Ó$€AØ
Q€CØ‡w�wˆr�{˜&Ñ  A§G¡G¨B¡K°vÑ$=Ü˜‹oÐô ˜Q˜v™YŸ_™_¨a°©i¯o©oÓ>€EØ‡w�wˆr�{�aÒ˜1Ÿ7™7 2™;¨!Ò+Ø�‰ˆä×*Ñ*¨5´#°e³*Ó=ˆÜ×)Ñ)¨!¨QÓ/€EÜ	�‰�U %Ô	(€Bô 	×Ñ˜Q Ó&€AÜ×Ñ˜Q Ó&€Að 
ˆ6‰€BØ	
ˆ6‰€BØ‡w�wˆr�{�aÒØˆv‰YˆØ	
ˆ6‰€BØ	
ˆ6‰€BØ‡w�wˆr�{�aÒØˆv‰YˆØ	‡w�w�!‚|˜Ÿ™ ™¨Ò)Ø�‰jˆØ�‰jˆØ�‰jˆà‡w�wˆr�{�aÒØ�7‰7�2‰;˜!Òà˜2‘g  R¡Ñ'ˆBˆs‰GØˆIà—7‘7˜2‘; !Ò#Ð#Ð#ð ˜B‘wˆC�‰HØ�s˜R‘xˆC�‰HØ˜B‘w  b¡Ñ(ˆC�ŠHà�w‰w�r‰{˜aÒÐÐØ�7‰7�2‰;˜!ÒØ˜B‘w  b¡Ñ(ˆC�‰HØ˜B‘w  b¡Ñ(ˆC�‰HØ˜B‘w  b¡Ñ(ˆC�ŠHà—7‘7˜2‘; !Ò#Ð#Ð#Ø�s˜R‘xˆC�‰HØ˜B‘wˆC�‰HØ˜B‘w  b¡Ñ(ˆC�‰Hä�>‰>˜"˜b %Ó(Ð(r   r  )r9   r    r   r   Úoptimizec                óp  — ddl m} ddlm}m}m}	m}
m}  |
|«      } |	|«      }| �t        | |«      st        d«      ‚|dk7  rt        d«      ‚t        |d   t        «       }|r|d d d d d	…   }n
|d   |dd  }}|D �cg c]
  } ||«      ‘Œ }}|€t        j                  |Ž n|}|t        j                  k(  xr t!        d
„ |D «       «      }|rt        j"                  }|t        j$                  t        j&                  t        j(                  t        j*                  fv }|rt        j,                  }t/        j0                  |||«      }ddlm} 	 |j7                  «       r‘t        j8                  j4                  j:                  }t        j8                  j4                  j<                  }|du rd}n#|du rdt        j8                  j4                  _        |t        j8                  j4                  _        |rx|dd d	…   }t?        |«      d	z  dk(  }|r|d   }tA        tB        jD                  jG                  tI        ||«      «      «      }|r|jK                  «       t        jL                  |Ž }nt        jL                  g|¢­Ž }|j7                  «       r?t        j8                  j4                  _        t        j8                  j4                  _        	  || |«      } ||«      S c c}w # |j7                  «       r?t        j8                  j4                  _        t        j8                  j4                  _        w w xY w)Nr   )Úndarray)Úmaybe_copy_toÚnormalize_array_likeÚnormalize_castingÚnormalize_dtypeÚwrap_tensorsz'out' must be an arrayr   z#'order' parameter is not supported.r   rv   r‡   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr   )rÝ   )r­   Úts     r   r®   zeinsum.<locals>.<genexpr>1  s   è ø€ Ò3NÀ°A·HµHÑ3Nùs   ‚)Ú
opt_einsumTÚautoF)'Ú_ndarrayrñ  Ú_normalizationsrò  ró  rô  rõ  rö  r)   r7   rm   Ústrr   r=   r'   rÜ   r\  rÞ   rÎ  Úint8Úint16Úint32Úint64r   r   Útorch.backendsrù  Úis_availableÚbackendsÚstrategyÚenabledrw   r+   Ú	itertoolsÚchainÚfrom_iterablerx   rb   Úeinsum)r9   r    r   r   rï  Úoperandsrñ  rò  ró  rô  rõ  rö  Úsublist_formatÚarray_operandsÚ
subscriptsÚopr>   r×  rå   Úis_short_intrù  Úold_strategyÚold_enabledÚsublistsÚhas_sublistoutÚ
sublistoutrI   s                              r   r
  r
  
  sº  € õ "÷õ ñ ˜EÓ"€EÙ Ó(€GØ
€œz¨#¨wÔ7ÜÐ0Ó1Ð1Ø�‚|Ü!Ð"GÓHÐHô $ H¨Q¡K´Ó5Ð5€NÙð " # 2˜¡s¨ sÑ+‰ð &.¨a¡[°(¸1¸2°,�Nˆ
à2@ÖA¨BÑ# BÕ'ÐA€GÐAØ>C¸m”<×0Ñ0°'Ñ:ÐQV€Lð œeŸm™mÑ+ÒN´Ñ3NÀgÔ3NÓ0N€GÙÜ—}‘}ˆà¤E§K¡K´·±¼U¿[¹[Ì%Ï+É+Ð#VÐV€LÙÜ—{‘{ˆä×$Ñ$ W¨l¸GÓD€Gå)ð!<à×"Ñ"Ô$Ü Ÿ>™>×4Ñ4×=Ñ=ˆLÜŸ.™.×3Ñ3×;Ñ;ˆKð
 ˜4ÑØ!‘Ø˜UÑ"Ø49”—‘×)Ñ)Ô1à19ŒE�N‰N×%Ñ%Ô.áà   1 ‘~ˆHÜ  ›]¨QÑ.°!Ñ3ˆNÙØ% b™\�
ÜœIŸO™O×9Ñ9¼#¸gÀxÓ:PÓQÓRˆHÙØ—‘ 
Ô+ä—\‘\ 8Ð,‰Fä—\‘\ *Ð7¨wÒ7ˆFð ×"Ñ"Ô$Ø1=ŒE�N‰N×%Ñ%Ô.Ø0;ŒE�N‰N×%Ñ%Õ-á˜3 Ó'€FÙ˜ÓÐùòi Bøð^ ×"Ñ"Ô$Ø1=ŒE�N‰N×%Ñ%Ô.Ø0;ŒE�N‰N×%Ñ%Õ-ð %ús   Á>KÅD1K$ Ë$AL5c                óì   — | j                   j                  rt        d| j                   › d�«      ‚t        j                  | |¬«      \  \  } }t        j
                  || j                  «      }|dk(  }| ||fS )Nzsorting z is not supportedrX   Ústable)r    rµ   rm   r   rC   rZ   rY   )rh   rB   Úkindr   r  s        r   Ú_sort_helperr  g  sm   € Ø‡|�|×ÒÜ! H¨V¯\©\¨NÐ:KÐ"LÓMÐMÜ×-Ñ-¨f¸4Ô@�O�I€VˆtÜ×%Ñ% d¨F¯K©KÓ8€Dà�XÑ€Fà�4˜ÐÐr   c                ón   — t        | |||«      \  } }}t        j                  | ||¬«      }|j                  S ©N)r4  r  )r  r'   Úsortra   )r   rB   r  r   r  rI   s         r   r  r  r  s4   € ä" 1 d¨D°%Ó8�O€A€tˆVÜ�Z‰Z˜˜t¨FÔ3€FØ�=‰=Ðr   c                óV   — t        | |||«      \  } }}t        j                  | ||¬«      S r  )r  r'   Úargsort)r   rB   r  r   r  s        r   r  r  y  s+   € Ü" 1 d¨D°%Ó8�O€A€tˆVÜ�=‰=˜ ¨VÔ4Ð4r   c                ó�   — | j                   j                  rt        d| j                   › �«      ‚t        j                  | |||¬«      S )Nzsearchsorted with dtype=)ÚsideÚsorter)r    rµ   rm   r'   Úsearchsorted)r   rò   r   r!  s       r   r"  r"  ~  s?   € ð 	‡w�w×ÒÜ!Ð$<¸Q¿W¹W¸IÐ"FÓGÐGä×Ñ˜a ¨°fÔ=Ð=r   c                ó´   — t        j                  || j                  d«      }t        j                  || j                  d«      }t        j                  | ||«      S )NÚsourceÚdestination)r   r  rY   r'   rá  )r   r$  r%  s      r   rá  rá  Š  sE   € Ü×'Ñ'¨°·±¸ÓA€FÜ×,Ñ,¨[¸!¿&¹&À-ÓP€KÜ�>‰>˜!˜V [Ó1Ð1r   c                ó°   — t        j                  || j                  «      }t        j                  || j                  «      }t        j                  | ||«      S r   )r   rZ   rY   r'   Úswapaxes)r   r«  r¬  s      r   r'  r'  �  sA   € Ü×&Ñ& u¨a¯f©fÓ5€EÜ×&Ñ& u¨a¯f©fÓ5€EÜ�>‰>˜!˜U EÓ*Ð*r   c                ót  — | j                   }t        j                  ||«      }|dk  r||z  }d}d|cxk  r|dz   k  s#n t        j                  |d| d|dz   |fz  «      ‚||k  r|dz  }||k(  r| S t	        t        d|«      «      }|j                  |«       |j                  ||«       | j                  |«      S )Nr   z5'%s' arg requires %d <= %s < %d, but %d was passed inr   r›   )	rY   r   rZ   Ú	AxisErrorr+   r  ÚremoveÚinsertrÔ   )r   rB   r›   rq   rå  r  s         r   Úrollaxisr,  –  sÀ   € ð 	
�‰€AÜ×%Ñ% d¨AÓ.€DØˆq‚yØ�‰
ˆØ
A€CØ�Ô˜˜Q™ÔÜ�o‰o˜c W¨q¨b°'¸1¸q¹5À%Ð$HÑHÓIÐIØˆe‚|à�‰
ˆØˆu‚}ð ˆÜ”�a˜“Ó€DØ‡K�K�ÔØ‡K�K��tÔØ�6‰6�$‹<Ðr   c                ó¶   — |�At        j                  || j                  d¬«      }t        |t        «      s|ft        |«      z  }t        j                  | ||«      S )NT)Úallow_duplicate)r   r  rY   r)   r*   rw   r'   Úroll)r   ÚshiftrB   s      r   r/  r/  ±  sM   € ØÐÜ×)Ñ)¨$°·±ÈÔMˆÜ˜%¤Ô'Ø�Hœs 4›yÑ(ˆEÜ�:‰:�a˜ Ó%Ð%r   c                óº   — |dk(  r| }|S |€| j                  «       }|S t        |t        «      r| }|D ]  }| j                  |«      }Œ |S | j                  |«      }|S )Nr5   )r…  r)   r*   )r   rB   rI   rÖ  s       r   r…  r…  ¼  sv   € Øˆr‚zØˆð €Mð 
ˆØ—‘“ˆð €Mô �dœEÔ"ØˆFØò '�ØŸ™ 2›‘ð'ð €Mð —Y‘Y˜t“_ˆFØ€Mr   c                óN   — t        |«      dk(  r|d   n|}| j                  |«      S r{  )rw   rÂ   )r   Únewshaper   s      r   rÂ   rÂ   Ë  s'   € ä! (›m¨qÒ0ˆx˜Š{°h€HØ�9‰9�XÓÐr   c                ó¢   — |dv r(t        t        t        | j                  «      «      «      }nt	        |«      dk(  r|d   }| j                  |«      S )N)r5   Nr   r   r   )r*   Úreversedr  rY   rw   Úpermute)r   r  s     r   Ú	transposer7  Ö  sF   € ð Ð"Ñ"Ü”Xœe A§F¡F›mÓ,Ó-‰Ü	ˆT‹�aŠØ�A‰wˆØ�9‰9�T‹?Ðr   c                ó,   — t        j                  | «      S r   )r'   r_   )r   r   s     r   Úravelr9  à  s   € Ü�=‰=˜ÓÐr   c                óê  — t        j                  || j                  «      }|dk  rt        d|› �«      ‚|dk(  r| S |�Nt	        | j
                  «      }|j                  dkD  r|j
                  |   nd||<   t        j                  ||«      }|�Nt	        | j
                  «      }|j                  dkD  r|j
                  |   nd||<   t        j                  ||«      }t        j                  | ||||¬«      S )Nr   z#order must be non-negative but got r   )rB   Úprependrb   )	r   rZ   rY   r6   r+   rn   r'   r   Údiff)r   rq   rB   r;  rb   rn   s         r   r<  r<  ä  sÞ   € ô ×%Ñ% d¨A¯F©FÓ3€Dàˆ1‚uÜÐ>¸q¸cÐBÓCÐCàˆA‚vàˆàÐÜ�Q—W‘W“ˆØ-4¯\©\¸AÒ-=�g—m‘m DÒ)À1ˆˆd‰Ü×$Ñ$ W¨eÓ4ˆàÐÜ�Q—W‘W“ˆØ,2¯K©K¸!ªO�f—l‘l 4Ò(Àˆˆd‰Ü×#Ñ# F¨EÓ2ˆä�:‰:�a˜ ¨w¸vÔFÐFr   c                ó`   — t        j                  | «      }|r|dt         j                  z  z  }|S )Né´   )r'   ÚangleÚpi)r´  ÚdegrI   s      r   r?  r?    s)   € Ü�[‰[˜‹^€FÙ
Ø˜3¤§¡™>Ñ*ˆØ€Mr   c                ó,   — t        j                  | «      S r   )r'   Úsinc©ry   s    r   rC  rC    ó   € Ü�:‰:�a‹=Ðr   )rB   Ú
edge_orderc               óÜ  — | j                   }t        j                  |«      }|€t        t	        |«      «      }nt        j
                  ||«      }t        |«      }t        |«      }|dk(  rdg|z  }�n>|dk(  r1t        j                  |d   «      s|d   j                   dk(  r||z  }�n||k(  røt        |«      }t        |«      D ]Þ  \  }	}
t        j                  |
«      }
|
j                   dk(  rŒ+|
j                   dk7  rt        d«      ‚t        |
«      | j                  ||	      k7  rt        d«      ‚|
j                  j                   s&|
j                  j"                  s|
j%                  «       }
t        j&                  |
«      }||d   k(  j)                  «       r|d   }|||	<   Œà nt+        d«      ‚|dkD  rt        d«      ‚g }t-        d «      g|z  }t-        d «      g|z  }t-        d «      g|z  }t-        d «      g|z  }| j                  }t        j.                  |«      t0        t2        fv r | j%                  «       } t        j4                  }t7        ||«      D �]‡  \  }}| j                  |   |dz   k  rt        d	«      ‚t        j8                  | |¬
«      }t        j                  |«      xs |j                   dk(  }t-        dd«      ||<   t-        d d«      ||<   t-        dd«      ||<   t-        dd «      ||<   |r0| t        |«         | t        |«         z
  d|z  z  |t        |«      <   n«|dd }|dd  }| |||z   z  z  }||z
  ||z  z  }||||z   z  z  }dg|z  }d||<   |j;                  |«      }|j;                  |«      }|j;                  |«      }|| t        |«         z  || t        |«         z  z   || t        |«         z  z   |t        |«      <   |dk(  rŠd||<   d||<   d||<   |r|n|d   }| t        |«         | t        |«         z
  |z  |t        |«      <   d||<   d||<   d||<   |r|n|d   }| t        |«         | t        |«         z
  |z  |t        |«      <   �n3d||<   d||<   d||<   d||<   |rd|z  }d|z  }d|z  }n3|d   }|d   }d|z  |z    |||z   z  z  }||z   ||z  z  }| |||z   z  z  }|| t        |«         z  || t        |«         z  z   || t        |«         z  z   |t        |«      <   d||<   d||<   d||<   d||<   |rd|z  }d|z  }d|z  }n2|d   }|d   }||||z   z  z  }||z    ||z  z  }d|z  |z   |||z   z  z  }|| t        |«         z  || t        |«         z  z   || t        |«         z  z   |t        |«      <   |j=                  |«       t-        d «      ||<   t-        d «      ||<   t-        d «      ||<   t-        d «      ||<   �ŒŠ |dk(  r|d   S |S )Nr   r    r   z&distances must be either scalars or 1dzGwhen 1d, distances must match the length of the corresponding dimensionzinvalid number of argumentsr‡   z)'edge_order' greater than 2 not supportedzlShape of array too small to calculate a numerical gradient, at least (edge_order + 1) elements are required.r—   rv   éþÿÿÿg       @g      ø¿g      à¿éýÿÿÿg      à?g       Àg      ø?)rY   r   Úndarrays_to_tensorsr*   r  r  rw   r   Ú	is_scalarr+   r,  r'   Ú	as_tensorr6   rn   r    Úis_floating_pointrµ   Údoubler<  r\  r7   rt  Úpython_type_for_torchrd   r  r¶   rx   rÁ   rÂ   rb   )ÚfrB   rF  Úvarargsr“   r  Úlen_axesrq   Údxr/  Ú	distancesÚdiffxÚoutvalsÚslice1Úslice2Úslice3Úslice4ÚotypeÚax_dxr9   Úuniform_spacingÚdx1Údx2r   r{   Úcrn   Údx_0Údx_ns                                r   Úgradientrc    s£  € Ø	�‰€Aä×'Ñ'¨Ó0€Gà€|Ü”U˜1“X‹‰ä×)Ñ)¨$°Ó2ˆä�4‹y€HÜˆG‹€AØˆA‚vàˆU�XÑŠØ	
ˆaŠ”\×+Ñ+¨G°A©JÔ7¸7À1¹:¿?¹?ÈaÒ;Oà�xÑŠØ	
ˆhŠä�'‹]ˆÜ% b›Mò 	‰LˆAˆyÜŸ™¨	Ó2ˆIØ�~‰~ Ò"ØØ—‘ 1Ò$Ü Ð!IÓJÐJÜ�9‹~ §¡¨¨a©Ñ!1Ò1Ü ð@óð ð —O‘O×5Ò5¸¿¹×9SÒ9SØ%×,Ñ,Ó.�	ä—J‘J˜yÓ)ˆEð ˜˜q™Ñ!×&Ñ&Ô(Ø˜a™�ØˆBˆqŠEñ'	ô* Ð5Ó6Ð6à�A‚~ÜÐDÓEÐEð
 €Gô �D‹kˆ]˜QÑ€FÜ�D‹kˆ]˜QÑ€FÜ�D‹kˆ]˜QÑ€FÜ�D‹kˆ]˜QÑ€Fà�G‰G€EÜ×)Ñ)¨%Ó0´S¼$°KÑ?ð �H‰H‹JˆÜ—‘ˆä˜4 “}ó c#‰ˆˆeØ�7‰7�4‰=˜:¨™>Ò)ÜðCóð ô
 ×Ñ˜q¨Ô.ˆô '×0Ñ0°Ó7ÒJ¸5¿:¹:È¹?ˆô ˜Q “|ˆˆt‰Ü˜T 2“ˆˆt‰Ü˜Q “|ˆˆt‰Ü˜Q “~ˆˆt‰áØ"#¤E¨&£MÑ"2°Q´u¸V³}Ñ5EÑ"EÈ#ÐPUÉ+Ñ!VˆC”�f“Òà˜˜"�+ˆCØ˜˜�)ˆCØ�˜#  s¡Ñ+Ñ,ˆAØ�s‘˜s S™yÑ)ˆAØ�s˜c C™iÑ(Ñ)ˆAà�C˜!‘GˆEØˆE�$‰KØ—	‘	˜%Ó ˆAØ—	‘	˜%Ó ˆAØ—	‘	˜%Ó ˆAð �A”e˜F“mÑ$Ñ$ q¨1¬U°6«]Ñ+;Ñ';Ñ;¸aÀ!ÄEÈ&ÃMÑBRÑ>RÑRð ”�f“Ñð
 ˜Š?ØˆF�4‰LØˆF�4‰LØˆF�4‰LÙ+‘5°°q±ˆDà"#¤E¨&£MÑ"2°Q´u¸V³}Ñ5EÑ"EÈÑ!MˆC”�f“ÑàˆF�4‰LØˆF�4‰LØˆF�4‰LÙ+‘5°°r±ˆDà"#¤E¨&£MÑ"2°Q´u¸V³}Ñ5EÑ"EÈÑ!MˆC”�f“Óð ˆF�4‰LØˆF�4‰LØˆF�4‰LØˆF�4‰LÙØ˜5‘L�Ø˜%‘K�Ø˜5‘L‘à˜A‘h�Ø˜A‘h�Ø˜C‘i #‘oÐ&¨#°°s±Ñ*;Ñ<�Ø˜3‘Y 3¨¡9Ñ-�Ø�D˜C 3¨¡9Ñ-Ñ.�ð �A”e˜F“mÑ$Ñ$ q¨1¬U°6«]Ñ+;Ñ';Ñ;¸aÀ!ÄEÈ&ÃMÑBRÑ>RÑRð ”�f“Ñð ˆF�4‰LØˆF�4‰LØˆF�4‰LØˆF�4‰LÙØ˜%‘K�Ø˜5‘L�Ø˜%‘K‘à˜B‘i�Ø˜B‘i�Ø˜S C¨#¡IÑ.Ñ/�Ø˜C‘i�L C¨#¡IÑ.�Ø˜3‘Y ‘_¨°°c±	Ñ):Ñ;�ð �A”e˜F“mÑ$Ñ$ q¨1¬U°6«]Ñ+;Ñ';Ñ;¸aÀ!ÄEÈ&ÃMÑBRÑ>RÑRð ”�f“Ñð 	�‰�sÔô ˜T“{ˆˆt‰Ü˜T“{ˆˆt‰Ü˜T“{ˆˆt‰Ü˜T“{ˆˆt‹ðGc#ðJ �1‚}Ø�q‰zÐàˆr   c                ó(  — | j                  «       rt        j                  | |¬«      }|S | j                  «       rVt        j                  t        j                  | j
                  |¬«      t        j                  | j                  |¬«      «      }|S | }|S )N)Údecimals)rM  r'   Úroundrµ   Úcomplexro  rp  )r   re  r9   rI   s       r   rf  rf  À  su   € Ø×ÑÔÜ—‘˜Q¨Ô2ˆð €Mð 
�‰Œä—‘Ü�K‰K˜Ÿ™¨Ô2Ü�K‰K˜Ÿ™¨Ô2ó
ˆð €Mð ˆØ€Mr   c                ó  — t        j                  | «      s| S |dkD  r,|t        j                  | j                  «      j                  z  }t        j
                  | j                  «      |k  }|j                  «       r| j                  S | S rÍ  )	r'   rµ   Úfinfor    ÚepsÚabsrp  r\  ro  )r   ÚtolÚmasks      r   Úreal_if_closern  Ó  si   € Ü×Ñ˜AÔØˆØ
ˆQ‚wð ”E—K‘K §¡Ó(×,Ñ,Ñ,ˆä�9‰9�Q—V‘VÓ˜sÑ"€DØ—X‘X”Zˆ1�6‰6Ð& QÐ&r   c                ó,   — t        j                  | «      S r   )r'   ro  r  s    r   ro  ro  à  rE  r   c                ód   — | j                  «       r| j                  S t        j                  | «      S r   )rµ   rp  r'   rÑ   r  s    r   rp  rp  ä  s%   € Ø‡|�|„~Ø�v‰vˆÜ×Ñ˜AÓÐr   c                ó”   — t        j                  | «      r| j                  dk7  S t        j                  | t         j                  ¬«      S r–   )r'   rµ   rp  rÑ   r  rD  s    r   Ú	iscomplexrr  ê  s5   € Ü×Ñ˜ÔØ�v‰v˜‰{ÐÜ×Ñ˜A¤U§Z¡ZÔ0Ð0r   c                ó”   — t        j                  | «      r| j                  dk(  S t        j                  | t         j                  ¬«      S r–   )r'   rµ   rp  rÌ   r  rD  s    r   Úisrealrt  ð  s3   € Ü×Ñ˜ÔØ�v‰v˜‰{ÐÜ�?‰?˜1¤E§J¡JÔ/Ð/r   c                ó,   — t        j                  | «      S r   ©r'   rµ   rD  s    r   Úiscomplexobjrw  ö  s   € Ü×Ñ˜AÓÐr   c                ó.   — t        j                  | «       S r   rv  rD  s    r   Ú	isrealobjry  ú  s   € Ü×Ñ Ó"Ð"Ð"r   c                ó,   — t        j                  | «      S r   )r'   Úisneginf©ry   r9   s     r   r{  r{  þ  r•  r   c                ó,   — t        j                  | «      S r   )r'   Úisposinfr|  s     r   r~  r~    r•  r   c                ó@   — t         j                  j                  | «      S r   )r'   ÚspecialÚi0rD  s    r   r�  r�    s   € Ü�=‰=×Ñ˜AÓÐr   c                ód   — ddl m} 	  || «      }|j                  «       dk(  S # t        $ r Y yw xY w)Nr   )ró  F)rü  ró  r  Ú	Exception)r   ró  rø  s      r   Úisscalarr„  
  s6   € å5ðÙ  Ó#ˆØ�w‰w‹y˜A‰~ÐøÜò Ùðús   ˆ# £	/®/c                ón   — t        j                  «       j                  }t        j                  | d|¬«      S ©NF)Úperiodicr    )r   r˜   r™   r'   Úhamming_window©rN  r    s     r   ÚhammingrŠ    s+   € Ü×'Ñ'Ó)×5Ñ5€EÜ×Ñ ¨E¸Ô?Ð?r   c                ón   — t        j                  «       j                  }t        j                  | d|¬«      S r†  )r   r˜   r™   r'   Úhann_windowr‰  s     r   Úhanningr�    s+   € Ü×'Ñ'Ó)×5Ñ5€EÜ×Ñ˜Q¨°eÔ<Ð<r   c                óp   — t        j                  «       j                  }t        j                  | |d|¬«      S )NF)Úbetar‡  r    )r   r˜   r™   r'   Úkaiser_window)rN  r�  r    s      r   Úkaiserr‘  "  s-   € Ü×'Ñ'Ó)×5Ñ5€EÜ×Ñ˜q t°eÀ5ÔIÐIr   c                ón   — t        j                  «       j                  }t        j                  | d|¬«      S r†  )r   r˜   r™   r'   Úblackman_windowr‰  s     r   Úblackmanr”  '  ó+   € Ü×'Ñ'Ó)×5Ñ5€EÜ× Ñ  ¨U¸%Ô@Ð@r   c                ón   — t        j                  «       j                  }t        j                  | d|¬«      S r†  )r   r˜   r™   r'   Úbartlett_windowr‰  s     r   Úbartlettr˜  ,  r•  r   c                 ó&  — d}d}| D ]o  }|j                   }t        |«      rd}|j                  s|j                  sd}n#t        j                  |d «      }|€t        d«      ‚t        j                  ||«      }Œq |rt        d   |   S t        d   |   S )NFr   Tr‡   z+can't get common type for non-numeric arrayr   )
r    rw  rM  rµ   Úarray_precisionÚgetr7   Úbuiltinsr›  Ú
array_type)r>   rµ   Ú	precisionr   rø  Úps         r   Úcommon_typer   C  sš   € Ø€JØ€IØò 
/ˆØ�G‰GˆÜ˜Œ?ØˆJØ×#Ò# q§|¢|Ø‰Aä×#Ñ# A tÓ,ˆAØˆyÜÐ MÓNÐNÜ—L‘L ¨AÓ.‰	ð
/ñ Ü˜!‰}˜YÑ'Ð'ä˜!‰}˜YÑ'Ð'r   c           	     ó  — |�t        d«      ‚|�!|j                  j                  rt        d«      ‚| j                  j                  xs | j                  j                   }|d u xs |j                  j                   }|r| j                  «       } |� t        j                  || j                  «      }t        |t        j                  «      rE|j                  dk(  rt        j                  |«      }n t        j                  || j                  «      }|€&t        j                  | ||t        |«      ¬«      \  }}	n&t        j                  | |||t        |«      ¬«      \  }}	|s|r|j!                  «       }|r|	j!                  «       }	||	fS )Nú3normed argument is deprecated, use density= insteadzcomplex weights histogram.r   )ÚweightÚdensity)r  r£  r¤  )r6   r    rµ   rm   rM  rN  r   r¹   r)   r'   ÚTensorrY   ÚoperatorÚindexÚ	histogramr  Úlong)
r   Úbinsr  Únormedr  r¤  Úis_a_intÚis_w_intÚhr{   s
             r   r¨  r¨  Z  sB  € ð ÐÜÐNÓOÐOàÐ˜wŸ}™}×7Ò7Ü!Ð">Ó?Ð?à—G‘G×-Ñ-ÒC°·±×1CÑ1CÐD€HØ˜$ˆÒE g§m¡m×&EÑ&EÐ"E€HÙØ�H‰H‹JˆàÐÜ×&Ñ& w°·±Ó8ˆä�$œŸ™Ô%Ø�9‰9˜Š>ä—>‘> $Ó'‰Dä×'Ñ'¨¨a¯g©gÓ6ˆDà€}Ü�‰˜q $¨wÄÀWÃÔN‰ˆ‰1ä�‰Øˆt˜5¨¼$¸w»-ô
‰ˆˆ1ñ ‘xØ�F‰F‹HˆÙØ�F‰F‹Hˆàˆaˆ4€Kr   c                óÜ   — t        | «      t        |«      k7  rt        d«      ‚	 t        |«      }|dk7  r	|dk7  r||g}t        | |f|||||«      \  }}	||	d   |	d   fS # t        $ r d}Y Œ;w xY w)Nz"x and y must have the same length.r   r‡   r   )rw   r6   r7   Úhistogramdd)
ry   rá   rª  r  r«  r  r¤  r“   r®  Úes
             r   Úhistogram2dr²  †  sŒ   € ô ˆ1ƒv”�Q“ÒÜÐ=Ó>Ð>ðÜ�‹Iˆð 	ˆA‚v�!�q’&Ø�dˆ|ˆä˜˜1�v˜t U¨F°G¸WÓE�D€A€qàˆa�‰d�A�a‘Dˆ=Ðøô ò ØŠðús   ¤A ÁA+Á*A+c                ól  — |�t        d«      ‚ddlm}m} t	        | t
        t        f«      r || «      j                  } n || «      } t        j                  | «      } | j                  j                  s&| j                  j                  s| j                  «       } t	        |t        «      xs t        j                   d„ |D «       «       }|rN ||«      }|D �	cg c]  }	|	j                  ‘Œ }
}	|D �	cg c]"  }	t#        j$                  |	| j                  «      ‘Œ$ }}	|�|j'                  «       j)                  «       }|��| j+                  d¬«      }t        j,                  |«      j/                  dd«      j                  j'                  «       }t        |j)                  «       «      }t#        j$                  || j                  «      }d	|i}ni }t        j0                  | ||fd
t3        |«      i|¤Ž\  }}	|r2t5        |	
«      D ��cg c]  \  }}t#        j$                  ||«      ‘Œ }	}}||	fS c c}	w c c}	w c c}}w )Nr¢  r   )ró  Únormalize_seq_array_likec              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   )r)   rd   )r­   r{   s     r   r®   zhistogramdd.<locals>.<genexpr>»  s   è ø€ Ò-OÀQ¬j¸¼C×.@Ñ-Oùs   ‚r   )r4  r‡   rv   r£  r¤  )r6   rü  ró  r´  r)   r+   r*   ÚTr'   r1   r    rM  rµ   rN  rd   rœ  r\  r   r¹   r_   ÚtolistÚaminmaxrD   rÂ   r°  r  rx   )Úsamplerª  r  r«  r  r¤  ró  r´  Úbins_is_arrayr{   Úbins_dtypesÚmmÚw_kwdr®  ÚbbÚdtyps                   r   r°  r°     sß  € ð ÐÜÐNÓOÐOçOä�&œ4¤˜-Ô(Ù% fÓ-×/Ñ/‰á% fÓ-ˆä×Ñ˜fÓ%€Fà�L‰L×*Ò*¨f¯l©l×.EÒ.EØ—‘“ˆô 	�4œÓÒO¤§¡Ñ-OÈ$Ô-OÓ!Oð€Mñ Ù'¨Ó-ˆØ(,Ö- 1�q—w“wÐ-ˆÐ-Ø?CÖD¸!”×$Ñ$ Q¨¯©Õ5ÐDˆÐDàÐØ—‘“×&Ñ&Ó(ˆàÐà�^‰^ ˆ^Ó"ˆÜ—	‘	˜"“×%Ñ% a¨Ó,×.Ñ.×6Ñ6Ó8ˆÜ�e—l‘l“nÓ%ˆÜ×&Ñ& w°·±Ó=ˆØ˜7Ð#‰àˆä×Ñ˜V T¨5ÑQ¼$¸w»-ÐQÈ5ÑQ�D€A€qáÜ<?ÀÀ;Ó<O×P±°°DŒU×!Ñ! " dÕ+ÐPˆÑPàˆaˆ4€Kùò+ .ùÚDùó$ Qs   ÃH&Ã.'H+Ç? H0c               ó   — ddl m} | j                  «       dkD  r || j                  «      S | j                  t        j
                  k(  rt        j
                  }�ní| j                  j                  rÄt	        j                  t        j                  «      }| j                  t        j                  k(  xs^ |j                  | j                  cxk  xr |j                  k  nc xr. |j                  | j                  cxk  xr |j                  k  nc }|rt        j                  nt        j                  }�n| j                  j                  rpt        j                   t        j                  t        j"                  fD ]=  }t	        j                  |«      }|j                  | cxk  r|j                  k  sŒ8n Œ;|} n� n�t        j$                  t        j&                  t        j(                  t        j*                  t        j,                  fD ]=  }t	        j.                  |«      }|j                  | cxk  r|j                  k  sŒ8n Œ;|} n  |«      S )Nr   )ÚDType)Ú_dtypesrÁ  r  r    r'   r  rµ   ri  rÞ   Ú	complex64rš  ro  r›  rp  Ú
complex128rM  rÜ   r¶   rÎ  rþ  rÿ  r   r  Úiinfo)r   rÁ  r    ÚfiÚfits_in_singlerô   Úiis          r   Úmin_scalar_typerÉ  Ú  s|  € õ à‡w�wƒy�1‚}á�Q—W‘W‹~Ðà‡w�w”%—*‘*ÒÜ—
‘
Šà	
�‰×	Ò	Ü�[‰[œŸ™Ó'ˆØŸ™¤E§O¡OÑ3ò 
Ø�F‰F�a—f‘fÖ& §¡Ô&ÒE¨2¯6©6°Q·V±VÖ+E¸r¿v¹vÔ+Eð 	ñ $2”—’´u×7GÑ7GŠà	
�‰×	"Ò	"Ü—=‘=¤%§-¡-´·±Ð?ò 	ˆBÜ—‘˜R“ˆBØ�v‰v˜Ô$˜bŸf™fÖ$Ø�Ùñ		ô —;‘;¤§
¡
¬E¯K©K¼¿¹ÄeÇkÁkÐRò 	ˆBä—‘˜R“ˆBØ�v‰v˜Ô$˜bŸf™fÖ$Ø�Ùð	ñ �‹<Ðr   c                ó€  — |dk7  rt         ‚|j                  dd«      }t        j                  | j                  «      } ||«      }t        j                  || j                  df«      }t        j                  |d«      j                  «       }t
        j                  j                  j                  | t        |«      |¬«      S )NÚconstantÚconstant_valuesr   r‡   rù   )Úvalue)rm   r›  r   rO  r    r'   r   rY   rú   r_   rï   rð   Úpadr*   )r!  Ú	pad_widthró   ÚkwargsrÍ  Útyps         r   rÎ  rÎ  ÿ  s˜   € ØˆzÒÜ!Ð!Ø�J‰JÐ(¨!Ó,€Eä
×
,Ñ
,¨U¯[©[Ó
9€CÙ�‹J€Eä×"Ñ" 9¨u¯z©z¸1¨oÓ>€IÜ—
‘
˜9 dÓ+×3Ñ3Ó5€Iä�8‰8×Ñ×"Ñ" 5¬%°	Ó*:À%Ð"ÓHÐHr   )r   F)r   r
   r   r   r   r   )r   N)r"   r   r#   r
   r   úOptional[CastingModes]r$   r   )r-   r
   )NNr   )r   NNr   )r   rÒ  )rH   úSequence[ArrayLike]r9   úOptional[OutArray]r    úOptional[DTypeLike]r   rÒ  )r8   rÓ  r    rÕ  r   rÒ  )r   N)r\   rÓ  r9   rÔ  r    rÕ  r   rÒ  r   )r`   r
   ra   r
   )Frù   )r   r
   )r   r
   r{   r
   rZ  )ry   r
   )é2   TFNr   )r›   r
   rœ   r
   r    rÕ  )rÖ  TNr   )rÖ  Tg      $@Nr   )r    rÕ  )NNr   N)
r›   úOptional[ArrayLikeOrScalar]rœ   r×  rº   r×  r    rÕ  r¨   r   )NÚC)r    rÕ  r   r   r¨   r   )Nr   FN)rÃ   r
   r    rÕ  r   r   r   r   )rÆ   r
   r    rÕ  r   r   r¨   r   )r   r
   r    rÕ  r   r   r   r   )NT)NTNN)ry   r
   rá   úOptional[ArrayLike]r    rÕ  )NTFNNN)
rë   r
   rá   rÙ  ré   rÙ  rè   rÙ  r    rÕ  )rÅ   )r   r
   rò   r
   )ÚvalidrÙ  )r  rÙ  ry   r
   )NN)r	  r
   ry   r×  rá   r×  )r   r
   )rë   r
   )r   )r   r   )r!  r
   r   r   )r%  r
   r   r   )r-  r
   )r`   r
   )Nr   N)r    rÕ  r¨   r   )gñhãˆµøä>g:Œ0âŽyE>F)r^  r
   r_  r
   )Tg        NN)ry   r
   r   r   )NNÚraise)r   r
   r6  r
   r9   rÔ  ró   r   )r`   r
   r6  r
   )rÛ  )r   r   r6  r
   ra   r
   ró   r   )r`   r
   r6  r
   ra   r
   )NrÛ  )r   r
   r†  rÓ  r9   rÔ  ró   r   )FFFN)r�  r
   rŽ  r   rT  r   )NNN)r   r
   rš  rÙ  r›  rÙ  r9   rÔ  )r   r
   rŸ  r   )r£  r
   )r   r   r   )r   r   r   NN)r   r
   r    rÕ  r9   rÔ  )Nr   NrØ  )rò   r
   )r‡   )r   r
   rÄ  r
   )r   r
   r{   r
   r9   rÔ  )rv   rv   rv   N)rv   NN)r   r
   r   r   )ÚleftN)r   r
   rò   r
   r!  rÙ  )rØ  )r   rv   NN)r   r
   r;  rÙ  rb   rÙ  )r´  r
   )rP  r
   )r   r
   r9   rÔ  )éd   )ry   r
   r9   rÔ  )r>   r
   )é
   NNNN)r   r
   rª  r
   r  rÙ  )r  rÙ  r  rÙ  )rË  )r!  r
   rÏ  r
   )­Ú__doc__Ú
__future__r   rœ  r  r¦  Útypingr   r   r'   Ú r   r   Úcollections.abcr	   rü  r
   r   r   r   r   r   r   r   r%   r(   r1   r3   r:   r@   rE   rJ   rN   Ú	row_stackrR   rT   rV   r[   rb   rk   re   rf   r€   ro   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$   rY   rn   r  r  rú   r  r  r  r   r"  r&  r1  rd   r6  r8  r;  r@  rD  rH  rK  rO  rU  rX  ra  rd  ri  rn  ru  ry  r€  rƒ  rˆ  rŒ  r’  r”  r—  rœ  r   r¢  r©  rM  r±  rµ  r·  r¹  r¼  r¾  rÁ  rË  rÏ  rÕ  rÛ  rÝ  rß  rî  r
  r  r  r  r"  rá  r'  r,  r/  r…  rÂ   r7  r9  r<  r?  rC  rc  rf  ÚaroundÚround_rn  ro  rp  rr  rt  rw  ry  r{  r~  r�  r„  rŠ  r�  r‘  r”  r˜  rÜ   rÞ   r¶   rÃ  rÄ  r�  rš  r   r¨  r²  r°  rÉ  rÎ  r5   r   r   ú<module>rç     sD
  ðñõ #ã Û Û ß *ã ç !ñ Ý(÷÷ ñ ð PUðØðØ+ðØ:Lóð '2Ø $ð	Ø	ðà	ðð $ðð ó	óóóò

óð  NYð$Ø4Jó$ð 
Ø"Ø!%Ø&1ð	Ø!ð	ð 
ð	ð ð		ð
 $ó	ð "&Ø&1ñ	!Ø	ð!ð ð!ð $ó	!ð €	ð "&Ø&1ñ	!Ø	ð!ð ð!ð $ó	!ð "&Ø&1ñ	
!Ø	ð
!ð ð
!ð $ó	
!ð  "&Ø&1ñ	'Ø	ð'ð ð'ð $ó	'ð  
Ø"ð+ð
 "&Ø&1ñ+Øð+ð 
ð+ð
 ð+ð $ó+ô 2óEó*ò6*ô"9ôFóFóCóCóô*ð 	ØØØ!%Ø	
ð9Øð9à
ð9ð ó9ð( 	ØØ!%Ø	
ðØðà
ðð
 óð. 	ØØ	Ø!%Ø	
ðDð óDð *.Ø(,Ø()Ø!%ð	&ð  $ñ&Ø&ð&à
%ð&ð &ð&ð ð	&ð ó&ð\ "&Ø #ð	+ð
  $ñ	+àð	+ð ð	+ð
 ó	+ð$ "&Ø #Ø %Ø
ð
Øð
àð
ð ð
ð ó	
ð  "&Ø #ð	6ð  $ñ6àð6ð ð6ð ð	6ð ó6ð( "&Ø #Ø %Ø
ðØðð ðð ð	ð
 óð" "&Ø #ð	*ð
  $ñ	*àð	*ð ð	*ð
 ó	*ð "&Ø #Ø %Ø
ð
Øð
àð
ð ð
ð ó	
ð "&Ø #ð	+ð
  $ñ	+àð	+ð ð	+ð
 ó	+ð "&Ø #Ø %Ø
ð
Øð
àð
ð ð
ð ó	
ó ð6 "ØØ	Ø	ðð "&ñØðàðð óð< "ØØ	Ø	Ø$(Ø$(ðð "&ñØðàðð "ðð "ðð óò<ô.'ô'ô1ð &*Ø%)ðØðà"ðð #óó,óôóô
óóô#ô1õ
 #ð DIõ *ð #'¨u¸tõ ð0 69Àô ô.ôó.ó.ôDôDð ØØ!%ð	*ð  $ñ*ð ð	*ð ó*ô"JôKóô6ó%ð QUð	JØð	JØ*ó	Jð$ 
Ø"Ø&ðØðàðð 
ð	ð
 óó4ð  'ð	Øðàðð ðð ó	ó*ð #Ø&ð	(Øð(à ð(ð 
ð(ð ó	(ð2 (-ØØØ	ðð %)ñØðà$ðð "óó&+óó6ð  $Ø#Ø"ð	$Øð$à	ð$ð 
ð$ð 
ó	$ô5óô!ô<3ð Ø
Ø
Ø!%Ø"ð	Øð	ð
 ð	ð 
ó	ð ØØ!%Ø #ðð  $ñð ð	ð
 ðð óð$%ÐQUõ %ôô óó
(ôóDô@,ôó(ô.ôE)ðP  d°#¸vÐPUô W òz ôô5ð LPð>Øð>Øð>Ø5Hó>ó2ó+ôô6&ôôôôð Ø	Ø#'Ø"&ðGØðGð !ð	Gð
  óGô@óð
 +/¸1õ jô`ð 
€Ø	€ô
'óóó1ó0óó#ôôóòò@ò
=ò
Jò
Aò
Að ‡]‚]�E—M’M 5§=¢=Ð1Ø	ˆ5�?Š?˜E×,Ò,Ð-ð€
ð
 
‡M‚M�1Ø	‡M‚M�1Ø	‡M‚M�1Ø	‡O‚O�QØ	×Ò�að€ô(ð2 Ø
ØØ#'Øñ)Øð)à
ð)ð
 !ô)ð^ 
Ø!%ØØ#'Øñð ð	ð !ôð8 
Ø!%ØØ#'Øñ4ð ð4ð
 !ô4ót"÷JIr   