§
    OŠtj¾š  ã                  óÞ  — d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dlZd dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN d dlOmPZPmQZQ d dlRmSZS d dlTmUZU d d	lVmWZW dd
„ZXd„ ZYd„ ZZd„ Z[e[ G d„ d¦  «        ¦   «         Z\dS )é    )ÚannotationsN)Úproduct)ÚAnyÚCallable)FÚMulÚAddÚPowÚRationalÚlogÚexpÚsqrtÚcosÚsinÚtanÚasinÚacosÚacotÚasecÚacscÚsinhÚcoshÚtanhÚasinhÚacoshÚatanhÚacothÚasechÚacschÚexpandÚimÚflattenÚpolylogÚcancelÚexpand_trigÚsignÚsimplifyÚUnevaluatedExprÚSÚatanÚatan2ÚModÚMaxÚMinÚrfÚEiÚSiÚCiÚairyaiÚairyaiprimeÚairybiÚprimepiÚprimeÚisprimeÚcotÚsecÚcscÚcschÚsechÚcothÚFunctionÚIÚpiÚTupleÚGreaterThanÚStrictGreaterThanÚStrictLessThanÚLessThanÚEqualityÚOrÚAndÚLambdaÚIntegerÚDummyÚsymbols)ÚsympifyÚ_sympify)Úairybiprime)Úli)Úsympy_deprecation_warningc                óˆ   — t          ddd¬¦  «         t          |¦  «        }t          |                     | ¦  «        ¦  «        S )NzóThe ``mathematica`` function for the Mathematica parser is now
deprecated. Use ``parse_mathematica`` instead.
The parameter ``additional_translation`` can be replaced by SymPy's
.replace( ) or .subs( ) methods on the output expression instead.z1.11zmathematica-parser-new)Údeprecated_since_versionÚactive_deprecations_target)rQ   ÚMathematicaParserrM   Ú
_parse_old)ÚsÚadditional_translationsÚparsers      úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/parsing/mathematica.pyÚmathematicar[      sS   € Ýð	Eð "(Ø#;ðñ ô ð õ Ð6Ñ7Ô7€FÝ�6×$Ò$ QÑ'Ô'Ñ(Ô(Ð(ó    c                óH   — t          ¦   «         }|                     | ¦  «        S )a±  
    Translate a string containing a Wolfram Mathematica expression to a SymPy
    expression.

    If the translator is unable to find a suitable SymPy expression, the
    ``FullForm`` of the Mathematica expression will be output, using SymPy
    ``Function`` objects as nodes of the syntax tree.

    Examples
    ========

    >>> from sympy.parsing.mathematica import parse_mathematica
    >>> parse_mathematica("Sin[x]^2 Tan[y]")
    sin(x)**2*tan(y)
    >>> e = parse_mathematica("F[7,5,3]")
    >>> e
    F(7, 5, 3)
    >>> from sympy import Function, Max, Min
    >>> e.replace(Function("F"), lambda *x: Max(*x)*Min(*x))
    21

    Both standard input form and Mathematica full form are supported:

    >>> parse_mathematica("x*(a + b)")
    x*(a + b)
    >>> parse_mathematica("Times[x, Plus[a, b]]")
    x*(a + b)

    To get a matrix from Wolfram's code:

    >>> m = parse_mathematica("{{a, b}, {c, d}}")
    >>> m
    ((a, b), (c, d))
    >>> from sympy import Matrix
    >>> Matrix(m)
    Matrix([
    [a, b],
    [c, d]])

    If the translation into equivalent SymPy expressions fails, an SymPy
    expression equivalent to Wolfram Mathematica's "FullForm" will be created:

    >>> parse_mathematica("x_.")
    Optional(Pattern(x, Blank()))
    >>> parse_mathematica("Plus @@ {x, y, z}")
    Apply(Plus, (x, y, z))
    >>> parse_mathematica("f[x_, 3] := x^3 /; x > 0")
    SetDelayed(f(Pattern(x, Blank()), 3), Condition(x**3, x > 0))
    )rU   Úparse)rW   rY   s     rZ   Úparse_mathematicar_       s    € õd Ñ Ô €FØ�<Š<˜‰?Œ?Ðr\   c            	     ó0  ‡— t          | ¦  «        dk    rÁ| d         }t          d¦  «        Š|                     ‰¦  «        }d„ |D ¦   «         }t          |¦  «        }t	          |t
          ¦  «        rUt          d|› �t          ¬¦  «        }t          || 	                    ˆfd„t          |¦  «        D ¦   «         ¦  «        ¦  «        S t          d|¦  «        S t          | ¦  «        d	k    r | d         }| d         }t          ||¦  «        S t          d
¦  «        ‚)Né   r   ÚSlotc                ó(   — g | ]}|j         d          ‘ŒS )r   )Úargs)Ú.0Úas     rZ   ú
<listcomp>z#_parse_Function.<locals>.<listcomp>[   s   € Ð,Ð,Ð, �1”6˜!”9Ð,Ð,Ð,r\   zdummy0:©Úclsc                ó4   •— i | ]\  }} ‰|d z   ¦  «        |“ŒS )ra   © )re   ÚiÚvrb   s      €rZ   ú
<dictcomp>z#_parse_Function.<locals>.<dictcomp>_   s+   ø€ Ð2aÐ2aÐ2aÁDÀAÀq°4°4¸¸!¹±9´9¸aÐ2aÐ2aÐ2ar\   rk   é   z&Function node expects 1 or 2 arguments)Úlenr>   ÚatomsÚmaxÚ
isinstancerJ   rL   rK   rI   ÚxreplaceÚ	enumerateÚSyntaxError)rd   ÚargÚslotsÚnumbersÚnumber_of_argumentsÚ	variablesÚbodyrb   s          @rZ   Ú_parse_Functionr}   V   s  ø€ Ý
ˆ4�y„y�A‚~€~Ø�1ŒgˆÝ˜ÑÔˆØ—	’	˜$‘”ˆØ,Ð, eÐ,Ñ,Ô,ˆÝ! '™lœlÐÝÐ)­7Ñ3Ô3ð 	dÝÐ ?Ð*=Ð ?Ð ?ÅUÐKÑKÔKˆIÝ˜) S§\¢\Ð2aÐ2aÐ2aÐ2aÍIÐV_ÑL`ÔL`Ð2aÑ2aÔ2aÑ%bÔ%bÑcÔcÐcÝ�b˜#‰ŒÐÝ	ˆT‰Œ�aŠˆØ˜”Gˆ	Ø�AŒwˆÝ�i Ñ&Ô&Ð&åÐBÑCÔCÐCr\   c                ó.   — |                       ¦   «          | S ©N)Ú_initialize_classrh   s    rZ   Ú_decor�   i   s   € Ø×ÒÑÔÐØ€Jr\   c            !      ó  — e Zd ZU dZi dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%d&d'd(d)d*œ¥Z ed+d,d-¦  «        D ]b\  ZZZeez   ez   d.z   Z	erd/e 
                    ¦   «         z   ez   d0z   Zne 
                    ¦   «         ez   d0z   Ze                     e	ei¦  «         Œcd1d2d3d4d5œZ ej        d6ej        ¦  «        d7f ej        d8ej        ¦  «        d7f ej        d9ej        ¦  «        d:f ej        d;ej        ¦  «        d<fd=œZ ej        d>ej        ¦  «        Z ej        d?ej        ¦  «        Zd@Zi ZdAedB<   i ZdAedC<   i ZdAedD<   edE„ ¦   «         Z�ddG„ZedH„ ¦   «         ZdI„ ZdJ„ ZedK„ ¦   «         ZedL„ ¦   «         Z edM„ ¦   «         Z!edN„ ¦   «         Z"dO„ Z#dP„ Z$dQZ%dRZ&dSZ'dTZ(dUZ)dVZ*e'dFdWdX„ ife%e(dWdYife%e)dZd[d\d]d^d_d`œfe%e*dadb„ ife'dFdcddife%e*dedfife%e)dgdhdiœfe%e*djdkife%e(dldmife'dFdndodpœfe%e(dqdrife%e(dsdtife&dFdudvife%e(dwdxdyœfe%e(dzd{d|d}d~dd€œfe%dFd�d‚ife%e(dƒdƒd„œfe%e(d…d…d†œfe%e(d‡dˆife&dFd‰„ dŠ„ d‹œfe%e)dŒd�ife%e)dŽd�d�d‘„ d’œfe'dFd“d”d•d–d—œfe%dFd˜„ d™„ dšœfe&dFd›„ dœ„ d�œfe%dFdždŸife'dFd „ d¡„ d¢„ d£„ d¤œfe%dFd¥d¦„ ife&dFd§d¨d©œfgZ+dªed«<   d¬„ d­„ d©œZ,d®Z-d¯Z.g d°¢Z/g d±¢Z0ed²„ ¦   «         Z1ed³„ ¦   «         Z2dFZ3d´„ Z4�dd·„Z5�dd¼„Z6�dd½„Z7�dd¾„Z8�ddÁ„Z9�ddÄ„Z:�ddÅ„Z;�d�ddÇ„Z<�ddÊ„Z=�ddÌ„Z>�ddÎ„Z?i d…e@“dƒeA“d�eB“dÏeC“dÐdÑ„ “dÒdÓ„ “dÔdÕ„ “dÖeD“d×eE“dØeF“dÙeG“dÚeH“dÛeI“dÜeJ“dÝeK“dÞeL“dßeM“i dàdá„ “dâeN“dãeO“däeP“dåeQ“dæeR“dçeS“dèeT“déeU“dêeV“dëeW“dìeX“díeY“dîeZ“dïe[“dðe\“dñe]“¥i dòe^“dóe_j        “dôe`“dõea“döeb“d÷ec“døed“dùee“dúef“dûeg“düdý„ “dþeh“dÿei“�d ej“�dek“�del“�dem“¥i �den“�deo“�dep“�deq“�der“�d	es“�d
et“�deu“�dev“�dew“dex“d~ey“d}ez“d|e{“dze|“dre}“dte~“¥ddei¥Z€e�e‚�dœZƒ�d„ Z„�d„ Z…dFS (  rU   ap  
    An instance of this class converts a string of a Wolfram Mathematica
    expression to a SymPy expression.

    The main parser acts internally in three stages:

    1. tokenizer: tokenizes the Mathematica expression and adds the missing *
        operators. Handled by ``_from_mathematica_to_tokens(...)``
    2. full form list: sort the list of strings output by the tokenizer into a
        syntax tree of nested lists and strings, equivalent to Mathematica's
        ``FullForm`` expression output. This is handled by the function
        ``_from_tokens_to_fullformlist(...)``.
    3. SymPy expression: the syntax tree expressed as full form list is visited
        and the nodes with equivalent classes in SymPy are replaced. Unknown
        syntax tree nodes are cast to SymPy ``Function`` objects. This is
        handled by ``_from_fullformlist_to_sympy(...)``.

    zSqrt[x]zsqrt(x)zRational[x,y]zRational(x,y)zExp[x]zexp(x)zLog[x]zlog(x)zLog[x,y]zlog(y,x)zLog2[x]zlog(x,2)zLog10[x]z	log(x,10)zMod[x,y]zMod(x,y)zMax[*x]zMax(*x)zMin[*x]zMin(*x)zPochhammer[x,y]zrf(x,y)zArcTan[x,y]z
atan2(y,x)zExpIntegralEi[x]zEi(x)zSinIntegral[x]zSi(x)zCosIntegral[x]zCi(x)z	AiryAi[x]z	airyai(x)zAiryAiPrime[x]zairyaiprime(x)z	airybi(x)zairybiprime(x)z li(x)z
primepi(x)zprime(x)z
isprime(x))z	AiryBi[x]zAiryBiPrime[x]zLogIntegral[x]z
PrimePi[x]zPrime[x]z	PrimeQ[x])Ú ÚArc)ÚSinÚCosÚTanÚCotÚSecÚCsc)rƒ   Úhz[x]rf   z(x)rƒ   z**ú[ú])ú ú^Ú{Ú}zñ
                (?:(?<=[a-zA-Z\d])|(?<=\d\.))     # a letter or a number
                \s+                               # any number of whitespaces
                (?:(?=[a-zA-Z\d])|(?=\.\d))       # a letter or a number
                Ú*zÐ
                (?:(?<=[])\d])|(?<=\d\.))       # ], ) or a number
                                                # ''
                (?=[(a-zA-Z])                   # ( or a single letter
                z¬
                (?<=[a-zA-Z])       # a letter
                \(                  # ( as a character
                (?=.)               # any characters
                z*(z¿
                (?:
                \A|(?<=[^a-zA-Z])
                )
                Pi                  # 'Pi' is 3.14159... in Mathematica
                (?=[^a-zA-Z])
                r@   )Ú
whitespaceúadd*_1úadd*_2ÚPizÞ
                (?:
                \A|(?<=[^a-zA-Z])   # at the top or a non-letter
                )
                [A-Z][a-zA-Z\d]*    # Function
                (?=\[)              # [ as a character
                z(
                \{.*\}
                zº
                (?:
                \A|(?<=[^a-zA-Z])
                )
                {arguments}         # model argument like x, y,...
                (?=[^a-zA-Z])
                z%dict[tuple[str, int], dict[str, Any]]ÚTRANSLATIONSÚcache_originalÚcache_compiledc                ón   — |                       | j        ¦  «        }| j                             |¦  «         d S r   )Ú_compile_dictionaryÚCORRESPONDENCESr—   Úupdate)ri   Úds     rZ   r€   z#MathematicaParser._initialize_class÷   s7   € ð ×#Ò# CÔ$7Ñ8Ô8ˆØÔ×Ò Ñ"Ô"Ð"Ð"Ð"r\   Nc                ód  — i | _         | j                              | j        ¦  «         |€i }| j        j        |k    rQt          |t          ¦  «        st          d¦  «        ‚|                      |¦  «        }|| j        _        || j        _	        | j                              | j        j	        ¦  «         d S )NzThe argument must be dict type)
Útranslationsr�   r—   Ú	__class__r˜   rs   ÚdictÚ
ValueErrorr›   r™   )ÚselfrX   rž   s      rZ   Ú__init__zMathematicaParser.__init__ý   s¹   € ØˆÔð 	Ô× Ò  Ô!2Ñ3Ô3Ð3à"Ð*Ø&(Ð#ð Œ>Ô(Ð,CÒCÐCÝÐ5µtÑ<Ô<ð CÝ Ð!AÑBÔBÐBð ×(Ò(Ð)@ÑAÔAˆAð -DˆDŒNÔ)Ø,-ˆDŒNÔ)ð 	Ô× Ò  ¤Ô!>Ñ?Ô?Ð?Ð?Ð?r\   c                ó  — i }|                      ¦   «         D �]ô\  }}|                      |¦  «         |                      |¦  «         |                      |d¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                      |d¦  «        }| j                             |¦  «        }|€%d                     |¬¦  «        }t          |¦  «        ‚|                     ¦   «         }|  	                    |¦  «        \  }}	| 
                    ¦   «         dk    s|	t          |¦  «        k    r%d                     |¬¦  «        }t          |¦  «        ‚|d         d         dk    rd}
nt          |¦  «        }
||
f}d„ |D ¦   «         }d	d
                     |¦  «        z   dz   }| j                             |¬¦  «        }t          j        |t          j        ¦  «        }i ||<   |||         d<   |||         d<   |||         d<   �Œö|S )Nr“   rŽ   ú'{f}' function form is invalid.©Úfr   éÿÿÿÿr’   c                ó4   — g | ]}|d          dk    r|nd|z   ‘ŒS )r   r’   ú\rk   )re   Úxs     rZ   rg   z9MathematicaParser._compile_dictionary.<locals>.<listcomp>C  s,   € ÐDÐDÐD¸!˜A˜aœD CšK˜K�q�q¨T°A©XÐDÐDÐDr\   z(?:(ú|z)))Ú	argumentsÚfsrd   Úpat)ÚitemsÚ_check_inputÚ_apply_rulesÚ_replaceÚ
FM_PATTERNÚsearchÚformatr£   ÚgroupÚ	_get_argsÚstartrp   ÚjoinÚARGS_PATTERN_TEMPLATEÚreÚcompileÚVERBOSE)ri   Údicrž   Úfmr°   ÚmÚerrÚfm_namerd   ÚendÚkey_argÚkeyÚre_argsÚxyzÚpatStrr±   s                   rZ   r›   z%MathematicaParser._compile_dictionary  s  € ð ˆà—i’i‘k”kð 7	 ñ 7	 ‰FˆB�à×Ò˜RÑ Ô Ð Ø×Ò˜RÑ Ô Ð ð ×!Ò! " lÑ3Ô3ˆBØ×!Ò! " lÑ3Ô3ˆBð —’˜b #Ñ&Ô&ˆBØ—’˜b #Ñ&Ô&ˆBð ”×%Ò% bÑ)Ô)ˆAð ˆyØ7×>Ò>ÀÐ>ÑDÔD�Ý  ‘o”oÐ%ð —g’g‘i”iˆGð Ÿš aÑ(Ô(‰IˆD�#ð �wŠw‰yŒy˜AŠ~ˆ~ ­¨B©¬¢ Ø7×>Ò>ÀÐ>ÑDÔD�Ý  ‘o”oÐ%ð �BŒx˜Œ{˜cÒ!Ð!Ø��å˜d™)œ)�à˜GÐ$ˆCð EÐD¸tÐDÑDÔDˆGð ˜3Ÿ8š8 GÑ,Ô,Ñ,¨tÑ3ˆCð Ô.×5Ò5ÀÐ5ÑDÔDˆFå”*˜V¥R¤ZÑ0Ô0ˆCð ˆAˆc‰FØˆAˆcŒF�4‰LØ!ˆAˆcŒF�6‰NØˆAˆcŒF�5‰M‰Màˆr\   c                ó>  — | j         }d}d}	 |                     |¦  «        }|€||z  }ns|                     ¦   «         }|                      |¦  «        \  }}|                     ¦   «         }	|                      ||||	|¦  «        }|	}||d|…         z  }||d…         }Œ�|S )z'Parse Mathematica function to SymPy onerƒ   r   TN)r¶   r·   r¹   rº   r»   Ú_convert_one_function)
r¤   rW   r±   ÚscannedÚcurrÃ   rÂ   rd   rÆ   Úbgns
             rZ   Ú_convert_functionz#MathematicaParser._convert_functionU  sÂ   € ð ŒoˆàˆØˆð	Ø—
’
˜1‘”ˆAàˆyà˜1‘�Øð —’‘”ˆBð Ÿš qÑ)Ô)‰IˆD�#ð —'’'‘)”)ˆCð ×*Ò*¨1¨b°$¸¸SÑAÔAˆAð ˆCð �q˜˜#˜”wÑˆGð �#�$�$”ˆAð7	ð: ˆr\   c                ód  — |t          |¦  «        f| j        v rB|t          |¦  «        f}| j        |         d         }t          t          ||¦  «        ¦  «        }n˜|df| j        v rh|df}| j        |         d         }i }t	          |¦  «        D ]>\  }	}
|
d         dk    r"d                     ||	d …         ¦  «        ||
<    n||	         ||
<   Œ?n%d                     |¬¦  «        }t          |¦  «        ‚| j        |         d         }| j        |         d         }d	}d}	 |                     |¦  «        }|€||z  }n]| 	                    ¦   «         }
| 
                    ¦   «         }||d |…         ||
         z   z  }|                     ¦   «         }||d …         }Œz|d |…         |z   ||d …         z   }|S )
Nrd   r’   r   ú,z'{f}' is out of the whitelist.r¨   r°   r±   rƒ   )rp   r    r¢   Úzipru   r¼   r¸   r£   r·   r¹   r»   rÆ   )r¤   rW   rÂ   rd   rÐ   rÆ   rÈ   Úx_argsrž   rl   r­   rÄ   Útemplater±   rÎ   rÏ   rÃ   Úxbgns                     rZ   rÍ   z'MathematicaParser._convert_one_function|  sì  € à•�D‘	”	ˆ?˜dÔ/Ð/Ð/Ø•s˜4‘y”y�/ˆCð Ô& sÔ+¨FÔ3ˆFõ •S˜ Ñ&Ô&Ñ'Ô'ˆAˆAð �#ˆY˜$Ô+Ð+Ð+Ø�s�)ˆCð Ô& sÔ+¨FÔ3ˆFð ˆAÝ! &Ñ)Ô)ð ð ‘��1Ø�Q”4˜3’;�;ØŸ8š8 D¨¨¨¤HÑ-Ô-�A�a‘DØ�EØ˜A”w��!‘�øð 3×9Ò9¸BÐ9Ñ?Ô?ˆCÝ˜S‘/”/Ð!ð Ô$ SÔ)¨$Ô/ˆð Ô Ô$ UÔ+ˆàˆØˆð	&Ø—
’
˜8Ñ$Ô$ˆAàˆyØ˜8Ñ#�Øð —’‘	”	ˆAð —7’7‘9”9ˆDð �x   ”¨¨1¬Ñ-Ñ-ˆGð —%’%‘'”'ˆCð     ”~ˆHð)	&ð. ˆdˆsˆdŒG�gÑ  # $ $¤Ñ'ˆàˆr\   c                ó  — |j         }|                     ¦   «         dz   }g g }}g }|}t          ||d…         |¦  «        D ]¿\  }}	|	dk    r&|s$|s"|                     |||…         ¦  «         |dz   }|	dk    r|                     |	¦  «         n|	dk    r|                     ¦   «          |	dk    r|                     |	¦  «         Œƒ|	dk    r6|r|                     ¦   «          Œ |                     |||…         ¦  «          nŒÀ|dz   }
||
fS )z'Get arguments of a Mathematica functionra   NrÓ   r�   r‘   rŒ   r�   )ÚstringrÆ   ru   ÚappendÚpop)ri   rÃ   rW   ÚancÚsquareÚcurlyrd   rÏ   rl   ÚcÚfunc_ends              rZ   rº   zMathematicaParser._get_args¾  s5  € ð ŒHˆØ�eŠe‰gŒg˜‰kˆØ˜B�ˆØˆð ˆÝ˜a   œg sÑ+Ô+ð 	ð 	‰DˆAˆqà�CŠxˆx ˆx°%ˆxØ—’˜A˜c !˜eœHÑ%Ô%Ð%Ø˜!‘e�ð �CŠxˆxØ—’˜Q‘”��Ø�c’�Ø—	’	‘”�ð �CŠxˆxØ—’˜aÑ Ô Ð Ð Ø�c’�Øð Ø—J’J‘L”L�L�Là—K’K  # a %¤Ñ)Ô)Ð)Ø�Eð ð �q‘5ˆà�Xˆ~Ðr\   c                óL   — | j         |         }|                     ||¦  «        }|S r   )ÚREPLACEMENTSÚreplace)ri   rW   ÚbefÚafts       rZ   rµ   zMathematicaParser._replaceä  s'   € àÔ˜sÔ#ˆØ�IŠI�c˜3ÑÔˆØˆr\   c                óN   — | j         |         \  }}|                     ||¦  «        S r   )ÚRULESÚsub)ri   rW   rä   r±   rå   s        rZ   r´   zMathematicaParser._apply_rulesê  s#   € à”9˜S”>‰ˆˆSØ�wŠw�s˜A‰ŒÐr\   c                óô   — dD ]_}|                      |d         ¦  «        |                      |d         ¦  «        k    r%d                     |¬¦  «        }t          |¦  «        ‚Œ`d|v rd}t          |¦  «        ‚d S )N))rŒ   r�   )r�   r‘   )ú(ú)r   ra   r§   r¨   r�   z Currently list is not supported.)Úcountr¸   r£   )ri   rW   ÚbracketrÄ   s       rZ   r³   zMathematicaParser._check_inputï  s†   € à;ð 	&ð 	&ˆGØ�wŠw�w˜q”zÑ"Ô" a§g¢g¨g°a¬jÑ&9Ô&9Ò9Ð9Ø7×>Ò>ÀÐ>ÑCÔC�Ý  ‘o”oÐ%ð :ð �!ˆ8ˆ8Ø4ˆCÝ˜S‘/”/Ð!ð ˆ8r\   c                ób  — |                       |¦  «         |                      |d¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                      |¦  «        }|                      |d¦  «        }|                      |d¦  «        }|S )Nr“   rŽ   r”   r•   r�   r–   )r³   r´   rµ   rÑ   )r¤   rW   s     rZ   rV   zMathematicaParser._parse_oldú  s¶   € à×Ò˜!ÑÔÐð ×Ò˜a Ñ.Ô.ˆð �MŠM˜!˜SÑ!Ô!ˆð ×Ò˜a Ñ*Ô*ˆØ×Ò˜a Ñ*Ô*ˆð ×"Ò" 1Ñ%Ô%ˆð �MŠM˜!˜SÑ!Ô!ˆð ×Ò˜a Ñ&Ô&ˆð ˆr\   c                ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r   )Ú_from_mathematica_to_tokensÚ_from_tokens_to_fullformlistÚ_from_fullformlist_to_sympy)r¤   rW   Ús2Ús3Ús4s        rZ   r^   zMathematicaParser.parse  s@   € Ø×-Ò-¨aÑ0Ô0ˆØ×.Ò.¨rÑ2Ô2ˆØ×-Ò-¨bÑ1Ô1ˆØˆ	r\   ÚInfixÚPrefixÚPostfixÚFlatÚRightÚLeftú;c                ó^   — t          | t          ¦  «        r| r| d         dk    r| dgz   nd| dgS )Nr   ÚCompoundExpressionÚNull)rs   Úlist©r­   s    rZ   ú<lambda>zMathematicaParser.<lambda>%  sW   € ½
À1ÅdÑ8KÔ8Kð  )ZÐPQð  )ZÐVWÐXYÔVZÐ^rÒVrÐVr¨¨V¨H©¨ð  zNð  PQð  SYð  yZ€ r\   rþ   ÚSetÚ
SetDelayedÚAddToÚSubtractFromÚTimesByÚDivideBy)ú=z:=z+=z-=z*=z/=z//c                ó
   — | |gS r   rk   ©r­   Úys     rZ   r  zMathematicaParser.<lambda>(  s
   € ¨1¨a¨&€ r\   ú&r>   z/.Ú
ReplaceAllÚRuleÚRuleDelayed)z->z:>z/;Ú	Conditionr®   ÚAlternativesÚRepeatedÚRepeatedNull)z..z...z||rG   z&&rH   ú!ÚNotÚSameQÚUnsameQ)z===z=!=ÚEqualÚUnequalÚ	LessEqualÚLessÚGreaterEqualÚGreater)z==z!=z<=ú<z>=ú>z;;ÚSpanÚPlus©ú+ú-ÚTimes)r’   ú/ú.ÚDotc                ó6   — t                                | ¦  «        S r   )rU   Ú_get_negr  s    rZ   r  zMathematicaParser.<lambda>8  s   € Õ'8×'AÒ'AÀ!Ñ'DÔ'D€ r\   c                ó   — | S r   rk   r  s    rZ   r  zMathematicaParser.<lambda>9  s   €  q€ r\   )r%  r$  r�   ÚPowerÚApplyÚMapÚMapAllc                ó   — d| |ddggS )Nr.  ÚListÚ1rk   r  s     rZ   r  zMathematicaParser.<lambda>;  s   € ÐZaÐcdÐfgÐjpÐruÐivÐYw€ r\   )z@@z/@z//@z@@@Ú
DerivativeÚ	FactorialÚ
Factorial2Ú	Decrement)ú'r  z!!z--c                ó   — | g|¢S r   rk   r  s     rZ   r  zMathematicaParser.<lambda>=  s   € ¨!¨¨a¨€ r\   c                ó   — d| g|¢S )NÚPartrk   r  s     rZ   r  zMathematicaParser.<lambda>=  s   € ÀfÈaÀ_ÐRSÀ_€ r\   )rŒ   ú[[c                ó   — dg| ¢S )Nr2  rk   r  s    rZ   r  zMathematicaParser.<lambda>>  s   € ¨ |° |€ r\   c                ó   — | d         S )Nr   rk   r  s    rZ   r  zMathematicaParser.<lambda>>  s
   € ÀAÀaÄD€ r\   )r�   rê   ú?ÚPatternTestc                ó   — d| dggS ©NÚPatternÚBlankrk   r  s    rZ   r  zMathematicaParser.<lambda>A  s   € ˜I q¨7¨)Ð4€ r\   c                ó   — dd| dgggS )NÚOptionalrC  rD  rk   r  s    rZ   r  zMathematicaParser.<lambda>B  s   € ˜Z¨)°Q¸¸	Ð)BÐC€ r\   c                ó   — d| dggS )NrC  ÚBlankSequencerk   r  s    rZ   r  zMathematicaParser.<lambda>C  s   € ˜Y¨¨OÐ+<Ð=€ r\   c                ó   — d| dggS )NrC  ÚBlankNullSequencerk   r  s    rZ   r  zMathematicaParser.<lambda>D  s   € ˜i¨Ð-@Ð,AÐB€ r\   )Ú_z_.Ú__Ú___rK  c                ó   — d| d|ggS rB  rk   r  s     rZ   r  zMathematicaParser.<lambda>F  s   € ¨)°Q¸À!¸Ð)E€ r\   rb   ÚSlotSequence)ú#z##z7list[tuple[str, str | None, dict[str, str | Callable]]]Ú_mathematica_op_precedencec                 ó
   — ddgS )Nrb   r3  rk   rk   r\   rZ   r  zMathematicaParser.<lambda>K  s
   € �f˜c�]€ r\   c                 ó
   — ddgS )NrO  r3  rk   rk   r\   rZ   r  zMathematicaParser.<lambda>L  s   € �~ sÐ+€ r\   z[A-Za-z][A-Za-z0-9]*z (?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+))rê   rŒ   r<  r�   )rë   r�   ú]]r‘   c                ó~   — t          |t          ¦  «        r$t          j        t          j        |¦  «        rd|› �ndd|gS )Nr%  r&  ú-1)rs   Ústrr¾   ÚmatchrU   Ú_number©ri   r­   s     rZ   r+  zMathematicaParser._get_negU  sA   € å$ Q­Ñ,Ô,Ðoµ´Õ:KÔ:SÐUVÑ1WÔ1WÐoˆw�1ˆwˆwˆwÐ^eÐgkÐmnÐ]oÐor\   c                ó   — d|dgS )Nr-  rV  rk   rZ  s     rZ   Ú_get_invzMathematicaParser._get_invY  s   € à˜˜DÐ!Ð!r\   c                ó  — | j         �| j         S | j        | j        g}| j        d d …         | j        d d …         z   }| j        D ] \  }}}|D ]}|                     |¦  «         ŒŒ!|                     d„ ¬¦  «         |                     t          t          j        |¦  «        ¦  «         |                     d¦  «         |                     d¦  «         t          j        dd                     |¦  «        z   dz   ¦  «        }|| _         | j         S )Nc                ó"   — t          | ¦  «         S r   )rp   r  s    rZ   r  z2MathematicaParser._get_tokenizer.<locals>.<lambda>h  s   € ­#¨a©&¬&¨€ r\   )rÈ   rÓ   ú
rê   r®   rë   )Ú_regex_tokenizerÚ_literalrY  Ú_enclosure_openÚ_enclosure_closerQ  rÚ   ÚsortÚextendÚmapr¾   Úescaper¿   r¼   )r¤   ÚtokensÚtokens_escapeÚtypÚstratÚsymdictÚkÚ	tokenizers           rZ   Ú_get_tokenizerz MathematicaParser._get_tokenizer_  s  € ØÔ Ð,àÔ(Ð(Ø”- ¤Ð.ˆØÔ,¨Q¨Q¨QÔ/°$Ô2GÈÈÈÔ2JÑJˆØ#'Ô#Bð 	(ð 	(ÑˆC�˜Øð (ð (�Ø×$Ò$ QÑ'Ô'Ð'Ð'ð(à×ÒÐ0Ð0ÐÑ1Ô1Ð1Ø�Š•c�"œ) ]Ñ3Ô3Ñ4Ô4Ð4Ø�Š�cÑÔÐØ�Š�dÑÔÐÝ”J˜s S§X¢X¨fÑ%5Ô%5Ñ5¸Ñ;Ñ<Ô<ˆ	Ø )ˆÔØÔ$Ð$r\   ÚcoderW  c                óF  ‡— |                       ¦   «         Šg }	 |                     d¦  «        }|dk    r)t          |¦  «        dk    r|                     |¦  «         n²t	          j        d||dz   d …         ¦  «        }|€t          d¦  «        ‚||                     ¦   «         z   dz   }|dk    r|                     |d |…         ¦  «         |                     d||dz   |…                              d	d¦  «        g¦  «         ||dz   d …         }Œöt          |¦  «        D ]†\  }}t          |t          ¦  «        rŒ	 |                     d
¦  «        }|dk    rnI|                     d¦  «        }	|	dk    s|	|k     rt          d¦  «        ‚|d |…         ||	dz   d …         z   }Œe|||<   Œ‡ˆfd„|D ¦   «         }
d„ |
D ¦   «         }|r/|d         dk    r#|                     d¦  «         |r|d         dk    °#|r/|d         dk    r#|                     d¦  «         |r|d         dk    °#|S )NTú"rª   r   z(?<!\\)"ra   z"mismatch in string "  " expressionÚ_Strz\"z(*z*)zmismatch in comment (*  *) codero   c                ó’   •— g | ]C}t          |t          ¦  «        r)|                     ¦   «         r‰                     |¦  «        n|g‘ŒDS rk   )rs   rW  ÚisasciiÚfindall)re   rl   rn  s     €rZ   rg   zAMathematicaParser._from_mathematica_to_tokens.<locals>.<listcomp>“  sM   ø€ ÐpÐpÐpÐ_`­z¸!½SÑ/AÔ/AÐZÀaÇiÂiÁkÄkÐZ�y×(Ò(¨Ñ+Ô+Ð+ÐXYÐWZÐpÐpÐpr\   c                ó   — g | ]	}|D ]}|‘ŒŒ
S rk   rk   )re   rl   Újs      rZ   rg   zAMathematicaParser._from_mathematica_to_tokens.<locals>.<listcomp>”  s%   € Ð4Ð4Ð4˜°!Ð4Ð4¨Q�!Ð4Ð4Ð4Ð4r\   r_  )ro  Úfindrp   rÚ   r¾   r·   rv   r»   rã   ru   rs   r   rÛ   )r¤   rp  Úcode_splitsÚstring_startÚ	match_endÚ
string_endrl   Ú
code_splitÚpos_comment_startÚpos_comment_endÚtoken_listsrh  rn  s               @rZ   rð   z-MathematicaParser._from_mathematica_to_tokensp  s¡  ø€ Ø×'Ò'Ñ)Ô)ˆ	ð )+ˆð	'ØŸ9š9 T™?œ?ˆLØ˜rÒ!Ð!Ý�t‘9”9˜q’=�=Ø×&Ò& tÑ,Ô,Ð,ØÝœ	 +¨t°LÀ±N°O°OÔ/DÑEÔEˆIØÐ Ý!Ð"FÑGÔGÐGØ%¨	¯ªÑ(9Ô(9Ñ9¸AÑ=ˆJØ˜aÒÐØ×"Ò" 4¨¨¨Ô#6Ñ7Ô7Ð7Ø×Ò ¨¨\¸!©^¸JÐ-FÔ(G×(OÒ(OÐPUÐWZÑ([Ô([Ð\Ñ]Ô]Ð]Ø˜
 1™˜˜Ô&ˆDð	'õ  ' {Ñ3Ô3ð 	(ð 	(‰MˆAˆzÝ˜*¥dÑ+Ô+ð Øð]Ø$.§O¢O°DÑ$9Ô$9Ð!Ø$¨Ò*Ð*ØØ",§/¢/°$Ñ"7Ô"7�Ø" bÒ(Ð(¨OÐ>OÒ,OÐ,OÝ%Ð&GÑHÔHÐHØ'Ð(:Ð):Ð(:Ô;¸jÈÐYZÑIZÐI[ÐI[Ô>\Ñ\�
ð]ð (ˆK˜‰NˆNð qÐpÐpÐpÐdoÐpÑpÔpˆØ4Ð4˜[Ð4Ñ4Ô4ˆð ð 	˜ œ dÒ*Ð*Ø�JŠJ�q‰MŒMˆMð ð 	˜ œ dÒ*Ð*ð ð 	˜ œ tÒ+Ð+Ø�JŠJ�r‰NŒNˆNð ð 	˜ œ tÒ+Ð+ð ˆr\   Útokenú
str | listÚreturnÚboolc                óª   — t          |t          ¦  «        rdS t          j        | j        |¦  «        rdS t          j        d| j        z   |¦  «        rdS dS )NFz-?T)rs   r   r¾   rX  ra  rY  ©r¤   r‚  s     rZ   Ú_is_opzMathematicaParser._is_opŸ  sY   € Ý�e�TÑ"Ô"ð 	Ø�5ÝŒ8�D”M 5Ñ)Ô)ð 	Ø�5ÝŒ8�D˜4œ<Ñ'¨Ñ/Ô/ð 	Ø�5Øˆtr\   c                ó:   — |dv rdS |                       |¦  «         S )N)rë   r‘   T©rˆ  r‡  s     rZ   Ú_is_valid_star1z!MathematicaParser._is_valid_star1¨  ó'   € Ø�JÐÐØ�4Ø—;’;˜uÑ%Ô%Ð%Ð%r\   c                ó:   — |dv rdS |                       |¦  «         S )N)rê   r�   TrŠ  r‡  s     rZ   Ú_is_valid_star2z!MathematicaParser._is_valid_star2­  rŒ  r\   rh  r   c                óø  — g g}g }d}|t          |¦  «        k     �r#||         }|| j        v rG|d                              |¦  «         |                     |¦  «         |                     g ¦  «         �n²|dk    r~t          |d         ¦  «        dk    r0|d         d         |d         k    rt          d|d         z  ¦  «        ‚|                      |d         ¦  «        |d<   |                     g ¦  «         �n.|| j        v �r	| j                             |¦  «        }| j        |         |d         k    r¡t          d¦  «        }|dk    rŠ|d         dk    r~|d         dk    r|                     |d	z   d
¦  «         nZ|d         dk    rK||d	z            d
k    r	d||d	z   <   n6||d	z            dk    r"d||d	z   <   |                     |dz   d
¦  «         n|‚n|‚t          |d         ¦  «        dk    r!|d         d         dk    rt          d¦  «        ‚|                      |d         d¦  «        }||d<   g }	|d         d         |d         k    r?|	                     |                     ¦   «         ¦  «         |d         d         |d         k    °?|	 	                    ¦   «          |d         dk    r2t          |	¦  «        d	k    rt          dt          |	¦  «        z  ¦  «        ‚|d                              |	¦  «         |                     d¦  «         n|d                              |¦  «         |d	z  }|t          |¦  «        k     �°#t          |¦  «        d	k    rt          d¦  «        ‚|                      |d         ¦  «        S )Nr   rª   rÓ   éþÿÿÿz %s cannot be followed by comma ,zunmatched enclosurerT  rŒ   ra   r�   r<  ro   rê   z( ) not valid syntaxTz1( must be followed by one expression, %i detectedz"Stack should have only one element)rp   rb  rÚ   rv   Ú_parse_after_bracesrc  ÚindexÚinsertrÛ   ÚreverseÚRuntimeError)
r¤   rh  ÚstackÚopen_seqÚpointerr‚  ÚindÚunmatched_enclosureÚ
last_stackÚnew_stack_elements
             rZ   rñ   z.MathematicaParser._from_tokens_to_fullformlist²  s   € Ø˜DˆØˆØˆØ�˜F™œÒ#Ñ#Ø˜7”OˆEØ˜Ô,Ð,Ð,Ø�b”	× Ò  Ñ'Ô'Ð'Ø—’ Ñ&Ô&Ð&Ø—’˜RÑ Ô Ð Ñ Ø˜#’�Ý�u˜R”y‘>”> QÒ&Ð&¨5°¬9°R¬=¸HÀR¼LÒ+HÐ+HÝ%Ð&HÈ8ÐTVÌ<Ñ&WÑXÔXÐXØ ×4Ò4°U¸2´YÑ?Ô?��b‘	Ø—’˜RÑ Ô Ð Ñ Ø˜$Ô/Ð/Ñ/ØÔ+×1Ò1°%Ñ8Ô8�ØÔ'¨Ô,°¸´Ò<Ð<Ý*5Ð6KÑ*LÔ*LÐ'Ø ’}�}¨°"¬¸Ò)<Ð)<Ø# Bœ<¨3Ò.Ð.ð
 #ŸMšM¨'°!©)°SÑ9Ô9Ð9Ð9Ø% bœ\¨TÒ1Ð1Ø% g¨a¡iÔ0°CÒ7Ð7Ø48  w¨q¡yÑ 1Ð 1Ø!'¨°©	Ô!2°dÒ!:Ð!:Ø48  w¨q¡yÑ 1Ø &§¢¨g°a©i¸Ñ =Ô =Ð =Ð =à&9Ð 9ð 2ð 2Ð1Ý�u˜R”y‘>”> QÒ&Ð&¨5°¬9°R¬=¸CÒ+?Ð+?Ý%Ð&<Ñ=Ô=Ð=Ø!×5Ò5°e¸B´iÀÑFÔF�
Ø&��b‘	Ø$&Ð!Ø˜B”i ”m x°¤|Ò3Ð3Ø%×,Ò,¨U¯YªY©[¬[Ñ9Ô9Ð9ð ˜B”i ”m x°¤|Ò3Ð3à!×)Ò)Ñ+Ô+Ð+Ø˜B”< 3Ò&Ð&­3Ð/@Ñ+AÔ+AÀQÒ+FÐ+FÝ%Ð&YÕ\_Ð`qÑ\rÔ\rÑ&rÑsÔsÐsØ�b”	× Ò Ð!2Ñ3Ô3Ð3Ø—’˜RÑ Ô Ð Ð à�b”	× Ò  Ñ'Ô'Ð'Ø�q‰LˆGð] �˜F™œÒ#Ñ#õ^ ˆu‰:Œ:˜Š?ˆ?ÝÐCÑDÔDÐDØ×'Ò'¨¨a¬Ñ1Ô1Ð1r\   ÚlinesÚinside_enclosurec                ó   — d}t          |¦  «        }||k     �r5||         }|dk    �r|r|                     |¦  «         |dz  }Œ3|dk    r|                     d¦  «         |dz  }ŒT|dk    rJ	 |                      |d |…         |¦  «        }n2# t          $ r |                     |¦  «         |dz  }Y Œ w xY w|d         }t          |¦  «        dk    r*|d         dk    r|                     |dd …         ¦  «         n|                     |¦  «         t          |¦  «        D ]}|                     d¦  «         Œ||z  }d}�Œ.|dz  }||k     �°3d S d S )Nr   r_  ra   rþ   )rp   rÛ   r‘  rv   re  rÚ   Úrange)	r¤   r�  rh  rž  r˜  Úsizer‚  Ú	prev_exprrl   s	            rZ   Ú_util_remove_newlinesz'MathematicaParser._util_remove_newlinesé  sŽ  € ØˆÝ�6‰{Œ{ˆØ˜Šn‰nØ˜7”OˆEØ˜Š}‰}Ø#ð à—J’J˜wÑ'Ô'Ð'Ø˜A‘I�DØØ˜a’<�<Ø—J’J˜q‘M”M�MØ˜A‘I�DØØ˜Q’;�;ð!Ø$(×$<Ò$<¸VÀHÀWÀHÔ=MÐO_Ñ$`Ô$`˜	˜	øÝ&ð !ð !ð !ØŸ
š
 7Ñ+Ô+Ð+Ø ™	˜Ø ˜ð!øøøð
 !' q¤	�IÝ�y‘>”> AÒ%Ð%¨)°A¬,Ð:NÒ*NÐ*NØ—L’L ¨1¨2¨2¤Ñ/Ô/Ð/Ð/à—L’L Ñ+Ô+Ð+Ý˜w™œð "ð "�AØ—J’J˜q‘M”M�M�MØ˜‘�Ø�ÙØ�q‰LˆGð= ˜Šn‰nˆnˆnˆnˆns   Á-B Â$B3Â2B3c                ó^  — t          |¦  «        }d}||k     r•|dk    r‚|                      ||dz
           ¦  «        rd|                      ||         ¦  «        rI||         dk    rd||<   ||dz            d         ||dz   <   n |                     |d¦  «         |dz  }|dz  }|dz  }||k     °“d S d S )Nr   ra   rê   r’   )rp   r‹  rŽ  r“  )r¤   rh  r¡  r˜  s       rZ   Ú_util_add_missing_asterisksz-MathematicaParser._util_add_missing_asterisks  sØ   € Ý˜‘K”KˆØˆØ˜ŠnˆnØ˜!’�Ø×(Ò(¨°¸!±Ô)<Ñ=Ô=ð à×(Ò(¨°¬Ñ9Ô9ð ð ˜'”? cÒ)Ð)à&)�F˜7‘OØ*0°¸1±Ô*=¸aÔ*@�F˜7 Q™;Ñ'Ð'à—M’M '¨3Ñ/Ô/Ð/Ø˜q‘L�GØ˜A‘I�DØ�q‰LˆGð! ˜Šnˆnˆnˆnˆnˆnr\   Fc                ó<  — d}g }|                       |||¦  «         t          | j        ¦  «        D �]¾\  }}}d|v r|                      |¦  «         t	          |¦  «        }d}	|	|k     �r†||	         }
t          |
t          ¦  «        �r\|
|v �rW||
         }t          |t          ¦  «        r|g}d}ng }d}|
dv r5|| j        k    r*|	dk    r$|                      ||	dz
           ¦  «        s|	dz  }	ŒŠ|| j	        k    rQ|	dk    sE|	|dz
  k    s<|                      ||	dz
           ¦  «        s|                      ||	dz            ¦  «        r|	dz  }	Œæd}|||	<   || j	        k    �rõ| 
                    |	dz
  ¦  «        }| 
                    |	¦  «        }|
dk    r|                      |¦  «        }n|
dk    r|                      |¦  «        }|	dz  }	|d	z  }|                     |¦  «         |}|| j        k    rè|	d	z   |k     rÈ|                      ||	dz            |
¦  «        r©|                     |¦  «         | 
                    |	dz   ¦  «        }| 
                    |	dz   ¦  «        }|dk    r|                      |¦  «        }n|dk    r|                      |¦  «        }|d	z  }|	d	z   |k     r|                      ||	dz            |
¦  «        °©|                     |¦  «         �n˜|| j        k    r›|	d	z   |k     r{||	dz            |
k    rl|                     ||g¦  «         |d
         }| 
                    |	dz   ¦  «         | 
                    |	dz   ¦  «        }|d	z  }|	d	z   |k     r||	dz            |
k    °l|                     |¦  «         �nò|| j        k    rµ|	dz   |k     r•||	dz            |
k    r†t          |t          ¦  «        r|||         |g||<   n |||         |¦  «        ||<   | 
                    |	dz   ¦  «         | 
                    |	dz   ¦  «        }|d	z  }|	dz   |k     r||	dz            |
k    °†|                     |¦  «         �n2|                     |¦  «         �n|| j        k    r‚|�t%          d¦  «        ‚|	|dz
  k    s|                      ||	dz            ¦  «        r | j        |
         ¦   «         ||	<   n¿|                     | 
                    |	dz   ¦  «        ¦  «         |dz  }nŽ|| j        k    rƒ|�t%          d¦  «        ‚|	dk    s|                      ||	dz
           ¦  «        r | j        |
         ¦   «         ||	<   n5|                     | 
                    |	dz
  ¦  «        ¦  «         |	dz  }	|dz  }t          |t*          ¦  «        rct-          j        t*          |¦  «        } ||Ž }|                     ¦   «          t          |t2          ¦  «        r|                     |¦  «         n|||	<   |	dz  }	|	|k     �°†�ŒÀt	          |¦  «        dk    s&t	          |¦  «        dk    r:t	          |¦  «        dk    r'|r|                      ||¦  «        S t9          d¦  «        ‚t	          |¦  «        dk    r3|d         r"|d         d         dk    r|d         dd …         }dg|¢|¢}|S |d         S )NFr’   r   ra   r#  Tr'  r%  ro   rª   z1'Prefix' op_type should not have a grouping stratz0unable to create a single AST for the expressionrþ   )r£  ÚreversedrQ  r¥  rp   rs   rW  ÚPREFIXrˆ  ÚINFIXrÛ   r\  r+  rÚ   ÚFLATÚ_check_op_compatibleÚRIGHTÚLEFTÚ	TypeErrorÚ_missing_arguments_defaultÚPOSTFIXr   ÚtypingÚcastÚclearr   re  r‘  rv   )r¤   rh  rž  Úchangedr�  Úop_typeÚgrouping_stratÚop_dictr¡  r˜  r‚  Úop_nameÚnodeÚfirst_indexÚarg1Úarg2Únode_pÚother_opÚop_callÚnew_nodeÚcompound_expressions                        rZ   r‘  z%MathematicaParser._parse_after_braces!  su  € àˆØˆà×"Ò" 5¨&Ð2BÑCÔCÐCå08¸Ô9XÑ0YÔ0Yð _	ñ _	Ñ,ˆG�^ WØ�gˆ~ˆ~Ø×0Ò0°Ñ8Ô8Ð8Ý˜F™œˆDØˆGØ˜D’.‘.Ø˜wœ�Ý˜e¥SÑ)Ô)ñ W7¨e°wÐ.>Ñ.>Ø.5°e¬n�Gõ " '­3Ñ/Ô/ð (Ø '˜y˜Ø&'˜˜à!˜Ø&'˜Ø 
Ð*Ð*¨w¸$¼+Ò/EÐ/EÈ'ÐTUÊ+È+Ð^b×^iÒ^iÐjpÐqxÐ{|Ñq|Ôj}Ñ^~Ô^~È+ð   1™˜Ø Ø $¤*Ò,Ð,Ø" aš<˜<¨7°d¸Q±hÒ+>Ð+>À$Ç+Â+ÈfÐU\Ð_`ÑU`ÔNaÑBbÔBbÐ+>Ðfj×fqÒfqÐrxð  zAð  DEñ  zEô  sFñ  gGô  gGÐ+>Ø# q™L˜GØ$Ø"�GØ&*�F˜7‘OØ $¤*Ò,Ñ,Ø%Ÿzšz¨'°!©)Ñ4Ô4˜Ø%Ÿzšz¨'Ñ2Ô2˜Ø  Cš<˜<Ø#'§=¢=°Ñ#6Ô#6˜D˜DØ" cš\˜\Ø#'§=¢=°Ñ#6Ô#6˜DØ 1™˜Ø ™	˜ØŸš DÑ)Ô)Ð)Ø!%˜Ø)¨T¬YÒ6Ð6Ø")¨A¡+°Ò"4Ð"4¸×9RÒ9RÐSYÐZaÐbcÑZcÔSdÐfkÑ9lÔ9lÐ"4Ø &§¢¨dÑ 3Ô 3Ð 3Ø+1¯:ª:°g¸a±iÑ+@Ô+@ Ø'-§z¢z°'¸!±)Ñ'<Ô'< Ø#+¨s¢? ?Ø+/¯=ª=¸Ñ+>Ô+> D DØ%-°¢_ _Ø+/¯=ª=¸Ñ+>Ô+> DØ $¨¡	 ð #*¨A¡+°Ò"4Ð"4¸×9RÒ9RÐSYÐZaÐbcÑZcÔSdÐfkÑ9lÔ9lÐ"4ð #ŸMšM¨$Ñ/Ô/Ð/Ñ/Ø+¨t¬zÒ9Ð9Ø")¨A¡+°Ò"4Ð"4¸ÀÈÁ	Ô9JÈeÒ9SÐ9SØ &§¢¨w¸¨oÑ >Ô >Ð >Ø)/°¬ Ø &§
¢
¨7°1©9Ñ 5Ô 5Ð 5Ø'-§z¢z°'¸!±)Ñ'<Ô'< Ø $¨¡	 ð #*¨A¡+°Ò"4Ð"4¸ÀÈÁ	Ô9JÈeÒ9SÐ9Sð #ŸMšM¨$Ñ/Ô/Ð/Ñ/Ø+¨t¬yÒ8Ð8Ø")¨A¡+°Ò"4Ð"4¸ÀÈÁ	Ô9JÈeÒ9SÐ9SÝ#-¨gµsÑ#;Ô#;ð !]Ø;BÀFÈ;ÔDWÐY]Ð:^ F¨;Ñ$7Ð$7à:A¸'À&ÈÔBUÐW[Ñ:\Ô:\ F¨;Ñ$7Ø &§
¢
¨7°1©9Ñ 5Ô 5Ð 5Ø'-§z¢z°'¸!±)Ñ'<Ô'< Ø $¨¡	 ð #*¨A¡+°Ò"4Ð"4¸ÀÈÁ	Ô9JÈeÒ9SÐ9Sð #ŸMšM¨$Ñ/Ô/Ð/Ñ/à ŸKšK¨Ñ-Ô-Ð-Ñ-Ø  D¤KÒ/Ð/Ø)Ð5Ý"+Ð,_Ñ"`Ô"`Ð`Ø" d¨Q¡hÒ.Ð.°$·+²+¸fÀWÈqÁ[Ô>QÑ2RÔ2RÐ.Ø.T¨dÔ.MÈeÔ.TÑ.VÔ.V˜F 7™O˜Oà ŸKšK¨¯
ª
°7¸1±9Ñ(=Ô(=Ñ>Ô>Ð>Ø  A™I˜D˜DØ  D¤LÒ0Ð0Ø)Ð5Ý"+Ð,_Ñ"`Ô"`Ð`Ø" aš<˜<¨4¯;ª;°v¸gÈ¹kÔ7JÑ+KÔ+K˜<Ø.T¨dÔ.MÈeÔ.TÑ.VÔ.V˜F 7™O˜Oà ŸKšK¨¯
ª
°7¸1±9Ñ(=Ô(=Ñ>Ô>Ð>Ø# q™L˜GØ  A™I˜DÝ! '­8Ñ4Ô4ð 7Ý,2¬K½À'Ñ,JÔ,J˜Ø#* 7¨D >˜ØŸ
š
™œ˜Ý% hµÑ5Ô5ð 7Ø ŸKšK¨Ñ1Ô1Ð1Ð1à.6˜F 7™OØ˜1‘�ðu ˜D’.‘.ùõv ˆv‰;Œ;˜Š?ˆ?�s 5™zœz¨Qš˜µ3°v±;´;À!Ò3CÐ3CØð Jð ×/Ò/°Ð8HÑIÔIÐIÝÐPÑQÔQÐQÝˆu‰:Œ:˜Š>ˆ>Ø�aŒyð '˜V AœY qœ\Ð-AÒAÐAØ œ 1 2 2œ�Ø#7Ð"I¸%Ð"IÀ&Ð"IÐØ&Ð&Ø�aŒyÐr\   Úop1Úop2c                óN   — ||k    rdS ddh}ddh}||v r||v rdS ||v r||v rdS dS )NTr’   r'  r$  r%  Frk   )r¤   rÂ  rÃ  ÚmuldivÚaddsubs        rZ   r«  z&MathematicaParser._check_op_compatibleš  sS   € Ø�#Š:ˆ:Ø�4Ø�s�ˆØ�s�ˆØ�&ˆ=ˆ=˜S F˜]˜]Ø�4Ø�&ˆ=ˆ=˜S F˜]˜]Ø�4Øˆur\   Úwmexprc                ó  — g }|g}t          j        d|¦  «        }d}|D �]e}|€ �n_|                     ¦   «         }|||…                              dd¦  «                             dd¦  «                             dd¦  «                             ¦   «         }|                     ¦   «         dk    r"|dk    r|d                              |¦  «         n£|                     ¦   «         dk    r6|dk    r|d                              |¦  «         |                     ¦   «          nU|                     ¦   «         dk    r=|d                              |g¦  «         |                     |d         d         ¦  «         |                     ¦   «         }�Œg|d         S )	zH
        Parses FullForm[Downvalues[]] generated by Mathematica
        z[\[\],]r   NrÓ   rƒ   r�   rŒ   rª   )	r¾   Úfinditerr»   rã   Ústripr¹   rÚ   rÛ   rÆ   )	r¤   rÇ  Úoutr–  Ú	generatorÚlast_posrX  ÚpositionÚ	last_exprs	            rZ   Ú_from_fullform_to_fullformlistz0MathematicaParser._from_fullform_to_fullformlist¥  sq  € ð ˆØ�ˆÝ”K 
¨FÑ3Ô3ˆ	ØˆØð 	#ñ 	#ˆEØˆ}Ø‘Ø—{’{‘}”}ˆHØ˜x¨Ð0Ô1×9Ò9¸#¸rÑBÔB×JÒJÈ3ÐPRÑSÔS×[Ò[Ð\_ÐacÑdÔd×jÒjÑlÔlˆIà�{Š{‰}Œ} Ò#Ð#Ø ’?�?Ø˜"”I×$Ò$ YÑ/Ô/Ð/øØ—’‘” #Ò%Ð%Ø ’?�?Ø˜"”I×$Ò$ YÑ/Ô/Ð/Ø—	’	‘”��Ø—’‘” #Ò%Ð%Ø�b”	× Ò  ) Ñ-Ô-Ð-Ø—’˜U 2œY rœ]Ñ+Ô+Ð+Ø—y’y‘{”{ˆH‰HØ�1Œvˆr\   Úpylistc                ó<   ‡‡‡— ddl mŠmŠ ˆˆˆfd„Š ‰|¦  «        S )Nr   )r>   ÚSymbolc                ó(  •— t          | t          ¦  «        rNt          | ¦  «        dk    r,| d         }ˆfd„| dd …         D ¦   «         }  ‰|¦  «        |Ž S t          d¦  «        ‚t          | t          ¦  «        r ‰| ¦  «        S t          | ¦  «        S )Nr   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rk   rk   )re   rw   Ú	converters     €rZ   rg   z\MathematicaParser._from_fullformlist_to_fullformsympy.<locals>.converter.<locals>.<listcomp>Ç  s!   ø€ Ð?Ð?Ð?¨s˜I˜I c™NœNÐ?Ð?Ð?r\   ra   zEmpty list of expressions)rs   r   rp   r£   rW  rN   )ÚexprÚheadrd   r>   rÓ  rÖ  s      €€€rZ   rÖ  zHMathematicaParser._from_fullformlist_to_fullformsympy.<locals>.converterÃ  sž   ø€ Ý˜$¥Ñ%Ô%ð 
&Ý�t‘9”9˜q’=�=Ø œ7�DØ?Ð?Ð?Ð?°d¸1¸2¸2´hÐ?Ñ?Ô?�DØ)˜8˜8 D™>œ>¨4Ð0Ð0å$Ð%@ÑAÔAÐAÝ˜D¥#Ñ&Ô&ð &Ø�v˜d‘|”|Ð#å ‘~”~Ð%r\   )Úsympyr>   rÓ  )r¤   rÑ  r>   rÓ  rÖ  s     @@@rZ   Ú#_from_fullformlist_to_fullformsympyz5MathematicaParser._from_fullformlist_to_fullformsympyÀ  sR   øøø€ Ø*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð ˆy˜Ñ Ô Ð r\   r
   ÚLogc                 ó.   — t          t          | ¦  «        Ž S r   )r   r§  ©rf   s    rZ   r  zMathematicaParser.<lambda>×  s   € �#�x¨™{œ{Ð+€ r\   ÚLog2c                ó"   — t          | d¦  «        S ©Nro   ©r   r  s    rZ   r  zMathematicaParser.<lambda>Ø  s   € �#˜a ™)œ)€ r\   ÚLog10c                ó"   — t          | d¦  «        S )Né
   rá  r  s    rZ   r  zMathematicaParser.<lambda>Ù  s   € �3˜q "™:œ:€ r\   ÚExpÚSqrtr…   r†   r‡   rˆ   r‰   rŠ   ÚArcSinÚArcCosÚArcTanc                 óf   — t          | ¦  «        dk    rt          t          | ¦  «        Ž nt          | Ž S rà  )rp   r*   r§  r)   rÝ  s    rZ   r  zMathematicaParser.<lambda>æ  s(   € µC¸±F´F¸a²K°K�U¥H¨Q¡K¤KÐ0Ð0ÅTÈ1ÀX€ r\   ÚArcCotÚArcSecÚArcCscÚSinhÚCoshÚTanhÚCothÚSechÚCschÚArcSinhÚArcCoshÚArcTanhÚArcCothÚArcSechÚArcCschÚExpandÚImÚReÚFlattenÚPolylogÚCancelÚ
TrigExpandÚSignÚSimplifyÚDeferÚIdentityrÿ   c                 ó   — t           j        S r   )r(   ÚZerorÝ  s    rZ   r  zMathematicaParser.<lambda>  s   € �1œ6€ r\   r+   r,   r-   Ú
PochhammerÚExpIntegralEiÚSinIntegralÚCosIntegralÚAiryAiÚAiryAiPrimeÚAiryBiÚAiryBiPrimeÚLogIntegralÚPrimePiÚPrimeÚPrimeQr2  )r?   r–   c                ó(   ‡ ‡— ˆˆ fd„Š ‰|¦  «        S )Nc                ór  •— t          | t          ¦  «        rzt          | d         t          ¦  «        r ‰| d         ¦  «        }n4‰j                             | d         t	          | d         ¦  «        ¦  «        } |ˆfd„| dd …         D ¦   «         Ž S ‰j                             | t          | ¦  «        ¦  «        S )Nr   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rk   rk   )re   rw   Úrecurses     €rZ   rg   zRMathematicaParser._from_fullformlist_to_sympy.<locals>.recurse.<locals>.<listcomp>2  s!   ø€ Ð?Ð?Ð?¨s˜g˜g c™lœlÐ?Ð?Ð?r\   ra   )rs   r   Ú_node_conversionsÚgetr>   Ú_atom_conversionsrM   )r×  rØ  r  r¤   s     €€rZ   r  z>MathematicaParser._from_fullformlist_to_sympy.<locals>.recurse,  s³   ø€ Ý˜$¥Ñ%Ô%ð GÝ˜d 1œg¥tÑ,Ô,ð RØ"˜7 4¨¤7Ñ+Ô+�D�DàÔ1×5Ò5°d¸1´g½xÈÈQÌÑ?PÔ?PÑQÔQ�DØ�tÐ?Ð?Ð?Ð?°d¸1¸2¸2´hÐ?Ñ?Ô?Ð@Ð@àÔ-×1Ò1°$½À¹¼ÑFÔFÐFr\   rk   )r¤   Úfull_form_listr  s   ` @rZ   rò   z-MathematicaParser._from_fullformlist_to_sympy*  s:   øø€ ð	Gð 	Gð 	Gð 	Gð 	Gð 	Gð ˆw�~Ñ&Ô&Ð&r\   c                óŽ   — |}| j                              ¦   «         D ](\  }}|                     t          |¦  «        |¦  «        }Œ)|S r   )r  r²   rã   r>   )r¤   Úmformr×  Úmma_formÚ
sympy_nodes        rZ   Ú_from_fullformsympy_to_sympyz.MathematicaParser._from_fullformsympy_to_sympy8  sN   € àˆØ$(Ô$:×$@Ò$@Ñ$BÔ$Bð 	@ð 	@Ñ ˆH�jØ—<’<¥¨Ñ 2Ô 2°JÑ?Ô?ˆDˆDØˆr\   r   )rp  rW  )r‚  rƒ  r„  r…  )rh  r   )r�  r   rh  r   rž  r…  )F)rh  r   rž  r…  )rÂ  rW  rÃ  rW  )rÇ  rW  )rÑ  r   )†Ú__name__Ú
__module__Ú__qualname__Ú__doc__rœ   r   ÚarcÚtrir‹   rÂ   Úlowerr°   r�   râ   r¾   r¿   rÀ   rç   r¶   ÚARG_MTRX_PATTERNr½   r—   Ú__annotations__r˜   r™   Úclassmethodr€   r¥   r›   rÑ   rÍ   rº   rµ   r´   r³   rV   r^   r©  r¨  r°  rª  r¬  r­  rQ  r¯  ra  rY  rb  rc  r+  r\  r`  ro  rð   rˆ  r‹  rŽ  rñ   r£  r¥  r‘  r«  rÐ  rÚ  r   r   r	   r
   r   r   r   r   r   r8   r9   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/   r0   r1   r2   r3   r4   rO   rP   r5   r6   r7   rA   rC   rB   rD   rE   rF   rG   rH   r}   r  r?   r@   r  rò   r  rk   r\   rZ   rU   rU   n   sD  € € € € € € ðð ð(Ø�9ðà˜ðð 	�(ðð 	�(ð	ð
 	�Jðð 	�:ðð 	�Kðð 	�Jðð 	�9ðð 	�9ðð 	˜)ðð 	�lðð 	˜Gðð 	˜'ðð 	˜'ðð  	�[ð!ð" 	Ð*ð#ð$ !Ø*Ø!Ø"ØØ!ð/ð ð €Oð6 �w˜{ð -6Ø7@ñBô Bð )ð )‰ˆˆS�!à�3‰Y˜‰]˜UÑ"ˆØð 	)Ø�s—y’y‘{”{Ñ" QÑ&¨Ñ.ˆBˆBà—’‘”˜q‘ 5Ñ(ˆBØ×Ò  B˜xÑ(Ô(Ð(Ð(ð ØØØð	ð €Lð ˆBŒJð ð ”Zñ	!ô !ð
 ðð ˆBŒJð ð ”Zñ	!ô !ð
 ðð ˆBŒJð ð ”Zñ	!ô !ð
 ðð ˆBŒJð ð ”Zñ!ô !ð ðð;&ð &€EðR �”ð ð ”Zñ!ô !€Jð "�r”zð #à”Zñ!ô !Ðð
Ðð ;=€LÐ<Ð<Ð<Ñ<ð =?€NÐ>Ð>Ð>Ñ>ð =?€NÐ>Ð>Ð>Ñ>àð#ð #ñ „[ð#ñ
@ð @ð @ð @ð0 ð=ð =ñ „[ð=ð~%ð %ð %ðN@ð @ð @ðD ð#ð #ñ „[ð#ðJ ðð ñ „[ðð
 ðð ñ „[ðð ð"ð "ñ „[ð"ðð ð ð:ð ð ð €EØ€FØ€GØ€DØ€EØ€Dð 
�$˜ð  Zð  Zð  [ð  	\Ø	��sÐ0Ð1Ð2Ø	�˜U¨,¸gÈ^ÐclÐt~ÐÐð  	AØ	��tÐ0Ð0Ð1Ð2Ø	�$˜˜jÐ)Ð*Ø	��t˜\Ð*Ð+Ø	�˜f¨MÐ:Ð:Ð;Ø	��t˜[Ð)Ð*Ø	��s˜NÐ+Ð,Ø	�$˜z°.ÐAÐAÐBØ	��t˜T�lÐ#Ø	��t˜U�mÐ$Ø	�˜˜U�|Ð$Ø	�˜g¨iÐ8Ð8Ð9Ø	�˜W¨I¸[ÈvÐ]kÐr{Ð|Ð|Ð}Ø	��t˜V�nÐ%Ø	�˜F¨Ð0Ð0Ð1Ø	�˜G¨'Ð2Ð2Ð3Ø	��s˜E�lÐ#Ø	�ÐDÐDØ(˜[ð*ð *ð 	+à	�˜˜W�~Ð&Ø	�˜g¨U¸8ÐLwÐLwÐxÐxÐyØ	�$˜l°ÀLÐXcÐdÐdÐeØ	�Ð0Ð0Ð8TÐ8TÐUÐUÐVØ	�Ð3Ð3¸.¸.ÐIÐIÐJØ	��s˜MÐ*Ð+Ø	�$Ø4Ð4ØCÐCØ=Ð=ØBÐBð	
ð 
ð 	ð 
��sÐEÐEÐFÐGØ	�˜V¨>Ð:Ð:Ð;ðG$[Ðð $ð $ð $ñ $ðN #Ð"Ø+Ð+ð"ð "Ðð
 '€HØ1€Gà+Ð+Ð+€OØ,Ð,Ð,Ðàðpð pñ „[ðpð ð"ð "ñ „[ð"ð Ðð%ð %ð %ñ"-ð -ð -ð -ñ^ð ð ð ñ&ð &ð &ð &ñ
&ð &ð &ð &ñ
52ð 52ð 52ð 52ñn!ð !ð !ð !ñFð ð ð ñ*wñ wð wð wð wñr	ð 	ð 	ð 	ñð ð ð ñ6!ð !ð !ð !ð$QØ�ðQà�ðQð 	�ðQð 	�Hð	Qð
 	Ð+Ð+ðQð 	Ð#Ð#ðQð 	Ð%Ð%ðQð 	ˆsðQð 	�ðQð 	ˆsðQð 	ˆsðQð 	ˆsðQð 	ˆsðQð 	ˆsðQð  	ˆsð!Qð$ 	�$ð%Qð& 	�$ð'Qð Qð( 	ÐMÐMð)Qð* 	�$ð+Qð, 	�$ð-Qð. 	�$ð/Qð2 	�ð3Qð4 	�ð5Qð6 	�ð7Qð8 	�ð9Qð: 	�ð;Qð< 	�ð=Qð@ 	�5ðAQðB 	�5ðCQðD 	�5ðEQðF 	�5ðGQðH 	�5ðIQðJ 	�5ðKQðN 	�&ðOQð Qð QðP 	ˆbðQQðR 	ˆeŒhðSQðT 	�7ðUQðV 	�7ðWQðX 	�&ðYQð\ 	�kð]Qð^ 	�ð_Qð` 	�HðaQðb 	�ðcQðd 	�AðeQðl 	Ð!Ð!ðmQðn 	ˆsðoQðp 	ˆsðqQñr 	ˆsðsQñt 	�bðuQñv 	˜ðwQñx 	�rðyQð Qð Qñz 	�rð{Qñ| 	�&ð}Qñ~ 	�{ðQñ@ 	�&ðAQñB 	�{ðCQñD 	�rðEQñF 	�7ðGQñH 	�ðIQñJ 	�'ðKQñN 	�ðOQðP 	Ð$ðQQðR 	˜ðSQðT 	�ðUQðV 	�XðWQðX 	�ðYQðZ 	ˆbð[Qð\ 	ˆsð]Qð Qð` 	�OðaQð QÐðh Øñð Ðñ
'ð 'ð 'ñð ð ð ð r\   rU   r   )]Ú
__future__r   r¾   r±  Ú	itertoolsr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   Úsympy.core.sympifyrM   rN   Úsympy.functions.special.besselrO   Ú'sympy.functions.special.error_functionsrP   Úsympy.utilities.exceptionsrQ   r[   r_   r}   r�   rU   rk   r\   rZ   ú<module>r0     s™  ðØ "Ð "Ð "Ð "Ð "Ð "Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à €€€ðAð Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að Að
 1Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø @Ð @Ð @Ð @Ð @Ð @ð
)ð 
)ð 
)ð 
)ð3ð 3ð 3ðlDð Dð Dð&ð ð ð
 ðNð Nð Nð Nð Nñ Nô Nñ „ðNð Nð Nr\   