Ë
    f^(hÄç  ã                  ó
  — d dl mZ 	 d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dlm
Z
mZ d dlmZmZmZ d dlZd dlmc mZ d dlmZmZmZmZmZmZmZmZ d dlmZ erd dlmZ  ej@                  e!«      Z"ej$                  jG                  e!d«      Z$g d	¢Z%d d
l&m'Z( d„ Z) G d„ d«      Z*i dejV                  “dejX                  “dejZ                  “dej\                  “dej\                  “dej^                  “dej`                  “dejb                  “dejd                  “dejf                  “dejh                  “dejj                  “dd„ “dejl                  “dejn                  “dejp                  “dejr                  “i d ejt                  “d!ejv                  “d"ejx                  “d#ejz                  “d$ejz                  “d%ej|                  “d&ej|                  “d'ej~                  “d(ej€                  “d)ej‚                  “d*e“d+e“d,e“d-e“d.e“d/ej„                  “d0ej„                  “¥ZCh d1£ZDd2„ ZEd3ZFeFD ]J  ZGd4eG› �ZHd5eH› �ZI eJe*eH eEeG«      «        eKeeI«      eCeH<   eDj[                  eH«       e%j™                  eH«       ŒL dhZMeDeMz  ZNh d6£ZOh d7£ZPdhZQeOeQz  ZRh d8£ZSdd#hZTdd#d9œZUh d:£ZVeFD ]  ZGd4eG› �ZHeVj[                  eH«       Œ h d;£ZWh d<£ZXd=„ ZYd>„ ZZd?„ Z[d@„ Z\dA„ Z]dB„ Z^dC„ Z_dD„ Z`dE„ ZadF„ ZbdG„ Zc	 dpdH„ZddI„ ZedJ„ Zfedej‚                  ejt                  e\e]e^e_eee`efeYeZe[eaebdKœZgdL„ ZhdM„ ZidN„ ZjdO„ ZkdP„ ZldQ„ ZmdR„ ZndS„ ZodT„ ZpdU„ ZqdV„ ZrdW„ ZsdX„ Zte	jê                  e!   ZvdY„ ZweFD ]'  ZGdZeG› �Zx eweG«      Zyexxey_z        ey_!         eJevexey«       Œ) [y[G[xd[„ Z{dqd\„Z|d]„ Z}d^„ Z~i eg¥i d.ejþ                  “dejV                  “del“d!em“den“deo“dep“deq“dei“dej“d*e}“dek“d"ejx                  “d-er“d,es“d+et“de{“¥e|e~d_œ¥Z€eFD ]  ZGd4eG› �ZH eKevdZeG› �«      e€eH<   Œ [G[H[F[vd`„ Z�da„ Z‚db„ Zƒdc„ Z„dd„ Z…de„ Z†df„ Z‡dg„ Zˆe�eƒe„e†e‡eˆdhœZ‰e�j                  e�j                  diœZŒdj„ Z�dk„ ZŽdl„ Z�dm„ Z�dn„ Z‘e€�j%                  «       D ]  \  Z“Z” e�e“e”«       Œ e‰�j%                  «       D ]  \  Z“Z” e‘e“e”«       Œ do„ Z•e€�j%                  «       D ]I  \  Z“Z”e“eOv r
 e•e“e«       Œe“eSv r
 e•e“e«       Œ"e“eQv se“ePv r	 e•e“e«        e•e“e«       e“eUvsŒA e•e“e«       ŒK [“[”y)ré    )ÚannotationsN)Ú	lru_cacheÚupdate_wrapper)ÚOptionalÚTYPE_CHECKINGÚUnion)Ú	sym_floatÚsym_iteÚsym_maxÚsym_minÚsym_notÚSymBoolÚSymFloatÚSymInt)Údtrace_structured)ÚShapeEnvÚsym_node)ÚSymNodeÚmethod_to_operatorÚmagic_methods)Úpy_sym_typesc                óZ   — | t         u rt        S | t        u rt        S | t        u rt
        S | S ©N)Úboolr   Úintr   Úfloatr   )Úts    ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/fx/experimental/sym_node.pyÚ_to_symtyper   :   s+   € ØŒD�yÜˆØŒC�xÜˆØŒE�zÜˆØ€Hó    c                  ó’  — e Zd ZU dZdZded<   	 	 	 dY	 dZd„Zd[d„Zd\d„Zd]d	„Z	e
d
„ «       Ze
d„ «       Zd„ Zd^d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd_d„Zd`d„Zd`d„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&„Z'd`d'„Z(d`d(„Z)d`d)„Z*d`d*„Z+d`d+„Z,d`d,„Z-d`d-„Z.d`d.„Z/d`d/„Z0d`d0„Z1d`d1„Z2d`d2„Z3d`d3„Z4d`d4„Z5d`d5„Z6d`d6„Z7d`d7„Z8d`d8„Z9d`d9„Z:d`d:„Z;d`d;„Z<d`d<„Z=d`d=„Z>d`d>„Z?d`d?„Z@d`d@„ZAd`dA„ZBd`dB„ZCd`dC„ZDdD„ ZEdE„ ZFdF„ ZGdG„ ZHdH„ ZId`dI„ZJdJ„ ZKdK„ ZLdL„ ZMd`dM„ZNdadN„ZOdO„ ZPdP„ ZQdQ„ ZRdR„ ZSdS„ ZTdT„ ZUdU„ ZVdV„ ZWdW„ ZXdX„ ZYy)br   z¤
    This is a type erased SymInt/SymFloat which we use to do actual operations.
    End users don't touch this.  Magic methods are NOT defined on this object.
    Fr   Ú_optimized_summationNc                óÖ  ‡ — |‰ _         |‰ _        |‰ _        |‰ _        ˆ fd„}|��t	        |«      |u s,t	        |«      t        |«      u sJ d|› dt	        |«      › �«       ‚‰ j                  rC‰ j                  j                  r- |«       }	||	k(  s!J |› d|	› d‰ j                  › d�«       ‚ |«       }|‰ _        |‰ _	        ‰ j                  xr ‰ j                  j                  }
|
xr |‰ _
        y )Nc                 óÒ   •— ddl m}   | ‰j                  «      ry ‰j                  j	                  ‰j                  d¬«      }|�#t        |t        «      s‰j                  |«      n|}|S )Nr   )Úhas_free_unbacked_symbolsT)Úcompute_hint)Ú%torch.fx.experimental.symbolic_shapesr%   ÚexprÚ	shape_envÚ_maybe_evaluate_staticÚ
isinstanceÚSymTypesÚpytype)r%   ÚhintÚselfs     €r   r&   z&SymNode.__init__.<locals>.compute_hint€   sZ   ø€ ÝWñ )¨¯©Ô3ØØ—>‘>×8Ñ8¸¿¹ÐQUÐ8ÓVˆDØÐÜ0:¸4ÄÔ0J�t—{‘{ 4Ô(ÐPT�ØˆKr    zCannot create SymNode of type z  with incompatible hint of type z != z (for ú))Ú_exprr)   r-   r"   Útyper   Ú_translation_validation_enabledr(   Ú_hintÚconstantÚfx_node)r/   r(   r)   r-   r.   r5   r6   Úoptimized_summationr&   Úcomputed_hintÚtx_validation_ens   `          r   Ú__init__zSymNode.__init__V   s  ø€ ð ˆŒ
Ø"ˆŒØˆŒØ$7ˆÔ!ô:	ð ÐÜ˜“: Ñ'¬4°«:¼ÀVÓ9LÑ+Lð Ø0Ø�(Ð:¼4À»:¸,ðHóÐLð �~Š~ $§.¡.×"PÒ"Pñ !-£�à˜MÒ)ðBà�V˜4 ˜¨f°T·Y±Y°K¸qÐAóBØ)ñ  “>ˆDØˆŒ
Ø;CˆŒð �N‰NÒM˜tŸ~™~×MÑMð 	ð (Ò3¨Gˆ�r    c                ó†   — t        | j                  || j                  | j                  | j                  | j
                  «      S r   )r   r1   r-   r4   r5   r6   )r/   r)   s     r   Úwith_shape_envzSymNode.with_shape_env¨   s0   € ÜØ�J‰J˜	 4§;¡;°·
±
¸D¿M¹MÈ4Ï<É<ó
ð 	
r    c                ó  — | j                   |j                   k(  xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )r1   r-   r4   r5   r6   ©r/   Úothers     r   Ú	_value_eqzSymNode._value_eq­   sq   € ð �J‰J˜%Ÿ+™+Ñ%ò .Ø—‘˜uŸ|™|Ñ+ò.à—
‘
˜eŸk™kÑ)ò.ð —‘ §¡Ñ/ò.ð —‘ §¡Ñ-ð	
r    c                ó†   — t        | j                  | j                  | j                  | j                  | j
                  f«      S r   )Úhashr1   r-   r4   r5   r6   ©r/   s    r   Ú_value_hashzSymNode._value_hash·   s,   € ä�T—Z‘Z §¡¨d¯j©j¸$¿-¹-ÈÏÉÐVÓWÐWr    c                óL   — | j                   j                  | j                  «      S r   )r)   Úreplacer1   rC   s    r   r(   zSymNode.expr»   s   € à�~‰~×%Ñ% d§j¡jÓ1Ð1r    c                ó   — | j                   S r   ©r4   rC   s    r   r.   zSymNode.hint¿   s   € à�z‰zÐr    c                ó   — | j                   d uS r   rH   rC   s    r   Úhas_hintzSymNode.has_hintÃ   s   € Ø�z‰z Ð%Ð%r    c                ór  — ddl m} | j                  €•|�n || j                  «      }| j                  j                  D �ci c]"  }|||v rdn| j
                  j                  |   “Œ$ }}| j                  j                  |«      S | j
                  j                  | j                  «      S | j                  S c c}w )Nr   ©Úfree_unbacked_symbolsi   )	r'   rM   r4   r(   Úfree_symbolsr)   Ú
var_to_valÚxreplaceÚ	size_hint)r/   ÚfallbackrM   Úunbacked_symbolsÚsÚreplacementss         r   Úrequire_hintzSymNode.require_hintÆ   s­   € ÝOà�:‰:ÐØÐ#ñ $9¸¿¹Ó#CÐ ð "ŸY™Y×3Ñ3ö àð ˜qÐ$4Ñ4‘t¸$¿.¹.×:SÑ:SÐTUÑ:VÑVð �ð  ð —y‘y×)Ñ)¨,Ó7Ð7à—>‘>×+Ñ+¨D¯I©IÓ6Ð6Ø�z‰zÐùò s   ¿'B4c                óZ   — | j                   j                  rt        | j                   «      S y r   )r(   Ú	is_numberr   rC   s    r   Úmaybe_as_intzSymNode.maybe_as_intÞ   s    € Ø�9‰9×ÒÜ�t—y‘y“>Ð!àr    c                óv   — dd l }t        | j                  |j                  «      rt	        | j                  «      S y ©Nr   )Úsympyr+   r(   ÚFloatr   ©r/   r\   s     r   Úmaybe_as_floatzSymNode.maybe_as_floatå   s)   € Ûä�d—i‘i §¡Ô-Ü˜Ÿ™Ó#Ð#àr    c                óp   — dd l }| j                  |j                  u ry| j                  |j                  u ryy )Nr   TF)r\   r(   ÚtrueÚfalser^   s     r   Úmaybe_as_boolzSymNode.maybe_as_boolí   s.   € Ûà�9‰9˜Ÿ
™
Ñ"ØØ�Y‰Y˜%Ÿ+™+Ñ%Øàr    c                ó&   — | j                   t        u S r   )r-   r   rC   s    r   Úis_intzSymNode.is_int÷   s   € Ø�{‰{œcÐ!Ð!r    c                ó&   — | j                   t        u S r   )r-   r   rC   s    r   Úis_floatzSymNode.is_floatú   s   € Ø�{‰{œeÐ#Ð#r    c                ó&   — | j                   t        u S r   )r-   r   rC   s    r   Úis_boolzSymNode.is_boolý   s   € Ø�{‰{œdÐ"Ð"r    c                ó¢   — | j                   d uxr@ t        | j                   t        «      xr$ | j                   j                  j	                  «       S r   )r4   r+   r   ÚnodeÚis_nested_intrC   s    r   rl   zSymNode.is_nested_int   sA   € ð �J‰J˜dÐ"ò 0Ü˜4Ÿ:™:¤vÓ.ò0à—
‘
—‘×-Ñ-Ó/ð	
r    c                óŒ   — t        |«      t        u sJ ‚dd l}t        |j	                  |«      | j
                  t        |||¬«      S ©Nr   )r5   r6   )r2   r   r\   r   ÚIntegerr)   ©r/   Únumr\   s      r   Úwrap_intzSymNode.wrap_int  s?   € Ü�C‹yœCÑÐÐÛäØ�M‰M˜#Ó §¡´°SÀ3ÐPSô
ð 	
r    c                óŒ   — t        |«      t        u sJ ‚dd l}t        |j	                  |«      | j
                  t        |||¬«      S rn   )r2   r   r\   r   r]   r)   rp   s      r   Ú
wrap_floatzSymNode.wrap_float  s?   € Ü�C‹yœEÑ!Ð!Ð!ÛäØ�K‰K˜Ó˜dŸn™n¬e°SÀ3ÐPSô
ð 	
r    c                óž   — t        |«      t        u sJ ‚dd l}t        |r|j                  n|j
                  | j                  t        |||¬«      S rn   )r2   r   r\   r   ra   rb   r)   rp   s      r   Ú	wrap_boolzSymNode.wrap_bool  sF   € Ü�C‹yœDÑ Ð Ð ÛäÙˆE�JŠJ 5§;¡;Ø�N‰NÜØØØô
ð 	
r    c                ó   — | S r   © rC   s    r   ÚclonezSymNode.clone%  s   € Øˆr    c                ó   — | j                   › S r   )r(   rC   s    r   ÚstrzSymNode.str(  s   € Ø—)‘)�Ðr    c                ó"   — | j                  «       S r   ©r{   rC   s    r   Ú__str__zSymNode.__str__+  s   € Ø�x‰x‹zÐr    c                óz  — d| j                   › d| j                  › d| j                  › �g}| j                  �|j	                  d| j                  › �«       | j
                  �|j	                  d| j
                  › �«       | j                  �|j	                  d| j                  › �«       dj                  |«      dz   S )	NzSymNode(z, shape_env=z	, pytype=zhint=z	constant=zfx_node=z, r0   )r1   r)   r-   r4   Úappendr5   r6   Újoin)r/   Úreps     r   Ú__repr__zSymNode.__repr__.  s¤   € à�t—z‘z�l ,¨t¯~©~Ð.>¸iÈÏÉÀ}ÐUð
ˆð �:‰:Ð!Ø�J‰J˜˜tŸz™z˜lÐ+Ô,Ø�=‰=Ð$Ø�J‰J˜ 4§=¡= /Ð2Ô3Ø�<‰<Ð#Ø�J‰J˜ $§,¡, Ð0Ô1Ø�y‰y˜‹~ Ñ#Ð#r    c                ó"   — | j                  «       S r   r}   rC   s    r   Ú_graph_reprzSymNode._graph_repr:  s   € à�x‰x‹zÐr    c                ó"   — | j                  «       S r   )Ú_absrC   s    r   ÚabszSymNode.abs@  ó   € Ø�y‰y‹{Ðr    c                ó"   — | j                  «       S r   )Ú_posrC   s    r   ÚposzSymNode.posC  r‰   r    c                ó$   — | j                  |«      S r   )Ú_round)r/   Úndigitss     r   ÚroundzSymNode.roundF  s   € Ø�{‰{˜7Ó#Ð#r    c                ó"   — | j                  «       S r   )Ú_truncrC   s    r   ÚtrunczSymNode.truncI  ó   € Ø�{‰{‹}Ðr    c                ó$   — | j                  |«      S r   )Ú_addr>   s     r   ÚaddzSymNode.addL  ó   € Ø�y‰y˜ÓÐr    c                ó$   — | j                  |«      S r   )Ú_subr>   s     r   ÚsubzSymNode.subO  r˜   r    c                ó$   — | j                  |«      S r   )Ú_mulr>   s     r   ÚmulzSymNode.mulR  r˜   r    c                ó$   — | j                  |«      S r   )Ú_modr>   s     r   ÚmodzSymNode.modU  r˜   r    c                ó$   — | j                  |«      S r   )Ú
_float_powr>   s     r   Ú	float_powzSymNode.float_powX  s   € Ø�‰˜uÓ%Ð%r    c                ó$   — | j                  |«      S r   )Ú_pow_by_naturalr>   s     r   Úpow_by_naturalzSymNode.pow_by_natural[  s   € Ø×#Ñ# EÓ*Ð*r    c                ó$   — | j                  |«      S r   )Ú_and_r>   s     r   Úand_zSymNode.and_^  s   € Ø�z‰z˜%Ó Ð r    c                ó$   — | j                  |«      S r   )Ú_or_r>   s     r   Úor_zSymNode.or_a  r˜   r    c                ó$   — | j                  |«      S r   )Ú_float_truedivr>   s     r   Úfloat_truedivzSymNode.float_truedivd  s   € Ø×"Ñ" 5Ó)Ð)r    c                ó$   — | j                  |«      S r   )Ú_int_truedivr>   s     r   Úint_truedivzSymNode.int_truedivg  ó   € Ø× Ñ  Ó'Ð'r    c                ó$   — | j                  |«      S r   )Ú_int_floordivr>   s     r   Úint_floordivzSymNode.int_floordivj  ó   € Ø×!Ñ! %Ó(Ð(r    c                ó$   — | j                  |«      S r   )Ú_lshiftr>   s     r   ÚlshiftzSymNode.lshiftm  ó   € Ø�|‰|˜EÓ"Ð"r    c                ó$   — | j                  |«      S r   )Ú_rshiftr>   s     r   ÚrshiftzSymNode.rshiftp  r¼   r    c                ó"   — | j                  «       S r   )Ú_sym_notrC   s    r   r   zSymNode.sym_nots  ó   € Ø�}‰}‹Ðr    c                ó$   — | j                  |«      S r   )Ú_eqr>   s     r   Úeqz
SymNode.eqv  ó   € Ø�x‰x˜‹Ðr    c                ó$   — | j                  |«      S r   )Ú_ner>   s     r   Únez
SymNode.ney  rÆ   r    c                ó$   — | j                  |«      S r   )Ú_gtr>   s     r   Úgtz
SymNode.gt|  rÆ   r    c                ó$   — | j                  |«      S r   )Ú_ltr>   s     r   Últz
SymNode.lt  rÆ   r    c                ó$   — | j                  |«      S r   )Ú_ler>   s     r   Úlez
SymNode.le‚  rÆ   r    c                ó$   — | j                  |«      S r   )Ú_ger>   s     r   Úgez
SymNode.ge…  rÆ   r    c                ó"   — | j                  «       S r   )Ú_floorrC   s    r   ÚfloorzSymNode.floorˆ  r”   r    c                ó"   — | j                  «       S r   )Ú_is_integerrC   s    r   Ú
is_integerzSymNode.is_integer‹  s   € Ø×ÑÓ!Ð!r    c                ó"   — | j                  «       S r   )Ú
_sym_floatrC   s    r   r	   zSymNode.sym_floatŽ  s   € Ø�‰Ó Ð r    c                ó"   — | j                  «       S r   )Ú_sym_intrC   s    r   Úsym_intzSymNode.sym_int‘  rÂ   r    c                ó"   — | j                  «       S r   )Ú_ceilrC   s    r   ÚceilzSymNode.ceil”  s   € Ø�z‰z‹|Ðr    c                ó"   — | j                  «       S r   )Ú_negrC   s    r   ÚnegzSymNode.neg—  r‰   r    c                ó$   — | j                  |«      S r   )Ú_sym_minr>   s     r   r   zSymNode.sym_minš  ó   € Ø�}‰}˜UÓ#Ð#r    c                ó$   — | j                  |«      S r   )Ú_sym_maxr>   s     r   r   zSymNode.sym_max�  ré   r    c                ó&   — | j                  ||«      S r   )Ú_sym_ite)r/   Úthen_valÚelse_vals      r   r
   zSymNode.sym_ite   s   € Ø�}‰}˜X xÓ0Ð0r    c                ó&   — | j                  ||«      S r   )Ú_is_contiguous©r/   ÚsizesÚstridess      r   Úis_contiguouszSymNode.is_contiguous£  s   € Ø×"Ñ" 5¨'Ó2Ð2r    c                ó&   — | j                  ||«      S r   )Ú_is_channels_last_contiguous_2drò   s      r   Úis_channels_last_contiguous_2dz&SymNode.is_channels_last_contiguous_2d¦  ó   € Ø×3Ñ3°E¸7ÓCÐCr    c                ó&   — | j                  ||«      S r   )Ú_is_channels_last_contiguous_3drò   s      r   Úis_channels_last_contiguous_3dz&SymNode.is_channels_last_contiguous_3d©  rù   r    c                ó&   — | j                  ||«      S r   )Ú_is_channels_last_strides_2drò   s      r   Úis_channels_last_strides_2dz#SymNode.is_channels_last_strides_2d¬  ó   € Ø×0Ñ0°¸Ó@Ð@r    c                ó&   — | j                  ||«      S r   )Ú_is_channels_last_strides_3drò   s      r   Úis_channels_last_strides_3dz#SymNode.is_channels_last_strides_3d¯  r   r    c                ó&   — | j                  ||«      S r   )Ú'_is_non_overlapping_and_dense_indicatorrò   s      r   Ú&is_non_overlapping_and_dense_indicatorz.SymNode.is_non_overlapping_and_dense_indicator²  s   € Ø×;Ñ;¸EÀ7ÓKÐKr    c                ó$   — | j                  |«      S r   )r­   r>   s     r   Úsym_orzSymNode.sym_or¶  rÆ   r    c                ó$   — | j                  |«      S r   )rª   r>   s     r   Úsym_andzSymNode.sym_and¹  r˜   r    c                ó$   — | j                  |«      S r   )Ú_bitwise_andr>   s     r   Úbitwise_andzSymNode.bitwise_and½  r´   r    c                ó$   — | j                  |«      S r   )Ú_bitwise_orr>   s     r   Ú
bitwise_orzSymNode.bitwise_orÀ  s   € Ø×Ñ Ó&Ð&r    c                ó$   — | j                  |«      S r   )r°   r>   s     r   ÚtruedivzSymNode.truedivÄ  r¸   r    c                ó$   — | j                  |«      S r   )r·   r>   s     r   ÚfloordivzSymNode.floordivÇ  r´   r    c                ó$   — | j                  |«      S r   )r¤   r>   s     r   ÚpowzSymNode.powË  s   € Ø�~‰~˜eÓ$Ð$r    c                óX   — | j                  ||«      j                  t        | d«      «      S )Né   )r  rÅ   Úto_noderò   s      r   Úis_non_overlapping_and_densez$SymNode.is_non_overlapping_and_denseÎ  s)   € Ø×:Ñ:¸5À'ÓJ×MÑMÌgÐVZÐ\]ÓN^Ó_Ð_r    c                ó&   — | j                  dd«      S ©NÚ r   )Ú	guard_intrC   s    r   Úint_zSymNode.int_Ñ  s   € Ø�~‰~˜b !Ó$Ð$r    c           
     ó  — dd l }ddlm}m}  |«       r3t	        |  |t
        j                  t        d„ |D «       «      fi «      «      S |D �cg c]  }|j                  ‘Œ }} |j                  |Ž }g }d }	|D ]+  }|j                  € n(|j                  |j                  «       Œ- t        |«      }	| j                  j                  t
        j                  t        d„ |D «       «      f«      \  }
}t        || j                  t         |	|
¬«      S c c}w )Nr   ©Úget_proxy_modeÚhandle_sym_dispatchc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr   )Ú	wrap_node©Ú.0Úas     r   ú	<genexpr>z"SymNode.sym_sum.<locals>.<genexpr>æ  s   è ø€ Ò6¨Aœ9 QŸ<Ñ6ùs   ‚c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr   ©r6   r&  s     r   r)  z"SymNode.sym_sum.<locals>.<genexpr>÷  s   è ø€ Ò!:° !§)¥)Ñ!:ùs   ‚r+  )r\   Ú"torch.fx.experimental.proxy_tensorr"  r#  r  ÚtorchÚsym_sumÚtupler(   ÚAddr.   r€   Úsumr)   Ú_create_fx_call_functionr   r   )r/   Úargsr\   r"  r#  r(  ÚexprsÚoutÚ
size_hintsÚout_hintr6   Ú_s               r   r.  zSymNode.sym_sumØ  sý   € Û÷	
ñ
 ÔÜØÙ#Ü—M‘MÜÑ6°Ô6Ó6Ð8Øóóð ð "&Ö&˜A�—“Ð&ˆÐ&Øˆe�i‰i˜Ðˆàˆ
ØˆØò 	'ˆAØ�v‰vˆ~ÙØ×Ñ˜aŸf™fÕ%ð	'ô
 ˜:“ˆHà—^‘^×<Ñ<Ü�M‰MœEÑ!:°TÔ!:Ó:Ð<ó
‰
ˆ�ô
 �s˜DŸN™N¬C°À7ÔKÐKùò# 's   ÁD
c                ó:   — | j                   j                  | |«      S r   )r)   Úevaluate_sym_node)r/   Úsize_obliviouss     r   ÚevaluatezSymNode.evaluateý  s   € Ø�~‰~×/Ñ/°°nÓEÐEr    c                ó‚   — | j                  «       }	 t        |«      S # t        $ r t        j	                  d|«       ‚ w xY w)NzFailed to convert to int: %s)r<  r   Ú	ExceptionÚlogÚwarning©r/   ÚfileÚlineÚrs       r   r  zSymNode.guard_int  s>   € ð �M‰M‹Oˆð	Ü�q“6ˆMøÜò 	Ü�K‰KÐ6¸Ô:Øð	úó   ’
 �!>c                ó‚   — | j                  «       }	 t        |«      S # t        $ r t        j	                  d|«       ‚ w xY w)NzFailed to convert to float: %s)r<  r   r>  r?  r@  rA  s       r   Úguard_floatzSymNode.guard_float  s>   € ð �M‰M‹Oˆð	Ü˜“8ˆOøÜò 	Ü�K‰KÐ8¸!Ô<Øð	úrE  c                ó‚   — | j                  «       }	 t        |«      S # t        $ r t        j	                  d|«       ‚ w xY w)NúFailed to convert to bool: %s©r<  r   r>  r?  r@  rA  s       r   Ú
guard_boolzSymNode.guard_bool  s>   € ð �M‰M‹Oˆð	Ü˜“7ˆNøÜò 	Ü�K‰KÐ7¸Ô;Øð	úrE  c                ó  — ddl m} | j                  «       r: || j                  «      s(| j                  j
                  s| j                  ||«      S | j                  j                  | j                  |› d|› �| j                  ¬«      S )Nr   rL   ú:r+  )	r'   rM   rJ   r(   r)   Ú+prefer_deferred_runtime_asserts_over_guardsrK  Údefer_runtime_assertr6   )r/   rB  rC  rM   s       r   Úexpect_truezSymNode.expect_true  st   € ÝOð �M‰MŒOÙ)¨$¯)©)Ô4Ø—N‘N×NÒNð —?‘? 4¨Ó.Ð.ð
 �~‰~×2Ñ2Ø�I‰I˜$˜˜q  Ð'°·±ð 3ó 
ð 	
r    c                ó¼   — ddl m} | j                  | j                  d«      «      }|j	                  ||«      }|r!| j                  «       s |t        | «      «       |S )Nr   )Ú_advise_is_size)r'   rR  rÕ   rr   rP  rJ   r   )r/   rB  rC  rR  ÚbrD  s         r   Úexpect_sizezSymNode.expect_size1  sJ   € ÝIà�G‰G�D—M‘M !Ó$Ó%ˆà�M‰M˜$ Ó%ˆñ
 �T—]‘]”_ÙœF 4›LÔ)Øˆr    c                ó†   — | j                  d¬«      }	 t        |«      S # t        $ r t        j	                  d|«       ‚ w xY w)aN  
        Like guard_bool, but if we encounter unbacked symbols, if those symbols
        are size-like, we will treat them as >= 2 for the purposes of the analysis.

        This CHANGES the runtime semantics, but all size-oblivious sites have been
        audited to ensure that the runtime semantics don't change in a material way.
        Acceptable runtime semantic changes are, e.g., squeeze() no longer dropping
        an unbacked one size, or a tensor reporting as non-contiguous even if it's
        contiguous if it would have been reported contiguous due to being empty.
        T)r;  rI  rJ  rA  s       r   Úguard_size_obliviouszSymNode.guard_size_oblivious?  sC   € ð �M‰M¨ˆMÓ.ˆð	Ü˜“7ˆNøÜò 	Ü�K‰KÐ7¸Ô;Øð	ús	   ”
 Ÿ!A c                ó&   — | j                  dd«      S r  )rK  rC   s    r   Úbool_zSymNode.bool_S  s   € Ø�‰˜r 1Ó%Ð%r    c                 ó   — y)NTrx   rC   s    r   Úis_symboliczSymNode.is_symbolicV  ó   € Ør    c                 ó   — y r   rx   rC   s    r   Ú
nested_intzSymNode.nested_intY  r[  r    c                 ó   — y)NFrx   rC   s    r   Úis_constantzSymNode.is_constant\  s   € Ør    )NNF)r.   z!Optional[Union[int, float, bool]])r)   r   Úreturnr   )r?   r   r`  r   )r`  r   r   )r`  zbuiltins.str)r`  r   )F)ZÚ__name__Ú
__module__Ú__qualname__Ú__doc__r"   Ú__annotations__r:   r<   r@   rD   Úpropertyr(   r.   rJ   rV   rY   r_   rc   re   rg   ri   rl   rr   rt   rv   ry   r{   r~   rƒ   r…   rˆ   rŒ   r�   r“   r—   r›   rž   r¡   r¤   r§   rª   r­   r°   r³   r·   r»   r¿   r   rÅ   rÉ   rÌ   rÏ   rÒ   rÕ   rØ   rÛ   r	   rà   rã   ræ   r   r   r
   rõ   rø   rü   rÿ   r  r  r  r
  r  r  r  r  r  r  r  r.  r<  r  rG  rK  rP  rT  rV  rX  rZ  r]  r_  rx   r    r   r   r   G   só  … ñð "'Ð˜$Ó&ð ØØ!ðP4ð
 0óP4ód
ó

óXð ñ2ó ð2ð ñó ðò&óò0òòò"ò$ò#ò
ò
ò
ò
òòòò
$óóóô$óó ó ó ó ó&ó+ó!ó ó*ó(ó)ó#ó#óóóóóóóóó"ó!óóóó$ó$ó1ó3óDóDóAóAóLòò ò(ò'ò)ó(ò%ò`ò%ó#LóJFòòòò
ò$òò(&òòór    r   rŒ   rˆ   r—   Úandr  rã   rÅ   rØ   r“   r·   rÕ   rÌ   rÛ   c                ó"   — | j                  «       S r   )rÛ   ©Úxs    r   ú<lambda>rk  n  s   € ˜AŸL™L›N€ r    rÒ   r»   rÏ   r¡   rž   rÉ   ræ   Úorr  r¤   r§   r�   r¿   r›   r	   r
   r   r   r   r°   r³   >	   rˆ   ræ   rŒ   rã   rØ   r“   rà   r   r	   c                ó   ‡ — ˆ fd„}|S )Nc                ó,   •—  t        | d‰› �«      «       S )NÚ_sym_)Úgetattr)r/   Únames    €r   Úfnz_get_sym_node_fn.<locals>.fn•  s   ø€ Ø,Œw�t˜u T F˜^Ó,Ó.Ð.r    rx   ©rq  rr  s   ` r   Ú_get_sym_node_fnrt  ”  s   ø€ ô/ð €Ir    )ÚsqrtÚcosÚcoshÚsinÚsinhÚtanÚtanhÚasinÚacosÚatanÚlog2Úsym_r8  >   rl  rg  r
   r   >   r—   rž   r›   >   r�   rà   Úsym_log2rÛ   )r  r  >   r¤   r	   r³   r°   >   rã   rØ   r“   r§   >   rÅ   rÕ   rÌ   rÒ   rÏ   rÉ   rl  rg  r   rÛ   r  c                ó    — ddl m}  || |«      S )Nr   )ÚFloatTrueDiv)Útorch.utils._sympy.functionsrƒ  )r(  rS  rƒ  s      r   Ú_sympy_float_truedivr…  æ  ó   € Ý9á˜˜1ÓÐr    c                ó    — ddl m}  || |«      S )Nr   )Ú
IntTrueDiv)r„  rˆ  )r(  rS  rˆ  s      r   Ú_sympy_int_truedivr‰  ì  s   € Ý7á�a˜ÓÐr    c                ó    — ddl m}  || |«      S )Nr   )ÚFloorDiv)r„  r‹  )r(  rS  r‹  s      r   Ú_sympy_floordivrŒ  ò  ó   € Ý5á�A�q‹>Ðr    c                óf   — ddl m}m} | j                  r|j                  r	 || |«      S  || |«      S )Nr   ©ÚModÚ	PythonMod)r„  r�  r‘  Úis_nonnegative)r(  rS  r�  r‘  s       r   Ú
_sympy_modr“  ø  s.   € ß;à×Ò˜A×,Ò,Ù�1�a‹yÐá˜˜A‹Ðr    c                ó    — ddl m}  || |«      S )Nr   )ÚPowByNatural)r„  r•  )r(  rS  r•  s      r   Ú_sympy_pow_by_naturalr–    r†  r    c                ó    — ddl m}  || |«      S )Nr   )ÚFloatPow)r„  r˜  )r(  rS  r˜  s      r   Ú_sympy_float_powr™    r�  r    c                ó.   — dd l }|j                  | |«      S r[   )r\   ÚAnd©r(  rS  r\   s      r   Ú
_sympy_andr�    s   € Ûà�9‰9�Q˜‹?Ðr    c                ó.   — dd l }|j                  | |«      S r[   )r\   ÚOrrœ  s      r   Ú	_sympy_orr     ó   € Ûà�8‰8�A�q‹>Ðr    c                ó    — ddl m}  || |«      S )Nr   )ÚLShift)r„  r£  )r(  rS  r£  s      r   Ú_sympy_lshiftr¤    ó   € Ý3á�!�Q‹<Ðr    c                ó    — ddl m}  || |«      S )Nr   )ÚRShift)r„  r§  )r(  rS  r§  s      r   Ú_sympy_rshiftr¨    r¥  r    c                ó`  — t        | «      dk(  r|gS ddlm}m}  || d   «       ||«      k  r| |gz   S  || d   «       ||«      kD  r|g| z   S dt        | «      dz
  }}||k  r9||z   dz  }|j	                  | |   |«      }|dk(  ry|dk  r|dz   }n|dz
  }||k  rŒ9| j                  ||«       | S )zs
    If new_arg is found in ordered_args None is returned, else the new
    ordered_args with new_arg inserted
    r   )Ú_args_sortkeyÚBasicéÿÿÿÿr  é   N)ÚlenÚsympy.core.basicrª  r«  ÚcompareÚinsert)Úordered_argsÚnew_argÚsort_keyr«  ÚlowÚhighÚmidÚcompare_results           r   Ú_binary_search_insert_argr¹  %  sê   € ô
 ˆ<Ó˜AÒØˆyÐçAñ �˜RÑ Ó!¡H¨WÓ$5Ò5Ø˜w˜iÑ'Ð'ñ �˜Q‘Ó ¡8¨GÓ#4Ò4Øˆy˜<Ñ'Ð'à”3�|Ó$ qÑ(ˆ€Cà
�Š+Ø�T‰z˜aÑˆØŸ™ |°CÑ'8¸'ÓBˆØ˜QÒØØ˜aÒØ˜‘'‰Cà˜‘7ˆDð �‹+ð ×Ñ˜˜WÔ%ØÐr    c                óž  ‡	— ddl Š	ddlm} ˆ	fd„}ddlm} | || «      z  }| ||«      z  }|r–|r” || j
                  d   «       ||j
                  d   «      k  r || j
                  |j
                  z   «      S  || j
                  d   «       ||j
                  d   «      kD  r ||j
                  | j
                  z   «      S |r5|j                  r)t        t        | j
                  «      |«      }|� ||«      S |r5| j                  r)t        t        |j
                  «      | «      }|� ||«      S ‰	j                  | |«      } ||«      |fS )a÷  
    Custom optimization for Add used to optimize incremental binary summations of certain properties. The idea
    is when we know the expression is a summation of unique symbols all we need to know is the correct order of symbols,
    and no other optimizations are needed. We pass evaluate=false, with the correct order of args and save the following.
    1. Avoid running other optimizations when the Add is constructed.
    2. Manually figure out the order of the args for the new expression in log(n) comparisons instead of nLog(n)
    (comparing terms is expensive and shows in the profiles).
    The function returns a tuple of (1) a boolean that indicates whether the output is a summation of unique symbols,
    (2) the result sympy expression.
    r   N)rª  c                ó0   •—  ‰j                   | ddiŽ}d|fS )Nr<  FT)r0  )r²  Úresultr\   s     €r   Úmake_optimizedz&_optimized_add.<locals>.make_optimizedW  s"   ø€ Ø�—‘˜LÐ9°5Ñ9ˆØ�fˆ~Ðr    )Ú_is_symbols_binary_summationr¬  )
r\   r¯  rª  r„  r¾  Ú_argsÚ	is_symbolr¹  Úlistr0  )
ÚlhsÚrhsÚlhs_is_optimized_summationÚrhs_is_optimized_summationÚsortkeyr½  r¾  Únew_argsr¼  r\   s
            @r   Ú_optimized_addrÈ  G  s2  ø€ ó Ý9ôõ JàÑ">¸sÓ"CÑCÐØÑ">¸sÓ"CÑCÐá!Ñ&@á�3—9‘9˜R‘=Ó!¡G¨C¯I©I°a©LÓ$9Ò9Ù! #§)¡)¨c¯i©iÑ"7Ó8Ð8á�3—9‘9˜Q‘<Ó ¡7¨3¯9©9°R©=Ó#9Ò9Ù! #§)¡)¨c¯i©iÑ"7Ó8Ð8ñ " c§m¢mÜ,¬T°#·)±)«_¸cÓBˆØÐÙ! (Ó+Ð+ñ " c§m¢mÜ,¬T°#·)±)«_¸cÓBˆØÐÙ! (Ó+Ð+à�Y‰Y�s˜CÓ €FÙ(¨Ó0°&Ð9Ð9r    c                ó    — ddl m}  || |«      S )Nr   )ÚBitwiseFn_bitwise_and)r„  rÊ  )r(  rS  rÊ  s      r   r  r  x  s   € ÝBá   AÓ&Ð&r    c                ó    — ddl m}  || |«      S )Nr   )ÚBitwiseFn_bitwise_or)r„  rÌ  )r(  rS  rÌ  s      r   r  r  ~  s   € ÝAá  1Ó%Ð%r    )r—   r›   rž   r¡   r§   r¤   rg  r  rl  r  r°   r³   r·   r»   r¿   c                ó´  — dd l }t        | |j                  «      rf| j                  }t	        |«      dk(  rLt        |d   |j
                  «      r3|d   j                  r$|j                  |d   «      }|d   |k(  r||d   z  S t        | |j
                  «      r| |j                  | «      k(  st        | |j                  «      r|j                  | «      S  || «      S )Nr   r­  r  )r\   r+   ÚMulr3  r®  r]   rÛ   ro   )r(  rr  r\   ÚaaÚcoefs        r   Ú_floor_ceil_helperrÑ  —  s´   € Ûä�!�U—Y‘YÔØ�V‰VˆÜˆr‹7�aŠ<œJ r¨!¡u¨e¯k©kÔ:¸rÀ!¹u×?OÒ?OØ—=‘=  A¡Ó'ˆDØ�!‰u˜Š}Ø˜b ™e‘|Ð#ä�1�e—k‘kÔ"Ø�—‘˜qÓ!Ò!Ü�a˜Ÿ™Ô'à�}‰}˜QÓÐÙˆa‹5€Lr    c                ó   — ddl m}  || «      S )Nr   )Ú
FloorToInt)r„  rÓ  )r(  rÓ  s     r   Ú_sympy_floorrÔ  ©  ó   € Ý7á�a‹=Ðr    c                ó   — ddl m}  || «      S )Nr   )Ú
TruncToInt)r„  r×  )r(  r×  s     r   Ú_sympy_truncrØ  ±  rÕ  r    c                ó   — ddl m}  || «      S )Nr   )Ú	CeilToInt)r„  rÚ  )r(  rÚ  s     r   Ú_sympy_ceilrÛ  ·  s   € Ý6á�Q‹<Ðr    c                ó.   — dd l }|j                  | |«      S r[   )r\   ÚEqrœ  s      r   Ú	_sympy_eqrÞ  ½  r¡  r    c                ó.   — dd l }|j                  | |«      S r[   )r\   ÚNerœ  s      r   Ú	_sympy_nerá  Ã  r¡  r    c                ó.   — dd l }|j                  | |«      S r[   )r\   ÚGtrœ  s      r   Ú	_sympy_gträ  É  r¡  r    c                ó.   — dd l }|j                  | |«      S r[   )r\   ÚLtrœ  s      r   Ú	_sympy_ltrç  Ï  r¡  r    c                ó.   — dd l }|j                  | |«      S r[   )r\   ÚLerœ  s      r   Ú	_sympy_lerê  Õ  r¡  r    c                ó.   — dd l }|j                  | |«      S r[   )r\   ÚGerœ  s      r   Ú	_sympy_gerí  Û  r¡  r    c                ó    — ddl m}  || |«      S )Nr   )ÚMin)r„  rï  )r(  rS  rï  s      r   Ú
_sympy_minrð  á  ó   € Ý0áˆq�!‹9Ðr    c                ó    — ddl m}  || |«      S )Nr   ©ÚMax)r„  rô  )r(  rS  rô  s      r   Ú
_sympy_maxrõ  ç  rñ  r    c                ó6   — dd l }|j                  || f|df«      S )Nr   T)r\   Ú	Piecewise)r(  r   Úfr\   s       r   Ú
_sympy_iterù  í  s   € Ûà�?‰?˜A˜q˜6 A t 9Ó-Ð-r    c                ó   ‡ — ˆ fd„}|S )Nc                ór   •— dd l } t        |j                  j                  j                  d‰› �«      | «      S )Nr   ÚOpaqueUnaryFn_)r„  rp  ÚutilsÚ_sympyÚ	functions)r(  r-  rq  s     €r   rr  z_get_sym_math_fn.<locals>.fn÷  s1   ø€ Û+àMŒw�u—{‘{×)Ñ)×3Ñ3°~ÀdÀVÐ5LÓMÈaÓPÐPr    rx   rs  s   ` r   Ú_get_sym_math_fnr   ö  s   ø€ ôQð
 €Ir    Ú_sympy_c                ó,   — dd l }|j                  | «      S r[   )r\   ÚAbs)r(  r\   s     r   Ú
_sympy_absr    s   € Ûà�9‰9�Q‹<Ðr    c                ó8   — ddl m}m} |€ || «      S  || |«      S )Nr   )ÚRoundDecimalÚ
RoundToInt)r„  r  r  )Únumberr�   r  r  s       r   Ú_sympy_roundr	    s"   € ßEà€Ù˜&Ó!Ð!á˜F GÓ,Ð,r    c                ó   — ddl m}  || «      S ©Nr   )ÚToFloat)r„  r  )r(  r  s     r   Ú_sympy_sym_floatr    s   € Ý4ñ �1‹:Ðr    c                ód   — dd l }ddlm} |j                   ||j	                  | «      «      | «      S r  )r\   r„  r  rÝ  rØ   )r(  r\   r  s      r   Ú_sympy_is_integerr    s&   € Ûå4à�8‰8‘G˜EŸK™K¨›NÓ+¨QÓ/Ð/r    )r�   rÛ   c                ó`   — t        | «      }t        | |t        t        |dz
  dd«      «      «      S )Nr  r¬  )r®  Úsympy_is_contiguous_genericrÁ  Úrange)ró   rô   Údims      r   Úsympy_is_contiguousr  F  s,   € Ü
ˆe‹*€CÜ& u¨g´t¼EÀ#ÈÁ'È2ÈrÓ<RÓ7SÓTÐTr    c                ó¶  — dd l }t        | «      }t        |«      |k7  r|j                  S |j                  }|j                  j
                  }|D ]L  }||j                  | |   |j                  j
                  «      |j                  ||   |«      z  z  }|| |   z  }ŒN t        |«      D ].  }||j                  | |   |j                  j                  «      z  }Œ0 |S r[   )	r\   r®  rb   ra   ÚSÚOnerÝ  r  ÚZero)ró   rô   Ú	dim_orderr\   r  rõ   ÚzÚds           r   r  r  K  sÈ   € Ûä
ˆe‹*€Cä
ˆ9ƒ~˜ÒØ�{‰{Ðà—J‘J€MØ�‰�‰€Aàò ˆØ˜Ÿ™ %¨¡(¨E¯G©G¯K©KÓ8¸5¿8¹8ÀGÈAÁJÐPQÓ;RÑRÑRˆØ	ˆU�1‰X‰‰ðô �3‹Zò :ˆØ˜Ÿ™ %¨¡(¨E¯G©G¯L©LÓ9Ñ9‰ð:àÐr    c                ó    — t        | |g d¢«      S ©N)r  é   r­  r   ©r  ©ró   rô   s     r   Ú$sympy_is_channels_last_contiguous_2dr!  c  s   € Ü& u¨g²|ÓDÐDr    c                ó    — t        | |g d¢«      S ©N)r  é   r  r­  r   r  r   s     r   Ú$sympy_is_channels_last_contiguous_3dr%  g  s   € Ü& u¨g²ÓGÐGr    c                ó†  — dd l }ddlm} t        | «      }|t        |«      k7  r|j                  S |j
                  j                  }|j                  }||j                  |d   d«      z  }|D ]R  }||j                  | |   d«      ||   |k\  z  z  }|dk(  r||j                  ||d   «      z  }||    || |   d«      z  }ŒT |S )Nr   ró  r  )	r\   r„  rô  r®  rb   r  r  ra   rà  )	ró   rô   r  r\   rô  r  ÚmrD  r  s	            r   Ú&sympy_is_channels_last_strides_genericr(  k  sÑ   € Ûå0ä
ˆe‹*€Cà
Œc�)‹nÒØ�{‰{Ðà�‰�‰€AØ�
‰
€Að ˆ�‰�'˜!‘*˜aÓ	 Ñ €Aàò *ˆØ	ˆU�X‰X�e˜A‘h Ó" g¨a¡j°A¡oÑ6Ñ6ˆð �Š6Ø�—‘˜!˜W Q™ZÓ(Ñ(ˆAð �A‰J™˜U 1™X qÓ)Ñ)‰ð'*ð* €Hr    c                ó    — t        | |g d¢«      S r  ©r(  r   s     r   Ú!sympy_is_channels_last_strides_2dr+  “  s   € Ü1°%¸Â,ÓOÐOr    c                ó    — t        | |g d¢«      S r#  r*  r   s     r   Ú!sympy_is_channels_last_strides_3dr-  —  s   € Ü1°%¸Â/ÓRÐRr    c                ó"   — ddl m}  |g | ¢|¢­Ž S )Nr   )Ú!IsNonOverlappingAndDenseIndicator)r„  r/  )ró   rô   r/  s      r   Ú-_sympy_is_non_overlapping_and_dense_indicatorr0  ›  s   € ÝNá,Ð>¨eÐ>°gÒ>Ð>r    )rõ   rø   rü   rÿ   r  r  )r   r   c                ó  — t        |t        «      r|j                  S t        |«      t        u r| j                  |«      S t        |«      t        u r| j                  |«      S t        |«      t        u r| j                  |«      S t        S r   )r+   r,   rk   r2   r   rv   r   rr   r   rt   ÚNotImplemented)r/   rq   s     r   r  r  ²  sn   € Ü�#”xÔ Ø�x‰xˆÜ	ˆc‹”dÑ	Ø�~‰~˜cÓ"Ð"Ü	ˆc‹”cÑ	Ø�}‰}˜SÓ!Ð!Ü	ˆc‹”eÑ	Ø�‰˜sÓ#Ð#ô Ðr    c                ó  — t        | t        «      r| j                  �| j                  S | j                  «       rt	        | «      S | j                  «       rt        | «      S | j                  «       rt        | «      S t        d| › �«      ‚)Nzunrecognized return type )
r+   r   r5   re   r   rg   r   ri   r   ÚAssertionErrorri  s    r   r%  r%  Á  sk   € ä�!”WÔ !§*¡*Ð"8Ø�z‰zÐØ‡x�x„zÜ�a‹yÐØ	
�‰ŒÜ˜‹{ÐØ	
�‰ŒÜ�q‹zÐäÐ8¸¸Ð<Ó=Ð=r    c                ó   — t         |    S r   )ÚMETHOD_TO_OPERATOR)Úmethods    r   r   r   Ï  s   € Ü˜fÑ%Ð%r    c                ól  ‡ ‡—  t        d«      ‰«      Š‰ t        v r‰ › d�}n‰ }dd„}ˆ fd„}|ˆˆ fd„«       }|ˆˆ fd„«       }‰ t        v rt        t        d|› �|«       y ‰ dk(  rˆˆ fd„}t        t        d|› �|«       y ‰ d	k(  rdˆˆ fd
„	}t        t        d|› �|«       y t        t        d|› �|«       y )Né   r8  c                 óL  — dd l } | j                  j                  | j                  j                  | j                  j
                  j                  | g}dd l} |D �ch c]  }t        j                  |«      ’Œ c}| j                  j                  j                  «       z  dhz  S c c}w )Nr   z<string>)r-  Ú_dynamoÚ
eval_framerý  ÚfxÚexperimentalr   Útorch._dynamo.guardsÚinspectÚgetfileÚguardsÚuninteresting_files)r-  Úmodsr'  s      r   rC  z-_make_node_magic.<locals>.uninteresting_filesÛ  s‰   € Ûð �M‰M×$Ñ$Ø�M‰M×ÑØ�H‰H×!Ñ!×*Ñ*Øð	
ˆó 	$ð *.Ö. AŒW�_‰_˜QÕÒ.Ø�m‰m×"Ñ"×6Ñ6Ó8ñ9àˆlñð	
ùÚ.s   ÁB!c                óH   •‡ — t        j                  ‰ «      dˆ ˆfd„	«       }|S )Nc                óÄ   •‡‡‡— |€	 ‰| «      Šn	 ‰| |«      Št         j                  j                  j                  r#|�| |gŠn| gŠdˆfd„Št	        dˆˆˆˆfd„¬«       ‰S )Nc                ó  •— dd l }| j                  �y t        | «      t        ‰«      k(  ry t        | j                  |j
                  |j                  f«      ry | j                  |j                  |j                  fv ry t        | «      S r[   )	r\   r5   Úidr+   r(   ro   r]   ra   rb   )r   r\   r¼  s     €r   Úget_idzM_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.get_idù  sl   ø€ ã à×(Ñ(Ð4Ø#Ü˜H›¬¨F«Ò3Ø#Ü# H§M¡M°E·M±MÀ5Ç;Á;Ð3OÔPØ#Ø!Ÿ™¨5¯:©:°u·{±{Ð*CÑCØ#Ü˜h›<Ð'r    Úexpression_createdc            
     ó  •— ‰t        ‰«      t        ‰«      ‰D � cg c]  } t        | «      ‘Œ c} ‰D �cg c]  } ‰|«      €Œ ‰|«      ‘Œ c}t        j                  d«      t        j                  d«      dœS c c} w c c}w )Nr  )r7  r¼  Ú	result_idÚ	argumentsÚargument_idsÚ
user_stackÚstack)r{   rH  Ú
structuredÚget_user_stackÚget_framework_stack)r(  ÚirM  rI  r7  r¼  s     €€€€r   rk  zO_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.<lambda>	  sv   ø€ Ø"(Ü"% f£+Ü%'¨£ZØ6?Ö%@°¤c¨!¥fÒ%@à/8ö)Ø*+¹FÀ1»IÑ<Q™F 1�Iò)ô '1×&?Ñ&?ÀÓ&BÜ!+×!?Ñ!?ÀÓ!Bñ
)€ ùò &Aùò)s   ›A8
³A=Á
A=)Úmetadata_fn)r`  zOptional[int])r-  Ú_loggingÚ	_internalÚGET_DTRACE_STRUCTUREDr   )r/   r?   rM  rI  r¼  rr  r7  s     @@@€€r   Úwrapperz=_make_node_magic.<locals>.capture_provenance.<locals>.wrapperí  sc   û€ àˆ}Ù˜D›‘á˜D %›�Ü�~‰~×'Ñ'×=Ò=ØÐ$Ø!% u ‘Ià!% �Iõ(ô "Ø(ö
!õð ˆMr    r   )Ú	functoolsÚwraps)rr  rY  r7  s   ` €r   Úcapture_provenancez,_make_node_magic.<locals>.capture_provenanceì  s&   ù€ Ü	�‰˜Ó	õ(	ó 
ð(	ðT ˆr    c           
     óD  •— ddl m}m} t        ‰«      }d }| j                  �)|j                  � || j                  |j                  «      }t
        j                  ‰«      }|r'|�%t        |  |t        | «      t        |«      «      «      S  |«       r(t        |  ||t        | «      t        |«      fi «      «      S t        |t        «      sJ ‚d}	 ‰dk(  rÌddlm}m}	 | j                  }
| j                  j                   s(|
j#                  | j                  «      j$                  dk\  r\|j                  j                   s(|
j#                  |j                  «      j$                  dk\  r || j                  |j                  «      }nw |	| j                  |j                  «      }nY‰dk(  r7 ‰| j                  |j                  | j&                  |j&                  «      \  }}n ‰| j                  |j                  «      }t.        j1                  d‰| j                  |j                  |«       ‰t2        v rt4        }nF‰t6        v rt8        }n7| j:                  t4        u s|j:                  t4        u rt4        }n| j:                  }|�|�t        |t<        «      s ||«      }| j                  j?                  || j@                  |j@                  f«      \  }}t        || j                  ||||¬	«      }|S # t(        $ r. t*        j-                  d‰| j                  |j                  «       ‚ w xY w)
Nr   r!  Fr¡   r�  r—   úfailed to eval %s(%s, %s)z%s %s %s -> %s)r6   r7   )!r,  r"  r#  r   r.   Ú alternate_impl_if_hinted_methodsÚgetr  r%  r+   r   r„  r�  r‘  r)   r(   r’  Úbound_sympyÚlowerr"   r>  r?  r@  Úsym_node_logÚdebugÚalways_float_magic_methodsr   Úalways_bool_magic_methodsr   r-   r,   r2  r6   )r/   r?   r"  r#  Úopr7  Úalternate_implr7   r�  r‘  r)   r5  r-   r6   r8  r¼  Úfuncr7  s                   €€r   Úbinary_magic_implz+_make_node_magic.<locals>.binary_magic_impl  s¬  ø€ ÷	
ô
   Ó'ˆàˆØ�9‰9Ð  U§Z¡ZÐ%;Ù˜$Ÿ)™) U§Z¡ZÓ0ˆHä9×=Ñ=¸fÓEˆÙ˜hÐ2Ü˜4¡´	¸$³ÄÈ5ÓAQÓ!RÓSÐSáÔÜØÑ)¨"¬y¸«Ä	È%Ó@PÐ.QÐSUÓVóð ô ˜%¤Ô)Ð)Ð)Ø#Ðð	Ø˜ŠßGð !ŸN™N�	à—I‘I×,Ò,Ø ×,Ñ,¨T¯Y©YÓ7×=Ñ=ÀÒBà—J‘J×-Ò-Ø ×,Ñ,¨U¯Z©ZÓ8×>Ñ>À!ÒCá˜dŸi™i¨¯©Ó4‘Cá# D§I¡I¨u¯z©zÓ:‘CØ˜5’á-1Ø—I‘IØ—J‘JØ×-Ñ-Ø×.Ñ.ó	.Ñ*Ð$¡cñ ˜4Ÿ9™9 e§j¡jÓ1�ô 	×ÑÐ+¨V°T·Y±YÀÇ
Á
ÈCÔPð Ô/Ñ/Ü‰FØÔ0Ñ0Ü‰FØ�[‰[œEÑ! U§\¡\´UÑ%:Ü‰Fà—[‘[ˆFð ÐØÐ$Ü˜x¬Ô2á˜hÓ'ˆHð —^‘^×<Ñ<Ø�—‘˜uŸ}™}Ð-ó
‰
ˆ�ô ØØ�N‰NØØØØ 3ô
ˆð ˆøôU ò 	Ü�K‰KÐ3°V¸T¿Y¹YÈÏ
É
ÔSØð	ús   ÃD*K( Ë(7Lc           	     óœ  •— ddl m}m} t        ‰«      } |«       rt	        |  ||t        | «      fi «      «      S | j                  }‰dk(  s‰dk(  r| j                  j                  |«      }	  ‰
|«      }t        j                  d‰
||«       d }| j                  � || j                  «      }‰t        v rt         }n*‰t"        v rt$        }n‰t&        v rt(        }n| j*                  }| j                  j-                  || j.                  f«      \  }}	t1        || j                  |||¬«      S # t        $ r t        j                  d‰|«       ‚ w xY w)Nr   r!  rØ   Úceilingzfailed to eval %s(%s)z%s %s -> %sr+  )r,  r"  r#  r   r  r%  r(   r)   Ú_simplify_floor_divr>  r?  r@  rc  rd  r.   Úalways_int_magic_methodsr   rf  r   re  r   r-   r2  r6   r   )r/   r"  r#  rg  r(   r5  r7  r-   r6   r8  ri  r7  s             €€r   Úunary_magic_implz*_make_node_magic.<locals>.unary_magic_imply  s3  ø€ ÷	
ô
   Ó'ˆÙÔÜ˜4Ñ!4°R¼)ÀD»/Ð9KÈRÓ!PÓQÐQà�y‰yˆØ�WÒ ¨)Ò 3Ø—>‘>×5Ñ5°dÓ;ˆDð	Ù�t“*ˆCô 	×Ñ˜=¨$°°cÔ:ØˆØ�9‰9Ð Ù˜$Ÿ)™)“}ˆHàÔ-Ñ-Ü‰FØÔ0Ñ0Ü‰FØÔ1Ñ1Ü‰Fà—[‘[ˆFà—^‘^×<Ñ<¸RÀ$Ç,Á,ÀÓQ‰
ˆ�Ü�s˜DŸN™N¨F°HÀgÔNÐNøô% ò 	Ü�K‰KÐ/°¸Ô>Øð	ús   Á,D) Ä)"Er
   c                ó‚  •— ddl m}m} | j                  r|j                  n|j                  } |«       r6t	        |  |t
        t        | «      t        |«      t        |«      fi «      «      S 	  ‰	| j                  |j                  |j                  «      }| j                  j                  t
        | j                  |j                  |j                  f«      \  }}t        || j                  |j                  ||¬«      S # t        $ r9 t        j                  d‰
| j                  |j                  |j                  «       ‚ w xY w)Nr   r!  zfailed to eval %s(%s, %s, %s)r+  )r,  r"  r#  r.   r  r
   r%  r(   r>  r?  r@  r)   r2  r6   r   r-   )Ú	pred_nodeÚ	then_nodeÚ	else_noder"  r#  r7  r5  r6   r8  ri  r7  s            €€r   Úsym_ite_implz&_make_node_magic.<locals>.sym_ite_impl¢  s  ø€ ÷ð
 *3¯ª�y—~’~¸Y¿^¹^ˆHÙÔÜØÙ'Üä% iÓ0Ü% iÓ0Ü% iÓ0ðð
 óóð ð
Ù˜9Ÿ>™>¨9¯>©>¸9¿>¹>ÓJ�ð #×,Ñ,×EÑEÜ˜)×+Ñ+¨Y×->Ñ->À	×@QÑ@QÐRó‰JˆG�Qô Ø�Y×(Ñ(¨)×*:Ñ*:¸HÈgôð øô ò Ü—‘Ø3ØØ—N‘NØ—N‘NØ—N‘Nôð ðús   Á,(C< Ã<AD>r�   c           	     ó(  •— ddl m}m} t        j                  } |«       rt        |  ||t        | «      |fi «      «      S | j                  }	  ‰||«      }|€t        }n| j                  }d }| j                  � || j                  |«      }| j                  g}	|�|	j                  |«       | j                   j#                  |t%        |	«      «      \  }
}t'        || j                   |||
¬«      S # t        $ r t        j                  d‰||«       ‚ w xY w)Nr   r!  z!failed to eval %s(%s, ndigits=%s)r+  )r,  r"  r#  Úbuiltinsr�   r  r%  r(   r>  r?  r@  r   r-   r.   r6   r€   r)   r2  r/  r   )r/   r�   r"  r#  rg  r(   r5  r-   r7  r3  r6   r8  ri  r7  s               €€r   Ú
round_implz$_make_node_magic.<locals>.round_implÍ  s	  ø€ ÷ô
 —‘ˆBÙÔÜØÑ-¨b´9¸T³?ÀGÐ2LÈbÓQóð ð —9‘9ˆDðÙ˜4 Ó)�ð
 ˆÜ‘àŸ™�àˆHØ�y‰yÐ$Ù˜dŸi™i¨Ó1�ð —L‘L�>ˆDØÐ"Ø—‘˜GÔ$ØŸ™×@Ñ@ÀÄUÈ4Ã[ÓQ‰JˆG�QÜ˜3 §¡°¸È'ÔRÐRøô1 ò Ü—‘Ð?ÀÈÈwÔWØðús   Á	C. Ã.#D)r`  zset[str]r   )r   Ú2magic_methods_on_operator_with_trailing_underscoreÚunary_methodsÚsetattrr   )	r7  ri  Úmethod_attrrC  r\  rj  ro  rt  rw  s	   ``       r   Ú_make_node_magicr|  Ó  sÞ   ù€ ØŒ9�S‹>˜$Ó€DàÔCÑCØ˜ �l‰àˆó
ô",ð\ ô\ó ð\ð| ô"Oó ð"OðH ”ÑÜ”˜1˜[˜MÐ*Ð,<Õ=Ø	�9Ò	õ&	ôP 	”˜1˜[˜MÐ*¨LÕ9Ø	�7Ò	ö'	SôR 	”˜1˜[˜MÐ*¨JÕ7ä”˜1˜[˜MÐ*Ð,=Õ>r    c                óÐ   ‡ ‡— ˆˆ fd„}t        t        d‰ › �|«       ˆˆ fd„}t        t        j                  t
           ‰ «      s#t        t        j                  t
           ‰ |«       y y )Nc                ó"  •— ddl m}m} t        t        j
                  t           ‰«      } |«       rDt        |  |||D �cg c]  }t        |«      ‘Œ c}|D �cg c]  }t        |«      ‘Œ c}fi «      «      S |D �cg c]  }|j                  ‘Œ }}|D �cg c]  }|j                  ‘Œ }}	  ‰||«      }	g }
d }|D ]+  }|j                  € nX|
j                  |j                  «       Œ- g }|D ]+  }|j                  € n&|j                  |j                  «       Œ-  ||
|«      }‰j                  d«      rt         }nt"        }t%        |	| j&                  ||«      S c c}w c c}w c c}w c c}w # t        $ r t        j                  d‰||«       ‚ w xY w)Nr   r!  r^  Ú
_indicator)r,  r"  r#  rp  ÚsysÚmodulesra  r  r%  r(   r>  r?  r@  r.   r€   Úendswithr   r   r   r)   )r/   ró   rô   r"  r#  rg  rT   Ú
size_exprsÚstride_exprsr5  r6  r7  Ústride_hintsr-   ri  r7  s                 €€r   Úsizes_strides_implz4_make_node_sizes_strides.<locals>.sizes_strides_implþ  sŠ  ø€ ÷	
ô
 ”S—[‘[¤Ñ*¨FÓ3ˆÙÔÜØÙ#ØØ,1Ö2 q”i •lÒ2È7Ö4SÀa´Y¸qµ\Ò4SÐTØóóð ð ',Ö, �a—f“fÐ,ˆ
Ð,Ø(/Ö0 1˜Ÿ›Ð0ˆÐ0ð	Ù�z <Ó0ˆCð ˆ
ØˆØò 	8ˆAØ�v‰vˆ~ÙØ×Ñ˜aŸf™fÕ%ð	8ð
 ˆLØò 8�Ø—6‘6�>ÙØ×#Ñ# A§F¡FÕ+ð8ñ
 ˜j¨,Ó7�ð �?‰?˜<Ô(Ü‰FäˆFÜ�s˜DŸN™N¨F°HÓ=Ð=ùòE 3ùÒ4Sùò -ùÚ0øô ò 	Ü�K‰KÐ3°V¸ZÈÔVØð	ús#   ¿EÁEÁ:E!ÂE&Â)	E+ Å+#Fr8  c                ó"  •— dd l }ddlm} t        j                  | |«      D ]~  }t        |t        «      sŒt         t        |j                  ‰«      | D �cg c]  }t        |j                  |«      ‘Œ c}|D �cg c]  }t        |j                  |«      ‘Œ c}«      «      c S  ‰dk(  r	 || |«      S t         ‰| D �cg c]  }|j                  |«      ‘Œ c}|D �cg c]  }|j                  |«      ‘Œ c}«      «      S c c}w c c}w c c}w c c}w )Nr   )Ú!eval_is_non_overlapping_and_denser  )r\   r'   rˆ  Ú	itertoolsÚchainr+   r   r%  rp  rk   r  r   Úsympify)ró   rô   r\   rˆ  r(  rS  ri  r7  s         €€r   Úsizes_strides_userz4_make_node_sizes_strides.<locals>.sizes_strides_user3  sò   ø€ Ûõ	
ô —‘ ¨Ó0ò 	ˆAÜ˜!œVÕ$Ü Ø+”G˜AŸF™F FÓ+Ø5:Ö;°œ §¡¨Õ+Ò;Ø5<Ö=°œ §¡¨Õ+Ò=óóò ð	ð Ð=Ò=Ù4°U¸GÓDÐDô ÙØ/4Ö5¨!�U—]‘] 1Õ%Ò5Ø/6Ö7¨!�U—]‘] 1Õ%Ò7óóð ùò <ùÚ=ùò 6ùÚ7s   ÁC=Á8DÂ<DÃD)rz  r   Úhasattrr€  r�  ra  )r7  ri  r†  rŒ  s   ``  r   Ú_make_node_sizes_stridesrŽ  û  sS   ù€ õ.>ô` ŒG�q˜˜�\Ð#5Ô6õ
ô6 ”3—;‘;œxÑ(¨&Ô1Ü”—‘œHÑ% vÐ/AÕBð 2r    c                ó   ‡ ‡	‡
‡‡‡— ‰ t         v rd‰ › �Šn‰ Šdd„Š	d„ Š
‰ t        v rd„ Šnd„ Šˆ fd„Šˆ	ˆ
ˆ ˆˆfd„}ˆ	ˆ
ˆ ˆˆˆfd„}ˆ	ˆ
ˆ ˆˆˆfd	„}‰ t        v rt        |d
‰ › d
�|«       y ‰ t        v r$t        |‰ «      }t        |‰ t        ||«      «       y ‰ dk(  rˆ	ˆfd„}t        |d
‰ › d
�|«       y ‰ dk(  rdˆ	ˆ
ˆ fd„	}t        |d
‰ › d
�|«       y ‰ }‰ t        v r	t        ‰    }t        |d
|› d
�|«       ‰ t        v rt        |d|› d
�|«       y y )Nr€  c                óª   — t        | t        t        t        f«      r| S t        | t        «      r| j
                  j                  dd«      S t        d«      ‚)Nr  r   z*expect to be called with constant SymBools)r+   r   r   r   r   rk   rK  r4  ri  s    r   Úget_constantz&_make_user_magic.<locals>.get_constantb  sE   € Ü�aœ#œu¤dÐ+Ô,ØˆHÜ�aœÔ!Ø—6‘6×$Ñ$ R¨Ó+Ð+ÜÐIÓJÐJr    c                ó¦   — t        | t        t        t        f«      ryt        | t        t
        t        f«      r| j                  j                  «       S y)NTF)	r+   r   r   r   r   r   r   rk   r_  ri  s    r   r_  z%_make_user_magic.<locals>.is_constanti  s=   € Ü�aœ#œu¤dÐ+Ô,ØÜ�aœ&¤(¬GÐ4Ô5Ø—6‘6×%Ñ%Ó'Ð'Ør    c                ó€   — t        | t        «      r-t        | j                  j	                  t        | «      «      «      S | S )z;Implements True+True=2, which works in python but not sympy)r+   r   r   rk   rr   r   ri  s    r   Úpromotez!_make_user_magic.<locals>.promoteŒ  s-   € ä˜!œWÔ%Ü˜aŸf™fŸo™o¬c°!«fÓ5Ó6Ð6ØˆHr    c                ó   — | S r   rx   ri  s    r   r”  z!_make_user_magic.<locals>.promote”  s   € ØˆHr    c                ó   •— ‰dvr| |fS t        | t        t        j                  f«      }t        |t        t        j                  f«      }|s|r.|st        j                  | «      } |st        j                  |«      }| |fS )N)r—   r›   rž   r¡   r¤   r°   r·   r   r   rÅ   rÉ   rÌ   rÏ   rÒ   rÕ   )r+   r   r-  r   r	   )r/   r?   Úf_selfÚf_otherr7  s       €r   Úpromote2z"_make_user_magic.<locals>.promote2—  sy   ø€ ð ð 
ñ 
ð$ ˜�;ÐÜ˜D¤5¬%¯.©.Ð"9Ó:ˆÜ˜U¤U¬E¯N©NÐ$;Ó<ˆÙ‘WÙÜ—‘ tÓ,�ÙÜŸ™¨Ó.�Ø�Uˆ{Ðr    c                óš   •—  ‰| «      }  ‰| «      r t        ‰«       ‰| «      «      S t         t        | j                  ‰«      «       «      S r   )r   r%  rp  rk   )r/   r‘  r_  r7  r{  r”  s    €€€€€r   ro  z*_make_user_magic.<locals>.unary_magic_implÁ  sH   ø€ Ù�t‹}ˆÙ�tÔØ.Ô& vÓ.±¸TÓ0BÓCÐCÜÐ8œ §¡¨KÓ8Ó:Ó;Ð;r    c           	     óâ  •— t        |t        t        t        t        t
        t        f«      st        S t        j                  d‰| |«        ‰| «      }  ‰|«      } ‰	| |«      \  } } ‰| «      r t        ‰«       ‰| «      |«      S  ‰|«      r ‰|«      }t        | j                  |«      }|t        u rt        S t         t        | j                  ‰«      |«      «      } ‰|«      r ‰|«      S |S )NzMAGIC %s %s %s)r+   r   r   r   r   r   r   r2  rc  rd  r   r  rk   r%  rp  ©
r/   r?   Ú
other_nodeÚretr‘  r_  r7  r{  r”  r™  s
       €€€€€€r   rj  z+_make_user_magic.<locals>.binary_magic_implÇ  sÝ   ø€ Ü˜%¤#¤u¬d´F¼HÄgÐ!NÔOÜ!Ð!Ü×ÑÐ+¨V°T¸5ÔAÙ�t‹}ˆÙ˜“ˆÙ˜t UÓ+‰ˆˆeÙ�tÔØ.Ô& vÓ.±¸TÓ0BÀEÓJÐJÙ�uÔÙ  Ó'ˆEÜ˜TŸY™Y¨Ó.ˆ
ØœÑ'Ü!Ð!ÜÐ7œ §	¡	¨;Ó7¸
ÓCÓDˆÙ$/°Ô$4‰|˜CÓ Ð=¸#Ð=r    c           	     ó²  •— t        |t        t        t        t        t
        t        f«      st        S  ‰| «      }  ‰|«      } ‰	| |«      \  } } ‰| «      r t        ‰«       ‰| «      |«      S  ‰|«      r ‰|«      }t        | j                  |«      }|t        u rt        S t         t        |‰«      | j                  «      «      } ‰|«      r ‰|«      S |S r   )r+   r   r   r   r   r   r   r2  r   r  rk   r%  rp  rœ  s
       €€€€€€r   Úrbinary_magic_implz,_make_user_magic.<locals>.rbinary_magic_implØ  sÈ   ø€ Ü˜%¤#¤u¬d´F¼HÄgÐ!NÔOÜ!Ð!Ù�t‹}ˆÙ˜“ˆÙ˜t UÓ+‰ˆˆeÙ�tÔØ.Ô& vÓ.±¸TÓ0BÀEÓJÐJÙ�uÔÙ  Ó'ˆEÜ˜TŸY™Y¨Ó.ˆ
ØœÑ'Ü!Ð!ÜÐ8œ 
¨KÓ8¸¿¹ÓCÓDˆÙ$/°Ô$4‰|˜CÓ Ð=¸#Ð=r    Ú__r
   c                ó‚  •— | j                   }t        ||«      }t        ||«      }|t        u s|t        u rt        S t        |t        «      r)t        |t        «      r|j
                  |j
                  k(  sJ ‚t         t        | j                   ‰«      ||«      «      }|j                   j                  «       r ‰|«      S |S r   )	rk   r  r2  r+   r   r-   r%  rp  r_  )	Úpredrî   rï   rq  rr  rs  rž  r‘  r{  s	          €€r   Úsym_ite_magic_implz,_make_user_magic.<locals>.sym_ite_magic_implï  s«   ø€ ØŸ	™	ˆIÜ 	¨8Ó4ˆIÜ 	¨8Ó4ˆIØœNÑ*¨i¼>Ñ.IÜ%Ð%ä˜9¤gÔ.Ü˜y¬'Ô2Ø×$Ñ$¨	×(8Ñ(8Ò8ðð9ô Ð;œG D§I¡I¨{Ó;¸IÀyÓQÓRˆCØ(+¯©×(<Ñ(<Ô(>‘< Ó$ÐGÀCÐGr    r�   c                ó–   •—  ‰| «      rt        j                   ‰| «      |«      S t         t        | j                  ‰«      |«      «      S r   )rv  r�   r%  rp  rk   )r/   r�   r‘  r_  r7  s     €€€r   Úround_magic_implz*_make_user_magic.<locals>.round_magic_impl   s?   ø€ Ù˜4Ô Ü—~‘~¡l°4Ó&8¸'ÓBÐBäÐ7œW T§Y¡Y°Ó7¸Ó@ÓAÐAr    Ú__r)rj  z2Union[SymInt, int, SymFloat, float, SymBool, bool]r   )	rx  Úbool_becomes_int_magic_methodsÚunary_magic_methodsrz  Úunary_nonmagic_methodsrp  r   Úbitwise_opsÚreflectable_magic_methods)r7  Ú	user_typero  rj  r   Úorigr¤  r¦  Úmethod_namer‘  r_  r{  r”  r™  s   `        @@@@@r   Ú_make_user_magicr°  Y  sG  ý€ ð ÔCÑCØ˜V˜H�o‰àˆóKòðB Ô/Ñ/ó	ò	ô!÷T<ð <÷>ñ >÷">ñ >ð  Ô$Ñ$Ü�	˜R ˜x r˜?Ð,<Õ=Ø	Ô)Ñ	)Ü�y &Ó)ˆÜ�	˜6¤>Ð2BÀDÓ#IÕJØ	�9Ò	õ	Hô 	�	˜R ˜x r˜?Ð,>Õ?Ø	�7Ò	÷	Bô 	�	˜R ˜x r˜?Ð,<Õ=àˆØ”[Ñ Ü% fÑ-ˆKÜ�	˜R ˜}¨BÐ/Ð1BÔCØÔ.Ñ.Ü�I  [ M°Ð4Ð6HÕIð /r    )FFr   )–Ú
__future__r   rv  rZ  r@  r‰  ÚloggingÚmathÚoperatorr€  r   r   Útypingr   r   r   r-  Útorch._logging.structuredrV  rQ  r	   r
   r   r   r   r   r   r   Útorch._loggingr   r'   r   Ú	getLoggerra  r?  ÚgetArtifactLoggerrc  Ú__all__Útorch.typesr   r,   r   r   rŒ   rˆ   r—   rª   rã   rÅ   rØ   r“   r  rÕ   rÌ   rÒ   r»   rÏ   r¡   rž   rÉ   ræ   r­   r  r�   r¿   r›   r  r6  r©  rt  Úmath_op_namesrq  Úsym_nameÚpriv_sym_namerz  rp  r€   rª  ry  Úonly_bool_magic_methodsr¨  Úalso_bool_magic_methodsÚbool_magic_methodsÚonly_float_magic_methodsrx  r«  re  rn  rf  r…  r‰  rŒ  r“  r–  r™  r�  r   r¤  r¨  r¹  rÈ  r  r  r¬  rÑ  rÔ  rØ  rÛ  rÞ  rá  rä  rç  rê  rí  rð  rõ  rù  r�  Úcurrent_moduler   Úpriv_sympy_namerr  rc  r  r	  r  r  Úinvertr   r  r  r!  r%  r(  r+  r-  r0  Úsizes_strides_methodsÚminÚmaxr_  r  r%  r   r|  rŽ  Úitemsr7  ri  r°  rx   r    r   ú<module>rÊ     s©  ðõ #ðó Û Û Û Û Û Û Û 
ß /ß 1Ñ 1ã ß .Ð .÷	÷ 	ó 	õ -ñ Ý>à€g×Ñ˜Ó!€Ø�~‰~×/Ñ/°¸*ÓE€ò =€õ 1ò÷Vñ Vðt#Ø	ˆ8�<‰<ð#à	ˆ8�<‰<ð#ð 
ˆ8�<‰<ð#ð 
ˆ8�=‰=ð	#ð
 �8—=‘=ð#ð ˆD�I‰Ið#ð 	ˆ(�+‰+ð#ð ˆT�Z‰Zð#ð ˆT�Z‰Zð#ð �H×%Ñ%ð#ð 	ˆ(�+‰+ð#ð 	ˆ(�+‰+ð#ð Ñ*ð#ð 	ˆ(�+‰+ð#ð ˆh�o‰oð#ð  	ˆ(�+‰+ð!#ð" 
ˆ8�<‰<ñ##ð$ 
ˆ8�<‰<ð%#ð& 	ˆ(�+‰+ð'#ð( 
ˆ8�<‰<ð)#ð* 	ˆ(�,‰,ð+#ð, �(—,‘,ð-#ð. �—‘ð/#ð0 �h—l‘lð1#ð2 ˆX�^‰^ð3#ð4 ˆh�o‰oð5#ð6 
ˆ8�<‰<ð7#ð8 �ð9#ð: ˆwð;#ð< ˆwð=#ð> ˆwð?#ð@ ˆwðA#ðB �X×%Ñ%ðC#ðD �8×#Ñ#ñE#Ð òJ
Ð òð€ð ò €DØ�d�Vˆ}€HØ˜�z�N€MÙˆG�XÑ/°Ó5Ô6Ù#*¨5°-Ó#@Ð�xÑ Ø×Ñ˜HÔ%Ø‡N�N�8Õðð ðÐ ð $Ð&<Ñ<€ò >Ð â!6Ð à˜&Ð Ø,Ð/FÑFÐ ò JÐ ð 7<¸T°]Ð 2ð Øñ€ò XÐ àò -€DØ�d�Vˆ}€HØ×"Ñ" 8Õ,ð-ò
 HÐ òÐ ò"òòòòòòòòòòðF LQó.:òb'ò&ð Ø�<‰<Ø�<‰<ØØ+Ø!ØØØ
ØØ)Ø%Ø#ØØñÐ ò&ò$òòòòòòòòòòò.ð —‘˜XÑ&€òð ò 1€DØ ˜vÐ&€OÙ	˜$Ó	€BØ$3Ð3€B„O�b”kÙˆN˜O¨RÕ0ð	1ð ˆˆoòó-òò0ðØñàˆx�‰ðð 
ˆ8�<‰<ðð 	ˆ)ð	ð
 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð ˆ\ðð ˆ\ðð Ð!ðð ˆKðð 
ˆ8�<‰<ðð ˆzðð  ˆzð!ð" ˆzð#ð$ 
ˆ:ñ%ð& Ø#ò)€ð0 ò H€DØ�d�Vˆ}€HÙ% n¸À¸vÐ6FÓG€M�(ÒðHð 	ˆ(�M >òUò
ò0EòHò%òPPòSò?ð )Ø&JØ&JØ#DØ#DØ.[ñ	Ð ð �|Š|Ø�|Š|ñ$Ð  òò>ò&òe?òP	TCðn "×'Ò'Ó)ò #�L€FˆDÙ�V˜TÕ"ð#ð *×/Ò/Ó1ò +�L€FˆDÙ˜V TÕ*ð+òtJðn "×'Ò'Ó)ò +�L€FˆDØÐ(Ñ(Ù˜ Ô)ØØÐ)Ñ)Ù˜ Ô*ØØÐ(Ñ(¨FÐ6TÑ,TÙ˜ Ô)Ù�V˜VÔ$Ø�[Ò Ù˜ Õ*ð+ð Ùr    