jekyll-theme-hydejack 8.3.2 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (392) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1208 -0
  3. data/LICENSE.md +9 -3
  4. data/NOTICE.md +290 -0
  5. data/README.md +135 -93
  6. data/_config.yml +73 -0
  7. data/_includes/base-classes +9 -0
  8. data/_includes/body/analytics.html +1 -1
  9. data/_includes/body/comments.html +1 -1
  10. data/_includes/body/footer.html +3 -3
  11. data/_includes/body/index.html +17 -16
  12. data/_includes/body/main.html +3 -13
  13. data/_includes/body/menu.html +3 -2
  14. data/_includes/body/nav.html +4 -4
  15. data/_includes/body/scripts.html +5 -20
  16. data/_includes/body/sidebar-bg.html +13 -0
  17. data/_includes/body/sidebar-sticky.html +25 -0
  18. data/_includes/body/sidebar.html +7 -40
  19. data/_includes/components/about.html +1 -1
  20. data/_includes/components/author.html +3 -3
  21. data/_includes/components/hy-img.html +15 -26
  22. data/_includes/components/link.html +1 -1
  23. data/_includes/components/message.html +1 -1
  24. data/_includes/components/post-list-item.html +3 -5
  25. data/_includes/components/post.html +14 -11
  26. data/_includes/components/related-posts.html +14 -4
  27. data/_includes/components/tag-list.html +5 -1
  28. data/_includes/head/css/inline +1 -0
  29. data/_includes/head/index.html +14 -8
  30. data/_includes/head/links-static.html +27 -0
  31. data/_includes/head/links.html +1 -34
  32. data/_includes/head/meta-static.html +18 -0
  33. data/_includes/head/meta.html +9 -21
  34. data/_includes/head/page-style.html +1 -3
  35. data/_includes/head/scripts.html +13 -14
  36. data/_includes/head/styles-inline.html +19 -0
  37. data/_includes/head/styles-layout.html +4 -0
  38. data/_includes/head/styles-no-inline.html +8 -0
  39. data/_includes/head/styles.html +5 -46
  40. data/_includes/header.txt +1 -1
  41. data/_includes/if-non-null +7 -0
  42. data/_includes/my-body.html +1 -1
  43. data/_includes/my-scripts.html +1 -1
  44. data/_includes/scripts/load-js.min.js +1 -1
  45. data/_includes/scripts/nomodule.js +21 -0
  46. data/_includes/scripts/nomodule.min.js +1 -0
  47. data/_includes/smart-url +1 -0
  48. data/_includes/smart-url.txt +1 -1
  49. data/_includes/styles/common.scss +18 -0
  50. data/_includes/styles/inline.scss +16 -38
  51. data/_includes/styles/page-style.scss +5 -52
  52. data/_includes/styles/style.scss +22 -43
  53. data/_includes/styles/variables.scss +62 -0
  54. data/_includes/templates/animation.html +1 -1
  55. data/_includes/templates/back.html +3 -3
  56. data/_includes/templates/error.html +1 -1
  57. data/_includes/templates/forward.html +6 -0
  58. data/_includes/templates/index.html +10 -10
  59. data/_includes/templates/loading.html +1 -1
  60. data/_includes/templates/permalink.html +2 -2
  61. data/_layouts/about.html +1 -1
  62. data/_layouts/base.html +7 -2
  63. data/_layouts/blog.html +9 -7
  64. data/_layouts/compress.html +1 -1
  65. data/_layouts/default.html +4 -4
  66. data/_layouts/list.html +11 -17
  67. data/_layouts/page.html +1 -0
  68. data/_layouts/post.html +5 -3
  69. data/_sass/_mixins.scss +7 -21
  70. data/_sass/_spinner.scss +1 -1
  71. data/_sass/_syntax.scss +142 -130
  72. data/_sass/_variables.scss +2 -43
  73. data/_sass/html.scss +42 -0
  74. data/_sass/hydejack/__inline__/_avatar.scss +10 -10
  75. data/_sass/hydejack/__inline__/_base.scss +7 -21
  76. data/_sass/hydejack/__inline__/_content.scss +9 -2
  77. data/_sass/hydejack/__inline__/_images.scss +1 -3
  78. data/_sass/hydejack/__inline__/_links.scss +28 -13
  79. data/_sass/hydejack/__inline__/_menu.scss +42 -13
  80. data/_sass/hydejack/__inline__/_sidebar.scss +40 -14
  81. data/_sass/hydejack/__inline__/_social.scss +3 -0
  82. data/_sass/hydejack/__inline__/_toc.scss +55 -0
  83. data/_sass/hydejack/__inline__/_utilities.scss +3 -0
  84. data/_sass/hydejack/__link__/_avatar.scss +0 -4
  85. data/_sass/hydejack/__link__/_base.scss +1 -2
  86. data/_sass/hydejack/__link__/_break-layout.scss +17 -8
  87. data/_sass/hydejack/__link__/_content.scss +1 -0
  88. data/_sass/hydejack/__link__/_footer.scss +6 -8
  89. data/_sass/hydejack/__link__/_images.scss +8 -39
  90. data/_sass/hydejack/__link__/_katex.scss +1 -26
  91. data/_sass/hydejack/__link__/_links.scss +29 -20
  92. data/_sass/hydejack/__link__/_mark-external.scss +2 -7
  93. data/_sass/hydejack/__link__/_menu.scss +63 -8
  94. data/_sass/hydejack/__link__/_sidebar.scss +12 -9
  95. data/_sass/hydejack/__link__/_toc.scss +53 -0
  96. data/_sass/hydejack/__link__/_utilities.scss +3 -0
  97. data/_sass/hydejack/_avatar.pre.scss +10 -12
  98. data/_sass/hydejack/_base.pre.scss +7 -23
  99. data/_sass/hydejack/_break-layout.pre.scss +19 -10
  100. data/_sass/hydejack/_content.pre.scss +10 -2
  101. data/_sass/hydejack/_footer.pre.scss +6 -8
  102. data/_sass/hydejack/_images.pre.scss +9 -41
  103. data/_sass/hydejack/_katex.pre.scss +3 -28
  104. data/_sass/hydejack/_links.pre.scss +49 -19
  105. data/_sass/hydejack/_mark-external.pre.scss +2 -7
  106. data/_sass/hydejack/_menu.pre.scss +91 -22
  107. data/_sass/hydejack/_sidebar.pre.scss +48 -22
  108. data/_sass/hydejack/_social.pre.scss +3 -0
  109. data/_sass/hydejack/_toc.pre.scss +65 -0
  110. data/_sass/hydejack/_utilities.pre.scss +3 -0
  111. data/_sass/my-inline.scss +2 -16
  112. data/_sass/my-style.scss +0 -9
  113. data/_sass/pooleparty/__inline__/_base.scss +14 -9
  114. data/_sass/pooleparty/__inline__/_message.scss +31 -0
  115. data/_sass/pooleparty/__inline__/_posts.scss +19 -2
  116. data/_sass/pooleparty/__inline__/_table.scss +0 -28
  117. data/_sass/pooleparty/__inline__/_type.scss +81 -15
  118. data/_sass/pooleparty/__link__/_base.scss +11 -5
  119. data/_sass/pooleparty/__link__/_code.scss +40 -7
  120. data/_sass/pooleparty/__link__/_footnotes.scss +4 -5
  121. data/_sass/pooleparty/__link__/_pagination.scss +3 -2
  122. data/_sass/pooleparty/__link__/_posts.scss +11 -6
  123. data/_sass/pooleparty/__link__/_read-more.scss +1 -1
  124. data/_sass/pooleparty/__link__/_table.scss +27 -17
  125. data/_sass/pooleparty/__link__/_type.scss +56 -19
  126. data/_sass/pooleparty/_base.pre.scss +29 -18
  127. data/_sass/pooleparty/_code.pre.scss +40 -7
  128. data/_sass/pooleparty/_footnotes.pre.scss +4 -5
  129. data/_sass/pooleparty/_message.pre.scss +33 -2
  130. data/_sass/pooleparty/_pagination.pre.scss +5 -4
  131. data/_sass/pooleparty/_posts.pre.scss +34 -12
  132. data/_sass/pooleparty/_read-more.pre.scss +1 -1
  133. data/_sass/pooleparty/_table.pre.scss +13 -21
  134. data/_sass/pooleparty/_type.pre.scss +100 -35
  135. data/assets/bower.json +1 -2
  136. data/assets/bower_components/MathJax/.bower.json +28 -0
  137. data/assets/bower_components/MathJax/LICENSE +202 -0
  138. data/assets/bower_components/MathJax/bower.json +11 -0
  139. data/assets/bower_components/MathJax/composer.json +14 -0
  140. data/assets/bower_components/MathJax/es5/a11y/assistive-mml.js +1 -0
  141. data/assets/bower_components/MathJax/es5/a11y/complexity.js +1 -0
  142. data/assets/bower_components/MathJax/es5/a11y/explorer.js +1 -0
  143. data/assets/bower_components/MathJax/es5/a11y/semantic-enrich.js +1 -0
  144. data/assets/bower_components/MathJax/es5/adaptors/liteDOM.js +1 -0
  145. data/assets/bower_components/MathJax/es5/core.js +1 -0
  146. data/assets/bower_components/MathJax/es5/input/asciimath.js +1 -0
  147. data/assets/bower_components/MathJax/es5/input/mml.js +1 -0
  148. data/assets/bower_components/MathJax/es5/input/mml/entities.js +1 -0
  149. data/assets/bower_components/MathJax/es5/input/tex-base.js +1 -0
  150. data/assets/bower_components/MathJax/es5/input/tex-full.js +1 -0
  151. data/assets/bower_components/MathJax/es5/input/tex.js +1 -0
  152. data/assets/bower_components/MathJax/es5/input/tex/extensions/action.js +1 -0
  153. data/assets/bower_components/MathJax/es5/input/tex/extensions/all-packages.js +1 -0
  154. data/assets/bower_components/MathJax/es5/input/tex/extensions/ams.js +1 -0
  155. data/assets/bower_components/MathJax/es5/input/tex/extensions/amscd.js +1 -0
  156. data/assets/bower_components/MathJax/es5/input/tex/extensions/autoload.js +1 -0
  157. data/assets/bower_components/MathJax/es5/input/tex/extensions/bbox.js +1 -0
  158. data/assets/bower_components/MathJax/es5/input/tex/extensions/boldsymbol.js +1 -0
  159. data/assets/bower_components/MathJax/es5/input/tex/extensions/braket.js +1 -0
  160. data/assets/bower_components/MathJax/es5/input/tex/extensions/bussproofs.js +1 -0
  161. data/assets/bower_components/MathJax/es5/input/tex/extensions/cancel.js +1 -0
  162. data/assets/bower_components/MathJax/es5/input/tex/extensions/color.js +1 -0
  163. data/assets/bower_components/MathJax/es5/input/tex/extensions/colorV2.js +1 -0
  164. data/assets/bower_components/MathJax/es5/input/tex/extensions/configMacros.js +1 -0
  165. data/assets/bower_components/MathJax/es5/input/tex/extensions/enclose.js +1 -0
  166. data/assets/bower_components/MathJax/es5/input/tex/extensions/extpfeil.js +1 -0
  167. data/assets/bower_components/MathJax/es5/input/tex/extensions/html.js +1 -0
  168. data/assets/bower_components/MathJax/es5/input/tex/extensions/mhchem.js +1 -0
  169. data/assets/bower_components/MathJax/es5/input/tex/extensions/newcommand.js +1 -0
  170. data/assets/bower_components/MathJax/es5/input/tex/extensions/noerrors.js +1 -0
  171. data/assets/bower_components/MathJax/es5/input/tex/extensions/noundefined.js +1 -0
  172. data/assets/bower_components/MathJax/es5/input/tex/extensions/physics.js +1 -0
  173. data/assets/bower_components/MathJax/es5/input/tex/extensions/require.js +1 -0
  174. data/assets/bower_components/MathJax/es5/input/tex/extensions/tagFormat.js +1 -0
  175. data/assets/bower_components/MathJax/es5/input/tex/extensions/unicode.js +1 -0
  176. data/assets/bower_components/MathJax/es5/input/tex/extensions/verb.js +1 -0
  177. data/assets/bower_components/MathJax/es5/latest.js +1 -0
  178. data/assets/bower_components/MathJax/es5/loader.js +1 -0
  179. data/assets/bower_components/MathJax/es5/mml-chtml.js +1 -0
  180. data/assets/bower_components/MathJax/es5/mml-svg.js +1 -0
  181. data/assets/bower_components/MathJax/es5/node-main.js +1 -0
  182. data/assets/bower_components/MathJax/es5/output/chtml.js +1 -0
  183. data/assets/bower_components/MathJax/es5/output/chtml/fonts/tex.js +1 -0
  184. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
  185. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
  186. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
  187. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
  188. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
  189. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
  190. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
  191. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  192. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
  193. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  194. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
  195. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
  196. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
  197. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
  198. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
  199. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
  200. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  201. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  202. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
  203. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
  204. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
  205. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
  206. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  207. data/assets/bower_components/MathJax/es5/output/svg.js +1 -0
  208. data/assets/bower_components/MathJax/es5/output/svg/fonts/tex.js +1 -0
  209. data/assets/bower_components/MathJax/es5/sre/mathmaps/en.js +104 -0
  210. data/assets/bower_components/MathJax/es5/sre/mathmaps/es.js +104 -0
  211. data/assets/bower_components/MathJax/es5/sre/mathmaps/fr.js +104 -0
  212. data/assets/bower_components/MathJax/es5/sre/mathmaps/mathmaps_ie.js +410 -0
  213. data/assets/bower_components/MathJax/es5/sre/mathmaps/nemeth.js +104 -0
  214. data/assets/bower_components/MathJax/es5/sre/sre_browser.js +1709 -0
  215. data/assets/bower_components/MathJax/es5/startup.js +1 -0
  216. data/assets/bower_components/MathJax/es5/tex-chtml-full.js +1 -0
  217. data/assets/bower_components/MathJax/es5/tex-chtml.js +1 -0
  218. data/assets/bower_components/MathJax/es5/tex-mml-chtml.js +1 -0
  219. data/assets/bower_components/MathJax/es5/tex-mml-svg.js +1 -0
  220. data/assets/bower_components/MathJax/es5/tex-svg-full.js +1 -0
  221. data/assets/bower_components/MathJax/es5/tex-svg.js +1 -0
  222. data/assets/bower_components/MathJax/es5/ui/menu.js +1 -0
  223. data/assets/bower_components/MathJax/package.json +59 -0
  224. data/assets/bower_components/katex/.bower.json +7 -8
  225. data/assets/bower_components/katex/bower.json +1 -1
  226. data/assets/bower_components/katex/dist/contrib/auto-render.js +4 -0
  227. data/assets/bower_components/katex/dist/contrib/auto-render.min.js +1 -1
  228. data/assets/bower_components/katex/dist/contrib/auto-render.mjs +215 -0
  229. data/assets/bower_components/katex/dist/contrib/copy-tex.js +9 -4
  230. data/assets/bower_components/katex/dist/contrib/copy-tex.min.css +1 -1
  231. data/assets/bower_components/katex/dist/contrib/copy-tex.min.js +1 -1
  232. data/assets/bower_components/katex/dist/contrib/copy-tex.mjs +85 -0
  233. data/assets/bower_components/katex/dist/contrib/mathtex-script-type.min.js +1 -1
  234. data/assets/bower_components/katex/dist/contrib/mathtex-script-type.mjs +24 -0
  235. data/assets/bower_components/katex/dist/contrib/mhchem.js +3241 -0
  236. data/assets/bower_components/katex/dist/contrib/mhchem.min.js +1 -0
  237. data/assets/bower_components/katex/dist/contrib/mhchem.mjs +3109 -0
  238. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  239. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  240. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  241. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  242. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  243. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  244. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  245. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  246. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  247. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  248. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  249. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  250. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  251. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  252. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  253. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  254. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  255. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  256. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  257. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  258. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  259. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  260. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  261. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  262. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  263. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  264. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  265. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  266. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  267. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  268. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  269. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  270. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  271. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  272. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  273. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  274. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  275. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  276. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  277. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  278. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  279. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  280. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  281. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  282. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  283. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  284. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  285. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  286. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  287. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  288. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  289. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  290. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  291. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  292. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  293. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  294. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  295. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  296. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  297. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  298. data/assets/bower_components/katex/dist/katex.css +18 -4
  299. data/assets/bower_components/katex/dist/katex.js +1011 -663
  300. data/assets/bower_components/katex/dist/katex.min.css +1 -1
  301. data/assets/bower_components/katex/dist/katex.min.js +1 -1
  302. data/assets/bower_components/katex/dist/katex.mjs +904 -645
  303. data/assets/bower_components/katex/yarn.lock +3091 -2622
  304. data/assets/css/{hydejack-8.3.2.css → hydejack-9.0.0.css} +0 -0
  305. data/assets/icomoon/fonts/icomoon.eot +0 -0
  306. data/assets/icomoon/fonts/icomoon.svg +10 -2
  307. data/assets/icomoon/fonts/icomoon.ttf +0 -0
  308. data/assets/icomoon/fonts/icomoon.woff +0 -0
  309. data/assets/icomoon/selection.json +1 -2555
  310. data/assets/icomoon/style.css +37 -12
  311. data/assets/js/.gitkeep +0 -0
  312. data/assets/js/LEGACY-drawer-hydejack-9.0.0.js +14 -0
  313. data/assets/js/LEGACY-fetch-hydejack-9.0.0.js +14 -0
  314. data/assets/js/LEGACY-hydejack-9.0.0.js +28 -0
  315. data/assets/js/LEGACY-navbar-hydejack-9.0.0.js +14 -0
  316. data/assets/js/LEGACY-push-state-hydejack-9.0.0.js +14 -0
  317. data/assets/js/LEGACY-resize-observer-hydejack-9.0.0.js +14 -0
  318. data/assets/js/LEGACY-shadydom-hydejack-9.0.0.js +14 -0
  319. data/assets/js/LEGACY-vendors~drawer-hydejack-9.0.0.js +47 -0
  320. data/assets/js/LEGACY-vendors~drawer~push-state-hydejack-9.0.0.js +215 -0
  321. data/assets/js/LEGACY-vendors~fetch-hydejack-9.0.0.js +14 -0
  322. data/assets/js/LEGACY-vendors~intersection-observer-hydejack-9.0.0.js +14 -0
  323. data/assets/js/LEGACY-vendors~push-state-hydejack-9.0.0.js +33 -0
  324. data/assets/js/LEGACY-vendors~shadydom-hydejack-9.0.0.js +155 -0
  325. data/assets/js/LEGACY-vendors~webanimations-hydejack-9.0.0.js +14 -0
  326. data/assets/js/LEGACY-vendors~webcomponents-hydejack-9.0.0.js +34 -0
  327. data/assets/js/LEGACY-webcomponents-hydejack-9.0.0.js +14 -0
  328. data/assets/js/drawer-hydejack-9.0.0.js +14 -0
  329. data/assets/js/fetch-hydejack-9.0.0.js +14 -0
  330. data/assets/js/hydejack-9.0.0.js +28 -0
  331. data/assets/js/navbar-hydejack-9.0.0.js +14 -0
  332. data/assets/js/push-state-hydejack-9.0.0.js +14 -0
  333. data/assets/js/resize-observer-hydejack-9.0.0.js +14 -0
  334. data/assets/js/shadydom-hydejack-9.0.0.js +14 -0
  335. data/assets/js/vendors~drawer-hydejack-9.0.0.js +47 -0
  336. data/assets/js/vendors~drawer~push-state-hydejack-9.0.0.js +163 -0
  337. data/assets/js/vendors~intersection-observer-hydejack-9.0.0.js +14 -0
  338. data/assets/js/vendors~push-state-hydejack-9.0.0.js +33 -0
  339. data/assets/js/vendors~shadydom-hydejack-9.0.0.js +146 -0
  340. data/assets/js/vendors~webanimations-hydejack-9.0.0.js +14 -0
  341. data/assets/js/webcomponents-hydejack-9.0.0.js +14 -0
  342. data/assets/version.json +3 -2
  343. data/licenses/PRO.md +4 -0
  344. data/licenses/README.md +1 -1
  345. data/licenses/{W3C.md → W3C-20150513.md} +0 -0
  346. metadata +170 -55
  347. data/assets/Resume.pdf +0 -0
  348. data/assets/bower_components/fontfaceobserver/.bower.json +0 -33
  349. data/assets/bower_components/fontfaceobserver/.gitignore +0 -2
  350. data/assets/bower_components/fontfaceobserver/.travis.yml +0 -16
  351. data/assets/bower_components/fontfaceobserver/Gruntfile.js +0 -101
  352. data/assets/bower_components/fontfaceobserver/LICENSE +0 -23
  353. data/assets/bower_components/fontfaceobserver/bower.json +0 -22
  354. data/assets/bower_components/fontfaceobserver/exports.js +0 -8
  355. data/assets/bower_components/fontfaceobserver/externs-commonjs.js +0 -10
  356. data/assets/bower_components/fontfaceobserver/externs.js +0 -15
  357. data/assets/bower_components/fontfaceobserver/fontfaceobserver.js +0 -12
  358. data/assets/bower_components/fontfaceobserver/fontfaceobserver.standalone.js +0 -8
  359. data/assets/bower_components/fontfaceobserver/package.json +0 -57
  360. data/assets/bower_components/fontfaceobserver/src/descriptors.js +0 -10
  361. data/assets/bower_components/fontfaceobserver/src/observer.js +0 -349
  362. data/assets/bower_components/fontfaceobserver/src/ruler.js +0 -130
  363. data/assets/bower_components/fontfaceobserver/vendor/google/base.js +0 -1489
  364. data/assets/bower_components/katex/dist/README.md +0 -90
  365. data/assets/bower_components/katex/lint_blacklist.txt +0 -5
  366. data/assets/img/blog/COLOURlovers.com-Hydejack.png +0 -0
  367. data/assets/img/blog/blog-layout.jpg +0 -0
  368. data/assets/img/blog/caleb-george-old.jpg +0 -0
  369. data/assets/img/blog/caleb-george.jpg +0 -0
  370. data/assets/img/blog/cover-page.jpg +0 -0
  371. data/assets/img/blog/dark-mode-ii.jpg +0 -0
  372. data/assets/img/blog/dark-mode.jpg +0 -0
  373. data/assets/img/blog/example-content-ii.jpg +0 -0
  374. data/assets/img/blog/example-content-iii.jpg +0 -0
  375. data/assets/img/blog/hydejack-8.png +0 -0
  376. data/assets/img/blog/hydejack-8@0,25x.png +0 -0
  377. data/assets/img/blog/hydejack-8@0,5x.png +0 -0
  378. data/assets/img/blog/lazy-images.jpg +0 -0
  379. data/assets/img/blog/resume.png +0 -0
  380. data/assets/img/blog/steve-harvey.jpg +0 -0
  381. data/assets/img/blog/w3m.png +0 -0
  382. data/assets/img/blog/wade-lambert.jpg +0 -0
  383. data/assets/img/docs/google-fonts.png +0 -0
  384. data/assets/img/projects/hy-drawer.svg +0 -12
  385. data/assets/img/projects/hy-img.svg +0 -17
  386. data/assets/img/projects/hy-push-state.svg +0 -13
  387. data/assets/js/hydejack-8.3.1.js +0 -47
  388. data/assets/js/hydejack-8.3.2.js +0 -47
  389. data/assets/video/blog-layout.mp4 +0 -0
  390. data/assets/video/cover-page.mp4 +0 -0
  391. data/assets/video/dark-mode.mp4 +0 -0
  392. data/assets/video/lazy-images.mp4 +0 -0
@@ -1 +1 @@
1
- @font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{border:0;clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.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.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.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.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.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.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.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.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.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.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.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.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{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 .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{border-right:.05em solid;display:inline-block;margin:0 -.025em;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;fill:currentColor;fill-opacity:1;fill-rule:nonzero;height:inherit;position:absolute;stroke:currentColor;stroke-dasharray:none;stroke-dashoffset:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-width:1;width:100%}.katex svg path{stroke:none}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{border:.04em solid #000;box-sizing:border-box}.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}
1
+ @font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.10.2"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.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.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.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.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.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.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.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.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.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.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.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.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.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.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{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 .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,function(){return function(r){var n={};function i(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=r,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(r,n,function(e){return t[e]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=2)}([function(e,t,r){},,function(e,t,r){"use strict";r.r(t);r(0);var p=function(){function r(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}return r.prototype.getSource=function(){return this.lexer.input.slice(this.start,this.end)},r.range=function(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new r(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc},r}(),a=function(){function r(e,t){this.text=void 0,this.loc=void 0,this.text=e,this.loc=t}return r.prototype.range=function(e,t){return new r(t,p.range(this,e))},r}(),n=function e(t,r){this.position=void 0;var n,i="KaTeX parse error: "+t,a=r&&r.loc;if(a&&a.start<=a.end){var o=a.lexer.input;n=a.start;var s=a.end;n===o.length?i+=" at end of input: ":i+=" at position "+(n+1)+": ";var l=o.slice(n,s).replace(/[^]/g,"$&\u0332");i+=(15":">","<":"<",'"':""","'":"'"},s=/[&><"']/g;var l=function e(t){return"ordgroup"===t.type?1===t.body.length?e(t.body[0]):t:"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},T=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},Y={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(s,function(e){return o[e]})},hyphenate:function(e){return e.replace(i,"-$1").toLowerCase()},getBaseElem:l,isCharacterBox:function(e){var t=l(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type}},h=function(){function e(e){this.displayMode=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.allowedProtocols=void 0,e=e||{},this.displayMode=Y.deflt(e.displayMode,!1),this.throwOnError=Y.deflt(e.throwOnError,!0),this.errorColor=Y.deflt(e.errorColor,"#cc0000"),this.macros=e.macros||{},this.colorIsTextColor=Y.deflt(e.colorIsTextColor,!1),this.strict=Y.deflt(e.strict,"warn"),this.maxSize=Math.max(0,Y.deflt(e.maxSize,1/0)),this.maxExpand=Math.max(0,Y.deflt(e.maxExpand,1e3)),this.allowedProtocols=Y.deflt(e.allowedProtocols,["http","https","mailto","_relative"])}var t=e.prototype;return t.reportNonstrict=function(e,t,r){var n=this.strict;if("function"==typeof n&&(n=n(e,t,r)),n&&"ignore"!==n){if(!0===n||"error"===n)throw new X("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,r){var n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n)&&(!0===n||"error"===n||("warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),!1))},e}(),m=function(){function e(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}var t=e.prototype;return t.sup=function(){return c[u[this.id]]},t.sub=function(){return c[d[this.id]]},t.fracNum=function(){return c[f[this.id]]},t.fracDen=function(){return c[g[this.id]]},t.cramp=function(){return c[v[this.id]]},t.text=function(){return c[y[this.id]]},t.isTight=function(){return 2<=this.size},e}(),c=[new m(0,0,!1),new m(1,0,!0),new m(2,1,!1),new m(3,1,!0),new m(4,2,!1),new m(5,2,!0),new m(6,3,!1),new m(7,3,!0)],u=[4,5,4,5,6,7,6,7],d=[5,5,5,5,7,7,7,7],f=[2,3,4,5,6,7,6,7],g=[3,3,5,5,7,7,7,7],v=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],q={DISPLAY:c[0],TEXT:c[2],SCRIPT:c[4],SCRIPTSCRIPT:c[6]},b=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var x=[];function w(e){for(var t=0;t=x[t]&&e<=x[t+1])return!0;return!1}b.forEach(function(e){return e.blocks.forEach(function(e){return x.push.apply(x,e)})});var k={path:{sqrtMain:"M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,\n-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8,\n-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0,\n35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5,\n-221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467\ns-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422\ns-65,47,-65,47z M834 80H400000v40H845z",sqrtSize1:"M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,\n158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067\nc4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,\n175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71\nc-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,\n-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26\ns76,-59,76,-59s76,-60,76,-60z M1001 80H40000v40H1012z",sqrtSize2:"M1001,80H400000v40H1013.1s-83.4,268,-264.1,840c-180.7,\n572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,\n-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744c-10,12,-21,25,-33,39s-32,39,-32,39\nc-6,-5.3,-15,-14,-27,-26s25,-30,25,-30c26.7,-32.7,52,-63,76,-91s52,-60,52,-60\ns208,722,208,722c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,\n-658.5c53.7,-170.3,84.5,-266.8,92.5,-289.5c4,-6.7,10,-10,18,-10z\nM1001 80H400000v40H1013z",sqrtSize3:"M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,\n-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,\n25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,\n-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079\nc169.3,-717.3,254.7,-1077.7,256,-1081c4,-6.7,10,-10,18,-10H400000v40H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M1001 80H400000v40H1014z",sqrtSize4:"M473,2793c339.3,-1799.3,509.3,-2700,510,-2702\nc3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,\n-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,\n-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,\n21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,\n77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606z\nM1001 80H400000v40H1017z",doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 241v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"}},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t"},C=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,z.call(this,e,r,n),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){return M.call(this,"span")},t.toMarkup=function(){return B.call(this,"span")},e}(),N=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,z.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){return M.call(this,"a")},t.toMarkup=function(){return B.call(this,"a")},e}(),E={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},O=function(){function e(e,t,r,n,i,a,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=n||0,this.skew=i||0,this.width=a||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t=i[0]&&e<=i[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=E[this.text])}var t=e.prototype;return t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var r in 0"):i},e}(),I=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r":""},e}(),L=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="",">"),j($,K,se,":",":"),j($,K,se,"\u2248","\\approx",!0),j($,K,se,"\u2245","\\cong",!0),j($,K,se,"\u2265","\\ge"),j($,K,se,"\u2265","\\geq",!0),j($,K,se,"\u2190","\\gets"),j($,K,se,">","\\gt"),j($,K,se,"\u2208","\\in",!0),j($,K,se,"\u0338","\\@not"),j($,K,se,"\u2282","\\subset",!0),j($,K,se,"\u2283","\\supset",!0),j($,K,se,"\u2286","\\subseteq",!0),j($,K,se,"\u2287","\\supseteq",!0),j($,J,se,"\u2288","\\nsubseteq",!0),j($,J,se,"\u2289","\\nsupseteq",!0),j($,K,se,"\u22a8","\\models"),j($,K,se,"\u2190","\\leftarrow",!0),j($,K,se,"\u2264","\\le"),j($,K,se,"\u2264","\\leq",!0),j($,K,se,"<","\\lt"),j($,K,se,"\u2192","\\rightarrow",!0),j($,K,se,"\u2192","\\to"),j($,J,se,"\u2271","\\ngeq",!0),j($,J,se,"\u2270","\\nleq",!0),j($,K,le,"\xa0","\\ "),j($,K,le,"\xa0","~"),j($,K,le,"\xa0","\\space"),j($,K,le,"\xa0","\\nobreakspace"),j(Z,K,le,"\xa0","\\ "),j(Z,K,le,"\xa0","~"),j(Z,K,le,"\xa0","\\space"),j(Z,K,le,"\xa0","\\nobreakspace"),j($,K,le,null,"\\nobreak"),j($,K,le,null,"\\allowbreak"),j($,K,oe,",",","),j($,K,oe,";",";"),j($,J,ee,"\u22bc","\\barwedge",!0),j($,J,ee,"\u22bb","\\veebar",!0),j($,K,ee,"\u2299","\\odot",!0),j($,K,ee,"\u2295","\\oplus",!0),j($,K,ee,"\u2297","\\otimes",!0),j($,K,he,"\u2202","\\partial",!0),j($,K,ee,"\u2298","\\oslash",!0),j($,J,ee,"\u229a","\\circledcirc",!0),j($,J,ee,"\u22a1","\\boxdot",!0),j($,K,ee,"\u25b3","\\bigtriangleup"),j($,K,ee,"\u25bd","\\bigtriangledown"),j($,K,ee,"\u2020","\\dagger"),j($,K,ee,"\u22c4","\\diamond"),j($,K,ee,"\u22c6","\\star"),j($,K,ee,"\u25c3","\\triangleleft"),j($,K,ee,"\u25b9","\\triangleright"),j($,K,ae,"{","\\{"),j(Z,K,he,"{","\\{"),j(Z,K,he,"{","\\textbraceleft"),j($,K,te,"}","\\}"),j(Z,K,he,"}","\\}"),j(Z,K,he,"}","\\textbraceright"),j($,K,ae,"{","\\lbrace"),j($,K,te,"}","\\rbrace"),j($,K,ae,"[","\\lbrack"),j(Z,K,he,"[","\\lbrack"),j($,K,te,"]","\\rbrack"),j(Z,K,he,"]","\\rbrack"),j($,K,ae,"(","\\lparen"),j($,K,te,")","\\rparen"),j(Z,K,he,"<","\\textless"),j(Z,K,he,">","\\textgreater"),j($,K,ae,"\u230a","\\lfloor",!0),j($,K,te,"\u230b","\\rfloor",!0),j($,K,ae,"\u2308","\\lceil",!0),j($,K,te,"\u2309","\\rceil",!0),j($,K,he,"\\","\\backslash"),j($,K,he,"\u2223","|"),j($,K,he,"\u2223","\\vert"),j(Z,K,he,"|","\\textbar"),j($,K,he,"\u2225","\\|"),j($,K,he,"\u2225","\\Vert"),j(Z,K,he,"\u2225","\\textbardbl"),j(Z,K,he,"~","\\textasciitilde"),j($,K,se,"\u2191","\\uparrow",!0),j($,K,se,"\u21d1","\\Uparrow",!0),j($,K,se,"\u2193","\\downarrow",!0),j($,K,se,"\u21d3","\\Downarrow",!0),j($,K,se,"\u2195","\\updownarrow",!0),j($,K,se,"\u21d5","\\Updownarrow",!0),j($,K,ie,"\u2210","\\coprod"),j($,K,ie,"\u22c1","\\bigvee"),j($,K,ie,"\u22c0","\\bigwedge"),j($,K,ie,"\u2a04","\\biguplus"),j($,K,ie,"\u22c2","\\bigcap"),j($,K,ie,"\u22c3","\\bigcup"),j($,K,ie,"\u222b","\\int"),j($,K,ie,"\u222b","\\intop"),j($,K,ie,"\u222c","\\iint"),j($,K,ie,"\u222d","\\iiint"),j($,K,ie,"\u220f","\\prod"),j($,K,ie,"\u2211","\\sum"),j($,K,ie,"\u2a02","\\bigotimes"),j($,K,ie,"\u2a01","\\bigoplus"),j($,K,ie,"\u2a00","\\bigodot"),j($,K,ie,"\u222e","\\oint"),j($,K,ie,"\u222f","\\oiint"),j($,K,ie,"\u2230","\\oiiint"),j($,K,ie,"\u2a06","\\bigsqcup"),j($,K,ie,"\u222b","\\smallint"),j(Z,K,re,"\u2026","\\textellipsis"),j($,K,re,"\u2026","\\mathellipsis"),j(Z,K,re,"\u2026","\\ldots",!0),j($,K,re,"\u2026","\\ldots",!0),j($,K,re,"\u22ef","\\@cdots",!0),j($,K,re,"\u22f1","\\ddots",!0),j($,K,he,"\u22ee","\\varvdots"),j($,K,Q,"\u02ca","\\acute"),j($,K,Q,"\u02cb","\\grave"),j($,K,Q,"\xa8","\\ddot"),j($,K,Q,"~","\\tilde"),j($,K,Q,"\u02c9","\\bar"),j($,K,Q,"\u02d8","\\breve"),j($,K,Q,"\u02c7","\\check"),j($,K,Q,"^","\\hat"),j($,K,Q,"\u20d7","\\vec"),j($,K,Q,"\u02d9","\\dot"),j($,K,Q,"\u02da","\\mathring"),j($,K,ne,"\u0131","\\imath",!0),j($,K,ne,"\u0237","\\jmath",!0),j(Z,K,he,"\u0131","\\i",!0),j(Z,K,he,"\u0237","\\j",!0),j(Z,K,he,"\xdf","\\ss",!0),j(Z,K,he,"\xe6","\\ae",!0),j(Z,K,he,"\xe6","\\ae",!0),j(Z,K,he,"\u0153","\\oe",!0),j(Z,K,he,"\xf8","\\o",!0),j(Z,K,he,"\xc6","\\AE",!0),j(Z,K,he,"\u0152","\\OE",!0),j(Z,K,he,"\xd8","\\O",!0),j(Z,K,Q,"\u02ca","\\'"),j(Z,K,Q,"\u02cb","\\`"),j(Z,K,Q,"\u02c6","\\^"),j(Z,K,Q,"\u02dc","\\~"),j(Z,K,Q,"\u02c9","\\="),j(Z,K,Q,"\u02d8","\\u"),j(Z,K,Q,"\u02d9","\\."),j(Z,K,Q,"\u02da","\\r"),j(Z,K,Q,"\u02c7","\\v"),j(Z,K,Q,"\xa8",'\\"'),j(Z,K,Q,"\u02dd","\\H"),j(Z,K,Q,"\u25ef","\\textcircled");var me={"--":!0,"---":!0,"``":!0,"''":!0};j(Z,K,he,"\u2013","--"),j(Z,K,he,"\u2013","\\textendash"),j(Z,K,he,"\u2014","---"),j(Z,K,he,"\u2014","\\textemdash"),j(Z,K,he,"\u2018","`"),j(Z,K,he,"\u2018","\\textquoteleft"),j(Z,K,he,"\u2019","'"),j(Z,K,he,"\u2019","\\textquoteright"),j(Z,K,he,"\u201c","``"),j(Z,K,he,"\u201c","\\textquotedblleft"),j(Z,K,he,"\u201d","''"),j(Z,K,he,"\u201d","\\textquotedblright"),j($,K,he,"\xb0","\\degree",!0),j(Z,K,he,"\xb0","\\degree"),j(Z,K,he,"\xb0","\\textdegree",!0),j($,K,ne,"\xa3","\\pounds"),j($,K,ne,"\xa3","\\mathsterling",!0),j(Z,K,ne,"\xa3","\\pounds"),j(Z,K,ne,"\xa3","\\textsterling",!0),j($,J,he,"\u2720","\\maltese"),j(Z,J,he,"\u2720","\\maltese"),j(Z,K,le,"\xa0","\\ "),j(Z,K,le,"\xa0"," "),j(Z,K,le,"\xa0","~");for(var ce='0123456789/@."',ue=0;uet&&(t=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>n&&(n=a.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n},Ge=function(e,t,r,n){var i=new C(e,t,r,n);return Ue(i),i},Xe=function(e,t,r,n){return new C(e,t,r,n)},Ye=function(e){var t=new A(e);return Ue(t),t},_e=function(e,t,r){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return n+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},We={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},je={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},$e={fontMap:We,makeSymbol:Fe,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),r&&r.font&&"boldsymbol"===r.font&&Pe(e,"Main-Bold",t).metrics?Fe(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===W[t][e].font?Fe(e,"Main-Regular",t,r,n):Fe(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:Ge,makeSvgSpan:Xe,makeLineSpan:function(e,t,r){var n=Ge([e],[],t);return n.height=r||t.fontMetrics().defaultRuleThickness,n.style.borderBottomWidth=n.height+"em",n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){var i=new N(e,t,r,n);return Ue(i),i},makeFragment:Ye,wrapFragment:function(e,t){return e instanceof A?Ge([],[e],t):e},makeVList:function(e,t){for(var r=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,i=n,a=1;a"},t.toText=function(){return this.children.map(function(e){return e.toText()}).join("")},e}(),zt=function(){function e(e,t){void 0===t&&(t=!0),this.text=void 0,this.needsEscape=void 0,this.text=e,this.needsEscape=t}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.toText())},t.toMarkup=function(){return this.toText()},t.toText=function(){return this.needsEscape?Y.escape(this.text):this.text},e}(),Mt={MathNode:St,TextNode:zt,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=.05555<=e&&e<=.05556?" ":.1666<=e&&e<=.1667?" ":.2222<=e&&e<=.2223?" ":.2777<=e&&e<=.2778?"  ":-.05556<=e&&e<=-.05555?"​":-.1667<=e&&e<=-.1666?"​":-.2223<=e&&e<=-.2222?"​":-.2778<=e&&e<=-.2777?"​":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",this.width+"em"),e},t.toMarkup=function(){return this.character?""+this.character+"":''},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:kt},Tt=function(e,t,r){return!W[t][e]||!W[t][e].replace||55349===e.charCodeAt(0)||me.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(e=W[t][e].replace),new Mt.TextNode(e)},At=function(e){return 1===e.length?e[0]:new Mt.MathNode("mrow",e)},Bt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var n=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";var i=e.text;return Y.contains(["\\imath","\\jmath"],i)?null:(W[n][i]&&W[n][i].replace&&(i=W[n][i].replace),F(i,$e.fontMap[r].fontName,n)?$e.fontMap[r].variant:null)},Ct=function(e,t){for(var r,n=[],i=0;i but got "+String(e)+".")}(bt(a,t)),a.base=n):r=(n=Ze(e,"accent")).base;var o=bt(r,t.havingCrampedStyle()),s=0;if(n.isShifty&&Y.isCharacterBox(r)){var l=Y.getBaseElem(r);s=function(e){if(e instanceof O)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}(bt(l,t.havingCrampedStyle())).skew}var h,m=Math.min(o.height,t.fontMetrics().xHeight);if(n.isStretchy)h=Dt(n,t),h=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:h,wrapperClasses:["svg-align"],wrapperStyle:0","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],er=[0,1.2,1.8,2.4,3],tr=[{type:"small",style:q.SCRIPTSCRIPT},{type:"small",style:q.SCRIPT},{type:"small",style:q.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],rr=[{type:"small",style:q.SCRIPTSCRIPT},{type:"small",style:q.SCRIPT},{type:"small",style:q.TEXT},{type:"stack"}],nr=[{type:"small",style:q.SCRIPTSCRIPT},{type:"small",style:q.SCRIPT},{type:"small",style:q.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],ir=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},ar=function(e,t,r,n){for(var i=Math.min(2,3-n.style.size);i"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=Y.contains(Qt,e)?tr:Y.contains(Kt,e)?nr:rr;var s,l,h,m,c,u,p,d,f=ar(e,t,o,n);return"small"===f.type?(s=e,l=f.style,h=r,m=n,c=i,u=a,p=$e.makeSymbol(s,"Main-Regular",c,m),d=Yt(p,l,m,u),h&&_t(d,m,l),d):"large"===f.type?Wt(e,f.size,r,n,i,a):$t(e,t,r,n,i,a)},sr=function(e,t){var r,n,i=t.havingBaseSizing(),a=ar("\\surd",e*i.sizeMultiplier,nr,i),o=i.sizeMultiplier,s=0,l=0,h=0;return n="small"===a.type?(e<1?o=1:e<1.4&&(o=.7),l=1/o,(r=Zt("sqrtMain",s=1.08/o,h=1080,t)).style.minWidth="0.853em",.833/o):"large"===a.type?(h=1080*er[a.size],l=er[a.size]/o,s=(er[a.size]+.08)/o,(r=Zt("sqrtSize"+a.size,s,h,t)).style.minWidth="1.02em",1/o):(s=e+.08,l=e,h=Math.floor(1e3*e)+80,(r=Zt("sqrtTall",s,h,t)).style.minWidth="0.742em",1.056),r.height=l,r.style.height=s+"em",{span:r,advanceWidth:n,ruleWidth:t.fontMetrics().sqrtRuleThickness*o}},lr=function(e,t,r,n,i){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),Y.contains(Kt,e)||Y.contains(Qt,e))return Wt(e,t,!1,r,n,i);if(Y.contains(Jt,e))return $t(e,er[t],!1,r,n,i);throw new X("Illegal delimiter: '"+e+"'")},hr=or,mr=function(e,t,r,n,i,a){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return or(e,h,!0,n,i,a)},cr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},ur=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function pr(e,t){var r=Qe(e);if(r&&Y.contains(ur,r.text))return r;throw new X("Invalid delimiter: '"+(r?r.text:JSON.stringify(e))+"' after '"+t.funcName+"'",e)}function dr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}lt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){var r=pr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:cr[e.funcName].size,mclass:cr[e.funcName].mclass,delim:r.text}},htmlBuilder:function(e,t){return"."===e.delim?$e.makeSpan([e.mclass]):lr(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(Tt(e.delim,e.mode));var r=new Mt.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),lt({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(e,t){return{type:"leftright-right",mode:e.parser.mode,delim:pr(t[0],e).text}}}),lt({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(e,t){var r=pr(t[0],e),n=e.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=Ze(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim}},htmlBuilder:function(e,t){dr(e);for(var r,n,i=dt(e.body,t,!0,[null,"mclose"]),a=0,o=0,s=!1,l=0;lr.height+r.depth+a&&(a=(a+c-r.height-r.depth)/2);var u=l.height-r.height-a-h;r.style.paddingLeft=m+"em";var p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:l},{type:"kern",size:h}]},t);if(e.index){var d=t.havingStyle(q.SCRIPTSCRIPT),f=bt(e.index,d,t),g=.6*(p.height-p.depth),v=$e.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},t),y=$e.makeSpan(["root"],[v]);return $e.makeSpan(["mord","sqrt"],[y,p],t)}return $e.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder:function(e,t){var r=e.body,n=e.index;return n?new Mt.MathNode("mroot",[qt(r,t),qt(n,t)]):new Mt.MathNode("msqrt",[qt(r,t)])}});var _r={display:q.DISPLAY,text:q.TEXT,script:q.SCRIPT,scriptscript:q.SCRIPTSCRIPT};lt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,i=e.parser;i.consumeSpaces();var a=i.parseExpression(!0,r),o=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:o,body:a}},htmlBuilder:function(e,t){var r=_r[e.style],n=t.havingStyle(r).withFont("");return Gr(e.body,n,t)},mathmlBuilder:function(e,t){var r={display:q.DISPLAY,text:q.TEXT,script:q.SCRIPT,scriptscript:q.SCRIPTSCRIPT}[e.style],n=t.havingStyle(r),i=Ct(e.body,n),a=new Mt.MathNode("mstyle",i),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return a.setAttribute("scriptlevel",o[0]),a.setAttribute("displaystyle",o[1]),a}});ht({type:"supsub",htmlBuilder:function(e,t){var r,n,i,a=(n=t,(i=(r=e).base)?"op"!==i.type?"accent"===i.type?Y.isCharacterBox(i.base)?Pt:null:"horizBrace"!==i.type?null:!r.sub===i.isOver?Hr:null:i.limits&&(n.style.size===q.DISPLAY.size||i.alwaysHandleSupSub)?Pr:null:null);if(a)return a(e,t);var o,s,l,h=e.base,m=e.sup,c=e.sub,u=bt(h,t),p=t.fontMetrics(),d=0,f=0,g=h&&Y.isCharacterBox(h);if(m){var v=t.havingStyle(t.style.sup());o=bt(m,v,t),g||(d=u.height-v.fontMetrics().supDrop*v.sizeMultiplier/t.sizeMultiplier)}if(c){var y=t.havingStyle(t.style.sub());s=bt(c,y,t),g||(f=u.depth+y.fontMetrics().subDrop*y.sizeMultiplier/t.sizeMultiplier)}l=t.style===q.DISPLAY?p.sup1:t.style.cramped?p.sup3:p.sup2;var b,x=t.sizeMultiplier,w=.5/p.ptPerEm/x+"em",k=null;if(s){var S=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(u instanceof O||S)&&(k=-u.italic+"em")}if(o&&s){d=Math.max(d,l,o.depth+.25*p.xHeight),f=Math.max(f,p.sub2);var z=4*p.defaultRuleThickness;if(d-o.depth-(s.height-f)":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};un("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in gn?t=gn[r]:"\\not"===r.substr(0,4)?t="\\dotsb":r in W.math&&Y.contains(["bin","rel"],W.math[r].group)&&(t="\\dotsb"),t});var vn={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};un("\\dotso",function(e){return e.future().text in vn?"\\ldots\\,":"\\ldots"}),un("\\dotsc",function(e){var t=e.future().text;return t in vn&&","!==t?"\\ldots\\,":"\\ldots"}),un("\\cdots",function(e){return e.future().text in vn?"\\@cdots\\,":"\\@cdots"}),un("\\dotsb","\\cdots"),un("\\dotsm","\\cdots"),un("\\dotsi","\\!\\cdots"),un("\\dotsx","\\ldots\\,"),un("\\DOTSI","\\relax"),un("\\DOTSB","\\relax"),un("\\DOTSX","\\relax"),un("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),un("\\,","\\tmspace+{3mu}{.1667em}"),un("\\thinspace","\\,"),un("\\>","\\mskip{4mu}"),un("\\:","\\tmspace+{4mu}{.2222em}"),un("\\medspace","\\:"),un("\\;","\\tmspace+{5mu}{.2777em}"),un("\\thickspace","\\;"),un("\\!","\\tmspace-{3mu}{.1667em}"),un("\\negthinspace","\\!"),un("\\negmedspace","\\tmspace-{4mu}{.2222em}"),un("\\negthickspace","\\tmspace-{5mu}{.277em}"),un("\\enspace","\\kern.5em "),un("\\enskip","\\hskip.5em\\relax"),un("\\quad","\\hskip1em\\relax"),un("\\qquad","\\hskip2em\\relax"),un("\\tag","\\@ifstar\\tag@literal\\tag@paren"),un("\\tag@paren","\\tag@literal{({#1})}"),un("\\tag@literal",function(e){if(e.macros.get("\\df@tag"))throw new X("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),un("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),un("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),un("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),un("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),un("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\mathrlap{\\mkern0.4mu\\raisebox{0.4mu}{$#1$}}{\\mkern0.8mu#1}}}{\\mathbf{#1}}"),un("\\\\","\\newline"),un("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var yn=H["Main-Regular"]["T".charCodeAt(0)][1]-.7*H["Main-Regular"]["A".charCodeAt(0)][1]+"em";un("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+yn+"}{\\scriptsize A}\\kern-.15em\\TeX}{LaTeX}}"),un("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+yn+"}{\\scriptsize A}\\kern-.15em\\TeX}{KaTeX}}"),un("\\hspace","\\@ifstar\\@hspacer\\@hspace"),un("\\@hspace","\\hskip #1\\relax"),un("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),un("\\ordinarycolon",":"),un("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),un("\\dblcolon","\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}"),un("\\coloneqq","\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}"),un("\\Coloneqq","\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}"),un("\\coloneq","\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}"),un("\\Coloneq","\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}"),un("\\eqqcolon","\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),un("\\Eqqcolon","\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}"),un("\\eqcolon","\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),un("\\Eqcolon","\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}"),un("\\colonapprox","\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}"),un("\\Colonapprox","\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}"),un("\\colonsim","\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}"),un("\\Colonsim","\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}"),un("\u2254","\\coloneqq"),un("\u2255","\\eqqcolon"),un("\u2a74","\\Coloneqq"),un("\\ratio","\\vcentcolon"),un("\\coloncolon","\\dblcolon"),un("\\colonequals","\\coloneqq"),un("\\coloncolonequals","\\Coloneqq"),un("\\equalscolon","\\eqqcolon"),un("\\equalscoloncolon","\\Eqqcolon"),un("\\colonminus","\\coloneq"),un("\\coloncolonminus","\\Coloneq"),un("\\minuscolon","\\eqcolon"),un("\\minuscoloncolon","\\Eqcolon"),un("\\coloncolonapprox","\\Colonapprox"),un("\\coloncolonsim","\\Colonsim"),un("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),un("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),un("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),un("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),un("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),un("\\limsup","\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits"),un("\\liminf","\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"),un("\u27e6","\\mathopen{[\\mkern-3.2mu[}"),un("\u27e7","\\mathclose{]\\mkern-3.2mu]}"),un("\\darr","\\downarrow"),un("\\dArr","\\Downarrow"),un("\\Darr","\\Downarrow"),un("\\lang","\\langle"),un("\\rang","\\rangle"),un("\\uarr","\\uparrow"),un("\\uArr","\\Uparrow"),un("\\Uarr","\\Uparrow"),un("\\N","\\mathbb{N}"),un("\\R","\\mathbb{R}"),un("\\Z","\\mathbb{Z}"),un("\\alef","\\aleph"),un("\\alefsym","\\aleph"),un("\\Alpha","\\mathrm{A}"),un("\\Beta","\\mathrm{B}"),un("\\bull","\\bullet"),un("\\Chi","\\mathrm{X}"),un("\\clubs","\\clubsuit"),un("\\cnums","\\mathbb{C}"),un("\\Complex","\\mathbb{C}"),un("\\Dagger","\\ddagger"),un("\\diamonds","\\diamondsuit"),un("\\empty","\\emptyset"),un("\\Epsilon","\\mathrm{E}"),un("\\Eta","\\mathrm{H}"),un("\\exist","\\exists"),un("\\harr","\\leftrightarrow"),un("\\hArr","\\Leftrightarrow"),un("\\Harr","\\Leftrightarrow"),un("\\hearts","\\heartsuit"),un("\\image","\\Im"),un("\\infin","\\infty"),un("\\Iota","\\mathrm{I}"),un("\\isin","\\in"),un("\\Kappa","\\mathrm{K}"),un("\\larr","\\leftarrow"),un("\\lArr","\\Leftarrow"),un("\\Larr","\\Leftarrow"),un("\\lrarr","\\leftrightarrow"),un("\\lrArr","\\Leftrightarrow"),un("\\Lrarr","\\Leftrightarrow"),un("\\Mu","\\mathrm{M}"),un("\\natnums","\\mathbb{N}"),un("\\Nu","\\mathrm{N}"),un("\\Omicron","\\mathrm{O}"),un("\\plusmn","\\pm"),un("\\rarr","\\rightarrow"),un("\\rArr","\\Rightarrow"),un("\\Rarr","\\Rightarrow"),un("\\real","\\Re"),un("\\reals","\\mathbb{R}"),un("\\Reals","\\mathbb{R}"),un("\\Rho","\\mathrm{R}"),un("\\sdot","\\cdot"),un("\\sect","\\S"),un("\\spades","\\spadesuit"),un("\\sub","\\subset"),un("\\sube","\\subseteq"),un("\\supe","\\supseteq"),un("\\Tau","\\mathrm{T}"),un("\\thetasym","\\vartheta"),un("\\weierp","\\wp"),un("\\Zeta","\\mathrm{Z}");var bn={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},xn=function(){function e(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new hn(cn,t.macros),this.mode=r,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new ln(e)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArgs=function(e){for(var t=[],r=0;rthis.settings.maxExpand)throw new X("Too many expansions: infinite loop or need to increase maxExpand setting");var n=r.tokens;if(r.numArgs)for(var i=this.consumeArgs(r.numArgs),a=(n=n.slice()).length-1;0<=a;--a){var o=n[a];if("#"===o.text){if(0===a)throw new X("Incomplete placeholder at end of macro body",o);if("#"===(o=n[--a]).text)n.splice(a+1,1);else{if(!/^[1-9]$/.test(o.text))throw new X("Not a valid argument number",o);var s;(s=n).splice.apply(s,[a,2].concat(i[+o.text-1]))}}}return this.pushTokens(n),n},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof a){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error},t.expandMacro=function(e){if(this.macros.get(e)){var t=[],r=this.stack.length;for(this.pushToken(new a(e));this.stack.length>r;){this.expandOnce()instanceof a&&t.push(this.stack.pop())}return t}},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map(function(e){return e.text}).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;var r="function"==typeof t?t(this):t;if("string"!=typeof r)return r;var n=0;if(-1!==r.indexOf("#"))for(var i=r.replace(/##/g,"");-1!==i.indexOf("#"+(n+1));)++n;for(var a=new ln(r),o=[],s=a.lex();"EOF"!==s.text;)o.push(s),s=a.lex();return o.reverse(),{tokens:o,numArgs:n}},t.isDefined=function(e){return this.macros.has(e)||tn.hasOwnProperty(e)||W.math.hasOwnProperty(e)||W.text.hasOwnProperty(e)||bn.hasOwnProperty(e)},e}(),wn={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},kn={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Sn=function(){function a(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new xn(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var e=a.prototype;return e.expect=function(e,t){if(void 0===t&&(t=!0),this.nextToken.text!==e)throw new X("Expected '"+e+"', got '"+this.nextToken.text+"'",this.nextToken);t&&this.consume()},e.consume=function(){this.nextToken=this.gullet.expandNextToken()},e.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor"),this.consume();var e=this.parseExpression(!1);return this.expect("EOF",!1),this.gullet.endGroup(),e},e.parseExpression=function(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.nextToken;if(-1!==a.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&tn[n.text]&&tn[n.text].infix)break;var i=this.parseAtom(t);if(!i)break;r.push(i)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)},e.handleInfixNodes=function(e){for(var t,r=-1,n=0;n
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.katex=e():t.katex=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){},function(t,e,r){"use strict";r.r(e);r(0);var a=function(){function t(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}return t.range=function(e,r){return r?e&&e.loc&&r.loc&&e.loc.lexer===r.loc.lexer?new t(e.loc.lexer,e.loc.start,r.loc.end):null:e&&e.loc},t}(),n=function(){function t(t,e){this.text=void 0,this.loc=void 0,this.text=t,this.loc=e}return t.prototype.range=function(e,r){return new t(r,a.range(this,e))},t}(),o=function t(e,r){this.position=void 0;var a,n="KaTeX parse error: "+e,o=r&&r.loc;if(o&&o.start<=o.end){var i=o.lexer.input;a=o.start;var s=o.end;a===i.length?n+=" at end of input: ":n+=" at position "+(a+1)+": ";var h=i.slice(a,s).replace(/[^]/g,"$&\u0332");n+=(a>15?"\u2026"+i.slice(a-15,a):i.slice(0,a))+h+(s+15":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var m=function t(e){return"ordgroup"===e.type?1===e.body.length?t(e.body[0]):e:"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,"-$1").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return"mathord"===e.type||"textord"===e.type||"atom"===e.type}},u=function(){function t(t){this.displayMode=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.allowedProtocols=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,"warn"),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3)),this.allowedProtocols=c.deflt(t.allowedProtocols,["http","https","mailto","_relative"])}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if("function"==typeof a&&(a=a(t,e,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new i("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if("function"==typeof a)try{a=a(t,e,r)}catch(t){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]"),!1)))},t}(),d=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return p[f[this.id]]},e.sub=function(){return p[g[this.id]]},e.fracNum=function(){return p[x[this.id]]},e.fracDen=function(){return p[v[this.id]]},e.cramp=function(){return p[b[this.id]]},e.text=function(){return p[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),p=[new d(0,0,!1),new d(1,0,!0),new d(2,1,!1),new d(3,1,!0),new d(4,2,!1),new d(5,2,!0),new d(6,3,!1),new d(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},k=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var S=[];function z(t){for(var e=0;e=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var M={path:{sqrtMain:"M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,\n-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8,\n-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0,\n35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5,\n-221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467\ns-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422\ns-65,47,-65,47z M834 80H400000v40H845z",sqrtSize1:"M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,\n158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067\nc4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,\n175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71\nc-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,\n-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26\ns76,-59,76,-59s76,-60,76,-60z M1001 80H40000v40H1012z",sqrtSize2:"M1001,80H400000v40H1013.1s-83.4,268,-264.1,840c-180.7,\n572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,\n-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744c-10,12,-21,25,-33,39s-32,39,-32,39\nc-6,-5.3,-15,-14,-27,-26s25,-30,25,-30c26.7,-32.7,52,-63,76,-91s52,-60,52,-60\ns208,722,208,722c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,\n-658.5c53.7,-170.3,84.5,-266.8,92.5,-289.5c4,-6.7,10,-10,18,-10z\nM1001 80H400000v40H1013z",sqrtSize3:"M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,\n-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,\n25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,\n-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079\nc169.3,-717.3,254.7,-1077.7,256,-1081c4,-6.7,10,-10,18,-10H400000v40H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M1001 80H400000v40H1014z",sqrtSize4:"M473,2793c339.3,-1799.3,509.3,-2700,510,-2702\nc3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,\n-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,\n-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,\n21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,\n77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606z\nM1001 80H400000v40H1017z",doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"}},T=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return q.call(this,"span")},e.toMarkup=function(){return C.call(this,"span")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute("href",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return q.call(this,"a")},e.toMarkup=function(){return C.call(this,"a")},t}(),O={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},E=function(){function t(t,e,r,a,n,o,i,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=t,this.height=e||0,this.depth=r||0,this.italic=a||0,this.skew=n||0,this.width=o||0,this.classes=i||[],this.style=s||{},this.maxFontSize=0;var h=function(t){for(var e=0;e=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((e=e||document.createElement("span")).className=A(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement("span")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");r&&(t=!0,e+=' style="'+c.escape(r)+'"');var n=c.escape(this.text);return t?(e+=">",e+=n,e+=""):n},t}(),R=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r":""},t}(),H=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","line");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t="",">"),W("math",j,Q,":",":"),W("math",j,Q,"\u2248","\\approx",!0),W("math",j,Q,"\u2245","\\cong",!0),W("math",j,Q,"\u2265","\\ge"),W("math",j,Q,"\u2265","\\geq",!0),W("math",j,Q,"\u2190","\\gets"),W("math",j,Q,">","\\gt"),W("math",j,Q,"\u2208","\\in",!0),W("math",j,Q,"\ue020","\\@not"),W("math",j,Q,"\u2282","\\subset",!0),W("math",j,Q,"\u2283","\\supset",!0),W("math",j,Q,"\u2286","\\subseteq",!0),W("math",j,Q,"\u2287","\\supseteq",!0),W("math",$,Q,"\u2288","\\nsubseteq",!0),W("math",$,Q,"\u2289","\\nsupseteq",!0),W("math",j,Q,"\u22a8","\\models"),W("math",j,Q,"\u2190","\\leftarrow",!0),W("math",j,Q,"\u2264","\\le"),W("math",j,Q,"\u2264","\\leq",!0),W("math",j,Q,"<","\\lt"),W("math",j,Q,"\u2192","\\rightarrow",!0),W("math",j,Q,"\u2192","\\to"),W("math",$,Q,"\u2271","\\ngeq",!0),W("math",$,Q,"\u2270","\\nleq",!0),W("math",j,"spacing","\xa0","\\ "),W("math",j,"spacing","\xa0","~"),W("math",j,"spacing","\xa0","\\space"),W("math",j,"spacing","\xa0","\\nobreakspace"),W("text",j,"spacing","\xa0","\\ "),W("text",j,"spacing","\xa0","~"),W("text",j,"spacing","\xa0","\\space"),W("text",j,"spacing","\xa0","\\nobreakspace"),W("math",j,"spacing",null,"\\nobreak"),W("math",j,"spacing",null,"\\allowbreak"),W("math",j,"punct",",",","),W("math",j,"punct",";",";"),W("math",$,Z,"\u22bc","\\barwedge",!0),W("math",$,Z,"\u22bb","\\veebar",!0),W("math",j,Z,"\u2299","\\odot",!0),W("math",j,Z,"\u2295","\\oplus",!0),W("math",j,Z,"\u2297","\\otimes",!0),W("math",j,"textord","\u2202","\\partial",!0),W("math",j,Z,"\u2298","\\oslash",!0),W("math",$,Z,"\u229a","\\circledcirc",!0),W("math",$,Z,"\u22a1","\\boxdot",!0),W("math",j,Z,"\u25b3","\\bigtriangleup"),W("math",j,Z,"\u25bd","\\bigtriangledown"),W("math",j,Z,"\u2020","\\dagger"),W("math",j,Z,"\u22c4","\\diamond"),W("math",j,Z,"\u22c6","\\star"),W("math",j,Z,"\u25c3","\\triangleleft"),W("math",j,Z,"\u25b9","\\triangleright"),W("math",j,"open","{","\\{"),W("text",j,"textord","{","\\{"),W("text",j,"textord","{","\\textbraceleft"),W("math",j,"close","}","\\}"),W("text",j,"textord","}","\\}"),W("text",j,"textord","}","\\textbraceright"),W("math",j,"open","{","\\lbrace"),W("math",j,"close","}","\\rbrace"),W("math",j,"open","[","\\lbrack"),W("text",j,"textord","[","\\lbrack"),W("math",j,"close","]","\\rbrack"),W("text",j,"textord","]","\\rbrack"),W("math",j,"open","(","\\lparen"),W("math",j,"close",")","\\rparen"),W("text",j,"textord","<","\\textless"),W("text",j,"textord",">","\\textgreater"),W("math",j,"open","\u230a","\\lfloor",!0),W("math",j,"close","\u230b","\\rfloor",!0),W("math",j,"open","\u2308","\\lceil",!0),W("math",j,"close","\u2309","\\rceil",!0),W("math",j,"textord","\\","\\backslash"),W("math",j,"textord","\u2223","|"),W("math",j,"textord","\u2223","\\vert"),W("text",j,"textord","|","\\textbar"),W("math",j,"textord","\u2225","\\|"),W("math",j,"textord","\u2225","\\Vert"),W("text",j,"textord","\u2225","\\textbardbl"),W("text",j,"textord","~","\\textasciitilde"),W("text",j,"textord","\\","\\textbackslash"),W("text",j,"textord","^","\\textasciicircum"),W("math",j,Q,"\u2191","\\uparrow",!0),W("math",j,Q,"\u21d1","\\Uparrow",!0),W("math",j,Q,"\u2193","\\downarrow",!0),W("math",j,Q,"\u21d3","\\Downarrow",!0),W("math",j,Q,"\u2195","\\updownarrow",!0),W("math",j,Q,"\u21d5","\\Updownarrow",!0),W("math",j,J,"\u2210","\\coprod"),W("math",j,J,"\u22c1","\\bigvee"),W("math",j,J,"\u22c0","\\bigwedge"),W("math",j,J,"\u2a04","\\biguplus"),W("math",j,J,"\u22c2","\\bigcap"),W("math",j,J,"\u22c3","\\bigcup"),W("math",j,J,"\u222b","\\int"),W("math",j,J,"\u222b","\\intop"),W("math",j,J,"\u222c","\\iint"),W("math",j,J,"\u222d","\\iiint"),W("math",j,J,"\u220f","\\prod"),W("math",j,J,"\u2211","\\sum"),W("math",j,J,"\u2a02","\\bigotimes"),W("math",j,J,"\u2a01","\\bigoplus"),W("math",j,J,"\u2a00","\\bigodot"),W("math",j,J,"\u222e","\\oint"),W("math",j,J,"\u222f","\\oiint"),W("math",j,J,"\u2230","\\oiiint"),W("math",j,J,"\u2a06","\\bigsqcup"),W("math",j,J,"\u222b","\\smallint"),W("text",j,"inner","\u2026","\\textellipsis"),W("math",j,"inner","\u2026","\\mathellipsis"),W("text",j,"inner","\u2026","\\ldots",!0),W("math",j,"inner","\u2026","\\ldots",!0),W("math",j,"inner","\u22ef","\\@cdots",!0),W("math",j,"inner","\u22f1","\\ddots",!0),W("math",j,"textord","\u22ee","\\varvdots"),W("math",j,"accent-token","\u02ca","\\acute"),W("math",j,"accent-token","\u02cb","\\grave"),W("math",j,"accent-token","\xa8","\\ddot"),W("math",j,"accent-token","~","\\tilde"),W("math",j,"accent-token","\u02c9","\\bar"),W("math",j,"accent-token","\u02d8","\\breve"),W("math",j,"accent-token","\u02c7","\\check"),W("math",j,"accent-token","^","\\hat"),W("math",j,"accent-token","\u20d7","\\vec"),W("math",j,"accent-token","\u02d9","\\dot"),W("math",j,"accent-token","\u02da","\\mathring"),W("math",j,K,"\u0131","\\imath",!0),W("math",j,K,"\u0237","\\jmath",!0),W("text",j,"textord","\u0131","\\i",!0),W("text",j,"textord","\u0237","\\j",!0),W("text",j,"textord","\xdf","\\ss",!0),W("text",j,"textord","\xe6","\\ae",!0),W("text",j,"textord","\xe6","\\ae",!0),W("text",j,"textord","\u0153","\\oe",!0),W("text",j,"textord","\xf8","\\o",!0),W("text",j,"textord","\xc6","\\AE",!0),W("text",j,"textord","\u0152","\\OE",!0),W("text",j,"textord","\xd8","\\O",!0),W("text",j,"accent-token","\u02ca","\\'"),W("text",j,"accent-token","\u02cb","\\`"),W("text",j,"accent-token","\u02c6","\\^"),W("text",j,"accent-token","\u02dc","\\~"),W("text",j,"accent-token","\u02c9","\\="),W("text",j,"accent-token","\u02d8","\\u"),W("text",j,"accent-token","\u02d9","\\."),W("text",j,"accent-token","\u02da","\\r"),W("text",j,"accent-token","\u02c7","\\v"),W("text",j,"accent-token","\xa8",'\\"'),W("text",j,"accent-token","\u02dd","\\H"),W("text",j,"accent-token","\u25ef","\\textcircled");var tt={"--":!0,"---":!0,"``":!0,"''":!0};W("text",j,"textord","\u2013","--"),W("text",j,"textord","\u2013","\\textendash"),W("text",j,"textord","\u2014","---"),W("text",j,"textord","\u2014","\\textemdash"),W("text",j,"textord","\u2018","`"),W("text",j,"textord","\u2018","\\textquoteleft"),W("text",j,"textord","\u2019","'"),W("text",j,"textord","\u2019","\\textquoteright"),W("text",j,"textord","\u201c","``"),W("text",j,"textord","\u201c","\\textquotedblleft"),W("text",j,"textord","\u201d","''"),W("text",j,"textord","\u201d","\\textquotedblright"),W("math",j,"textord","\xb0","\\degree",!0),W("text",j,"textord","\xb0","\\degree"),W("text",j,"textord","\xb0","\\textdegree",!0),W("math",j,K,"\xa3","\\pounds"),W("math",j,K,"\xa3","\\mathsterling",!0),W("text",j,K,"\xa3","\\pounds"),W("text",j,K,"\xa3","\\textsterling",!0),W("math",$,"textord","\u2720","\\maltese"),W("text",$,"textord","\u2720","\\maltese"),W("text",j,"spacing","\xa0","\\ "),W("text",j,"spacing","\xa0"," "),W("text",j,"spacing","\xa0","~");for(var et=0;et<'0123456789/@."'.length;et++){var rt='0123456789/@."'.charAt(et);W("math",j,"textord",rt,rt)}for(var at=0;at<'0123456789!@*()-=+[]<>|";:?/.,'.length;at++){var nt='0123456789!@*()-=+[]<>|";:?/.,'.charAt(at);W("text",j,"textord",nt,nt)}for(var ot="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",it=0;it=5?0:t>=3?1:2]){var r=U[e]={cssEmPerMu:D.quad[e]/18};for(var a in D)D.hasOwnProperty(a)&&(r[a]=D[a][e])}return U[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?"transparent":this.color},t}();yt.BASESIZE=6;var wt=yt,kt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},St={ex:!0,em:!0,mu:!0},zt=function(t,e){var r;if(t.unit in kt)r=kt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,"ex"===t.unit)r=a.fontMetrics().xHeight;else{if("em"!==t.unit)throw new i("Invalid unit: '"+t.unit+"'");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Mt=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],Tt=function(t,e,r){return _[r][t]&&_[r][t].replace&&(t=_[r][t].replace),{value:t,metrics:V(t,e,r)}},At=function(t,e,r,a,n){var o,i=Tt(t,e,r),s=i.metrics;if(t=i.value,s){var h=s.italic;("text"===r||a&&"mathit"===a.font)&&(h=0),o=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"'"),o=new E(t,0,0,0,0,0,n);if(a){o.maxFontSize=a.sizeMultiplier,a.style.isTight()&&o.classes.push("mtight");var l=a.getColor();l&&(o.style.color=l)}return o},Bt=function(t,e){if(A(t.classes)!==A(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},qt=function(t){for(var e=0,r=0,a=0,n=0;ne&&(e=o.height),o.depth>r&&(r=o.depth),o.maxFontSize>a&&(a=o.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Ct=function(t,e,r,a){var n=new N(t,e,r,a);return qt(n),n},Nt=function(t,e,r,a){return new N(t,e,r,a)},It=function(t){var e=new T(t);return qt(e),e},Ot=function(t,e,r){var a="";switch(t){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=t}return a+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},Et={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Rt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Lt={fontMap:Et,makeSymbol:At,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),r&&r.font&&"boldsymbol"===r.font&&Tt(t,"Main-Bold",e).metrics?At(t,"Main-Bold",e,r,a.concat(["mathbf"])):"\\"===t||"main"===_[e][t].font?At(t,"Main-Regular",e,r,a):At(t,"AMS-Regular",e,r,a.concat(["amsrm"]))},makeSpan:Ct,makeSvgSpan:Nt,makeLineSpan:function(t,e,r){var a=Ct([t],[],e);return a.height=r||e.fontMetrics().defaultRuleThickness,a.style.borderBottomWidth=a.height+"em",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return qt(n),n},makeFragment:It,wrapFragment:function(t,e){return t instanceof T?Ct([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,o=1;o0&&(o.push(le(i,e)),i=[]),o.push(n[s]));i.length>0&&o.push(le(i,e)),r&&((a=le(ae(r,e,!0))).classes=["tag"],o.push(a));var l=Jt(["katex-html"],o);if(l.setAttribute("aria-hidden","true"),a){var m=a.children[0];m.style.height=l.height+l.depth+"em",m.style.verticalAlign=-l.depth+"em"}return l}function ce(t){return new T(t)}var ue=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join("")},t}(),de=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),pe={MathNode:ue,TextNode:de,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?"\u200a":t>=.1666&&t<=.1667?"\u2009":t>=.2222&&t<=.2223?"\u2005":t>=.2777&&t<=.2778?"\u2005\u200a":t>=-.05556&&t<=-.05555?"\u200a\u2063":t>=-.1667&&t<=-.1666?"\u2009\u2063":t>=-.2223&&t<=-.2222?"\u205f\u2063":t>=-.2778&&t<=-.2777?"\u2005\u2063":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",this.width+"em"),t},e.toMarkup=function(){return this.character?""+this.character+"":''},e.toText=function(){return this.character?this.character:" "},t}(),newDocumentFragment:ce},fe=function(t,e,r){return!_[e][t]||!_[e][t].replace||55349===t.charCodeAt(0)||tt.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(t=_[e][t].replace),new pe.TextNode(t)},ge=function(t){return 1===t.length?t[0]:new pe.MathNode("mrow",t)},xe=function(t,e){if("texttt"===e.fontFamily)return"monospace";if("textsf"===e.fontFamily)return"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===e.fontShape&&"textbf"===e.fontWeight)return"bold-italic";if("textit"===e.fontShape)return"italic";if("textbf"===e.fontWeight)return"bold";var r=e.font;if(!r||"mathnormal"===r)return null;var a=t.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";var n=t.text;return c.contains(["\\imath","\\jmath"],n)?null:(_[a][n]&&_[a][n].replace&&(n=_[a][n].replace),V(n,Lt.fontMap[r].fontName,a)?Lt.fontMap[r].variant:null)},ve=function(t,e){for(var r,a=[],n=0;n0&&(c.text=c.text.slice(0,1)+"\u0338"+c.text.slice(1),a.pop())}}}a.push(o),r=o}return a},be=function(t,e){return ge(ve(t,e))},ye=function(t,e){if(!t)return new pe.MathNode("mrow");if(jt[t.type])return jt[t.type](t,e);throw new i("Got group of unknown type: '"+t.type+"'")};var we=function(t){return new wt({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize})},ke=function(t,e){if(e.displayMode){var r=["katex-display"];e.leqno&&r.push("leqno"),e.fleqn&&r.push("fleqn"),t=Lt.makeSpan(r,[t])}return t},Se=function(t,e,r){var a=we(r),n=function(t,e,r){var a,n=ve(t,r);a=1===n.length&&n[0]instanceof ue&&c.contains(["mrow","mtable"],n[0].type)?n[0]:new pe.MathNode("mrow",n);var o=new pe.MathNode("annotation",[new pe.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var i=new pe.MathNode("semantics",[a,o]),s=new pe.MathNode("math",[i]);return Lt.makeSpan(["katex-mathml"],[s])}(t,e,a),o=me(t,a),i=Lt.makeSpan(["katex"],[n,o]);return ke(i,r)},ze={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb"},Me={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Te=function(t){return"ordgroup"===t.type?t.body.length:1},Ae=function(t,e,r,a){var n,o=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Lt.makeSpan(["stretchy",e],[],a),"fbox"===e){var i=a.color&&a.getColor();i&&(n.style.borderColor=i)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new H({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(e)&&s.push(new H({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new R(s,{width:"100%",height:o+"em"});n=Lt.makeSvgSpan([],[h],a)}return n.height=o,n.style.height=o+"em",n},Be=function(t){var e=new pe.MathNode("mo",[new pe.TextNode(ze[t.substr(1)])]);return e.setAttribute("stretchy","true"),e},qe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,o,i,s=Te(t.base);if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,i=.42,o=a+"4"):(n=312,r=2340,i=.34,o="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],i=[0,.24,.3,.3,.36,.42][h],o=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],i=[0,.26,.286,.3,.306,.34][h],o="tilde"+h)}var l=new L(o),m=new R([l],{width:"100%",height:i+"em",viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Lt.makeSvgSpan([],[m],e),minWidth:0,height:i}}var u,d,p=[],f=Me[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=["hide-tail"],d=[f[3]];else if(2===y)u=["halfarrow-left","halfarrow-right"],d=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n "+y+" children.");u=["brace-left","brace-center","brace-right"],d=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w0&&(a.style.minWidth=n+"em"),a},Ce=function(t,e){var r,a,n,o=Pt(t,"supsub");o?(r=(a=Ht(o.base,"accent")).base,o.base=r,n=function(t){if(t instanceof N)return t;throw new Error("Expected span but got "+String(t)+".")}(he(o,e)),o.base=a):r=(a=Ht(t,"accent")).base;var i=he(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=function(t){if(t instanceof E)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}(he(h,e.havingCrampedStyle())).skew}var l,m=Math.min(i.height,e.fontMetrics().xHeight);if(a.isStretchy)l=qe(a,e),l=Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},e);else{var u,d;"\\vec"===a.label?(u=Lt.staticSvg("vec",e),d=Lt.svgData.vec[1]):((u=Lt.makeSymbol(a.label,"Main-Regular",a.mode,e)).italic=0,d=u.width),l=Lt.makeSpan(["accent-body"],[u]);var p="\\textcircled"===a.label;p&&(l.classes.push("accent-full"),m=i.height);var f=s;p||(f-=d/2),l.style.left=f+"em","\\textcircled"===a.label&&(l.style.top=".2em"),l=Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:l}]},e)}var g=Lt.makeSpan(["mord","accent"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},Ne=function(t,e){var r=t.isStretchy?Be(t.label):new pe.MathNode("mo",[fe(t.label,t.mode)]),a=new pe.MathNode("mover",[ye(t.base,e),r]);return a.setAttribute("accent","true"),a},Ie=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(t){return"\\"+t}).join("|"));$t({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!Ie.test(t.funcName),n=!a||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ce,mathmlBuilder:Ne}),$t({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ce,mathmlBuilder:Ne}),$t({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=he(t.base,e),a=qe(t,e),n="\\utilde"===t.label?.12:0,o=Lt.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},e);return Lt.makeSpan(["mord","accentunder"],[o],e)},mathmlBuilder:function(t,e){var r=Be(t.label),a=new pe.MathNode("munder",[ye(t.base,e),r]);return a.setAttribute("accentunder","true"),a}});var Oe=function(t){var e=new pe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};$t({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),o=Lt.wrapFragment(he(t.body,n,e),e);o.classes.push("x-arrow-pad"),t.below&&(n=e.havingStyle(a.sub()),(r=Lt.wrapFragment(he(t.below,n,e),e)).classes.push("x-arrow-pad"));var i,s=qe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((o.depth>.25||"\\xleftequilibrium"===t.label)&&(l-=o.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;i=Lt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:l},{type:"elem",elem:s,shift:h},{type:"elem",elem:r,shift:m}]},e)}else i=Lt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:l},{type:"elem",elem:s,shift:h}]},e);return i.children[0].children[0].children[1].classes.push("svg-align"),Lt.makeSpan(["mrel","x-arrow"],[i],e)},mathmlBuilder:function(t,e){var r,a=Be(t.label);if(t.body){var n=Oe(ye(t.body,e));if(t.below){var o=Oe(ye(t.below,e));r=new pe.MathNode("munderover",[a,o,n])}else r=new pe.MathNode("mover",[a,n])}else if(t.below){var i=Oe(ye(t.below,e));r=new pe.MathNode("munder",[a,i])}else r=Oe(),r=new pe.MathNode("mover",[a,r]);return r}}),$t({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ht(e[0],"ordgroup").body,n="",o=0;o","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],_e=[0,1.2,1.8,2.4,3],We=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],je=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],$e=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Ze=function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},Ke=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);ne)return r[n]}return r[r.length-1]},Je=function(t,e,r,a,n,o){var i;"<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),i=c.contains(Ye,t)?We:c.contains(Ge,t)?$e:je;var s=Ke(t,e,i,a);return"small"===s.type?function(t,e,r,a,n,o){var i=Lt.makeSymbol(t,"Main-Regular",n,a),s=He(i,e,a,o);return r&&Pe(s,a,e),s}(t,s.style,r,a,n,o):"large"===s.type?De(t,s.size,r,a,n,o):Ve(t,e,r,a,n,o)},Qe=function(t,e){var r,a,n=e.havingBaseSizing(),o=Ke("\\surd",t*n.sizeMultiplier,$e,n),i=n.sizeMultiplier,s=0,h=0,l=0;return"small"===o.type?(t<1?i=1:t<1.4&&(i=.7),h=1/i,(r=Ue("sqrtMain",s=1.08/i,l=1080,e)).style.minWidth="0.853em",a=.833/i):"large"===o.type?(l=1080*_e[o.size],h=_e[o.size]/i,s=(_e[o.size]+.08)/i,(r=Ue("sqrtSize"+o.size,s,l,e)).style.minWidth="1.02em",a=1/i):(s=t+.08,h=t,l=Math.floor(1e3*t)+80,(r=Ue("sqrtTall",s,l,e)).style.minWidth="0.742em",a=1.056),r.height=h,r.style.height=s+"em",{span:r,advanceWidth:a,ruleWidth:e.fontMetrics().sqrtRuleThickness*i}},tr=function(t,e,r,a,n){if("<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),c.contains(Ge,t)||c.contains(Ye,t))return De(t,e,!1,r,a,n);if(c.contains(Xe,t))return Ve(t,_e[e],!1,r,a,n);throw new i("Illegal delimiter: '"+t+"'")},er=Je,rr=function(t,e,r,a,n,o){var i=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-i,r+i),l=Math.max(h/500*901,2*h-s);return Je(t,l,!0,a,n,o)},ar={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},nr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function or(t,e){var r=Ft(t);if(r&&c.contains(nr,r.text))return r;throw new i("Invalid delimiter: '"+(r?r.text:JSON.stringify(t))+"' after '"+e.funcName+"'",t)}function ir(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}$t({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(t,e){var r=or(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:ar[t.funcName].size,mclass:ar[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return"."===t.delim?Lt.makeSpan([t.mclass]):tr(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];"."!==t.delim&&e.push(fe(t.delim,t.mode));var r=new pe.MathNode("mo",e);return"mopen"===t.mclass||"mclose"===t.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),$t({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(t,e){return{type:"leftright-right",mode:t.parser.mode,delim:or(e[0],t).text}}}),$t({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(t,e){var r=or(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var o=Ht(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:o.delim}},htmlBuilder:function(t,e){ir(t);for(var r,a,n=ae(t.body,e,!0,["mopen","mclose"]),o=0,i=0,s=!1,h=0;h-1?"mpadded":"menclose",[ye(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(r.setAttribute("width","+6pt"),r.setAttribute("height","+6pt"),r.setAttribute("lspace","3pt"),r.setAttribute("voffset","3pt"),"\\fcolorbox"===t.label){var a=e.fontMetrics().defaultRuleThickness;r.setAttribute("style","border: "+a+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};$t({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=Ht(e[0],"color-token").color,i=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,body:i}},htmlBuilder:sr,mathmlBuilder:hr}),$t({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=Ht(e[0],"color-token").color,i=Ht(e[1],"color-token").color,s=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,borderColor:o,body:s}},htmlBuilder:sr,mathmlBuilder:hr}),$t({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0},handler:function(t,e){return{type:"enclose",mode:t.parser.mode,label:"\\fbox",body:e[0]}}}),$t({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=e[0];return{type:"enclose",mode:a.mode,label:n,body:o}},htmlBuilder:sr,mathmlBuilder:hr});var lr={};function mr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,o=t.htmlBuilder,i=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h0&&(v+=.25),l.push({pos:v,isDashed:t[e]})}for(b(o[0]),r=0;r0&&(k<(T+=x)&&(k=T),T=0),t.addJot&&(k+=p),S.height=w,S.depth=k,v+=w,S.pos=v,v+=k+T,h[r]=S,b(o[r+1])}var A,B,q=v/2+e.fontMetrics().axisHeight,C=t.cols||[],N=[];for(a=0,B=0;a=s)){var L=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(L=c.deflt(I.pregap,u))&&((A=Lt.makeSpan(["arraycolsep"],[])).style.width=L+"em",N.push(A));var H=[];for(r=0;r0){for(var V=Lt.makeLineSpan("hline",e,.05),U=Lt.makeLineSpan("hdashline",e,.05),G=[{type:"elem",elem:h,shift:0}];l.length>0;){var X=l.pop(),Y=X.pos-q;X.isDashed?G.push({type:"elem",elem:U,shift:Y}):G.push({type:"elem",elem:V,shift:Y})}h=Lt.makeVList({positionType:"individualShift",children:G},e)}return Lt.makeSpan(["mord"],[h],e)},fr={c:"center ",l:"left ",r:"right "},gr=function(t,e){var r=new pe.MathNode("mtable",t.body.map(function(t){return new pe.MathNode("mtr",t.map(function(t){return new pe.MathNode("mtd",[ye(t,e)])}))})),a=.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute("rowspacing",a+"em");var n="",o="";if(t.cols){var i=t.cols,s="",h=!1,l=0,m=i.length;"separator"===i[0].type&&(n+="top ",l=1),"separator"===i[i.length-1].type&&(n+="bottom ",m-=1);for(var c=l;c0?"left ":"",n+=g[g.length-1].length>0?"right ":"";for(var x=1;x0&&c&&(p=1),a[u]={type:"align",align:d,pregap:p,postgap:0}}return n.colSeparationType=c?"align":"alignat",n};mr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(t,e){var r={cols:(Ft(e[0])?[e[0]]:Ht(e[0],"ordgroup").body).map(function(t){var e=function(t){var e=Ft(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}(t).text;if(-1!=="lcr".indexOf(e))return{type:"align",align:e};if("|"===e)return{type:"separator",separator:"|"};if(":"===e)return{type:"separator",separator:":"};throw new i("Unknown column alignment: "+e,t)}),hskipBeforeAndAfter:!0};return ur(t.parser,r,dr(t.envName))},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName],r=ur(t.parser,{hskipBeforeAndAfter:!1},dr(t.envName));return e?{type:"leftright",mode:t.mode,body:[r],left:e[0],right:e[1]}:r},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(t){var e=ur(t.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},dr(t.envName));return{type:"leftright",mode:t.mode,body:[e],left:"\\{",right:"."}},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["aligned"],props:{numArgs:0},handler:xr,htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["gathered"],props:{numArgs:0},handler:function(t){return ur(t.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["alignedat"],props:{numArgs:1},handler:xr,htmlBuilder:pr,mathmlBuilder:gr}),$t({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new i(t.funcName+" valid only within array environment")}});var vr=lr;$t({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if("ordgroup"!==n.type)throw new i("Invalid environment name",n);for(var o="",s=0;s=w.SCRIPT.id?r.text():w.DISPLAY:"text"===t&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===t?r=w.SCRIPT:"scriptscript"===t&&(r=w.SCRIPTSCRIPT),r},Ar=function(t,e){var r,a=Tr(t.size,e.style),n=a.fracNum(),o=a.fracDen();r=e.havingStyle(n);var i=he(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;i.height=i.height0?3*c:7*c,p=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,d=c):(u=e.fontMetrics().num3,d=3*c),p=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-i.depth-(y+.5*m)0&&(e="."===(e=t)?null:e),e};$t({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],o=Pt(e[0],"atom");o&&(o=Dt(e[0],"open"));var i=o?Cr(o.text):null,s=Pt(e[1],"atom");s&&(s=Dt(e[1],"close"));var h,l=s?Cr(s.text):null,m=Ht(e[2],"size"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u="auto",d=Pt(e[3],"ordgroup");if(d){if(d.body.length>0){var p=Ht(d.body[0],"textord");u=qr[Number(p.text)]}}else d=Ht(e[3],"textord"),u=qr[Number(d.text)];return{type:"genfrac",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:i,rightDelim:l,size:u}},htmlBuilder:Ar,mathmlBuilder:Br}),$t({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ht(e[0],"size").value,token:a}}}),$t({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t}(Ht(e[1],"infix").size),o=e[2],i=n.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:o,continued:!1,hasBarLine:i,barSize:n,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Ar,mathmlBuilder:Br});var Nr=function(t,e){var r,a,n=e.style,o=Pt(t,"supsub");o?(r=o.sup?he(o.sup,e.havingStyle(n.sup()),e):he(o.sub,e.havingStyle(n.sub()),e),a=Ht(o.base,"horizBrace")):a=Ht(t,"horizBrace");var i,s=he(a.base,e.havingBaseStyle(w.DISPLAY)),h=qe(a,e);if(a.isOver?(i=Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:h}]},e)).children[0].children[0].children[1].classes.push("svg-align"):(i=Lt.makeVList({positionType:"bottom",positionData:s.depth+.1+h.height,children:[{type:"elem",elem:h},{type:"kern",size:.1},{type:"elem",elem:s}]},e)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Lt.makeSpan(["mord",a.isOver?"mover":"munder"],[i],e);i=a.isOver?Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Lt.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Lt.makeSpan(["mord",a.isOver?"mover":"munder"],[i],e)};$t({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:Nr,mathmlBuilder:function(t,e){var r=Be(t.label);return new pe.MathNode(t.isOver?"mover":"munder",[ye(t.base,e),r])}}),$t({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ht(e[0],"url").url;return{type:"href",mode:r.mode,href:n,body:Kt(a)}},htmlBuilder:function(t,e){var r=ae(t.body,e,!1);return Lt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=be(t.body,e);return r instanceof ue||(r=new ue("mrow",[r])),r.setAttribute("href",t.href),r}}),$t({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ht(e[0],"url").url,n=[],o=0;o0){var d=s.italic,p=Lt.staticSvg(u+"Size"+(l?"2":"1"),e);s=Lt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),n.name="\\"+u,s.classes.unshift("mop"),s.italic=d}}else if(n.body){var f=ae(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]="mop":s=Lt.makeSpan(["mop"],Lt.tryCombineChars(f),e)}else{for(var g=[],x=1;x0){for(var r=t.body.map(function(t){var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),a=ae(r,e.withFont("mathrm"),!0),n=0;n=0?s.setAttribute("height","+"+n+"em"):(s.setAttribute("height",n+"em"),s.setAttribute("depth","+"+-n+"em")),s.setAttribute("voffset",n+"em"),s}}),$t({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,o=!1,i=r[0]&&Ht(r[0],"ordgroup");if(i)for(var s="",h=0;hr.height+r.depth+o&&(o=(o+c-r.height-r.depth)/2);var u=h.height-r.height-o-l;r.style.paddingLeft=m+"em";var d=Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:h},{type:"kern",size:l}]},e);if(t.index){var p=e.havingStyle(w.SCRIPTSCRIPT),f=he(t.index,p,e),g=.6*(d.height-d.depth),x=Lt.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},e),v=Lt.makeSpan(["root"],[x]);return Lt.makeSpan(["mord","sqrt"],[v,d],e)}return Lt.makeSpan(["mord","sqrt"],[d],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new pe.MathNode("mroot",[ye(r,e),ye(a,e)]):new pe.MathNode("msqrt",[ye(r,e)])}});var Vr={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};$t({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,o=n.parseExpression(!0,r),i=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:i,body:o}},htmlBuilder:function(t,e){var r=Vr[t.style],a=e.havingStyle(r).withFont("");return Pr(t.body,a,e)},mathmlBuilder:function(t,e){var r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT}[t.style],a=e.havingStyle(r),n=ve(t.body,a),o=new pe.MathNode("mstyle",n),i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return o.setAttribute("scriptlevel",i[0]),o.setAttribute("displaystyle",i[1]),o}});Zt({type:"supsub",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Er:null:"accent"===r.type?c.isCharacterBox(r.base)?Ce:null:"horizBrace"===r.type&&!t.sub===r.isOver?Nr:null:null}(t,e);if(r)return r(t,e);var a,n,o,i=t.base,s=t.sup,h=t.sub,l=he(i,e),m=e.fontMetrics(),u=0,d=0,p=i&&c.isCharacterBox(i);if(s){var f=e.havingStyle(e.style.sup());a=he(s,f,e),p||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=he(h,g,e),p||(d=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}o=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+"em",y=null;if(n){var k=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name);(l instanceof E||k)&&(y=-l.italic+"em")}if(a&&n){u=Math.max(u,o,a.depth+.25*m.xHeight),d=Math.max(d,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-d)0&&(u+=z,d-=z)}var M=[{type:"elem",elem:n,shift:d,marginRight:b,marginLeft:y},{type:"elem",elem:a,shift:-u,marginRight:b}];x=Lt.makeVList({positionType:"individualShift",children:M},e)}else if(n){d=Math.max(d,m.sub1,n.height-.8*m.xHeight);var T=[{type:"elem",elem:n,marginLeft:y,marginRight:b}];x=Lt.makeVList({positionType:"shift",positionData:d,children:T},e)}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,o,a.depth+.25*m.xHeight),x=Lt.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:b}]},e)}var A=ie(l,"right")||"mord";return Lt.makeSpan([A],[l,Lt.makeSpan(["msupsub"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Pt(t.base,"horizBrace");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),t.base&&"op"===t.base.type&&(t.base.parentIsSupSub=!0);var o,i=[ye(t.base,e)];if(t.sub&&i.push(ye(t.sub,e)),t.sup&&i.push(ye(t.sup,e)),a)o=r?"mover":"munder";else if(t.sub)if(t.sup){var s=t.base;o=s&&"op"===s.type&&s.limits&&e.style===w.DISPLAY?"munderover":"msubsup"}else{var h=t.base;o=h&&"op"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?"munder":"msub"}else{var l=t.base;o=l&&"op"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?"mover":"msup"}return new pe.MathNode(o,i)}}),Zt({type:"atom",htmlBuilder:function(t,e){return Lt.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder:function(t,e){var r=new pe.MathNode("mo",[fe(t.text,t.mode)]);if("bin"===t.family){var a=xe(t,e);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===t.family?r.setAttribute("separator","true"):"open"!==t.family&&"close"!==t.family||r.setAttribute("stretchy","false");return r}});var Ur={mi:"italic",mn:"normal",mtext:"normal"};Zt({type:"mathord",htmlBuilder:function(t,e){return Lt.makeOrd(t,e,"mathord")},mathmlBuilder:function(t,e){var r=new pe.MathNode("mi",[fe(t.text,t.mode,e)]),a=xe(t,e)||"italic";return a!==Ur[r.type]&&r.setAttribute("mathvariant",a),r}}),Zt({type:"textord",htmlBuilder:function(t,e){return Lt.makeOrd(t,e,"textord")},mathmlBuilder:function(t,e){var r,a=fe(t.text,t.mode,e),n=xe(t,e)||"normal";return r="text"===t.mode?new pe.MathNode("mtext",[a]):/[0-9]/.test(t.text)?new pe.MathNode("mn",[a]):"\\prime"===t.text?new pe.MathNode("mo",[a]):new pe.MathNode("mi",[a]),n!==Ur[r.type]&&r.setAttribute("mathvariant",n),r}});var Gr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Xr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Zt({type:"spacing",htmlBuilder:function(t,e){if(Xr.hasOwnProperty(t.text)){var r=Xr[t.text].className||"";if("text"===t.mode){var a=Lt.makeOrd(t,e,"textord");return a.classes.push(r),a}return Lt.makeSpan(["mspace",r],[Lt.mathsym(t.text,t.mode,e)],e)}if(Gr.hasOwnProperty(t.text))return Lt.makeSpan(["mspace",Gr[t.text]],[],e);throw new i('Unknown type of space "'+t.text+'"')},mathmlBuilder:function(t,e){if(!Xr.hasOwnProperty(t.text)){if(Gr.hasOwnProperty(t.text))return new pe.MathNode("mspace");throw new i('Unknown type of space "'+t.text+'"')}return new pe.MathNode("mtext",[new pe.TextNode("\xa0")])}});var Yr=function(){var t=new pe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Zt({type:"tag",mathmlBuilder:function(t,e){var r=new pe.MathNode("mtable",[new pe.MathNode("mtr",[Yr(),new pe.MathNode("mtd",[be(t.body,e)]),Yr(),new pe.MathNode("mtd",[be(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var _r={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Wr={"\\textbf":"textbf","\\textmd":"textmd"},jr={"\\textit":"textit","\\textup":"textup"},$r=function(t,e){var r=t.font;return r?_r[r]?e.withTextFontFamily(_r[r]):Wr[r]?e.withTextFontWeight(Wr[r]):e.withTextFontShape(jr[r]):e};$t({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0,consumeMode:"text"},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"text",mode:r.mode,body:Kt(n),font:a}},htmlBuilder:function(t,e){var r=$r(t,e),a=ae(t.body,r,!0);return Lt.makeSpan(["mord","text"],Lt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=$r(t,e);return be(t.body,r)}}),$t({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:"underline",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=he(t.body,e),a=Lt.makeLineSpan("underline-line",e),n=Lt.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:a.height},{type:"elem",elem:a},{type:"kern",size:3*a.height},{type:"elem",elem:r}]},e);return Lt.makeSpan(["mord","underline"],[n],e)},mathmlBuilder:function(t,e){var r=new pe.MathNode("mo",[new pe.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new pe.MathNode("munder",[ye(t.body,e),r]);return a.setAttribute("accentunder","true"),a}}),$t({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new i("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(t,e){for(var r=Zr(t),a=[],n=e.havingStyle(e.style.text()),o=0;o0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),aa={},na=aa;function oa(t,e){aa[t]=e}oa("\\@firstoftwo",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),oa("\\@secondoftwo",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),oa("\\@ifnextchar",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),oa("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),oa("\\TextOrMath",function(t){var e=t.consumeArgs(2);return"text"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var ia={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};oa("\\char",function(t){var e,r=t.popToken(),a="";if("'"===r.text)e=8,r=t.popToken();else if('"'===r.text)e=16,r=t.popToken();else if("`"===r.text)if("\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new i("\\char` missing argument");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=ia[r.text])||a>=e)throw new i("Invalid base-"+e+" digit "+r.text);for(var n;null!=(n=ia[t.future().text])&&n":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};oa("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in la?e=la[r]:"\\not"===r.substr(0,4)?e="\\dotsb":r in _.math&&c.contains(["bin","rel"],_.math[r].group)&&(e="\\dotsb"),e});var ma={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};oa("\\dotso",function(t){return t.future().text in ma?"\\ldots\\,":"\\ldots"}),oa("\\dotsc",function(t){var e=t.future().text;return e in ma&&","!==e?"\\ldots\\,":"\\ldots"}),oa("\\cdots",function(t){return t.future().text in ma?"\\@cdots\\,":"\\@cdots"}),oa("\\dotsb","\\cdots"),oa("\\dotsm","\\cdots"),oa("\\dotsi","\\!\\cdots"),oa("\\dotsx","\\ldots\\,"),oa("\\DOTSI","\\relax"),oa("\\DOTSB","\\relax"),oa("\\DOTSX","\\relax"),oa("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),oa("\\,","\\tmspace+{3mu}{.1667em}"),oa("\\thinspace","\\,"),oa("\\>","\\mskip{4mu}"),oa("\\:","\\tmspace+{4mu}{.2222em}"),oa("\\medspace","\\:"),oa("\\;","\\tmspace+{5mu}{.2777em}"),oa("\\thickspace","\\;"),oa("\\!","\\tmspace-{3mu}{.1667em}"),oa("\\negthinspace","\\!"),oa("\\negmedspace","\\tmspace-{4mu}{.2222em}"),oa("\\negthickspace","\\tmspace-{5mu}{.277em}"),oa("\\enspace","\\kern.5em "),oa("\\enskip","\\hskip.5em\\relax"),oa("\\quad","\\hskip1em\\relax"),oa("\\qquad","\\hskip2em\\relax"),oa("\\tag","\\@ifstar\\tag@literal\\tag@paren"),oa("\\tag@paren","\\tag@literal{({#1})}"),oa("\\tag@literal",function(t){if(t.macros.get("\\df@tag"))throw new i("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),oa("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),oa("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),oa("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),oa("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),oa("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\mathrlap{\\mkern0.4mu\\raisebox{0.4mu}{$#1$}}{\\mkern0.8mu#1}}}{\\mathbf{#1}}"),oa("\\\\","\\newline"),oa("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ca=P["Main-Regular"]["T".charCodeAt(0)][1]-.7*P["Main-Regular"]["A".charCodeAt(0)][1]+"em";oa("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+ca+"}{\\scriptsize A}\\kern-.15em\\TeX}{LaTeX}}"),oa("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+ca+"}{\\scriptsize A}\\kern-.15em\\TeX}{KaTeX}}"),oa("\\hspace","\\@ifstar\\@hspacer\\@hspace"),oa("\\@hspace","\\hskip #1\\relax"),oa("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),oa("\\ordinarycolon",":"),oa("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),oa("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),oa("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),oa("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),oa("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),oa("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),oa("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),oa("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),oa("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),oa("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),oa("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),oa("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),oa("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),oa("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),oa("\u2237","\\dblcolon"),oa("\u2239","\\eqcolon"),oa("\u2254","\\coloneqq"),oa("\u2255","\\eqqcolon"),oa("\u2a74","\\Coloneqq"),oa("\\ratio","\\vcentcolon"),oa("\\coloncolon","\\dblcolon"),oa("\\colonequals","\\coloneqq"),oa("\\coloncolonequals","\\Coloneqq"),oa("\\equalscolon","\\eqqcolon"),oa("\\equalscoloncolon","\\Eqqcolon"),oa("\\colonminus","\\coloneq"),oa("\\coloncolonminus","\\Coloneq"),oa("\\minuscolon","\\eqcolon"),oa("\\minuscoloncolon","\\Eqcolon"),oa("\\coloncolonapprox","\\Colonapprox"),oa("\\coloncolonsim","\\Colonsim"),oa("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),oa("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),oa("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),oa("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),oa("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),oa("\\limsup","\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits"),oa("\\liminf","\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"),oa("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),oa("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),oa("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),oa("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),oa("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),oa("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),oa("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),oa("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),oa("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),oa("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),oa("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),oa("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),oa("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),oa("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),oa("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),oa("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),oa("\u27e6","\\llbracket"),oa("\u27e7","\\rrbracket"),oa("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),oa("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),oa("\u2983","\\lBrace"),oa("\u2984","\\rBrace"),oa("\\darr","\\downarrow"),oa("\\dArr","\\Downarrow"),oa("\\Darr","\\Downarrow"),oa("\\lang","\\langle"),oa("\\rang","\\rangle"),oa("\\uarr","\\uparrow"),oa("\\uArr","\\Uparrow"),oa("\\Uarr","\\Uparrow"),oa("\\N","\\mathbb{N}"),oa("\\R","\\mathbb{R}"),oa("\\Z","\\mathbb{Z}"),oa("\\alef","\\aleph"),oa("\\alefsym","\\aleph"),oa("\\Alpha","\\mathrm{A}"),oa("\\Beta","\\mathrm{B}"),oa("\\bull","\\bullet"),oa("\\Chi","\\mathrm{X}"),oa("\\clubs","\\clubsuit"),oa("\\cnums","\\mathbb{C}"),oa("\\Complex","\\mathbb{C}"),oa("\\Dagger","\\ddagger"),oa("\\diamonds","\\diamondsuit"),oa("\\empty","\\emptyset"),oa("\\Epsilon","\\mathrm{E}"),oa("\\Eta","\\mathrm{H}"),oa("\\exist","\\exists"),oa("\\harr","\\leftrightarrow"),oa("\\hArr","\\Leftrightarrow"),oa("\\Harr","\\Leftrightarrow"),oa("\\hearts","\\heartsuit"),oa("\\image","\\Im"),oa("\\infin","\\infty"),oa("\\Iota","\\mathrm{I}"),oa("\\isin","\\in"),oa("\\Kappa","\\mathrm{K}"),oa("\\larr","\\leftarrow"),oa("\\lArr","\\Leftarrow"),oa("\\Larr","\\Leftarrow"),oa("\\lrarr","\\leftrightarrow"),oa("\\lrArr","\\Leftrightarrow"),oa("\\Lrarr","\\Leftrightarrow"),oa("\\Mu","\\mathrm{M}"),oa("\\natnums","\\mathbb{N}"),oa("\\Nu","\\mathrm{N}"),oa("\\Omicron","\\mathrm{O}"),oa("\\plusmn","\\pm"),oa("\\rarr","\\rightarrow"),oa("\\rArr","\\Rightarrow"),oa("\\Rarr","\\Rightarrow"),oa("\\real","\\Re"),oa("\\reals","\\mathbb{R}"),oa("\\Reals","\\mathbb{R}"),oa("\\Rho","\\mathrm{P}"),oa("\\sdot","\\cdot"),oa("\\sect","\\S"),oa("\\spades","\\spadesuit"),oa("\\sub","\\subset"),oa("\\sube","\\subseteq"),oa("\\supe","\\supseteq"),oa("\\Tau","\\mathrm{T}"),oa("\\thetasym","\\vartheta"),oa("\\weierp","\\wp"),oa("\\Zeta","\\mathrm{Z}"),oa("\\argmin","\\DOTSB\\mathop{\\operatorname{arg\\,min}}\\limits"),oa("\\argmax","\\DOTSB\\mathop{\\operatorname{arg\\,max}}\\limits"),oa("\\blue","\\textcolor{##6495ed}{#1}"),oa("\\orange","\\textcolor{##ffa500}{#1}"),oa("\\pink","\\textcolor{##ff00af}{#1}"),oa("\\red","\\textcolor{##df0030}{#1}"),oa("\\green","\\textcolor{##28ae7b}{#1}"),oa("\\gray","\\textcolor{gray}{##1}"),oa("\\purple","\\textcolor{##9d38bd}{#1}"),oa("\\blueA","\\textcolor{##ccfaff}{#1}"),oa("\\blueB","\\textcolor{##80f6ff}{#1}"),oa("\\blueC","\\textcolor{##63d9ea}{#1}"),oa("\\blueD","\\textcolor{##11accd}{#1}"),oa("\\blueE","\\textcolor{##0c7f99}{#1}"),oa("\\tealA","\\textcolor{##94fff5}{#1}"),oa("\\tealB","\\textcolor{##26edd5}{#1}"),oa("\\tealC","\\textcolor{##01d1c1}{#1}"),oa("\\tealD","\\textcolor{##01a995}{#1}"),oa("\\tealE","\\textcolor{##208170}{#1}"),oa("\\greenA","\\textcolor{##b6ffb0}{#1}"),oa("\\greenB","\\textcolor{##8af281}{#1}"),oa("\\greenC","\\textcolor{##74cf70}{#1}"),oa("\\greenD","\\textcolor{##1fab54}{#1}"),oa("\\greenE","\\textcolor{##0d923f}{#1}"),oa("\\goldA","\\textcolor{##ffd0a9}{#1}"),oa("\\goldB","\\textcolor{##ffbb71}{#1}"),oa("\\goldC","\\textcolor{##ff9c39}{#1}"),oa("\\goldD","\\textcolor{##e07d10}{#1}"),oa("\\goldE","\\textcolor{##a75a05}{#1}"),oa("\\redA","\\textcolor{##fca9a9}{#1}"),oa("\\redB","\\textcolor{##ff8482}{#1}"),oa("\\redC","\\textcolor{##f9685d}{#1}"),oa("\\redD","\\textcolor{##e84d39}{#1}"),oa("\\redE","\\textcolor{##bc2612}{#1}"),oa("\\maroonA","\\textcolor{##ffbde0}{#1}"),oa("\\maroonB","\\textcolor{##ff92c6}{#1}"),oa("\\maroonC","\\textcolor{##ed5fa6}{#1}"),oa("\\maroonD","\\textcolor{##ca337c}{#1}"),oa("\\maroonE","\\textcolor{##9e034e}{#1}"),oa("\\purpleA","\\textcolor{##ddd7ff}{#1}"),oa("\\purpleB","\\textcolor{##c6b9fc}{#1}"),oa("\\purpleC","\\textcolor{##aa87ff}{#1}"),oa("\\purpleD","\\textcolor{##7854ab}{#1}"),oa("\\purpleE","\\textcolor{##543b78}{#1}"),oa("\\mintA","\\textcolor{##f5f9e8}{#1}"),oa("\\mintB","\\textcolor{##edf2df}{#1}"),oa("\\mintC","\\textcolor{##e0e5cc}{#1}"),oa("\\grayA","\\textcolor{##f6f7f7}{#1}"),oa("\\grayB","\\textcolor{##f0f1f2}{#1}"),oa("\\grayC","\\textcolor{##e3e5e6}{#1}"),oa("\\grayD","\\textcolor{##d6d8da}{#1}"),oa("\\grayE","\\textcolor{##babec2}{#1}"),oa("\\grayF","\\textcolor{##888d93}{#1}"),oa("\\grayG","\\textcolor{##626569}{#1}"),oa("\\grayH","\\textcolor{##3b3e40}{#1}"),oa("\\grayI","\\textcolor{##21242c}{#1}"),oa("\\kaBlue","\\textcolor{##314453}{#1}"),oa("\\kaGreen","\\textcolor{##71B307}{#1}");var ua={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},da=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ra(na,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new ea(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;rthis.settings.maxExpand)throw new i("Too many expansions: infinite loop or need to increase maxExpand setting");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),o=(a=a.slice()).length-1;o>=0;--o){var s=a[o];if("#"===s.text){if(0===o)throw new i("Incomplete placeholder at end of macro body",s);if("#"===(s=a[--o]).text)a.splice(o+1,1);else{if(!/^[1-9]$/.test(s.text))throw new i("Not a valid argument number",s);var h;(h=a).splice.apply(h,[o,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if("\\relax"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(""):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r="function"==typeof e?e(this):e;if("string"==typeof r){var a=0;if(-1!==r.indexOf("#"))for(var n=r.replace(/##/g,"");-1!==n.indexOf("#"+(a+1));)++a;for(var o=new ea(r,this.settings),i=[],s=o.lex();"EOF"!==s.text;)i.push(s),s=o.lex();return i.reverse(),{tokens:i,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||Kr.hasOwnProperty(t)||_.math.hasOwnProperty(t)||_.text.hasOwnProperty(t)||ua.hasOwnProperty(t)},t}(),pa={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},fa={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},ga=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new da(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.nextToken.text!==t)throw new i("Expected '"+t+"', got '"+this.nextToken.text+"'",this.nextToken);e&&this.consume()},e.consume=function(){this.nextToken=this.gullet.expandNextToken()},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor"),this.consume();var t=this.parseExpression(!1);return this.expect("EOF",!1),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.nextToken;if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&Kr[n.text]&&Kr[n.text].infix)break;var o=this.parseAtom(r);if(!o)break;a.push(o)}return"text"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a0&&!l&&this.consumeSpaces(),0!==s||l||"math"!==this.mode||this.consumeSpaces();var m=this.nextToken,c=this.parseGroupOfType("argument to '"+t+"'",h,l,a);if(!c){if(l){o.push(null);continue}throw new i("Expected group after '"+t+"'",m)}(l?o:n).push(c)}return{args:n,optArgs:o}},e.parseGroupOfType=function(t,e,r,a){switch(e){case"color":return this.parseColorGroup(r);case"size":return this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r);case"math":case"text":return this.parseGroup(t,r,a,void 0,e);case"raw":if(r&&"{"===this.nextToken.text)return null;var n=this.parseStringGroup("raw",r,!0);if(n)return{type:"raw",mode:"text",string:n.text};throw new i("Expected raw group",this.nextToken);case"original":case null:case void 0:return this.parseGroup(t,r,a);default:throw new i("Unknown group type as "+t,this.nextToken)}},e.consumeSpaces=function(){for(;" "===this.nextToken.text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?"[":"{",n=e?"]":"}",o=this.nextToken;if(o.text!==a){if(e)return null;if(r&&"EOF"!==o.text&&/[^{}[\]]/.test(o.text))return this.gullet.lexer.setCatcode("%",14),this.consume(),o}var s=this.mode;this.mode="text",this.expect(a);for(var h="",l=this.nextToken,m=0,c=l;r&&m>0||this.nextToken.text!==n;){switch(this.nextToken.text){case"EOF":throw new i("Unexpected end of input in "+t,l.range(c,h));case a:m++;break;case n:m--}h+=(c=this.nextToken).text,this.consume()}return this.mode=s,this.gullet.lexer.setCatcode("%",14),this.expect(n),l.range(c,h)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode="text";for(var a=this.nextToken,n=a,o="";"EOF"!==this.nextToken.text&&t.test(o+this.nextToken.text);)o+=(n=this.nextToken).text,this.consume();if(""===o)throw new i("Invalid "+e+": '"+a.text+"'",a);return this.mode=r,a.range(n,o)},e.parseColorGroup=function(t){var e=this.parseStringGroup("color",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new i("Invalid color: '"+e.text+"'",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||"{"===this.nextToken.text?this.parseStringGroup("size",t):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;t||0!==e.text.length||(e.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new i("Invalid size: '"+e.text+"'",e);var n,o={number:+(a[1]+a[2]),unit:a[3]};if("string"!=typeof(n=o)&&(n=n.unit),!(n in kt||n in St||"ex"===n))throw new i("Invalid unit: '"+o.unit+"'",e);return{type:"size",mode:this.mode,value:o,isBlank:r}},e.parseUrlGroup=function(t){var e=this.parseStringGroup("url",t,!0);if(!e)return null;var r=e.text.replace(/\\([#$%&~_^{}])/g,"$1"),a=/^\s*([^\\\/#]*?)(?::|�*58|�*3a)/i.exec(r);a=null!=a?a[1]:"_relative";var n=this.settings.allowedProtocols;if(!c.contains(n,"*")&&!c.contains(n,a))throw new i("Forbidden protocol '"+a+"'",e);return{type:"url",mode:this.mode,url:r}},e.parseGroup=function(e,r,n,o,s){var h,l,m=this.mode,c=this.nextToken,u=c.text;if(s&&this.switchMode(s),r?"["===u:"{"===u||"\\begingroup"===u){h=t.endOfGroup[u],this.gullet.beginGroup(),this.consume();var d=this.parseExpression(!1,h),p=this.nextToken;this.gullet.endGroup(),l={type:"ordgroup",mode:this.mode,loc:a.range(c,p),body:d,semisimple:"\\begingroup"===u||void 0}}else if(r)l=null;else if(null==(l=this.parseFunction(o,e,n)||this.parseSymbol())&&"\\"===u[0]&&!ua.hasOwnProperty(u)){if(this.settings.throwOnError)throw new i("Undefined control sequence: "+u,c);l=this.handleUnsupportedCmd()}return s&&this.switchMode(m),h&&this.expect(h),l},e.formLigatures=function(t){for(var e=t.length-1,r=0;r=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+e[0]+'" used in math mode',t);var h,l=_[this.mode][e].group,m=a.range(t);if(G.hasOwnProperty(l)){var c=l;h={type:"atom",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};o=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(z(e.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+e[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+e[0]+'" ('+e.charCodeAt(0)+")",t)),o={type:"textord",mode:this.mode,loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u
@@ -15,10 +15,6 @@ class SourceLocation {
15
15
  this.start = start;
16
16
  this.end = end;
17
17
  }
18
-
19
- getSource() {
20
- return this.lexer.input.slice(this.start, this.end);
21
- }
22
18
  /**
23
19
  * Merges two `SourceLocation`s from location providers, given they are
24
20
  * provided in order of appearance.
@@ -264,6 +260,8 @@ var utils = {
264
260
  class Settings {
265
261
  constructor(options) {
266
262
  this.displayMode = void 0;
263
+ this.leqno = void 0;
264
+ this.fleqn = void 0;
267
265
  this.throwOnError = void 0;
268
266
  this.errorColor = void 0;
269
267
  this.macros = void 0;
@@ -275,6 +273,8 @@ class Settings {
275
273
  // allow null options
276
274
  options = options || {};
277
275
  this.displayMode = utils.deflt(options.displayMode, false);
276
+ this.leqno = utils.deflt(options.leqno, false);
277
+ this.fleqn = utils.deflt(options.fleqn, false);
278
278
  this.throwOnError = utils.deflt(options.throwOnError, true);
279
279
  this.errorColor = utils.deflt(options.errorColor, "#cc0000");
280
280
  this.macros = options.macros || {};
@@ -839,7 +839,7 @@ s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47
839
839
  121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6
840
840
  s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11
841
841
  c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z
842
- M100 241v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,
842
+ M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,
843
843
  // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main
844
844
  rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32
845
845
  -27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0
@@ -1920,7 +1920,6 @@ var metricMap = {
1920
1920
  "730": [0, 0.69444, 0, 0, 0.86944],
1921
1921
  "732": [0, 0.69444, 0, 0, 0.575],
1922
1922
  "733": [0, 0.69444, 0, 0, 0.575],
1923
- "824": [0.19444, 0.69444, 0, 0, 0],
1924
1923
  "915": [0, 0.68611, 0, 0, 0.69166],
1925
1924
  "916": [0, 0.68611, 0, 0, 0.95833],
1926
1925
  "920": [0, 0.68611, 0, 0, 0.89444],
@@ -2048,7 +2047,8 @@ var metricMap = {
2048
2047
  "10217": [0.25, 0.75, 0, 0, 0.44722],
2049
2048
  "10815": [0, 0.68611, 0, 0, 0.9],
2050
2049
  "10927": [0.19667, 0.69667, 0, 0, 0.89444],
2051
- "10928": [0.19667, 0.69667, 0, 0, 0.89444]
2050
+ "10928": [0.19667, 0.69667, 0, 0, 0.89444],
2051
+ "57376": [0.19444, 0.69444, 0, 0, 0]
2052
2052
  },
2053
2053
  "Main-BoldItalic": {
2054
2054
  "33": [0, 0.69444, 0.11417, 0, 0.38611],
@@ -2431,7 +2431,6 @@ var metricMap = {
2431
2431
  "730": [0, 0.69444, 0, 0, 0.75],
2432
2432
  "732": [0, 0.66786, 0, 0, 0.5],
2433
2433
  "733": [0, 0.69444, 0, 0, 0.5],
2434
- "824": [0.19444, 0.69444, 0, 0, 0],
2435
2434
  "915": [0, 0.68333, 0, 0, 0.625],
2436
2435
  "916": [0, 0.68333, 0, 0, 0.83334],
2437
2436
  "920": [0, 0.68333, 0, 0, 0.77778],
@@ -2516,7 +2515,6 @@ var metricMap = {
2516
2515
  "8776": [-0.01688, 0.48312, 0, 0, 0.77778],
2517
2516
  "8781": [-0.03625, 0.46375, 0, 0, 0.77778],
2518
2517
  "8784": [-0.133, 0.67, 0, 0, 0.778],
2519
- "8800": [0.215, 0.716, 0, 0, 0.778],
2520
2518
  "8801": [-0.03625, 0.46375, 0, 0, 0.77778],
2521
2519
  "8804": [0.13597, 0.63597, 0, 0, 0.77778],
2522
2520
  "8805": [0.13597, 0.63597, 0, 0, 0.77778],
@@ -2583,10 +2581,10 @@ var metricMap = {
2583
2581
  "10236": [0.011, 0.511, 0, 0, 1.638],
2584
2582
  "10815": [0, 0.68333, 0, 0, 0.75],
2585
2583
  "10927": [0.13597, 0.63597, 0, 0, 0.77778],
2586
- "10928": [0.13597, 0.63597, 0, 0, 0.77778]
2584
+ "10928": [0.13597, 0.63597, 0, 0, 0.77778],
2585
+ "57376": [0.19444, 0.69444, 0, 0, 0]
2587
2586
  },
2588
2587
  "Math-BoldItalic": {
2589
- "47": [0.19444, 0.69444, 0, 0, 0],
2590
2588
  "65": [0, 0.68611, 0, 0, 0.86944],
2591
2589
  "66": [0, 0.68611, 0.04835, 0, 0.8664],
2592
2590
  "67": [0, 0.68611, 0.06979, 0, 0.81694],
@@ -2682,7 +2680,6 @@ var metricMap = {
2682
2680
  "1013": [0, 0.44444, 0, 0, 0.48333]
2683
2681
  },
2684
2682
  "Math-Italic": {
2685
- "47": [0.19444, 0.69444, 0, 0, 0],
2686
2683
  "65": [0, 0.68333, 0, 0.13889, 0.75],
2687
2684
  "66": [0, 0.68333, 0.05017, 0.08334, 0.75851],
2688
2685
  "67": [0, 0.68333, 0.07153, 0.08334, 0.71472],
@@ -3749,13 +3746,13 @@ function getCharacterMetrics(character, font, mode) {
3749
3746
  }
3750
3747
 
3751
3748
  let ch = character.charCodeAt(0);
3749
+ let metrics = metricMap[font][ch];
3752
3750
 
3753
- if (character[0] in extraCharacterMap) {
3751
+ if (!metrics && character[0] in extraCharacterMap) {
3754
3752
  ch = extraCharacterMap[character[0]].charCodeAt(0);
3753
+ metrics = metricMap[font][ch];
3755
3754
  }
3756
3755
 
3757
- let metrics = metricMap[font][ch];
3758
-
3759
3756
  if (!metrics && mode === 'text') {
3760
3757
  // We don't typically have font metrics for Asian scripts.
3761
3758
  // But since we support them in text mode, we need to return
@@ -3820,7 +3817,7 @@ function getGlobalMetrics(size) {
3820
3817
  normal font), or "ams" (the ams fonts).
3821
3818
  * - group (required): the ParseNode group type the symbol should have (i.e.
3822
3819
  "textord", "mathord", etc).
3823
- See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types
3820
+ See https://github.com/KaTeX/KaTeX/wiki/Examining-TeX#group-types
3824
3821
  * - replace: the character that this symbol or function should be
3825
3822
  * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi
3826
3823
  * character in the main font).
@@ -3987,12 +3984,13 @@ defineSymbol(math, main, rel, "\u21c1", "\\rightharpoondown", true);
3987
3984
  defineSymbol(math, main, rel, "\u2196", "\\nwarrow", true);
3988
3985
  defineSymbol(math, main, rel, "\u21cc", "\\rightleftharpoons", true); // AMS Negated Binary Relations
3989
3986
 
3990
- defineSymbol(math, ams, rel, "\u226e", "\\nless", true);
3991
- defineSymbol(math, ams, rel, "\ue010", "\\nleqslant");
3992
- defineSymbol(math, ams, rel, "\ue011", "\\nleqq");
3987
+ defineSymbol(math, ams, rel, "\u226e", "\\nless", true); // Symbol names preceeded by "@" each have a corresponding macro.
3988
+
3989
+ defineSymbol(math, ams, rel, "\ue010", "\\@nleqslant");
3990
+ defineSymbol(math, ams, rel, "\ue011", "\\@nleqq");
3993
3991
  defineSymbol(math, ams, rel, "\u2a87", "\\lneq", true);
3994
3992
  defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true);
3995
- defineSymbol(math, ams, rel, "\ue00c", "\\lvertneqq");
3993
+ defineSymbol(math, ams, rel, "\ue00c", "\\@lvertneqq");
3996
3994
  defineSymbol(math, ams, rel, "\u22e6", "\\lnsim", true);
3997
3995
  defineSymbol(math, ams, rel, "\u2a89", "\\lnapprox", true);
3998
3996
  defineSymbol(math, ams, rel, "\u2280", "\\nprec", true); // unicode-math maps \u22e0 to \npreccurlyeq. We'll use the AMS synonym.
@@ -4001,22 +3999,22 @@ defineSymbol(math, ams, rel, "\u22e0", "\\npreceq", true);
4001
3999
  defineSymbol(math, ams, rel, "\u22e8", "\\precnsim", true);
4002
4000
  defineSymbol(math, ams, rel, "\u2ab9", "\\precnapprox", true);
4003
4001
  defineSymbol(math, ams, rel, "\u2241", "\\nsim", true);
4004
- defineSymbol(math, ams, rel, "\ue006", "\\nshortmid");
4002
+ defineSymbol(math, ams, rel, "\ue006", "\\@nshortmid");
4005
4003
  defineSymbol(math, ams, rel, "\u2224", "\\nmid", true);
4006
4004
  defineSymbol(math, ams, rel, "\u22ac", "\\nvdash", true);
4007
4005
  defineSymbol(math, ams, rel, "\u22ad", "\\nvDash", true);
4008
4006
  defineSymbol(math, ams, rel, "\u22ea", "\\ntriangleleft");
4009
4007
  defineSymbol(math, ams, rel, "\u22ec", "\\ntrianglelefteq", true);
4010
4008
  defineSymbol(math, ams, rel, "\u228a", "\\subsetneq", true);
4011
- defineSymbol(math, ams, rel, "\ue01a", "\\varsubsetneq");
4009
+ defineSymbol(math, ams, rel, "\ue01a", "\\@varsubsetneq");
4012
4010
  defineSymbol(math, ams, rel, "\u2acb", "\\subsetneqq", true);
4013
- defineSymbol(math, ams, rel, "\ue017", "\\varsubsetneqq");
4011
+ defineSymbol(math, ams, rel, "\ue017", "\\@varsubsetneqq");
4014
4012
  defineSymbol(math, ams, rel, "\u226f", "\\ngtr", true);
4015
- defineSymbol(math, ams, rel, "\ue00f", "\\ngeqslant");
4016
- defineSymbol(math, ams, rel, "\ue00e", "\\ngeqq");
4013
+ defineSymbol(math, ams, rel, "\ue00f", "\\@ngeqslant");
4014
+ defineSymbol(math, ams, rel, "\ue00e", "\\@ngeqq");
4017
4015
  defineSymbol(math, ams, rel, "\u2a88", "\\gneq", true);
4018
4016
  defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true);
4019
- defineSymbol(math, ams, rel, "\ue00d", "\\gvertneqq");
4017
+ defineSymbol(math, ams, rel, "\ue00d", "\\@gvertneqq");
4020
4018
  defineSymbol(math, ams, rel, "\u22e7", "\\gnsim", true);
4021
4019
  defineSymbol(math, ams, rel, "\u2a8a", "\\gnapprox", true);
4022
4020
  defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true); // unicode-math maps \u22e1 to \nsucccurlyeq. We'll use the AMS synonym.
@@ -4026,20 +4024,20 @@ defineSymbol(math, ams, rel, "\u22e9", "\\succnsim", true);
4026
4024
  defineSymbol(math, ams, rel, "\u2aba", "\\succnapprox", true); // unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym.
4027
4025
 
4028
4026
  defineSymbol(math, ams, rel, "\u2246", "\\ncong", true);
4029
- defineSymbol(math, ams, rel, "\ue007", "\\nshortparallel");
4027
+ defineSymbol(math, ams, rel, "\ue007", "\\@nshortparallel");
4030
4028
  defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true);
4031
4029
  defineSymbol(math, ams, rel, "\u22af", "\\nVDash", true);
4032
4030
  defineSymbol(math, ams, rel, "\u22eb", "\\ntriangleright");
4033
4031
  defineSymbol(math, ams, rel, "\u22ed", "\\ntrianglerighteq", true);
4034
- defineSymbol(math, ams, rel, "\ue018", "\\nsupseteqq");
4032
+ defineSymbol(math, ams, rel, "\ue018", "\\@nsupseteqq");
4035
4033
  defineSymbol(math, ams, rel, "\u228b", "\\supsetneq", true);
4036
- defineSymbol(math, ams, rel, "\ue01b", "\\varsupsetneq");
4034
+ defineSymbol(math, ams, rel, "\ue01b", "\\@varsupsetneq");
4037
4035
  defineSymbol(math, ams, rel, "\u2acc", "\\supsetneqq", true);
4038
- defineSymbol(math, ams, rel, "\ue019", "\\varsupsetneqq");
4036
+ defineSymbol(math, ams, rel, "\ue019", "\\@varsupsetneqq");
4039
4037
  defineSymbol(math, ams, rel, "\u22ae", "\\nVdash", true);
4040
4038
  defineSymbol(math, ams, rel, "\u2ab5", "\\precneqq", true);
4041
4039
  defineSymbol(math, ams, rel, "\u2ab6", "\\succneqq", true);
4042
- defineSymbol(math, ams, rel, "\ue016", "\\nsubseteqq");
4040
+ defineSymbol(math, ams, rel, "\ue016", "\\@nsubseteqq");
4043
4041
  defineSymbol(math, ams, bin, "\u22b4", "\\unlhd");
4044
4042
  defineSymbol(math, ams, bin, "\u22b5", "\\unrhd"); // AMS Negated Arrows
4045
4043
 
@@ -4062,7 +4060,6 @@ defineSymbol(math, ams, textord, "\u2204", "\\nexists");
4062
4060
  defineSymbol(math, ams, textord, "\u2127", "\\mho");
4063
4061
  defineSymbol(math, ams, textord, "\u2132", "\\Finv", true);
4064
4062
  defineSymbol(math, ams, textord, "\u2141", "\\Game", true);
4065
- defineSymbol(math, ams, textord, "\u006b", "\\Bbbk");
4066
4063
  defineSymbol(math, ams, textord, "\u2035", "\\backprime");
4067
4064
  defineSymbol(math, ams, textord, "\u25b2", "\\blacktriangle");
4068
4065
  defineSymbol(math, ams, textord, "\u25bc", "\\blacktriangledown");
@@ -4345,7 +4342,7 @@ defineSymbol(math, main, rel, "\u2265", "\\geq", true);
4345
4342
  defineSymbol(math, main, rel, "\u2190", "\\gets");
4346
4343
  defineSymbol(math, main, rel, ">", "\\gt");
4347
4344
  defineSymbol(math, main, rel, "\u2208", "\\in", true);
4348
- defineSymbol(math, main, rel, "\u0338", "\\@not");
4345
+ defineSymbol(math, main, rel, "\ue020", "\\@not");
4349
4346
  defineSymbol(math, main, rel, "\u2282", "\\subset", true);
4350
4347
  defineSymbol(math, main, rel, "\u2283", "\\supset", true);
4351
4348
  defineSymbol(math, main, rel, "\u2286", "\\subseteq", true);
@@ -4421,6 +4418,8 @@ defineSymbol(math, main, textord, "\u2225", "\\|");
4421
4418
  defineSymbol(math, main, textord, "\u2225", "\\Vert");
4422
4419
  defineSymbol(text$1, main, textord, "\u2225", "\\textbardbl");
4423
4420
  defineSymbol(text$1, main, textord, "~", "\\textasciitilde");
4421
+ defineSymbol(text$1, main, textord, "\\", "\\textbackslash");
4422
+ defineSymbol(text$1, main, textord, "^", "\\textasciicircum");
4424
4423
  defineSymbol(math, main, rel, "\u2191", "\\uparrow", true);
4425
4424
  defineSymbol(math, main, rel, "\u21d1", "\\Uparrow", true);
4426
4425
  defineSymbol(math, main, rel, "\u2193", "\\downarrow", true);
@@ -4561,13 +4560,32 @@ for (let i = 0; i < letters.length; i++) {
4561
4560
  const ch = letters.charAt(i);
4562
4561
  defineSymbol(math, main, mathord, ch, ch);
4563
4562
  defineSymbol(text$1, main, textord, ch, ch);
4564
- } // The next loop loads wide (surrogate pair) characters.
4563
+ } // Blackboard bold and script letters in Unicode range
4564
+
4565
+
4566
+ defineSymbol(math, ams, textord, "C", "\u2102"); // blackboard bold
4567
+
4568
+ defineSymbol(text$1, ams, textord, "C", "\u2102");
4569
+ defineSymbol(math, ams, textord, "H", "\u210D");
4570
+ defineSymbol(text$1, ams, textord, "H", "\u210D");
4571
+ defineSymbol(math, ams, textord, "N", "\u2115");
4572
+ defineSymbol(text$1, ams, textord, "N", "\u2115");
4573
+ defineSymbol(math, ams, textord, "P", "\u2119");
4574
+ defineSymbol(text$1, ams, textord, "P", "\u2119");
4575
+ defineSymbol(math, ams, textord, "Q", "\u211A");
4576
+ defineSymbol(text$1, ams, textord, "Q", "\u211A");
4577
+ defineSymbol(math, ams, textord, "R", "\u211D");
4578
+ defineSymbol(text$1, ams, textord, "R", "\u211D");
4579
+ defineSymbol(math, ams, textord, "Z", "\u2124");
4580
+ defineSymbol(text$1, ams, textord, "Z", "\u2124");
4581
+ defineSymbol(math, main, mathord, "h", "\u210E"); // italic h, Planck constant
4582
+
4583
+ defineSymbol(text$1, main, mathord, "h", "\u210E"); // The next loop loads wide (surrogate pair) characters.
4565
4584
  // We support some letters in the Unicode range U+1D400 to U+1D7FF,
4566
4585
  // Mathematical Alphanumeric Symbols.
4567
4586
  // Some editors do not deal well with wide characters. So don't write the
4568
4587
  // string into this file. Instead, create the string from the surrogate pair.
4569
4588
 
4570
-
4571
4589
  let wideChar = "";
4572
4590
 
4573
4591
  for (let i = 0; i < letters.length; i++) {
@@ -4775,7 +4793,8 @@ const sizeMultipliers = [// fontMetrics.js:getGlobalMetrics also uses size index
4775
4793
 
4776
4794
  const sizeAtStyle = function sizeAtStyle(size, style) {
4777
4795
  return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];
4778
- };
4796
+ }; // In these types, "" (empty string) means "no change".
4797
+
4779
4798
 
4780
4799
  /**
4781
4800
  * This is the main options class. It contains the current style, size, color,
@@ -5043,20 +5062,13 @@ class Options {
5043
5062
  return this._fontMetrics;
5044
5063
  }
5045
5064
  /**
5046
- * A map of color names to CSS colors.
5047
- * TODO(emily): Remove this when we have real macros
5065
+ * Gets the CSS color of the current options object
5048
5066
  */
5049
5067
 
5050
5068
 
5051
- /**
5052
- * Gets the CSS color of the current options object, accounting for the
5053
- * `colorMap`.
5054
- */
5055
5069
  getColor() {
5056
5070
  if (this.phantom) {
5057
5071
  return "transparent";
5058
- } else if (this.color != null && Options.colorMap.hasOwnProperty(this.color)) {
5059
- return Options.colorMap[this.color];
5060
5072
  } else {
5061
5073
  return this.color;
5062
5074
  }
@@ -5065,64 +5077,6 @@ class Options {
5065
5077
  }
5066
5078
 
5067
5079
  Options.BASESIZE = 6;
5068
- Options.colorMap = {
5069
- "katex-blue": "#6495ed",
5070
- "katex-orange": "#ffa500",
5071
- "katex-pink": "#ff00af",
5072
- "katex-red": "#df0030",
5073
- "katex-green": "#28ae7b",
5074
- "katex-gray": "gray",
5075
- "katex-purple": "#9d38bd",
5076
- "katex-blueA": "#ccfaff",
5077
- "katex-blueB": "#80f6ff",
5078
- "katex-blueC": "#63d9ea",
5079
- "katex-blueD": "#11accd",
5080
- "katex-blueE": "#0c7f99",
5081
- "katex-tealA": "#94fff5",
5082
- "katex-tealB": "#26edd5",
5083
- "katex-tealC": "#01d1c1",
5084
- "katex-tealD": "#01a995",
5085
- "katex-tealE": "#208170",
5086
- "katex-greenA": "#b6ffb0",
5087
- "katex-greenB": "#8af281",
5088
- "katex-greenC": "#74cf70",
5089
- "katex-greenD": "#1fab54",
5090
- "katex-greenE": "#0d923f",
5091
- "katex-goldA": "#ffd0a9",
5092
- "katex-goldB": "#ffbb71",
5093
- "katex-goldC": "#ff9c39",
5094
- "katex-goldD": "#e07d10",
5095
- "katex-goldE": "#a75a05",
5096
- "katex-redA": "#fca9a9",
5097
- "katex-redB": "#ff8482",
5098
- "katex-redC": "#f9685d",
5099
- "katex-redD": "#e84d39",
5100
- "katex-redE": "#bc2612",
5101
- "katex-maroonA": "#ffbde0",
5102
- "katex-maroonB": "#ff92c6",
5103
- "katex-maroonC": "#ed5fa6",
5104
- "katex-maroonD": "#ca337c",
5105
- "katex-maroonE": "#9e034e",
5106
- "katex-purpleA": "#ddd7ff",
5107
- "katex-purpleB": "#c6b9fc",
5108
- "katex-purpleC": "#aa87ff",
5109
- "katex-purpleD": "#7854ab",
5110
- "katex-purpleE": "#543b78",
5111
- "katex-mintA": "#f5f9e8",
5112
- "katex-mintB": "#edf2df",
5113
- "katex-mintC": "#e0e5cc",
5114
- "katex-grayA": "#f6f7f7",
5115
- "katex-grayB": "#f0f1f2",
5116
- "katex-grayC": "#e3e5e6",
5117
- "katex-grayD": "#d6d8da",
5118
- "katex-grayE": "#babec2",
5119
- "katex-grayF": "#888d93",
5120
- "katex-grayG": "#626569",
5121
- "katex-grayH": "#3b3e40",
5122
- "katex-grayI": "#21242c",
5123
- "katex-kaBlue": "#314453",
5124
- "katex-kaGreen": "#71B307"
5125
- };
5126
5080
 
5127
5081
  /**
5128
5082
  * This file does conversion between units. In particular, it provides
@@ -5309,7 +5263,11 @@ const makeSymbol = function makeSymbol(value, fontName, mode, options, classes)
5309
5263
  */
5310
5264
 
5311
5265
 
5312
- const mathsym = function mathsym(value, mode, options, classes = []) {
5266
+ const mathsym = function mathsym(value, mode, options, classes) {
5267
+ if (classes === void 0) {
5268
+ classes = [];
5269
+ }
5270
+
5313
5271
  // Decide what font to render the symbol in by its entry in the symbols
5314
5272
  // table.
5315
5273
  // Have a special case for when the value = \ because the \ is used as a
@@ -6138,15 +6096,14 @@ const _htmlGroupBuilders = {};
6138
6096
  */
6139
6097
 
6140
6098
  const _mathmlGroupBuilders = {};
6141
- function defineFunction({
6142
- type,
6143
- nodeType,
6144
- names,
6145
- props,
6146
- handler,
6147
- htmlBuilder,
6148
- mathmlBuilder
6149
- }) {
6099
+ function defineFunction(_ref) {
6100
+ let type = _ref.type,
6101
+ nodeType = _ref.nodeType,
6102
+ names = _ref.names,
6103
+ props = _ref.props,
6104
+ handler = _ref.handler,
6105
+ htmlBuilder = _ref.htmlBuilder,
6106
+ mathmlBuilder = _ref.mathmlBuilder;
6150
6107
  // Set default values of functions
6151
6108
  const data = {
6152
6109
  type,
@@ -6185,11 +6142,10 @@ function defineFunction({
6185
6142
  * stand-alone handler provided to `defineFunction`).
6186
6143
  */
6187
6144
 
6188
- function defineFunctionBuilders({
6189
- type,
6190
- htmlBuilder,
6191
- mathmlBuilder
6192
- }) {
6145
+ function defineFunctionBuilders(_ref2) {
6146
+ let type = _ref2.type,
6147
+ htmlBuilder = _ref2.htmlBuilder,
6148
+ mathmlBuilder = _ref2.mathmlBuilder;
6193
6149
  defineFunction({
6194
6150
  type,
6195
6151
  names: [],
@@ -6222,25 +6178,8 @@ const makeSpan$1 = buildCommon.makeSpan; // Binary atoms (first class `mbin`) ch
6222
6178
  // depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,
6223
6179
  // and the text before Rule 19.
6224
6180
 
6225
- const isBinLeftCanceller = function isBinLeftCanceller(node, isRealGroup) {
6226
- // TODO: This code assumes that a node's math class is the first element
6227
- // of its `classes` array. A later cleanup should ensure this, for
6228
- // instance by changing the signature of `makeSpan`.
6229
- if (node) {
6230
- return utils.contains(["mbin", "mopen", "mrel", "mop", "mpunct"], getTypeOfDomTree(node, "right"));
6231
- } else {
6232
- return isRealGroup;
6233
- }
6234
- };
6235
-
6236
- const isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) {
6237
- if (node) {
6238
- return utils.contains(["mrel", "mclose", "mpunct"], getTypeOfDomTree(node, "left"));
6239
- } else {
6240
- return isRealGroup;
6241
- }
6242
- };
6243
-
6181
+ const binLeftCanceller = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"];
6182
+ const binRightCanceller = ["rightmost", "mrel", "mclose", "mpunct"];
6244
6183
  const styleMap = {
6245
6184
  "display": Style$1.DISPLAY,
6246
6185
  "text": Style$1.TEXT,
@@ -6266,111 +6205,162 @@ const DomEnum = {
6266
6205
  * a partial group (e.g. one created by \color). `surrounding` is an array
6267
6206
  * consisting type of nodes that will be added to the left and right.
6268
6207
  */
6269
- const buildExpression = function buildExpression(expression, options, isRealGroup, surrounding = [null, null]) {
6208
+ const buildExpression = function buildExpression(expression, options, isRealGroup, surrounding) {
6209
+ if (surrounding === void 0) {
6210
+ surrounding = [null, null];
6211
+ }
6212
+
6270
6213
  // Parse expressions into `groups`.
6271
- const rawGroups = [];
6214
+ const groups = [];
6272
6215
 
6273
6216
  for (let i = 0; i < expression.length; i++) {
6274
6217
  const output = buildGroup(expression[i], options);
6275
6218
 
6276
6219
  if (output instanceof DocumentFragment) {
6277
6220
  const children = output.children;
6278
- rawGroups.push(...children);
6221
+ groups.push(...children);
6279
6222
  } else {
6280
- rawGroups.push(output);
6223
+ groups.push(output);
6224
+ }
6225
+ } // If `expression` is a partial group, let the parent handle spacings
6226
+ // to avoid processing groups multiple times.
6227
+
6228
+
6229
+ if (!isRealGroup) {
6230
+ return groups;
6231
+ }
6232
+
6233
+ let glueOptions = options;
6234
+
6235
+ if (expression.length === 1) {
6236
+ const node = checkNodeType(expression[0], "sizing") || checkNodeType(expression[0], "styling");
6237
+
6238
+ if (!node) ; else if (node.type === "sizing") {
6239
+ glueOptions = options.havingSize(node.size);
6240
+ } else if (node.type === "styling") {
6241
+ glueOptions = options.havingStyle(styleMap[node.style]);
6281
6242
  }
6282
- } // At this point `rawGroups` consists entirely of `symbolNode`s and `span`s.
6283
- // Ignore explicit spaces (e.g., \;, \,) when determining what implicit
6284
- // spacing should go between atoms of different classes, and add dummy
6285
- // spans for determining spacings between surrounding atoms.
6243
+ } // Dummy spans for determining spacings between surrounding atoms.
6244
+ // If `expression` has no atoms on the left or right, class "leftmost"
6245
+ // or "rightmost", respectively, is used to indicate it.
6286
6246
 
6287
6247
 
6288
- const nonSpaces = [surrounding[0] ? makeSpan$1([surrounding[0]], [], options) : null, ...rawGroups.filter(group => group && group.classes[0] !== "mspace"), surrounding[1] ? makeSpan$1([surrounding[1]], [], options) : null]; // Before determining what spaces to insert, perform bin cancellation.
6248
+ const dummyPrev = makeSpan$1([surrounding[0] || "leftmost"], [], options);
6249
+ const dummyNext = makeSpan$1([surrounding[1] || "rightmost"], [], options); // TODO: These code assumes that a node's math class is the first element
6250
+ // of its `classes` array. A later cleanup should ensure this, for
6251
+ // instance by changing the signature of `makeSpan`.
6252
+ // Before determining what spaces to insert, perform bin cancellation.
6289
6253
  // Binary operators change to ordinary symbols in some contexts.
6290
6254
 
6291
- for (let i = 1; i < nonSpaces.length - 1; i++) {
6292
- const nonSpacesI = assert(nonSpaces[i]);
6293
- const left = getOutermostNode(nonSpacesI, "left");
6255
+ traverseNonSpaceNodes(groups, (node, prev) => {
6256
+ const prevType = prev.classes[0];
6257
+ const type = node.classes[0];
6294
6258
 
6295
- if (left.classes[0] === "mbin" && isBinLeftCanceller(nonSpaces[i - 1], isRealGroup)) {
6296
- left.classes[0] = "mord";
6259
+ if (prevType === "mbin" && utils.contains(binRightCanceller, type)) {
6260
+ prev.classes[0] = "mord";
6261
+ } else if (type === "mbin" && utils.contains(binLeftCanceller, prevType)) {
6262
+ node.classes[0] = "mord";
6297
6263
  }
6264
+ }, {
6265
+ node: dummyPrev
6266
+ }, dummyNext);
6267
+ traverseNonSpaceNodes(groups, (node, prev) => {
6268
+ const prevType = getTypeOfDomTree(prev);
6269
+ const type = getTypeOfDomTree(node); // 'mtight' indicates that the node is script or scriptscript style.
6298
6270
 
6299
- const right = getOutermostNode(nonSpacesI, "right");
6271
+ const space = prevType && type ? node.hasClass("mtight") ? tightSpacings[prevType][type] : spacings[prevType][type] : null;
6300
6272
 
6301
- if (right.classes[0] === "mbin" && isBinRightCanceller(nonSpaces[i + 1], isRealGroup)) {
6302
- right.classes[0] = "mord";
6273
+ if (space) {
6274
+ // Insert glue (spacing) after the `prev`.
6275
+ return buildCommon.makeGlue(space, glueOptions);
6303
6276
  }
6277
+ }, {
6278
+ node: dummyPrev
6279
+ }, dummyNext);
6280
+ return groups;
6281
+ }; // Depth-first traverse non-space `nodes`, calling `callback` with the current and
6282
+ // previous node as arguments, optionally returning a node to insert after the
6283
+ // previous node. `prev` is an object with the previous node and `insertAfter`
6284
+ // function to insert after it. `next` is a node that will be added to the right.
6285
+ // Used for bin cancellation and inserting spacings.
6286
+
6287
+ const traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next) {
6288
+ if (next) {
6289
+ // temporarily append the right node, if exists
6290
+ nodes.push(next);
6304
6291
  }
6305
6292
 
6306
- const groups = [];
6307
- let j = 0;
6293
+ let i = 0;
6308
6294
 
6309
- for (let i = 0; i < rawGroups.length; i++) {
6310
- groups.push(rawGroups[i]); // For any group that is not a space, get the next non-space. Then
6311
- // lookup what implicit space should be placed between those atoms and
6312
- // add it to groups.
6295
+ for (; i < nodes.length; i++) {
6296
+ const node = nodes[i];
6297
+ const partialGroup = checkPartialGroup(node);
6313
6298
 
6314
- if (rawGroups[i].classes[0] !== "mspace" && j < nonSpaces.length - 1) {
6315
- // if current non-space node is left dummy span, add a glue before
6316
- // first real non-space node
6317
- if (j === 0) {
6318
- groups.pop();
6319
- i--;
6320
- } // Get the type of the current non-space node. If it's a document
6321
- // fragment, get the type of the rightmost node in the fragment.
6299
+ if (partialGroup) {
6300
+ // Recursive DFS
6301
+ traverseNonSpaceNodes(partialGroup.children, callback, prev);
6302
+ continue;
6303
+ } // Ignore explicit spaces (e.g., \;, \,) when determining what implicit
6304
+ // spacing should go between atoms of different classes
6322
6305
 
6323
6306
 
6324
- const left = getTypeOfDomTree(nonSpaces[j], "right"); // Get the type of the next non-space node. If it's a document
6325
- // fragment, get the type of the leftmost node in the fragment.
6307
+ if (node.classes[0] === "mspace") {
6308
+ continue;
6309
+ }
6326
6310
 
6327
- const right = getTypeOfDomTree(nonSpaces[j + 1], "left"); // We use buildExpression inside of sizingGroup, but it returns a
6328
- // document fragment of elements. sizingGroup sets `isRealGroup`
6329
- // to false to avoid processing spans multiple times.
6311
+ const result = callback(node, prev.node);
6330
6312
 
6331
- if (left && right && isRealGroup) {
6332
- const nonSpacesJp1 = assert(nonSpaces[j + 1]);
6333
- const space = isLeftTight(nonSpacesJp1) ? tightSpacings[left][right] : spacings[left][right];
6313
+ if (result) {
6314
+ if (prev.insertAfter) {
6315
+ prev.insertAfter(result);
6316
+ } else {
6317
+ // insert at front
6318
+ nodes.unshift(result);
6319
+ i++;
6320
+ }
6321
+ }
6334
6322
 
6335
- if (space) {
6336
- let glueOptions = options;
6323
+ prev.node = node;
6337
6324
 
6338
- if (expression.length === 1) {
6339
- const node = checkNodeType(expression[0], "sizing") || checkNodeType(expression[0], "styling");
6325
+ prev.insertAfter = (index => n => {
6326
+ nodes.splice(index + 1, 0, n);
6327
+ i++;
6328
+ })(i);
6329
+ }
6340
6330
 
6341
- if (!node) ; else if (node.type === "sizing") {
6342
- glueOptions = options.havingSize(node.size);
6343
- } else if (node.type === "styling") {
6344
- glueOptions = options.havingStyle(styleMap[node.style]);
6345
- }
6346
- }
6331
+ if (next) {
6332
+ nodes.pop();
6333
+ }
6334
+ }; // Check if given node is a partial group, i.e., does not affect spacing around.
6347
6335
 
6348
- groups.push(buildCommon.makeGlue(space, glueOptions));
6349
- }
6350
- }
6351
6336
 
6352
- j++;
6353
- }
6337
+ const checkPartialGroup = function checkPartialGroup(node) {
6338
+ if (node instanceof DocumentFragment || node instanceof Anchor) {
6339
+ return node;
6354
6340
  }
6355
6341
 
6356
- return groups;
6342
+ return null;
6357
6343
  }; // Return the outermost node of a domTree.
6358
6344
 
6345
+
6359
6346
  const getOutermostNode = function getOutermostNode(node, side) {
6360
- if (node instanceof DocumentFragment || node instanceof Anchor) {
6361
- const children = node.children;
6347
+ const partialGroup = checkPartialGroup(node);
6348
+
6349
+ if (partialGroup) {
6350
+ const children = partialGroup.children;
6362
6351
 
6363
6352
  if (children.length) {
6364
6353
  if (side === "right") {
6365
6354
  return getOutermostNode(children[children.length - 1], "right");
6366
6355
  } else if (side === "left") {
6367
- return getOutermostNode(children[0], "right");
6356
+ return getOutermostNode(children[0], "left");
6368
6357
  }
6369
6358
  }
6370
6359
  }
6371
6360
 
6372
6361
  return node;
6373
6362
  }; // Return math atom class (mclass) of a domTree.
6363
+ // If `side` is given, it will get the type of the outermost node at given side.
6374
6364
 
6375
6365
 
6376
6366
  const getTypeOfDomTree = function getTypeOfDomTree(node, side) {
@@ -6378,18 +6368,13 @@ const getTypeOfDomTree = function getTypeOfDomTree(node, side) {
6378
6368
  return null;
6379
6369
  }
6380
6370
 
6381
- node = getOutermostNode(node, side); // This makes a lot of assumptions as to where the type of atom
6371
+ if (side) {
6372
+ node = getOutermostNode(node, side);
6373
+ } // This makes a lot of assumptions as to where the type of atom
6382
6374
  // appears. We should do a better job of enforcing this.
6383
6375
 
6376
+
6384
6377
  return DomEnum[node.classes[0]] || null;
6385
- }; // If `node` is an atom return whether it's been assigned the mtight class.
6386
- // If `node` is a document fragment, return the value of isLeftTight() for the
6387
- // leftmost node in the fragment.
6388
- // 'mtight' indicates that the node is script or scriptscript style.
6389
-
6390
- const isLeftTight = function isLeftTight(node) {
6391
- node = getOutermostNode(node, "left");
6392
- return node.hasClass("mtight");
6393
6378
  };
6394
6379
  const makeNullDelimiter = function makeNullDelimiter(options, classes) {
6395
6380
  const moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses());
@@ -6477,10 +6462,10 @@ function buildHTML(tree, options) {
6477
6462
 
6478
6463
  if (expression[i].hasClass("mbin") || expression[i].hasClass("mrel") || expression[i].hasClass("allowbreak")) {
6479
6464
  // Put any post-operator glue on same line as operator.
6480
- // Watch for \nobreak along the way.
6465
+ // Watch for \nobreak along the way, and stop at \newline.
6481
6466
  let nobreak = false;
6482
6467
 
6483
- while (i < expression.length - 1 && expression[i + 1].hasClass("mspace")) {
6468
+ while (i < expression.length - 1 && expression[i + 1].hasClass("mspace") && !expression[i + 1].hasClass("newline")) {
6484
6469
  i++;
6485
6470
  parts.push(expression[i]);
6486
6471
 
@@ -6638,11 +6623,9 @@ class MathNode {
6638
6623
  */
6639
6624
 
6640
6625
  class TextNode {
6641
- constructor(text, needsEscape = true) {
6626
+ constructor(text) {
6642
6627
  this.text = void 0;
6643
- this.needsEscape = void 0;
6644
6628
  this.text = text;
6645
- this.needsEscape = needsEscape;
6646
6629
  }
6647
6630
  /**
6648
6631
  * Converts the text node into a DOM text node.
@@ -6650,7 +6633,7 @@ class TextNode {
6650
6633
 
6651
6634
 
6652
6635
  toNode() {
6653
- return document.createTextNode(this.toText());
6636
+ return document.createTextNode(this.text);
6654
6637
  }
6655
6638
  /**
6656
6639
  * Converts the text node into escaped HTML markup
@@ -6659,16 +6642,16 @@ class TextNode {
6659
6642
 
6660
6643
 
6661
6644
  toMarkup() {
6662
- return this.toText();
6645
+ return utils.escape(this.toText());
6663
6646
  }
6664
6647
  /**
6665
- * Converts the text node into an escaped string
6648
+ * Converts the text node into a string
6666
6649
  * (representing the text iteself).
6667
6650
  */
6668
6651
 
6669
6652
 
6670
6653
  toText() {
6671
- return this.needsEscape ? utils.escape(this.text) : this.text;
6654
+ return this.text;
6672
6655
  }
6673
6656
 
6674
6657
  }
@@ -6685,26 +6668,26 @@ class SpaceNode {
6685
6668
  this.width = void 0;
6686
6669
  this.character = void 0;
6687
6670
  this.width = width; // See https://www.w3.org/TR/2000/WD-MathML2-20000328/chapter6.html
6688
- // for a table of space-like characters. We consistently use the
6689
- // &LongNames; because Unicode does not have single characters for
6690
- // &ThickSpace; (\u2005\u200a) and all negative spaces.
6671
+ // for a table of space-like characters. We use Unicode
6672
+ // representations instead of &LongNames; as it's not clear how to
6673
+ // make the latter via document.createTextNode.
6691
6674
 
6692
6675
  if (width >= 0.05555 && width <= 0.05556) {
6693
- this.character = "&VeryThinSpace;"; // \u200a
6676
+ this.character = "\u200a"; // &VeryThinSpace;
6694
6677
  } else if (width >= 0.1666 && width <= 0.1667) {
6695
- this.character = "&ThinSpace;"; // \u2009
6678
+ this.character = "\u2009"; // &ThinSpace;
6696
6679
  } else if (width >= 0.2222 && width <= 0.2223) {
6697
- this.character = "&MediumSpace;"; // \u2005
6680
+ this.character = "\u2005"; // &MediumSpace;
6698
6681
  } else if (width >= 0.2777 && width <= 0.2778) {
6699
- this.character = "&ThickSpace;"; // \u2005\u200a
6682
+ this.character = "\u2005\u200a"; // &ThickSpace;
6700
6683
  } else if (width >= -0.05556 && width <= -0.05555) {
6701
- this.character = "&NegativeVeryThinSpace;";
6684
+ this.character = "\u200a\u2063"; // &NegativeVeryThinSpace;
6702
6685
  } else if (width >= -0.1667 && width <= -0.1666) {
6703
- this.character = "&NegativeThinSpace;";
6686
+ this.character = "\u2009\u2063"; // &NegativeThinSpace;
6704
6687
  } else if (width >= -0.2223 && width <= -0.2222) {
6705
- this.character = "&NegativeMediumSpace;";
6688
+ this.character = "\u205f\u2063"; // &NegativeMediumSpace;
6706
6689
  } else if (width >= -0.2778 && width <= -0.2777) {
6707
- this.character = "&NegativeThickSpace;";
6690
+ this.character = "\u2005\u2063"; // &NegativeThickSpace;
6708
6691
  } else {
6709
6692
  this.character = null;
6710
6693
  }
@@ -6874,13 +6857,24 @@ const buildExpression$1 = function buildExpression(expression, options) {
6874
6857
  lastGroup.children.push(...group.children);
6875
6858
  continue;
6876
6859
  }
6860
+ } else if (lastGroup.type === 'mi' && lastGroup.children.length === 1) {
6861
+ const lastChild = lastGroup.children[0];
6862
+
6863
+ if (lastChild instanceof TextNode && lastChild.text === '\u0338' && (group.type === 'mo' || group.type === 'mi' || group.type === 'mn')) {
6864
+ const child = group.children[0];
6865
+
6866
+ if (child instanceof TextNode && child.text.length > 0) {
6867
+ // Overlay with combining character long solidus
6868
+ child.text = child.text.slice(0, 1) + "\u0338" + child.text.slice(1);
6869
+ groups.pop();
6870
+ }
6871
+ }
6877
6872
  }
6878
6873
  }
6879
6874
 
6880
6875
  groups.push(group);
6881
6876
  lastGroup = group;
6882
- } // TODO(kevinb): combine \\not with mrels and mords
6883
-
6877
+ }
6884
6878
 
6885
6879
  return groups;
6886
6880
  };
@@ -6951,28 +6945,36 @@ const optionsFromSettings = function optionsFromSettings(settings) {
6951
6945
  });
6952
6946
  };
6953
6947
 
6948
+ const displayWrap = function displayWrap(node, settings) {
6949
+ if (settings.displayMode) {
6950
+ const classes = ["katex-display"];
6951
+
6952
+ if (settings.leqno) {
6953
+ classes.push("leqno");
6954
+ }
6955
+
6956
+ if (settings.fleqn) {
6957
+ classes.push("fleqn");
6958
+ }
6959
+
6960
+ node = buildCommon.makeSpan(classes, [node]);
6961
+ }
6962
+
6963
+ return node;
6964
+ };
6965
+
6954
6966
  const buildTree = function buildTree(tree, expression, settings) {
6955
6967
  const options = optionsFromSettings(settings);
6956
6968
  const mathMLNode = buildMathML(tree, expression, options);
6957
6969
  const htmlNode = buildHTML(tree, options);
6958
6970
  const katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, htmlNode]);
6959
-
6960
- if (settings.displayMode) {
6961
- return buildCommon.makeSpan(["katex-display"], [katexNode]);
6962
- } else {
6963
- return katexNode;
6964
- }
6971
+ return displayWrap(katexNode, settings);
6965
6972
  };
6966
6973
  const buildHTMLTree = function buildHTMLTree(tree, expression, settings) {
6967
6974
  const options = optionsFromSettings(settings);
6968
6975
  const htmlNode = buildHTML(tree, options);
6969
6976
  const katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
6970
-
6971
- if (settings.displayMode) {
6972
- return buildCommon.makeSpan(["katex-display"], [katexNode]);
6973
- } else {
6974
- return katexNode;
6975
- }
6977
+ return displayWrap(katexNode, settings);
6976
6978
  };
6977
6979
 
6978
6980
  /**
@@ -6991,8 +6993,10 @@ const stretchyCodePoint = {
6991
6993
  overrightarrow: "\u2192",
6992
6994
  underrightarrow: "\u2192",
6993
6995
  xrightarrow: "\u2192",
6994
- underbrace: "\u23b5",
6996
+ underbrace: "\u23df",
6995
6997
  overbrace: "\u23de",
6998
+ overgroup: "\u23e0",
6999
+ undergroup: "\u23e1",
6996
7000
  overleftrightarrow: "\u2194",
6997
7001
  underleftrightarrow: "\u2194",
6998
7002
  xleftrightarrow: "\u2194",
@@ -7529,10 +7533,9 @@ defineFunction({
7529
7533
  props: {
7530
7534
  numArgs: 1
7531
7535
  },
7532
- handler: ({
7533
- parser,
7534
- funcName
7535
- }, args) => {
7536
+ handler: (_ref, args) => {
7537
+ let parser = _ref.parser,
7538
+ funcName = _ref.funcName;
7536
7539
  const base = args[0];
7537
7540
  return {
7538
7541
  type: "accentUnder",
@@ -7572,7 +7575,15 @@ defineFunction({
7572
7575
  }
7573
7576
  });
7574
7577
 
7575
- // Stretchy arrows with an optional argument
7578
+ // Helper function
7579
+ const paddedNode = group => {
7580
+ const node = new mathMLTree.MathNode("mpadded", group ? [group] : []);
7581
+ node.setAttribute("width", "+0.6em");
7582
+ node.setAttribute("lspace", "0.3em");
7583
+ return node;
7584
+ }; // Stretchy arrows with an optional argument
7585
+
7586
+
7576
7587
  defineFunction({
7577
7588
  type: "xArrow",
7578
7589
  names: ["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom", // The next 3 functions are here to support the mhchem extension.
@@ -7583,10 +7594,9 @@ defineFunction({
7583
7594
  numOptionalArgs: 1
7584
7595
  },
7585
7596
 
7586
- handler({
7587
- parser,
7588
- funcName
7589
- }, args, optArgs) {
7597
+ handler(_ref, args, optArgs) {
7598
+ let parser = _ref.parser,
7599
+ funcName = _ref.funcName;
7590
7600
  return {
7591
7601
  type: "xArrow",
7592
7602
  mode: parser.mode,
@@ -7671,22 +7681,24 @@ defineFunction({
7671
7681
  mathmlBuilder(group, options) {
7672
7682
  const arrowNode = stretchy.mathMLnode(group.label);
7673
7683
  let node;
7674
- let lowerNode;
7675
7684
 
7676
7685
  if (group.body) {
7677
- const upperNode = buildGroup$1(group.body, options);
7686
+ const upperNode = paddedNode(buildGroup$1(group.body, options));
7678
7687
 
7679
7688
  if (group.below) {
7680
- lowerNode = buildGroup$1(group.below, options);
7689
+ const lowerNode = paddedNode(buildGroup$1(group.below, options));
7681
7690
  node = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]);
7682
7691
  } else {
7683
7692
  node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]);
7684
7693
  }
7685
7694
  } else if (group.below) {
7686
- lowerNode = buildGroup$1(group.below, options);
7695
+ const lowerNode = paddedNode(buildGroup$1(group.below, options));
7687
7696
  node = new mathMLTree.MathNode("munder", [arrowNode, lowerNode]);
7688
7697
  } else {
7689
- node = new mathMLTree.MathNode("mover", [arrowNode]);
7698
+ // This should never happen.
7699
+ // Parser.js throws an error if there is no argument.
7700
+ node = paddedNode();
7701
+ node = new mathMLTree.MathNode("mover", [arrowNode, node]);
7690
7702
  }
7691
7703
 
7692
7704
  return node;
@@ -7705,9 +7717,8 @@ defineFunction({
7705
7717
  allowedInText: true
7706
7718
  },
7707
7719
 
7708
- handler({
7709
- parser
7710
- }, args) {
7720
+ handler(_ref, args) {
7721
+ let parser = _ref.parser;
7711
7722
  const arg = assertNodeType(args[0], "ordgroup");
7712
7723
  const group = arg.body;
7713
7724
  let number = "";
@@ -7742,7 +7753,7 @@ const htmlBuilder$1 = (group, options) => {
7742
7753
  };
7743
7754
 
7744
7755
  const mathmlBuilder$1 = (group, options) => {
7745
- const inner = buildExpression$1(group.body, options);
7756
+ const inner = buildExpression$1(group.body, options.withColor(group.color));
7746
7757
  const node = new mathMLTree.MathNode("mstyle", inner);
7747
7758
  node.setAttribute("mathcolor", group.color);
7748
7759
  return node;
@@ -7758,9 +7769,8 @@ defineFunction({
7758
7769
  argTypes: ["color", "original"]
7759
7770
  },
7760
7771
 
7761
- handler({
7762
- parser
7763
- }, args) {
7772
+ handler(_ref, args) {
7773
+ let parser = _ref.parser;
7764
7774
  const color = assertNodeType(args[0], "color-token").color;
7765
7775
  const body = args[1];
7766
7776
  return {
@@ -7771,32 +7781,6 @@ defineFunction({
7771
7781
  };
7772
7782
  },
7773
7783
 
7774
- htmlBuilder: htmlBuilder$1,
7775
- mathmlBuilder: mathmlBuilder$1
7776
- }); // TODO(kevinb): define these using macros
7777
-
7778
- defineFunction({
7779
- type: "color",
7780
- names: ["\\blue", "\\orange", "\\pink", "\\red", "\\green", "\\gray", "\\purple", "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE", "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE", "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE", "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE", "\\redA", "\\redB", "\\redC", "\\redD", "\\redE", "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE", "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE", "\\mintA", "\\mintB", "\\mintC", "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE", "\\grayF", "\\grayG", "\\grayH", "\\grayI", "\\kaBlue", "\\kaGreen"],
7781
- props: {
7782
- numArgs: 1,
7783
- allowedInText: true,
7784
- greediness: 3
7785
- },
7786
-
7787
- handler({
7788
- parser,
7789
- funcName
7790
- }, args) {
7791
- const body = args[0];
7792
- return {
7793
- type: "color",
7794
- mode: parser.mode,
7795
- color: "katex-" + funcName.slice(1),
7796
- body: ordargument(body)
7797
- };
7798
- },
7799
-
7800
7784
  htmlBuilder: htmlBuilder$1,
7801
7785
  mathmlBuilder: mathmlBuilder$1
7802
7786
  });
@@ -7810,10 +7794,9 @@ defineFunction({
7810
7794
  argTypes: ["color"]
7811
7795
  },
7812
7796
 
7813
- handler({
7814
- parser,
7815
- breakOnTokenText
7816
- }, args) {
7797
+ handler(_ref2, args) {
7798
+ let parser = _ref2.parser,
7799
+ breakOnTokenText = _ref2.breakOnTokenText;
7817
7800
  const color = assertNodeType(args[0], "color-token").color; // If we see a styling function, parse out the implicit body
7818
7801
 
7819
7802
  const body = parser.parseExpression(true, breakOnTokenText);
@@ -7844,10 +7827,9 @@ defineFunction({
7844
7827
  allowedInText: true
7845
7828
  },
7846
7829
 
7847
- handler({
7848
- parser,
7849
- funcName
7850
- }, args, optArgs) {
7830
+ handler(_ref, args, optArgs) {
7831
+ let parser = _ref.parser,
7832
+ funcName = _ref.funcName;
7851
7833
  const size = optArgs[0];
7852
7834
  const newRow = funcName === "\\cr";
7853
7835
  let newLine = false;
@@ -8725,7 +8707,7 @@ defineFunction({
8725
8707
  htmlBuilder: (group, options) => {
8726
8708
  assertParsed(group); // Build the inner expression
8727
8709
 
8728
- const inner = buildExpression(group.body, options, true, [null, "mclose"]);
8710
+ const inner = buildExpression(group.body, options, true, ["mopen", "mclose"]);
8729
8711
  let innerHeight = 0;
8730
8712
  let innerDepth = 0;
8731
8713
  let hadMiddle = false; // Calculate its height and depth
@@ -8848,8 +8830,17 @@ defineFunction({
8848
8830
  return middleDelim;
8849
8831
  },
8850
8832
  mathmlBuilder: (group, options) => {
8851
- const middleNode = new mathMLTree.MathNode("mo", [makeText(group.delim, group.mode)]);
8852
- middleNode.setAttribute("fence", "true");
8833
+ // A Firefox \middle will strech a character vertically only if it
8834
+ // is in the fence part of the operator dictionary at:
8835
+ // https://www.w3.org/TR/MathML3/appendixc.html.
8836
+ // So we need to avoid U+2223 and use plain "|" instead.
8837
+ const textNode = group.delim === "\\vert" || group.delim === "|" ? makeText("|", "text") : makeText(group.delim, group.mode);
8838
+ const middleNode = new mathMLTree.MathNode("mo", [textNode]);
8839
+ middleNode.setAttribute("fence", "true"); // MathML gives 5/18em spacing to each <mo> element.
8840
+ // \middle should get delimiter spacing instead.
8841
+
8842
+ middleNode.setAttribute("lspace", "0.05em");
8843
+ middleNode.setAttribute("rspace", "0.05em");
8853
8844
  return middleNode;
8854
8845
  }
8855
8846
  });
@@ -8955,7 +8946,7 @@ const htmlBuilder$2 = (group, options) => {
8955
8946
  };
8956
8947
 
8957
8948
  const mathmlBuilder$2 = (group, options) => {
8958
- const node = new mathMLTree.MathNode("menclose", [buildGroup$1(group.body, options)]);
8949
+ const node = new mathMLTree.MathNode(group.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup$1(group.body, options)]);
8959
8950
 
8960
8951
  switch (group.label) {
8961
8952
  case "\\cancel":
@@ -8975,8 +8966,20 @@ const mathmlBuilder$2 = (group, options) => {
8975
8966
  break;
8976
8967
 
8977
8968
  case "\\fcolorbox":
8978
- // TODO(ron): I don't know any way to set the border color.
8979
- node.setAttribute("notation", "box");
8969
+ case "\\colorbox":
8970
+ // <menclose> doesn't have a good notation option. So use <mpadded>
8971
+ // instead. Set some attributes that come included with <menclose>.
8972
+ node.setAttribute("width", "+6pt");
8973
+ node.setAttribute("height", "+6pt");
8974
+ node.setAttribute("lspace", "3pt"); // LaTeX source2e: \fboxsep = 3pt
8975
+
8976
+ node.setAttribute("voffset", "3pt");
8977
+
8978
+ if (group.label === "\\fcolorbox") {
8979
+ const thk = options.fontMetrics().defaultRuleThickness;
8980
+ node.setAttribute("style", "border: " + thk + "em solid " + String(group.borderColor));
8981
+ }
8982
+
8980
8983
  break;
8981
8984
 
8982
8985
  case "\\xcancel":
@@ -9001,10 +9004,9 @@ defineFunction({
9001
9004
  argTypes: ["color", "text"]
9002
9005
  },
9003
9006
 
9004
- handler({
9005
- parser,
9006
- funcName
9007
- }, args, optArgs) {
9007
+ handler(_ref, args, optArgs) {
9008
+ let parser = _ref.parser,
9009
+ funcName = _ref.funcName;
9008
9010
  const color = assertNodeType(args[0], "color-token").color;
9009
9011
  const body = args[1];
9010
9012
  return {
@@ -9029,10 +9031,9 @@ defineFunction({
9029
9031
  argTypes: ["color", "color", "text"]
9030
9032
  },
9031
9033
 
9032
- handler({
9033
- parser,
9034
- funcName
9035
- }, args, optArgs) {
9034
+ handler(_ref2, args, optArgs) {
9035
+ let parser = _ref2.parser,
9036
+ funcName = _ref2.funcName;
9036
9037
  const borderColor = assertNodeType(args[0], "color-token").color;
9037
9038
  const backgroundColor = assertNodeType(args[1], "color-token").color;
9038
9039
  const body = args[2];
@@ -9058,9 +9059,8 @@ defineFunction({
9058
9059
  allowedInText: true
9059
9060
  },
9060
9061
 
9061
- handler({
9062
- parser
9063
- }, args) {
9062
+ handler(_ref3, args) {
9063
+ let parser = _ref3.parser;
9064
9064
  return {
9065
9065
  type: "enclose",
9066
9066
  mode: parser.mode,
@@ -9077,10 +9077,9 @@ defineFunction({
9077
9077
  numArgs: 1
9078
9078
  },
9079
9079
 
9080
- handler({
9081
- parser,
9082
- funcName
9083
- }, args, optArgs) {
9080
+ handler(_ref4, args, optArgs) {
9081
+ let parser = _ref4.parser,
9082
+ funcName = _ref4.funcName;
9084
9083
  const body = args[0];
9085
9084
  return {
9086
9085
  type: "enclose",
@@ -9100,14 +9099,13 @@ defineFunction({
9100
9099
  * `Parser.js` requires this dictionary via `environments.js`.
9101
9100
  */
9102
9101
  const _environments = {};
9103
- function defineEnvironment({
9104
- type,
9105
- names,
9106
- props,
9107
- handler,
9108
- htmlBuilder,
9109
- mathmlBuilder
9110
- }) {
9102
+ function defineEnvironment(_ref) {
9103
+ let type = _ref.type,
9104
+ names = _ref.names,
9105
+ props = _ref.props,
9106
+ handler = _ref.handler,
9107
+ htmlBuilder = _ref.htmlBuilder,
9108
+ mathmlBuilder = _ref.mathmlBuilder;
9111
9109
  // Set default values of environments.
9112
9110
  const data = {
9113
9111
  type,
@@ -9159,12 +9157,12 @@ function getHLines(parser) {
9159
9157
  */
9160
9158
 
9161
9159
 
9162
- function parseArray(parser, {
9163
- hskipBeforeAndAfter,
9164
- addJot,
9165
- cols,
9166
- arraystretch
9167
- }, style) {
9160
+ function parseArray(parser, _ref, style) {
9161
+ let hskipBeforeAndAfter = _ref.hskipBeforeAndAfter,
9162
+ addJot = _ref.addJot,
9163
+ cols = _ref.cols,
9164
+ arraystretch = _ref.arraystretch,
9165
+ colSeparationType = _ref.colSeparationType;
9168
9166
  // Parse body of array with \\ temporarily mapped to \cr
9169
9167
  parser.gullet.beginGroup();
9170
9168
  parser.gullet.macros.set("\\\\", "\\cr"); // Get current arraystretch if it's not set by the environment
@@ -9249,7 +9247,8 @@ function parseArray(parser, {
9249
9247
  cols,
9250
9248
  rowGaps,
9251
9249
  hskipBeforeAndAfter,
9252
- hLinesBeforeRow
9250
+ hLinesBeforeRow,
9251
+ colSeparationType
9253
9252
  };
9254
9253
  } // Decides on a style for cells in an array according to whether the given
9255
9254
  // environment name starts with the letter 'd'.
@@ -9498,12 +9497,117 @@ const htmlBuilder$3 = function htmlBuilder(group, options) {
9498
9497
  return buildCommon.makeSpan(["mord"], [body], options);
9499
9498
  };
9500
9499
 
9500
+ const alignMap = {
9501
+ c: "center ",
9502
+ l: "left ",
9503
+ r: "right "
9504
+ };
9505
+
9501
9506
  const mathmlBuilder$3 = function mathmlBuilder(group, options) {
9502
- return new mathMLTree.MathNode("mtable", group.body.map(function (row) {
9507
+ const table = new mathMLTree.MathNode("mtable", group.body.map(function (row) {
9503
9508
  return new mathMLTree.MathNode("mtr", row.map(function (cell) {
9504
9509
  return new mathMLTree.MathNode("mtd", [buildGroup$1(cell, options)]);
9505
9510
  }));
9506
- }));
9511
+ })); // Set column alignment, row spacing, column spacing, and
9512
+ // array lines by setting attributes on the table element.
9513
+ // Set the row spacing. In MathML, we specify a gap distance.
9514
+ // We do not use rowGap[] because MathML automatically increases
9515
+ // cell height with the height/depth of the element content.
9516
+ // LaTeX \arraystretch multiplies the row baseline-to-baseline distance.
9517
+ // We simulate this by adding (arraystretch - 1)em to the gap. This
9518
+ // does a reasonable job of adjusting arrays containing 1 em tall content.
9519
+ // The 0.16 and 0.09 values are found emprically. They produce an array
9520
+ // similar to LaTeX and in which content does not interfere with \hines.
9521
+
9522
+ const gap = 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0);
9523
+ table.setAttribute("rowspacing", gap + "em"); // MathML table lines go only between cells.
9524
+ // To place a line on an edge we'll use <menclose>, if necessary.
9525
+
9526
+ let menclose = "";
9527
+ let align = "";
9528
+
9529
+ if (group.cols) {
9530
+ // Find column alignment, column spacing, and vertical lines.
9531
+ const cols = group.cols;
9532
+ let columnLines = "";
9533
+ let prevTypeWasAlign = false;
9534
+ let iStart = 0;
9535
+ let iEnd = cols.length;
9536
+
9537
+ if (cols[0].type === "separator") {
9538
+ menclose += "top ";
9539
+ iStart = 1;
9540
+ }
9541
+
9542
+ if (cols[cols.length - 1].type === "separator") {
9543
+ menclose += "bottom ";
9544
+ iEnd -= 1;
9545
+ }
9546
+
9547
+ for (let i = iStart; i < iEnd; i++) {
9548
+ if (cols[i].type === "align") {
9549
+ align += alignMap[cols[i].align];
9550
+
9551
+ if (prevTypeWasAlign) {
9552
+ columnLines += "none ";
9553
+ }
9554
+
9555
+ prevTypeWasAlign = true;
9556
+ } else if (cols[i].type === "separator") {
9557
+ // MathML accepts only single lines between cells.
9558
+ // So we read only the first of consecutive separators.
9559
+ if (prevTypeWasAlign) {
9560
+ columnLines += cols[i].separator === "|" ? "solid " : "dashed ";
9561
+ prevTypeWasAlign = false;
9562
+ }
9563
+ }
9564
+ }
9565
+
9566
+ table.setAttribute("columnalign", align.trim());
9567
+
9568
+ if (/[sd]/.test(columnLines)) {
9569
+ table.setAttribute("columnlines", columnLines.trim());
9570
+ }
9571
+ } // Set column spacing.
9572
+
9573
+
9574
+ if (group.colSeparationType === "align") {
9575
+ const cols = group.cols || [];
9576
+ let spacing = "";
9577
+
9578
+ for (let i = 1; i < cols.length; i++) {
9579
+ spacing += i % 2 ? "0em " : "1em ";
9580
+ }
9581
+
9582
+ table.setAttribute("columnspacing", spacing.trim());
9583
+ } else if (group.colSeparationType === "alignat") {
9584
+ table.setAttribute("columnspacing", "0em");
9585
+ } else {
9586
+ table.setAttribute("columnspacing", "1em");
9587
+ } // Address \hline and \hdashline
9588
+
9589
+
9590
+ let rowLines = "";
9591
+ const hlines = group.hLinesBeforeRow;
9592
+ menclose += hlines[0].length > 0 ? "left " : "";
9593
+ menclose += hlines[hlines.length - 1].length > 0 ? "right " : "";
9594
+
9595
+ for (let i = 1; i < hlines.length - 1; i++) {
9596
+ rowLines += hlines[i].length === 0 ? "none " // MathML accepts only a single line between rows. Read one element.
9597
+ : hlines[i][0] ? "dashed " : "solid ";
9598
+ }
9599
+
9600
+ if (/[sd]/.test(rowLines)) {
9601
+ table.setAttribute("rowlines", rowLines.trim());
9602
+ }
9603
+
9604
+ if (menclose === "") {
9605
+ return table;
9606
+ } else {
9607
+ const wrapper = new mathMLTree.MathNode("menclose", [table]);
9608
+ wrapper.setAttribute("notation", menclose.trim());
9609
+ return wrapper;
9610
+ }
9507
9611
  }; // Convenience function for aligned and alignedat environments.
9508
9612
 
9509
9613
 
@@ -9586,6 +9690,7 @@ const alignedHandler = function alignedHandler(context, args) {
9586
9690
  };
9587
9691
  }
9588
9692
 
9693
+ res.colSeparationType = isAligned ? "align" : "alignat";
9589
9694
  return res;
9590
9695
  }; // Arrays are part of LaTeX, defined in lttab.dtx so its documentation
9591
9696
  // is part of the source2e.pdf file of LaTeX2e source documentation.
@@ -9806,10 +9911,9 @@ defineFunction({
9806
9911
  argTypes: ["text"]
9807
9912
  },
9808
9913
 
9809
- handler({
9810
- parser,
9811
- funcName
9812
- }, args) {
9914
+ handler(_ref, args) {
9915
+ let parser = _ref.parser,
9916
+ funcName = _ref.funcName;
9813
9917
  const nameGroup = args[0];
9814
9918
 
9815
9919
  if (nameGroup.type !== "ordgroup") {
@@ -9883,10 +9987,9 @@ defineFunction({
9883
9987
  numArgs: 1
9884
9988
  },
9885
9989
 
9886
- handler({
9887
- parser,
9888
- funcName
9889
- }, args) {
9990
+ handler(_ref, args) {
9991
+ let parser = _ref.parser,
9992
+ funcName = _ref.funcName;
9890
9993
  const body = args[0];
9891
9994
  return {
9892
9995
  type: "mclass",
@@ -9921,9 +10024,8 @@ defineFunction({
9921
10024
  numArgs: 2
9922
10025
  },
9923
10026
 
9924
- handler({
9925
- parser
9926
- }, args) {
10027
+ handler(_ref2, args) {
10028
+ let parser = _ref2.parser;
9927
10029
  return {
9928
10030
  type: "mclass",
9929
10031
  mode: parser.mode,
@@ -9941,10 +10043,9 @@ defineFunction({
9941
10043
  numArgs: 2
9942
10044
  },
9943
10045
 
9944
- handler({
9945
- parser,
9946
- funcName
9947
- }, args) {
10046
+ handler(_ref3, args) {
10047
+ let parser = _ref3.parser,
10048
+ funcName = _ref3.funcName;
9948
10049
  const baseArg = args[1];
9949
10050
  const shiftedArg = args[0];
9950
10051
  let mclass;
@@ -9961,6 +10062,7 @@ defineFunction({
9961
10062
  mode: baseArg.mode,
9962
10063
  limits: true,
9963
10064
  alwaysHandleSupSub: true,
10065
+ parentIsSupSub: false,
9964
10066
  symbol: false,
9965
10067
  suppressBaseShift: funcName !== "\\stackrel",
9966
10068
  body: ordargument(baseArg)
@@ -10014,10 +10116,9 @@ defineFunction({
10014
10116
  numArgs: 1,
10015
10117
  greediness: 2
10016
10118
  },
10017
- handler: ({
10018
- parser,
10019
- funcName
10020
- }, args) => {
10119
+ handler: (_ref, args) => {
10120
+ let parser = _ref.parser,
10121
+ funcName = _ref.funcName;
10021
10122
  const body = args[0];
10022
10123
  let func = funcName;
10023
10124
 
@@ -10042,9 +10143,8 @@ defineFunction({
10042
10143
  numArgs: 1,
10043
10144
  greediness: 2
10044
10145
  },
10045
- handler: ({
10046
- parser
10047
- }, args) => {
10146
+ handler: (_ref2, args) => {
10147
+ let parser = _ref2.parser;
10048
10148
  const body = args[0]; // amsbsy.sty's \boldsymbol uses \binrel spacing to inherit the
10049
10149
  // argument's bin|rel|ord status
10050
10150
 
@@ -10069,13 +10169,11 @@ defineFunction({
10069
10169
  numArgs: 0,
10070
10170
  allowedInText: true
10071
10171
  },
10072
- handler: ({
10073
- parser,
10074
- funcName,
10075
- breakOnTokenText
10076
- }, args) => {
10172
+ handler: (_ref3, args) => {
10173
+ let parser = _ref3.parser,
10174
+ funcName = _ref3.funcName,
10175
+ breakOnTokenText = _ref3.breakOnTokenText;
10077
10176
  const mode = parser.mode;
10078
- parser.consumeSpaces();
10079
10177
  const body = parser.parseExpression(true, breakOnTokenText);
10080
10178
  const style = `math${funcName.slice(1)}`;
10081
10179
  return {
@@ -10093,23 +10191,30 @@ defineFunction({
10093
10191
  mathmlBuilder: mathmlBuilder$5
10094
10192
  });
10095
10193
 
10096
- const htmlBuilder$6 = (group, options) => {
10097
- // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
10194
+ const adjustStyle = (size, originalStyle) => {
10098
10195
  // Figure out what style this fraction should be in based on the
10099
10196
  // function used
10100
- let style = options.style;
10197
+ let style = originalStyle;
10101
10198
 
10102
- if (group.size === "display") {
10103
- style = Style$1.DISPLAY;
10104
- } else if (group.size === "text" && style.size === Style$1.DISPLAY.size) {
10199
+ if (size === "display") {
10200
+ // Get display style as a default.
10201
+ // If incoming style is sub/sup, use style.text() to get correct size.
10202
+ style = style.id >= Style$1.SCRIPT.id ? style.text() : Style$1.DISPLAY;
10203
+ } else if (size === "text" && style.size === Style$1.DISPLAY.size) {
10105
10204
  // We're in a \tfrac but incoming style is displaystyle, so:
10106
10205
  style = Style$1.TEXT;
10107
- } else if (group.size === "script") {
10206
+ } else if (size === "script") {
10108
10207
  style = Style$1.SCRIPT;
10109
- } else if (group.size === "scriptscript") {
10208
+ } else if (size === "scriptscript") {
10110
10209
  style = Style$1.SCRIPTSCRIPT;
10111
10210
  }
10112
10211
 
10212
+ return style;
10213
+ };
10214
+
10215
+ const htmlBuilder$6 = (group, options) => {
10216
+ // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
10217
+ const style = adjustStyle(group.size, options.style);
10113
10218
  const nstyle = style.fracNum();
10114
10219
  const dstyle = style.fracDen();
10115
10220
  let newOptions;
@@ -10152,7 +10257,7 @@ const htmlBuilder$6 = (group, options) => {
10152
10257
  let clearance;
10153
10258
  let denomShift;
10154
10259
 
10155
- if (style.size === Style$1.DISPLAY.size) {
10260
+ if (style.size === Style$1.DISPLAY.size || group.size === "display") {
10156
10261
  numShift = options.fontMetrics().num1;
10157
10262
 
10158
10263
  if (ruleWidth > 0) {
@@ -10263,7 +10368,7 @@ const htmlBuilder$6 = (group, options) => {
10263
10368
  };
10264
10369
 
10265
10370
  const mathmlBuilder$6 = (group, options) => {
10266
- const node = new mathMLTree.MathNode("mfrac", [buildGroup$1(group.numer, options), buildGroup$1(group.denom, options)]);
10371
+ let node = new mathMLTree.MathNode("mfrac", [buildGroup$1(group.numer, options), buildGroup$1(group.denom, options)]);
10267
10372
 
10268
10373
  if (!group.hasBarLine) {
10269
10374
  node.setAttribute("linethickness", "0px");
@@ -10272,11 +10377,20 @@ const mathmlBuilder$6 = (group, options) => {
10272
10377
  node.setAttribute("linethickness", ruleWidth + "em");
10273
10378
  }
10274
10379
 
10380
+ const style = adjustStyle(group.size, options.style);
10381
+
10382
+ if (style.size !== options.style.size) {
10383
+ node = new mathMLTree.MathNode("mstyle", [node]);
10384
+ const isDisplay = style.size === Style$1.DISPLAY.size ? "true" : "false";
10385
+ node.setAttribute("displaystyle", isDisplay);
10386
+ node.setAttribute("scriptlevel", "0");
10387
+ }
10388
+
10275
10389
  if (group.leftDelim != null || group.rightDelim != null) {
10276
10390
  const withDelims = [];
10277
10391
 
10278
10392
  if (group.leftDelim != null) {
10279
- const leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim)]);
10393
+ const leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim.replace("\\", ""))]);
10280
10394
  leftOp.setAttribute("fence", "true");
10281
10395
  withDelims.push(leftOp);
10282
10396
  }
@@ -10284,7 +10398,7 @@ const mathmlBuilder$6 = (group, options) => {
10284
10398
  withDelims.push(node);
10285
10399
 
10286
10400
  if (group.rightDelim != null) {
10287
- const rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim)]);
10401
+ const rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim.replace("\\", ""))]);
10288
10402
  rightOp.setAttribute("fence", "true");
10289
10403
  withDelims.push(rightOp);
10290
10404
  }
@@ -10303,10 +10417,9 @@ defineFunction({
10303
10417
  numArgs: 2,
10304
10418
  greediness: 2
10305
10419
  },
10306
- handler: ({
10307
- parser,
10308
- funcName
10309
- }, args) => {
10420
+ handler: (_ref, args) => {
10421
+ let parser = _ref.parser,
10422
+ funcName = _ref.funcName;
10310
10423
  const numer = args[0];
10311
10424
  const denom = args[1];
10312
10425
  let hasBarLine;
@@ -10389,11 +10502,10 @@ defineFunction({
10389
10502
  infix: true
10390
10503
  },
10391
10504
 
10392
- handler({
10393
- parser,
10394
- funcName,
10395
- token
10396
- }) {
10505
+ handler(_ref2) {
10506
+ let parser = _ref2.parser,
10507
+ funcName = _ref2.funcName,
10508
+ token = _ref2.token;
10397
10509
  let replaceWith;
10398
10510
 
10399
10511
  switch (funcName) {
@@ -10452,30 +10564,25 @@ defineFunction({
10452
10564
  argTypes: ["math", "math", "size", "text", "math", "math"]
10453
10565
  },
10454
10566
 
10455
- handler({
10456
- parser
10457
- }, args) {
10567
+ handler(_ref3, args) {
10568
+ let parser = _ref3.parser;
10458
10569
  const numer = args[4];
10459
10570
  const denom = args[5]; // Look into the parse nodes to get the desired delimiters.
10460
10571
 
10461
- let leftNode = checkNodeType(args[0], "ordgroup");
10572
+ let leftNode = checkNodeType(args[0], "atom");
10462
10573
 
10463
10574
  if (leftNode) {
10464
- leftNode = assertAtomFamily(leftNode.body[0], "open");
10465
- } else {
10466
10575
  leftNode = assertAtomFamily(args[0], "open");
10467
10576
  }
10468
10577
 
10469
- const leftDelim = delimFromValue(leftNode.text);
10470
- let rightNode = checkNodeType(args[1], "ordgroup");
10578
+ const leftDelim = leftNode ? delimFromValue(leftNode.text) : null;
10579
+ let rightNode = checkNodeType(args[1], "atom");
10471
10580
 
10472
10581
  if (rightNode) {
10473
- rightNode = assertAtomFamily(rightNode.body[0], "close");
10474
- } else {
10475
10582
  rightNode = assertAtomFamily(args[1], "close");
10476
10583
  }
10477
10584
 
10478
- const rightDelim = delimFromValue(rightNode.text);
10585
+ const rightDelim = rightNode ? delimFromValue(rightNode.text) : null;
10479
10586
  const barNode = assertNodeType(args[2], "size");
10480
10587
  let hasBarLine;
10481
10588
  let barSize = null;
@@ -10531,11 +10638,10 @@ defineFunction({
10531
10638
  infix: true
10532
10639
  },
10533
10640
 
10534
- handler({
10535
- parser,
10536
- funcName,
10537
- token
10538
- }, args) {
10641
+ handler(_ref4, args) {
10642
+ let parser = _ref4.parser,
10643
+ funcName = _ref4.funcName,
10644
+ token = _ref4.token;
10539
10645
  return {
10540
10646
  type: "infix",
10541
10647
  mode: parser.mode,
@@ -10553,10 +10659,9 @@ defineFunction({
10553
10659
  numArgs: 3,
10554
10660
  argTypes: ["math", "size", "math"]
10555
10661
  },
10556
- handler: ({
10557
- parser,
10558
- funcName
10559
- }, args) => {
10662
+ handler: (_ref5, args) => {
10663
+ let parser = _ref5.parser,
10664
+ funcName = _ref5.funcName;
10560
10665
  const numer = args[0];
10561
10666
  const barSize = assert(assertNodeType(args[1], "infix").size);
10562
10667
  const denom = args[2];
@@ -10697,10 +10802,9 @@ defineFunction({
10697
10802
  numArgs: 1
10698
10803
  },
10699
10804
 
10700
- handler({
10701
- parser,
10702
- funcName
10703
- }, args) {
10805
+ handler(_ref, args) {
10806
+ let parser = _ref.parser,
10807
+ funcName = _ref.funcName;
10704
10808
  return {
10705
10809
  type: "horizBrace",
10706
10810
  mode: parser.mode,
@@ -10722,9 +10826,8 @@ defineFunction({
10722
10826
  argTypes: ["url", "original"],
10723
10827
  allowedInText: true
10724
10828
  },
10725
- handler: ({
10726
- parser
10727
- }, args) => {
10829
+ handler: (_ref, args) => {
10830
+ let parser = _ref.parser;
10728
10831
  const body = args[1];
10729
10832
  const href = assertNodeType(args[0], "url").url;
10730
10833
  return {
@@ -10757,9 +10860,8 @@ defineFunction({
10757
10860
  argTypes: ["url"],
10758
10861
  allowedInText: true
10759
10862
  },
10760
- handler: ({
10761
- parser
10762
- }, args) => {
10863
+ handler: (_ref2, args) => {
10864
+ let parser = _ref2.parser;
10763
10865
  const href = assertNodeType(args[0], "url").url;
10764
10866
  const chars = [];
10765
10867
 
@@ -10799,9 +10901,8 @@ defineFunction({
10799
10901
  numArgs: 2,
10800
10902
  allowedInText: true
10801
10903
  },
10802
- handler: ({
10803
- parser
10804
- }, args) => {
10904
+ handler: (_ref, args) => {
10905
+ let parser = _ref.parser;
10805
10906
  return {
10806
10907
  type: "htmlmathml",
10807
10908
  mode: parser.mode,
@@ -10829,10 +10930,9 @@ defineFunction({
10829
10930
  allowedInText: true
10830
10931
  },
10831
10932
 
10832
- handler({
10833
- parser,
10834
- funcName
10835
- }, args) {
10933
+ handler(_ref, args) {
10934
+ let parser = _ref.parser,
10935
+ funcName = _ref.funcName;
10836
10936
  const size = assertNodeType(args[0], "size");
10837
10937
 
10838
10938
  if (parser.settings.strict) {
@@ -10882,10 +10982,9 @@ defineFunction({
10882
10982
  numArgs: 1,
10883
10983
  allowedInText: true
10884
10984
  },
10885
- handler: ({
10886
- parser,
10887
- funcName
10888
- }, args) => {
10985
+ handler: (_ref, args) => {
10986
+ let parser = _ref.parser,
10987
+ funcName = _ref.funcName;
10889
10988
  const body = args[0];
10890
10989
  return {
10891
10990
  type: "lap",
@@ -10952,10 +11051,9 @@ defineFunction({
10952
11051
  consumeMode: "math"
10953
11052
  },
10954
11053
 
10955
- handler({
10956
- funcName,
10957
- parser
10958
- }, args) {
11054
+ handler(_ref, args) {
11055
+ let funcName = _ref.funcName,
11056
+ parser = _ref.parser;
10959
11057
  const outerMode = parser.mode;
10960
11058
  parser.switchMode("math");
10961
11059
  const close = funcName === "\\(" ? "\\)" : "$";
@@ -11016,9 +11114,8 @@ defineFunction({
11016
11114
  props: {
11017
11115
  numArgs: 4
11018
11116
  },
11019
- handler: ({
11020
- parser
11021
- }, args) => {
11117
+ handler: (_ref, args) => {
11118
+ let parser = _ref.parser;
11022
11119
  return {
11023
11120
  type: "mathchoice",
11024
11121
  mode: parser.mode,
@@ -11040,7 +11137,10 @@ defineFunction({
11040
11137
  });
11041
11138
 
11042
11139
  // Limits, symbols
11043
- // NOTE: Unlike most `htmlBuilder`s, this one handles not only "op", but also
11140
+ // Most operators have a large successor symbol, but these don't.
11141
+ const noSuccessor = ["\\smallint"]; // NOTE: Unlike most `htmlBuilder`s, this one handles not only "op", but also
11142
+ // "supsub" since some of them (like \int) can affect super/subscripting.
11143
+
11044
11144
  const htmlBuilder$8 = (grp, options) => {
11045
11145
  // Operators are handled in the TeXbook pg. 443-444, rule 13(a).
11046
11146
  let supGroup;
@@ -11061,9 +11161,7 @@ const htmlBuilder$8 = (grp, options) => {
11061
11161
  group = assertNodeType(grp, "op");
11062
11162
  }
11063
11163
 
11064
- const style = options.style; // Most operators have a large successor symbol, but these don't.
11065
-
11066
- const noSuccessor = ["\\smallint"];
11164
+ const style = options.style;
11067
11165
  let large = false;
11068
11166
 
11069
11167
  if (style.size === Style$1.DISPLAY.size && group.symbol && !utils.contains(noSuccessor, group.name)) {
@@ -11273,11 +11371,15 @@ const htmlBuilder$8 = (grp, options) => {
11273
11371
  };
11274
11372
 
11275
11373
  const mathmlBuilder$8 = (group, options) => {
11276
- let node; // TODO(emily): handle big operators using the `largeop` attribute
11374
+ let node;
11277
11375
 
11278
11376
  if (group.symbol) {
11279
11377
  // This is a symbol. Just add the symbol.
11280
11378
  node = new MathNode("mo", [makeText(group.name, group.mode)]);
11379
+
11380
+ if (utils.contains(noSuccessor, group.name)) {
11381
+ node.setAttribute("largeop", "false");
11382
+ }
11281
11383
  } else if (group.body) {
11282
11384
  // This is an operator with children. Add them.
11283
11385
  node = new MathNode("mo", buildExpression$1(group.body, options));
@@ -11290,7 +11392,12 @@ const mathmlBuilder$8 = (group, options) => {
11290
11392
  // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4
11291
11393
 
11292
11394
  const operator = new MathNode("mo", [makeText("\u2061", "text")]);
11293
- return newDocumentFragment([node, operator]);
11395
+
11396
+ if (group.parentIsSupSub) {
11397
+ node = new MathNode("mo", [node, operator]);
11398
+ } else {
11399
+ node = newDocumentFragment([node, operator]);
11400
+ }
11294
11401
  }
11295
11402
 
11296
11403
  return node;
@@ -11303,7 +11410,7 @@ const singleCharBigOps = {
11303
11410
  "\u22c0": "\\bigwedge",
11304
11411
  "\u22c1": "\\bigvee",
11305
11412
  "\u22c2": "\\bigcap",
11306
- "\u22c3": "\\bigcap",
11413
+ "\u22c3": "\\bigcup",
11307
11414
  "\u2a00": "\\bigodot",
11308
11415
  "\u2a01": "\\bigoplus",
11309
11416
  "\u2a02": "\\bigotimes",
@@ -11316,10 +11423,9 @@ defineFunction({
11316
11423
  props: {
11317
11424
  numArgs: 0
11318
11425
  },
11319
- handler: ({
11320
- parser,
11321
- funcName
11322
- }, args) => {
11426
+ handler: (_ref, args) => {
11427
+ let parser = _ref.parser,
11428
+ funcName = _ref.funcName;
11323
11429
  let fName = funcName;
11324
11430
 
11325
11431
  if (fName.length === 1) {
@@ -11330,6 +11436,7 @@ defineFunction({
11330
11436
  type: "op",
11331
11437
  mode: parser.mode,
11332
11438
  limits: true,
11439
+ parentIsSupSub: false,
11333
11440
  symbol: true,
11334
11441
  name: fName
11335
11442
  };
@@ -11345,14 +11452,14 @@ defineFunction({
11345
11452
  props: {
11346
11453
  numArgs: 1
11347
11454
  },
11348
- handler: ({
11349
- parser
11350
- }, args) => {
11455
+ handler: (_ref2, args) => {
11456
+ let parser = _ref2.parser;
11351
11457
  const body = args[0];
11352
11458
  return {
11353
11459
  type: "op",
11354
11460
  mode: parser.mode,
11355
11461
  limits: false,
11462
+ parentIsSupSub: false,
11356
11463
  symbol: false,
11357
11464
  body: ordargument(body)
11358
11465
  };
@@ -11379,14 +11486,14 @@ defineFunction({
11379
11486
  numArgs: 0
11380
11487
  },
11381
11488
 
11382
- handler({
11383
- parser,
11384
- funcName
11385
- }) {
11489
+ handler(_ref3) {
11490
+ let parser = _ref3.parser,
11491
+ funcName = _ref3.funcName;
11386
11492
  return {
11387
11493
  type: "op",
11388
11494
  mode: parser.mode,
11389
11495
  limits: false,
11496
+ parentIsSupSub: false,
11390
11497
  symbol: false,
11391
11498
  name: funcName
11392
11499
  };
@@ -11403,14 +11510,14 @@ defineFunction({
11403
11510
  numArgs: 0
11404
11511
  },
11405
11512
 
11406
- handler({
11407
- parser,
11408
- funcName
11409
- }) {
11513
+ handler(_ref4) {
11514
+ let parser = _ref4.parser,
11515
+ funcName = _ref4.funcName;
11410
11516
  return {
11411
11517
  type: "op",
11412
11518
  mode: parser.mode,
11413
11519
  limits: true,
11520
+ parentIsSupSub: false,
11414
11521
  symbol: false,
11415
11522
  name: funcName
11416
11523
  };
@@ -11427,10 +11534,9 @@ defineFunction({
11427
11534
  numArgs: 0
11428
11535
  },
11429
11536
 
11430
- handler({
11431
- parser,
11432
- funcName
11433
- }) {
11537
+ handler(_ref5) {
11538
+ let parser = _ref5.parser,
11539
+ funcName = _ref5.funcName;
11434
11540
  let fName = funcName;
11435
11541
 
11436
11542
  if (fName.length === 1) {
@@ -11441,6 +11547,7 @@ defineFunction({
11441
11547
  type: "op",
11442
11548
  mode: parser.mode,
11443
11549
  limits: false,
11550
+ parentIsSupSub: false,
11444
11551
  symbol: true,
11445
11552
  name: fName
11446
11553
  };
@@ -11458,9 +11565,8 @@ defineFunction({
11458
11565
  props: {
11459
11566
  numArgs: 1
11460
11567
  },
11461
- handler: ({
11462
- parser
11463
- }, args) => {
11568
+ handler: (_ref, args) => {
11569
+ let parser = _ref.parser;
11464
11570
  const body = args[0];
11465
11571
  return {
11466
11572
  type: "operatorname",
@@ -11544,9 +11650,8 @@ defineFunction({
11544
11650
 
11545
11651
  if (isAllString) {
11546
11652
  // Write a single TextNode instead of multiple nested tags.
11547
- const word = expression.map(node => node.toText()).join(""); // word has already been escaped by `node.toText()`
11548
-
11549
- expression = [new mathMLTree.TextNode(word, false)];
11653
+ const word = expression.map(node => node.toText()).join("");
11654
+ expression = [new mathMLTree.TextNode(word)];
11550
11655
  }
11551
11656
 
11552
11657
  const identifier = new mathMLTree.MathNode("mi", expression);
@@ -11562,6 +11667,10 @@ defineFunctionBuilders({
11562
11667
  type: "ordgroup",
11563
11668
 
11564
11669
  htmlBuilder(group, options) {
11670
+ if (group.semisimple) {
11671
+ return buildCommon.makeFragment(buildExpression(group.body, options, false));
11672
+ }
11673
+
11565
11674
  return buildCommon.makeSpan(["mord"], buildExpression(group.body, options, true), options);
11566
11675
  },
11567
11676
 
@@ -11578,9 +11687,8 @@ defineFunction({
11578
11687
  numArgs: 1
11579
11688
  },
11580
11689
 
11581
- handler({
11582
- parser
11583
- }, args) {
11690
+ handler(_ref, args) {
11691
+ let parser = _ref.parser;
11584
11692
  const body = args[0];
11585
11693
  return {
11586
11694
  type: "overline",
@@ -11632,9 +11740,8 @@ defineFunction({
11632
11740
  numArgs: 1,
11633
11741
  allowedInText: true
11634
11742
  },
11635
- handler: ({
11636
- parser
11637
- }, args) => {
11743
+ handler: (_ref, args) => {
11744
+ let parser = _ref.parser;
11638
11745
  const body = args[0];
11639
11746
  return {
11640
11747
  type: "phantom",
@@ -11660,9 +11767,8 @@ defineFunction({
11660
11767
  numArgs: 1,
11661
11768
  allowedInText: true
11662
11769
  },
11663
- handler: ({
11664
- parser
11665
- }, args) => {
11770
+ handler: (_ref2, args) => {
11771
+ let parser = _ref2.parser;
11666
11772
  const body = args[0];
11667
11773
  return {
11668
11774
  type: "hphantom",
@@ -11689,13 +11795,16 @@ defineFunction({
11689
11795
  type: "elem",
11690
11796
  elem: node
11691
11797
  }]
11692
- }, options);
11693
- return node;
11798
+ }, options); // For spacing, TeX treats \smash as a math group (same spacing as ord).
11799
+
11800
+ return buildCommon.makeSpan(["mord"], [node], options);
11694
11801
  },
11695
11802
  mathmlBuilder: (group, options) => {
11696
11803
  const inner = buildExpression$1(ordargument(group.body), options);
11697
- const node = new mathMLTree.MathNode("mphantom", inner);
11804
+ const phantom = new mathMLTree.MathNode("mphantom", inner);
11805
+ const node = new mathMLTree.MathNode("mpadded", [phantom]);
11698
11806
  node.setAttribute("height", "0px");
11807
+ node.setAttribute("depth", "0px");
11699
11808
  return node;
11700
11809
  }
11701
11810
  });
@@ -11706,9 +11815,8 @@ defineFunction({
11706
11815
  numArgs: 1,
11707
11816
  allowedInText: true
11708
11817
  },
11709
- handler: ({
11710
- parser
11711
- }, args) => {
11818
+ handler: (_ref3, args) => {
11819
+ let parser = _ref3.parser;
11712
11820
  const body = args[0];
11713
11821
  return {
11714
11822
  type: "vphantom",
@@ -11723,7 +11831,8 @@ defineFunction({
11723
11831
  },
11724
11832
  mathmlBuilder: (group, options) => {
11725
11833
  const inner = buildExpression$1(ordargument(group.body), options);
11726
- const node = new mathMLTree.MathNode("mphantom", inner);
11834
+ const phantom = new mathMLTree.MathNode("mphantom", inner);
11835
+ const node = new mathMLTree.MathNode("mpadded", [phantom]);
11727
11836
  node.setAttribute("width", "0px");
11728
11837
  return node;
11729
11838
  }
@@ -11767,12 +11876,10 @@ defineFunction({
11767
11876
  numArgs: 0,
11768
11877
  allowedInText: true
11769
11878
  },
11770
- handler: ({
11771
- breakOnTokenText,
11772
- funcName,
11773
- parser
11774
- }, args) => {
11775
- parser.consumeSpaces();
11879
+ handler: (_ref, args) => {
11880
+ let breakOnTokenText = _ref.breakOnTokenText,
11881
+ funcName = _ref.funcName,
11882
+ parser = _ref.parser;
11776
11883
  const body = parser.parseExpression(false, breakOnTokenText);
11777
11884
  return {
11778
11885
  type: "sizing",
@@ -11806,9 +11913,8 @@ defineFunction({
11806
11913
  allowedInText: true
11807
11914
  },
11808
11915
 
11809
- handler({
11810
- parser
11811
- }, args) {
11916
+ handler(_ref, args) {
11917
+ let parser = _ref.parser;
11812
11918
  const amount = assertNodeType(args[0], "size").value;
11813
11919
  const body = args[1];
11814
11920
  return {
@@ -11864,9 +11970,8 @@ defineFunction({
11864
11970
  argTypes: ["size", "size", "size"]
11865
11971
  },
11866
11972
 
11867
- handler({
11868
- parser
11869
- }, args, optArgs) {
11973
+ handler(_ref, args, optArgs) {
11974
+ let parser = _ref.parser;
11870
11975
  const shift = optArgs[0];
11871
11976
  const width = assertNodeType(args[0], "size");
11872
11977
  const height = assertNodeType(args[1], "size");
@@ -11883,14 +11988,9 @@ defineFunction({
11883
11988
  // Make an empty span for the rule
11884
11989
  const rule = buildCommon.makeSpan(["mord", "rule"], [], options); // Calculate the shift, width, and height of the rule, and account for units
11885
11990
 
11886
- let shift = 0;
11887
-
11888
- if (group.shift) {
11889
- shift = calculateSize(group.shift, options);
11890
- }
11891
-
11892
11991
  const width = calculateSize(group.width, options);
11893
- const height = calculateSize(group.height, options); // Style the rule to the right size
11992
+ const height = calculateSize(group.height, options);
11993
+ const shift = group.shift ? calculateSize(group.shift, options) : 0; // Style the rule to the right size
11894
11994
 
11895
11995
  rule.style.borderRightWidth = width + "em";
11896
11996
  rule.style.borderTopWidth = height + "em";
@@ -11907,10 +12007,25 @@ defineFunction({
11907
12007
  },
11908
12008
 
11909
12009
  mathmlBuilder(group, options) {
11910
- // TODO(emily): Figure out if there's an actual way to draw black boxes
11911
- // in MathML.
11912
- const node = new mathMLTree.MathNode("mrow");
11913
- return node;
12010
+ const width = calculateSize(group.width, options);
12011
+ const height = calculateSize(group.height, options);
12012
+ const shift = group.shift ? calculateSize(group.shift, options) : 0;
12013
+ const color = options.color && options.getColor() || "black";
12014
+ const rule = new mathMLTree.MathNode("mspace");
12015
+ rule.setAttribute("mathbackground", color);
12016
+ rule.setAttribute("width", width + "em");
12017
+ rule.setAttribute("height", height + "em");
12018
+ const wrapper = new mathMLTree.MathNode("mpadded", [rule]);
12019
+
12020
+ if (shift >= 0) {
12021
+ wrapper.setAttribute("height", "+" + shift + "em");
12022
+ } else {
12023
+ wrapper.setAttribute("height", shift + "em");
12024
+ wrapper.setAttribute("depth", "+" + -shift + "em");
12025
+ }
12026
+
12027
+ wrapper.setAttribute("voffset", shift + "em");
12028
+ return wrapper;
11914
12029
  }
11915
12030
 
11916
12031
  });
@@ -11924,9 +12039,8 @@ defineFunction({
11924
12039
  numOptionalArgs: 1,
11925
12040
  allowedInText: true
11926
12041
  },
11927
- handler: ({
11928
- parser
11929
- }, args, optArgs) => {
12042
+ handler: (_ref, args, optArgs) => {
12043
+ let parser = _ref.parser;
11930
12044
  let smashHeight = false;
11931
12045
  let smashDepth = false;
11932
12046
  const tbArg = optArgs[0] && assertNodeType(optArgs[0], "ordgroup");
@@ -11967,7 +12081,7 @@ defineFunction({
11967
12081
  };
11968
12082
  },
11969
12083
  htmlBuilder: (group, options) => {
11970
- const node = buildCommon.makeSpan(["mord"], [buildGroup(group.body, options)]);
12084
+ const node = buildCommon.makeSpan([], [buildGroup(group.body, options)]);
11971
12085
 
11972
12086
  if (!group.smashHeight && !group.smashDepth) {
11973
12087
  return node;
@@ -11997,13 +12111,15 @@ defineFunction({
11997
12111
  // from acting on that line height. So we'll call makeVList now.
11998
12112
 
11999
12113
 
12000
- return buildCommon.makeVList({
12114
+ const smashedNode = buildCommon.makeVList({
12001
12115
  positionType: "firstBaseline",
12002
12116
  children: [{
12003
12117
  type: "elem",
12004
12118
  elem: node
12005
12119
  }]
12006
- }, options);
12120
+ }, options); // For spacing, TeX treats \hphantom as a math group (same spacing as ord).
12121
+
12122
+ return buildCommon.makeSpan(["mord"], [smashedNode], options);
12007
12123
  },
12008
12124
  mathmlBuilder: (group, options) => {
12009
12125
  const node = new mathMLTree.MathNode("mpadded", [buildGroup$1(group.body, options)]);
@@ -12028,9 +12144,8 @@ defineFunction({
12028
12144
  numOptionalArgs: 1
12029
12145
  },
12030
12146
 
12031
- handler({
12032
- parser
12033
- }, args, optArgs) {
12147
+ handler(_ref, args, optArgs) {
12148
+ let parser = _ref.parser;
12034
12149
  const index = optArgs[0];
12035
12150
  const body = args[0];
12036
12151
  return {
@@ -12149,13 +12264,11 @@ defineFunction({
12149
12264
  allowedInText: true
12150
12265
  },
12151
12266
 
12152
- handler({
12153
- breakOnTokenText,
12154
- funcName,
12155
- parser
12156
- }, args) {
12267
+ handler(_ref, args) {
12268
+ let breakOnTokenText = _ref.breakOnTokenText,
12269
+ funcName = _ref.funcName,
12270
+ parser = _ref.parser;
12157
12271
  // parse out the implicit body
12158
- parser.consumeSpaces();
12159
12272
  const body = parser.parseExpression(true, breakOnTokenText); // TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.
12160
12273
  // here and in buildHTML and de-dupe the enumeration of all the styles).
12161
12274
  // $FlowFixMe: The names above exactly match the styles.
@@ -12394,6 +12507,10 @@ defineFunctionBuilders({
12394
12507
  }
12395
12508
  }
12396
12509
 
12510
+ if (group.base && group.base.type === "op") {
12511
+ group.base.parentIsSupSub = true;
12512
+ }
12513
+
12397
12514
  const children = [buildGroup$1(group.base, options)];
12398
12515
 
12399
12516
  if (group.sub) {
@@ -12411,7 +12528,7 @@ defineFunctionBuilders({
12411
12528
  } else if (!group.sub) {
12412
12529
  const base = group.base;
12413
12530
 
12414
- if (base && base.type === "op" && base.limits && options.style === Style$1.DISPLAY) {
12531
+ if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) {
12415
12532
  nodeType = "mover";
12416
12533
  } else {
12417
12534
  nodeType = "msup";
@@ -12419,7 +12536,7 @@ defineFunctionBuilders({
12419
12536
  } else if (!group.sup) {
12420
12537
  const base = group.base;
12421
12538
 
12422
- if (base && base.type === "op" && base.limits && options.style === Style$1.DISPLAY) {
12539
+ if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) {
12423
12540
  nodeType = "munder";
12424
12541
  } else {
12425
12542
  nodeType = "msub";
@@ -12458,6 +12575,10 @@ defineFunctionBuilders({
12458
12575
  }
12459
12576
  } else if (group.family === "punct") {
12460
12577
  node.setAttribute("separator", "true");
12578
+ } else if (group.family === "open" || group.family === "close") {
12579
+ // Delims built here should not stretch vertically.
12580
+ // See delimsizing.js for stretchy delims.
12581
+ node.setAttribute("stretchy", "false");
12461
12582
  }
12462
12583
 
12463
12584
  return node;
@@ -12586,13 +12707,25 @@ defineFunctionBuilders({
12586
12707
 
12587
12708
  });
12588
12709
 
12710
+ const pad = () => {
12711
+ const padNode = new mathMLTree.MathNode("mtd", []);
12712
+ padNode.setAttribute("width", "50%");
12713
+ return padNode;
12714
+ };
12715
+
12589
12716
  defineFunctionBuilders({
12590
12717
  type: "tag",
12591
12718
 
12592
12719
  mathmlBuilder(group, options) {
12593
- const table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mlabeledtr", [new mathMLTree.MathNode("mtd", [buildExpressionRow(group.tag, options)]), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.body, options)])])]);
12594
- table.setAttribute("side", "right");
12595
- return table;
12720
+ const table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.body, options)]), pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.tag, options)])])]);
12721
+ table.setAttribute("width", "100%");
12722
+ return table; // TODO: Left-aligned tags.
12723
+ // Currently, the group and options passed here do not contain
12724
+ // enough info to set tag alignment. `leqno` is in Settings but it is
12725
+ // not passed to Options. On the HTML side, leqno is
12726
+ // set by a CSS class applied in buildTree.js. That would have worked
12727
+ // in MathML if browsers supported <mlabeledtr>. Since they don't, we
12728
+ // need to rewrite the way this function is called.
12596
12729
  }
12597
12730
 
12598
12731
  });
@@ -12605,10 +12738,12 @@ const textFontFamilies = {
12605
12738
  "\\textnormal": "textrm"
12606
12739
  };
12607
12740
  const textFontWeights = {
12608
- "\\textbf": "textbf"
12741
+ "\\textbf": "textbf",
12742
+ "\\textmd": "textmd"
12609
12743
  };
12610
12744
  const textFontShapes = {
12611
- "\\textit": "textit"
12745
+ "\\textit": "textit",
12746
+ "\\textup": "textup"
12612
12747
  };
12613
12748
 
12614
12749
  const optionsWithFont = (group, options) => {
@@ -12629,8 +12764,8 @@ defineFunction({
12629
12764
  type: "text",
12630
12765
  names: [// Font families
12631
12766
  "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", // Font weights
12632
- "\\textbf", // Font Shapes
12633
- "\\textit"],
12767
+ "\\textbf", "\\textmd", // Font Shapes
12768
+ "\\textit", "\\textup"],
12634
12769
  props: {
12635
12770
  numArgs: 1,
12636
12771
  argTypes: ["text"],
@@ -12639,10 +12774,9 @@ defineFunction({
12639
12774
  consumeMode: "text"
12640
12775
  },
12641
12776
 
12642
- handler({
12643
- parser,
12644
- funcName
12645
- }, args) {
12777
+ handler(_ref, args) {
12778
+ let parser = _ref.parser,
12779
+ funcName = _ref.funcName;
12646
12780
  const body = args[0];
12647
12781
  return {
12648
12782
  type: "text",
@@ -12673,9 +12807,8 @@ defineFunction({
12673
12807
  allowedInText: true
12674
12808
  },
12675
12809
 
12676
- handler({
12677
- parser
12678
- }, args) {
12810
+ handler(_ref, args) {
12811
+ let parser = _ref.parser;
12679
12812
  return {
12680
12813
  type: "underline",
12681
12814
  mode: parser.mode,
@@ -12819,15 +12952,28 @@ const tokenRegexString = `(${spaceRegexString}+)|` + // whitespace
12819
12952
  "|\\\\verb([^*a-zA-Z]).*?\\4" + // \verb unstarred
12820
12953
  `|${controlWordWhitespaceRegexString}` + // \macroName + spaces
12821
12954
  `|${controlSymbolRegexString})`; // \\, \', etc.
12955
+
12822
12956
  /** Main Lexer class */
12823
12957
 
12824
12958
  class Lexer {
12825
- constructor(input) {
12959
+ // category codes, only supports comment characters (14) for now
12960
+ constructor(input, settings) {
12826
12961
  this.input = void 0;
12962
+ this.settings = void 0;
12827
12963
  this.tokenRegex = void 0;
12964
+ this.catcodes = void 0;
12828
12965
  // Separate accents from characters
12829
12966
  this.input = input;
12967
+ this.settings = settings;
12830
12968
  this.tokenRegex = new RegExp(tokenRegexString, 'g');
12969
+ this.catcodes = {
12970
+ "%": 14 // comment character
12971
+
12972
+ };
12973
+ }
12974
+
12975
+ setCatcode(char, code) {
12976
+ this.catcodes[char] = code;
12831
12977
  }
12832
12978
  /**
12833
12979
  * This function lexes a single token.
@@ -12848,7 +12994,23 @@ class Lexer {
12848
12994
  throw new ParseError(`Unexpected character: '${input[pos]}'`, new Token(input[pos], new SourceLocation(this, pos, pos + 1)));
12849
12995
  }
12850
12996
 
12851
- let text = match[2] || " "; // Trim any trailing whitespace from control word match
12997
+ let text = match[2] || " ";
12998
+
12999
+ if (this.catcodes[text] === 14) {
13000
+ // comment character
13001
+ const nlIndex = input.indexOf('\n', this.tokenRegex.lastIndex);
13002
+
13003
+ if (nlIndex === -1) {
13004
+ this.tokenRegex.lastIndex = input.length; // EOF
13005
+
13006
+ this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would " + "fail because of commenting the end of math mode (e.g. $)");
13007
+ } else {
13008
+ this.tokenRegex.lastIndex = nlIndex + 1;
13009
+ }
13010
+
13011
+ return this.lex();
13012
+ } // Trim any trailing whitespace from control word match
13013
+
12852
13014
 
12853
13015
  const controlMatch = text.match(controlWordWhitespaceRegex);
12854
13016
 
@@ -12875,7 +13037,15 @@ class Namespace {
12875
13037
  * of initial (global-level) mappings, which will constantly change
12876
13038
  * according to any global/top-level `set`s done.
12877
13039
  */
12878
- constructor(builtins = {}, globalMacros = {}) {
13040
+ constructor(builtins, globalMacros) {
13041
+ if (builtins === void 0) {
13042
+ builtins = {};
13043
+ }
13044
+
13045
+ if (globalMacros === void 0) {
13046
+ globalMacros = {};
13047
+ }
13048
+
12879
13049
  this.current = void 0;
12880
13050
  this.builtins = void 0;
12881
13051
  this.undefStack = void 0;
@@ -12947,7 +13117,11 @@ class Namespace {
12947
13117
  */
12948
13118
 
12949
13119
 
12950
- set(name, value, global = false) {
13120
+ set(name, value, global) {
13121
+ if (global === void 0) {
13122
+ global = false;
13123
+ }
13124
+
12951
13125
  if (global) {
12952
13126
  // Global set is equivalent to setting in all groups. Simulate this
12953
13127
  // by destroying any undos currently scheduled for this name,
@@ -13245,9 +13419,7 @@ defineMacro("\\providecommand", context => newcommand(context, true, true)); ///
13245
13419
  // \let\bgroup={ \let\egroup=}
13246
13420
 
13247
13421
  defineMacro("\\bgroup", "{");
13248
- defineMacro("\\egroup", "}");
13249
- defineMacro("\\begingroup", "{");
13250
- defineMacro("\\endgroup", "}"); // Symbols from latex.ltx:
13422
+ defineMacro("\\egroup", "}"); // Symbols from latex.ltx:
13251
13423
  // \def\lq{`}
13252
13424
  // \def\rq{'}
13253
13425
  // \def \aa {\r a}
@@ -13265,17 +13437,7 @@ defineMacro("\\AA", "\\r A"); // Copyright (C) and registered (R) symbols. Use r
13265
13437
 
13266
13438
  defineMacro("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}");
13267
13439
  defineMacro("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");
13268
- defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); // Unicode double-struck letters
13269
-
13270
- defineMacro("\u2102", "\\mathbb{C}");
13271
- defineMacro("\u210D", "\\mathbb{H}");
13272
- defineMacro("\u2115", "\\mathbb{N}");
13273
- defineMacro("\u2119", "\\mathbb{P}");
13274
- defineMacro("\u211A", "\\mathbb{Q}");
13275
- defineMacro("\u211D", "\\mathbb{R}");
13276
- defineMacro("\u2124", "\\mathbb{Z}");
13277
- defineMacro("\u210E", "\\mathit{h}"); // Planck constant
13278
- // Characters omitted from Unicode range 1D400–1D7FF
13440
+ defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); // Characters omitted from Unicode range 1D400–1D7FF
13279
13441
 
13280
13442
  defineMacro("\u212C", "\\mathscr{B}"); // script
13281
13443
 
@@ -13289,7 +13451,9 @@ defineMacro("\u211B", "\\mathscr{R}");
13289
13451
  defineMacro("\u212D", "\\mathfrak{C}"); // Fraktur
13290
13452
 
13291
13453
  defineMacro("\u210C", "\\mathfrak{H}");
13292
- defineMacro("\u2128", "\\mathfrak{Z}"); // Unicode middle dot
13454
+ defineMacro("\u2128", "\\mathfrak{Z}"); // Define \Bbbk with a macro that works in both HTML and MathML.
13455
+
13456
+ defineMacro("\\Bbbk", "\\Bbb{k}"); // Unicode middle dot
13293
13457
  // The KaTeX fonts do not contain U+00B7. Instead, \cdotp displays
13294
13458
  // the dot at U+22C5 and gives it punct spacing.
13295
13459
 
@@ -13301,8 +13465,9 @@ defineMacro("\\clap", "\\mathclap{\\textrm{#1}}"); // \not is defined by base/fo
13301
13465
  // \DeclareMathSymbol{\not}{\mathrel}{symbols}{"36}
13302
13466
  // It's thus treated like a \mathrel, but defined by a symbol that has zero
13303
13467
  // width but extends to the right. We use \rlap to get that spacing.
13468
+ // For MathML we write U+0338 here. buildMathML.js will then do the overlay.
13304
13469
 
13305
- defineMacro("\\not", '\\mathrel{\\mathrlap\\@not}'); // Negated symbols from base/fontmath.ltx:
13470
+ defineMacro("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'); // Negated symbols from base/fontmath.ltx:
13306
13471
  // \def\neq{\not=} \let\ne=\neq
13307
13472
  // \DeclareRobustCommand
13308
13473
  // \notin{\mathrel{\m@th\mathpalette\c@ncel\in}}
@@ -13618,31 +13783,37 @@ defineMacro("\\ordinarycolon", ":"); //\def\vcentcolon{\mathrel{\mathop\ordinary
13618
13783
 
13619
13784
  defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); // \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon}
13620
13785
 
13621
- defineMacro("\\dblcolon", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}"); // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=}
13786
+ defineMacro("\\dblcolon", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}" + "{\\mathop{\\char\"2237}}"); // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=}
13787
+
13788
+ defineMacro("\\coloneqq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2254}}"); // ≔
13789
+ // \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=}
13622
13790
 
13623
- defineMacro("\\coloneqq", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}"); // \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=}
13791
+ defineMacro("\\Coloneqq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2237\\char\"3d}}"); // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
13624
13792
 
13625
- defineMacro("\\Coloneqq", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}"); // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
13793
+ defineMacro("\\coloneq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"3a\\char\"2212}}"); // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
13626
13794
 
13627
- defineMacro("\\coloneq", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}"); // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
13795
+ defineMacro("\\Coloneq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"2237\\char\"2212}}"); // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon}
13628
13796
 
13629
- defineMacro("\\Coloneq", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}"); // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon}
13797
+ defineMacro("\\eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2255}}"); // ≕
13798
+ // \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon}
13630
13799
 
13631
- defineMacro("\\eqqcolon", "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); // \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon}
13800
+ defineMacro("\\Eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"3d\\char\"2237}}"); // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon}
13632
13801
 
13633
- defineMacro("\\Eqqcolon", "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}"); // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon}
13802
+ defineMacro("\\eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2239}}"); // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon}
13634
13803
 
13635
- defineMacro("\\eqcolon", "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon}
13804
+ defineMacro("\\Eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"2212\\char\"2237}}"); // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx}
13636
13805
 
13637
- defineMacro("\\Eqcolon", "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}"); // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx}
13806
+ defineMacro("\\colonapprox", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"3a\\char\"2248}}"); // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx}
13638
13807
 
13639
- defineMacro("\\colonapprox", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}"); // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx}
13808
+ defineMacro("\\Colonapprox", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"2237\\char\"2248}}"); // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim}
13640
13809
 
13641
- defineMacro("\\Colonapprox", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}"); // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim}
13810
+ defineMacro("\\colonsim", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"3a\\char\"223c}}"); // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim}
13642
13811
 
13643
- defineMacro("\\colonsim", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}"); // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim}
13812
+ defineMacro("\\Colonsim", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"2237\\char\"223c}}"); // Some Unicode characters are implemented with macros to mathtools functions.
13644
13813
 
13645
- defineMacro("\\Colonsim", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}"); // Some Unicode characters are implemented with macros to mathtools functions.
13814
+ defineMacro("\u2237", "\\dblcolon"); // ::
13815
+
13816
+ defineMacro("\u2239", "\\eqcolon"); // -:
13646
13817
 
13647
13818
  defineMacro("\u2254", "\\coloneqq"); // :=
13648
13819
 
@@ -13676,13 +13847,37 @@ defineMacro("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\d
13676
13847
  defineMacro("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");
13677
13848
  defineMacro("\\limsup", "\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits");
13678
13849
  defineMacro("\\liminf", "\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"); //////////////////////////////////////////////////////////////////////
13679
- // semantic
13680
- // The semantic package renders the next two items by calling a glyph from the
13681
- // bbold package. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
13682
-
13683
- defineMacro("\u27e6", "\\mathopen{[\\mkern-3.2mu[}"); // blackboard bold [
13684
-
13685
- defineMacro("\u27e7", "\\mathclose{]\\mkern-3.2mu]}"); // blackboard bold ]
13850
+ // MathML alternates for KaTeX glyphs in the Unicode private area
13851
+
13852
+ defineMacro("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}");
13853
+ defineMacro("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}");
13854
+ defineMacro("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}");
13855
+ defineMacro("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}");
13856
+ defineMacro("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}");
13857
+ defineMacro("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}");
13858
+ defineMacro("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}");
13859
+ defineMacro("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}");
13860
+ defineMacro("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}");
13861
+ defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}");
13862
+ defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}");
13863
+ defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}");
13864
+ defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}");
13865
+ defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"); //////////////////////////////////////////////////////////////////////
13866
+ // stmaryrd and semantic
13867
+ // The stmaryrd and semantic packages render the next four items by calling a
13868
+ // glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
13869
+
13870
+ defineMacro("\\llbracket", "\\html@mathml{" + "\\mathopen{[\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u27e6}}");
13871
+ defineMacro("\\rrbracket", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu]}}" + "{\\mathclose{\\char`\u27e7}}");
13872
+ defineMacro("\u27e6", "\\llbracket"); // blackboard bold [
13873
+
13874
+ defineMacro("\u27e7", "\\rrbracket"); // blackboard bold ]
13875
+
13876
+ defineMacro("\\lBrace", "\\html@mathml{" + "\\mathopen{\\{\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u2983}}");
13877
+ defineMacro("\\rBrace", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu\\}}}" + "{\\mathclose{\\char`\u2984}}");
13878
+ defineMacro("\u2983", "\\lBrace"); // blackboard bold {
13879
+
13880
+ defineMacro("\u2984", "\\rBrace"); // blackboard bold }
13686
13881
  // TODO: Create variable sized versions of the last two items. I believe that
13687
13882
  // will require new font glyphs.
13688
13883
  //////////////////////////////////////////////////////////////////////
@@ -13744,7 +13939,7 @@ defineMacro("\\Rarr", "\\Rightarrow");
13744
13939
  defineMacro("\\real", "\\Re");
13745
13940
  defineMacro("\\reals", "\\mathbb{R}");
13746
13941
  defineMacro("\\Reals", "\\mathbb{R}");
13747
- defineMacro("\\Rho", "\\mathrm{R}");
13942
+ defineMacro("\\Rho", "\\mathrm{P}");
13748
13943
  defineMacro("\\sdot", "\\cdot");
13749
13944
  defineMacro("\\sect", "\\S");
13750
13945
  defineMacro("\\spades", "\\spadesuit");
@@ -13755,7 +13950,69 @@ defineMacro("\\Tau", "\\mathrm{T}");
13755
13950
  defineMacro("\\thetasym", "\\vartheta"); // TODO: defineMacro("\\varcoppa", "\\\mbox{\\coppa}");
13756
13951
 
13757
13952
  defineMacro("\\weierp", "\\wp");
13758
- defineMacro("\\Zeta", "\\mathrm{Z}");
13953
+ defineMacro("\\Zeta", "\\mathrm{Z}"); //////////////////////////////////////////////////////////////////////
13954
+ // statmath.sty
13955
+ // https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf
13956
+
13957
+ defineMacro("\\argmin", "\\DOTSB\\mathop{\\operatorname{arg\\,min}}\\limits");
13958
+ defineMacro("\\argmax", "\\DOTSB\\mathop{\\operatorname{arg\\,max}}\\limits"); // Custom Khan Academy colors, should be moved to an optional package
13959
+
13960
+ defineMacro("\\blue", "\\textcolor{##6495ed}{#1}");
13961
+ defineMacro("\\orange", "\\textcolor{##ffa500}{#1}");
13962
+ defineMacro("\\pink", "\\textcolor{##ff00af}{#1}");
13963
+ defineMacro("\\red", "\\textcolor{##df0030}{#1}");
13964
+ defineMacro("\\green", "\\textcolor{##28ae7b}{#1}");
13965
+ defineMacro("\\gray", "\\textcolor{gray}{##1}");
13966
+ defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}");
13967
+ defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}");
13968
+ defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}");
13969
+ defineMacro("\\blueC", "\\textcolor{##63d9ea}{#1}");
13970
+ defineMacro("\\blueD", "\\textcolor{##11accd}{#1}");
13971
+ defineMacro("\\blueE", "\\textcolor{##0c7f99}{#1}");
13972
+ defineMacro("\\tealA", "\\textcolor{##94fff5}{#1}");
13973
+ defineMacro("\\tealB", "\\textcolor{##26edd5}{#1}");
13974
+ defineMacro("\\tealC", "\\textcolor{##01d1c1}{#1}");
13975
+ defineMacro("\\tealD", "\\textcolor{##01a995}{#1}");
13976
+ defineMacro("\\tealE", "\\textcolor{##208170}{#1}");
13977
+ defineMacro("\\greenA", "\\textcolor{##b6ffb0}{#1}");
13978
+ defineMacro("\\greenB", "\\textcolor{##8af281}{#1}");
13979
+ defineMacro("\\greenC", "\\textcolor{##74cf70}{#1}");
13980
+ defineMacro("\\greenD", "\\textcolor{##1fab54}{#1}");
13981
+ defineMacro("\\greenE", "\\textcolor{##0d923f}{#1}");
13982
+ defineMacro("\\goldA", "\\textcolor{##ffd0a9}{#1}");
13983
+ defineMacro("\\goldB", "\\textcolor{##ffbb71}{#1}");
13984
+ defineMacro("\\goldC", "\\textcolor{##ff9c39}{#1}");
13985
+ defineMacro("\\goldD", "\\textcolor{##e07d10}{#1}");
13986
+ defineMacro("\\goldE", "\\textcolor{##a75a05}{#1}");
13987
+ defineMacro("\\redA", "\\textcolor{##fca9a9}{#1}");
13988
+ defineMacro("\\redB", "\\textcolor{##ff8482}{#1}");
13989
+ defineMacro("\\redC", "\\textcolor{##f9685d}{#1}");
13990
+ defineMacro("\\redD", "\\textcolor{##e84d39}{#1}");
13991
+ defineMacro("\\redE", "\\textcolor{##bc2612}{#1}");
13992
+ defineMacro("\\maroonA", "\\textcolor{##ffbde0}{#1}");
13993
+ defineMacro("\\maroonB", "\\textcolor{##ff92c6}{#1}");
13994
+ defineMacro("\\maroonC", "\\textcolor{##ed5fa6}{#1}");
13995
+ defineMacro("\\maroonD", "\\textcolor{##ca337c}{#1}");
13996
+ defineMacro("\\maroonE", "\\textcolor{##9e034e}{#1}");
13997
+ defineMacro("\\purpleA", "\\textcolor{##ddd7ff}{#1}");
13998
+ defineMacro("\\purpleB", "\\textcolor{##c6b9fc}{#1}");
13999
+ defineMacro("\\purpleC", "\\textcolor{##aa87ff}{#1}");
14000
+ defineMacro("\\purpleD", "\\textcolor{##7854ab}{#1}");
14001
+ defineMacro("\\purpleE", "\\textcolor{##543b78}{#1}");
14002
+ defineMacro("\\mintA", "\\textcolor{##f5f9e8}{#1}");
14003
+ defineMacro("\\mintB", "\\textcolor{##edf2df}{#1}");
14004
+ defineMacro("\\mintC", "\\textcolor{##e0e5cc}{#1}");
14005
+ defineMacro("\\grayA", "\\textcolor{##f6f7f7}{#1}");
14006
+ defineMacro("\\grayB", "\\textcolor{##f0f1f2}{#1}");
14007
+ defineMacro("\\grayC", "\\textcolor{##e3e5e6}{#1}");
14008
+ defineMacro("\\grayD", "\\textcolor{##d6d8da}{#1}");
14009
+ defineMacro("\\grayE", "\\textcolor{##babec2}{#1}");
14010
+ defineMacro("\\grayF", "\\textcolor{##888d93}{#1}");
14011
+ defineMacro("\\grayG", "\\textcolor{##626569}{#1}");
14012
+ defineMacro("\\grayH", "\\textcolor{##3b3e40}{#1}");
14013
+ defineMacro("\\grayI", "\\textcolor{##21242c}{#1}");
14014
+ defineMacro("\\kaBlue", "\\textcolor{##314453}{#1}");
14015
+ defineMacro("\\kaGreen", "\\textcolor{##71B307}{#1}");
13759
14016
 
13760
14017
  /**
13761
14018
  * This file contains the “gullet” where macros are expanded
@@ -13798,7 +14055,7 @@ class MacroExpander {
13798
14055
 
13799
14056
 
13800
14057
  feed(input) {
13801
- this.lexer = new Lexer(input);
14058
+ this.lexer = new Lexer(input, this.settings);
13802
14059
  }
13803
14060
  /**
13804
14061
  * Switches between "text" and "math" modes.
@@ -14103,7 +14360,7 @@ class MacroExpander {
14103
14360
  }
14104
14361
  }
14105
14362
 
14106
- const bodyLexer = new Lexer(expansion);
14363
+ const bodyLexer = new Lexer(expansion, this.settings);
14107
14364
  const tokens = [];
14108
14365
  let tok = bodyLexer.lex();
14109
14366
 
@@ -14879,7 +15136,11 @@ class Parser {
14879
15136
  */
14880
15137
 
14881
15138
 
14882
- expect(text, consume = true) {
15139
+ expect(text, consume) {
15140
+ if (consume === void 0) {
15141
+ consume = true;
15142
+ }
15143
+
14883
15144
  if (this.nextToken.text !== text) {
14884
15145
  throw new ParseError("Expected '" + text + "', got '" + this.nextToken.text + "'", this.nextToken);
14885
15146
  }
@@ -14932,17 +15193,6 @@ class Parser {
14932
15193
  return parse;
14933
15194
  }
14934
15195
 
14935
- /**
14936
- * Parses an "expression", which is a list of atoms.
14937
- *
14938
- * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
14939
- * happens when functions have higher precendence han infix
14940
- * nodes in implicit parses.
14941
- *
14942
- * `breakOnTokenText`: The text of the token that the expression should end
14943
- * with, or `null` if something else should end the
14944
- * expression.
14945
- */
14946
15196
  parseExpression(breakOnInfix, breakOnTokenText) {
14947
15197
  const body = []; // Keep adding atoms to the body until we can't parse any more atoms (either
14948
15198
  // we reached the end, a }, or a \right)
@@ -15182,8 +15432,6 @@ class Parser {
15182
15432
  mode: this.mode,
15183
15433
  body: primes
15184
15434
  };
15185
- } else if (lex.text === "%") {
15186
- this.consumeComment();
15187
15435
  } else {
15188
15436
  // If it wasn't ^, _, or ', stop parsing super/subscripts
15189
15437
  break;
@@ -15227,6 +15475,11 @@ class Parser {
15227
15475
  throw new ParseError("Can't use function '" + func + "' in text mode", token);
15228
15476
  } else if (this.mode === "math" && funcData.allowedInMath === false) {
15229
15477
  throw new ParseError("Can't use function '" + func + "' in math mode", token);
15478
+ } // hyperref package sets the catcode of % as an active character
15479
+
15480
+
15481
+ if (funcData.argTypes && funcData.argTypes[0] === "url") {
15482
+ this.gullet.lexer.setCatcode("%", 13);
15230
15483
  } // Consume the command token after possibly switching to the
15231
15484
  // mode specified by the function (for instant mode switching),
15232
15485
  // and then immediately switch back.
@@ -15348,6 +15601,25 @@ class Parser {
15348
15601
  case "text":
15349
15602
  return this.parseGroup(name, optional, greediness, undefined, type);
15350
15603
 
15604
+ case "raw":
15605
+ {
15606
+ if (optional && this.nextToken.text === "{") {
15607
+ return null;
15608
+ }
15609
+
15610
+ const token = this.parseStringGroup("raw", optional, true);
15611
+
15612
+ if (token) {
15613
+ return {
15614
+ type: "raw",
15615
+ mode: "text",
15616
+ string: token.text
15617
+ };
15618
+ } else {
15619
+ throw new ParseError("Expected raw group", this.nextToken);
15620
+ }
15621
+ }
15622
+
15351
15623
  case "original":
15352
15624
  case null:
15353
15625
  case undefined:
@@ -15363,28 +15635,6 @@ class Parser {
15363
15635
  this.consume();
15364
15636
  }
15365
15637
  }
15366
-
15367
- consumeComment() {
15368
- // the newline character is normalized in Lexer, check original source
15369
- while (this.nextToken.text !== "EOF" && this.nextToken.loc && this.nextToken.loc.getSource().indexOf("\n") === -1) {
15370
- this.consume();
15371
- }
15372
-
15373
- if (this.nextToken.text === "EOF") {
15374
- this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would " + "fail because of commenting the end of math mode (e.g. $)");
15375
- }
15376
-
15377
- if (this.mode === "math") {
15378
- this.consumeSpaces(); // ignore spaces in math mode
15379
- } else if (this.nextToken.loc) {
15380
- // text mode
15381
- const source = this.nextToken.loc.getSource();
15382
-
15383
- if (source.indexOf("\n") === source.length - 1) {
15384
- this.consumeSpaces(); // if no space after the first newline
15385
- }
15386
- }
15387
- }
15388
15638
  /**
15389
15639
  * Parses a group, essentially returning the string formed by the
15390
15640
  * brace-enclosed tokens plus some position information.
@@ -15402,6 +15652,8 @@ class Parser {
15402
15652
  return null;
15403
15653
  } else if (raw && nextToken.text !== "EOF" && /[^{}[\]]/.test(nextToken.text)) {
15404
15654
  // allow a single character in raw string group
15655
+ this.gullet.lexer.setCatcode("%", 14); // reset the catcode of %
15656
+
15405
15657
  this.consume();
15406
15658
  return nextToken;
15407
15659
  }
@@ -15421,15 +15673,6 @@ class Parser {
15421
15673
  case "EOF":
15422
15674
  throw new ParseError("Unexpected end of input in " + modeName, firstToken.range(lastToken, str));
15423
15675
 
15424
- case "%":
15425
- if (!raw) {
15426
- // allow % in raw string group
15427
- this.consumeComment();
15428
- continue;
15429
- }
15430
-
15431
- break;
15432
-
15433
15676
  case groupBegin:
15434
15677
  nested++;
15435
15678
  break;
@@ -15445,6 +15688,8 @@ class Parser {
15445
15688
  }
15446
15689
 
15447
15690
  this.mode = outerMode;
15691
+ this.gullet.lexer.setCatcode("%", 14); // reset the catcode of %
15692
+
15448
15693
  this.expect(groupEnd);
15449
15694
  return firstToken.range(lastToken, str);
15450
15695
  }
@@ -15462,12 +15707,7 @@ class Parser {
15462
15707
  let lastToken = firstToken;
15463
15708
  let str = "";
15464
15709
 
15465
- while (this.nextToken.text !== "EOF" && (regex.test(str + this.nextToken.text) || this.nextToken.text === "%")) {
15466
- if (this.nextToken.text === "%") {
15467
- this.consumeComment();
15468
- continue;
15469
- }
15470
-
15710
+ while (this.nextToken.text !== "EOF" && regex.test(str + this.nextToken.text)) {
15471
15711
  lastToken = this.nextToken;
15472
15712
  str += lastToken.text;
15473
15713
  this.consume();
@@ -15619,29 +15859,29 @@ class Parser {
15619
15859
  this.switchMode(mode);
15620
15860
  }
15621
15861
 
15622
- let result; // Try to parse an open brace
15862
+ let groupEnd;
15863
+ let result; // Try to parse an open brace or \begingroup
15864
+
15865
+ if (optional ? text === "[" : text === "{" || text === "\\begingroup") {
15866
+ groupEnd = Parser.endOfGroup[text]; // Start a new group namespace
15623
15867
 
15624
- if (text === (optional ? "[" : "{")) {
15625
- // Start a new group namespace
15626
15868
  this.gullet.beginGroup(); // If we get a brace, parse an expression
15627
15869
 
15628
15870
  this.consume();
15629
- const expression = this.parseExpression(false, optional ? "]" : "}");
15630
- const lastToken = this.nextToken; // Switch mode back before consuming symbol after close brace
15631
-
15632
- if (mode) {
15633
- this.switchMode(outerMode);
15634
- } // End group namespace before consuming symbol after close brace
15635
-
15871
+ const expression = this.parseExpression(false, groupEnd);
15872
+ const lastToken = this.nextToken; // End group namespace before consuming symbol after close brace
15636
15873
 
15637
- this.gullet.endGroup(); // Make sure we get a close brace
15638
-
15639
- this.expect(optional ? "]" : "}");
15640
- return {
15874
+ this.gullet.endGroup();
15875
+ result = {
15641
15876
  type: "ordgroup",
15642
15877
  mode: this.mode,
15643
15878
  loc: SourceLocation.range(firstToken, lastToken),
15644
- body: expression
15879
+ body: expression,
15880
+ // A group formed by \begingroup...\endgroup is a semi-simple group
15881
+ // which doesn't affect spacing in math mode, i.e., is transparent.
15882
+ // https://tex.stackexchange.com/questions/1930/when-should-one-
15883
+ // use-begingroup-instead-of-bgroup
15884
+ semisimple: text === "\\begingroup" || undefined
15645
15885
  };
15646
15886
  } else if (optional) {
15647
15887
  // Return nothing for an optional group
@@ -15663,6 +15903,11 @@ class Parser {
15663
15903
 
15664
15904
  if (mode) {
15665
15905
  this.switchMode(outerMode);
15906
+ } // Make sure we got a close brace
15907
+
15908
+
15909
+ if (groupEnd) {
15910
+ this.expect(groupEnd);
15666
15911
  }
15667
15912
 
15668
15913
  return result;
@@ -15750,9 +15995,6 @@ class Parser {
15750
15995
  body: arg,
15751
15996
  star
15752
15997
  };
15753
- } else if (text === "%") {
15754
- this.consumeComment();
15755
- return this.parseSymbol();
15756
15998
  } // At this point, we should have a symbol, possibly with accents.
15757
15999
  // First expand any accented base symbol according to unicodeSymbols.
15758
16000
 
@@ -15864,7 +16106,24 @@ class Parser {
15864
16106
  }
15865
16107
 
15866
16108
  }
15867
- Parser.endOfExpression = ["}", "\\end", "\\right", "&"];
16109
+ Parser.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"];
16110
+ Parser.endOfGroup = {
16111
+ "[": "]",
16112
+ "{": "}",
16113
+ "\\begingroup": "\\endgroup"
16114
+ /**
16115
+ * Parses an "expression", which is a list of atoms.
16116
+ *
16117
+ * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
16118
+ * happens when functions have higher precendence han infix
16119
+ * nodes in implicit parses.
16120
+ *
16121
+ * `breakOnTokenText`: The text of the token that the expression should end
16122
+ * with, or `null` if something else should end the
16123
+ * expression.
16124
+ */
16125
+
16126
+ };
15868
16127
  Parser.SUPSUB_GREEDINESS = 1;
15869
16128
 
15870
16129
  /**
@@ -15998,7 +16257,7 @@ var katex = {
15998
16257
  /**
15999
16258
  * Current KaTeX version
16000
16259
  */
16001
- version: "0.10.0",
16260
+ version: "0.10.2",
16002
16261
 
16003
16262
  /**
16004
16263
  * Renders the given LaTeX into an HTML+MathML combination, and adds