Ë
    täiu  ã                   ó*   — d dl mZ d dlmZ d dlZd„ Zy)é    )ÚBasic)ÚpprintNc           
      óŽ   ‡‡‡‡	‡
‡‡‡‡‡— d\  ŠŠ	d\  ŠŠd\  }Š
d\  Š}d\  }}d\  }ŠdŠˆfd„Šˆˆˆˆ	ˆ
ˆˆˆˆˆf
d	„Š ‰| d
«      S )z6Traverse a tree asking a user which branch to choose. )z[0;31mz[1;31m)z[0;32mz[1;32m)z[0;33mz[1;33m)z[0;34mz[1;34m)z[0;35mz[1;35m)z[0;36mz[1;36mz[0mc                  ó\   •— t        dj                  t        t        | «      «      ‰z   «       y )NÚ )ÚprintÚjoinÚmapÚstr)ÚargsÚENDs    €új/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/interactive/traversal.pyÚcprintz%interactive_traversal.<locals>.cprint   s   ø€ Üˆb�g‰g”cœ#˜t“nÓ%¨Ñ+Õ,ó    c                 ón  •
— |dkD  r
t        «         ‰d‰|‰d«       t        ‰	«       t        | «       t        ‰«       t        | t        «      rG| j                  r| j                  «       }nD| j                  r| j                  «       }n'| j                  }nt        | d«      rt        | «      }n| S t        |«      }|s| S t        |«      D ]3  \  }} ‰‰d‰
|‰d‰t        |«      ‰«	       t        |«       t        «        Œ5 |dk(  rd}nd	|dz
  z  }	 t        d
|z  «      }|dk(  r; ‰‰d|z  «        ‰‰d«        ‰‰d«        ‰‰d«        ‰‰d«        ‰| |«      }|S |dv r| }|S |dk(  r ‰|d   |dz   «      }|S |dk(  r ‰|d   |dz   «      }|S |dk(  r! ‰t        j                   |«      |dz   «      }|S 	 t#        |«      }|dk  s||k\  r ‰‰d|z  «        ‰| |«      }|S  ‰||   |dz   «      }|S # t$        $ r  ‰‰d|z  «        ‰| |«      }Y |S w xY w# t&        $ r | }t        «        Y |S w xY w)Nr   zCurrent expression (stage z):Ú__iter__Ú[z] é   Ú0z0-%dzYour choice [%s,f,l,r,d,?]: Ú?z.%s - select subexpression with the given indexz"f - select the first subexpressionz!l - select the last subexpressionz!r - select a random subexpressionz	d - done
)Údr   ÚfÚléÿÿÿÿÚrzChoice must be in %s range
z$Choice must be a number in %s range
)r   r   Ú
isinstancer   Úis_AddÚas_ordered_termsÚis_MulÚas_ordered_factorsr   ÚhasattrÚlistÚlenÚ	enumerateÚtypeÚinputÚrandomÚchoiceÚintÚ
ValueErrorÚEOFError)ÚexprÚstager   Ún_argsÚiÚargÚchoicesr(   ÚresultÚBCYANÚBGREENÚBLUEÚBREDÚBYELLOWr   ÚGREENÚREDÚ_interactive_traversalr   s            €€€€€€€€€€r   r:   z5interactive_traversal.<locals>._interactive_traversal   s£  ø€ Ø�1Š9ÜŒGáÐ+¨W°e¸SÀ$ÔGÜˆeŒÜˆtŒÜˆcŒ
ä�dœEÔ"Ø�{Š{Ø×,Ñ,Ó.‘Ø—’Ø×.Ñ.Ó0‘à—y‘y‘Ü�T˜:Ô&Ü˜“:‰DàˆKä�T“ˆáØˆKä –o‰FˆAˆsÙ�5˜#˜v q¨%°°t¼TÀ#»YÈÔLÜ�3ŒKÜ�Gð &ð
 �QŠ;Ø‰Gà ¨¡
Ñ+ˆGð#	QÜÐ9¸GÑCÓDˆFð
 ˜Š}Ù�sÐLØñô  á�sÐ@ÔAÙ�sÐ?Ô@Ù�sÐ?Ô@Ù�s˜LÔ)á/°°eÓ<�ð. ˆð- ˜9Ñ$Ø�ð* ˆð) ˜3’Ù/°°Q±¸À¹ÓC�ð& ˆð% ˜3’Ù/°°R±¸%À!¹)ÓD�ð" ˆð! ˜3’Ù/´·±¸dÓ0CÀUÈQÁYÓO�ð ˆðQÜ  ›[�Fð  ’z V¨vÒ%5Ù˜tÐ%CÀgÑ%MÔNÙ!7¸¸eÓ!D˜ð ˆñ "8¸¸V¹ÀeÈaÁiÓ!P˜àˆøô "ò AÙ˜4ØBÀWÑLôNá3°D¸%Ó@‘Fð ˆðAûô1 ò 	ØˆFÜ�GðB ˆðG	ús$   ÄH Æ9G6 Ç6HÈHÈH4È3H4r   © )r,   ÚYELLOWÚBBLUEÚMAGENTAÚBMAGENTAÚCYANr3   r4   r5   r6   r7   r   r8   r9   r:   r   s         @@@@@@@@@@r   Úinteractive_traversalrA      sc   ÿù€ ð +�I€CˆØ.�M€Eˆ6Ø0�O€FˆGØ,�K€Dˆ%Ø2Ñ€GˆXØ,�K€Dˆ%Ø
€Cô-÷Iõ IñV " $¨Ó*Ð*r   )Úsympy.core.basicr   Úsympy.printingr   r'   rA   r;   r   r   Ú<module>rD      s   ðÝ "Ý !ã óY+r   