ó
    “’¤jÏ ã                  ó¶  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSKrSSKJr  SSKJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SSK-r.SSK/J0r0  SS	K1J2r2J3r3J4r4J5r5  SS
K6J7r7J8r8J9r9  SSK:J;r;J<r<J=r=  \R|                  (       a  SSK?J@r@  SSK:JArAJBrBJCrC  \#Rˆ                  " 5         \RŠ                  " S5      rFSpS jrG " S S\5      rHS\HlI         " S S\5      rJS\JlI         " S S5      rK " S S\5      rL " S S\5      rM " S S\Rœ                  5      rO " S S\O\R                   S9rQ " S S \Q5      rR " S! S"\Q5      rS " S# S$\S\R                   S9rT " S% S&\T5      rU " S' S(\T5      rV " S) S*\S5      rW " S+ S,\W5      rXS-rYS.rZ " S/ S05      r[ " S1 S2\[5      r\ " S3 S4\[5      r] " S5 S6\]5      r^ " S7 S8\[5      r_ " S9 S:\[5      r` " S; S<5      ra " S= S>\a5      rb " S? S@\b5      rc " SA SB\b5      rd " SC SD\a5      re " SE SF\e5      rf " SG SH\b5      rg " SI SJ\g5      rh " SK SL\g5      ri " SM SN\b5      rj " SO SP\j5      rk " SQ SR\j5      rl " SS ST\5      rm\m" SUSVSSUS5      \m" SUSVSWSUS5      \m" SUSVSXSUS5      \m" SUSUSSVS5      \m" SUSUSSVSW5      \m" SUSUSSVSX5      \m" SUSUSSUS5      \m" SUSVSSYS5      SZ.\mln         " S[ S\\a5      ro " S] S^\h5      rp " S_ S`\i5      rq " Sa Sb\a5      rr " Sc Sd\h5      rs " Se Sf\h5      rtSqSrSg jjruSsSh jrv " Si Sj\(5      rw " Sk Sl5      rxStSm jry " Sn So5      rzg)uz.
Implementation details for :mod:`.mathtext`.
é    )ÚannotationsN)Ú
NamedTuple)ÚNDArray)ÚEmptyÚForwardÚLiteralÚGroupÚNotAnyÚ	OneOrMoreÚOptionalÚParseBaseExceptionÚParseExceptionÚParseExpressionÚParseFatalExceptionÚParserElementÚParseResultsÚQuotedStringÚRegexÚ	StringEndÚTokenÚ
ZeroOrMoreÚpyparsing_commonÚnested_exprÚone_ofé   )Úcbook)Úlatex_to_bakomaÚstix_glyph_fixesÚstix_virtual_fontsÚtex2uni)ÚFontPropertiesÚfindfontÚget_font)ÚFT2FontÚKerningÚ	LoadFlags)ÚIterable)ÚCharacterCodeTypeÚGlyphÚGlyphIndexTypezmatplotlib.mathtextc                ó°   •  [        U 5      $ ! [         a     Of = f [        U R                  S5         $ ! [         a  n[        U < S35      UeSnAff = f)zË
Return the integer index (from the Unicode table) of *symbol*.

Parameters
----------
symbol : str
    A single (Unicode) character, a TeX command (e.g. r'\pi') or a Type1
    symbol name (e.g. 'phi').
Ú\z5 is not a valid Unicode character or TeX/Type1 symbolN)ÚordÚ	TypeErrorr    ÚstripÚKeyErrorÚ
ValueError)ÚsymbolÚerrs     Ú¢C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\matplotlib/_mathtext.pyÚget_unicode_indexr5   4   sg   € ðÜ�6‹{ÐøÜó ÙðúðÜ�v—|‘| DÓ)Ñ*Ð*øÜó ÜØ‰jÐMÐNóàð	ûðús!   ‚
 �
™ž6 ¶
AÁ AÁAc                  óL   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   Srg)ÚVectorParseéJ   zô
The namedtuple type returned by ``MathTextParser("path").parse(...)``.

Attributes
----------
width, height, depth : float
    The global metrics.
glyphs : list
    The glyphs including their positions.
rect : list
    The list of rectangles.
ÚfloatÚwidthÚheightÚdepthzLlist[tuple[FT2Font, float, CharacterCodeType, GlyphIndexType, float, float]]Úglyphsz'list[tuple[float, float, float, float]]Úrects© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r?   ó    r4   r7   r7   J   s$   ‡ ñð ƒLØƒMØƒLØXÓXØ2Ö2rH   r7   c                  óV   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S'   S	\S
'   Srg)ÚRasterParseé`   zñ
The namedtuple type returned by ``MathTextParser("agg").parse(...)``.

Attributes
----------
ox, oy : float
    The offsets are always zero.
width, height, depth : float
    The global metrics.
image : 2D array of uint8
    A raster image.
r9   ÚoxÚoyr:   r;   r<   zNDArray[np.uint8]Úimager?   Nr@   r?   rH   r4   rJ   rJ   `   s(   ‡ ñð 	ƒIØƒIØƒLØƒMØƒLØÖrH   rJ   c                  ó6   • \ rS rSrSrSS jrS	S jrS
S jrSrg)ÚOutputéw   zÂ
Result of `ship`\ping a box: lists of positioned glyphs and rectangles.

This class is not exposed to end users, but converted to a `VectorParse` or
a `RasterParse` by `.MathTextParser.parse`.
c                ó,   • Xl         / U l        / U l        g ©N©Úboxr=   r>   )ÚselfrU   s     r4   Ú__init__ÚOutput.__init__   s   € ØŒØ;=ˆŒØ>@ˆ�
rH   c                ó  • [        [        R                  U R                  R                  U R                  R
                  U R                  R                  /5      u  pnU R                   VVVs/ s HE  u  pEnUR                  UR                  UR                  UR                  XBU-
  UR                  -   4PMG     nnnnU R                   VV	V
Vs/ s H  u  p‰p«X‚X›-   -
  X«4PM     nn
n	nn[        XU-   X7U5      $ s  snnnf s  snn
n	nf rS   )ÚmapÚnpÚceilrU   r:   r;   r<   r=   ÚfontÚfontsizeÚnumÚglyph_indexÚoffsetr>   r7   )rV   ÚwÚhÚdrL   rM   ÚinfoÚgsÚbxÚbyÚbwÚbhÚrss                r4   Ú	to_vectorÚOutput.to_vector„   sä   € ÜÜ�G‰G�d—h‘h—n‘n d§h¡h§o¡o°t·x±x·~±~ÐFóH‰ˆˆað #'§+¢+õ/â"-‘,�"˜$ð �y‰y˜$Ÿ-™-¨¯©°4×3CÑ3CØ�r‘6˜DŸK™KÑ'ó)á"-ð 	ò /ð %)§J¢Jö0Ú$.‘.�"˜"ð ˜™‘= "Ó)Ù$.ð 	ó 0ô ˜1 !™e Q¨BÓ/Ð/ùô/ùõ0s   Á-AC9ÃD 
c               óŒ  • [        / U R                   VVVs/ s H  u  p#oBUR                  R                  -   PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-
  n	[        / U R                   VVVs/ s H  u  p#oCUR                  R
                  -
  PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-
  n
[        / U R                   VVVs/ s H  u  p#oBUR                  R                  -   PM      snnnQU R                   VVVVs/ s H
  u  pVpxXW-   PM     snnnnQSP5      S-   n[        / U R                   VVVs/ s H  u  p#oCUR                  R                  -
  PM      snnnQU R                   VVVVs/ s H
  u  pVpxXh-   PM     snnnnQSP5      S-   nX¹-
  nXÊ-
  U R                  R                  -
  nXÊ-
  U R                  R                  -
  n[        R                  " [        R                  " U[        US5      -   5      [        R                  " U5      4[        R                   5      n[#        U R                  U	* U
* 45      nUR                   HU  u  p#nUR$                  R'                  U[)        U5      [)        X4R                  R*                  -
  5      UR,                  US9  MW     UR                   H�  u  pVnn[        [)        U5      S-
  S5      nUS:X  a  UUS-  -   n[)        UUS-   S-  -
  5      nO[)        U5      n[        R.                  " U5      n[        R                  " UU-   5      nSXæUU-   S-   2UUS-   24'   M‘     [1        SSXxU-   XÞ5      $ s  snnnf s  snnnnf s  snnnf s  snnnnf s  snnnf s  snnnnf s  snnnf s  snnnnf )Nr   r   )Úantialiasedé   éÿ   )Úminr=   ÚmetricsÚxminr>   ÚymaxÚmaxÚxmaxÚyminrU   r<   r;   r[   ÚzerosÚmathr\   Úuint8Úshipr]   Údraw_glyph_to_bitmapÚintÚicebergÚglyphÚfloorrJ   )rV   ro   rL   rM   re   ÚxÚyrb   rc   rt   rx   rw   ru   rd   rN   Úshiftedri   rj   r;   ÚcenterÚx1Úx2s                         r4   Ú	to_rasterÚOutput.to_raster�   sL  € ô ð :ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð :Ø*.¯*ª*Ö5ª*™J˜A !“a©*Ô5ð:Ø78ð:ó ;Ø=>ñ?ˆäð :ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð :Ø*.¯*ª*Ö5ª*™J˜A !“a©*Ô5ð:Ø78ð:ó ;Ø=>ñ?ˆäð >ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð >Ø.2¯jªjÖ9ªj¡
  a�a”e©jÔ9ð>Ø;<ð>ó ?ØABñCˆäð >ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð >Ø.2¯jªjÖ9ªj¡
  a�a”e©jÔ9ð>Ø;<ð>ó ?ØABñCˆà‰KˆØ‰K˜$Ÿ(™(Ÿ.™.Ñ(ˆØ‰K˜$Ÿ(™(Ÿ/™/Ñ)ˆÜ—’œ$Ÿ)š) A¬¨A¨q«	¡MÓ2´D·I²I¸a³LÐAÄ2Ç8Á8ÓLˆô �t—x‘x 4 %¨$¨ Ó0ˆà#ŸNœN‰LˆB�DØ�I‰I×*Ñ*Ø”s˜2“w¤ B¯©×)=Ñ)=Ñ$=Ó >ÀÇ
Á
Ø'ð +ó )ñ +ð $ŸMœM‰LˆA�"�bÜœ˜R› 1™ aÓ(ˆFØ˜‹{Ø˜R !™V™�Ü˜ &¨1¡*°Ñ!1Ñ1Ó2‘ä˜“F�Ü—’˜A“ˆBÜ—’˜1˜r™6Ó"ˆBØ+/ˆE�A�f‘H˜Q‘J�,  2 a¡4 Ð'Ó(ñ *ô ˜1˜a ¨¡E¨1Ó4Ð4ùôC NùÝ5ùÜMùÝ5ùÜMùÝ9ùÜMùÝ9s/   —%N
ÁNÂ%NÃN Ã7%N(Ä2N/Å)%N7Æ$N>rT   N)rU   ÚBox)Úreturnr7   )ro   Úboolr‹   rJ   )	rA   rB   rC   rD   rE   rW   rl   rˆ   rG   r?   rH   r4   rP   rP   w   s   † ñôAô
	0÷$5rH   rP   c                  ót   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   Srg)ÚFontMetricsé¶   a  
Metrics of a font.

Attributes
----------
advance : float
    The advance distance (in points) of the glyph.
height : float
    The height of the glyph in points.
width : float
    The width of the glyph in points.
xmin, xmax, ymin, ymax : float
    The ink rectangle of the glyph.
iceberg : float
    The distance from the baseline to the top of the glyph. (This corresponds to
    TeX's definition of "height".)
slanted : bool
    Whether the glyph should be considered as "slanted" (currently used for kerning
    sub/superscripts).
r9   Úadvancer;   r:   rt   rw   rx   ru   r   rŒ   Úslantedr?   Nr@   r?   rH   r4   rŽ   rŽ   ¶   s6   ‡ ñð( ƒNØƒMØƒLØ
ƒKØ
ƒKØ
ƒKØ
ƒKØƒNØ†MrH   rŽ   c                  óf   • \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   S\S'   Srg)ÚFontInfoéÖ   r$   r]   r9   r^   ÚstrÚpostscript_namerŽ   rs   r(   r_   r*   r`   r)   r€   ra   r?   N©rA   rB   rC   rD   rF   rG   r?   rH   r4   r“   r“   Ö   s.   ‡ Ø
ƒMØƒOØÓØÓØ	ÓØÓØƒLØ†MrH   r“   c                  óò   • \ rS rSrSrSS jr            SS jrSS jr    SS jr    SS jr	          SS jr
          SS	 jrSS
 jrSS jrSS jrSS jr    SS jrSS jrSrg)ÚFontséá   zå
An abstract base class for a system of fonts to use for mathtext.

The class must be able to take symbol keys and font file names and
return the character metrics.  It also delegates to a backend class
to do the actual drawing.
c                ó   • Xl         X l        g)a>  
Parameters
----------
default_font_prop : `~.font_manager.FontProperties`
    The default non-math font, or the base font for Unicode (generic)
    font rendering.
load_glyph_flags : `.ft2font.LoadFlags`
    Flags passed to the glyph loader (e.g. ``FT_Load_Glyph`` and
    ``FT_Load_Char`` for FreeType-based fonts).
N©Údefault_font_propÚload_glyph_flags)rV   r�   rž   s      r4   rW   ÚFonts.__init__ê   s   € ð "3ÔØ 0ÕrH   c
                ó   • g)z‡
Get the kerning distance for font between *sym1* and *sym2*.

See `~.Fonts.get_metrics` for a detailed description of the parameters.
ç        r?   )
rV   Úfont1Ú
fontclass1Úsym1Ú	fontsize1Úfont2Ú
fontclass2Úsym2Ú	fontsize2Údpis
             r4   Úget_kernÚFonts.get_kernø   s   € ð rH   c                ó   • [         erS   ©ÚNotImplementedError)rV   r]   s     r4   Ú	_get_fontÚFonts._get_font  s   € Ü!Ð!rH   c                ó   • [         erS   r®   )rV   r]   Ú
font_classÚsymr^   rª   s         r4   Ú	_get_infoÚFonts._get_info  ó   € ä!Ð!rH   c                ó@   • U R                  XX4U5      nUR                  $ )a°  
Parameters
----------
font : str
    One of the TeX font names: "tt", "it", "rm", "cal", "sf", "bf",
    "default", "regular", "normal", "bb", "frak", "scr".  "default"
    and "regular" are synonyms and use the non-math font.
    "normal" denotes the normal math font.
font_class : str
    One of the TeX font names (as for *font*), but **not** "bb",
    "frak", or "scr".  This is used to combine two font classes.  The
    only supported combination currently is ``get_metrics("frak", "bf",
    ...)``.
sym : str
    A symbol in raw TeX form, e.g., "1", "x", or "\sigma".
fontsize : float
    Font size in points.
dpi : float
    Rendering dots-per-inch.

Returns
-------
FontMetrics
)rµ   rs   )rV   r]   r³   r´   r^   rª   re   s          r4   Úget_metricsÚFonts.get_metrics	  s    € ð4 �~‰~˜d°¸sÓCˆØ�|‰|ÐrH   c	                ód   • U R                  XEXgU5      n	UR                  R                  X#U	45        g)z„
At position (*ox*, *oy*), draw the glyph specified by the remaining
parameters (see `get_metrics` for their detailed description).
N)rµ   r=   Úappend)
rV   ÚoutputrL   rM   r]   r³   r´   r^   rª   re   s
             r4   Úrender_glyphÚFonts.render_glyph&  s,   € ð �~‰~˜d°¸sÓCˆØ�‰×Ñ˜b d˜^Õ,rH   c                ó>   • UR                   R                  X#XE45        g)z=
Draw a filled rectangle at (*x*, *y*) with size (*w*, *h*).
N)r>   r¼   ©rV   r½   r‚   rƒ   rb   rc   s         r4   Úrender_rect_filledÚFonts.render_rect_filled/  s   € ð
 	�‰×Ñ˜Q 1˜LÕ)rH   c                ó   • [        5       e)z:
Get the axis height for the given *font* and *fontsize*.
r®   ©rV   r]   r^   rª   s       r4   Úget_axis_heightÚFonts.get_axis_height6  ó   € ô "Ó#Ð#rH   c                ó   • [        5       e)z=
Get the size of a quad for the given *font* and *fontsize*.
r®   rÅ   s       r4   Úget_quadÚFonts.get_quad<  rÈ   rH   c                ó   • [        5       e)z6
Get the xheight for the given *font* and *fontsize*.
r®   rÅ   s       r4   Úget_xheightÚFonts.get_xheightB  rÈ   rH   c                ó   • [        5       e)z~
Get the line thickness that matches the given font.  Used as a
base unit for drawing lines such as in a fraction or radical.
r®   rÅ   s       r4   Úget_underline_thicknessÚFonts.get_underline_thicknessH  s   € ô
 "Ó#Ð#rH   c                ó
   • X4/$ )zê
Override if your font provides multiple sizes of the same
symbol.  Should return a list of symbols matching *sym* in
various sizes.  The expression renderer will select the most
appropriate size for a given situation from this list.
r?   ©rV   Úfontnamer´   s      r4   Ú!get_sized_alternatives_for_symbolÚ'Fonts.get_sized_alternatives_for_symbolO  s   € ð �Ð Ð rH   c                ó   • [         $ rS   )ÚFontConstantsBase©rV   s    r4   Úget_font_constantsÚFonts.get_font_constantsY  s   € Ü Ð rH   rœ   N©r�   r!   rž   r&   ©r¢   r•   r£   r•   r¤   r•   r¥   r9   r¦   r•   r§   r•   r¨   r•   r©   r9   rª   r9   r‹   r9   ©r]   r•   r‹   r$   )r]   r•   r³   r•   r´   r•   r^   r9   rª   r9   r‹   r“   )r]   r•   r³   r•   r´   r•   r^   r9   rª   r9   r‹   rŽ   )r½   rP   rL   r9   rM   r9   r]   r•   r³   r•   r´   r•   r^   r9   rª   r9   r‹   ÚNone©r½   rP   r‚   r9   rƒ   r9   rb   r9   rc   r9   r‹   rß   ©r]   r•   r^   r9   rª   r9   r‹   r9   ©rÔ   r•   r´   r•   r‹   zlist[tuple[str, str]]©r‹   ztype[FontConstantsBase])rA   rB   rC   rD   rE   rW   r«   r°   rµ   r¹   r¾   rÂ   rÆ   rÊ   rÍ   rÐ   rÕ   rÚ   rG   r?   rH   r4   r™   r™   á   sø   † ñô1ðØðØ),ðØ47ðØDIðàðà %ôô"ð"Øð"Ø!)ô"ðØðØ#.ôð:-Ø!$ð-Ø+.ð-Ø:?ð-ØFKð-ØPTô-ð*Ø#ð*Ø(-ð*Ø27ð*Ø<Að*ØFJô*ô$ô$ô$ô$ð!Ø/2ð!Ø7Lô!÷!rH   r™   c                  óÀ   ^ • \ rS rSrSrSU 4S jjrSS jr    SS jr    SS jr    SS jr	SS jr
SS	 jrSS
 jrSS jr            SU 4S jjrSrU =r$ )ÚTruetypeFontsi]  zU
A generic base class for all font setups that use Truetype fonts
(through FT2Font).
c                ó  >• [         TU ]  X5        [        R                  " U R                  5      U l        0 U l        0 U l        [        U R                  5      n[        U5      nX@R
                  S'   X@R
                  S'   g )NÚdefaultÚregular)
ÚsuperrW   Ú	functoolsÚcacherµ   Ú_fontsÚfontmapr"   r�   r#   )rV   r�   rž   ÚfilenameÚdefault_fontÚ	__class__s        €r4   rW   ÚTruetypeFonts.__init__c  se   ø€ Ü‰ÑÐ*Ô=ä"Ÿš¨¯©Ó8ˆŒØˆŒØ')ˆŒä˜D×2Ñ2Ó3ˆÜ Ó)ˆØ!-�‰�IÑØ!-�‰�IÒrH   c                ó   • U R                   R                  X5      nU R                  R                  U5      nUc{  [        R                  R                  U5      (       aW  [        U5      nX0R                  U'   X0R                  UR                  '   X0R                  UR                  R                  5       '   [        R                  " [        U5      $ rS   )rí   Úgetrì   ÚosÚpathÚexistsr#   r–   ÚlowerÚTÚcastr$   )rV   r]   ÚbasenameÚcached_fonts       r4   r°   ÚTruetypeFonts._get_fonto  s”   € Ø—<‘<×#Ñ# DÓ/ˆØ—k‘k—o‘o hÓ/ˆØÑ¤2§7¡7§>¡>°(×#;Ñ#;Ü" 8Ó,ˆKØ$/�K‰K˜Ñ!Ø7B�K‰K˜×3Ñ3Ñ4Ø?J�K‰K˜×3Ñ3×9Ñ9Ó;Ñ<Ü�vŠv”g˜{Ó+Ð+rH   c                ó`   • UR                   S:X  a  UR                  S-  S-  US-  U-  S-  -   $ g)NÚCmex10é@   rp   é   éH   r¡   )r–   r;   )rV   r]   r€   r^   rª   s        r4   Ú_get_offsetÚTruetypeFonts._get_offsety  s:   € à×Ñ 8Ó+Ø—L‘L 2Ñ%¨Ñ)¨h°q©j¸3Ñ.>¸rÑ.AÑBÐBØrH   c                ó   • [         erS   r®   )rV   rÔ   r³   r´   s       r4   Ú
_get_glyphÚTruetypeFonts._get_glyph  r·   rH   c                ó¾  • U R                  XU5      u  pgnUR                  XE5        UR                  U5      n	UR                  X�R                  S9n
S U
R
                   5       u  p¼pÞU R                  XjXE5      n[        U
R                  S-  U
R                  S-  U
R                  S-  UUXÏ-   Xï-   U
R                  S-  U-   US9	n[        UUUR                  UUU	U
US9$ )N)Úflagsc              3  ó*   #   • U  H	  oS -  v •  M     g7f)rÿ   Nr?   )Ú.0Úvals     r4   Ú	<genexpr>Ú*TruetypeFonts._get_info.<locals>.<genexpr>‹  s   é € Ð!A²j¨s¨¦(²jùs   ‚é   rÿ   )	r�   r;   r:   rt   rw   rx   ru   r   r‘   )r]   r^   r–   rs   r_   r`   r€   ra   )r  Úset_sizeÚget_char_indexÚ
load_glyphrž   Úbboxr  rŽ   ÚlinearHoriAdvancer;   r:   ÚhoriBearingYr“   r–   )rV   rÔ   r³   r´   r^   rª   r]   r_   r‘   r`   r€   rt   rx   rw   ru   ra   rs   s                    r4   rµ   ÚTruetypeFonts._get_info„  sñ   € à!Ÿ_™_¨XÀ3ÓGÑˆ�7Ø�‰�hÔ$Ø×)Ñ)¨#Ó.ˆØ—‘ ×3HÑ3H�ÐIˆá!A°e·j²jÓ!AÑˆ�DØ×!Ñ! $¨xÓ=ˆÜØ×+Ñ+¨eÑ3Ø—<‘< "Ñ$Ø—+‘+ Ñ"ØØØ‘Ø‘à×&Ñ&¨Ñ+¨fÑ4Øñ
ˆô ØØØ ×0Ñ0ØØØ#ØØñ	
ð 		
rH   c                óè   • U R                  5       nUR                  b  UR                  U-  U-  S-  $ U R                  U[        R                  S   SX#5      nUR
                  UR                  -   S-  $ )Nr  úmathtext.defaultõ   âˆ’rp   )rÚ   Úaxis_heightr¹   ÚmplÚrcParamsru   rx   ©rV   rÔ   r^   rª   Úconstsrs   s         r4   rÆ   ÚTruetypeFonts.get_axis_height¥  su   € Ø×(Ñ(Ó*ˆØ×ÑÑ)Ø×%Ñ%¨Ñ0°3Ñ6¸Ñ;Ð;ð ×&Ñ&Øœ#Ÿ,™,Ð'9Ñ:¸HÀhóUˆGà—L‘L 7§<¡<Ñ/°1Ñ4Ð4rH   c                óÈ   • U R                  5       nUR                  b  UR                  U-  U-  S-  $ U R                  U[        R                  S   SX#5      nUR
                  $ )Nr  r  Úm)rÚ   Úquadr¹   r  r  r�   r  s         r4   rÊ   ÚTruetypeFonts.get_quad°  sc   € Ø×(Ñ(Ó*ˆØ�;‰;Ñ"Ø—;‘; Ñ)¨CÑ/°"Ñ4Ð4ð ×&Ñ&Øœ#Ÿ,™,Ð'9Ñ:¸CÀóPˆGà—?‘?Ð"rH   c                óÈ   • U R                  5       nUR                  b  UR                  U-  U-  S-  $ U R                  U[        R                  S   SX#5      nUR
                  $ )Nr  r  r‚   )rÚ   Úx_heightr¹   r  r  r   r  s         r4   rÍ   ÚTruetypeFonts.get_xheightº  sc   € Ø×(Ñ(Ó*ˆØ�?‰?Ñ&Ø—?‘? XÑ-°Ñ3°bÑ8Ð8ð ×&Ñ&Øœ#Ÿ,™,Ð'9Ñ:¸CÀóPˆGà—?‘?Ð"rH   c                ó   • SU-  U-  S-  $ )Ng      °?r  r?   rÅ   s       r4   rÐ   Ú%TruetypeFonts.get_underline_thicknessÅ  s   € ð ˜hÑ&¨Ñ,°Ñ2Ð2rH   c
                ó  >• X:X  ao  XH:X  aj  U R                  XX4U	5      n
U R                  XVXxU	5      nU
R                  nUR                  U
R                  UR                  [        R
                  5      S-  $ [        TU ]  XX4XVXxU	5	      $ )Nrÿ   )rµ   r]   Úget_kerningr`   r%   ÚDEFAULTré   r«   )rV   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   Úinfo1Úinfo2r]   rð   s                €r4   r«   ÚTruetypeFonts.get_kernË  s�   ø€ ð ‹>˜iÓ4Ø—N‘N 5°dÀsÓKˆEØ—N‘N 5°dÀsÓKˆEØ—:‘:ˆDØ×#Ñ# E×$5Ñ$5°u×7HÑ7HÜ$+§O¡Oó5Ø79ñ:ð :ä‰wÑ °4Ø %°4ÀCóIð 	IrH   )rì   rµ   rí   rÜ   rÞ   )
r]   r$   r€   r)   r^   r9   rª   r9   r‹   r9   ©rÔ   r•   r³   r•   r´   r•   r‹   z'tuple[FT2Font, CharacterCodeType, bool])rÔ   r•   r³   r•   r´   r•   r^   r9   rª   r9   r‹   r“   )rÔ   r•   r^   r9   rª   r9   r‹   r9   rá   rÝ   )rA   rB   rC   rD   rE   rW   r°   r  r  rµ   rÆ   rÊ   rÍ   rÐ   r«   rG   Ú__classcell__©rð   s   @r4   rå   rå   ]  s¨   ø† ñ÷

.ô,ðØðØ#(ôð"Øð"Ø Gô"ð

Øð
Ø!)ô
ôB	5ô#ô	#ô3ð
IØð
IØ),ð
IØ47ð
IØDIð
Iàð
Ià %÷
Iõ 
IrH   rå   )Ú	metaclassc                  ó
  ^• \ rS rSrSrSSSSSSS	S
S.rS?U4S jjr\" SR                  5       5      r	    S@S jr
Sr0 SS/\ V Vs/ s H  nSSU S34PM     snn Q_SS/\ V Vs/ s H  nSSU S34PM     snn Q_S\ V Vs/ s H  nSSU S34PM     snn _S\ V Vs/ s H  nSSU S34PM     snn _SS/\ V Vs/ s H  nSSU S34PM     snn Q_SS /\ V Vs/ s H  nSS!U S34PM     snn Q_S"S#/\ V Vs/ s H  nSS$U S34PM     snn Q_S%S&/\ V Vs/ s H  nSS'U S34PM     snn Q_S(\ V Vs/ s H  nSS)U S34PM     snn _S*\ V Vs/ s H  nSS+U S34PM     snn _S,\ V Vs/ s H  nSS-U S34PM     snn _S.\ V Vs/ s H  nSS/U S34PM     snn _S0\ V Vs/ s H  nSS1U S34PM     snn _S2\ V Vs/ s H  nSS3U S34PM     snn _S4S5/\ V Vs/ s H  nSS6U S34PM     snn Q_S7/ S8Q_S9/ S:Q_rS; H  u  rr\\   \\'   M         SAS< jrSBS= jrS>rU=r$ s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f )CÚBakomaFontsiØ  z–
Use the Bakoma TrueType fonts for rendering.

Symbols are strewn about a number of font files, each of which has
its own proprietary 8-bit encoding.
Úcmmi10Úcmsy10Úcmr10Úcmtt10Úcmti10Úcmb10Úcmss10Úcmex10)ÚnormalÚcalÚrmÚttÚitÚbfÚsfÚexc                óØ   >• [        X5      U l        [        TU ]  X5        U R                  R                  5        H,  u  p4[        U5      nXPR                  U'   XPR                  U'   M.     g rS   )Ú	StixFontsÚ_stix_fallbackré   rW   Ú_fontmapÚitemsr"   rí   )rV   r�   rž   Úkeyr  Úfullpathrð   s         €r4   rW   ÚBakomaFonts.__init__ê  sY   ø€ Ü'Ð(9ÓLˆÔä‰ÑÐ*Ô=ØŸ™×+Ñ+Ö-‰HˆCÜ “}ˆHØ (�L‰L˜ÑØ (�L‰L˜Óò .rH   ú
\int \ointc                óº  • S nXR                   ;   aA  U[        ;   a7  [        U   u  pVUS;   =(       d    X0R                  ;   nU R                  U5      nOR[	        U5      S:X  aC  US;   nUS:X  a  UR                  5       (       a  SnSnU R                  U5      nUb  [        U5      nUb  UR                  W5      S:w  a  XFW4$ U R                  R                  XU5      $ )N)r4  r8  r   )r@  r<  r<  r>  Fr   )
rí   r   Ú_slanted_symbolsr°   ÚlenÚisdigitr-   r  rF  r  )rV   rÔ   r³   r´   r]   rú   r_   r‘   s           r4   r  ÚBakomaFonts._get_glyphõ  sØ   € àˆà—|‘|Ó#¨¬Ó(>Ü+¨CÑ0‰MˆHØÐ#7Ñ7×X¸C×CXÑCXÑ<XˆGØ—>‘> (Ó+‰DÜ�‹X˜‹]ØÐ#3Ñ3ˆGØ˜8Ó#¨¯©¯©ð  �Ø�Ø—>‘> (Ó+ˆDØÑÜ˜#“h�ØÑ × 3Ñ 3°CÓ 8¸AÓ =Ø˜gÐ%Ð%à×&Ñ&×1Ñ1°(ÈÓLÐLrH   )ÚbigÚBigÚbiggÚBiggÚ()r>  rV  rC  z\__parenleftÚ__Ú))r>  rX  z\__parenrightÚ{z\__braceleftÚ}z\__bracerightÚ[)r>  r[  z\__bracketleftÚ])r>  r\  z\__bracketrightÚ<)r=  z\__angbracketleft__z\__angbracketleftÚ>)r=  z\__angbracketright__z\__angbracketrightz\lfloorz\__floorleftz\rfloorz\__floorrightz\lceilz\__ceilingleftz\rceilz\__ceilingrightú	\__sqrt__z
\__radicalz
\backslashz\__backslashÚ/)r>  r`  z\__slashz\widehat))r>  Ú^)rC  z\__hatwide__)rC  z\__hatwider__)rC  z\__hatwidest__z
\widetilde))r>  Ú~)rC  z\__tildewide__)rC  z\__tildewider__)rC  z\__tildewidest__))z
\leftparenrV  )z\rightparenrX  )z
\leftbracerY  )z\rightbracerZ  )z\leftbracketr[  )z\rightbracketr\  )z\langler]  )z\rangler^  )ú\{rY  )ú\}rZ  )ú\[r[  )ú\]r\  c                ó>   • U R                   R                  X!U4/5      $ rS   )Ú_size_alternativesró   rÓ   s      r4   rÕ   Ú-BakomaFonts.get_sized_alternatives_for_symbol0  s    € à×&Ñ&×*Ñ*¨3¸C°Ð0AÓBÐBrH   c                ó   • [         $ rS   )ÚComputerModernFontConstantsrÙ   s    r4   rÚ   ÚBakomaFonts.get_font_constants4  s   € Ü*Ð*rH   )rF  rÜ   r.  râ   rã   )rA   rB   rC   rD   rE   rG  rW   ÚsetÚsplitrN  r  Ú_latex_sizesrh  ÚaliasÚtargetrÕ   rÚ   rG   r/  )r
  Úsrð   s   00@r4   r3  r3  Ø  s¬  ø† ñð ØØØØØØØñ	€H÷)ñ ˜=×.Ñ.Ó0Ó1ÐðMØðMØ GôMð4 2€LðØˆkÐRÁLÔQÂL¸q˜d |°A°3°bÐ$9Ó:ÁLÒQÐRðàˆkÐSÁ\ÔRÂ\À˜d }°Q°C°rÐ$:Ó;Á\ÒRÐSðð 	±\ÔB²\°ˆt˜ Q C rÐ*Ó+±\ÒBðð 	±lÔC²l°ˆt˜ a S¨Ð+Ó,±lÒCð	ð
 	ˆkÐTÁlÔSÂlÀ˜d ~°a°S¸Ð$;Ó<ÁlÒSÐTðð 	ˆkÐUÁ|ÔTÂ|À!˜d °q°c¸Ð$<Ó=Á|ÒTÐUðð 	Ð-ð KÙ<HÔIºL°q�Ð+¨A¨3¨bÐ1Ó2¹LÒIðKðð 	Ð.ð LÙ=IÔJº\¸�Ð,¨Q¨C¨rÐ2Ó3¹\ÒJðLðð 	¹LÔIºL°q�d˜|¨A¨3¨bÐ1Ó2¹LÒIðð 	¹\ÔJº\¸�d˜}¨Q¨C¨rÐ2Ó3¹\ÒJðð 	¹\ÔJº\¸�T˜n¨Q¨C¨rÐ2Ó3¹\ÒJðð 	¹lÔKºl¸�T˜o¨a¨S°Ð3Ó4¹lÒKðð 	¹LÔIºL°q˜ ¨A¨3¨bÐ1Ó2¹LÒIðð  	¹|ÔLº|¸!˜ ,¨q¨c°Ð4Ó5¹|ÒLð!ð" 	ˆ{ÐOÁÔNÂ¸A˜t¨°°°2Ð%6Ó7ÁÒNÐOð#ð$ 	ò 1ð%ð( 	ò Qð)Ðó06‰ˆˆvð %7°vÑ$>Ð˜5Ó!ñ6ðCØ/2ðCØ7LôC÷+ò +ùóG RùÛRùÛBùÛCùÛSùÛTùãIùãJùÛIùÛJùÛJùÛKùÛIùÛLùÛNsZ   ÁH+Á&H1ÂH7
ÂH=
Â=IÃI	Ã;IÄIÄ7I
ÅI!
Å/I'
ÆI-
Æ'I3
ÇI9
Ç!I?r3  c                  ó¨   ^ • \ rS rSr% SrSSS.rS\S'   SU 4S jjr\" S	R                  5       5      r
    SS
 jr    SS jr    SS jrSrU =r$ )ÚUnicodeFontsi8  aD  
An abstract base class for handling Unicode fonts.

While some reasonably complete Unicode fonts (such as DejaVu) may
work in some situations, the only Unicode font I'm aware of with a
complete set of math symbols is STIX.

This class will "fallback" on the Bakoma fonts when a required
symbol cannot be found in the font.
é£   é¡   )é×   i"  z*dict[CharacterCodeType, CharacterCodeType]Ú_cmr10_substitutionsc                ó^  >• [         R                  S   n[        [        [        S.R                  U5      nU(       a  U" X5      OS U l        [        TU ]!  X5        SR                  5        H2  n[         R                  SU-      n[        U5      nXpR                  U'   M4     [        S5      n[        U5      nXpR                  S'   [        U R                  [        5      (       aJ  SSS	S
SSS.nUR                  5        H,  u  pš[        U
5      nX°R                  U	'   X°R                  U
'   M.     g g )Nzmathtext.fallback)ÚstixÚstixsansÚcmzcal rm tt it bf sf bfitz	mathtext.r;  rC  ÚSTIXGeneralÚSTIXSizeOneSymÚSTIXSizeTwoSymÚSTIXSizeThreeSymÚSTIXSizeFourSymÚSTIXSizeFiveSym)Ú0Ú1Ú2Ú3Ú4Ú5)r  r  rE  ÚStixSansFontsr3  ró   Ú_fallback_fontré   rW   rn  r"   rí   r!   Ú
isinstancerH  )rV   r�   rž   Úfallback_rcÚfont_clsÚtexfontÚpropr]   ÚstixsizedaltfontsÚsizeÚnamerJ  rð   s               €r4   rW   ÚUnicodeFonts.__init__L  s$  ø€ ä—l‘lÐ#6Ñ7ˆäÜ%Üñ0
÷ ‰#ˆkÓ
ð	 	ö #+ñ  (Ð(9ÔLØ04ð 	Ôô 	‰ÑÐ*Ô=Ø0×6Ñ6Ö8ˆGÜ—<‘< ¨gÑ 5Ñ6ˆDÜ˜D“>ˆDØ$(�L‰L˜Ó!ñ 9ô ˜hÓ'ˆÜ˜‹~ˆØ!�‰�TÑô �d×)Ñ)¬9×5Ñ5à"Ø%Ø%Ø'Ø&Ø&ñ!Ðð 0×5Ñ5Ö7‘
�Ü# D›>�Ø%-—‘˜TÑ"Ø%-—‘˜TÓ"ò 8ð 6rH   rL  c                ó   • X4$ rS   r?   )rV   rÔ   r³   Úuniindexs       r4   Ú_map_virtual_fontÚUnicodeFonts._map_virtual_fontr  s   € àÐ!Ð!rH   c                óº  •  [        U5      nSnU R                  XU5      u  pUnU(       aù  US:X  a]  US:  aW  [        U5      n[        R                  " U5      S   S:w  d*  [        R                  " U5      R                  S	5      (       a  S
nOSnUS:H  =(       d    X0R                  ;   nSnU R                  U5      n	U	bf  X@R                  ;   a>  U	R                  S:X  a.  [        [         R"                  " S5      5      n	U R                  U   nU	R%                  U5      n
U
S:w  a  SnU(       dø  U R&                  (       aŽ  US;   a!  [)        U R&                  [*        5      (       a  S
nU R&                  R-                  XU5      nUS   R                  nU[.        R0                  R3                  5       ;   a  Sn[        R5                  SX<5        U$ US;   a'  [)        U [*        5      (       a  U R-                  S
X#5      $ [        R	                  SXcU5        U R                  S
5      n	SnSnW	UW4$ ! [         a'    [        S5      nSn[        R	                  SU5         GNJf = f)NTÚ?Fz!No TeX to Unicode mapping for %a.r<  r  r   ÚLzGREEK CAPITALr>  r@  r6  zfonts/ttf/cmsy10.ttf)r@  rè   r<  zComputer ModernzSubstituting symbol %s from %szNFont %r does not have a glyph for %a [U+%x], substituting with a dummy symbol.é¤   )r5   r1   r-   Ú_logÚwarningr–  ÚchrÚunicodedataÚcategoryr’  Ú
startswithrN  r°   rx  Úfamily_namer#   r   Ú_get_data_pathr  rŠ  r‹  rE  r  r3  rG  Úvaluesre   )rV   rÔ   r³   r´   r•  Úfound_symbolÚnew_fontnameÚcharr‘   r]   Ú
glyphindexÚgÚfamilys                r4   r  ÚUnicodeFonts._get_glyphv  s;  € ð	CÜ(¨Ó-ˆHØˆLð "×3Ñ3°HÈ(ÓSÑˆàˆö Ø˜8Ó#¨°7Ó(:ä˜8“}�Ü×(Ò(¨Ó.¨qÑ1°SÓ8Ü&×+Ò+¨DÓ1×<Ñ<¸_×MÑMØ#'‘Là#'�Là# tÑ+×L°×7LÑ7LÑ0LˆGØ ˆLØ—>‘> ,Ó/ˆDØÑØ× 9Ñ 9Ó9Ø ×,Ñ,°Ó7Ü#Ü×,Ò,Ð-CÓDóF�Dà#×8Ñ8¸ÑB�HØ!×0Ñ0°Ó:�
Ø “?Ø#'�LæØ×"×"ØÐ ;Ó;Ü& t×':Ñ':¼I×FÑFØ#�Hà×'Ñ'×2Ñ2°8ÈÓM�Ø˜1™×)Ñ)�Øœ[×1Ñ1×8Ñ8Ó:Ó:Ø.�FÜ—	‘	Ð:¸CÔHØ�ð Ð ;Ó;Ü& t¬Y×7Ñ7ØŸ?™?¨4°ÓAÐAÜ—‘ð Aà)°ô:ð —~‘~ dÓ+�Ø�Ø�à�X˜wÐ&Ð&øôu ó 	CÜ˜3“xˆHØ ˆLÜ�L‰LÐ<¸c×Bð	Cús   ‚H) È)-IÉIc                ób   • U R                   (       a  U R                   R                  X5      $ X4/$ rS   )rŠ  rÕ   rÓ   s      r4   rÕ   Ú.UnicodeFonts.get_sized_alternatives_for_symbol·  s-   € à××Ø×&Ñ&×HÑHÈÓWÐWØ�Ð Ð rH   )rŠ  rÜ   ©rÔ   r•   r³   r•   r•  r(   r‹   ztuple[str, CharacterCodeType]r.  râ   )rA   rB   rC   rD   rE   rx  rF   rW   rm  rn  rN  r–  r  rÕ   rG   r/  r0  s   @r4   rt  rt  8  s‚   ø‡ ñ	ð ØñHÐÐDó ÷
".ñH ˜=×.Ñ.Ó0Ó1Ðð"Ø$5ð"Ø:Wô"ð?'Øð?'Ø Gô?'ðB!Ø/2ð!Ø7L÷!ò !rH   rt  c                  óN   ^ • \ rS rSr% 0 rS\S'   SS jr    SU 4S jjrSrU =r	$ )	ÚDejaVuFontsi¾  zdict[str, str]rG  c                ó’  • [        U [        5      (       a  [        X5      U l        O[	        X5      U l        [        X5      U l        [        R                  XU5        U R                  R                  SSSSSS.5        U R                  R                  5        H,  u  p4[        U5      nXPR                  U'   XPR                  U'   M.     g )Nr~  r  r€  r�  r‚  )r„  r…  r†  r‡  rˆ  )r‹  ÚDejaVuSerifFontsrE  rŠ  r‰  r3  Úbakomarå   rW   rG  ÚupdaterH  r"   rí   ©rV   r�   rž   rI  r’  rJ  s         r4   rW   ÚDejaVuFonts.__init__Á  s¬   € ä�dÔ,×-Ñ-Ü"+Ð,=Ó"PˆDÕä"/Ð0AÓ"TˆDÔÜ!Ð"3ÓFˆŒÜ×Ñ˜tÐ8HÔIà�‰×ÑØ!Ø!Ø#Ø"Ø"ñ
ô 	ð Ÿ™×,Ñ,Ö.‰IˆCÜ “~ˆHØ (�L‰L˜ÑØ!)�L‰L˜Óò /rH   c                óô   >• US:X  a  U R                   R                  XU5      $ [        U5      nU R                  S5      nUb'  UR	                  U5      nUS:w  a  [
        TU ]  SX#5      $ [
        TU ]  XU5      $ )Nú\primerC  r   )r³  r  r5   r°   r  ré   )rV   rÔ   r³   r´   r•  r]   r¨  rð   s          €r4   r  ÚDejaVuFonts._get_glyphÖ  s   ø€ ð �)ÓØ—;‘;×)Ñ)¨(ÀÓDÐDô )¨Ó-ˆHØ—>‘> $Ó'ˆDØÑØ!×0Ñ0°Ó:�
Ø “?Ü ™7Ñ-¨d°JÓDÐDä‘7Ñ% h¸CÓ@Ð@rH   )rŠ  r³  rÜ   r.  )
rA   rB   rC   rD   rG  rF   rW   r  rG   r/  r0  s   @r4   r°  r°  ¾  s0   ø‡ Ø!€HˆnÓ!ô*ð*AØðAØ G÷Aõ ArH   r°  c            	      ó8   • \ rS rSrSrSSSSSSS	SS
.rSS jrSrg)r²  iç  zj
A font handling class for the DejaVu Serif fonts

If a glyph is not found it will fallback to Stix Serif
zDejaVu SerifzDejaVu Serif:italiczDejaVu Serif:weight=boldzDejaVu Serif:italic:boldúDejaVu SansúDejaVu Sans MonozDejaVu Serif Display©r>  r@  rA  ÚbfitrB  r?  rC  rƒ  c                ó   • [         $ rS   )ÚDejaVuSerifFontConstantsrÙ   s    r4   rÚ   Ú#DejaVuSerifFonts.get_font_constantsø  s   € Ü'Ð'rH   r?   Nrã   ©rA   rB   rC   rD   rE   rG  rÚ   rG   r?   rH   r4   r²  r²  ç  s-   † ñð Ø#Ø(Ø*ØØ Ø$Øñ	€H÷(rH   r²  c            	      ó8   • \ rS rSrSrSSSSSSSSS	.rSS
 jrSrg)ÚDejaVuSansFontsiü  zh
A font handling class for the DejaVu Sans fonts

If a glyph is not found it will fallback to Stix Sans
r»  zDejaVu Sans:italiczDejaVu Sans:weight=boldzDejaVu Sans:italic:boldr¼  zDejaVu Sans Displayr½  c                ó   • [         $ rS   )ÚDejaVuSansFontConstantsrÙ   s    r4   rÚ   Ú"DejaVuSansFonts.get_font_constants  s   € Ü&Ð&rH   r?   Nrã   rÂ  r?   rH   r4   rÄ  rÄ  ü  s-   † ñð Ø"Ø'Ø)ØØ Ø#Øñ	€H÷'rH   rÄ  c                  ó–   • \ rS rSrSrSSSSSSS	SS
SSSSS.rSrSrSS jr    SS jr	\
R                      SS j5       rSS jrSrg)rE  i  aE  
A font handling class for the STIX fonts.

In addition to what UnicodeFonts provides, this class:

- supports "virtual fonts" which are complete alpha numeric
  character sets with different font styles at special Unicode
  code points, such as "Blackboard".

- handles sized alternative characters for the STIXSizeX fonts.
r}  zSTIXGeneral:italiczSTIXGeneral:weight=boldzSTIXGeneral:italic:boldÚSTIXNonUnicodezSTIXNonUnicode:italiczSTIXNonUnicode:weight=boldr~  r  r€  r�  r‚  )r>  r@  rA  r¾  ÚnonunirmÚnonuniitÚnonunibfrƒ  r„  r…  r†  r‡  rˆ  NFc                óÄ   • [         R                  XU5        U R                  R                  5        H,  u  p4[	        U5      nXPR
                  U'   XPR
                  U'   M.     g rS   )rå   rW   rG  rH  r"   rí   rµ  s         r4   rW   ÚStixFonts.__init__/  sM   € Ü×Ñ˜tÐ8HÔIØŸ™×,Ñ,Ö.‰IˆCÜ “~ˆHØ (�L‰L˜ÑØ!)�L‰L˜Óò /rH   c                ó”  • [         R                  " U5      nU R                  (       a  Uc  US;  a  [         S   nSnOSn[        U[        5      (       a   XB   nO[        U[        5      (       a  UnOS nUb‚  Sn[        U5      nXx:  a+  Xx-   S-  n	Xi   n
X:S   :  a  U	nOX:S   ::  a  OU	S-   nXx:  a  M+  W
S   Us=::  a	  U
S   ::  a  O  OX:S   -
  U
S	   -   nU
S   nOU(       d  Sn[        R                  S
   nUS;   a  [        R                  " X35      nUS;   a  SUs=::  a  S::  a
  O  X4$ SU-   nX4$ ! [
         a    US   n NÒf = f)N)rè   rç   rB  TFr>  r   rp   r   r   r  )r>  r@  r<  )r@  r>  rA  r¾  i à  iÿø  Únonuni)r   ró   Ú_sansr‹  Údictr0   ÚlistrO  r  r  r   )rV   rÔ   r³   r•  Úfont_mappingÚdoing_sans_conversionÚmappingÚloÚhiÚmidÚranges              r4   r–  ÚStixFonts._map_virtual_font6  sƒ  € ô *×-Ò-¨hÓ7ˆØ�J�J˜<Ñ/ØÐ$:Ó:Ü-¨dÑ3ˆLØ$(Ñ!à$)Ð!ä�l¤D×)Ñ)ð-Ø&Ñ2‘ô ˜¤d×+Ñ+Ø"‰GàˆGàÑàˆBÜ�W“ˆBØ“'Ø‘u˜q‘j�Ø™�Ø A™hÓ&Ø‘BØ q¡Ó)Øà˜q™�Bð •'ð �Q‰x˜8Õ/ u¨Q¡xÖ/Ø#¨A¡hÑ.°°q±Ñ9�Ø  ™8‘Þ*à�ÜŸ<™<Ð(:Ñ;�ð Ð-Ó-Ü'×+Ò+¨HÓ?ˆHð Ð1Ó1°fÀÕ6RÈFÕ6Rð Ð!Ð!ð   (Ñ*ˆHàÐ!Ð!øôK ó -Ø& tÑ,’ð-ús   ÁD5 Ä5EÅEc                óV  • SSSSSSS.nUR                  X"5      n [        U5      n[        S5       Vs/ s HH  nU R	                  [        U5      5      R                  U5      S	:w  d  M2  [        U5      [        U5      4PMJ     nnUS
:X  a  US S nU$ ! [         a    X4/s $ f = fs  snf )NrY  rZ  r[  r\  u   âŸ¨u   âŸ©)rc  rd  re  rf  r]  r^  é   r   r_  éÿÿÿÿ)ró   r5   r1   rÚ  r°   r•   r  rž  )rV   rÔ   r´   Úfixesr•  ÚiÚalternativess          r4   rÕ   Ú+StixFonts.get_sized_alternatives_for_symboll  sÈ   € ð ˜s¨3°sØ6Ø7ñ
ˆð
 �i‰i˜Ó!ˆð	%Ü(¨Ó-ˆHô :?¸q¼ó Qº°AØŸ>™>¬#¨a«&Ó1×@Ñ@ÀÓJÈaÑOó 0œ˜Q›¤ X£Ó/¹ˆð Qð �,ÓØ'¨¨Ð,ˆLØÐøô ó 	%Ø�OÐ$Ò$ð	%üòQs   œB ´1B&Á)B&ÂB#Â"B#c                ó<   • U R                   (       a  [        $ [        $ rS   )rÑ  ÚSTIXSansFontConstantsÚSTIXFontConstantsrÙ   s    r4   rÚ   ÚStixFonts.get_font_constants�  s   € Ø�:�:Ü(Ð(ä$Ð$rH   r?   rÜ   r®  râ   rã   )rA   rB   rC   rD   rE   rG  rŠ  rÑ  rW   r–  rê   rë   rÕ   rÚ   rG   r?   rH   r4   rE  rE    s‹   † ñ
ð Ø"Ø'Ø)Ø$Ø+Ø0ØØØØØØñ€Hð €NØ€Eô*ð4"Ø$5ð4"Ø:Wô4"ðl ‡_�_ðØ/2ðØ7Lóó ð÷(%rH   rE  c                  ó   • \ rS rSrSrSrSrg)r‰  iˆ  zX
A font handling class for the STIX fonts (that uses sans-serif
characters by default).
Tr?   N)rA   rB   rC   rD   rE   rÑ  rG   r?   rH   r4   r‰  r‰  ˆ  s   † ñð ƒErH   r‰  çffffffæ?rÝ  c                  ó  • \ rS rSr% SrSrS\S'   SrS\S'   SrS\S'   S	r	S\S
'   Sr
S\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S '   SrS\S!'   SrS\S"'   S#rg)$rØ   i¯  zÄ
A set of constants that controls how certain things, such as sub-
and superscripts are laid out.  These are all metrics that can't
be reliably retrieved from the font metrics in the font itself.
çš™™™™™©?zT.ClassVar[float]Úscript_spacegš™™™™™Ù?ÚsupdropÚsubdroprè  Úsup1ç333333Ó?Úsub1ç      à?Úsub2gš™™™™™™?Údeltaçš™™™™™É?Údelta_slantedçš™™™™™¹?Údelta_integralgffffffö?Únum1g      ø?Únum2gÍÌÌÌÌÌô?Únum3Údenom1gš™™™™™ñ?Údenom2NzT.ClassVar[float | None]r  r!  r$  r?   )rA   rB   rC   rD   rE   rë  rF   rì  rí  rî  rð  rò  ró  rõ  r÷  rø  rù  rú  rû  rü  r  r!  r$  rG   r?   rH   r4   rØ   rØ   ¯  sä   ‡ ñð '+€LÐ#Ó*ð "%€GÐÓ$ð "%€GÐÓ$ð "€DÐ
Ó!ð "€DÐ
Ó!ð "€DÐ
Ó!ð  %€EÐÓ$ð
 (+€MÐ$Ó*ð ),€NÐ%Ó+ð "€DÐ
Ó!ð "€DÐ
Ó!ð "€DÐ
Ó!ð !$€FÐÓ#ð !$€FÐÓ#ð -1€KÐ)Ó0ð &*€DÐ
"Ó)ð *.€HÐ&Ö-rH   rØ   c                  óž   • \ rS rSrSrSrSrSrSrS\-  r	S\-  r
S\-  rS\-  rS	\-  rS
\-  rS\-  rS\-  rS\-  rS\-  rSrSr\S-  rSrg)rk  ió  gš™™™™Á?rï  iŽã i€- iÍÌ  i5› iff išô iúÒ
 iºL i† i¨ù
 ix„ ç      Ð?g     ð?i   r?   N)rA   rB   rC   rD   rë  ró  rõ  r÷  Ú	_x_heightrì  rí  rî  rð  rò  rø  rù  rú  rû  rü  r  r!  r$  rG   r?   rH   r4   rk  rk  ó  s™   † ð "€LØ€EØ€MØ€NØ€Ið �yÑ €GØ�iÑ€GØ�IÑ€DØ�IÑ€DØ�IÑ€DØ�IÑ€DØ�IÑ€DØ�IÑ€DØ�iÑ€FØ�iÑ€Fð !€KØ€DØ˜5Ñ ƒHrH   rk  c                  óž   • \ rS rSrSrSrSrSrSr\S-  r	S\-  r
S\-  rS	\-  rS
\-  rS\-  rS\-  rS\-  rS\-  rS\-  rS\-  rSrSrSrg)rå  i  rö  rê  rï  iÂ  iè  i‚  gÇº¸� I@i�  é–   i5  ië  i¨  iÚ  iô  iw  rþ  ç      ð?r?   N)rA   rB   rC   rD   rë  ró  rõ  r÷  rÿ  r$  rì  rí  rî  rð  rò  rø  rù  rú  rû  rü  r  r!  rG   r?   rH   r4   rå  rå    sŽ   † Ø€LØ€EØ€MØ€NØ€IØ˜4Ñ€Hð �I‰o€GØ˜	Ñ!€GØ�‰?€DØ�‰?€DØ�‰?€DØ�‰?€DØ�‰?€DØ�‰?€DØ�9‰_€FØ�9‰_€Fð €KØƒDrH   rå  c                  ó    • \ rS rSrSrSrSrSrg)rä  i+  rê  ç333333ã?rï  r?   N)rA   rB   rC   rD   rë  rõ  r÷  rG   r?   rH   r4   rä  rä  +  s   † Ø€LØ€MØƒNrH   rä  c                  óŠ   • \ rS rSrSr\S-  rS\-  rS\-  rS\-  rS\-  r	S\-  r
S	\-  rS
\-  rS\-  rS\-  rS\-  rSrSrg)rÀ  i1  i'  é   çð§ÆK7´ˆ@çš™™™™™Y@ç;ßO�—nŠ@çw¾Ÿ/3s@ç-²�ï§Æƒ@ç=
×£pç—@ç‰A`åÐ"‹@ç¼t“VŽ@ç\�Âõ(1˜@é   rþ  r?   N©rA   rB   rC   rD   rÿ  r$  rì  rí  rî  rð  rò  rø  rù  rú  rû  rü  r  rG   r?   rH   r4   rÀ  rÀ  1  ó}   † Ø€IØ˜4Ñ€Hð ˜	Ñ!€GØ�iÑ€GØ�YÑ€DØ�YÑ€DØ�YÑ€DØ�YÑ€DØ�YÑ€DØ�YÑ€DØ�yÑ €FØ�9‰_€Fð ƒKrH   rÀ  c                  óŠ   • \ rS rSrSr\S-  rS\-  rS\-  rS\-  rS\-  r	S\-  r
S	\-  rS
\-  rS\-  rS\-  rS\-  rSrSrg)rÆ  iF  i`  r  r  r  r	  r
  r  r  r  r  r  r  rþ  r?   Nr  r?   rH   r4   rÆ  rÆ  F  r  rH   rÆ  c                  óT   • \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS jr
S	rg
)ÚNodei[  zA node in the TeX box model.c                ó   • SU l         g ©Nr   ©r‘  rÙ   s    r4   rW   ÚNode.__init__^  s	   € Øˆ�	rH   c                ó,   • [        U 5      R                  $ rS   )ÚtyperA   rÙ   s    r4   Ú__repr__ÚNode.__repr__a  s   € Ü�D‹z×"Ñ"Ð"rH   c                ó   • g©Nr¡   r?   )rV   Únexts     r4   r)  ÚNode.get_kerningd  s   € ØrH   c                ó.   • U =R                   S-  sl         g)zr
Shrinks one level smaller.  There are only three levels of
sizes, after which things will no longer get smaller.
r   Nr  rÙ   s    r4   ÚshrinkÚNode.shrinkg  s   € ð
 	�	Š	�Q‰Ž	rH   c                ó   • g)zRender this node.Nr?   ©rV   r½   r‚   rƒ   s       r4   ÚrenderÚNode.rendern  s   � rH   c                ó   • g)NTr?   rÙ   s    r4   Úis_char_nodeÚNode.is_char_nodeq  s   € ð rH   r  N©r‹   rß   ©r‹   r•   ©r   zNode | Noner‹   r9   ©r½   rP   r‚   r9   rƒ   r9   r‹   rß   ©r‹   rŒ   )rA   rB   rC   rD   rE   rW   r  r)  r#  r'  r*  rG   r?   rH   r4   r  r  [  s#   † Ù&ôô#ôôô ÷rH   r  c                  ó^   ^ • \ rS rSrSrSU 4S jjrSU 4S jjr          S	S jrSrU =r	$ )
rŠ   i{  z A node with a physical location.c                óF   >• [         TU ]  5         Xl        X l        X0l        g rS   )ré   rW   r:   r;   r<   )rV   r:   r;   r<   rð   s       €r4   rW   ÚBox.__init__~  s   ø€ Ü‰ÑÔØŒ
ØŒØ�
rH   c                óâ   >• [         TU ]  5         U R                  [        :  aL  U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        g g rS   )ré   r#  r‘  ÚNUM_SIZE_LEVELSr:   ÚSHRINK_FACTORr;   r<   ©rV   rð   s    €r4   r#  Ú
Box.shrink„  sH   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�JŠJœ=Ñ(�JØ�KŠKœ=Ñ(�KØ�JŠJœ=Ñ(ŽJð 'rH   c                ó   • g rS   r?   )rV   r½   r†   Úy1r‡   Úy2s         r4   r'  Ú
Box.render‹  s   € àrH   )r<   r;   r:   )r:   r9   r;   r9   r<   r9   r‹   rß   r,  )r½   rP   r†   r9   r:  r9   r‡   r9   r;  r9   r‹   rß   )
rA   rB   rC   rD   rE   rW   r#  r'  rG   r/  r0  s   @r4   rŠ   rŠ   {  sB   ø† Ù*÷÷)ðØðØ#ðØ).ðØ49ðØ>B÷ò rH   rŠ   c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚVboxi�  z$A box with only height (zero width).c                ó&   >• [         TU ]  SX5        g r  ©ré   rW   )rV   r;   r<   rð   s      €r4   rW   ÚVbox.__init__“  s   ø€ Ü‰Ñ˜˜VÕ+rH   r?   )r;   r9   r<   r9   ©rA   rB   rC   rD   rE   rW   rG   r/  r0  s   @r4   r>  r>  �  s   ø† Ù.÷,õ ,rH   r>  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚHboxi—  z.A box with only width (zero height and depth).c                ó(   >• [         TU ]  USS5        g r  r@  ©rV   r:   rð   s     €r4   rW   ÚHbox.__init__š  s   ø€ Ü‰Ñ˜  BÕ'rH   r?   ©r:   r9   rB  r0  s   @r4   rD  rD  —  s   ø† Ù8÷(õ (rH   rD  c                  ór   ^ • \ rS rSrSrSU 4S jjrSS jrSS jrSS jrSS jr	SS jr
SU 4S	 jjrS
rU =r$ )ÚChariž  aÚ  
A single character.

Unlike TeX, the font information and metrics are stored with each `Char`
to make it easier to lookup the font metrics when needed.  Note that TeX
boxes have a width, height, and depth, unlike Type1 and TrueType which use
a full bounding box and an advance in the x-direction.  The metrics must
be converted to the TeX model, and the advance (if different from width)
must be converted into a `Kern` node when the `Char` is added to its parent
`Hlist`.
c                óø   >• [         TU ]  5         Xl        UR                  U l        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        U R                  5         g rS   )	ré   rW   ÚcÚfontsetr]   r³   r^   rª   Ú_update_metrics)rV   rL  Ústaterð   s      €r4   rW   ÚChar.__init__«  sZ   ø€ Ü‰ÑÔØŒØ—}‘}ˆŒØ—J‘JˆŒ	Ø×*Ñ*ˆŒØŸ™ˆŒØ—9‘9ˆŒð 	×ÑÕrH   c                ó    • SU R                   -  $ )Nz`%s`©rL  rÙ   s    r4   r  ÚChar.__repr__·  s   € Ø˜Ÿ™‰ÐrH   c                óx  • U R                   R                  U R                  U R                  U R                  U R
                  U R                  5      =ol        U R                  S:X  a  UR                  U l	        OUR                  U l	        UR                  U l        UR                  UR                  -
  * U l        g )NÚ )rM  r¹   r]   r³   rL  r^   rª   Ú_metricsr�   r:   r   r;   r<   ©rV   rs   s     r4   rN  ÚChar._update_metricsº  s�   € Ø"&§,¡,×":Ñ":Ø�I‰I�t—‘¨¯©°·±¸t¿x¹xó#Ið 	Iˆ”-à�6‰6�S‹=Ø Ÿ™ˆD�Jà Ÿ™ˆDŒJØ—o‘oˆŒØ—‘¨¯©Ñ7Ð8ˆ�
rH   c                ó.   • U R                   R                  $ rS   )rV  r‘   rÙ   s    r4   Ú
is_slantedÚChar.is_slantedÄ  s   € Ø�}‰}×$Ñ$Ð$rH   c                óx  • U R                   R                  U R                  -
  nSn[        U[        5      (       a}  U R
                  R                  U R                  U R                  U R                  U R                  UR                  UR                  UR                  UR                  U R                  5	      nX#-   $ )z¤
Return the amount of kerning between this and the given character.

This method is called when characters are strung together into `Hlist`
to create `Kern` nodes.
r¡   )rV  r�   r:   r‹  rJ  rM  r«   r]   r³   rL  r^   rª   )rV   r   r�   Úkerns       r4   r)  ÚChar.get_kerningÇ  s…   € ð —-‘-×'Ñ'¨$¯*©*Ñ4ˆØˆÜ�dœD×!Ñ!Ø—<‘<×(Ñ(Ø—	‘	˜4Ÿ?™?¨D¯F©F°D·M±MØ—	‘	˜4Ÿ?™?¨D¯F©F°D·M±MØ—‘óˆDð ‰~ÐrH   c           
     óª   • U R                   R                  XUU R                  U R                  U R                  U R
                  U R                  5        g rS   )rM  r¾   r]   r³   rL  r^   rª   r&  s       r4   r'  ÚChar.render×  s9   € Ø�‰×!Ñ!Ø�qØ�I‰I�t—‘¨¯©°·±¸t¿x¹xõ	IrH   c                ó  >• [         TU ]  5         U R                  [        :  ae  U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        g g rS   )	ré   r#  r‘  r5  r^   r6  r:   r;   r<   r7  s    €r4   r#  ÚChar.shrinkÜ  sV   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�MŠMœ]Ñ*�MØ�JŠJœ]Ñ*�JØ�KŠKœ]Ñ*�KØ�JŠJœ]Ñ*ŽJð	 'rH   )
rV  rL  r<   rª   r]   r³   rM  r^   r;   r:   )rL  r•   rO  ÚParserStater-  r,  r0  r.  r/  )rA   rB   rC   rD   rE   rW   r  rN  rZ  r)  r'  r#  rG   r/  r0  s   @r4   rJ  rJ  ž  s1   ø† ñ
÷
ôô9ô%ôô I÷
+õ +rH   rJ  c                  óD   ^ • \ rS rSrSrSS jrSU 4S jjrSS jrSrU =r	$ )	ÚAccentiå  zŽ
The font metrics need to be dealt with differently for accents,
since they are already offset correctly from the baseline in
TrueType fonts.
c                ó8  • U R                   R                  U R                  U R                  U R                  U R
                  U R                  5      =ol        UR                  UR                  -
  U l
        UR                  UR                  -
  U l        SU l        g r  )rM  r¹   r]   r³   rL  r^   rª   rV  rw   rt   r:   ru   rx   r;   r<   rW  s     r4   rN  ÚAccent._update_metricsë  sm   € Ø"&§,¡,×":Ñ":Ø�I‰I�t—‘¨¯©°·±¸t¿x¹xó#Ið 	Iˆ”-à—\‘\ G§L¡LÑ0ˆŒ
Ø—l‘l W§\¡\Ñ1ˆŒØˆ�
rH   c                óB   >• [         TU ]  5         U R                  5         g rS   )ré   r#  rN  r7  s    €r4   r#  ÚAccent.shrinkò  s   ø€ Ü‰‰ÔØ×ÑÕrH   c           
     ó  • U R                   R                  XU R                  R                  -
  X0R                  R                  -   U R
                  U R                  U R                  U R                  U R                  5        g rS   )
rM  r¾   rV  rt   rx   r]   r³   rL  r^   rª   r&  s       r4   r'  ÚAccent.renderö  sU   € Ø�‰×!Ñ!Ø˜Ÿ™×*Ñ*Ñ*¨A·±×0BÑ0BÑ,BØ�I‰I�t—‘¨¯©°·±¸t¿x¹xõ	IrH   )rV  r<   r;   r:   r,  r/  )
rA   rB   rC   rD   rE   rN  r#  r'  rG   r/  r0  s   @r4   re  re  å  s   ø† ñô
÷÷Iò IrH   re  c                  ób   ^ • \ rS rSrSrSU 4S jjrS	U 4S jjr    S
S jrSU 4S jjrSr	U =r
$ )ÚListiü  z0A list of nodes (either horizontal or vertical).c                ór   >• [         TU ]  SSS5        SU l        / UQU l        SU l        SU l        SU l        g )Nr¡   r   )ré   rW   Úshift_amountÚchildrenÚglue_setÚ	glue_signÚ
glue_order©rV   Úelementsrð   s     €r4   rW   ÚList.__init__ÿ  s<   ø€ Ü‰Ñ˜˜R Ô$ØˆÔØ#˜(˜ˆŒàˆŒØˆŒØˆ�rH   c                óV  >• SR                  [        TU ]	  5       U R                  U R                  U R
                  U R                  U R                  (       aN  S[        R                  " SR                  [        SR                   U R                  5      5      S5      -   S-   5      $ S5      $ )Nz/{}<w={:.02f} h={:.02f} d={:.02f} s={:.02f}>[{}]Ú
z{!r},z  Ú )Úformatré   r  r:   r;   r<   ro  rp  ÚtextwrapÚindentÚjoinrZ   r7  s    €r4   r  ÚList.__repr__  s�   ø€ Ø@×GÑGÜ‰GÑÓØ�J‰J˜Ÿ™Ø�J‰J˜×)Ñ)ð �}�}ð ”8—?’?Ø—	‘	œ#˜gŸn™n¨d¯m©mÓ<Ó=Øóñ àñó	
ð 	
ð #%ó
ð 	
rH   c                ó`  ^• [        U4S j[        [        T5      5      S S S2    5       S5      =U l        nX l        TU   S:w  a  UTU   -  U l        OSU l        SU l        US:X  aG  [        U R                  5      (       a,  [        R                  SU[        U 5      R                  U 5        g g g )Nc              3  ó>   >#   • U  H  nTU   S :w  d  M  Uv •  M     g7f)r   Nr?   )r
  rà  Útotalss     €r4   r  Ú!List._set_glue.<locals>.<genexpr>  s   øé € ÐCÒ0�1°F¸1±IÀ±N�Q‰QÒ0ùs   ƒ”	rÞ  r   r¡   z	%s %s: %r)r   rÚ  rO  rs  rr  rq  Ú
glue_ratiorp  rœ  r�  r  rA   )rV   r‚   Úsignr�  Ú
error_typeÚos      `  r4   Ú	_set_glueÚList._set_glue  s£   ø€ ä"äCœœc &›kÓ*©4¨R¨4Ò0ÓCÀQóHð 	HˆŒ˜!ð ŒØ�!‰9˜‹?Ø  q¡	™MˆD�MàˆDŒNØ ˆDŒOØ�‹6Ü�4—=‘=×!Ñ!Ü—‘˜[Ø'¬¨d«×)<Ñ)<¸dõDð "ð rH   c                óö   >• U R                    H  nUR                  5         M     [        TU ]  5         U R                  [        :  a3  U =R
                  [        -  sl        U =R                  [        -  sl        g g rS   )rp  r#  ré   r‘  r5  ro  r6  rq  )rV   Úchildrð   s     €r4   r#  ÚList.shrink#  sT   ø€ Ø—]”]ˆEØ�L‰LŽNñ #ä‰‰ÔØ�9‰9”Ó&Ø×Ò¤Ñ.ÕØ�MŠM¤Ñ.ŽMð 'rH   )rp  rs  rƒ  rq  rr  ro  )ru  úT.Sequence[Node]r-  )
r‚   r9   r„  r~   r�  zlist[float]r…  r•   r‹   rß   r,  )rA   rB   rC   rD   rE   rW   r  r‡  r#  rG   r/  r0  s   @r4   rm  rm  ü  s2   ø† Ù:÷÷	
ðDØ!ðDØ&*ôD÷ /õ /rH   rm  c                  ól   ^ • \ rS rSrSr   S   S	U 4S jjjrS
S jrSS jr  S   SS jjrSr	U =r
$ )ÚHlisti,  zA horizontal list of boxes.c                ó~   >• [         TU ]  U5        U(       a  U R                  5         U R                  X#S9  SU l        g )N)rb   r   F)ré   rW   r]  ÚhpackÚ
is_phantom)rV   ru  rb   r   Údo_kernrð   s        €r4   rW   ÚHlist.__init__/  s3   ø€ ô 	‰Ñ˜Ô"ÞØ�I‰IŒKØ�
‰
�Qˆ
ÑØˆ�rH   c                óB   • [        [        S U R                  5      5      $ )Nc                ó"   • U R                  5       $ rS   )r*  )Únodes    r4   Ú<lambda>Ú$Hlist.is_char_node.<locals>.<lambda>:  s   €  D×$5Ñ$5Ô$7rH   )ÚallrZ   rp  rÙ   s    r4   r*  ÚHlist.is_char_node8  s   € ä”3Ñ7¸¿¹ÓGÓHÐHrH   c                ó  • / n[         R                  " U R                  U R                  SS 5       HK  u  p#UR                  U5        UR	                  U5      nUS:w  d  M/  [        U5      nUR                  U5        MM     Xl        g)zÓ
Insert `Kern` nodes between `Char` nodes to set kerning.

The `Char` nodes themselves determine the amount of kerning they need
(in `~Char.get_kerning`), and this function just creates the correct
linked list.
r   Nr¡   )Ú	itertoolsÚzip_longestrp  r¼   r)  ÚKern)rV   Únew_childrenÚelem0Úelem1Úkerning_distancer]  s         r4   r]  Ú
Hlist.kern<  sy   € ð ˆÜ%×1Ò1°$·-±-ÀÇÁÈqÈrÐARÖS‰LˆEØ×Ñ Ô&Ø$×0Ñ0°Ó7ÐØ 2Õ%ÜÐ,Ó-�Ø×#Ñ# DÖ)ñ Tð %�rH   c                óZ  • SnSnSnS/S-  nS/S-  nU R                    GH�  n[        U[        5      (       a:  XXR                  -  n[	        X8R
                  5      n[	        XHR                  5      nMS  [        U[        5      (       a�  XXR                  -  n[        R                  " UR
                  5      (       dg  [        R                  " UR                  5      (       d?  [        USS5      n	[	        X8R
                  U	-
  5      n[	        XHR                  U	-   5      nMÿ  GM  GM  [        U[        5      (       a]  UR                  n
XZR                  -  nXjR                  ==   U
R                  -  ss'   XzR                  ==   U
R                   -  ss'   GMw  [        U["        5      (       d  GM�  XXR                  -  nGM      X0l        X@l        US:X  a  X-  nXl        X-
  nUS:X  a  SU l        SU l        SU l        gUS:”  a  U R+                  USUS5        gU R+                  US	US
5        g)a™  
Compute the dimensions of the resulting boxes, and adjust the glue if
one of those dimensions is pre-specified.  The computed sizes normally
enclose all of the material inside the new box; but some items may
stick out if negative glue is used, if the box is overfull, or if a
``\vbox`` includes other boxes that have been shifted left.

Parameters
----------
w : float, default: 0
    A width.
m : {'exactly', 'additional'}, default: 'additional'
    Whether to produce a box whose width is 'exactly' *w*; or a box
    with the natural width of the contents, plus *w* ('additional').

Notes
-----
The defaults produce a box with the natural width of the contents.
r¡   é   ro  Ú
additionalr   Nr   ÚOverfulrÞ  ÚUnderful)rp  r‹  rJ  r:   rv   r;   r<   rŠ   r[   ÚisinfÚgetattrÚGlueÚ	glue_specÚstretch_orderÚstretchÚshrink_orderr#  rž  rr  rs  rƒ  r‡  )rV   rb   r   rc   rd   r‚   Útotal_stretchÚtotal_shrinkÚprr  r¬  s              r4   r�  ÚHlist.hpackM  sÃ  € ð0 ˆØˆØˆØ˜˜q™ˆØ�t˜a‘xˆØ—•ˆAÜ˜!œT×"Ñ"Ø—W‘W‘�Ü˜Ÿ8™8Ó$�Ü˜Ÿ7™7“O’Ü˜Aœs×#Ñ#Ø—W‘W‘�Ü—x’x §¡×)Ñ)´"·(²(¸1¿7¹7×2CÑ2CÜ  >°2Ó6�AÜ˜AŸx™x¨!™|Ó,�AÜ˜AŸw™w¨™{Ó+’Aò 3DÒ)ô ˜Aœt×$Ñ$ØŸK™K�	Ø—_‘_Ñ$�Ø×5Ñ5Ó6¸)×:KÑ:KÑKÓ6Ø×3Ñ3Ó4¸	×8HÑ8HÑHÖ4Ü˜Aœt×$Ô$Ø—W‘W‘“ñ# ð$ ŒØŒ
à�ÓØ‰FˆAØŒ
Ø‰Eˆà�‹7ØˆDŒNØˆDŒOØ ˆDŒOØØˆr‹6Ø�N‰N˜1˜a °	Õ:à�N‰N˜1˜b ,°
Õ;rH   )rp  r<   rs  rƒ  rr  r;   r‘  r:   )r¡   r¦  T)ru  rŒ  rb   r9   r   ú"T.Literal['additional', 'exactly']r’  rŒ   r0  r,  ©r¡   r¦  )rb   r9   r   r´  r‹   rß   )rA   rB   rC   rD   rE   rW   r*  r]  r�  rG   r/  r0  s   @r4   rŽ  rŽ  ,  sV   ø† Ù%à>AØ9EØ!%ð Ø6ð à÷ ð  ôIô%ð"  #Ø6Bð?<Ø3ð?<ØGK÷?<ó ?<rH   rŽ  c                  óv   ^ • \ rS rSrSr  S	 S
U 4S jjjrSS jrSS\R                  4     SS jjr	Sr
U =r$ )ÚVlisti�  zA vertical list of boxes.r¡   r¦  c                óB   >• [         TU ]  U5        U R                  X#S9  g )N)rc   r   )ré   rW   Úvpack)rV   ru  rc   r   rð   s       €r4   rW   ÚVlist.__init__’  s   ø€ ä‰Ñ˜Ô"Ø�
‰
�Qˆ
ÒrH   c                ó   • g©NFr?   rÙ   s    r4   r*  ÚVlist.is_char_node—  s   € àrH   c                óÒ  • SnSnSnS/S-  nS/S-  nU R                    GHF  n	[        U	[        5      (       ak  XeU	R                  -   -  nU	R                  n[
        R                  " U	R                  5      (       d'  [        U	SS5      n
[        XIR                  U
-   5      nM‚  M„  [        U	[        5      (       ab  Xe-  nSnU	R                  nXkR                  -  nX{R                  ==   UR                  -  ss'   X‹R                  ==   UR                  -  ss'   Mû  [        U	[         5      (       a  XeU	R                  -   -  nSnGM&  [        U	["        5      (       d  GM>  [%        S5      e   X@l        XS:”  a  XeU-
  -  nX0l        OXPl        US:X  a  X-  nXl        X-
  nUS:X  a  SU l        SU l        SU l        gUS:”  a  U R-                  USUS	5        gU R-                  US
US5        g)aó  
Compute the dimensions of the resulting boxes, and to adjust the glue
if one of those dimensions is pre-specified.

Parameters
----------
h : float, default: 0
    A height.
m : {'exactly', 'additional'}, default: 'additional'
    Whether to produce a box whose height is 'exactly' *h*; or a box
    with the natural height of the contents, plus *h* ('additional').
l : float, default: np.inf
    The maximum height.

Notes
-----
The defaults produce a box with the natural height of the contents.
r¡   r¥  ro  z1Internal mathtext error: Char node found in Vlistr¦  r   Nr   r§  rÞ  r¨  )rp  r‹  rŠ   r;   r<   r[   r©  r:   rª  rv   r«  r¬  r­  r®  r¯  r#  rž  rJ  ÚRuntimeErrorrr  rs  rƒ  r‡  )rV   rc   r   Úlrb   rd   r‚   r°  r±  r²  rr  r¬  s               r4   r¹  ÚVlist.vpack›  sÀ  € ð0 ˆØˆØˆØ˜˜q™ˆØ�t˜a‘xˆØ—•ˆAÜ˜!œS×!Ñ!Ø˜Ÿ™‘\Ñ!�Ø—G‘G�Ü—x’x §¡×(Ñ(Ü  >°2Ó6�AÜ˜AŸw™w¨™{Ó+’Añ )ô ˜Aœt×$Ñ$Ø‘�Ø�ØŸK™K�	Ø—_‘_Ñ$�Ø×5Ñ5Ó6¸)×:KÑ:KÑKÓ6Ø×3Ñ3Ó4¸	×8HÑ8HÑHÕ4Ü˜Aœt×$Ñ$Ø˜Ÿ™‘[Ñ �Ø“Ü˜Aœt×$Ô$Ü"ØGóIð Iñ% ð* Œ
Ø‹5Ø�Q‘‰JˆAØ�JàŒJà�ÓØ‰FˆAØŒØ‰Eˆà�‹6ØˆDŒNØˆDŒOØ ˆDŒOØàˆr‹6Ø�N‰N˜1˜a °	Õ:à�N‰N˜1˜b ,°
Õ;rH   )r<   rs  rƒ  rr  r;   r:   rµ  )ru  rŒ  rc   r9   r   r´  r0  )rc   r9   r   r´  rÀ  r9   r‹   rß   )rA   rB   rC   rD   rE   rW   r*  r[   Úinfr¹  rG   r/  r0  s   @r4   r·  r·  �  sY   ø† Ù#à>AØ9EðØ6÷ð ô
ð  #Ø6BØŸ™ðG<Ø3ðG<àðG<à$(÷G<ó G<rH   r·  c                  óN   ^ • \ rS rSrSrSU 4S jjr          SS jrSrU =r$ )ÚRuleiå  a}  
A solid black rectangle.

It has *width*, *depth*, and *height* fields just as in an `Hlist`.
However, if any of these dimensions is inf, the actual value will be
determined by running the rule up to the boundary of the innermost
enclosing box.  This is called a "running dimension".  The width is never
running in an `Hlist`; the height and depth are never running in a `Vlist`.
c                óH   >• [         TU ]  XU5        UR                  U l        g rS   )ré   rW   rM  )rV   r:   r;   r<   rO  rð   s        €r4   rW   ÚRule.__init__ð  s   ø€ Ü‰Ñ˜¨Ô.Ø—}‘}ˆ�rH   c                óB   • U R                   R                  XX5-
  XE5        g rS   )rM  rÂ   rÁ   s         r4   r'  ÚRule.renderô  s   € à�‰×'Ñ'¨°1±5¸!Õ?rH   )rM  )r:   r9   r;   r9   r<   r9   rO  rc  rà   )	rA   rB   rC   rD   rE   rW   r'  rG   r/  r0  s   @r4   rÄ  rÄ  å  sF   ø† ñ÷%ð@Øð@Ø!ð@Ø&+ð@Ø05ð@Ø:>÷@ò @rH   rÄ  c                  ó4   ^ • \ rS rSrSrSSU 4S jjjrSrU =r$ )ÚHruleiù  z.Convenience class to create a horizontal rule.c                óv   >• Uc  UR                  5       nUS-  =p4[        TU ]	  [        R                  X4U5        g )Nrñ  ©Úget_current_underline_thicknessré   rW   r[   rÂ  )rV   rO  Ú	thicknessr;   r<   rð   s        €r4   rW   ÚHrule.__init__ü  s8   ø€ ØÑØ×=Ñ=Ó?ˆIØ" S™Ð(ˆÜ‰ÑœŸ™ °Õ6rH   r?   rS   )rO  rc  rÎ  úfloat | NonerB  r0  s   @r4   rÊ  rÊ  ù  s   ø† Ù8÷7÷ 7rH   rÊ  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚVrulei  z,Convenience class to create a vertical rule.c                ó‚   >• UR                  5       n[        TU ]	  U[        R                  [        R                  U5        g rS   rÌ  )rV   rO  rÎ  rð   s      €r4   rW   ÚVrule.__init__  s,   ø€ Ø×9Ñ9Ó;ˆ	Ü‰Ñ˜¤B§F¡F¬B¯F©F°EÕ:rH   r?   )rO  rc  rB  r0  s   @r4   rÒ  rÒ    s   ø† Ù6÷;õ ;rH   rÒ  c                  óH   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S	rg
)Ú	_GlueSpeci  r9   r:   r®  r~   r­  r#  r¯  r?   Nr—   r?   rH   r4   rÖ  rÖ    s   ‡ ØƒLØƒNØÓØƒMØÖrH   rÖ  r¡   r  rp   r   g      ð¿)ÚfilÚfillÚfilllÚneg_filÚneg_fillÚ	neg_filllÚemptyÚssc                  óD   ^ • \ rS rSrSr  SU 4S jjrSU 4S jjrSrU =r$ )r«  i  zú
Most of the information in this object is stored in the underlying
``_GlueSpec`` class, which is shared between multiple glue objects.
(This is a memory optimization which probably doesn't matter anymore, but
it's easier to stick to what TeX does.)
c                óÆ   >• [         TU ]  5         [        U[        5      (       a  [        R
                  U   nO#[        U[        5      (       a  UnO[        S5      eX l        g )Nz.glue_type must be a glue spec name or instance)ré   rW   r‹  r•   rÖ  Ú_namedr1   r¬  )rV   Ú	glue_typer¬  rð   s      €r4   rW   ÚGlue.__init__'  sP   ø€ ô 	‰ÑÔÜ�i¤×%Ñ%Ü!×(Ñ(¨Ñ3‰IÜ˜	¤9×-Ñ-Ø!‰IäÐMÓNÐNØ"�rH   c                ó®   >• [         TU ]  5         U R                  [        :  a2  U R                  nUR                  UR                  [        -  S9U l        g g )N©r:   )ré   r#  r‘  r5  r¬  Ú_replacer:   r6  )rV   r©  rð   s     €r4   r#  ÚGlue.shrink4  sB   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø—‘ˆAØŸZ™Z¨a¯g©g¼Ñ.E˜ZÐFˆD�Nð 'rH   )r¬  )râ  z`_GlueSpec | T.Literal['fil', 'fill', 'filll', 'neg_fil', 'neg_fill', 'neg_filll', 'empty', 'ss']r,  )	rA   rB   rC   rD   rE   rW   r#  rG   r/  r0  s   @r4   r«  r«    s$   ø† ñð#ðA÷#÷Gõ GrH   r«  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )Ú	HCenteredi;  z`
A convenience class to create an `Hlist` whose contents are
centered within its enclosing box.
c                óP   >• [         TU ]  [        S5      /UQ[        S5      PSS9  g )NrÞ  F©r’  ©ré   rW   r«  rt  s     €r4   rW   ÚHCentered.__init__A  s*   ø€ Ü‰Ñœ$˜t›*Ð< xÐ<´°d³Ð<ÀeÐÒLrH   r?   ©ru  z
list[Node]rB  r0  s   @r4   ré  ré  ;  s   ø† ñ÷
Mõ MrH   ré  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )Ú	VCenterediE  z_
A convenience class to create a `Vlist` whose contents are
centered within its enclosing box.
c                óR   >• [         TU ]  [        S5      /UQ[        S5      P5        g )NrÞ  rì  rt  s     €r4   rW   ÚVCentered.__init__K  s%   ø€ Ü‰Ñœ$˜t›*Ð< xÐ<´°d³Ð<Õ=rH   r?   rî  rB  r0  s   @r4   rð  rð  E  s   ø† ñ÷
>õ >rH   rð  c                  óR   ^ • \ rS rSrSrSrSrSU 4S jjrS	S jrS
U 4S jjr	Sr
U =r$ )rž  iO  a}  
A `Kern` node has a width field to specify a (normally
negative) amount of spacing. This spacing correction appears in
horizontal lists between letters like A and V when the font
designer said that it looks better to move them closer together or
further apart. A kern node can also appear in a vertical list,
when its *width* denotes additional spacing in the vertical
direction.
r   c                ó.   >• [         TU ]  5         Xl        g rS   )ré   rW   r:   rF  s     €r4   rW   ÚKern.__init__]  s   ø€ Ü‰ÑÔØ�
rH   c                ó    • SU R                   -  $ )Nzk%.02frå  rÙ   s    r4   r  ÚKern.__repr__a  s   € Ø˜$Ÿ*™*Ñ$Ð$rH   c                ó~   >• [         TU ]  5         U R                  [        :  a  U =R                  [
        -  sl        g g rS   )ré   r#  r‘  r5  r:   r6  r7  s    €r4   r#  ÚKern.shrinkd  s,   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�JŠJœ-Ñ'ŽJð 'rH   rå  rH  r-  r,  )rA   rB   rC   rD   rE   r;   r<   rW   r  r#  rG   r/  r0  s   @r4   rž  rž  O  s(   ø† ñð €FØ€E÷ô%÷(õ (rH   rž  c                  ó8   ^ • \ rS rSrSr S SU 4S jjjrSrU =r$ )ÚAutoHeightCharij  a  
A character as close to the given height and depth as possible.

When using a font with multiple height versions of some characters (such as
the BaKoMa fonts), the correct glyph will be selected, otherwise this will
always just return a scaled version of the glyph.
c                ó|  >• UR                   R                  UR                  U5      nUR                   R                  UR                  UR                  UR
                  5      nUR                  5       nX#-   nU H;  u  pšX”l        [        X¤5      nUR                  UR                  -   USU-  -
  :¼  d  M;    O   SnUR                  S:w  d  [        U5      S:X  aN  Uc  UWR                  UR                  -   -  nU=R                  U-  sl        [        W
U5      nX;R                  -
  n[        TU ]1  W/5        XÀl        g )Nrô  r¡   rƒ  r   )rM  rÕ   r]   rÍ   r^   rª   ÚcopyrJ  r;   r<   rO  ré   rW   ro  )rV   rL  r;   r<   rO  Úfactorrá  r$  Útarget_totalrÔ   r´   r§  Úshiftrð   s                €r4   rW   ÚAutoHeightChar.__init__s  s  ø€ à—}‘}×FÑFÀuÇzÁzÐSTÓUˆà—=‘=×,Ñ,¨U¯Z©Z¸¿¹ÈÏÉÓSˆà—
‘
“ˆØ‘~ˆÛ)‰MˆHØ!ŒJÜ˜Ó#ˆDð �{‰{˜TŸZ™ZÑ'¨<¸#À¹.Ñ+HÕHÙñ *ð ˆØ�:‰:˜Ó¤ LÓ 1°QÓ 6Ø‰~Ø%¨¯©°t·z±zÑ)AÑB�Ø�NŠN˜fÑ$�NÜ˜˜UÓ#ˆDàŸZ™ZÑ'ˆEä‰Ñ˜$˜Ô Ø!ÕrH   )ro  rS   )
rL  r•   r;   r9   r<   r9   rO  rc  rþ  rÐ  rB  r0  s   @r4   rû  rû  j  s   ø† ñð )-ð"Ø%÷"ö "rH   rû  c                  ó8   ^ • \ rS rSrSr\4 SU 4S jjjrSrU =r$ )ÚAutoWidthChari�  zÿ
A character as close to the given width as possible.

When using a font with multiple width versions of some characters (such as
the BaKoMa fonts), the correct glyph will be selected, otherwise this will
always just return a scaled version of the glyph.
c                ód  >• UR                   R                  UR                  U5      nUR                  5       nU H%  u  pgXcl        U" Xs5      nUR                  U:¼  d  M%    O   UWR                  -  n	U=R
                  U	-  sl        U" WU5      n[        T
U ]  U/5        UR                  U l        g rS   )rM  rÕ   r]   rý  r:   r^   ré   rW   )rV   rL  r:   rO  Ú
char_classrá  rÔ   r´   r§  rþ  rð   s             €r4   rW   ÚAutoWidthChar.__init__™  s—   ø€ à—}‘}×FÑFÀuÇzÁzÐSTÓUˆà—
‘
“ˆÛ)‰MˆHØ!ŒJÙ˜cÓ)ˆDØ�z‰z˜UÕ"Ùñ	 *ð ˜Ÿ™Ñ#ˆØ�Š˜&Ñ �Ù˜#˜uÓ%ˆä‰Ñ˜$˜Ô Ø—Z‘Zˆ�
rH   rå  )rL  r•   r:   r9   rO  rc  r  z
type[Char])	rA   rB   rC   rD   rE   rJ  rW   rG   r/  r0  s   @r4   r  r  �  s   ø† ñð +/ð Ø'÷ ö  rH   r  c                óú   ^^^^^^	^
^^^• Uu  p#SmSmUmX0R                   -   m	[        U 5      m
/ mU4S jmSS jmSUUUUUU	U
UUU4
S jjmSUUUUUU	U
UU4	S jjm[        U [        5      (       d   eT" U 5        T
$ )	a“  
Ship out *box* at offset *xy*, converting it to an `Output`.

Since boxes can be inside of boxes inside of boxes, the main work of `ship`
is done by two mutually recursive routines, `hlist_out` and `vlist_out`,
which traverse the `Hlist` nodes and `Vlist` nodes inside of horizontal
and vertical boxes.  The global variables used in TeX to store state as it
processes have become local variables here.
r¡   c                óF   >• [        T5      (       d  U R                  " U6   g g rS   )Úanyr'  )r–  ÚargsÚphantoms     €r4   r'  Úship.<locals>.render¾  s   ø€ Ü�7�|‰|Ø�KŠK˜Òð rH   c                ó&   • U S:  a  S$ U S:”  a  S$ U $ )Ng    eÍÍÁg    eÍÍAr?   )Úvalues    r4   ÚclampÚship.<locals>.clampÂ  s   € Ø˜t“|ˆtÐH°¸³¨ÐHÀ5ÐHrH   c           	     ó²  >
• SnSnU R                   nU R                  nTnTnTR                  U R                  5        U R                   GHz  n[        U[        5      (       a"  T" UTTT-   TT-   5        TUR                  -  mM;  [        U[        5      (       a  TUR                  -  mMa  [        U[        5      (       a�  [        UR                  5      S:X  a  TUR                  -  mM   TnXWR                  -   m[        U[        5      (       a	  T" U5        O%[        U[        5      (       a	  T" U5        O S5       eX‡R                  -   mUmGM  [        U[        5      (       až  UR                  n	UR                   n
UR                  n["        R$                  " U	5      (       a  U R                  n	["        R$                  " U
5      (       a  U R                   n
U	S:”  a  US:”  a  XZ-   mT" UTTT-   TT-   X¹5        UmTU-  mGM¹  [        U[&        5      (       d  GMÑ  UR(                  nUR                  U-
  nUS:w  a  US:X  a=  UR*                  U:X  a,  X,R,                  -  n[/        T" U R0                  U-  5      5      nO<UR2                  U:X  a,  X,R4                  -  n[/        T" U R0                  U-  5      5      nX±-  nTU-  mGM}     TR7                  5         g )Nr   r¡   úunreachable coder   )rs  rr  r¼   r‘  rp  r‹  rJ  r:   rž  rm  rO  ro  rŽ  r·  rŠ   r;   r<   r[   r©  r«  r¬  r­  r®  Úroundrq  r¯  r#  Úpop)rU   Úcur_gÚcur_gluers  rr  Ú	base_lineÚ	left_edger²  ÚedgeÚrule_heightÚ
rule_depthÚ
rule_widthr¬  r  Úcur_hÚcur_vÚ	hlist_outÚoff_hÚoff_vr½   r  r'  Ú	vlist_outs                €€€€€€€€€€r4   r  Úship.<locals>.hlist_outÅ  sh  ø€ ð ˆØˆØ—^‘^ˆ
Ø—M‘Mˆ	Øˆ	Øˆ	à�‰�s—~‘~Ô&à—•ˆAÜ˜!œT×"Ñ"Ù�q˜& %¨%¡-°¸±Ô?Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$ä�q—z‘z“? aÓ'Ø˜QŸW™WÑ$’Eà �DØ%¯©Ñ6�EÜ! !¤U×+Ñ+Ù! !�Ü# A¤u×-Ñ-á! !�à8Ð&8Ó8˜uØ §7¡7™N�EØ%“EÜ˜Aœs×#Ñ#àŸh™h�ØŸW™W�
ØŸW™W�
Ü—8’8˜K×(Ñ(Ø"%§*¡*�KÜ—8’8˜J×'Ñ'Ø!$§¡�JØ “? z°A£~Ø%Ñ2�EÙ˜1˜fØ  5™=¨%°%©-Ø%ô4ð &�EØ˜Ñ#“Ü˜Aœt×$Ô$àŸK™K�	Ø&Ÿ_™_¨uÑ4�
Ø “>Ø  A“~Ø$×2Ñ2°jÓ@Ø$×(9Ñ(9Ñ9˜HÜ$)©%°·±¸xÑ0GÓ*HÓ$I˜EøØ"×/Ñ/°:Ó=Ø ×$4Ñ$4Ñ4˜Ü %¡e¨C¯L©L¸8Ñ,CÓ&DÓ E˜ØÑ#�
Ø˜Ñ#“ñg ðj 	�‰�rH   c           	     ó^  >	• SnSnU R                   nU R                  nTnTU R                  -  mTnU R                   GHl  n[	        U[
        5      (       a  TUR                  -  mM*  [	        U[        5      (       a¼  [        UR                  5      S:X  a  TUR                  UR                  -   -  mMv  TUR                  -  mXWR                  -   mTnU R                  Ul        [	        U[        5      (       a	  T" U5        O%[	        U[        5      (       a	  T" U5        O S5       eX‡R                  -   mUmMû  [	        U[        5      (       a{  UR                  n	UR                  n
UR                  n[        R                  " U5      (       a  U R                  nXš-  n	U	S:”  a#  U
S:”  a  TU	-  mT" UTTT-   TT-   X¹5        GM…  GMˆ  GM‹  [	        U[         5      (       a¬  UR"                  nUR                  U-
  n	US:w  a  US:X  a=  UR$                  U:X  a,  X,R&                  -  n[)        T" U R*                  U-  5      5      nO<UR,                  U:X  a,  X,R.                  -  n[)        T" U R*                  U-  5      5      nX‘-  n	TU	-  mGML  [	        U[0        5      (       d  GMd  [3        S5      e   g )Nr   r¡   r  r   z1Internal mathtext error: Char node found in vlist)rs  rr  r;   rp  r‹  rž  r:   rm  rO  r<   ro  rŽ  r·  rŠ   r[   r©  r«  r¬  r­  r®  r  rq  r¯  r#  rJ  r¿  )rU   r  r  rs  rr  r  Útop_edger²  Úsave_vr  r  r  r¬  r  r  r  r  r   r!  r½   r'  r"  s                €€€€€€€€€r4   r"  Úship.<locals>.vlist_out  sU  ø€ ð ˆØˆØ—^‘^ˆ
Ø—M‘Mˆ	Øˆ	Ø�—‘ÑˆØˆà—•ˆAÜ˜!œT×"Ñ"Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$Ü�q—z‘z“? aÓ'Ø˜QŸX™X¨¯©Ñ/Ñ/’Eà˜QŸX™XÑ%�EØ%¯©Ñ6�EØ"�FØ!Ÿi™i�A”GÜ! !¤U×+Ñ+Ù! !�Ü# A¤u×-Ñ-Ù! !�à8Ð&8Ó8˜uØ"§W¡WÑ,�EØ%’EÜ˜Aœs×#Ñ#ØŸh™h�ØŸW™W�
ØŸW™W�
Ü—8’8˜J×'Ñ'Ø!$§¡�JØÑ)�Ø “? z°A£~Ø˜[Ñ(�EÙ˜1˜fØ  5™=¨%°%©-Ø%÷4ò (6’?ô
 ˜Aœt×$Ñ$ØŸK™K�	Ø'Ÿo™o°Ñ5�Ø “>Ø  A“~Ø$×2Ñ2°jÓ@Ø$×(9Ñ(9Ñ9˜HÜ$)©%°·±¸xÑ0GÓ*HÓ$I˜EøØ"×/Ñ/°:Ó=Ø ×$4Ñ$4Ñ4˜Ü %¡e¨C¯L©L¸8Ñ,CÓ&DÓ E˜ØÑ$�Ø˜Ñ$“Ü˜Aœt×$Ô$Ü"ØGóIð Iò[ rH   )r  r9   r‹   r9   )rU   rŽ  r‹   rß   )rU   r·  r‹   rß   )r;   rP   r‹  rŽ  )rU   ÚxyrL   rM   r  r  r  r  r   r!  r½   r  r'  r"  s       @@@@@@@@@@r4   r|   r|   ¬  s�   ÿù€ ð �F€BØ€EØ€EØ€EØ—‘‰O€EÜ�C‹[€FØ€GõôI÷A÷ Að A÷F9I÷ 9Iôv �cœ5×!Ñ!Ð!Ð!Ùˆc„NØ€MrH   c                óF   ^ • SU 4S jjn[        5       R                  U5      $ )z$Helper class to raise parser errors.c                ó   >• [        XT5      erS   ©r   )rr  ÚlocÚtoksÚmsgs      €r4   Úraise_errorÚError.<locals>.raise_errorN  s   ø€ Ü! !¨#Ó.Ð.rH   ©rr  r•   r,  r~   r-  r   r‹   úT.Any)r   Úset_parse_action)r.  r/  s   ` r4   ÚErrorr4  L  s   ø€ ÷/ô ‹7×#Ñ# KÓ0Ð0rH   c                  óT   ^ • \ rS rSrSrSSSSS.rSU 4S jjr S   SS	 jjrS
rU =r	$ )Ú_BracedTextiT  a©  
Match a brace-delimited literal string, allowing nested braces.

This is similar to ``QuotedString("{", "\\", end_quote_char="}")``, except
that brace depth is tracked, so that the string does not end at the first
``}``.  As in TeX, nested unescaped braces only group, and are not
rendered; a literal brace is written as ``\{`` or ``\}``.  A backslash
escapes the following character, which therefore does not affect depth.
Ú	rx  ÚÚ)ÚtÚnÚfÚrc                ó>   >• [         TU ]  5         SU l        SU l        g )NTF)ré   rW   ÚmayReturnEmptyÚmayIndexErrorr7  s    €r4   rW   Ú_BracedText.__init__a  s   ø€ Ü‰ÑÔØ"ˆÔØ"ˆÕrH   c                óæ  • U[        U5      :¼  d  X   S:w  a  [        XSU 5      e/ nSnU[        U5      :  a®  X   nUS:X  aJ  US-   [        U5      :  a8  XS-      nUR                  U R                  R	                  Xw5      5        US-  nMc  US-  nUS:X  a  US-  nMu  US:X  a   US-  nUS:X  a  USR                  U5      4$ M›  UR                  U5        U[        U5      :  a  M®  [        XS	U 5      e)
NrY  zExpected '{'r   r,   r   rp   rZ  ry  úExpected '}')rO  r   r¼   Ú_escapesró   r}  )rV   Úinstringr,  Ú
do_actionsÚcharsr<   r§  Úescapeds           r4   Ú	parseImplÚ_BracedText.parseImplf  s   € à”#�h“-Ó 8¡=°CÓ#7Ü  °ÀÓEÐEØˆØˆØ”C˜“MÓ!Ø‘=ˆDØ�t‹|  a¡¬#¨h«-Ó 7Ø"¨¡7Ñ+�Ø—‘˜TŸ]™]×.Ñ.¨wÓ@ÔAØ�q‘�ÙØ�1‰HˆCØ�s‹{Ø˜‘
�ÙØ˜“Ø˜‘
�Ø˜A“:Ø §¡¨£Ð.Ð.ÙØ�L‰L˜Ôð! ”C˜“MÕ!ô" ˜X¨N¸DÓAÐArH   )r@  r?  r,  )T)rE  r•   r,  r~   rF  rŒ   r‹   ztuple[int, str])
rA   rB   rC   rD   rE   rD  rW   rI  rG   r/  r0  s   @r4   r6  r6  T  s@   ø† ñð  ¨4°dÑ;€H÷#ð &*ðBØ"ðBØ.=÷Bó BrH   r6  c                  óv   • \ rS rSrSr  S
S jrSS jr\SS j5       r\R                  SS j5       rSS jr
Srg	)rc  i€  zè
Parser state.

States are pushed and popped from a stack as necessary, and the "current"
state is always at the top of the stack.

Upon entering and leaving a group { } or math/non-math, the stack is pushed
and popped accordingly.
c                ó@   • Xl         X l        X0l        X@l        XPl        g rS   )rM  Ú_fontr³   r^   rª   )rV   rM  r]   r³   r^   rª   s         r4   rW   ÚParserState.__init__‹  s   € àŒØŒ
Ø$ŒØ ŒØ�rH   c                ó.   • [         R                   " U 5      $ rS   )rý  rÙ   s    r4   rý  ÚParserState.copy“  s   € Ü�yŠy˜‹ÐrH   c                ó   • U R                   $ rS   )rM  rÙ   s    r4   r]   ÚParserState.font–  s   € à�z‰zÐrH   c                ó(   • US;   a  Xl         Xl        g )N)r<  r>  r@  rA  r¾  )r³   rM  )rV   r’  s     r4   r]   rR  š  s   € àÐ7Ó7Ø"ŒOØ�
rH   c                óx   • U R                   R                  U R                  U R                  U R                  5      $ )z.Return the underline thickness for this state.)rM  rÐ   r]   r^   rª   rÙ   s    r4   rÍ  Ú+ParserState.get_current_underline_thickness   s,   € à�|‰|×3Ñ3Ø�I‰I�t—}‘} d§h¡hó0ð 	0rH   )rM  rª   r³   rM  r^   N)
rM  r™   r]   r•   r³   r•   r^   r9   rª   r9   ©r‹   rc  r-  )r’  r•   r‹   rß   )r‹   r9   )rA   rB   rC   rD   rE   rW   rý  Úpropertyr]   ÚsetterrÍ  rG   r?   rH   r4   rc  rc  €  sJ   † ñðØôôð óó ðð 
‡[�[óó ð÷
0rH   rc  c                ó´   ^• SU4S jjmU R                  SS5      S   nX:X  a!  USR                  S T" U5       5       5      -   OU nX![        SU 35      -  -
  $ )	a�  
Helper to define TeX commands.

``cmd("\cmd", args)`` is equivalent to
``"\cmd" - (args | Error("Expected \cmd{arg}{...}"))`` where the names in
the error message are taken from element names in *args*.  If *expr*
already includes arguments (e.g. "\cmd{arg}{...}"), then they are stripped
when constructing the parse element, but kept (and *expr* is used as is) in
the error message.
c              3  óÄ   >#   • [        U [        5      (       a$  U R                   H  nT" U5       S h  v•N   M     g U R                  (       a  U R                  v •  g g  N*7frS   )r‹  r   ÚexprsÚresultsName)ÚeltÚexprÚnamess     €r4   r_  Úcmd.<locals>.names²  sI   øé € Ü�cœ?×+Ñ+ØŸ	œ	�Ù  ›;×&Ò&ò "à�_�_Ø—/‘/Ó!ð ñ 'ùs   ƒ0A ³A´+A rY  r   r   ry  c              3  ó,   #   • U  H
  nS U-  v •  M     g7f)z{%s}Nr?   )r
  r’  s     r4   r  Úcmd.<locals>.<genexpr>º  s   é € ÐB²k¨d˜F TžM²kùs   ‚z	Expected )r]  r   r‹   zT.Generator[str, None, None])rn  r}  r4  )r^  r
  Úcsnamer3   r_  s       @r4   Úcmdrd  ¦  sc   ø€ ÷"ð �Z‰Z˜˜QÓ Ñ"€Fà‹nð �B—G‘GÑB±e¸D´kÓBÓBÒBØ"&ð àœE I¨c¨UÐ"3Ó4Ñ4Ñ5Ð5rH   c                  óh  ^• \ rS rSrSr " S S\R                  5      r\" SR                  5       5      r
\" SR                  5       5      r\" SR                  5       5      r\
\-  \-  r\" SR                  5       5      r\" S	R                  5       5      r\" S
R                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\\-  \-  r\" \" \" S5      \" S5      S-   5       V VVVs/ s HA  n[4        R6                  " [9        U5      5      R                  5       S   R;                  5       PMC     snnnn 5      r\" \R@                  5      r!SlS jr"SmS jr#SnS jr$SlS jr%SlS jr&SoS jr'SpS jr(SqS jr)SqS jr*\+" \,RZ                  5      r.SqS jr/SrS jr0S S S S!S!S"S#S#S$SS%S&S'.r1SqS( jr2SqS) jr3    SsS* jr4StS+ jr5SqS, jr6SqS- jr7SqS. jr80 S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_S;S<_S=S>_S?S@_SASB_SCSD_SES>_SFS6_SGS8_SHS:_SIS<_SJS0_SKSLSMSN.Er9\" SOR                  5       5      r:SqSP jr;StSQ jr<StSR jr=SqSS jr>SqST jr?SqSU jr@\@rASuSV jrBStSW jrCSqSX jrDSvSY jrESvSZ jrFSvS[ jrGStU4S\ jjrH      SwS] jrISqS^ jrJSqS_ jrKSqS` jrLSqSa jrMSqSb jrNStSc jrO\O=rPrQSqSd jrRSqSe jrSSqSf jrT      SxSg jrUSqSh jrVSqSi jrWSqSj jrXSkrYU=rZ$ s  snnnn f )yÚParseri¿  zÅ
A pyparsing-based parser for strings containing math expressions.

Raw text may also appear outside of pairs of ``$``.

The grammar is based directly on that in TeX, though it cuts a few corners.
c                  ó$   • \ rS rSrSrSrSrSrSrg)ÚParser._MathStyleiÈ  r   r   rp   r   r?   N)	rA   rB   rC   rD   ÚDISPLAYSTYLEÚ	TEXTSTYLEÚSCRIPTSTYLEÚSCRIPTSCRIPTSTYLErG   r?   rH   r4   Ú
_MathStylerh  È  s   † ØˆØˆ	ØˆØÓrH   rm  uÂ  + * - âˆ’
      \pm             \sqcap                   \rhd
      \mp             \sqcup                   \unlhd
      \times          \vee                     \unrhd
      \div            \wedge                   \oplus
      \ast            \setminus                \ominus
      \star           \wr                      \otimes
      \circ           \diamond                 \oslash
      \bullet         \bigtriangleup           \odot
      \cdot           \bigtriangledown         \bigcirc
      \cap            \triangleleft            \dagger
      \cup            \triangleright           \ddagger
      \uplus          \lhd                     \amalg
      \dotplus        \dotminus                \Cap
      \Cup            \barwedge                \boxdot
      \boxminus       \boxplus                 \boxtimes
      \curlyvee       \curlywedge              \divideontimes
      \doublebarwedge \leftthreetimes          \rightthreetimes
      \slash          \veebar                  \barvee
      \cupdot         \intercal                \amalg
      \circledcirc    \circleddash             \circledast
      \boxbar         \obar                    \merge
      \minuscolon     \dotsminusdots
      aF  
      = < > :
      \leq          \geq          \equiv       \models
      \prec         \succ         \sim         \perp
      \preceq       \succeq       \simeq       \mid
      \ll           \gg           \asymp       \parallel
      \subset       \supset       \approx      \bowtie
      \subseteq     \supseteq     \cong        \Join
      \sqsubset     \sqsupset     \neq         \smile
      \sqsubseteq   \sqsupseteq   \doteq       \frown
      \in           \ni           \propto      \vdash
      \dashv        \dots         \doteqdot    \leqq
      \geqq         \lneqq        \gneqq       \lessgtr
      \leqslant     \geqslant     \eqgtr       \eqless
      \eqslantless  \eqslantgtr   \lesseqgtr   \backsim
      \backsimeq    \lesssim      \gtrsim      \precsim
      \precnsim     \gnsim        \lnsim       \succsim
      \succnsim     \nsim         \lesseqqgtr  \gtreqqless
      \gtreqless    \subseteqq    \supseteqq   \subsetneqq
      \supsetneqq   \lessapprox   \approxeq    \gtrapprox
      \precapprox   \succapprox   \precnapprox \succnapprox
      \npreccurlyeq \nsucccurlyeq \nsqsubseteq \nsqsupseteq
      \sqsubsetneq  \sqsupsetneq  \nlesssim    \ngtrsim
      \nlessgtr     \ngtrless     \lnapprox    \gnapprox
      \napprox      \approxeq     \approxident \lll
      \ggg          \nparallel    \Vdash       \Vvdash
      \nVdash       \nvdash       \vDash       \nvDash
      \nVDash       \oequal       \simneqq     \triangle
      \triangleq         \triangleeq         \triangleleft
      \triangleright     \ntriangleleft      \ntriangleright
      \trianglelefteq    \ntrianglelefteq    \trianglerighteq
      \ntrianglerighteq  \blacktriangleleft  \blacktriangleright
      \equalparallel     \measuredrightangle \varlrtriangle
      \Doteq        \Bumpeq       \Subset      \Supset
      \backepsilon  \because      \therefore   \bot
      \top          \bumpeq       \circeq      \coloneq
      \curlyeqprec  \curlyeqsucc  \eqcirc      \eqcolon
      \eqsim        \fallingdotseq \gtrdot     \gtrless
      \ltimes       \rtimes       \lessdot     \ne
      \ncong        \nequiv       \ngeq        \ngtr
      \nleq         \nless        \nmid        \notin
      \nprec        \nsubset      \nsubseteq   \nsucc
      \nsupset      \nsupseteq    \pitchfork   \preccurlyeq
      \risingdotseq \subsetneq    \succcurlyeq \supsetneq
      \varpropto    \vartriangleleft \scurel
      \vartriangleright \rightangle \equal     \backcong
      \eqdef        \wedgeq       \questeq     \between
      \veeeq        \disin        \varisins    \isins
      \isindot      \varisinobar  \isinobar    \isinvb
      \isinE        \nisd         \varnis      \nis
      \varniobar    \niobar       \bagmember   \ratio
      \Equiv        \stareq       \measeq      \arceq
      \rightassert  \rightModels  \smallin     \smallowns
      \notsmallowns \nsimeqa­  
     \leftarrow \longleftarrow \uparrow \Leftarrow \Longleftarrow
     \Uparrow \rightarrow \longrightarrow \downarrow \Rightarrow
     \Longrightarrow \Downarrow \leftrightarrow \updownarrow
     \longleftrightarrow \updownarrow \Leftrightarrow
     \Longleftrightarrow \Updownarrow \mapsto \longmapsto \nearrow
     \hookleftarrow \hookrightarrow \searrow \leftharpoonup
     \rightharpoonup \swarrow \leftharpoondown \rightharpoondown
     \nwarrow \rightleftharpoons \leadsto \dashrightarrow
     \dashleftarrow \leftleftarrows \leftrightarrows \Lleftarrow
     \Rrightarrow \twoheadleftarrow \leftarrowtail \looparrowleft
     \leftrightharpoons \curvearrowleft \circlearrowleft \Lsh
     \upuparrows \upharpoonleft \downharpoonleft \multimap
     \leftrightsquigarrow \rightrightarrows \rightleftarrows
     \rightrightarrows \rightleftarrows \twoheadrightarrow
     \rightarrowtail \looparrowright \rightleftharpoons
     \curvearrowright \circlearrowright \Rsh \downdownarrows
     \upharpoonright \downharpoonright \rightsquigarrow \nleftarrow
     \nrightarrow \nLeftarrow \nRightarrow \nleftrightarrow
     \nLeftrightarrow \to \Swarrow \Searrow \Nwarrow \Nearrow
     \leftsquigarrow \overleftarrow \overleftrightarrow \cwopencirclearrow
     \downzigzagarrow \cupleftarrow \rightzigzagarrow \twoheaddownarrow
     \updownarrowbar \twoheaduparrow \rightarrowbar \updownarrows
     \barleftarrow \mapsfrom \mapsdown \mapsup \Ldsh \Rdsh
     z, ; . ! \ldotp \cdotpz}
       \sum \prod \coprod \bigcap \bigcup \bigsqcup \bigvee
       \bigwedge \bigodot \bigotimes \bigoplus \biguplus
       zlim liminf limsup sup max minz.\int \oint \iint \oiint \iiint \oiiint \iiiintz:rm cal it tt sf bf bfit default bb frak scr regular normalz¢
      arccos csc ker min arcsin deg lg Pr arctan det lim sec arg dim
      liminf sin cos exp limsup sinh cosh gcd ln sup cot hom log tan
      coth inf max tanhzn
      | \| / \backslash \uparrow \downarrow \updownarrow \Uparrow
      \Downarrow \Updownarrow . \vert \Vertz[
      ( [ \{ < \lfloor \langle \lceil \lbrace \leftbrace \lbrack \leftparen \lgroup
      z]
      ) ] \} > \rfloor \rangle \rceil \rbrace \rightbrace \rbrack \rightparen \rgroup
      u   Î±u   Ï‰r   rÞ  c                ó¶  ^ ^• [         R                  " 5       mSFUU 4S jjnSGS jn[        S5      Tl        [	        T R
                  5      " S5      Tl        [	        T R                   Vs/ s H  n[        UR                  5      PM     sn5      " S5      Tl
        [        SSR                  S	R                  [        [        R                  [         5      5      5      -   5      " S
5      R#                  5       Tl        [        S5      " S5      Tl        U" ST R(                  5      Tl        [-        S[	        T R(                  5      " S5      -   5      S-   Tl        [1        S5      Tl        [	        T R4                  5      Tl        [9        5       Tl        [9        5       Tl        [9        5       Tl        [9        5       Tl         [9        5       Tl!        [9        5       Tl"        T=R>                  TR<                  -  sl        U" 5         T=RB                  S[G        TRD                  5      " S5      -   S-   -  sl!        T=R@                  S[I        TRD                  5      " S5      -   S-   -  sl         [K        SSTR                  S5      -   S-   5      Tl&        [K        STRC                  S5      5      Tl'        [K        STRC                  S5      5      Tl(        [K        STRC                  S5      5      Tl)        U" S/ T RT                  QT RV                  Q5      TR?                  S
5      -
  Tl,        U" ST RZ                  5      Tl.        TR.                  [G        TRD                  5      " S5      -   TR2                  -   Tl/        TR.                  [G        TRD                  5      " S5      -   [a        5       -   Tl1        [K        STRA                  S5      TRA                  S5      -   5      Tl2        [K        STRA                  S5      TRA                  S5      -   5      Tl3        [K        STRA                  S5      TRA                  S5      -   5      Tl4        [K        SS[-        TR6                  5      " S5      -   S-   S-   [-        TR6                  5      " S5      -   S-   S-   TR                  S5      -   S-   S-   [-        TR                  5      " S 5      -   S-   TRA                  S5      -   TRA                  S5      -   5      Tl5        [K        S![-        S"[I        [m        S#5      TRD                  -   5      " S$5      -   S#-   5      TRA                  S5      -   5      Tl7        [K        S%TRA                  S&5      5      Tl8        [K        S'TRA                  S&5      5      Tl9        [K        S(TRC                  S)5      TRC                  S&5      -   5      Tl:        [K        S*TRC                  S)5      TRC                  S&5      -   5      Tl;        [K        S+[y        5       5      Tl=        [K        S,[}        SS[        [I        TRD                  5      5      [G        [1        S-5      R�                  5       5      -   S.9" S/5      5      TlA        [-        TR<                  5      " S05      [I        [	        S1S2/5      TR<                  -
  5      " S35      -   [        S45      " S55      -   [        S65      " S55      -  TR?                  S05      [        S45      " S55      -   -  TlB        TR                  TRL                  -  TR*                  -  TR„                  -  TlC        T=RD                  TR†                  TR:                  -  TRb                  -  TR&                  -  -  sl"        [K        S7S[G        TR†                  5      " S5      -   S-   5      TlD        [K        S8S[G        TR†                  5      " S5      -   S-   5      TlE        T=R<                  TRN                  TRP                  -  TRR                  -  TRX                  -  TR$                  -  TR\                  -  TRˆ                  -  TR^                  -  TRd                  -  TRf                  -  TRh                  -  TRj                  -  TRt                  -  TRv                  -  TRn                  -  TRp                  -  TRr                  -  TRz                  -  TRŠ                  -  TR‚                  -  TR:                  -  -  sl        S9TR7                  S:5      [�        S;5      -  -
  nT=R:                  S<TR7                  S=5      [�        S;5      -  -
  [G        TR†                  TR:                  -  U-  5      " S>5      -   S?-   TR7                  S@5      [�        S;5      -  -
  -  sl        [I        TRD                  5      TlG        [‘        SASBSCSD9TlI        [        SE5      R#                  5       TlJ        TR”                  [G        TR’                  TR”                  -   5      -   [a        5       -   TlK        U" 5         TR–                  T lL        TRŽ                  T lM        SCT lN        g s  snf )HNc                 ó  >• [        T5      R                  5        Hb  u  pU R                  S5      (       a  M  U S;  a  UR                  U 5        [	        TU 5      (       d  MG  UR                  [        TU 5      5        Md     g )NÚ_)ÚtokenÚ	placeableÚ
auto_delim)ÚvarsrH  r¡  Úset_nameÚhasattrr3  rª  )rI  r  r²  rV   s     €€r4   Úset_names_and_parse_actionsÚ4Parser.__init__.<locals>.set_names_and_parse_actionsb  sa   ø€ Ü  ›GŸM™MžO‘�Ø—~‘~ c×*Ó*ð Ð"FÓFØŸ™ SÔ)ä˜t S×)Ó)Ø×,Ñ,¬W°T¸3Ó-?Ö@ò ,rH   Úgroupc                óx  • / n/ nU H?  nUS   R                  5       (       a  UR                  U5        M.  UR                  U5        MA     [        SR                  U SR	                  [        [        R                  U5      5      U(       a  SOSSR	                  [        [        R                  U5      5      S95      $ )NrÞ  z<\\(?P<{group}>(?:{alpha})(?![A-Za-z]){additional}{nonalpha})Ú|ry  )ry  Úalphar¦  Únonalpha)Úisalphar¼   r   rz  r}  rZ   ÚreÚescape)ry  r_  Úends_with_alphaÚends_with_nonalphar’  s        r4   ÚcsnamesÚ Parser.__init__.<locals>.csnamesq  s¢   € Ø ˆOØ!#ÐÛ�Ø˜‘8×#Ñ#×%Ñ%Ø#×*Ñ*¨4Ö0à&×-Ñ-¨dÖ3ñ	 ô
 ØO×VÑVØØŸ(™(¤3¤r§y¡y°/Ó#BÓCÞ&8™s¸bØ ŸX™X¤c¬"¯)©)Ð5GÓ&HÓIð	 Wð óð rH   z[-+]?([0-9]+\.?[0-9]*|\.[0-9]+)ÚspaceÚstyle_literalzI[a-zA-Z0-9 +\-*/<>=:,.;!\?&'@()\[\]|\U00000080-\U0001ffff]|\\[%${}\[\]_|]z|\\(?:{})(?![A-Za-z])r{  r´   z\\[A-Za-z]+r’  r]   z\mathrY  rZ  z\hspacez\phantomr  z\llapz\rlapÚaccentz\fracr_   Údenz\dfracz\binomz\genfracÚldelimÚrdelimÚrulesizeÚstylez\sqrt{value}r[  r\  Úrootz	\overlineÚbodyz
\underlinez\oversetÚ
annotationz	\undersetz\textz	\substackz\\)ÚopenerÚcloserÚcontentÚpartsÚnucleusrp  ra  Úsubsuperz'*Úapostrophesz'+z\operatornamez\boldsymbolú\middleÚmdelimzExpected a delimiterz\leftÚleftrÙ  z\rightÚrightÚ$r,   F)Úunquote_resultsz(?:(?:\\[$])|[^$])*r,  )ry  r•   r_  zIterable[str]r‹   r   )OÚtypesÚSimpleNamespacer   Úfloat_literalr   Ú_space_widthsr…  rm  r•   r  r†  rz  r}  rZ   r  r€  r    Úleave_whitespacer2   Úunknown_symbolÚ
_fontnamesr]   r   Ústart_groupr   Ú	end_groupÚ_delimsÚdelimr   rs  rr  Únamed_placeableÚrequired_groupÚoptional_grouprq  r   r   rd  Úcustomspacer  ÚllapÚrlapÚ_accent_mapÚ_wide_accentsr‡  Ú_function_namesÚfunctionry  r   Úunclosed_groupÚfracÚdfracÚbinomÚgenfracr
   ÚsqrtÚoverlineÚ	underlineÚoversetÚundersetr6  Útextr   r	   ÚsuppressÚsubstackr•  ÚsimpleÚoperatornameÚ
boldsymbolr4  rz   r   Úmath_stringÚnon_mathÚmainÚ_expressionÚ_math_expressionÚ_needs_space_after_subsuper)rV   rw  rƒ  Úer˜  r²  s   `    @r4   rW   ÚParser.__init___  sú  ù€ Ü×!Ò!Ó#ˆ÷
	Að 
	Aô	ô" !Ð!CÓDˆŒÜ! $×"4Ñ"4Ô5°gÓ>ˆŒä!Ø#'§?¢?Ó3¢?˜aŒS�—‘Ž\¡?Ñ3ô5Ø5DóFˆŒô !ðà&×-Ñ-Ø—‘œœRŸY™Y¬Ó0Ó1ó3ñ3ô
ð
 ó÷
 "Ñ!Ó#ð 	
Œô ! Ô0°Ó8ˆÔá" 6¨4¯?©?Ó;ˆŒÜ# H¬v°d·o±oÔ/FÀvÓ/NÑ$NÓOÐRUÑUˆŒÜ" 3›<ˆŒä! $§,¡,Ó/ˆŒô %›YˆŒÜ$›YˆŒÜ$›YˆÔÜ$›YˆÔÜ$›YˆÔÜ$›YˆŒð 	
×Ò˜aŸk™kÑ)Õá#Ô%à	×Ò˜S¤:¨a¯g©gÔ#6°wÓ#?Ñ?À#ÑEÑEÕØ	×Ò˜S¤9¨Q¯W©WÔ#5°gÓ#>Ñ>ÀÑDÑDÕä˜J¨¨a¯o©o¸gÓ.FÑ(FÈÑ(LÓMˆŒä˜ Q×%5Ñ%5°gÓ%>Ó?ˆŒ	Ü�X˜q×/Ñ/°Ó8Ó9ˆŒÜ�X˜q×/Ñ/°Ó8Ó9ˆŒñ �HÐF × 0Ñ 0ÐF°4×3EÑ3EÐFÓGØ×Ñ Ó&ñ'ð 	
Œñ ˜V T×%9Ñ%9Ó:ˆŒ
à—-‘-¤*¨Q¯W©WÔ"5°gÓ">Ñ>ÀÇÁÑLˆŒØŸM™M¬J°q·w±wÔ,?ÀÓ,HÑHÌ9Ë;ÑVˆÔä�h × 0Ñ 0°Ó 7¸!×:JÑ:JÈ5Ó:QÑ QÓRˆŒÜ�i ×!1Ñ!1°%Ó!8¸1×;KÑ;KÈEÓ;RÑ!RÓSˆŒÜ�i ×!1Ñ!1°%Ó!8¸1×;KÑ;KÈEÓ;RÑ!RÓSˆŒäØØ”(˜1Ÿ7™7Ô# HÓ-Ñ-°Ñ3ØñÜ˜QŸW™WÔ% hÓ/ñ0Ø25ñ6àñà—O‘O JÓ/ñ0à25ñ6ð ñô ˜QŸ_™_Ô-¨gÓ6ñ7ð :=ñ=ð ×Ñ˜uÓ%ñ	&ð
 ×Ñ˜uÓ%ñ&ó'ˆŒ	ô ØÜ�Sœ9¤V¨C£[°1·7±7Ñ%:Ô;¸FÓCÑCÀcÑIÓJØ×Ñ˜wÓ'ñ(ó)ˆŒô
 ˜ q×'7Ñ'7¸Ó'?Ó@ˆŒ
ä˜-¨×)9Ñ)9¸&Ó)AÓBˆŒäØØ×Ñ˜\Ó*¨Q×-=Ñ-=¸fÓ-EÑEóGˆŒ	ô ØØ×Ñ˜\Ó*¨Q×-=Ñ-=¸fÓ-EÑEóGˆŒ
ô �Xœ{›}Ó-ˆŒä˜Ü&¨c¸#Ü/4´Y¸q¿w¹wÓ5GÓ/HÜ'1´'¸&³/×2JÑ2JÓ2LÓ'Mñ0NòOàOVóXóYˆŒ
ô �a—k‘kÔ" 9Ó-Üœ  c 
Ó+¨a¯k©kÑ9Ô:¸:ÓFñGä�TŒ{˜=Ó)ñ*ô �DŒk˜-Ó(ñ)ð × Ñ  Ó+¬e°D¬k¸-Ó.HÑHñ	Jð 	
Œ
ð —7‘7˜QŸ]™]Ñ*¨Q¯V©VÑ3°a·j±jÑ@ˆŒà	�ŠØ�H‰HØ�l‰lñà×Ññð ×Ñññ	
�ô Ð-¨s´ZÀÇÁÔ5IÈ&Ó5QÑ/QÐTWÑ/WÓXˆŒäØ˜C¤*¨Q¯X©XÔ"6°wÓ"?Ñ?À#ÑEóGˆŒð 	
�ŠØ�I‰I˜Ÿ™Ñ §¡Ñ'Ø�h‰hñà�h‰hñð �j‰jñ	ð
 �n‰nñð �g‰gñð �f‰fñð �g‰gñð �g‰gñ	ð �i‰iñ
ð �i‰iñð �j‰jñð �f‰fñð �j‰jñð �k‰kñð  �f‰fñ!ð" �l‰lñ#ð$ �j‰jñ%ð& �l‰lñ'ñ	
�ð. ˜qŸw™w xÓ0´5Ð9OÓ3PÑPÑQˆØ	�ŠØ˜Ÿ™ ›¬%Ð0FÓ*GÑGÑHÜ˜Ÿ™ A§L¡LÑ0°6Ñ9Ô:¸5ÓAñBàñàŸ7™7 7Ó+¬eÐ4JÓ.KÑKñMñ	
�ô $ A§G¡GÓ,ˆŒÜ& s¨DÀ%ÑHˆŒÜÐ 6Ó7×HÑHÓJˆŒ
à�J‰Jœ A§M¡M°A·J±JÑ$>Ó?Ñ?Ä)Ã+ÑMð 	
Œñ 	$Ô%àŸ6™6ˆÔØ !§¡ˆÔð ,1ˆÕ(ùòs 4s   Á)ic                ó`  • [        USSX45      /U l        0 U l         U R                  R	                  U5      n/ U l        SU l        0 U l        [        R                  " 5         [        R                  " [        US   5      $ ! [
         a#  n[        SUR                  S5      -   5      SeSnAff = f)z‘
Parse expression *s* using the given *fonts_object* for
output, at the given *fontsize* and *dpi*.

Returns the parse tree of `Node` instances.
rç   r>  rx  r   NF)rc  Ú_state_stackÚ_em_width_cacherÅ  Úparse_stringr   r1   ÚexplainrÇ  r   Úreset_cacherø   rù   rŽ  )rV   rr  Úfonts_objectr^   rª   Úresultr3   s          r4   ÚparseÚParser.parse!	  s§   € ô ˜ i°°xÓEðGˆÔàFHˆÔð	>Ø×%Ñ%×2Ñ2°1Ó5ˆFð ˆÔØ+0ˆÔ(à!ˆÔÜ×!Ò!Ô#Ü�vŠv”e˜V A™YÓ'Ð'øô "ó 	>Ü˜T C§K¡K°£NÑ2Ó3¸Ð=ûð	>ús   �B  Â 
B-Â
B(Â(B-c                ó    • U R                   S   $ )z&Get the current `State` of the parser.rÞ  )rË  rÙ   s    r4   Ú	get_stateÚParser.get_state6	  s   € à× Ñ  Ñ$Ð$rH   c                ó8   • U R                   R                  5         g)zPop a `State` off of the stack.N)rË  r  rÙ   s    r4   Ú	pop_stateÚParser.pop_state:	  s   € à×Ñ×ÑÕrH   c                ór   • U R                   R                  U R                  5       R                  5       5        g)z=Push a new `State` onto the stack, copying the current state.N)rË  r¼   rÕ  rý  rÙ   s    r4   Ú
push_stateÚParser.push_state>	  s&   € à×Ñ× Ñ  §¡Ó!1×!6Ñ!6Ó!8Õ9rH   c                ó6   • [        UR                  5       5      /$ rS   )rŽ  Úas_list©rV   r-  s     r4   rÄ  ÚParser.mainB	  s   € Ü�d—l‘l“nÓ%Ð&Ð&rH   c                óB   • U R                   R                  US   SS SS9$ )Nr   r   rÞ  T)Ú	parse_all)rÆ  rÍ  rß  s     r4   rÂ  ÚParser.math_stringE	  s(   € Ø×$Ñ$×1Ñ1°$°q±'¸!¸B°-È4Ð1ÐPÐPrH   c                óZ   • [        UR                  5       5      nU R                  5         U/$ rS   )rŽ  rÞ  rØ  )rV   r-  Úhlists      r4   rz   ÚParser.mathH	  s#   € Ü�d—l‘l“nÓ%ˆØ�‰ÔØˆwˆrH   c                ó  • US   R                  SS5      nU Vs/ s H  n[        X0R                  5       5      PM     nn[        U5      nU R	                  5         [
        R                  S   U R                  5       l        U/$ s  snf )Nr   z\$r›  r  )ÚreplacerJ  rÕ  rŽ  rÛ  r  r  r]   )rV   r-  rr  rL  Úsymbolsrå  s         r4   rÃ  ÚParser.non_mathM	  sn   € Ø�‰G�O‰O˜E 3Ó'ˆÙ67Ó8²a°”4˜Ÿ>™>Ó+Ö,±aˆÐ8Ü�g“ˆà�‰ÔÜ #§¡Ð-?Ñ @ˆ�‰ÓÔØˆwˆùò 9s   š#Bc           	     óÐ   • U R                  5         U R                  5       nSUl        [        US    Vs/ s H  n[	        X25      PM     sn5      nU R                  5         U/$ s  snf )Nr>  r   )rÛ  rÕ  r]   rŽ  rJ  rØ  )rV   r-  rO  rL  rå  s        r4   r¼  ÚParser.textX	  sV   € Ø�‰ÔØ—‘Ó ˆØˆŒ
Ü¨t°AªwÓ7ªw¨!”t˜A–~©wÑ7Ó8ˆØ�‰ÔØˆwˆùò 8s   ´A#c                ó<  • U R                  5       nUR                  UR                  UR                  4nU R                  R                  U5      nUc?  UR                  R                  SUR                  UR                  5      nX@R                  U'   [        XA-  5      $ )Nr<  )	rÕ  r]   r^   rª   rÌ  ró   rM  rÊ   rž  )rV   Ú
percentagerO  rI  r:   s        r4   Ú_make_spaceÚParser._make_space`	  s   € ð —‘Ó ˆØ�z‰z˜5Ÿ>™>¨5¯9©9Ð5ˆØ×$Ñ$×(Ñ(¨Ó-ˆØ‰=Ø—M‘M×*Ñ*¨8°U·^±^ÀUÇYÁYÓOˆEØ(-× Ñ  Ñ%Ü�EÑ&Ó'Ð'rH   g…¶œKqUÅ?gý0Bx´qÌ?g‚çÞÃ%ÇÑ?g¾¤1ZGUÕ?rñ  rp   g…¶œKqUÅ¿)ú\,z
\thinspacez\/z\>z\:z\;z\ rb  z\enspacez\quadz\qquadz\!c                óN   • U R                   US      nU R                  U5      nU/$ ©Nr…  )r   rï  )rV   r-  r_   rU   s       r4   r…  ÚParser.space~	  s-   € Ø× Ñ   g¡Ñ/ˆØ×Ñ˜sÓ#ˆØˆuˆrH   c                ó,   • U R                  US   5      /$ ró  )rï  rß  s     r4   r«  ÚParser.customspaceƒ	  s   € Ø× Ñ   g¡Ó/Ð0Ð0rH   c                óX  • US   nUS:X  a  Sn [        X@R                  5       5      nX@R                  ;   aª  [        S US U S S S2    5       S5      nU R                  (       dN  X@R                  ;   aB  [        US U R                  5       5      S:X  d  US	1U R                  kU R                  k;   a  U/$ [        U R                  S
5      UU R                  S
5      /SS9/$ X@R                  ;   a—  [        S US U S S S2    5       S5      n[        S XS-   S   5       S5      nUS:X  a  US	:X  a	  US:X  a  U/$ US:X  a-  UR                  5       (       a  UR                  5       (       a  U/$ [        XPR                  S
5      /SS9/$ U/$ ! [         a  n[        XSU-  5      UeS nAff = f)Nr´   Ú-r  zUnknown symbol: %sc              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7f©rU  Nr?   ©r
  rL  s     r4   r  Ú Parser.symbol.<locals>.<genexpr>™	  ó   é € ÐCª A¸s¹(Ÿa™aªùó   ‚	�	rÞ  ry  r   rY  rô  Trë  c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7frú  r?   rû  s     r4   r  rü  §	  rý  rþ  c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7frú  r?   rû  s     r4   r  rü  ¨	  s   é € ÐAª A¸S¹Ÿa™aªùrþ  r   Ú,rZ  Ú.)rJ  rÕ  r1   r   Ú_spaced_symbolsr   rÇ  Ú_binary_operatorsrO  rn  Ú_left_delimsÚ_relation_symbolsrŽ  rï  Ú_punctuation_symbolsrP  )	rV   rr  r,  r-  rL  r§  r3   Ú	prev_charÚ	next_chars	            r4   r2   ÚParser.symbol†	  sé  € à�‰KˆØ�‹8ð !ˆAð	IÜ˜Ÿ>™>Ó+Ó,ˆDð
 ×$Ñ$Ó$ô ÑC¨¨4¨C¨±°2°ªÓCÀRÓHˆIð ×0×0Ø×/Ñ/Ó/Ü˜˜$˜3˜Ÿ™›Ó(¨AÓ-°Øð?JØ"×/Ñ/ð?JØ26×2HÑ2Hð?Jó 2Jà�v�ä˜t×/Ñ/°Ó4Ø#Ø#×/Ñ/°Ó4ð6ð '+ñ,ð -ð -ð ×+Ñ+Ó+ÜÑC¨¨4¨C¨±°2°ªÓCÀRÓHˆIÜÑA¨°©7¨8©ÓAÀ2ÓFˆIð �C‹xØ Ó#¨	°SÓ(8Ø ˜6�Mð �C‹x˜I×-Ñ-×/Ñ/°I×4EÑ4E×4GÑ4GØ�v�ä˜t×%5Ñ%5°cÓ%:Ð;ÀTÑJÐKÐKØˆvˆøôE ó 	IÜ% aØ&:¸QÑ&>ó@ØEHðIûð	Iús   �F
 Æ

F)ÆF$Æ$F)c                ó&   • [        XSUS    35      e)NzUnknown symbol: r’  r+  ©rV   rr  r,  r-  s       r4   r¢  ÚParser.unknown_symbol¶	  s   € Ü! !Ð,<¸TÀ&¹\¸NÐ*KÓLÐLrH   c                ó    • SUS   l         US   $ )NTr  )r‘  rß  s     r4   r  ÚParser.phantom¹	  s   € Ø#'ˆˆW‰Ô Ø�G‰}ÐrH   c                óR   • [        [        US   R                  * 5      US   /5      /$ ©Nr  ©rŽ  rž  r:   rß  s     r4   r¬  ÚParser.llap½	  s+   € Ü”t˜T '™]×0Ñ0Ð0Ó1°4¸±=ÐAÓBÐCÐCrH   c                óR   • [        US   [        US   R                  * 5      /5      /$ r  r  rß  s     r4   r­  ÚParser.rlapÀ	  s+   € Ü�t˜G‘}¤d¨D°©M×,?Ñ,?Ð+?Ó&@ÐAÓBÐCÐCrH   Úhatz\circumflexaccentÚbrevez\combiningbreveÚbarz\combiningoverlineÚgravez\combininggraveaccentÚacutez\combiningacuteaccentÚtildez\combiningtildeÚdotz\combiningdotaboveÚddotz\combiningdiaeresisÚdddotz\combiningthreedotsaboveÚddddotz\combiningfourdotsaboveÚvecz\combiningrightarrowaboveÚ"Ú`Ú'rb  r  ra  z\rightarrowz
\leftarrowz\circ)ÚoverrightarrowÚoverleftarrowÚmathringzwidehat widetilde widebarc                ó  • U R                  5       nUR                  5       nUS   nUS   nX@R                  ;   a*  [        SU-   UR                  U[
        S9n[        U/5      nOb[        U R                  U   U5      nUS:X  a   UR                  5         UR                  5         [        [        UR                  S-  5      U/5      nUR                  UR                  S5        [        U[        SUS	-  5      [        U/5      /5      $ )
Nr‡  r´   r,   )r  r&  g      @Úexactlyr¡   g       @)rÕ  rÍ  r¯  r  r:   re  ré  r®  r#  rD  r�  r·  r>  rŽ  )rV   r-  rO  rÎ  r‡  r´   Ú
accent_boxÚcentereds           r4   r‡  ÚParser.accentÜ	  só   € Ø—‘Ó ˆØ×9Ñ9Ó;ˆ	Ø�h‘ˆØ�5‰kˆà×'Ñ'Ó'Ü&Ø�v‘˜sŸy™y¨%¼FñDˆJä  * Ó.‰Hä × 0Ñ 0°Ñ 8¸%Ó@ˆJØ˜Ó#Ø×!Ñ!Ô#Ø×!Ñ!Ô#Ü ¤$ s§y¡y°3¡Ó"7¸Ð!DÓEˆHØ�‰�s—y‘y )Ô,ÜØÜ�R˜ S™Ó)Ü�s�e“ðó ð 	rH   c                ó>   • U R                  XU5      nUS   Ul        U$ )Nr’  )rÀ  Úfunction_name)rV   rr  r,  r-  rå  s        r4   r±  ÚParser.functionó	  s%   € Ø×!Ñ! !¨$Ó/ˆØ" 6™lˆÔØˆrH   c                ó¼  • U R                  5         U R                  5       nSUl        / nUS   nU H„  n[        U[        5      (       a*  SUl        UR                  5         UR                  U5        MB  [        U[        5      (       a  UR                  [	        Xt5      5        Ms  UR                  U5        M†     U[        U5      -   S-   n[        U[        5      (       a  U[        S5      -  n[        S XS   5       S5      n	U R                  SS1-  n
Xš;  a!  XPR                  U R                  S	   5      /-  nU R                  5         U	S
;   U l        [!        U5      $ )Nr>  r’  r   zoperatorname{}c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7frú  r?   rû  s     r4   r  Ú&Parser.operatorname.<locals>.<genexpr>
  s   é € ÐCÒ%6 ¸s¹(Ÿ!™!Ò%6ùrþ  ry  ra  rp  rñ  >   ra  rp  )rÛ  rÕ  r]   r‹  rJ  rN  r¼   r•   rO  r   r   r¦  rï  r   rØ  rÇ  rŽ  )rV   rr  r,  r-  rO  Ú
hlist_listr’  rL  Únext_char_locr	  Ú
delimiterss              r4   rÀ  ÚParser.operatornameø	  s7  € Ø�‰ÔØ—‘Ó ˆØˆŒ
Ø!#ˆ
à�F‰|ˆÛˆAÜ˜!œT×"Ñ"Ø�”Ø×!Ñ!Ô#Ø×!Ñ! !Ö$Ü˜Aœs×#Ñ#Ø×!Ñ!¤$ q£.Ö1à×!Ñ! !Ö$ñ ð œc $›i™¨!Ñ+ˆÜ�dœL×)Ñ)ØœSÐ!1Ó2Ñ2ˆMÜÑC Q ~Ñ%6ÓCÀRÓHˆ	Ø—\‘\ S¨# JÑ.ˆ
ØÓ&à×+Ñ+¨D×,>Ñ,>¸uÑ,EÓFÐGÑGˆJØ�‰Ôð ,5¸
Ñ+BˆÔ(Ü�ZÓ Ð rH   c                óš   • U R                  5         UR                  S5      (       a$  UR                  S5      U R                  5       l        / $ ©Nr]   )rÛ  ró   rÕ  r]   rß  s     r4   r¤  ÚParser.start_group
  s8   € Ø�‰Ôà�8‰8�F×ÑØ$(§H¡H¨VÓ$4ˆD�N‰NÓÔ!Øˆ	rH   c                ó>   • [        UR                  S/ 5      5      nU/$ ©Nry  ©rŽ  ró   )rV   r-  Úgrps      r4   ry  ÚParser.group
  s   € Ü�D—H‘H˜W bÓ)Ó*ˆØˆuˆrH   c                ó8   • [        UR                  S/ 5      5      $ r:  r;  rß  s     r4   r©  ÚParser.required_group!
  s   € Ü�T—X‘X˜g rÓ*Ó+Ð+rH   c                ó&   • U R                  5         / $ rS   )rØ  rÙ   s    r4   r¥  ÚParser.end_group&
  s   € Ø�‰ÔØˆ	rH   c                ó.   • [        U[        U5      S5      e)NrC  )r   rO  r  s       r4   r²  ÚParser.unclosed_group*
  s   € Ü! !¤S¨£V¨^Ó<Ð<rH   c                ó6   • US   U R                  5       l        / $ r7  )rÕ  r]   rß  s     r4   r]   ÚParser.font-
  s   € Ø $ V¡ˆ�‰ÓÔØˆ	rH   c                óÞ   • [        U[        5      (       a  UR                  U R                  ;   $ [        U[        5      (       a*  [        US5      (       a  UR                  U R                  ;   $ g)Nr-  F)r‹  rJ  rL  Ú_overunder_symbolsrŽ  rv  r-  Ú_overunder_functions©rV   r”  s     r4   Úis_overunderÚParser.is_overunder1
  sW   € Ü�gœt×$Ñ$Ø—9‘9 × 7Ñ 7Ñ7Ð7Ü˜¤×'Ñ'¬G°G¸_×,MÑ,MØ×(Ñ(¨D×,EÑ,EÑEÐEØrH   c                ó`   • [        U[        5      (       a  UR                  U R                  ;   $ gr¼  )r‹  rJ  rL  Ú_dropsub_symbolsrI  s     r4   Ú
is_dropsubÚParser.is_dropsub8
  s'   € Ü�gœt×$Ñ$Ø—9‘9 × 5Ñ 5Ñ5Ð5ØrH   c                óN   • [        U[        5      (       a  UR                  5       $ gr¼  )r‹  rJ  rZ  rI  s     r4   rZ  ÚParser.is_slanted=
  s!   € Ü�gœt×$Ñ$Ø×%Ñ%Ó'Ð'ØrH   c           	     óæ  >• UR                  S[        S5      5      nUR                  S/ 5      n[        UR                  S/ 5      5      nU(       d	  U(       d  U$ S =pxU(       a4  UtpšnU	S:X  a  Ub  [        S5      eU
nOUb  [        S5      eU
nU(       a  M4  U R	                  5       nUR
                  R                  UR                  UR                  UR                  5      nUR
                  R                  UR                  UR                  UR                  5      nU(       a�  Uc  [        / 5      nO![        U[        5      (       d  [        U/5      n[        U5       H0  nUR                  R                  U R!                  XSS	05      5        M2     UR#                  5         UR%                  5         U R'                  U5      (       GaŠ  / nS
nUR(                  nUb&  UR+                  5         [-        UUR(                  5      nUb&  UR+                  5         [-        UUR(                  5      nUS-  nUb;  [/        U/5      nUR%                  US5        UR                  U[1        SU5      /5        [/        U/5      nUR%                  US5        UR3                  U5        UbW  [/        U/5      nUR%                  US5        UR                  [1        SU5      U/5        UR4                  U-   UR6                  -   n[9        U5      nUUl        U R<                  (       a  U R?                  U R@                  S   5      /O/ nSU l        [        U/UQ5      nU/$ Un[        U[        5      (       a‘  UR                  n[        U5      (       aj  [        US   [B        5      (       a  [        US   [D        5      (       a  US S nUS   n[        U[D        5      (       a  URF                  RH                  Ul        [        USS9nO<[        U[D        5      (       a  URF                  RH                  Ul        [        U/5      nUR
                  RK                  5       nUR4                  nS
nU RM                  U5      (       a  UR6                  nURN                  U-  nURN                  U-  nU RQ                  U5      (       a„  UURN                  U-  -  nUURR                  UUS-  S-  -
  -  -  nU RM                  U5      (       a?  SURN                  -  URT                  -
  U-  nSURN                  -  URT                  -   U-  nOSnURW                  5       (       a  S
nS
nOzUR
                  R                  UR                  UR                  [X        -  UR                  5      n UR4                  URZ                  U -  -
  nUR6                  UR\                  U -  -   nUcž  [        [C        U5      [^        R`                  " [b        U5      /5      n!U!R+                  5         U RM                  U5      (       a  UUR\                  U-  -   nO-[-        UURd                  U-  U!R4                  US-  S-  -
  5      nUU!l        GO€[        [C        U5      U/5      n!U!R+                  5         U RM                  U5      (       a  UUR\                  U-  -
  nO*[-        UURf                  U-  U!R6                  US-  -   5      nUc	  U* U!l        Oû[        [C        U5      U/5      n"U"R+                  5         U RM                  U5      (       a  UUR\                  U-  -   nO[-        UURh                  U-  5      nSU-  UU!R6                  -
  U"R4                  U-
  -
  -
  n#U#S
:”  a-  UU#-  nUS-  S-  U-
  U!R6                  -   n#U#S:”  a
  UU#-  nUU#-  n[9        U![C        UU!R6                  -
  U"R4                  U-
  -
  5      U"/5      n!UU!l        U RM                  U5      (       d"  U!=R(                  URj                  U-  -  sl        U R<                  (       a  U R?                  U R@                  S   5      /O/ nSU l        [        UU!/UQ5      nU/$ )Nr”  r   r•  r–  rp  zDouble subscriptzDouble superscriptr´   r¸  r¡   g      @r(  rñ  FrÞ  éþÿÿÿrë  rp   r   r¥  é   )6ró   rD  rO  r   rÕ  rM  rÐ   r]   r^   rª   rÍ   rŽ  r‹  rÚ  rp  Úextendr2   r]  r�  rJ  r:   r#  rv   ré  r>  r¼   r;   r<   r·  ro  rÇ  rï  r   rž  rJ  rV  r�   rÚ   rN  ró  rZ  rõ  r÷  r*  r6  rì  rí  rø   rù   r  rð  rî  rò  rë  )%rV   rr  r,  r-  r”  r•  ÚnapostrophesÚsubré   ÚopÚargrO  Úrule_thicknessr$  rà  Úvlistr   r:   Úvgaprå  ÚvltÚoptional_spacingrÑ  Ú	last_charrŸ  r  Ú	lc_heightÚlc_baselineÚ	superkernÚsubkernÚshift_upÚ
shift_downÚshrunk_x_heightr‚   rƒ   Úclrrð   s%                                       €r4   r•  ÚParser.subsuperB
  ss  ø€ Ø—(‘(˜9¤d¨1£gÓ.ˆØ—8‘8˜J¨Ó+ˆÜ˜4Ÿ8™8 M°2Ó6Ó7ˆæ¦ØˆNàÐˆÞØ!)ÐˆB�hØ�S‹yØ‘?Ü-Ð.@ÓAÐAØ‘àÑ$Ü-Ð.BÓCÐCØ�÷ ˆhð —‘Ó ˆØŸ™×>Ñ>Ø�J‰J˜Ÿ™¨¯	©	ó3ˆà—=‘=×,Ñ,¨U¯Z©Z¸¿¹ÈÏÉÓSˆæØ‰}Ü˜b›	‘Ü ¤u×-Ñ-ô ˜u˜g›�Ü˜<Ö(�Ø—‘×%Ñ% d§k¡k°!¸5À)Ð:LÓ&MÖNñ )ð �J‰JŒLØ�K‰KŒMð ×Ñ˜W×%Ò%ØˆEØˆEØ—M‘MˆEØÑ Ø—‘”Ü˜E 5§;¡;Ó/�Ø‰Ø—
‘
”Ü˜E 3§9¡9Ó-�à! CÑ'ˆDØÑ Ü! 5 'Ó*�Ø—‘˜E 9Ô-Ø—‘˜e¤T¨!¨T£]Ð3Ô4Ü˜w˜iÓ(ˆEØ�K‰K˜˜yÔ)Ø�L‰L˜ÔØ‰Ü! 3 %Ó(�Ø—‘˜E 9Ô-Ø—‘œd 1 d›m¨UÐ3Ô4ØŸ™ tÑ+¨g¯m©mÑ;�Ü˜“,ˆCØ$ˆCÔà#'×#C×#Cð "&×!1Ñ!1°$×2DÑ2DÀUÑ2KÓ!LÑ MØIKð à/4ˆDÔ,Ü˜CÐ3Ð"2Ð3Ó4ˆFØ�8ˆOð ˆ	Ü�gœu×%Ñ%Ø"×+Ñ+ˆLÜ�<× Ñ ä˜|¨BÑ/´×6Ñ6Ü" <°Ñ#3´T×:Ñ:Ø#/°°Ð#4�LØ(¨Ñ,�	Ü˜i¬×.Ñ.Ø&/×&8Ñ&8×&@Ñ&@�I”Oä˜L°%Ñ8‰Gä˜'¤4×(Ñ(Ø"+×"4Ñ"4×"<Ñ"<�	”Ü˜W˜IÓ&ˆGð —‘×1Ñ1Ó3ˆØ×&Ñ&ˆ	ØˆØ�?‰?˜9×%Ñ%Ø#Ÿ/™/ˆKð —L‘L 8Ñ+ˆ	Ø—,‘, Ñ)ˆØ�?‰?˜9×%Ñ%Ø˜Ÿ™¨Ñ0Ñ0ˆIØ˜×-Ñ-°¸XÈ¹\ÈAÑ=MÑ1MÑNÑNˆIØ�‰˜y×)Ñ)Ø˜vŸ|™|Ñ+¨f×.CÑ.CÑCÀyÑP�Ø §¡Ñ-°×0EÑ0EÑEÈÑR‘	à�ð ×Ñ×!Ñ!ØˆHØ‰Jà#Ÿm™m×7Ñ7Ø—
‘
˜EŸN™N¬]Ñ:¸E¿I¹IóGˆOà—~‘~¨¯©¸Ñ(HÑHˆHØ Ÿ™¨¯©¸/Ñ)IÑIˆJð ‰=ô
 ”t˜G“}¤a§f¢f¬T°3Ó&7Ð8Ó9ˆAØ�H‰HŒJØ�‰˜y×)Ñ)Ø(¨6¯>©>¸HÑ+DÑD‘
ä  ¨V¯[©[¸8Ñ-CØ!"§¡¨H°q©L¸1Ñ,<Ñ!<ó>�
à'ˆAŽNô ”t˜I“¨Ð.Ó/ˆAØ�H‰HŒJØ�‰˜y×)Ñ)Ø$ v§~¡~¸Ñ'@Ñ@‘ä˜x¨¯©°xÑ)?ÀÇÁÈ8ÐVWÉ<ÑAWÓX�Ø‰{Ø"* �•ô œ4 ›=¨#Ð.Ó/�Ø—‘”
Ø—?‘? 9×-Ñ-Ø!,¨v¯~©~ÀÑ/HÑ!H‘Jä!$ Z°·±¸xÑ1GÓ!H�Jð ˜>Ñ)Ø! A§G¡GÑ+°·±¸:Ñ0EÑFñH�à˜“8Ø #Ñ%�JØ" Q™,¨Ñ*¨XÑ5¸¿¹Ñ?�CØ˜Q“wØ  C™˜Ø" cÑ)˜
ÜØÜ˜( Q§W¡WÑ,°·±¸JÑ1FÑGÓHØðó �ð ",�”à�‰˜y×)Ñ)Ø�GŠG�v×*Ñ*¨XÑ5Ñ5�Gð
  $×?×?ð "×-Ñ-¨d×.@Ñ.@ÀÑ.GÓHÑIØEGð 	à+0ˆÔ(Ü˜ Ð6Ð%5Ð6Ó7ˆØˆxˆrH   c           	     óÀ  • U R                  5       nUR                  5       nUR                  R                  UR                  UR
                  UR                  5      n	UR                  R                  5       n
UR                  R                  UR                  UR
                  UR                  5      n[        UR                  5       H,  nU[        -  nUR                  5         UR                  5         M.     [        U/5      n[        U/5      n[        UR                  UR                  5      nUR!                  US5        UR!                  US5        U(       aç  X@R"                  R$                  L a$  U
R&                  U-  nU
R(                  U-  nSU-  nO U
R*                  U-  nU
R,                  U-  nUnUS-  n[        UUR.                  -
  U	U-   -
  U5      n[        U	U-
  UR0                  U-
  -
  U5      n[3        U[5        SU5      [7        Xs5      [5        SU5      U/5      nUR0                  U-   U-   U	-
  Ul        OÊX@R"                  R$                  L a$  U
R&                  U-  nU
R(                  U-  nSU-  nO#U
R:                  U-  nU
R,                  U-  nSU-  nUUR.                  -
  UR0                  U-
  -
  n[        UU5      n[3        U[5        SU5      U/5      nUUl        UU:  a  U=R8                  UU-
  S-  -  sl        [=        [?        U5      U[?        U5      /5      /nU(       d  U(       a%  U RA                  U=(       d    SUU=(       d    S5      $ U$ )Nr(  r   rp   r   é   r  )!rÕ  rÍ  rM  rÆ   r]   r^   rª   rÚ   rÍ   rÚ  r  r6  r#  ré  rv   r:   r�  rm  ri  rø  rû  rù  rü  r<   r;   r·  r>  rÊ  ro  rú  rŽ  rD  Ú_auto_sized_delimiter)rV   r‰  rŠ  ÚrulerŒ  r_   rˆ  rO  rÎ  r  r  r$  rp  ÚcnumÚcdenr:   Únum_shift_upÚden_shift_downrg  ró  Únum_clrÚden_clrr[  Úmin_clrÚdef_clrrÑ  s                             r4   Ú_genfracÚParser._genfracû
  sþ  € à—‘Ó ˆØ×9Ñ9Ó;ˆ	à—m‘m×3Ñ3Ø�J‰J˜Ÿ™¨¯	©	ó3ˆà—‘×1Ñ1Ó3ˆØ—=‘=×,Ñ,¨U¯Z©Z¸¿¹ÈÏÉÓSˆä�u—{‘{Ö#ˆAØœÑ%ˆHØ�J‰JŒLØ�J‰JŽLñ $ô ˜#˜ÓˆÜ˜#˜ÓˆÜ�C—I‘I˜sŸy™yÓ)ˆØ�
‰
�5˜)Ô$Ø�
‰
�5˜)Ô$ö ØŸ™×4Ñ4Ò4Ø%Ÿ{™{¨XÑ5�Ø!'§¡°Ñ!9�Ø˜$‘h‘à%Ÿ{™{¨XÑ5�Ø!'§¡°Ñ!9�Ø�Ø˜1‘HˆEÜ˜<¨$¯*©*Ñ4¸ÀuÑ9LÑMÈsÓSˆGÜ˜;¨Ñ.°4·;±;ÀÑ3OÑPÐRUÓVˆGÜ˜4Ü  7Ó+Ü  Ó-Ü  7Ó+Øð	ó ˆEð "&§¡¨wÑ!6¸Ñ!>ÀÑ!LˆEÕð Ÿ™×4Ñ4Ò4Ø%Ÿ{™{¨XÑ5�Ø!'§¡°Ñ!9�Ø˜i™-‘à%Ÿ{™{¨XÑ5�Ø!'§¡°Ñ!9�Ø˜i™-�Ø# d§j¡jÑ0°T·[±[À>Ñ5QÑRˆGÜ�g˜wÓ'ˆCÜ˜4Ü  3›<Øðó ˆEð "0ˆEÔØ˜Ó Ø×"Ò" w°Ñ'8¸AÑ&=Ñ=Õ"ä*/Ü�‹OØÜ�‹Oð1
ó +ð *ˆö
 –VØ×-Ñ-¨f¯m¸¸VÀVÇ]ÈsÓSÐSØˆrH   c                ó<   • U R                  [        US   5      5      $ )Nr†  )rm  r~   rß  s     r4   r†  ÚParser.style_literalA  s   € Ø�‰œs 4¨Ñ#8Ó9Ó:Ð:rH   c           	     óÈ   • U R                  UR                  SS5      UR                  SS5      US   UR                  SU R                  R                  5      US   US   5      $ )Nr‰  ry  rŠ  r‹  rŒ  r_   rˆ  )ru  ró   rm  rj  rß  s     r4   r¶  ÚParser.genfracD  sZ   € Ø�}‰}Ø�H‰H�X˜rÓ" D§H¡H¨X°rÓ$:Ø�Ñ˜dŸh™h w°·±×0IÑ0IÓJØ�‰K˜˜e™ó&ð 	&rH   c           	     óš   • U R                  SSU R                  5       R                  5       U R                  R                  US   US   5      $ ©Nry  r_   rˆ  )ru  rÕ  rÍ  rm  rj  rß  s     r4   r³  ÚParser.fracJ  sE   € Ø�}‰}Ø��D—N‘NÓ$×DÑDÓFØ�O‰O×%Ñ% t¨E¡{°D¸±KóAð 	ArH   c           	     óš   • U R                  SSU R                  5       R                  5       U R                  R                  US   US   5      $ r|  )ru  rÕ  rÍ  rm  ri  rß  s     r4   r´  ÚParser.dfracO  sE   € Ø�}‰}Ø��D—N‘NÓ$×DÑDÓFØ�O‰O×(Ñ(¨$¨u©+°t¸E±{óDð 	DrH   c           	     ób   • U R                  SSSU R                  R                  US   US   5      $ )NrV  rX  r   r_   rˆ  )ru  rm  rj  rß  s     r4   rµ  ÚParser.binomT  s5   € Ø�}‰}Ø��aØ�O‰O×%Ñ% t¨E¡{°D¸±KóAð 	ArH   c                óô  • US   nUS   nU R                  5       R                  5       nUR                  5         [        U/5      n[        U/5      n[	        UR
                  UR
                  5      n	UR                  U	S5        UR                  U	S5        US-  n
XS-      S:X  a;  [        U[        SU
5      U/5      nUR                  UR                  -   U
-   Ul        U$ [        U[        SU
5      U/5      nU$ )Nr�  rŽ  r(  r   r   Úur   )rÕ  rÍ  r#  ré  rv   r:   r�  r·  r>  r<   r;   ro  )rV   rr  r,  r-  r�  rŽ  rÎ  Úcentered_annotationÚcentered_bodyr:   r\  r[  s               r4   Ú_gensetÚParser._gensetY  s  € Ø˜,Ñ'ˆ
Ø�F‰|ˆØ—N‘NÓ$×DÑDÓFˆ	à×ÑÔÜ'¨¨Ó5ÐÜ! 4 &Ó)ˆÜÐ'×-Ñ-¨}×/BÑ/BÓCˆØ×!Ñ! %¨Ô3Ø×Ñ˜E 9Ô-à˜1‰}ˆØ�1‰W‰:˜ÓÜØÜ�Q˜“Ø#ðó ˆEð "/×!4Ñ!4Ð7J×7QÑ7QÑ!QÐTXÑ!XˆEÔð ˆô Ø#Ü�Q˜“Øðó ˆEð ˆrH   c                ór  • UR                  S5      nUS   nU R                  5       nUR                  5       nUR                  UR                  -
  SU-  -   nUR
                  UR                  -   n[        SXgU5      nUR                  UR                  -
  nUR
                  UR                  -   n[        [        SU-  5      U[        SU-  5      /5      n	[        [        U5      [        S5      U	/5      n
U
R                  XdR                  UR                  -  S-  -   SU5        U(       d  [        S	UR                   -  S
S
5      nO+[        U5      nUR#                  5         UR#                  5         [        [        U/5      /5      nU* S-  Ul        [        U[%        SUR                   -  5      UU
/5      nU/$ )Nr�  r  rT  r_  rp   rØ  é°  r(  rñ  r¡   r  g      à¿)ró   rÕ  rÍ  r;   ro  r<   rû  rŽ  rD  r·  rÊ  r«  r¹  r^   rª   rŠ   r:   r#  rž  )rV   r-  r�  rŽ  rO  rÎ  r;   r<   ÚcheckÚpadded_bodyÚ	rightsideÚ
root_vlistrå  s                r4   r·  ÚParser.sqrt{  s‹  € Ø�x‰x˜ÓˆØ�G‰}ˆØ—‘Ó ˆØ×9Ñ9Ó;ˆ	ð —‘˜t×0Ñ0Ñ0°1°y±=Ñ@ˆØ—
‘
˜T×.Ñ.Ñ.ˆÜ˜|¨V¸EÓBˆØ—‘ × 2Ñ 2Ñ2ˆØ—‘˜e×0Ñ0Ñ0ˆô œT ! i¡-Ó0°$¼¸QÀ¹]Ó8KÐLÓMˆÜœ5 ›<¬¨f«°{ÐCÓDˆ	à�‰˜§.¡.°5·9±9Ñ"<ÀÑ!JÑJØ! 5ô	*ö
 Ü�s˜UŸ[™[Ñ(¨"¨bÓ1‰Dä˜“;ˆDØ�K‰KŒMØ�K‰KŒMäœE 4 &›M˜?Ó+ˆ
Ø#) '¨C¡-ˆ
ÔäØÜ�˜Ÿ™Ñ#Ó$ØØð	
ó ˆð ˆwˆrH   c                óŒ  • US   nU R                  5       nUR                  5       nUR                  UR                  -
  SU-  -   nUR                  UR                  -   n[        [        U5      [        S5      [        U/5      /5      nUR                  XSR                  UR                  -  S-  -   SU5        [        U/5      nU/$ )NrŽ  r   rØ  r‰  r(  )rÕ  rÍ  r;   ro  r<   r·  rÊ  r«  rŽ  r¹  r^   rª   )	rV   r-  rŽ  rO  rÎ  r;   r<   rŒ  rå  s	            r4   r¸  ÚParser.overline¤  s¶   € Ø�F‰|ˆà—‘Ó ˆØ×9Ñ9Ó;ˆ	à—‘˜t×0Ñ0Ñ0°1°y±=Ñ@ˆØ—
‘
˜T×.Ñ.Ñ.ˆô œ5 ›<¬¨f«´u¸d¸V³}ÐEÓFˆ	ð 	�‰˜§.¡.°5·9±9Ñ"<ÀÑ!JÑJØ! 5ô	*ô �y�kÓ"ˆØˆwˆrH   c                ó@  • US   nU R                  5       nUR                  5       n[        [        U/5      [	        SU-  5      [        X45      /5      nUR                  UR                  -   U-   nUR                  Ul        XeR                  -
  Ul        [        U/5      /$ )NrŽ  r   )rÕ  rÍ  r·  rŽ  rž  rÊ  r;   r<   )rV   r-  rŽ  rO  rÎ  r[  ró  s          r4   r¹  ÚParser.underline·  s’   € Ø�F‰|ˆØ—‘Ó ˆØ×9Ñ9Ó;ˆ	äÜ�4�&‹MÜ��Y‘ÓÜ�%Ó#ð
ó ˆð
 —‘˜uŸ{™{Ñ*¨YÑ6ˆØ—{‘{ˆŒØŸl™lÑ*ˆŒÜ�u�g“ÐÐrH   c           
     ó@  • U R                  5       n[        U5      (       Ga  [        U Vs/ s H&  n[        U[        5      (       a  M  UR
                  PM(     sn5      n[        U Vs/ s H&  n[        U[        5      (       a  M  UR                  PM(     sn5      nS n[        U5       HW  u  pšU
S:X  d  M  [        R                  " [        X)S-      5      nUS:w  a  [        X¶XtUS9X)S-   '   OUR                  U5        X)	 MY     [        R                  " [        [        [        -     U5      nOSnSnSn/ n/ nUS:w  a  UR                  [        XXtUS95        UR!                  U5        US:w  a  UR                  [        X6XtUS95        [#        U5      nU$ s  snf s  snf )Nr—  r   r  )rþ  r   r  )rÕ  rO  rv   r‹  r•   r;   r<   Ú	enumeraterø   rù   rû  ÚremoverÓ  rŠ   rJ  r¼   rU  rŽ  )rV   ÚfrontÚmiddleÚbackrO  r‚   r;   r<   rþ  ÚidxÚelrL  Úmiddle_partr“  rå  s                  r4   rk  ÚParser._auto_sized_delimiterÆ  sf  € ð —‘Ó ˆÜˆv�;Š;Ü©FÓMªF q¼*ÀQÌ×:L›(˜!Ÿ(œ(©FÑMÓNˆFÜ©&ÓKª& Q¼
À1Äc×8J›˜Ÿœ©&ÑKÓLˆEØˆFÜ$ VÖ,‘�Ø˜Õ#ÜŸšœs F°©7¡OÓ4�AØ˜C“xÜ*8Ø !¨5Àñ+H˜ Q™wšð Ÿ™ aÔ(Øšñ -ô Ÿ&š&¤¤c¬D¡jÑ!1°6Ó:‰KàˆFØˆEØˆFØˆKàˆà�C‹<Ø�L‰LÜ˜u¨eÀ6ÑJôLà�‰�[Ô!Ø�3‹;Ø�L‰LÜ˜t¨UÀ&ÑIôKä�e“ˆØˆùò? NùÚKs   «FÁFÁ(FÂFc                óV   • U R                  US   US   R                  5       US   5      $ )Nr™  rÙ  rš  )rk  rÞ  rß  s     r4   rs  ÚParser.auto_delimì  s3   € Ø×)Ñ)Ø�‰L˜$˜u™+×-Ñ-Ó/°°g±ó@ð 	@rH   c                óž  • U R                  5         U R                  5       n/ nUS   nU GH  n[        U[        5      (       aN  UR                  S   n[        U[
        5      (       a  SUl        UR                  5         UR                  U5        Mg  [        U[
        5      (       ax  SUl        UR                  U R                  ;   d  UR                  SS  U R                  ;   a  SUl        UR                  5         UR                  5         UR                  U5        Mô  UR                  U5        GM     U R                  5         [        U5      $ )Nr  r   rA  r¾  )rÛ  rÕ  r‹  rŽ  rp  rJ  r]   rN  r¼   rL  Ú_latin_alphabetsÚ_small_greekrØ  )rV   r-  rO  rå  r’  rL  Úks          r4   rÁ  ÚParser.boldsymbolð  sþ   € Ø�‰ÔØ—‘Ó ˆØˆØ�G‰}ˆÜˆAÜ˜!œU×#Ñ#Ø—J‘J˜q‘M�Ü˜a¤×&Ñ&Ø!�A”FØ×%Ñ%Ô'Ø—‘˜Q–Ü˜Aœt×$Ñ$Ø�”Ø—C‘C˜4×0Ñ0Ó0Ø—3‘3�q�r�7˜d×/Ñ/Ó/Ø#�A”FØ×%Ñ%Ô'Ø×!Ñ!Ô#Ø—‘˜Q–à—‘˜Q—ñ! ð" 	�‰Ôä�U‹|ÐrH   c                óü  • US   nU R                  5       nUR                  5       nUS    Vs/ s H  n[        U5      PM     nn[        [	        S U5      5      n/ nU H2  n	[        U	/5      n
U
R                  US5        UR                  U
5        M4     [        U[        SUS-  5      /[        U5      -  5       VVs/ s H  nU  H  nUPM     M     nnnUS	 [        U5      n[        U/5      /nU$ s  snf s  snnf )Nr“  r   c                ó   • U R                   $ rS   rå  rR  s    r4   r—  Ú!Parser.substack.<locals>.<lambda>  s   €  a§g¢grH   r(  rp   rÞ  )rÕ  rÍ  rŽ  rv   rZ   ré  r�  r¼   Úzipr>  rO  r·  )rV   r-  r“  rO  rÎ  r¢  rå  Ú	max_widthr[  rW  ÚcpÚpairr  Ústackr]  rÑ  s                   r4   r¾  ÚParser.substack
  s  € Ø�W‘ˆØ—‘Ó ˆØ×9Ñ9Ó;ˆ	à#(¨¢8Ó,¢8˜a”�q–¡8ˆÐ,ÜœÑ-¨uÓ5Ó6ˆ	àˆÛˆCÜ˜C˜5Ó!ˆBØ�H‰H�Y 	Ô*Ø�L‰L˜Öñ ô ! ¬¨a°¸Q±Ó)?Ð(@Ä3ÀuÃ:Ñ(MÔNô"ÚN�TÜ �Só á ñ ÙNð 	ñ "ð �"ˆIÜ�E‹lˆÜ˜˜“,�ˆØˆùò -ùó"s   ­C3Â=C8)rÌ  rÅ  rÆ  rÇ  rË  r,  )
rr  r•   rÐ  r™   r^   r9   rª   r9   r‹   rŽ  rV  )r-  r   r‹   zlist[Hlist])r-  r   r‹   r   )r-  r   r‹   r2  )rî  r9   r‹   rž  )rr  r•   r,  r~   r-  zParseResults | dict[str, str]r‹   r2  r1  )r‹   r2  )r”  r  r‹   rŒ   )r‰  r•   rŠ  r•   rl  rÐ  rŒ  rm  r_   rŽ  rˆ  rŽ  r‹   r2  )r–  r•   r—  zlist[Box | Char | str]r˜  r•   r‹   r2  )[rA   rB   rC   rD   rE   ÚenumÚEnumrm  rm  rn  r  r  Ú_arrow_symbolsr  r  rG  rH  rM  r£  r°  Ú_ambi_delimsr  Ú_right_delimsr¦  rÚ  r-   rŸ  r’  rž  r÷   r¡  ÚstringÚascii_lettersr   rW   rÒ  rÕ  rØ  rÛ  rÄ  rÂ  rz   rÃ  Ústaticmethodr   Úconvert_to_floatrŸ  r¼  rï  r   r…  r«  r2   r¢  r  r¬  r­  r®  r¯  r‡  r±  rÀ  r¤  ry  r©  rª  r¥  r²  r]   rJ  rN  rZ  r•  ru  r†  r¶  r³  r´  rµ  r†  rº  r»  r·  r¸  r¹  rk  rs  rÁ  r¾  rG   r/  )r
  rà  rŸ  rž  rð   s   0000@r4   rf  rf  ¿  s�  ø† ñô�T—Y‘Yô ñ ð
÷0 ‰%‹'ó3Ðñ6 ð 5÷j  %™u›wók5(Ðñn ð 	÷0 
‰‹ó1€Nð4 (Ð*;Ñ;¸nÑL€OáÐ7×=Ñ=Ó?Ó@Ðáð ÷ ‰5‹7óÐñ
 Ð>×DÑDÓFÓGÐáÐL×RÑRÓTÓUÐáð :ß:?¹%»'óC€Jñ ð ÷ !™5›7ó$€Oñ
 ð /ç/4©u«wó8€Lñ ð 
ç
‰%‹'ó€Lñ ð 
ç
‰%‹'ó€Mð ˜]Ñ*¨\Ñ9€GáÙ™SÐ!?Ó@Ù Ð!?Ó@À1ÑDôFöGòFð JKœ×(Ò(¬¨Q«Ó0×6Ñ6Ó8¸Ñ<×BÑBÖDñFôGó H€Lñ ˜6×/Ñ/Ó0Ðô@1ôD(ô*%ô ô:ô'ôQôô
ñ !Ð!1×!BÑ!BÓC€Môô(ð  ØØØØØØØØØØØñ€Môô
1ð.Ø2ð.Ø7<ô.ô`MôôDôDðØÐ/ðàÐ-ðð 	Ð0ðð 	Ð3ð	ð
 	Ð3ðð 	Ð-ðð 	Ð0ðð 	Ð1ðð 	Ð6ðð 	Ð5ðð 	Ð7ðð 	Ð1ðð 	Ð3ðð 	Ð3ðð 	Ð-ðð  	Ð0ð!ð" 	Ð/ð#ð$ *Ø(Ø#ò)€Kñ. Ð4×:Ñ:Ó<Ó=€Môô.ô
!ô<ôô,ð $€Nôô=ôôôô
÷
wðrDØðDØ"'ðDØ,1ôDôL;ô&ôAô
Dô
Aô
ð@ !Ð €Gˆhô'ôRô& ð$Ø&<ð$à$'ð$à,1ô$ôL@ô÷4ò ùõaGs   ÅAL,rf  )r2   r•   r‹   r(   ))r   r   )rU   rŠ   r(  ztuple[float, float]r‹   rP   )r.  r•   r‹   r   )r^  r•   r
  r   r‹   r   ){rE   Ú
__future__r   Úabcrý  r­  rê   rœ  Úloggingrz   rô   r  r�  rŸ  r²  r{  Útypingrø   r   Únumpyr[   Únumpy.typingr   Ú	pyparsingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
matplotlibr  ry  r   Ú_mathtext_datar   r   r   r    Úfont_managerr!   r"   r#   Úft2fontr$   r%   r&   ÚTYPE_CHECKINGÚcollections.abcr'   r(   r)   r*   Úenable_packratÚ	getLoggerrœ  r5   r7   rB   rJ   rP   rŽ   r“   ÚABCr™   ÚABCMetarå   r3  rt  r°  r²  rÄ  rE  r‰  r6  r5  rØ   rk  rå  rä  rÀ  rÆ  r  rŠ   r>  rD  rJ  re  rm  rŽ  r·  rÄ  rÊ  rÒ  rÖ  rá  r«  ré  rð  rž  rû  r  r|   r4  r6  rc  rd  rf  r?   rH   r4   Ú<module>rÇ     s¬  ðñõ #ã 
Û Û Û Û Û Û Û 	Û 	Û Û Û Û Û Ý ã Ý  ÷7÷ 7÷ 7÷ 7÷ 7õ 7ó Ý ÷Dó Dç <Ñ <ß 0Ñ 0ð ‡?‡?Ý(ßAÑAð × Ò Ô Ø×ÒÐ.Ó/€ôô,3�*ô 3ð& /€Ô ô�*ô ð( /€Ô ÷<5ñ <5ô~�*ô ô@ˆzô ôy!ˆC�G‰Gô y!ôxxI�E S§[¡[ò xIôv]+�-ô ]+ô@C!�=ô C!ôL&A�,¨#¯+©+ò &AôR(�{ô (ô*'�kô 'ô*t%�ô t%ôn�Iô ðB €ð €÷A.ñ A.ôH!Ð"3ô !ô<Ð)ô ô4Ð-ô ôÐ0ô ô*Ð/ô ÷*ñ ô@ˆ$ô ô*,ˆ3ô ,ô(ˆ3ô (ôD+ˆ4ô D+ôNIˆTô Iô.-/ˆ3ô -/ô``<ˆDô `<ôFS<ˆDô S<ôl@ˆ3ô @ô(7ˆDô 7ô;ˆDô ;ô�
ô ñ ˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨QÓ/ñ	€	Ô ôGˆ4ô Gô8M�ô Mô>�ô >ô(ˆ4ô (ô6#"�Uô #"ôL �Eô  ö8Yô@1ô)B�%ô )B÷X#0ñ #0ôL6÷2_ò _rH   