diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..1d99142 --- /dev/null +++ b/404.html @@ -0,0 +1,3 @@ + + Mercury +
Mercury
Modern blog theme
404
Page not found :(
\ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..6b1f48c --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +mercury.flxzt.net diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..2af78d0 --- /dev/null +++ b/about/index.html @@ -0,0 +1,3 @@ + + About +
Mercury
Modern blog theme
About

This site provides a demo for the Mercury theme for the Zola static site generator.

\ No newline at end of file diff --git a/atom.xml b/atom.xml new file mode 100644 index 0000000..5637d6b --- /dev/null +++ b/atom.xml @@ -0,0 +1,832 @@ + + + Mercury + Modern blog theme + + + Zola + 2022-01-03T00:00:00+00:00 + https://mercury.flxzt.net/atom.xml + + Math + 2022-01-03T00:00:00+00:00 + 2022-01-03T00:00:00+00:00 + + + + + Unknown + + + + + + https://mercury.flxzt.net/posts/math/ + + <p>Taken from <a href="https://mathjax.github.io/MathJax-demos-web/tex-chtml.html">https://mathjax.github.io/MathJax-demos-web/tex-chtml.html</a></p> +<h1 id="mathjax-v3-beta-tex-input-html-output-test">MathJax v3 beta: TeX input, HTML output test</h1> +<p>When $a \ne 0$, there are two solutions to $ ax^2 + bx + c = 0 $ and they are +$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$</p> +<h2 id="the-lorenz-equations">The Lorenz Equations</h2> +<p>$$ +\begin{align} +\dot{x} &amp; = \sigma(y-x) \ +\dot{y} &amp; = \rho x - y - xz \ +\dot{z} &amp; = -\beta z + xy +\end{align} +$$</p> +<h2 id="the-cauchy-schwarz-inequality">The Cauchy-Schwarz Inequality</h2> +<p>$$ +\left( \sum_{k=1}^n a_k b_k \right)^{!!2} \leq +\left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) +$$</p> +<h2 id="a-cross-product-formula">A Cross Product Formula</h2> +<p>$$ +\mathbf{V}_1 \times \mathbf{V}_2 = +\begin{vmatrix} +\mathbf{i} &amp; \mathbf{j} &amp; \mathbf{k} \ +\frac{\partial X}{\partial u} &amp; \frac{\partial Y}{\partial u} &amp; 0 \ +\frac{\partial X}{\partial v} &amp; \frac{\partial Y}{\partial v} &amp; 0 \ +\end{vmatrix} +$$</p> +<h2 id="the-probability-of-getting-k-heads-when-flipping-n-coins-is">The probability of getting (k) heads when flipping (n) coins is:</h2> +<p>$$ +P(E) = {n \choose k} p^k (1-p)^{ n-k} +$$</p> +<h2 id="an-identity-of-ramanujan">An Identity of Ramanujan</h2> +<p>$$ +\frac{1}{(\sqrt{\phi \sqrt{5}}-\phi) e^{\frac25 \pi}} = +1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} +{1+\frac{e^{-8\pi}} {1+\ldots} } } } +$$</p> +<h2 id="a-rogers-ramanujan-identity">A Rogers-Ramanujan Identity</h2> +<p>$$ +1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = +\prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, +\quad\quad \text{for $|q| &lt; 1$}. +$$</p> +<h2 id="maxwell-s-equations">Maxwell's Equations</h2> +<p>$$ +\begin{align} +\nabla \times \vec{\mathbf{B}} -, \frac1c, \frac{\partial\vec{\mathbf{E}}}{\partial t} &amp; = \frac{4\pi}{c}\vec{\mathbf{j}} \ +\nabla \cdot \vec{\mathbf{E}} &amp; = 4 \pi \rho \ +\nabla \times \vec{\mathbf{E}}, +, \frac1c, \frac{\partial\vec{\mathbf{B}}}{\partial t} &amp; = \vec{\mathbf{0}} \ +\nabla \cdot \vec{\mathbf{B}} &amp; = 0 +\end{align} +$$</p> +<h2 id="in-line-mathematics">In-line Mathematics</h2> +<p>Finally, while display equations look good for a page of samples, the +ability to mix math and text in a paragraph is also important. This +expression $\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As +you see, MathJax equations can be used this way as well, without unduly +disturbing the spacing between lines.</p> + + + + + Table of Contents Test + 2022-01-02T00:00:00+00:00 + 2022-01-02T00:00:00+00:00 + + + + + Unknown + + + + + + https://mercury.flxzt.net/posts/table-of-contents/ + + <h1 id="heading-1">Heading 1</h1> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h2 id="heading-2">Heading 2</h2> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h3 id="heading-3">Heading 3</h3> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-1">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h3 id="heading-3-1">Heading 3</h3> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-2">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-3">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<hr /> +<h2 id="heading-2-1">Heading 2</h2> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h3 id="heading-3-2">Heading 3</h3> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-4">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-5">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h3 id="heading-3-3">Heading 3</h3> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-6">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-7">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> + + + + + Markdown Syntax + 2022-01-01T00:00:00+00:00 + 2022-01-01T00:00:00+00:00 + + + + + Unknown + + + + + + https://mercury.flxzt.net/posts/markdown/ + + <p>Taken from <a href="https://github.com/thephpleague/commonmark/blob/2.3/tests/benchmark/sample.md">github.com/thephpleague/commonmark/blob/2.3/tests/benchmark/sample.md</a></p> +<h2 id="overview">Overview</h2> +<h3 id="philosophy">Philosophy</h3> +<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p> +<p>Readability, however, is emphasized above all else. A Markdown-formatted +document should be publishable as-is, as plain text, without looking +like it's been marked up with tags or formatting instructions. While +Markdown's syntax has been influenced by several existing text-to-HTML +filters -- including [Setext] <a href="http://docutils.sourceforge.net/mirror/setext.html">1</a>, [atx] <a href="http://www.aaronsw.com/2002/atx/">2</a>, [Textile] <a href="http://textism.com/tools/textile/">3</a>, [reStructuredText] <a href="http://docutils.sourceforge.net/rst.html">4</a>, +[Grutatext] <a href="http://www.triptico.com/software/grutatxt.html">5</a>, and [EtText] <a href="http://ettext.taint.org/doc/">6</a> -- the single biggest source of +inspiration for Markdown's syntax is the format of plain text email.</p> +<p>To this end, Markdown's syntax is comprised entirely of punctuation +characters, which punctuation characters have been carefully chosen so +as to look like what they mean. E.g., asterisks around a word actually +look like *emphasis*. Markdown lists look like, well, lists. Even +blockquotes look like quoted passages of text, assuming you've ever +used email.</p> +<h3 id="html">Inline HTML</h3> +<p>Markdown's syntax is intended for one purpose: to be used as a +format for <em>writing</em> for the web.</p> +<p>Markdown is not a replacement for HTML, or even close to it. Its +syntax is very small, corresponding only to a very small subset of +HTML tags. The idea is <em>not</em> to create a syntax that makes it easier +to insert HTML tags. In my opinion, HTML tags are already easy to +insert. The idea for Markdown is to make it easy to read, write, and +edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em> +format. Thus, Markdown's formatting syntax only addresses issues that +can be conveyed in plain text.</p> +<p>For any markup that is not covered by Markdown's syntax, you simply +use HTML itself. There's no need to preface it or delimit it to +indicate that you're switching from Markdown to HTML; you just use +the tags.</p> +<p>The only restrictions are that block-level HTML elements -- e.g. <code>&lt;div&gt;</code>, +<code>&lt;table&gt;</code>, <code>&lt;pre&gt;</code>, <code>&lt;p&gt;</code>, etc. -- must be separated from surrounding +content by blank lines, and the start and end tags of the block should +not be indented with tabs or spaces. Markdown is smart enough not +to add extra (unwanted) <code>&lt;p&gt;</code> tags around HTML block-level tags.</p> +<p>For example, to add an HTML table to a Markdown article:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is a regular paragraph. +</span><span> +</span><span>&lt;table&gt; +</span><span> &lt;tr&gt; +</span><span> &lt;td&gt;Foo&lt;/td&gt; +</span><span> &lt;/tr&gt; +</span><span>&lt;/table&gt; +</span><span> +</span><span>This is another regular paragraph. +</span></code></pre> +<p>Note that Markdown formatting syntax is not processed within block-level +HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an +HTML block.</p> +<p>Span-level HTML tags -- e.g. <code>&lt;span&gt;</code>, <code>&lt;cite&gt;</code>, or <code>&lt;del&gt;</code> -- can be +used anywhere in a Markdown paragraph, list item, or header. If you +want, you can even use HTML tags instead of Markdown formatting; e.g. if +you'd prefer to use HTML <code>&lt;a&gt;</code> or <code>&lt;img&gt;</code> tags instead of Markdown's +link or image syntax, go right ahead.</p> +<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within +span-level tags.</p> +<h3 id="autoescape">Automatic Escaping for Special Characters</h3> +<p>In HTML, there are two characters that demand special treatment: <code>&lt;</code> +and <code>&amp;</code>. Left angle brackets are used to start tags; ampersands are +used to denote HTML entities. If you want to use them as literal +characters, you must escape them as entities, e.g. <code>&amp;lt;</code>, and +<code>&amp;amp;</code>.</p> +<p>Ampersands in particular are bedeviling for web writers. If you want to +write about 'AT&amp;T', you need to write '<code>AT&amp;amp;T</code>'. You even need to +escape ampersands within URLs. Thus, if you want to link to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>http://images.google.com/images?num=30&amp;q=larry+bird +</span></code></pre> +<p>you need to encode the URL as:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>http://images.google.com/images?num=30&amp;amp;q=larry+bird +</span></code></pre> +<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to +forget, and is probably the single most common source of HTML validation +errors in otherwise well-marked-up web sites.</p> +<p>Markdown allows you to use these characters naturally, taking care of +all the necessary escaping for you. If you use an ampersand as part of +an HTML entity, it remains unchanged; otherwise it will be translated +into <code>&amp;amp;</code>.</p> +<p>So, if you want to include a copyright symbol in your article, you can write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&amp;copy; +</span></code></pre> +<p>and Markdown will leave it alone. But if you write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>AT&amp;T +</span></code></pre> +<p>Markdown will translate it to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>AT&amp;amp;T +</span></code></pre> +<p>Similarly, because Markdown supports <a href="https://mercury.flxzt.net/posts/markdown/#html">inline HTML</a>, if you use +angle brackets as delimiters for HTML tags, Markdown will treat them as +such. But if you write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>4 &lt; 5 +</span></code></pre> +<p>Markdown will translate it to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>4 &amp;lt; 5 +</span></code></pre> +<p>However, inside Markdown code spans and blocks, angle brackets and +ampersands are <em>always</em> encoded automatically. This makes it easy to use +Markdown to write about HTML code. (As opposed to raw HTML, which is a +terrible format for writing about HTML syntax, because every single <code>&lt;</code> +and <code>&amp;</code> in your example code needs to be escaped.)</p> +<hr /> +<h2 id="block">Block Elements</h2> +<h3 id="p">Paragraphs and Line Breaks</h3> +<p>A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line -- a line containing nothing but spaces or tabs is considered +blank.) Normal paragraphs should not be indented with spaces or tabs.</p> +<p>The implication of the &quot;one or more consecutive lines of text&quot; rule is +that Markdown supports &quot;hard-wrapped&quot; text paragraphs. This differs +significantly from most other text-to-HTML formatters (including Movable +Type's &quot;Convert Line Breaks&quot; option) which translate every line break +character in a paragraph into a <code>&lt;br /&gt;</code> tag.</p> +<p>When you <em>do</em> want to insert a <code>&lt;br /&gt;</code> break tag using Markdown, you +end a line with two or more spaces, then type return.</p> +<p>Yes, this takes a tad more effort to create a <code>&lt;br /&gt;</code>, but a simplistic +&quot;every line break is a <code>&lt;br /&gt;</code>&quot; rule wouldn't work for Markdown. +Markdown's email-style <a href="https://mercury.flxzt.net/posts/markdown/#blockquote">blockquoting</a> and multi-paragraph <a href="https://mercury.flxzt.net/posts/markdown/#list">list items</a> +work best -- and look better -- when you format them with hard breaks.</p> +<h3 id="header">Headers</h3> +<p>Markdown supports two styles of headers, [Setext] <a href="http://docutils.sourceforge.net/mirror/setext.html">1</a> and [atx] <a href="http://www.aaronsw.com/2002/atx/">2</a>.</p> +<p>Setext-style headers are &quot;underlined&quot; using equal signs (for first-level +headers) and dashes (for second-level headers). For example:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is an H1 +</span><span>============= +</span><span> +</span><span>This is an H2 +</span><span>------------- +</span></code></pre> +<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p> +<p>Atx-style headers use 1-6 hash characters at the start of the line, +corresponding to header levels 1-6. For example:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span># This is an H1 +</span><span> +</span><span>## This is an H2 +</span><span> +</span><span>###### This is an H6 +</span></code></pre> +<p>Optionally, you may &quot;close&quot; atx-style headers. This is purely +cosmetic -- you can use this if you think it looks better. The +closing hashes don't even need to match the number of hashes +used to open the header. (The number of opening hashes +determines the header level.) :</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span># This is an H1 # +</span><span> +</span><span>## This is an H2 ## +</span><span> +</span><span>### This is an H3 ###### +</span></code></pre> +<h3 id="blockquote">Blockquotes</h3> +<p>Markdown uses email-style <code>&gt;</code> characters for blockquoting. If you're +familiar with quoting passages of text in an email message, then you +know how to create a blockquote in Markdown. It looks best if you hard +wrap the text and put a <code>&gt;</code> before every line:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, +</span><span>&gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. +</span><span>&gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. +</span><span>&gt; +</span><span>&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse +</span><span>&gt; id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>Markdown allows you to be lazy and only put the <code>&gt;</code> before the first +line of a hard-wrapped paragraph:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, +</span><span>consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. +</span><span>Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. +</span><span> +</span><span>&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse +</span><span>id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by +adding additional levels of <code>&gt;</code>:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&gt; This is the first level of quoting. +</span><span>&gt; +</span><span>&gt; &gt; This is nested blockquote. +</span><span>&gt; +</span><span>&gt; Back to the first level. +</span></code></pre> +<p>Blockquotes can contain other Markdown elements, including headers, lists, +and code blocks:</p> +<blockquote> +<h2 id="this-is-a-header">This is a header.</h2> +<ol> +<li>This is the first list item.</li> +<li>This is the second list item.</li> +</ol> +<p>Here's some example code:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span> return shell_exec(&quot;echo $input | $markdown_script&quot;); +</span></code></pre> +</blockquote> +<p>Any decent text editor should make email-style quoting easy. For +example, with BBEdit, you can make a selection and choose Increase +Quote Level from the Text menu.</p> +<h3 id="list">Lists</h3> +<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p> +<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably +-- as list markers:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Red +</span><span>* Green +</span><span>* Blue +</span></code></pre> +<p>is equivalent to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>+ Red +</span><span>+ Green +</span><span>+ Blue +</span></code></pre> +<p>and:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>- Red +</span><span>- Green +</span><span>- Blue +</span></code></pre> +<p>Ordered lists use numbers followed by periods:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1. Bird +</span><span>2. McHale +</span><span>3. Parish +</span></code></pre> +<p>It's important to note that the actual numbers you use to mark the +list have no effect on the HTML output Markdown produces. The HTML +Markdown produces from the above list is:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;ol&gt; +</span><span>&lt;li&gt;Bird&lt;/li&gt; +</span><span>&lt;li&gt;McHale&lt;/li&gt; +</span><span>&lt;li&gt;Parish&lt;/li&gt; +</span><span>&lt;/ol&gt; +</span></code></pre> +<p>If you instead wrote the list in Markdown like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1. Bird +</span><span>1. McHale +</span><span>1. Parish +</span></code></pre> +<p>or even:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>3. Bird +</span><span>1. McHale +</span><span>8. Parish +</span></code></pre> +<p>you'd get the exact same HTML output. The point is, if you want to, +you can use ordinal numbers in your ordered Markdown lists, so that +the numbers in your source match the numbers in your published HTML. +But if you want to be lazy, you don't have to.</p> +<p>If you do use lazy list numbering, however, you should still start the +list with the number 1. At some point in the future, Markdown may support +starting ordered lists at an arbitrary number.</p> +<p>List markers typically start at the left margin, but may be indented by +up to three spaces. List markers must be followed by one or more spaces +or a tab.</p> +<p>To make lists look nice, you can wrap items with hanging indents:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +</span><span> Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, +</span><span> viverra nec, fringilla in, laoreet vitae, risus. +</span><span>* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. +</span><span> Suspendisse id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>But if you want to be lazy, you don't have to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +</span><span>Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, +</span><span>viverra nec, fringilla in, laoreet vitae, risus. +</span><span>* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. +</span><span>Suspendisse id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>If list items are separated by blank lines, Markdown will wrap the +items in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Bird +</span><span>* Magic +</span></code></pre> +<p>will turn into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;ul&gt; +</span><span>&lt;li&gt;Bird&lt;/li&gt; +</span><span>&lt;li&gt;Magic&lt;/li&gt; +</span><span>&lt;/ul&gt; +</span></code></pre> +<p>But this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Bird +</span><span> +</span><span>* Magic +</span></code></pre> +<p>will turn into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;ul&gt; +</span><span>&lt;li&gt;&lt;p&gt;Bird&lt;/p&gt;&lt;/li&gt; +</span><span>&lt;li&gt;&lt;p&gt;Magic&lt;/p&gt;&lt;/li&gt; +</span><span>&lt;/ul&gt; +</span></code></pre> +<p>List items may consist of multiple paragraphs. Each subsequent +paragraph in a list item must be indented by either 4 spaces +or one tab:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1. This is a list item with two paragraphs. Lorem ipsum dolor +</span><span> sit amet, consectetuer adipiscing elit. Aliquam hendrerit +</span><span> mi posuere lectus. +</span><span> +</span><span> Vestibulum enim wisi, viverra nec, fringilla in, laoreet +</span><span> vitae, risus. Donec sit amet nisl. Aliquam semper ipsum +</span><span> sit amet velit. +</span><span> +</span><span>2. Suspendisse id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>It looks nice if you indent every line of the subsequent +paragraphs, but here again, Markdown will allow you to be +lazy:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* This is a list item with two paragraphs. +</span><span> +</span><span> This is the second paragraph in the list item. You&#39;re +</span><span>only required to indent the first line. Lorem ipsum dolor +</span><span>sit amet, consectetuer adipiscing elit. +</span><span> +</span><span>* Another item in the same list. +</span></code></pre> +<p>To put a blockquote within a list item, the blockquote's <code>&gt;</code> +delimiters need to be indented:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* A list item with a blockquote: +</span><span> +</span><span> &gt; This is a blockquote +</span><span> &gt; inside a list item. +</span></code></pre> +<p>To put a code block within a list item, the code block needs +to be indented <em>twice</em> -- 8 spaces or two tabs:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* A list item with a code block: +</span><span> +</span><span> &lt;code goes here&gt; +</span></code></pre> +<p>It's worth noting that it's possible to trigger an ordered list by +accident, by writing something like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1986. What a great season. +</span></code></pre> +<p>In other words, a <em>number-period-space</em> sequence at the beginning of a +line. To avoid this, you can backslash-escape the period:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1986\. What a great season. +</span></code></pre> +<h3 id="precode">Code Blocks</h3> +<p>Pre-formatted code blocks are used for writing about programming or +markup source code. Rather than forming normal paragraphs, the lines +of a code block are interpreted literally. Markdown wraps a code block +in both <code>&lt;pre&gt;</code> and <code>&lt;code&gt;</code> tags.</p> +<p>To produce a code block in Markdown, simply indent every line of the +block by at least 4 spaces or 1 tab. For example, given this input:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is a normal paragraph: +</span><span> +</span><span> This is a code block. +</span></code></pre> +<p>Markdown will generate:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;This is a normal paragraph:&lt;/p&gt; +</span><span> +</span><span>&lt;pre&gt;&lt;code&gt;This is a code block. +</span><span>&lt;/code&gt;&lt;/pre&gt; +</span></code></pre> +<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each +line of the code block. For example, this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>Here is an example of AppleScript: +</span><span> +</span><span> tell application &quot;Foo&quot; +</span><span> beep +</span><span> end tell +</span></code></pre> +<p>will turn into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;Here is an example of AppleScript:&lt;/p&gt; +</span><span> +</span><span>&lt;pre&gt;&lt;code&gt;tell application &quot;Foo&quot; +</span><span> beep +</span><span>end tell +</span><span>&lt;/code&gt;&lt;/pre&gt; +</span></code></pre> +<p>A code block continues until it reaches a line that is not indented +(or the end of the article).</p> +<p>Within a code block, ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> and <code>&gt;</code>) +are automatically converted into HTML entities. This makes it very +easy to include example HTML source code using Markdown -- just paste +it and indent it, and Markdown will handle the hassle of encoding the +ampersands and angle brackets. For example, this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span> &lt;div class=&quot;footer&quot;&gt; +</span><span> &amp;copy; 2004 Foo Corporation +</span><span> &lt;/div&gt; +</span></code></pre> +<p>will turn into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;footer&quot;&amp;gt; +</span><span> &amp;amp;copy; 2004 Foo Corporation +</span><span>&amp;lt;/div&amp;gt; +</span><span>&lt;/code&gt;&lt;/pre&gt; +</span></code></pre> +<p>Regular Markdown syntax is not processed within code blocks. E.g., +asterisks are just literal asterisks within a code block. This means +it's also easy to use Markdown to write about Markdown's own syntax.</p> +<h3 id="hr">Horizontal Rules</h3> +<p>You can produce a horizontal rule tag (<code>&lt;hr /&gt;</code>) by placing three or +more hyphens, asterisks, or underscores on a line by themselves. If you +wish, you may use spaces between the hyphens or asterisks. Each of the +following lines will produce a horizontal rule:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* * * +</span><span> +</span><span>*** +</span><span> +</span><span>***** +</span><span> +</span><span>- - - +</span><span> +</span><span>--------------------------------------- +</span></code></pre> +<hr /> +<h2 id="span">Span Elements</h2> +<h3 id="link">Links</h3> +<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p> +<p>In both styles, the link text is delimited by [square brackets].</p> +<p>To create an inline link, use a set of regular parentheses immediately +after the link text's closing square bracket. Inside the parentheses, +put the URL where you want the link to point, along with an <em>optional</em> +title for the link, surrounded in quotes. For example:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is [an example](http://example.com/ &quot;Title&quot;) inline link. +</span><span> +</span><span>[This link](http://example.net/) has no title attribute. +</span></code></pre> +<p>Will produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;This is &lt;a href=&quot;http://example.com/&quot; title=&quot;Title&quot;&gt; +</span><span>an example&lt;/a&gt; inline link.&lt;/p&gt; +</span><span> +</span><span>&lt;p&gt;&lt;a href=&quot;http://example.net/&quot;&gt;This link&lt;/a&gt; has no +</span><span>title attribute.&lt;/p&gt; +</span></code></pre> +<p>If you're referring to a local resource on the same server, you can +use relative paths:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>See my [About](/about/) page for details. +</span></code></pre> +<p>Reference-style links use a second set of square brackets, inside +which you place a label of your choosing to identify the link:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is [an example][id] reference-style link. +</span></code></pre> +<p>You can optionally use a space to separate the sets of brackets:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is [an example] [id] reference-style link. +</span></code></pre> +<p>Then, anywhere in the document, you define your link label like this, +on a line by itself:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[id]: http://example.com/ &quot;Optional Title Here&quot; +</span></code></pre> +<p>That is:</p> +<ul> +<li>Square brackets containing the link identifier (optionally +indented from the left margin using up to three spaces);</li> +<li>followed by a colon;</li> +<li>followed by one or more spaces (or tabs);</li> +<li>followed by the URL for the link;</li> +<li>optionally followed by a title attribute for the link, enclosed +in double or single quotes, or enclosed in parentheses.</li> +</ul> +<p>The following three link definitions are equivalent:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[foo]: http://example.com/ &quot;Optional Title Here&quot; +</span><span>[foo]: http://example.com/ &#39;Optional Title Here&#39; +</span><span>[foo]: http://example.com/ (Optional Title Here) +</span></code></pre> +<p><strong>Note:</strong> There is a known bug in Markdown.pl 1.0.1 which prevents +single quotes from being used to delimit link titles.</p> +<p>The link URL may, optionally, be surrounded by angle brackets:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[id]: &lt;http://example.com/&gt; &quot;Optional Title Here&quot; +</span></code></pre> +<p>You can put the title attribute on the next line and use extra spaces +or tabs for padding, which tends to look better with longer URLs:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[id]: http://example.com/longish/path/to/resource/here +</span><span> &quot;Optional Title Here&quot; +</span></code></pre> +<p>Link definitions are only used for creating links during Markdown +processing, and are stripped from your document in the HTML output.</p> +<p>Link definition names may consist of letters, numbers, spaces, and +punctuation -- but they are <em>not</em> case sensitive. E.g. these two +links:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[link text][a] +</span><span>[link text][A] +</span></code></pre> +<p>are equivalent.</p> +<p>The <em>implicit link name</em> shortcut allows you to omit the name of the +link, in which case the link text itself is used as the name. +Just use an empty set of square brackets -- e.g., to link the word +&quot;Google&quot; to the google.com web site, you could simply write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[Google][] +</span></code></pre> +<p>And then define the link:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[Google]: http://google.com/ +</span></code></pre> +<p>Because link names may contain spaces, this shortcut even works for +multiple words in the link text:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>Visit [Daring Fireball][] for more information. +</span></code></pre> +<p>And then define the link:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[Daring Fireball]: http://daringfireball.net/ +</span></code></pre> +<p>Link definitions can be placed anywhere in your Markdown document. I +tend to put them immediately after each paragraph in which they're +used, but if you want, you can put them all at the end of your +document, sort of like footnotes.</p> +<p>Here's an example of reference links in action:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>I get 10 times more traffic from [Google] [1] than from +</span><span>[Yahoo] [2] or [MSN] [3]. +</span><span> +</span><span> [1]: http://google.com/ &quot;Google&quot; +</span><span> [2]: http://search.yahoo.com/ &quot;Yahoo Search&quot; +</span><span> [3]: http://search.msn.com/ &quot;MSN Search&quot; +</span></code></pre> +<p>Using the implicit link name shortcut, you could instead write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>I get 10 times more traffic from [Google][] than from +</span><span>[Yahoo][] or [MSN][]. +</span><span> +</span><span> [google]: http://google.com/ &quot;Google&quot; +</span><span> [yahoo]: http://search.yahoo.com/ &quot;Yahoo Search&quot; +</span><span> [msn]: http://search.msn.com/ &quot;MSN Search&quot; +</span></code></pre> +<p>Both of the above examples will produce the following HTML output:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;I get 10 times more traffic from &lt;a href=&quot;http://google.com/&quot; +</span><span>title=&quot;Google&quot;&gt;Google&lt;/a&gt; than from +</span><span>&lt;a href=&quot;http://search.yahoo.com/&quot; title=&quot;Yahoo Search&quot;&gt;Yahoo&lt;/a&gt; +</span><span>or &lt;a href=&quot;http://search.msn.com/&quot; title=&quot;MSN Search&quot;&gt;MSN&lt;/a&gt;.&lt;/p&gt; +</span></code></pre> +<p>For comparison, here is the same paragraph written using +Markdown's inline link style:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>I get 10 times more traffic from [Google](http://google.com/ &quot;Google&quot;) +</span><span>than from [Yahoo](http://search.yahoo.com/ &quot;Yahoo Search&quot;) or +</span><span>[MSN](http://search.msn.com/ &quot;MSN Search&quot;). +</span></code></pre> +<p>The point of reference-style links is not that they're easier to +write. The point is that with reference-style links, your document +source is vastly more readable. Compare the above examples: using +reference-style links, the paragraph itself is only 81 characters +long; with inline-style links, it's 176 characters; and as raw HTML, +it's 234 characters. In the raw HTML, there's more markup than there +is text.</p> +<p>With Markdown's reference-style links, a source document much more +closely resembles the final output, as rendered in a browser. By +allowing you to move the markup-related metadata out of the paragraph, +you can add links without interrupting the narrative flow of your +prose.</p> +<h3 id="em">Emphasis</h3> +<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of +emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an +HTML <code>&lt;em&gt;</code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML +<code>&lt;strong&gt;</code> tag. E.g., this input:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>*single asterisks* +</span><span> +</span><span>_single underscores_ +</span><span> +</span><span>**double asterisks** +</span><span> +</span><span>__double underscores__ +</span></code></pre> +<p>will produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;em&gt;single asterisks&lt;/em&gt; +</span><span> +</span><span>&lt;em&gt;single underscores&lt;/em&gt; +</span><span> +</span><span>&lt;strong&gt;double asterisks&lt;/strong&gt; +</span><span> +</span><span>&lt;strong&gt;double underscores&lt;/strong&gt; +</span></code></pre> +<p>You can use whichever style you prefer; the lone restriction is that +the same character must be used to open and close an emphasis span.</p> +<p>Emphasis can be used in the middle of a word:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>un*frigging*believable +</span></code></pre> +<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a +literal asterisk or underscore.</p> +<p>To produce a literal asterisk or underscore at a position where it +would otherwise be used as an emphasis delimiter, you can backslash +escape it:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>\*this text is surrounded by literal asterisks\* +</span></code></pre> +<h3 id="code">Code</h3> +<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>). +Unlike a pre-formatted code block, a code span indicates code within a +normal paragraph. For example:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>Use the `printf()` function. +</span></code></pre> +<p>will produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt; +</span></code></pre> +<p>To include a literal backtick character within a code span, you can use +multiple backticks as the opening and closing delimiters:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>``There is a literal backtick (`) here.`` +</span></code></pre> +<p>which will produce this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt; +</span></code></pre> +<p>The backtick delimiters surrounding a code span may include spaces -- +one after the opening, one before the closing. This allows you to place +literal backtick characters at the beginning or end of a code span:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>A single backtick in a code span: `` ` `` +</span><span> +</span><span>A backtick-delimited string in a code span: `` `foo` `` +</span></code></pre> +<p>will produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt; +</span><span> +</span><span>&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt; +</span></code></pre> +<p>With a code span, ampersands and angle brackets are encoded as HTML +entities automatically, which makes it easy to include example HTML +tags. Markdown will turn this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>Please don&#39;t use any `&lt;blink&gt;` tags. +</span></code></pre> +<p>into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;Please don&#39;t use any &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt; +</span></code></pre> +<p>You can write this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>`&amp;#8212;` is the decimal-encoded equivalent of `&amp;mdash;`. +</span></code></pre> +<p>to produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;&lt;code&gt;&amp;amp;#8212;&lt;/code&gt; is the decimal-encoded +</span><span>equivalent of &lt;code&gt;&amp;amp;mdash;&lt;/code&gt;.&lt;/p&gt; +</span></code></pre> +<h3 id="img">Images</h3> +<p>Admittedly, it's fairly difficult to devise a &quot;natural&quot; syntax for +placing images into a plain text document format.</p> +<p>Markdown uses an image syntax that is intended to resemble the syntax +for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p> +<p>Inline image syntax looks like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>![Alt text](/path/to/img.jpg) +</span><span> +</span><span>![Alt text](/path/to/img.jpg &quot;Optional title&quot;) +</span></code></pre> +<p>That is:</p> +<ul> +<li>An exclamation mark: <code>!</code>;</li> +<li>followed by a set of square brackets, containing the <code>alt</code> +attribute text for the image;</li> +<li>followed by a set of parentheses, containing the URL or path to +the image, and an optional <code>title</code> attribute enclosed in double +or single quotes.</li> +</ul> +<p>Reference-style image syntax looks like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>![Alt text][id] +</span></code></pre> +<p>Where &quot;id&quot; is the name of a defined image reference. Image references +are defined using syntax identical to link references:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[id]: url/to/image &quot;Optional title attribute&quot; +</span></code></pre> +<p>As of this writing, Markdown has no syntax for specifying the +dimensions of an image; if this is important to you, you can simply +use regular HTML <code>&lt;img&gt;</code> tags.</p> +<hr /> +<h2 id="misc">Miscellaneous</h2> +<h3 id="autolink">Automatic Links</h3> +<p>Markdown supports a shortcut style for creating &quot;automatic&quot; links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;http://example.com/&gt; +</span></code></pre> +<p>Markdown will turn this into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;a href=&quot;http://example.com/&quot;&gt;http://example.com/&lt;/a&gt; +</span></code></pre> +<p>Automatic links for email addresses work similarly, except that +Markdown will also perform a bit of randomized decimal and hex +entity-encoding to help obscure your address from address-harvesting +spambots. For example, Markdown will turn this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;address@example.com&gt; +</span></code></pre> +<p>into something like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;a href=&quot;&amp;#x6D;&amp;#x61;i&amp;#x6C;&amp;#x74;&amp;#x6F;:&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65; +</span><span>&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111; +</span><span>&amp;#109;&quot;&gt;&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61; +</span><span>&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;&amp;#109;&lt;/a&gt; +</span></code></pre> +<p>which will render in a browser as a clickable link to &quot;address@example.com&quot;.</p> +<p>(This sort of entity-encoding trick will indeed fool many, if not +most, address-harvesting bots, but it definitely won't fool all of +them. It's better than nothing, but an address published in this way +will probably eventually start receiving spam.)</p> +<h3 id="backslash">Backslash Escapes</h3> +<p>Markdown allows you to use backslash escapes to generate literal +characters which would otherwise have special meaning in Markdown's +formatting syntax. For example, if you wanted to surround a word +with literal asterisks (instead of an HTML <code>&lt;em&gt;</code> tag), you can use +backslashes before the asterisks, like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>\*literal asterisks\* +</span></code></pre> +<p>Markdown provides backslash escapes for the following characters:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>\ backslash +</span><span>` backtick +</span><span>* asterisk +</span><span>_ underscore +</span><span>{} curly braces +</span><span>[] square brackets +</span><span>() parentheses +</span><span># hash mark +</span><span>+ plus sign +</span><span>- minus sign (hyphen) +</span><span>. dot +</span><span>! exclamation mark +</span></code></pre> + + + + diff --git a/elasticlunr.min.js b/elasticlunr.min.js new file mode 100644 index 0000000..79dad65 --- /dev/null +++ b/elasticlunr.min.js @@ -0,0 +1,10 @@ +/** + * elasticlunr - http://weixsong.github.io + * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.6 + * + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + * MIT Licensed + * @license + */ +!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o + + + + + + + + diff --git a/images/noise_dark.png b/images/noise_dark.png new file mode 100644 index 0000000..69b7441 Binary files /dev/null and b/images/noise_dark.png differ diff --git a/images/noise_light.png b/images/noise_light.png new file mode 100644 index 0000000..bff1f40 Binary files /dev/null and b/images/noise_light.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..70d2ec9 --- /dev/null +++ b/index.html @@ -0,0 +1,3 @@ + + Mercury +
Mercury
Modern blog theme
Welcome to my awesome website!
Recent Posts

Math

Markdown Syntax

Recent Projects
/projects/project_1_card_image.png

Project 1

Example description

Project 2

Example description
/projects/project_3_card_image.jpg

Project 3

Example description
John Doe - © 2023
\ No newline at end of file diff --git a/js/count.js b/js/count.js new file mode 100644 index 0000000..7c504bc --- /dev/null +++ b/js/count.js @@ -0,0 +1,270 @@ +// GoatCounter: https://www.goatcounter.com +// This file (and *only* this file) is released under the ISC license: +// https://opensource.org/licenses/ISC +;(function() { + 'use strict'; + + if (window.goatcounter && window.goatcounter.vars) // Compatibility with very old version; do not use. + window.goatcounter = window.goatcounter.vars + else + window.goatcounter = window.goatcounter || {} + + // Load settings from data-goatcounter-settings. + var s = document.querySelector('script[data-goatcounter]') + if (s && s.dataset.goatcounterSettings) { + try { var set = JSON.parse(s.dataset.goatcounterSettings) } + catch (err) { console.error('invalid JSON in data-goatcounter-settings: ' + err) } + for (var k in set) + if (['no_onload', 'no_events', 'allow_local', 'allow_frame', 'path', 'title', 'referrer', 'event'].indexOf(k) > -1) + window.goatcounter[k] = set[k] + } + + var enc = encodeURIComponent + + // Get all data we're going to send off to the counter endpoint. + var get_data = function(vars) { + var data = { + p: (vars.path === undefined ? goatcounter.path : vars.path), + r: (vars.referrer === undefined ? goatcounter.referrer : vars.referrer), + t: (vars.title === undefined ? goatcounter.title : vars.title), + e: !!(vars.event || goatcounter.event), + s: [window.screen.width, window.screen.height, (window.devicePixelRatio || 1)], + b: is_bot(), + q: location.search, + } + + var rcb, pcb, tcb // Save callbacks to apply later. + if (typeof(data.r) === 'function') rcb = data.r + if (typeof(data.t) === 'function') tcb = data.t + if (typeof(data.p) === 'function') pcb = data.p + + if (is_empty(data.r)) data.r = document.referrer + if (is_empty(data.t)) data.t = document.title + if (is_empty(data.p)) data.p = get_path() + + if (rcb) data.r = rcb(data.r) + if (tcb) data.t = tcb(data.t) + if (pcb) data.p = pcb(data.p) + return data + } + + // Check if a value is "empty" for the purpose of get_data(). + var is_empty = function(v) { return v === null || v === undefined || typeof(v) === 'function' } + + // See if this looks like a bot; there is some additional filtering on the + // backend, but these properties can't be fetched from there. + var is_bot = function() { + // Headless browsers are probably a bot. + var w = window, d = document + if (w.callPhantom || w._phantom || w.phantom) + return 150 + if (w.__nightmare) + return 151 + if (d.__selenium_unwrapped || d.__webdriver_evaluate || d.__driver_evaluate) + return 152 + if (navigator.webdriver) + return 153 + return 0 + } + + // Object to urlencoded string, starting with a ?. + var urlencode = function(obj) { + var p = [] + for (var k in obj) + if (obj[k] !== '' && obj[k] !== null && obj[k] !== undefined && obj[k] !== false) + p.push(enc(k) + '=' + enc(obj[k])) + return '?' + p.join('&') + } + + // Show a warning in the console. + var warn = function(msg) { + if (console && 'warn' in console) + console.warn('goatcounter: ' + msg) + } + + // Get the endpoint to send requests to. + var get_endpoint = function() { + var s = document.querySelector('script[data-goatcounter]') + if (s && s.dataset.goatcounter) + return s.dataset.goatcounter + return (goatcounter.endpoint || window.counter) // counter is for compat; don't use. + } + + // Get current path. + var get_path = function() { + var loc = location, + c = document.querySelector('link[rel="canonical"][href]') + if (c) { // May be relative or point to different domain. + var a = document.createElement('a') + a.href = c.href + if (a.hostname.replace(/^www\./, '') === location.hostname.replace(/^www\./, '')) + loc = a + } + return (loc.pathname + loc.search) || '/' + } + + // Run function after DOM is loaded. + var on_load = function(f) { + if (document.body === null) + document.addEventListener('DOMContentLoaded', function() { f() }, false) + else + f() + } + + // Filter some requests that we (probably) don't want to count. + goatcounter.filter = function() { + if ('visibilityState' in document && document.visibilityState === 'prerender') + return 'visibilityState' + if (!goatcounter.allow_frame && location !== parent.location) + return 'frame' + if (!goatcounter.allow_local && location.hostname.match(/(localhost$|^127\.|^10\.|^172\.(1[6-9]|2[0-9]|3[0-1])\.|^192\.168\.|^0\.0\.0\.0$)/)) + return 'localhost' + if (!goatcounter.allow_local && location.protocol === 'file:') + return 'localfile' + if (localStorage && localStorage.getItem('skipgc') === 't') + return 'disabled with #toggle-goatcounter' + return false + } + + // Get URL to send to GoatCounter. + window.goatcounter.url = function(vars) { + var data = get_data(vars || {}) + if (data.p === null) // null from user callback. + return + data.rnd = Math.random().toString(36).substr(2, 5) // Browsers don't always listen to Cache-Control. + + var endpoint = get_endpoint() + if (!endpoint) + return warn('no endpoint found') + + return endpoint + urlencode(data) + } + + // Count a hit. + window.goatcounter.count = function(vars) { + var f = goatcounter.filter() + if (f) + return warn('not counting because of: ' + f) + + var url = goatcounter.url(vars) + if (!url) + return warn('not counting because path callback returned null') + + var img = document.createElement('img') + img.src = url + img.style.position = 'absolute' // Affect layout less. + img.style.bottom = '0px' + img.style.width = '1px' + img.style.height = '1px' + img.loading = 'eager' + img.setAttribute('alt', '') + img.setAttribute('aria-hidden', 'true') + + var rm = function() { if (img && img.parentNode) img.parentNode.removeChild(img) } + img.addEventListener('load', rm, false) + document.body.appendChild(img) + } + + // Get a query parameter. + window.goatcounter.get_query = function(name) { + var s = location.search.substr(1).split('&') + for (var i = 0; i < s.length; i++) + if (s[i].toLowerCase().indexOf(name.toLowerCase() + '=') === 0) + return s[i].substr(name.length + 1) + } + + // Track click events. + window.goatcounter.bind_events = function() { + if (!document.querySelectorAll) // Just in case someone uses an ancient browser. + return + + var send = function(elem) { + return function() { + goatcounter.count({ + event: true, + path: (elem.dataset.goatcounterClick || elem.name || elem.id || ''), + title: (elem.dataset.goatcounterTitle || elem.title || (elem.innerHTML || '').substr(0, 200) || ''), + referrer: (elem.dataset.goatcounterReferrer || elem.dataset.goatcounterReferral || ''), + }) + } + } + + Array.prototype.slice.call(document.querySelectorAll("*[data-goatcounter-click]")).forEach(function(elem) { + if (elem.dataset.goatcounterBound) + return + var f = send(elem) + elem.addEventListener('click', f, false) + elem.addEventListener('auxclick', f, false) // Middle click. + elem.dataset.goatcounterBound = 'true' + }) + } + + // Add a "visitor counter" frame or image. + window.goatcounter.visit_count = function(opt) { + on_load(function() { + opt = opt || {} + opt.type = opt.type || 'html' + opt.append = opt.append || 'body' + opt.path = opt.path || get_path() + opt.attr = opt.attr || {width: '200', height: (opt.no_branding ? '60' : '80')} + + opt.attr['src'] = get_endpoint() + 'er/' + enc(opt.path) + '.' + enc(opt.type) + '?' + if (opt.no_branding) opt.attr['src'] += '&no_branding=1' + if (opt.style) opt.attr['src'] += '&style=' + enc(opt.style) + if (opt.start) opt.attr['src'] += '&start=' + enc(opt.start) + if (opt.end) opt.attr['src'] += '&end=' + enc(opt.end) + + var tag = {png: 'img', svg: 'img', html: 'iframe'}[opt.type] + if (!tag) + return warn('visit_count: unknown type: ' + opt.type) + + if (opt.type === 'html') { + opt.attr['frameborder'] = '0' + opt.attr['scrolling'] = 'no' + } + + var d = document.createElement(tag) + for (var k in opt.attr) + d.setAttribute(k, opt.attr[k]) + + var p = document.querySelector(opt.append) + if (!p) + return warn('visit_count: append not found: ' + opt.append) + p.appendChild(d) + }) + } + + // Make it easy to skip your own views. + if (location.hash === '#toggle-goatcounter') { + if (localStorage.getItem('skipgc') === 't') { + localStorage.removeItem('skipgc', 't') + alert('GoatCounter tracking is now ENABLED in this browser.') + } + else { + localStorage.setItem('skipgc', 't') + alert('GoatCounter tracking is now DISABLED in this browser until ' + location + ' is loaded again.') + } + } + + if (!goatcounter.no_onload) + on_load(function() { + // 1. Page is visible, count request. + // 2. Page is not yet visible; wait until it switches to 'visible' and count. + // See #487 + if (!('visibilityState' in document) || document.visibilityState === 'visible') + goatcounter.count() + else { + var f = function(e) { + if (document.visibilityState !== 'visible') + return + document.removeEventListener('visibilitychange', f) + goatcounter.count() + } + document.addEventListener('visibilitychange', f) + } + + if (!goatcounter.no_events) + goatcounter.bind_events() + }) +})(); + diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..e69de29 diff --git a/js/temml/Temml-Local.css b/js/temml/Temml-Local.css new file mode 100644 index 0000000..69fe595 --- /dev/null +++ b/js/temml/Temml-Local.css @@ -0,0 +1,85 @@ +/* +Temml.woff2 is a clone of KaTeX_Script-Regular, except that the code points +have been changed from ASCII to Unicode Mathematical Alphanumeric Symbols Script capitals, +Unicode range 1D49C to 1D4B5. +*/ + +@font-face { + font-family: 'Temml'; + src: url('Temml.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +math { + font-family: "Cambria Math", 'STIXTwoMath-Regular', math; + font-style: normal; + font-weight: normal; + line-height: normal; + font-size-adjust: none; + text-indent: 0; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + direction: ltr; +} + +math * { + border-color: currentColor; +} + +/* Next line is active in Firefox and Safari. + * Not in Chromium, which recognizes display: "block math" written inline. */ +math.tml-display { display: block; } + +math .mathscr { + font-family: "Temml"; +} + +mo.tml-prime { + font-family: Temml; +} + +/* Prevent f' from overlapping in Chromium */ +mo.prime-pad { + padding-left: 0.08em; +} + +/* Stretch \widetilde in Chromium */ +@supports (not (-webkit-backdrop-filter: blur(1px))) and (not (-moz-appearance: none)) { + .tml-crooked-2 { + transform: scale(2.0, 1.1) + } + .tml-crooked-3 { + transform: scale(3.0, 1.1) + } + .tml-crooked-4 { + transform: scale(4.0, 1.1) + } +} + +/* flex-wrap for line-breaking in Chromium */ +math { + display: inline-flex; + flex-wrap: wrap; + align-items: baseline; +} +math > mrow { + padding: 0.5ex 0ex; +} + +/* Avoid flex-wrap in Firefox */ +@-moz-document url-prefix() { + math { display: inline; } + math > mrow { padding: 0 } +} + +/* AMS environment auto-numbering via CSS counter. */ +.tml-eqn::before { + counter-increment: tmlEqnNo; + content: "(" counter(tmlEqnNo) ")"; +} + +body { + counter-reset: tmlEqnNo; +} diff --git a/js/temml/Temml.woff2 b/js/temml/Temml.woff2 new file mode 100644 index 0000000..fccefda Binary files /dev/null and b/js/temml/Temml.woff2 differ diff --git a/js/temml/auto-render.min.js b/js/temml/auto-render.min.js new file mode 100644 index 0000000..55bcd20 --- /dev/null +++ b/js/temml/auto-render.min.js @@ -0,0 +1 @@ +var renderMathInElement=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);const r=function(e,t,n){let r=n,a=0;const i=e.length;for(;re.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;n=e.search(l),-1!==n;){n>0&&(i.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));const l=t.findIndex((t=>e.startsWith(t.left)));if(n=r(t[l].right,e,t[l].left.length),-1===n)break;const o=e.slice(0,n+t[l].right.length),s=a.test(o)?o:e.slice(t[l].left.length,n);i.push({type:"math",data:s,rawData:o,display:t[l].display}),e=e.slice(n+t[l].right.length)}return""!==e&&i.push({type:"text",data:e}),i}(e,t.delimiters);if(1===i.length&&"text"===i[0].type)return null;const l=document.createDocumentFragment();for(let e=0;e-1===e.indexOf(" "+t+" ")))&&l(r,t)}}};return function(e,t){if(!e)throw new Error("No element provided to render");const r={};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},l(e,r),n.default.postProcess(e)}}(temml); \ No newline at end of file diff --git a/js/temml/temml.min.js b/js/temml/temml.min.js new file mode 100644 index 0000000..3b9b2f8 --- /dev/null +++ b/js/temml/temml.min.js @@ -0,0 +1 @@ +var temml=function(){"use strict";class e{constructor(t,r){let n,o=" "+t;const s=r&&r.loc;if(s&&s.start<=s.end){const e=s.lexer.input;n=s.start;const t=s.end;n===e.length?o+=" at end of input: ":o+=" at position "+(n+1)+": ";const r=e.slice(n,t).replace(/[^]/g,"$&̲");let a,i;a=n>15?"…"+e.slice(n-15,n):e.slice(0,n),i=t+15":">","<":"<",'"':""","'":"'"},n=/[&><"']/g;const o=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?o(e.body[0]):e:"font"===e.type?o(e.body):e};var s={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(n,(e=>r[e]))},hyphenate:function(e){return e.replace(t,"-$1").toLowerCase()},getBaseElem:o,isCharacterBox:function(e){const t=o(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^\s*([^\\/#]*?)(?::|�*58|�*3a)/i.exec(e);return null!=t?t[1]:"_relative"},round:function(e){return+e.toFixed(4)}};class a{constructor(e){e=e||{},this.displayMode=s.deflt(e.displayMode,!1),this.annotate=s.deflt(e.annotate,!1),this.leqno=s.deflt(e.leqno,!1),this.throwOnError=s.deflt(e.throwOnError,!1),this.errorColor=s.deflt(e.errorColor,"#b22222"),this.macros=e.macros||{},this.wrap=s.deflt(e.wrap,"tex"),this.xml=s.deflt(e.xml,!1),this.colorIsTextColor=s.deflt(e.colorIsTextColor,!1),this.strict=s.deflt(e.strict,!1),this.trust=s.deflt(e.trust,!1),this.maxSize=void 0===e.maxSize?[1/0,1/0]:Array.isArray(e.maxSize)?e.maxSize:[1/0,1/0],this.maxExpand=Math.max(0,s.deflt(e.maxExpand,1e3))}isTrusted(e){e.url&&!e.protocol&&(e.protocol=s.protocolFromUrl(e.url));const t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)}}const i={},l={};function c({type:e,names:t,props:r,handler:n,mathmlBuilder:o}){const s={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:n};for(let e=0;ee.toText())).join("")}}const h=function(e){return e.filter((e=>e)).join(" ")},g=function(e,t){this.classes=e||[],this.attributes={},this.style=t||{}},f=function(e){const t=document.createElement(e);t.className=h(this.classes);for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t.style[e]=this.style[e]);for(const e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(let e=0;e`,t};class y{constructor(e,t,r){g.call(this,e,r),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}toNode(){return f.call(this,"span")}toMarkup(){return b.call(this,"span")}}class w{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return s.escape(this.text)}}class x{constructor(e,t,r){this.alt=t,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){const e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);return e}toMarkup(){let e=`${this.alt}0&&(e.className=h(this.classes));for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(let t=0;t0&&(e+=` class="${s.escape(h(this.classes))}"`);let t="";for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t+=`${s.hyphenate(e)}:${this.style[e]};`);t&&(e+=` style="${t}"`),e+=">";for(let t=0;t",e}toText(){return this.children.map((e=>e.toText())).join("")}}class v{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return s.escape(this.toText())}toText(){return this.text}}const A=e=>{let t;return 1===e.length&&"mrow"===e[0].type?(t=e.pop(),t.type="mstyle"):t=new k("mstyle",e),t};var N={MathNode:k,TextNode:v,newDocumentFragment:function(e){return new d(e)}};const T=e=>{let t=0;if(e.body)for(const r of e.body)t+=T(r);else if("supsub"===e.type)t+=T(e.base),e.sub&&(t+=.7*T(e.sub)),e.sup&&(t+=.7*T(e.sup));else if("mathord"===e.type||"textord"===e.type)for(const r of e.text.split("")){const e=r.codePointAt(0);t+=96{const t=S(e.label);if(O.includes(e.label)){const r=T(e.base);1","\\gt",!0),I(F,V,"∈","\\in",!0),I(F,V,"∉","\\notin",!0),I(F,V,"","\\@not"),I(F,V,"⊂","\\subset",!0),I(F,V,"⊃","\\supset",!0),I(F,V,"⊆","\\subseteq",!0),I(F,V,"⊇","\\supseteq",!0),I(F,V,"⊈","\\nsubseteq",!0),I(F,V,"⊈","\\nsubseteqq"),I(F,V,"⊉","\\nsupseteq",!0),I(F,V,"⊉","\\nsupseteqq"),I(F,V,"⊨","\\models"),I(F,V,"←","\\leftarrow",!0),I(F,V,"≤","\\le"),I(F,V,"≤","\\leq",!0),I(F,V,"<","\\lt",!0),I(F,V,"→","\\rightarrow",!0),I(F,V,"→","\\to"),I(F,V,"≱","\\ngeq",!0),I(F,V,"≱","\\ngeqq"),I(F,V,"≱","\\ngeqslant"),I(F,V,"≰","\\nleq",!0),I(F,V,"≰","\\nleqq"),I(F,V,"≰","\\nleqslant"),I(F,V,"⫫","\\Perp",!0),I(F,_," ","\\ "),I(F,_," ","\\space"),I(F,_," ","\\nobreakspace"),I(L,_," ","\\ "),I(L,_," "," "),I(L,_," ","\\space"),I(L,_," ","\\nobreakspace"),I(F,_,null,"\\nobreak"),I(F,_,null,"\\allowbreak"),I(F,H,",",","),I(L,H,":",":"),I(F,H,";",";"),I(F,G,"⊼","\\barwedge",!0),I(F,G,"⊻","\\veebar",!0),I(F,G,"⊙","\\odot",!0),I(F,G,"⊕︎","\\oplus"),I(F,G,"⊗","\\otimes",!0),I(F,W,"∂","\\partial",!0),I(F,G,"⊘","\\oslash",!0),I(F,G,"⊚","\\circledcirc",!0),I(F,G,"⊡","\\boxdot",!0),I(F,G,"△","\\bigtriangleup"),I(F,G,"▽","\\bigtriangledown"),I(F,G,"†","\\dagger"),I(F,G,"⋄","\\diamond"),I(F,G,"⋆","\\star"),I(F,G,"◃","\\triangleleft"),I(F,G,"▹","\\triangleright"),I(F,U,"{","\\{"),I(L,W,"{","\\{"),I(L,W,"{","\\textbraceleft"),I(F,D,"}","\\}"),I(L,W,"}","\\}"),I(L,W,"}","\\textbraceright"),I(F,U,"{","\\lbrace"),I(F,D,"}","\\rbrace"),I(F,U,"[","\\lbrack",!0),I(L,W,"[","\\lbrack",!0),I(F,D,"]","\\rbrack",!0),I(L,W,"]","\\rbrack",!0),I(F,U,"(","\\lparen",!0),I(F,D,")","\\rparen",!0),I(L,W,"<","\\textless",!0),I(L,W,">","\\textgreater",!0),I(F,U,"⌊","\\lfloor",!0),I(F,D,"⌋","\\rfloor",!0),I(F,U,"⌈","\\lceil",!0),I(F,D,"⌉","\\rceil",!0),I(F,W,"\\","\\backslash"),I(F,W,"|","|"),I(F,W,"|","\\vert"),I(L,W,"|","\\textbar",!0),I(F,W,"‖","\\|"),I(F,W,"‖","\\Vert"),I(L,W,"‖","\\textbardbl"),I(L,W,"~","\\textasciitilde"),I(L,W,"\\","\\textbackslash"),I(L,W,"^","\\textasciicircum"),I(F,V,"↑","\\uparrow",!0),I(F,V,"⇑","\\Uparrow",!0),I(F,V,"↓","\\downarrow",!0),I(F,V,"⇓","\\Downarrow",!0),I(F,V,"↕","\\updownarrow",!0),I(F,V,"⇕","\\Updownarrow",!0),I(F,j,"∐","\\coprod"),I(F,j,"⋁","\\bigvee"),I(F,j,"⋀","\\bigwedge"),I(F,j,"⨄","\\biguplus"),I(F,j,"⋂","\\bigcap"),I(F,j,"⋃","\\bigcup"),I(F,j,"∫","\\int"),I(F,j,"∫","\\intop"),I(F,j,"∬","\\iint"),I(F,j,"∭","\\iiint"),I(F,j,"∏","\\prod"),I(F,j,"∑","\\sum"),I(F,j,"⨂","\\bigotimes"),I(F,j,"⨁","\\bigoplus"),I(F,j,"⨀","\\bigodot"),I(F,j,"∮","\\oint"),I(F,j,"∯","\\oiint"),I(F,j,"∰","\\oiiint"),I(F,j,"∱","\\intclockwise"),I(F,j,"∲","\\varointclockwise"),I(F,j,"⨌","\\iiiint"),I(F,j,"⨍","\\intbar"),I(F,j,"⨎","\\intBar"),I(F,j,"⨏","\\fint"),I(F,j,"⨒","\\rppolint"),I(F,j,"⨓","\\scpolint"),I(F,j,"⨕","\\pointint"),I(F,j,"⨖","\\sqint"),I(F,j,"⨗","\\intlarhk"),I(F,j,"⨘","\\intx"),I(F,j,"⨙","\\intcap"),I(F,j,"⨚","\\intcup"),I(F,j,"⨅","\\bigsqcap"),I(F,j,"⨆","\\bigsqcup"),I(F,j,"∫","\\smallint"),I(L,P,"…","\\textellipsis"),I(F,P,"…","\\mathellipsis"),I(L,P,"…","\\ldots",!0),I(F,P,"…","\\ldots",!0),I(F,P,"⋰","\\iddots",!0),I(F,P,"⋯","\\@cdots",!0),I(F,P,"⋱","\\ddots",!0),I(F,W,"⋮","\\varvdots"),I(F,$,"ˊ","\\acute"),I(F,$,"`","\\grave"),I(F,$,"¨","\\ddot"),I(F,$,"…","\\dddot"),I(F,$,"….","\\ddddot"),I(F,$,"~","\\tilde"),I(F,$,"‾","\\bar"),I(F,$,"˘","\\breve"),I(F,$,"ˇ","\\check"),I(F,$,"^","\\hat"),I(F,$,"→","\\vec"),I(F,$,"˙","\\dot"),I(F,$,"˚","\\mathring"),I(F,R,"ı","\\imath",!0),I(F,R,"ȷ","\\jmath",!0),I(F,W,"ı","ı"),I(F,W,"ȷ","ȷ"),I(L,W,"ı","\\i",!0),I(L,W,"ȷ","\\j",!0),I(L,W,"ß","\\ss",!0),I(L,W,"æ","\\ae",!0),I(L,W,"œ","\\oe",!0),I(L,W,"ø","\\o",!0),I(F,R,"ø","\\o",!0),I(L,W,"Æ","\\AE",!0),I(L,W,"Œ","\\OE",!0),I(L,W,"Ø","\\O",!0),I(F,R,"Ø","\\O",!0),I(L,$,"ˊ","\\'"),I(L,$,"ˋ","\\`"),I(L,$,"ˆ","\\^"),I(L,$,"˜","\\~"),I(L,$,"ˉ","\\="),I(L,$,"˘","\\u"),I(L,$,"˙","\\."),I(L,$,"¸","\\c"),I(L,$,"˚","\\r"),I(L,$,"ˇ","\\v"),I(L,$,"¨",'\\"'),I(L,$,"˝","\\H"),I(F,$,"ˊ","\\'"),I(F,$,"ˋ","\\`"),I(F,$,"ˆ","\\^"),I(F,$,"˜","\\~"),I(F,$,"ˉ","\\="),I(F,$,"˘","\\u"),I(F,$,"˙","\\."),I(F,$,"¸","\\c"),I(F,$,"˚","\\r"),I(F,$,"ˇ","\\v"),I(F,$,"¨",'\\"'),I(F,$,"˝","\\H");const X={"--":!0,"---":!0,"``":!0,"''":!0};I(L,W,"–","--",!0),I(L,W,"–","\\textendash"),I(L,W,"—","---",!0),I(L,W,"—","\\textemdash"),I(L,W,"‘","`",!0),I(L,W,"‘","\\textquoteleft"),I(L,W,"’","'",!0),I(L,W,"’","\\textquoteright"),I(L,W,"“","``",!0),I(L,W,"“","\\textquotedblleft"),I(L,W,"”","''",!0),I(L,W,"”","\\textquotedblright"),I(F,W,"°","\\degree",!0),I(L,W,"°","\\degree"),I(L,W,"°","\\textdegree",!0),I(F,W,"£","\\pounds"),I(F,W,"£","\\mathsterling",!0),I(L,W,"£","\\pounds"),I(L,W,"£","\\textsterling",!0),I(F,W,"✠","\\maltese"),I(L,W,"✠","\\maltese"),I(F,W,"€","\\euro",!0),I(L,W,"€","\\euro",!0),I(L,W,"€","\\texteuro"),I(F,W,"©","\\copyright",!0),I(L,W,"©","\\textcopyright"),I(F,W,"𝛤","\\varGamma"),I(F,W,"𝛥","\\varDelta"),I(F,W,"𝛩","\\varTheta"),I(F,W,"𝛬","\\varLambda"),I(F,W,"𝛯","\\varXi"),I(F,W,"𝛱","\\varPi"),I(F,W,"𝛴","\\varSigma"),I(F,W,"𝛶","\\varUpsilon"),I(F,W,"𝛷","\\varPhi"),I(F,W,"𝛹","\\varPsi"),I(F,W,"𝛺","\\varOmega"),I(L,W,"𝛤","\\varGamma"),I(L,W,"𝛥","\\varDelta"),I(L,W,"𝛩","\\varTheta"),I(L,W,"𝛬","\\varLambda"),I(L,W,"𝛯","\\varXi"),I(L,W,"𝛱","\\varPi"),I(L,W,"𝛴","\\varSigma"),I(L,W,"𝛶","\\varUpsilon"),I(L,W,"𝛷","\\varPhi"),I(L,W,"𝛹","\\varPsi"),I(L,W,"𝛺","\\varOmega");const Z='0123456789/@."';for(let e=0;e{if("mrow"!==e.type)return e;if(0===e.children.length)return e;if(!e.children[0].attributes||"mtext"!==e.children[0].type)return e;const t=e.children[0].attributes.mathvariant||"",r=new N.MathNode("mtext",[new N.TextNode(e.children[0].children[0].text)]);for(let n=1;n0&&" "===r.children[0].text.charAt(n-1)&&(r.children[0].text=r.children[0].text.slice(0,-1)+" "),r},re=/^[0-9]$/,ne=function(e){return 1!==e.length||e[0]instanceof d?new N.MathNode("mrow",e):e[0]},oe=e=>"atom"===e.type&&"rel"===e.family||"mclass"===e.type&&"mrel"===e.mclass,se=function(e,t,r){if(1===e.length){const n=ie(e[0],t);return r&&n instanceof k&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}(e=>{if(e.length<2)return;const t=[];let r=!1;for(let n=0;n0;r--)t[r-1].end===t[r].start-2&&("atom"===(n=e[t[r].start-1]).type&&","===n.text||"textord"===n.type&&"."===n.text)&&(t[r-1].end=t[r].end,t.splice(r,1));var n;for(let r=t.length-1;r>=0;r--){for(let n=t[r].start+1;n<=t[r].end;n++)e[t[r].start].text+=e[n].text;e.splice(t[r].start+1,t[r].end-t[r].start)}})(e);const n=[];for(let r=0;r0&&oe(e[r])&&oe(e[r-1])&&o.setAttribute("lspace","0em"),n.push(o)}return n},ae=function(e,t,r){return ne(se(e,t,r))},ie=function(t,r){if(!t)return new N.MathNode("mrow");if(l[t.type]){return l[t.type](t,r)}throw new e("Got group of unknown type: '"+t.type+"'")},le=e=>new N.MathNode("mtd",[],[],{padding:"0",width:"50%"});function ce(e,t,r,n){let o=null;1===e.length&&"tag"===e[0].type&&(o=e[0].tag,e=e[0].body);const s=se(e,r),a=n.displayMode||n.annotate?"none":n.wrap,i=0===s.length?null:s[0];let l=1===s.length&&null===o&&i instanceof k?s[0]:function(e,t,r){const n=[];let o=[],s=[],a=0,i=0,l=0;for(;i0&&o.push(new N.MathNode("mrow",s)),o.push(r),s=[];const e=new N.MathNode("mtd",o);e.style.textAlign="left",n.push(new N.MathNode("mtr",[e])),o=[],i+=1}else{if(s.push(r),r.type&&"mo"===r.type&&1===r.children.length){const n=r.children[0].text;if("([{⌊⌈⟨⟮⎰⟦⦃".indexOf(n)>-1)l+=1;else if(")]}⌋⌉⟩⟯⎱⟦⦄".indexOf(n)>-1)l-=1;else if(0===l&&"="===t&&"="===n){if(a+=1,a>1){s.pop();const e=new N.MathNode("mrow",s);o.push(e),s=[r]}}else if(0===l&&"tex"===t){const t=i0){const e=new N.MathNode("mrow",s);o.push(e)}if(n.length>0){const e=new N.MathNode("mtd",o);e.style.textAlign="left";const t=new N.MathNode("mtr",[e]);n.push(t);const s=new N.MathNode("mtable",n);return r||(s.setAttribute("columnalign","left"),s.setAttribute("rowspacing","0em")),s}return N.newDocumentFragment(o)}(s,a,n.displayMode);if(o&&(l=((e,t,r,n)=>{t=ae(t[0].body,r),(t=te(t)).classes.push("tml-tag"),e=new N.MathNode("mtd",[e]);const o=[le(),e,le()];n?(o[0].children.push(t),o[0].style.textAlign="-webkit-left"):(o[2].children.push(t),o[2].style.textAlign="-webkit-right");const s=new N.MathNode("mtr",o,["tml-tageqn"]),a=new N.MathNode("mtable",[s]);return a.style.width="100%",a.setAttribute("displaystyle","true"),a})(l,o,r,n.leqno)),n.annotate){const e=new N.MathNode("annotation",[new N.TextNode(t)]);e.setAttribute("encoding","application/x-tex"),l=new N.MathNode("semantics",[l,e])}const c=new N.MathNode("math",[l]);return n.xml&&c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n.displayMode&&(c.setAttribute("display","block"),c.style.display="block math",c.classes=["tml-display"]),c}const me=(e,t)=>{const r=e.isStretchy?M(e):new N.MathNode("mo",[ee(e.label,e.mode)]);"\\vec"===e.label?r.style.transform="scale(0.75) translate(10%, 30%)":(r.style.mathStyle="normal",r.style.mathDepth="0"),e.isStretchy||r.setAttribute("stretchy","false");return new N.MathNode("\\c"===e.label?"munder":"mover",[ie(e.base,t),r])},ue=new Set(["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"]);c({type:"accent",names:["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\overparen","\\widecheck","\\widehat","\\wideparen","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{const r=u(t[0]),n=!ue.has(e.funcName);return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,base:r}},mathmlBuilder:me}),c({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\c","\\u","\\.",'\\"',"\\r","\\H","\\v"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{const r=u(t[0]),n=e.parser.mode;return"math"===n&&e.parser.settings.strict&&console.log(`Temml parse error: Command ${e.funcName} is invalid in math mode.`),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,base:r}},mathmlBuilder:me}),c({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underparen","\\utilde"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>{const n=r[0];return{type:"accentUnder",mode:e.mode,label:t,base:n}},mathmlBuilder:(e,t)=>{const r=M(e);r.style["math-depth"]=0;return new N.MathNode("munder",[ie(e.base,t),r])}});const pe={pt:800/803,pc:9600/803,dd:1238/1157*800/803,cc:12.792133216944668,nd:685/642*800/803,nc:1370/107*800/803,sp:1/65536*800/803,mm:25.4/72,cm:2.54/72,in:1/72,px:96/72},de=["em","ex","mu","pt","mm","cm","in","px","bp","pc","dd","cc","nd","nc","sp"],he=function(e){return"string"!=typeof e&&(e=e.unit),de.indexOf(e)>-1},ge=e=>[1,.7,.5][Math.max(e-1,0)],fe=function(t,r){let n=t.number;if(r.maxSize[0]<0&&n>0)return{number:0,unit:"em"};const o=t.unit;switch(o){case"mm":case"cm":case"in":case"px":return n*pe[o]>r.maxSize[1]?{number:r.maxSize[1],unit:"pt"}:{number:n,unit:o};case"em":case"ex":return"ex"===o&&(n*=.431),n=Math.min(n/ge(r.level),r.maxSize[0]),{number:s.round(n),unit:"em"};case"bp":return n>r.maxSize[1]&&(n=r.maxSize[1]),{number:n,unit:"pt"};case"pt":case"pc":case"dd":case"cc":case"nd":case"nc":case"sp":return n=Math.min(n*pe[o],r.maxSize[1]),{number:s.round(n),unit:"pt"};case"mu":return n=Math.min(n/18,r.maxSize[0]),{number:s.round(n),unit:"em"};default:throw new e("Invalid unit: '"+o+"'")}},be=e=>{const t=new N.MathNode("mspace");return t.setAttribute("width",e+"em"),t},ye=(e,t=.3,r=0)=>{if(null==e&&0===r)return be(t);const n=e?[e]:[];return 0!==t&&n.unshift(be(t)),r>0&&n.push(be(r)),new N.MathNode("mrow",n)},we=(e,t)=>Number(e)/ge(t),xe=(e,t,r,n)=>{const o=B(e),s="eq"===e.slice(1,3),a="x"===e.charAt(1)?"1.75":"cd"===e.slice(2,4)?"3.0":s?"1.0":"2.0";o.setAttribute("lspace","0"),o.setAttribute("rspace",s?"0.5em":"0");const i=n.withLevel(n.level<2?2:3),l=we(a,i.level),c=we(a,3),m=ye(null,l.toFixed(4),0),u=ye(null,c.toFixed(4),0),p=we(s?0:.3,i.level).toFixed(4);let d,h;const g=t&&t.body&&(t.body.body||t.body.length>0);if(g){let e=ie(t,i);e=ye(e,p,p),d=new N.MathNode("mover",[e,u])}const f=r&&r.body&&(r.body.body||r.body.length>0);if(f){let e=ie(r,i);e=ye(e,p,p),h=new N.MathNode("munder",[e,u])}let b;return b=g||f?g&&f?new N.MathNode("munderover",[o,h,d]):g?new N.MathNode("mover",[o,d]):new N.MathNode("munder",[o,h]):new N.MathNode("mover",[o,m]),"3.0"===a&&(b.style.height="1em"),b.setAttribute("accent","false"),b};c({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\yields","\\yieldsLeft","\\mesomerism","\\longrightharpoonup","\\longleftharpoondown","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:({parser:e,funcName:t},r,n)=>({type:"xArrow",mode:e.mode,name:t,body:r[0],below:n[0]}),mathmlBuilder(e,t){const r=[xe(e.name,e.body,e.below,t)];return r.unshift(be(.2778)),r.push(be(.2778)),new N.MathNode("mrow",r)}});const ke={"\\xtofrom":["\\xrightarrow","\\xleftarrow"],"\\xleftrightharpoons":["\\xleftharpoonup","\\xrightharpoondown"],"\\xrightleftharpoons":["\\xrightharpoonup","\\xleftharpoondown"],"\\yieldsLeftRight":["\\yields","\\yieldsLeft"],"\\equilibrium":["\\longrightharpoonup","\\longleftharpoondown"],"\\equilibriumRight":["\\longrightharpoonup","\\eqleftharpoondown"],"\\equilibriumLeft":["\\eqrightharpoonup","\\longleftharpoondown"]};function ve(e,t){if(!e||e.type!==t)throw new Error(`Expected node of type ${t}, but got `+(e?`node of type ${e.type}`:String(e)));return e}function Ae(e){const t=Ne(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?`node of type ${e.type}`:String(e)));return t}function Ne(e){return e&&("atom"===e.type||Object.prototype.hasOwnProperty.call(z,e.type))?e:null}c({type:"stackedArrow",names:["\\xtofrom","\\xleftrightharpoons","\\xrightleftharpoons","\\yieldsLeftRight","\\equilibrium","\\equilibriumRight","\\equilibriumLeft"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e,funcName:t},r,n){const o=r[0]?{type:"hphantom",mode:e.mode,body:r[0]}:null,s=n[0]?{type:"hphantom",mode:e.mode,body:n[0]}:null;return{type:"stackedArrow",mode:e.mode,name:t,body:r[0],upperArrowBelow:s,lowerArrowBody:o,below:n[0]}},mathmlBuilder(e,t){const r=ke[e.name][0],n=ke[e.name][1],o=xe(r,e.body,e.upperArrowBelow,t),s=xe(n,e.lowerArrowBody,e.below,t);let a;const i=new N.MathNode("mpadded",[o]);if(i.setAttribute("voffset","0.3em"),i.setAttribute("height","+0.3em"),i.setAttribute("depth","-0.3em"),"\\equilibriumLeft"===e.name){const e=new N.MathNode("mpadded",[s]);e.setAttribute("width","0.5em"),a=new N.MathNode("mpadded",[be(.2778),e,i,be(.2778)])}else i.setAttribute("width","\\equilibriumRight"===e.name?"0.5em":"0"),a=new N.MathNode("mpadded",[be(.2778),i,s,be(.2778)]);return a.setAttribute("voffset","-0.18em"),a.setAttribute("height","-0.18em"),a.setAttribute("depth","+0.18em"),a}});const Te={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},qe=e=>"textord"===e.type&&"@"===e.text;function Se(e,t,r){const n=Te[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{const e={type:"atom",text:n,mode:"math",family:"rel"},o={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[e],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[o],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{const e={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[e],[])}default:return{type:"textord",text:" ",mode:"math"}}}c({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"cdlabel",mode:e.mode,side:t.slice(4),label:r[0]}),mathmlBuilder(e,t){let r=new N.MathNode("mrow",[ie(e.label,t)]);return r=new N.MathNode("mpadded",[r]),r.setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new N.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),c({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:({parser:e},t)=>({type:"cdlabelparent",mode:e.mode,fragment:t[0]}),mathmlBuilder:(e,t)=>new N.MathNode("mrow",[ie(e.fragment,t)])}),c({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler({parser:t,token:r},n){const o=ve(n[0],"ordgroup").body;let s="";for(let e=0;e{let t=e.toString(16);return 1===t.length&&(t="0"+t),t},Ie=JSON.parse('{\n "Apricot": "#ffb484",\n "Aquamarine": "#08b4bc",\n "Bittersweet": "#c84c14",\n "blue": "#0000FF",\n "Blue": "#303494",\n "BlueGreen": "#08b4bc",\n "BlueViolet": "#503c94",\n "BrickRed": "#b8341c",\n "brown": "#BF8040",\n "Brown": "#802404",\n "BurntOrange": "#f8941c",\n "CadetBlue": "#78749c",\n "CarnationPink": "#f884b4",\n "Cerulean": "#08a4e4",\n "CornflowerBlue": "#40ace4",\n "cyan": "#00FFFF",\n "Cyan": "#08acec",\n "Dandelion": "#ffbc44",\n "darkgray": "#404040",\n "DarkOrchid": "#a8548c",\n "Emerald": "#08ac9c",\n "ForestGreen": "#089c54",\n "Fuchsia": "#90348c",\n "Goldenrod": "#ffdc44",\n "gray": "#808080",\n "Gray": "#98949c",\n "green": "#00FF00",\n "Green": "#08a44c",\n "GreenYellow": "#e0e474",\n "JungleGreen": "#08ac9c",\n "Lavender": "#f89cc4",\n "lightgray": "#c0c0c0",\n "lime": "#BFFF00",\n "LimeGreen": "#90c43c",\n "magenta": "#FF00FF",\n "Magenta": "#f0048c",\n "Mahogany": "#b0341c",\n "Maroon": "#b03434",\n "Melon": "#f89c7c",\n "MidnightBlue": "#086494",\n "Mulberry": "#b03c94",\n "NavyBlue": "#086cbc",\n "olive": "#7F7F00",\n "OliveGreen": "#407c34",\n "orange": "#FF8000",\n "Orange": "#f8843c",\n "OrangeRed": "#f0145c",\n "Orchid": "#b074ac",\n "Peach": "#f8945c",\n "Periwinkle": "#8074bc",\n "PineGreen": "#088c74",\n "pink": "#ff7f7f",\n "Plum": "#98248c",\n "ProcessBlue": "#08b4ec",\n "purple": "#BF0040",\n "Purple": "#a0449c",\n "RawSienna": "#983c04",\n "red": "#ff0000",\n "Red": "#f01c24",\n "RedOrange": "#f86434",\n "RedViolet": "#a0246c",\n "Rhodamine": "#f0549c",\n "Royallue": "#0874bc",\n "RoyalPurple": "#683c9c",\n "RubineRed": "#f0047c",\n "Salmon": "#f8948c",\n "SeaGreen": "#30bc9c",\n "Sepia": "#701404",\n "SkyBlue": "#48c4dc",\n "SpringGreen": "#c8dc64",\n "Tan": "#e09c74",\n "teal": "#007F7F",\n "TealBlue": "#08acb4",\n "Thistle": "#d884b4",\n "Turquoise": "#08b4cc",\n "violet": "#800080",\n "Violet": "#60449c",\n "VioletRed": "#f054a4",\n "WildStrawberry": "#f0246c",\n "yellow": "#FFFF00",\n "Yellow": "#fff404",\n "YellowGreen": "#98cc6c",\n "YellowOrange": "#ffa41c"\n}'),Fe=(t,r)=>{let n="";if("HTML"===t){if(!Oe.test(r))throw new e("Invalid HTML input.");n=r}else if("RGB"===t){if(!Me.test(r))throw new e("Invalid RGB input.");r.split(",").map((e=>{n+=Ee(Number(e.trim()))}))}else{if(!Ce.test(r))throw new e("Invalid rbg input.");r.split(",").map((t=>{const r=Number(t.trim());if(r>1)throw new e("Color rgb input must be < 1.");n+=Ee(Number((255*r).toFixed(0)))}))}return"#"!==n.charAt(0)&&(n="#"+n),n},Le=(t,r,n)=>{const o=`\\\\color@${t}`;if(!Be.exec(t))throw new e("Invalid color: '"+t+"'",n);return ze.test(t)?"#"+t:("#"===t.charAt(0)||(r.has(o)?t=r.get(o).tokens[0].text:Ie[t]&&(t=Ie[t])),t)},$e=(e,t)=>{let r=se(e.body,t.withColor(e.color));return r=r.map((t=>(t.style.color=e.color,t))),N.newDocumentFragment(r)};c({type:"color",names:["\\textcolor"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","original"]},handler({parser:e,token:t},r,n){const o=n[0]&&ve(n[0],"raw").string;let s="";if(o){const e=ve(r[0],"raw").string;s=Fe(o,e)}else s=Le(ve(r[0],"raw").string,e.gullet.macros,t);const a=r[1];return{type:"color",mode:e.mode,color:s,body:p(a)}},mathmlBuilder:$e}),c({type:"color",names:["\\color"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw"]},handler({parser:e,token:t},r,n){const o=n[0]&&ve(n[0],"raw").string;let s="";if(o){const e=ve(r[0],"raw").string;s=Fe(o,e)}else s=Le(ve(r[0],"raw").string,e.gullet.macros,t);e.gullet.macros.set("\\current@color",s);const a=e.parseExpression(!0,"\\color");return{type:"color",mode:e.mode,color:s,body:a}},mathmlBuilder:$e}),c({type:"color",names:["\\definecolor"],props:{numArgs:3,allowedInText:!0,argTypes:["raw","raw","raw"]},handler({parser:t,funcName:r,token:n},o){const s=ve(o[0],"raw").string;if(!/^[A-Za-z]+$/.test(s))throw new e("Color name must be latin letters.",n);const a=ve(o[1],"raw").string;if(!["HTML","RGB","rgb"].includes(a))throw new e("Color model must be HTML, RGB, or rgb.",n);const i=ve(o[2],"raw").string,l=Fe(a,i);return t.gullet.macros.set(`\\\\color@${s}`,{tokens:[{text:l}],numArgs:0}),{type:"internal",mode:t.mode}}}),c({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler({parser:e},t,r){const n="["===e.gullet.future().text?e.parseSizeGroup(!0):null,o=!e.settings.displayMode;return{type:"cr",mode:e.mode,newLine:o,size:n&&ve(n,"size").value}},mathmlBuilder(e,t){const r=new N.MathNode("mo");if(e.newLine&&(r.setAttribute("linebreak","newline"),e.size)){const n=fe(e.size,t);r.setAttribute("height",n.number+n.unit)}return r}});const Ge={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},De=t=>{const r=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(r))throw new e("Expected a control sequence",t);return r},Pe=(e,t,r,n)=>{let o=e.gullet.macros.get(r.text);null==o&&(r.noexpand=!0,o={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,o,n)};c({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler({parser:t,funcName:r}){t.consumeSpaces();const n=t.fetch();if(Ge[n.text])return"\\global"!==r&&"\\\\globallong"!==r||(n.text=Ge[n.text]),ve(t.parseFunction(),"internal");throw new e("Invalid token after macro prefix",n)}}),c({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n=t.gullet.popToken();const o=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(o))throw new e("Expected a control sequence",n);let s,a=0;const i=[[]];for(;"{"!==t.gullet.future().text;)if(n=t.gullet.popToken(),"#"===n.text){if("{"===t.gullet.future().text){s=t.gullet.future(),i[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new e(`Invalid argument number "${n.text}"`);if(parseInt(n.text)!==a+1)throw new e(`Argument number "${n.text}" out of order`);a++,i.push([])}else{if("EOF"===n.text)throw new e("Expected a macro definition");i[a].push(n.text)}let{tokens:l}=t.gullet.consumeArg();return s&&l.unshift(s),"\\edef"!==r&&"\\xdef"!==r||(l=t.gullet.expandTokens(l),l.reverse()),t.gullet.macros.set(o,{tokens:l,numArgs:a,delimiters:i},r===Ge[r]),{type:"internal",mode:t.mode}}}),c({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=De(e.gullet.popToken());e.gullet.consumeSpaces();const n=(e=>{let t=e.gullet.popToken();return"="===t.text&&(t=e.gullet.popToken()," "===t.text&&(t=e.gullet.popToken())),t})(e);return Pe(e,r,n,"\\\\globallet"===t),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=De(e.gullet.popToken()),n=e.gullet.popToken(),o=e.gullet.popToken();return Pe(e,r,o,"\\\\globalfuture"===t),e.gullet.pushToken(o),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\newcommand","\\renewcommand","\\providecommand"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n="";const o=t.gullet.popToken();"{"===o.text?(n=De(t.gullet.popToken()),t.gullet.popToken()):n=De(o);const s=t.gullet.isDefined(n);if(s&&"\\newcommand"===r)throw new e(`\\newcommand{${n}} attempting to redefine ${n}; use \\renewcommand`);if(!s&&"\\renewcommand"===r)throw new e(`\\renewcommand{${n}} when command ${n} does not yet exist; use \\newcommand`);let a=0;if("["===t.gullet.future().text){let r=t.gullet.popToken();if(r=t.gullet.popToken(),!/^[0-9]$/.test(r.text))throw new e(`Invalid number of arguments: "${r.text}"`);if(a=parseInt(r.text),r=t.gullet.popToken(),"]"!==r.text)throw new e(`Invalid argument "${r.text}"`)}const{tokens:i}=t.gullet.consumeArg();return t.gullet.macros.set(n,{tokens:i,numArgs:a},!t.settings.strict),{type:"internal",mode:t.mode}}});const Re={"\\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}},je=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","\\llbracket","\\rrbracket","⟦","⟦","\\lBrace","\\rBrace","⦃","⦄","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."],Ue=["}","\\left","\\middle","\\right"],He=e=>e.length>0&&(je.includes(e)||Re[e]||Ue.includes(e)),Ve=[0,1.2,1.8,2.4,3];function _e(t,r){"ordgroup"===t.type&&1===t.body.length&&"⁄"===t.body[0].text&&(t={type:"textord",text:"/",mode:"math"});const n=Ne(t);if(n&&je.includes(n.text))return["<","\\lt"].includes(n.text)&&(n.text="⟨"),[">","\\gt"].includes(n.text)&&(n.text="⟩"),"/"===n.text&&(n.text="∕"),"\\backslash"===n.text&&(n.text="∖"),n;throw new e(n?`Invalid delimiter '${n.text}' after '${r.funcName}'`:`Invalid delimiter type '${t.type}'`,t)}c({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{const r=_e(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Re[e.funcName].size,mclass:Re[e.funcName].mclass,delim:r.text}},mathmlBuilder:e=>{const t=[];"."===e.delim&&(e.delim=""),t.push(ee(e.delim,e.mode));const r=new N.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),("∖"===e.delim||e.delim.indexOf("arrow")>-1)&&r.setAttribute("stretchy","true"),r.setAttribute("symmetric","true"),r.setAttribute("minsize",Ve[e.size]+"em"),r.setAttribute("maxsize",Ve[e.size]+"em"),r}}),c({type:"leftright-right",names:["\\right"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=t.parser.gullet.macros.get("\\current@color");if(n&&"string"!=typeof n)throw new e("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:_e(r[0],t).text,color:n}}}),c({type:"leftright",names:["\\left"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{const r=_e(t[0],e),n=e.parser;++n.leftrightDepth;const o=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);const s=ve(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:o,left:r.text,right:s.delim,rightColor:s.color}},mathmlBuilder:(e,t)=>{!function(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}(e);const r=se(e.body,t);"."===e.left&&(e.left="");const n=new N.MathNode("mo",[ee(e.left,e.mode)]);n.setAttribute("fence","true"),n.setAttribute("form","prefix"),("∖"===e.left||e.left.indexOf("arrow")>-1)&&n.setAttribute("stretchy","true"),r.unshift(n),"."===e.right&&(e.right="");const o=new N.MathNode("mo",[ee(e.right,e.mode)]);return o.setAttribute("fence","true"),o.setAttribute("form","postfix"),("∖"===e.right||e.right.indexOf("arrow")>-1)&&o.setAttribute("stretchy","true"),e.rightColor&&(o.style.color=e.rightColor),r.push(o),ne(r)}}),c({type:"middle",names:["\\middle"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=_e(r[0],t);if(!t.parser.leftrightDepth)throw new e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},mathmlBuilder:(e,t)=>{const r=ee(e.delim,e.mode),n=new N.MathNode("mo",[r]);return n.setAttribute("fence","true"),e.delim.indexOf("arrow")>-1&&n.setAttribute("stretchy","true"),n.setAttribute("form","prefix"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});const We=e=>{const t=new N.MathNode("mspace");return t.setAttribute("width","3pt"),t},Xe=(e,t)=>{let r;switch(r=e.label.indexOf("colorbox")>-1||"\\boxed"===e.label?new N.MathNode("mrow",[We(),ie(e.body,t),We()]):new N.MathNode("mrow",[ie(e.body,t)]),e.label){case"\\overline":r.style.padding="0.1em 0 0 0",r.style.borderTop="0.065em solid";break;case"\\underline":r.style.padding="0 0 0.1em 0",r.style.borderBottom="0.065em solid";break;case"\\cancel":r.style.background="linear-gradient(to top left,\nrgba(0,0,0,0) 0%,\nrgba(0,0,0,0) calc(50% - 0.06em),\nrgba(0,0,0,1) 50%,\nrgba(0,0,0,0) calc(50% + 0.06em),\nrgba(0,0,0,0) 100%);";break;case"\\bcancel":r.style.background="linear-gradient(to top right,\nrgba(0,0,0,0) 0%,\nrgba(0,0,0,0) calc(50% - 0.06em),\nrgba(0,0,0,1) 50%,\nrgba(0,0,0,0) calc(50% + 0.06em),\nrgba(0,0,0,0) 100%);";break;case"\\angl":r.style.padding="0.03889em 0.03889em 0 0.03889em",r.style.borderTop="0.049em solid",r.style.borderRight="0.049em solid",r.style.marginRight="0.03889em";break;case"\\sout":r.style["text-decoration"]="line-through 0.08em solid";break;case"\\boxed":r.style={padding:"3pt 0 3pt 0",border:"1px solid"},r.setAttribute("scriptlevel","0"),r.setAttribute("displaystyle","true");break;case"\\fbox":r.style={padding:"3pt",border:"1px solid"};break;case"\\fcolorbox":case"\\colorbox":{const t={padding:"3pt 0 3pt 0"};"\\fcolorbox"===e.label&&(t.border="0.06em solid "+String(e.borderColor)),r.style=t;break}case"\\xcancel":r.style.background="linear-gradient(to top left,\nrgba(0,0,0,0) 0%,\nrgba(0,0,0,0) calc(50% - 0.06em),\nrgba(0,0,0,1) 50%,\nrgba(0,0,0,0) calc(50% + 0.06em),\nrgba(0,0,0,0) 100%),\nlinear-gradient(to top right,\nrgba(0,0,0,0) 0%,\nrgba(0,0,0,0) calc(50% - 0.06em),\nrgba(0,0,0,1) 50%,\nrgba(0,0,0,0) calc(50% + 0.06em),\nrgba(0,0,0,0) 100%);"}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};c({type:"enclose",names:["\\colorbox"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","text"]},handler({parser:e,funcName:t},r,n){const o=n[0]&&ve(n[0],"raw").string;let s="";if(o){const e=ve(r[0],"raw").string;s=Fe(o,e)}else s=Le(ve(r[0],"raw").string,e.gullet.macros);const a=r[1];return{type:"enclose",mode:e.mode,label:t,backgroundColor:s,body:a}},mathmlBuilder:Xe}),c({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","raw","text"]},handler({parser:e,funcName:t},r,n){const o=n[0]&&ve(n[0],"raw").string;let s,a="";if(o){const e=ve(r[0],"raw").string,t=ve(r[0],"raw").string;a=Fe(o,e),s=Fe(o,t)}else a=Le(ve(r[0],"raw").string,e.gullet.macros),s=Le(ve(r[1],"raw").string,e.gullet.macros);const i=r[2];return{type:"enclose",mode:e.mode,label:t,backgroundColor:s,borderColor:a,body:i}},mathmlBuilder:Xe}),c({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:({parser:e},t)=>({type:"enclose",mode:e.mode,label:"\\fbox",body:t[0]})}),c({type:"enclose",names:["\\angl","\\cancel","\\bcancel","\\xcancel","\\sout","\\overline","\\boxed"],props:{numArgs:1},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Xe}),c({type:"enclose",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Xe});const Ze={};function Ye({type:e,names:t,props:r,handler:n,mathmlBuilder:o}){const s={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n};for(let e=0;e{if(!t.parser.settings.displayMode)throw new e(`{${t.envName}} can be used only in display mode.`)},nt=(e,t,r)=>{let n;const o=e.tags.shift();if(o){if(!o.body)return n=new N.MathNode("mtext",[],[]),n;n=ae(o.body,t),n.classes=["tml-tag"]}else{if(e.envClasses.includes("multline")&&(e.leqno&&0!==r||!e.leqno&&r!==e.body.length-1))return n=new N.MathNode("mtext",[],[]),n;n=new N.MathNode("mtext",[],["tml-eqn"])}return n};function ot(t,{cols:r,envClasses:n,addEqnNum:o,singleRow:s,emptySingleRow:a,maxNumCols:i,leqno:l},c){t.gullet.beginGroup(),s||t.gullet.macros.set("\\cr","\\\\\\relax"),o&&(t.gullet.macros.set("\\tag","\\env@tag{\\text{#1}}"),t.gullet.macros.set("\\notag","\\env@notag"),t.gullet.macros.set("\\nonumber","\\env@notag")),t.gullet.beginGroup();let m=[];const u=[m],p=[],d=[];let h;const g=[];for(g.push(tt(t));;){let r=t.parseExpression(!1,s?"\\end":"\\\\");if(o&&!h)for(let e=0;e1||!a)&&u.pop(),g.length{const t=new N.MathNode("mtd",[]);return t.style={padding:"0",width:"50%"},e.envClasses.includes("multline")&&(t.style.width="7.5%"),t},lt=function(e,t){const r=[],n=e.body.length,o=e.hLinesBeforeRow;for(let s=0;s0&&(2===o[0].length?c.children.forEach((e=>{e.style.borderTop="0.15em double"})):c.children.forEach((e=>{e.style.borderTop=o[0][0]?"0.06em dashed":"0.06em solid"}))),o[s+1].length>0&&(2===o[s+1].length?c.children.forEach((e=>{e.style.borderBottom="0.15em double"})):c.children.forEach((e=>{e.style.borderBottom=o[s+1][0]?"0.06em dashed":"0.06em solid"}))),r.push(c)}if(e.envClasses.length>0){const t=e.envClasses.includes("jot")?"0.7":e.envClasses.includes("small")?"0.35":"0.5",n=e.envClasses.includes("abut")||e.envClasses.includes("cases")?"0":e.envClasses.includes("small")?"0.1389":e.envClasses.includes("cd")?"0.25":"0.4",o=0===r.length?0:r[0].children.length,s=(t,r)=>0===t&&0===r||t===o-1&&1===r?"0":"align"!==e.envClasses[0]?n:1===r?"0":e.addEqnNum?t%2?"1":"0":t%2?"0":"1";for(let e=0;e1&&e.envClasses.includes("cases")&&(n.children[1].style.padding=n.children[1].style.padding.replace(/0em$/,"1em")),e.envClasses.includes("cases")||e.envClasses.includes("subarray"))for(const e of n.children)e.style.textAlign="-webkit-left"}}else for(let e=0;e0){const t=e.cols;let r=!1,n=0,o=t.length;for(;"separator"===t[n].type;)n+=1;for(;"separator"===t[o-1].type;)o-=1;if("separator"===t[0].type){const e="separator"===t[1].type?"0.15em double":"|"===t[0].separator?"0.06em solid ":"0.06em dashed ";for(const t of s.children)t.children[0].style.borderLeft=e}let i=e.addEqnNum?0:-1;for(let e=n;e0?a:"center ")+"right "),a&&s.setAttribute("columnalign",a.trim()),e.envClasses.includes("small")&&(s=new N.MathNode("mstyle",[s]),s.setAttribute("scriptlevel","1")),s},ct=function(t,r){-1===t.envName.indexOf("ed")&&rt(t);const n=[],o=ot(t.parser,{cols:n,addEqnNum:"align"===t.envName||"alignat"===t.envName,emptySingleRow:!0,envClasses:["abut","jot"],maxNumCols:"split"===t.envName?2:void 0,leqno:t.parser.settings.leqno},"display");let s,a=0;const i=t.envName.indexOf("at")>-1;if(r[0]&&i){let t="";for(let e=0;e1)throw new e("{subarray} can contain only one column");let o={cols:n,envClasses:["small"]};if(o=ot(t.parser,o,"script"),o.body.length>0&&o.body[0].length>1)throw new e("{subarray} can contain only one column");return o},mathmlBuilder:lt}),Ye({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){const t=ot(e.parser,{cols:[],envClasses:["cases"]},st(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},mathmlBuilder:lt}),Ye({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:ct,mathmlBuilder:lt}),Ye({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:ct,mathmlBuilder:lt}),Ye({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){"gathered"!==e.envName&&rt(e);const t={cols:[],envClasses:["abut","jot"],addEqnNum:"gather"===e.envName,emptySingleRow:!0,leqno:e.parser.settings.leqno};return ot(e.parser,t,"display")},mathmlBuilder:lt}),Ye({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){rt(e);const t={addEqnNum:"equation"===e.envName,emptySingleRow:!0,singleRow:!0,maxNumCols:1,envClasses:["align"],leqno:e.parser.settings.leqno};return ot(e.parser,t,"display")},mathmlBuilder:lt}),Ye({type:"array",names:["multline","multline*"],props:{numArgs:0},handler(e){rt(e);const t={addEqnNum:"multline"===e.envName,maxNumCols:1,envClasses:["jot","multline"],leqno:e.parser.settings.leqno};return ot(e.parser,t,"display")},mathmlBuilder:lt}),Ye({type:"array",names:["CD"],props:{numArgs:0},handler:t=>(rt(t),function(t){const r=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){r.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();const n=t.fetch().text;if("&"!==n&&"\\\\"!==n){if("\\end"===n){0===r[r.length-1].length&&r.pop();break}throw new e("Expected \\\\ or \\cr or \\end",t.nextToken)}t.consume()}let n=[];const o=[n];for(let i=0;i-1);else{if(!("<>AV".indexOf(o)>-1))throw new e('Expected one of "<>AV=|." after @.');for(let t=0;t<2;t++){let n=!0;for(let c=r+1;c({type:"envTag",mode:e.mode,body:t[0]}),mathmlBuilder:(e,t)=>new N.MathNode("mrow")}),c({type:"noTag",names:["\\env@notag"],props:{numArgs:0},handler:({parser:e})=>({type:"noTag",mode:e.mode}),mathmlBuilder:(e,t)=>new N.MathNode("mrow")});const ut=(e,t)=>{const r=e.font,n=t.withFont(r),o=ie(e.body,n);if(0===o.children.length)return o;if("boldsymbol"===r&&["mo","mpadded"].includes(o.type))return o.style.fontWeight="bold",o;let s="mo"===o.children[0].type;for(let e=1;e{const n=u(r[0]);let o=t;return o in pt&&(o=pt[o]),{type:"font",mode:e.mode,font:o.slice(1),body:n}},mathmlBuilder:ut}),c({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:({parser:e,funcName:t,breakOnTokenText:r},n)=>{const{mode:o}=e,s=e.parseExpression(!0,r);return{type:"font",mode:o,font:`math${t.slice(1)}`,body:{type:"ordgroup",mode:e.mode,body:s}}},mathmlBuilder:ut});const dt=["display","text","script","scriptscript"],ht={auto:-1,display:0,text:0,script:1,scriptscript:2},gt=(e,t)=>{const r="auto"===e.scriptLevel?t.incrementLevel():"display"===e.scriptLevel?t.withLevel(Je):"text"===e.scriptLevel?t.withLevel(Qe):t.withLevel(et);let n=new N.MathNode("mfrac",[ie(e.numer,r),ie(e.denom,r)]);if(e.hasBarLine){if(e.barSize){const r=fe(e.barSize,t);n.setAttribute("linethickness",r.number+r.unit)}}else n.setAttribute("linethickness","0px");if(null!=e.leftDelim||null!=e.rightDelim){const t=[];if(null!=e.leftDelim){const r=new N.MathNode("mo",[new N.TextNode(e.leftDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}if(t.push(n),null!=e.rightDelim){const r=new N.MathNode("mo",[new N.TextNode(e.rightDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}n=ne(t)}return"auto"!==e.scriptLevel&&(n=new N.MathNode("mstyle",[n]),n.setAttribute("displaystyle",String("display"===e.scriptLevel)),n.setAttribute("scriptlevel",ht[e.scriptLevel])),n};c({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=r[1];let s=!1,a=null,i=null,l="auto";switch(t){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a="(",i=")";break;case"\\\\bracefrac":a="\\{",i="\\}";break;case"\\\\brackfrac":a="[",i="]";break;default:throw new Error("Unrecognized genfrac command")}switch(t){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text"}return{type:"genfrac",mode:e.mode,continued:!1,numer:n,denom:o,hasBarLine:s,leftDelim:a,rightDelim:i,scriptLevel:l,barSize:null}},mathmlBuilder:gt}),c({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=r[1];return{type:"genfrac",mode:e.mode,continued:!0,numer:n,denom:o,hasBarLine:!0,leftDelim:null,rightDelim:null,scriptLevel:"display",barSize:null}}}),c({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler({parser:e,funcName:t,token:r}){let n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:r}}});const ft=function(e){let t=null;return e.length>0&&(t=e,t="."===t?null:t),t};c({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler({parser:e},t){const r=t[4],n=t[5],o=u(t[0]),s="atom"===o.type&&"open"===o.family?ft(o.text):null,a=u(t[1]),i="atom"===a.type&&"close"===a.family?ft(a.text):null,l=ve(t[2],"size");let c,m=null;l.isBlank?c=!0:(m=l.value,c=m.number>0);let p="auto",d=t[3];if("ordgroup"===d.type){if(d.body.length>0){const e=ve(d.body[0],"textord");p=dt[Number(e.text)]}}else d=ve(d,"textord"),p=dt[Number(d.text)];return{type:"genfrac",mode:e.mode,numer:r,denom:n,continued:!1,hasBarLine:c,barSize:m,leftDelim:s,rightDelim:i,scriptLevel:p}},mathmlBuilder:gt}),c({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:({parser:e,funcName:t,token:r},n)=>({type:"infix",mode:e.mode,replaceWith:"\\\\abovefrac",barSize:ve(n[0],"size").value,token:r})}),c({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(ve(r[1],"infix").barSize),s=r[2],a=o.number>0;return{type:"genfrac",mode:e.mode,numer:n,denom:s,continued:!1,hasBarLine:a,barSize:o,leftDelim:null,rightDelim:null,scriptLevel:"auto"}},mathmlBuilder:gt});c({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"horizBrace",mode:e.mode,label:t,isOver:/^\\over/.test(t),base:r[0]}),mathmlBuilder:(e,t)=>{const r=B(e.label);return r.style["math-depth"]=0,new N.MathNode(e.isOver?"mover":"munder",[ie(e.base,t),r])}}),c({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const o=n[1],s=ve(n[0],"url").url;if(!t.settings.isTrusted({command:"\\href",url:s}))throw new e('Function "\\href" is not trusted',r);return{type:"href",mode:t.mode,href:s,body:p(o)}},mathmlBuilder:(e,t)=>{let r=ae(e.body,t);return r instanceof k||(r=new k("mrow",[r])),r.setAttribute("href",e.href),r}}),c({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const o=ve(n[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:o}))throw new e('Function "\\url" is not trusted',r);const s=[];for(let e=0;e{const s=ve(o[0],"raw").string,a=o[1];if(t.settings.strict)throw new e(`Function "${r}" is disabled in strict mode`,n);let i;const l={};switch(r){case"\\class":l.class=s,i={command:"\\class",class:s};break;case"\\id":l.id=s,i={command:"\\id",id:s};break;case"\\style":l.style=s,i={command:"\\style",style:s};break;case"\\data":{const t=s.split(",");for(let r=0;r{const r=ae(e.body,t),n=[];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/)),r.classes=n;for(const t in e.attributes)"class"!==t&&Object.prototype.hasOwnProperty.call(e.attributes,t)&&r.setAttribute(t,e.attributes[t]);return r}});const bt=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};{const r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new e("Invalid size: '"+t+"' in \\includegraphics");const n={number:+(r[1]+r[2]),unit:r[3]};if(!he(n))throw new e("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n}};c({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:({parser:t,token:r},n,o)=>{let s={number:0,unit:"em"},a={number:.9,unit:"em"},i={number:0,unit:"em"},l="";if(o[0]){const t=ve(o[0],"raw").string.split(",");for(let r=0;r{const r=fe(e.height,t),n={number:0,unit:"em"};e.totalheight.number>0&&e.totalheight.unit===r.unit&&e.totalheight.number>r.number&&(n.number=e.totalheight.number-r.number,n.unit=r.unit);let o=0;e.width.number>0&&(o=fe(e.width,t));const s={height:r.number+n.number+"em"};o.number>0&&(s.width=o.number+o.unit),n.number>0&&(s.verticalAlign=-n.number+n.unit);const a=new x(e.src,e.alt,s);return a.height=r,a.depth=n,new N.MathNode("mtext",[a])}}),c({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler({parser:t,funcName:r,token:n},o){const s=ve(o[0],"size");if(t.settings.strict){const o="m"===r[1],a="mu"===s.value.unit;if(o){if(!a)throw new e(`LaTeX's ${r} supports only mu units, not ${s.value.unit} units`,n);if("math"!==t.mode)throw new e(`LaTeX's ${r} works only in math mode`,n)}else if(a)throw new e(`LaTeX's ${r} doesn't support mu units`,n)}return{type:"kern",mode:t.mode,dimension:s.value}},mathmlBuilder(e,t){const r=fe(e.dimension,t),n="em"===r.unit?yt(r.number):"";if("text"===e.mode&&n.length>0){const e=new N.TextNode(n);return new N.MathNode("mtext",[e])}{const e=new N.MathNode("mspace");return e.setAttribute("width",r.number+r.unit),r.number<0&&(e.style.marginLeft=r.number+r.unit),e}}});const yt=function(e){return e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":""},wt=/[^A-Za-z_0-9-]/g;c({type:"label",names:["\\label"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e},t)=>({type:"label",mode:e.mode,string:t[0].string.replace(wt,"")}),mathmlBuilder(e,t){const r=new N.MathNode("mrow",[],["tml-label"]);return e.string.length>0&&r.setAttribute("id",e.string),r}});const xt=["\\clap","\\llap","\\rlap"];c({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap","\\clap","\\llap","\\rlap"],props:{numArgs:1,allowedInText:!0},handler:({parser:t,funcName:r,token:n},o)=>{if(xt.includes(r)){if(t.settings.strict&&"text"!==t.mode)throw new e(`{${r}} can be used only in text mode.\n Try \\math${r.slice(1)}`,n);r=r.slice(1)}else r=r.slice(5);const s=o[0];return{type:"lap",mode:t.mode,alignment:r,body:s}},mathmlBuilder:(e,t)=>{let r;if("llap"===e.alignment){const n=se(p(e.body),t),o=new N.MathNode("mphantom",n);r=new N.MathNode("mpadded",[o]),r.setAttribute("width","0px")}const n=ie(e.body,t);let o;if("llap"===e.alignment?(n.style.position="absolute",n.style.right="0",n.style.bottom="0",o=new N.MathNode("mpadded",[r,n])):o=new N.MathNode("mpadded",[n]),"rlap"===e.alignment)e.body.body.length>0&&"genfrac"===e.body.body[0].type&&o.setAttribute("lspace","0.16667em");else{const t="llap"===e.alignment?"-1":"-0.5";o.setAttribute("lspace",t+"width"),"llap"===e.alignment?o.style.position="relative":(o.style.display="flex",o.style.justifyContent="center")}return o.setAttribute("width","0px"),o}}),c({type:"ordgroup",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler({funcName:e,parser:t},r){const n=t.mode;t.switchMode("math");const o="\\("===e?"\\)":"$",s=t.parseExpression(!1,o);return t.expect(o),t.switchMode(n),{type:"ordgroup",mode:t.mode,body:s}}}),c({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,r){throw new e(`Mismatched ${t.funcName}`,r)}});c({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:({parser:e},t)=>({type:"mathchoice",mode:e.mode,display:p(t[0]),text:p(t[1]),script:p(t[2]),scriptscript:p(t[3])}),mathmlBuilder:(e,t)=>{const r=((e,t)=>{switch(t.level){case Ke:return e.display;case Je:return e.text;case Qe:return e.script;case et:return e.scriptscript;default:return e.text}})(e,t);return ae(r,t)}});const kt=["text","textord","mathord","atom"],vt=e=>{const t=new N.MathNode("mspace");return t.setAttribute("width",e+"em"),t};function At(e,t){let r;const n=se(e.body,t);if("minner"===e.mclass)r=new N.MathNode("mpadded",n);else if("mord"===e.mclass)e.isCharacterBox||"mathord"===n[0].type?(r=n[0],r.type="mi"):r=new N.MathNode("mi",n);else{r=new N.MathNode("mrow",n),e.mustPromote?(r=n[0],r.type="mo",e.isCharacterBox&&e.body[0].text&&/[A-Za-z]/.test(e.body[0].text)&&r.setAttribute("mathvariant","italic")):r=new N.MathNode("mrow",n);const o=t.level<2;"mrow"===r.type?o&&("mbin"===e.mclass?(r.children.unshift(vt(.2222)),r.children.push(vt(.2222))):"mrel"===e.mclass?(r.children.unshift(vt(.2778)),r.children.push(vt(.2778))):"mpunct"===e.mclass?r.children.push(vt(.1667)):"minner"===e.mclass&&(r.children.unshift(vt(.0556)),r.children.push(vt(.0556)))):"mbin"===e.mclass?(r.attributes.lspace=o?"0.2222em":"0",r.attributes.rspace=o?"0.2222em":"0"):"mrel"===e.mclass?(r.attributes.lspace=o?"0.2778em":"0",r.attributes.rspace=o?"0.2778em":"0"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace=o?"0.1667em":"0"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&o&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em"),"mopen"!==e.mclass&&"mclose"!==e.mclass&&(delete r.attributes.stretchy,delete r.attributes.form)}return r}c({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler({parser:e,funcName:t},r){const n=r[0],o=s.isCharacterBox(n);let a=!0;const i={type:"mathord",text:"",mode:e.mode},l=n.body?n.body:[n];for(const t of l){if(!kt.includes(t.type)){a=!1;break}E[e.mode][t.text]?i.text+=E[e.mode][t.text].replace:t.text?i.text+=t.text:t.body&&t.body.map((e=>{i.text+=e.text}))}return{type:"mclass",mode:e.mode,mclass:"m"+t.slice(5),body:p(a?i:n),isCharacterBox:o,mustPromote:a}},mathmlBuilder:At});const Nt=e=>{const t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};c({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:({parser:e},t)=>({type:"mclass",mode:e.mode,mclass:Nt(t[0]),body:p(t[1]),isCharacterBox:s.isCharacterBox(t[1])})}),c({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler({parser:e,funcName:t},r){const n=r[1],o=r[0],s={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,stack:!0,suppressBaseShift:"\\stackrel"!==t,body:p(n)};return{type:"supsub",mode:o.mode,base:s,sup:"\\underset"===t?null:o,sub:"\\underset"===t?o:null}},mathmlBuilder:At});const Tt=(e,t,r)=>{if(!e)return r;const n=ie(e,t);return"mrow"===n.type&&0===n.children.length?r:n};c({type:"multiscript",names:["\\sideset","\\pres@cript"],props:{numArgs:3},handler({parser:t,funcName:r,token:n},o){if(0===o[2].body.length)throw new e(r+"cannot parse an empty base.");const s=o[2].body[0];if(t.settings.strict&&"\\sideset"===r&&!s.symbol)throw new e("The base of \\sideset must be a big operator. Try \\prescript.");if(o[0].body.length>0&&"supsub"!==o[0].body[0].type||o[1].body.length>0&&"supsub"!==o[1].body[0].type)throw new e("\\sideset can parse only subscripts and superscripts in its first two arguments",n);const a=o[0].body.length>0?o[0].body[0]:null,i=o[1].body.length>0?o[1].body[0]:null;return a||i?a?{type:"multiscript",mode:t.mode,isSideset:"\\sideset"===r,prescripts:a,postscripts:i,base:s}:{type:"styling",mode:t.mode,scriptLevel:"text",body:[{type:"supsub",mode:t.mode,base:s,sup:i.sup,sub:i.sub}]}:s},mathmlBuilder(e,t){const r=ie(e.base,t),n=new N.MathNode("mprescripts"),o=new N.MathNode("none");let s=[];const a=Tt(e.prescripts.sub,t,o),i=Tt(e.prescripts.sup,t,o);if(e.isSideset&&(a.setAttribute("style","text-align: left;"),i.setAttribute("style","text-align: left;")),e.postscripts){s=[r,Tt(e.postscripts.sub,t,o),Tt(e.postscripts.sup,t,o),n,a,i]}else s=[r,n,a,i];return new N.MathNode("mmultiscripts",s)}}),c({type:"not",names:["\\not"],props:{numArgs:1,primitive:!0,allowedInText:!1},handler({parser:e},t){const r=s.isCharacterBox(t[0]);let n;if(r)n=p(t[0]),"\\"===n[0].text.charAt(0)&&(n[0].text=E.math[n[0].text].replace),n[0].text=n[0].text.slice(0,1)+"̸"+n[0].text.slice(1);else{n=[{type:"textord",mode:"math",text:"̸"},{type:"kern",mode:"math",dimension:{number:-.6,unit:"em"}},t[0]]}return{type:"not",mode:e.mode,body:n,isCharacterBox:r}},mathmlBuilder(e,t){if(e.isCharacterBox){return se(e.body,t)[0]}return ae(e.body,t,!0)}});const qt=["textord","mathord","atom"],St=["\\smallint"],Ot=["textord","mathord","ordgroup","close","leftright"],Bt=(e,t)=>{let r;if(e.symbol)r=new k("mo",[ee(e.name,e.mode)]),St.includes(e.name)?r.setAttribute("largeop","false"):r.setAttribute("movablelimits","false");else if(e.body)r=new k("mo",se(e.body,t));else if(r=new k("mi",[new v(e.name.slice(1))]),!e.parentIsSupSub){const t=[r,new k("mo",[ee("⁡","text")])];if(e.needsLeadingSpace){const e=new k("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new k("mspace");e.setAttribute("width","0.1667em"),t.push(e)}r=new k("mrow",t)}return r},Mt={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨅":"\\bigsqcap","⨆":"\\bigsqcup"};c({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcap","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:({parser:e,funcName:t},r)=>{let n=t;return 1===n.length&&(n=Mt[n]),{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!0,stack:!1,name:n}},mathmlBuilder:Bt}),c({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:({parser:e},t)=>{const r=t[0],n=r.body?r.body:[r],o=1===n.length&&qt.includes(n[0].type);return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:o,stack:!1,name:o?n[0].text:null,body:o?null:p(r)}},mathmlBuilder:Bt});const Ct={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint","∱":"\\intclockwise","∲":"\\varointclockwise","⨌":"\\iiiint","⨍":"\\intbar","⨎":"\\intBar","⨏":"\\fint","⨒":"\\rppolint","⨓":"\\scpolint","⨕":"\\pointint","⨖":"\\sqint","⨗":"\\intlarhk","⨘":"\\intx","⨙":"\\intcap","⨚":"\\intcup"};c({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\sgn","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:He(n),needsLeadingSpace:r.length>0&&Ot.includes(r),name:t}},mathmlBuilder:Bt}),c({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:He(n),needsLeadingSpace:r.length>0&&Ot.includes(r),name:t}},mathmlBuilder:Bt}),c({type:"op",names:["\\int","\\iint","\\iiint","\\iiiint","\\oint","\\oiint","\\oiiint","\\intclockwise","\\varointclockwise","\\intbar","\\intBar","\\fint","\\rppolint","\\scpolint","\\pointint","\\sqint","\\intlarhk","\\intx","\\intcap","\\intcup","∫","∬","∭","∮","∯","∰","∱","∲","⨌","⨍","⨎","⨏","⨒","⨓","⨕","⨖","⨗","⨘","⨙","⨚"],props:{numArgs:0},handler({parser:e,funcName:t}){let r=t;return 1===r.length&&(r=Ct[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,stack:!1,name:r}},mathmlBuilder:Bt});const zt={};function Et(e,t){zt[e]=t}c({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=e.prevAtomType,s=e.gullet.future().text;return{type:"operatorname",mode:e.mode,body:p(n),alwaysHandleSupSub:"\\operatornamewithlimits"===t,limits:!1,parentIsSupSub:!1,isFollowedByDelimiter:He(s),needsLeadingSpace:o.length>0&&Ot.includes(o)}},mathmlBuilder:(e,t)=>{let r,n=se(e.body,t.withFont("mathrm")),o=!0;for(let e=0;ee.toText())).join("");n=[new N.TextNode(e)]}else if(1===n.length&&["mover","munder"].includes(n[0].type)&&("mi"===n[0].children[0].type||"mtext"===n[0].children[0].type)){if(n[0].children[0].type="mi",e.parentIsSupSub)return new N.MathNode("mrow",n);{const e=new N.MathNode("mo",[ee("⁡","text")]);return N.newDocumentFragment([n[0],e])}}if(o?(r=new N.MathNode("mi",n),1===n[0].text.length&&r.setAttribute("mathvariant","normal")):r=new N.MathNode("mrow",n),!e.parentIsSupSub){const t=[r,new N.MathNode("mo",[ee("⁡","text")])];if(e.needsLeadingSpace){const e=new N.MathNode("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new N.MathNode("mspace");e.setAttribute("width","0.1667em"),t.push(e)}return N.newDocumentFragment(t)}return r}}),Et("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),m({type:"ordgroup",mathmlBuilder:(e,t)=>ae(e.body,t,!0)}),c({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"phantom",mode:e.mode,body:p(r)}},mathmlBuilder:(e,t)=>{const r=se(e.body,t);return new N.MathNode("mphantom",r)}}),c({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"hphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=se(p(e.body),t),n=new N.MathNode("mphantom",r),o=new N.MathNode("mpadded",[n]);return o.setAttribute("height","0px"),o.setAttribute("depth","0px"),o}}),c({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"vphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=se(p(e.body),t),n=new N.MathNode("mphantom",r),o=new N.MathNode("mpadded",[n]);return o.setAttribute("width","0px"),o}}),c({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>({type:"pmb",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=se(e.body,t),n=A(r);return n.setAttribute("style","font-weight:bold"),n}});const It=(e,t)=>{const r=t.withLevel(Je),n=new N.MathNode("mpadded",[ie(e.body,r)]),o=fe(e.dy,t);return n.setAttribute("voffset",o.number+o.unit),o.number>0?n.style.padding=o.number+o.unit+" 0 0 0":n.style.padding="0 0 "+Math.abs(o.number)+o.unit+" 0",n};c({type:"raise",names:["\\raise","\\lower"],props:{numArgs:2,argTypes:["size","primitive"],primitive:!0},handler({parser:e,funcName:t},r){const n=ve(r[0],"size").value;"\\lower"===t&&(n.number*=-1);const o=r[1];return{type:"raise",mode:e.mode,dy:n,body:o}},mathmlBuilder:It}),c({type:"raise",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler({parser:e,funcName:t},r){const n=ve(r[0],"size").value,o=r[1];return{type:"raise",mode:e.mode,dy:n,body:o}},mathmlBuilder:It}),c({type:"ref",names:["\\ref","\\eqref"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e,funcName:t},r)=>({type:"ref",mode:e.mode,funcName:t,string:r[0].string.replace(wt,"")}),mathmlBuilder(e,t){const r="\\ref"===e.funcName?["tml-ref"]:["tml-ref","tml-eqref"],n=new N.MathNode("mtext",[new N.TextNode("")],r);return n.setAttribute("href","#"+e.string),n}}),c({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler:({parser:e})=>({type:"internal",mode:e.mode})}),c({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler({parser:e},t,r){const n=r[0],o=ve(t[0],"size"),s=ve(t[1],"size");return{type:"rule",mode:e.mode,shift:n&&ve(n,"size").value,width:o.value,height:s.value}},mathmlBuilder(e,t){const r=fe(e.width,t),n=fe(e.height,t),o=e.shift?fe(e.shift,t):{number:0,unit:"em"},s=t.color&&t.getColor()||"black",a=new N.MathNode("mspace");if(r.number>0&&n.number>0&&a.setAttribute("mathbackground",s),a.setAttribute("width",r.number+r.unit),a.setAttribute("height",n.number+n.unit),0===o.number)return a;const i=new N.MathNode("mpadded",[a]);return o.number>=0?i.setAttribute("height","+"+o.number+o.unit):(i.setAttribute("height",o.number+o.unit),i.setAttribute("depth","+"+-o.number+o.unit)),i.setAttribute("voffset",o.number+o.unit),i}});const Ft={"\\tiny":.5,"\\sixptsize":.6,"\\Tiny":.6,"\\scriptsize":.7,"\\footnotesize":.8,"\\small":.9,"\\normalsize":1,"\\large":1.2,"\\Large":1.44,"\\LARGE":1.728,"\\huge":2.074,"\\Huge":2.488};c({type:"sizing",names:["\\tiny","\\sixptsize","\\Tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],props:{numArgs:0,allowedInText:!0},handler:({breakOnTokenText:e,funcName:t,parser:r},n)=>{r.settings.strict&&"math"===r.mode&&console.log(`Temml strict-mode warning: Command ${t} is invalid in math mode.`);const o=r.parseExpression(!1,e);return{type:"sizing",mode:r.mode,funcName:t,body:o}},mathmlBuilder:(e,t)=>{const r=t.withFontSize(Ft[e.funcName]),n=se(e.body,r),o=A(n),s=(Ft[e.funcName]/t.fontSize).toFixed(4);return o.setAttribute("mathsize",s+"em"),o}}),c({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:({parser:e},t,r)=>{let n=!1,o=!1;const s=r[0]&&ve(r[0],"ordgroup");if(s){let e="";for(let t=0;t{const r=new N.MathNode("mpadded",[ie(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),c({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e},t,r){const n=r[0],o=t[0];return{type:"sqrt",mode:e.mode,body:o,index:n}},mathmlBuilder(e,t){const{body:r,index:n}=e;return n?new N.MathNode("mroot",[ie(r,t),ie(n,t.incrementLevel())]):new N.MathNode("msqrt",[ie(r,t)])}});const Lt={display:0,text:1,script:2,scriptscript:3},$t={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};c({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({breakOnTokenText:e,funcName:t,parser:r},n){const o=r.parseExpression(!0,e),s=t.slice(1,t.length-5);return{type:"styling",mode:r.mode,scriptLevel:s,body:o}},mathmlBuilder(e,t){const r=t.withLevel(Lt[e.scriptLevel]),n=se(e.body,r),o=A(n),s=$t[e.scriptLevel];return o.setAttribute("scriptlevel",s[0]),o.setAttribute("displaystyle",s[1]),o}});const Gt=/^m(over|under|underover)$/;m({type:"supsub",mathmlBuilder(e,t){let r,n,o=!1,s=!1,a=!1,i=!1;e.base&&"horizBrace"===e.base.type&&(n=!!e.sup,n===e.base.isOver&&(o=!0,r=e.base.isOver)),!e.base||e.base.stack||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0,s=!e.base.symbol,a=s&&!e.isFollowedByDelimiter,i=e.base.needsLeadingSpace);const l=e.base&&e.base.stack?[ie(e.base.body[0],t)]:[ie(e.base,t)],c=t.inSubOrSup();if(e.sub&&l.push(ie(e.sub,c)),e.sup){const t=ie(e.sup,c),r="mrow"===t.type?t.children[0]:t;"mo"===r.type&&r.classes.includes("tml-prime")&&e.base&&e.base.text&&"f"===e.base.text&&r.classes.push("prime-pad"),l.push(t)}let m;if(o)m=r?"mover":"munder";else if(e.sub)if(e.sup){const r=e.base;m=r&&("op"===r.type&&r.limits||"multiscript"===r.type)&&(t.level===Ke||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(t.level===Ke||r.limits)?"munderover":"msubsup"}else{const r=e.base;m=r&&"op"===r.type&&r.limits&&(t.level===Ke||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ke)?"munder":"msub"}else{const r=e.base;m=r&&"op"===r.type&&r.limits&&(t.level===Ke||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ke)?"mover":"msup"}let u=new N.MathNode(m,l);if(s){const e=new N.MathNode("mo",[ee("⁡","text")]);if(i){const t=new N.MathNode("mspace");t.setAttribute("width","0.1667em"),u=N.newDocumentFragment([t,u,e])}else u=N.newDocumentFragment([u,e]);if(a){const e=new N.MathNode("mspace");e.setAttribute("width","0.1667em"),u.children.push(e)}}else Gt.test(m)&&(u=new N.MathNode("mrow",[u]));return u}});const Dt=["\\shortmid","\\nshortmid","\\shortparallel","\\nshortparallel","\\smallsetminus"],Pt=["\\Rsh","\\Lsh","\\restriction"];m({type:"atom",mathmlBuilder(e,t){const r=new N.MathNode("mo",[ee(e.text,e.mode)]);return"punct"===e.family?r.setAttribute("separator","true"):"open"===e.family||"close"===e.family?"open"===e.family?(r.setAttribute("form","prefix"),r.setAttribute("stretchy","false")):"close"===e.family&&(r.setAttribute("form","postfix"),r.setAttribute("stretchy","false")):"\\mid"===e.text?(r.setAttribute("lspace","0.22em"),r.setAttribute("rspace","0.22em"),r.setAttribute("stretchy","false")):"rel"===e.family&&(e=>{if(1===e.length){const t=e.codePointAt(0);return 8591-1||e.indexOf("harpoon")>-1||Pt.includes(e)})(e.text)?r.setAttribute("stretchy","false"):Dt.includes(e.text)?r.setAttribute("mathsize","70%"):":"===e.text&&(r.attributes.lspace="0.2222em",r.attributes.rspace="0.2222em"),r}});const Rt={mathbf:"bold",mathrm:"normal",textit:"italic",mathit:"italic",mathnormal:"italic",mathbb:"double-struck",mathcal:"script",mathfrak:"fraktur",mathscr:"script",mathsf:"sans-serif",mathtt:"monospace"},jt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsc"===t.fontFamily)return"normal";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"sans-serif-bold":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";const r=t.font;if(!r||"mathnormal"===r)return null;const n=e.mode;switch(r){case"mathit":case"greekItalic":return"italic";case"mathrm":{const t=e.text.codePointAt(0);return 9390,bold:e=>119743,italic:e=>119795,"bold-italic":e=>119847,script:e=>Ut[e]||119899,"script-bold":e=>119951,fraktur:e=>Ht[e]||120003,"fraktur-bold":e=>120107,"double-struck":e=>Vt[e]||120055,"sans-serif":e=>120159,"sans-serif-bold":e=>120211,"sans-serif-italic":e=>120263,"sans-serif-bold-italic":e=>120380,monospace:e=>120367},lowerCaseLatin:{normal:e=>0,bold:e=>119737,italic:e=>"h"===e?8358:119789,"bold-italic":e=>119841,script:e=>Ut[e]||119893,"script-bold":e=>119945,fraktur:e=>119997,"fraktur-bold":e=>120101,"double-struck":e=>120049,"sans-serif":e=>120153,"sans-serif-bold":e=>120205,"sans-serif-italic":e=>120257,"sans-serif-bold-italic":e=>120309,monospace:e=>120361},upperCaseGreek:{normal:e=>0,bold:e=>"∇"===e?111802:119575,italic:e=>"∇"===e?111860:119633,"bold-italic":e=>"∇"===e?111802:119575,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>"∇"===e?111976:119749,"sans-serif-bold":e=>"∇"===e?111976:119749,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>"∇"===e?112034:119807,monospace:e=>0},lowerCaseGreek:{normal:e=>0,bold:e=>119569,italic:e=>119627,"bold-italic":e=>"ϕ"===e?119678:119685,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>119743,"sans-serif-bold":e=>119743,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>119801,monospace:e=>0},varGreek:{normal:e=>0,bold:e=>_t[e]||-51,italic:e=>0,"bold-italic":e=>Wt[e]||58,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>Xt[e]||116,"sans-serif-bold":e=>Xt[e]||116,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>Zt[e]||174,monospace:e=>0},numeral:{normal:e=>0,bold:e=>120734,italic:e=>0,"bold-italic":e=>0,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>120744,"sans-serif":e=>120754,"sans-serif-bold":e=>120764,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>0,monospace:e=>120774}}),Kt=(e,t)=>{const r=e.codePointAt(0),n=64{const n=new N.MathNode(r,[e]),o=new N.MathNode("mstyle",[n]);return o.style["font-style"]="italic",o.style["font-family"]="Cambria, 'Times New Roman', serif","bold-italic"===t&&(o.style["font-weight"]="bold"),o})(o,s,t);"normal"!==s&&(o.text=o.text.split("").map((e=>Kt(e,s))).join("")),a=new N.MathNode(t,[o])}else if("text"===e.mode)"normal"!==s&&(o.text=Kt(o.text,s)),a=new N.MathNode("mtext",[o]);else if(tr.has(e.text))a=new N.MathNode("mo",[o]),a.classes.push("tml-prime");else{const e=o.text;"italic"!==s&&(o.text=Kt(o.text,s)),a=new N.MathNode("mi",[o]),o.text===e&&er.test(e)?a.setAttribute("mathvariant","italic"):"∇"===o.text&&"normal"===s&&a.setAttribute("mathvariant","normal")}return a}});const rr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},nr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};m({type:"spacing",mathmlBuilder(t,r){let n;if(Object.prototype.hasOwnProperty.call(nr,t.text))n=new N.MathNode("mtext",[new N.TextNode(" ")]);else{if(!Object.prototype.hasOwnProperty.call(rr,t.text))throw new e(`Unknown type of space "${t.text}"`);n=new N.MathNode("mo"),"\\nobreak"===t.text&&n.setAttribute("linebreak","nobreak")}return n}}),m({type:"tag"});const or={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm","\\textsc":"textsc"},sr={"\\textbf":"textbf","\\textmd":"textmd"},ar={"\\textit":"textit","\\textup":"textup"};c({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textsc","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"text",mode:e.mode,body:p(n),font:t}},mathmlBuilder(e,t){const r=((e,t)=>{const r=e.font;return r?or[r]?t.withTextFontFamily(or[r]):sr[r]?t.withTextFontWeight(sr[r]):t.withTextFontShape(ar[r]):t})(e,t),n=ae(e.body,r);return te(n)}}),c({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,r,n){throw new e("\\verb ended by end of line instead of matching delimiter")},mathmlBuilder(e,t){const r=new N.TextNode(ir(e)),n=new N.MathNode("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});const ir=e=>e.body.replace(/ /g,e.star?"␣":" "),lr=i;class cr{constructor(e,t,r){this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new cr(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class mr{constructor(e,t){this.text=e,this.loc=t}range(e,t){return new mr(t,cr.range(this,e))}}const ur=new RegExp("[̀-ͯ]+$");class pr{constructor(e,t){this.input=e,this.settings=t,this.tokenRegex=new RegExp("([ \r\n\t]+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|(\\\\[a-zA-Z@]+)[ \r\n\t]*|\\\\[^\ud800-\udfff])","g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){const t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new mr("EOF",new cr(this,r,r));const n=this.tokenRegex.exec(t);if(null===n||n.index!==r)throw new e(`Unexpected character: '${t[r]}'`,new mr(t[r],new cr(this,r,r+1)));const o=n[6]||n[3]||(n[2]?"\\ ":" ");if(14===this.catcodes[o]){const r=t.indexOf("\n",this.tokenRegex.lastIndex);if(-1===r){if(this.tokenRegex.lastIndex=t.length,this.settings.strict)throw new e("% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode")}else this.tokenRegex.lastIndex=r+1;return this.lex()}return new mr(o,new cr(this,r,this.tokenRegex.lastIndex))}}class dr{constructor(e={},t={}){this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");const t=this.undefStack.pop();for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])}has(e){return Object.prototype.hasOwnProperty.call(this.current,e)||Object.prototype.hasOwnProperty.call(this.builtins,e)}get(e){return Object.prototype.hasOwnProperty.call(this.current,e)?this.current[e]:this.builtins[e]}set(e,t,r=!1){if(r){for(let t=0;t0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{const t=this.undefStack[this.undefStack.length-1];t&&!Object.prototype.hasOwnProperty.call(t,e)&&(t[e]=this.current[e])}this.current[e]=t}}const hr=zt;Et("\\noexpand",(function(e){const t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Et("\\expandafter",(function(e){const t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Et("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Et("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Et("\\@ifnextchar",(function(e){const t=e.consumeArgs(3);e.consumeSpaces();const r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Et("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Et("\\TextOrMath",(function(e){const t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));const gr={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},fr=e=>{const t=e.future().text;return"EOF"===t?[null,""]:[gr[t.charAt(0)],t]},br=(e,t,r)=>{for(let n=1;n=r)throw new e(`Invalid base-${r} digit ${n.text}`);for(o=br(o,a,r),[s,a]=fr(t);null!=s&&s":"\\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","\\bigsqcap":"\\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"};Et("\\dots",(function(e){let t="\\dotso";const r=e.expandAfterFuture().text;return r in yr?t=yr[r]:("\\not"===r.slice(0,4)||r in E.math&&["bin","rel"].includes(E.math[r].group))&&(t="\\dotsb"),t}));const wr={")":!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};Et("\\dotso",(function(e){return e.future().text in wr?"\\ldots\\,":"\\ldots"})),Et("\\dotsc",(function(e){const t=e.future().text;return t in wr&&","!==t?"\\ldots\\,":"\\ldots"})),Et("\\cdots",(function(e){return e.future().text in wr?"\\@cdots\\,":"\\@cdots"})),Et("\\dotsb","\\cdots"),Et("\\dotsm","\\cdots"),Et("\\dotsi","\\!\\cdots"),Et("\\idotsint","\\dotsi"),Et("\\dotsx","\\ldots\\,"),Et("\\DOTSI","\\relax"),Et("\\DOTSB","\\relax"),Et("\\DOTSX","\\relax"),Et("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Et("\\,","{\\tmspace+{3mu}{.1667em}}"),Et("\\thinspace","\\,"),Et("\\>","\\mskip{4mu}"),Et("\\:","{\\tmspace+{4mu}{.2222em}}"),Et("\\medspace","\\:"),Et("\\;","{\\tmspace+{5mu}{.2777em}}"),Et("\\thickspace","\\;"),Et("\\!","{\\tmspace-{3mu}{.1667em}}"),Et("\\negthinspace","\\!"),Et("\\negmedspace","{\\tmspace-{4mu}{.2222em}}"),Et("\\negthickspace","{\\tmspace-{5mu}{.277em}}"),Et("\\enspace","\\kern.5em "),Et("\\enskip","\\hskip.5em\\relax"),Et("\\quad","\\hskip1em\\relax"),Et("\\qquad","\\hskip2em\\relax"),Et("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Et("\\tag@paren","\\tag@literal{({#1})}"),Et("\\tag@literal",(t=>{if(t.macros.get("\\df@tag"))throw new e("Multiple \\tag");return"\\def\\df@tag{\\text{#1}}"})),Et("\\bmod","\\mathbin{\\text{mod}}"),Et("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Et("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Et("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Et("\\newline","\\\\\\relax"),Et("\\TeX","\\textrm{T}\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125em\\textrm{X}"),Et("\\LaTeX","\\textrm{L}\\kern-.35em\\raisebox{0.2em}{\\scriptstyle A}\\kern-.15em\\TeX"),Et("\\Temml","\\textrm{T}\\kern-0.2em\\lower{0.2em}{\\textrm{E}}\\kern-0.08em{\\textrm{M}\\kern-0.08em\\raise{0.2em}\\textrm{M}\\kern-0.08em\\textrm{L}}"),Et("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Et("\\@hspace","\\hskip #1\\relax"),Et("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Et("\\colon",'\\mathpunct{\\char"3a}'),Et("\\prescript","\\pres@cript{_{#1}^{#2}}{}{#3}"),Et("\\ordinarycolon",'\\char"3a'),Et("\\vcentcolon","\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}}"),Et("\\coloneq",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2212}'),Et("\\Coloneq",'\\mathrel{\\char"2237\\char"2212}'),Et("\\Eqqcolon",'\\mathrel{\\char"3d\\char"2237}'),Et("\\Eqcolon",'\\mathrel{\\char"2212\\char"2237}'),Et("\\colonapprox",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2248}'),Et("\\Colonapprox",'\\mathrel{\\char"2237\\char"2248}'),Et("\\colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Et("\\Colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Et("\\ratio","\\vcentcolon"),Et("\\coloncolon","\\dblcolon"),Et("\\colonequals","\\coloneqq"),Et("\\coloncolonequals","\\Coloneqq"),Et("\\equalscolon","\\eqqcolon"),Et("\\equalscoloncolon","\\Eqqcolon"),Et("\\colonminus","\\coloneq"),Et("\\coloncolonminus","\\Coloneq"),Et("\\minuscolon","\\eqcolon"),Et("\\minuscoloncolon","\\Eqcolon"),Et("\\coloncolonapprox","\\Colonapprox"),Et("\\coloncolonsim","\\Colonsim"),Et("\\notni","\\mathrel{\\char`∌}"),Et("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Et("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Et("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Et("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Et("\\varlimsup","\\DOTSB\\operatorname*{\\overline{\\text{lim}}}"),Et("\\varliminf","\\DOTSB\\operatorname*{\\underline{\\text{lim}}}"),Et("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{\\text{lim}}}"),Et("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{\\text{lim}}}"),Et("\\centerdot","{\\medspace\\rule{0.167em}{0.189em}\\medspace}"),Et("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Et("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Et("\\plim","\\DOTSB\\operatorname*{plim}"),Et("\\bra","\\mathinner{\\langle{#1}|}"),Et("\\ket","\\mathinner{|{#1}\\rangle}"),Et("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Et("\\Bra","\\left\\langle#1\\right|"),Et("\\Ket","\\left|#1\\right\\rangle");const xr=e=>t=>{const r=t.consumeArg().tokens,n=t.consumeArg().tokens,o=t.consumeArg().tokens,s=t.consumeArg().tokens,a=t.macros.get("|"),i=t.macros.get("\\|");t.macros.beginGroup();const l=t=>r=>{e&&(r.macros.set("|",a),o.length&&r.macros.set("\\|",i));let s=t;if(!t&&o.length){"|"===r.future().text&&(r.popToken(),s=!0)}return{tokens:s?o:n,numArgs:0}};t.macros.set("|",l(!1)),o.length&&t.macros.set("\\|",l(!0));const c=t.consumeArg().tokens,m=t.expandTokens([...s,...c,...r]);return t.macros.endGroup(),{tokens:m.reverse(),numArgs:0}};Et("\\bra@ket",xr(!1)),Et("\\bra@set",xr(!0)),Et("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Et("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Et("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Et("\\angln","{\\angl n}"),Et("\\odv","\\@ifstar\\odv@next\\odv@numerator"),Et("\\odv@numerator","\\frac{\\mathrm{d}#1}{\\mathrm{d}#2}"),Et("\\odv@next","\\frac{\\mathrm{d}}{\\mathrm{d}#2}#1"),Et("\\pdv","\\@ifstar\\pdv@next\\pdv@numerator");const kr=e=>{const t=e[0][0].text,r=(e=>{let t="";for(let r=e.length-1;r>-1;r--)t+=e[r].text;return t})(e[1]).split(","),n=String(r.length),o="1"===n?"\\partial":`\\partial^${n}`;let s="";return r.map((e=>{s+="\\partial "+e.trim()+"\\,"})),[t,o,s.replace(/\\,$/,"")]};Et("\\pdv@numerator",(function(e){const[t,r,n]=kr(e.consumeArgs(2));return`\\frac{${r} ${t}}{${n}}`})),Et("\\pdv@next",(function(e){const[t,r,n]=kr(e.consumeArgs(2));return`\\frac{${r}}{${n}} ${t}`})),Et("\\upalpha","\\up@greek{\\alpha}"),Et("\\upbeta","\\up@greek{\\beta}"),Et("\\upgamma","\\up@greek{\\gamma}"),Et("\\updelta","\\up@greek{\\delta}"),Et("\\upepsilon","\\up@greek{\\epsilon}"),Et("\\upzeta","\\up@greek{\\zeta}"),Et("\\upeta","\\up@greek{\\eta}"),Et("\\uptheta","\\up@greek{\\theta}"),Et("\\upiota","\\up@greek{\\iota}"),Et("\\upkappa","\\up@greek{\\kappa}"),Et("\\uplambda","\\up@greek{\\lambda}"),Et("\\upmu","\\up@greek{\\mu}"),Et("\\upnu","\\up@greek{\\nu}"),Et("\\upxi","\\up@greek{\\xi}"),Et("\\upomicron","\\up@greek{\\omicron}"),Et("\\uppi","\\up@greek{\\pi}"),Et("\\upalpha","\\up@greek{\\alpha}"),Et("\\uprho","\\up@greek{\\rho}"),Et("\\upsigma","\\up@greek{\\sigma}"),Et("\\uptau","\\up@greek{\\tau}"),Et("\\upupsilon","\\up@greek{\\upsilon}"),Et("\\upphi","\\up@greek{\\phi}"),Et("\\upchi","\\up@greek{\\chi}"),Et("\\uppsi","\\up@greek{\\psi}"),Et("\\upomega","\\up@greek{\\omega}"),Et("\\invamp",'\\mathbin{\\char"214b}'),Et("\\parr",'\\mathbin{\\char"214b}'),Et("\\with",'\\mathbin{\\char"26}'),Et("\\multimapinv",'\\mathrel{\\char"27dc}'),Et("\\multimapboth",'\\mathrel{\\char"29df}'),Et("\\scoh",'{\\mkern5mu\\char"2322\\mkern5mu}'),Et("\\sincoh",'{\\mkern5mu\\char"2323\\mkern5mu}'),Et("\\coh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2322}}}\n{\\smash{\\lower4mu{\\char"2323}}}\\mkern5mu}'),Et("\\incoh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2323}}}\n{\\smash{\\lower4mu{\\char"2322}}}\\mkern5mu}'),Et("\\standardstate","\\text{\\tiny\\char`⦵}");const vr={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class Ar{constructor(e,t,r){this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new dr(hr,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new pr(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:n,end:r}=this.consumeArg(["]"]))}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new mr("EOF",r.loc)),this.pushTokens(n),t.range(r,"")}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(t){const r=[],n=t&&t.length>0;n||this.consumeSpaces();const o=this.future();let s,a=0,i=0;do{if(s=this.popToken(),r.push(s),"{"===s.text)++a;else if("}"===s.text){if(--a,-1===a)throw new e("Extra }",s)}else if("EOF"===s.text)throw new e("Unexpected end of input in a macro argument, expected '"+(t&&n?t[i]:"}")+"'",s);if(t&&n)if((0===a||1===a&&"{"===t[i])&&s.text===t[i]){if(++i,i===t.length){r.splice(-i,i);break}}else i=0}while(0!==a||n);return"{"===o.text&&"}"===r[r.length-1].text&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:o,end:s}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new e("The length of delimiters doesn't match the number of args!");const n=r[0];for(let t=0;tthis.settings.maxExpand)throw new e("Too many expansions: infinite loop or need to increase maxExpand setting");let s=o.tokens;const a=this.consumeArgs(o.numArgs,o.delimiters);if(o.numArgs){s=s.slice();for(let t=s.length-1;t>=0;--t){let r=s[t];if("#"===r.text){if(0===t)throw new e("Incomplete placeholder at end of macro body",r);if(r=s[--t],"#"===r.text)s.splice(t+1,1);else{if(!/^[1-9]$/.test(r.text))throw new e("Not a valid argument number",r);s.splice(t,2,...a[+r.text-1])}}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){const e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new mr(e)]):void 0}expandTokens(e){const t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){const e=this.stack.pop();e.treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),t.push(e)}return t}expandMacroAsText(e){const t=this.expandMacro(e);return t?t.map((e=>e.text)).join(""):t}_getExpansion(e){const t=this.macros.get(e);if(null==t)return t;if(1===e.length){const t=this.lexer.catcodes[e];if(null!=t&&13!==t)return}const r="function"==typeof t?t(this):t;if("string"==typeof r){let e=0;if(-1!==r.indexOf("#")){const t=r.replace(/##/g,"");for(;-1!==t.indexOf("#"+(e+1));)++e}const t=new pr(r,this.settings),n=[];let o=t.lex();for(;"EOF"!==o.text;)n.push(o),o=t.lex();n.reverse();return{tokens:n,numArgs:e}}return r}isDefined(e){return this.macros.has(e)||Object.prototype.hasOwnProperty.call(lr,e)||Object.prototype.hasOwnProperty.call(E.math,e)||Object.prototype.hasOwnProperty.call(E.text,e)||Object.prototype.hasOwnProperty.call(vr,e)}isExpandable(e){const t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Object.prototype.hasOwnProperty.call(lr,e)&&!lr[e].primitive}}const Nr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Tr=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g","ʰ":"h","ⁱ":"i","ʲ":"j","ᵏ":"k","ˡ":"l","ᵐ":"m","ⁿ":"n","ᵒ":"o","ᵖ":"p","ʳ":"r","ˢ":"s","ᵗ":"t","ᵘ":"u","ᵛ":"v","ʷ":"w","ˣ":"x","ʸ":"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),qr=Object.freeze({"𝒜":"A","ℬ":"B","𝒞":"C","𝒟":"D","ℰ":"E","ℱ":"F","𝒢":"G","ℋ":"H","ℐ":"I","𝒥":"J","𝒦":"K","ℒ":"L","ℳ":"M","𝒩":"N","𝒪":"O","𝒫":"P","𝒬":"Q","ℛ":"R","𝒮":"S","𝒯":"T","𝒰":"U","𝒱":"V","𝒲":"W","𝒳":"X","𝒴":"Y","𝒵":"Z"});var Sr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Or={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"};class Br{constructor(e,t,r=!1){this.mode="math",this.gullet=new Ar(e,t,this.mode),this.settings=t,this.isPreamble=r,this.leftrightDepth=0,this.prevAtomType=""}expect(t,r=!0){if(this.fetch().text!==t)throw new e(`Expected '${t}', got '${this.fetch().text}'`,this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");const e=this.parseExpression(!1);if(this.expect("EOF"),this.isPreamble){const e=Object.create(null);return Object.entries(this.gullet.macros.current).forEach((([t,r])=>{e[t]=r})),this.gullet.endGroup(),e}const t=this.gullet.macros.get("\\df@tag");return this.gullet.endGroup(),t&&(this.gullet.macros.current["\\df@tag"]=t),e}static get endOfExpression(){return["}","\\endgroup","\\end","\\right","\\endtoggle","&"]}subparse(e){const t=this.nextToken;this.consume(),this.gullet.pushToken(new mr("}")),this.gullet.pushTokens(e);const r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t){const r=[];for(;;){"math"===this.mode&&this.consumeSpaces();const n=this.fetch();if(-1!==Br.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&lr[n.text]&&lr[n.text].infix)break;const o=this.parseAtom(t);if(!o)break;"internal"!==o.type&&(r.push(o),this.prevAtomType="atom"===o.type?o.family:o.type)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(t){let r,n=-1;for(let o=0;o=128))return null;if(this.settings.strict&&"math"===this.mode)throw new e(`Unicode text character "${r[0]}" used in math mode`,t);o={type:"textord",mode:"text",loc:cr.range(t),text:r}}if(this.consume(),n)for(let r=0;r0&&o[0].type&&"array"===o[0].type&&o[0].addEqnNum)&&n.gullet.macros.get("\\df@tag")){if(!r.displayMode)throw new e("\\tag works only in display mode");n.gullet.feed("\\df@tag"),o=[{type:"tag",mode:"text",body:o,tag:n.parse()}]}return o},Cr=[2,2,3,3];class zr{constructor(e){this.level=e.level,this.color=e.color,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontSize=e.fontSize||1,this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.maxSize=e.maxSize}extend(e){const t={level:this.level,color:this.color,font:this.font,fontFamily:this.fontFamily,fontSize:this.fontSize,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return new zr(t)}withLevel(e){return this.extend({level:e})}incrementLevel(){return this.extend({level:Math.min(this.level+1,3)})}inSubOrSup(){return this.extend({level:Cr[this.level]})}withColor(e){return this.extend({color:e})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withFontSize(e){return this.extend({fontSize:e})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}getColor(){return this.color}}let Er=function(e,t,r){t.textContent="";const n="MATH"===t.tagName;n&&(r.wrap="none");const o=Ir(e,r);n||o.children.length>1?(t.textContent="",o.children.forEach((e=>{t.appendChild(e.toNode())}))):t.appendChild(o.toNode())};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: Temml doesn't work in quirks mode. Make sure your website has a suitable doctype."),Er=function(){throw new e("Temml doesn't work in quirks mode.")});const Ir=function(t,r){const n=new a(r);try{const e=Mr(t,n);return ce(e,t,new zr({level:n.displayMode?Ke:Je,maxSize:n.maxSize}),n)}catch(r){return function(t,r,n){if(n.throwOnError||!(t instanceof e))throw t;const o=new y(["temml-error"],[new w(r+"\n"+t.toString())]);return o.style.color=n.errorColor,o.style.whiteSpace="pre-line",o}(r,t,n)}};return{version:"0.10.16",render:Er,renderToString:function(e,t){return Ir(e,t).toMarkup()},postProcess:function(e){const t={};let r=0;const n=e.getElementsByClassName("tml-tageqn");for(const e of n){const n=e.getElementsByClassName("tml-eqn");n.length>0&&(r+=1,n[0].id="tml-eqn-"+r);const o=e.getElementsByClassName("tml-label");if(0!==o.length)if(n.length>0)t[o[0].id]=String(r);else{const r=e.getElementsByClassName("tml-tag");r.length>0&&(t[o[0].id]=r[0].textContent)}}[...e.getElementsByClassName("tml-ref")].forEach((e=>{let r=t[e.getAttribute("href").slice(1)];-1===e.className.indexOf("tml-eqref")&&(r=r.replace(/^\(/,""),r=r.replace(/\($/,"")),"("!==r.charAt(0)&&(r="("+r),")"!==r.slice(-1)&&(r+=")"),e.textContent=r}))},ParseError:e,definePreamble:function(e,t){const r=new a(t);if(r.macros={},!("string"==typeof e||e instanceof String))throw new TypeError("Temml can only parse string typed expression");const n=new Br(e,r,!0);delete n.gullet.macros.current["\\df@tag"];return n.parse()},__parse:function(e,t){const r=new a(t);return Mr(e,r)},__renderToMathMLTree:Ir,__defineSymbol:I,__defineMacro:Et}}(); \ No newline at end of file diff --git a/js/temml/version.txt b/js/temml/version.txt new file mode 100644 index 0000000..cbd216f --- /dev/null +++ b/js/temml/version.txt @@ -0,0 +1 @@ +0.10.16 \ No newline at end of file diff --git a/main.css b/main.css new file mode 100644 index 0000000..0eb1050 --- /dev/null +++ b/main.css @@ -0,0 +1 @@ +pre{padding:1em;border-radius:4px;position:relative;font-family:var(--code-font);overflow-x:auto;-webkit-overflow-scrolling:touch}code{background-color:var(--bg-0);padding:0px 3px;border-radius:4px;font-size:.9rem}pre code{background-color:rgba(0,0,0,0);color:inherit;padding:0}pre code[class*=language-]{-webkit-overflow-scrolling:touch}pre code[class*=language-]::before{font-size:smaller;background:#000;border-radius:0 0 3px 3px;color:#fff;padding:.1em 1ch;position:absolute;text-align:right;text-transform:uppercase;right:2px;top:2px}pre code[class=language-javascript]::before,pre code[class=language-js]::before{content:"js";background:gold;color:#000}pre code[class*=language-yml]::before,pre code[class*=language-yaml]::before{content:"yaml";background:#cd5c5c;color:#fff}pre code[class*=language-shell]::before,pre code[class*=language-bash]::before,pre code[class*=language-sh]::before{content:"shell";background:green;color:#fff}pre code[class*=language-json]::before{content:"json";background:#1e90ff;color:#000}pre code[class*=language-python]::before,pre code[class*=language-py]::before{content:"py";background:blue;color:#ff0}pre code[class*=language-css]::before{content:"css";background:cyan;color:#000}pre code[class*=language-go]::before{content:"Go";background:cyan;color:#4169e1}pre code[class*=language-md]::before{content:"Markdown";background:#4169e1;color:#f5f5f5}pre code[class*=language-rust]::before,pre code[class*=language-rs]::before{content:"rust";background:#000;color:#e9967a}pre code[class*=language-c]::before{content:"C";background:#000;color:lime}pre code[class*=language-cpp]::before{content:"C++";background:#000;color:aqua}.item-title{margin-bottom:.2em}.item-title:before{content:"🗎 ";font-size:smaller}.item-title:hover{color:var(--hover-color)}.item-title:hover:before{color:var(--hover-color)}.page-title{font-family:var(--header-font);font-size:2.4em;line-height:100%;margin:.6em 16px .2em 16px}.link-title{font-family:var(--header-font);font-size:2em;text-align:center;margin:1em 16px}h1,h2,h3,h4,h5,h6{font-family:var(--header-font);font-size:1.3rem;margin-top:1.3em}article h1::before{margin-left:-.5ch;color:var(--text-1);content:"# "}article h2::before{margin-left:-.5ch;color:var(--text-1);content:"## "}article h3::before{margin-left:-.5ch;color:var(--text-1);content:"### "}article h4::before{margin-left:-.5ch;color:var(--text-1);content:"#### "}article h5::before{margin-left:-.5ch;color:var(--text-1);content:"##### "}article h6::before{margin-left:-.5ch;color:var(--text-1);content:"###### "}.meta{color:#999;letter-spacing:-.5px}header{background-color:var(--accent-bg);box-shadow:0 2px 6px var(--bg-2);border-radius:9px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.7em;padding:9px 12px 7px 12px;border-bottom:1px solid var(--accent-color)}.site-info{flex-grow:1;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:baseline;gap:.7em}.site-title{flex-grow:0;font-size:1.3rem}.socials{flex-grow:0;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:flex-end;gap:6px}.social{padding:2px}.social:hover{background-color:unset}.social>img{width:16px;height:16px}.site-menu{flex-grow:0}.site-menu-entry+.site-menu-entry{margin-left:.4em}@media (prefers-color-scheme: dark){.social>img{filter:invert(1)}}img{width:auto;height:auto;max-width:100%}figure{max-width:100%}.banner-image{width:100%}.description{margin:.4em 0}.caption{font-size:smaller;font-style:italic;color:var(--text-1)}.introduction{padding:2.4em 2em 1.6em 2em}.draft-label{color:var(--text-0);text-decoration:none;padding:2px 4px;border-radius:4px;margin-left:6px;background-color:var(--primary-color)}.primary-color{color:var(--primary-color)}.accent-bg{color:var(--accent-bg)}::selection{background:var(--primary-color)}.pagination{margin-top:auto;text-align:center;padding:0}.page-link{padding:0 6px}hr{border:none;border-top:2px dotted var(--border-color);margin:6px 0}blockquote{border-left:3px solid var(--border-color);color:var(--text-1);margin:0;padding-left:1em}a{text-decoration:underline;color:var(--text-1)}a:hover{color:var(--hover-color)}time{color:grey}time::before{content:"🗓 ";font-size:smaller}.toc{margin-bottom:2rem}.toc li::marker{color:var(--primary-color)}ul{padding-left:3ch}.pagenotfound{font-family:var(--header-font);font-size:3em;text-align:center;margin:1.5em 0}aside{float:right;max-width:50%}.aside-inner{margin:.2em 0 .2em 1.5em;padding:.4em 0 .4em 1em;border-left:1px solid var(--border-color)}.show-all-div{margin:2.5em 0 2em 36px}.clear{clear:both}@media all and (max-width: 719px){aside{max-width:100% !important;width:100%}.aside-inner{margin-left:.4em}}table{border-spacing:0;border-collapse:collapse}table th{padding:6px 13px;border:1px solid #dfe2e5;font-size:large}table td{padding:6px 13px;border:1px solid #dfe2e5}.taxonomies-title{margin-bottom:.4em}.taxonomies-items{margin-top:1em}.taxonomies-item+.taxonomies-item{margin-left:.4em}.taxonomy-item{display:flex;flex-direction:row;gap:.7em}.taxonomy-item-title{flex-grow:1}.tags{margin:3px 6px}.tags:before{content:"🏷 ";font-size:smaller}.tag{color:var(--text-1);border-radius:2px;background-color:var(--bg-2);padding:2px 3px}.cards{display:grid;grid-template-columns:repeat(auto-fill, minmax(350px, 1fr));grid-template-rows:auto;gap:18px;padding:12px 0}@supports (grid-template-rows: masonry){.cards{grid-template-rows:masonry}}.card{min-height:200px;border-radius:5px;overflow:hidden}.card:hover{background:color-mix(in srgb, var(--bg-1) 50%, var(--bg-2))}.card-info{padding:0px 18px 18px 18px}.card-title{margin:.4em 0;line-height:1em}.card-title::before{content:"🖴 ";font-size:smaller}.card-title:hover:before{color:var(--hover-color)}.card-image{width:100%;max-height:400px;object-fit:contain}.card-image-placeholder{height:12px;width:100%}.card-description{margin-top:.4em;overflow:hidden}@media all and (max-width: 719px){.cards{gap:12px}}.gallery{display:grid;grid-template-rows:auto;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:12px;padding:12px}@supports (grid-template-rows: masonry){.gallery{grid-template-rows:masonry}}.gallery-image{border-bottom:unset;border-image:unset;background:unset;transition:transform .2s}.gallery-image:hover{transform:scale(1.1)}.gallery-image>img{box-shadow:0px 0px 6px var(--bg-2)}html.webapp{width:100%;height:100%;margin:0}body.webapp{background-color:var(--bg-1);width:100%;height:100%;margin:0;display:flex;flex-direction:column}header.webapp{padding:6px;border-radius:unset;position:unset;top:unset}.webapp-header{font-family:var(--header-font);text-align:center;vertical-align:text-top;font-size:1.6em}iframe.webapp{flex:1;border:1px solid var(--border-color)}:root{--border-color: var(--bg-0);--text-font: "Roboto";--header-font: "Roboto";--code-font: "Inconsolata"}html{background-image:var(--bg-noise-image);color:var(--text-0);font-family:var(--text-font);line-height:1.4em}body{margin:0}.content{max-width:1000px;min-height:calc(100vh - 24px);margin:0 auto;padding:12px;word-wrap:break-word;display:flex;flex-direction:column;gap:12px}.main-content{flex-grow:1;display:flex;flex-direction:column;justify-content:flex-start;background-color:var(--bg-1);border-radius:9px;box-shadow:0 2px 6px var(--bg-2);overflow:hidden}.padded-content{margin:24px}footer{background-color:var(--bg-1);border-radius:9px;box-shadow:0 2px 6px var(--bg-2);margin-top:auto;padding:6px;text-align:center}.tml-eqn::before{content:""}@media all and (max-width: 719px){html{font-size:14px}.content{min-height:calc(100vh - 12px);padding:6px 0;gap:6px}.padded-content{margin:12px}}@media all and (min-width: 720px){html{font-size:15px}}@media all and (min-width: 900px){html{font-size:16px}} \ No newline at end of file diff --git a/posts/index.html b/posts/index.html new file mode 100644 index 0000000..5f8b52e --- /dev/null +++ b/posts/index.html @@ -0,0 +1,3 @@ + + Mercury +
Mercury
Modern blog theme
Posts

Math

Markdown Syntax

    John Doe - © 2023
    \ No newline at end of file diff --git a/posts/markdown/index.html b/posts/markdown/index.html new file mode 100644 index 0000000..b211d8e --- /dev/null +++ b/posts/markdown/index.html @@ -0,0 +1,256 @@ + + Markdown Syntax +
    Mercury
    Modern blog theme
    Markdown Syntax

    Taken from github.com/thephpleague/commonmark/blob/2.3/tests/benchmark/sample.md

    Overview

    Philosophy

    Markdown is intended to be as easy-to-read and easy-to-write as is feasible.

    Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it's been marked up with tags or formatting instructions. While Markdown's syntax has been influenced by several existing text-to-HTML filters -- including [Setext] 1, [atx] 2, [Textile] 3, [reStructuredText] 4, [Grutatext] 5, and [EtText] 6 -- the single biggest source of inspiration for Markdown's syntax is the format of plain text email.

    To this end, Markdown's syntax is comprised entirely of punctuation characters, which punctuation characters have been carefully chosen so as to look like what they mean. E.g., asterisks around a word actually look like *emphasis*. Markdown lists look like, well, lists. Even blockquotes look like quoted passages of text, assuming you've ever used email.

    Inline HTML

    Markdown's syntax is intended for one purpose: to be used as a format for writing for the web.

    Markdown is not a replacement for HTML, or even close to it. Its syntax is very small, corresponding only to a very small subset of HTML tags. The idea is not to create a syntax that makes it easier to insert HTML tags. In my opinion, HTML tags are already easy to insert. The idea for Markdown is to make it easy to read, write, and edit prose. HTML is a publishing format; Markdown is a writing format. Thus, Markdown's formatting syntax only addresses issues that can be conveyed in plain text.

    For any markup that is not covered by Markdown's syntax, you simply use HTML itself. There's no need to preface it or delimit it to indicate that you're switching from Markdown to HTML; you just use the tags.

    The only restrictions are that block-level HTML elements -- e.g. <div>, <table>, <pre>, <p>, etc. -- must be separated from surrounding content by blank lines, and the start and end tags of the block should not be indented with tabs or spaces. Markdown is smart enough not to add extra (unwanted) <p> tags around HTML block-level tags.

    For example, to add an HTML table to a Markdown article:

    This is a regular paragraph.
    +
    +<table>
    +    <tr>
    +        <td>Foo</td>
    +    </tr>
    +</table>
    +
    +This is another regular paragraph.
    +

    Note that Markdown formatting syntax is not processed within block-level HTML tags. E.g., you can't use Markdown-style *emphasis* inside an HTML block.

    Span-level HTML tags -- e.g. <span>, <cite>, or <del> -- can be used anywhere in a Markdown paragraph, list item, or header. If you want, you can even use HTML tags instead of Markdown formatting; e.g. if you'd prefer to use HTML <a> or <img> tags instead of Markdown's link or image syntax, go right ahead.

    Unlike block-level HTML tags, Markdown syntax is processed within span-level tags.

    Automatic Escaping for Special Characters

    In HTML, there are two characters that demand special treatment: < and &. Left angle brackets are used to start tags; ampersands are used to denote HTML entities. If you want to use them as literal characters, you must escape them as entities, e.g. &lt;, and &amp;.

    Ampersands in particular are bedeviling for web writers. If you want to write about 'AT&T', you need to write 'AT&amp;T'. You even need to escape ampersands within URLs. Thus, if you want to link to:

    http://images.google.com/images?num=30&q=larry+bird
    +

    you need to encode the URL as:

    http://images.google.com/images?num=30&amp;q=larry+bird
    +

    in your anchor tag href attribute. Needless to say, this is easy to forget, and is probably the single most common source of HTML validation errors in otherwise well-marked-up web sites.

    Markdown allows you to use these characters naturally, taking care of all the necessary escaping for you. If you use an ampersand as part of an HTML entity, it remains unchanged; otherwise it will be translated into &amp;.

    So, if you want to include a copyright symbol in your article, you can write:

    &copy;
    +

    and Markdown will leave it alone. But if you write:

    AT&T
    +

    Markdown will translate it to:

    AT&amp;T
    +

    Similarly, because Markdown supports inline HTML, if you use angle brackets as delimiters for HTML tags, Markdown will treat them as such. But if you write:

    4 < 5
    +

    Markdown will translate it to:

    4 &lt; 5
    +

    However, inside Markdown code spans and blocks, angle brackets and ampersands are always encoded automatically. This makes it easy to use Markdown to write about HTML code. (As opposed to raw HTML, which is a terrible format for writing about HTML syntax, because every single < and & in your example code needs to be escaped.)


    Block Elements

    Paragraphs and Line Breaks

    A paragraph is simply one or more consecutive lines of text, separated by one or more blank lines. (A blank line is any line that looks like a blank line -- a line containing nothing but spaces or tabs is considered blank.) Normal paragraphs should not be indented with spaces or tabs.

    The implication of the "one or more consecutive lines of text" rule is that Markdown supports "hard-wrapped" text paragraphs. This differs significantly from most other text-to-HTML formatters (including Movable Type's "Convert Line Breaks" option) which translate every line break character in a paragraph into a <br /> tag.

    When you do want to insert a <br /> break tag using Markdown, you end a line with two or more spaces, then type return.

    Yes, this takes a tad more effort to create a <br />, but a simplistic "every line break is a <br />" rule wouldn't work for Markdown. Markdown's email-style blockquoting and multi-paragraph list items work best -- and look better -- when you format them with hard breaks.

    Markdown supports two styles of headers, [Setext] 1 and [atx] 2.

    Setext-style headers are "underlined" using equal signs (for first-level headers) and dashes (for second-level headers). For example:

    This is an H1
    +=============
    +
    +This is an H2
    +-------------
    +

    Any number of underlining ='s or -'s will work.

    Atx-style headers use 1-6 hash characters at the start of the line, corresponding to header levels 1-6. For example:

    # This is an H1
    +
    +## This is an H2
    +
    +###### This is an H6
    +

    Optionally, you may "close" atx-style headers. This is purely cosmetic -- you can use this if you think it looks better. The closing hashes don't even need to match the number of hashes used to open the header. (The number of opening hashes determines the header level.) :

    # This is an H1 #
    +
    +## This is an H2 ##
    +
    +### This is an H3 ######
    +

    Blockquotes

    Markdown uses email-style > characters for blockquoting. If you're familiar with quoting passages of text in an email message, then you know how to create a blockquote in Markdown. It looks best if you hard wrap the text and put a > before every line:

    > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
    +> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
    +> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
    +> 
    +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
    +> id sem consectetuer libero luctus adipiscing.
    +

    Markdown allows you to be lazy and only put the > before the first line of a hard-wrapped paragraph:

    > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
    +consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
    +Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
    +
    +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
    +id sem consectetuer libero luctus adipiscing.
    +

    Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by adding additional levels of >:

    > This is the first level of quoting.
    +>
    +> > This is nested blockquote.
    +>
    +> Back to the first level.
    +

    Blockquotes can contain other Markdown elements, including headers, lists, and code blocks:

    This is a header.

    1. This is the first list item.
    2. This is the second list item.

    Here's some example code:

     return shell_exec("echo $input | $markdown_script");
    +

    Any decent text editor should make email-style quoting easy. For example, with BBEdit, you can make a selection and choose Increase Quote Level from the Text menu.

    Lists

    Markdown supports ordered (numbered) and unordered (bulleted) lists.

    Unordered lists use asterisks, pluses, and hyphens -- interchangably -- as list markers:

    *   Red
    +*   Green
    +*   Blue
    +

    is equivalent to:

    +   Red
    ++   Green
    ++   Blue
    +

    and:

    -   Red
    +-   Green
    +-   Blue
    +

    Ordered lists use numbers followed by periods:

    1.  Bird
    +2.  McHale
    +3.  Parish
    +

    It's important to note that the actual numbers you use to mark the list have no effect on the HTML output Markdown produces. The HTML Markdown produces from the above list is:

    <ol>
    +<li>Bird</li>
    +<li>McHale</li>
    +<li>Parish</li>
    +</ol>
    +

    If you instead wrote the list in Markdown like this:

    1.  Bird
    +1.  McHale
    +1.  Parish
    +

    or even:

    3. Bird
    +1. McHale
    +8. Parish
    +

    you'd get the exact same HTML output. The point is, if you want to, you can use ordinal numbers in your ordered Markdown lists, so that the numbers in your source match the numbers in your published HTML. But if you want to be lazy, you don't have to.

    If you do use lazy list numbering, however, you should still start the list with the number 1. At some point in the future, Markdown may support starting ordered lists at an arbitrary number.

    List markers typically start at the left margin, but may be indented by up to three spaces. List markers must be followed by one or more spaces or a tab.

    To make lists look nice, you can wrap items with hanging indents:

    *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    +    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    +    viverra nec, fringilla in, laoreet vitae, risus.
    +*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    +    Suspendisse id sem consectetuer libero luctus adipiscing.
    +

    But if you want to be lazy, you don't have to:

    *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    +Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    +viverra nec, fringilla in, laoreet vitae, risus.
    +*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    +Suspendisse id sem consectetuer libero luctus adipiscing.
    +

    If list items are separated by blank lines, Markdown will wrap the items in <p> tags in the HTML output. For example, this input:

    *   Bird
    +*   Magic
    +

    will turn into:

    <ul>
    +<li>Bird</li>
    +<li>Magic</li>
    +</ul>
    +

    But this:

    *   Bird
    +
    +*   Magic
    +

    will turn into:

    <ul>
    +<li><p>Bird</p></li>
    +<li><p>Magic</p></li>
    +</ul>
    +

    List items may consist of multiple paragraphs. Each subsequent paragraph in a list item must be indented by either 4 spaces or one tab:

    1.  This is a list item with two paragraphs. Lorem ipsum dolor
    +    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
    +    mi posuere lectus.
    +
    +    Vestibulum enim wisi, viverra nec, fringilla in, laoreet
    +    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
    +    sit amet velit.
    +
    +2.  Suspendisse id sem consectetuer libero luctus adipiscing.
    +

    It looks nice if you indent every line of the subsequent paragraphs, but here again, Markdown will allow you to be lazy:

    *   This is a list item with two paragraphs.
    +
    +    This is the second paragraph in the list item. You're
    +only required to indent the first line. Lorem ipsum dolor
    +sit amet, consectetuer adipiscing elit.
    +
    +*   Another item in the same list.
    +

    To put a blockquote within a list item, the blockquote's > delimiters need to be indented:

    *   A list item with a blockquote:
    +
    +    > This is a blockquote
    +    > inside a list item.
    +

    To put a code block within a list item, the code block needs to be indented twice -- 8 spaces or two tabs:

    *   A list item with a code block:
    +
    +        <code goes here>
    +

    It's worth noting that it's possible to trigger an ordered list by accident, by writing something like this:

    1986. What a great season.
    +

    In other words, a number-period-space sequence at the beginning of a line. To avoid this, you can backslash-escape the period:

    1986\. What a great season.
    +

    Code Blocks

    Pre-formatted code blocks are used for writing about programming or markup source code. Rather than forming normal paragraphs, the lines of a code block are interpreted literally. Markdown wraps a code block in both <pre> and <code> tags.

    To produce a code block in Markdown, simply indent every line of the block by at least 4 spaces or 1 tab. For example, given this input:

    This is a normal paragraph:
    +
    +    This is a code block.
    +

    Markdown will generate:

    <p>This is a normal paragraph:</p>
    +
    +<pre><code>This is a code block.
    +</code></pre>
    +

    One level of indentation -- 4 spaces or 1 tab -- is removed from each line of the code block. For example, this:

    Here is an example of AppleScript:
    +
    +    tell application "Foo"
    +        beep
    +    end tell
    +

    will turn into:

    <p>Here is an example of AppleScript:</p>
    +
    +<pre><code>tell application "Foo"
    +    beep
    +end tell
    +</code></pre>
    +

    A code block continues until it reaches a line that is not indented (or the end of the article).

    Within a code block, ampersands (&) and angle brackets (< and >) are automatically converted into HTML entities. This makes it very easy to include example HTML source code using Markdown -- just paste it and indent it, and Markdown will handle the hassle of encoding the ampersands and angle brackets. For example, this:

        <div class="footer">
    +        &copy; 2004 Foo Corporation
    +    </div>
    +

    will turn into:

    <pre><code>&lt;div class="footer"&gt;
    +    &amp;copy; 2004 Foo Corporation
    +&lt;/div&gt;
    +</code></pre>
    +

    Regular Markdown syntax is not processed within code blocks. E.g., asterisks are just literal asterisks within a code block. This means it's also easy to use Markdown to write about Markdown's own syntax.

    Horizontal Rules

    You can produce a horizontal rule tag (<hr />) by placing three or more hyphens, asterisks, or underscores on a line by themselves. If you wish, you may use spaces between the hyphens or asterisks. Each of the following lines will produce a horizontal rule:

    * * *
    +
    +***
    +
    +*****
    +
    +- - -
    +
    +---------------------------------------
    +

    Span Elements

    Markdown supports two style of links: inline and reference.

    In both styles, the link text is delimited by [square brackets].

    To create an inline link, use a set of regular parentheses immediately after the link text's closing square bracket. Inside the parentheses, put the URL where you want the link to point, along with an optional title for the link, surrounded in quotes. For example:

    This is [an example](http://example.com/ "Title") inline link.
    +
    +[This link](http://example.net/) has no title attribute.
    +

    Will produce:

    <p>This is <a href="http://example.com/" title="Title">
    +an example</a> inline link.</p>
    +
    +<p><a href="http://example.net/">This link</a> has no
    +title attribute.</p>
    +

    If you're referring to a local resource on the same server, you can use relative paths:

    See my [About](/about/) page for details.   
    +

    Reference-style links use a second set of square brackets, inside which you place a label of your choosing to identify the link:

    This is [an example][id] reference-style link.
    +

    You can optionally use a space to separate the sets of brackets:

    This is [an example] [id] reference-style link.
    +

    Then, anywhere in the document, you define your link label like this, on a line by itself:

    [id]: http://example.com/  "Optional Title Here"
    +

    That is:

    • Square brackets containing the link identifier (optionally indented from the left margin using up to three spaces);
    • followed by a colon;
    • followed by one or more spaces (or tabs);
    • followed by the URL for the link;
    • optionally followed by a title attribute for the link, enclosed in double or single quotes, or enclosed in parentheses.

    The following three link definitions are equivalent:

    [foo]: http://example.com/  "Optional Title Here"
    +[foo]: http://example.com/  'Optional Title Here'
    +[foo]: http://example.com/  (Optional Title Here)
    +

    Note: There is a known bug in Markdown.pl 1.0.1 which prevents single quotes from being used to delimit link titles.

    The link URL may, optionally, be surrounded by angle brackets:

    [id]: <http://example.com/>  "Optional Title Here"
    +

    You can put the title attribute on the next line and use extra spaces or tabs for padding, which tends to look better with longer URLs:

    [id]: http://example.com/longish/path/to/resource/here
    +    "Optional Title Here"
    +

    Link definitions are only used for creating links during Markdown processing, and are stripped from your document in the HTML output.

    Link definition names may consist of letters, numbers, spaces, and punctuation -- but they are not case sensitive. E.g. these two links:

    [link text][a]
    +[link text][A]
    +

    are equivalent.

    The implicit link name shortcut allows you to omit the name of the link, in which case the link text itself is used as the name. Just use an empty set of square brackets -- e.g., to link the word "Google" to the google.com web site, you could simply write:

    [Google][]
    +

    And then define the link:

    [Google]: http://google.com/
    +

    Because link names may contain spaces, this shortcut even works for multiple words in the link text:

    Visit [Daring Fireball][] for more information.
    +

    And then define the link:

    [Daring Fireball]: http://daringfireball.net/
    +

    Link definitions can be placed anywhere in your Markdown document. I tend to put them immediately after each paragraph in which they're used, but if you want, you can put them all at the end of your document, sort of like footnotes.

    Here's an example of reference links in action:

    I get 10 times more traffic from [Google] [1] than from
    +[Yahoo] [2] or [MSN] [3].
    +
    +  [1]: http://google.com/        "Google"
    +  [2]: http://search.yahoo.com/  "Yahoo Search"
    +  [3]: http://search.msn.com/    "MSN Search"
    +

    Using the implicit link name shortcut, you could instead write:

    I get 10 times more traffic from [Google][] than from
    +[Yahoo][] or [MSN][].
    +
    +  [google]: http://google.com/        "Google"
    +  [yahoo]:  http://search.yahoo.com/  "Yahoo Search"
    +  [msn]:    http://search.msn.com/    "MSN Search"
    +

    Both of the above examples will produce the following HTML output:

    <p>I get 10 times more traffic from <a href="http://google.com/"
    +title="Google">Google</a> than from
    +<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
    +or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
    +

    For comparison, here is the same paragraph written using Markdown's inline link style:

    I get 10 times more traffic from [Google](http://google.com/ "Google")
    +than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
    +[MSN](http://search.msn.com/ "MSN Search").
    +

    The point of reference-style links is not that they're easier to write. The point is that with reference-style links, your document source is vastly more readable. Compare the above examples: using reference-style links, the paragraph itself is only 81 characters long; with inline-style links, it's 176 characters; and as raw HTML, it's 234 characters. In the raw HTML, there's more markup than there is text.

    With Markdown's reference-style links, a source document much more closely resembles the final output, as rendered in a browser. By allowing you to move the markup-related metadata out of the paragraph, you can add links without interrupting the narrative flow of your prose.

    Emphasis

    Markdown treats asterisks (*) and underscores (_) as indicators of emphasis. Text wrapped with one * or _ will be wrapped with an HTML <em> tag; double *'s or _'s will be wrapped with an HTML <strong> tag. E.g., this input:

    *single asterisks*
    +
    +_single underscores_
    +
    +**double asterisks**
    +
    +__double underscores__
    +

    will produce:

    <em>single asterisks</em>
    +
    +<em>single underscores</em>
    +
    +<strong>double asterisks</strong>
    +
    +<strong>double underscores</strong>
    +

    You can use whichever style you prefer; the lone restriction is that the same character must be used to open and close an emphasis span.

    Emphasis can be used in the middle of a word:

    un*frigging*believable
    +

    But if you surround an * or _ with spaces, it'll be treated as a literal asterisk or underscore.

    To produce a literal asterisk or underscore at a position where it would otherwise be used as an emphasis delimiter, you can backslash escape it:

    \*this text is surrounded by literal asterisks\*
    +

    Code

    To indicate a span of code, wrap it with backtick quotes (`). Unlike a pre-formatted code block, a code span indicates code within a normal paragraph. For example:

    Use the `printf()` function.
    +

    will produce:

    <p>Use the <code>printf()</code> function.</p>
    +

    To include a literal backtick character within a code span, you can use multiple backticks as the opening and closing delimiters:

    ``There is a literal backtick (`) here.``
    +

    which will produce this:

    <p><code>There is a literal backtick (`) here.</code></p>
    +

    The backtick delimiters surrounding a code span may include spaces -- one after the opening, one before the closing. This allows you to place literal backtick characters at the beginning or end of a code span:

    A single backtick in a code span: `` ` ``
    +
    +A backtick-delimited string in a code span: `` `foo` ``
    +

    will produce:

    <p>A single backtick in a code span: <code>`</code></p>
    +
    +<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
    +

    With a code span, ampersands and angle brackets are encoded as HTML entities automatically, which makes it easy to include example HTML tags. Markdown will turn this:

    Please don't use any `<blink>` tags.
    +

    into:

    <p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
    +

    You can write this:

    `&#8212;` is the decimal-encoded equivalent of `&mdash;`.
    +

    to produce:

    <p><code>&amp;#8212;</code> is the decimal-encoded
    +equivalent of <code>&amp;mdash;</code>.</p>
    +

    Images

    Admittedly, it's fairly difficult to devise a "natural" syntax for placing images into a plain text document format.

    Markdown uses an image syntax that is intended to resemble the syntax for links, allowing for two styles: inline and reference.

    Inline image syntax looks like this:

    ![Alt text](/path/to/img.jpg)
    +
    +![Alt text](/path/to/img.jpg "Optional title")
    +

    That is:

    • An exclamation mark: !;
    • followed by a set of square brackets, containing the alt attribute text for the image;
    • followed by a set of parentheses, containing the URL or path to the image, and an optional title attribute enclosed in double or single quotes.

    Reference-style image syntax looks like this:

    ![Alt text][id]
    +

    Where "id" is the name of a defined image reference. Image references are defined using syntax identical to link references:

    [id]: url/to/image  "Optional title attribute"
    +

    As of this writing, Markdown has no syntax for specifying the dimensions of an image; if this is important to you, you can simply use regular HTML <img> tags.


    Miscellaneous

    Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:

    <http://example.com/>
    +

    Markdown will turn this into:

    <a href="http://example.com/">http://example.com/</a>
    +

    Automatic links for email addresses work similarly, except that Markdown will also perform a bit of randomized decimal and hex entity-encoding to help obscure your address from address-harvesting spambots. For example, Markdown will turn this:

    <address@example.com>
    +

    into something like this:

    <a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
    +&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
    +&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
    +&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
    +

    which will render in a browser as a clickable link to "address@example.com".

    (This sort of entity-encoding trick will indeed fool many, if not most, address-harvesting bots, but it definitely won't fool all of them. It's better than nothing, but an address published in this way will probably eventually start receiving spam.)

    Backslash Escapes

    Markdown allows you to use backslash escapes to generate literal characters which would otherwise have special meaning in Markdown's formatting syntax. For example, if you wanted to surround a word with literal asterisks (instead of an HTML <em> tag), you can use backslashes before the asterisks, like this:

    \*literal asterisks\*
    +

    Markdown provides backslash escapes for the following characters:

    \   backslash
    +`   backtick
    +*   asterisk
    +_   underscore
    +{}  curly braces
    +[]  square brackets
    +()  parentheses
    +#   hash mark
    ++	plus sign
    +-	minus sign (hyphen)
    +.   dot
    +!   exclamation mark
    +
    John Doe - © 2023
    \ No newline at end of file diff --git a/posts/math/index.html b/posts/math/index.html new file mode 100644 index 0000000..c9684a8 --- /dev/null +++ b/posts/math/index.html @@ -0,0 +1,3 @@ + + Math +
    Mercury
    Modern blog theme
    Math

    Taken from https://mathjax.github.io/MathJax-demos-web/tex-chtml.html

    MathJax v3 beta: TeX input, HTML output test

    When $a \ne 0$, there are two solutions to $ ax^2 + bx + c = 0 $ and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$

    The Lorenz Equations

    $$ \begin{align} \dot{x} & = \sigma(y-x) \ \dot{y} & = \rho x - y - xz \ \dot{z} & = -\beta z + xy \end{align} $$

    The Cauchy-Schwarz Inequality

    $$ \left( \sum_{k=1}^n a_k b_k \right)^{!!2} \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) $$

    A Cross Product Formula

    $$ \mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \ \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \ \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \ \end{vmatrix} $$

    The probability of getting (k) heads when flipping (n) coins is:

    $$ P(E) = {n \choose k} p^k (1-p)^{ n-k} $$

    An Identity of Ramanujan

    $$ \frac{1}{(\sqrt{\phi \sqrt{5}}-\phi) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\ldots} } } } $$

    A Rogers-Ramanujan Identity

    $$ 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \quad\quad \text{for $|q| < 1$}. $$

    Maxwell's Equations

    $$ \begin{align} \nabla \times \vec{\mathbf{B}} -, \frac1c, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \ \nabla \times \vec{\mathbf{E}}, +, \frac1c, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \ \nabla \cdot \vec{\mathbf{B}} & = 0 \end{align} $$

    In-line Mathematics

    Finally, while display equations look good for a page of samples, the ability to mix math and text in a paragraph is also important. This expression $\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As you see, MathJax equations can be used this way as well, without unduly disturbing the spacing between lines.

    John Doe - © 2023
    \ No newline at end of file diff --git a/posts/page/1/index.html b/posts/page/1/index.html new file mode 100644 index 0000000..fbc1095 --- /dev/null +++ b/posts/page/1/index.html @@ -0,0 +1 @@ +Redirect

    Click here to be redirected. \ No newline at end of file diff --git a/posts/table-of-contents/index.html b/posts/table-of-contents/index.html new file mode 100644 index 0000000..1982c62 --- /dev/null +++ b/posts/table-of-contents/index.html @@ -0,0 +1,3 @@ + + Table of Contents Test +

    Mercury
    Modern blog theme
    Table of Contents Test

    Heading 1

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 2

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 3

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 3

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.


    Heading 2

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 3

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 3

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    John Doe - © 2023
    \ No newline at end of file diff --git a/processed_images/project_1_card_image.74a5cdc8f32164ce.png b/processed_images/project_1_card_image.74a5cdc8f32164ce.png new file mode 100644 index 0000000..aee8ef3 Binary files /dev/null and b/processed_images/project_1_card_image.74a5cdc8f32164ce.png differ diff --git a/processed_images/project_3_card_image.a9288b4af345d8d7.jpg b/processed_images/project_3_card_image.a9288b4af345d8d7.jpg new file mode 100644 index 0000000..9dc97bf Binary files /dev/null and b/processed_images/project_3_card_image.a9288b4af345d8d7.jpg differ diff --git a/projects/index.html b/projects/index.html new file mode 100644 index 0000000..00a3199 --- /dev/null +++ b/projects/index.html @@ -0,0 +1,3 @@ + + Mercury +
    Mercury
    Modern blog theme
    Projects
    /projects/project_1_card_image.png

    Project 1

    Example description

    Project 2

    Example description
    /projects/project_3_card_image.jpg

    Project 3

    Example description
    John Doe - © 2023
    \ No newline at end of file diff --git a/projects/project-1/index.html b/projects/project-1/index.html new file mode 100644 index 0000000..eb700d6 --- /dev/null +++ b/projects/project-1/index.html @@ -0,0 +1,3 @@ + + Project 1 +
    Mercury
    Modern blog theme
    Project 1

    Example project page

    Card image: xkcd.com 730 - CC BY-NC 2.5

    John Doe - © 2023
    \ No newline at end of file diff --git a/projects/project-2/index.html b/projects/project-2/index.html new file mode 100644 index 0000000..9c6a7e0 --- /dev/null +++ b/projects/project-2/index.html @@ -0,0 +1,3 @@ + + Project 2 +
    Mercury
    Modern blog theme
    Project 2

    Example project page

    John Doe - © 2023
    \ No newline at end of file diff --git a/projects/project-3/index.html b/projects/project-3/index.html new file mode 100644 index 0000000..926346f --- /dev/null +++ b/projects/project-3/index.html @@ -0,0 +1,3 @@ + + Project 3 +
    Mercury
    Modern blog theme
    John Doe - © 2023
    \ No newline at end of file diff --git a/projects/project_1_card_image.png b/projects/project_1_card_image.png new file mode 100644 index 0000000..0c8cc5f Binary files /dev/null and b/projects/project_1_card_image.png differ diff --git a/projects/project_3_card_image.jpg b/projects/project_3_card_image.jpg new file mode 100644 index 0000000..21fd880 Binary files /dev/null and b/projects/project_3_card_image.jpg differ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..f206a2e --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: +Allow: / +Sitemap: https://mercury.flxzt.net/sitemap.xml diff --git a/search_index.en.js b/search_index.en.js new file mode 100644 index 0000000..c15c3dc --- /dev/null +++ b/search_index.en.js @@ -0,0 +1 @@ +window.searchIndex = {"fields":["title","body"],"pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5","index":{"body":{"root":{"docs":{},"df":0,"0":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.23606797749979}},"df":1},"1":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907},"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":4,"+":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.0}},"df":1}}}}},"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},".":{"docs":{},"df":0,"0":{"docs":{},"df":0,".":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"7":{"docs":{},"df":0,"6":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"}":{"docs":{},"df":0,"+":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{},"df":0,"+":{"docs":{},"df":0,"x":{"docs":{},"df":0,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}},"2":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0}},"df":3,".":{"docs":{},"df":0,"5":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1}},"3":{"docs":{},"df":0,"4":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"a":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"3":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":2.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":3},"4":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":2.8284271247461903}},"df":3,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"a":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"5":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"6":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"7":{"docs":{},"df":0,"3":{"docs":{},"df":0,"0":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1}}},"8":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"1":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"_":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.0}},"df":1,"@":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}},"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/math/":{"tf":3.605551275463989}},"df":2,";":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"l":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"g":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}},"y":{"docs":{},"df":0,"w":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}},"r":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"c":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1}}}}}}},"t":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}}}}},"x":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"x":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"b":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"_":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}}}}}},"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"{":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}},"v":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"t":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}},"g":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.795831523312719}},"df":1,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1,"e":{"docs":{},"df":0,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}},"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.872983346207417}},"df":1}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"u":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"c":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":2},"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1},"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.123105625617661}},"df":1}}}}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":5.291502622129181}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":2}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"y":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"y":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"o":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"b":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}},"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"2":{"docs":{},"df":0,"5":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"s":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}},"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":6.708203932499369}},"df":1}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}}},"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"o":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1,"{":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}},"v":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.23606797749979}},"df":1}},"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":6.708203932499369}},"df":1},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1,"t":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.358898943540674},"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":5}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}},"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.4641016151377544}},"df":1}}}},"o":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1},"t":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.872983346207417}},"df":1,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"1":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}},"{":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"4":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"c":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{},"df":0,"j":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}},"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.0}},"df":1,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{},"df":0,"b":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}},"e":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"q":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}},"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0},"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":2}}},"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"/":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"/":{"docs":{},"df":0,"2":{"docs":{},"df":0,".":{"docs":{},"df":0,"3":{"docs":{},"df":0,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"o":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"g":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1},"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1}}}}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"s":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}}}},"l":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"x":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"z":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":6.708203932499369},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,":":{"docs":{},"df":0,"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}},"i":{"docs":{},"df":0,".":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1},"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":2,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":3}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}}},"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"e":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}},"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1},"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}},"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.0}},"df":1,"l":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"f":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}},"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"c":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"z":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}},"f":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":2}},"q":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}},"n":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":5.196152422706632},"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":2},"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":6.855654600401044}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":5.291502622129181}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.0}},"df":1}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.7416573867739413},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1},"n":{"docs":{},"df":0,"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2,";":{"docs":{},"df":0,"a":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"b":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"h":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"g":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"p":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}}},"n":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":7.681145747868608}},"df":1,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.4641016151377544}},"df":1},".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"u":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"h":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"j":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"v":{"docs":{},"df":0,"}":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"'":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1,"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}}},"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.0}},"df":1}}},"m":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}},"r":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"c":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1},"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"c":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":6.708203932499369}},"df":1,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"q":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"c":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.7416573867739413}},"df":1}}}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}}},"r":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}}},"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}},"p":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"(":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"^":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"g":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":4}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.123105625617661},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}}}}},"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}},"h":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}},"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"m":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}},"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}},"d":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"j":{"docs":{},"df":0,"=":{"docs":{},"df":0,"0":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/projects/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.4142135623730951}},"df":4}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0},"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":2}}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}},"q":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,")":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"}":{"docs":{},"df":0,"+":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"q":{"docs":{},"df":0,"^":{"docs":{},"df":0,"6":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"^":{"docs":{},"df":0,"2":{"docs":{},"df":0,")":{"docs":{},"df":0,"}":{"docs":{},"df":0,"+":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"{":{"docs":{},"df":0,"5":{"docs":{},"df":0,"j":{"docs":{},"df":0,"+":{"docs":{},"df":0,"2":{"docs":{},"df":0,"}":{"docs":{},"df":0,")":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"3":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":6.708203932499369}},"df":1},"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.0}},"df":1}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}}},"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}},"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"h":{"docs":{},"df":0,"o":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":2,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"!":{"docs":{},"df":0,"!":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"s":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}}},"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"m":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"p":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"d":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":7.745966692414834}},"df":1},"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}},"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1,"e":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":2}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.47213595499958},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"f":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"q":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"3":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"5":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"b":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.58257569495584}},"df":1}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"k":{"docs":{},"df":0,"=":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1}}}}}}}}},"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"y":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.795831523312719}},"df":1}}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":2}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":5.196152422706632}},"df":1},"k":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}},"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":2}},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.58257569495584},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"{":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"y":{"docs":{},"df":0,"'":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1}},"t":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"g":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1},"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"o":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"r":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1},"n":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}},"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":7.3484692283495345},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"v":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"3":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"0":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"b":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}},"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}},"l":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1},"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}},"y":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"e":{"docs":{},"df":0,"b":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}},"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1},"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1},"t":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.358898943540674}},"df":1,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1,"k":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1}}}}}}},"y":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}},"y":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"'":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1},"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1},"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}},"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0}},"df":1}}}}}},"title":{"root":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0}},"df":1},"3":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":1}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/projects/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":4}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"y":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":1}}}}}}},"documentStore":{"save":true,"docs":{"https://mercury.flxzt.net/":{"body":"","id":"https://mercury.flxzt.net/","title":"Recent"},"https://mercury.flxzt.net/about/":{"body":"This site provides a demo for the Mercury theme for the Zola static site generator.\n","id":"https://mercury.flxzt.net/about/","title":"About"},"https://mercury.flxzt.net/posts/":{"body":"","id":"https://mercury.flxzt.net/posts/","title":"Posts"},"https://mercury.flxzt.net/posts/markdown/":{"body":"Taken from github.com/thephpleague/commonmark/blob/2.3/tests/benchmark/sample.md\nOverview\nPhilosophy\nMarkdown is intended to be as easy-to-read and easy-to-write as is feasible.\nReadability, however, is emphasized above all else. A Markdown-formatted\ndocument should be publishable as-is, as plain text, without looking\nlike it's been marked up with tags or formatting instructions. While\nMarkdown's syntax has been influenced by several existing text-to-HTML\nfilters -- including [Setext] 1, [atx] 2, [Textile] 3, [reStructuredText] 4,\n[Grutatext] 5, and [EtText] 6 -- the single biggest source of\ninspiration for Markdown's syntax is the format of plain text email.\nTo this end, Markdown's syntax is comprised entirely of punctuation\ncharacters, which punctuation characters have been carefully chosen so\nas to look like what they mean. E.g., asterisks around a word actually\nlook like *emphasis*. Markdown lists look like, well, lists. Even\nblockquotes look like quoted passages of text, assuming you've ever\nused email.\nInline HTML\nMarkdown's syntax is intended for one purpose: to be used as a\nformat for writing for the web.\nMarkdown is not a replacement for HTML, or even close to it. Its\nsyntax is very small, corresponding only to a very small subset of\nHTML tags. The idea is not to create a syntax that makes it easier\nto insert HTML tags. In my opinion, HTML tags are already easy to\ninsert. The idea for Markdown is to make it easy to read, write, and\nedit prose. HTML is a publishing format; Markdown is a writing\nformat. Thus, Markdown's formatting syntax only addresses issues that\ncan be conveyed in plain text.\nFor any markup that is not covered by Markdown's syntax, you simply\nuse HTML itself. There's no need to preface it or delimit it to\nindicate that you're switching from Markdown to HTML; you just use\nthe tags.\nThe only restrictions are that block-level HTML elements -- e.g. <div>,\n<table>, <pre>, <p>, etc. -- must be separated from surrounding\ncontent by blank lines, and the start and end tags of the block should\nnot be indented with tabs or spaces. Markdown is smart enough not\nto add extra (unwanted) <p> tags around HTML block-level tags.\nFor example, to add an HTML table to a Markdown article:\n\nNote that Markdown formatting syntax is not processed within block-level\nHTML tags. E.g., you can't use Markdown-style *emphasis* inside an\nHTML block.\nSpan-level HTML tags -- e.g. <span>, <cite>, or <del> -- can be\nused anywhere in a Markdown paragraph, list item, or header. If you\nwant, you can even use HTML tags instead of Markdown formatting; e.g. if\nyou'd prefer to use HTML <a> or <img> tags instead of Markdown's\nlink or image syntax, go right ahead.\nUnlike block-level HTML tags, Markdown syntax is processed within\nspan-level tags.\nAutomatic Escaping for Special Characters\nIn HTML, there are two characters that demand special treatment: <\nand &. Left angle brackets are used to start tags; ampersands are\nused to denote HTML entities. If you want to use them as literal\ncharacters, you must escape them as entities, e.g. &lt;, and\n&amp;.\nAmpersands in particular are bedeviling for web writers. If you want to\nwrite about 'AT&T', you need to write 'AT&amp;T'. You even need to\nescape ampersands within URLs. Thus, if you want to link to:\n\nyou need to encode the URL as:\n\nin your anchor tag href attribute. Needless to say, this is easy to\nforget, and is probably the single most common source of HTML validation\nerrors in otherwise well-marked-up web sites.\nMarkdown allows you to use these characters naturally, taking care of\nall the necessary escaping for you. If you use an ampersand as part of\nan HTML entity, it remains unchanged; otherwise it will be translated\ninto &amp;.\nSo, if you want to include a copyright symbol in your article, you can write:\n\nand Markdown will leave it alone. But if you write:\n\nMarkdown will translate it to:\n\nSimilarly, because Markdown supports inline HTML, if you use\nangle brackets as delimiters for HTML tags, Markdown will treat them as\nsuch. But if you write:\n\nMarkdown will translate it to:\n\nHowever, inside Markdown code spans and blocks, angle brackets and\nampersands are always encoded automatically. This makes it easy to use\nMarkdown to write about HTML code. (As opposed to raw HTML, which is a\nterrible format for writing about HTML syntax, because every single <\nand & in your example code needs to be escaped.)\n\nBlock Elements\nParagraphs and Line Breaks\nA paragraph is simply one or more consecutive lines of text, separated\nby one or more blank lines. (A blank line is any line that looks like a\nblank line -- a line containing nothing but spaces or tabs is considered\nblank.) Normal paragraphs should not be indented with spaces or tabs.\nThe implication of the \"one or more consecutive lines of text\" rule is\nthat Markdown supports \"hard-wrapped\" text paragraphs. This differs\nsignificantly from most other text-to-HTML formatters (including Movable\nType's \"Convert Line Breaks\" option) which translate every line break\ncharacter in a paragraph into a <br /> tag.\nWhen you do want to insert a <br /> break tag using Markdown, you\nend a line with two or more spaces, then type return.\nYes, this takes a tad more effort to create a <br />, but a simplistic\n\"every line break is a <br />\" rule wouldn't work for Markdown.\nMarkdown's email-style blockquoting and multi-paragraph list items\nwork best -- and look better -- when you format them with hard breaks.\nHeaders\nMarkdown supports two styles of headers, [Setext] 1 and [atx] 2.\nSetext-style headers are \"underlined\" using equal signs (for first-level\nheaders) and dashes (for second-level headers). For example:\n\nAny number of underlining ='s or -'s will work.\nAtx-style headers use 1-6 hash characters at the start of the line,\ncorresponding to header levels 1-6. For example:\n\nOptionally, you may \"close\" atx-style headers. This is purely\ncosmetic -- you can use this if you think it looks better. The\nclosing hashes don't even need to match the number of hashes\nused to open the header. (The number of opening hashes\ndetermines the header level.) :\n\nBlockquotes\nMarkdown uses email-style > characters for blockquoting. If you're\nfamiliar with quoting passages of text in an email message, then you\nknow how to create a blockquote in Markdown. It looks best if you hard\nwrap the text and put a > before every line:\n\nMarkdown allows you to be lazy and only put the > before the first\nline of a hard-wrapped paragraph:\n\nBlockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\nadding additional levels of >:\n\nBlockquotes can contain other Markdown elements, including headers, lists,\nand code blocks:\n\nThis is a header.\n\nThis is the first list item.\nThis is the second list item.\n\nHere's some example code:\n\n\nAny decent text editor should make email-style quoting easy. For\nexample, with BBEdit, you can make a selection and choose Increase\nQuote Level from the Text menu.\nLists\nMarkdown supports ordered (numbered) and unordered (bulleted) lists.\nUnordered lists use asterisks, pluses, and hyphens -- interchangably\n-- as list markers:\n\nis equivalent to:\n\nand:\n\nOrdered lists use numbers followed by periods:\n\nIt's important to note that the actual numbers you use to mark the\nlist have no effect on the HTML output Markdown produces. The HTML\nMarkdown produces from the above list is:\n\nIf you instead wrote the list in Markdown like this:\n\nor even:\n\nyou'd get the exact same HTML output. The point is, if you want to,\nyou can use ordinal numbers in your ordered Markdown lists, so that\nthe numbers in your source match the numbers in your published HTML.\nBut if you want to be lazy, you don't have to.\nIf you do use lazy list numbering, however, you should still start the\nlist with the number 1. At some point in the future, Markdown may support\nstarting ordered lists at an arbitrary number.\nList markers typically start at the left margin, but may be indented by\nup to three spaces. List markers must be followed by one or more spaces\nor a tab.\nTo make lists look nice, you can wrap items with hanging indents:\n\nBut if you want to be lazy, you don't have to:\n\nIf list items are separated by blank lines, Markdown will wrap the\nitems in <p> tags in the HTML output. For example, this input:\n\nwill turn into:\n\nBut this:\n\nwill turn into:\n\nList items may consist of multiple paragraphs. Each subsequent\nparagraph in a list item must be indented by either 4 spaces\nor one tab:\n\nIt looks nice if you indent every line of the subsequent\nparagraphs, but here again, Markdown will allow you to be\nlazy:\n\nTo put a blockquote within a list item, the blockquote's >\ndelimiters need to be indented:\n\nTo put a code block within a list item, the code block needs\nto be indented twice -- 8 spaces or two tabs:\n\nIt's worth noting that it's possible to trigger an ordered list by\naccident, by writing something like this:\n\nIn other words, a number-period-space sequence at the beginning of a\nline. To avoid this, you can backslash-escape the period:\n\nCode Blocks\nPre-formatted code blocks are used for writing about programming or\nmarkup source code. Rather than forming normal paragraphs, the lines\nof a code block are interpreted literally. Markdown wraps a code block\nin both <pre> and <code> tags.\nTo produce a code block in Markdown, simply indent every line of the\nblock by at least 4 spaces or 1 tab. For example, given this input:\n\nMarkdown will generate:\n\nOne level of indentation -- 4 spaces or 1 tab -- is removed from each\nline of the code block. For example, this:\n\nwill turn into:\n\nA code block continues until it reaches a line that is not indented\n(or the end of the article).\nWithin a code block, ampersands (&) and angle brackets (< and >)\nare automatically converted into HTML entities. This makes it very\neasy to include example HTML source code using Markdown -- just paste\nit and indent it, and Markdown will handle the hassle of encoding the\nampersands and angle brackets. For example, this:\n\nwill turn into:\n\nRegular Markdown syntax is not processed within code blocks. E.g.,\nasterisks are just literal asterisks within a code block. This means\nit's also easy to use Markdown to write about Markdown's own syntax.\nHorizontal Rules\nYou can produce a horizontal rule tag (<hr />) by placing three or\nmore hyphens, asterisks, or underscores on a line by themselves. If you\nwish, you may use spaces between the hyphens or asterisks. Each of the\nfollowing lines will produce a horizontal rule:\n\n\nSpan Elements\nLinks\nMarkdown supports two style of links: inline and reference.\nIn both styles, the link text is delimited by [square brackets].\nTo create an inline link, use a set of regular parentheses immediately\nafter the link text's closing square bracket. Inside the parentheses,\nput the URL where you want the link to point, along with an optional\ntitle for the link, surrounded in quotes. For example:\n\nWill produce:\n\nIf you're referring to a local resource on the same server, you can\nuse relative paths:\n\nReference-style links use a second set of square brackets, inside\nwhich you place a label of your choosing to identify the link:\n\nYou can optionally use a space to separate the sets of brackets:\n\nThen, anywhere in the document, you define your link label like this,\non a line by itself:\n\nThat is:\n\nSquare brackets containing the link identifier (optionally\nindented from the left margin using up to three spaces);\nfollowed by a colon;\nfollowed by one or more spaces (or tabs);\nfollowed by the URL for the link;\noptionally followed by a title attribute for the link, enclosed\nin double or single quotes, or enclosed in parentheses.\n\nThe following three link definitions are equivalent:\n\nNote: There is a known bug in Markdown.pl 1.0.1 which prevents\nsingle quotes from being used to delimit link titles.\nThe link URL may, optionally, be surrounded by angle brackets:\n\nYou can put the title attribute on the next line and use extra spaces\nor tabs for padding, which tends to look better with longer URLs:\n\nLink definitions are only used for creating links during Markdown\nprocessing, and are stripped from your document in the HTML output.\nLink definition names may consist of letters, numbers, spaces, and\npunctuation -- but they are not case sensitive. E.g. these two\nlinks:\n\nare equivalent.\nThe implicit link name shortcut allows you to omit the name of the\nlink, in which case the link text itself is used as the name.\nJust use an empty set of square brackets -- e.g., to link the word\n\"Google\" to the google.com web site, you could simply write:\n\nAnd then define the link:\n\nBecause link names may contain spaces, this shortcut even works for\nmultiple words in the link text:\n\nAnd then define the link:\n\nLink definitions can be placed anywhere in your Markdown document. I\ntend to put them immediately after each paragraph in which they're\nused, but if you want, you can put them all at the end of your\ndocument, sort of like footnotes.\nHere's an example of reference links in action:\n\nUsing the implicit link name shortcut, you could instead write:\n\nBoth of the above examples will produce the following HTML output:\n\nFor comparison, here is the same paragraph written using\nMarkdown's inline link style:\n\nThe point of reference-style links is not that they're easier to\nwrite. The point is that with reference-style links, your document\nsource is vastly more readable. Compare the above examples: using\nreference-style links, the paragraph itself is only 81 characters\nlong; with inline-style links, it's 176 characters; and as raw HTML,\nit's 234 characters. In the raw HTML, there's more markup than there\nis text.\nWith Markdown's reference-style links, a source document much more\nclosely resembles the final output, as rendered in a browser. By\nallowing you to move the markup-related metadata out of the paragraph,\nyou can add links without interrupting the narrative flow of your\nprose.\nEmphasis\nMarkdown treats asterisks (*) and underscores (_) as indicators of\nemphasis. Text wrapped with one * or _ will be wrapped with an\nHTML <em> tag; double *'s or _'s will be wrapped with an HTML\n<strong> tag. E.g., this input:\n\nwill produce:\n\nYou can use whichever style you prefer; the lone restriction is that\nthe same character must be used to open and close an emphasis span.\nEmphasis can be used in the middle of a word:\n\nBut if you surround an * or _ with spaces, it'll be treated as a\nliteral asterisk or underscore.\nTo produce a literal asterisk or underscore at a position where it\nwould otherwise be used as an emphasis delimiter, you can backslash\nescape it:\n\nCode\nTo indicate a span of code, wrap it with backtick quotes (`).\nUnlike a pre-formatted code block, a code span indicates code within a\nnormal paragraph. For example:\n\nwill produce:\n\nTo include a literal backtick character within a code span, you can use\nmultiple backticks as the opening and closing delimiters:\n\nwhich will produce this:\n\nThe backtick delimiters surrounding a code span may include spaces --\none after the opening, one before the closing. This allows you to place\nliteral backtick characters at the beginning or end of a code span:\n\nwill produce:\n\nWith a code span, ampersands and angle brackets are encoded as HTML\nentities automatically, which makes it easy to include example HTML\ntags. Markdown will turn this:\n\ninto:\n\nYou can write this:\n\nto produce:\n\nImages\nAdmittedly, it's fairly difficult to devise a \"natural\" syntax for\nplacing images into a plain text document format.\nMarkdown uses an image syntax that is intended to resemble the syntax\nfor links, allowing for two styles: inline and reference.\nInline image syntax looks like this:\n\nThat is:\n\nAn exclamation mark: !;\nfollowed by a set of square brackets, containing the alt\nattribute text for the image;\nfollowed by a set of parentheses, containing the URL or path to\nthe image, and an optional title attribute enclosed in double\nor single quotes.\n\nReference-style image syntax looks like this:\n\nWhere \"id\" is the name of a defined image reference. Image references\nare defined using syntax identical to link references:\n\nAs of this writing, Markdown has no syntax for specifying the\ndimensions of an image; if this is important to you, you can simply\nuse regular HTML <img> tags.\n\nMiscellaneous\nAutomatic Links\nMarkdown supports a shortcut style for creating \"automatic\" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:\n\nMarkdown will turn this into:\n\nAutomatic links for email addresses work similarly, except that\nMarkdown will also perform a bit of randomized decimal and hex\nentity-encoding to help obscure your address from address-harvesting\nspambots. For example, Markdown will turn this:\n\ninto something like this:\n\nwhich will render in a browser as a clickable link to \"address@example.com\".\n(This sort of entity-encoding trick will indeed fool many, if not\nmost, address-harvesting bots, but it definitely won't fool all of\nthem. It's better than nothing, but an address published in this way\nwill probably eventually start receiving spam.)\nBackslash Escapes\nMarkdown allows you to use backslash escapes to generate literal\ncharacters which would otherwise have special meaning in Markdown's\nformatting syntax. For example, if you wanted to surround a word\nwith literal asterisks (instead of an HTML <em> tag), you can use\nbackslashes before the asterisks, like this:\n\nMarkdown provides backslash escapes for the following characters:\n\n","id":"https://mercury.flxzt.net/posts/markdown/","title":"Markdown Syntax"},"https://mercury.flxzt.net/posts/math/":{"body":"Taken from https://mathjax.github.io/MathJax-demos-web/tex-chtml.html\nMathJax v3 beta: TeX input, HTML output test\nWhen $a \\ne 0$, there are two solutions to $ ax^2 + bx + c = 0 $ and they are\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$\nThe Lorenz Equations\n$$\n\\begin{align}\n\\dot{x} & = \\sigma(y-x) \\\n\\dot{y} & = \\rho x - y - xz \\\n\\dot{z} & = -\\beta z + xy\n\\end{align}\n$$\nThe Cauchy-Schwarz Inequality\n$$\n\\left( \\sum_{k=1}^n a_k b_k \\right)^{!!2} \\leq\n\\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n$$\nA Cross Product Formula\n$$\n\\mathbf{V}_1 \\times \\mathbf{V}_2 =\n\\begin{vmatrix}\n\\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\n\\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\n\\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\n\\end{vmatrix}\n$$\nThe probability of getting (k) heads when flipping (n) coins is:\n$$\nP(E) = {n \\choose k} p^k (1-p)^{ n-k}\n$$\nAn Identity of Ramanujan\n$$\n\\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n{1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n$$\nA Rogers-Ramanujan Identity\n$$\n1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n\\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n\\quad\\quad \\text{for $|q| < 1$}.\n$$\nMaxwell's Equations\n$$\n\\begin{align}\n\\nabla \\times \\vec{\\mathbf{B}} -, \\frac1c, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\n\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\n\\nabla \\times \\vec{\\mathbf{E}}, +, \\frac1c, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\n\\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n\\end{align}\n$$\nIn-line Mathematics\nFinally, while display equations look good for a page of samples, the\nability to mix math and text in a paragraph is also important. This\nexpression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\nyou see, MathJax equations can be used this way as well, without unduly\ndisturbing the spacing between lines.\n","id":"https://mercury.flxzt.net/posts/math/","title":"Math"},"https://mercury.flxzt.net/posts/table-of-contents/":{"body":"Heading 1\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 2\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 3\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 3\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\n\nHeading 2\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 3\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 3\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\n","id":"https://mercury.flxzt.net/posts/table-of-contents/","title":"Table of Contents Test"},"https://mercury.flxzt.net/projects/":{"body":"","id":"https://mercury.flxzt.net/projects/","title":"Projects"},"https://mercury.flxzt.net/projects/project-1/":{"body":"Example project page\nCard image: xkcd.com 730 - CC BY-NC 2.5\n","id":"https://mercury.flxzt.net/projects/project-1/","title":"Project 1"},"https://mercury.flxzt.net/projects/project-2/":{"body":"Example project page\n","id":"https://mercury.flxzt.net/projects/project-2/","title":"Project 2"},"https://mercury.flxzt.net/projects/project-3/":{"body":"Example project page\nCard image: NASA - Media Usage Guidelines\n","id":"https://mercury.flxzt.net/projects/project-3/","title":"Project 3"}},"docInfo":{"https://mercury.flxzt.net/":{"body":0,"title":1},"https://mercury.flxzt.net/about/":{"body":9,"title":0},"https://mercury.flxzt.net/posts/":{"body":0,"title":1},"https://mercury.flxzt.net/posts/markdown/":{"body":1764,"title":2},"https://mercury.flxzt.net/posts/math/":{"body":208,"title":1},"https://mercury.flxzt.net/posts/table-of-contents/":{"body":1485,"title":3},"https://mercury.flxzt.net/projects/":{"body":0,"title":1},"https://mercury.flxzt.net/projects/project-1/":{"body":10,"title":2},"https://mercury.flxzt.net/projects/project-2/":{"body":3,"title":2},"https://mercury.flxzt.net/projects/project-3/":{"body":9,"title":2}},"length":10},"lang":"English"}; \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..efdb576 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,42 @@ + + + + https://mercury.flxzt.net/ + + + https://mercury.flxzt.net/about/ + + + https://mercury.flxzt.net/posts/ + + + https://mercury.flxzt.net/posts/markdown/ + 2022-01-01 + + + https://mercury.flxzt.net/posts/math/ + 2022-01-03 + + + https://mercury.flxzt.net/posts/page/1/ + + + https://mercury.flxzt.net/posts/table-of-contents/ + 2022-01-02 + + + https://mercury.flxzt.net/projects/ + + + https://mercury.flxzt.net/projects/project-1/ + + + https://mercury.flxzt.net/projects/project-2/ + + + https://mercury.flxzt.net/projects/project-3/ + + + https://mercury.flxzt.net/tags/ + + diff --git a/social_icons/LICENSE b/social_icons/LICENSE new file mode 100644 index 0000000..993facc --- /dev/null +++ b/social_icons/LICENSE @@ -0,0 +1 @@ +All icons in this directory are downloaded from [FontAwesome](https://fontawesome.com/). They are part of the [free offer](https://fontawesome.com/license/free) and are licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). \ No newline at end of file diff --git a/social_icons/apple.svg b/social_icons/apple.svg new file mode 100644 index 0000000..d0532d5 --- /dev/null +++ b/social_icons/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/bitcoin.svg b/social_icons/bitcoin.svg new file mode 100644 index 0000000..941d9b0 --- /dev/null +++ b/social_icons/bitcoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/deviantart.svg b/social_icons/deviantart.svg new file mode 100644 index 0000000..7dbd0b6 --- /dev/null +++ b/social_icons/deviantart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/diaspora.svg b/social_icons/diaspora.svg new file mode 100644 index 0000000..55527b5 --- /dev/null +++ b/social_icons/diaspora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/discord.svg b/social_icons/discord.svg new file mode 100644 index 0000000..f0dfeab --- /dev/null +++ b/social_icons/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/discourse.svg b/social_icons/discourse.svg new file mode 100644 index 0000000..343bea6 --- /dev/null +++ b/social_icons/discourse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/email.svg b/social_icons/email.svg new file mode 100644 index 0000000..85245e2 --- /dev/null +++ b/social_icons/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/ethereum.svg b/social_icons/ethereum.svg new file mode 100644 index 0000000..af202de --- /dev/null +++ b/social_icons/ethereum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/etsy.svg b/social_icons/etsy.svg new file mode 100644 index 0000000..ebc040a --- /dev/null +++ b/social_icons/etsy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/facebook.svg b/social_icons/facebook.svg new file mode 100644 index 0000000..0afaf7a --- /dev/null +++ b/social_icons/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/github.svg b/social_icons/github.svg new file mode 100644 index 0000000..e32807a --- /dev/null +++ b/social_icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/gitlab.svg b/social_icons/gitlab.svg new file mode 100644 index 0000000..b577d3f --- /dev/null +++ b/social_icons/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/google.svg b/social_icons/google.svg new file mode 100644 index 0000000..b3776b0 --- /dev/null +++ b/social_icons/google.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/hacker-news.svg b/social_icons/hacker-news.svg new file mode 100644 index 0000000..23e3980 --- /dev/null +++ b/social_icons/hacker-news.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/instagram.svg b/social_icons/instagram.svg new file mode 100644 index 0000000..89f63c4 --- /dev/null +++ b/social_icons/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/linkedin.svg b/social_icons/linkedin.svg new file mode 100644 index 0000000..d54fcf5 --- /dev/null +++ b/social_icons/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/mastodon.svg b/social_icons/mastodon.svg new file mode 100644 index 0000000..5e12f81 --- /dev/null +++ b/social_icons/mastodon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/paypal.svg b/social_icons/paypal.svg new file mode 100644 index 0000000..efdc81a --- /dev/null +++ b/social_icons/paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/pinterest.svg b/social_icons/pinterest.svg new file mode 100644 index 0000000..eb977c2 --- /dev/null +++ b/social_icons/pinterest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/quora.svg b/social_icons/quora.svg new file mode 100644 index 0000000..375d302 --- /dev/null +++ b/social_icons/quora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/reddit.svg b/social_icons/reddit.svg new file mode 100644 index 0000000..a8a3a96 --- /dev/null +++ b/social_icons/reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/rss.svg b/social_icons/rss.svg new file mode 100644 index 0000000..b862886 --- /dev/null +++ b/social_icons/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/skype.svg b/social_icons/skype.svg new file mode 100644 index 0000000..3369aba --- /dev/null +++ b/social_icons/skype.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/slack.svg b/social_icons/slack.svg new file mode 100644 index 0000000..0dbc26d --- /dev/null +++ b/social_icons/slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/snapchat.svg b/social_icons/snapchat.svg new file mode 100644 index 0000000..2cd79dd --- /dev/null +++ b/social_icons/snapchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/soundcloud.svg b/social_icons/soundcloud.svg new file mode 100644 index 0000000..4724d74 --- /dev/null +++ b/social_icons/soundcloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/spotify.svg b/social_icons/spotify.svg new file mode 100644 index 0000000..1d393ba --- /dev/null +++ b/social_icons/spotify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/stack-exchange.svg b/social_icons/stack-exchange.svg new file mode 100644 index 0000000..0a3177f --- /dev/null +++ b/social_icons/stack-exchange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/stack-overflow.svg b/social_icons/stack-overflow.svg new file mode 100644 index 0000000..2ca50c7 --- /dev/null +++ b/social_icons/stack-overflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/steam.svg b/social_icons/steam.svg new file mode 100644 index 0000000..b61f374 --- /dev/null +++ b/social_icons/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/telegram.svg b/social_icons/telegram.svg new file mode 100644 index 0000000..02f48c0 --- /dev/null +++ b/social_icons/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/twitter.svg b/social_icons/twitter.svg new file mode 100644 index 0000000..0778f72 --- /dev/null +++ b/social_icons/twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/vimeo.svg b/social_icons/vimeo.svg new file mode 100644 index 0000000..d98368e --- /dev/null +++ b/social_icons/vimeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/whatsapp.svg b/social_icons/whatsapp.svg new file mode 100644 index 0000000..d259142 --- /dev/null +++ b/social_icons/whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/youtube.svg b/social_icons/youtube.svg new file mode 100644 index 0000000..287dca2 --- /dev/null +++ b/social_icons/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/theme/dark.css b/theme/dark.css new file mode 100644 index 0000000..d76e036 --- /dev/null +++ b/theme/dark.css @@ -0,0 +1 @@ +:root{--text-0: #f5f5f5;--text-1: #e2e2e2;--bg-0: #5f6b75;--bg-1: #232527;--bg-2: #1a1c1d;--accent-bg: #44494e;--bg-noise-image: url(/images/noise_dark.png);--primary-color: #96493f;--hover-color: #96493f;--accent-color: #828e99} \ No newline at end of file diff --git a/theme/light.css b/theme/light.css new file mode 100644 index 0000000..8e0b525 --- /dev/null +++ b/theme/light.css @@ -0,0 +1 @@ +:root{--text-0: #1a1a1a;--text-1: #242424;--bg-0: #d6d6d6;--bg-1: #f8f8f8;--bg-2: #d3d5d8;--accent-bg: #f5f5dc;--bg-noise-image: url(/images/noise_light.png);--primary-color: #b34e41;--hover-color: #b34e41;--accent-color: #dbcb9f} \ No newline at end of file