diff --git a/index.html b/index.html index 675f2d8f22f1cb6e95b3ffa4078b7b40deb8d5df..949ddc13a1af6ae5ac5e5dd3b4f2d6ab5a808c8d 100644 --- a/index.html +++ b/index.html @@ -8,11 +8,13 @@ <link rel="stylesheet" href="stylesheets/styles.css"> <link rel="stylesheet" href="stylesheets/pygment_trac.css"> <link rel="stylesheet" href="font-awesome/css/font-awesome.min.css"> + <link rel="stylesheet" href="katex/katex.min.css"> <link rel="stylesheet" href="pseudocode/pseudocode.min.css"> <!--[if lt IE 9]> <script src="javascripts/html5.js"></script> <![endif]--> <script src="javascripts/autosize.min.js"></script> + <script src="katex/katex.min.js"></script> <script src="pseudocode/pseudocode.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <style type="text/css"> diff --git a/katex/README.md b/katex/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9a1c4df0d80c9746c1bccbc1217d363bddcabc6d --- /dev/null +++ b/katex/README.md @@ -0,0 +1,58 @@ +# [<img src="https://khan.github.io/KaTeX/katex-logo.svg" width="130" alt="KaTeX">](https://khan.github.io/KaTeX/) [](https://travis-ci.org/Khan/KaTeX) + +KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web. + + * **Fast:** KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in [this speed test](http://jsperf.com/katex-vs-mathjax/). + * **Print quality:** KaTeX’s layout is based on Donald Knuth’s TeX, the gold standard for math typesetting. + * **Self contained:** KaTeX has no dependencies and can easily be bundled with your website resources. + * **Server side rendering:** KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML. + +KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, and IE 8 - IE 11. + +## Usage + +You can [download KaTeX](https://github.com/khan/katex/releases) and host it on your server or include the `katex.min.js` and `katex.min.css` files on your page directly from a CDN: + +```html +<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min.css"> +<script src="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min.js"></script> +``` + +#### In-browser rendering + +Call `katex.render` with a TeX expression and a DOM element to render into: + +```js +katex.render("c = \\pm\\sqrt{a^2 + b^2}", element); +``` + +#### Server side rendering or rendering to a string + +To generate HTML on the server or to generate an HTML string of the rendered math, you can use `katex.renderToString`: + +```js +var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}"); +// '<span class="katex">...</span>' +``` + +Make sure to include the CSS and font files, but there is no need to include the JavaScript. + +#### Rendering options + +You can provide an object of options as the last argument to `katex.render` and `katex.renderToString`. Available options are: + +- `displayMode`: `boolean`. If `true` the math will be rendered in display mode, which will put the math in display style (so `\int` and `\sum` are large, for example), and will center the math on the page on its own line. If `false` the math will be rendered in inline mode. (default: `false`) + +For example: + +```js +katex.render("c = \\pm\\sqrt{a^2 + b^2}", element, { displayMode: true }); +``` + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) + +## License + +KaTeX is licensed under the [MIT License](http://opensource.org/licenses/MIT). diff --git a/katex/fonts/KaTeX_AMS-Regular.eot b/katex/fonts/KaTeX_AMS-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..842e453e05dcf749264d9563d7d72e050a038fbd Binary files /dev/null and b/katex/fonts/KaTeX_AMS-Regular.eot differ diff --git a/katex/fonts/KaTeX_AMS-Regular.ttf b/katex/fonts/KaTeX_AMS-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8da3d446e8479fc9355fde40aabd20f126554b4d Binary files /dev/null and b/katex/fonts/KaTeX_AMS-Regular.ttf differ diff --git a/katex/fonts/KaTeX_AMS-Regular.woff b/katex/fonts/KaTeX_AMS-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f8934ec028acc87911c37d2e27d6fbe8f7c4e955 Binary files /dev/null and b/katex/fonts/KaTeX_AMS-Regular.woff differ diff --git a/katex/fonts/KaTeX_AMS-Regular.woff2 b/katex/fonts/KaTeX_AMS-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64bdd82f93a86354e48ec41999dcebf4d86e1b23 Binary files /dev/null and b/katex/fonts/KaTeX_AMS-Regular.woff2 differ diff --git a/katex/fonts/KaTeX_Main-Bold.eot b/katex/fonts/KaTeX_Main-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..0cd6d11537387155349ac6a51f92fc2722a5ae49 Binary files /dev/null and b/katex/fonts/KaTeX_Main-Bold.eot differ diff --git a/katex/fonts/KaTeX_Main-Bold.ttf b/katex/fonts/KaTeX_Main-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f7956abdc82a7ef17b611170fbd359b9b046eb7c Binary files /dev/null and b/katex/fonts/KaTeX_Main-Bold.ttf differ diff --git a/katex/fonts/KaTeX_Main-Bold.woff b/katex/fonts/KaTeX_Main-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..f6eb23155bde1140aeea865695306c43d600ae0a Binary files /dev/null and b/katex/fonts/KaTeX_Main-Bold.woff differ diff --git a/katex/fonts/KaTeX_Main-Bold.woff2 b/katex/fonts/KaTeX_Main-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..994f3de51613a502dc5d3881afcca5e8f4696387 Binary files /dev/null and b/katex/fonts/KaTeX_Main-Bold.woff2 differ diff --git a/katex/fonts/KaTeX_Main-Italic.eot b/katex/fonts/KaTeX_Main-Italic.eot new file mode 100644 index 0000000000000000000000000000000000000000..693bdf71b7d742de6a8baa1811610e46101b7eab Binary files /dev/null and b/katex/fonts/KaTeX_Main-Italic.eot differ diff --git a/katex/fonts/KaTeX_Main-Italic.ttf b/katex/fonts/KaTeX_Main-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0d00c60bf478e7aea7a781baed40923afce4227e Binary files /dev/null and b/katex/fonts/KaTeX_Main-Italic.ttf differ diff --git a/katex/fonts/KaTeX_Main-Italic.woff b/katex/fonts/KaTeX_Main-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..43126b31ccbc605eb7c8e69ae7659e0cc0698044 Binary files /dev/null and b/katex/fonts/KaTeX_Main-Italic.woff differ diff --git a/katex/fonts/KaTeX_Main-Italic.woff2 b/katex/fonts/KaTeX_Main-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..343057396d94c6290a80315039dda96723b84695 Binary files /dev/null and b/katex/fonts/KaTeX_Main-Italic.woff2 differ diff --git a/katex/fonts/KaTeX_Main-Regular.eot b/katex/fonts/KaTeX_Main-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..bd59c8896ee81972cc339fcc3778c7b8b6d582fb Binary files /dev/null and b/katex/fonts/KaTeX_Main-Regular.eot differ diff --git a/katex/fonts/KaTeX_Main-Regular.ttf b/katex/fonts/KaTeX_Main-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6f3cdca77d1347956b07d87876a74cfa7efccaf5 Binary files /dev/null and b/katex/fonts/KaTeX_Main-Regular.ttf differ diff --git a/katex/fonts/KaTeX_Main-Regular.woff b/katex/fonts/KaTeX_Main-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..57e7f4b7e26c9421520f50c93949c124b0200745 Binary files /dev/null and b/katex/fonts/KaTeX_Main-Regular.woff differ diff --git a/katex/fonts/KaTeX_Main-Regular.woff2 b/katex/fonts/KaTeX_Main-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8c98320f9c8a56283113a3bd98f0607cf0b70dfc Binary files /dev/null and b/katex/fonts/KaTeX_Main-Regular.woff2 differ diff --git a/katex/fonts/KaTeX_Math-BoldItalic.eot b/katex/fonts/KaTeX_Math-BoldItalic.eot new file mode 100644 index 0000000000000000000000000000000000000000..7705bfced38e51b50688c89a39c94271776f16a2 Binary files /dev/null and b/katex/fonts/KaTeX_Math-BoldItalic.eot differ diff --git a/katex/fonts/KaTeX_Math-BoldItalic.ttf b/katex/fonts/KaTeX_Math-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ab60f80c4566613bec79ef9133225ef24d6e151e Binary files /dev/null and b/katex/fonts/KaTeX_Math-BoldItalic.ttf differ diff --git a/katex/fonts/KaTeX_Math-BoldItalic.woff b/katex/fonts/KaTeX_Math-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..f5dee4e005a2b1fcdb77e8142138789862d1b590 Binary files /dev/null and b/katex/fonts/KaTeX_Math-BoldItalic.woff differ diff --git a/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/katex/fonts/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bfe677c1a5c9a7d2b421090ddad9aff24e8fd085 Binary files /dev/null and b/katex/fonts/KaTeX_Math-BoldItalic.woff2 differ diff --git a/katex/fonts/KaTeX_Math-Italic.eot b/katex/fonts/KaTeX_Math-Italic.eot new file mode 100644 index 0000000000000000000000000000000000000000..fc9bf197a2782fbe192486b2d745b88e53f1b1d5 Binary files /dev/null and b/katex/fonts/KaTeX_Math-Italic.eot differ diff --git a/katex/fonts/KaTeX_Math-Italic.ttf b/katex/fonts/KaTeX_Math-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a4078ea011711d50bd943c3e3b399fa1d48d5c24 Binary files /dev/null and b/katex/fonts/KaTeX_Math-Italic.ttf differ diff --git a/katex/fonts/KaTeX_Math-Italic.woff b/katex/fonts/KaTeX_Math-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..fc21e64e5af02fd24e0c81d2f5db05b18e694011 Binary files /dev/null and b/katex/fonts/KaTeX_Math-Italic.woff differ diff --git a/katex/fonts/KaTeX_Math-Italic.woff2 b/katex/fonts/KaTeX_Math-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0ef8a1e8ea466e389403db9a8df5838b042e9fb7 Binary files /dev/null and b/katex/fonts/KaTeX_Math-Italic.woff2 differ diff --git a/katex/fonts/KaTeX_Math-Regular.eot b/katex/fonts/KaTeX_Math-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..14b0c2aa6199f978413a693dc169f307530797d7 Binary files /dev/null and b/katex/fonts/KaTeX_Math-Regular.eot differ diff --git a/katex/fonts/KaTeX_Math-Regular.ttf b/katex/fonts/KaTeX_Math-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f2561022f90b3f07f72833f1cf053a753f1f3141 Binary files /dev/null and b/katex/fonts/KaTeX_Math-Regular.ttf differ diff --git a/katex/fonts/KaTeX_Math-Regular.woff b/katex/fonts/KaTeX_Math-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..847ba376c83209432cd54ed55b6d2107a4b4fbee Binary files /dev/null and b/katex/fonts/KaTeX_Math-Regular.woff differ diff --git a/katex/fonts/KaTeX_Math-Regular.woff2 b/katex/fonts/KaTeX_Math-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..24b63d8a6766f28d7bb9bff8409104978ed7a3ee Binary files /dev/null and b/katex/fonts/KaTeX_Math-Regular.woff2 differ diff --git a/katex/fonts/KaTeX_Size1-Regular.eot b/katex/fonts/KaTeX_Size1-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..0a581e8a04c3a9c58226ce09911dec5296ddfe81 Binary files /dev/null and b/katex/fonts/KaTeX_Size1-Regular.eot differ diff --git a/katex/fonts/KaTeX_Size1-Regular.ttf b/katex/fonts/KaTeX_Size1-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2fb653bc1f050de5b545868408643a01a278336a Binary files /dev/null and b/katex/fonts/KaTeX_Size1-Regular.ttf differ diff --git a/katex/fonts/KaTeX_Size1-Regular.woff b/katex/fonts/KaTeX_Size1-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..359a8640088e5e6a3aa562edfcf025bbc206f331 Binary files /dev/null and b/katex/fonts/KaTeX_Size1-Regular.woff differ diff --git a/katex/fonts/KaTeX_Size1-Regular.woff2 b/katex/fonts/KaTeX_Size1-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..764c9335a0b00449aa1b21b58b875e5c2daab77f Binary files /dev/null and b/katex/fonts/KaTeX_Size1-Regular.woff2 differ diff --git a/katex/fonts/KaTeX_Size2-Regular.eot b/katex/fonts/KaTeX_Size2-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..8af663865e46e160b3e9d9c5cc44f3f0f3b53422 Binary files /dev/null and b/katex/fonts/KaTeX_Size2-Regular.eot differ diff --git a/katex/fonts/KaTeX_Size2-Regular.ttf b/katex/fonts/KaTeX_Size2-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..285203470abc10c6176b9ffb7fc133f1caf58910 Binary files /dev/null and b/katex/fonts/KaTeX_Size2-Regular.ttf differ diff --git a/katex/fonts/KaTeX_Size2-Regular.woff b/katex/fonts/KaTeX_Size2-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..d97cabc792e0c5916cd8bab4eb16b52af5608141 Binary files /dev/null and b/katex/fonts/KaTeX_Size2-Regular.woff differ diff --git a/katex/fonts/KaTeX_Size2-Regular.woff2 b/katex/fonts/KaTeX_Size2-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a51a1fdbb36ca557e010d81a1fc1114da4a8df94 Binary files /dev/null and b/katex/fonts/KaTeX_Size2-Regular.woff2 differ diff --git a/katex/fonts/KaTeX_Size3-Regular.eot b/katex/fonts/KaTeX_Size3-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..5c179834bb2405135c9a03b5e0702ec7664cb7ea Binary files /dev/null and b/katex/fonts/KaTeX_Size3-Regular.eot differ diff --git a/katex/fonts/KaTeX_Size3-Regular.ttf b/katex/fonts/KaTeX_Size3-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..61df9a369469501d9bd1d0dec69ee7329939bd42 Binary files /dev/null and b/katex/fonts/KaTeX_Size3-Regular.ttf differ diff --git a/katex/fonts/KaTeX_Size3-Regular.woff b/katex/fonts/KaTeX_Size3-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..7fd7bbaaacff78ed7f2fcbaa08f344be9fc81deb Binary files /dev/null and b/katex/fonts/KaTeX_Size3-Regular.woff differ diff --git a/katex/fonts/KaTeX_Size3-Regular.woff2 b/katex/fonts/KaTeX_Size3-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4a4ba33a4d49e9665ae08f8b48993ab4e2203a6e Binary files /dev/null and b/katex/fonts/KaTeX_Size3-Regular.woff2 differ diff --git a/katex/fonts/KaTeX_Size4-Regular.eot b/katex/fonts/KaTeX_Size4-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..373416210e197d899ecc3ddf07a88008a1bd19ed Binary files /dev/null and b/katex/fonts/KaTeX_Size4-Regular.eot differ diff --git a/katex/fonts/KaTeX_Size4-Regular.ttf b/katex/fonts/KaTeX_Size4-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..42326180d8f61a973f498f6481bd03c5f5196b91 Binary files /dev/null and b/katex/fonts/KaTeX_Size4-Regular.ttf differ diff --git a/katex/fonts/KaTeX_Size4-Regular.woff b/katex/fonts/KaTeX_Size4-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..dd2cd183b6293c1c7cb760fe6b70856464fe7367 Binary files /dev/null and b/katex/fonts/KaTeX_Size4-Regular.woff differ diff --git a/katex/fonts/KaTeX_Size4-Regular.woff2 b/katex/fonts/KaTeX_Size4-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..14b0dc28063e3c405bf1b90bfbda4f272a7ae14d Binary files /dev/null and b/katex/fonts/KaTeX_Size4-Regular.woff2 differ diff --git a/katex/katex.min.css b/katex/katex.min.css new file mode 100644 index 0000000000000000000000000000000000000000..db26499df6ccb0e40f6a797e2ed9148e83a37d4f --- /dev/null +++ b/katex/katex.min.css @@ -0,0 +1 @@ +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('ttf');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('ttf');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('ttf');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('ttf');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.eot);src:url(fonts/KaTeX_Math-BoldItalic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-BoldItalic.woff2) format('woff2'),url(fonts/KaTeX_Math-BoldItalic.woff) format('woff'),url(fonts/KaTeX_Math-BoldItalic.ttf) format('ttf');font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('ttf');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Regular.eot);src:url(fonts/KaTeX_Math-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Regular.woff2) format('woff2'),url(fonts/KaTeX_Math-Regular.woff) format('woff'),url(fonts/KaTeX_Math-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Bold.eot);src:url(fonts/KaTeX_SansSerif-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Bold.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Bold.woff) format('woff'),url(fonts/KaTeX_SansSerif-Bold.ttf) format('ttf');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Italic.eot);src:url(fonts/KaTeX_SansSerif-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Italic.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Italic.woff) format('woff'),url(fonts/KaTeX_SansSerif-Italic.ttf) format('ttf');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('ttf');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block}math.katex{font-size:1.21em;line-height:1.2}.katex{font:400 1.21em KaTeX_Main;line-height:1.2;white-space:nowrap}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .amsrm{font-family:KaTeX_AMS}.katex .textstyle>.mord+.mop{margin-left:.16667em}.katex .textstyle>.mord+.mbin{margin-left:.22222em}.katex .textstyle>.mord+.mrel{margin-left:.27778em}.katex .textstyle>.mop+.mop,.katex .textstyle>.mop+.mord,.katex .textstyle>.mord+.minner{margin-left:.16667em}.katex .textstyle>.mop+.mrel{margin-left:.27778em}.katex .textstyle>.mop+.minner{margin-left:.16667em}.katex .textstyle>.mbin+.minner,.katex .textstyle>.mbin+.mop,.katex .textstyle>.mbin+.mopen,.katex .textstyle>.mbin+.mord{margin-left:.22222em}.katex .textstyle>.mrel+.minner,.katex .textstyle>.mrel+.mop,.katex .textstyle>.mrel+.mopen,.katex .textstyle>.mrel+.mord{margin-left:.27778em}.katex .textstyle>.mclose+.mop{margin-left:.16667em}.katex .textstyle>.mclose+.mbin{margin-left:.22222em}.katex .textstyle>.mclose+.mrel{margin-left:.27778em}.katex .textstyle>.mclose+.minner,.katex .textstyle>.minner+.mop,.katex .textstyle>.minner+.mord,.katex .textstyle>.mpunct+.mclose,.katex .textstyle>.mpunct+.minner,.katex .textstyle>.mpunct+.mop,.katex .textstyle>.mpunct+.mopen,.katex .textstyle>.mpunct+.mord,.katex .textstyle>.mpunct+.mpunct,.katex .textstyle>.mpunct+.mrel{margin-left:.16667em}.katex .textstyle>.minner+.mbin{margin-left:.22222em}.katex .textstyle>.minner+.mrel{margin-left:.27778em}.katex .mclose+.mop,.katex .minner+.mop,.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.mop,.katex .textstyle>.minner+.minner,.katex .textstyle>.minner+.mopen,.katex .textstyle>.minner+.mpunct{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.enspace{width:.5em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border-style:solid;position:relative}.katex .overline .overline-line{width:100%}.katex .overline .overline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em} \ No newline at end of file diff --git a/katex/katex.min.js b/katex/katex.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a9cb3e8e22131172a69015835148756342ca10d4 --- /dev/null +++ b/katex/katex.min.js @@ -0,0 +1,4 @@ +(function(e){if("function"==typeof bootstrap)bootstrap("katex",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeKatex=e}else"undefined"!=typeof window?window.katex=e():global.katex=e()})(function(){var e,t,i,h,a;return function r(e,t,i){function h(l,s){if(!t[l]){if(!e[l]){var p=typeof require=="function"&&require;if(!s&&p)return p(l,!0);if(a)return a(l,!0);throw new Error("Cannot find module '"+l+"'")}var c=t[l]={exports:{}};e[l][0].call(c.exports,function(t){var i=e[l][1][t];return h(i?i:t)},c,c.exports,r,e,t,i)}return t[l].exports}var a=typeof require=="function"&&require;for(var l=0;l<i.length;l++)h(i[l]);return h}({1:[function(e,t,i){var h=e("./src/ParseError");var a=e("./src/Settings");var r=e("./src/buildTree");var l=e("./src/parseTree");var s=e("./src/utils");var p=function(e,t,i){s.clearNode(t);var h=new a(i);var p=l(e,h);var c=r(p,e,h).toNode();t.appendChild(c)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");p=function(){throw new h("KaTeX doesn't work in quirks mode.")}}}var c=function(e,t){var i=new a(t);var h=l(e,i);return r(h,e,i).toMarkup()};t.exports={render:p,renderToString:c,ParseError:h}},{"./src/ParseError":4,"./src/Settings":6,"./src/buildTree":11,"./src/parseTree":17,"./src/utils":19}],2:[function(e,t,i){var h=e("./ParseError");function a(e){this._input=e}function r(e,t,i){this.text=e;this.data=t;this.position=i}var l=[/^[/|@.""`0-9a-zA-Z]/,/^[*+-]/,/^[=<>:]/,/^[,;]/,/^['\^_{}]/,/^[(\[]/,/^[)\]?!]/,/^~/];var s=[/^[a-zA-Z0-9`!@*()-=+\[\]'";:?\/.,]/,/^[{}]/,/^~/];var p=/^\s*/;var c=/^( +|\\ +)/;var o=/^\\(?:[a-zA-Z]+|.)/;a.prototype._innerLex=function(e,t,i){var a=this._input.slice(e);var l;if(i){l=a.match(p)[0];e+=l.length;a=a.slice(l.length)}else{l=a.match(c);if(l!==null){return new r(" ",null,e+l[0].length)}}if(a.length===0){return new r("EOF",null,e)}var s;if(s=a.match(o)){return new r(s[0],null,e+s[0].length)}else{for(var n=0;n<t.length;n++){var g=t[n];if(s=a.match(g)){return new r(s[0],null,e+s[0].length)}}}throw new h("Unexpected character: '"+a[0]+"'",this,e)};var n=/^(#[a-z0-9]+|[a-z]+)/i;a.prototype._innerLexColor=function(e){var t=this._input.slice(e);var i=t.match(p)[0];e+=i.length;t=t.slice(i.length);var a;if(a=t.match(n)){return new r(a[0],null,e+a[0].length)}else{throw new h("Invalid color",this,e)}};var g=/^(-?)\s*(\d+(?:\.\d*)?|\.\d+)\s*([a-z]{2})/;a.prototype._innerLexSize=function(e){var t=this._input.slice(e);var i=t.match(p)[0];e+=i.length;t=t.slice(i.length);var a;if(a=t.match(g)){var l=a[3];if(l!=="em"&&l!=="ex"){throw new h("Invalid unit: '"+l+"'",this,e)}return new r(a[0],{number:+(a[1]+a[2]),unit:l},e+a[0].length)}throw new h("Invalid size",this,e)};a.prototype._innerLexWhitespace=function(e){var t=this._input.slice(e);var i=t.match(p)[0];e+=i.length;return new r(i,null,e)};a.prototype.lex=function(e,t){if(t==="math"){return this._innerLex(e,l,true)}else if(t==="text"){return this._innerLex(e,s,false)}else if(t==="color"){return this._innerLexColor(e)}else if(t==="size"){return this._innerLexSize(e)}else if(t==="whitespace"){return this._innerLexWhitespace(e)}};t.exports=a},{"./ParseError":4}],3:[function(e,t,i){function h(e,t,i,h,a){this.style=e;this.color=i;this.size=t;if(h===undefined){h=e}this.parentStyle=h;if(a===undefined){a=t}this.parentSize=a}h.prototype.withStyle=function(e){return new h(e,this.size,this.color,this.style,this.size)};h.prototype.withSize=function(e){return new h(this.style,e,this.color,this.style,this.size)};h.prototype.withColor=function(e){return new h(this.style,this.size,e,this.style,this.size)};h.prototype.reset=function(){return new h(this.style,this.size,this.color,this.style,this.size)};var a={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd"};h.prototype.getColor=function(){return a[this.color]||this.color};t.exports=h},{}],4:[function(e,t,i){function h(e,t,i){var a="KaTeX parse error: "+e;if(t!==undefined&&i!==undefined){a+=" at position "+i+": ";var r=t._input;r=r.slice(0,i)+"\u0332"+r.slice(i);var l=Math.max(0,i-15);var s=i+15;a+=r.slice(l,s)}var p=new Error(a);p.name="ParseError";p.__proto__=h.prototype;p.position=i;return p}h.prototype.__proto__=Error.prototype;t.exports=h},{}],5:[function(e,t,i){var h=e("./functions");var a=e("./Lexer");var r=e("./symbols");var l=e("./utils");var s=e("./ParseError");function p(e,t){this.lexer=new a(e);this.settings=t}function c(e,t,i){this.type=e;this.value=t;this.mode=i}function o(e,t){this.result=e;this.position=t}function n(e,t){this.result=e;this.isFunction=t}p.prototype.expect=function(e,t){if(e.text!==t){throw new s("Expected '"+t+"', got '"+e.text+"'",this.lexer,e.position)}};p.prototype.parse=function(e){var t=this.parseInput(0,"math");return t.result};p.prototype.parseInput=function(e,t){var i=this.parseExpression(e,t,false,null);var h=this.lexer.lex(i.position,t);this.expect(h,"EOF");return i};p.prototype.parseExpression=function(e,t,i,h){var a=[];while(true){var r=this.lexer.lex(e,t);if(h!=null&&r.text===h){break}var l=this.parseAtom(e,t);if(!l){break}if(i&&l.result.type==="infix"){break}a.push(l.result);e=l.position}return new o(this.handleInfixNodes(a,t),e)};p.prototype.handleInfixNodes=function(e,t){var i=-1;var a;var r;for(var l=0;l<e.length;l++){var p=e[l];if(p.type==="infix"){if(i!==-1){throw new s("only one infix operator per group",this.lexer,-1)}i=l;r=p.value.replaceWith;a=h.funcs[r]}}if(i!==-1){var o,n;var g=e.slice(0,i);var d=e.slice(i+1);if(g.length===1&&g[0].type==="ordgroup"){o=g[0]}else{o=new c("ordgroup",g,t)}if(d.length===1&&d[0].type==="ordgroup"){n=d[0]}else{n=new c("ordgroup",d,t)}var u=a.handler(r,o,n);return[new c(u.type,u,t)]}else{return e}};var g=1;p.prototype.handleSupSubscript=function(e,t,i,a){var r=this.parseGroup(e,t);if(!r){throw new s("Expected group after '"+i+"'",this.lexer,e)}else if(r.isFunction){var l=h.funcs[r.result.result].greediness;if(l>g){return this.parseFunction(e,t)}else{throw new s("Got function '"+r.result.result+"' with no arguments "+"as "+a,this.lexer,e)}}else{return r.result}};p.prototype.parseAtom=function(e,t){var i=this.parseImplicitGroup(e,t);if(t==="text"){return i}var h;if(!i){h=e;i=undefined}else{h=i.position}var a;var r;var l;while(true){var p=this.lexer.lex(h,t);if(p.text==="^"){if(a){throw new s("Double superscript",this.lexer,h)}l=this.handleSupSubscript(p.position,t,p.text,"superscript");h=l.position;a=l.result}else if(p.text==="_"){if(r){throw new s("Double subscript",this.lexer,h)}l=this.handleSupSubscript(p.position,t,p.text,"subscript");h=l.position;r=l.result}else if(p.text==="'"){var n=new c("textord","\\prime",t);var g=[n];h=p.position;while((p=this.lexer.lex(h,t)).text==="'"){g.push(n);h=p.position}a=new c("ordgroup",g,t)}else{break}}if(a||r){return new o(new c("supsub",{base:i&&i.result,sup:a,sub:r},t),h)}else{return i}};var d=["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];var u=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];p.prototype.parseImplicitGroup=function(e,t){var i=this.parseSymbol(e,t);if(!i||!i.result){return this.parseFunction(e,t)}var h=i.result.result;var a;if(h==="\\left"){var r=this.parseFunction(e,t);a=this.parseExpression(r.position,t,false,"}");var p=this.parseSymbol(a.position,t);if(p&&p.result.result==="\\right"){var n=this.parseFunction(a.position,t);return new o(new c("leftright",{body:a.result,left:r.result.value.value,right:n.result.value.value},t),n.position)}else{throw new s("Missing \\right",this.lexer,a.position)}}else if(h==="\\right"){return null}else if(l.contains(d,h)){a=this.parseExpression(i.result.position,t,false,"}");return new o(new c("sizing",{size:"size"+(l.indexOf(d,h)+1),value:a.result},t),a.position)}else if(l.contains(u,h)){a=this.parseExpression(i.result.position,t,true,"}");return new o(new c("styling",{style:h.slice(1,h.length-5),value:a.result},t),a.position)}else{return this.parseFunction(e,t)}};p.prototype.parseFunction=function(e,t){var i=this.parseGroup(e,t);if(i){if(i.isFunction){var a=i.result.result;var r=h.funcs[a];if(t==="text"&&!r.allowedInText){throw new s("Can't use function '"+a+"' in text mode",this.lexer,i.position)}var l=i.result.position;var p;var n=r.numArgs+r.numOptionalArgs;if(n>0){var g=r.greediness;var d=[a];var u=[l];for(var w=0;w<n;w++){var k=r.argTypes&&r.argTypes[w];var m;if(w<r.numOptionalArgs){if(k){m=this.parseSpecialGroup(l,k,t,true)}else{m=this.parseOptionalGroup(l,t)}if(!m){d.push(null);u.push(l);continue}}else{if(k){m=this.parseSpecialGroup(l,k,t)}else{m=this.parseGroup(l,t)}if(!m){throw new s("Expected group after '"+i.result.result+"'",this.lexer,l)}}var f;if(m.isFunction){var v=h.funcs[m.result.result].greediness;if(v>g){f=this.parseFunction(l,t)}else{throw new s("Got function '"+m.result.result+"' as "+"argument to function '"+i.result.result+"'",this.lexer,m.result.position-1)}}else{f=m.result}d.push(f.result);u.push(f.position);l=f.position}d.push(u);p=h.funcs[a].handler.apply(this,d)}else{p=h.funcs[a].handler.apply(this,[a])}return new o(new c(p.type,p,t),l)}else{return i.result}}else{return null}};p.prototype.parseSpecialGroup=function(e,t,i,h){if(t==="original"){t=i}if(t==="color"||t==="size"){var a=this.lexer.lex(e,i);if(h&&a.text!=="["){return null}this.expect(a,h?"[":"{");var r=this.lexer.lex(a.position,t);var l;if(t==="color"){l=r.text}else{l=r.data}var s=this.lexer.lex(r.position,i);this.expect(s,h?"]":"}");return new n(new o(new c(t,l,i),s.position),false)}else if(t==="text"){var p=this.lexer.lex(e,"whitespace");e=p.position}if(h){return this.parseOptionalGroup(e,t)}else{return this.parseGroup(e,t)}};p.prototype.parseGroup=function(e,t){var i=this.lexer.lex(e,t);if(i.text==="{"){var h=this.parseExpression(i.position,t,false,"}");var a=this.lexer.lex(h.position,t);this.expect(a,"}");return new n(new o(new c("ordgroup",h.result,t),a.position),false)}else{return this.parseSymbol(e,t)}};p.prototype.parseOptionalGroup=function(e,t){var i=this.lexer.lex(e,t);if(i.text==="["){var h=this.parseExpression(i.position,t,false,"]");var a=this.lexer.lex(h.position,t);this.expect(a,"]");return new n(new o(new c("ordgroup",h.result,t),a.position),false)}else{return null}};p.prototype.parseSymbol=function(e,t){var i=this.lexer.lex(e,t);if(h.funcs[i.text]){return new n(new o(i.text,i.position),true)}else if(r[t][i.text]){return new n(new o(new c(r[t][i.text].group,i.text,t),i.position),false)}else{return null}};t.exports=p},{"./Lexer":2,"./ParseError":4,"./functions":15,"./symbols":18,"./utils":19}],6:[function(e,t,i){function h(e,t){return e===undefined?t:e}function a(e){e=e||{};this.displayMode=h(e.displayMode,false)}t.exports=a},{}],7:[function(e,t,i){function h(e,t,i,h){this.id=e;this.size=t;this.cramped=h;this.sizeMultiplier=i}h.prototype.sup=function(){return u[w[this.id]]};h.prototype.sub=function(){return u[k[this.id]]};h.prototype.fracNum=function(){return u[m[this.id]]};h.prototype.fracDen=function(){return u[f[this.id]]};h.prototype.cramp=function(){return u[v[this.id]]};h.prototype.cls=function(){return g[this.size]+(this.cramped?" cramped":" uncramped")};h.prototype.reset=function(){return d[this.size]};var a=0;var r=1;var l=2;var s=3;var p=4;var c=5;var o=6;var n=7;var g=["displaystyle textstyle","textstyle","scriptstyle","scriptscriptstyle"];var d=["reset-textstyle","reset-textstyle","reset-scriptstyle","reset-scriptscriptstyle"];var u=[new h(a,0,1,false),new h(r,0,1,true),new h(l,1,1,false),new h(s,1,1,true),new h(p,2,.7,false),new h(c,2,.7,true),new h(o,3,.5,false),new h(n,3,.5,true)];var w=[p,c,p,c,o,n,o,n];var k=[c,c,c,c,n,n,n,n];var m=[l,s,p,c,o,n,o,n];var f=[s,s,c,c,n,n,n,n];var v=[r,r,s,s,c,c,n,n];t.exports={DISPLAY:u[a],TEXT:u[l],SCRIPT:u[p],SCRIPTSCRIPT:u[o]}},{}],8:[function(e,t,i){var h=e("./domTree");var a=e("./fontMetrics");var r=e("./symbols");var l=function(e,t,i,l,s){if(r[i][e]&&r[i][e].replace){e=r[i][e].replace}var p=a.getCharacterMetrics(e,t);var c;if(p){c=new h.symbolNode(e,p.height,p.depth,p.italic,p.skew,s)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+e+"' in style '"+t+"'");c=new h.symbolNode(e,0,0,0,0,s)}if(l){c.style.color=l}return c};var s=function(e,t,i,h){return l(e,"Math-Italic",t,i,h.concat(["mathit"]))};var p=function(e,t,i,h){if(r[t][e].font==="main"){return l(e,"Main-Regular",t,i,h)}else{return l(e,"AMS-Regular",t,i,h.concat(["amsrm"]))}};var c=function(e){var t=0;var i=0;var h=0;if(e.children){for(var a=0;a<e.children.length;a++){if(e.children[a].height>t){t=e.children[a].height}if(e.children[a].depth>i){i=e.children[a].depth}if(e.children[a].maxFontSize>h){h=e.children[a].maxFontSize}}}e.height=t;e.depth=i;e.maxFontSize=h};var o=function(e,t,i){var a=new h.span(e,t);c(a);if(i){a.style.color=i}return a};var n=function(e){var t=new h.documentFragment(e);c(t);return t};var g=function(e,t){var i=o([],[new h.symbolNode("\u200b")]);i.style.fontSize=t/e.style.sizeMultiplier+"em";var a=o(["fontsize-ensurer","reset-"+e.size,"size5"],[i]);return a};var d=function(e,t,i,a){var r;var l;var s;if(t==="individualShift"){var p=e;e=[p[0]];r=-p[0].shift-p[0].elem.depth;l=r;for(s=1;s<p.length;s++){var c=-p[s].shift-l-p[s].elem.depth;var n=c-(p[s-1].elem.height+p[s-1].elem.depth);l=l+c;e.push({type:"kern",size:n});e.push(p[s])}}else if(t==="top"){var d=i;for(s=0;s<e.length;s++){if(e[s].type==="kern"){d-=e[s].size}else{d-=e[s].elem.height+e[s].elem.depth}}r=d}else if(t==="bottom"){r=-i}else if(t==="shift"){r=-e[0].elem.depth-i}else if(t==="firstBaseline"){r=-e[0].elem.depth}else{r=0}var u=0;for(s=0;s<e.length;s++){if(e[s].type==="elem"){u=Math.max(u,e[s].elem.maxFontSize)}}var w=g(a,u);var k=[];l=r;for(s=0;s<e.length;s++){if(e[s].type==="kern"){l+=e[s].size}else{var m=e[s].elem;var f=-m.depth-l;l+=m.height+m.depth;var v=o([],[w,m]);v.height-=f;v.depth+=f;v.style.top=f+"em";k.push(v)}}var y=o(["baseline-fix"],[w,new h.symbolNode("\u200b")]);k.push(y);var b=o(["vlist"],k);b.height=Math.max(l,b.height);b.depth=Math.max(-r,b.depth);return b};var u={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var w={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};t.exports={makeSymbol:l,mathit:s,mathrm:p,makeSpan:o,makeFragment:n,makeVList:d,sizingMultiplier:u,spacingFunctions:w}},{"./domTree":13,"./fontMetrics":14,"./symbols":18}],9:[function(e,t,i){var h=e("./Options");var a=e("./ParseError");var r=e("./Style");var l=e("./buildCommon");var s=e("./delimiter");var p=e("./domTree");var c=e("./fontMetrics");var o=e("./utils");var n=l.makeSpan;var g=function(e,t,i){var h=[];for(var a=0;a<e.length;a++){var r=e[a];h.push(v(r,t,i));i=r}return h};var d={mathord:"mord",textord:"mord",bin:"mbin",rel:"mrel",text:"mord",open:"mopen",close:"mclose",inner:"minner",genfrac:"minner",spacing:"mord",punct:"mpunct",ordgroup:"mord",op:"mop",katex:"mord",overline:"mord",rule:"mord",leftright:"minner",sqrt:"mord",accent:"mord"};var u=function(e){if(e==null){return d.mathord}else if(e.type==="supsub"){return u(e.value.base)}else if(e.type==="llap"||e.type==="rlap"){return u(e.value)}else if(e.type==="color"){return u(e.value.value)}else if(e.type==="sizing"){return u(e.value.value)}else if(e.type==="styling"){return u(e.value.value)}else if(e.type==="delimsizing"){return d[e.value.delimType]}else{return d[e.type]}};var w=function(e,t){if(!e){return false}else if(e.type==="op"){return e.value.limits&&t.style.size===r.DISPLAY.size}else if(e.type==="accent"){return m(e.value.base)}else{return null}};var k=function(e){if(!e){return false}else if(e.type==="ordgroup"){if(e.value.length===1){return k(e.value[0])}else{return e}}else if(e.type==="color"){if(e.value.value.length===1){return k(e.value.value[0])}else{return e}}else{return e}};var m=function(e){var t=k(e);return t.type==="mathord"||t.type==="textord"||t.type==="bin"||t.type==="rel"||t.type==="inner"||t.type==="open"||t.type==="close"||t.type==="punct"};var f={mathord:function(e,t,i){return l.mathit(e.value,e.mode,t.getColor(),["mord"])},textord:function(e,t,i){return l.mathrm(e.value,e.mode,t.getColor(),["mord"])},bin:function(e,t,i){var h="mbin";var a=i;while(a&&a.type=="color"){var r=a.value.value;a=r[r.length-1]}if(!i||o.contains(["mbin","mopen","mrel","mop","mpunct"],u(a))){e.type="textord";h="mord"}return l.mathrm(e.value,e.mode,t.getColor(),[h])},rel:function(e,t,i){return l.mathrm(e.value,e.mode,t.getColor(),["mrel"])},open:function(e,t,i){return l.mathrm(e.value,e.mode,t.getColor(),["mopen"])},close:function(e,t,i){return l.mathrm(e.value,e.mode,t.getColor(),["mclose"])},inner:function(e,t,i){return l.mathrm(e.value,e.mode,t.getColor(),["minner"])},punct:function(e,t,i){return l.mathrm(e.value,e.mode,t.getColor(),["mpunct"])},ordgroup:function(e,t,i){return n(["mord",t.style.cls()],g(e.value,t.reset()))},text:function(e,t,i){return n(["text","mord",t.style.cls()],g(e.value.body,t.reset()))},color:function(e,t,i){var h=g(e.value.value,t.withColor(e.value.color),i);return new l.makeFragment(h)},supsub:function(e,t,i){if(w(e.value.base,t)){return f[e.value.base.type](e,t,i)}var h=v(e.value.base,t.reset());var a,s,o,g;if(e.value.sup){o=v(e.value.sup,t.withStyle(t.style.sup()));a=n([t.style.reset(),t.style.sup().cls()],[o])}if(e.value.sub){g=v(e.value.sub,t.withStyle(t.style.sub()));s=n([t.style.reset(),t.style.sub().cls()],[g])}var d,k;if(m(e.value.base)){d=0;k=0}else{d=h.height-c.metrics.supDrop;k=h.depth+c.metrics.subDrop}var y;if(t.style===r.DISPLAY){y=c.metrics.sup1}else if(t.style.cramped){y=c.metrics.sup3}else{y=c.metrics.sup2}var b=r.TEXT.sizeMultiplier*t.style.sizeMultiplier;var x=.5/c.metrics.ptPerEm/b+"em";var z;if(!e.value.sup){k=Math.max(k,c.metrics.sub1,g.height-.8*c.metrics.xHeight);z=l.makeVList([{type:"elem",elem:s}],"shift",k,t);z.children[0].style.marginRight=x;if(h instanceof p.symbolNode){z.children[0].style.marginLeft=-h.italic+"em"}}else if(!e.value.sub){d=Math.max(d,y,o.depth+.25*c.metrics.xHeight);z=l.makeVList([{type:"elem",elem:a}],"shift",-d,t);z.children[0].style.marginRight=x}else{d=Math.max(d,y,o.depth+.25*c.metrics.xHeight);k=Math.max(k,c.metrics.sub2);var S=c.metrics.defaultRuleThickness;if(d-o.depth-(g.height-k)<4*S){k=4*S-(d-o.depth)+g.height;var M=.8*c.metrics.xHeight-(d-o.depth);if(M>0){d+=M;k-=M}}z=l.makeVList([{type:"elem",elem:s,shift:k},{type:"elem",elem:a,shift:-d}],"individualShift",null,t);if(h instanceof p.symbolNode){z.children[0].style.marginLeft=-h.italic+"em"}z.children[0].style.marginRight=x;z.children[1].style.marginRight=x}return n([u(e.value.base)],[h,z])},genfrac:function(e,t,i){var h=t.style;if(e.value.size==="display"){h=r.DISPLAY}else if(e.value.size==="text"){h=r.TEXT}var a=h.fracNum();var p=h.fracDen();var o=v(e.value.numer,t.withStyle(a));var g=n([h.reset(),a.cls()],[o]);var d=v(e.value.denom,t.withStyle(p));var u=n([h.reset(),p.cls()],[d]);var w;if(e.value.hasBarLine){w=c.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{w=0}var k;var m;var f;if(h.size===r.DISPLAY.size){k=c.metrics.num1;if(w>0){m=3*w}else{m=7*c.metrics.defaultRuleThickness}f=c.metrics.denom1}else{if(w>0){k=c.metrics.num2;m=w}else{k=c.metrics.num3;m=3*c.metrics.defaultRuleThickness}f=c.metrics.denom2}var y;if(w===0){var b=k-o.depth-(d.height-f);if(b<m){k+=.5*(m-b);f+=.5*(m-b)}y=l.makeVList([{type:"elem",elem:u,shift:f},{type:"elem",elem:g,shift:-k}],"individualShift",null,t)}else{var x=c.metrics.axisHeight;if(k-o.depth-(x+.5*w)<m){k+=m-(k-o.depth-(x+.5*w))}if(x-.5*w-(d.height-f)<m){f+=m-(x-.5*w-(d.height-f))}var z=n([t.style.reset(),r.TEXT.cls(),"frac-line"]);z.height=w;var S=-(x-.5*w);y=l.makeVList([{type:"elem",elem:u,shift:f},{type:"elem",elem:z,shift:S},{type:"elem",elem:g,shift:-k}],"individualShift",null,t)}y.height*=h.sizeMultiplier/t.style.sizeMultiplier;y.depth*=h.sizeMultiplier/t.style.sizeMultiplier;var M=[n(["mfrac"],[y])];var q;if(h.size===r.DISPLAY.size){q=c.metrics.delim1}else{q=c.metrics.getDelim2(h)}if(e.value.leftDelim!=null){M.unshift(s.customSizedDelim(e.value.leftDelim,q,true,t.withStyle(h),e.mode))}if(e.value.rightDelim!=null){M.push(s.customSizedDelim(e.value.rightDelim,q,true,t.withStyle(h),e.mode))}return n(["minner",t.style.reset(),h.cls()],M,t.getColor())},spacing:function(e,t,i){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){return n(["mord","mspace"],[l.mathrm(e.value,e.mode)])}else{return n(["mord","mspace",l.spacingFunctions[e.value].className])}},llap:function(e,t,i){var h=n(["inner"],[v(e.value.body,t.reset())]);var a=n(["fix"],[]);return n(["llap",t.style.cls()],[h,a])},rlap:function(e,t,i){var h=n(["inner"],[v(e.value.body,t.reset())]);var a=n(["fix"],[]);return n(["rlap",t.style.cls()],[h,a])},op:function(e,t,i){var h;var a;var s=false;if(e.type==="supsub"){h=e.value.sup;a=e.value.sub;e=e.value.base;s=true}var p=["\\smallint"];var g=false;if(t.style.size===r.DISPLAY.size&&e.value.symbol&&!o.contains(p,e.value.body)){g=true}var d;var u=0;var w=0;if(e.value.symbol){var k=g?"Size2-Regular":"Size1-Regular";d=l.makeSymbol(e.value.body,k,"math",t.getColor(),["op-symbol",g?"large-op":"small-op","mop"]);u=(d.height-d.depth)/2-c.metrics.axisHeight*t.style.sizeMultiplier;w=d.italic}else{var m=[];for(var f=1;f<e.value.body.length;f++){m.push(l.mathrm(e.value.body[f],e.mode))}d=n(["mop"],m,t.getColor())}if(s){d=n([],[d]);var y,b,x,z;if(h){var S=v(h,t.withStyle(t.style.sup()));y=n([t.style.reset(),t.style.sup().cls()],[S]);b=Math.max(c.metrics.bigOpSpacing1,c.metrics.bigOpSpacing3-S.depth)}if(a){var M=v(a,t.withStyle(t.style.sub()));x=n([t.style.reset(),t.style.sub().cls()],[M]);z=Math.max(c.metrics.bigOpSpacing2,c.metrics.bigOpSpacing4-M.height)}var q,T,N;if(!h){T=d.height-u;q=l.makeVList([{type:"kern",size:c.metrics.bigOpSpacing5},{type:"elem",elem:x},{type:"kern",size:z},{type:"elem",elem:d}],"top",T,t);q.children[0].style.marginLeft=-w+"em"}else if(!a){N=d.depth+u;q=l.makeVList([{type:"elem",elem:d},{type:"kern",size:b},{type:"elem",elem:y},{type:"kern",size:c.metrics.bigOpSpacing5}],"bottom",N,t);q.children[1].style.marginLeft=w+"em"}else if(!h&&!a){return d}else{N=c.metrics.bigOpSpacing5+x.height+x.depth+z+d.depth+u;q=l.makeVList([{type:"kern",size:c.metrics.bigOpSpacing5},{type:"elem",elem:x},{type:"kern",size:z},{type:"elem",elem:d},{type:"kern",size:b},{type:"elem",elem:y},{type:"kern",size:c.metrics.bigOpSpacing5}],"bottom",N,t);q.children[0].style.marginLeft=-w+"em";q.children[2].style.marginLeft=w+"em"}return n(["mop","op-limits"],[q])}else{if(e.value.symbol){d.style.top=u+"em"}return d}},katex:function(e,t,i){var h=n(["k"],[l.mathrm("K",e.mode)]);var a=n(["a"],[l.mathrm("A",e.mode)]);a.height=(a.height+.2)*.75;a.depth=(a.height-.2)*.75;var r=n(["t"],[l.mathrm("T",e.mode)]);var s=n(["e"],[l.mathrm("E",e.mode)]);s.height=s.height-.2155;s.depth=s.depth+.2155;var p=n(["x"],[l.mathrm("X",e.mode)]);return n(["katex-logo"],[h,a,r,s,p],t.getColor())},overline:function(e,t,i){var h=v(e.value.body,t.withStyle(t.style.cramp()));var a=c.metrics.defaultRuleThickness/t.style.sizeMultiplier;var s=n([t.style.reset(),r.TEXT.cls(),"overline-line"]);s.height=a;s.maxFontSize=1;var p=l.makeVList([{type:"elem",elem:h},{type:"kern",size:3*a},{type:"elem",elem:s},{type:"kern",size:a}],"firstBaseline",null,t);return n(["overline","mord"],[p],t.getColor())},sqrt:function(e,t,i){var h=v(e.value.body,t.withStyle(t.style.cramp()));var a=c.metrics.defaultRuleThickness/t.style.sizeMultiplier;var p=n([t.style.reset(),r.TEXT.cls(),"sqrt-line"],[],t.getColor());p.height=a;p.maxFontSize=1;var o=a;if(t.style.id<r.TEXT.id){o=c.metrics.xHeight}var g=a+o/4;var d=(h.height+h.depth)*t.style.sizeMultiplier;var u=d+g+a;var w=n(["sqrt-sign"],[s.customSizedDelim("\\surd",u,false,t,e.mode)],t.getColor());var k=w.height+w.depth-a;if(k>h.height+h.depth+g){g=(g+k-h.height-h.depth)/2}var m=-(h.height+g+a)+w.height;w.style.top=m+"em";w.height-=m;w.depth+=m;var f;if(h.height===0&&h.depth===0){f=n()}else{f=l.makeVList([{type:"elem",elem:h},{type:"kern",size:g},{type:"elem",elem:p},{type:"kern",size:a}],"firstBaseline",null,t)}return n(["sqrt","mord"],[w,f])},sizing:function(e,t,i){var h=g(e.value.value,t.withSize(e.value.size),i);var a=n(["mord"],[n(["sizing","reset-"+t.size,e.value.size,t.style.cls()],h)]);var r=l.sizingMultiplier[e.value.size];a.maxFontSize=r*t.style.sizeMultiplier;return a},styling:function(e,t,i){var h={display:r.DISPLAY,text:r.TEXT,script:r.SCRIPT,scriptscript:r.SCRIPTSCRIPT};var a=h[e.value.style];var l=g(e.value.value,t.withStyle(a),i);return n([t.style.reset(),a.cls()],l)},delimsizing:function(e,t,i){var h=e.value.value;if(h==="."){return n([d[e.value.delimType]])}return n([d[e.value.delimType]],[s.sizedDelim(h,e.value.size,t,e.mode)])},leftright:function(e,t,i){var h=g(e.value.body,t.reset());var a=0;var r=0;for(var l=0;l<h.length;l++){a=Math.max(h[l].height,a);r=Math.max(h[l].depth,r)}a*=t.style.sizeMultiplier;r*=t.style.sizeMultiplier;var p;if(e.value.left==="."){p=n(["nulldelimiter"])}else{p=s.leftRightDelim(e.value.left,a,r,t,e.mode)}h.unshift(p);var c;if(e.value.right==="."){c=n(["nulldelimiter"])}else{c=s.leftRightDelim(e.value.right,a,r,t,e.mode)}h.push(c);return n(["minner",t.style.cls()],h,t.getColor())},rule:function(e,t,i){var h=n(["mord","rule"],[],t.getColor());var a=0;if(e.value.shift){a=e.value.shift.number;if(e.value.shift.unit==="ex"){a*=c.metrics.xHeight}}var r=e.value.width.number;if(e.value.width.unit==="ex"){r*=c.metrics.xHeight}var l=e.value.height.number;if(e.value.height.unit==="ex"){l*=c.metrics.xHeight}a/=t.style.sizeMultiplier;r/=t.style.sizeMultiplier;l/=t.style.sizeMultiplier;h.style.borderRightWidth=r+"em";h.style.borderTopWidth=l+"em";h.style.bottom=a+"em";h.width=r;h.height=l+a;h.depth=-a;return h},accent:function(e,t,i){var h=e.value.base;var a;if(e.type==="supsub"){var r=e;e=r.value.base;h=e.value.base;r.value.base=h;a=v(r,t.reset(),i)}var s=v(h,t.withStyle(t.style.cramp()));var p;if(m(h)){var o=k(h);var g=v(o,t.withStyle(t.style.cramp()));p=g.skew}else{p=0}var d=Math.min(s.height,c.metrics.xHeight);var u=l.makeSymbol(e.value.accent,"Main-Regular","math",t.getColor());u.italic=0;var w=e.value.accent==="\\vec"?"accent-vec":null;var f=n(["accent-body",w],[n([],[u])]);f=l.makeVList([{type:"elem",elem:s},{type:"kern",size:-d},{type:"elem",elem:f}],"firstBaseline",null,t);f.children[1].style.marginLeft=2*p+"em";var y=n(["mord","accent"],[f]);if(a){a.children[0]=y;a.height=Math.max(y.height,a.height);a.classes[0]="mord";return a}else{return y}}};var v=function(e,t,i){if(!e){return n()}if(f[e.type]){var h=f[e.type](e,t,i);var r;if(t.style!==t.parentStyle){r=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;h.height*=r;h.depth*=r}if(t.size!==t.parentSize){r=l.sizingMultiplier[t.size]/l.sizingMultiplier[t.parentSize];h.height*=r;h.depth*=r}return h}else{throw new a("Got group of unknown type: '"+e.type+"'")}};var y=function(e,t){var i=r.TEXT;if(t.displayMode){i=r.DISPLAY}var a=new h(i,"size5","");var l=g(e,a);var s=n(["base",a.style.cls()],l);var p=n(["strut"]);var c=n(["strut","bottom"]);p.style.height=s.height+"em";c.style.height=s.height+s.depth+"em";c.style.verticalAlign=-s.depth+"em";var o=n(["katex-html"],[p,c,s]);o.setAttribute("aria-hidden","true");return o};t.exports=y},{"./Options":3,"./ParseError":4,"./Style":7,"./buildCommon":8,"./delimiter":12,"./domTree":13,"./fontMetrics":14,"./utils":19}],10:[function(e,t,i){var h=e("./buildCommon");var a=e("./mathMLTree");var r=e("./ParseError");var l=e("./symbols");var s=h.makeSpan;var p=function(e,t){if(l[t][e]&&l[t][e].replace){e=l[t][e].replace}return new a.TextNode(e)};var c={mathord:function(e){var t=new a.MathNode("mi",[p(e.value,e.mode)]);return t},textord:function(e){var t=p(e.value,e.mode);var i;if(/[0-9]/.test(e.value)){i=new a.MathNode("mn",[t])}else{i=new a.MathNode("mi",[t]);i.setAttribute("mathvariant","normal")}return i},bin:function(e){var t=new a.MathNode("mo",[p(e.value,e.mode)]);return t},rel:function(e){var t=new a.MathNode("mo",[p(e.value,e.mode)]);return t},open:function(e){var t=new a.MathNode("mo",[p(e.value,e.mode)]);return t},close:function(e){var t=new a.MathNode("mo",[p(e.value,e.mode)]);return t},inner:function(e){var t=new a.MathNode("mo",[p(e.value,e.mode)]);return t},punct:function(e){var t=new a.MathNode("mo",[p(e.value,e.mode)]);t.setAttribute("separator","true");return t},ordgroup:function(e){var t=o(e.value);var i=new a.MathNode("mrow",t);return i},text:function(e){var t=o(e.value.body);var i=new a.MathNode("mtext",t);return i},color:function(e){var t=o(e.value.value);var i=new a.MathNode("mstyle",t);i.setAttribute("mathcolor",e.value.color);return i},supsub:function(e){var t=[n(e.value.base)];if(e.value.sub){t.push(n(e.value.sub))}if(e.value.sup){t.push(n(e.value.sup))}var i;if(!e.value.sub){i="msup"}else if(!e.value.sup){i="msub"}else{i="msubsup"}var h=new a.MathNode(i,t);return h},genfrac:function(e){var t=new a.MathNode("mfrac",[n(e.value.numer),n(e.value.denom)]);if(!e.value.hasBarLine){t.setAttribute("linethickness","0px")}if(e.value.leftDelim!=null||e.value.rightDelim!=null){var i=[];if(e.value.leftDelim!=null){var h=new a.MathNode("mo",[new a.TextNode(e.value.leftDelim)]);h.setAttribute("fence","true");i.push(h)}i.push(t);if(e.value.rightDelim!=null){var r=new a.MathNode("mo",[new a.TextNode(e.value.rightDelim)]);r.setAttribute("fence","true");i.push(r)}var l=new a.MathNode("mrow",i);return l}return t},sqrt:function(e){var t=new a.MathNode("msqrt",[n(e.value.body)]);return t},leftright:function(e){var t=o(e.value.body);if(e.value.left!=="."){var i=new a.MathNode("mo",[p(e.value.left,e.mode)]);i.setAttribute("fence","true");t.unshift(i)}if(e.value.right!=="."){var h=new a.MathNode("mo",[p(e.value.right,e.mode)]);h.setAttribute("fence","true");t.push(h)}var r=new a.MathNode("mrow",t);return r},accent:function(e){var t=new a.MathNode("mo",[p(e.value.accent,e.mode)]);var i=new a.MathNode("mover",[n(e.value.base),t]);i.setAttribute("accent","true");return i},spacing:function(e){var t;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new a.MathNode("mtext",[new a.TextNode("\xa0")])}else{t=new a.MathNode("mspace");t.setAttribute("width",h.spacingFunctions[e.value].size)}return t},op:function(e){var t;if(e.value.symbol){t=new a.MathNode("mo",[p(e.value.body,e.mode)])}else{t=new a.MathNode("mo",[new a.TextNode(e.value.body.slice(1))])}return t},katex:function(e){var t=new a.MathNode("mtext",[new a.TextNode("KaTeX")]);return t},delimsizing:function(e){var t=[];if(e.value.value!=="."){t.push(p(e.value.value,e.mode))}var i=new a.MathNode("mo",t);if(e.value.delimType==="open"||e.value.delimType==="close"){i.setAttribute("fence","true")}else{i.setAttribute("fence","false")}return i},styling:function(e){var t=o(e.value.value,t);var i=new a.MathNode("mstyle",t);var h={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var r=h[e.value.style];i.setAttribute("scriptlevel",r[0]);i.setAttribute("displaystyle",r[1]);return i},sizing:function(e){var t=o(e.value.value);var i=new a.MathNode("mstyle",t);i.setAttribute("mathsize",h.sizingMultiplier[e.value.size]+"em");return i},overline:function(e){var t=new a.MathNode("mo",[new a.TextNode("\u203e")]);t.setAttribute("stretchy","true");var i=new a.MathNode("mover",[n(e.value.body),t]);i.setAttribute("accent","true");return i},rule:function(e){var t=new a.MathNode("mrow");return t},llap:function(e){var t=new a.MathNode("mpadded",[n(e.value.body)]); +t.setAttribute("lspace","-1width");t.setAttribute("width","0px");return t},rlap:function(e){var t=new a.MathNode("mpadded",[n(e.value.body)]);t.setAttribute("width","0px");return t}};var o=function(e){var t=[];for(var i=0;i<e.length;i++){var h=e[i];t.push(n(h))}return t};var n=function(e){if(!e){return new a.MathNode("mrow")}if(c[e.type]){return c[e.type](e)}else{throw new r("Got group of unknown type: '"+e.type+"'")}};var g=function(e,t,i){var h=o(e);var r=new a.MathNode("mrow",h);var l=new a.MathNode("annotation",[new a.TextNode(t)]);l.setAttribute("encoding","application/x-tex");var p=new a.MathNode("semantics",[r,l]);var c=new a.MathNode("math",[p]);return s(["katex-mathml"],[c])};t.exports=g},{"./ParseError":4,"./buildCommon":8,"./mathMLTree":16,"./symbols":18}],11:[function(e,t,i){var h=e("./buildHTML");var a=e("./buildMathML");var r=e("./buildCommon");var l=r.makeSpan;var s=function(e,t,i){var r=a(e,t,i);var s=h(e,i);var p=l(["katex"],[r,s]);if(i.displayMode){return l(["katex-display"],[p])}else{return p}};t.exports=s},{"./buildCommon":8,"./buildHTML":9,"./buildMathML":10}],12:[function(e,t,i){var h=e("./ParseError");var a=e("./Style");var r=e("./buildCommon");var l=e("./fontMetrics");var s=e("./symbols");var p=e("./utils");var c=r.makeSpan;var o=function(e,t){if(s.math[e]&&s.math[e].replace){return l.getCharacterMetrics(s.math[e].replace,t)}else{return l.getCharacterMetrics(e,t)}};var n=function(e,t,i){return r.makeSymbol(e,"Size"+t+"-Regular",i)};var g=function(e,t,i){var h=c(["style-wrap",i.style.reset(),t.cls()],[e]);var a=t.sizeMultiplier/i.style.sizeMultiplier;h.height*=a;h.depth*=a;h.maxFontSize=t.sizeMultiplier;return h};var d=function(e,t,i,h,a){var s=r.makeSymbol(e,"Main-Regular",a);var p=g(s,t,h);if(i){var c=(1-h.style.sizeMultiplier/t.sizeMultiplier)*l.metrics.axisHeight;p.style.top=c+"em";p.height-=c;p.depth+=c}return p};var u=function(e,t,i,h,r){var s=n(e,t,r);var p=g(c(["delimsizing","size"+t],[s],h.getColor()),a.TEXT,h);if(i){var o=(1-h.style.sizeMultiplier)*l.metrics.axisHeight;p.style.top=o+"em";p.height-=o;p.depth+=o}return p};var w=function(e,t,i){var h;if(t==="Size1-Regular"){h="delim-size1"}else if(t==="Size4-Regular"){h="delim-size4"}var a=c(["delimsizinginner",h],[c([],[r.makeSymbol(e,t,i)])]);return{type:"elem",elem:a}};var k=function(e,t,i,h,s){var p,n,d,u;p=d=u=e;n=null;var k="Size1-Regular";if(e==="\\uparrow"){d=u="\u23d0"}else if(e==="\\Uparrow"){d=u="\u2016"}else if(e==="\\downarrow"){p=d="\u23d0"}else if(e==="\\Downarrow"){p=d="\u2016"}else if(e==="\\updownarrow"){p="\\uparrow";d="\u23d0";u="\\downarrow"}else if(e==="\\Updownarrow"){p="\\Uparrow";d="\u2016";u="\\Downarrow"}else if(e==="["||e==="\\lbrack"){p="\u23a1";d="\u23a2";u="\u23a3";k="Size4-Regular"}else if(e==="]"||e==="\\rbrack"){p="\u23a4";d="\u23a5";u="\u23a6";k="Size4-Regular"}else if(e==="\\lfloor"){d=p="\u23a2";u="\u23a3";k="Size4-Regular"}else if(e==="\\lceil"){p="\u23a1";d=u="\u23a2";k="Size4-Regular"}else if(e==="\\rfloor"){d=p="\u23a5";u="\u23a6";k="Size4-Regular"}else if(e==="\\rceil"){p="\u23a4";d=u="\u23a5";k="Size4-Regular"}else if(e==="("){p="\u239b";d="\u239c";u="\u239d";k="Size4-Regular"}else if(e===")"){p="\u239e";d="\u239f";u="\u23a0";k="Size4-Regular"}else if(e==="\\{"||e==="\\lbrace"){p="\u23a7";n="\u23a8";u="\u23a9";d="\u23aa";k="Size4-Regular"}else if(e==="\\}"||e==="\\rbrace"){p="\u23ab";n="\u23ac";u="\u23ad";d="\u23aa";k="Size4-Regular"}else if(e==="\\surd"){p="\ue001";u="\u23b7";d="\ue000";k="Size4-Regular"}var m=o(p,k);var f=m.height+m.depth;var v=o(d,k);var y=v.height+v.depth;var b=o(u,k);var x=b.height+b.depth;var z,S;if(n!==null){z=o(n,k);S=z.height+z.depth}var M=f+x;if(n!==null){M+=S}while(M<t){M+=y;if(n!==null){M+=y}}var q=l.metrics.axisHeight;if(i){q*=h.style.sizeMultiplier}var T=M/2-q;var N=[];N.push(w(u,k,s));var A;if(n===null){var R=M-f-x;var C=Math.ceil(R/y);for(A=0;A<C;A++){N.push(w(d,k,s))}}else{var L=M/2-f-S/2;var E=Math.ceil(L/y);var P=M/2-f-S/2;var D=Math.ceil(P/y);for(A=0;A<E;A++){N.push(w(d,k,s))}N.push(w(n,k,s));for(A=0;A<D;A++){N.push(w(d,k,s))}}N.push(w(p,k,s));var I=r.makeVList(N,"bottom",T,h);return g(c(["delimsizing","mult"],[I],h.getColor()),a.TEXT,h)};var m=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var f=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert"];var v=["<",">","\\langle","\\rangle","/","\\backslash"];var y=[0,1.2,1.8,2.4,3];var b=function(e,t,i,a){if(e==="<"){e="\\langle"}else if(e===">"){e="\\rangle"}if(p.contains(m,e)||p.contains(v,e)){return u(e,t,false,i,a)}else if(p.contains(f,e)){return k(e,y[t],false,i,a)}else{throw new h("Illegal delimiter: '"+e+"'")}};var x=[{type:"small",style:a.SCRIPTSCRIPT},{type:"small",style:a.SCRIPT},{type:"small",style:a.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var z=[{type:"small",style:a.SCRIPTSCRIPT},{type:"small",style:a.SCRIPT},{type:"small",style:a.TEXT},{type:"stack"}];var S=[{type:"small",style:a.SCRIPTSCRIPT},{type:"small",style:a.SCRIPT},{type:"small",style:a.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var M=function(e){if(e.type==="small"){return"Main-Regular"}else if(e.type==="large"){return"Size"+e.size+"-Regular"}else if(e.type==="stack"){return"Size4-Regular"}};var q=function(e,t,i,h){var a=Math.min(2,3-h.style.size);for(var r=a;r<i.length;r++){if(i[r].type==="stack"){break}var l=o(e,M(i[r]));var s=l.height+l.depth;if(i[r].type==="small"){s*=i[r].style.sizeMultiplier}if(s>t){return i[r]}}return i[i.length-1]};var T=function(e,t,i,h,a){if(e==="<"){e="\\langle"}else if(e===">"){e="\\rangle"}var r;if(p.contains(v,e)){r=x}else if(p.contains(m,e)){r=S}else{r=z}var l=q(e,t,r,h);if(l.type==="small"){return d(e,l.style,i,h,a)}else if(l.type==="large"){return u(e,l.size,i,h,a)}else if(l.type==="stack"){return k(e,t,i,h,a)}};var N=function(e,t,i,h,a){var r=l.metrics.axisHeight*h.style.sizeMultiplier;var s=901;var p=5/l.metrics.ptPerEm;var c=Math.max(t-r,i+r);var o=Math.max(c/500*s,2*c-p);return T(e,o,true,h,a)};t.exports={sizedDelim:b,customSizedDelim:T,leftRightDelim:N}},{"./ParseError":4,"./Style":7,"./buildCommon":8,"./fontMetrics":14,"./symbols":18,"./utils":19}],13:[function(e,t,i){var h=e("./utils");var a=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(" ")};function r(e,t,i,h,a,r){this.classes=e||[];this.children=t||[];this.height=i||0;this.depth=h||0;this.maxFontSize=a||0;this.style=r||{};this.attributes={}}r.prototype.setAttribute=function(e,t){this.attributes[e]=t};r.prototype.toNode=function(){var e=document.createElement("span");e.className=a(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var i in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,i)){e.setAttribute(i,this.attributes[i])}}for(var h=0;h<this.children.length;h++){e.appendChild(this.children[h].toNode())}return e};r.prototype.toMarkup=function(){var e="<span";if(this.classes.length){e+=' class="';e+=h.escape(a(this.classes));e+='"'}var t="";for(var i in this.style){if(this.style.hasOwnProperty(i)){t+=h.hyphenate(i)+":"+this.style[i]+";"}}if(t){e+=' style="'+h.escape(t)+'"'}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e+=" "+r+'="';e+=h.escape(this.attributes[r]);e+='"'}}e+=">";for(var l=0;l<this.children.length;l++){e+=this.children[l].toMarkup()}e+="</span>";return e};function l(e,t,i,h){this.children=e||[];this.height=t||0;this.depth=i||0;this.maxFontSize=h||0}l.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};l.prototype.toMarkup=function(){var e="";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};function s(e,t,i,h,a,r,l){this.value=e||"";this.height=t||0;this.depth=i||0;this.italic=h||0;this.skew=a||0;this.classes=r||[];this.style=l||{};this.maxFontSize=0}s.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement("span");t.style.marginRight=this.italic+"em"}if(this.classes.length>0){t=t||document.createElement("span");t.className=a(this.classes)}for(var i in this.style){if(this.style.hasOwnProperty(i)){t=t||document.createElement("span");t.style[i]=this.style[i]}}if(t){t.appendChild(e);return t}else{return e}};s.prototype.toMarkup=function(){var e=false;var t="<span";if(this.classes.length){e=true;t+=' class="';t+=h.escape(a(this.classes));t+='"'}var i="";if(this.italic>0){i+="margin-right:"+this.italic+"em;"}for(var r in this.style){if(this.style.hasOwnProperty(r)){i+=h.hyphenate(r)+":"+this.style[r]+";"}}if(i){e=true;t+=' style="'+h.escape(i)+'"'}var l=h.escape(this.value);if(e){t+=">";t+=l;t+="</span>";return t}else{return l}};t.exports={span:r,documentFragment:l,symbolNode:s}},{"./utils":19}],14:[function(e,t,i){var h=e("./Style");var a=.025;var r=0;var l=0;var s=0;var p=.431;var c=1;var o=0;var n=.677;var g=.394;var d=.444;var u=.686;var w=.345;var k=.413;var m=.363;var f=.289;var v=.15;var y=.247;var b=.386;var x=.05;var z=2.39;var S=1.01;var M=.81;var q=.71;var T=.25;var N=0;var A=0;var R=0;var C=0;var L=.431;var E=1;var P=0;var D=.04;var I=.111;var O=.166;var F=.2;var B=.6;var _=.1;var X=10;var G={xHeight:p,quad:c,num1:n,num2:g,num3:d,denom1:u,denom2:w,sup1:k,sup2:m,sup3:f,sub1:v,sub2:y,supDrop:b,subDrop:x,axisHeight:T,defaultRuleThickness:D,bigOpSpacing1:I,bigOpSpacing2:O,bigOpSpacing3:F,bigOpSpacing4:B,bigOpSpacing5:_,ptPerEm:X,delim1:z,getDelim2:function(e){if(e.size===h.TEXT.size){return S}else if(e.size===h.SCRIPT.size){return M}else if(e.size===h.SCRIPTSCRIPT.size){return q}throw new Error("Unexpected style size: "+e.size)}};var H={"AMS-Regular":{8672:{depth:-.064,height:.437,italic:0,skew:0},8674:{depth:-.064,height:.437,italic:0,skew:0},10003:{depth:0,height:.69224,italic:0,skew:0},10016:{depth:0,height:.69224,italic:0,skew:0},1008:{depth:0,height:.43056,italic:.04028,skew:0},107:{depth:0,height:.68889,italic:0,skew:0},10731:{depth:.11111,height:.69224,italic:0,skew:0},10846:{depth:.19444,height:.75583,italic:0,skew:0},10877:{depth:.13667,height:.63667,italic:0,skew:0},10878:{depth:.13667,height:.63667,italic:0,skew:0},10885:{depth:.25583,height:.75583,italic:0,skew:0},10886:{depth:.25583,height:.75583,italic:0,skew:0},10887:{depth:.13597,height:.63597,italic:0,skew:0},10888:{depth:.13597,height:.63597,italic:0,skew:0},10889:{depth:.26167,height:.75726,italic:0,skew:0},10890:{depth:.26167,height:.75726,italic:0,skew:0},10891:{depth:.48256,height:.98256,italic:0,skew:0},10892:{depth:.48256,height:.98256,italic:0,skew:0},10901:{depth:.13667,height:.63667,italic:0,skew:0},10902:{depth:.13667,height:.63667,italic:0,skew:0},10933:{depth:.25142,height:.75726,italic:0,skew:0},10934:{depth:.25142,height:.75726,italic:0,skew:0},10935:{depth:.26167,height:.75726,italic:0,skew:0},10936:{depth:.26167,height:.75726,italic:0,skew:0},10937:{depth:.26167,height:.75726,italic:0,skew:0},10938:{depth:.26167,height:.75726,italic:0,skew:0},10949:{depth:.25583,height:.75583,italic:0,skew:0},10950:{depth:.25583,height:.75583,italic:0,skew:0},10955:{depth:.28481,height:.79383,italic:0,skew:0},10956:{depth:.28481,height:.79383,italic:0,skew:0},165:{depth:0,height:.675,italic:.025,skew:0},174:{depth:.15559,height:.69224,italic:0,skew:0},240:{depth:0,height:.68889,italic:0,skew:0},295:{depth:0,height:.68889,italic:0,skew:0},57350:{depth:.08167,height:.58167,italic:0,skew:0},57351:{depth:.08167,height:.58167,italic:0,skew:0},57352:{depth:.08167,height:.58167,italic:0,skew:0},57353:{depth:0,height:.43056,italic:.04028,skew:0},57356:{depth:.25142,height:.75726,italic:0,skew:0},57357:{depth:.25142,height:.75726,italic:0,skew:0},57358:{depth:.41951,height:.91951,italic:0,skew:0},57359:{depth:.30274,height:.79383,italic:0,skew:0},57360:{depth:.30274,height:.79383,italic:0,skew:0},57361:{depth:.41951,height:.91951,italic:0,skew:0},57366:{depth:.25142,height:.75726,italic:0,skew:0},57367:{depth:.25142,height:.75726,italic:0,skew:0},57368:{depth:.25142,height:.75726,italic:0,skew:0},57369:{depth:.25142,height:.75726,italic:0,skew:0},57370:{depth:.13597,height:.63597,italic:0,skew:0},57371:{depth:.13597,height:.63597,italic:0,skew:0},65:{depth:0,height:.68889,italic:0,skew:0},66:{depth:0,height:.68889,italic:0,skew:0},67:{depth:0,height:.68889,italic:0,skew:0},68:{depth:0,height:.68889,italic:0,skew:0},69:{depth:0,height:.68889,italic:0,skew:0},70:{depth:0,height:.68889,italic:0,skew:0},71:{depth:0,height:.68889,italic:0,skew:0},710:{depth:0,height:.825,italic:0,skew:0},72:{depth:0,height:.68889,italic:0,skew:0},73:{depth:0,height:.68889,italic:0,skew:0},732:{depth:0,height:.9,italic:0,skew:0},74:{depth:.16667,height:.68889,italic:0,skew:0},75:{depth:0,height:.68889,italic:0,skew:0},76:{depth:0,height:.68889,italic:0,skew:0},77:{depth:0,height:.68889,italic:0,skew:0},770:{depth:0,height:.825,italic:0,skew:0},771:{depth:0,height:.9,italic:0,skew:0},78:{depth:0,height:.68889,italic:0,skew:0},79:{depth:.16667,height:.68889,italic:0,skew:0},80:{depth:0,height:.68889,italic:0,skew:0},81:{depth:.16667,height:.68889,italic:0,skew:0},82:{depth:0,height:.68889,italic:0,skew:0},8245:{depth:0,height:.54986,italic:0,skew:0},83:{depth:0,height:.68889,italic:0,skew:0},84:{depth:0,height:.68889,italic:0,skew:0},8463:{depth:0,height:.68889,italic:0,skew:0},8487:{depth:0,height:.68889,italic:0,skew:0},8498:{depth:0,height:.68889,italic:0,skew:0},85:{depth:0,height:.68889,italic:0,skew:0},8502:{depth:0,height:.68889,italic:0,skew:0},8503:{depth:0,height:.68889,italic:0,skew:0},8504:{depth:0,height:.68889,italic:0,skew:0},8513:{depth:0,height:.68889,italic:0,skew:0},8592:{depth:-.03598,height:.46402,italic:0,skew:0},8594:{depth:-.03598,height:.46402,italic:0,skew:0},86:{depth:0,height:.68889,italic:0,skew:0},8602:{depth:-.13313,height:.36687,italic:0,skew:0},8603:{depth:-.13313,height:.36687,italic:0,skew:0},8606:{depth:.01354,height:.52239,italic:0,skew:0},8608:{depth:.01354,height:.52239,italic:0,skew:0},8610:{depth:.01354,height:.52239,italic:0,skew:0},8611:{depth:.01354,height:.52239,italic:0,skew:0},8619:{depth:0,height:.54986,italic:0,skew:0},8620:{depth:0,height:.54986,italic:0,skew:0},8621:{depth:-.13313,height:.37788,italic:0,skew:0},8622:{depth:-.13313,height:.36687,italic:0,skew:0},8624:{depth:0,height:.69224,italic:0,skew:0},8625:{depth:0,height:.69224,italic:0,skew:0},8630:{depth:0,height:.43056,italic:0,skew:0},8631:{depth:0,height:.43056,italic:0,skew:0},8634:{depth:.08198,height:.58198,italic:0,skew:0},8635:{depth:.08198,height:.58198,italic:0,skew:0},8638:{depth:.19444,height:.69224,italic:0,skew:0},8639:{depth:.19444,height:.69224,italic:0,skew:0},8642:{depth:.19444,height:.69224,italic:0,skew:0},8643:{depth:.19444,height:.69224,italic:0,skew:0},8644:{depth:.1808,height:.675,italic:0,skew:0},8646:{depth:.1808,height:.675,italic:0,skew:0},8647:{depth:.1808,height:.675,italic:0,skew:0},8648:{depth:.19444,height:.69224,italic:0,skew:0},8649:{depth:.1808,height:.675,italic:0,skew:0},8650:{depth:.19444,height:.69224,italic:0,skew:0},8651:{depth:.01354,height:.52239,italic:0,skew:0},8652:{depth:.01354,height:.52239,italic:0,skew:0},8653:{depth:-.13313,height:.36687,italic:0,skew:0},8654:{depth:-.13313,height:.36687,italic:0,skew:0},8655:{depth:-.13313,height:.36687,italic:0,skew:0},8666:{depth:.13667,height:.63667,italic:0,skew:0},8667:{depth:.13667,height:.63667,italic:0,skew:0},8669:{depth:-.13313,height:.37788,italic:0,skew:0},87:{depth:0,height:.68889,italic:0,skew:0},8705:{depth:0,height:.825,italic:0,skew:0},8708:{depth:0,height:.68889,italic:0,skew:0},8709:{depth:.08167,height:.58167,italic:0,skew:0},8717:{depth:0,height:.43056,italic:0,skew:0},8722:{depth:-.03598,height:.46402,italic:0,skew:0},8724:{depth:.08198,height:.69224,italic:0,skew:0},8726:{depth:.08167,height:.58167,italic:0,skew:0},8733:{depth:0,height:.69224,italic:0,skew:0},8736:{depth:0,height:.69224,italic:0,skew:0},8737:{depth:0,height:.69224,italic:0,skew:0},8738:{depth:.03517,height:.52239,italic:0,skew:0},8739:{depth:.08167,height:.58167,italic:0,skew:0},8740:{depth:.25142,height:.74111,italic:0,skew:0},8741:{depth:.08167,height:.58167,italic:0,skew:0},8742:{depth:.25142,height:.74111,italic:0,skew:0},8756:{depth:0,height:.69224,italic:0,skew:0},8757:{depth:0,height:.69224,italic:0,skew:0},8764:{depth:-.13313,height:.36687,italic:0,skew:0},8765:{depth:-.13313,height:.37788,italic:0,skew:0},8769:{depth:-.13313,height:.36687,italic:0,skew:0},8770:{depth:-.03625,height:.46375,italic:0,skew:0},8774:{depth:.30274,height:.79383,italic:0,skew:0},8776:{depth:-.01688,height:.48312,italic:0,skew:0},8778:{depth:.08167,height:.58167,italic:0,skew:0},8782:{depth:.06062,height:.54986,italic:0,skew:0},8783:{depth:.06062,height:.54986,italic:0,skew:0},8785:{depth:.08198,height:.58198,italic:0,skew:0},8786:{depth:.08198,height:.58198,italic:0,skew:0},8787:{depth:.08198,height:.58198,italic:0,skew:0},8790:{depth:0,height:.69224,italic:0,skew:0},8791:{depth:.22958,height:.72958,italic:0,skew:0},8796:{depth:.08198,height:.91667,italic:0,skew:0},88:{depth:0,height:.68889,italic:0,skew:0},8806:{depth:.25583,height:.75583,italic:0,skew:0},8807:{depth:.25583,height:.75583,italic:0,skew:0},8808:{depth:.25142,height:.75726,italic:0,skew:0},8809:{depth:.25142,height:.75726,italic:0,skew:0},8812:{depth:.25583,height:.75583,italic:0,skew:0},8814:{depth:.20576,height:.70576,italic:0,skew:0},8815:{depth:.20576,height:.70576,italic:0,skew:0},8816:{depth:.30274,height:.79383,italic:0,skew:0},8817:{depth:.30274,height:.79383,italic:0,skew:0},8818:{depth:.22958,height:.72958,italic:0,skew:0},8819:{depth:.22958,height:.72958,italic:0,skew:0},8822:{depth:.1808,height:.675,italic:0,skew:0},8823:{depth:.1808,height:.675,italic:0,skew:0},8828:{depth:.13667,height:.63667,italic:0,skew:0},8829:{depth:.13667,height:.63667,italic:0,skew:0},8830:{depth:.22958,height:.72958,italic:0,skew:0},8831:{depth:.22958,height:.72958,italic:0,skew:0},8832:{depth:.20576,height:.70576,italic:0,skew:0},8833:{depth:.20576,height:.70576,italic:0,skew:0},8840:{depth:.30274,height:.79383,italic:0,skew:0},8841:{depth:.30274,height:.79383,italic:0,skew:0},8842:{depth:.13597,height:.63597,italic:0,skew:0},8843:{depth:.13597,height:.63597,italic:0,skew:0},8847:{depth:.03517,height:.54986,italic:0,skew:0},8848:{depth:.03517,height:.54986,italic:0,skew:0},8858:{depth:.08198,height:.58198,italic:0,skew:0},8859:{depth:.08198,height:.58198,italic:0,skew:0},8861:{depth:.08198,height:.58198,italic:0,skew:0},8862:{depth:0,height:.675,italic:0,skew:0},8863:{depth:0,height:.675,italic:0,skew:0},8864:{depth:0,height:.675,italic:0,skew:0},8865:{depth:0,height:.675,italic:0,skew:0},8872:{depth:0,height:.69224,italic:0,skew:0},8873:{depth:0,height:.69224,italic:0,skew:0},8874:{depth:0,height:.69224,italic:0,skew:0},8876:{depth:0,height:.68889,italic:0,skew:0},8877:{depth:0,height:.68889,italic:0,skew:0},8878:{depth:0,height:.68889,italic:0,skew:0},8879:{depth:0,height:.68889,italic:0,skew:0},8882:{depth:.03517,height:.54986,italic:0,skew:0},8883:{depth:.03517,height:.54986,italic:0,skew:0},8884:{depth:.13667,height:.63667,italic:0,skew:0},8885:{depth:.13667,height:.63667,italic:0,skew:0},8888:{depth:0,height:.54986,italic:0,skew:0},8890:{depth:.19444,height:.43056,italic:0,skew:0},8891:{depth:.19444,height:.69224,italic:0,skew:0},8892:{depth:.19444,height:.69224,italic:0,skew:0},89:{depth:0,height:.68889,italic:0,skew:0},8901:{depth:0,height:.54986,italic:0,skew:0},8903:{depth:.08167,height:.58167,italic:0,skew:0},8905:{depth:.08167,height:.58167,italic:0,skew:0},8906:{depth:.08167,height:.58167,italic:0,skew:0},8907:{depth:0,height:.69224,italic:0,skew:0},8908:{depth:0,height:.69224,italic:0,skew:0},8909:{depth:-.03598,height:.46402,italic:0,skew:0},8910:{depth:0,height:.54986,italic:0,skew:0},8911:{depth:0,height:.54986,italic:0,skew:0},8912:{depth:.03517,height:.54986,italic:0,skew:0},8913:{depth:.03517,height:.54986,italic:0,skew:0},8914:{depth:0,height:.54986,italic:0,skew:0},8915:{depth:0,height:.54986,italic:0,skew:0},8916:{depth:0,height:.69224,italic:0,skew:0},8918:{depth:.0391,height:.5391,italic:0,skew:0},8919:{depth:.0391,height:.5391,italic:0,skew:0},8920:{depth:.03517,height:.54986,italic:0,skew:0},8921:{depth:.03517,height:.54986,italic:0,skew:0},8922:{depth:.38569,height:.88569,italic:0,skew:0},8923:{depth:.38569,height:.88569,italic:0,skew:0},8926:{depth:.13667,height:.63667,italic:0,skew:0},8927:{depth:.13667,height:.63667,italic:0,skew:0},8928:{depth:.30274,height:.79383,italic:0,skew:0},8929:{depth:.30274,height:.79383,italic:0,skew:0},8934:{depth:.23222,height:.74111,italic:0,skew:0},8935:{depth:.23222,height:.74111,italic:0,skew:0},8936:{depth:.23222,height:.74111,italic:0,skew:0},8937:{depth:.23222,height:.74111,italic:0,skew:0},8938:{depth:.20576,height:.70576,italic:0,skew:0},8939:{depth:.20576,height:.70576,italic:0,skew:0},8940:{depth:.30274,height:.79383,italic:0,skew:0},8941:{depth:.30274,height:.79383,italic:0,skew:0},8994:{depth:.19444,height:.69224,italic:0,skew:0},8995:{depth:.19444,height:.69224,italic:0,skew:0},90:{depth:0,height:.68889,italic:0,skew:0},9416:{depth:.15559,height:.69224,italic:0,skew:0},9484:{depth:0,height:.69224,italic:0,skew:0},9488:{depth:0,height:.69224,italic:0,skew:0},9492:{depth:0,height:.37788,italic:0,skew:0},9496:{depth:0,height:.37788,italic:0,skew:0},9585:{depth:.19444,height:.68889,italic:0,skew:0},9586:{depth:.19444,height:.74111,italic:0,skew:0},9632:{depth:0,height:.675,italic:0,skew:0},9633:{depth:0,height:.675,italic:0,skew:0},9650:{depth:0,height:.54986,italic:0,skew:0},9651:{depth:0,height:.54986,italic:0,skew:0},9654:{depth:.03517,height:.54986,italic:0,skew:0},9660:{depth:0,height:.54986,italic:0,skew:0},9661:{depth:0,height:.54986,italic:0,skew:0},9664:{depth:.03517,height:.54986,italic:0,skew:0},9674:{depth:.11111,height:.69224,italic:0,skew:0},9733:{depth:.19444,height:.69224,italic:0,skew:0},989:{depth:.08167,height:.58167,italic:0,skew:0}},"Main-Bold":{100:{depth:0,height:.69444,italic:0,skew:0},101:{depth:0,height:.44444,italic:0,skew:0},102:{depth:0,height:.69444,italic:.10903,skew:0},10216:{depth:.25,height:.75,italic:0,skew:0},10217:{depth:.25,height:.75,italic:0,skew:0},103:{depth:.19444,height:.44444,italic:.01597,skew:0},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.69444,italic:0,skew:0},106:{depth:.19444,height:.69444,italic:0,skew:0},107:{depth:0,height:.69444,italic:0,skew:0},108:{depth:0,height:.69444,italic:0,skew:0},10815:{depth:0,height:.68611,italic:0,skew:0},109:{depth:0,height:.44444,italic:0,skew:0},10927:{depth:.19667,height:.69667,italic:0,skew:0},10928:{depth:.19667,height:.69667,italic:0,skew:0},110:{depth:0,height:.44444,italic:0,skew:0},111:{depth:0,height:.44444,italic:0,skew:0},112:{depth:.19444,height:.44444,italic:0,skew:0},113:{depth:.19444,height:.44444,italic:0,skew:0},114:{depth:0,height:.44444,italic:0,skew:0},115:{depth:0,height:.44444,italic:0,skew:0},116:{depth:0,height:.63492,italic:0,skew:0},117:{depth:0,height:.44444,italic:0,skew:0},118:{depth:0,height:.44444,italic:.01597,skew:0},119:{depth:0,height:.44444,italic:.01597,skew:0},120:{depth:0,height:.44444,italic:0,skew:0},121:{depth:.19444,height:.44444,italic:.01597,skew:0},122:{depth:0,height:.44444,italic:0,skew:0},123:{depth:.25,height:.75,italic:0,skew:0},124:{depth:.25,height:.75,italic:0,skew:0},125:{depth:.25,height:.75,italic:0,skew:0},126:{depth:.35,height:.34444,italic:0,skew:0},168:{depth:0,height:.69444,italic:0,skew:0},172:{depth:0,height:.44444,italic:0,skew:0},175:{depth:0,height:.59611,italic:0,skew:0},176:{depth:0,height:.69444,italic:0,skew:0},177:{depth:.13333,height:.63333,italic:0,skew:0},180:{depth:0,height:.69444,italic:0,skew:0},215:{depth:.13333,height:.63333,italic:0,skew:0},247:{depth:.13333,height:.63333,italic:0,skew:0},305:{depth:0,height:.44444,italic:0,skew:0},33:{depth:0,height:.69444,italic:0,skew:0},34:{depth:0,height:.69444,italic:0,skew:0},35:{depth:.19444,height:.69444,italic:0,skew:0},36:{depth:.05556,height:.75,italic:0,skew:0},37:{depth:.05556,height:.75,italic:0,skew:0},38:{depth:0,height:.69444,italic:0,skew:0},39:{depth:0,height:.69444,italic:0,skew:0},40:{depth:.25,height:.75,italic:0,skew:0},41:{depth:.25,height:.75,italic:0,skew:0},42:{depth:0,height:.75,italic:0,skew:0},43:{depth:.13333,height:.63333,italic:0,skew:0},44:{depth:.19444,height:.15556,italic:0,skew:0},45:{depth:0,height:.44444,italic:0,skew:0},46:{depth:0,height:.15556,italic:0,skew:0},47:{depth:.25,height:.75,italic:0,skew:0},48:{depth:0,height:.64444,italic:0,skew:0},49:{depth:0,height:.64444,italic:0,skew:0},50:{depth:0,height:.64444,italic:0,skew:0},51:{depth:0,height:.64444,italic:0,skew:0},52:{depth:0,height:.64444,italic:0,skew:0},53:{depth:0,height:.64444,italic:0,skew:0},54:{depth:0,height:.64444,italic:0,skew:0},55:{depth:0,height:.64444,italic:0,skew:0},56:{depth:0,height:.64444,italic:0,skew:0},567:{depth:.19444,height:.44444,italic:0,skew:0},57:{depth:0,height:.64444,italic:0,skew:0},58:{depth:0,height:.44444,italic:0,skew:0},59:{depth:.19444,height:.44444,italic:0,skew:0},60:{depth:.08556,height:.58556,italic:0,skew:0},61:{depth:-.10889,height:.39111,italic:0,skew:0},62:{depth:.08556,height:.58556,italic:0,skew:0},63:{depth:0,height:.69444,italic:0,skew:0},64:{depth:0,height:.69444,italic:0,skew:0},65:{depth:0,height:.68611,italic:0,skew:0},66:{depth:0,height:.68611,italic:0,skew:0},67:{depth:0,height:.68611,italic:0,skew:0},68:{depth:0,height:.68611,italic:0,skew:0},69:{depth:0,height:.68611,italic:0,skew:0},70:{depth:0,height:.68611,italic:0,skew:0},71:{depth:0,height:.68611,italic:0,skew:0},710:{depth:0,height:.69444,italic:0,skew:0},711:{depth:0,height:.63194,italic:0,skew:0},713:{depth:0,height:.59611,italic:0,skew:0},714:{depth:0,height:.69444,italic:0,skew:0},715:{depth:0,height:.69444,italic:0,skew:0},72:{depth:0,height:.68611,italic:0,skew:0},728:{depth:0,height:.69444,italic:0,skew:0},729:{depth:0,height:.69444,italic:0,skew:0},73:{depth:0,height:.68611,italic:0,skew:0},730:{depth:0,height:.69444,italic:0,skew:0},732:{depth:0,height:.69444,italic:0,skew:0},74:{depth:0,height:.68611,italic:0,skew:0},75:{depth:0,height:.68611,italic:0,skew:0},76:{depth:0,height:.68611,italic:0,skew:0},768:{depth:0,height:.69444,italic:0,skew:0},769:{depth:0,height:.69444,italic:0,skew:0},77:{depth:0,height:.68611,italic:0,skew:0},770:{depth:0,height:.69444,italic:0,skew:0},771:{depth:0,height:.69444,italic:0,skew:0},772:{depth:0,height:.59611,italic:0,skew:0},774:{depth:0,height:.69444,italic:0,skew:0},775:{depth:0,height:.69444,italic:0,skew:0},776:{depth:0,height:.69444,italic:0,skew:0},778:{depth:0,height:.69444,italic:0,skew:0},779:{depth:0,height:.69444,italic:0,skew:0},78:{depth:0,height:.68611,italic:0,skew:0},780:{depth:0,height:.63194,italic:0,skew:0},79:{depth:0,height:.68611,italic:0,skew:0},80:{depth:0,height:.68611,italic:0,skew:0},81:{depth:.19444,height:.68611,italic:0,skew:0},82:{depth:0,height:.68611,italic:0,skew:0},8211:{depth:0,height:.44444,italic:.03194,skew:0},8212:{depth:0,height:.44444,italic:.03194,skew:0},8216:{depth:0,height:.69444,italic:0,skew:0},8217:{depth:0,height:.69444,italic:0,skew:0},8220:{depth:0,height:.69444,italic:0,skew:0},8221:{depth:0,height:.69444,italic:0,skew:0},8224:{depth:.19444,height:.69444,italic:0,skew:0},8225:{depth:.19444,height:.69444,italic:0,skew:0},824:{depth:.19444,height:.69444,italic:0,skew:0},8242:{depth:0,height:.55556,italic:0,skew:0},83:{depth:0,height:.68611,italic:0,skew:0},84:{depth:0,height:.68611,italic:0,skew:0},8407:{depth:0,height:.72444,italic:.15486,skew:0},8463:{depth:0,height:.69444,italic:0,skew:0},8465:{depth:0,height:.69444,italic:0,skew:0},8467:{depth:0,height:.69444,italic:0,skew:0},8472:{depth:.19444,height:.44444,italic:0,skew:0},8476:{depth:0,height:.69444,italic:0,skew:0},85:{depth:0,height:.68611,italic:0,skew:0},8501:{depth:0,height:.69444,italic:0,skew:0},8592:{depth:-.10889,height:.39111,italic:0,skew:0},8593:{depth:.19444,height:.69444,italic:0,skew:0},8594:{depth:-.10889,height:.39111,italic:0,skew:0},8595:{depth:.19444,height:.69444,italic:0,skew:0},8596:{depth:-.10889,height:.39111,italic:0,skew:0},8597:{depth:.25,height:.75,italic:0,skew:0},8598:{depth:.19444,height:.69444,italic:0,skew:0},8599:{depth:.19444,height:.69444,italic:0,skew:0},86:{depth:0,height:.68611,italic:.01597,skew:0},8600:{depth:.19444,height:.69444,italic:0,skew:0},8601:{depth:.19444,height:.69444,italic:0,skew:0},8636:{depth:-.10889,height:.39111,italic:0,skew:0},8637:{depth:-.10889,height:.39111,italic:0,skew:0},8640:{depth:-.10889,height:.39111,italic:0,skew:0},8641:{depth:-.10889,height:.39111,italic:0,skew:0},8656:{depth:-.10889,height:.39111,italic:0,skew:0},8657:{depth:.19444,height:.69444,italic:0,skew:0},8658:{depth:-.10889,height:.39111,italic:0,skew:0},8659:{depth:.19444,height:.69444,italic:0,skew:0},8660:{depth:-.10889,height:.39111,italic:0,skew:0},8661:{depth:.25,height:.75,italic:0,skew:0},87:{depth:0,height:.68611,italic:.01597,skew:0},8704:{depth:0,height:.69444,italic:0,skew:0},8706:{depth:0,height:.69444,italic:.06389,skew:0},8707:{depth:0,height:.69444,italic:0,skew:0},8709:{depth:.05556,height:.75,italic:0,skew:0},8711:{depth:0,height:.68611,italic:0,skew:0},8712:{depth:.08556,height:.58556,italic:0,skew:0},8715:{depth:.08556,height:.58556,italic:0,skew:0},8722:{depth:.13333,height:.63333,italic:0,skew:0},8723:{depth:.13333,height:.63333,italic:0,skew:0},8725:{depth:.25,height:.75,italic:0,skew:0},8726:{depth:.25,height:.75,italic:0,skew:0},8727:{depth:-.02778,height:.47222,italic:0,skew:0},8728:{depth:-.02639,height:.47361,italic:0,skew:0},8729:{depth:-.02639,height:.47361,italic:0,skew:0},8730:{depth:.18,height:.82,italic:0,skew:0},8733:{depth:0,height:.44444,italic:0,skew:0},8734:{depth:0,height:.44444,italic:0,skew:0},8736:{depth:0,height:.69224,italic:0,skew:0},8739:{depth:.25,height:.75,italic:0,skew:0},8741:{depth:.25,height:.75,italic:0,skew:0},8743:{depth:0,height:.55556,italic:0,skew:0},8744:{depth:0,height:.55556,italic:0,skew:0},8745:{depth:0,height:.55556,italic:0,skew:0},8746:{depth:0,height:.55556,italic:0,skew:0},8747:{depth:.19444,height:.69444,italic:.12778,skew:0},8764:{depth:-.10889,height:.39111,italic:0,skew:0},8768:{depth:.19444,height:.69444,italic:0,skew:0},8771:{depth:.00222,height:.50222,italic:0,skew:0},8776:{depth:.02444,height:.52444,italic:0,skew:0},8781:{depth:.00222,height:.50222,italic:0,skew:0},88:{depth:0,height:.68611,italic:0,skew:0},8801:{depth:.00222,height:.50222,italic:0,skew:0},8804:{depth:.19667,height:.69667,italic:0,skew:0},8805:{depth:.19667,height:.69667,italic:0,skew:0},8810:{depth:.08556,height:.58556,italic:0,skew:0},8811:{depth:.08556,height:.58556,italic:0,skew:0},8826:{depth:.08556,height:.58556,italic:0,skew:0},8827:{depth:.08556,height:.58556,italic:0,skew:0},8834:{depth:.08556,height:.58556,italic:0,skew:0},8835:{depth:.08556,height:.58556,italic:0,skew:0},8838:{depth:.19667,height:.69667,italic:0,skew:0},8839:{depth:.19667,height:.69667,italic:0,skew:0},8846:{depth:0,height:.55556,italic:0,skew:0},8849:{depth:.19667,height:.69667,italic:0,skew:0},8850:{depth:.19667,height:.69667,italic:0,skew:0},8851:{depth:0,height:.55556,italic:0,skew:0},8852:{depth:0,height:.55556,italic:0,skew:0},8853:{depth:.13333,height:.63333,italic:0,skew:0},8854:{depth:.13333,height:.63333,italic:0,skew:0},8855:{depth:.13333,height:.63333,italic:0,skew:0},8856:{depth:.13333,height:.63333,italic:0,skew:0},8857:{depth:.13333,height:.63333,italic:0,skew:0},8866:{depth:0,height:.69444,italic:0,skew:0},8867:{depth:0,height:.69444,italic:0,skew:0},8868:{depth:0,height:.69444,italic:0,skew:0},8869:{depth:0,height:.69444,italic:0,skew:0},89:{depth:0,height:.68611,italic:.02875,skew:0},8900:{depth:-.02639,height:.47361,italic:0,skew:0},8901:{depth:-.02639,height:.47361,italic:0,skew:0},8902:{depth:-.02778,height:.47222,italic:0,skew:0},8968:{depth:.25,height:.75,italic:0,skew:0},8969:{depth:.25,height:.75,italic:0,skew:0},8970:{depth:.25,height:.75,italic:0,skew:0},8971:{depth:.25,height:.75,italic:0,skew:0},8994:{depth:-.13889,height:.36111,italic:0,skew:0},8995:{depth:-.13889,height:.36111,italic:0,skew:0},90:{depth:0,height:.68611,italic:0,skew:0},91:{depth:.25,height:.75,italic:0,skew:0},915:{depth:0,height:.68611,italic:0,skew:0},916:{depth:0,height:.68611,italic:0,skew:0},92:{depth:.25,height:.75,italic:0,skew:0},920:{depth:0,height:.68611,italic:0,skew:0},923:{depth:0,height:.68611,italic:0,skew:0},926:{depth:0,height:.68611,italic:0,skew:0},928:{depth:0,height:.68611,italic:0,skew:0},93:{depth:.25,height:.75,italic:0,skew:0},931:{depth:0,height:.68611,italic:0,skew:0},933:{depth:0,height:.68611,italic:0,skew:0},934:{depth:0,height:.68611,italic:0,skew:0},936:{depth:0,height:.68611,italic:0,skew:0},937:{depth:0,height:.68611,italic:0,skew:0},94:{depth:0,height:.69444,italic:0,skew:0},95:{depth:.31,height:.13444,italic:.03194,skew:0},96:{depth:0,height:.69444,italic:0,skew:0},9651:{depth:.19444,height:.69444,italic:0,skew:0},9657:{depth:-.02778,height:.47222,italic:0,skew:0},9661:{depth:.19444,height:.69444,italic:0,skew:0},9667:{depth:-.02778,height:.47222,italic:0,skew:0},97:{depth:0,height:.44444,italic:0,skew:0},9711:{depth:.19444,height:.69444,italic:0,skew:0},98:{depth:0,height:.69444,italic:0,skew:0},9824:{depth:.12963,height:.69444,italic:0,skew:0},9825:{depth:.12963,height:.69444,italic:0,skew:0},9826:{depth:.12963,height:.69444,italic:0,skew:0},9827:{depth:.12963,height:.69444,italic:0,skew:0},9837:{depth:0,height:.75,italic:0,skew:0},9838:{depth:.19444,height:.69444,italic:0,skew:0},9839:{depth:.19444,height:.69444,italic:0,skew:0},99:{depth:0,height:.44444,italic:0,skew:0}},"Main-Italic":{100:{depth:0,height:.69444,italic:.10333,skew:0},101:{depth:0,height:.43056,italic:.07514,skew:0},102:{depth:.19444,height:.69444,italic:.21194,skew:0},103:{depth:.19444,height:.43056,italic:.08847,skew:0},104:{depth:0,height:.69444,italic:.07671,skew:0},105:{depth:0,height:.65536,italic:.1019,skew:0},106:{depth:.19444,height:.65536,italic:.14467,skew:0},107:{depth:0,height:.69444,italic:.10764,skew:0},108:{depth:0,height:.69444,italic:.10333,skew:0},109:{depth:0,height:.43056,italic:.07671,skew:0},110:{depth:0,height:.43056,italic:.07671,skew:0},111:{depth:0,height:.43056,italic:.06312,skew:0},112:{depth:.19444,height:.43056,italic:.06312,skew:0},113:{depth:.19444,height:.43056,italic:.08847,skew:0},114:{depth:0,height:.43056,italic:.10764,skew:0},115:{depth:0,height:.43056,italic:.08208,skew:0},116:{depth:0,height:.61508,italic:.09486,skew:0},117:{depth:0,height:.43056,italic:.07671,skew:0},118:{depth:0,height:.43056,italic:.10764,skew:0},119:{depth:0,height:.43056,italic:.10764,skew:0},120:{depth:0,height:.43056,italic:.12042,skew:0},121:{depth:.19444,height:.43056,italic:.08847,skew:0},122:{depth:0,height:.43056,italic:.12292,skew:0},126:{depth:.35,height:.31786,italic:.11585,skew:0},163:{depth:0,height:.69444,italic:0,skew:0},305:{depth:0,height:.43056,italic:.07671,skew:0},33:{depth:0,height:.69444,italic:.12417,skew:0},34:{depth:0,height:.69444,italic:.06961,skew:0},35:{depth:.19444,height:.69444,italic:.06616,skew:0},37:{depth:.05556,height:.75,italic:.13639,skew:0},38:{depth:0,height:.69444,italic:.09694,skew:0},39:{depth:0,height:.69444,italic:.12417,skew:0},40:{depth:.25,height:.75,italic:.16194,skew:0},41:{depth:.25,height:.75,italic:.03694,skew:0},42:{depth:0,height:.75,italic:.14917,skew:0},43:{depth:.05667,height:.56167,italic:.03694,skew:0},44:{depth:.19444,height:.10556,italic:0,skew:0},45:{depth:0,height:.43056,italic:.02826,skew:0},46:{depth:0,height:.10556,italic:0,skew:0},47:{depth:.25,height:.75,italic:.16194,skew:0},48:{depth:0,height:.64444,italic:.13556,skew:0},49:{depth:0,height:.64444,italic:.13556,skew:0},50:{depth:0,height:.64444,italic:.13556,skew:0},51:{depth:0,height:.64444,italic:.13556,skew:0},52:{depth:.19444,height:.64444,italic:.13556,skew:0},53:{depth:0,height:.64444,italic:.13556,skew:0},54:{depth:0,height:.64444,italic:.13556,skew:0},55:{depth:.19444,height:.64444,italic:.13556,skew:0},56:{depth:0,height:.64444,italic:.13556,skew:0},567:{depth:.19444,height:.43056,italic:.03736,skew:0},57:{depth:0,height:.64444,italic:.13556,skew:0},58:{depth:0,height:.43056,italic:.0582,skew:0},59:{depth:.19444,height:.43056,italic:.0582,skew:0},61:{depth:-.13313,height:.36687,italic:.06616,skew:0},63:{depth:0,height:.69444,italic:.1225,skew:0},64:{depth:0,height:.69444,italic:.09597,skew:0},65:{depth:0,height:.68333,italic:0,skew:0},66:{depth:0,height:.68333,italic:.10257,skew:0},67:{depth:0,height:.68333,italic:.14528,skew:0},68:{depth:0,height:.68333,italic:.09403,skew:0},69:{depth:0,height:.68333,italic:.12028,skew:0},70:{depth:0,height:.68333,italic:.13305,skew:0},71:{depth:0,height:.68333,italic:.08722,skew:0},72:{depth:0,height:.68333,italic:.16389,skew:0},73:{depth:0,height:.68333,italic:.15806,skew:0},74:{depth:0,height:.68333,italic:.14028,skew:0},75:{depth:0,height:.68333,italic:.14528,skew:0},76:{depth:0,height:.68333,italic:0,skew:0},768:{depth:0,height:.69444,italic:0,skew:0},769:{depth:0,height:.69444,italic:.09694,skew:0},77:{depth:0,height:.68333,italic:.16389,skew:0},770:{depth:0,height:.69444,italic:.06646,skew:0},771:{depth:0,height:.66786,italic:.11585,skew:0},772:{depth:0,height:.56167,italic:.10333,skew:0},774:{depth:0,height:.69444,italic:.10806,skew:0},775:{depth:0,height:.66786,italic:.11752,skew:0},776:{depth:0,height:.66786,italic:.10474,skew:0},778:{depth:0,height:.69444,italic:0,skew:0},779:{depth:0,height:.69444,italic:.1225,skew:0},78:{depth:0,height:.68333,italic:.16389,skew:0},780:{depth:0,height:.62847,italic:.08295,skew:0},79:{depth:0,height:.68333,italic:.09403,skew:0},80:{depth:0,height:.68333,italic:.10257,skew:0},81:{depth:.19444,height:.68333,italic:.09403,skew:0},82:{depth:0,height:.68333,italic:.03868,skew:0},8211:{depth:0,height:.43056,italic:.09208,skew:0},8212:{depth:0,height:.43056,italic:.09208,skew:0},8216:{depth:0,height:.69444,italic:.12417,skew:0},8217:{depth:0,height:.69444,italic:.12417,skew:0},8220:{depth:0,height:.69444,italic:.1685,skew:0},8221:{depth:0,height:.69444,italic:.06961,skew:0},83:{depth:0,height:.68333,italic:.11972,skew:0},84:{depth:0,height:.68333,italic:.13305,skew:0},8463:{depth:0,height:.68889,italic:0,skew:0},85:{depth:0,height:.68333,italic:.16389,skew:0},86:{depth:0,height:.68333,italic:.18361,skew:0},87:{depth:0,height:.68333,italic:.18361,skew:0},88:{depth:0,height:.68333,italic:.15806,skew:0},89:{depth:0,height:.68333,italic:.19383,skew:0},90:{depth:0,height:.68333,italic:.14528,skew:0},91:{depth:.25,height:.75,italic:.1875,skew:0},915:{depth:0,height:.68333,italic:.13305,skew:0},916:{depth:0,height:.68333,italic:0,skew:0},920:{depth:0,height:.68333,italic:.09403,skew:0},923:{depth:0,height:.68333,italic:0,skew:0},926:{depth:0,height:.68333,italic:.15294,skew:0},928:{depth:0,height:.68333,italic:.16389,skew:0},93:{depth:.25,height:.75,italic:.10528,skew:0},931:{depth:0,height:.68333,italic:.12028,skew:0},933:{depth:0,height:.68333,italic:.11111,skew:0},934:{depth:0,height:.68333,italic:.05986,skew:0},936:{depth:0,height:.68333,italic:.11111,skew:0},937:{depth:0,height:.68333,italic:.10257,skew:0},94:{depth:0,height:.69444,italic:.06646,skew:0},95:{depth:.31,height:.12056,italic:.09208,skew:0},97:{depth:0,height:.43056,italic:.07671,skew:0},98:{depth:0,height:.69444,italic:.06312,skew:0},99:{depth:0,height:.43056,italic:.05653,skew:0}},"Main-Regular":{32:{depth:-0,height:0,italic:0,skew:0},160:{depth:-0,height:0,italic:0,skew:0},8230:{depth:-0,height:.12,italic:0,skew:0},8614:{depth:.011,height:.511,italic:0,skew:0},8617:{depth:.011,height:.511,italic:0,skew:0},8618:{depth:.011,height:.511,italic:0,skew:0},8652:{depth:.011,height:.671,italic:0,skew:0},8773:{depth:-.022,height:.589,italic:0,skew:0},8784:{depth:-.133,height:.67,italic:0,skew:0},8800:{depth:.215,height:.716,italic:0,skew:0},8872:{depth:.249,height:.75,italic:0,skew:0},8904:{depth:.005,height:.505,italic:0,skew:0},8942:{depth:.03,height:.9,italic:0,skew:0},8943:{depth:-.19,height:.31,italic:0,skew:0},8945:{depth:-.1,height:.82,italic:0,skew:0},9136:{depth:.244,height:.744,italic:0,skew:0},9137:{depth:.244,height:.744,italic:0,skew:0},10222:{depth:.244,height:.744,italic:0,skew:0},10223:{depth:.244,height:.744,italic:0,skew:0},10229:{depth:.011,height:.511,italic:0,skew:0},10230:{depth:.011,height:.511,italic:0,skew:0},10231:{depth:.011,height:.511,italic:0,skew:0},10232:{depth:.024,height:.525,italic:0,skew:0},10233:{depth:.024,height:.525,italic:0,skew:0},10234:{depth:.024,height:.525,italic:0,skew:0},10236:{depth:.011,height:.511,italic:0,skew:0},100:{depth:0,height:.69444,italic:0,skew:0},101:{depth:0,height:.43056,italic:0,skew:0},102:{depth:0,height:.69444,italic:.07778,skew:0},10216:{depth:.25,height:.75,italic:0,skew:0},10217:{depth:.25,height:.75,italic:0,skew:0},103:{depth:.19444,height:.43056,italic:.01389,skew:0},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.66786,italic:0,skew:0},106:{depth:.19444,height:.66786,italic:0,skew:0},107:{depth:0,height:.69444,italic:0,skew:0},108:{depth:0,height:.69444,italic:0,skew:0},10815:{depth:0,height:.68333,italic:0,skew:0},109:{depth:0,height:.43056,italic:0,skew:0},10927:{depth:.13597,height:.63597,italic:0,skew:0},10928:{depth:.13597,height:.63597,italic:0,skew:0},110:{depth:0,height:.43056,italic:0,skew:0},111:{depth:0,height:.43056,italic:0,skew:0},112:{depth:.19444,height:.43056,italic:0,skew:0},113:{depth:.19444,height:.43056,italic:0,skew:0},114:{depth:0,height:.43056,italic:0,skew:0},115:{depth:0,height:.43056,italic:0,skew:0},116:{depth:0,height:.61508,italic:0,skew:0},117:{depth:0,height:.43056,italic:0,skew:0},118:{depth:0,height:.43056,italic:.01389,skew:0},119:{depth:0,height:.43056,italic:.01389,skew:0},120:{depth:0,height:.43056,italic:0,skew:0},121:{depth:.19444,height:.43056,italic:.01389,skew:0},122:{depth:0,height:.43056,italic:0,skew:0},123:{depth:.25,height:.75,italic:0,skew:0},124:{depth:.25,height:.75,italic:0,skew:0},125:{depth:.25,height:.75,italic:0,skew:0},126:{depth:.35,height:.31786,italic:0,skew:0},168:{depth:0,height:.66786,italic:0,skew:0},172:{depth:0,height:.43056,italic:0,skew:0},175:{depth:0,height:.56778,italic:0,skew:0},176:{depth:0,height:.69444,italic:0,skew:0},177:{depth:.08333,height:.58333,italic:0,skew:0},180:{depth:0,height:.69444,italic:0,skew:0},215:{depth:.08333,height:.58333,italic:0,skew:0},247:{depth:.08333,height:.58333,italic:0,skew:0},305:{depth:0,height:.43056,italic:0,skew:.02778},33:{depth:0,height:.69444,italic:0,skew:0},34:{depth:0,height:.69444,italic:0,skew:0},35:{depth:.19444,height:.69444,italic:0,skew:0},36:{depth:.05556,height:.75,italic:0,skew:0},37:{depth:.05556,height:.75,italic:0,skew:0},38:{depth:0,height:.69444,italic:0,skew:0},39:{depth:0,height:.69444,italic:0,skew:0},40:{depth:.25,height:.75,italic:0,skew:0},41:{depth:.25,height:.75,italic:0,skew:0},42:{depth:0,height:.75,italic:0,skew:0},43:{depth:.08333,height:.58333,italic:0,skew:0},44:{depth:.19444,height:.10556,italic:0,skew:0},45:{depth:0,height:.43056,italic:0,skew:0},46:{depth:0,height:.10556,italic:0,skew:0},47:{depth:.25,height:.75,italic:0,skew:0},48:{depth:0,height:.64444,italic:0,skew:0},49:{depth:0,height:.64444,italic:0,skew:0},50:{depth:0,height:.64444,italic:0,skew:0},51:{depth:0,height:.64444,italic:0,skew:0},52:{depth:0,height:.64444,italic:0,skew:0},53:{depth:0,height:.64444,italic:0,skew:0},54:{depth:0,height:.64444,italic:0,skew:0},55:{depth:0,height:.64444,italic:0,skew:0},56:{depth:0,height:.64444,italic:0,skew:0},567:{depth:.19444,height:.43056,italic:0,skew:.08334},57:{depth:0,height:.64444,italic:0,skew:0},58:{depth:0,height:.43056,italic:0,skew:0},59:{depth:.19444,height:.43056,italic:0,skew:0},60:{depth:.0391,height:.5391,italic:0,skew:0},61:{depth:-.13313,height:.36687,italic:0,skew:0},62:{depth:.0391,height:.5391,italic:0,skew:0},63:{depth:0,height:.69444,italic:0,skew:0},64:{depth:0,height:.69444,italic:0,skew:0},65:{depth:0,height:.68333,italic:0,skew:0},66:{depth:0,height:.68333,italic:0,skew:0},67:{depth:0,height:.68333,italic:0,skew:0},68:{depth:0,height:.68333,italic:0,skew:0},69:{depth:0,height:.68333,italic:0,skew:0},70:{depth:0,height:.68333,italic:0,skew:0},71:{depth:0,height:.68333,italic:0,skew:0},710:{depth:0,height:.69444,italic:0,skew:0},711:{depth:0,height:.62847,italic:0,skew:0},713:{depth:0,height:.56778,italic:0,skew:0},714:{depth:0,height:.69444,italic:0,skew:0},715:{depth:0,height:.69444,italic:0,skew:0},72:{depth:0,height:.68333,italic:0,skew:0},728:{depth:0,height:.69444,italic:0,skew:0},729:{depth:0,height:.66786,italic:0,skew:0},73:{depth:0,height:.68333,italic:0,skew:0},730:{depth:0,height:.69444,italic:0,skew:0},732:{depth:0,height:.66786,italic:0,skew:0},74:{depth:0,height:.68333,italic:0,skew:0},75:{depth:0,height:.68333,italic:0,skew:0},76:{depth:0,height:.68333,italic:0,skew:0},768:{depth:0,height:.69444,italic:0,skew:0},769:{depth:0,height:.69444,italic:0,skew:0},77:{depth:0,height:.68333,italic:0,skew:0},770:{depth:0,height:.69444,italic:0,skew:0},771:{depth:0,height:.66786,italic:0,skew:0},772:{depth:0,height:.56778,italic:0,skew:0},774:{depth:0,height:.69444,italic:0,skew:0},775:{depth:0,height:.66786,italic:0,skew:0},776:{depth:0,height:.66786,italic:0,skew:0},778:{depth:0,height:.69444,italic:0,skew:0},779:{depth:0,height:.69444,italic:0,skew:0},78:{depth:0,height:.68333,italic:0,skew:0},780:{depth:0,height:.62847,italic:0,skew:0},79:{depth:0,height:.68333,italic:0,skew:0},80:{depth:0,height:.68333,italic:0,skew:0},81:{depth:.19444,height:.68333,italic:0,skew:0},82:{depth:0,height:.68333,italic:0,skew:0},8211:{depth:0,height:.43056,italic:.02778,skew:0},8212:{depth:0,height:.43056,italic:.02778,skew:0},8216:{depth:0,height:.69444,italic:0,skew:0},8217:{depth:0,height:.69444,italic:0,skew:0},8220:{depth:0,height:.69444,italic:0,skew:0},8221:{depth:0,height:.69444,italic:0,skew:0},8224:{depth:.19444,height:.69444,italic:0,skew:0},8225:{depth:.19444,height:.69444,italic:0,skew:0},824:{depth:.19444,height:.69444,italic:0,skew:0},8242:{depth:0,height:.55556,italic:0,skew:0},83:{depth:0,height:.68333,italic:0,skew:0},84:{depth:0,height:.68333,italic:0,skew:0},8407:{depth:0,height:.71444,italic:.15382,skew:0},8463:{depth:0,height:.68889,italic:0,skew:0},8465:{depth:0,height:.69444,italic:0,skew:0},8467:{depth:0,height:.69444,italic:0,skew:.11111},8472:{depth:.19444,height:.43056,italic:0,skew:.11111},8476:{depth:0,height:.69444,italic:0,skew:0},85:{depth:0,height:.68333,italic:0,skew:0},8501:{depth:0,height:.69444,italic:0,skew:0},8592:{depth:-.13313,height:.36687,italic:0,skew:0},8593:{depth:.19444,height:.69444,italic:0,skew:0},8594:{depth:-.13313,height:.36687,italic:0,skew:0},8595:{depth:.19444,height:.69444,italic:0,skew:0},8596:{depth:-.13313,height:.36687,italic:0,skew:0},8597:{depth:.25,height:.75,italic:0,skew:0},8598:{depth:.19444,height:.69444,italic:0,skew:0},8599:{depth:.19444,height:.69444,italic:0,skew:0},86:{depth:0,height:.68333,italic:.01389,skew:0},8600:{depth:.19444,height:.69444,italic:0,skew:0},8601:{depth:.19444,height:.69444,italic:0,skew:0},8636:{depth:-.13313,height:.36687,italic:0,skew:0},8637:{depth:-.13313,height:.36687,italic:0,skew:0},8640:{depth:-.13313,height:.36687,italic:0,skew:0},8641:{depth:-.13313,height:.36687,italic:0,skew:0},8656:{depth:-.13313,height:.36687,italic:0,skew:0},8657:{depth:.19444,height:.69444,italic:0,skew:0},8658:{depth:-.13313,height:.36687,italic:0,skew:0},8659:{depth:.19444,height:.69444,italic:0,skew:0},8660:{depth:-.13313,height:.36687,italic:0,skew:0},8661:{depth:.25,height:.75,italic:0,skew:0},87:{depth:0,height:.68333,italic:.01389,skew:0},8704:{depth:0,height:.69444,italic:0,skew:0},8706:{depth:0,height:.69444,italic:.05556,skew:.08334},8707:{depth:0,height:.69444,italic:0,skew:0},8709:{depth:.05556,height:.75,italic:0,skew:0},8711:{depth:0,height:.68333,italic:0,skew:0},8712:{depth:.0391,height:.5391,italic:0,skew:0},8715:{depth:.0391,height:.5391,italic:0,skew:0},8722:{depth:.08333,height:.58333,italic:0,skew:0},8723:{depth:.08333,height:.58333,italic:0,skew:0},8725:{depth:.25,height:.75,italic:0,skew:0},8726:{depth:.25,height:.75,italic:0,skew:0},8727:{depth:-.03472,height:.46528,italic:0,skew:0},8728:{depth:-.05555,height:.44445,italic:0,skew:0},8729:{depth:-.05555,height:.44445,italic:0,skew:0},8730:{depth:.2,height:.8,italic:0,skew:0},8733:{depth:0,height:.43056,italic:0,skew:0},8734:{depth:0,height:.43056,italic:0,skew:0},8736:{depth:0,height:.69224,italic:0,skew:0},8739:{depth:.25,height:.75,italic:0,skew:0},8741:{depth:.25,height:.75,italic:0,skew:0},8743:{depth:0,height:.55556,italic:0,skew:0},8744:{depth:0,height:.55556,italic:0,skew:0},8745:{depth:0,height:.55556,italic:0,skew:0},8746:{depth:0,height:.55556,italic:0,skew:0},8747:{depth:.19444,height:.69444,italic:.11111,skew:0},8764:{depth:-.13313,height:.36687,italic:0,skew:0},8768:{depth:.19444,height:.69444,italic:0,skew:0},8771:{depth:-.03625,height:.46375,italic:0,skew:0},8776:{depth:-.01688,height:.48312,italic:0,skew:0},8781:{depth:-.03625,height:.46375,italic:0,skew:0},88:{depth:0,height:.68333,italic:0,skew:0},8801:{depth:-.03625,height:.46375,italic:0,skew:0},8804:{depth:.13597,height:.63597,italic:0,skew:0},8805:{depth:.13597,height:.63597,italic:0,skew:0},8810:{depth:.0391,height:.5391,italic:0,skew:0},8811:{depth:.0391,height:.5391,italic:0,skew:0},8826:{depth:.0391,height:.5391,italic:0,skew:0},8827:{depth:.0391,height:.5391,italic:0,skew:0},8834:{depth:.0391,height:.5391,italic:0,skew:0},8835:{depth:.0391,height:.5391,italic:0,skew:0},8838:{depth:.13597,height:.63597,italic:0,skew:0},8839:{depth:.13597,height:.63597,italic:0,skew:0},8846:{depth:0,height:.55556,italic:0,skew:0},8849:{depth:.13597,height:.63597,italic:0,skew:0},8850:{depth:.13597,height:.63597,italic:0,skew:0},8851:{depth:0,height:.55556,italic:0,skew:0},8852:{depth:0,height:.55556,italic:0,skew:0},8853:{depth:.08333,height:.58333,italic:0,skew:0},8854:{depth:.08333,height:.58333,italic:0,skew:0},8855:{depth:.08333,height:.58333,italic:0,skew:0},8856:{depth:.08333,height:.58333,italic:0,skew:0},8857:{depth:.08333,height:.58333,italic:0,skew:0},8866:{depth:0,height:.69444,italic:0,skew:0},8867:{depth:0,height:.69444,italic:0,skew:0},8868:{depth:0,height:.69444,italic:0,skew:0},8869:{depth:0,height:.69444,italic:0,skew:0},89:{depth:0,height:.68333,italic:.025,skew:0},8900:{depth:-.05555,height:.44445,italic:0,skew:0},8901:{depth:-.05555,height:.44445,italic:0,skew:0},8902:{depth:-.03472,height:.46528,italic:0,skew:0},8968:{depth:.25,height:.75,italic:0,skew:0},8969:{depth:.25,height:.75,italic:0,skew:0},8970:{depth:.25,height:.75,italic:0,skew:0},8971:{depth:.25,height:.75,italic:0,skew:0},8994:{depth:-.14236,height:.35764,italic:0,skew:0},8995:{depth:-.14236,height:.35764,italic:0,skew:0},90:{depth:0,height:.68333,italic:0,skew:0},91:{depth:.25,height:.75,italic:0,skew:0},915:{depth:0,height:.68333,italic:0,skew:0},916:{depth:0,height:.68333,italic:0,skew:0},92:{depth:.25,height:.75,italic:0,skew:0},920:{depth:0,height:.68333,italic:0,skew:0},923:{depth:0,height:.68333,italic:0,skew:0},926:{depth:0,height:.68333,italic:0,skew:0},928:{depth:0,height:.68333,italic:0,skew:0},93:{depth:.25,height:.75,italic:0,skew:0},931:{depth:0,height:.68333,italic:0,skew:0},933:{depth:0,height:.68333,italic:0,skew:0},934:{depth:0,height:.68333,italic:0,skew:0},936:{depth:0,height:.68333,italic:0,skew:0},937:{depth:0,height:.68333,italic:0,skew:0},94:{depth:0,height:.69444,italic:0,skew:0},95:{depth:.31,height:.12056,italic:.02778,skew:0},96:{depth:0,height:.69444,italic:0,skew:0},9651:{depth:.19444,height:.69444,italic:0,skew:0},9657:{depth:-.03472,height:.46528,italic:0,skew:0},9661:{depth:.19444,height:.69444,italic:0,skew:0},9667:{depth:-.03472,height:.46528,italic:0,skew:0},97:{depth:0,height:.43056,italic:0,skew:0},9711:{depth:.19444,height:.69444,italic:0,skew:0},98:{depth:0,height:.69444,italic:0,skew:0},9824:{depth:.12963,height:.69444,italic:0,skew:0},9825:{depth:.12963,height:.69444,italic:0,skew:0},9826:{depth:.12963,height:.69444,italic:0,skew:0},9827:{depth:.12963,height:.69444,italic:0,skew:0},9837:{depth:0,height:.75,italic:0,skew:0},9838:{depth:.19444,height:.69444,italic:0,skew:0},9839:{depth:.19444,height:.69444,italic:0,skew:0},99:{depth:0,height:.43056,italic:0,skew:0}},"Math-BoldItalic":{100:{depth:0,height:.69444,italic:0,skew:0},1009:{depth:.19444,height:.44444,italic:0,skew:0},101:{depth:0,height:.44444,italic:0,skew:0},1013:{depth:0,height:.44444,italic:0,skew:0},102:{depth:.19444,height:.69444,italic:.11042,skew:0},103:{depth:.19444,height:.44444,italic:.03704,skew:0},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.69326,italic:0,skew:0},106:{depth:.19444,height:.69326,italic:.0622,skew:0},107:{depth:0,height:.69444,italic:.01852,skew:0},108:{depth:0,height:.69444,italic:.0088,skew:0},109:{depth:0,height:.44444,italic:0,skew:0},110:{depth:0,height:.44444,italic:0,skew:0},111:{depth:0,height:.44444,italic:0,skew:0},112:{depth:.19444,height:.44444,italic:0,skew:0},113:{depth:.19444,height:.44444,italic:.03704,skew:0},114:{depth:0,height:.44444,italic:.03194,skew:0},115:{depth:0,height:.44444,italic:0,skew:0},116:{depth:0,height:.63492,italic:0,skew:0},117:{depth:0,height:.44444,italic:0,skew:0},118:{depth:0,height:.44444,italic:.03704,skew:0},119:{depth:0,height:.44444,italic:.02778,skew:0},120:{depth:0,height:.44444,italic:0,skew:0},121:{depth:.19444,height:.44444,italic:.03704,skew:0},122:{depth:0,height:.44444,italic:.04213,skew:0},47:{depth:.19444,height:.69444,italic:0,skew:0},65:{depth:0,height:.68611,italic:0,skew:0},66:{depth:0,height:.68611,italic:.04835,skew:0},67:{depth:0,height:.68611,italic:.06979,skew:0},68:{depth:0,height:.68611,italic:.03194,skew:0},69:{depth:0,height:.68611,italic:.05451,skew:0},70:{depth:0,height:.68611,italic:.15972,skew:0},71:{depth:0,height:.68611,italic:0,skew:0},72:{depth:0,height:.68611,italic:.08229,skew:0},73:{depth:0,height:.68611,italic:.07778,skew:0},74:{depth:0,height:.68611,italic:.10069,skew:0},75:{depth:0,height:.68611,italic:.06979,skew:0},76:{depth:0,height:.68611,italic:0,skew:0},77:{depth:0,height:.68611,italic:.11424,skew:0},78:{depth:0,height:.68611,italic:.11424,skew:0},79:{depth:0,height:.68611,italic:.03194,skew:0},80:{depth:0,height:.68611,italic:.15972,skew:0},81:{depth:.19444,height:.68611,italic:0,skew:0},82:{depth:0,height:.68611,italic:.00421,skew:0},83:{depth:0,height:.68611,italic:.05382,skew:0},84:{depth:0,height:.68611,italic:.15972,skew:0},85:{depth:0,height:.68611,italic:.11424,skew:0},86:{depth:0,height:.68611,italic:.25555,skew:0},87:{depth:0,height:.68611,italic:.15972,skew:0},88:{depth:0,height:.68611,italic:.07778,skew:0},89:{depth:0,height:.68611,italic:.25555,skew:0},90:{depth:0,height:.68611,italic:.06979,skew:0},915:{depth:0,height:.68611,italic:.15972,skew:0},916:{depth:0,height:.68611,italic:0,skew:0},920:{depth:0,height:.68611,italic:.03194,skew:0},923:{depth:0,height:.68611,italic:0,skew:0},926:{depth:0,height:.68611,italic:.07458,skew:0},928:{depth:0,height:.68611,italic:.08229,skew:0},931:{depth:0,height:.68611,italic:.05451,skew:0},933:{depth:0,height:.68611,italic:.15972,skew:0},934:{depth:0,height:.68611,italic:0,skew:0},936:{depth:0,height:.68611,italic:.11653,skew:0},937:{depth:0,height:.68611,italic:.04835,skew:0},945:{depth:0,height:.44444,italic:0,skew:0},946:{depth:.19444,height:.69444,italic:.03403,skew:0},947:{depth:.19444,height:.44444,italic:.06389,skew:0},948:{depth:0,height:.69444,italic:.03819,skew:0},949:{depth:0,height:.44444,italic:0,skew:0},950:{depth:.19444,height:.69444,italic:.06215,skew:0},951:{depth:.19444,height:.44444,italic:.03704,skew:0},952:{depth:0,height:.69444,italic:.03194,skew:0},953:{depth:0,height:.44444,italic:0,skew:0},954:{depth:0,height:.44444,italic:0,skew:0},955:{depth:0,height:.69444,italic:0,skew:0},956:{depth:.19444,height:.44444,italic:0,skew:0},957:{depth:0,height:.44444,italic:.06898,skew:0},958:{depth:.19444,height:.69444,italic:.03021,skew:0},959:{depth:0,height:.44444,italic:0,skew:0},960:{depth:0,height:.44444,italic:.03704,skew:0},961:{depth:.19444,height:.44444,italic:0,skew:0},962:{depth:.09722,height:.44444,italic:.07917,skew:0},963:{depth:0,height:.44444,italic:.03704,skew:0},964:{depth:0,height:.44444,italic:.13472,skew:0},965:{depth:0,height:.44444,italic:.03704,skew:0},966:{depth:.19444,height:.44444,italic:0,skew:0},967:{depth:.19444,height:.44444,italic:0,skew:0},968:{depth:.19444,height:.69444,italic:.03704,skew:0},969:{depth:0,height:.44444,italic:.03704,skew:0},97:{depth:0,height:.44444,italic:0,skew:0},977:{depth:0,height:.69444,italic:0,skew:0},98:{depth:0,height:.69444,italic:0,skew:0},981:{depth:.19444,height:.69444,italic:0,skew:0},982:{depth:0,height:.44444,italic:.03194,skew:0},99:{depth:0,height:.44444,italic:0,skew:0}},"Math-Italic":{100:{depth:0,height:.69444,italic:0,skew:.16667},1009:{depth:.19444,height:.43056,italic:0,skew:.08334},101:{depth:0,height:.43056,italic:0,skew:.05556},1013:{depth:0,height:.43056,italic:0,skew:.05556},102:{depth:.19444,height:.69444,italic:.10764,skew:.16667},103:{depth:.19444,height:.43056,italic:.03588,skew:.02778},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.65952,italic:0,skew:0},106:{depth:.19444,height:.65952,italic:.05724,skew:0},107:{depth:0,height:.69444,italic:.03148,skew:0},108:{depth:0,height:.69444,italic:.01968,skew:.08334},109:{depth:0,height:.43056,italic:0,skew:0},110:{depth:0,height:.43056,italic:0,skew:0},111:{depth:0,height:.43056,italic:0,skew:.05556},112:{depth:.19444,height:.43056,italic:0,skew:.08334},113:{depth:.19444,height:.43056,italic:.03588,skew:.08334},114:{depth:0,height:.43056,italic:.02778,skew:.05556},115:{depth:0,height:.43056,italic:0,skew:.05556},116:{depth:0,height:.61508,italic:0,skew:.08334},117:{depth:0,height:.43056,italic:0,skew:.02778},118:{depth:0,height:.43056,italic:.03588,skew:.02778},119:{depth:0,height:.43056,italic:.02691,skew:.08334},120:{depth:0,height:.43056,italic:0,skew:.02778},121:{depth:.19444,height:.43056,italic:.03588,skew:.05556},122:{depth:0,height:.43056,italic:.04398,skew:.05556},47:{depth:.19444,height:.69444,italic:0,skew:0},65:{depth:0,height:.68333,italic:0,skew:.13889},66:{depth:0,height:.68333,italic:.05017,skew:.08334},67:{depth:0,height:.68333,italic:.07153,skew:.08334},68:{depth:0,height:.68333,italic:.02778,skew:.05556},69:{depth:0,height:.68333,italic:.05764,skew:.08334},70:{depth:0,height:.68333,italic:.13889,skew:.08334},71:{depth:0,height:.68333,italic:0,skew:.08334},72:{depth:0,height:.68333,italic:.08125,skew:.05556},73:{depth:0,height:.68333,italic:.07847,skew:.11111},74:{depth:0,height:.68333,italic:.09618,skew:.16667},75:{depth:0,height:.68333,italic:.07153,skew:.05556},76:{depth:0,height:.68333,italic:0,skew:.02778},77:{depth:0,height:.68333,italic:.10903,skew:.08334},78:{depth:0,height:.68333,italic:.10903,skew:.08334},79:{depth:0,height:.68333,italic:.02778,skew:.08334},80:{depth:0,height:.68333,italic:.13889,skew:.08334},81:{depth:.19444,height:.68333,italic:0,skew:.08334},82:{depth:0,height:.68333,italic:.00773,skew:.08334},83:{depth:0,height:.68333,italic:.05764,skew:.08334},84:{depth:0,height:.68333,italic:.13889,skew:.08334},85:{depth:0,height:.68333,italic:.10903,skew:.02778},86:{depth:0,height:.68333,italic:.22222,skew:0},87:{depth:0,height:.68333,italic:.13889,skew:0},88:{depth:0,height:.68333,italic:.07847,skew:.08334},89:{depth:0,height:.68333,italic:.22222,skew:0},90:{depth:0,height:.68333,italic:.07153,skew:.08334},915:{depth:0,height:.68333,italic:.13889,skew:.08334},916:{depth:0,height:.68333,italic:0,skew:.16667},920:{depth:0,height:.68333,italic:.02778,skew:.08334},923:{depth:0,height:.68333,italic:0,skew:.16667},926:{depth:0,height:.68333,italic:.07569,skew:.08334},928:{depth:0,height:.68333,italic:.08125,skew:.05556},931:{depth:0,height:.68333,italic:.05764,skew:.08334},933:{depth:0,height:.68333,italic:.13889,skew:.05556},934:{depth:0,height:.68333,italic:0,skew:.08334},936:{depth:0,height:.68333,italic:.11,skew:.05556},937:{depth:0,height:.68333,italic:.05017,skew:.08334},945:{depth:0,height:.43056,italic:.0037,skew:.02778},946:{depth:.19444,height:.69444,italic:.05278,skew:.08334},947:{depth:.19444,height:.43056,italic:.05556,skew:0},948:{depth:0,height:.69444,italic:.03785,skew:.05556},949:{depth:0,height:.43056,italic:0,skew:.08334},950:{depth:.19444,height:.69444,italic:.07378,skew:.08334},951:{depth:.19444,height:.43056,italic:.03588,skew:.05556},952:{depth:0,height:.69444,italic:.02778,skew:.08334},953:{depth:0,height:.43056,italic:0,skew:.05556},954:{depth:0,height:.43056,italic:0,skew:0},955:{depth:0,height:.69444,italic:0,skew:0},956:{depth:.19444,height:.43056,italic:0,skew:.02778},957:{depth:0,height:.43056,italic:.06366,skew:.02778},958:{depth:.19444,height:.69444,italic:.04601,skew:.11111},959:{depth:0,height:.43056,italic:0,skew:.05556},960:{depth:0,height:.43056,italic:.03588,skew:0},961:{depth:.19444,height:.43056,italic:0,skew:.08334},962:{depth:.09722,height:.43056,italic:.07986,skew:.08334},963:{depth:0,height:.43056,italic:.03588,skew:0},964:{depth:0,height:.43056,italic:.1132,skew:.02778},965:{depth:0,height:.43056,italic:.03588,skew:.02778},966:{depth:.19444,height:.43056,italic:0,skew:.08334},967:{depth:.19444,height:.43056,italic:0,skew:.05556},968:{depth:.19444,height:.69444,italic:.03588,skew:.11111},969:{depth:0,height:.43056,italic:.03588,skew:0},97:{depth:0,height:.43056,italic:0,skew:0},977:{depth:0,height:.69444,italic:0,skew:.08334},98:{depth:0,height:.69444,italic:0,skew:0},981:{depth:.19444,height:.69444,italic:0,skew:.08334},982:{depth:0,height:.43056,italic:.02778,skew:0},99:{depth:0,height:.43056,italic:0,skew:.05556}},"Math-Regular":{100:{depth:0,height:.69444,italic:0,skew:.16667},1009:{depth:.19444,height:.43056,italic:0,skew:.08334},101:{depth:0,height:.43056,italic:0,skew:.05556},1013:{depth:0,height:.43056,italic:0,skew:.05556},102:{depth:.19444,height:.69444,italic:.10764,skew:.16667},103:{depth:.19444,height:.43056,italic:.03588,skew:.02778},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.65952,italic:0,skew:0},106:{depth:.19444,height:.65952,italic:.05724,skew:0},107:{depth:0,height:.69444,italic:.03148,skew:0},108:{depth:0,height:.69444,italic:.01968,skew:.08334},109:{depth:0,height:.43056,italic:0,skew:0},110:{depth:0,height:.43056,italic:0,skew:0},111:{depth:0,height:.43056,italic:0,skew:.05556},112:{depth:.19444,height:.43056,italic:0,skew:.08334},113:{depth:.19444,height:.43056,italic:.03588,skew:.08334},114:{depth:0,height:.43056,italic:.02778,skew:.05556},115:{depth:0,height:.43056,italic:0,skew:.05556},116:{depth:0,height:.61508,italic:0,skew:.08334},117:{depth:0,height:.43056,italic:0,skew:.02778},118:{depth:0,height:.43056,italic:.03588,skew:.02778},119:{depth:0,height:.43056,italic:.02691,skew:.08334},120:{depth:0,height:.43056,italic:0,skew:.02778},121:{depth:.19444,height:.43056,italic:.03588,skew:.05556},122:{depth:0,height:.43056,italic:.04398,skew:.05556},65:{depth:0,height:.68333,italic:0,skew:.13889},66:{depth:0,height:.68333,italic:.05017,skew:.08334},67:{depth:0,height:.68333,italic:.07153,skew:.08334},68:{depth:0,height:.68333,italic:.02778,skew:.05556},69:{depth:0,height:.68333,italic:.05764,skew:.08334},70:{depth:0,height:.68333,italic:.13889,skew:.08334},71:{depth:0,height:.68333,italic:0,skew:.08334},72:{depth:0,height:.68333,italic:.08125,skew:.05556},73:{depth:0,height:.68333,italic:.07847,skew:.11111},74:{depth:0,height:.68333,italic:.09618,skew:.16667},75:{depth:0,height:.68333,italic:.07153,skew:.05556},76:{depth:0,height:.68333,italic:0,skew:.02778},77:{depth:0,height:.68333,italic:.10903,skew:.08334},78:{depth:0,height:.68333,italic:.10903,skew:.08334},79:{depth:0,height:.68333,italic:.02778,skew:.08334},80:{depth:0,height:.68333,italic:.13889,skew:.08334},81:{depth:.19444,height:.68333,italic:0,skew:.08334},82:{depth:0,height:.68333,italic:.00773,skew:.08334},83:{depth:0,height:.68333,italic:.05764,skew:.08334},84:{depth:0,height:.68333,italic:.13889,skew:.08334},85:{depth:0,height:.68333,italic:.10903,skew:.02778},86:{depth:0,height:.68333,italic:.22222,skew:0},87:{depth:0,height:.68333,italic:.13889,skew:0},88:{depth:0,height:.68333,italic:.07847,skew:.08334},89:{depth:0,height:.68333,italic:.22222,skew:0},90:{depth:0,height:.68333,italic:.07153,skew:.08334},915:{depth:0,height:.68333,italic:.13889,skew:.08334},916:{depth:0,height:.68333,italic:0,skew:.16667},920:{depth:0,height:.68333,italic:.02778,skew:.08334},923:{depth:0,height:.68333,italic:0,skew:.16667},926:{depth:0,height:.68333,italic:.07569,skew:.08334},928:{depth:0,height:.68333,italic:.08125,skew:.05556},931:{depth:0,height:.68333,italic:.05764,skew:.08334},933:{depth:0,height:.68333,italic:.13889,skew:.05556},934:{depth:0,height:.68333,italic:0,skew:.08334},936:{depth:0,height:.68333,italic:.11,skew:.05556},937:{depth:0,height:.68333,italic:.05017,skew:.08334},945:{depth:0,height:.43056,italic:.0037,skew:.02778},946:{depth:.19444,height:.69444,italic:.05278,skew:.08334},947:{depth:.19444,height:.43056,italic:.05556,skew:0},948:{depth:0,height:.69444,italic:.03785,skew:.05556},949:{depth:0,height:.43056,italic:0,skew:.08334},950:{depth:.19444,height:.69444,italic:.07378,skew:.08334},951:{depth:.19444,height:.43056,italic:.03588,skew:.05556},952:{depth:0,height:.69444,italic:.02778,skew:.08334},953:{depth:0,height:.43056,italic:0,skew:.05556},954:{depth:0,height:.43056,italic:0,skew:0},955:{depth:0,height:.69444,italic:0,skew:0},956:{depth:.19444,height:.43056,italic:0,skew:.02778},957:{depth:0,height:.43056,italic:.06366,skew:.02778},958:{depth:.19444,height:.69444,italic:.04601,skew:.11111},959:{depth:0,height:.43056,italic:0,skew:.05556},960:{depth:0,height:.43056,italic:.03588,skew:0},961:{depth:.19444,height:.43056,italic:0,skew:.08334},962:{depth:.09722,height:.43056,italic:.07986,skew:.08334},963:{depth:0,height:.43056,italic:.03588,skew:0},964:{depth:0,height:.43056,italic:.1132,skew:.02778},965:{depth:0,height:.43056,italic:.03588,skew:.02778},966:{depth:.19444,height:.43056,italic:0,skew:.08334},967:{depth:.19444,height:.43056,italic:0,skew:.05556},968:{depth:.19444,height:.69444,italic:.03588,skew:.11111},969:{depth:0,height:.43056,italic:.03588,skew:0},97:{depth:0,height:.43056,italic:0,skew:0},977:{depth:0,height:.69444,italic:0,skew:.08334},98:{depth:0,height:.69444,italic:0,skew:0},981:{depth:.19444,height:.69444,italic:0,skew:.08334},982:{depth:0,height:.43056,italic:.02778,skew:0},99:{depth:0,height:.43056,italic:0,skew:.05556}},"Size1-Regular":{8748:{depth:.306,height:.805,italic:.19445,skew:0},8749:{depth:.306,height:.805,italic:.19445,skew:0},10216:{depth:.35001,height:.85,italic:0,skew:0},10217:{depth:.35001,height:.85,italic:0,skew:0},10752:{depth:.25001,height:.75,italic:0,skew:0},10753:{depth:.25001,height:.75,italic:0,skew:0},10754:{depth:.25001,height:.75,italic:0,skew:0},10756:{depth:.25001,height:.75,italic:0,skew:0},10758:{depth:.25001,height:.75,italic:0,skew:0},123:{depth:.35001,height:.85,italic:0,skew:0},125:{depth:.35001,height:.85,italic:0,skew:0},40:{depth:.35001,height:.85,italic:0,skew:0},41:{depth:.35001,height:.85,italic:0,skew:0},47:{depth:.35001,height:.85,italic:0,skew:0},710:{depth:0,height:.72222,italic:0,skew:0},732:{depth:0,height:.72222,italic:0,skew:0},770:{depth:0,height:.72222,italic:0,skew:0},771:{depth:0,height:.72222,italic:0,skew:0},8214:{depth:-99e-5,height:.601,italic:0,skew:0},8593:{depth:1e-5,height:.6,italic:0,skew:0},8595:{depth:1e-5,height:.6,italic:0,skew:0},8657:{depth:1e-5,height:.6,italic:0,skew:0},8659:{depth:1e-5,height:.6,italic:0,skew:0},8719:{depth:.25001,height:.75,italic:0,skew:0},8720:{depth:.25001,height:.75,italic:0,skew:0},8721:{depth:.25001,height:.75,italic:0,skew:0},8730:{depth:.35001,height:.85,italic:0,skew:0},8739:{depth:-.00599,height:.606,italic:0,skew:0},8741:{depth:-.00599,height:.606,italic:0,skew:0},8747:{depth:.30612,height:.805,italic:.19445,skew:0},8750:{depth:.30612,height:.805,italic:.19445,skew:0},8896:{depth:.25001,height:.75,italic:0,skew:0},8897:{depth:.25001,height:.75,italic:0,skew:0},8898:{depth:.25001,height:.75,italic:0,skew:0},8899:{depth:.25001,height:.75,italic:0,skew:0},8968:{depth:.35001,height:.85,italic:0,skew:0},8969:{depth:.35001,height:.85,italic:0,skew:0},8970:{depth:.35001,height:.85,italic:0,skew:0},8971:{depth:.35001,height:.85,italic:0,skew:0},91:{depth:.35001,height:.85,italic:0,skew:0},9168:{depth:-99e-5,height:.601,italic:0,skew:0},92:{depth:.35001,height:.85,italic:0,skew:0},93:{depth:.35001,height:.85,italic:0,skew:0}},"Size2-Regular":{8748:{depth:.862,height:1.36,italic:.44445,skew:0},8749:{depth:.862,height:1.36,italic:.44445,skew:0},10216:{depth:.65002,height:1.15,italic:0,skew:0},10217:{depth:.65002,height:1.15,italic:0,skew:0},10752:{depth:.55001,height:1.05,italic:0,skew:0},10753:{depth:.55001,height:1.05,italic:0,skew:0},10754:{depth:.55001,height:1.05,italic:0,skew:0},10756:{depth:.55001,height:1.05,italic:0,skew:0},10758:{depth:.55001,height:1.05,italic:0,skew:0},123:{depth:.65002,height:1.15,italic:0,skew:0},125:{depth:.65002,height:1.15,italic:0,skew:0},40:{depth:.65002,height:1.15,italic:0,skew:0},41:{depth:.65002,height:1.15,italic:0,skew:0},47:{depth:.65002,height:1.15,italic:0,skew:0},710:{depth:0,height:.75,italic:0,skew:0},732:{depth:0,height:.75,italic:0,skew:0},770:{depth:0,height:.75,italic:0,skew:0},771:{depth:0,height:.75,italic:0,skew:0},8719:{depth:.55001,height:1.05,italic:0,skew:0},8720:{depth:.55001,height:1.05,italic:0,skew:0},8721:{depth:.55001,height:1.05,italic:0,skew:0},8730:{depth:.65002,height:1.15,italic:0,skew:0},8747:{depth:.86225,height:1.36,italic:.44445,skew:0},8750:{depth:.86225,height:1.36,italic:.44445,skew:0},8896:{depth:.55001,height:1.05,italic:0,skew:0},8897:{depth:.55001,height:1.05,italic:0,skew:0},8898:{depth:.55001,height:1.05,italic:0,skew:0},8899:{depth:.55001,height:1.05,italic:0,skew:0},8968:{depth:.65002,height:1.15,italic:0,skew:0},8969:{depth:.65002,height:1.15,italic:0,skew:0},8970:{depth:.65002,height:1.15,italic:0,skew:0},8971:{depth:.65002,height:1.15,italic:0,skew:0},91:{depth:.65002,height:1.15,italic:0,skew:0},92:{depth:.65002,height:1.15,italic:0,skew:0},93:{depth:.65002,height:1.15,italic:0,skew:0}},"Size3-Regular":{10216:{depth:.95003,height:1.45,italic:0,skew:0},10217:{depth:.95003,height:1.45,italic:0,skew:0},123:{depth:.95003,height:1.45,italic:0,skew:0},125:{depth:.95003,height:1.45,italic:0,skew:0},40:{depth:.95003,height:1.45,italic:0,skew:0},41:{depth:.95003,height:1.45,italic:0,skew:0},47:{depth:.95003,height:1.45,italic:0,skew:0},710:{depth:0,height:.75,italic:0,skew:0},732:{depth:0,height:.75,italic:0,skew:0},770:{depth:0,height:.75,italic:0,skew:0},771:{depth:0,height:.75,italic:0,skew:0},8730:{depth:.95003,height:1.45,italic:0,skew:0},8968:{depth:.95003,height:1.45,italic:0,skew:0},8969:{depth:.95003,height:1.45,italic:0,skew:0},8970:{depth:.95003,height:1.45,italic:0,skew:0},8971:{depth:.95003,height:1.45,italic:0,skew:0},91:{depth:.95003,height:1.45,italic:0,skew:0},92:{depth:.95003,height:1.45,italic:0,skew:0},93:{depth:.95003,height:1.45,italic:0,skew:0}},"Size4-Regular":{10216:{depth:1.25003,height:1.75,italic:0,skew:0},10217:{depth:1.25003,height:1.75,italic:0,skew:0},123:{depth:1.25003,height:1.75,italic:0,skew:0},125:{depth:1.25003,height:1.75,italic:0,skew:0},40:{depth:1.25003,height:1.75,italic:0,skew:0},41:{depth:1.25003,height:1.75,italic:0,skew:0},47:{depth:1.25003,height:1.75,italic:0,skew:0},57344:{depth:-.00499,height:.605,italic:0,skew:0},57345:{depth:-.00499,height:.605,italic:0,skew:0},57680:{depth:0,height:.12,italic:0,skew:0},57681:{depth:0,height:.12,italic:0,skew:0},57682:{depth:0,height:.12,italic:0,skew:0},57683:{depth:0,height:.12,italic:0,skew:0},710:{depth:0,height:.825,italic:0,skew:0},732:{depth:0,height:.825,italic:0,skew:0},770:{depth:0,height:.825,italic:0,skew:0},771:{depth:0,height:.825,italic:0,skew:0},8730:{depth:1.25003,height:1.75,italic:0,skew:0},8968:{depth:1.25003,height:1.75,italic:0,skew:0},8969:{depth:1.25003,height:1.75,italic:0,skew:0},8970:{depth:1.25003,height:1.75,italic:0,skew:0},8971:{depth:1.25003,height:1.75,italic:0,skew:0},91:{depth:1.25003,height:1.75,italic:0,skew:0},9115:{depth:.64502,height:1.155,italic:0,skew:0},9116:{depth:1e-5,height:.6,italic:0,skew:0},9117:{depth:.64502,height:1.155,italic:0,skew:0},9118:{depth:.64502,height:1.155,italic:0,skew:0},9119:{depth:1e-5,height:.6,italic:0,skew:0},9120:{depth:.64502,height:1.155,italic:0,skew:0},9121:{depth:.64502,height:1.155,italic:0,skew:0},9122:{depth:-99e-5,height:.601,italic:0,skew:0},9123:{depth:.64502,height:1.155,italic:0,skew:0},9124:{depth:.64502,height:1.155,italic:0,skew:0},9125:{depth:-99e-5,height:.601,italic:0,skew:0},9126:{depth:.64502,height:1.155,italic:0,skew:0},9127:{depth:1e-5,height:.9,italic:0,skew:0},9128:{depth:.65002,height:1.15,italic:0,skew:0},9129:{depth:.90001,height:0,italic:0,skew:0},9130:{depth:0,height:.3,italic:0,skew:0},9131:{depth:1e-5,height:.9,italic:0,skew:0},9132:{depth:.65002,height:1.15,italic:0,skew:0},9133:{depth:.90001,height:0,italic:0,skew:0},9143:{depth:.88502,height:.915,italic:0,skew:0},92:{depth:1.25003,height:1.75,italic:0,skew:0},93:{depth:1.25003,height:1.75,italic:0,skew:0}}}; +var V=function(e,t){return H[t][e.charCodeAt(0)]};t.exports={metrics:G,getCharacterMetrics:V}},{"./Style":7}],15:[function(e,t,i){var h=e("./utils");var a=e("./ParseError");var r={"\\sqrt":{numArgs:1,numOptionalArgs:1,handler:function(e,t,i,h){if(t!=null){throw new a("Optional arguments to \\sqrt aren't supported yet",this.lexer,h[1]-1)}return{type:"sqrt",body:i}}},"\\text":{numArgs:1,argTypes:["text"],greediness:2,handler:function(e,t){var i;if(t.type==="ordgroup"){i=t.value}else{i=[t]}return{type:"text",body:i}}},"\\color":{numArgs:2,allowedInText:true,argTypes:["color","original"],handler:function(e,t,i){var h;if(i.type==="ordgroup"){h=i.value}else{h=[i]}return{type:"color",color:t.value,value:h}}},"\\overline":{numArgs:1,handler:function(e,t){return{type:"overline",body:t}}},"\\rule":{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"],handler:function(e,t,i,h){return{type:"rule",shift:t&&t.value,width:i.value,height:h.value}}},"\\KaTeX":{numArgs:0,handler:function(e){return{type:"katex"}}}};var l={"\\bigl":{type:"open",size:1},"\\Bigl":{type:"open",size:2},"\\biggl":{type:"open",size:3},"\\Biggl":{type:"open",size:4},"\\bigr":{type:"close",size:1},"\\Bigr":{type:"close",size:2},"\\biggr":{type:"close",size:3},"\\Biggr":{type:"close",size:4},"\\bigm":{type:"rel",size:1},"\\Bigm":{type:"rel",size:2},"\\biggm":{type:"rel",size:3},"\\Biggm":{type:"rel",size:4},"\\big":{type:"textord",size:1},"\\Big":{type:"textord",size:2},"\\bigg":{type:"textord",size:3},"\\Bigg":{type:"textord",size:4}};var s=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var p=[{funcs:["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple"],data:{numArgs:1,allowedInText:true,handler:function(e,t){var i;if(t.type==="ordgroup"){i=t.value}else{i=[t]}return{type:"color",color:"katex-"+e.slice(1),value:i}}}},{funcs:["\\arcsin","\\arccos","\\arctan","\\arg","\\cos","\\cosh","\\cot","\\coth","\\csc","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\tan","\\tanh"],data:{numArgs:0,handler:function(e){return{type:"op",limits:false,symbol:false,body:e}}}},{funcs:["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],data:{numArgs:0,handler:function(e){return{type:"op",limits:true,symbol:false,body:e}}}},{funcs:["\\int","\\iint","\\iiint","\\oint"],data:{numArgs:0,handler:function(e){return{type:"op",limits:false,symbol:true,body:e}}}},{funcs:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],data:{numArgs:0,handler:function(e){return{type:"op",limits:true,symbol:true,body:e}}}},{funcs:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom"],data:{numArgs:2,greediness:2,handler:function(e,t,i){var h;var a=null;var r=null;var l="auto";switch(e){case"\\dfrac":case"\\frac":case"\\tfrac":h=true;break;case"\\dbinom":case"\\binom":case"\\tbinom":h=false;a="(";r=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text";break}return{type:"genfrac",numer:t,denom:i,hasBarLine:h,leftDelim:a,rightDelim:r,size:l}}}},{funcs:["\\llap","\\rlap"],data:{numArgs:1,allowedInText:true,handler:function(e,t){return{type:e.slice(1),body:t}}}},{funcs:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg","\\left","\\right"],data:{numArgs:1,handler:function(e,t,i){if(!h.contains(s,t.value)){throw new a("Invalid delimiter: '"+t.value+"' after '"+e+"'",this.lexer,i[1])}if(e==="\\left"||e==="\\right"){return{type:"leftright",value:t.value}}else{return{type:"delimsizing",size:l[e].size,delimType:l[e].type,value:t.value}}}}},{funcs:["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],data:{numArgs:0}},{funcs:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],data:{numArgs:0}},{funcs:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],data:{numArgs:1,handler:function(e,t){return{type:"accent",accent:e,base:t}}}},{funcs:["\\over","\\choose"],data:{numArgs:0,handler:function(e){var t;switch(e){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t}}}}];var c=function(e,t){for(var i=0;i<e.length;i++){r[e[i]]=t}};for(var o=0;o<p.length;o++){c(p[o].funcs,p[o].data)}for(var n in r){if(r.hasOwnProperty(n)){var g=r[n];r[n]={numArgs:g.numArgs,argTypes:g.argTypes,greediness:g.greediness===undefined?1:g.greediness,allowedInText:g.allowedInText?g.allowedInText:false,numOptionalArgs:g.numOptionalArgs===undefined?0:g.numOptionalArgs,handler:g.handler}}}t.exports={funcs:r}},{"./ParseError":4,"./utils":19}],16:[function(e,t,i){var h=e("./utils");function a(e,t){this.type=e;this.attributes={};this.children=t||[]}a.prototype.setAttribute=function(e,t){this.attributes[e]=t};a.prototype.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e.setAttribute(t,this.attributes[t])}}for(var i=0;i<this.children.length;i++){e.appendChild(this.children[i].toNode())}return e};a.prototype.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e+=" "+t+'="';e+=h.escape(this.attributes[t]);e+='"'}}e+=">";for(var i=0;i<this.children.length;i++){e+=this.children[i].toMarkup()}e+="</"+this.type+">";return e};function r(e){this.text=e}r.prototype.toNode=function(){return document.createTextNode(this.text)};r.prototype.toMarkup=function(){return h.escape(this.text)};t.exports={MathNode:a,TextNode:r}},{"./utils":19}],17:[function(e,t,i){var h=e("./Parser");var a=function(e,t){var i=new h(e,t);return i.parse()};t.exports=a},{"./Parser":5}],18:[function(e,t,i){var h={math:{"\\equiv":{font:"main",group:"rel",replace:"\u2261"},"\\prec":{font:"main",group:"rel",replace:"\u227a"},"\\succ":{font:"main",group:"rel",replace:"\u227b"},"\\sim":{font:"main",group:"rel",replace:"\u223c"},"\\perp":{font:"main",group:"rel",replace:"\u22a5"},"\\preceq":{font:"main",group:"rel",replace:"\u2aaf"},"\\succeq":{font:"main",group:"rel",replace:"\u2ab0"},"\\simeq":{font:"main",group:"rel",replace:"\u2243"},"\\mid":{font:"main",group:"rel",replace:"\u2223"},"\\ll":{font:"main",group:"rel",replace:"\u226a"},"\\gg":{font:"main",group:"rel",replace:"\u226b"},"\\asymp":{font:"main",group:"rel",replace:"\u224d"},"\\parallel":{font:"main",group:"rel",replace:"\u2225"},"\\bowtie":{font:"main",group:"rel",replace:"\u22c8"},"\\smile":{font:"main",group:"rel",replace:"\u2323"},"\\sqsubseteq":{font:"main",group:"rel",replace:"\u2291"},"\\sqsupseteq":{font:"main",group:"rel",replace:"\u2292"},"\\doteq":{font:"main",group:"rel",replace:"\u2250"},"\\frown":{font:"main",group:"rel",replace:"\u2322"},"\\ni":{font:"main",group:"rel",replace:"\u220b"},"\\propto":{font:"main",group:"rel",replace:"\u221d"},"\\vdash":{font:"main",group:"rel",replace:"\u22a2"},"\\dashv":{font:"main",group:"rel",replace:"\u22a3"},"\\owns":{font:"main",group:"rel",replace:"\u220b"},"\\ldotp":{font:"main",group:"punct",replace:"."},"\\cdotp":{font:"main",group:"punct",replace:"\u22c5"},"\\aleph":{font:"main",group:"textord",replace:"\u2135"},"\\forall":{font:"main",group:"textord",replace:"\u2200"},"\\hbar":{font:"main",group:"textord",replace:"\u210f"},"\\exists":{font:"main",group:"textord",replace:"\u2203"},"\\nabla":{font:"main",group:"textord",replace:"\u2207"},"\\flat":{font:"main",group:"textord",replace:"\u266d"},"\\ell":{font:"main",group:"textord",replace:"\u2113"},"\\natural":{font:"main",group:"textord",replace:"\u266e"},"\\clubsuit":{font:"main",group:"textord",replace:"\u2663"},"\\wp":{font:"main",group:"textord",replace:"\u2118"},"\\sharp":{font:"main",group:"textord",replace:"\u266f"},"\\diamondsuit":{font:"main",group:"textord",replace:"\u2662"},"\\Re":{font:"main",group:"textord",replace:"\u211c"},"\\heartsuit":{font:"main",group:"textord",replace:"\u2661"},"\\Im":{font:"main",group:"textord",replace:"\u2111"},"\\spadesuit":{font:"main",group:"textord",replace:"\u2660"},"\\dag":{font:"main",group:"textord",replace:"\u2020"},"\\ddag":{font:"main",group:"textord",replace:"\u2021"},"\\rmoustache":{font:"main",group:"close",replace:"\u23b1"},"\\lmoustache":{font:"main",group:"open",replace:"\u23b0"},"\\rgroup":{font:"main",group:"close",replace:"\u27ef"},"\\lgroup":{font:"main",group:"open",replace:"\u27ee"},"\\mp":{font:"main",group:"bin",replace:"\u2213"},"\\ominus":{font:"main",group:"bin",replace:"\u2296"},"\\uplus":{font:"main",group:"bin",replace:"\u228e"},"\\sqcap":{font:"main",group:"bin",replace:"\u2293"},"\\ast":{font:"main",group:"bin",replace:"\u2217"},"\\sqcup":{font:"main",group:"bin",replace:"\u2294"},"\\bigcirc":{font:"main",group:"bin",replace:"\u25ef"},"\\bullet":{font:"main",group:"bin",replace:"\u2219"},"\\ddagger":{font:"main",group:"bin",replace:"\u2021"},"\\wr":{font:"main",group:"bin",replace:"\u2240"},"\\amalg":{font:"main",group:"bin",replace:"\u2a3f"},"\\longleftarrow":{font:"main",group:"rel",replace:"\u27f5"},"\\Leftarrow":{font:"main",group:"rel",replace:"\u21d0"},"\\Longleftarrow":{font:"main",group:"rel",replace:"\u27f8"},"\\longrightarrow":{font:"main",group:"rel",replace:"\u27f6"},"\\Rightarrow":{font:"main",group:"rel",replace:"\u21d2"},"\\Longrightarrow":{font:"main",group:"rel",replace:"\u27f9"},"\\leftrightarrow":{font:"main",group:"rel",replace:"\u2194"},"\\longleftrightarrow":{font:"main",group:"rel",replace:"\u27f7"},"\\Leftrightarrow":{font:"main",group:"rel",replace:"\u21d4"},"\\Longleftrightarrow":{font:"main",group:"rel",replace:"\u27fa"},"\\mapsto":{font:"main",group:"rel",replace:"\u21a6"},"\\longmapsto":{font:"main",group:"rel",replace:"\u27fc"},"\\nearrow":{font:"main",group:"rel",replace:"\u2197"},"\\hookleftarrow":{font:"main",group:"rel",replace:"\u21a9"},"\\hookrightarrow":{font:"main",group:"rel",replace:"\u21aa"},"\\searrow":{font:"main",group:"rel",replace:"\u2198"},"\\leftharpoonup":{font:"main",group:"rel",replace:"\u21bc"},"\\rightharpoonup":{font:"main",group:"rel",replace:"\u21c0"},"\\swarrow":{font:"main",group:"rel",replace:"\u2199"},"\\leftharpoondown":{font:"main",group:"rel",replace:"\u21bd"},"\\rightharpoondown":{font:"main",group:"rel",replace:"\u21c1"},"\\nwarrow":{font:"main",group:"rel",replace:"\u2196"},"\\rightleftharpoons":{font:"main",group:"rel",replace:"\u21cc"},"\\nless":{font:"ams",group:"rel",replace:"\u226e"},"\\nleqslant":{font:"ams",group:"rel",replace:"\ue010"},"\\nleqq":{font:"ams",group:"rel",replace:"\ue011"},"\\lneq":{font:"ams",group:"rel",replace:"\u2a87"},"\\lneqq":{font:"ams",group:"rel",replace:"\u2268"},"\\lvertneqq":{font:"ams",group:"rel",replace:"\ue00c"},"\\lnsim":{font:"ams",group:"rel",replace:"\u22e6"},"\\lnapprox":{font:"ams",group:"rel",replace:"\u2a89"},"\\nprec":{font:"ams",group:"rel",replace:"\u2280"},"\\npreceq":{font:"ams",group:"rel",replace:"\u22e0"},"\\precnsim":{font:"ams",group:"rel",replace:"\u22e8"},"\\precnapprox":{font:"ams",group:"rel",replace:"\u2ab9"},"\\nsim":{font:"ams",group:"rel",replace:"\u2241"},"\\nshortmid":{font:"ams",group:"rel",replace:"\ue006"},"\\nmid":{font:"ams",group:"rel",replace:"\u2224"},"\\nvdash":{font:"ams",group:"rel",replace:"\u22ac"},"\\nvDash":{font:"ams",group:"rel",replace:"\u22ad"},"\\ntriangleleft":{font:"ams",group:"rel",replace:"\u22ea"},"\\ntrianglelefteq":{font:"ams",group:"rel",replace:"\u22ec"},"\\subsetneq":{font:"ams",group:"rel",replace:"\u228a"},"\\varsubsetneq":{font:"ams",group:"rel",replace:"\ue01a"},"\\subsetneqq":{font:"ams",group:"rel",replace:"\u2acb"},"\\varsubsetneqq":{font:"ams",group:"rel",replace:"\ue017"},"\\ngtr":{font:"ams",group:"rel",replace:"\u226f"},"\\ngeqslant":{font:"ams",group:"rel",replace:"\ue00f"},"\\ngeqq":{font:"ams",group:"rel",replace:"\ue00e"},"\\gneq":{font:"ams",group:"rel",replace:"\u2a88"},"\\gneqq":{font:"ams",group:"rel",replace:"\u2269"},"\\gvertneqq":{font:"ams",group:"rel",replace:"\ue00d"},"\\gnsim":{font:"ams",group:"rel",replace:"\u22e7"},"\\gnapprox":{font:"ams",group:"rel",replace:"\u2a8a"},"\\nsucc":{font:"ams",group:"rel",replace:"\u2281"},"\\nsucceq":{font:"ams",group:"rel",replace:"\u22e1"},"\\succnsim":{font:"ams",group:"rel",replace:"\u22e9"},"\\succnapprox":{font:"ams",group:"rel",replace:"\u2aba"},"\\ncong":{font:"ams",group:"rel",replace:"\u2246"},"\\nshortparallel":{font:"ams",group:"rel",replace:"\ue007"},"\\nparallel":{font:"ams",group:"rel",replace:"\u2226"},"\\nVDash":{font:"ams",group:"rel",replace:"\u22af"},"\\ntriangleright":{font:"ams",group:"rel",replace:"\u22eb"},"\\ntrianglerighteq":{font:"ams",group:"rel",replace:"\u22ed"},"\\nsupseteqq":{font:"ams",group:"rel",replace:"\ue018"},"\\supsetneq":{font:"ams",group:"rel",replace:"\u228b"},"\\varsupsetneq":{font:"ams",group:"rel",replace:"\ue01b"},"\\supsetneqq":{font:"ams",group:"rel",replace:"\u2acc"},"\\varsupsetneqq":{font:"ams",group:"rel",replace:"\ue019"},"\\nVdash":{font:"ams",group:"rel",replace:"\u22ae"},"\\precneqq":{font:"ams",group:"rel",replace:"\u2ab5"},"\\succneqq":{font:"ams",group:"rel",replace:"\u2ab6"},"\\nsubseteqq":{font:"ams",group:"rel",replace:"\ue016"},"\\unlhd":{font:"ams",group:"bin",replace:"\u22b4"},"\\unrhd":{font:"ams",group:"bin",replace:"\u22b5"},"\\nleftarrow":{font:"ams",group:"rel",replace:"\u219a"},"\\nrightarrow":{font:"ams",group:"rel",replace:"\u219b"},"\\nLeftarrow":{font:"ams",group:"rel",replace:"\u21cd"},"\\nRightarrow":{font:"ams",group:"rel",replace:"\u21cf"},"\\nleftrightarrow":{font:"ams",group:"rel",replace:"\u21ae"},"\\nLeftrightarrow":{font:"ams",group:"rel",replace:"\u21ce"},"\\vartriangle":{font:"ams",group:"rel",replace:"\u25b3"},"\\hslash":{font:"ams",group:"textord",replace:"\u210f"},"\\triangledown":{font:"ams",group:"textord",replace:"\u25bd"},"\\lozenge":{font:"ams",group:"textord",replace:"\u25ca"},"\\circledS":{font:"ams",group:"textord",replace:"\u24c8"},"\\measuredangle":{font:"ams",group:"textord",replace:"\u2221"},"\\nexists":{font:"ams",group:"textord",replace:"\u2204"},"\\mho":{font:"ams",group:"textord",replace:"\u2127"},"\\Finv":{font:"ams",group:"textord",replace:"\u2132"},"\\Game":{font:"ams",group:"textord",replace:"\u2141"},"\\Bbbk":{font:"ams",group:"textord",replace:"k"},"\\backprime":{font:"ams",group:"textord",replace:"\u2035"},"\\blacktriangle":{font:"ams",group:"textord",replace:"\u25b2"},"\\blacktriangledown":{font:"ams",group:"textord",replace:"\u25bc"},"\\blacksquare":{font:"ams",group:"textord",replace:"\u25a0"},"\\blacklozenge":{font:"ams",group:"textord",replace:"\u29eb"},"\\bigstar":{font:"ams",group:"textord",replace:"\u2605"},"\\sphericalangle":{font:"ams",group:"textord",replace:"\u2222"},"\\complement":{font:"ams",group:"textord",replace:"\u2201"},"\\eth":{font:"ams",group:"textord",replace:"\xf0"},"\\diagup":{font:"ams",group:"textord",replace:"\u2571"},"\\diagdown":{font:"ams",group:"textord",replace:"\u2572"},"\\square":{font:"ams",group:"textord",replace:"\u25a1"},"\\Box":{font:"ams",group:"textord",replace:"\u25a1"},"\\Diamond":{font:"ams",group:"textord",replace:"\u25ca"},"\\yen":{font:"ams",group:"textord",replace:"\xa5"},"\\beth":{font:"ams",group:"textord",replace:"\u2136"},"\\daleth":{font:"ams",group:"textord",replace:"\u2138"},"\\gimel":{font:"ams",group:"textord",replace:"\u2137"},"\\digamma":{font:"ams",group:"textord",replace:"\u03dd"},"\\varkappa":{font:"ams",group:"textord",replace:"\u03f0"},"\\ulcorner":{font:"ams",group:"textord",replace:"\u250c"},"\\urcorner":{font:"ams",group:"textord",replace:"\u2510"},"\\llcorner":{font:"ams",group:"textord",replace:"\u2514"},"\\lrcorner":{font:"ams",group:"textord",replace:"\u2518"},"\\leqq":{font:"ams",group:"rel",replace:"\u2266"},"\\leqslant":{font:"ams",group:"rel",replace:"\u2a7d"},"\\eqslantless":{font:"ams",group:"rel",replace:"\u2a95"},"\\lesssim":{font:"ams",group:"rel",replace:"\u2272"},"\\lessapprox":{font:"ams",group:"rel",replace:"\u2a85"},"\\approxeq":{font:"ams",group:"rel",replace:"\u224a"},"\\lessdot":{font:"ams",group:"bin",replace:"\u22d6"},"\\lll":{font:"ams",group:"rel",replace:"\u22d8"},"\\lessgtr":{font:"ams",group:"rel",replace:"\u2276"},"\\lesseqgtr":{font:"ams",group:"rel",replace:"\u22da"},"\\lesseqqgtr":{font:"ams",group:"rel",replace:"\u2a8b"},"\\doteqdot":{font:"ams",group:"rel",replace:"\u2251"},"\\risingdotseq":{font:"ams",group:"rel",replace:"\u2253"},"\\fallingdotseq":{font:"ams",group:"rel",replace:"\u2252"},"\\backsim":{font:"ams",group:"rel",replace:"\u223d"},"\\backsimeq":{font:"ams",group:"rel",replace:"\u22cd"},"\\subseteqq":{font:"ams",group:"rel",replace:"\u2ac5"},"\\Subset":{font:"ams",group:"rel",replace:"\u22d0"},"\\sqsubset":{font:"ams",group:"rel",replace:"\u228f"},"\\preccurlyeq":{font:"ams",group:"rel",replace:"\u227c"},"\\curlyeqprec":{font:"ams",group:"rel",replace:"\u22de"},"\\precsim":{font:"ams",group:"rel",replace:"\u227e"},"\\precapprox":{font:"ams",group:"rel",replace:"\u2ab7"},"\\vartriangleleft":{font:"ams",group:"rel",replace:"\u22b2"},"\\trianglelefteq":{font:"ams",group:"rel",replace:"\u22b4"},"\\vDash":{font:"ams",group:"rel",replace:"\u22a8"},"\\Vvdash":{font:"ams",group:"rel",replace:"\u22aa"},"\\smallsmile":{font:"ams",group:"rel",replace:"\u2323"},"\\smallfrown":{font:"ams",group:"rel",replace:"\u2322"},"\\bumpeq":{font:"ams",group:"rel",replace:"\u224f"},"\\Bumpeq":{font:"ams",group:"rel",replace:"\u224e"},"\\geqq":{font:"ams",group:"rel",replace:"\u2267"},"\\geqslant":{font:"ams",group:"rel",replace:"\u2a7e"},"\\eqslantgtr":{font:"ams",group:"rel",replace:"\u2a96"},"\\gtrsim":{font:"ams",group:"rel",replace:"\u2273"},"\\gtrapprox":{font:"ams",group:"rel",replace:"\u2a86"},"\\gtrdot":{font:"ams",group:"bin",replace:"\u22d7"},"\\ggg":{font:"ams",group:"rel",replace:"\u22d9"},"\\gtrless":{font:"ams",group:"rel",replace:"\u2277"},"\\gtreqless":{font:"ams",group:"rel",replace:"\u22db"},"\\gtreqqless":{font:"ams",group:"rel",replace:"\u2a8c"},"\\eqcirc":{font:"ams",group:"rel",replace:"\u2256"},"\\circeq":{font:"ams",group:"rel",replace:"\u2257"},"\\triangleq":{font:"ams",group:"rel",replace:"\u225c"},"\\thicksim":{font:"ams",group:"rel",replace:"\u223c"},"\\thickapprox":{font:"ams",group:"rel",replace:"\u2248"},"\\supseteqq":{font:"ams",group:"rel",replace:"\u2ac6"},"\\Supset":{font:"ams",group:"rel",replace:"\u22d1"},"\\sqsupset":{font:"ams",group:"rel",replace:"\u2290"},"\\succcurlyeq":{font:"ams",group:"rel",replace:"\u227d"},"\\curlyeqsucc":{font:"ams",group:"rel",replace:"\u22df"},"\\succsim":{font:"ams",group:"rel",replace:"\u227f"},"\\succapprox":{font:"ams",group:"rel",replace:"\u2ab8"},"\\vartriangleright":{font:"ams",group:"rel",replace:"\u22b3"},"\\trianglerighteq":{font:"ams",group:"rel",replace:"\u22b5"},"\\Vdash":{font:"ams",group:"rel",replace:"\u22a9"},"\\shortmid":{font:"ams",group:"rel",replace:"\u2223"},"\\shortparallel":{font:"ams",group:"rel",replace:"\u2225"},"\\between":{font:"ams",group:"rel",replace:"\u226c"},"\\pitchfork":{font:"ams",group:"rel",replace:"\u22d4"},"\\varpropto":{font:"ams",group:"rel",replace:"\u221d"},"\\blacktriangleleft":{font:"ams",group:"rel",replace:"\u25c0"},"\\therefore":{font:"ams",group:"rel",replace:"\u2234"},"\\backepsilon":{font:"ams",group:"rel",replace:"\u220d"},"\\blacktriangleright":{font:"ams",group:"rel",replace:"\u25b6"},"\\because":{font:"ams",group:"rel",replace:"\u2235"},"\\llless":{font:"ams",group:"rel",replace:"\u22d8"},"\\gggtr":{font:"ams",group:"rel",replace:"\u22d9"},"\\lhd":{font:"ams",group:"bin",replace:"\u22b2"},"\\rhd":{font:"ams",group:"bin",replace:"\u22b3"},"\\eqsim":{font:"ams",group:"rel",replace:"\u2242"},"\\Join":{font:"main",group:"rel",replace:"\u22c8"},"\\Doteq":{font:"ams",group:"rel",replace:"\u2251"},"\\dotplus":{font:"ams",group:"bin",replace:"\u2214"},"\\smallsetminus":{font:"ams",group:"bin",replace:"\u2216"},"\\Cap":{font:"ams",group:"bin",replace:"\u22d2"},"\\Cup":{font:"ams",group:"bin",replace:"\u22d3"},"\\doublebarwedge":{font:"ams",group:"bin",replace:"\u2a5e"},"\\boxminus":{font:"ams",group:"bin",replace:"\u229f"},"\\boxplus":{font:"ams",group:"bin",replace:"\u229e"},"\\divideontimes":{font:"ams",group:"bin",replace:"\u22c7"},"\\ltimes":{font:"ams",group:"bin",replace:"\u22c9"},"\\rtimes":{font:"ams",group:"bin",replace:"\u22ca"},"\\leftthreetimes":{font:"ams",group:"bin",replace:"\u22cb"},"\\rightthreetimes":{font:"ams",group:"bin",replace:"\u22cc"},"\\curlywedge":{font:"ams",group:"bin",replace:"\u22cf"},"\\curlyvee":{font:"ams",group:"bin",replace:"\u22ce"},"\\circleddash":{font:"ams",group:"bin",replace:"\u229d"},"\\circledast":{font:"ams",group:"bin",replace:"\u229b"},"\\centerdot":{font:"ams",group:"bin",replace:"\u22c5"},"\\intercal":{font:"ams",group:"bin",replace:"\u22ba"},"\\doublecap":{font:"ams",group:"bin",replace:"\u22d2"},"\\doublecup":{font:"ams",group:"bin",replace:"\u22d3"},"\\boxtimes":{font:"ams",group:"bin",replace:"\u22a0"},"\\dashrightarrow":{font:"ams",group:"rel",replace:"\u21e2"},"\\dashleftarrow":{font:"ams",group:"rel",replace:"\u21e0"},"\\leftleftarrows":{font:"ams",group:"rel",replace:"\u21c7"},"\\leftrightarrows":{font:"ams",group:"rel",replace:"\u21c6"},"\\Lleftarrow":{font:"ams",group:"rel",replace:"\u21da"},"\\twoheadleftarrow":{font:"ams",group:"rel",replace:"\u219e"},"\\leftarrowtail":{font:"ams",group:"rel",replace:"\u21a2"},"\\looparrowleft":{font:"ams",group:"rel",replace:"\u21ab"},"\\leftrightharpoons":{font:"ams",group:"rel",replace:"\u21cb"},"\\curvearrowleft":{font:"ams",group:"rel",replace:"\u21b6"},"\\circlearrowleft":{font:"ams",group:"rel",replace:"\u21ba"},"\\Lsh":{font:"ams",group:"rel",replace:"\u21b0"},"\\upuparrows":{font:"ams",group:"rel",replace:"\u21c8"},"\\upharpoonleft":{font:"ams",group:"rel",replace:"\u21bf"},"\\downharpoonleft":{font:"ams",group:"rel",replace:"\u21c3"},"\\multimap":{font:"ams",group:"rel",replace:"\u22b8"},"\\leftrightsquigarrow":{font:"ams",group:"rel",replace:"\u21ad"},"\\rightrightarrows":{font:"ams",group:"rel",replace:"\u21c9"},"\\rightleftarrows":{font:"ams",group:"rel",replace:"\u21c4"},"\\twoheadrightarrow":{font:"ams",group:"rel",replace:"\u21a0"},"\\rightarrowtail":{font:"ams",group:"rel",replace:"\u21a3"},"\\looparrowright":{font:"ams",group:"rel",replace:"\u21ac"},"\\curvearrowright":{font:"ams",group:"rel",replace:"\u21b7"},"\\circlearrowright":{font:"ams",group:"rel",replace:"\u21bb"},"\\Rsh":{font:"ams",group:"rel",replace:"\u21b1"},"\\downdownarrows":{font:"ams",group:"rel",replace:"\u21ca"},"\\upharpoonright":{font:"ams",group:"rel",replace:"\u21be"},"\\downharpoonright":{font:"ams",group:"rel",replace:"\u21c2"},"\\rightsquigarrow":{font:"ams",group:"rel",replace:"\u21dd"},"\\leadsto":{font:"ams",group:"rel",replace:"\u21dd"},"\\Rrightarrow":{font:"ams",group:"rel",replace:"\u21db"},"\\restriction":{font:"ams",group:"rel",replace:"\u21be"},"`":{font:"main",group:"textord",replace:"\u2018"},"\\$":{font:"main",group:"textord",replace:"$"},"\\%":{font:"main",group:"textord",replace:"%"},"\\_":{font:"main",group:"textord",replace:"_"},"\\angle":{font:"main",group:"textord",replace:"\u2220"},"\\infty":{font:"main",group:"textord",replace:"\u221e"},"\\prime":{font:"main",group:"textord",replace:"\u2032"},"\\triangle":{font:"main",group:"textord",replace:"\u25b3"},"\\Gamma":{font:"main",group:"textord",replace:"\u0393"},"\\Delta":{font:"main",group:"textord",replace:"\u0394"},"\\Theta":{font:"main",group:"textord",replace:"\u0398"},"\\Lambda":{font:"main",group:"textord",replace:"\u039b"},"\\Xi":{font:"main",group:"textord",replace:"\u039e"},"\\Pi":{font:"main",group:"textord",replace:"\u03a0"},"\\Sigma":{font:"main",group:"textord",replace:"\u03a3"},"\\Upsilon":{font:"main",group:"textord",replace:"\u03a5"},"\\Phi":{font:"main",group:"textord",replace:"\u03a6"},"\\Psi":{font:"main",group:"textord",replace:"\u03a8"},"\\Omega":{font:"main",group:"textord",replace:"\u03a9"},"\\neg":{font:"main",group:"textord",replace:"\xac"},"\\lnot":{font:"main",group:"textord",replace:"\xac"},"\\top":{font:"main",group:"textord",replace:"\u22a4"},"\\bot":{font:"main",group:"textord",replace:"\u22a5"},"\\emptyset":{font:"main",group:"textord",replace:"\u2205"},"\\varnothing":{font:"ams",group:"textord",replace:"\u2205"},"\\alpha":{font:"main",group:"mathord",replace:"\u03b1"},"\\beta":{font:"main",group:"mathord",replace:"\u03b2"},"\\gamma":{font:"main",group:"mathord",replace:"\u03b3"},"\\delta":{font:"main",group:"mathord",replace:"\u03b4"},"\\epsilon":{font:"main",group:"mathord",replace:"\u03f5"},"\\zeta":{font:"main",group:"mathord",replace:"\u03b6"},"\\eta":{font:"main",group:"mathord",replace:"\u03b7"},"\\theta":{font:"main",group:"mathord",replace:"\u03b8"},"\\iota":{font:"main",group:"mathord",replace:"\u03b9"},"\\kappa":{font:"main",group:"mathord",replace:"\u03ba"},"\\lambda":{font:"main",group:"mathord",replace:"\u03bb"},"\\mu":{font:"main",group:"mathord",replace:"\u03bc"},"\\nu":{font:"main",group:"mathord",replace:"\u03bd"},"\\xi":{font:"main",group:"mathord",replace:"\u03be"},"\\omicron":{font:"main",group:"mathord",replace:"o"},"\\pi":{font:"main",group:"mathord",replace:"\u03c0"},"\\rho":{font:"main",group:"mathord",replace:"\u03c1"},"\\sigma":{font:"main",group:"mathord",replace:"\u03c3"},"\\tau":{font:"main",group:"mathord",replace:"\u03c4"},"\\upsilon":{font:"main",group:"mathord",replace:"\u03c5"},"\\phi":{font:"main",group:"mathord",replace:"\u03d5"},"\\chi":{font:"main",group:"mathord",replace:"\u03c7"},"\\psi":{font:"main",group:"mathord",replace:"\u03c8"},"\\omega":{font:"main",group:"mathord",replace:"\u03c9"},"\\varepsilon":{font:"main",group:"mathord",replace:"\u03b5"},"\\vartheta":{font:"main",group:"mathord",replace:"\u03d1"},"\\varpi":{font:"main",group:"mathord",replace:"\u03d6"},"\\varrho":{font:"main",group:"mathord",replace:"\u03f1"},"\\varsigma":{font:"main",group:"mathord",replace:"\u03c2"},"\\varphi":{font:"main",group:"mathord",replace:"\u03c6"},"*":{font:"main",group:"bin",replace:"\u2217"},"+":{font:"main",group:"bin"},"-":{font:"main",group:"bin",replace:"\u2212"},"\\cdot":{font:"main",group:"bin",replace:"\u22c5"},"\\circ":{font:"main",group:"bin",replace:"\u2218"},"\\div":{font:"main",group:"bin",replace:"\xf7"},"\\pm":{font:"main",group:"bin",replace:"\xb1"},"\\times":{font:"main",group:"bin",replace:"\xd7"},"\\cap":{font:"main",group:"bin",replace:"\u2229"},"\\cup":{font:"main",group:"bin",replace:"\u222a"},"\\setminus":{font:"main",group:"bin",replace:"\u2216"},"\\land":{font:"main",group:"bin",replace:"\u2227"},"\\lor":{font:"main",group:"bin",replace:"\u2228"},"\\wedge":{font:"main",group:"bin",replace:"\u2227"},"\\vee":{font:"main",group:"bin",replace:"\u2228"},"\\surd":{font:"main",group:"textord",replace:"\u221a"},"(":{font:"main",group:"open"},"[":{font:"main",group:"open"},"\\langle":{font:"main",group:"open",replace:"\u27e8"},"\\lvert":{font:"main",group:"open",replace:"\u2223"},")":{font:"main",group:"close"},"]":{font:"main",group:"close"},"?":{font:"main",group:"close"},"!":{font:"main",group:"close"},"\\rangle":{font:"main",group:"close",replace:"\u27e9"},"\\rvert":{font:"main",group:"close",replace:"\u2223"},"=":{font:"main",group:"rel"},"<":{font:"main",group:"rel"},">":{font:"main",group:"rel"},":":{font:"main",group:"rel"},"\\approx":{font:"main",group:"rel",replace:"\u2248"},"\\cong":{font:"main",group:"rel",replace:"\u2245"},"\\ge":{font:"main",group:"rel",replace:"\u2265"},"\\geq":{font:"main",group:"rel",replace:"\u2265"},"\\gets":{font:"main",group:"rel",replace:"\u2190"},"\\in":{font:"main",group:"rel",replace:"\u2208"},"\\notin":{font:"main",group:"rel",replace:"\u2209"},"\\subset":{font:"main",group:"rel",replace:"\u2282"},"\\supset":{font:"main",group:"rel",replace:"\u2283"},"\\subseteq":{font:"main",group:"rel",replace:"\u2286"},"\\supseteq":{font:"main",group:"rel",replace:"\u2287"},"\\nsubseteq":{font:"ams",group:"rel",replace:"\u2288"},"\\nsupseteq":{font:"ams",group:"rel",replace:"\u2289"},"\\models":{font:"main",group:"rel",replace:"\u22a8"},"\\leftarrow":{font:"main",group:"rel",replace:"\u2190"},"\\le":{font:"main",group:"rel",replace:"\u2264"},"\\leq":{font:"main",group:"rel",replace:"\u2264"},"\\ne":{font:"main",group:"rel",replace:"\u2260"},"\\neq":{font:"main",group:"rel",replace:"\u2260"},"\\rightarrow":{font:"main",group:"rel",replace:"\u2192"},"\\to":{font:"main",group:"rel",replace:"\u2192"},"\\ngeq":{font:"ams",group:"rel",replace:"\u2271"},"\\nleq":{font:"ams",group:"rel",replace:"\u2270"},"\\!":{font:"main",group:"spacing"},"\\ ":{font:"main",group:"spacing",replace:"\xa0"},"~":{font:"main",group:"spacing",replace:"\xa0"},"\\,":{font:"main",group:"spacing"},"\\:":{font:"main",group:"spacing"},"\\;":{font:"main",group:"spacing"},"\\enspace":{font:"main",group:"spacing"},"\\qquad":{font:"main",group:"spacing"},"\\quad":{font:"main",group:"spacing"},"\\space":{font:"main",group:"spacing",replace:"\xa0"},",":{font:"main",group:"punct"},";":{font:"main",group:"punct"},"\\colon":{font:"main",group:"punct",replace:":"},"\\barwedge":{font:"ams",group:"textord",replace:"\u22bc"},"\\veebar":{font:"ams",group:"textord",replace:"\u22bb"},"\\odot":{font:"main",group:"textord",replace:"\u2299"},"\\oplus":{font:"main",group:"textord",replace:"\u2295"},"\\otimes":{font:"main",group:"textord",replace:"\u2297"},"\\partial":{font:"main",group:"textord",replace:"\u2202"},"\\oslash":{font:"main",group:"textord",replace:"\u2298"},"\\circledcirc":{font:"ams",group:"textord",replace:"\u229a"},"\\boxdot":{font:"ams",group:"textord",replace:"\u22a1"},"\\bigtriangleup":{font:"main",group:"textord",replace:"\u25b3"},"\\bigtriangledown":{font:"main",group:"textord",replace:"\u25bd"},"\\dagger":{font:"main",group:"textord",replace:"\u2020"},"\\diamond":{font:"main",group:"textord",replace:"\u22c4"},"\\star":{font:"main",group:"textord",replace:"\u22c6"},"\\triangleleft":{font:"main",group:"textord",replace:"\u25c3"},"\\triangleright":{font:"main",group:"textord",replace:"\u25b9"},"\\{":{font:"main",group:"open",replace:"{"},"\\}":{font:"main",group:"close",replace:"}"},"\\lbrace":{font:"main",group:"open",replace:"{"},"\\rbrace":{font:"main",group:"close",replace:"}"},"\\lbrack":{font:"main",group:"open",replace:"["},"\\rbrack":{font:"main",group:"close",replace:"]"},"\\lfloor":{font:"main",group:"open",replace:"\u230a"},"\\rfloor":{font:"main",group:"close",replace:"\u230b"},"\\lceil":{font:"main",group:"open",replace:"\u2308"},"\\rceil":{font:"main",group:"close",replace:"\u2309"},"\\backslash":{font:"main",group:"textord",replace:"\\"},"|":{font:"main",group:"textord",replace:"\u2223"},"\\vert":{font:"main",group:"textord",replace:"\u2223"},"\\|":{font:"main",group:"textord",replace:"\u2225"},"\\Vert":{font:"main",group:"textord",replace:"\u2225"},"\\uparrow":{font:"main",group:"textord",replace:"\u2191"},"\\Uparrow":{font:"main",group:"textord",replace:"\u21d1"},"\\downarrow":{font:"main",group:"textord",replace:"\u2193"},"\\Downarrow":{font:"main",group:"textord",replace:"\u21d3"},"\\updownarrow":{font:"main",group:"textord",replace:"\u2195"},"\\Updownarrow":{font:"main",group:"textord",replace:"\u21d5"},"\\coprod":{font:"math",group:"op",replace:"\u2210"},"\\bigvee":{font:"math",group:"op",replace:"\u22c1"},"\\bigwedge":{font:"math",group:"op",replace:"\u22c0"},"\\biguplus":{font:"math",group:"op",replace:"\u2a04"},"\\bigcap":{font:"math",group:"op",replace:"\u22c2"},"\\bigcup":{font:"math",group:"op",replace:"\u22c3"},"\\int":{font:"math",group:"op",replace:"\u222b"},"\\intop":{font:"math",group:"op",replace:"\u222b"},"\\iint":{font:"math",group:"op",replace:"\u222c"},"\\iiint":{font:"math",group:"op",replace:"\u222d"},"\\prod":{font:"math",group:"op",replace:"\u220f"},"\\sum":{font:"math",group:"op",replace:"\u2211"},"\\bigotimes":{font:"math",group:"op",replace:"\u2a02"},"\\bigoplus":{font:"math",group:"op",replace:"\u2a01"},"\\bigodot":{font:"math",group:"op",replace:"\u2a00"},"\\oint":{font:"math",group:"op",replace:"\u222e"},"\\bigsqcup":{font:"math",group:"op",replace:"\u2a06"},"\\smallint":{font:"math",group:"op",replace:"\u222b"},"\\ldots":{font:"main",group:"punct",replace:"\u2026"},"\\cdots":{font:"main",group:"inner",replace:"\u22ef"},"\\ddots":{font:"main",group:"inner",replace:"\u22f1"},"\\vdots":{font:"main",group:"textord",replace:"\u22ee"},"\\acute":{font:"main",group:"accent",replace:"\xb4"},"\\grave":{font:"main",group:"accent",replace:"`"},"\\ddot":{font:"main",group:"accent",replace:"\xa8"},"\\tilde":{font:"main",group:"accent",replace:"~"},"\\bar":{font:"main",group:"accent",replace:"\xaf"},"\\breve":{font:"main",group:"accent",replace:"\u02d8"},"\\check":{font:"main",group:"accent",replace:"\u02c7"},"\\hat":{font:"main",group:"accent",replace:"^"},"\\vec":{font:"main",group:"accent",replace:"\u20d7"},"\\dot":{font:"main",group:"accent",replace:"\u02d9"}},text:{"\\ ":{font:"main",group:"spacing",replace:"\xa0"}," ":{font:"main",group:"spacing",replace:"\xa0"},"~":{font:"main",group:"spacing",replace:"\xa0"}}}; +var a='0123456789/@."';for(var r=0;r<a.length;r++){var l=a.charAt(r);h.math[l]={font:"main",group:"textord"}}var s="0123456789`!@*()-=+[]'\";:?/.,";for(var r=0;r<s.length;r++){var l=s.charAt(r);h.text[l]={font:"main",group:"textord"}}var p="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var r=0;r<p.length;r++){var l=p.charAt(r);h.math[l]={font:"main",group:"mathord"};h.text[l]={font:"main",group:"textord"}}t.exports=h},{}],19:[function(e,t,i){var h=Array.prototype.indexOf;var a=function(e,t){if(e==null){return-1}if(h&&e.indexOf===h){return e.indexOf(t)}var i=0,a=e.length;for(;i<a;i++){if(e[i]===t){return i}}return-1};var r=function(e,t){return a(e,t)!==-1};var l=/([A-Z])/g;var s=function(e){return e.replace(l,"-$1").toLowerCase()};var p={"&":"&",">":">","<":"<",'"':""","'":"'"};var c=/[&><"']/g;function o(e){return p[e]}function n(e){return(""+e).replace(c,o)}var g;if(typeof document!=="undefined"){var d=document.createElement("span");if("textContent"in d){g=function(e,t){e.textContent=t}}else{g=function(e,t){e.innerText=t}}}function u(e){g(e,"")}t.exports={contains:r,escape:n,hyphenate:s,indexOf:a,setTextContent:g,clearNode:u}},{}]},{},[1])(1)}); \ No newline at end of file diff --git a/pseudocode/pseudocode.js b/pseudocode/pseudocode.js new file mode 100644 index 0000000000000000000000000000000000000000..721fdd2f9010b014087292acd273bbdeda1c7daa --- /dev/null +++ b/pseudocode/pseudocode.js @@ -0,0 +1,1520 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.pseudocode = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +/* + * The entry points of pseudocode-js + * + * TODO: + * * Test on IE8 - IE10 + * * Support color + **/ + +var ParseError = require('./src/ParseError'); +var Lexer = require('./src/Lexer'); +var Parser = require('./src/Parser'); +var Renderer = require('./src/Renderer'); + +module.exports = { + ParseError: ParseError, + renderToString: function(input, options) { + if (input === null || input === undefined) + throw 'input cannot be empty'; + + var lexer = new Lexer(input); + var parser = new Parser(lexer); + var renderer = new Renderer(parser, options); + return renderer.toMarkup(); + }, + render: function(input, baseDomEle, options) { + if (input === null || input === undefined) + throw 'input cannot be empty'; + + var lexer = new Lexer(input); + var parser = new Parser(lexer); + var renderer = new Renderer(parser, options); + var ele = renderer.toDOM(); + if (baseDomEle) baseDomEle.appendChild(ele); + return ele; + } +}; + +},{"./src/Lexer":2,"./src/ParseError":3,"./src/Parser":4,"./src/Renderer":5}],2:[function(require,module,exports){ +/** + * The Lexer class tokenizes the input sequentially, looking ahead only one + * token. + */ +var utils = require('./utils'); +var ParseError = require('./ParseError'); + +var Lexer = function(input) { + this._input = input; + this._remain = input; + this._pos = 0; + this._nextAtom = this._currentAtom = null; + this._next(); // get the next atom +}; + +Lexer.prototype.accept = function(type, text) { + if (this._nextAtom.type === type && this._matchText(text)) { + this._next(); + return this._currentAtom.text; + } + return null; +}; + +Lexer.prototype.expect = function(type, text) { + var nextAtom = this._nextAtom; + // The next atom is NOT of the right type + if (nextAtom.type !== type) + throw new ParseError('Expect an atom of ' + type + ' but received ' + + nextAtom.type, this._pos, this._input); + // Check whether the text is exactly the same + if (!this._matchText(text)) + throw new ParseError('Expect `' + text + '` but received `' + + nextAtom.text + '`', this._pos, this._input); + + this._next(); + return this._currentAtom.text; +}; + +Lexer.prototype.get = function() { + return this._currentAtom; +}; + +/* Math pattern + Math environtment like $ $ or \( \) cannot be matched using regular + expression. This object simulates a RegEx object +*/ +var mathPattern = { + exec: function(str) { + var delimiters = [ + {start: '$', end: '$'}, + {start: '\\(', end: '\\)'} + ]; + var totalLen = str.length; + + for (var di = 0; di < delimiters.length; di++) { + var startDel = delimiters[di].start; + if (str.indexOf(startDel) !== 0) continue; + + var endDel = delimiters[di].end; + var endPos = startDel.length; + var remain = str.slice(endPos); + while (endPos < totalLen) { + var pos = remain.indexOf(endDel); + if (pos < 0) + throw new ParseError('Math environment is not closed', this._pos, this._input); + + // false positive, it's escaped, not a match + if (pos > 0 && remain[pos - 1] === '\\') { + var skipLen = pos + endDel.length; + remain = remain.slice(skipLen); + endPos += skipLen; + continue; + } + + var res = [str.slice(0, endPos + pos + endDel.length), + str.slice(startDel.length, endPos + pos)]; + return res; + } + } + + return null; + } +}; +var atomRegex = { + // TODO: which is correct? func: /^\\(?:[a-zA-Z]+|.)/, + special: /^(\\\\|\\{|\\}|\\\$|\\&|\\#|\\%|\\_)/, + math: mathPattern, ///^\$.*\$/ + func: /^\\([a-zA-Z]+)/, + open: /^\{/, + close: /^\}/, + quote: /^(`|``|'|'')/, + ordinary: /^[^\\{}$&#%_\s]+/ +}; +var commentRegex = /^%.*/; +var whitespaceRegex = /^\s+/; + +Lexer.prototype._skip = function(len) { + this._pos += len; + this._remain = this._remain.slice(len); +}; + +/* Get the next atom */ +Lexer.prototype._next = function() { + var anyWhitespace = false; + while (1) { + // Skip whitespace (one or more) + var whitespaceMatch = whitespaceRegex.exec(this._remain); + if (whitespaceMatch) { + anyWhitespace = true; + var whitespaceLen = whitespaceMatch[0].length; + this._skip(whitespaceLen); + } + + // Skip comment + var commentMatch = commentRegex.exec(this._remain); + if (!commentMatch) break; + var commentLen = commentMatch[0].length; + this._skip(commentLen); + } + + // Remember the current atom + this._currentAtom = this._nextAtom; + + // Reach the end of string + if (this._remain === '') { + this._nextAtom = { + type: 'EOF', + text: null, + whitespace: false + }; + return false; + } + + // Try all kinds of atoms + for (var type in atomRegex) { + var regex = atomRegex[type]; + + var match = regex.exec(this._remain); + if (!match) continue; // not matched + + // match[1] is the useful part, e.g. '123' of '$123$', 'it' of '\\it' + var matchText = match[0]; + var usefulText = match[1] ? match[1] : matchText; + + this._nextAtom = { + type: type, /* special, func, open, close, ordinary, math */ + text: usefulText, /* the text value of the atom */ + whitespace: anyWhitespace /* any whitespace before the atom */ + }; + + this._pos += matchText.length; + this._remain = this._remain.slice(match[0].length); + + return true; + } + + throw new ParseError('Unrecoganizable atom', this._pos, this._input); +}; + +/* Check whether the text of the next atom matches */ +Lexer.prototype._matchText = function(text) { + // don't need to match + if (text === null || text === undefined) return true; + + // string comparisons are case-insensitive + if (utils.isString(text)) // is a string, exactly the same? + return text.toLowerCase() === this._nextAtom.text.toLowerCase(); + else {// is a list, match any of them? + text = text.map(function(str) { return str.toLowerCase(); }); + return text.indexOf(this._nextAtom.text.toLowerCase()) >= 0; + } +}; + +module.exports = Lexer; + +},{"./ParseError":3,"./utils":6}],3:[function(require,module,exports){ +function ParseError(message, pos, input) { + var error = 'Error: ' + message; + // If we have the input and a position, make the error a bit fancier + if (pos !== undefined && input !== undefined) { + error += " at position " + pos + ": `"; + + // Insert a combining underscore at the correct position + input = input.slice(0, pos) + "\u21B1" + input.slice(pos); + + // Extract some context from the input and add it to the error + var begin = Math.max(0, pos - 15); + var end = pos + 15; + error += input.slice(begin, end) + "`"; + } + + this.message = error; +} +ParseError.prototype = Object.create(Error.prototype); +ParseError.prototype.constructor = ParseError; + +module.exports = ParseError; + +},{}],4:[function(require,module,exports){ +/** + * The Parser class parses the token stream from Lexer into an abstract syntax + * tree, represented by ParseNode. + * + * The grammar of pseudocode required by Pseudocode.js mimics that of TeX/Latex + * and its algorithm packages. It is designed intentionally to be less powerful + * than Tex/LaTeX for the convinience of implementation. As a consequence, the + * grammar is context-free, which can be expressed in production rules: + * + * <pseudo> :== ( <algorithm> | <algorithmic> )[0..n] + * + * <algorithm> :== \begin{algorithm} + * + ( <caption> | <algorithmic> )[0..n] + * \end{algorithm} + * <caption> :== \caption{ <close-text> } + * + * <algorithmic> :== \begin{algorithmic} + * + ( <ensure> | <require> | <block> )[0..n] + * + \end{algorithmic} + * <require> :== \REQUIRE + <open-text> + * <ensure> :== \ENSURE + <open-text> + * + * <block> :== ( <control> | <function> | <statement> | + * <comment> )[0..n] + * + * <control> :== <if> | <for> | <while> + * <if> :== \IF{<cond>} + <block> + * + ( \ELIF{<cond>} <block> )[0..n] + * + ( \ELSE <block> )[0..1] + * + \ENDIF + * <for> :== \FOR{<cond>} + <block> + \ENDFOR + * <while> :== \WHILE{<cond>} + <block> + \ENDWHILE + * + * <function> :== \FUNCTION{<name>}{<params>} <block> \ENDFUNCTION + * (same for <procedure>) + * + * <statement> :== <state> | <return> | <print> + * <state> :== \STATE + <open-text> + * <return> :== \RETURN + <open-text> + * <print> :== \PRINT + <open-text> + * + * <comment> :== \COMMENT{<close-text>} + * + * <cond> :== <close-text> + * <open-text> :== ( <atom> | <call> ) + <open-text> | + * { <close-text> } | <empty> + * <close-text> :== ( <atom> | <call> ) + <close-text> | + * { <close-text> } | <empty> + * + * <atom> :== <ordinary>[1..n] | <special> | <symbol> + * | <size> | <font> | <bool> | <math> + * <name> :== <ordinary> + * + * <call> :== \CALL{<name>}({<close-text>}) + * <special> :== \\ | \{ | \} | \$ | \& | \# | \% | \_ + * <cond-symbol> :== \AND | \OR | \NOT | \TRUE | \FALSE | \TO + * <text-symbol> :== \textbackslash + * <quote-symbol> :== ` | `` | ' | '' + * (More LaTeX symbols can be added if necessary. See + * http://get-software.net/info/symbols/comprehensive/symbols-a4.pdf.) + * <math> :== \( + ... + \) | $ ... $ + * (Math are handled by KaTeX) + * <size> :== \tiny | \scriptsize | \footnotesize | \small + * | \normalsize | \large | \Large | \LARGE | \huge + * | \HUGE + * <font> :== \rmfamily | \sffamily | \ttfamily + * | \upshape | \itshape | \slshape | \scshape + * <ordinary> :== not any of \ { } $ & # % _ + * <empty> :== + * + * There are many well-known ways to parse a context-free grammar, like the + * top-down approach LL(k) or the bottom-up approach like LR(k). Both methods + * are usually implemented in a table-driven fashion, which is not suitable to + * write by hand. As our grammar is simple enough and its input is not expected + * to be large, the performance wouldn't be a problem. Thus, I choose to write + * the parser in the most natural form--- a (predictive) recursive descent + * parser. The major benefit of a recursive descent parser is **simplity** for + * the structure of resulting program closely mirrors that of the grammar. * + * + */ +var utils = require('./utils'); + +var ParseNode = function(type, val) { + this.type = type; + this.value = val; + this.children = []; +}; + +ParseNode.prototype.toString = function(level) { + if (!level) level = 0; + + var indent = ''; + for (var i = 0; i < level; i++) indent += ' '; + + var res = indent + '<' + this.type + '>'; + if (this.value) res += ' (' + utils.toString(this.value) + ')'; + res += '\n'; + + if (this.children) { + for (var ci = 0; ci < this.children.length; ci++) { + var child = this.children[ci]; + res += child.toString(level + 1); + } + } + + return res; +}; + +ParseNode.prototype.addChild = function(childNode) { + if (!childNode) throw 'argument cannot be null'; + this.children.push(childNode); +}; + +/* AtomNode is the leaf node of parse tree */ +var AtomNode = function(type, value, whitespace) { + // ParseNode.call(this, type, val); + this.type = type; + this.value = value; + this.children = null; // leaf node, thus no children + this.whitespace = !!whitespace; // is there any whitespace before the atom +}; +AtomNode.prototype = ParseNode.prototype; + +var Parser = function(lexer) { + this._lexer = lexer; +}; + +Parser.prototype.parse = function() { + var root = new ParseNode('root'); + + while (true) { + var envName = this._acceptEnvironment(); + if (envName === null) break; + + var envNode; + if (envName === 'algorithm') + envNode = this._parseAlgorithmInner(); + else if (envName === 'algorithmic') + envNode = this._parseAlgorithmicInner(); + else + throw new ParseError('Unexpected environment ' + envName); + + this._closeEnvironment(envName); + root.addChild(envNode); + } + this._lexer.expect('EOF'); + return root; +}; + +Parser.prototype._acceptEnvironment = function() { + var lexer = this._lexer; + // \begin{XXXXX} + if (!lexer.accept('func', 'begin')) return null; + + lexer.expect('open'); + var envName = lexer.expect('ordinary'); + lexer.expect('close'); + return envName; +}; + +Parser.prototype._closeEnvironment = function(envName) { + // \close{XXXXX} + var lexer = this._lexer; + lexer.expect('func', 'end'); + lexer.expect('open'); + lexer.expect('ordinary', envName); + lexer.expect('close'); +}; + +Parser.prototype._parseAlgorithmInner = function() { + var algNode = new ParseNode('algorithm'); + while (true) { + var envName = this._acceptEnvironment(); + if (envName !== null) { + if (envName !== 'algorithmic') + throw new ParseError('Unexpected environment ' + envName); + var algmicNode = this._parseAlgorithmicInner(); + this._closeEnvironment(); + algNode.addChild(algmicNode); + continue; + } + + var captionNode = this._parseCaption(); + if (captionNode) { + algNode.addChild(captionNode); + continue; + } + + break; + } + return algNode; +}; + +Parser.prototype._parseAlgorithmicInner = function() { + var algmicNode = new ParseNode('algorithmic'); + var node; + while (true) { + node = this._parseCommand(INPUTS_OUTPUTS_COMMANDS); + if (node) { + algmicNode.addChild(node); + continue; + } + + node = this._parseBlock(); + if (node.children.length > 0) { + algmicNode.addChild(node); + continue; + } + + break; + } + return algmicNode; +}; + +Parser.prototype._parseCaption = function() { + var lexer = this._lexer; + if (!lexer.accept('func', 'caption')) return null; + + var captionNode = new ParseNode('caption'); + lexer.expect('open'); + captionNode.addChild(this._parseCloseText()); + lexer.expect('close'); + + return captionNode; +}; + +Parser.prototype._parseBlock = function() { + var blockNode = new ParseNode('block'); + + while (true) { + var controlNode = this._parseControl(); + if (controlNode) { blockNode.addChild(controlNode); continue; } + + var functionNode = this._parseFunction(); + if (functionNode) { blockNode.addChild(functionNode); continue; } + + var commandNode = this._parseCommand(STATEMENT_COMMANDS); + if (commandNode) { blockNode.addChild(commandNode); continue; } + + var commentNode = this._parseComment(); + if (commentNode) { blockNode.addChild(commentNode); continue; } + + break; + } + + return blockNode; +}; + +Parser.prototype._parseControl = function() { + var controlNode; + if ((controlNode = this._parseIf())) return controlNode; + if ((controlNode = this._parseLoop())) return controlNode; +}; + +Parser.prototype._parseFunction = function() { + var lexer = this._lexer; + if (!lexer.accept('func', ['function', 'procedure'])) return null; + + // \FUNCTION{funcName}{funcArgs} + var funcType = this._lexer.get().text; // FUNCTION or PROCEDURE + lexer.expect('open'); + var funcName = lexer.expect('ordinary'); + lexer.expect('close'); + lexer.expect('open'); + var argsNode = this._parseCloseText(); + lexer.expect('close'); + // <block> + var blockNode = this._parseBlock(); + // \ENDFUNCTION + lexer.expect('func', 'end' + funcType); + + var functionNode = new ParseNode('function', + {type: funcType, name: funcName}); + functionNode.addChild(argsNode); + functionNode.addChild(blockNode); + return functionNode; +}; + +Parser.prototype._parseIf = function() { + if (!this._lexer.accept('func', 'if')) return null; + + var ifNode = new ParseNode('if'); + + // { <cond> } <block> + this._lexer.expect('open'); + ifNode.addChild(this._parseCond()); + this._lexer.expect('close'); + ifNode.addChild(this._parseBlock()); + + // ( \ELIF { <cond> } <block> )[0...n] + var numElif = 0; + while (this._lexer.accept('func', ['elif', 'elsif', 'elseif'])) { + this._lexer.expect('open'); + ifNode.addChild(this._parseCond()); + this._lexer.expect('close'); + ifNode.addChild(this._parseBlock()); + numElif++; + } + + // ( \ELSE <block> )[0..1] + var hasElse = false; + if (this._lexer.accept('func', 'else')) { + hasElse = true; + ifNode.addChild(this._parseBlock()); + } + + // \ENDIF + this._lexer.expect('func', 'endif'); + + ifNode.value = {numElif: numElif, hasElse: hasElse}; + return ifNode; +}; + +Parser.prototype._parseLoop = function() { + if (!this._lexer.accept('func', ['FOR', 'FORALL', 'WHILE'])) return null; + + var loopName = this._lexer.get().text.toLowerCase(); + var loopNode = new ParseNode('loop', loopName); + + // { <cond> } <block> + this._lexer.expect('open'); + loopNode.addChild(this._parseCond()); + this._lexer.expect('close'); + loopNode.addChild(this._parseBlock()); + + // \ENDFOR + var endLoop = loopName !== 'forall' ? 'end' + loopName : 'endfor'; + this._lexer.expect('func', endLoop); + + return loopNode; +}; + +var INPUTS_OUTPUTS_COMMANDS = ['ensure', 'require']; +var STATEMENT_COMMANDS = ['state', 'print', 'return']; +Parser.prototype._parseCommand = function(acceptCommands) { + if (!this._lexer.accept('func', acceptCommands)) return null; + + var cmdName = this._lexer.get().text.toLowerCase(); + var cmdNode = new ParseNode('command', cmdName); + cmdNode.addChild(this._parseOpenText()); + return cmdNode; +}; + +Parser.prototype._parseComment = function() { + if (!this._lexer.accept('func', 'comment')) return null; + + var commentNode = new ParseNode('comment'); + + // { \text } + this._lexer.expect('open'); + commentNode.addChild(this._parseCloseText()); + this._lexer.expect('close'); + + return commentNode; +}; + +Parser.prototype._parseCall = function() { + var lexer = this._lexer; + if (!lexer.accept('func', 'call')) return null; + + var anyWhitespace = lexer.get().whitespace; + + // \CALL { <ordinary> } ({ <text> })[0..1] + lexer.expect('open'); + var funcName = lexer.expect('ordinary'); + lexer.expect('close'); + + var callNode = new ParseNode('call'); + callNode.whitespace = anyWhitespace; + callNode.value = funcName; + + lexer.expect('open'); + var argsNode = this._parseCloseText(); + callNode.addChild(argsNode); + lexer.expect('close'); + return callNode; +}; + +Parser.prototype._parseCond = +Parser.prototype._parseCloseText = function() { + return this._parseText('close'); +}; +Parser.prototype._parseOpenText = function() { + return this._parseText('open'); +}; + +Parser.prototype._parseText = function(openOrClose) { + var textNode = new ParseNode(openOrClose + '-text'); + // any whitespace between Atom and CloseText + var anyWhitespace = false; + var subTextNode; + while (true) { + // atom or call + subTextNode = this._parseAtom() || this._parseCall(); + if (subTextNode) { + if (anyWhitespace) subTextNode.whitespace |= anyWhitespace; + textNode.addChild(subTextNode); + continue; + } + + // or close text + if (this._lexer.accept('open')) { + subTextNode = this._parseCloseText(); + + anyWhitespace = this._lexer.get().whitespace; + subTextNode.whitespace = anyWhitespace; + + textNode.addChild(subTextNode); + this._lexer.expect('close'); + anyWhitespace = this._lexer.get().whitespace; + continue; + } + + break; + } + + return textNode; +}; + +/* The token accepted by atom of specific type */ +var ACCEPTED_TOKEN_BY_ATOM = { + 'ordinary': { tokenType: 'ordinary' }, + 'math': { tokenType: 'math' }, + 'special': { tokenType: 'special' }, + 'cond-symbol': { + tokenType: 'func', + tokenValues: ['and', 'or', 'not', 'true', 'false', 'to'] + }, + 'quote-symbol': { + tokenType: 'quote' + }, + 'sizing-dclr': { + tokenType: 'func', + tokenValues: ['tiny', 'scriptsize', 'footnotesize', 'small', 'normalsize', + 'large', 'Large', 'LARGE', 'huge', 'Huge'] + }, + 'font-dclr': { + tokenType: 'func', + tokenValues: ['normalfont', 'rmfamily', 'sffamily', 'ttfamily', + 'upshape', 'itshape', 'slshape', 'scshape', + 'bfseries', 'mdseries', 'lfseries'] + }, + 'font-cmd': { + tokenType: 'func', + tokenValues: ['textnormal', 'textrm', 'textsf', 'texttt', 'textup', 'textit', + 'textsl', 'textsc', 'uppercase', 'lowercase', 'textbf', 'textmd', + 'textlf'] + }, + 'text-symbol': { + tokenType: 'func', + tokenValues: ['textbackslash'] + } +}; + +Parser.prototype._parseAtom = function() { + for (var atomType in ACCEPTED_TOKEN_BY_ATOM) { + var acceptToken = ACCEPTED_TOKEN_BY_ATOM[atomType]; + var tokenText = this._lexer.accept( + acceptToken.tokenType, + acceptToken.tokenValues); + if (tokenText === null) continue; + + var anyWhitespace = this._lexer.get().whitespace; + if (atomType !== 'ordinary') tokenText = tokenText.toLowerCase(); + return new AtomNode(atomType, tokenText, anyWhitespace); + } + return null; +}; + +module.exports = Parser; + +},{"./utils":6}],5:[function(require,module,exports){ +/* +* */ +var utils = require('./utils'); + +/* + * TextStyle - used by TextEnvironment class to handles LaTeX text-style + * commands or declarations. + * + * The font declarations are: + * \normalfont, \rmfamily, \sffamily, \ttfamily, + * \bfseries, \mdseries, \lfseries, + * \upshape, \itshape, \scshape, \slshape. + * + * The font commands are: + * \textnormal{}, \textrm{}, \textsf{}, \texttt{}, + * \textbf{}, \textmd{}, \textlf{}, + * \textup{}, \textit{}, \textsc{}, \textsl{}, + * \uppercase{}, \lowercase{}. + * + * The sizing commands are: + * \tiny, \scriptsize, \footnotesize, \small, \normalsize, + * \large, \Large, \LARGE, \huge, \Huge. + **/ +function TextStyle(outerFontSize) { + this._css = {}; + + this._fontSize = this._outerFontSize = + outerFontSize !== undefined ? outerFontSize : 1.0; +} + +/* + * Remember the font size of outer TextStyle object. + * + * As we use relative font size 'em', the outer span (has its own TextStyle + * object) affects the size of the span to which this TextStyle object attached. + * */ +TextStyle.prototype.outerFontSize = function(size) { + if (size !== undefined) this._outerFontSize = size; + return this._outerFontSize; +}; + +TextStyle.prototype.fontSize = function() { + return this._fontSize; +}; + +/* Update the font state by TeX command + cmd - the name of TeX command that alters current font +*/ +TextStyle.prototype._fontCommandTable = { + // -------------- declaration -------------- + // font-family + normalfont: { 'font-family': 'KaTeX_Main'}, + rmfamily: { 'font-family': 'KaTeX_Main'}, + sffamily: { 'font-family': 'KaTeX_SansSerif_Replace'}, + ttfamily: { 'font-family': 'KaTeX_Typewriter_Replace'}, + // weight + bfseries: { 'font-weight': 'bold'}, + mdseries: { 'font-weight': 'medium'}, + lfseries: { 'font-weight': 'lighter'}, + // shape + upshape: { 'font-style': 'normal', 'font-variant': 'normal'}, + itshape: { 'font-style': 'italic', 'font-variant': 'normal'}, + scshape: { 'font-style': 'normal', 'font-variant': 'small-caps'}, + slshape: { 'font-style': 'oblique', 'font-variant': 'normal'}, + // -------------- command -------------- + // font-family + textnormal: { 'font-family': 'KaTeX_Main'}, + textrm: { 'font-family': 'KaTeX_Main'}, + textsf: { 'font-family': 'KaTeX_SansSerif_Replace'}, + texttt: { 'font-family': 'KaTeX_Typewriter_Replace'}, + // weight + textbf: { 'font-weight': 'bold'}, + textmd: { 'font-weight': 'medium'}, + textlf: { 'font-weight': 'lighter'}, + // shape + textup: { 'font-style': 'normal', 'font-variant': 'normal'}, + textit: { 'font-style': 'italic', 'font-variant': 'normal'}, + textsc: { 'font-style': 'normal', 'font-variant': 'small-caps'}, + textsl: { 'font-style': 'oblique', 'font-variant': 'normal'}, + // case + uppercase: { 'text-transform': 'uppercase'}, + lowercase: { 'text-transform': 'lowercase'} +}; + +TextStyle.prototype._sizingScalesTable = { + tiny: 0.68, + scriptsize: 0.80, + footnotesize: 0.85, + small: 0.92, + normalsize: 1.00, + large: 1.17, + Large: 1.41, + LARGE: 1.58, + huge: 1.90, + Huge: 2.28 +}; + +TextStyle.prototype.updateByCommand = function(cmd) { + // Font command + var cmdStyles = this._fontCommandTable[cmd]; + if (cmdStyles !== undefined) { + for (var attr in cmdStyles) + this._css[attr] = cmdStyles[attr]; + return; + } + + // Sizing command + var fontSize = this._sizingScalesTable[cmd]; + if (fontSize !== undefined) { + this._outerFontSize = this._fontSize; + this._fontSize = fontSize; + return; + } + + throw new ParserError('unrecogniazed text-style command'); +}; + +TextStyle.prototype.toCSS = function() { + var cssStr = ''; + for (var attr in this._css) { + var val = this._css[attr]; + if (val === undefined) continue; + cssStr += attr + ':' + val + ';'; + } + if (this._fontSize !== this._outerFontSize) { + cssStr += 'font-size:' + (this._fontSize / this._outerFontSize) + 'em;'; + } + return cssStr; +}; + +/* + * TextEnvironment - renders the children nodes in a ParseNode of type + * 'close-text' or 'open-text' to HTML. + **/ +function TextEnvironment(nodes, textStyle) { + this._nodes = nodes; + this._textStyle = textStyle; +} + +TextEnvironment.prototype._renderCloseText = function(node) { + var newTextStyle = new TextStyle(this._textStyle.fontSize()); + var closeTextEnv = new TextEnvironment( + node.children, newTextStyle); + if (node.whitespace) this._html.putText(' '); + this._html.putSpan(closeTextEnv.renderToHTML()); +}; + +TextEnvironment.prototype.renderToHTML = function() { + this._html = new HTMLBuilder(); + + var node; + while ((node = this._nodes.shift()) !== undefined) { + var type = node.type; + var text = node.value; + + // Insert whitespace before the atom if necessary + if (node.whitespace) this._html.putText(' '); + + switch(type) { + case 'ordinary': + this._html.putText(text); + break; + case 'math': + if (!katex) { + try { katex = require('katex'); } + catch(e) { throw 'katex is required to render math'; } + } + var mathHTML = katex.renderToString(text); + this._html.putSpan(mathHTML); + break; + case 'cond-symbol': + this._html.beginSpan('ps-keyword') + .putText(text.toLowerCase()) + .endSpan(); + break; + case 'special': + if (text === '\\\\') { + this._html.putHTML('<br/>'); + break; + } + var replace = { + '\\{': '{', + '\\}': '}', + '\\$': '$', + '\\&': '&', + '\\#': '#', + '\\%': '%', + '\\_': '_' + }; + var replaceStr = replace[text]; + this._html.putText(replaceStr); + break; + case 'text-symbol': + var name2Values = { + 'textbackslash': '\\' + }; + var symbolValue = name2Values[text]; + this._html.putText(symbolValue); + break; + case 'quote-symbol': + var quoteReplace = { + '`': '‘', + '``': '“', + '\'': '’', + '\'\'': 'â€' + }; + var realQuote = quoteReplace[text]; + this._html.putText(realQuote); + break; + case 'call': + // \CALL{funcName}{funcArgs} + // ==> + // funcName(funcArgs) + this._html.beginSpan('ps-funcname').putText(text).endSpan(); + this._html.write('('); + var argsTextNode = node.children[0]; + this._renderCloseText(argsTextNode); + this._html.write(')'); + break; + case 'close-text': + this._renderCloseText(node); + break; + // There are two kinds of typestyle commands: + // command (e.g. \textrm{...}). + // and + // declaration (e.g. { ... \rmfamily ... }) + // + // For typestyle commands, it works as following: + // \textsf --> create a new typestyle + // { --> save the current typestyle, and then use the new one + // ... --> the new typestyle is in use + // } --> restore the last typestyle + // + // For typestyle declaration, it works a little bit diferrently: + // { --> save the current typestyle, and then create and use + // an identical one + // ... --> the new typestyle is in use + // \rmfamily --> create a new typestyle + // ... --> the new typestyle is in use + // } --> restore the last typestyle + case 'font-dclr': + case 'sizing-dclr': + this._textStyle.updateByCommand(text); + this._html.beginSpan(null, this._textStyle.toCSS()); + var textEnvForDclr = new TextEnvironment(this._nodes, this._textStyle); + this._html.putSpan(textEnvForDclr.renderToHTML()); + this._html.endSpan(); + break; + case 'font-cmd': + var textNode = this._nodes[0]; + if (textNode.type !== 'close-text') continue; + + var innerTextStyle = new TextStyle(this._textStyle.fontSize()); + innerTextStyle.updateByCommand(text); + this._html.beginSpan(null, innerTextStyle.toCSS()); + var textEnvForCmd = new TextEnvironment(textNode.children, innerTextStyle); + this._html.putSpan(textEnvForCmd.renderToHTML()); + this._html.endSpan(); + break; + default: + throw new ParseError('Unexpected ParseNode of type ' + node.type); + } + } + + return this._html.toMarkup(); +}; + +/* HTMLBuilder - A helper class for constructing HTML */ +function HTMLBuilder() { + this._body = []; + this._textBuf = []; +} + +HTMLBuilder.prototype.beginDiv = function(className, style, extraStyle) { + this._beginTag('div', className, style, extraStyle); + this._body.push('\n'); // make the generated HTML more human friendly + return this; +}; + +HTMLBuilder.prototype.endDiv = function() { + this._endTag('div'); + this._body.push('\n'); // make the generated HTML more human friendly + return this; +}; + +HTMLBuilder.prototype.beginP = function(className, style, extraStyle) { + this._beginTag('p', className, style, extraStyle); + this._body.push('\n'); // make the generated HTML more human friendly + return this; +}; + +HTMLBuilder.prototype.endP = function() { + this._flushText(); + this._endTag('p'); + this._body.push('\n'); // make the generated HTML more human friendly + return this; +}; + +HTMLBuilder.prototype.beginSpan = function(className, style, extraStyle) { + this._flushText(); + return this._beginTag('span', className, style, extraStyle); +}; + +HTMLBuilder.prototype.endSpan = function() { + this._flushText(); + return this._endTag('span'); +}; + +HTMLBuilder.prototype.putHTML = +HTMLBuilder.prototype.putSpan = function(html) { + this._flushText(); + this._body.push(html); + return this; +}; + +HTMLBuilder.prototype.putText = function(text) { + this._textBuf.push(text); + return this; +}; + +HTMLBuilder.prototype.write = function(html) { + this._body.push(html); +}; + +HTMLBuilder.prototype.toMarkup = function() { + this._flushText(); + var html = this._body.join(''); + return html.trim(); +}; + +HTMLBuilder.prototype.toDOM = function() { + var html = this.toMarkup(); + var div = document.createElement('div'); + div.innerHTML = html; + return div.firstChild; +}; + +HTMLBuilder.prototype._flushText = function() { + if (this._textBuf.length === 0) return; + + var text = this._textBuf.join(''); + this._body.push(this._escapeHtml(text)); + // this._body.push(text); + this._textBuf = []; +}; + +/* Write the beginning of a DOM element + tag - the tag of the element + className - the className for the tag + style - CSS style that applies directly on the tag. This parameter can be + either a string, e.g., 'color:red', or an object, e.g. + { color: 'red', margin-left: '1em'} +*/ +HTMLBuilder.prototype._beginTag = function(tag, className, style, extraStyle) { + var spanHTML = '<' + tag; + if (className) spanHTML += ' class="' + className + '"'; + if (style) { + var styleCode; + if (utils.isString(style)) styleCode = style; + else { // style + styleCode = ''; + for (var attrName in style) { + attrVal = style[attrName]; + styleCode += attrName + ':' + attrVal + ';'; + } + } + if (extraStyle) styleCode += extraStyle; + spanHTML += ' style="' + styleCode + '"'; + } + spanHTML += '>'; + this._body.push(spanHTML); + return this; +}; + +HTMLBuilder.prototype._endTag = function(tag) { + this._body.push('</' + tag + '>'); + return this; +}; + +var entityMap = { + "&": "&", + "<": "<", + ">": ">", + '"': '"', + "'": ''', + "/": '/' + }; + +HTMLBuilder.prototype._escapeHtml = function(string) { + return String(string).replace(/[&<>"'\/]/g, function (s) { + return entityMap[s]; + }); +}; + +/* + * RendererOptions - represents options that Renderer accepts. + * + * The following are possible options: + * indentSize - The indent size of inside a control block, e.g. if, for, + * etc. The unit must be in 'em'. Default value: '1.2em'. + * commentDelimiter - The delimiters used to start and end a comment region. + * Note that only line comments are supported. Default value: '//'. + * lineNumber - Whether line numbering is enabled. Default value: false. + * lineNumberPunc - The punctuation that follows line number. Default + * value: ':'. + * noEnd - Whether block ending, like `end if`, end procedure`, etc., are + * showned. Default value: false. + * captionCount - Set the caption counter to this new value. + * + **/ +function RendererOptions(options) { + options = options || {}; + this.indentSize = options.indentSize ? + this._parseEmVal(options.indentSize) : 1.2; + this.commentDelimiter = options.commentDelimiter || ' // '; + this.lineNumberPunc = options.lineNumberPunc || ':'; + this.lineNumber = options.lineNumber !== undefined ? options.lineNumber : false; + this.noEnd = options.noEnd !== undefined ? options.noEnd : false; + if (options.captionCount !== undefined) + Renderer.captionCount = options.captionCount; +} + +RendererOptions.prototype._parseEmVal = function(emVal) { + emVal = emVal.trim(); + if (emVal.indexOf('em') !== emVal.length - 2) + throw 'option unit error; no `em` found'; + return Number(emVal.substring(0, emVal.length - 2)); +}; + +/* + * Renderer - Converts a parse tree to HTML + * + * There are three levels for renderer: Group (Block), Line and Segment, + * which are rendered to HTML tag, <div>, <p>, and <span>, respectively. + **/ +function Renderer(parser, options) { + this._root = parser.parse(); + this._options = new RendererOptions(options); + this._openLine = false; + this._blockLevel = 0; + this._textLevel = -1; + this._globalTextStyle = new TextStyle(); +} + +/* The global counter for the numbering of the algorithm environment */ +Renderer.captionCount = 0; + +Renderer.prototype.toMarkup = function() { + var html = this._html = new HTMLBuilder(); + this._buildTree(this._root); + delete this._html; + return html.toMarkup(); +}; + +Renderer.prototype.toDOM = function() { + var html = this.toMarkup(); + var div = document.createElement('div'); + div.innerHTML = html; + return div.firstChild; +}; + +Renderer.prototype._beginGroup = function(name, extraClass, style) { + this._closeLineIfAny(); + this._html.beginDiv('ps-' + name + (extraClass ? ' ' + extraClass : ''), + style); +}; + +Renderer.prototype._endGroup = function(name) { + this._closeLineIfAny(); + this._html.endDiv(); +}; + +Renderer.prototype._beginBlock = function() { + // The first block have to extra left margin when line number are displayed + var extraIndentForFirstBlock = + this._options.lineNumber && this._blockLevel === 0 ? 0.6 : 0; + var blockIndent = this._options.indentSize + extraIndentForFirstBlock; + + this._beginGroup('block', null, { + 'margin-left': blockIndent + 'em' + }); + this._blockLevel++; +}; + +Renderer.prototype._endBlock = function() { + this._closeLineIfAny(); + this._endGroup(); + this._blockLevel--; +}; + +Renderer.prototype._newLine = function() { + this._closeLineIfAny(); + + this._openLine = true; + + // For every new line, reset the relative sizing of text style + this._globalTextStyle.outerFontSize(1.0); + + var indentSize = this._options.indentSize; + // if this line is for code (e.g. \STATE) + if (this._blockLevel > 0) { + this._numLOC++; + + this._html.beginP('ps-line ps-code', this._globalTextStyle.toCSS()); + if (this._options.lineNumber) { + this._html.beginSpan('ps-linenum', { + 'left': - ((this._blockLevel - 1)*(indentSize* 1.25)) + 'em' + }) + .putText(this._numLOC + this._options.lineNumberPunc) + .endSpan(); + } + } + // if this line is for pre-conditions (e.g. \REQUIRE) + else { + this._html.beginP('ps-line', { + 'text-indent': (-indentSize) + 'em', + 'padding-left': indentSize + 'em' + }, this._globalTextStyle.toCSS()); + } +}; + +Renderer.prototype._closeLineIfAny = function() { + if (!this._openLine) return; + + this._html.endP(); + + this._openLine = false; +}; + +Renderer.prototype._typeKeyword = function(keyword) { + this._html.beginSpan('ps-keyword').putText(keyword).endSpan(); +}; + +Renderer.prototype._typeFuncName = function(funcName) { + this._html.beginSpan('ps-funcname').putText(funcName).endSpan(); +}; + +Renderer.prototype._typeText = function(text) { + this._html.write(text); +}; + +Renderer.prototype._buildTreeForAllChildren = function(node) { + var children = node.children; + for (var ci = 0; ci < children.length; ci++) + this._buildTree(children[ci]); +}; + +// The comment nodes at the beginning of blockNode are comments for controls +// Thus they should be rendered out of block +Renderer.prototype._buildCommentsFromBlock = function(blockNode) { + var children = blockNode.children; + while (children.length > 0 && children[0].type === 'comment') { + var commentNode = children.shift(); + this._buildTree(commentNode); + } +}; + +Renderer.prototype._buildTree = function(node) { + var ci, child, textNode; + switch(node.type) { + // The hierarchicy of build tree: Group (Block) > Line > Text + // ----------------- Groups ------------------------------------- + case 'root': + this._beginGroup('root'); + this._buildTreeForAllChildren(node); + this._endGroup(); + break; + case 'algorithm': + // First, decide the caption if any + var lastCaptionNode; + for (ci = 0; ci < node.children.length; ci++) { + child = node.children[ci]; + if (child.type !== 'caption') continue; + lastCaptionNode = child; + Renderer.captionCount++; + } + // Then, build the header for algorithm + if (lastCaptionNode) { + this._beginGroup('algorithm', 'with-caption'); + this._buildTree(lastCaptionNode); + } + else { + this._beginGroup('algorithm'); + } + // Then, build other nodes + for (ci = 0; ci < node.children.length; ci++) { + child = node.children[ci]; + if (child.type === 'caption') continue; + this._buildTree(child); + } + this._endGroup(); + break; + case 'algorithmic': + if (this._options.lineNumber) { + this._beginGroup('algorithmic', 'with-linenum'); + this._numLOC = 0; + } + else { + this._beginGroup('algorithmic'); + } + this._buildTreeForAllChildren(node); + this._endGroup(); + break; + case 'block': + // node: <block> + // ==> + // HTML: <div class="ps-block"> ... </div> + this._beginBlock(); + this._buildTreeForAllChildren(node); + this._endBlock(); + break; + // ----------------- Mixture (Groups + Lines) ------------------- + case 'function': + // \FUNCTION{<ordinary>}{<text>} <block> \ENDFUNCTION + // ==> + // function <ordinary>(<text>) + // ... + // end function + var funcType = node.value.type.toLowerCase(); + var defFuncName = node.value.name; + textNode = node.children[0]; + var blockNode = node.children[1]; + this._newLine(); + this._typeKeyword(funcType + ' '); + this._typeFuncName(defFuncName); + this._typeText('('); + this._buildTree(textNode); + this._typeText(')'); + + this._buildCommentsFromBlock(blockNode); + this._buildTree(blockNode); + + if (!this._options.noEnd) { + this._newLine(); + this._typeKeyword('end ' + funcType); + } + break; + case 'if': + // \IF { <cond> } + // ==> + // <p class="ps-line"> + // <span class="ps-keyword">if</span> + // ... + // <span class="ps-keyword">then</span> + // </p> + this._newLine(); + this._typeKeyword('if '); + ifCond = node.children[0]; + this._buildTree(ifCond); + this._typeKeyword(' then'); + // <block> + var ifBlock = node.children[1]; + this._buildCommentsFromBlock(ifBlock); + this._buildTree(ifBlock); + + // ( \ELIF {<cond>} <block> )[0..n] + var numElif = node.value.numElif; + for (var ei = 0 ; ei < numElif; ei++) { + // \ELIF {<cond>} + // ==> + // <p class="ps-line"> + // <span class="ps-keyword">elif</span> + // ... + // <span class="ps-keyword">then</span> + // </p> + this._newLine(); + this._typeKeyword('else if '); + var elifCond = node.children[2 + 2 * ei]; + this._buildTree(elifCond); + this._typeKeyword(' then'); + + // <block> + var elifBlock = node.children[2 + 2 * ei + 1]; + this._buildCommentsFromBlock(elifBlock); + this._buildTree(elifBlock); + } + + // ( \ELSE <block> )[0..1] + var hasElse = node.value.hasElse; + if (hasElse) { + // \ELSE + // ==> + // <p class="ps-line"> + // <span class="ps-keyword">else</span> + // </p> + this._newLine(); + this._typeKeyword('else'); + + // <block> + var elseBlock = node.children[node.children.length - 1]; + this._buildCommentsFromBlock(elseBlock); + this._buildTree(elseBlock); + } + + if (!this._options.noEnd) { + // ENDIF + this._newLine(); + this._typeKeyword('end if'); + } + break; + case 'loop': + // \FOR{<cond>} or \WHILE{<cond>} + // ==> + // <p class="ps-line"> + // <span class="ps-keyword">for</span> + // ... + // <span class="ps-keyword">do</span> + // </p> + this._newLine(); + var loopType = node.value; + var displayLoopName = { + 'for': 'for', + 'forall': 'for all', + 'while': 'while' + }; + this._typeKeyword(displayLoopName[loopType] + ' '); + var loopCond = node.children[0]; + this._buildTree(loopCond); + this._typeKeyword(' do'); + + // <block> + var block = node.children[1]; + this._buildCommentsFromBlock(block); + this._buildTree(block); + + if (!this._options.noEnd) { + // \ENDFOR or \ENDWHILE + // ==> + // <p class="ps-line"> + // <span class="ps-keyword">end for</span> + // </p> + this._newLine(); + var endLoopName = loopType === 'while' ? 'end while' : 'end for'; + this._typeKeyword(endLoopName); + } + break; + // ------------------- Lines ------------------- + case 'command': + // commands: \STATE, \ENSURE, \PRINT, \RETURN, etc. + var cmdName = node.value; + var displayName = { + 'state': '', + 'ensure': 'Ensure: ', + 'require': 'Require: ', + 'print': 'print ', + 'return': 'return ' + }[cmdName]; + + this._newLine(); + if (displayName) this._typeKeyword(displayName); + textNode = node.children[0]; + this._buildTree(textNode); + break; + case 'caption': + this._newLine(); + this._typeKeyword('Algorithm ' + Renderer.captionCount + ' '); + textNode = node.children[0]; + this._buildTree(textNode); + break; + case 'comment': + textNode = node.children[0]; + this._html.beginSpan('ps-comment'); + this._html.putText(this._options.commentDelimiter); + this._buildTree(textNode); + this._html.endSpan(); + break; + // ------------------- Text ------------------- + case 'open-text': + var openTextEnv = new TextEnvironment(node.children, this._globalTextStyle); + this._html.putSpan(openTextEnv.renderToHTML()); + break; + case 'close-text': + var outerFontSize = this._globalTextStyle.fontSize(); + var newTextStyle = new TextStyle(outerFontSize); + var closeTextEnv = new TextEnvironment(node.children, newTextStyle); + this._html.putSpan(closeTextEnv.renderToHTML()); + break; + default: + throw new ParseError('Unexpected ParseNode of type ' + node.type); + } +}; + +module.exports = Renderer; + +},{"./utils":6,"katex":undefined}],6:[function(require,module,exports){ +function isString(str) { + return (typeof str === 'string') || (str instanceof String); +} + +function isObject(obj) { + return (typeof obj === 'object' && (obj instanceof Object)); +} + +function toString(obj) { + if (!isObject(obj)) return obj + ''; + + var parts = []; + for (var member in obj) + parts.push(member + ': ' + toString(obj[member])); + return parts.join(', '); +} + +module.exports = { + isString: isString, + isObject: isObject, + toString: toString +}; + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/stylesheets/styles.css b/stylesheets/styles.css index dacf2e1861be0377092a7fb9a6779b11b837241f..e06f946505a043cd9c927390a27872c2ff974a73 100644 --- a/stylesheets/styles.css +++ b/stylesheets/styles.css @@ -1,8 +1,6 @@ -@import url(https://fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700); - body { padding:50px; - font:14px/1.5 Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; + font:14px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; color:#777; font-weight:300; } @@ -10,6 +8,7 @@ body { h1, h2, h3, h4, h5, h6 { color:#222; margin:0 0 20px; + font-weight: bold; } p, ul, ol, table, pre, dl {