diff --git a/.eslintrc b/.eslintrc
index 7845cd43..94517992 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -5,7 +5,7 @@
},
"parserOptions": {
"sourceType": "module",
- "ecmaVersion": 2015
+ "ecmaVersion": 2018
},
"rules": {
"no-unused-vars": [
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a09a5bab..91f757fc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -10,12 +10,12 @@ jobs:
fail-fast: false
matrix:
versions:
+ - node: '17.x'
+ - node: '16.x'
- node: '15.x'
- node: '14.x'
- node: '13.x'
- node: '12.x'
- - node: '11.x'
- - node: '10.x'
steps:
- uses: actions/checkout@v1
- name: Use Node.js
diff --git a/.gitignore b/.gitignore
index 9715b007..39d1757c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
*#
node_modules/
package-lock.json
+dist/*.js
diff --git a/Makefile b/Makefile
index 653db7a0..96469dec 100644
--- a/Makefile
+++ b/Makefile
@@ -3,28 +3,18 @@ SPECVERSION=$(shell perl -ne 'print $$1 if /^version: *([0-9.]+)/' $(SPEC))
BENCHINP?=bench/samples/README.md
VERSION?=$(SPECVERSION)
JSMODULES=$(wildcard lib/*.js)
-UGLIFYJS=node_modules/.bin/uglifyjs
LICENSETEXT="/* commonmark $(VERSION) https://github.com/commonmark/commonmark.js @license BSD3 */"
-.PHONY: dingus dist test bench bench-detailed npm lint clean update-spec
+.PHONY: dingus test bench bench-detailed npm lint clean update-spec
lint:
npm run lint
-dist: dist/commonmark.js dist/commonmark.min.js
-
-dist/commonmark.js: lib/index.js ${JSMODULES}
- npm run build
- (echo $(LICENSETEXT) && cat $@) > $@.tmp && mv $@.tmp $@
-
-dist/commonmark.min.js: dist/commonmark.js
- (echo $(LICENSETEXT) && cat $@) > $@.tmp && mv $@.tmp $@
-
update-spec:
curl 'https://raw.githubusercontent.com/jgm/CommonMark/master/spec.txt' > $(SPEC)
test: $(SPEC)
- npm build && npm test
+ npm test
bench:
node bench/bench.js ${BENCHINP}
@@ -34,9 +24,6 @@ bench-detailed:
for x in bench/samples/*.md; do echo $$x; node bench/bench.js $$x; done | \
awk -f bench/format_benchmarks.awk
-npm:
- cd js; npm publish
-
dingus:
make -C dingus dingus
diff --git a/README.md b/README.md
index 1070303e..c956d40e 100644
--- a/README.md
+++ b/README.md
@@ -32,9 +32,20 @@ You can install the library using `npm`:
This package includes the commonmark library and a
command-line executable, `commonmark`.
-For client-side use, fetch the latest from
-,
-or `bower install commonmark`.
+For client-side use, you can use one of the single-file
+distributions provided in the `dist/` subdirectory
+of the node installation (`node_modules/commonmark/dist/`).
+Use either `commonmark.js` (readable source) or
+`commonmark.min.js` (minimized source).
+
+Alternatively, `bower install commonmark` will install
+the needed distribution files in
+`bower_components/commonmark/dist`.
+
+You can also use the version hosted by unpkg: for example,
+
+for the unminimized version 0.29.3.
+
Building
--------
@@ -43,14 +54,12 @@ Make sure to fetch dependencies with:
npm install
-To build standalone JavaScript files (`dist/commonmark.js` and
-`dist/commonmark.min.js`):
-
- make dist
-
To run tests for the JavaScript library:
- make test
+ npm test
+
+(Running the tests will also rebuild distribution files in
+`dist/`.)
To run benchmarks against some other JavaScript converters:
@@ -105,10 +114,8 @@ Both `HtmlRenderer` and `XmlRenderer` (see below) support these options:
`vbscript:`, `file:`, and with a few exceptions `data:`) will
be replaced with empty strings.
- `softbreak`: specify raw string to be used for a softbreak.
-- `esc`: specify a function to be used to escape strings. Its
- first argument is the string to be escaped, the second argument
- is a boolean indicating whether to preserves entities in that
- string.
+- `esc`: specify a function to be used to escape strings. Its
+ argument is the string.
For example, to make soft breaks render as hard breaks in HTML:
@@ -151,7 +158,7 @@ The parser returns a Node. The following public properties are defined
- `title`: link or image title (String) or null.
- `info`: fenced code block info string (String) or null.
- `level`: heading level (Number).
-- `listType`: a String, either `Bullet` or `Ordered`.
+- `listType`: a String, either `bullet` or `ordered`.
- `listTight`: `true` if list is tight.
- `listStart`: a Number, the starting number of an ordered list.
- `listDelimiter`: a String, either `)` or `.` for an ordered list.
diff --git a/bench/bench.js b/bench/bench.js
index b6f738d0..850645a9 100644
--- a/bench/bench.js
+++ b/bench/bench.js
@@ -4,7 +4,7 @@ var benchmark = require("benchmark");
var fs = require("fs");
var commonmark = require("commonmark");
var Showdown = require("showdown");
-var marked = require("marked");
+const { marked } = require("marked");
var _markdownit = require("markdown-it");
var suite = new benchmark.Suite();
@@ -37,7 +37,7 @@ suite
})
.add("marked.js", function() {
- marked(contents);
+ marked.parse(contents);
})
.add("markdown-it", function() {
diff --git a/changelog.txt b/changelog.txt
index 7f9c6631..baf4ec3f 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,66 @@
+0.31.2]
+
+ * Require minimist >= 1.2.8 (#290), see CVE-2021-44906.
+
+[0.31.1]
+
+ * Fix HTML comment parsing with `-` before closing `-->`
+ (#285, Robin Stocker).
+ * Accept lowercase inline HTML declarations (Michael Howell).
+ * Fix title-related backtracking with empty string (#281,
+ Michael Howell).
+ * Remove `string.prototype.repeat` polyfill (Steven).
+ * Remove `source`, add `search` to list of recognized block tags.
+ (a spec 0.31 change we forgot in last release).
+
+[0.31.0]
+
+ * Update to 0.31 spec.txt.
+ * Treat unicode symbols like punctuation for purposes of flankingness.
+ This updates the library to conform to the 0.31 spec.
+ * Do not process `&`-entities that don't end in `;` (#278, Michael Howell).
+ * Html renderer: don't add `language-` to code block class
+ if the info string already starts with `language-` (#277).
+ * Fix pathological regex for HTML comments (#273).
+ * Track underscore bottom separately mod 3, like asterisk (Michael Howell).
+ * Fix list tightness (taku0).
+ * Fix "CommomMark" typo (#270, Martin Geisler).
+ * Declarations do not need a space, per the spec (commonmark/cmark#456).
+ * Allow `= 0xD800 && code <= 0xDFFF) {
- if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {
- nextCode = string.charCodeAt(i + 1);
- if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {
- result += encodeURIComponent(string[i] + string[i + 1]);
- i++;
- continue;
- }
- }
- result += '%EF%BF%BD';
- continue;
- }
-
- result += encodeURIComponent(string[i]);
- }
-
- return result;
- }
-
- encode.defaultChars = ";/?:@&=+$,-_.!~*'()#";
- encode.componentChars = "-_.!~*'()";
-
-
- var encode_1 = encode;
-
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
-
- function unwrapExports (x) {
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
- }
-
- function createCommonjsModule(fn, module) {
- return module = { exports: {} }, fn(module, module.exports), module.exports;
- }
-
- function getCjsExportFromNamespace (n) {
- return n && n['default'] || n;
- }
-
- var Aacute = "Á";
- var aacute = "á";
- var Abreve = "Ă";
- var abreve = "ă";
- var ac = "∾";
- var acd = "∿";
- var acE = "∾̳";
- var Acirc = "Â";
- var acirc = "â";
- var acute = "´";
- var Acy = "А";
- var acy = "а";
- var AElig = "Æ";
- var aelig = "æ";
- var af = "";
- var Afr = "𝔄";
- var afr = "𝔞";
- var Agrave = "À";
- var agrave = "à";
- var alefsym = "ℵ";
- var aleph = "ℵ";
- var Alpha = "Α";
- var alpha = "α";
- var Amacr = "Ā";
- var amacr = "ā";
- var amalg = "⨿";
- var amp = "&";
- var AMP = "&";
- var andand = "⩕";
- var And = "⩓";
- var and = "∧";
- var andd = "⩜";
- var andslope = "⩘";
- var andv = "⩚";
- var ang = "∠";
- var ange = "⦤";
- var angle = "∠";
- var angmsdaa = "⦨";
- var angmsdab = "⦩";
- var angmsdac = "⦪";
- var angmsdad = "⦫";
- var angmsdae = "⦬";
- var angmsdaf = "⦭";
- var angmsdag = "⦮";
- var angmsdah = "⦯";
- var angmsd = "∡";
- var angrt = "∟";
- var angrtvb = "⊾";
- var angrtvbd = "⦝";
- var angsph = "∢";
- var angst = "Å";
- var angzarr = "⍼";
- var Aogon = "Ą";
- var aogon = "ą";
- var Aopf = "𝔸";
- var aopf = "𝕒";
- var apacir = "⩯";
- var ap = "≈";
- var apE = "⩰";
- var ape = "≊";
- var apid = "≋";
- var apos = "'";
- var ApplyFunction = "";
- var approx = "≈";
- var approxeq = "≊";
- var Aring = "Å";
- var aring = "å";
- var Ascr = "𝒜";
- var ascr = "𝒶";
- var Assign = "≔";
- var ast = "*";
- var asymp = "≈";
- var asympeq = "≍";
- var Atilde = "Ã";
- var atilde = "ã";
- var Auml = "Ä";
- var auml = "ä";
- var awconint = "∳";
- var awint = "⨑";
- var backcong = "≌";
- var backepsilon = "϶";
- var backprime = "‵";
- var backsim = "∽";
- var backsimeq = "⋍";
- var Backslash = "∖";
- var Barv = "⫧";
- var barvee = "⊽";
- var barwed = "⌅";
- var Barwed = "⌆";
- var barwedge = "⌅";
- var bbrk = "⎵";
- var bbrktbrk = "⎶";
- var bcong = "≌";
- var Bcy = "Б";
- var bcy = "б";
- var bdquo = "„";
- var becaus = "∵";
- var because = "∵";
- var Because = "∵";
- var bemptyv = "⦰";
- var bepsi = "϶";
- var bernou = "ℬ";
- var Bernoullis = "ℬ";
- var Beta = "Β";
- var beta = "β";
- var beth = "ℶ";
- var between = "≬";
- var Bfr = "𝔅";
- var bfr = "𝔟";
- var bigcap = "⋂";
- var bigcirc = "◯";
- var bigcup = "⋃";
- var bigodot = "⨀";
- var bigoplus = "⨁";
- var bigotimes = "⨂";
- var bigsqcup = "⨆";
- var bigstar = "★";
- var bigtriangledown = "▽";
- var bigtriangleup = "△";
- var biguplus = "⨄";
- var bigvee = "⋁";
- var bigwedge = "⋀";
- var bkarow = "⤍";
- var blacklozenge = "⧫";
- var blacksquare = "▪";
- var blacktriangle = "▴";
- var blacktriangledown = "▾";
- var blacktriangleleft = "◂";
- var blacktriangleright = "▸";
- var blank = "␣";
- var blk12 = "▒";
- var blk14 = "░";
- var blk34 = "▓";
- var block = "█";
- var bne = "=⃥";
- var bnequiv = "≡⃥";
- var bNot = "⫭";
- var bnot = "⌐";
- var Bopf = "𝔹";
- var bopf = "𝕓";
- var bot = "⊥";
- var bottom = "⊥";
- var bowtie = "⋈";
- var boxbox = "⧉";
- var boxdl = "┐";
- var boxdL = "╕";
- var boxDl = "╖";
- var boxDL = "╗";
- var boxdr = "┌";
- var boxdR = "╒";
- var boxDr = "╓";
- var boxDR = "╔";
- var boxh = "─";
- var boxH = "═";
- var boxhd = "┬";
- var boxHd = "╤";
- var boxhD = "╥";
- var boxHD = "╦";
- var boxhu = "┴";
- var boxHu = "╧";
- var boxhU = "╨";
- var boxHU = "╩";
- var boxminus = "⊟";
- var boxplus = "⊞";
- var boxtimes = "⊠";
- var boxul = "┘";
- var boxuL = "╛";
- var boxUl = "╜";
- var boxUL = "╝";
- var boxur = "└";
- var boxuR = "╘";
- var boxUr = "╙";
- var boxUR = "╚";
- var boxv = "│";
- var boxV = "║";
- var boxvh = "┼";
- var boxvH = "╪";
- var boxVh = "╫";
- var boxVH = "╬";
- var boxvl = "┤";
- var boxvL = "╡";
- var boxVl = "╢";
- var boxVL = "╣";
- var boxvr = "├";
- var boxvR = "╞";
- var boxVr = "╟";
- var boxVR = "╠";
- var bprime = "‵";
- var breve = "˘";
- var Breve = "˘";
- var brvbar = "¦";
- var bscr = "𝒷";
- var Bscr = "ℬ";
- var bsemi = "⁏";
- var bsim = "∽";
- var bsime = "⋍";
- var bsolb = "⧅";
- var bsol = "\\";
- var bsolhsub = "⟈";
- var bull = "•";
- var bullet = "•";
- var bump = "≎";
- var bumpE = "⪮";
- var bumpe = "≏";
- var Bumpeq = "≎";
- var bumpeq = "≏";
- var Cacute = "Ć";
- var cacute = "ć";
- var capand = "⩄";
- var capbrcup = "⩉";
- var capcap = "⩋";
- var cap = "∩";
- var Cap = "⋒";
- var capcup = "⩇";
- var capdot = "⩀";
- var CapitalDifferentialD = "ⅅ";
- var caps = "∩︀";
- var caret = "⁁";
- var caron = "ˇ";
- var Cayleys = "ℭ";
- var ccaps = "⩍";
- var Ccaron = "Č";
- var ccaron = "č";
- var Ccedil = "Ç";
- var ccedil = "ç";
- var Ccirc = "Ĉ";
- var ccirc = "ĉ";
- var Cconint = "∰";
- var ccups = "⩌";
- var ccupssm = "⩐";
- var Cdot = "Ċ";
- var cdot = "ċ";
- var cedil = "¸";
- var Cedilla = "¸";
- var cemptyv = "⦲";
- var cent = "¢";
- var centerdot = "·";
- var CenterDot = "·";
- var cfr = "𝔠";
- var Cfr = "ℭ";
- var CHcy = "Ч";
- var chcy = "ч";
- var check = "✓";
- var checkmark = "✓";
- var Chi = "Χ";
- var chi = "χ";
- var circ = "ˆ";
- var circeq = "≗";
- var circlearrowleft = "↺";
- var circlearrowright = "↻";
- var circledast = "⊛";
- var circledcirc = "⊚";
- var circleddash = "⊝";
- var CircleDot = "⊙";
- var circledR = "®";
- var circledS = "Ⓢ";
- var CircleMinus = "⊖";
- var CirclePlus = "⊕";
- var CircleTimes = "⊗";
- var cir = "○";
- var cirE = "⧃";
- var cire = "≗";
- var cirfnint = "⨐";
- var cirmid = "⫯";
- var cirscir = "⧂";
- var ClockwiseContourIntegral = "∲";
- var CloseCurlyDoubleQuote = "”";
- var CloseCurlyQuote = "’";
- var clubs = "♣";
- var clubsuit = "♣";
- var colon = ":";
- var Colon = "∷";
- var Colone = "⩴";
- var colone = "≔";
- var coloneq = "≔";
- var comma = ",";
- var commat = "@";
- var comp = "∁";
- var compfn = "∘";
- var complement = "∁";
- var complexes = "ℂ";
- var cong = "≅";
- var congdot = "⩭";
- var Congruent = "≡";
- var conint = "∮";
- var Conint = "∯";
- var ContourIntegral = "∮";
- var copf = "𝕔";
- var Copf = "ℂ";
- var coprod = "∐";
- var Coproduct = "∐";
- var copy = "©";
- var COPY = "©";
- var copysr = "℗";
- var CounterClockwiseContourIntegral = "∳";
- var crarr = "↵";
- var cross = "✗";
- var Cross = "⨯";
- var Cscr = "𝒞";
- var cscr = "𝒸";
- var csub = "⫏";
- var csube = "⫑";
- var csup = "⫐";
- var csupe = "⫒";
- var ctdot = "⋯";
- var cudarrl = "⤸";
- var cudarrr = "⤵";
- var cuepr = "⋞";
- var cuesc = "⋟";
- var cularr = "↶";
- var cularrp = "⤽";
- var cupbrcap = "⩈";
- var cupcap = "⩆";
- var CupCap = "≍";
- var cup = "∪";
- var Cup = "⋓";
- var cupcup = "⩊";
- var cupdot = "⊍";
- var cupor = "⩅";
- var cups = "∪︀";
- var curarr = "↷";
- var curarrm = "⤼";
- var curlyeqprec = "⋞";
- var curlyeqsucc = "⋟";
- var curlyvee = "⋎";
- var curlywedge = "⋏";
- var curren = "¤";
- var curvearrowleft = "↶";
- var curvearrowright = "↷";
- var cuvee = "⋎";
- var cuwed = "⋏";
- var cwconint = "∲";
- var cwint = "∱";
- var cylcty = "⌭";
- var dagger = "†";
- var Dagger = "‡";
- var daleth = "ℸ";
- var darr = "↓";
- var Darr = "↡";
- var dArr = "⇓";
- var dash = "‐";
- var Dashv = "⫤";
- var dashv = "⊣";
- var dbkarow = "⤏";
- var dblac = "˝";
- var Dcaron = "Ď";
- var dcaron = "ď";
- var Dcy = "Д";
- var dcy = "д";
- var ddagger = "‡";
- var ddarr = "⇊";
- var DD = "ⅅ";
- var dd = "ⅆ";
- var DDotrahd = "⤑";
- var ddotseq = "⩷";
- var deg = "°";
- var Del = "∇";
- var Delta = "Δ";
- var delta = "δ";
- var demptyv = "⦱";
- var dfisht = "⥿";
- var Dfr = "𝔇";
- var dfr = "𝔡";
- var dHar = "⥥";
- var dharl = "⇃";
- var dharr = "⇂";
- var DiacriticalAcute = "´";
- var DiacriticalDot = "˙";
- var DiacriticalDoubleAcute = "˝";
- var DiacriticalGrave = "`";
- var DiacriticalTilde = "˜";
- var diam = "⋄";
- var diamond = "⋄";
- var Diamond = "⋄";
- var diamondsuit = "♦";
- var diams = "♦";
- var die = "¨";
- var DifferentialD = "ⅆ";
- var digamma = "ϝ";
- var disin = "⋲";
- var div = "÷";
- var divide = "÷";
- var divideontimes = "⋇";
- var divonx = "⋇";
- var DJcy = "Ђ";
- var djcy = "ђ";
- var dlcorn = "⌞";
- var dlcrop = "⌍";
- var dollar = "$";
- var Dopf = "𝔻";
- var dopf = "𝕕";
- var Dot = "¨";
- var dot = "˙";
- var DotDot = "⃜";
- var doteq = "≐";
- var doteqdot = "≑";
- var DotEqual = "≐";
- var dotminus = "∸";
- var dotplus = "∔";
- var dotsquare = "⊡";
- var doublebarwedge = "⌆";
- var DoubleContourIntegral = "∯";
- var DoubleDot = "¨";
- var DoubleDownArrow = "⇓";
- var DoubleLeftArrow = "⇐";
- var DoubleLeftRightArrow = "⇔";
- var DoubleLeftTee = "⫤";
- var DoubleLongLeftArrow = "⟸";
- var DoubleLongLeftRightArrow = "⟺";
- var DoubleLongRightArrow = "⟹";
- var DoubleRightArrow = "⇒";
- var DoubleRightTee = "⊨";
- var DoubleUpArrow = "⇑";
- var DoubleUpDownArrow = "⇕";
- var DoubleVerticalBar = "∥";
- var DownArrowBar = "⤓";
- var downarrow = "↓";
- var DownArrow = "↓";
- var Downarrow = "⇓";
- var DownArrowUpArrow = "⇵";
- var DownBreve = "̑";
- var downdownarrows = "⇊";
- var downharpoonleft = "⇃";
- var downharpoonright = "⇂";
- var DownLeftRightVector = "⥐";
- var DownLeftTeeVector = "⥞";
- var DownLeftVectorBar = "⥖";
- var DownLeftVector = "↽";
- var DownRightTeeVector = "⥟";
- var DownRightVectorBar = "⥗";
- var DownRightVector = "⇁";
- var DownTeeArrow = "↧";
- var DownTee = "⊤";
- var drbkarow = "⤐";
- var drcorn = "⌟";
- var drcrop = "⌌";
- var Dscr = "𝒟";
- var dscr = "𝒹";
- var DScy = "Ѕ";
- var dscy = "ѕ";
- var dsol = "⧶";
- var Dstrok = "Đ";
- var dstrok = "đ";
- var dtdot = "⋱";
- var dtri = "▿";
- var dtrif = "▾";
- var duarr = "⇵";
- var duhar = "⥯";
- var dwangle = "⦦";
- var DZcy = "Џ";
- var dzcy = "џ";
- var dzigrarr = "⟿";
- var Eacute = "É";
- var eacute = "é";
- var easter = "⩮";
- var Ecaron = "Ě";
- var ecaron = "ě";
- var Ecirc = "Ê";
- var ecirc = "ê";
- var ecir = "≖";
- var ecolon = "≕";
- var Ecy = "Э";
- var ecy = "э";
- var eDDot = "⩷";
- var Edot = "Ė";
- var edot = "ė";
- var eDot = "≑";
- var ee = "ⅇ";
- var efDot = "≒";
- var Efr = "𝔈";
- var efr = "𝔢";
- var eg = "⪚";
- var Egrave = "È";
- var egrave = "è";
- var egs = "⪖";
- var egsdot = "⪘";
- var el = "⪙";
- var Element = "∈";
- var elinters = "⏧";
- var ell = "ℓ";
- var els = "⪕";
- var elsdot = "⪗";
- var Emacr = "Ē";
- var emacr = "ē";
- var empty = "∅";
- var emptyset = "∅";
- var EmptySmallSquare = "◻";
- var emptyv = "∅";
- var EmptyVerySmallSquare = "▫";
- var emsp13 = " ";
- var emsp14 = " ";
- var emsp = " ";
- var ENG = "Ŋ";
- var eng = "ŋ";
- var ensp = " ";
- var Eogon = "Ę";
- var eogon = "ę";
- var Eopf = "𝔼";
- var eopf = "𝕖";
- var epar = "⋕";
- var eparsl = "⧣";
- var eplus = "⩱";
- var epsi = "ε";
- var Epsilon = "Ε";
- var epsilon = "ε";
- var epsiv = "ϵ";
- var eqcirc = "≖";
- var eqcolon = "≕";
- var eqsim = "≂";
- var eqslantgtr = "⪖";
- var eqslantless = "⪕";
- var Equal = "⩵";
- var equals = "=";
- var EqualTilde = "≂";
- var equest = "≟";
- var Equilibrium = "⇌";
- var equiv = "≡";
- var equivDD = "⩸";
- var eqvparsl = "⧥";
- var erarr = "⥱";
- var erDot = "≓";
- var escr = "ℯ";
- var Escr = "ℰ";
- var esdot = "≐";
- var Esim = "⩳";
- var esim = "≂";
- var Eta = "Η";
- var eta = "η";
- var ETH = "Ð";
- var eth = "ð";
- var Euml = "Ë";
- var euml = "ë";
- var euro = "€";
- var excl = "!";
- var exist = "∃";
- var Exists = "∃";
- var expectation = "ℰ";
- var exponentiale = "ⅇ";
- var ExponentialE = "ⅇ";
- var fallingdotseq = "≒";
- var Fcy = "Ф";
- var fcy = "ф";
- var female = "♀";
- var ffilig = "ffi";
- var fflig = "ff";
- var ffllig = "ffl";
- var Ffr = "𝔉";
- var ffr = "𝔣";
- var filig = "fi";
- var FilledSmallSquare = "◼";
- var FilledVerySmallSquare = "▪";
- var fjlig = "fj";
- var flat = "♭";
- var fllig = "fl";
- var fltns = "▱";
- var fnof = "ƒ";
- var Fopf = "𝔽";
- var fopf = "𝕗";
- var forall = "∀";
- var ForAll = "∀";
- var fork = "⋔";
- var forkv = "⫙";
- var Fouriertrf = "ℱ";
- var fpartint = "⨍";
- var frac12 = "½";
- var frac13 = "⅓";
- var frac14 = "¼";
- var frac15 = "⅕";
- var frac16 = "⅙";
- var frac18 = "⅛";
- var frac23 = "⅔";
- var frac25 = "⅖";
- var frac34 = "¾";
- var frac35 = "⅗";
- var frac38 = "⅜";
- var frac45 = "⅘";
- var frac56 = "⅚";
- var frac58 = "⅝";
- var frac78 = "⅞";
- var frasl = "⁄";
- var frown = "⌢";
- var fscr = "𝒻";
- var Fscr = "ℱ";
- var gacute = "ǵ";
- var Gamma = "Γ";
- var gamma = "γ";
- var Gammad = "Ϝ";
- var gammad = "ϝ";
- var gap = "⪆";
- var Gbreve = "Ğ";
- var gbreve = "ğ";
- var Gcedil = "Ģ";
- var Gcirc = "Ĝ";
- var gcirc = "ĝ";
- var Gcy = "Г";
- var gcy = "г";
- var Gdot = "Ġ";
- var gdot = "ġ";
- var ge = "≥";
- var gE = "≧";
- var gEl = "⪌";
- var gel = "⋛";
- var geq = "≥";
- var geqq = "≧";
- var geqslant = "⩾";
- var gescc = "⪩";
- var ges = "⩾";
- var gesdot = "⪀";
- var gesdoto = "⪂";
- var gesdotol = "⪄";
- var gesl = "⋛︀";
- var gesles = "⪔";
- var Gfr = "𝔊";
- var gfr = "𝔤";
- var gg = "≫";
- var Gg = "⋙";
- var ggg = "⋙";
- var gimel = "ℷ";
- var GJcy = "Ѓ";
- var gjcy = "ѓ";
- var gla = "⪥";
- var gl = "≷";
- var glE = "⪒";
- var glj = "⪤";
- var gnap = "⪊";
- var gnapprox = "⪊";
- var gne = "⪈";
- var gnE = "≩";
- var gneq = "⪈";
- var gneqq = "≩";
- var gnsim = "⋧";
- var Gopf = "𝔾";
- var gopf = "𝕘";
- var grave = "`";
- var GreaterEqual = "≥";
- var GreaterEqualLess = "⋛";
- var GreaterFullEqual = "≧";
- var GreaterGreater = "⪢";
- var GreaterLess = "≷";
- var GreaterSlantEqual = "⩾";
- var GreaterTilde = "≳";
- var Gscr = "𝒢";
- var gscr = "ℊ";
- var gsim = "≳";
- var gsime = "⪎";
- var gsiml = "⪐";
- var gtcc = "⪧";
- var gtcir = "⩺";
- var gt = ">";
- var GT = ">";
- var Gt = "≫";
- var gtdot = "⋗";
- var gtlPar = "⦕";
- var gtquest = "⩼";
- var gtrapprox = "⪆";
- var gtrarr = "⥸";
- var gtrdot = "⋗";
- var gtreqless = "⋛";
- var gtreqqless = "⪌";
- var gtrless = "≷";
- var gtrsim = "≳";
- var gvertneqq = "≩︀";
- var gvnE = "≩︀";
- var Hacek = "ˇ";
- var hairsp = " ";
- var half = "½";
- var hamilt = "ℋ";
- var HARDcy = "Ъ";
- var hardcy = "ъ";
- var harrcir = "⥈";
- var harr = "↔";
- var hArr = "⇔";
- var harrw = "↭";
- var Hat = "^";
- var hbar = "ℏ";
- var Hcirc = "Ĥ";
- var hcirc = "ĥ";
- var hearts = "♥";
- var heartsuit = "♥";
- var hellip = "…";
- var hercon = "⊹";
- var hfr = "𝔥";
- var Hfr = "ℌ";
- var HilbertSpace = "ℋ";
- var hksearow = "⤥";
- var hkswarow = "⤦";
- var hoarr = "⇿";
- var homtht = "∻";
- var hookleftarrow = "↩";
- var hookrightarrow = "↪";
- var hopf = "𝕙";
- var Hopf = "ℍ";
- var horbar = "―";
- var HorizontalLine = "─";
- var hscr = "𝒽";
- var Hscr = "ℋ";
- var hslash = "ℏ";
- var Hstrok = "Ħ";
- var hstrok = "ħ";
- var HumpDownHump = "≎";
- var HumpEqual = "≏";
- var hybull = "⁃";
- var hyphen = "‐";
- var Iacute = "Í";
- var iacute = "í";
- var ic = "";
- var Icirc = "Î";
- var icirc = "î";
- var Icy = "И";
- var icy = "и";
- var Idot = "İ";
- var IEcy = "Е";
- var iecy = "е";
- var iexcl = "¡";
- var iff = "⇔";
- var ifr = "𝔦";
- var Ifr = "ℑ";
- var Igrave = "Ì";
- var igrave = "ì";
- var ii = "ⅈ";
- var iiiint = "⨌";
- var iiint = "∭";
- var iinfin = "⧜";
- var iiota = "℩";
- var IJlig = "IJ";
- var ijlig = "ij";
- var Imacr = "Ī";
- var imacr = "ī";
- var image = "ℑ";
- var ImaginaryI = "ⅈ";
- var imagline = "ℐ";
- var imagpart = "ℑ";
- var imath = "ı";
- var Im = "ℑ";
- var imof = "⊷";
- var imped = "Ƶ";
- var Implies = "⇒";
- var incare = "℅";
- var infin = "∞";
- var infintie = "⧝";
- var inodot = "ı";
- var intcal = "⊺";
- var int = "∫";
- var Int = "∬";
- var integers = "ℤ";
- var Integral = "∫";
- var intercal = "⊺";
- var Intersection = "⋂";
- var intlarhk = "⨗";
- var intprod = "⨼";
- var InvisibleComma = "";
- var InvisibleTimes = "";
- var IOcy = "Ё";
- var iocy = "ё";
- var Iogon = "Į";
- var iogon = "į";
- var Iopf = "𝕀";
- var iopf = "𝕚";
- var Iota = "Ι";
- var iota = "ι";
- var iprod = "⨼";
- var iquest = "¿";
- var iscr = "𝒾";
- var Iscr = "ℐ";
- var isin = "∈";
- var isindot = "⋵";
- var isinE = "⋹";
- var isins = "⋴";
- var isinsv = "⋳";
- var isinv = "∈";
- var it = "";
- var Itilde = "Ĩ";
- var itilde = "ĩ";
- var Iukcy = "І";
- var iukcy = "і";
- var Iuml = "Ï";
- var iuml = "ï";
- var Jcirc = "Ĵ";
- var jcirc = "ĵ";
- var Jcy = "Й";
- var jcy = "й";
- var Jfr = "𝔍";
- var jfr = "𝔧";
- var jmath = "ȷ";
- var Jopf = "𝕁";
- var jopf = "𝕛";
- var Jscr = "𝒥";
- var jscr = "𝒿";
- var Jsercy = "Ј";
- var jsercy = "ј";
- var Jukcy = "Є";
- var jukcy = "є";
- var Kappa = "Κ";
- var kappa = "κ";
- var kappav = "ϰ";
- var Kcedil = "Ķ";
- var kcedil = "ķ";
- var Kcy = "К";
- var kcy = "к";
- var Kfr = "𝔎";
- var kfr = "𝔨";
- var kgreen = "ĸ";
- var KHcy = "Х";
- var khcy = "х";
- var KJcy = "Ќ";
- var kjcy = "ќ";
- var Kopf = "𝕂";
- var kopf = "𝕜";
- var Kscr = "𝒦";
- var kscr = "𝓀";
- var lAarr = "⇚";
- var Lacute = "Ĺ";
- var lacute = "ĺ";
- var laemptyv = "⦴";
- var lagran = "ℒ";
- var Lambda = "Λ";
- var lambda = "λ";
- var lang = "⟨";
- var Lang = "⟪";
- var langd = "⦑";
- var langle = "⟨";
- var lap = "⪅";
- var Laplacetrf = "ℒ";
- var laquo = "«";
- var larrb = "⇤";
- var larrbfs = "⤟";
- var larr = "←";
- var Larr = "↞";
- var lArr = "⇐";
- var larrfs = "⤝";
- var larrhk = "↩";
- var larrlp = "↫";
- var larrpl = "⤹";
- var larrsim = "⥳";
- var larrtl = "↢";
- var latail = "⤙";
- var lAtail = "⤛";
- var lat = "⪫";
- var late = "⪭";
- var lates = "⪭︀";
- var lbarr = "⤌";
- var lBarr = "⤎";
- var lbbrk = "❲";
- var lbrace = "{";
- var lbrack = "[";
- var lbrke = "⦋";
- var lbrksld = "⦏";
- var lbrkslu = "⦍";
- var Lcaron = "Ľ";
- var lcaron = "ľ";
- var Lcedil = "Ļ";
- var lcedil = "ļ";
- var lceil = "⌈";
- var lcub = "{";
- var Lcy = "Л";
- var lcy = "л";
- var ldca = "⤶";
- var ldquo = "“";
- var ldquor = "„";
- var ldrdhar = "⥧";
- var ldrushar = "⥋";
- var ldsh = "↲";
- var le = "≤";
- var lE = "≦";
- var LeftAngleBracket = "⟨";
- var LeftArrowBar = "⇤";
- var leftarrow = "←";
- var LeftArrow = "←";
- var Leftarrow = "⇐";
- var LeftArrowRightArrow = "⇆";
- var leftarrowtail = "↢";
- var LeftCeiling = "⌈";
- var LeftDoubleBracket = "⟦";
- var LeftDownTeeVector = "⥡";
- var LeftDownVectorBar = "⥙";
- var LeftDownVector = "⇃";
- var LeftFloor = "⌊";
- var leftharpoondown = "↽";
- var leftharpoonup = "↼";
- var leftleftarrows = "⇇";
- var leftrightarrow = "↔";
- var LeftRightArrow = "↔";
- var Leftrightarrow = "⇔";
- var leftrightarrows = "⇆";
- var leftrightharpoons = "⇋";
- var leftrightsquigarrow = "↭";
- var LeftRightVector = "⥎";
- var LeftTeeArrow = "↤";
- var LeftTee = "⊣";
- var LeftTeeVector = "⥚";
- var leftthreetimes = "⋋";
- var LeftTriangleBar = "⧏";
- var LeftTriangle = "⊲";
- var LeftTriangleEqual = "⊴";
- var LeftUpDownVector = "⥑";
- var LeftUpTeeVector = "⥠";
- var LeftUpVectorBar = "⥘";
- var LeftUpVector = "↿";
- var LeftVectorBar = "⥒";
- var LeftVector = "↼";
- var lEg = "⪋";
- var leg = "⋚";
- var leq = "≤";
- var leqq = "≦";
- var leqslant = "⩽";
- var lescc = "⪨";
- var les = "⩽";
- var lesdot = "⩿";
- var lesdoto = "⪁";
- var lesdotor = "⪃";
- var lesg = "⋚︀";
- var lesges = "⪓";
- var lessapprox = "⪅";
- var lessdot = "⋖";
- var lesseqgtr = "⋚";
- var lesseqqgtr = "⪋";
- var LessEqualGreater = "⋚";
- var LessFullEqual = "≦";
- var LessGreater = "≶";
- var lessgtr = "≶";
- var LessLess = "⪡";
- var lesssim = "≲";
- var LessSlantEqual = "⩽";
- var LessTilde = "≲";
- var lfisht = "⥼";
- var lfloor = "⌊";
- var Lfr = "𝔏";
- var lfr = "𝔩";
- var lg = "≶";
- var lgE = "⪑";
- var lHar = "⥢";
- var lhard = "↽";
- var lharu = "↼";
- var lharul = "⥪";
- var lhblk = "▄";
- var LJcy = "Љ";
- var ljcy = "љ";
- var llarr = "⇇";
- var ll = "≪";
- var Ll = "⋘";
- var llcorner = "⌞";
- var Lleftarrow = "⇚";
- var llhard = "⥫";
- var lltri = "◺";
- var Lmidot = "Ŀ";
- var lmidot = "ŀ";
- var lmoustache = "⎰";
- var lmoust = "⎰";
- var lnap = "⪉";
- var lnapprox = "⪉";
- var lne = "⪇";
- var lnE = "≨";
- var lneq = "⪇";
- var lneqq = "≨";
- var lnsim = "⋦";
- var loang = "⟬";
- var loarr = "⇽";
- var lobrk = "⟦";
- var longleftarrow = "⟵";
- var LongLeftArrow = "⟵";
- var Longleftarrow = "⟸";
- var longleftrightarrow = "⟷";
- var LongLeftRightArrow = "⟷";
- var Longleftrightarrow = "⟺";
- var longmapsto = "⟼";
- var longrightarrow = "⟶";
- var LongRightArrow = "⟶";
- var Longrightarrow = "⟹";
- var looparrowleft = "↫";
- var looparrowright = "↬";
- var lopar = "⦅";
- var Lopf = "𝕃";
- var lopf = "𝕝";
- var loplus = "⨭";
- var lotimes = "⨴";
- var lowast = "∗";
- var lowbar = "_";
- var LowerLeftArrow = "↙";
- var LowerRightArrow = "↘";
- var loz = "◊";
- var lozenge = "◊";
- var lozf = "⧫";
- var lpar = "(";
- var lparlt = "⦓";
- var lrarr = "⇆";
- var lrcorner = "⌟";
- var lrhar = "⇋";
- var lrhard = "⥭";
- var lrm = "";
- var lrtri = "⊿";
- var lsaquo = "‹";
- var lscr = "𝓁";
- var Lscr = "ℒ";
- var lsh = "↰";
- var Lsh = "↰";
- var lsim = "≲";
- var lsime = "⪍";
- var lsimg = "⪏";
- var lsqb = "[";
- var lsquo = "‘";
- var lsquor = "‚";
- var Lstrok = "Ł";
- var lstrok = "ł";
- var ltcc = "⪦";
- var ltcir = "⩹";
- var lt = "<";
- var LT = "<";
- var Lt = "≪";
- var ltdot = "⋖";
- var lthree = "⋋";
- var ltimes = "⋉";
- var ltlarr = "⥶";
- var ltquest = "⩻";
- var ltri = "◃";
- var ltrie = "⊴";
- var ltrif = "◂";
- var ltrPar = "⦖";
- var lurdshar = "⥊";
- var luruhar = "⥦";
- var lvertneqq = "≨︀";
- var lvnE = "≨︀";
- var macr = "¯";
- var male = "♂";
- var malt = "✠";
- var maltese = "✠";
- var map = "↦";
- var mapsto = "↦";
- var mapstodown = "↧";
- var mapstoleft = "↤";
- var mapstoup = "↥";
- var marker = "▮";
- var mcomma = "⨩";
- var Mcy = "М";
- var mcy = "м";
- var mdash = "—";
- var mDDot = "∺";
- var measuredangle = "∡";
- var MediumSpace = " ";
- var Mellintrf = "ℳ";
- var Mfr = "𝔐";
- var mfr = "𝔪";
- var mho = "℧";
- var micro = "µ";
- var midast = "*";
- var midcir = "⫰";
- var mid = "∣";
- var middot = "·";
- var minusb = "⊟";
- var minus = "−";
- var minusd = "∸";
- var minusdu = "⨪";
- var MinusPlus = "∓";
- var mlcp = "⫛";
- var mldr = "…";
- var mnplus = "∓";
- var models = "⊧";
- var Mopf = "𝕄";
- var mopf = "𝕞";
- var mp = "∓";
- var mscr = "𝓂";
- var Mscr = "ℳ";
- var mstpos = "∾";
- var Mu = "Μ";
- var mu = "μ";
- var multimap = "⊸";
- var mumap = "⊸";
- var nabla = "∇";
- var Nacute = "Ń";
- var nacute = "ń";
- var nang = "∠⃒";
- var nap = "≉";
- var napE = "⩰̸";
- var napid = "≋̸";
- var napos = "ʼn";
- var napprox = "≉";
- var natural = "♮";
- var naturals = "ℕ";
- var natur = "♮";
- var nbsp = " ";
- var nbump = "≎̸";
- var nbumpe = "≏̸";
- var ncap = "⩃";
- var Ncaron = "Ň";
- var ncaron = "ň";
- var Ncedil = "Ņ";
- var ncedil = "ņ";
- var ncong = "≇";
- var ncongdot = "⩭̸";
- var ncup = "⩂";
- var Ncy = "Н";
- var ncy = "н";
- var ndash = "–";
- var nearhk = "⤤";
- var nearr = "↗";
- var neArr = "⇗";
- var nearrow = "↗";
- var ne = "≠";
- var nedot = "≐̸";
- var NegativeMediumSpace = "";
- var NegativeThickSpace = "";
- var NegativeThinSpace = "";
- var NegativeVeryThinSpace = "";
- var nequiv = "≢";
- var nesear = "⤨";
- var nesim = "≂̸";
- var NestedGreaterGreater = "≫";
- var NestedLessLess = "≪";
- var NewLine = "\n";
- var nexist = "∄";
- var nexists = "∄";
- var Nfr = "𝔑";
- var nfr = "𝔫";
- var ngE = "≧̸";
- var nge = "≱";
- var ngeq = "≱";
- var ngeqq = "≧̸";
- var ngeqslant = "⩾̸";
- var nges = "⩾̸";
- var nGg = "⋙̸";
- var ngsim = "≵";
- var nGt = "≫⃒";
- var ngt = "≯";
- var ngtr = "≯";
- var nGtv = "≫̸";
- var nharr = "↮";
- var nhArr = "⇎";
- var nhpar = "⫲";
- var ni = "∋";
- var nis = "⋼";
- var nisd = "⋺";
- var niv = "∋";
- var NJcy = "Њ";
- var njcy = "њ";
- var nlarr = "↚";
- var nlArr = "⇍";
- var nldr = "‥";
- var nlE = "≦̸";
- var nle = "≰";
- var nleftarrow = "↚";
- var nLeftarrow = "⇍";
- var nleftrightarrow = "↮";
- var nLeftrightarrow = "⇎";
- var nleq = "≰";
- var nleqq = "≦̸";
- var nleqslant = "⩽̸";
- var nles = "⩽̸";
- var nless = "≮";
- var nLl = "⋘̸";
- var nlsim = "≴";
- var nLt = "≪⃒";
- var nlt = "≮";
- var nltri = "⋪";
- var nltrie = "⋬";
- var nLtv = "≪̸";
- var nmid = "∤";
- var NoBreak = "";
- var NonBreakingSpace = " ";
- var nopf = "𝕟";
- var Nopf = "ℕ";
- var Not = "⫬";
- var not = "¬";
- var NotCongruent = "≢";
- var NotCupCap = "≭";
- var NotDoubleVerticalBar = "∦";
- var NotElement = "∉";
- var NotEqual = "≠";
- var NotEqualTilde = "≂̸";
- var NotExists = "∄";
- var NotGreater = "≯";
- var NotGreaterEqual = "≱";
- var NotGreaterFullEqual = "≧̸";
- var NotGreaterGreater = "≫̸";
- var NotGreaterLess = "≹";
- var NotGreaterSlantEqual = "⩾̸";
- var NotGreaterTilde = "≵";
- var NotHumpDownHump = "≎̸";
- var NotHumpEqual = "≏̸";
- var notin = "∉";
- var notindot = "⋵̸";
- var notinE = "⋹̸";
- var notinva = "∉";
- var notinvb = "⋷";
- var notinvc = "⋶";
- var NotLeftTriangleBar = "⧏̸";
- var NotLeftTriangle = "⋪";
- var NotLeftTriangleEqual = "⋬";
- var NotLess = "≮";
- var NotLessEqual = "≰";
- var NotLessGreater = "≸";
- var NotLessLess = "≪̸";
- var NotLessSlantEqual = "⩽̸";
- var NotLessTilde = "≴";
- var NotNestedGreaterGreater = "⪢̸";
- var NotNestedLessLess = "⪡̸";
- var notni = "∌";
- var notniva = "∌";
- var notnivb = "⋾";
- var notnivc = "⋽";
- var NotPrecedes = "⊀";
- var NotPrecedesEqual = "⪯̸";
- var NotPrecedesSlantEqual = "⋠";
- var NotReverseElement = "∌";
- var NotRightTriangleBar = "⧐̸";
- var NotRightTriangle = "⋫";
- var NotRightTriangleEqual = "⋭";
- var NotSquareSubset = "⊏̸";
- var NotSquareSubsetEqual = "⋢";
- var NotSquareSuperset = "⊐̸";
- var NotSquareSupersetEqual = "⋣";
- var NotSubset = "⊂⃒";
- var NotSubsetEqual = "⊈";
- var NotSucceeds = "⊁";
- var NotSucceedsEqual = "⪰̸";
- var NotSucceedsSlantEqual = "⋡";
- var NotSucceedsTilde = "≿̸";
- var NotSuperset = "⊃⃒";
- var NotSupersetEqual = "⊉";
- var NotTilde = "≁";
- var NotTildeEqual = "≄";
- var NotTildeFullEqual = "≇";
- var NotTildeTilde = "≉";
- var NotVerticalBar = "∤";
- var nparallel = "∦";
- var npar = "∦";
- var nparsl = "⫽⃥";
- var npart = "∂̸";
- var npolint = "⨔";
- var npr = "⊀";
- var nprcue = "⋠";
- var nprec = "⊀";
- var npreceq = "⪯̸";
- var npre = "⪯̸";
- var nrarrc = "⤳̸";
- var nrarr = "↛";
- var nrArr = "⇏";
- var nrarrw = "↝̸";
- var nrightarrow = "↛";
- var nRightarrow = "⇏";
- var nrtri = "⋫";
- var nrtrie = "⋭";
- var nsc = "⊁";
- var nsccue = "⋡";
- var nsce = "⪰̸";
- var Nscr = "𝒩";
- var nscr = "𝓃";
- var nshortmid = "∤";
- var nshortparallel = "∦";
- var nsim = "≁";
- var nsime = "≄";
- var nsimeq = "≄";
- var nsmid = "∤";
- var nspar = "∦";
- var nsqsube = "⋢";
- var nsqsupe = "⋣";
- var nsub = "⊄";
- var nsubE = "⫅̸";
- var nsube = "⊈";
- var nsubset = "⊂⃒";
- var nsubseteq = "⊈";
- var nsubseteqq = "⫅̸";
- var nsucc = "⊁";
- var nsucceq = "⪰̸";
- var nsup = "⊅";
- var nsupE = "⫆̸";
- var nsupe = "⊉";
- var nsupset = "⊃⃒";
- var nsupseteq = "⊉";
- var nsupseteqq = "⫆̸";
- var ntgl = "≹";
- var Ntilde = "Ñ";
- var ntilde = "ñ";
- var ntlg = "≸";
- var ntriangleleft = "⋪";
- var ntrianglelefteq = "⋬";
- var ntriangleright = "⋫";
- var ntrianglerighteq = "⋭";
- var Nu = "Ν";
- var nu = "ν";
- var num = "#";
- var numero = "№";
- var numsp = " ";
- var nvap = "≍⃒";
- var nvdash = "⊬";
- var nvDash = "⊭";
- var nVdash = "⊮";
- var nVDash = "⊯";
- var nvge = "≥⃒";
- var nvgt = ">⃒";
- var nvHarr = "⤄";
- var nvinfin = "⧞";
- var nvlArr = "⤂";
- var nvle = "≤⃒";
- var nvlt = "<⃒";
- var nvltrie = "⊴⃒";
- var nvrArr = "⤃";
- var nvrtrie = "⊵⃒";
- var nvsim = "∼⃒";
- var nwarhk = "⤣";
- var nwarr = "↖";
- var nwArr = "⇖";
- var nwarrow = "↖";
- var nwnear = "⤧";
- var Oacute = "Ó";
- var oacute = "ó";
- var oast = "⊛";
- var Ocirc = "Ô";
- var ocirc = "ô";
- var ocir = "⊚";
- var Ocy = "О";
- var ocy = "о";
- var odash = "⊝";
- var Odblac = "Ő";
- var odblac = "ő";
- var odiv = "⨸";
- var odot = "⊙";
- var odsold = "⦼";
- var OElig = "Œ";
- var oelig = "œ";
- var ofcir = "⦿";
- var Ofr = "𝔒";
- var ofr = "𝔬";
- var ogon = "˛";
- var Ograve = "Ò";
- var ograve = "ò";
- var ogt = "⧁";
- var ohbar = "⦵";
- var ohm = "Ω";
- var oint = "∮";
- var olarr = "↺";
- var olcir = "⦾";
- var olcross = "⦻";
- var oline = "‾";
- var olt = "⧀";
- var Omacr = "Ō";
- var omacr = "ō";
- var Omega = "Ω";
- var omega = "ω";
- var Omicron = "Ο";
- var omicron = "ο";
- var omid = "⦶";
- var ominus = "⊖";
- var Oopf = "𝕆";
- var oopf = "𝕠";
- var opar = "⦷";
- var OpenCurlyDoubleQuote = "“";
- var OpenCurlyQuote = "‘";
- var operp = "⦹";
- var oplus = "⊕";
- var orarr = "↻";
- var Or = "⩔";
- var or = "∨";
- var ord = "⩝";
- var order = "ℴ";
- var orderof = "ℴ";
- var ordf = "ª";
- var ordm = "º";
- var origof = "⊶";
- var oror = "⩖";
- var orslope = "⩗";
- var orv = "⩛";
- var oS = "Ⓢ";
- var Oscr = "𝒪";
- var oscr = "ℴ";
- var Oslash = "Ø";
- var oslash = "ø";
- var osol = "⊘";
- var Otilde = "Õ";
- var otilde = "õ";
- var otimesas = "⨶";
- var Otimes = "⨷";
- var otimes = "⊗";
- var Ouml = "Ö";
- var ouml = "ö";
- var ovbar = "⌽";
- var OverBar = "‾";
- var OverBrace = "⏞";
- var OverBracket = "⎴";
- var OverParenthesis = "⏜";
- var para = "¶";
- var parallel = "∥";
- var par = "∥";
- var parsim = "⫳";
- var parsl = "⫽";
- var part = "∂";
- var PartialD = "∂";
- var Pcy = "П";
- var pcy = "п";
- var percnt = "%";
- var period = ".";
- var permil = "‰";
- var perp = "⊥";
- var pertenk = "‱";
- var Pfr = "𝔓";
- var pfr = "𝔭";
- var Phi = "Φ";
- var phi = "φ";
- var phiv = "ϕ";
- var phmmat = "ℳ";
- var phone = "☎";
- var Pi = "Π";
- var pi = "π";
- var pitchfork = "⋔";
- var piv = "ϖ";
- var planck = "ℏ";
- var planckh = "ℎ";
- var plankv = "ℏ";
- var plusacir = "⨣";
- var plusb = "⊞";
- var pluscir = "⨢";
- var plus = "+";
- var plusdo = "∔";
- var plusdu = "⨥";
- var pluse = "⩲";
- var PlusMinus = "±";
- var plusmn = "±";
- var plussim = "⨦";
- var plustwo = "⨧";
- var pm = "±";
- var Poincareplane = "ℌ";
- var pointint = "⨕";
- var popf = "𝕡";
- var Popf = "ℙ";
- var pound = "£";
- var prap = "⪷";
- var Pr = "⪻";
- var pr = "≺";
- var prcue = "≼";
- var precapprox = "⪷";
- var prec = "≺";
- var preccurlyeq = "≼";
- var Precedes = "≺";
- var PrecedesEqual = "⪯";
- var PrecedesSlantEqual = "≼";
- var PrecedesTilde = "≾";
- var preceq = "⪯";
- var precnapprox = "⪹";
- var precneqq = "⪵";
- var precnsim = "⋨";
- var pre = "⪯";
- var prE = "⪳";
- var precsim = "≾";
- var prime = "′";
- var Prime = "″";
- var primes = "ℙ";
- var prnap = "⪹";
- var prnE = "⪵";
- var prnsim = "⋨";
- var prod = "∏";
- var Product = "∏";
- var profalar = "⌮";
- var profline = "⌒";
- var profsurf = "⌓";
- var prop = "∝";
- var Proportional = "∝";
- var Proportion = "∷";
- var propto = "∝";
- var prsim = "≾";
- var prurel = "⊰";
- var Pscr = "𝒫";
- var pscr = "𝓅";
- var Psi = "Ψ";
- var psi = "ψ";
- var puncsp = " ";
- var Qfr = "𝔔";
- var qfr = "𝔮";
- var qint = "⨌";
- var qopf = "𝕢";
- var Qopf = "ℚ";
- var qprime = "⁗";
- var Qscr = "𝒬";
- var qscr = "𝓆";
- var quaternions = "ℍ";
- var quatint = "⨖";
- var quest = "?";
- var questeq = "≟";
- var quot = "\"";
- var QUOT = "\"";
- var rAarr = "⇛";
- var race = "∽̱";
- var Racute = "Ŕ";
- var racute = "ŕ";
- var radic = "√";
- var raemptyv = "⦳";
- var rang = "⟩";
- var Rang = "⟫";
- var rangd = "⦒";
- var range = "⦥";
- var rangle = "⟩";
- var raquo = "»";
- var rarrap = "⥵";
- var rarrb = "⇥";
- var rarrbfs = "⤠";
- var rarrc = "⤳";
- var rarr = "→";
- var Rarr = "↠";
- var rArr = "⇒";
- var rarrfs = "⤞";
- var rarrhk = "↪";
- var rarrlp = "↬";
- var rarrpl = "⥅";
- var rarrsim = "⥴";
- var Rarrtl = "⤖";
- var rarrtl = "↣";
- var rarrw = "↝";
- var ratail = "⤚";
- var rAtail = "⤜";
- var ratio = "∶";
- var rationals = "ℚ";
- var rbarr = "⤍";
- var rBarr = "⤏";
- var RBarr = "⤐";
- var rbbrk = "❳";
- var rbrace = "}";
- var rbrack = "]";
- var rbrke = "⦌";
- var rbrksld = "⦎";
- var rbrkslu = "⦐";
- var Rcaron = "Ř";
- var rcaron = "ř";
- var Rcedil = "Ŗ";
- var rcedil = "ŗ";
- var rceil = "⌉";
- var rcub = "}";
- var Rcy = "Р";
- var rcy = "р";
- var rdca = "⤷";
- var rdldhar = "⥩";
- var rdquo = "”";
- var rdquor = "”";
- var rdsh = "↳";
- var real = "ℜ";
- var realine = "ℛ";
- var realpart = "ℜ";
- var reals = "ℝ";
- var Re = "ℜ";
- var rect = "▭";
- var reg = "®";
- var REG = "®";
- var ReverseElement = "∋";
- var ReverseEquilibrium = "⇋";
- var ReverseUpEquilibrium = "⥯";
- var rfisht = "⥽";
- var rfloor = "⌋";
- var rfr = "𝔯";
- var Rfr = "ℜ";
- var rHar = "⥤";
- var rhard = "⇁";
- var rharu = "⇀";
- var rharul = "⥬";
- var Rho = "Ρ";
- var rho = "ρ";
- var rhov = "ϱ";
- var RightAngleBracket = "⟩";
- var RightArrowBar = "⇥";
- var rightarrow = "→";
- var RightArrow = "→";
- var Rightarrow = "⇒";
- var RightArrowLeftArrow = "⇄";
- var rightarrowtail = "↣";
- var RightCeiling = "⌉";
- var RightDoubleBracket = "⟧";
- var RightDownTeeVector = "⥝";
- var RightDownVectorBar = "⥕";
- var RightDownVector = "⇂";
- var RightFloor = "⌋";
- var rightharpoondown = "⇁";
- var rightharpoonup = "⇀";
- var rightleftarrows = "⇄";
- var rightleftharpoons = "⇌";
- var rightrightarrows = "⇉";
- var rightsquigarrow = "↝";
- var RightTeeArrow = "↦";
- var RightTee = "⊢";
- var RightTeeVector = "⥛";
- var rightthreetimes = "⋌";
- var RightTriangleBar = "⧐";
- var RightTriangle = "⊳";
- var RightTriangleEqual = "⊵";
- var RightUpDownVector = "⥏";
- var RightUpTeeVector = "⥜";
- var RightUpVectorBar = "⥔";
- var RightUpVector = "↾";
- var RightVectorBar = "⥓";
- var RightVector = "⇀";
- var ring = "˚";
- var risingdotseq = "≓";
- var rlarr = "⇄";
- var rlhar = "⇌";
- var rlm = "";
- var rmoustache = "⎱";
- var rmoust = "⎱";
- var rnmid = "⫮";
- var roang = "⟭";
- var roarr = "⇾";
- var robrk = "⟧";
- var ropar = "⦆";
- var ropf = "𝕣";
- var Ropf = "ℝ";
- var roplus = "⨮";
- var rotimes = "⨵";
- var RoundImplies = "⥰";
- var rpar = ")";
- var rpargt = "⦔";
- var rppolint = "⨒";
- var rrarr = "⇉";
- var Rrightarrow = "⇛";
- var rsaquo = "›";
- var rscr = "𝓇";
- var Rscr = "ℛ";
- var rsh = "↱";
- var Rsh = "↱";
- var rsqb = "]";
- var rsquo = "’";
- var rsquor = "’";
- var rthree = "⋌";
- var rtimes = "⋊";
- var rtri = "▹";
- var rtrie = "⊵";
- var rtrif = "▸";
- var rtriltri = "⧎";
- var RuleDelayed = "⧴";
- var ruluhar = "⥨";
- var rx = "℞";
- var Sacute = "Ś";
- var sacute = "ś";
- var sbquo = "‚";
- var scap = "⪸";
- var Scaron = "Š";
- var scaron = "š";
- var Sc = "⪼";
- var sc = "≻";
- var sccue = "≽";
- var sce = "⪰";
- var scE = "⪴";
- var Scedil = "Ş";
- var scedil = "ş";
- var Scirc = "Ŝ";
- var scirc = "ŝ";
- var scnap = "⪺";
- var scnE = "⪶";
- var scnsim = "⋩";
- var scpolint = "⨓";
- var scsim = "≿";
- var Scy = "С";
- var scy = "с";
- var sdotb = "⊡";
- var sdot = "⋅";
- var sdote = "⩦";
- var searhk = "⤥";
- var searr = "↘";
- var seArr = "⇘";
- var searrow = "↘";
- var sect = "§";
- var semi = ";";
- var seswar = "⤩";
- var setminus = "∖";
- var setmn = "∖";
- var sext = "✶";
- var Sfr = "𝔖";
- var sfr = "𝔰";
- var sfrown = "⌢";
- var sharp = "♯";
- var SHCHcy = "Щ";
- var shchcy = "щ";
- var SHcy = "Ш";
- var shcy = "ш";
- var ShortDownArrow = "↓";
- var ShortLeftArrow = "←";
- var shortmid = "∣";
- var shortparallel = "∥";
- var ShortRightArrow = "→";
- var ShortUpArrow = "↑";
- var shy = "";
- var Sigma = "Σ";
- var sigma = "σ";
- var sigmaf = "ς";
- var sigmav = "ς";
- var sim = "∼";
- var simdot = "⩪";
- var sime = "≃";
- var simeq = "≃";
- var simg = "⪞";
- var simgE = "⪠";
- var siml = "⪝";
- var simlE = "⪟";
- var simne = "≆";
- var simplus = "⨤";
- var simrarr = "⥲";
- var slarr = "←";
- var SmallCircle = "∘";
- var smallsetminus = "∖";
- var smashp = "⨳";
- var smeparsl = "⧤";
- var smid = "∣";
- var smile = "⌣";
- var smt = "⪪";
- var smte = "⪬";
- var smtes = "⪬︀";
- var SOFTcy = "Ь";
- var softcy = "ь";
- var solbar = "⌿";
- var solb = "⧄";
- var sol = "/";
- var Sopf = "𝕊";
- var sopf = "𝕤";
- var spades = "♠";
- var spadesuit = "♠";
- var spar = "∥";
- var sqcap = "⊓";
- var sqcaps = "⊓︀";
- var sqcup = "⊔";
- var sqcups = "⊔︀";
- var Sqrt = "√";
- var sqsub = "⊏";
- var sqsube = "⊑";
- var sqsubset = "⊏";
- var sqsubseteq = "⊑";
- var sqsup = "⊐";
- var sqsupe = "⊒";
- var sqsupset = "⊐";
- var sqsupseteq = "⊒";
- var square = "□";
- var Square = "□";
- var SquareIntersection = "⊓";
- var SquareSubset = "⊏";
- var SquareSubsetEqual = "⊑";
- var SquareSuperset = "⊐";
- var SquareSupersetEqual = "⊒";
- var SquareUnion = "⊔";
- var squarf = "▪";
- var squ = "□";
- var squf = "▪";
- var srarr = "→";
- var Sscr = "𝒮";
- var sscr = "𝓈";
- var ssetmn = "∖";
- var ssmile = "⌣";
- var sstarf = "⋆";
- var Star = "⋆";
- var star = "☆";
- var starf = "★";
- var straightepsilon = "ϵ";
- var straightphi = "ϕ";
- var strns = "¯";
- var sub = "⊂";
- var Sub = "⋐";
- var subdot = "⪽";
- var subE = "⫅";
- var sube = "⊆";
- var subedot = "⫃";
- var submult = "⫁";
- var subnE = "⫋";
- var subne = "⊊";
- var subplus = "⪿";
- var subrarr = "⥹";
- var subset = "⊂";
- var Subset = "⋐";
- var subseteq = "⊆";
- var subseteqq = "⫅";
- var SubsetEqual = "⊆";
- var subsetneq = "⊊";
- var subsetneqq = "⫋";
- var subsim = "⫇";
- var subsub = "⫕";
- var subsup = "⫓";
- var succapprox = "⪸";
- var succ = "≻";
- var succcurlyeq = "≽";
- var Succeeds = "≻";
- var SucceedsEqual = "⪰";
- var SucceedsSlantEqual = "≽";
- var SucceedsTilde = "≿";
- var succeq = "⪰";
- var succnapprox = "⪺";
- var succneqq = "⪶";
- var succnsim = "⋩";
- var succsim = "≿";
- var SuchThat = "∋";
- var sum = "∑";
- var Sum = "∑";
- var sung = "♪";
- var sup1 = "¹";
- var sup2 = "²";
- var sup3 = "³";
- var sup = "⊃";
- var Sup = "⋑";
- var supdot = "⪾";
- var supdsub = "⫘";
- var supE = "⫆";
- var supe = "⊇";
- var supedot = "⫄";
- var Superset = "⊃";
- var SupersetEqual = "⊇";
- var suphsol = "⟉";
- var suphsub = "⫗";
- var suplarr = "⥻";
- var supmult = "⫂";
- var supnE = "⫌";
- var supne = "⊋";
- var supplus = "⫀";
- var supset = "⊃";
- var Supset = "⋑";
- var supseteq = "⊇";
- var supseteqq = "⫆";
- var supsetneq = "⊋";
- var supsetneqq = "⫌";
- var supsim = "⫈";
- var supsub = "⫔";
- var supsup = "⫖";
- var swarhk = "⤦";
- var swarr = "↙";
- var swArr = "⇙";
- var swarrow = "↙";
- var swnwar = "⤪";
- var szlig = "ß";
- var Tab = "\t";
- var target = "⌖";
- var Tau = "Τ";
- var tau = "τ";
- var tbrk = "⎴";
- var Tcaron = "Ť";
- var tcaron = "ť";
- var Tcedil = "Ţ";
- var tcedil = "ţ";
- var Tcy = "Т";
- var tcy = "т";
- var tdot = "⃛";
- var telrec = "⌕";
- var Tfr = "𝔗";
- var tfr = "𝔱";
- var there4 = "∴";
- var therefore = "∴";
- var Therefore = "∴";
- var Theta = "Θ";
- var theta = "θ";
- var thetasym = "ϑ";
- var thetav = "ϑ";
- var thickapprox = "≈";
- var thicksim = "∼";
- var ThickSpace = " ";
- var ThinSpace = " ";
- var thinsp = " ";
- var thkap = "≈";
- var thksim = "∼";
- var THORN = "Þ";
- var thorn = "þ";
- var tilde = "˜";
- var Tilde = "∼";
- var TildeEqual = "≃";
- var TildeFullEqual = "≅";
- var TildeTilde = "≈";
- var timesbar = "⨱";
- var timesb = "⊠";
- var times = "×";
- var timesd = "⨰";
- var tint = "∭";
- var toea = "⤨";
- var topbot = "⌶";
- var topcir = "⫱";
- var top = "⊤";
- var Topf = "𝕋";
- var topf = "𝕥";
- var topfork = "⫚";
- var tosa = "⤩";
- var tprime = "‴";
- var trade = "™";
- var TRADE = "™";
- var triangle = "▵";
- var triangledown = "▿";
- var triangleleft = "◃";
- var trianglelefteq = "⊴";
- var triangleq = "≜";
- var triangleright = "▹";
- var trianglerighteq = "⊵";
- var tridot = "◬";
- var trie = "≜";
- var triminus = "⨺";
- var TripleDot = "⃛";
- var triplus = "⨹";
- var trisb = "⧍";
- var tritime = "⨻";
- var trpezium = "⏢";
- var Tscr = "𝒯";
- var tscr = "𝓉";
- var TScy = "Ц";
- var tscy = "ц";
- var TSHcy = "Ћ";
- var tshcy = "ћ";
- var Tstrok = "Ŧ";
- var tstrok = "ŧ";
- var twixt = "≬";
- var twoheadleftarrow = "↞";
- var twoheadrightarrow = "↠";
- var Uacute = "Ú";
- var uacute = "ú";
- var uarr = "↑";
- var Uarr = "↟";
- var uArr = "⇑";
- var Uarrocir = "⥉";
- var Ubrcy = "Ў";
- var ubrcy = "ў";
- var Ubreve = "Ŭ";
- var ubreve = "ŭ";
- var Ucirc = "Û";
- var ucirc = "û";
- var Ucy = "У";
- var ucy = "у";
- var udarr = "⇅";
- var Udblac = "Ű";
- var udblac = "ű";
- var udhar = "⥮";
- var ufisht = "⥾";
- var Ufr = "𝔘";
- var ufr = "𝔲";
- var Ugrave = "Ù";
- var ugrave = "ù";
- var uHar = "⥣";
- var uharl = "↿";
- var uharr = "↾";
- var uhblk = "▀";
- var ulcorn = "⌜";
- var ulcorner = "⌜";
- var ulcrop = "⌏";
- var ultri = "◸";
- var Umacr = "Ū";
- var umacr = "ū";
- var uml = "¨";
- var UnderBar = "_";
- var UnderBrace = "⏟";
- var UnderBracket = "⎵";
- var UnderParenthesis = "⏝";
- var Union = "⋃";
- var UnionPlus = "⊎";
- var Uogon = "Ų";
- var uogon = "ų";
- var Uopf = "𝕌";
- var uopf = "𝕦";
- var UpArrowBar = "⤒";
- var uparrow = "↑";
- var UpArrow = "↑";
- var Uparrow = "⇑";
- var UpArrowDownArrow = "⇅";
- var updownarrow = "↕";
- var UpDownArrow = "↕";
- var Updownarrow = "⇕";
- var UpEquilibrium = "⥮";
- var upharpoonleft = "↿";
- var upharpoonright = "↾";
- var uplus = "⊎";
- var UpperLeftArrow = "↖";
- var UpperRightArrow = "↗";
- var upsi = "υ";
- var Upsi = "ϒ";
- var upsih = "ϒ";
- var Upsilon = "Υ";
- var upsilon = "υ";
- var UpTeeArrow = "↥";
- var UpTee = "⊥";
- var upuparrows = "⇈";
- var urcorn = "⌝";
- var urcorner = "⌝";
- var urcrop = "⌎";
- var Uring = "Ů";
- var uring = "ů";
- var urtri = "◹";
- var Uscr = "𝒰";
- var uscr = "𝓊";
- var utdot = "⋰";
- var Utilde = "Ũ";
- var utilde = "ũ";
- var utri = "▵";
- var utrif = "▴";
- var uuarr = "⇈";
- var Uuml = "Ü";
- var uuml = "ü";
- var uwangle = "⦧";
- var vangrt = "⦜";
- var varepsilon = "ϵ";
- var varkappa = "ϰ";
- var varnothing = "∅";
- var varphi = "ϕ";
- var varpi = "ϖ";
- var varpropto = "∝";
- var varr = "↕";
- var vArr = "⇕";
- var varrho = "ϱ";
- var varsigma = "ς";
- var varsubsetneq = "⊊︀";
- var varsubsetneqq = "⫋︀";
- var varsupsetneq = "⊋︀";
- var varsupsetneqq = "⫌︀";
- var vartheta = "ϑ";
- var vartriangleleft = "⊲";
- var vartriangleright = "⊳";
- var vBar = "⫨";
- var Vbar = "⫫";
- var vBarv = "⫩";
- var Vcy = "В";
- var vcy = "в";
- var vdash = "⊢";
- var vDash = "⊨";
- var Vdash = "⊩";
- var VDash = "⊫";
- var Vdashl = "⫦";
- var veebar = "⊻";
- var vee = "∨";
- var Vee = "⋁";
- var veeeq = "≚";
- var vellip = "⋮";
- var verbar = "|";
- var Verbar = "‖";
- var vert = "|";
- var Vert = "‖";
- var VerticalBar = "∣";
- var VerticalLine = "|";
- var VerticalSeparator = "❘";
- var VerticalTilde = "≀";
- var VeryThinSpace = " ";
- var Vfr = "𝔙";
- var vfr = "𝔳";
- var vltri = "⊲";
- var vnsub = "⊂⃒";
- var vnsup = "⊃⃒";
- var Vopf = "𝕍";
- var vopf = "𝕧";
- var vprop = "∝";
- var vrtri = "⊳";
- var Vscr = "𝒱";
- var vscr = "𝓋";
- var vsubnE = "⫋︀";
- var vsubne = "⊊︀";
- var vsupnE = "⫌︀";
- var vsupne = "⊋︀";
- var Vvdash = "⊪";
- var vzigzag = "⦚";
- var Wcirc = "Ŵ";
- var wcirc = "ŵ";
- var wedbar = "⩟";
- var wedge = "∧";
- var Wedge = "⋀";
- var wedgeq = "≙";
- var weierp = "℘";
- var Wfr = "𝔚";
- var wfr = "𝔴";
- var Wopf = "𝕎";
- var wopf = "𝕨";
- var wp = "℘";
- var wr = "≀";
- var wreath = "≀";
- var Wscr = "𝒲";
- var wscr = "𝓌";
- var xcap = "⋂";
- var xcirc = "◯";
- var xcup = "⋃";
- var xdtri = "▽";
- var Xfr = "𝔛";
- var xfr = "𝔵";
- var xharr = "⟷";
- var xhArr = "⟺";
- var Xi = "Ξ";
- var xi = "ξ";
- var xlarr = "⟵";
- var xlArr = "⟸";
- var xmap = "⟼";
- var xnis = "⋻";
- var xodot = "⨀";
- var Xopf = "𝕏";
- var xopf = "𝕩";
- var xoplus = "⨁";
- var xotime = "⨂";
- var xrarr = "⟶";
- var xrArr = "⟹";
- var Xscr = "𝒳";
- var xscr = "𝓍";
- var xsqcup = "⨆";
- var xuplus = "⨄";
- var xutri = "△";
- var xvee = "⋁";
- var xwedge = "⋀";
- var Yacute = "Ý";
- var yacute = "ý";
- var YAcy = "Я";
- var yacy = "я";
- var Ycirc = "Ŷ";
- var ycirc = "ŷ";
- var Ycy = "Ы";
- var ycy = "ы";
- var yen = "¥";
- var Yfr = "𝔜";
- var yfr = "𝔶";
- var YIcy = "Ї";
- var yicy = "ї";
- var Yopf = "𝕐";
- var yopf = "𝕪";
- var Yscr = "𝒴";
- var yscr = "𝓎";
- var YUcy = "Ю";
- var yucy = "ю";
- var yuml = "ÿ";
- var Yuml = "Ÿ";
- var Zacute = "Ź";
- var zacute = "ź";
- var Zcaron = "Ž";
- var zcaron = "ž";
- var Zcy = "З";
- var zcy = "з";
- var Zdot = "Ż";
- var zdot = "ż";
- var zeetrf = "ℨ";
- var ZeroWidthSpace = "";
- var Zeta = "Ζ";
- var zeta = "ζ";
- var zfr = "𝔷";
- var Zfr = "ℨ";
- var ZHcy = "Ж";
- var zhcy = "ж";
- var zigrarr = "⇝";
- var zopf = "𝕫";
- var Zopf = "ℤ";
- var Zscr = "𝒵";
- var zscr = "𝓏";
- var zwj = "";
- var zwnj = "";
- var entities = {
- Aacute: Aacute,
- aacute: aacute,
- Abreve: Abreve,
- abreve: abreve,
- ac: ac,
- acd: acd,
- acE: acE,
- Acirc: Acirc,
- acirc: acirc,
- acute: acute,
- Acy: Acy,
- acy: acy,
- AElig: AElig,
- aelig: aelig,
- af: af,
- Afr: Afr,
- afr: afr,
- Agrave: Agrave,
- agrave: agrave,
- alefsym: alefsym,
- aleph: aleph,
- Alpha: Alpha,
- alpha: alpha,
- Amacr: Amacr,
- amacr: amacr,
- amalg: amalg,
- amp: amp,
- AMP: AMP,
- andand: andand,
- And: And,
- and: and,
- andd: andd,
- andslope: andslope,
- andv: andv,
- ang: ang,
- ange: ange,
- angle: angle,
- angmsdaa: angmsdaa,
- angmsdab: angmsdab,
- angmsdac: angmsdac,
- angmsdad: angmsdad,
- angmsdae: angmsdae,
- angmsdaf: angmsdaf,
- angmsdag: angmsdag,
- angmsdah: angmsdah,
- angmsd: angmsd,
- angrt: angrt,
- angrtvb: angrtvb,
- angrtvbd: angrtvbd,
- angsph: angsph,
- angst: angst,
- angzarr: angzarr,
- Aogon: Aogon,
- aogon: aogon,
- Aopf: Aopf,
- aopf: aopf,
- apacir: apacir,
- ap: ap,
- apE: apE,
- ape: ape,
- apid: apid,
- apos: apos,
- ApplyFunction: ApplyFunction,
- approx: approx,
- approxeq: approxeq,
- Aring: Aring,
- aring: aring,
- Ascr: Ascr,
- ascr: ascr,
- Assign: Assign,
- ast: ast,
- asymp: asymp,
- asympeq: asympeq,
- Atilde: Atilde,
- atilde: atilde,
- Auml: Auml,
- auml: auml,
- awconint: awconint,
- awint: awint,
- backcong: backcong,
- backepsilon: backepsilon,
- backprime: backprime,
- backsim: backsim,
- backsimeq: backsimeq,
- Backslash: Backslash,
- Barv: Barv,
- barvee: barvee,
- barwed: barwed,
- Barwed: Barwed,
- barwedge: barwedge,
- bbrk: bbrk,
- bbrktbrk: bbrktbrk,
- bcong: bcong,
- Bcy: Bcy,
- bcy: bcy,
- bdquo: bdquo,
- becaus: becaus,
- because: because,
- Because: Because,
- bemptyv: bemptyv,
- bepsi: bepsi,
- bernou: bernou,
- Bernoullis: Bernoullis,
- Beta: Beta,
- beta: beta,
- beth: beth,
- between: between,
- Bfr: Bfr,
- bfr: bfr,
- bigcap: bigcap,
- bigcirc: bigcirc,
- bigcup: bigcup,
- bigodot: bigodot,
- bigoplus: bigoplus,
- bigotimes: bigotimes,
- bigsqcup: bigsqcup,
- bigstar: bigstar,
- bigtriangledown: bigtriangledown,
- bigtriangleup: bigtriangleup,
- biguplus: biguplus,
- bigvee: bigvee,
- bigwedge: bigwedge,
- bkarow: bkarow,
- blacklozenge: blacklozenge,
- blacksquare: blacksquare,
- blacktriangle: blacktriangle,
- blacktriangledown: blacktriangledown,
- blacktriangleleft: blacktriangleleft,
- blacktriangleright: blacktriangleright,
- blank: blank,
- blk12: blk12,
- blk14: blk14,
- blk34: blk34,
- block: block,
- bne: bne,
- bnequiv: bnequiv,
- bNot: bNot,
- bnot: bnot,
- Bopf: Bopf,
- bopf: bopf,
- bot: bot,
- bottom: bottom,
- bowtie: bowtie,
- boxbox: boxbox,
- boxdl: boxdl,
- boxdL: boxdL,
- boxDl: boxDl,
- boxDL: boxDL,
- boxdr: boxdr,
- boxdR: boxdR,
- boxDr: boxDr,
- boxDR: boxDR,
- boxh: boxh,
- boxH: boxH,
- boxhd: boxhd,
- boxHd: boxHd,
- boxhD: boxhD,
- boxHD: boxHD,
- boxhu: boxhu,
- boxHu: boxHu,
- boxhU: boxhU,
- boxHU: boxHU,
- boxminus: boxminus,
- boxplus: boxplus,
- boxtimes: boxtimes,
- boxul: boxul,
- boxuL: boxuL,
- boxUl: boxUl,
- boxUL: boxUL,
- boxur: boxur,
- boxuR: boxuR,
- boxUr: boxUr,
- boxUR: boxUR,
- boxv: boxv,
- boxV: boxV,
- boxvh: boxvh,
- boxvH: boxvH,
- boxVh: boxVh,
- boxVH: boxVH,
- boxvl: boxvl,
- boxvL: boxvL,
- boxVl: boxVl,
- boxVL: boxVL,
- boxvr: boxvr,
- boxvR: boxvR,
- boxVr: boxVr,
- boxVR: boxVR,
- bprime: bprime,
- breve: breve,
- Breve: Breve,
- brvbar: brvbar,
- bscr: bscr,
- Bscr: Bscr,
- bsemi: bsemi,
- bsim: bsim,
- bsime: bsime,
- bsolb: bsolb,
- bsol: bsol,
- bsolhsub: bsolhsub,
- bull: bull,
- bullet: bullet,
- bump: bump,
- bumpE: bumpE,
- bumpe: bumpe,
- Bumpeq: Bumpeq,
- bumpeq: bumpeq,
- Cacute: Cacute,
- cacute: cacute,
- capand: capand,
- capbrcup: capbrcup,
- capcap: capcap,
- cap: cap,
- Cap: Cap,
- capcup: capcup,
- capdot: capdot,
- CapitalDifferentialD: CapitalDifferentialD,
- caps: caps,
- caret: caret,
- caron: caron,
- Cayleys: Cayleys,
- ccaps: ccaps,
- Ccaron: Ccaron,
- ccaron: ccaron,
- Ccedil: Ccedil,
- ccedil: ccedil,
- Ccirc: Ccirc,
- ccirc: ccirc,
- Cconint: Cconint,
- ccups: ccups,
- ccupssm: ccupssm,
- Cdot: Cdot,
- cdot: cdot,
- cedil: cedil,
- Cedilla: Cedilla,
- cemptyv: cemptyv,
- cent: cent,
- centerdot: centerdot,
- CenterDot: CenterDot,
- cfr: cfr,
- Cfr: Cfr,
- CHcy: CHcy,
- chcy: chcy,
- check: check,
- checkmark: checkmark,
- Chi: Chi,
- chi: chi,
- circ: circ,
- circeq: circeq,
- circlearrowleft: circlearrowleft,
- circlearrowright: circlearrowright,
- circledast: circledast,
- circledcirc: circledcirc,
- circleddash: circleddash,
- CircleDot: CircleDot,
- circledR: circledR,
- circledS: circledS,
- CircleMinus: CircleMinus,
- CirclePlus: CirclePlus,
- CircleTimes: CircleTimes,
- cir: cir,
- cirE: cirE,
- cire: cire,
- cirfnint: cirfnint,
- cirmid: cirmid,
- cirscir: cirscir,
- ClockwiseContourIntegral: ClockwiseContourIntegral,
- CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
- CloseCurlyQuote: CloseCurlyQuote,
- clubs: clubs,
- clubsuit: clubsuit,
- colon: colon,
- Colon: Colon,
- Colone: Colone,
- colone: colone,
- coloneq: coloneq,
- comma: comma,
- commat: commat,
- comp: comp,
- compfn: compfn,
- complement: complement,
- complexes: complexes,
- cong: cong,
- congdot: congdot,
- Congruent: Congruent,
- conint: conint,
- Conint: Conint,
- ContourIntegral: ContourIntegral,
- copf: copf,
- Copf: Copf,
- coprod: coprod,
- Coproduct: Coproduct,
- copy: copy,
- COPY: COPY,
- copysr: copysr,
- CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
- crarr: crarr,
- cross: cross,
- Cross: Cross,
- Cscr: Cscr,
- cscr: cscr,
- csub: csub,
- csube: csube,
- csup: csup,
- csupe: csupe,
- ctdot: ctdot,
- cudarrl: cudarrl,
- cudarrr: cudarrr,
- cuepr: cuepr,
- cuesc: cuesc,
- cularr: cularr,
- cularrp: cularrp,
- cupbrcap: cupbrcap,
- cupcap: cupcap,
- CupCap: CupCap,
- cup: cup,
- Cup: Cup,
- cupcup: cupcup,
- cupdot: cupdot,
- cupor: cupor,
- cups: cups,
- curarr: curarr,
- curarrm: curarrm,
- curlyeqprec: curlyeqprec,
- curlyeqsucc: curlyeqsucc,
- curlyvee: curlyvee,
- curlywedge: curlywedge,
- curren: curren,
- curvearrowleft: curvearrowleft,
- curvearrowright: curvearrowright,
- cuvee: cuvee,
- cuwed: cuwed,
- cwconint: cwconint,
- cwint: cwint,
- cylcty: cylcty,
- dagger: dagger,
- Dagger: Dagger,
- daleth: daleth,
- darr: darr,
- Darr: Darr,
- dArr: dArr,
- dash: dash,
- Dashv: Dashv,
- dashv: dashv,
- dbkarow: dbkarow,
- dblac: dblac,
- Dcaron: Dcaron,
- dcaron: dcaron,
- Dcy: Dcy,
- dcy: dcy,
- ddagger: ddagger,
- ddarr: ddarr,
- DD: DD,
- dd: dd,
- DDotrahd: DDotrahd,
- ddotseq: ddotseq,
- deg: deg,
- Del: Del,
- Delta: Delta,
- delta: delta,
- demptyv: demptyv,
- dfisht: dfisht,
- Dfr: Dfr,
- dfr: dfr,
- dHar: dHar,
- dharl: dharl,
- dharr: dharr,
- DiacriticalAcute: DiacriticalAcute,
- DiacriticalDot: DiacriticalDot,
- DiacriticalDoubleAcute: DiacriticalDoubleAcute,
- DiacriticalGrave: DiacriticalGrave,
- DiacriticalTilde: DiacriticalTilde,
- diam: diam,
- diamond: diamond,
- Diamond: Diamond,
- diamondsuit: diamondsuit,
- diams: diams,
- die: die,
- DifferentialD: DifferentialD,
- digamma: digamma,
- disin: disin,
- div: div,
- divide: divide,
- divideontimes: divideontimes,
- divonx: divonx,
- DJcy: DJcy,
- djcy: djcy,
- dlcorn: dlcorn,
- dlcrop: dlcrop,
- dollar: dollar,
- Dopf: Dopf,
- dopf: dopf,
- Dot: Dot,
- dot: dot,
- DotDot: DotDot,
- doteq: doteq,
- doteqdot: doteqdot,
- DotEqual: DotEqual,
- dotminus: dotminus,
- dotplus: dotplus,
- dotsquare: dotsquare,
- doublebarwedge: doublebarwedge,
- DoubleContourIntegral: DoubleContourIntegral,
- DoubleDot: DoubleDot,
- DoubleDownArrow: DoubleDownArrow,
- DoubleLeftArrow: DoubleLeftArrow,
- DoubleLeftRightArrow: DoubleLeftRightArrow,
- DoubleLeftTee: DoubleLeftTee,
- DoubleLongLeftArrow: DoubleLongLeftArrow,
- DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
- DoubleLongRightArrow: DoubleLongRightArrow,
- DoubleRightArrow: DoubleRightArrow,
- DoubleRightTee: DoubleRightTee,
- DoubleUpArrow: DoubleUpArrow,
- DoubleUpDownArrow: DoubleUpDownArrow,
- DoubleVerticalBar: DoubleVerticalBar,
- DownArrowBar: DownArrowBar,
- downarrow: downarrow,
- DownArrow: DownArrow,
- Downarrow: Downarrow,
- DownArrowUpArrow: DownArrowUpArrow,
- DownBreve: DownBreve,
- downdownarrows: downdownarrows,
- downharpoonleft: downharpoonleft,
- downharpoonright: downharpoonright,
- DownLeftRightVector: DownLeftRightVector,
- DownLeftTeeVector: DownLeftTeeVector,
- DownLeftVectorBar: DownLeftVectorBar,
- DownLeftVector: DownLeftVector,
- DownRightTeeVector: DownRightTeeVector,
- DownRightVectorBar: DownRightVectorBar,
- DownRightVector: DownRightVector,
- DownTeeArrow: DownTeeArrow,
- DownTee: DownTee,
- drbkarow: drbkarow,
- drcorn: drcorn,
- drcrop: drcrop,
- Dscr: Dscr,
- dscr: dscr,
- DScy: DScy,
- dscy: dscy,
- dsol: dsol,
- Dstrok: Dstrok,
- dstrok: dstrok,
- dtdot: dtdot,
- dtri: dtri,
- dtrif: dtrif,
- duarr: duarr,
- duhar: duhar,
- dwangle: dwangle,
- DZcy: DZcy,
- dzcy: dzcy,
- dzigrarr: dzigrarr,
- Eacute: Eacute,
- eacute: eacute,
- easter: easter,
- Ecaron: Ecaron,
- ecaron: ecaron,
- Ecirc: Ecirc,
- ecirc: ecirc,
- ecir: ecir,
- ecolon: ecolon,
- Ecy: Ecy,
- ecy: ecy,
- eDDot: eDDot,
- Edot: Edot,
- edot: edot,
- eDot: eDot,
- ee: ee,
- efDot: efDot,
- Efr: Efr,
- efr: efr,
- eg: eg,
- Egrave: Egrave,
- egrave: egrave,
- egs: egs,
- egsdot: egsdot,
- el: el,
- Element: Element,
- elinters: elinters,
- ell: ell,
- els: els,
- elsdot: elsdot,
- Emacr: Emacr,
- emacr: emacr,
- empty: empty,
- emptyset: emptyset,
- EmptySmallSquare: EmptySmallSquare,
- emptyv: emptyv,
- EmptyVerySmallSquare: EmptyVerySmallSquare,
- emsp13: emsp13,
- emsp14: emsp14,
- emsp: emsp,
- ENG: ENG,
- eng: eng,
- ensp: ensp,
- Eogon: Eogon,
- eogon: eogon,
- Eopf: Eopf,
- eopf: eopf,
- epar: epar,
- eparsl: eparsl,
- eplus: eplus,
- epsi: epsi,
- Epsilon: Epsilon,
- epsilon: epsilon,
- epsiv: epsiv,
- eqcirc: eqcirc,
- eqcolon: eqcolon,
- eqsim: eqsim,
- eqslantgtr: eqslantgtr,
- eqslantless: eqslantless,
- Equal: Equal,
- equals: equals,
- EqualTilde: EqualTilde,
- equest: equest,
- Equilibrium: Equilibrium,
- equiv: equiv,
- equivDD: equivDD,
- eqvparsl: eqvparsl,
- erarr: erarr,
- erDot: erDot,
- escr: escr,
- Escr: Escr,
- esdot: esdot,
- Esim: Esim,
- esim: esim,
- Eta: Eta,
- eta: eta,
- ETH: ETH,
- eth: eth,
- Euml: Euml,
- euml: euml,
- euro: euro,
- excl: excl,
- exist: exist,
- Exists: Exists,
- expectation: expectation,
- exponentiale: exponentiale,
- ExponentialE: ExponentialE,
- fallingdotseq: fallingdotseq,
- Fcy: Fcy,
- fcy: fcy,
- female: female,
- ffilig: ffilig,
- fflig: fflig,
- ffllig: ffllig,
- Ffr: Ffr,
- ffr: ffr,
- filig: filig,
- FilledSmallSquare: FilledSmallSquare,
- FilledVerySmallSquare: FilledVerySmallSquare,
- fjlig: fjlig,
- flat: flat,
- fllig: fllig,
- fltns: fltns,
- fnof: fnof,
- Fopf: Fopf,
- fopf: fopf,
- forall: forall,
- ForAll: ForAll,
- fork: fork,
- forkv: forkv,
- Fouriertrf: Fouriertrf,
- fpartint: fpartint,
- frac12: frac12,
- frac13: frac13,
- frac14: frac14,
- frac15: frac15,
- frac16: frac16,
- frac18: frac18,
- frac23: frac23,
- frac25: frac25,
- frac34: frac34,
- frac35: frac35,
- frac38: frac38,
- frac45: frac45,
- frac56: frac56,
- frac58: frac58,
- frac78: frac78,
- frasl: frasl,
- frown: frown,
- fscr: fscr,
- Fscr: Fscr,
- gacute: gacute,
- Gamma: Gamma,
- gamma: gamma,
- Gammad: Gammad,
- gammad: gammad,
- gap: gap,
- Gbreve: Gbreve,
- gbreve: gbreve,
- Gcedil: Gcedil,
- Gcirc: Gcirc,
- gcirc: gcirc,
- Gcy: Gcy,
- gcy: gcy,
- Gdot: Gdot,
- gdot: gdot,
- ge: ge,
- gE: gE,
- gEl: gEl,
- gel: gel,
- geq: geq,
- geqq: geqq,
- geqslant: geqslant,
- gescc: gescc,
- ges: ges,
- gesdot: gesdot,
- gesdoto: gesdoto,
- gesdotol: gesdotol,
- gesl: gesl,
- gesles: gesles,
- Gfr: Gfr,
- gfr: gfr,
- gg: gg,
- Gg: Gg,
- ggg: ggg,
- gimel: gimel,
- GJcy: GJcy,
- gjcy: gjcy,
- gla: gla,
- gl: gl,
- glE: glE,
- glj: glj,
- gnap: gnap,
- gnapprox: gnapprox,
- gne: gne,
- gnE: gnE,
- gneq: gneq,
- gneqq: gneqq,
- gnsim: gnsim,
- Gopf: Gopf,
- gopf: gopf,
- grave: grave,
- GreaterEqual: GreaterEqual,
- GreaterEqualLess: GreaterEqualLess,
- GreaterFullEqual: GreaterFullEqual,
- GreaterGreater: GreaterGreater,
- GreaterLess: GreaterLess,
- GreaterSlantEqual: GreaterSlantEqual,
- GreaterTilde: GreaterTilde,
- Gscr: Gscr,
- gscr: gscr,
- gsim: gsim,
- gsime: gsime,
- gsiml: gsiml,
- gtcc: gtcc,
- gtcir: gtcir,
- gt: gt,
- GT: GT,
- Gt: Gt,
- gtdot: gtdot,
- gtlPar: gtlPar,
- gtquest: gtquest,
- gtrapprox: gtrapprox,
- gtrarr: gtrarr,
- gtrdot: gtrdot,
- gtreqless: gtreqless,
- gtreqqless: gtreqqless,
- gtrless: gtrless,
- gtrsim: gtrsim,
- gvertneqq: gvertneqq,
- gvnE: gvnE,
- Hacek: Hacek,
- hairsp: hairsp,
- half: half,
- hamilt: hamilt,
- HARDcy: HARDcy,
- hardcy: hardcy,
- harrcir: harrcir,
- harr: harr,
- hArr: hArr,
- harrw: harrw,
- Hat: Hat,
- hbar: hbar,
- Hcirc: Hcirc,
- hcirc: hcirc,
- hearts: hearts,
- heartsuit: heartsuit,
- hellip: hellip,
- hercon: hercon,
- hfr: hfr,
- Hfr: Hfr,
- HilbertSpace: HilbertSpace,
- hksearow: hksearow,
- hkswarow: hkswarow,
- hoarr: hoarr,
- homtht: homtht,
- hookleftarrow: hookleftarrow,
- hookrightarrow: hookrightarrow,
- hopf: hopf,
- Hopf: Hopf,
- horbar: horbar,
- HorizontalLine: HorizontalLine,
- hscr: hscr,
- Hscr: Hscr,
- hslash: hslash,
- Hstrok: Hstrok,
- hstrok: hstrok,
- HumpDownHump: HumpDownHump,
- HumpEqual: HumpEqual,
- hybull: hybull,
- hyphen: hyphen,
- Iacute: Iacute,
- iacute: iacute,
- ic: ic,
- Icirc: Icirc,
- icirc: icirc,
- Icy: Icy,
- icy: icy,
- Idot: Idot,
- IEcy: IEcy,
- iecy: iecy,
- iexcl: iexcl,
- iff: iff,
- ifr: ifr,
- Ifr: Ifr,
- Igrave: Igrave,
- igrave: igrave,
- ii: ii,
- iiiint: iiiint,
- iiint: iiint,
- iinfin: iinfin,
- iiota: iiota,
- IJlig: IJlig,
- ijlig: ijlig,
- Imacr: Imacr,
- imacr: imacr,
- image: image,
- ImaginaryI: ImaginaryI,
- imagline: imagline,
- imagpart: imagpart,
- imath: imath,
- Im: Im,
- imof: imof,
- imped: imped,
- Implies: Implies,
- incare: incare,
- "in": "∈",
- infin: infin,
- infintie: infintie,
- inodot: inodot,
- intcal: intcal,
- int: int,
- Int: Int,
- integers: integers,
- Integral: Integral,
- intercal: intercal,
- Intersection: Intersection,
- intlarhk: intlarhk,
- intprod: intprod,
- InvisibleComma: InvisibleComma,
- InvisibleTimes: InvisibleTimes,
- IOcy: IOcy,
- iocy: iocy,
- Iogon: Iogon,
- iogon: iogon,
- Iopf: Iopf,
- iopf: iopf,
- Iota: Iota,
- iota: iota,
- iprod: iprod,
- iquest: iquest,
- iscr: iscr,
- Iscr: Iscr,
- isin: isin,
- isindot: isindot,
- isinE: isinE,
- isins: isins,
- isinsv: isinsv,
- isinv: isinv,
- it: it,
- Itilde: Itilde,
- itilde: itilde,
- Iukcy: Iukcy,
- iukcy: iukcy,
- Iuml: Iuml,
- iuml: iuml,
- Jcirc: Jcirc,
- jcirc: jcirc,
- Jcy: Jcy,
- jcy: jcy,
- Jfr: Jfr,
- jfr: jfr,
- jmath: jmath,
- Jopf: Jopf,
- jopf: jopf,
- Jscr: Jscr,
- jscr: jscr,
- Jsercy: Jsercy,
- jsercy: jsercy,
- Jukcy: Jukcy,
- jukcy: jukcy,
- Kappa: Kappa,
- kappa: kappa,
- kappav: kappav,
- Kcedil: Kcedil,
- kcedil: kcedil,
- Kcy: Kcy,
- kcy: kcy,
- Kfr: Kfr,
- kfr: kfr,
- kgreen: kgreen,
- KHcy: KHcy,
- khcy: khcy,
- KJcy: KJcy,
- kjcy: kjcy,
- Kopf: Kopf,
- kopf: kopf,
- Kscr: Kscr,
- kscr: kscr,
- lAarr: lAarr,
- Lacute: Lacute,
- lacute: lacute,
- laemptyv: laemptyv,
- lagran: lagran,
- Lambda: Lambda,
- lambda: lambda,
- lang: lang,
- Lang: Lang,
- langd: langd,
- langle: langle,
- lap: lap,
- Laplacetrf: Laplacetrf,
- laquo: laquo,
- larrb: larrb,
- larrbfs: larrbfs,
- larr: larr,
- Larr: Larr,
- lArr: lArr,
- larrfs: larrfs,
- larrhk: larrhk,
- larrlp: larrlp,
- larrpl: larrpl,
- larrsim: larrsim,
- larrtl: larrtl,
- latail: latail,
- lAtail: lAtail,
- lat: lat,
- late: late,
- lates: lates,
- lbarr: lbarr,
- lBarr: lBarr,
- lbbrk: lbbrk,
- lbrace: lbrace,
- lbrack: lbrack,
- lbrke: lbrke,
- lbrksld: lbrksld,
- lbrkslu: lbrkslu,
- Lcaron: Lcaron,
- lcaron: lcaron,
- Lcedil: Lcedil,
- lcedil: lcedil,
- lceil: lceil,
- lcub: lcub,
- Lcy: Lcy,
- lcy: lcy,
- ldca: ldca,
- ldquo: ldquo,
- ldquor: ldquor,
- ldrdhar: ldrdhar,
- ldrushar: ldrushar,
- ldsh: ldsh,
- le: le,
- lE: lE,
- LeftAngleBracket: LeftAngleBracket,
- LeftArrowBar: LeftArrowBar,
- leftarrow: leftarrow,
- LeftArrow: LeftArrow,
- Leftarrow: Leftarrow,
- LeftArrowRightArrow: LeftArrowRightArrow,
- leftarrowtail: leftarrowtail,
- LeftCeiling: LeftCeiling,
- LeftDoubleBracket: LeftDoubleBracket,
- LeftDownTeeVector: LeftDownTeeVector,
- LeftDownVectorBar: LeftDownVectorBar,
- LeftDownVector: LeftDownVector,
- LeftFloor: LeftFloor,
- leftharpoondown: leftharpoondown,
- leftharpoonup: leftharpoonup,
- leftleftarrows: leftleftarrows,
- leftrightarrow: leftrightarrow,
- LeftRightArrow: LeftRightArrow,
- Leftrightarrow: Leftrightarrow,
- leftrightarrows: leftrightarrows,
- leftrightharpoons: leftrightharpoons,
- leftrightsquigarrow: leftrightsquigarrow,
- LeftRightVector: LeftRightVector,
- LeftTeeArrow: LeftTeeArrow,
- LeftTee: LeftTee,
- LeftTeeVector: LeftTeeVector,
- leftthreetimes: leftthreetimes,
- LeftTriangleBar: LeftTriangleBar,
- LeftTriangle: LeftTriangle,
- LeftTriangleEqual: LeftTriangleEqual,
- LeftUpDownVector: LeftUpDownVector,
- LeftUpTeeVector: LeftUpTeeVector,
- LeftUpVectorBar: LeftUpVectorBar,
- LeftUpVector: LeftUpVector,
- LeftVectorBar: LeftVectorBar,
- LeftVector: LeftVector,
- lEg: lEg,
- leg: leg,
- leq: leq,
- leqq: leqq,
- leqslant: leqslant,
- lescc: lescc,
- les: les,
- lesdot: lesdot,
- lesdoto: lesdoto,
- lesdotor: lesdotor,
- lesg: lesg,
- lesges: lesges,
- lessapprox: lessapprox,
- lessdot: lessdot,
- lesseqgtr: lesseqgtr,
- lesseqqgtr: lesseqqgtr,
- LessEqualGreater: LessEqualGreater,
- LessFullEqual: LessFullEqual,
- LessGreater: LessGreater,
- lessgtr: lessgtr,
- LessLess: LessLess,
- lesssim: lesssim,
- LessSlantEqual: LessSlantEqual,
- LessTilde: LessTilde,
- lfisht: lfisht,
- lfloor: lfloor,
- Lfr: Lfr,
- lfr: lfr,
- lg: lg,
- lgE: lgE,
- lHar: lHar,
- lhard: lhard,
- lharu: lharu,
- lharul: lharul,
- lhblk: lhblk,
- LJcy: LJcy,
- ljcy: ljcy,
- llarr: llarr,
- ll: ll,
- Ll: Ll,
- llcorner: llcorner,
- Lleftarrow: Lleftarrow,
- llhard: llhard,
- lltri: lltri,
- Lmidot: Lmidot,
- lmidot: lmidot,
- lmoustache: lmoustache,
- lmoust: lmoust,
- lnap: lnap,
- lnapprox: lnapprox,
- lne: lne,
- lnE: lnE,
- lneq: lneq,
- lneqq: lneqq,
- lnsim: lnsim,
- loang: loang,
- loarr: loarr,
- lobrk: lobrk,
- longleftarrow: longleftarrow,
- LongLeftArrow: LongLeftArrow,
- Longleftarrow: Longleftarrow,
- longleftrightarrow: longleftrightarrow,
- LongLeftRightArrow: LongLeftRightArrow,
- Longleftrightarrow: Longleftrightarrow,
- longmapsto: longmapsto,
- longrightarrow: longrightarrow,
- LongRightArrow: LongRightArrow,
- Longrightarrow: Longrightarrow,
- looparrowleft: looparrowleft,
- looparrowright: looparrowright,
- lopar: lopar,
- Lopf: Lopf,
- lopf: lopf,
- loplus: loplus,
- lotimes: lotimes,
- lowast: lowast,
- lowbar: lowbar,
- LowerLeftArrow: LowerLeftArrow,
- LowerRightArrow: LowerRightArrow,
- loz: loz,
- lozenge: lozenge,
- lozf: lozf,
- lpar: lpar,
- lparlt: lparlt,
- lrarr: lrarr,
- lrcorner: lrcorner,
- lrhar: lrhar,
- lrhard: lrhard,
- lrm: lrm,
- lrtri: lrtri,
- lsaquo: lsaquo,
- lscr: lscr,
- Lscr: Lscr,
- lsh: lsh,
- Lsh: Lsh,
- lsim: lsim,
- lsime: lsime,
- lsimg: lsimg,
- lsqb: lsqb,
- lsquo: lsquo,
- lsquor: lsquor,
- Lstrok: Lstrok,
- lstrok: lstrok,
- ltcc: ltcc,
- ltcir: ltcir,
- lt: lt,
- LT: LT,
- Lt: Lt,
- ltdot: ltdot,
- lthree: lthree,
- ltimes: ltimes,
- ltlarr: ltlarr,
- ltquest: ltquest,
- ltri: ltri,
- ltrie: ltrie,
- ltrif: ltrif,
- ltrPar: ltrPar,
- lurdshar: lurdshar,
- luruhar: luruhar,
- lvertneqq: lvertneqq,
- lvnE: lvnE,
- macr: macr,
- male: male,
- malt: malt,
- maltese: maltese,
- "Map": "⤅",
- map: map,
- mapsto: mapsto,
- mapstodown: mapstodown,
- mapstoleft: mapstoleft,
- mapstoup: mapstoup,
- marker: marker,
- mcomma: mcomma,
- Mcy: Mcy,
- mcy: mcy,
- mdash: mdash,
- mDDot: mDDot,
- measuredangle: measuredangle,
- MediumSpace: MediumSpace,
- Mellintrf: Mellintrf,
- Mfr: Mfr,
- mfr: mfr,
- mho: mho,
- micro: micro,
- midast: midast,
- midcir: midcir,
- mid: mid,
- middot: middot,
- minusb: minusb,
- minus: minus,
- minusd: minusd,
- minusdu: minusdu,
- MinusPlus: MinusPlus,
- mlcp: mlcp,
- mldr: mldr,
- mnplus: mnplus,
- models: models,
- Mopf: Mopf,
- mopf: mopf,
- mp: mp,
- mscr: mscr,
- Mscr: Mscr,
- mstpos: mstpos,
- Mu: Mu,
- mu: mu,
- multimap: multimap,
- mumap: mumap,
- nabla: nabla,
- Nacute: Nacute,
- nacute: nacute,
- nang: nang,
- nap: nap,
- napE: napE,
- napid: napid,
- napos: napos,
- napprox: napprox,
- natural: natural,
- naturals: naturals,
- natur: natur,
- nbsp: nbsp,
- nbump: nbump,
- nbumpe: nbumpe,
- ncap: ncap,
- Ncaron: Ncaron,
- ncaron: ncaron,
- Ncedil: Ncedil,
- ncedil: ncedil,
- ncong: ncong,
- ncongdot: ncongdot,
- ncup: ncup,
- Ncy: Ncy,
- ncy: ncy,
- ndash: ndash,
- nearhk: nearhk,
- nearr: nearr,
- neArr: neArr,
- nearrow: nearrow,
- ne: ne,
- nedot: nedot,
- NegativeMediumSpace: NegativeMediumSpace,
- NegativeThickSpace: NegativeThickSpace,
- NegativeThinSpace: NegativeThinSpace,
- NegativeVeryThinSpace: NegativeVeryThinSpace,
- nequiv: nequiv,
- nesear: nesear,
- nesim: nesim,
- NestedGreaterGreater: NestedGreaterGreater,
- NestedLessLess: NestedLessLess,
- NewLine: NewLine,
- nexist: nexist,
- nexists: nexists,
- Nfr: Nfr,
- nfr: nfr,
- ngE: ngE,
- nge: nge,
- ngeq: ngeq,
- ngeqq: ngeqq,
- ngeqslant: ngeqslant,
- nges: nges,
- nGg: nGg,
- ngsim: ngsim,
- nGt: nGt,
- ngt: ngt,
- ngtr: ngtr,
- nGtv: nGtv,
- nharr: nharr,
- nhArr: nhArr,
- nhpar: nhpar,
- ni: ni,
- nis: nis,
- nisd: nisd,
- niv: niv,
- NJcy: NJcy,
- njcy: njcy,
- nlarr: nlarr,
- nlArr: nlArr,
- nldr: nldr,
- nlE: nlE,
- nle: nle,
- nleftarrow: nleftarrow,
- nLeftarrow: nLeftarrow,
- nleftrightarrow: nleftrightarrow,
- nLeftrightarrow: nLeftrightarrow,
- nleq: nleq,
- nleqq: nleqq,
- nleqslant: nleqslant,
- nles: nles,
- nless: nless,
- nLl: nLl,
- nlsim: nlsim,
- nLt: nLt,
- nlt: nlt,
- nltri: nltri,
- nltrie: nltrie,
- nLtv: nLtv,
- nmid: nmid,
- NoBreak: NoBreak,
- NonBreakingSpace: NonBreakingSpace,
- nopf: nopf,
- Nopf: Nopf,
- Not: Not,
- not: not,
- NotCongruent: NotCongruent,
- NotCupCap: NotCupCap,
- NotDoubleVerticalBar: NotDoubleVerticalBar,
- NotElement: NotElement,
- NotEqual: NotEqual,
- NotEqualTilde: NotEqualTilde,
- NotExists: NotExists,
- NotGreater: NotGreater,
- NotGreaterEqual: NotGreaterEqual,
- NotGreaterFullEqual: NotGreaterFullEqual,
- NotGreaterGreater: NotGreaterGreater,
- NotGreaterLess: NotGreaterLess,
- NotGreaterSlantEqual: NotGreaterSlantEqual,
- NotGreaterTilde: NotGreaterTilde,
- NotHumpDownHump: NotHumpDownHump,
- NotHumpEqual: NotHumpEqual,
- notin: notin,
- notindot: notindot,
- notinE: notinE,
- notinva: notinva,
- notinvb: notinvb,
- notinvc: notinvc,
- NotLeftTriangleBar: NotLeftTriangleBar,
- NotLeftTriangle: NotLeftTriangle,
- NotLeftTriangleEqual: NotLeftTriangleEqual,
- NotLess: NotLess,
- NotLessEqual: NotLessEqual,
- NotLessGreater: NotLessGreater,
- NotLessLess: NotLessLess,
- NotLessSlantEqual: NotLessSlantEqual,
- NotLessTilde: NotLessTilde,
- NotNestedGreaterGreater: NotNestedGreaterGreater,
- NotNestedLessLess: NotNestedLessLess,
- notni: notni,
- notniva: notniva,
- notnivb: notnivb,
- notnivc: notnivc,
- NotPrecedes: NotPrecedes,
- NotPrecedesEqual: NotPrecedesEqual,
- NotPrecedesSlantEqual: NotPrecedesSlantEqual,
- NotReverseElement: NotReverseElement,
- NotRightTriangleBar: NotRightTriangleBar,
- NotRightTriangle: NotRightTriangle,
- NotRightTriangleEqual: NotRightTriangleEqual,
- NotSquareSubset: NotSquareSubset,
- NotSquareSubsetEqual: NotSquareSubsetEqual,
- NotSquareSuperset: NotSquareSuperset,
- NotSquareSupersetEqual: NotSquareSupersetEqual,
- NotSubset: NotSubset,
- NotSubsetEqual: NotSubsetEqual,
- NotSucceeds: NotSucceeds,
- NotSucceedsEqual: NotSucceedsEqual,
- NotSucceedsSlantEqual: NotSucceedsSlantEqual,
- NotSucceedsTilde: NotSucceedsTilde,
- NotSuperset: NotSuperset,
- NotSupersetEqual: NotSupersetEqual,
- NotTilde: NotTilde,
- NotTildeEqual: NotTildeEqual,
- NotTildeFullEqual: NotTildeFullEqual,
- NotTildeTilde: NotTildeTilde,
- NotVerticalBar: NotVerticalBar,
- nparallel: nparallel,
- npar: npar,
- nparsl: nparsl,
- npart: npart,
- npolint: npolint,
- npr: npr,
- nprcue: nprcue,
- nprec: nprec,
- npreceq: npreceq,
- npre: npre,
- nrarrc: nrarrc,
- nrarr: nrarr,
- nrArr: nrArr,
- nrarrw: nrarrw,
- nrightarrow: nrightarrow,
- nRightarrow: nRightarrow,
- nrtri: nrtri,
- nrtrie: nrtrie,
- nsc: nsc,
- nsccue: nsccue,
- nsce: nsce,
- Nscr: Nscr,
- nscr: nscr,
- nshortmid: nshortmid,
- nshortparallel: nshortparallel,
- nsim: nsim,
- nsime: nsime,
- nsimeq: nsimeq,
- nsmid: nsmid,
- nspar: nspar,
- nsqsube: nsqsube,
- nsqsupe: nsqsupe,
- nsub: nsub,
- nsubE: nsubE,
- nsube: nsube,
- nsubset: nsubset,
- nsubseteq: nsubseteq,
- nsubseteqq: nsubseteqq,
- nsucc: nsucc,
- nsucceq: nsucceq,
- nsup: nsup,
- nsupE: nsupE,
- nsupe: nsupe,
- nsupset: nsupset,
- nsupseteq: nsupseteq,
- nsupseteqq: nsupseteqq,
- ntgl: ntgl,
- Ntilde: Ntilde,
- ntilde: ntilde,
- ntlg: ntlg,
- ntriangleleft: ntriangleleft,
- ntrianglelefteq: ntrianglelefteq,
- ntriangleright: ntriangleright,
- ntrianglerighteq: ntrianglerighteq,
- Nu: Nu,
- nu: nu,
- num: num,
- numero: numero,
- numsp: numsp,
- nvap: nvap,
- nvdash: nvdash,
- nvDash: nvDash,
- nVdash: nVdash,
- nVDash: nVDash,
- nvge: nvge,
- nvgt: nvgt,
- nvHarr: nvHarr,
- nvinfin: nvinfin,
- nvlArr: nvlArr,
- nvle: nvle,
- nvlt: nvlt,
- nvltrie: nvltrie,
- nvrArr: nvrArr,
- nvrtrie: nvrtrie,
- nvsim: nvsim,
- nwarhk: nwarhk,
- nwarr: nwarr,
- nwArr: nwArr,
- nwarrow: nwarrow,
- nwnear: nwnear,
- Oacute: Oacute,
- oacute: oacute,
- oast: oast,
- Ocirc: Ocirc,
- ocirc: ocirc,
- ocir: ocir,
- Ocy: Ocy,
- ocy: ocy,
- odash: odash,
- Odblac: Odblac,
- odblac: odblac,
- odiv: odiv,
- odot: odot,
- odsold: odsold,
- OElig: OElig,
- oelig: oelig,
- ofcir: ofcir,
- Ofr: Ofr,
- ofr: ofr,
- ogon: ogon,
- Ograve: Ograve,
- ograve: ograve,
- ogt: ogt,
- ohbar: ohbar,
- ohm: ohm,
- oint: oint,
- olarr: olarr,
- olcir: olcir,
- olcross: olcross,
- oline: oline,
- olt: olt,
- Omacr: Omacr,
- omacr: omacr,
- Omega: Omega,
- omega: omega,
- Omicron: Omicron,
- omicron: omicron,
- omid: omid,
- ominus: ominus,
- Oopf: Oopf,
- oopf: oopf,
- opar: opar,
- OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
- OpenCurlyQuote: OpenCurlyQuote,
- operp: operp,
- oplus: oplus,
- orarr: orarr,
- Or: Or,
- or: or,
- ord: ord,
- order: order,
- orderof: orderof,
- ordf: ordf,
- ordm: ordm,
- origof: origof,
- oror: oror,
- orslope: orslope,
- orv: orv,
- oS: oS,
- Oscr: Oscr,
- oscr: oscr,
- Oslash: Oslash,
- oslash: oslash,
- osol: osol,
- Otilde: Otilde,
- otilde: otilde,
- otimesas: otimesas,
- Otimes: Otimes,
- otimes: otimes,
- Ouml: Ouml,
- ouml: ouml,
- ovbar: ovbar,
- OverBar: OverBar,
- OverBrace: OverBrace,
- OverBracket: OverBracket,
- OverParenthesis: OverParenthesis,
- para: para,
- parallel: parallel,
- par: par,
- parsim: parsim,
- parsl: parsl,
- part: part,
- PartialD: PartialD,
- Pcy: Pcy,
- pcy: pcy,
- percnt: percnt,
- period: period,
- permil: permil,
- perp: perp,
- pertenk: pertenk,
- Pfr: Pfr,
- pfr: pfr,
- Phi: Phi,
- phi: phi,
- phiv: phiv,
- phmmat: phmmat,
- phone: phone,
- Pi: Pi,
- pi: pi,
- pitchfork: pitchfork,
- piv: piv,
- planck: planck,
- planckh: planckh,
- plankv: plankv,
- plusacir: plusacir,
- plusb: plusb,
- pluscir: pluscir,
- plus: plus,
- plusdo: plusdo,
- plusdu: plusdu,
- pluse: pluse,
- PlusMinus: PlusMinus,
- plusmn: plusmn,
- plussim: plussim,
- plustwo: plustwo,
- pm: pm,
- Poincareplane: Poincareplane,
- pointint: pointint,
- popf: popf,
- Popf: Popf,
- pound: pound,
- prap: prap,
- Pr: Pr,
- pr: pr,
- prcue: prcue,
- precapprox: precapprox,
- prec: prec,
- preccurlyeq: preccurlyeq,
- Precedes: Precedes,
- PrecedesEqual: PrecedesEqual,
- PrecedesSlantEqual: PrecedesSlantEqual,
- PrecedesTilde: PrecedesTilde,
- preceq: preceq,
- precnapprox: precnapprox,
- precneqq: precneqq,
- precnsim: precnsim,
- pre: pre,
- prE: prE,
- precsim: precsim,
- prime: prime,
- Prime: Prime,
- primes: primes,
- prnap: prnap,
- prnE: prnE,
- prnsim: prnsim,
- prod: prod,
- Product: Product,
- profalar: profalar,
- profline: profline,
- profsurf: profsurf,
- prop: prop,
- Proportional: Proportional,
- Proportion: Proportion,
- propto: propto,
- prsim: prsim,
- prurel: prurel,
- Pscr: Pscr,
- pscr: pscr,
- Psi: Psi,
- psi: psi,
- puncsp: puncsp,
- Qfr: Qfr,
- qfr: qfr,
- qint: qint,
- qopf: qopf,
- Qopf: Qopf,
- qprime: qprime,
- Qscr: Qscr,
- qscr: qscr,
- quaternions: quaternions,
- quatint: quatint,
- quest: quest,
- questeq: questeq,
- quot: quot,
- QUOT: QUOT,
- rAarr: rAarr,
- race: race,
- Racute: Racute,
- racute: racute,
- radic: radic,
- raemptyv: raemptyv,
- rang: rang,
- Rang: Rang,
- rangd: rangd,
- range: range,
- rangle: rangle,
- raquo: raquo,
- rarrap: rarrap,
- rarrb: rarrb,
- rarrbfs: rarrbfs,
- rarrc: rarrc,
- rarr: rarr,
- Rarr: Rarr,
- rArr: rArr,
- rarrfs: rarrfs,
- rarrhk: rarrhk,
- rarrlp: rarrlp,
- rarrpl: rarrpl,
- rarrsim: rarrsim,
- Rarrtl: Rarrtl,
- rarrtl: rarrtl,
- rarrw: rarrw,
- ratail: ratail,
- rAtail: rAtail,
- ratio: ratio,
- rationals: rationals,
- rbarr: rbarr,
- rBarr: rBarr,
- RBarr: RBarr,
- rbbrk: rbbrk,
- rbrace: rbrace,
- rbrack: rbrack,
- rbrke: rbrke,
- rbrksld: rbrksld,
- rbrkslu: rbrkslu,
- Rcaron: Rcaron,
- rcaron: rcaron,
- Rcedil: Rcedil,
- rcedil: rcedil,
- rceil: rceil,
- rcub: rcub,
- Rcy: Rcy,
- rcy: rcy,
- rdca: rdca,
- rdldhar: rdldhar,
- rdquo: rdquo,
- rdquor: rdquor,
- rdsh: rdsh,
- real: real,
- realine: realine,
- realpart: realpart,
- reals: reals,
- Re: Re,
- rect: rect,
- reg: reg,
- REG: REG,
- ReverseElement: ReverseElement,
- ReverseEquilibrium: ReverseEquilibrium,
- ReverseUpEquilibrium: ReverseUpEquilibrium,
- rfisht: rfisht,
- rfloor: rfloor,
- rfr: rfr,
- Rfr: Rfr,
- rHar: rHar,
- rhard: rhard,
- rharu: rharu,
- rharul: rharul,
- Rho: Rho,
- rho: rho,
- rhov: rhov,
- RightAngleBracket: RightAngleBracket,
- RightArrowBar: RightArrowBar,
- rightarrow: rightarrow,
- RightArrow: RightArrow,
- Rightarrow: Rightarrow,
- RightArrowLeftArrow: RightArrowLeftArrow,
- rightarrowtail: rightarrowtail,
- RightCeiling: RightCeiling,
- RightDoubleBracket: RightDoubleBracket,
- RightDownTeeVector: RightDownTeeVector,
- RightDownVectorBar: RightDownVectorBar,
- RightDownVector: RightDownVector,
- RightFloor: RightFloor,
- rightharpoondown: rightharpoondown,
- rightharpoonup: rightharpoonup,
- rightleftarrows: rightleftarrows,
- rightleftharpoons: rightleftharpoons,
- rightrightarrows: rightrightarrows,
- rightsquigarrow: rightsquigarrow,
- RightTeeArrow: RightTeeArrow,
- RightTee: RightTee,
- RightTeeVector: RightTeeVector,
- rightthreetimes: rightthreetimes,
- RightTriangleBar: RightTriangleBar,
- RightTriangle: RightTriangle,
- RightTriangleEqual: RightTriangleEqual,
- RightUpDownVector: RightUpDownVector,
- RightUpTeeVector: RightUpTeeVector,
- RightUpVectorBar: RightUpVectorBar,
- RightUpVector: RightUpVector,
- RightVectorBar: RightVectorBar,
- RightVector: RightVector,
- ring: ring,
- risingdotseq: risingdotseq,
- rlarr: rlarr,
- rlhar: rlhar,
- rlm: rlm,
- rmoustache: rmoustache,
- rmoust: rmoust,
- rnmid: rnmid,
- roang: roang,
- roarr: roarr,
- robrk: robrk,
- ropar: ropar,
- ropf: ropf,
- Ropf: Ropf,
- roplus: roplus,
- rotimes: rotimes,
- RoundImplies: RoundImplies,
- rpar: rpar,
- rpargt: rpargt,
- rppolint: rppolint,
- rrarr: rrarr,
- Rrightarrow: Rrightarrow,
- rsaquo: rsaquo,
- rscr: rscr,
- Rscr: Rscr,
- rsh: rsh,
- Rsh: Rsh,
- rsqb: rsqb,
- rsquo: rsquo,
- rsquor: rsquor,
- rthree: rthree,
- rtimes: rtimes,
- rtri: rtri,
- rtrie: rtrie,
- rtrif: rtrif,
- rtriltri: rtriltri,
- RuleDelayed: RuleDelayed,
- ruluhar: ruluhar,
- rx: rx,
- Sacute: Sacute,
- sacute: sacute,
- sbquo: sbquo,
- scap: scap,
- Scaron: Scaron,
- scaron: scaron,
- Sc: Sc,
- sc: sc,
- sccue: sccue,
- sce: sce,
- scE: scE,
- Scedil: Scedil,
- scedil: scedil,
- Scirc: Scirc,
- scirc: scirc,
- scnap: scnap,
- scnE: scnE,
- scnsim: scnsim,
- scpolint: scpolint,
- scsim: scsim,
- Scy: Scy,
- scy: scy,
- sdotb: sdotb,
- sdot: sdot,
- sdote: sdote,
- searhk: searhk,
- searr: searr,
- seArr: seArr,
- searrow: searrow,
- sect: sect,
- semi: semi,
- seswar: seswar,
- setminus: setminus,
- setmn: setmn,
- sext: sext,
- Sfr: Sfr,
- sfr: sfr,
- sfrown: sfrown,
- sharp: sharp,
- SHCHcy: SHCHcy,
- shchcy: shchcy,
- SHcy: SHcy,
- shcy: shcy,
- ShortDownArrow: ShortDownArrow,
- ShortLeftArrow: ShortLeftArrow,
- shortmid: shortmid,
- shortparallel: shortparallel,
- ShortRightArrow: ShortRightArrow,
- ShortUpArrow: ShortUpArrow,
- shy: shy,
- Sigma: Sigma,
- sigma: sigma,
- sigmaf: sigmaf,
- sigmav: sigmav,
- sim: sim,
- simdot: simdot,
- sime: sime,
- simeq: simeq,
- simg: simg,
- simgE: simgE,
- siml: siml,
- simlE: simlE,
- simne: simne,
- simplus: simplus,
- simrarr: simrarr,
- slarr: slarr,
- SmallCircle: SmallCircle,
- smallsetminus: smallsetminus,
- smashp: smashp,
- smeparsl: smeparsl,
- smid: smid,
- smile: smile,
- smt: smt,
- smte: smte,
- smtes: smtes,
- SOFTcy: SOFTcy,
- softcy: softcy,
- solbar: solbar,
- solb: solb,
- sol: sol,
- Sopf: Sopf,
- sopf: sopf,
- spades: spades,
- spadesuit: spadesuit,
- spar: spar,
- sqcap: sqcap,
- sqcaps: sqcaps,
- sqcup: sqcup,
- sqcups: sqcups,
- Sqrt: Sqrt,
- sqsub: sqsub,
- sqsube: sqsube,
- sqsubset: sqsubset,
- sqsubseteq: sqsubseteq,
- sqsup: sqsup,
- sqsupe: sqsupe,
- sqsupset: sqsupset,
- sqsupseteq: sqsupseteq,
- square: square,
- Square: Square,
- SquareIntersection: SquareIntersection,
- SquareSubset: SquareSubset,
- SquareSubsetEqual: SquareSubsetEqual,
- SquareSuperset: SquareSuperset,
- SquareSupersetEqual: SquareSupersetEqual,
- SquareUnion: SquareUnion,
- squarf: squarf,
- squ: squ,
- squf: squf,
- srarr: srarr,
- Sscr: Sscr,
- sscr: sscr,
- ssetmn: ssetmn,
- ssmile: ssmile,
- sstarf: sstarf,
- Star: Star,
- star: star,
- starf: starf,
- straightepsilon: straightepsilon,
- straightphi: straightphi,
- strns: strns,
- sub: sub,
- Sub: Sub,
- subdot: subdot,
- subE: subE,
- sube: sube,
- subedot: subedot,
- submult: submult,
- subnE: subnE,
- subne: subne,
- subplus: subplus,
- subrarr: subrarr,
- subset: subset,
- Subset: Subset,
- subseteq: subseteq,
- subseteqq: subseteqq,
- SubsetEqual: SubsetEqual,
- subsetneq: subsetneq,
- subsetneqq: subsetneqq,
- subsim: subsim,
- subsub: subsub,
- subsup: subsup,
- succapprox: succapprox,
- succ: succ,
- succcurlyeq: succcurlyeq,
- Succeeds: Succeeds,
- SucceedsEqual: SucceedsEqual,
- SucceedsSlantEqual: SucceedsSlantEqual,
- SucceedsTilde: SucceedsTilde,
- succeq: succeq,
- succnapprox: succnapprox,
- succneqq: succneqq,
- succnsim: succnsim,
- succsim: succsim,
- SuchThat: SuchThat,
- sum: sum,
- Sum: Sum,
- sung: sung,
- sup1: sup1,
- sup2: sup2,
- sup3: sup3,
- sup: sup,
- Sup: Sup,
- supdot: supdot,
- supdsub: supdsub,
- supE: supE,
- supe: supe,
- supedot: supedot,
- Superset: Superset,
- SupersetEqual: SupersetEqual,
- suphsol: suphsol,
- suphsub: suphsub,
- suplarr: suplarr,
- supmult: supmult,
- supnE: supnE,
- supne: supne,
- supplus: supplus,
- supset: supset,
- Supset: Supset,
- supseteq: supseteq,
- supseteqq: supseteqq,
- supsetneq: supsetneq,
- supsetneqq: supsetneqq,
- supsim: supsim,
- supsub: supsub,
- supsup: supsup,
- swarhk: swarhk,
- swarr: swarr,
- swArr: swArr,
- swarrow: swarrow,
- swnwar: swnwar,
- szlig: szlig,
- Tab: Tab,
- target: target,
- Tau: Tau,
- tau: tau,
- tbrk: tbrk,
- Tcaron: Tcaron,
- tcaron: tcaron,
- Tcedil: Tcedil,
- tcedil: tcedil,
- Tcy: Tcy,
- tcy: tcy,
- tdot: tdot,
- telrec: telrec,
- Tfr: Tfr,
- tfr: tfr,
- there4: there4,
- therefore: therefore,
- Therefore: Therefore,
- Theta: Theta,
- theta: theta,
- thetasym: thetasym,
- thetav: thetav,
- thickapprox: thickapprox,
- thicksim: thicksim,
- ThickSpace: ThickSpace,
- ThinSpace: ThinSpace,
- thinsp: thinsp,
- thkap: thkap,
- thksim: thksim,
- THORN: THORN,
- thorn: thorn,
- tilde: tilde,
- Tilde: Tilde,
- TildeEqual: TildeEqual,
- TildeFullEqual: TildeFullEqual,
- TildeTilde: TildeTilde,
- timesbar: timesbar,
- timesb: timesb,
- times: times,
- timesd: timesd,
- tint: tint,
- toea: toea,
- topbot: topbot,
- topcir: topcir,
- top: top,
- Topf: Topf,
- topf: topf,
- topfork: topfork,
- tosa: tosa,
- tprime: tprime,
- trade: trade,
- TRADE: TRADE,
- triangle: triangle,
- triangledown: triangledown,
- triangleleft: triangleleft,
- trianglelefteq: trianglelefteq,
- triangleq: triangleq,
- triangleright: triangleright,
- trianglerighteq: trianglerighteq,
- tridot: tridot,
- trie: trie,
- triminus: triminus,
- TripleDot: TripleDot,
- triplus: triplus,
- trisb: trisb,
- tritime: tritime,
- trpezium: trpezium,
- Tscr: Tscr,
- tscr: tscr,
- TScy: TScy,
- tscy: tscy,
- TSHcy: TSHcy,
- tshcy: tshcy,
- Tstrok: Tstrok,
- tstrok: tstrok,
- twixt: twixt,
- twoheadleftarrow: twoheadleftarrow,
- twoheadrightarrow: twoheadrightarrow,
- Uacute: Uacute,
- uacute: uacute,
- uarr: uarr,
- Uarr: Uarr,
- uArr: uArr,
- Uarrocir: Uarrocir,
- Ubrcy: Ubrcy,
- ubrcy: ubrcy,
- Ubreve: Ubreve,
- ubreve: ubreve,
- Ucirc: Ucirc,
- ucirc: ucirc,
- Ucy: Ucy,
- ucy: ucy,
- udarr: udarr,
- Udblac: Udblac,
- udblac: udblac,
- udhar: udhar,
- ufisht: ufisht,
- Ufr: Ufr,
- ufr: ufr,
- Ugrave: Ugrave,
- ugrave: ugrave,
- uHar: uHar,
- uharl: uharl,
- uharr: uharr,
- uhblk: uhblk,
- ulcorn: ulcorn,
- ulcorner: ulcorner,
- ulcrop: ulcrop,
- ultri: ultri,
- Umacr: Umacr,
- umacr: umacr,
- uml: uml,
- UnderBar: UnderBar,
- UnderBrace: UnderBrace,
- UnderBracket: UnderBracket,
- UnderParenthesis: UnderParenthesis,
- Union: Union,
- UnionPlus: UnionPlus,
- Uogon: Uogon,
- uogon: uogon,
- Uopf: Uopf,
- uopf: uopf,
- UpArrowBar: UpArrowBar,
- uparrow: uparrow,
- UpArrow: UpArrow,
- Uparrow: Uparrow,
- UpArrowDownArrow: UpArrowDownArrow,
- updownarrow: updownarrow,
- UpDownArrow: UpDownArrow,
- Updownarrow: Updownarrow,
- UpEquilibrium: UpEquilibrium,
- upharpoonleft: upharpoonleft,
- upharpoonright: upharpoonright,
- uplus: uplus,
- UpperLeftArrow: UpperLeftArrow,
- UpperRightArrow: UpperRightArrow,
- upsi: upsi,
- Upsi: Upsi,
- upsih: upsih,
- Upsilon: Upsilon,
- upsilon: upsilon,
- UpTeeArrow: UpTeeArrow,
- UpTee: UpTee,
- upuparrows: upuparrows,
- urcorn: urcorn,
- urcorner: urcorner,
- urcrop: urcrop,
- Uring: Uring,
- uring: uring,
- urtri: urtri,
- Uscr: Uscr,
- uscr: uscr,
- utdot: utdot,
- Utilde: Utilde,
- utilde: utilde,
- utri: utri,
- utrif: utrif,
- uuarr: uuarr,
- Uuml: Uuml,
- uuml: uuml,
- uwangle: uwangle,
- vangrt: vangrt,
- varepsilon: varepsilon,
- varkappa: varkappa,
- varnothing: varnothing,
- varphi: varphi,
- varpi: varpi,
- varpropto: varpropto,
- varr: varr,
- vArr: vArr,
- varrho: varrho,
- varsigma: varsigma,
- varsubsetneq: varsubsetneq,
- varsubsetneqq: varsubsetneqq,
- varsupsetneq: varsupsetneq,
- varsupsetneqq: varsupsetneqq,
- vartheta: vartheta,
- vartriangleleft: vartriangleleft,
- vartriangleright: vartriangleright,
- vBar: vBar,
- Vbar: Vbar,
- vBarv: vBarv,
- Vcy: Vcy,
- vcy: vcy,
- vdash: vdash,
- vDash: vDash,
- Vdash: Vdash,
- VDash: VDash,
- Vdashl: Vdashl,
- veebar: veebar,
- vee: vee,
- Vee: Vee,
- veeeq: veeeq,
- vellip: vellip,
- verbar: verbar,
- Verbar: Verbar,
- vert: vert,
- Vert: Vert,
- VerticalBar: VerticalBar,
- VerticalLine: VerticalLine,
- VerticalSeparator: VerticalSeparator,
- VerticalTilde: VerticalTilde,
- VeryThinSpace: VeryThinSpace,
- Vfr: Vfr,
- vfr: vfr,
- vltri: vltri,
- vnsub: vnsub,
- vnsup: vnsup,
- Vopf: Vopf,
- vopf: vopf,
- vprop: vprop,
- vrtri: vrtri,
- Vscr: Vscr,
- vscr: vscr,
- vsubnE: vsubnE,
- vsubne: vsubne,
- vsupnE: vsupnE,
- vsupne: vsupne,
- Vvdash: Vvdash,
- vzigzag: vzigzag,
- Wcirc: Wcirc,
- wcirc: wcirc,
- wedbar: wedbar,
- wedge: wedge,
- Wedge: Wedge,
- wedgeq: wedgeq,
- weierp: weierp,
- Wfr: Wfr,
- wfr: wfr,
- Wopf: Wopf,
- wopf: wopf,
- wp: wp,
- wr: wr,
- wreath: wreath,
- Wscr: Wscr,
- wscr: wscr,
- xcap: xcap,
- xcirc: xcirc,
- xcup: xcup,
- xdtri: xdtri,
- Xfr: Xfr,
- xfr: xfr,
- xharr: xharr,
- xhArr: xhArr,
- Xi: Xi,
- xi: xi,
- xlarr: xlarr,
- xlArr: xlArr,
- xmap: xmap,
- xnis: xnis,
- xodot: xodot,
- Xopf: Xopf,
- xopf: xopf,
- xoplus: xoplus,
- xotime: xotime,
- xrarr: xrarr,
- xrArr: xrArr,
- Xscr: Xscr,
- xscr: xscr,
- xsqcup: xsqcup,
- xuplus: xuplus,
- xutri: xutri,
- xvee: xvee,
- xwedge: xwedge,
- Yacute: Yacute,
- yacute: yacute,
- YAcy: YAcy,
- yacy: yacy,
- Ycirc: Ycirc,
- ycirc: ycirc,
- Ycy: Ycy,
- ycy: ycy,
- yen: yen,
- Yfr: Yfr,
- yfr: yfr,
- YIcy: YIcy,
- yicy: yicy,
- Yopf: Yopf,
- yopf: yopf,
- Yscr: Yscr,
- yscr: yscr,
- YUcy: YUcy,
- yucy: yucy,
- yuml: yuml,
- Yuml: Yuml,
- Zacute: Zacute,
- zacute: zacute,
- Zcaron: Zcaron,
- zcaron: zcaron,
- Zcy: Zcy,
- zcy: zcy,
- Zdot: Zdot,
- zdot: zdot,
- zeetrf: zeetrf,
- ZeroWidthSpace: ZeroWidthSpace,
- Zeta: Zeta,
- zeta: zeta,
- zfr: zfr,
- Zfr: Zfr,
- ZHcy: ZHcy,
- zhcy: zhcy,
- zigrarr: zigrarr,
- zopf: zopf,
- Zopf: Zopf,
- Zscr: Zscr,
- zscr: zscr,
- zwj: zwj,
- zwnj: zwnj
- };
-
- var entities$1 = /*#__PURE__*/Object.freeze({
- __proto__: null,
- Aacute: Aacute,
- aacute: aacute,
- Abreve: Abreve,
- abreve: abreve,
- ac: ac,
- acd: acd,
- acE: acE,
- Acirc: Acirc,
- acirc: acirc,
- acute: acute,
- Acy: Acy,
- acy: acy,
- AElig: AElig,
- aelig: aelig,
- af: af,
- Afr: Afr,
- afr: afr,
- Agrave: Agrave,
- agrave: agrave,
- alefsym: alefsym,
- aleph: aleph,
- Alpha: Alpha,
- alpha: alpha,
- Amacr: Amacr,
- amacr: amacr,
- amalg: amalg,
- amp: amp,
- AMP: AMP,
- andand: andand,
- And: And,
- and: and,
- andd: andd,
- andslope: andslope,
- andv: andv,
- ang: ang,
- ange: ange,
- angle: angle,
- angmsdaa: angmsdaa,
- angmsdab: angmsdab,
- angmsdac: angmsdac,
- angmsdad: angmsdad,
- angmsdae: angmsdae,
- angmsdaf: angmsdaf,
- angmsdag: angmsdag,
- angmsdah: angmsdah,
- angmsd: angmsd,
- angrt: angrt,
- angrtvb: angrtvb,
- angrtvbd: angrtvbd,
- angsph: angsph,
- angst: angst,
- angzarr: angzarr,
- Aogon: Aogon,
- aogon: aogon,
- Aopf: Aopf,
- aopf: aopf,
- apacir: apacir,
- ap: ap,
- apE: apE,
- ape: ape,
- apid: apid,
- apos: apos,
- ApplyFunction: ApplyFunction,
- approx: approx,
- approxeq: approxeq,
- Aring: Aring,
- aring: aring,
- Ascr: Ascr,
- ascr: ascr,
- Assign: Assign,
- ast: ast,
- asymp: asymp,
- asympeq: asympeq,
- Atilde: Atilde,
- atilde: atilde,
- Auml: Auml,
- auml: auml,
- awconint: awconint,
- awint: awint,
- backcong: backcong,
- backepsilon: backepsilon,
- backprime: backprime,
- backsim: backsim,
- backsimeq: backsimeq,
- Backslash: Backslash,
- Barv: Barv,
- barvee: barvee,
- barwed: barwed,
- Barwed: Barwed,
- barwedge: barwedge,
- bbrk: bbrk,
- bbrktbrk: bbrktbrk,
- bcong: bcong,
- Bcy: Bcy,
- bcy: bcy,
- bdquo: bdquo,
- becaus: becaus,
- because: because,
- Because: Because,
- bemptyv: bemptyv,
- bepsi: bepsi,
- bernou: bernou,
- Bernoullis: Bernoullis,
- Beta: Beta,
- beta: beta,
- beth: beth,
- between: between,
- Bfr: Bfr,
- bfr: bfr,
- bigcap: bigcap,
- bigcirc: bigcirc,
- bigcup: bigcup,
- bigodot: bigodot,
- bigoplus: bigoplus,
- bigotimes: bigotimes,
- bigsqcup: bigsqcup,
- bigstar: bigstar,
- bigtriangledown: bigtriangledown,
- bigtriangleup: bigtriangleup,
- biguplus: biguplus,
- bigvee: bigvee,
- bigwedge: bigwedge,
- bkarow: bkarow,
- blacklozenge: blacklozenge,
- blacksquare: blacksquare,
- blacktriangle: blacktriangle,
- blacktriangledown: blacktriangledown,
- blacktriangleleft: blacktriangleleft,
- blacktriangleright: blacktriangleright,
- blank: blank,
- blk12: blk12,
- blk14: blk14,
- blk34: blk34,
- block: block,
- bne: bne,
- bnequiv: bnequiv,
- bNot: bNot,
- bnot: bnot,
- Bopf: Bopf,
- bopf: bopf,
- bot: bot,
- bottom: bottom,
- bowtie: bowtie,
- boxbox: boxbox,
- boxdl: boxdl,
- boxdL: boxdL,
- boxDl: boxDl,
- boxDL: boxDL,
- boxdr: boxdr,
- boxdR: boxdR,
- boxDr: boxDr,
- boxDR: boxDR,
- boxh: boxh,
- boxH: boxH,
- boxhd: boxhd,
- boxHd: boxHd,
- boxhD: boxhD,
- boxHD: boxHD,
- boxhu: boxhu,
- boxHu: boxHu,
- boxhU: boxhU,
- boxHU: boxHU,
- boxminus: boxminus,
- boxplus: boxplus,
- boxtimes: boxtimes,
- boxul: boxul,
- boxuL: boxuL,
- boxUl: boxUl,
- boxUL: boxUL,
- boxur: boxur,
- boxuR: boxuR,
- boxUr: boxUr,
- boxUR: boxUR,
- boxv: boxv,
- boxV: boxV,
- boxvh: boxvh,
- boxvH: boxvH,
- boxVh: boxVh,
- boxVH: boxVH,
- boxvl: boxvl,
- boxvL: boxvL,
- boxVl: boxVl,
- boxVL: boxVL,
- boxvr: boxvr,
- boxvR: boxvR,
- boxVr: boxVr,
- boxVR: boxVR,
- bprime: bprime,
- breve: breve,
- Breve: Breve,
- brvbar: brvbar,
- bscr: bscr,
- Bscr: Bscr,
- bsemi: bsemi,
- bsim: bsim,
- bsime: bsime,
- bsolb: bsolb,
- bsol: bsol,
- bsolhsub: bsolhsub,
- bull: bull,
- bullet: bullet,
- bump: bump,
- bumpE: bumpE,
- bumpe: bumpe,
- Bumpeq: Bumpeq,
- bumpeq: bumpeq,
- Cacute: Cacute,
- cacute: cacute,
- capand: capand,
- capbrcup: capbrcup,
- capcap: capcap,
- cap: cap,
- Cap: Cap,
- capcup: capcup,
- capdot: capdot,
- CapitalDifferentialD: CapitalDifferentialD,
- caps: caps,
- caret: caret,
- caron: caron,
- Cayleys: Cayleys,
- ccaps: ccaps,
- Ccaron: Ccaron,
- ccaron: ccaron,
- Ccedil: Ccedil,
- ccedil: ccedil,
- Ccirc: Ccirc,
- ccirc: ccirc,
- Cconint: Cconint,
- ccups: ccups,
- ccupssm: ccupssm,
- Cdot: Cdot,
- cdot: cdot,
- cedil: cedil,
- Cedilla: Cedilla,
- cemptyv: cemptyv,
- cent: cent,
- centerdot: centerdot,
- CenterDot: CenterDot,
- cfr: cfr,
- Cfr: Cfr,
- CHcy: CHcy,
- chcy: chcy,
- check: check,
- checkmark: checkmark,
- Chi: Chi,
- chi: chi,
- circ: circ,
- circeq: circeq,
- circlearrowleft: circlearrowleft,
- circlearrowright: circlearrowright,
- circledast: circledast,
- circledcirc: circledcirc,
- circleddash: circleddash,
- CircleDot: CircleDot,
- circledR: circledR,
- circledS: circledS,
- CircleMinus: CircleMinus,
- CirclePlus: CirclePlus,
- CircleTimes: CircleTimes,
- cir: cir,
- cirE: cirE,
- cire: cire,
- cirfnint: cirfnint,
- cirmid: cirmid,
- cirscir: cirscir,
- ClockwiseContourIntegral: ClockwiseContourIntegral,
- CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
- CloseCurlyQuote: CloseCurlyQuote,
- clubs: clubs,
- clubsuit: clubsuit,
- colon: colon,
- Colon: Colon,
- Colone: Colone,
- colone: colone,
- coloneq: coloneq,
- comma: comma,
- commat: commat,
- comp: comp,
- compfn: compfn,
- complement: complement,
- complexes: complexes,
- cong: cong,
- congdot: congdot,
- Congruent: Congruent,
- conint: conint,
- Conint: Conint,
- ContourIntegral: ContourIntegral,
- copf: copf,
- Copf: Copf,
- coprod: coprod,
- Coproduct: Coproduct,
- copy: copy,
- COPY: COPY,
- copysr: copysr,
- CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
- crarr: crarr,
- cross: cross,
- Cross: Cross,
- Cscr: Cscr,
- cscr: cscr,
- csub: csub,
- csube: csube,
- csup: csup,
- csupe: csupe,
- ctdot: ctdot,
- cudarrl: cudarrl,
- cudarrr: cudarrr,
- cuepr: cuepr,
- cuesc: cuesc,
- cularr: cularr,
- cularrp: cularrp,
- cupbrcap: cupbrcap,
- cupcap: cupcap,
- CupCap: CupCap,
- cup: cup,
- Cup: Cup,
- cupcup: cupcup,
- cupdot: cupdot,
- cupor: cupor,
- cups: cups,
- curarr: curarr,
- curarrm: curarrm,
- curlyeqprec: curlyeqprec,
- curlyeqsucc: curlyeqsucc,
- curlyvee: curlyvee,
- curlywedge: curlywedge,
- curren: curren,
- curvearrowleft: curvearrowleft,
- curvearrowright: curvearrowright,
- cuvee: cuvee,
- cuwed: cuwed,
- cwconint: cwconint,
- cwint: cwint,
- cylcty: cylcty,
- dagger: dagger,
- Dagger: Dagger,
- daleth: daleth,
- darr: darr,
- Darr: Darr,
- dArr: dArr,
- dash: dash,
- Dashv: Dashv,
- dashv: dashv,
- dbkarow: dbkarow,
- dblac: dblac,
- Dcaron: Dcaron,
- dcaron: dcaron,
- Dcy: Dcy,
- dcy: dcy,
- ddagger: ddagger,
- ddarr: ddarr,
- DD: DD,
- dd: dd,
- DDotrahd: DDotrahd,
- ddotseq: ddotseq,
- deg: deg,
- Del: Del,
- Delta: Delta,
- delta: delta,
- demptyv: demptyv,
- dfisht: dfisht,
- Dfr: Dfr,
- dfr: dfr,
- dHar: dHar,
- dharl: dharl,
- dharr: dharr,
- DiacriticalAcute: DiacriticalAcute,
- DiacriticalDot: DiacriticalDot,
- DiacriticalDoubleAcute: DiacriticalDoubleAcute,
- DiacriticalGrave: DiacriticalGrave,
- DiacriticalTilde: DiacriticalTilde,
- diam: diam,
- diamond: diamond,
- Diamond: Diamond,
- diamondsuit: diamondsuit,
- diams: diams,
- die: die,
- DifferentialD: DifferentialD,
- digamma: digamma,
- disin: disin,
- div: div,
- divide: divide,
- divideontimes: divideontimes,
- divonx: divonx,
- DJcy: DJcy,
- djcy: djcy,
- dlcorn: dlcorn,
- dlcrop: dlcrop,
- dollar: dollar,
- Dopf: Dopf,
- dopf: dopf,
- Dot: Dot,
- dot: dot,
- DotDot: DotDot,
- doteq: doteq,
- doteqdot: doteqdot,
- DotEqual: DotEqual,
- dotminus: dotminus,
- dotplus: dotplus,
- dotsquare: dotsquare,
- doublebarwedge: doublebarwedge,
- DoubleContourIntegral: DoubleContourIntegral,
- DoubleDot: DoubleDot,
- DoubleDownArrow: DoubleDownArrow,
- DoubleLeftArrow: DoubleLeftArrow,
- DoubleLeftRightArrow: DoubleLeftRightArrow,
- DoubleLeftTee: DoubleLeftTee,
- DoubleLongLeftArrow: DoubleLongLeftArrow,
- DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
- DoubleLongRightArrow: DoubleLongRightArrow,
- DoubleRightArrow: DoubleRightArrow,
- DoubleRightTee: DoubleRightTee,
- DoubleUpArrow: DoubleUpArrow,
- DoubleUpDownArrow: DoubleUpDownArrow,
- DoubleVerticalBar: DoubleVerticalBar,
- DownArrowBar: DownArrowBar,
- downarrow: downarrow,
- DownArrow: DownArrow,
- Downarrow: Downarrow,
- DownArrowUpArrow: DownArrowUpArrow,
- DownBreve: DownBreve,
- downdownarrows: downdownarrows,
- downharpoonleft: downharpoonleft,
- downharpoonright: downharpoonright,
- DownLeftRightVector: DownLeftRightVector,
- DownLeftTeeVector: DownLeftTeeVector,
- DownLeftVectorBar: DownLeftVectorBar,
- DownLeftVector: DownLeftVector,
- DownRightTeeVector: DownRightTeeVector,
- DownRightVectorBar: DownRightVectorBar,
- DownRightVector: DownRightVector,
- DownTeeArrow: DownTeeArrow,
- DownTee: DownTee,
- drbkarow: drbkarow,
- drcorn: drcorn,
- drcrop: drcrop,
- Dscr: Dscr,
- dscr: dscr,
- DScy: DScy,
- dscy: dscy,
- dsol: dsol,
- Dstrok: Dstrok,
- dstrok: dstrok,
- dtdot: dtdot,
- dtri: dtri,
- dtrif: dtrif,
- duarr: duarr,
- duhar: duhar,
- dwangle: dwangle,
- DZcy: DZcy,
- dzcy: dzcy,
- dzigrarr: dzigrarr,
- Eacute: Eacute,
- eacute: eacute,
- easter: easter,
- Ecaron: Ecaron,
- ecaron: ecaron,
- Ecirc: Ecirc,
- ecirc: ecirc,
- ecir: ecir,
- ecolon: ecolon,
- Ecy: Ecy,
- ecy: ecy,
- eDDot: eDDot,
- Edot: Edot,
- edot: edot,
- eDot: eDot,
- ee: ee,
- efDot: efDot,
- Efr: Efr,
- efr: efr,
- eg: eg,
- Egrave: Egrave,
- egrave: egrave,
- egs: egs,
- egsdot: egsdot,
- el: el,
- Element: Element,
- elinters: elinters,
- ell: ell,
- els: els,
- elsdot: elsdot,
- Emacr: Emacr,
- emacr: emacr,
- empty: empty,
- emptyset: emptyset,
- EmptySmallSquare: EmptySmallSquare,
- emptyv: emptyv,
- EmptyVerySmallSquare: EmptyVerySmallSquare,
- emsp13: emsp13,
- emsp14: emsp14,
- emsp: emsp,
- ENG: ENG,
- eng: eng,
- ensp: ensp,
- Eogon: Eogon,
- eogon: eogon,
- Eopf: Eopf,
- eopf: eopf,
- epar: epar,
- eparsl: eparsl,
- eplus: eplus,
- epsi: epsi,
- Epsilon: Epsilon,
- epsilon: epsilon,
- epsiv: epsiv,
- eqcirc: eqcirc,
- eqcolon: eqcolon,
- eqsim: eqsim,
- eqslantgtr: eqslantgtr,
- eqslantless: eqslantless,
- Equal: Equal,
- equals: equals,
- EqualTilde: EqualTilde,
- equest: equest,
- Equilibrium: Equilibrium,
- equiv: equiv,
- equivDD: equivDD,
- eqvparsl: eqvparsl,
- erarr: erarr,
- erDot: erDot,
- escr: escr,
- Escr: Escr,
- esdot: esdot,
- Esim: Esim,
- esim: esim,
- Eta: Eta,
- eta: eta,
- ETH: ETH,
- eth: eth,
- Euml: Euml,
- euml: euml,
- euro: euro,
- excl: excl,
- exist: exist,
- Exists: Exists,
- expectation: expectation,
- exponentiale: exponentiale,
- ExponentialE: ExponentialE,
- fallingdotseq: fallingdotseq,
- Fcy: Fcy,
- fcy: fcy,
- female: female,
- ffilig: ffilig,
- fflig: fflig,
- ffllig: ffllig,
- Ffr: Ffr,
- ffr: ffr,
- filig: filig,
- FilledSmallSquare: FilledSmallSquare,
- FilledVerySmallSquare: FilledVerySmallSquare,
- fjlig: fjlig,
- flat: flat,
- fllig: fllig,
- fltns: fltns,
- fnof: fnof,
- Fopf: Fopf,
- fopf: fopf,
- forall: forall,
- ForAll: ForAll,
- fork: fork,
- forkv: forkv,
- Fouriertrf: Fouriertrf,
- fpartint: fpartint,
- frac12: frac12,
- frac13: frac13,
- frac14: frac14,
- frac15: frac15,
- frac16: frac16,
- frac18: frac18,
- frac23: frac23,
- frac25: frac25,
- frac34: frac34,
- frac35: frac35,
- frac38: frac38,
- frac45: frac45,
- frac56: frac56,
- frac58: frac58,
- frac78: frac78,
- frasl: frasl,
- frown: frown,
- fscr: fscr,
- Fscr: Fscr,
- gacute: gacute,
- Gamma: Gamma,
- gamma: gamma,
- Gammad: Gammad,
- gammad: gammad,
- gap: gap,
- Gbreve: Gbreve,
- gbreve: gbreve,
- Gcedil: Gcedil,
- Gcirc: Gcirc,
- gcirc: gcirc,
- Gcy: Gcy,
- gcy: gcy,
- Gdot: Gdot,
- gdot: gdot,
- ge: ge,
- gE: gE,
- gEl: gEl,
- gel: gel,
- geq: geq,
- geqq: geqq,
- geqslant: geqslant,
- gescc: gescc,
- ges: ges,
- gesdot: gesdot,
- gesdoto: gesdoto,
- gesdotol: gesdotol,
- gesl: gesl,
- gesles: gesles,
- Gfr: Gfr,
- gfr: gfr,
- gg: gg,
- Gg: Gg,
- ggg: ggg,
- gimel: gimel,
- GJcy: GJcy,
- gjcy: gjcy,
- gla: gla,
- gl: gl,
- glE: glE,
- glj: glj,
- gnap: gnap,
- gnapprox: gnapprox,
- gne: gne,
- gnE: gnE,
- gneq: gneq,
- gneqq: gneqq,
- gnsim: gnsim,
- Gopf: Gopf,
- gopf: gopf,
- grave: grave,
- GreaterEqual: GreaterEqual,
- GreaterEqualLess: GreaterEqualLess,
- GreaterFullEqual: GreaterFullEqual,
- GreaterGreater: GreaterGreater,
- GreaterLess: GreaterLess,
- GreaterSlantEqual: GreaterSlantEqual,
- GreaterTilde: GreaterTilde,
- Gscr: Gscr,
- gscr: gscr,
- gsim: gsim,
- gsime: gsime,
- gsiml: gsiml,
- gtcc: gtcc,
- gtcir: gtcir,
- gt: gt,
- GT: GT,
- Gt: Gt,
- gtdot: gtdot,
- gtlPar: gtlPar,
- gtquest: gtquest,
- gtrapprox: gtrapprox,
- gtrarr: gtrarr,
- gtrdot: gtrdot,
- gtreqless: gtreqless,
- gtreqqless: gtreqqless,
- gtrless: gtrless,
- gtrsim: gtrsim,
- gvertneqq: gvertneqq,
- gvnE: gvnE,
- Hacek: Hacek,
- hairsp: hairsp,
- half: half,
- hamilt: hamilt,
- HARDcy: HARDcy,
- hardcy: hardcy,
- harrcir: harrcir,
- harr: harr,
- hArr: hArr,
- harrw: harrw,
- Hat: Hat,
- hbar: hbar,
- Hcirc: Hcirc,
- hcirc: hcirc,
- hearts: hearts,
- heartsuit: heartsuit,
- hellip: hellip,
- hercon: hercon,
- hfr: hfr,
- Hfr: Hfr,
- HilbertSpace: HilbertSpace,
- hksearow: hksearow,
- hkswarow: hkswarow,
- hoarr: hoarr,
- homtht: homtht,
- hookleftarrow: hookleftarrow,
- hookrightarrow: hookrightarrow,
- hopf: hopf,
- Hopf: Hopf,
- horbar: horbar,
- HorizontalLine: HorizontalLine,
- hscr: hscr,
- Hscr: Hscr,
- hslash: hslash,
- Hstrok: Hstrok,
- hstrok: hstrok,
- HumpDownHump: HumpDownHump,
- HumpEqual: HumpEqual,
- hybull: hybull,
- hyphen: hyphen,
- Iacute: Iacute,
- iacute: iacute,
- ic: ic,
- Icirc: Icirc,
- icirc: icirc,
- Icy: Icy,
- icy: icy,
- Idot: Idot,
- IEcy: IEcy,
- iecy: iecy,
- iexcl: iexcl,
- iff: iff,
- ifr: ifr,
- Ifr: Ifr,
- Igrave: Igrave,
- igrave: igrave,
- ii: ii,
- iiiint: iiiint,
- iiint: iiint,
- iinfin: iinfin,
- iiota: iiota,
- IJlig: IJlig,
- ijlig: ijlig,
- Imacr: Imacr,
- imacr: imacr,
- image: image,
- ImaginaryI: ImaginaryI,
- imagline: imagline,
- imagpart: imagpart,
- imath: imath,
- Im: Im,
- imof: imof,
- imped: imped,
- Implies: Implies,
- incare: incare,
- infin: infin,
- infintie: infintie,
- inodot: inodot,
- intcal: intcal,
- int: int,
- Int: Int,
- integers: integers,
- Integral: Integral,
- intercal: intercal,
- Intersection: Intersection,
- intlarhk: intlarhk,
- intprod: intprod,
- InvisibleComma: InvisibleComma,
- InvisibleTimes: InvisibleTimes,
- IOcy: IOcy,
- iocy: iocy,
- Iogon: Iogon,
- iogon: iogon,
- Iopf: Iopf,
- iopf: iopf,
- Iota: Iota,
- iota: iota,
- iprod: iprod,
- iquest: iquest,
- iscr: iscr,
- Iscr: Iscr,
- isin: isin,
- isindot: isindot,
- isinE: isinE,
- isins: isins,
- isinsv: isinsv,
- isinv: isinv,
- it: it,
- Itilde: Itilde,
- itilde: itilde,
- Iukcy: Iukcy,
- iukcy: iukcy,
- Iuml: Iuml,
- iuml: iuml,
- Jcirc: Jcirc,
- jcirc: jcirc,
- Jcy: Jcy,
- jcy: jcy,
- Jfr: Jfr,
- jfr: jfr,
- jmath: jmath,
- Jopf: Jopf,
- jopf: jopf,
- Jscr: Jscr,
- jscr: jscr,
- Jsercy: Jsercy,
- jsercy: jsercy,
- Jukcy: Jukcy,
- jukcy: jukcy,
- Kappa: Kappa,
- kappa: kappa,
- kappav: kappav,
- Kcedil: Kcedil,
- kcedil: kcedil,
- Kcy: Kcy,
- kcy: kcy,
- Kfr: Kfr,
- kfr: kfr,
- kgreen: kgreen,
- KHcy: KHcy,
- khcy: khcy,
- KJcy: KJcy,
- kjcy: kjcy,
- Kopf: Kopf,
- kopf: kopf,
- Kscr: Kscr,
- kscr: kscr,
- lAarr: lAarr,
- Lacute: Lacute,
- lacute: lacute,
- laemptyv: laemptyv,
- lagran: lagran,
- Lambda: Lambda,
- lambda: lambda,
- lang: lang,
- Lang: Lang,
- langd: langd,
- langle: langle,
- lap: lap,
- Laplacetrf: Laplacetrf,
- laquo: laquo,
- larrb: larrb,
- larrbfs: larrbfs,
- larr: larr,
- Larr: Larr,
- lArr: lArr,
- larrfs: larrfs,
- larrhk: larrhk,
- larrlp: larrlp,
- larrpl: larrpl,
- larrsim: larrsim,
- larrtl: larrtl,
- latail: latail,
- lAtail: lAtail,
- lat: lat,
- late: late,
- lates: lates,
- lbarr: lbarr,
- lBarr: lBarr,
- lbbrk: lbbrk,
- lbrace: lbrace,
- lbrack: lbrack,
- lbrke: lbrke,
- lbrksld: lbrksld,
- lbrkslu: lbrkslu,
- Lcaron: Lcaron,
- lcaron: lcaron,
- Lcedil: Lcedil,
- lcedil: lcedil,
- lceil: lceil,
- lcub: lcub,
- Lcy: Lcy,
- lcy: lcy,
- ldca: ldca,
- ldquo: ldquo,
- ldquor: ldquor,
- ldrdhar: ldrdhar,
- ldrushar: ldrushar,
- ldsh: ldsh,
- le: le,
- lE: lE,
- LeftAngleBracket: LeftAngleBracket,
- LeftArrowBar: LeftArrowBar,
- leftarrow: leftarrow,
- LeftArrow: LeftArrow,
- Leftarrow: Leftarrow,
- LeftArrowRightArrow: LeftArrowRightArrow,
- leftarrowtail: leftarrowtail,
- LeftCeiling: LeftCeiling,
- LeftDoubleBracket: LeftDoubleBracket,
- LeftDownTeeVector: LeftDownTeeVector,
- LeftDownVectorBar: LeftDownVectorBar,
- LeftDownVector: LeftDownVector,
- LeftFloor: LeftFloor,
- leftharpoondown: leftharpoondown,
- leftharpoonup: leftharpoonup,
- leftleftarrows: leftleftarrows,
- leftrightarrow: leftrightarrow,
- LeftRightArrow: LeftRightArrow,
- Leftrightarrow: Leftrightarrow,
- leftrightarrows: leftrightarrows,
- leftrightharpoons: leftrightharpoons,
- leftrightsquigarrow: leftrightsquigarrow,
- LeftRightVector: LeftRightVector,
- LeftTeeArrow: LeftTeeArrow,
- LeftTee: LeftTee,
- LeftTeeVector: LeftTeeVector,
- leftthreetimes: leftthreetimes,
- LeftTriangleBar: LeftTriangleBar,
- LeftTriangle: LeftTriangle,
- LeftTriangleEqual: LeftTriangleEqual,
- LeftUpDownVector: LeftUpDownVector,
- LeftUpTeeVector: LeftUpTeeVector,
- LeftUpVectorBar: LeftUpVectorBar,
- LeftUpVector: LeftUpVector,
- LeftVectorBar: LeftVectorBar,
- LeftVector: LeftVector,
- lEg: lEg,
- leg: leg,
- leq: leq,
- leqq: leqq,
- leqslant: leqslant,
- lescc: lescc,
- les: les,
- lesdot: lesdot,
- lesdoto: lesdoto,
- lesdotor: lesdotor,
- lesg: lesg,
- lesges: lesges,
- lessapprox: lessapprox,
- lessdot: lessdot,
- lesseqgtr: lesseqgtr,
- lesseqqgtr: lesseqqgtr,
- LessEqualGreater: LessEqualGreater,
- LessFullEqual: LessFullEqual,
- LessGreater: LessGreater,
- lessgtr: lessgtr,
- LessLess: LessLess,
- lesssim: lesssim,
- LessSlantEqual: LessSlantEqual,
- LessTilde: LessTilde,
- lfisht: lfisht,
- lfloor: lfloor,
- Lfr: Lfr,
- lfr: lfr,
- lg: lg,
- lgE: lgE,
- lHar: lHar,
- lhard: lhard,
- lharu: lharu,
- lharul: lharul,
- lhblk: lhblk,
- LJcy: LJcy,
- ljcy: ljcy,
- llarr: llarr,
- ll: ll,
- Ll: Ll,
- llcorner: llcorner,
- Lleftarrow: Lleftarrow,
- llhard: llhard,
- lltri: lltri,
- Lmidot: Lmidot,
- lmidot: lmidot,
- lmoustache: lmoustache,
- lmoust: lmoust,
- lnap: lnap,
- lnapprox: lnapprox,
- lne: lne,
- lnE: lnE,
- lneq: lneq,
- lneqq: lneqq,
- lnsim: lnsim,
- loang: loang,
- loarr: loarr,
- lobrk: lobrk,
- longleftarrow: longleftarrow,
- LongLeftArrow: LongLeftArrow,
- Longleftarrow: Longleftarrow,
- longleftrightarrow: longleftrightarrow,
- LongLeftRightArrow: LongLeftRightArrow,
- Longleftrightarrow: Longleftrightarrow,
- longmapsto: longmapsto,
- longrightarrow: longrightarrow,
- LongRightArrow: LongRightArrow,
- Longrightarrow: Longrightarrow,
- looparrowleft: looparrowleft,
- looparrowright: looparrowright,
- lopar: lopar,
- Lopf: Lopf,
- lopf: lopf,
- loplus: loplus,
- lotimes: lotimes,
- lowast: lowast,
- lowbar: lowbar,
- LowerLeftArrow: LowerLeftArrow,
- LowerRightArrow: LowerRightArrow,
- loz: loz,
- lozenge: lozenge,
- lozf: lozf,
- lpar: lpar,
- lparlt: lparlt,
- lrarr: lrarr,
- lrcorner: lrcorner,
- lrhar: lrhar,
- lrhard: lrhard,
- lrm: lrm,
- lrtri: lrtri,
- lsaquo: lsaquo,
- lscr: lscr,
- Lscr: Lscr,
- lsh: lsh,
- Lsh: Lsh,
- lsim: lsim,
- lsime: lsime,
- lsimg: lsimg,
- lsqb: lsqb,
- lsquo: lsquo,
- lsquor: lsquor,
- Lstrok: Lstrok,
- lstrok: lstrok,
- ltcc: ltcc,
- ltcir: ltcir,
- lt: lt,
- LT: LT,
- Lt: Lt,
- ltdot: ltdot,
- lthree: lthree,
- ltimes: ltimes,
- ltlarr: ltlarr,
- ltquest: ltquest,
- ltri: ltri,
- ltrie: ltrie,
- ltrif: ltrif,
- ltrPar: ltrPar,
- lurdshar: lurdshar,
- luruhar: luruhar,
- lvertneqq: lvertneqq,
- lvnE: lvnE,
- macr: macr,
- male: male,
- malt: malt,
- maltese: maltese,
- map: map,
- mapsto: mapsto,
- mapstodown: mapstodown,
- mapstoleft: mapstoleft,
- mapstoup: mapstoup,
- marker: marker,
- mcomma: mcomma,
- Mcy: Mcy,
- mcy: mcy,
- mdash: mdash,
- mDDot: mDDot,
- measuredangle: measuredangle,
- MediumSpace: MediumSpace,
- Mellintrf: Mellintrf,
- Mfr: Mfr,
- mfr: mfr,
- mho: mho,
- micro: micro,
- midast: midast,
- midcir: midcir,
- mid: mid,
- middot: middot,
- minusb: minusb,
- minus: minus,
- minusd: minusd,
- minusdu: minusdu,
- MinusPlus: MinusPlus,
- mlcp: mlcp,
- mldr: mldr,
- mnplus: mnplus,
- models: models,
- Mopf: Mopf,
- mopf: mopf,
- mp: mp,
- mscr: mscr,
- Mscr: Mscr,
- mstpos: mstpos,
- Mu: Mu,
- mu: mu,
- multimap: multimap,
- mumap: mumap,
- nabla: nabla,
- Nacute: Nacute,
- nacute: nacute,
- nang: nang,
- nap: nap,
- napE: napE,
- napid: napid,
- napos: napos,
- napprox: napprox,
- natural: natural,
- naturals: naturals,
- natur: natur,
- nbsp: nbsp,
- nbump: nbump,
- nbumpe: nbumpe,
- ncap: ncap,
- Ncaron: Ncaron,
- ncaron: ncaron,
- Ncedil: Ncedil,
- ncedil: ncedil,
- ncong: ncong,
- ncongdot: ncongdot,
- ncup: ncup,
- Ncy: Ncy,
- ncy: ncy,
- ndash: ndash,
- nearhk: nearhk,
- nearr: nearr,
- neArr: neArr,
- nearrow: nearrow,
- ne: ne,
- nedot: nedot,
- NegativeMediumSpace: NegativeMediumSpace,
- NegativeThickSpace: NegativeThickSpace,
- NegativeThinSpace: NegativeThinSpace,
- NegativeVeryThinSpace: NegativeVeryThinSpace,
- nequiv: nequiv,
- nesear: nesear,
- nesim: nesim,
- NestedGreaterGreater: NestedGreaterGreater,
- NestedLessLess: NestedLessLess,
- NewLine: NewLine,
- nexist: nexist,
- nexists: nexists,
- Nfr: Nfr,
- nfr: nfr,
- ngE: ngE,
- nge: nge,
- ngeq: ngeq,
- ngeqq: ngeqq,
- ngeqslant: ngeqslant,
- nges: nges,
- nGg: nGg,
- ngsim: ngsim,
- nGt: nGt,
- ngt: ngt,
- ngtr: ngtr,
- nGtv: nGtv,
- nharr: nharr,
- nhArr: nhArr,
- nhpar: nhpar,
- ni: ni,
- nis: nis,
- nisd: nisd,
- niv: niv,
- NJcy: NJcy,
- njcy: njcy,
- nlarr: nlarr,
- nlArr: nlArr,
- nldr: nldr,
- nlE: nlE,
- nle: nle,
- nleftarrow: nleftarrow,
- nLeftarrow: nLeftarrow,
- nleftrightarrow: nleftrightarrow,
- nLeftrightarrow: nLeftrightarrow,
- nleq: nleq,
- nleqq: nleqq,
- nleqslant: nleqslant,
- nles: nles,
- nless: nless,
- nLl: nLl,
- nlsim: nlsim,
- nLt: nLt,
- nlt: nlt,
- nltri: nltri,
- nltrie: nltrie,
- nLtv: nLtv,
- nmid: nmid,
- NoBreak: NoBreak,
- NonBreakingSpace: NonBreakingSpace,
- nopf: nopf,
- Nopf: Nopf,
- Not: Not,
- not: not,
- NotCongruent: NotCongruent,
- NotCupCap: NotCupCap,
- NotDoubleVerticalBar: NotDoubleVerticalBar,
- NotElement: NotElement,
- NotEqual: NotEqual,
- NotEqualTilde: NotEqualTilde,
- NotExists: NotExists,
- NotGreater: NotGreater,
- NotGreaterEqual: NotGreaterEqual,
- NotGreaterFullEqual: NotGreaterFullEqual,
- NotGreaterGreater: NotGreaterGreater,
- NotGreaterLess: NotGreaterLess,
- NotGreaterSlantEqual: NotGreaterSlantEqual,
- NotGreaterTilde: NotGreaterTilde,
- NotHumpDownHump: NotHumpDownHump,
- NotHumpEqual: NotHumpEqual,
- notin: notin,
- notindot: notindot,
- notinE: notinE,
- notinva: notinva,
- notinvb: notinvb,
- notinvc: notinvc,
- NotLeftTriangleBar: NotLeftTriangleBar,
- NotLeftTriangle: NotLeftTriangle,
- NotLeftTriangleEqual: NotLeftTriangleEqual,
- NotLess: NotLess,
- NotLessEqual: NotLessEqual,
- NotLessGreater: NotLessGreater,
- NotLessLess: NotLessLess,
- NotLessSlantEqual: NotLessSlantEqual,
- NotLessTilde: NotLessTilde,
- NotNestedGreaterGreater: NotNestedGreaterGreater,
- NotNestedLessLess: NotNestedLessLess,
- notni: notni,
- notniva: notniva,
- notnivb: notnivb,
- notnivc: notnivc,
- NotPrecedes: NotPrecedes,
- NotPrecedesEqual: NotPrecedesEqual,
- NotPrecedesSlantEqual: NotPrecedesSlantEqual,
- NotReverseElement: NotReverseElement,
- NotRightTriangleBar: NotRightTriangleBar,
- NotRightTriangle: NotRightTriangle,
- NotRightTriangleEqual: NotRightTriangleEqual,
- NotSquareSubset: NotSquareSubset,
- NotSquareSubsetEqual: NotSquareSubsetEqual,
- NotSquareSuperset: NotSquareSuperset,
- NotSquareSupersetEqual: NotSquareSupersetEqual,
- NotSubset: NotSubset,
- NotSubsetEqual: NotSubsetEqual,
- NotSucceeds: NotSucceeds,
- NotSucceedsEqual: NotSucceedsEqual,
- NotSucceedsSlantEqual: NotSucceedsSlantEqual,
- NotSucceedsTilde: NotSucceedsTilde,
- NotSuperset: NotSuperset,
- NotSupersetEqual: NotSupersetEqual,
- NotTilde: NotTilde,
- NotTildeEqual: NotTildeEqual,
- NotTildeFullEqual: NotTildeFullEqual,
- NotTildeTilde: NotTildeTilde,
- NotVerticalBar: NotVerticalBar,
- nparallel: nparallel,
- npar: npar,
- nparsl: nparsl,
- npart: npart,
- npolint: npolint,
- npr: npr,
- nprcue: nprcue,
- nprec: nprec,
- npreceq: npreceq,
- npre: npre,
- nrarrc: nrarrc,
- nrarr: nrarr,
- nrArr: nrArr,
- nrarrw: nrarrw,
- nrightarrow: nrightarrow,
- nRightarrow: nRightarrow,
- nrtri: nrtri,
- nrtrie: nrtrie,
- nsc: nsc,
- nsccue: nsccue,
- nsce: nsce,
- Nscr: Nscr,
- nscr: nscr,
- nshortmid: nshortmid,
- nshortparallel: nshortparallel,
- nsim: nsim,
- nsime: nsime,
- nsimeq: nsimeq,
- nsmid: nsmid,
- nspar: nspar,
- nsqsube: nsqsube,
- nsqsupe: nsqsupe,
- nsub: nsub,
- nsubE: nsubE,
- nsube: nsube,
- nsubset: nsubset,
- nsubseteq: nsubseteq,
- nsubseteqq: nsubseteqq,
- nsucc: nsucc,
- nsucceq: nsucceq,
- nsup: nsup,
- nsupE: nsupE,
- nsupe: nsupe,
- nsupset: nsupset,
- nsupseteq: nsupseteq,
- nsupseteqq: nsupseteqq,
- ntgl: ntgl,
- Ntilde: Ntilde,
- ntilde: ntilde,
- ntlg: ntlg,
- ntriangleleft: ntriangleleft,
- ntrianglelefteq: ntrianglelefteq,
- ntriangleright: ntriangleright,
- ntrianglerighteq: ntrianglerighteq,
- Nu: Nu,
- nu: nu,
- num: num,
- numero: numero,
- numsp: numsp,
- nvap: nvap,
- nvdash: nvdash,
- nvDash: nvDash,
- nVdash: nVdash,
- nVDash: nVDash,
- nvge: nvge,
- nvgt: nvgt,
- nvHarr: nvHarr,
- nvinfin: nvinfin,
- nvlArr: nvlArr,
- nvle: nvle,
- nvlt: nvlt,
- nvltrie: nvltrie,
- nvrArr: nvrArr,
- nvrtrie: nvrtrie,
- nvsim: nvsim,
- nwarhk: nwarhk,
- nwarr: nwarr,
- nwArr: nwArr,
- nwarrow: nwarrow,
- nwnear: nwnear,
- Oacute: Oacute,
- oacute: oacute,
- oast: oast,
- Ocirc: Ocirc,
- ocirc: ocirc,
- ocir: ocir,
- Ocy: Ocy,
- ocy: ocy,
- odash: odash,
- Odblac: Odblac,
- odblac: odblac,
- odiv: odiv,
- odot: odot,
- odsold: odsold,
- OElig: OElig,
- oelig: oelig,
- ofcir: ofcir,
- Ofr: Ofr,
- ofr: ofr,
- ogon: ogon,
- Ograve: Ograve,
- ograve: ograve,
- ogt: ogt,
- ohbar: ohbar,
- ohm: ohm,
- oint: oint,
- olarr: olarr,
- olcir: olcir,
- olcross: olcross,
- oline: oline,
- olt: olt,
- Omacr: Omacr,
- omacr: omacr,
- Omega: Omega,
- omega: omega,
- Omicron: Omicron,
- omicron: omicron,
- omid: omid,
- ominus: ominus,
- Oopf: Oopf,
- oopf: oopf,
- opar: opar,
- OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
- OpenCurlyQuote: OpenCurlyQuote,
- operp: operp,
- oplus: oplus,
- orarr: orarr,
- Or: Or,
- or: or,
- ord: ord,
- order: order,
- orderof: orderof,
- ordf: ordf,
- ordm: ordm,
- origof: origof,
- oror: oror,
- orslope: orslope,
- orv: orv,
- oS: oS,
- Oscr: Oscr,
- oscr: oscr,
- Oslash: Oslash,
- oslash: oslash,
- osol: osol,
- Otilde: Otilde,
- otilde: otilde,
- otimesas: otimesas,
- Otimes: Otimes,
- otimes: otimes,
- Ouml: Ouml,
- ouml: ouml,
- ovbar: ovbar,
- OverBar: OverBar,
- OverBrace: OverBrace,
- OverBracket: OverBracket,
- OverParenthesis: OverParenthesis,
- para: para,
- parallel: parallel,
- par: par,
- parsim: parsim,
- parsl: parsl,
- part: part,
- PartialD: PartialD,
- Pcy: Pcy,
- pcy: pcy,
- percnt: percnt,
- period: period,
- permil: permil,
- perp: perp,
- pertenk: pertenk,
- Pfr: Pfr,
- pfr: pfr,
- Phi: Phi,
- phi: phi,
- phiv: phiv,
- phmmat: phmmat,
- phone: phone,
- Pi: Pi,
- pi: pi,
- pitchfork: pitchfork,
- piv: piv,
- planck: planck,
- planckh: planckh,
- plankv: plankv,
- plusacir: plusacir,
- plusb: plusb,
- pluscir: pluscir,
- plus: plus,
- plusdo: plusdo,
- plusdu: plusdu,
- pluse: pluse,
- PlusMinus: PlusMinus,
- plusmn: plusmn,
- plussim: plussim,
- plustwo: plustwo,
- pm: pm,
- Poincareplane: Poincareplane,
- pointint: pointint,
- popf: popf,
- Popf: Popf,
- pound: pound,
- prap: prap,
- Pr: Pr,
- pr: pr,
- prcue: prcue,
- precapprox: precapprox,
- prec: prec,
- preccurlyeq: preccurlyeq,
- Precedes: Precedes,
- PrecedesEqual: PrecedesEqual,
- PrecedesSlantEqual: PrecedesSlantEqual,
- PrecedesTilde: PrecedesTilde,
- preceq: preceq,
- precnapprox: precnapprox,
- precneqq: precneqq,
- precnsim: precnsim,
- pre: pre,
- prE: prE,
- precsim: precsim,
- prime: prime,
- Prime: Prime,
- primes: primes,
- prnap: prnap,
- prnE: prnE,
- prnsim: prnsim,
- prod: prod,
- Product: Product,
- profalar: profalar,
- profline: profline,
- profsurf: profsurf,
- prop: prop,
- Proportional: Proportional,
- Proportion: Proportion,
- propto: propto,
- prsim: prsim,
- prurel: prurel,
- Pscr: Pscr,
- pscr: pscr,
- Psi: Psi,
- psi: psi,
- puncsp: puncsp,
- Qfr: Qfr,
- qfr: qfr,
- qint: qint,
- qopf: qopf,
- Qopf: Qopf,
- qprime: qprime,
- Qscr: Qscr,
- qscr: qscr,
- quaternions: quaternions,
- quatint: quatint,
- quest: quest,
- questeq: questeq,
- quot: quot,
- QUOT: QUOT,
- rAarr: rAarr,
- race: race,
- Racute: Racute,
- racute: racute,
- radic: radic,
- raemptyv: raemptyv,
- rang: rang,
- Rang: Rang,
- rangd: rangd,
- range: range,
- rangle: rangle,
- raquo: raquo,
- rarrap: rarrap,
- rarrb: rarrb,
- rarrbfs: rarrbfs,
- rarrc: rarrc,
- rarr: rarr,
- Rarr: Rarr,
- rArr: rArr,
- rarrfs: rarrfs,
- rarrhk: rarrhk,
- rarrlp: rarrlp,
- rarrpl: rarrpl,
- rarrsim: rarrsim,
- Rarrtl: Rarrtl,
- rarrtl: rarrtl,
- rarrw: rarrw,
- ratail: ratail,
- rAtail: rAtail,
- ratio: ratio,
- rationals: rationals,
- rbarr: rbarr,
- rBarr: rBarr,
- RBarr: RBarr,
- rbbrk: rbbrk,
- rbrace: rbrace,
- rbrack: rbrack,
- rbrke: rbrke,
- rbrksld: rbrksld,
- rbrkslu: rbrkslu,
- Rcaron: Rcaron,
- rcaron: rcaron,
- Rcedil: Rcedil,
- rcedil: rcedil,
- rceil: rceil,
- rcub: rcub,
- Rcy: Rcy,
- rcy: rcy,
- rdca: rdca,
- rdldhar: rdldhar,
- rdquo: rdquo,
- rdquor: rdquor,
- rdsh: rdsh,
- real: real,
- realine: realine,
- realpart: realpart,
- reals: reals,
- Re: Re,
- rect: rect,
- reg: reg,
- REG: REG,
- ReverseElement: ReverseElement,
- ReverseEquilibrium: ReverseEquilibrium,
- ReverseUpEquilibrium: ReverseUpEquilibrium,
- rfisht: rfisht,
- rfloor: rfloor,
- rfr: rfr,
- Rfr: Rfr,
- rHar: rHar,
- rhard: rhard,
- rharu: rharu,
- rharul: rharul,
- Rho: Rho,
- rho: rho,
- rhov: rhov,
- RightAngleBracket: RightAngleBracket,
- RightArrowBar: RightArrowBar,
- rightarrow: rightarrow,
- RightArrow: RightArrow,
- Rightarrow: Rightarrow,
- RightArrowLeftArrow: RightArrowLeftArrow,
- rightarrowtail: rightarrowtail,
- RightCeiling: RightCeiling,
- RightDoubleBracket: RightDoubleBracket,
- RightDownTeeVector: RightDownTeeVector,
- RightDownVectorBar: RightDownVectorBar,
- RightDownVector: RightDownVector,
- RightFloor: RightFloor,
- rightharpoondown: rightharpoondown,
- rightharpoonup: rightharpoonup,
- rightleftarrows: rightleftarrows,
- rightleftharpoons: rightleftharpoons,
- rightrightarrows: rightrightarrows,
- rightsquigarrow: rightsquigarrow,
- RightTeeArrow: RightTeeArrow,
- RightTee: RightTee,
- RightTeeVector: RightTeeVector,
- rightthreetimes: rightthreetimes,
- RightTriangleBar: RightTriangleBar,
- RightTriangle: RightTriangle,
- RightTriangleEqual: RightTriangleEqual,
- RightUpDownVector: RightUpDownVector,
- RightUpTeeVector: RightUpTeeVector,
- RightUpVectorBar: RightUpVectorBar,
- RightUpVector: RightUpVector,
- RightVectorBar: RightVectorBar,
- RightVector: RightVector,
- ring: ring,
- risingdotseq: risingdotseq,
- rlarr: rlarr,
- rlhar: rlhar,
- rlm: rlm,
- rmoustache: rmoustache,
- rmoust: rmoust,
- rnmid: rnmid,
- roang: roang,
- roarr: roarr,
- robrk: robrk,
- ropar: ropar,
- ropf: ropf,
- Ropf: Ropf,
- roplus: roplus,
- rotimes: rotimes,
- RoundImplies: RoundImplies,
- rpar: rpar,
- rpargt: rpargt,
- rppolint: rppolint,
- rrarr: rrarr,
- Rrightarrow: Rrightarrow,
- rsaquo: rsaquo,
- rscr: rscr,
- Rscr: Rscr,
- rsh: rsh,
- Rsh: Rsh,
- rsqb: rsqb,
- rsquo: rsquo,
- rsquor: rsquor,
- rthree: rthree,
- rtimes: rtimes,
- rtri: rtri,
- rtrie: rtrie,
- rtrif: rtrif,
- rtriltri: rtriltri,
- RuleDelayed: RuleDelayed,
- ruluhar: ruluhar,
- rx: rx,
- Sacute: Sacute,
- sacute: sacute,
- sbquo: sbquo,
- scap: scap,
- Scaron: Scaron,
- scaron: scaron,
- Sc: Sc,
- sc: sc,
- sccue: sccue,
- sce: sce,
- scE: scE,
- Scedil: Scedil,
- scedil: scedil,
- Scirc: Scirc,
- scirc: scirc,
- scnap: scnap,
- scnE: scnE,
- scnsim: scnsim,
- scpolint: scpolint,
- scsim: scsim,
- Scy: Scy,
- scy: scy,
- sdotb: sdotb,
- sdot: sdot,
- sdote: sdote,
- searhk: searhk,
- searr: searr,
- seArr: seArr,
- searrow: searrow,
- sect: sect,
- semi: semi,
- seswar: seswar,
- setminus: setminus,
- setmn: setmn,
- sext: sext,
- Sfr: Sfr,
- sfr: sfr,
- sfrown: sfrown,
- sharp: sharp,
- SHCHcy: SHCHcy,
- shchcy: shchcy,
- SHcy: SHcy,
- shcy: shcy,
- ShortDownArrow: ShortDownArrow,
- ShortLeftArrow: ShortLeftArrow,
- shortmid: shortmid,
- shortparallel: shortparallel,
- ShortRightArrow: ShortRightArrow,
- ShortUpArrow: ShortUpArrow,
- shy: shy,
- Sigma: Sigma,
- sigma: sigma,
- sigmaf: sigmaf,
- sigmav: sigmav,
- sim: sim,
- simdot: simdot,
- sime: sime,
- simeq: simeq,
- simg: simg,
- simgE: simgE,
- siml: siml,
- simlE: simlE,
- simne: simne,
- simplus: simplus,
- simrarr: simrarr,
- slarr: slarr,
- SmallCircle: SmallCircle,
- smallsetminus: smallsetminus,
- smashp: smashp,
- smeparsl: smeparsl,
- smid: smid,
- smile: smile,
- smt: smt,
- smte: smte,
- smtes: smtes,
- SOFTcy: SOFTcy,
- softcy: softcy,
- solbar: solbar,
- solb: solb,
- sol: sol,
- Sopf: Sopf,
- sopf: sopf,
- spades: spades,
- spadesuit: spadesuit,
- spar: spar,
- sqcap: sqcap,
- sqcaps: sqcaps,
- sqcup: sqcup,
- sqcups: sqcups,
- Sqrt: Sqrt,
- sqsub: sqsub,
- sqsube: sqsube,
- sqsubset: sqsubset,
- sqsubseteq: sqsubseteq,
- sqsup: sqsup,
- sqsupe: sqsupe,
- sqsupset: sqsupset,
- sqsupseteq: sqsupseteq,
- square: square,
- Square: Square,
- SquareIntersection: SquareIntersection,
- SquareSubset: SquareSubset,
- SquareSubsetEqual: SquareSubsetEqual,
- SquareSuperset: SquareSuperset,
- SquareSupersetEqual: SquareSupersetEqual,
- SquareUnion: SquareUnion,
- squarf: squarf,
- squ: squ,
- squf: squf,
- srarr: srarr,
- Sscr: Sscr,
- sscr: sscr,
- ssetmn: ssetmn,
- ssmile: ssmile,
- sstarf: sstarf,
- Star: Star,
- star: star,
- starf: starf,
- straightepsilon: straightepsilon,
- straightphi: straightphi,
- strns: strns,
- sub: sub,
- Sub: Sub,
- subdot: subdot,
- subE: subE,
- sube: sube,
- subedot: subedot,
- submult: submult,
- subnE: subnE,
- subne: subne,
- subplus: subplus,
- subrarr: subrarr,
- subset: subset,
- Subset: Subset,
- subseteq: subseteq,
- subseteqq: subseteqq,
- SubsetEqual: SubsetEqual,
- subsetneq: subsetneq,
- subsetneqq: subsetneqq,
- subsim: subsim,
- subsub: subsub,
- subsup: subsup,
- succapprox: succapprox,
- succ: succ,
- succcurlyeq: succcurlyeq,
- Succeeds: Succeeds,
- SucceedsEqual: SucceedsEqual,
- SucceedsSlantEqual: SucceedsSlantEqual,
- SucceedsTilde: SucceedsTilde,
- succeq: succeq,
- succnapprox: succnapprox,
- succneqq: succneqq,
- succnsim: succnsim,
- succsim: succsim,
- SuchThat: SuchThat,
- sum: sum,
- Sum: Sum,
- sung: sung,
- sup1: sup1,
- sup2: sup2,
- sup3: sup3,
- sup: sup,
- Sup: Sup,
- supdot: supdot,
- supdsub: supdsub,
- supE: supE,
- supe: supe,
- supedot: supedot,
- Superset: Superset,
- SupersetEqual: SupersetEqual,
- suphsol: suphsol,
- suphsub: suphsub,
- suplarr: suplarr,
- supmult: supmult,
- supnE: supnE,
- supne: supne,
- supplus: supplus,
- supset: supset,
- Supset: Supset,
- supseteq: supseteq,
- supseteqq: supseteqq,
- supsetneq: supsetneq,
- supsetneqq: supsetneqq,
- supsim: supsim,
- supsub: supsub,
- supsup: supsup,
- swarhk: swarhk,
- swarr: swarr,
- swArr: swArr,
- swarrow: swarrow,
- swnwar: swnwar,
- szlig: szlig,
- Tab: Tab,
- target: target,
- Tau: Tau,
- tau: tau,
- tbrk: tbrk,
- Tcaron: Tcaron,
- tcaron: tcaron,
- Tcedil: Tcedil,
- tcedil: tcedil,
- Tcy: Tcy,
- tcy: tcy,
- tdot: tdot,
- telrec: telrec,
- Tfr: Tfr,
- tfr: tfr,
- there4: there4,
- therefore: therefore,
- Therefore: Therefore,
- Theta: Theta,
- theta: theta,
- thetasym: thetasym,
- thetav: thetav,
- thickapprox: thickapprox,
- thicksim: thicksim,
- ThickSpace: ThickSpace,
- ThinSpace: ThinSpace,
- thinsp: thinsp,
- thkap: thkap,
- thksim: thksim,
- THORN: THORN,
- thorn: thorn,
- tilde: tilde,
- Tilde: Tilde,
- TildeEqual: TildeEqual,
- TildeFullEqual: TildeFullEqual,
- TildeTilde: TildeTilde,
- timesbar: timesbar,
- timesb: timesb,
- times: times,
- timesd: timesd,
- tint: tint,
- toea: toea,
- topbot: topbot,
- topcir: topcir,
- top: top,
- Topf: Topf,
- topf: topf,
- topfork: topfork,
- tosa: tosa,
- tprime: tprime,
- trade: trade,
- TRADE: TRADE,
- triangle: triangle,
- triangledown: triangledown,
- triangleleft: triangleleft,
- trianglelefteq: trianglelefteq,
- triangleq: triangleq,
- triangleright: triangleright,
- trianglerighteq: trianglerighteq,
- tridot: tridot,
- trie: trie,
- triminus: triminus,
- TripleDot: TripleDot,
- triplus: triplus,
- trisb: trisb,
- tritime: tritime,
- trpezium: trpezium,
- Tscr: Tscr,
- tscr: tscr,
- TScy: TScy,
- tscy: tscy,
- TSHcy: TSHcy,
- tshcy: tshcy,
- Tstrok: Tstrok,
- tstrok: tstrok,
- twixt: twixt,
- twoheadleftarrow: twoheadleftarrow,
- twoheadrightarrow: twoheadrightarrow,
- Uacute: Uacute,
- uacute: uacute,
- uarr: uarr,
- Uarr: Uarr,
- uArr: uArr,
- Uarrocir: Uarrocir,
- Ubrcy: Ubrcy,
- ubrcy: ubrcy,
- Ubreve: Ubreve,
- ubreve: ubreve,
- Ucirc: Ucirc,
- ucirc: ucirc,
- Ucy: Ucy,
- ucy: ucy,
- udarr: udarr,
- Udblac: Udblac,
- udblac: udblac,
- udhar: udhar,
- ufisht: ufisht,
- Ufr: Ufr,
- ufr: ufr,
- Ugrave: Ugrave,
- ugrave: ugrave,
- uHar: uHar,
- uharl: uharl,
- uharr: uharr,
- uhblk: uhblk,
- ulcorn: ulcorn,
- ulcorner: ulcorner,
- ulcrop: ulcrop,
- ultri: ultri,
- Umacr: Umacr,
- umacr: umacr,
- uml: uml,
- UnderBar: UnderBar,
- UnderBrace: UnderBrace,
- UnderBracket: UnderBracket,
- UnderParenthesis: UnderParenthesis,
- Union: Union,
- UnionPlus: UnionPlus,
- Uogon: Uogon,
- uogon: uogon,
- Uopf: Uopf,
- uopf: uopf,
- UpArrowBar: UpArrowBar,
- uparrow: uparrow,
- UpArrow: UpArrow,
- Uparrow: Uparrow,
- UpArrowDownArrow: UpArrowDownArrow,
- updownarrow: updownarrow,
- UpDownArrow: UpDownArrow,
- Updownarrow: Updownarrow,
- UpEquilibrium: UpEquilibrium,
- upharpoonleft: upharpoonleft,
- upharpoonright: upharpoonright,
- uplus: uplus,
- UpperLeftArrow: UpperLeftArrow,
- UpperRightArrow: UpperRightArrow,
- upsi: upsi,
- Upsi: Upsi,
- upsih: upsih,
- Upsilon: Upsilon,
- upsilon: upsilon,
- UpTeeArrow: UpTeeArrow,
- UpTee: UpTee,
- upuparrows: upuparrows,
- urcorn: urcorn,
- urcorner: urcorner,
- urcrop: urcrop,
- Uring: Uring,
- uring: uring,
- urtri: urtri,
- Uscr: Uscr,
- uscr: uscr,
- utdot: utdot,
- Utilde: Utilde,
- utilde: utilde,
- utri: utri,
- utrif: utrif,
- uuarr: uuarr,
- Uuml: Uuml,
- uuml: uuml,
- uwangle: uwangle,
- vangrt: vangrt,
- varepsilon: varepsilon,
- varkappa: varkappa,
- varnothing: varnothing,
- varphi: varphi,
- varpi: varpi,
- varpropto: varpropto,
- varr: varr,
- vArr: vArr,
- varrho: varrho,
- varsigma: varsigma,
- varsubsetneq: varsubsetneq,
- varsubsetneqq: varsubsetneqq,
- varsupsetneq: varsupsetneq,
- varsupsetneqq: varsupsetneqq,
- vartheta: vartheta,
- vartriangleleft: vartriangleleft,
- vartriangleright: vartriangleright,
- vBar: vBar,
- Vbar: Vbar,
- vBarv: vBarv,
- Vcy: Vcy,
- vcy: vcy,
- vdash: vdash,
- vDash: vDash,
- Vdash: Vdash,
- VDash: VDash,
- Vdashl: Vdashl,
- veebar: veebar,
- vee: vee,
- Vee: Vee,
- veeeq: veeeq,
- vellip: vellip,
- verbar: verbar,
- Verbar: Verbar,
- vert: vert,
- Vert: Vert,
- VerticalBar: VerticalBar,
- VerticalLine: VerticalLine,
- VerticalSeparator: VerticalSeparator,
- VerticalTilde: VerticalTilde,
- VeryThinSpace: VeryThinSpace,
- Vfr: Vfr,
- vfr: vfr,
- vltri: vltri,
- vnsub: vnsub,
- vnsup: vnsup,
- Vopf: Vopf,
- vopf: vopf,
- vprop: vprop,
- vrtri: vrtri,
- Vscr: Vscr,
- vscr: vscr,
- vsubnE: vsubnE,
- vsubne: vsubne,
- vsupnE: vsupnE,
- vsupne: vsupne,
- Vvdash: Vvdash,
- vzigzag: vzigzag,
- Wcirc: Wcirc,
- wcirc: wcirc,
- wedbar: wedbar,
- wedge: wedge,
- Wedge: Wedge,
- wedgeq: wedgeq,
- weierp: weierp,
- Wfr: Wfr,
- wfr: wfr,
- Wopf: Wopf,
- wopf: wopf,
- wp: wp,
- wr: wr,
- wreath: wreath,
- Wscr: Wscr,
- wscr: wscr,
- xcap: xcap,
- xcirc: xcirc,
- xcup: xcup,
- xdtri: xdtri,
- Xfr: Xfr,
- xfr: xfr,
- xharr: xharr,
- xhArr: xhArr,
- Xi: Xi,
- xi: xi,
- xlarr: xlarr,
- xlArr: xlArr,
- xmap: xmap,
- xnis: xnis,
- xodot: xodot,
- Xopf: Xopf,
- xopf: xopf,
- xoplus: xoplus,
- xotime: xotime,
- xrarr: xrarr,
- xrArr: xrArr,
- Xscr: Xscr,
- xscr: xscr,
- xsqcup: xsqcup,
- xuplus: xuplus,
- xutri: xutri,
- xvee: xvee,
- xwedge: xwedge,
- Yacute: Yacute,
- yacute: yacute,
- YAcy: YAcy,
- yacy: yacy,
- Ycirc: Ycirc,
- ycirc: ycirc,
- Ycy: Ycy,
- ycy: ycy,
- yen: yen,
- Yfr: Yfr,
- yfr: yfr,
- YIcy: YIcy,
- yicy: yicy,
- Yopf: Yopf,
- yopf: yopf,
- Yscr: Yscr,
- yscr: yscr,
- YUcy: YUcy,
- yucy: yucy,
- yuml: yuml,
- Yuml: Yuml,
- Zacute: Zacute,
- zacute: zacute,
- Zcaron: Zcaron,
- zcaron: zcaron,
- Zcy: Zcy,
- zcy: zcy,
- Zdot: Zdot,
- zdot: zdot,
- zeetrf: zeetrf,
- ZeroWidthSpace: ZeroWidthSpace,
- Zeta: Zeta,
- zeta: zeta,
- zfr: zfr,
- Zfr: Zfr,
- ZHcy: ZHcy,
- zhcy: zhcy,
- zigrarr: zigrarr,
- zopf: zopf,
- Zopf: Zopf,
- Zscr: Zscr,
- zscr: zscr,
- zwj: zwj,
- zwnj: zwnj,
- 'default': entities
- });
-
- var Aacute$1 = "Á";
- var aacute$1 = "á";
- var Acirc$1 = "Â";
- var acirc$1 = "â";
- var acute$1 = "´";
- var AElig$1 = "Æ";
- var aelig$1 = "æ";
- var Agrave$1 = "À";
- var agrave$1 = "à";
- var amp$1 = "&";
- var AMP$1 = "&";
- var Aring$1 = "Å";
- var aring$1 = "å";
- var Atilde$1 = "Ã";
- var atilde$1 = "ã";
- var Auml$1 = "Ä";
- var auml$1 = "ä";
- var brvbar$1 = "¦";
- var Ccedil$1 = "Ç";
- var ccedil$1 = "ç";
- var cedil$1 = "¸";
- var cent$1 = "¢";
- var copy$1 = "©";
- var COPY$1 = "©";
- var curren$1 = "¤";
- var deg$1 = "°";
- var divide$1 = "÷";
- var Eacute$1 = "É";
- var eacute$1 = "é";
- var Ecirc$1 = "Ê";
- var ecirc$1 = "ê";
- var Egrave$1 = "È";
- var egrave$1 = "è";
- var ETH$1 = "Ð";
- var eth$1 = "ð";
- var Euml$1 = "Ë";
- var euml$1 = "ë";
- var frac12$1 = "½";
- var frac14$1 = "¼";
- var frac34$1 = "¾";
- var gt$1 = ">";
- var GT$1 = ">";
- var Iacute$1 = "Í";
- var iacute$1 = "í";
- var Icirc$1 = "Î";
- var icirc$1 = "î";
- var iexcl$1 = "¡";
- var Igrave$1 = "Ì";
- var igrave$1 = "ì";
- var iquest$1 = "¿";
- var Iuml$1 = "Ï";
- var iuml$1 = "ï";
- var laquo$1 = "«";
- var lt$1 = "<";
- var LT$1 = "<";
- var macr$1 = "¯";
- var micro$1 = "µ";
- var middot$1 = "·";
- var nbsp$1 = " ";
- var not$1 = "¬";
- var Ntilde$1 = "Ñ";
- var ntilde$1 = "ñ";
- var Oacute$1 = "Ó";
- var oacute$1 = "ó";
- var Ocirc$1 = "Ô";
- var ocirc$1 = "ô";
- var Ograve$1 = "Ò";
- var ograve$1 = "ò";
- var ordf$1 = "ª";
- var ordm$1 = "º";
- var Oslash$1 = "Ø";
- var oslash$1 = "ø";
- var Otilde$1 = "Õ";
- var otilde$1 = "õ";
- var Ouml$1 = "Ö";
- var ouml$1 = "ö";
- var para$1 = "¶";
- var plusmn$1 = "±";
- var pound$1 = "£";
- var quot$1 = "\"";
- var QUOT$1 = "\"";
- var raquo$1 = "»";
- var reg$1 = "®";
- var REG$1 = "®";
- var sect$1 = "§";
- var shy$1 = "";
- var sup1$1 = "¹";
- var sup2$1 = "²";
- var sup3$1 = "³";
- var szlig$1 = "ß";
- var THORN$1 = "Þ";
- var thorn$1 = "þ";
- var times$1 = "×";
- var Uacute$1 = "Ú";
- var uacute$1 = "ú";
- var Ucirc$1 = "Û";
- var ucirc$1 = "û";
- var Ugrave$1 = "Ù";
- var ugrave$1 = "ù";
- var uml$1 = "¨";
- var Uuml$1 = "Ü";
- var uuml$1 = "ü";
- var Yacute$1 = "Ý";
- var yacute$1 = "ý";
- var yen$1 = "¥";
- var yuml$1 = "ÿ";
- var legacy = {
- Aacute: Aacute$1,
- aacute: aacute$1,
- Acirc: Acirc$1,
- acirc: acirc$1,
- acute: acute$1,
- AElig: AElig$1,
- aelig: aelig$1,
- Agrave: Agrave$1,
- agrave: agrave$1,
- amp: amp$1,
- AMP: AMP$1,
- Aring: Aring$1,
- aring: aring$1,
- Atilde: Atilde$1,
- atilde: atilde$1,
- Auml: Auml$1,
- auml: auml$1,
- brvbar: brvbar$1,
- Ccedil: Ccedil$1,
- ccedil: ccedil$1,
- cedil: cedil$1,
- cent: cent$1,
- copy: copy$1,
- COPY: COPY$1,
- curren: curren$1,
- deg: deg$1,
- divide: divide$1,
- Eacute: Eacute$1,
- eacute: eacute$1,
- Ecirc: Ecirc$1,
- ecirc: ecirc$1,
- Egrave: Egrave$1,
- egrave: egrave$1,
- ETH: ETH$1,
- eth: eth$1,
- Euml: Euml$1,
- euml: euml$1,
- frac12: frac12$1,
- frac14: frac14$1,
- frac34: frac34$1,
- gt: gt$1,
- GT: GT$1,
- Iacute: Iacute$1,
- iacute: iacute$1,
- Icirc: Icirc$1,
- icirc: icirc$1,
- iexcl: iexcl$1,
- Igrave: Igrave$1,
- igrave: igrave$1,
- iquest: iquest$1,
- Iuml: Iuml$1,
- iuml: iuml$1,
- laquo: laquo$1,
- lt: lt$1,
- LT: LT$1,
- macr: macr$1,
- micro: micro$1,
- middot: middot$1,
- nbsp: nbsp$1,
- not: not$1,
- Ntilde: Ntilde$1,
- ntilde: ntilde$1,
- Oacute: Oacute$1,
- oacute: oacute$1,
- Ocirc: Ocirc$1,
- ocirc: ocirc$1,
- Ograve: Ograve$1,
- ograve: ograve$1,
- ordf: ordf$1,
- ordm: ordm$1,
- Oslash: Oslash$1,
- oslash: oslash$1,
- Otilde: Otilde$1,
- otilde: otilde$1,
- Ouml: Ouml$1,
- ouml: ouml$1,
- para: para$1,
- plusmn: plusmn$1,
- pound: pound$1,
- quot: quot$1,
- QUOT: QUOT$1,
- raquo: raquo$1,
- reg: reg$1,
- REG: REG$1,
- sect: sect$1,
- shy: shy$1,
- sup1: sup1$1,
- sup2: sup2$1,
- sup3: sup3$1,
- szlig: szlig$1,
- THORN: THORN$1,
- thorn: thorn$1,
- times: times$1,
- Uacute: Uacute$1,
- uacute: uacute$1,
- Ucirc: Ucirc$1,
- ucirc: ucirc$1,
- Ugrave: Ugrave$1,
- ugrave: ugrave$1,
- uml: uml$1,
- Uuml: Uuml$1,
- uuml: uuml$1,
- Yacute: Yacute$1,
- yacute: yacute$1,
- yen: yen$1,
- yuml: yuml$1
- };
-
- var legacy$1 = /*#__PURE__*/Object.freeze({
- __proto__: null,
- Aacute: Aacute$1,
- aacute: aacute$1,
- Acirc: Acirc$1,
- acirc: acirc$1,
- acute: acute$1,
- AElig: AElig$1,
- aelig: aelig$1,
- Agrave: Agrave$1,
- agrave: agrave$1,
- amp: amp$1,
- AMP: AMP$1,
- Aring: Aring$1,
- aring: aring$1,
- Atilde: Atilde$1,
- atilde: atilde$1,
- Auml: Auml$1,
- auml: auml$1,
- brvbar: brvbar$1,
- Ccedil: Ccedil$1,
- ccedil: ccedil$1,
- cedil: cedil$1,
- cent: cent$1,
- copy: copy$1,
- COPY: COPY$1,
- curren: curren$1,
- deg: deg$1,
- divide: divide$1,
- Eacute: Eacute$1,
- eacute: eacute$1,
- Ecirc: Ecirc$1,
- ecirc: ecirc$1,
- Egrave: Egrave$1,
- egrave: egrave$1,
- ETH: ETH$1,
- eth: eth$1,
- Euml: Euml$1,
- euml: euml$1,
- frac12: frac12$1,
- frac14: frac14$1,
- frac34: frac34$1,
- gt: gt$1,
- GT: GT$1,
- Iacute: Iacute$1,
- iacute: iacute$1,
- Icirc: Icirc$1,
- icirc: icirc$1,
- iexcl: iexcl$1,
- Igrave: Igrave$1,
- igrave: igrave$1,
- iquest: iquest$1,
- Iuml: Iuml$1,
- iuml: iuml$1,
- laquo: laquo$1,
- lt: lt$1,
- LT: LT$1,
- macr: macr$1,
- micro: micro$1,
- middot: middot$1,
- nbsp: nbsp$1,
- not: not$1,
- Ntilde: Ntilde$1,
- ntilde: ntilde$1,
- Oacute: Oacute$1,
- oacute: oacute$1,
- Ocirc: Ocirc$1,
- ocirc: ocirc$1,
- Ograve: Ograve$1,
- ograve: ograve$1,
- ordf: ordf$1,
- ordm: ordm$1,
- Oslash: Oslash$1,
- oslash: oslash$1,
- Otilde: Otilde$1,
- otilde: otilde$1,
- Ouml: Ouml$1,
- ouml: ouml$1,
- para: para$1,
- plusmn: plusmn$1,
- pound: pound$1,
- quot: quot$1,
- QUOT: QUOT$1,
- raquo: raquo$1,
- reg: reg$1,
- REG: REG$1,
- sect: sect$1,
- shy: shy$1,
- sup1: sup1$1,
- sup2: sup2$1,
- sup3: sup3$1,
- szlig: szlig$1,
- THORN: THORN$1,
- thorn: thorn$1,
- times: times$1,
- Uacute: Uacute$1,
- uacute: uacute$1,
- Ucirc: Ucirc$1,
- ucirc: ucirc$1,
- Ugrave: Ugrave$1,
- ugrave: ugrave$1,
- uml: uml$1,
- Uuml: Uuml$1,
- uuml: uuml$1,
- Yacute: Yacute$1,
- yacute: yacute$1,
- yen: yen$1,
- yuml: yuml$1,
- 'default': legacy
- });
-
- var amp$2 = "&";
- var apos$1 = "'";
- var gt$2 = ">";
- var lt$2 = "<";
- var quot$2 = "\"";
- var xml = {
- amp: amp$2,
- apos: apos$1,
- gt: gt$2,
- lt: lt$2,
- quot: quot$2
- };
-
- var xml$1 = /*#__PURE__*/Object.freeze({
- __proto__: null,
- amp: amp$2,
- apos: apos$1,
- gt: gt$2,
- lt: lt$2,
- quot: quot$2,
- 'default': xml
- });
-
- var decode = {
- "0": 65533,
- "128": 8364,
- "130": 8218,
- "131": 402,
- "132": 8222,
- "133": 8230,
- "134": 8224,
- "135": 8225,
- "136": 710,
- "137": 8240,
- "138": 352,
- "139": 8249,
- "140": 338,
- "142": 381,
- "145": 8216,
- "146": 8217,
- "147": 8220,
- "148": 8221,
- "149": 8226,
- "150": 8211,
- "151": 8212,
- "152": 732,
- "153": 8482,
- "154": 353,
- "155": 8250,
- "156": 339,
- "158": 382,
- "159": 376
- };
-
- var decode$1 = /*#__PURE__*/Object.freeze({
- __proto__: null,
- 'default': decode
- });
-
- var require$$0 = getCjsExportFromNamespace(decode$1);
-
- var decode_codepoint = createCommonjsModule(function (module, exports) {
- var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var decode_json_1 = __importDefault(require$$0);
- // modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
- function decodeCodePoint(codePoint) {
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
- return "\uFFFD";
- }
- if (codePoint in decode_json_1.default) {
- // @ts-ignore
- codePoint = decode_json_1.default[codePoint];
- }
- var output = "";
- if (codePoint > 0xffff) {
- codePoint -= 0x10000;
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
- codePoint = 0xdc00 | (codePoint & 0x3ff);
- }
- output += String.fromCharCode(codePoint);
- return output;
- }
- exports.default = decodeCodePoint;
- });
-
- unwrapExports(decode_codepoint);
-
- var require$$1 = getCjsExportFromNamespace(entities$1);
-
- var require$$1$1 = getCjsExportFromNamespace(legacy$1);
-
- var require$$0$1 = getCjsExportFromNamespace(xml$1);
-
- var decode$2 = createCommonjsModule(function (module, exports) {
- var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var entities_json_1 = __importDefault(require$$1);
- var legacy_json_1 = __importDefault(require$$1$1);
- var xml_json_1 = __importDefault(require$$0$1);
- var decode_codepoint_1 = __importDefault(decode_codepoint);
- exports.decodeXML = getStrictDecoder(xml_json_1.default);
- exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);
- function getStrictDecoder(map) {
- var keys = Object.keys(map).join("|");
- var replace = getReplacer(map);
- keys += "|#[xX][\\da-fA-F]+|#\\d+";
- var re = new RegExp("&(?:" + keys + ");", "g");
- return function (str) { return String(str).replace(re, replace); };
- }
- var sorter = function (a, b) { return (a < b ? 1 : -1); };
- exports.decodeHTML = (function () {
- var legacy = Object.keys(legacy_json_1.default).sort(sorter);
- var keys = Object.keys(entities_json_1.default).sort(sorter);
- for (var i = 0, j = 0; i < keys.length; i++) {
- if (legacy[j] === keys[i]) {
- keys[i] += ";?";
- j++;
- }
- else {
- keys[i] += ";";
- }
- }
- var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
- var replace = getReplacer(entities_json_1.default);
- function replacer(str) {
- if (str.substr(-1) !== ";")
- str += ";";
- return replace(str);
- }
- //TODO consider creating a merged map
- return function (str) {
- return String(str).replace(re, replacer);
- };
- })();
- function getReplacer(map) {
- return function replace(str) {
- if (str.charAt(1) === "#") {
- if (str.charAt(2) === "X" || str.charAt(2) === "x") {
- return decode_codepoint_1.default(parseInt(str.substr(3), 16));
- }
- return decode_codepoint_1.default(parseInt(str.substr(2), 10));
- }
- return map[str.slice(1, -1)];
- };
- }
- });
-
- unwrapExports(decode$2);
- var decode_1 = decode$2.decodeXML;
- var decode_2 = decode$2.decodeHTMLStrict;
- var decode_3 = decode$2.decodeHTML;
-
- var encode$1 = createCommonjsModule(function (module, exports) {
- var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var xml_json_1 = __importDefault(require$$0$1);
- var inverseXML = getInverseObj(xml_json_1.default);
- var xmlReplacer = getInverseReplacer(inverseXML);
- exports.encodeXML = getInverse(inverseXML, xmlReplacer);
- var entities_json_1 = __importDefault(require$$1);
- var inverseHTML = getInverseObj(entities_json_1.default);
- var htmlReplacer = getInverseReplacer(inverseHTML);
- exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
- function getInverseObj(obj) {
- return Object.keys(obj)
- .sort()
- .reduce(function (inverse, name) {
- inverse[obj[name]] = "&" + name + ";";
- return inverse;
- }, {});
- }
- function getInverseReplacer(inverse) {
- var single = [];
- var multiple = [];
- Object.keys(inverse).forEach(function (k) {
- return k.length === 1
- ? // Add value to single array
- single.push("\\" + k)
- : // Add value to multiple array
- multiple.push(k);
- });
- //TODO add ranges
- multiple.unshift("[" + single.join("") + "]");
- return new RegExp(multiple.join("|"), "g");
- }
- var reNonASCII = /[^\0-\x7F]/g;
- var reAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
- function singleCharReplacer(c) {
- return "" + c
- .charCodeAt(0)
- .toString(16)
- .toUpperCase() + ";";
- }
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
- function astralReplacer(c, _) {
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
- var high = c.charCodeAt(0);
- var low = c.charCodeAt(1);
- var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;
- return "" + codePoint.toString(16).toUpperCase() + ";";
- }
- function getInverse(inverse, re) {
- return function (data) {
- return data
- .replace(re, function (name) { return inverse[name]; })
- .replace(reAstralSymbols, astralReplacer)
- .replace(reNonASCII, singleCharReplacer);
- };
- }
- var reXmlChars = getInverseReplacer(inverseXML);
- function escape(data) {
- return data
- .replace(reXmlChars, singleCharReplacer)
- .replace(reAstralSymbols, astralReplacer)
- .replace(reNonASCII, singleCharReplacer);
- }
- exports.escape = escape;
- });
-
- unwrapExports(encode$1);
- var encode_1$1 = encode$1.encodeXML;
- var encode_2 = encode$1.encodeHTML;
- var encode_3 = encode$1.escape;
-
- var lib = createCommonjsModule(function (module, exports) {
- Object.defineProperty(exports, "__esModule", { value: true });
-
-
- function decode(data, level) {
- return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTML)(data);
- }
- exports.decode = decode;
- function decodeStrict(data, level) {
- return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTMLStrict)(data);
- }
- exports.decodeStrict = decodeStrict;
- function encode(data, level) {
- return (!level || level <= 0 ? encode$1.encodeXML : encode$1.encodeHTML)(data);
- }
- exports.encode = encode;
- var encode_2 = encode$1;
- exports.encodeXML = encode_2.encodeXML;
- exports.encodeHTML = encode_2.encodeHTML;
- exports.escape = encode_2.escape;
- // Legacy aliases
- exports.encodeHTML4 = encode_2.encodeHTML;
- exports.encodeHTML5 = encode_2.encodeHTML;
- var decode_2 = decode$2;
- exports.decodeXML = decode_2.decodeXML;
- exports.decodeHTML = decode_2.decodeHTML;
- exports.decodeHTMLStrict = decode_2.decodeHTMLStrict;
- // Legacy aliases
- exports.decodeHTML4 = decode_2.decodeHTML;
- exports.decodeHTML5 = decode_2.decodeHTML;
- exports.decodeHTML4Strict = decode_2.decodeHTMLStrict;
- exports.decodeHTML5Strict = decode_2.decodeHTMLStrict;
- exports.decodeXMLStrict = decode_2.decodeXML;
- });
-
- unwrapExports(lib);
- var lib_1 = lib.decode;
- var lib_2 = lib.decodeStrict;
- var lib_3 = lib.encode;
- var lib_4 = lib.encodeXML;
- var lib_5 = lib.encodeHTML;
- var lib_6 = lib.escape;
- var lib_7 = lib.encodeHTML4;
- var lib_8 = lib.encodeHTML5;
- var lib_9 = lib.decodeXML;
- var lib_10 = lib.decodeHTML;
- var lib_11 = lib.decodeHTMLStrict;
- var lib_12 = lib.decodeHTML4;
- var lib_13 = lib.decodeHTML5;
- var lib_14 = lib.decodeHTML4Strict;
- var lib_15 = lib.decodeHTML5Strict;
- var lib_16 = lib.decodeXMLStrict;
-
- var C_BACKSLASH = 92;
-
- var ENTITY = "&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});";
-
- var TAGNAME = "[A-Za-z][A-Za-z0-9-]*";
- var ATTRIBUTENAME = "[a-zA-Z_:][a-zA-Z0-9:._-]*";
- var UNQUOTEDVALUE = "[^\"'=<>`\\x00-\\x20]+";
- var SINGLEQUOTEDVALUE = "'[^']*'";
- var DOUBLEQUOTEDVALUE = '"[^"]*"';
- var ATTRIBUTEVALUE =
- "(?:" +
- UNQUOTEDVALUE +
- "|" +
- SINGLEQUOTEDVALUE +
- "|" +
- DOUBLEQUOTEDVALUE +
- ")";
- var ATTRIBUTEVALUESPEC = "(?:" + "\\s*=" + "\\s*" + ATTRIBUTEVALUE + ")";
- var ATTRIBUTE = "(?:" + "\\s+" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + "?)";
- var OPENTAG = "<" + TAGNAME + ATTRIBUTE + "*" + "\\s*/?>";
- var CLOSETAG = "" + TAGNAME + "\\s*[>]";
- var HTMLCOMMENT = "|";
- var PROCESSINGINSTRUCTION = "[<][?][\\s\\S]*?[?][>]";
- var DECLARATION = "]*>";
- var CDATA = "";
- var HTMLTAG =
- "(?:" +
- OPENTAG +
- "|" +
- CLOSETAG +
- "|" +
- HTMLCOMMENT +
- "|" +
- PROCESSINGINSTRUCTION +
- "|" +
- DECLARATION +
- "|" +
- CDATA +
- ")";
- var reHtmlTag = new RegExp("^" + HTMLTAG);
-
- var reBackslashOrAmp = /[\\&]/;
-
- var ESCAPABLE = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]";
-
- var reEntityOrEscapedChar = new RegExp("\\\\" + ESCAPABLE + "|" + ENTITY, "gi");
-
- var XMLSPECIAL = '[&<>"]';
-
- var reXmlSpecial = new RegExp(XMLSPECIAL, "g");
-
- var unescapeChar = function(s) {
- if (s.charCodeAt(0) === C_BACKSLASH) {
- return s.charAt(1);
- } else {
- return lib_10(s);
- }
- };
-
- // Replace entities and backslash escapes with literal characters.
- var unescapeString = function(s) {
- if (reBackslashOrAmp.test(s)) {
- return s.replace(reEntityOrEscapedChar, unescapeChar);
- } else {
- return s;
- }
- };
-
- var normalizeURI = function(uri) {
- try {
- return encode_1(uri);
- } catch (err) {
- return uri;
- }
- };
-
- var replaceUnsafeChar = function(s) {
- switch (s) {
- case "&":
- return "&";
- case "<":
- return "<";
- case ">":
- return ">";
- case '"':
- return """;
- default:
- return s;
- }
- };
-
- var escapeXml = function(s) {
- if (reXmlSpecial.test(s)) {
- return s.replace(reXmlSpecial, replaceUnsafeChar);
- } else {
- return s;
- }
- };
-
- // derived from https://github.com/mathiasbynens/String.fromCodePoint
- /*! http://mths.be/fromcodepoint v0.2.1 by @mathias */
-
- var _fromCodePoint;
-
- function fromCodePoint(_) {
- return _fromCodePoint(_);
- }
-
- if (String.fromCodePoint) {
- _fromCodePoint = function(_) {
- try {
- return String.fromCodePoint(_);
- } catch (e) {
- if (e instanceof RangeError) {
- return String.fromCharCode(0xfffd);
- }
- throw e;
- }
- };
- } else {
- var stringFromCharCode = String.fromCharCode;
- var floor = Math.floor;
- _fromCodePoint = function() {
- var MAX_SIZE = 0x4000;
- var codeUnits = [];
- var highSurrogate;
- var lowSurrogate;
- var index = -1;
- var length = arguments.length;
- if (!length) {
- return "";
- }
- var result = "";
- while (++index < length) {
- var codePoint = Number(arguments[index]);
- if (
- !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
- codePoint < 0 || // not a valid Unicode code point
- codePoint > 0x10ffff || // not a valid Unicode code point
- floor(codePoint) !== codePoint // not an integer
- ) {
- return String.fromCharCode(0xfffd);
- }
- if (codePoint <= 0xffff) {
- // BMP code point
- codeUnits.push(codePoint);
- } else {
- // Astral code point; split in surrogate halves
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
- codePoint -= 0x10000;
- highSurrogate = (codePoint >> 10) + 0xd800;
- lowSurrogate = (codePoint % 0x400) + 0xdc00;
- codeUnits.push(highSurrogate, lowSurrogate);
- }
- if (index + 1 === length || codeUnits.length > MAX_SIZE) {
- result += stringFromCharCode.apply(null, codeUnits);
- codeUnits.length = 0;
- }
- }
- return result;
- };
- }
-
- /*! http://mths.be/repeat v0.2.0 by @mathias */
- if (!String.prototype.repeat) {
- (function() {
- var defineProperty = (function() {
- // IE 8 only supports `Object.defineProperty` on DOM elements
- try {
- var object = {};
- var $defineProperty = Object.defineProperty;
- var result = $defineProperty(object, object, object) && $defineProperty;
- } catch(error) {}
- return result;
- }());
- var repeat = function(count) {
- if (this == null) {
- throw TypeError();
- }
- var string = String(this);
- // `ToInteger`
- var n = count ? Number(count) : 0;
- if (n != n) { // better `isNaN`
- n = 0;
- }
- // Account for out-of-bounds indices
- if (n < 0 || n == Infinity) {
- throw RangeError();
- }
- var result = '';
- while (n) {
- if (n % 2 == 1) {
- result += string;
- }
- if (n > 1) {
- string += string;
- }
- n >>= 1;
- }
- return result;
- };
- if (defineProperty) {
- defineProperty(String.prototype, 'repeat', {
- 'value': repeat,
- 'configurable': true,
- 'writable': true
- });
- } else {
- String.prototype.repeat = repeat;
- }
- }());
- }
-
- var normalizeURI$1 = normalizeURI;
- var unescapeString$1 = unescapeString;
-
- // Constants for character codes:
-
- var C_NEWLINE = 10;
- var C_ASTERISK = 42;
- var C_UNDERSCORE = 95;
- var C_BACKTICK = 96;
- var C_OPEN_BRACKET = 91;
- var C_CLOSE_BRACKET = 93;
- var C_LESSTHAN = 60;
- var C_BANG = 33;
- var C_BACKSLASH$1 = 92;
- var C_AMPERSAND = 38;
- var C_OPEN_PAREN = 40;
- var C_CLOSE_PAREN = 41;
- var C_COLON = 58;
- var C_SINGLEQUOTE = 39;
- var C_DOUBLEQUOTE = 34;
-
- // Some regexps used in inline parser:
-
- var ESCAPABLE$1 = ESCAPABLE;
- var ESCAPED_CHAR = "\\\\" + ESCAPABLE$1;
-
- var ENTITY$1 = ENTITY;
- var reHtmlTag$1 = reHtmlTag;
-
- var rePunctuation = new RegExp(
- /[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/
- );
-
- var reLinkTitle = new RegExp(
- '^(?:"(' +
- ESCAPED_CHAR +
- '|[^"\\x00])*"' +
- "|" +
- "'(" +
- ESCAPED_CHAR +
- "|[^'\\x00])*'" +
- "|" +
- "\\((" +
- ESCAPED_CHAR +
- "|[^()\\x00])*\\))"
- );
-
- var reLinkDestinationBraces = /^(?:<(?:[^<>\n\\\x00]|\\.)*>)/;
-
- var reEscapable = new RegExp("^" + ESCAPABLE$1);
-
- var reEntityHere = new RegExp("^" + ENTITY$1, "i");
-
- var reTicks = /`+/;
-
- var reTicksHere = /^`+/;
-
- var reEllipses = /\.\.\./g;
-
- var reDash = /--+/g;
-
- var reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;
-
- var reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i;
-
- var reSpnl = /^ *(?:\n *)?/;
-
- var reWhitespaceChar = /^[ \t\n\x0b\x0c\x0d]/;
-
- var reUnicodeWhitespaceChar = /^\s/;
-
- var reFinalSpace = / *$/;
-
- var reInitialSpace = /^ */;
-
- var reSpaceAtEndOfLine = /^ *(?:\n|$)/;
-
- var reLinkLabel = /^\[(?:[^\\\[\]]|\\.){0,1000}\]/;
-
- // Matches a string of non-special characters.
- var reMain = /^[^\n`\[\]\\!<&*_'"]+/m;
-
- var text = function(s) {
- var node = new Node("text");
- node._literal = s;
- return node;
- };
-
- // normalize a reference in reference link (remove []s, trim,
- // collapse internal space, unicode case fold.
- // See commonmark/commonmark.js#168.
- var normalizeReference = function(string) {
- return string
- .slice(1, string.length - 1)
- .trim()
- .replace(/[ \t\r\n]+/, " ")
- .toLowerCase()
- .toUpperCase();
- };
-
- // INLINE PARSER
-
- // These are methods of an InlineParser object, defined below.
- // An InlineParser keeps track of a subject (a string to be
- // parsed) and a position in that subject.
-
- // If re matches at current position in the subject, advance
- // position in subject and return the match; otherwise return null.
- var match = function(re) {
- var m = re.exec(this.subject.slice(this.pos));
- if (m === null) {
- return null;
- } else {
- this.pos += m.index + m[0].length;
- return m[0];
- }
- };
-
- // Returns the code for the character at the current subject position, or -1
- // there are no more characters.
- var peek = function() {
- if (this.pos < this.subject.length) {
- return this.subject.charCodeAt(this.pos);
- } else {
- return -1;
- }
- };
-
- // Parse zero or more space characters, including at most one newline
- var spnl = function() {
- this.match(reSpnl);
- return true;
- };
-
- // All of the parsers below try to match something at the current position
- // in the subject. If they succeed in matching anything, they
- // return the inline matched, advancing the subject.
-
- // Attempt to parse backticks, adding either a backtick code span or a
- // literal sequence of backticks.
- var parseBackticks = function(block) {
- var ticks = this.match(reTicksHere);
- if (ticks === null) {
- return false;
- }
- var afterOpenTicks = this.pos;
- var matched;
- var node;
- var contents;
- while ((matched = this.match(reTicks)) !== null) {
- if (matched === ticks) {
- node = new Node("code");
- contents = this.subject
- .slice(afterOpenTicks, this.pos - ticks.length)
- .replace(/\n/gm, " ");
- if (
- contents.length > 0 &&
- contents.match(/[^ ]/) !== null &&
- contents[0] == " " &&
- contents[contents.length - 1] == " "
- ) {
- node._literal = contents.slice(1, contents.length - 1);
- } else {
- node._literal = contents;
- }
- block.appendChild(node);
- return true;
- }
- }
- // If we got here, we didn't match a closing backtick sequence.
- this.pos = afterOpenTicks;
- block.appendChild(text(ticks));
- return true;
- };
-
- // Parse a backslash-escaped special character, adding either the escaped
- // character, a hard line break (if the backslash is followed by a newline),
- // or a literal backslash to the block's children. Assumes current character
- // is a backslash.
- var parseBackslash = function(block) {
- var subj = this.subject;
- var node;
- this.pos += 1;
- if (this.peek() === C_NEWLINE) {
- this.pos += 1;
- node = new Node("linebreak");
- block.appendChild(node);
- } else if (reEscapable.test(subj.charAt(this.pos))) {
- block.appendChild(text(subj.charAt(this.pos)));
- this.pos += 1;
- } else {
- block.appendChild(text("\\"));
- }
- return true;
- };
-
- // Attempt to parse an autolink (URL or email in pointy brackets).
- var parseAutolink = function(block) {
- var m;
- var dest;
- var node;
- if ((m = this.match(reEmailAutolink))) {
- dest = m.slice(1, m.length - 1);
- node = new Node("link");
- node._destination = normalizeURI$1("mailto:" + dest);
- node._title = "";
- node.appendChild(text(dest));
- block.appendChild(node);
- return true;
- } else if ((m = this.match(reAutolink))) {
- dest = m.slice(1, m.length - 1);
- node = new Node("link");
- node._destination = normalizeURI$1(dest);
- node._title = "";
- node.appendChild(text(dest));
- block.appendChild(node);
- return true;
- } else {
- return false;
- }
- };
-
- // Attempt to parse a raw HTML tag.
- var parseHtmlTag = function(block) {
- var m = this.match(reHtmlTag$1);
- if (m === null) {
- return false;
- } else {
- var node = new Node("html_inline");
- node._literal = m;
- block.appendChild(node);
- return true;
- }
- };
-
- // Scan a sequence of characters with code cc, and return information about
- // the number of delimiters and whether they are positioned such that
- // they can open and/or close emphasis or strong emphasis. A utility
- // function for strong/emph parsing.
- var scanDelims = function(cc) {
- var numdelims = 0;
- var char_before, char_after, cc_after;
- var startpos = this.pos;
- var left_flanking, right_flanking, can_open, can_close;
- var after_is_whitespace,
- after_is_punctuation,
- before_is_whitespace,
- before_is_punctuation;
-
- if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {
- numdelims++;
- this.pos++;
- } else {
- while (this.peek() === cc) {
- numdelims++;
- this.pos++;
- }
- }
-
- if (numdelims === 0) {
- return null;
- }
-
- char_before = startpos === 0 ? "\n" : this.subject.charAt(startpos - 1);
-
- cc_after = this.peek();
- if (cc_after === -1) {
- char_after = "\n";
- } else {
- char_after = fromCodePoint(cc_after);
- }
-
- after_is_whitespace = reUnicodeWhitespaceChar.test(char_after);
- after_is_punctuation = rePunctuation.test(char_after);
- before_is_whitespace = reUnicodeWhitespaceChar.test(char_before);
- before_is_punctuation = rePunctuation.test(char_before);
-
- left_flanking =
- !after_is_whitespace &&
- (!after_is_punctuation ||
- before_is_whitespace ||
- before_is_punctuation);
- right_flanking =
- !before_is_whitespace &&
- (!before_is_punctuation || after_is_whitespace || after_is_punctuation);
- if (cc === C_UNDERSCORE) {
- can_open = left_flanking && (!right_flanking || before_is_punctuation);
- can_close = right_flanking && (!left_flanking || after_is_punctuation);
- } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {
- can_open = left_flanking && !right_flanking;
- can_close = right_flanking;
- } else {
- can_open = left_flanking;
- can_close = right_flanking;
- }
- this.pos = startpos;
- return { numdelims: numdelims, can_open: can_open, can_close: can_close };
- };
-
- // Handle a delimiter marker for emphasis or a quote.
- var handleDelim = function(cc, block) {
- var res = this.scanDelims(cc);
- if (!res) {
- return false;
- }
- var numdelims = res.numdelims;
- var startpos = this.pos;
- var contents;
-
- this.pos += numdelims;
- if (cc === C_SINGLEQUOTE) {
- contents = "\u2019";
- } else if (cc === C_DOUBLEQUOTE) {
- contents = "\u201C";
- } else {
- contents = this.subject.slice(startpos, this.pos);
- }
- var node = text(contents);
- block.appendChild(node);
-
- // Add entry to stack for this opener
- if (
- (res.can_open || res.can_close) &&
- (this.options.smart || (cc !== C_SINGLEQUOTE && cc !== C_DOUBLEQUOTE))
- ) {
- this.delimiters = {
- cc: cc,
- numdelims: numdelims,
- origdelims: numdelims,
- node: node,
- previous: this.delimiters,
- next: null,
- can_open: res.can_open,
- can_close: res.can_close
- };
- if (this.delimiters.previous !== null) {
- this.delimiters.previous.next = this.delimiters;
- }
- }
-
- return true;
- };
-
- var removeDelimiter = function(delim) {
- if (delim.previous !== null) {
- delim.previous.next = delim.next;
- }
- if (delim.next === null) {
- // top of stack
- this.delimiters = delim.previous;
- } else {
- delim.next.previous = delim.previous;
- }
- };
-
- var removeDelimitersBetween = function(bottom, top) {
- if (bottom.next !== top) {
- bottom.next = top;
- top.previous = bottom;
- }
- };
-
- var processEmphasis = function(stack_bottom) {
- var opener, closer, old_closer;
- var opener_inl, closer_inl;
- var tempstack;
- var use_delims;
- var tmp, next;
- var opener_found;
- var openers_bottom = [[], [], []];
- var odd_match = false;
-
- for (var i = 0; i < 3; i++) {
- openers_bottom[i][C_UNDERSCORE] = stack_bottom;
- openers_bottom[i][C_ASTERISK] = stack_bottom;
- openers_bottom[i][C_SINGLEQUOTE] = stack_bottom;
- openers_bottom[i][C_DOUBLEQUOTE] = stack_bottom;
- }
- // find first closer above stack_bottom:
- closer = this.delimiters;
- while (closer !== null && closer.previous !== stack_bottom) {
- closer = closer.previous;
- }
- // move forward, looking for closers, and handling each
- while (closer !== null) {
- var closercc = closer.cc;
- if (!closer.can_close) {
- closer = closer.next;
- } else {
- // found emphasis closer. now look back for first matching opener:
- opener = closer.previous;
- opener_found = false;
- while (
- opener !== null &&
- opener !== stack_bottom &&
- opener !== openers_bottom[closer.origdelims % 3][closercc]
- ) {
- odd_match =
- (closer.can_open || opener.can_close) &&
- closer.origdelims % 3 !== 0 &&
- (opener.origdelims + closer.origdelims) % 3 === 0;
- if (opener.cc === closer.cc && opener.can_open && !odd_match) {
- opener_found = true;
- break;
- }
- opener = opener.previous;
- }
- old_closer = closer;
-
- if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) {
- if (!opener_found) {
- closer = closer.next;
- } else {
- // calculate actual number of delimiters used from closer
- use_delims =
- closer.numdelims >= 2 && opener.numdelims >= 2 ? 2 : 1;
-
- opener_inl = opener.node;
- closer_inl = closer.node;
-
- // remove used delimiters from stack elts and inlines
- opener.numdelims -= use_delims;
- closer.numdelims -= use_delims;
- opener_inl._literal = opener_inl._literal.slice(
- 0,
- opener_inl._literal.length - use_delims
- );
- closer_inl._literal = closer_inl._literal.slice(
- 0,
- closer_inl._literal.length - use_delims
- );
-
- // build contents for new emph element
- var emph = new Node(use_delims === 1 ? "emph" : "strong");
-
- tmp = opener_inl._next;
- while (tmp && tmp !== closer_inl) {
- next = tmp._next;
- tmp.unlink();
- emph.appendChild(tmp);
- tmp = next;
- }
-
- opener_inl.insertAfter(emph);
-
- // remove elts between opener and closer in delimiters stack
- removeDelimitersBetween(opener, closer);
-
- // if opener has 0 delims, remove it and the inline
- if (opener.numdelims === 0) {
- opener_inl.unlink();
- this.removeDelimiter(opener);
- }
-
- if (closer.numdelims === 0) {
- closer_inl.unlink();
- tempstack = closer.next;
- this.removeDelimiter(closer);
- closer = tempstack;
- }
- }
- } else if (closercc === C_SINGLEQUOTE) {
- closer.node._literal = "\u2019";
- if (opener_found) {
- opener.node._literal = "\u2018";
- }
- closer = closer.next;
- } else if (closercc === C_DOUBLEQUOTE) {
- closer.node._literal = "\u201D";
- if (opener_found) {
- opener.node.literal = "\u201C";
- }
- closer = closer.next;
- }
- if (!opener_found) {
- // Set lower bound for future searches for openers:
- openers_bottom[old_closer.origdelims % 3][closercc] =
- old_closer.previous;
- if (!old_closer.can_open) {
- // We can remove a closer that can't be an opener,
- // once we've seen there's no matching opener:
- this.removeDelimiter(old_closer);
- }
- }
- }
- }
-
- // remove all delimiters
- while (this.delimiters !== null && this.delimiters !== stack_bottom) {
- this.removeDelimiter(this.delimiters);
- }
- };
-
- // Attempt to parse link title (sans quotes), returning the string
- // or null if no match.
- var parseLinkTitle = function() {
- var title = this.match(reLinkTitle);
- if (title === null) {
- return null;
- } else {
- // chop off quotes from title and unescape:
- return unescapeString$1(title.substr(1, title.length - 2));
- }
- };
-
- // Attempt to parse link destination, returning the string or
- // null if no match.
- var parseLinkDestination = function() {
- var res = this.match(reLinkDestinationBraces);
- if (res === null) {
- if (this.peek() === C_LESSTHAN) {
- return null;
- }
- // TODO handrolled parser; res should be null or the string
- var savepos = this.pos;
- var openparens = 0;
- var c;
- while ((c = this.peek()) !== -1) {
- if (
- c === C_BACKSLASH$1 &&
- reEscapable.test(this.subject.charAt(this.pos + 1))
- ) {
- this.pos += 1;
- if (this.peek() !== -1) {
- this.pos += 1;
- }
- } else if (c === C_OPEN_PAREN) {
- this.pos += 1;
- openparens += 1;
- } else if (c === C_CLOSE_PAREN) {
- if (openparens < 1) {
- break;
- } else {
- this.pos += 1;
- openparens -= 1;
- }
- } else if (reWhitespaceChar.exec(fromCodePoint(c)) !== null) {
- break;
- } else {
- this.pos += 1;
- }
- }
- if (this.pos === savepos && c !== C_CLOSE_PAREN) {
- return null;
- }
- if (openparens !== 0) {
- return null;
- }
- res = this.subject.substr(savepos, this.pos - savepos);
- return normalizeURI$1(unescapeString$1(res));
- } else {
- // chop off surrounding <..>:
- return normalizeURI$1(unescapeString$1(res.substr(1, res.length - 2)));
- }
- };
-
- // Attempt to parse a link label, returning number of characters parsed.
- var parseLinkLabel = function() {
- var m = this.match(reLinkLabel);
- if (m === null || m.length > 1001) {
- return 0;
- } else {
- return m.length;
- }
- };
-
- // Add open bracket to delimiter stack and add a text node to block's children.
- var parseOpenBracket = function(block) {
- var startpos = this.pos;
- this.pos += 1;
-
- var node = text("[");
- block.appendChild(node);
-
- // Add entry to stack for this opener
- this.addBracket(node, startpos, false);
- return true;
- };
-
- // IF next character is [, and ! delimiter to delimiter stack and
- // add a text node to block's children. Otherwise just add a text node.
- var parseBang = function(block) {
- var startpos = this.pos;
- this.pos += 1;
- if (this.peek() === C_OPEN_BRACKET) {
- this.pos += 1;
-
- var node = text("![");
- block.appendChild(node);
-
- // Add entry to stack for this opener
- this.addBracket(node, startpos + 1, true);
- } else {
- block.appendChild(text("!"));
- }
- return true;
- };
-
- // Try to match close bracket against an opening in the delimiter
- // stack. Add either a link or image, or a plain [ character,
- // to block's children. If there is a matching delimiter,
- // remove it from the delimiter stack.
- var parseCloseBracket = function(block) {
- var startpos;
- var is_image;
- var dest;
- var title;
- var matched = false;
- var reflabel;
- var opener;
-
- this.pos += 1;
- startpos = this.pos;
-
- // get last [ or ![
- opener = this.brackets;
-
- if (opener === null) {
- // no matched opener, just return a literal
- block.appendChild(text("]"));
- return true;
- }
-
- if (!opener.active) {
- // no matched opener, just return a literal
- block.appendChild(text("]"));
- // take opener off brackets stack
- this.removeBracket();
- return true;
- }
-
- // If we got here, open is a potential opener
- is_image = opener.image;
-
- // Check to see if we have a link/image
-
- var savepos = this.pos;
-
- // Inline link?
- if (this.peek() === C_OPEN_PAREN) {
- this.pos++;
- if (
- this.spnl() &&
- (dest = this.parseLinkDestination()) !== null &&
- this.spnl() &&
- // make sure there's a space before the title:
- ((reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&
- (title = this.parseLinkTitle())) ||
- true) &&
- this.spnl() &&
- this.peek() === C_CLOSE_PAREN
- ) {
- this.pos += 1;
- matched = true;
- } else {
- this.pos = savepos;
- }
- }
-
- if (!matched) {
- // Next, see if there's a link label
- var beforelabel = this.pos;
- var n = this.parseLinkLabel();
- if (n > 2) {
- reflabel = this.subject.slice(beforelabel, beforelabel + n);
- } else if (!opener.bracketAfter) {
- // Empty or missing second label means to use the first label as the reference.
- // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.
- reflabel = this.subject.slice(opener.index, startpos);
- }
- if (n === 0) {
- // If shortcut reference link, rewind before spaces we skipped.
- this.pos = savepos;
- }
-
- if (reflabel) {
- // lookup rawlabel in refmap
- var link = this.refmap[normalizeReference(reflabel)];
- if (link) {
- dest = link.destination;
- title = link.title;
- matched = true;
- }
- }
- }
-
- if (matched) {
- var node = new Node(is_image ? "image" : "link");
- node._destination = dest;
- node._title = title || "";
-
- var tmp, next;
- tmp = opener.node._next;
- while (tmp) {
- next = tmp._next;
- tmp.unlink();
- node.appendChild(tmp);
- tmp = next;
- }
- block.appendChild(node);
- this.processEmphasis(opener.previousDelimiter);
- this.removeBracket();
- opener.node.unlink();
-
- // We remove this bracket and processEmphasis will remove later delimiters.
- // Now, for a link, we also deactivate earlier link openers.
- // (no links in links)
- if (!is_image) {
- opener = this.brackets;
- while (opener !== null) {
- if (!opener.image) {
- opener.active = false; // deactivate this opener
- }
- opener = opener.previous;
- }
- }
-
- return true;
- } else {
- // no match
-
- this.removeBracket(); // remove this opener from stack
- this.pos = startpos;
- block.appendChild(text("]"));
- return true;
- }
- };
-
- var addBracket = function(node, index, image) {
- if (this.brackets !== null) {
- this.brackets.bracketAfter = true;
- }
- this.brackets = {
- node: node,
- previous: this.brackets,
- previousDelimiter: this.delimiters,
- index: index,
- image: image,
- active: true
- };
- };
-
- var removeBracket = function() {
- this.brackets = this.brackets.previous;
- };
-
- // Attempt to parse an entity.
- var parseEntity = function(block) {
- var m;
- if ((m = this.match(reEntityHere))) {
- block.appendChild(text(lib_10(m)));
- return true;
- } else {
- return false;
- }
- };
-
- // Parse a run of ordinary characters, or a single character with
- // a special meaning in markdown, as a plain string.
- var parseString = function(block) {
- var m;
- if ((m = this.match(reMain))) {
- if (this.options.smart) {
- block.appendChild(
- text(
- m
- .replace(reEllipses, "\u2026")
- .replace(reDash, function(chars) {
- var enCount = 0;
- var emCount = 0;
- if (chars.length % 3 === 0) {
- // If divisible by 3, use all em dashes
- emCount = chars.length / 3;
- } else if (chars.length % 2 === 0) {
- // If divisible by 2, use all en dashes
- enCount = chars.length / 2;
- } else if (chars.length % 3 === 2) {
- // If 2 extra dashes, use en dash for last 2; em dashes for rest
- enCount = 1;
- emCount = (chars.length - 2) / 3;
- } else {
- // Use en dashes for last 4 hyphens; em dashes for rest
- enCount = 2;
- emCount = (chars.length - 4) / 3;
- }
- return (
- "\u2014".repeat(emCount) +
- "\u2013".repeat(enCount)
- );
- })
- )
- );
- } else {
- block.appendChild(text(m));
- }
- return true;
- } else {
- return false;
- }
- };
-
- // Parse a newline. If it was preceded by two spaces, return a hard
- // line break; otherwise a soft line break.
- var parseNewline = function(block) {
- this.pos += 1; // assume we're at a \n
- // check previous node for trailing spaces
- var lastc = block._lastChild;
- if (
- lastc &&
- lastc.type === "text" &&
- lastc._literal[lastc._literal.length - 1] === " "
- ) {
- var hardbreak = lastc._literal[lastc._literal.length - 2] === " ";
- lastc._literal = lastc._literal.replace(reFinalSpace, "");
- block.appendChild(new Node(hardbreak ? "linebreak" : "softbreak"));
- } else {
- block.appendChild(new Node("softbreak"));
- }
- this.match(reInitialSpace); // gobble leading spaces in next line
- return true;
- };
-
- // Attempt to parse a link reference, modifying refmap.
- var parseReference = function(s, refmap) {
- this.subject = s;
- this.pos = 0;
- var rawlabel;
- var dest;
- var title;
- var matchChars;
- var startpos = this.pos;
-
- // label:
- matchChars = this.parseLinkLabel();
- if (matchChars === 0) {
- return 0;
- } else {
- rawlabel = this.subject.substr(0, matchChars);
- }
-
- // colon:
- if (this.peek() === C_COLON) {
- this.pos++;
- } else {
- this.pos = startpos;
- return 0;
- }
-
- // link url
- this.spnl();
-
- dest = this.parseLinkDestination();
- if (dest === null) {
- this.pos = startpos;
- return 0;
- }
-
- var beforetitle = this.pos;
- this.spnl();
- if (this.pos !== beforetitle) {
- title = this.parseLinkTitle();
- }
- if (title === null) {
- title = "";
- // rewind before spaces
- this.pos = beforetitle;
- }
-
- // make sure we're at line end:
- var atLineEnd = true;
- if (this.match(reSpaceAtEndOfLine) === null) {
- if (title === "") {
- atLineEnd = false;
- } else {
- // the potential title we found is not at the line end,
- // but it could still be a legal link reference if we
- // discard the title
- title = "";
- // rewind before spaces
- this.pos = beforetitle;
- // and instead check if the link URL is at the line end
- atLineEnd = this.match(reSpaceAtEndOfLine) !== null;
- }
- }
-
- if (!atLineEnd) {
- this.pos = startpos;
- return 0;
- }
-
- var normlabel = normalizeReference(rawlabel);
- if (normlabel === "") {
- // label must contain non-whitespace characters
- this.pos = startpos;
- return 0;
- }
-
- if (!refmap[normlabel]) {
- refmap[normlabel] = { destination: dest, title: title };
- }
- return this.pos - startpos;
- };
-
- // Parse the next inline element in subject, advancing subject position.
- // On success, add the result to block's children and return true.
- // On failure, return false.
- var parseInline = function(block) {
- var res = false;
- var c = this.peek();
- if (c === -1) {
- return false;
- }
- switch (c) {
- case C_NEWLINE:
- res = this.parseNewline(block);
- break;
- case C_BACKSLASH$1:
- res = this.parseBackslash(block);
- break;
- case C_BACKTICK:
- res = this.parseBackticks(block);
- break;
- case C_ASTERISK:
- case C_UNDERSCORE:
- res = this.handleDelim(c, block);
- break;
- case C_SINGLEQUOTE:
- case C_DOUBLEQUOTE:
- res = this.options.smart && this.handleDelim(c, block);
- break;
- case C_OPEN_BRACKET:
- res = this.parseOpenBracket(block);
- break;
- case C_BANG:
- res = this.parseBang(block);
- break;
- case C_CLOSE_BRACKET:
- res = this.parseCloseBracket(block);
- break;
- case C_LESSTHAN:
- res = this.parseAutolink(block) || this.parseHtmlTag(block);
- break;
- case C_AMPERSAND:
- res = this.parseEntity(block);
- break;
- default:
- res = this.parseString(block);
- break;
- }
- if (!res) {
- this.pos += 1;
- block.appendChild(text(fromCodePoint(c)));
- }
-
- return true;
- };
-
- // Parse string content in block into inline children,
- // using refmap to resolve references.
- var parseInlines = function(block) {
- this.subject = block._string_content.trim();
- this.pos = 0;
- this.delimiters = null;
- this.brackets = null;
- while (this.parseInline(block)) {}
- block._string_content = null; // allow raw string to be garbage collected
- this.processEmphasis(null);
- };
-
- // The InlineParser object.
- function InlineParser(options) {
- return {
- subject: "",
- delimiters: null, // used by handleDelim method
- brackets: null,
- pos: 0,
- refmap: {},
- match: match,
- peek: peek,
- spnl: spnl,
- parseBackticks: parseBackticks,
- parseBackslash: parseBackslash,
- parseAutolink: parseAutolink,
- parseHtmlTag: parseHtmlTag,
- scanDelims: scanDelims,
- handleDelim: handleDelim,
- parseLinkTitle: parseLinkTitle,
- parseLinkDestination: parseLinkDestination,
- parseLinkLabel: parseLinkLabel,
- parseOpenBracket: parseOpenBracket,
- parseBang: parseBang,
- parseCloseBracket: parseCloseBracket,
- addBracket: addBracket,
- removeBracket: removeBracket,
- parseEntity: parseEntity,
- parseString: parseString,
- parseNewline: parseNewline,
- parseReference: parseReference,
- parseInline: parseInline,
- processEmphasis: processEmphasis,
- removeDelimiter: removeDelimiter,
- options: options || {},
- parse: parseInlines
- };
- }
-
- var CODE_INDENT = 4;
-
- var C_TAB = 9;
- var C_NEWLINE$1 = 10;
- var C_GREATERTHAN = 62;
- var C_LESSTHAN$1 = 60;
- var C_SPACE = 32;
- var C_OPEN_BRACKET$1 = 91;
-
- var reHtmlBlockOpen = [
- /./, // dummy for 0
- /^<(?:script|pre|textarea|style)(?:\s|>|$)/i,
- /^/,
- /\?>/,
- />/,
- /\]\]>/
- ];
-
- var reThematicBreak = /^(?:(?:\*[ \t]*){3,}|(?:_[ \t]*){3,}|(?:-[ \t]*){3,})[ \t]*$/;
-
- var reMaybeSpecial = /^[#`~*+_=<>0-9-]/;
-
- var reNonSpace = /[^ \t\f\v\r\n]/;
-
- var reBulletListMarker = /^[*+-]/;
-
- var reOrderedListMarker = /^(\d{1,9})([.)])/;
-
- var reATXHeadingMarker = /^#{1,6}(?:[ \t]+|$)/;
-
- var reCodeFence = /^`{3,}(?!.*`)|^~{3,}/;
-
- var reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;
-
- var reSetextHeadingLine = /^(?:=+|-+)[ \t]*$/;
-
- var reLineEnding = /\r\n|\n|\r/;
-
- // Returns true if string contains only space characters.
- var isBlank = function(s) {
- return !reNonSpace.test(s);
- };
-
- var isSpaceOrTab = function(c) {
- return c === C_SPACE || c === C_TAB;
- };
-
- var peek$1 = function(ln, pos) {
- if (pos < ln.length) {
- return ln.charCodeAt(pos);
- } else {
- return -1;
- }
- };
-
- // DOC PARSER
-
- // These are methods of a Parser object, defined below.
-
- // Returns true if block ends with a blank line, descending if needed
- // into lists and sublists.
- var endsWithBlankLine = function(block) {
- while (block) {
- if (block._lastLineBlank) {
- return true;
- }
- var t = block.type;
- if (!block._lastLineChecked && (t === "list" || t === "item")) {
- block._lastLineChecked = true;
- block = block._lastChild;
- } else {
- block._lastLineChecked = true;
- break;
- }
- }
- return false;
- };
-
- // Add a line to the block at the tip. We assume the tip
- // can accept lines -- that check should be done before calling this.
- var addLine = function() {
- if (this.partiallyConsumedTab) {
- this.offset += 1; // skip over tab
- // add space characters:
- var charsToTab = 4 - (this.column % 4);
- this.tip._string_content += " ".repeat(charsToTab);
- }
- this.tip._string_content += this.currentLine.slice(this.offset) + "\n";
- };
-
- // Add block of type tag as a child of the tip. If the tip can't
- // accept children, close and finalize it and try its parent,
- // and so on til we find a block that can accept children.
- var addChild = function(tag, offset) {
- while (!this.blocks[this.tip.type].canContain(tag)) {
- this.finalize(this.tip, this.lineNumber - 1);
- }
-
- var column_number = offset + 1; // offset 0 = column 1
- var newBlock = new Node(tag, [
- [this.lineNumber, column_number],
- [0, 0]
- ]);
- newBlock._string_content = "";
- this.tip.appendChild(newBlock);
- this.tip = newBlock;
- return newBlock;
- };
-
- // Parse a list marker and return data on the marker (type,
- // start, delimiter, bullet character, padding) or null.
- var parseListMarker = function(parser, container) {
- var rest = parser.currentLine.slice(parser.nextNonspace);
- var match;
- var nextc;
- var spacesStartCol;
- var spacesStartOffset;
- var data = {
- type: null,
- tight: true, // lists are tight by default
- bulletChar: null,
- start: null,
- delimiter: null,
- padding: null,
- markerOffset: parser.indent
- };
- if (parser.indent >= 4) {
- return null;
- }
- if ((match = rest.match(reBulletListMarker))) {
- data.type = "bullet";
- data.bulletChar = match[0][0];
- } else if (
- (match = rest.match(reOrderedListMarker)) &&
- (container.type !== "paragraph" || match[1] === "1")
- ) {
- data.type = "ordered";
- data.start = parseInt(match[1]);
- data.delimiter = match[2];
- } else {
- return null;
- }
- // make sure we have spaces after
- nextc = peek$1(parser.currentLine, parser.nextNonspace + match[0].length);
- if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) {
- return null;
- }
-
- // if it interrupts paragraph, make sure first line isn't blank
- if (
- container.type === "paragraph" &&
- !parser.currentLine
- .slice(parser.nextNonspace + match[0].length)
- .match(reNonSpace)
- ) {
- return null;
- }
-
- // we've got a match! advance offset and calculate padding
- parser.advanceNextNonspace(); // to start of marker
- parser.advanceOffset(match[0].length, true); // to end of marker
- spacesStartCol = parser.column;
- spacesStartOffset = parser.offset;
- do {
- parser.advanceOffset(1, true);
- nextc = peek$1(parser.currentLine, parser.offset);
- } while (parser.column - spacesStartCol < 5 && isSpaceOrTab(nextc));
- var blank_item = peek$1(parser.currentLine, parser.offset) === -1;
- var spaces_after_marker = parser.column - spacesStartCol;
- if (spaces_after_marker >= 5 || spaces_after_marker < 1 || blank_item) {
- data.padding = match[0].length + 1;
- parser.column = spacesStartCol;
- parser.offset = spacesStartOffset;
- if (isSpaceOrTab(peek$1(parser.currentLine, parser.offset))) {
- parser.advanceOffset(1, true);
- }
- } else {
- data.padding = match[0].length + spaces_after_marker;
- }
- return data;
- };
-
- // Returns true if the two list items are of the same type,
- // with the same delimiter and bullet character. This is used
- // in agglomerating list items into lists.
- var listsMatch = function(list_data, item_data) {
- return (
- list_data.type === item_data.type &&
- list_data.delimiter === item_data.delimiter &&
- list_data.bulletChar === item_data.bulletChar
- );
- };
-
- // Finalize and close any unmatched blocks.
- var closeUnmatchedBlocks = function() {
- if (!this.allClosed) {
- // finalize any blocks not matched
- while (this.oldtip !== this.lastMatchedContainer) {
- var parent = this.oldtip._parent;
- this.finalize(this.oldtip, this.lineNumber - 1);
- this.oldtip = parent;
- }
- this.allClosed = true;
- }
- };
-
- // 'finalize' is run when the block is closed.
- // 'continue' is run to check whether the block is continuing
- // at a certain line and offset (e.g. whether a block quote
- // contains a `>`. It returns 0 for matched, 1 for not matched,
- // and 2 for "we've dealt with this line completely, go to next."
- var blocks = {
- document: {
- continue: function() {
- return 0;
- },
- finalize: function() {
- return;
- },
- canContain: function(t) {
- return t !== "item";
- },
- acceptsLines: false
- },
- list: {
- continue: function() {
- return 0;
- },
- finalize: function(parser, block) {
- var item = block._firstChild;
- while (item) {
- // check for non-final list item ending with blank line:
- if (endsWithBlankLine(item) && item._next) {
- block._listData.tight = false;
- break;
- }
- // recurse into children of list item, to see if there are
- // spaces between any of them:
- var subitem = item._firstChild;
- while (subitem) {
- if (
- endsWithBlankLine(subitem) &&
- (item._next || subitem._next)
- ) {
- block._listData.tight = false;
- break;
- }
- subitem = subitem._next;
- }
- item = item._next;
- }
- },
- canContain: function(t) {
- return t === "item";
- },
- acceptsLines: false
- },
- block_quote: {
- continue: function(parser) {
- var ln = parser.currentLine;
- if (
- !parser.indented &&
- peek$1(ln, parser.nextNonspace) === C_GREATERTHAN
- ) {
- parser.advanceNextNonspace();
- parser.advanceOffset(1, false);
- if (isSpaceOrTab(peek$1(ln, parser.offset))) {
- parser.advanceOffset(1, true);
- }
- } else {
- return 1;
- }
- return 0;
- },
- finalize: function() {
- return;
- },
- canContain: function(t) {
- return t !== "item";
- },
- acceptsLines: false
- },
- item: {
- continue: function(parser, container) {
- if (parser.blank) {
- if (container._firstChild == null) {
- // Blank line after empty list item
- return 1;
- } else {
- parser.advanceNextNonspace();
- }
- } else if (
- parser.indent >=
- container._listData.markerOffset + container._listData.padding
- ) {
- parser.advanceOffset(
- container._listData.markerOffset +
- container._listData.padding,
- true
- );
- } else {
- return 1;
- }
- return 0;
- },
- finalize: function() {
- return;
- },
- canContain: function(t) {
- return t !== "item";
- },
- acceptsLines: false
- },
- heading: {
- continue: function() {
- // a heading can never container > 1 line, so fail to match:
- return 1;
- },
- finalize: function() {
- return;
- },
- canContain: function() {
- return false;
- },
- acceptsLines: false
- },
- thematic_break: {
- continue: function() {
- // a thematic break can never container > 1 line, so fail to match:
- return 1;
- },
- finalize: function() {
- return;
- },
- canContain: function() {
- return false;
- },
- acceptsLines: false
- },
- code_block: {
- continue: function(parser, container) {
- var ln = parser.currentLine;
- var indent = parser.indent;
- if (container._isFenced) {
- // fenced
- var match =
- indent <= 3 &&
- ln.charAt(parser.nextNonspace) === container._fenceChar &&
- ln.slice(parser.nextNonspace).match(reClosingCodeFence);
- if (match && match[0].length >= container._fenceLength) {
- // closing fence - we're at end of line, so we can return
- parser.lastLineLength =
- parser.offset + indent + match[0].length;
- parser.finalize(container, parser.lineNumber);
- return 2;
- } else {
- // skip optional spaces of fence offset
- var i = container._fenceOffset;
- while (i > 0 && isSpaceOrTab(peek$1(ln, parser.offset))) {
- parser.advanceOffset(1, true);
- i--;
- }
- }
- } else {
- // indented
- if (indent >= CODE_INDENT) {
- parser.advanceOffset(CODE_INDENT, true);
- } else if (parser.blank) {
- parser.advanceNextNonspace();
- } else {
- return 1;
- }
- }
- return 0;
- },
- finalize: function(parser, block) {
- if (block._isFenced) {
- // fenced
- // first line becomes info string
- var content = block._string_content;
- var newlinePos = content.indexOf("\n");
- var firstLine = content.slice(0, newlinePos);
- var rest = content.slice(newlinePos + 1);
- block.info = unescapeString(firstLine.trim());
- block._literal = rest;
- } else {
- // indented
- block._literal = block._string_content.replace(
- /(\n *)+$/,
- "\n"
- );
- }
- block._string_content = null; // allow GC
- },
- canContain: function() {
- return false;
- },
- acceptsLines: true
- },
- html_block: {
- continue: function(parser, container) {
- return parser.blank &&
- (container._htmlBlockType === 6 ||
- container._htmlBlockType === 7)
- ? 1
- : 0;
- },
- finalize: function(parser, block) {
- block._literal = block._string_content.replace(/(\n *)+$/, "");
- block._string_content = null; // allow GC
- },
- canContain: function() {
- return false;
- },
- acceptsLines: true
- },
- paragraph: {
- continue: function(parser) {
- return parser.blank ? 1 : 0;
- },
- finalize: function(parser, block) {
- var pos;
- var hasReferenceDefs = false;
-
- // try parsing the beginning as link reference definitions:
- while (
- peek$1(block._string_content, 0) === C_OPEN_BRACKET$1 &&
- (pos = parser.inlineParser.parseReference(
- block._string_content,
- parser.refmap
- ))
- ) {
- block._string_content = block._string_content.slice(pos);
- hasReferenceDefs = true;
- }
- if (hasReferenceDefs && isBlank(block._string_content)) {
- block.unlink();
- }
- },
- canContain: function() {
- return false;
- },
- acceptsLines: true
- }
- };
-
- // block start functions. Return values:
- // 0 = no match
- // 1 = matched container, keep going
- // 2 = matched leaf, no more block starts
- var blockStarts = [
- // block quote
- function(parser) {
- if (
- !parser.indented &&
- peek$1(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN
- ) {
- parser.advanceNextNonspace();
- parser.advanceOffset(1, false);
- // optional following space
- if (isSpaceOrTab(peek$1(parser.currentLine, parser.offset))) {
- parser.advanceOffset(1, true);
- }
- parser.closeUnmatchedBlocks();
- parser.addChild("block_quote", parser.nextNonspace);
- return 1;
- } else {
- return 0;
- }
- },
-
- // ATX heading
- function(parser) {
- var match;
- if (
- !parser.indented &&
- (match = parser.currentLine
- .slice(parser.nextNonspace)
- .match(reATXHeadingMarker))
- ) {
- parser.advanceNextNonspace();
- parser.advanceOffset(match[0].length, false);
- parser.closeUnmatchedBlocks();
- var container = parser.addChild("heading", parser.nextNonspace);
- container.level = match[0].trim().length; // number of #s
- // remove trailing ###s:
- container._string_content = parser.currentLine
- .slice(parser.offset)
- .replace(/^[ \t]*#+[ \t]*$/, "")
- .replace(/[ \t]+#+[ \t]*$/, "");
- parser.advanceOffset(parser.currentLine.length - parser.offset);
- return 2;
- } else {
- return 0;
- }
- },
-
- // Fenced code block
- function(parser) {
- var match;
- if (
- !parser.indented &&
- (match = parser.currentLine
- .slice(parser.nextNonspace)
- .match(reCodeFence))
- ) {
- var fenceLength = match[0].length;
- parser.closeUnmatchedBlocks();
- var container = parser.addChild("code_block", parser.nextNonspace);
- container._isFenced = true;
- container._fenceLength = fenceLength;
- container._fenceChar = match[0][0];
- container._fenceOffset = parser.indent;
- parser.advanceNextNonspace();
- parser.advanceOffset(fenceLength, false);
- return 2;
- } else {
- return 0;
- }
- },
-
- // HTML block
- function(parser, container) {
- if (
- !parser.indented &&
- peek$1(parser.currentLine, parser.nextNonspace) === C_LESSTHAN$1
- ) {
- var s = parser.currentLine.slice(parser.nextNonspace);
- var blockType;
-
- for (blockType = 1; blockType <= 7; blockType++) {
- if (
- reHtmlBlockOpen[blockType].test(s) &&
- (blockType < 7 || container.type !== "paragraph")
- ) {
- parser.closeUnmatchedBlocks();
- // We don't adjust parser.offset;
- // spaces are part of the HTML block:
- var b = parser.addChild("html_block", parser.offset);
- b._htmlBlockType = blockType;
- return 2;
- }
- }
- }
-
- return 0;
- },
-
- // Setext heading
- function(parser, container) {
- var match;
- if (
- !parser.indented &&
- container.type === "paragraph" &&
- (match = parser.currentLine
- .slice(parser.nextNonspace)
- .match(reSetextHeadingLine))
- ) {
- parser.closeUnmatchedBlocks();
- // resolve reference link definitiosn
- var pos;
- while (
- peek$1(container._string_content, 0) === C_OPEN_BRACKET$1 &&
- (pos = parser.inlineParser.parseReference(
- container._string_content,
- parser.refmap
- ))
- ) {
- container._string_content = container._string_content.slice(
- pos
- );
- }
- if (container._string_content.length > 0) {
- var heading = new Node("heading", container.sourcepos);
- heading.level = match[0][0] === "=" ? 1 : 2;
- heading._string_content = container._string_content;
- container.insertAfter(heading);
- container.unlink();
- parser.tip = heading;
- parser.advanceOffset(
- parser.currentLine.length - parser.offset,
- false
- );
- return 2;
- } else {
- return 0;
- }
- } else {
- return 0;
- }
- },
-
- // thematic break
- function(parser) {
- if (
- !parser.indented &&
- reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace))
- ) {
- parser.closeUnmatchedBlocks();
- parser.addChild("thematic_break", parser.nextNonspace);
- parser.advanceOffset(
- parser.currentLine.length - parser.offset,
- false
- );
- return 2;
- } else {
- return 0;
- }
- },
-
- // list item
- function(parser, container) {
- var data;
-
- if (
- (!parser.indented || container.type === "list") &&
- (data = parseListMarker(parser, container))
- ) {
- parser.closeUnmatchedBlocks();
-
- // add the list if needed
- if (
- parser.tip.type !== "list" ||
- !listsMatch(container._listData, data)
- ) {
- container = parser.addChild("list", parser.nextNonspace);
- container._listData = data;
- }
-
- // add the list item
- container = parser.addChild("item", parser.nextNonspace);
- container._listData = data;
- return 1;
- } else {
- return 0;
- }
- },
-
- // indented code block
- function(parser) {
- if (
- parser.indented &&
- parser.tip.type !== "paragraph" &&
- !parser.blank
- ) {
- // indented code
- parser.advanceOffset(CODE_INDENT, true);
- parser.closeUnmatchedBlocks();
- parser.addChild("code_block", parser.offset);
- return 2;
- } else {
- return 0;
- }
- }
- ];
-
- var advanceOffset = function(count, columns) {
- var currentLine = this.currentLine;
- var charsToTab, charsToAdvance;
- var c;
- while (count > 0 && (c = currentLine[this.offset])) {
- if (c === "\t") {
- charsToTab = 4 - (this.column % 4);
- if (columns) {
- this.partiallyConsumedTab = charsToTab > count;
- charsToAdvance = charsToTab > count ? count : charsToTab;
- this.column += charsToAdvance;
- this.offset += this.partiallyConsumedTab ? 0 : 1;
- count -= charsToAdvance;
- } else {
- this.partiallyConsumedTab = false;
- this.column += charsToTab;
- this.offset += 1;
- count -= 1;
- }
- } else {
- this.partiallyConsumedTab = false;
- this.offset += 1;
- this.column += 1; // assume ascii; block starts are ascii
- count -= 1;
- }
- }
- };
-
- var advanceNextNonspace = function() {
- this.offset = this.nextNonspace;
- this.column = this.nextNonspaceColumn;
- this.partiallyConsumedTab = false;
- };
-
- var findNextNonspace = function() {
- var currentLine = this.currentLine;
- var i = this.offset;
- var cols = this.column;
- var c;
-
- while ((c = currentLine.charAt(i)) !== "") {
- if (c === " ") {
- i++;
- cols++;
- } else if (c === "\t") {
- i++;
- cols += 4 - (cols % 4);
- } else {
- break;
- }
- }
- this.blank = c === "\n" || c === "\r" || c === "";
- this.nextNonspace = i;
- this.nextNonspaceColumn = cols;
- this.indent = this.nextNonspaceColumn - this.column;
- this.indented = this.indent >= CODE_INDENT;
- };
-
- // Analyze a line of text and update the document appropriately.
- // We parse markdown text by calling this on each line of input,
- // then finalizing the document.
- var incorporateLine = function(ln) {
- var all_matched = true;
- var t;
-
- var container = this.doc;
- this.oldtip = this.tip;
- this.offset = 0;
- this.column = 0;
- this.blank = false;
- this.partiallyConsumedTab = false;
- this.lineNumber += 1;
-
- // replace NUL characters for security
- if (ln.indexOf("\u0000") !== -1) {
- ln = ln.replace(/\0/g, "\uFFFD");
- }
-
- this.currentLine = ln;
-
- // For each containing block, try to parse the associated line start.
- // Bail out on failure: container will point to the last matching block.
- // Set all_matched to false if not all containers match.
- var lastChild;
- while ((lastChild = container._lastChild) && lastChild._open) {
- container = lastChild;
-
- this.findNextNonspace();
-
- switch (this.blocks[container.type].continue(this, container)) {
- case 0: // we've matched, keep going
- break;
- case 1: // we've failed to match a block
- all_matched = false;
- break;
- case 2: // we've hit end of line for fenced code close and can return
- return;
- default:
- throw "continue returned illegal value, must be 0, 1, or 2";
- }
- if (!all_matched) {
- container = container._parent; // back up to last matching block
- break;
- }
- }
-
- this.allClosed = container === this.oldtip;
- this.lastMatchedContainer = container;
-
- var matchedLeaf =
- container.type !== "paragraph" && blocks[container.type].acceptsLines;
- var starts = this.blockStarts;
- var startsLen = starts.length;
- // Unless last matched container is a code block, try new container starts,
- // adding children to the last matched container:
- while (!matchedLeaf) {
- this.findNextNonspace();
-
- // this is a little performance optimization:
- if (
- !this.indented &&
- !reMaybeSpecial.test(ln.slice(this.nextNonspace))
- ) {
- this.advanceNextNonspace();
- break;
- }
-
- var i = 0;
- while (i < startsLen) {
- var res = starts[i](this, container);
- if (res === 1) {
- container = this.tip;
- break;
- } else if (res === 2) {
- container = this.tip;
- matchedLeaf = true;
- break;
- } else {
- i++;
- }
- }
-
- if (i === startsLen) {
- // nothing matched
- this.advanceNextNonspace();
- break;
- }
- }
-
- // What remains at the offset is a text line. Add the text to the
- // appropriate container.
-
- // First check for a lazy paragraph continuation:
- if (!this.allClosed && !this.blank && this.tip.type === "paragraph") {
- // lazy paragraph continuation
- this.addLine();
- } else {
- // not a lazy continuation
-
- // finalize any blocks not matched
- this.closeUnmatchedBlocks();
- if (this.blank && container.lastChild) {
- container.lastChild._lastLineBlank = true;
- }
-
- t = container.type;
-
- // Block quote lines are never blank as they start with >
- // and we don't count blanks in fenced code for purposes of tight/loose
- // lists or breaking out of lists. We also don't set _lastLineBlank
- // on an empty list item, or if we just closed a fenced block.
- var lastLineBlank =
- this.blank &&
- !(
- t === "block_quote" ||
- (t === "code_block" && container._isFenced) ||
- (t === "item" &&
- !container._firstChild &&
- container.sourcepos[0][0] === this.lineNumber)
- );
-
- // propagate lastLineBlank up through parents:
- var cont = container;
- while (cont) {
- cont._lastLineBlank = lastLineBlank;
- cont = cont._parent;
- }
-
- if (this.blocks[t].acceptsLines) {
- this.addLine();
- // if HtmlBlock, check for end condition
- if (
- t === "html_block" &&
- container._htmlBlockType >= 1 &&
- container._htmlBlockType <= 5 &&
- reHtmlBlockClose[container._htmlBlockType].test(
- this.currentLine.slice(this.offset)
- )
- ) {
- this.lastLineLength = ln.length;
- this.finalize(container, this.lineNumber);
- }
- } else if (this.offset < ln.length && !this.blank) {
- // create paragraph container for line
- container = this.addChild("paragraph", this.offset);
- this.advanceNextNonspace();
- this.addLine();
- }
- }
- this.lastLineLength = ln.length;
- };
-
- // Finalize a block. Close it and do any necessary postprocessing,
- // e.g. creating string_content from strings, setting the 'tight'
- // or 'loose' status of a list, and parsing the beginnings
- // of paragraphs for reference definitions. Reset the tip to the
- // parent of the closed block.
- var finalize = function(block, lineNumber) {
- var above = block._parent;
- block._open = false;
- block.sourcepos[1] = [lineNumber, this.lastLineLength];
-
- this.blocks[block.type].finalize(this, block);
-
- this.tip = above;
- };
-
- // Walk through a block & children recursively, parsing string content
- // into inline content where appropriate.
- var processInlines = function(block) {
- var node, event, t;
- var walker = block.walker();
- this.inlineParser.refmap = this.refmap;
- this.inlineParser.options = this.options;
- while ((event = walker.next())) {
- node = event.node;
- t = node.type;
- if (!event.entering && (t === "paragraph" || t === "heading")) {
- this.inlineParser.parse(node);
- }
- }
- };
-
- var Document = function() {
- var doc = new Node("document", [
- [1, 1],
- [0, 0]
- ]);
- return doc;
- };
-
- // The main parsing function. Returns a parsed document AST.
- var parse = function(input) {
- this.doc = new Document();
- this.tip = this.doc;
- this.refmap = {};
- this.lineNumber = 0;
- this.lastLineLength = 0;
- this.offset = 0;
- this.column = 0;
- this.lastMatchedContainer = this.doc;
- this.currentLine = "";
- if (this.options.time) {
- console.time("preparing input");
- }
- var lines = input.split(reLineEnding);
- var len = lines.length;
- if (input.charCodeAt(input.length - 1) === C_NEWLINE$1) {
- // ignore last blank line created by final newline
- len -= 1;
- }
- if (this.options.time) {
- console.timeEnd("preparing input");
- }
- if (this.options.time) {
- console.time("block parsing");
- }
- for (var i = 0; i < len; i++) {
- this.incorporateLine(lines[i]);
- }
- while (this.tip) {
- this.finalize(this.tip, len);
- }
- if (this.options.time) {
- console.timeEnd("block parsing");
- }
- if (this.options.time) {
- console.time("inline parsing");
- }
- this.processInlines(this.doc);
- if (this.options.time) {
- console.timeEnd("inline parsing");
- }
- return this.doc;
- };
-
- // The Parser object.
- function Parser(options) {
- return {
- doc: new Document(),
- blocks: blocks,
- blockStarts: blockStarts,
- tip: this.doc,
- oldtip: this.doc,
- currentLine: "",
- lineNumber: 0,
- offset: 0,
- column: 0,
- nextNonspace: 0,
- nextNonspaceColumn: 0,
- indent: 0,
- indented: false,
- blank: false,
- partiallyConsumedTab: false,
- allClosed: true,
- lastMatchedContainer: this.doc,
- refmap: {},
- lastLineLength: 0,
- inlineParser: new InlineParser(options),
- findNextNonspace: findNextNonspace,
- advanceOffset: advanceOffset,
- advanceNextNonspace: advanceNextNonspace,
- addLine: addLine,
- addChild: addChild,
- incorporateLine: incorporateLine,
- finalize: finalize,
- processInlines: processInlines,
- closeUnmatchedBlocks: closeUnmatchedBlocks,
- parse: parse,
- options: options || {}
- };
- }
-
- function Renderer() {}
-
- /**
- * Walks the AST and calls member methods for each Node type.
- *
- * @param ast {Node} The root of the abstract syntax tree.
- */
- function render(ast) {
- var walker = ast.walker(),
- event,
- type;
-
- this.buffer = "";
- this.lastOut = "\n";
-
- while ((event = walker.next())) {
- type = event.node.type;
- if (this[type]) {
- this[type](event.node, event.entering);
- }
- }
- return this.buffer;
- }
-
- /**
- * Concatenate a literal string to the buffer.
- *
- * @param str {String} The string to concatenate.
- */
- function lit(str) {
- this.buffer += str;
- this.lastOut = str;
- }
-
- /**
- * Output a newline to the buffer.
- */
- function cr() {
- if (this.lastOut !== "\n") {
- this.lit("\n");
- }
- }
-
- /**
- * Concatenate a string to the buffer possibly escaping the content.
- *
- * Concrete renderer implementations should override this method.
- *
- * @param str {String} The string to concatenate.
- */
- function out(str) {
- this.lit(str);
- }
-
- /**
- * Escape a string for the target renderer.
- *
- * Abstract function that should be implemented by concrete
- * renderer implementations.
- *
- * @param str {String} The string to escape.
- */
- function esc(str) {
- return str;
- }
-
- Renderer.prototype.render = render;
- Renderer.prototype.out = out;
- Renderer.prototype.lit = lit;
- Renderer.prototype.cr = cr;
- Renderer.prototype.esc = esc;
-
- var reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i;
- var reSafeDataProtocol = /^data:image\/(?:png|gif|jpeg|webp)/i;
-
- var potentiallyUnsafe = function(url) {
- return reUnsafeProtocol.test(url) && !reSafeDataProtocol.test(url);
- };
-
- // Helper function to produce an HTML tag.
- function tag(name, attrs, selfclosing) {
- if (this.disableTags > 0) {
- return;
- }
- this.buffer += "<" + name;
- if (attrs && attrs.length > 0) {
- var i = 0;
- var attrib;
- while ((attrib = attrs[i]) !== undefined) {
- this.buffer += " " + attrib[0] + '="' + attrib[1] + '"';
- i++;
- }
- }
- if (selfclosing) {
- this.buffer += " /";
- }
- this.buffer += ">";
- this.lastOut = ">";
- }
-
- function HtmlRenderer(options) {
- options = options || {};
- // by default, soft breaks are rendered as newlines in HTML
- options.softbreak = options.softbreak || "\n";
- // set to "
" to make them hard breaks
- // set to " " if you want to ignore line wrapping in source
-
- this.disableTags = 0;
- this.lastOut = "\n";
- this.options = options;
- }
-
- /* Node methods */
-
- function text$1(node) {
- this.out(node.literal);
- }
-
- function softbreak() {
- this.lit(this.options.softbreak);
- }
-
- function linebreak() {
- this.tag("br", [], true);
- this.cr();
- }
-
- function link(node, entering) {
- var attrs = this.attrs(node);
- if (entering) {
- if (!(this.options.safe && potentiallyUnsafe(node.destination))) {
- attrs.push(["href", this.esc(node.destination)]);
- }
- if (node.title) {
- attrs.push(["title", this.esc(node.title)]);
- }
- this.tag("a", attrs);
- } else {
- this.tag("/a");
- }
- }
-
- function image$1(node, entering) {
- if (entering) {
- if (this.disableTags === 0) {
- if (this.options.safe && potentiallyUnsafe(node.destination)) {
- this.lit('
');
- }
- }
- }
-
- function emph(node, entering) {
- this.tag(entering ? "em" : "/em");
- }
-
- function strong(node, entering) {
- this.tag(entering ? "strong" : "/strong");
- }
-
- function paragraph(node, entering) {
- var grandparent = node.parent.parent,
- attrs = this.attrs(node);
- if (grandparent !== null && grandparent.type === "list") {
- if (grandparent.listTight) {
- return;
- }
- }
- if (entering) {
- this.cr();
- this.tag("p", attrs);
- } else {
- this.tag("/p");
- this.cr();
- }
- }
-
- function heading(node, entering) {
- var tagname = "h" + node.level,
- attrs = this.attrs(node);
- if (entering) {
- this.cr();
- this.tag(tagname, attrs);
- } else {
- this.tag("/" + tagname);
- this.cr();
- }
- }
-
- function code(node) {
- this.tag("code");
- this.out(node.literal);
- this.tag("/code");
- }
-
- function code_block(node) {
- var info_words = node.info ? node.info.split(/\s+/) : [],
- attrs = this.attrs(node);
- if (info_words.length > 0 && info_words[0].length > 0) {
- attrs.push(["class", "language-" + this.esc(info_words[0])]);
- }
- this.cr();
- this.tag("pre");
- this.tag("code", attrs);
- this.out(node.literal);
- this.tag("/code");
- this.tag("/pre");
- this.cr();
- }
-
- function thematic_break(node) {
- var attrs = this.attrs(node);
- this.cr();
- this.tag("hr", attrs, true);
- this.cr();
- }
-
- function block_quote(node, entering) {
- var attrs = this.attrs(node);
- if (entering) {
- this.cr();
- this.tag("blockquote", attrs);
- this.cr();
- } else {
- this.cr();
- this.tag("/blockquote");
- this.cr();
- }
- }
-
- function list(node, entering) {
- var tagname = node.listType === "bullet" ? "ul" : "ol",
- attrs = this.attrs(node);
-
- if (entering) {
- var start = node.listStart;
- if (start !== null && start !== 1) {
- attrs.push(["start", start.toString()]);
- }
- this.cr();
- this.tag(tagname, attrs);
- this.cr();
- } else {
- this.cr();
- this.tag("/" + tagname);
- this.cr();
- }
- }
-
- function item(node, entering) {
- var attrs = this.attrs(node);
- if (entering) {
- this.tag("li", attrs);
- } else {
- this.tag("/li");
- this.cr();
- }
- }
-
- function html_inline(node) {
- if (this.options.safe) {
- this.lit("");
- } else {
- this.lit(node.literal);
- }
- }
-
- function html_block(node) {
- this.cr();
- if (this.options.safe) {
- this.lit("");
- } else {
- this.lit(node.literal);
- }
- this.cr();
- }
-
- function custom_inline(node, entering) {
- if (entering && node.onEnter) {
- this.lit(node.onEnter);
- } else if (!entering && node.onExit) {
- this.lit(node.onExit);
- }
- }
-
- function custom_block(node, entering) {
- this.cr();
- if (entering && node.onEnter) {
- this.lit(node.onEnter);
- } else if (!entering && node.onExit) {
- this.lit(node.onExit);
- }
- this.cr();
- }
-
- /* Helper methods */
-
- function out$1(s) {
- this.lit(this.esc(s));
- }
-
- function attrs(node) {
- var att = [];
- if (this.options.sourcepos) {
- var pos = node.sourcepos;
- if (pos) {
- att.push([
- "data-sourcepos",
- String(pos[0][0]) +
- ":" +
- String(pos[0][1]) +
- "-" +
- String(pos[1][0]) +
- ":" +
- String(pos[1][1])
- ]);
- }
- }
- return att;
- }
-
- // quick browser-compatible inheritance
- HtmlRenderer.prototype = Object.create(Renderer.prototype);
-
- HtmlRenderer.prototype.text = text$1;
- HtmlRenderer.prototype.html_inline = html_inline;
- HtmlRenderer.prototype.html_block = html_block;
- HtmlRenderer.prototype.softbreak = softbreak;
- HtmlRenderer.prototype.linebreak = linebreak;
- HtmlRenderer.prototype.link = link;
- HtmlRenderer.prototype.image = image$1;
- HtmlRenderer.prototype.emph = emph;
- HtmlRenderer.prototype.strong = strong;
- HtmlRenderer.prototype.paragraph = paragraph;
- HtmlRenderer.prototype.heading = heading;
- HtmlRenderer.prototype.code = code;
- HtmlRenderer.prototype.code_block = code_block;
- HtmlRenderer.prototype.thematic_break = thematic_break;
- HtmlRenderer.prototype.block_quote = block_quote;
- HtmlRenderer.prototype.list = list;
- HtmlRenderer.prototype.item = item;
- HtmlRenderer.prototype.custom_inline = custom_inline;
- HtmlRenderer.prototype.custom_block = custom_block;
-
- HtmlRenderer.prototype.esc = escapeXml;
-
- HtmlRenderer.prototype.out = out$1;
- HtmlRenderer.prototype.tag = tag;
- HtmlRenderer.prototype.attrs = attrs;
-
- var reXMLTag = /\<[^>]*\>/;
-
- function toTagName(s) {
- return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
- }
-
- function XmlRenderer(options) {
- options = options || {};
-
- this.disableTags = 0;
- this.lastOut = "\n";
-
- this.indentLevel = 0;
- this.indent = " ";
-
- this.options = options;
- }
-
- function render$1(ast) {
- this.buffer = "";
-
- var attrs;
- var tagname;
- var walker = ast.walker();
- var event, node, entering;
- var container;
- var selfClosing;
- var nodetype;
-
- var options = this.options;
-
- if (options.time) {
- console.time("rendering");
- }
-
- this.buffer += '\n';
- this.buffer += '\n';
-
- while ((event = walker.next())) {
- entering = event.entering;
- node = event.node;
- nodetype = node.type;
-
- container = node.isContainer;
-
- selfClosing =
- nodetype === "thematic_break" ||
- nodetype === "linebreak" ||
- nodetype === "softbreak";
-
- tagname = toTagName(nodetype);
-
- if (entering) {
- attrs = [];
-
- switch (nodetype) {
- case "document":
- attrs.push(["xmlns", "http://commonmark.org/xml/1.0"]);
- break;
- case "list":
- if (node.listType !== null) {
- attrs.push(["type", node.listType.toLowerCase()]);
- }
- if (node.listStart !== null) {
- attrs.push(["start", String(node.listStart)]);
- }
- if (node.listTight !== null) {
- attrs.push([
- "tight",
- node.listTight ? "true" : "false"
- ]);
- }
- var delim = node.listDelimiter;
- if (delim !== null) {
- var delimword = "";
- if (delim === ".") {
- delimword = "period";
- } else {
- delimword = "paren";
- }
- attrs.push(["delimiter", delimword]);
- }
- break;
- case "code_block":
- if (node.info) {
- attrs.push(["info", node.info]);
- }
- break;
- case "heading":
- attrs.push(["level", String(node.level)]);
- break;
- case "link":
- case "image":
- attrs.push(["destination", node.destination]);
- attrs.push(["title", node.title]);
- break;
- case "custom_inline":
- case "custom_block":
- attrs.push(["on_enter", node.onEnter]);
- attrs.push(["on_exit", node.onExit]);
- break;
- }
- if (options.sourcepos) {
- var pos = node.sourcepos;
- if (pos) {
- attrs.push([
- "sourcepos",
- String(pos[0][0]) +
- ":" +
- String(pos[0][1]) +
- "-" +
- String(pos[1][0]) +
- ":" +
- String(pos[1][1])
- ]);
- }
- }
-
- this.cr();
- this.out(this.tag(tagname, attrs, selfClosing));
- if (container) {
- this.indentLevel += 1;
- } else if (!container && !selfClosing) {
- var lit = node.literal;
- if (lit) {
- this.out(this.esc(lit));
- }
- this.out(this.tag("/" + tagname));
- }
- } else {
- this.indentLevel -= 1;
- this.cr();
- this.out(this.tag("/" + tagname));
- }
- }
- if (options.time) {
- console.timeEnd("rendering");
- }
- this.buffer += "\n";
- return this.buffer;
- }
-
- function out$2(s) {
- if (this.disableTags > 0) {
- this.buffer += s.replace(reXMLTag, "");
- } else {
- this.buffer += s;
- }
- this.lastOut = s;
- }
-
- function cr$1() {
- if (this.lastOut !== "\n") {
- this.buffer += "\n";
- this.lastOut = "\n";
- for (var i = this.indentLevel; i > 0; i--) {
- this.buffer += this.indent;
- }
- }
- }
-
- // Helper function to produce an XML tag.
- function tag$1(name, attrs, selfclosing) {
- var result = "<" + name;
- if (attrs && attrs.length > 0) {
- var i = 0;
- var attrib;
- while ((attrib = attrs[i]) !== undefined) {
- result += " " + attrib[0] + '="' + this.esc(attrib[1]) + '"';
- i++;
- }
- }
- if (selfclosing) {
- result += " /";
- }
- result += ">";
- return result;
- }
-
- // quick browser-compatible inheritance
- XmlRenderer.prototype = Object.create(Renderer.prototype);
-
- XmlRenderer.prototype.render = render$1;
- XmlRenderer.prototype.out = out$2;
- XmlRenderer.prototype.cr = cr$1;
- XmlRenderer.prototype.tag = tag$1;
- XmlRenderer.prototype.esc = escapeXml;
-
- exports.HtmlRenderer = HtmlRenderer;
- exports.Node = Node;
- exports.Parser = Parser;
- exports.Renderer = Renderer;
- exports.XmlRenderer = XmlRenderer;
-
- Object.defineProperty(exports, '__esModule', { value: true });
-
-})));
diff --git a/dist/commonmark.min.js b/dist/commonmark.min.js
deleted file mode 100644
index b50fb9a2..00000000
--- a/dist/commonmark.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/* commonmark 0.29 https://github.com/commonmark/commonmark.js @license BSD3 */
-!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e=e||self).commonmark={})}(this,function(e){"use strict";function i(e){switch(e._type){case"document":case"block_quote":case"list":case"item":case"paragraph":case"heading":case"emph":case"strong":case"link":case"image":case"custom_inline":case"custom_block":return!0;default:return!1}}function r(e,r){this.current=e,this.entering=!0===r}function t(){var e=this.current,r=this.entering;if(null===e)return null;var t=i(e);return r&&t?e._firstChild?(this.current=e._firstChild,this.entering=!0):this.entering=!1:e===this.root?this.current=null:null===e._next?(this.current=e._parent,this.entering=!1):(this.current=e._next,this.entering=!0),{entering:r,node:e}}function n(e){return{current:e,root:e,entering:!0,next:t,resumeAt:r}}function v(e,r){this._type=e,this._parent=null,this._firstChild=null,this._lastChild=null,this._prev=null,this._next=null,this._sourcepos=r,this._lastLineBlank=!1,this._lastLineChecked=!1,this._open=!0,this._string_content=null,this._literal=null,this._listData={},this._info=null,this._destination=null,this._title=null,this._isFenced=!1,this._fenceChar=null,this._fenceLength=0,this._fenceOffset=null,this._level=null,this._onEnter=null,this._onExit=null}var a=v.prototype;Object.defineProperty(a,"isContainer",{get:function(){return i(this)}}),Object.defineProperty(a,"type",{get:function(){return this._type}}),Object.defineProperty(a,"firstChild",{get:function(){return this._firstChild}}),Object.defineProperty(a,"lastChild",{get:function(){return this._lastChild}}),Object.defineProperty(a,"next",{get:function(){return this._next}}),Object.defineProperty(a,"prev",{get:function(){return this._prev}}),Object.defineProperty(a,"parent",{get:function(){return this._parent}}),Object.defineProperty(a,"sourcepos",{get:function(){return this._sourcepos}}),Object.defineProperty(a,"literal",{get:function(){return this._literal},set:function(e){this._literal=e}}),Object.defineProperty(a,"destination",{get:function(){return this._destination},set:function(e){this._destination=e}}),Object.defineProperty(a,"title",{get:function(){return this._title},set:function(e){this._title=e}}),Object.defineProperty(a,"info",{get:function(){return this._info},set:function(e){this._info=e}}),Object.defineProperty(a,"level",{get:function(){return this._level},set:function(e){this._level=e}}),Object.defineProperty(a,"listType",{get:function(){return this._listData.type},set:function(e){this._listData.type=e}}),Object.defineProperty(a,"listTight",{get:function(){return this._listData.tight},set:function(e){this._listData.tight=e}}),Object.defineProperty(a,"listStart",{get:function(){return this._listData.start},set:function(e){this._listData.start=e}}),Object.defineProperty(a,"listDelimiter",{get:function(){return this._listData.delimiter},set:function(e){this._listData.delimiter=e}}),Object.defineProperty(a,"onEnter",{get:function(){return this._onEnter},set:function(e){this._onEnter=e}}),Object.defineProperty(a,"onExit",{get:function(){return this._onExit},set:function(e){this._onExit=e}}),v.prototype.appendChild=function(e){e.unlink(),(e._parent=this)._lastChild?(this._lastChild._next=e)._prev=this._lastChild:this._firstChild=e,this._lastChild=e},v.prototype.prependChild=function(e){e.unlink(),(e._parent=this)._firstChild?((this._firstChild._prev=e)._next=this._firstChild,this._firstChild=e):(this._firstChild=e,this._lastChild=e)},v.prototype.unlink=function(){this._prev?this._prev._next=this._next:this._parent&&(this._parent._firstChild=this._next),this._next?this._next._prev=this._prev:this._parent&&(this._parent._lastChild=this._prev),this._parent=null,this._next=null,this._prev=null},v.prototype.insertAfter=function(e){e.unlink(),e._next=this._next,e._next&&(e._next._prev=e),((e._prev=this)._next=e)._parent=this._parent,e._next||(e._parent._lastChild=e)},v.prototype.insertBefore=function(e){e.unlink(),e._prev=this._prev,e._prev&&(e._prev._next=e),((e._next=this)._prev=e)._parent=this._parent,e._prev||(e._parent._firstChild=e)},v.prototype.walker=function(){return new n(this)};var c={};function u(e,r,t){var i,n,a,s,o,l="";for("string"!=typeof r&&(t=r,r=u.defaultChars),void 0===t&&(t=!0),o=function(e){var r,t,i=c[e];if(i)return i;for(i=c[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),/^[0-9a-z]$/i.test(t)?i.push(t):i.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;r",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",in:"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"",InvisibleTimes:"",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"",NegativeThickSpace:"",NegativeThinSpace:"",NegativeVeryThinSpace:"",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:" ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"",zwnj:""},d=Object.freeze({__proto__:null,Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"",InvisibleTimes:"",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"",NegativeThickSpace:"",NegativeThinSpace:"",NegativeVeryThinSpace:"",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:" ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"",zwnj:"",default:h}),f={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",amp:"&",AMP:"&",Aring:"Å",aring:"å",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",brvbar:"¦",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",iquest:"¿",Iuml:"Ï",iuml:"ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",Ntilde:"Ñ",ntilde:"ñ",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",Ograve:"Ò",ograve:"ò",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",Ouml:"Ö",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",THORN:"Þ",thorn:"þ",times:"×",Uacute:"Ú",uacute:"ú",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",Uuml:"Ü",uuml:"ü",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ"},m=Object.freeze({__proto__:null,Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",amp:"&",AMP:"&",Aring:"Å",aring:"å",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",brvbar:"¦",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",iquest:"¿",Iuml:"Ï",iuml:"ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",Ntilde:"Ñ",ntilde:"ñ",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",Ograve:"Ò",ograve:"ò",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",Ouml:"Ö",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",THORN:"Þ",thorn:"þ",times:"×",Uacute:"Ú",uacute:"ú",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",Uuml:"Ü",uuml:"ü",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ",default:f}),b={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'},q=Object.freeze({__proto__:null,amp:"&",apos:"'",gt:">",lt:"<",quot:'"',default:b}),w=p(Object.freeze({__proto__:null,default:{0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}})),y=l(function(e,r){var t=g&&g.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0});var i=t(w);r.default=function(e){if(55296<=e&&e<=57343||1114111>>10&1023|55296),e=56320|1023&e),r+=String.fromCharCode(e)}});o(y);var k=p(d),D=p(m),x=p(q),L=l(function(e,r){var t=g&&g.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0});var o=t(k),l=t(D),i=t(x),n=t(y);function a(e){var r=Object.keys(e).join("|"),t=u(e);r+="|#[xX][\\da-fA-F]+|#\\d+";var i=new RegExp("&(?:"+r+");","g");return function(e){return String(e).replace(i,t)}}r.decodeXML=a(i.default),r.decodeHTMLStrict=a(o.default);function c(e,r){return e":return">";case'"':return""";default:return e}}function S(e){return M.test(e)?e.replace(M,T):e}var N,F,R=E.decodeHTML,B=(E.decodeHTMLStrict,E.decodeHTML4,E.decodeHTML5,E.decodeHTML4Strict,E.decodeHTML5Strict,E.decodeXMLStrict,"&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});"),O="[A-Za-z][A-Za-z0-9-]*",U="<"+O+"(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>",V=""+O+"\\s*[>]",H=new RegExp("^(?:<[A-Za-z][A-Za-z0-9-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>|[A-Za-z][A-Za-z0-9-]*\\s*[>]|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|[<][?][\\s\\S]*?[?][>]|]*>|)"),P=/[\\&]/,j="[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]",z=new RegExp("\\\\"+j+"|"+B,"gi"),M=new RegExp('[&<>"]',"g");function G(e){return N(e)}if(String.fromCodePoint)N=function(e){try{return String.fromCodePoint(e)}catch(e){if(e instanceof RangeError)return String.fromCharCode(65533);throw e}};else{var I=String.fromCharCode,Z=Math.floor;N=function(){var e,r,t=[],i=-1,n=arguments.length;if(!n)return"";for(var a="";++i>10),r=s%1024+56320,t.push(e,r)),(i+1===n||16384>=1;return i}String.prototype.repeat||((F=function(){try{var e={},r=Object.defineProperty,t=r(e,e,e)&&r}catch(e){}return t}())?F(String.prototype,"repeat",{value:X,configurable:!0,writable:!0}):String.prototype.repeat=X);function Y(e){var r=new v("text");return r._literal=e,r}function J(e){return e.slice(1,e.length-1).trim().replace(/[ \t\r\n]+/," ").toLowerCase().toUpperCase()}var $=function(r){try{return s(r)}catch(e){return r}},Q=C,K=j,W="\\\\"+K,ee=H,re=new RegExp(/[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/),te=new RegExp('^(?:"('+W+'|[^"\\x00])*"|\'('+W+"|[^'\\x00])*'|\\(("+W+"|[^()\\x00])*\\))"),ie=/^(?:<(?:[^<>\n\\\x00]|\\.)*>)/,ne=new RegExp("^"+K),ae=new RegExp("^&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});","i"),se=/`+/,oe=/^`+/,le=/\.\.\./g,ce=/--+/g,ue=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,pe=/^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i,he=/^ *(?:\n *)?/,de=/^[ \t\n\x0b\x0c\x0d]/,fe=/^\s/,ge=/ *$/,me=/^ */,be=/^ *(?:\n|$)/,ve=/^\[(?:[^\\\[\]]|\\.){0,1000}\]/,qe=/^[^\n`\[\]\\!<&*_'"]+/m,we=function(e){var r=e.exec(this.subject.slice(this.pos));return null===r?null:(this.pos+=r.index+r[0].length,r[0])},ye=function(){return this.pos|$)/i,/^/,/\?>/,/>/,/\]\]>/],lr=/^(?:(?:\*[ \t]*){3,}|(?:_[ \t]*){3,}|(?:-[ \t]*){3,})[ \t]*$/,cr=/^[#`~*+_=<>0-9-]/,ur=/[^ \t\f\v\r\n]/,pr=/^[*+-]/,hr=/^(\d{1,9})([.)])/,dr=/^#{1,6}(?:[ \t]+|$)/,fr=/^`{3,}(?!.*`)|^~{3,}/,gr=/^(?:`{3,}|~{3,})(?= *$)/,mr=/^(?:=+|-+)[ \t]*$/,br=/\r\n|\n|\r/,vr={document:{continue:function(){return 0},finalize:function(){},canContain:function(e){return"item"!==e},acceptsLines:!1},list:{continue:function(){return 0},finalize:function(e,r){for(var t=r._firstChild;t;){if(Ye(t)&&t._next){r._listData.tight=!1;break}for(var i=t._firstChild;i;){if(Ye(i)&&(t._next||i._next)){r._listData.tight=!1;break}i=i._next}t=t._next}},canContain:function(e){return"item"===e},acceptsLines:!1},block_quote:{continue:function(e){var r=e.currentLine;return e.indented||62!==Xe(r,e.nextNonspace)?1:(e.advanceNextNonspace(),e.advanceOffset(1,!1),Ze(Xe(r,e.offset))&&e.advanceOffset(1,!0),0)},finalize:function(){},canContain:function(e){return"item"!==e},acceptsLines:!1},item:{continue:function(e,r){if(e.blank){if(null==r._firstChild)return 1;e.advanceNextNonspace()}else{if(!(e.indent>=r._listData.markerOffset+r._listData.padding))return 1;e.advanceOffset(r._listData.markerOffset+r._listData.padding,!0)}return 0},finalize:function(){},canContain:function(e){return"item"!==e},acceptsLines:!1},heading:{continue:function(){return 1},finalize:function(){},canContain:function(){return!1},acceptsLines:!1},thematic_break:{continue:function(){return 1},finalize:function(){},canContain:function(){return!1},acceptsLines:!1},code_block:{continue:function(e,r){var t=e.currentLine,i=e.indent;if(r._isFenced){var n=i<=3&&t.charAt(e.nextNonspace)===r._fenceChar&&t.slice(e.nextNonspace).match(gr);if(n&&n[0].length>=r._fenceLength)return e.lastLineLength=e.offset+i+n[0].length,e.finalize(r,e.lineNumber),2;for(var a=r._fenceOffset;0')))},xr.prototype.emph=function(e,r){this.tag(r?"em":"/em")},xr.prototype.strong=function(e,r){this.tag(r?"strong":"/strong")},xr.prototype.paragraph=function(e,r){var t=e.parent.parent,i=this.attrs(e);null!==t&&"list"===t.type&&t.listTight||(r?(this.cr(),this.tag("p",i)):(this.tag("/p"),this.cr()))},xr.prototype.heading=function(e,r){var t="h"+e.level,i=this.attrs(e);r?(this.cr(),this.tag(t,i)):(this.tag("/"+t),this.cr())},xr.prototype.code=function(e){this.tag("code"),this.out(e.literal),this.tag("/code")},xr.prototype.code_block=function(e){var r=e.info?e.info.split(/\s+/):[],t=this.attrs(e);0",this.lastOut=">"}},xr.prototype.attrs=function(e){var r=[];if(this.options.sourcepos){var t=e.sourcepos;t&&r.push(["data-sourcepos",String(t[0][0])+":"+String(t[0][1])+"-"+String(t[1][0])+":"+String(t[1][1])])}return r};var Lr=/\<[^>]*\>/;function _r(e){e=e||{},this.disableTags=0,this.lastOut="\n",this.indentLevel=0,this.indent=" ",this.options=e}(_r.prototype=Object.create(wr.prototype)).render=function(e){var r,t;this.buffer="";var i,n,a,s,o,l,c=e.walker(),u=this.options;for(u.time&&console.time("rendering"),this.buffer+='\n',this.buffer+='\n';i=c.next();)if(a=i.entering,l=(n=i.node).type,s=n.isContainer,o="thematic_break"===l||"linebreak"===l||"softbreak"===l,t=l.replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase(),a){switch(r=[],l){case"document":r.push(["xmlns","http://commonmark.org/xml/1.0"]);break;case"list":null!==n.listType&&r.push(["type",n.listType.toLowerCase()]),null!==n.listStart&&r.push(["start",String(n.listStart)]),null!==n.listTight&&r.push(["tight",n.listTight?"true":"false"]);var p=n.listDelimiter;if(null!==p){var h="";h="."===p?"period":"paren",r.push(["delimiter",h])}break;case"code_block":n.info&&r.push(["info",n.info]);break;case"heading":r.push(["level",String(n.level)]);break;case"link":case"image":r.push(["destination",n.destination]),r.push(["title",n.title]);break;case"custom_inline":case"custom_block":r.push(["on_enter",n.onEnter]),r.push(["on_exit",n.onExit])}if(u.sourcepos){var d=n.sourcepos;d&&r.push(["sourcepos",String(d[0][0])+":"+String(d[0][1])+"-"+String(d[1][0])+":"+String(d[1][1])])}if(this.cr(),this.out(this.tag(t,r,o)),s)this.indentLevel+=1;else if(!s&&!o){var f=n.literal;f&&this.out(this.esc(f)),this.out(this.tag("/"+t))}}else--this.indentLevel,this.cr(),this.out(this.tag("/"+t));return u.time&&console.timeEnd("rendering"),this.buffer+="\n",this.buffer},_r.prototype.out=function(e){0"},_r.prototype.esc=S,e.HtmlRenderer=xr,e.Node=v,e.Parser=function(e){return{doc:new nr,blocks:vr,blockStarts:qr,tip:this.doc,oldtip:this.doc,currentLine:"",lineNumber:0,offset:0,column:0,nextNonspace:0,nextNonspaceColumn:0,indent:0,indented:!1,blank:!1,partiallyConsumedTab:!1,allClosed:!0,lastMatchedContainer:this.doc,refmap:{},lastLineLength:0,inlineParser:new Ie(e),findNextNonspace:er,advanceOffset:Ke,advanceNextNonspace:We,addLine:Je,addChild:$e,incorporateLine:rr,finalize:tr,processInlines:ir,closeUnmatchedBlocks:Qe,parse:ar,options:e||{}}},e.Renderer=wr,e.XmlRenderer=_r,Object.defineProperty(e,"__esModule",{value:!0})});
diff --git a/dist/package.json b/dist/package.json
deleted file mode 100644
index 5bbefffb..00000000
--- a/dist/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "type": "commonjs"
-}
diff --git a/lib/blocks.js b/lib/blocks.js
index 0fc3a16e..aba1eacf 100644
--- a/lib/blocks.js
+++ b/lib/blocks.js
@@ -18,9 +18,9 @@ var reHtmlBlockOpen = [
/^<(?:script|pre|textarea|style)(?:\s|>|$)/i,
/^|";
+var HTMLCOMMENT = "||"
var PROCESSINGINSTRUCTION = "[<][?][\\s\\S]*?[?][>]";
-var DECLARATION = "]*>";
+var DECLARATION = "]*>";
var CDATA = "";
var HTMLTAG =
"(?:" +
@@ -58,7 +58,7 @@ var unescapeChar = function(s) {
if (s.charCodeAt(0) === C_BACKSLASH) {
return s.charAt(1);
} else {
- return decodeHTML(s);
+ return decodeHTMLStrict(s);
}
};
diff --git a/lib/index.js b/lib/index.js
index 5d437197..355715b2 100755
--- a/lib/index.js
+++ b/lib/index.js
@@ -1,6 +1,6 @@
"use strict";
-// commonmark.js - CommomMark in JavaScript
+// commonmark.js - CommonMark in JavaScript
// Copyright (C) 2014 John MacFarlane
// License: BSD3.
diff --git a/lib/inlines.js b/lib/inlines.js
index 81e9760a..a8d9d6ed 100644
--- a/lib/inlines.js
+++ b/lib/inlines.js
@@ -3,8 +3,7 @@
import Node from "./node.js";
import * as common from "./common.js";
import fromCodePoint from "./from-code-point.js";
-import { decodeHTML } from "entities";
-import "string.prototype.repeat"; // Polyfill for String.prototype.repeat
+import { decodeHTMLStrict } from "entities";
var normalizeURI = common.normalizeURI;
var unescapeString = common.unescapeString;
@@ -36,21 +35,23 @@ var ENTITY = common.ENTITY;
var reHtmlTag = common.reHtmlTag;
var rePunctuation = new RegExp(
- /[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/
-);
+ /^[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\p{P}\p{S}]/u);
var reLinkTitle = new RegExp(
'^(?:"(' +
ESCAPED_CHAR +
- '|[^"\\x00])*"' +
+ '|\\\\[^\\\\]' +
+ '|[^\\\\"\\x00])*"' +
"|" +
"'(" +
ESCAPED_CHAR +
- "|[^'\\x00])*'" +
+ '|\\\\[^\\\\]' +
+ "|[^\\\\'\\x00])*'" +
"|" +
"\\((" +
ESCAPED_CHAR +
- "|[^()\\x00])*\\))"
+ '|\\\\[^\\\\]' +
+ "|[^\\\\()\\x00])*\\))"
);
var reLinkDestinationBraces = /^(?:<(?:[^<>\n\\\x00]|\\.)*>)/;
@@ -83,7 +84,7 @@ var reInitialSpace = /^ */;
var reSpaceAtEndOfLine = /^ *(?:\n|$)/;
-var reLinkLabel = /^\[(?:[^\\\[\]]|\\.){0,1000}\]/;
+var reLinkLabel = /^\[(?:[^\\\[\]]|\\.){0,1000}\]/s;
// Matches a string of non-special characters.
var reMain = /^[^\n`\[\]\\!<&*_'"]+/m;
@@ -101,7 +102,7 @@ var normalizeReference = function(string) {
return string
.slice(1, string.length - 1)
.trim()
- .replace(/[ \t\r\n]+/, " ")
+ .replace(/[ \t\r\n]+/g, " ")
.toLowerCase()
.toUpperCase();
};
@@ -126,9 +127,10 @@ var match = function(re) {
// Returns the code for the character at the current subject position, or -1
// there are no more characters.
+// This function must be non-BMP aware because the Unicode category of its result is used.
var peek = function() {
if (this.pos < this.subject.length) {
- return this.subject.charCodeAt(this.pos);
+ return this.subject.codePointAt(this.pos);
} else {
return -1;
}
@@ -269,7 +271,7 @@ var scanDelims = function(cc) {
return null;
}
- char_before = startpos === 0 ? "\n" : this.subject.charAt(startpos - 1);
+ char_before = previousChar(this.subject, startpos);
cc_after = this.peek();
if (cc_after === -1) {
@@ -303,6 +305,25 @@ var scanDelims = function(cc) {
}
this.pos = startpos;
return { numdelims: numdelims, can_open: can_open, can_close: can_close };
+
+ function previousChar(str, pos) {
+ if (pos === 0) {
+ return "\n";
+ }
+ var previous_cc = str.charCodeAt(pos - 1);
+ // not low surrogate (BMP)
+ if ((previous_cc & 0xfc00) !== 0xdc00) {
+ return str.charAt(pos - 1);
+ }
+ // returns NaN if out of range
+ var two_previous_cc = str.charCodeAt(pos - 2);
+ // NaN & 0xfc00 = 0
+ // checks if 2 previous char is high surrogate
+ if ((two_previous_cc & 0xfc00) !== 0xd800) {
+ return previous_char;
+ }
+ return str.slice(pos - 2, pos);
+ }
};
// Handle a delimiter marker for emphasis or a quote.
@@ -375,14 +396,12 @@ var processEmphasis = function(stack_bottom) {
var use_delims;
var tmp, next;
var opener_found;
- var openers_bottom = [[], [], []];
+ var openers_bottom = [];
+ var openers_bottom_index;
var odd_match = false;
- for (var i = 0; i < 3; i++) {
- openers_bottom[i][C_UNDERSCORE] = stack_bottom;
- openers_bottom[i][C_ASTERISK] = stack_bottom;
- openers_bottom[i][C_SINGLEQUOTE] = stack_bottom;
- openers_bottom[i][C_DOUBLEQUOTE] = stack_bottom;
+ for (var i = 0; i < 14; i++) {
+ openers_bottom[i] = stack_bottom;
}
// find first closer above stack_bottom:
closer = this.delimiters;
@@ -398,10 +417,26 @@ var processEmphasis = function(stack_bottom) {
// found emphasis closer. now look back for first matching opener:
opener = closer.previous;
opener_found = false;
+ switch (closercc) {
+ case C_SINGLEQUOTE:
+ openers_bottom_index = 0;
+ break;
+ case C_DOUBLEQUOTE:
+ openers_bottom_index = 1;
+ break;
+ case C_UNDERSCORE:
+ openers_bottom_index = 2 + (closer.can_open ? 3 : 0)
+ + (closer.origdelims % 3);
+ break;
+ case C_ASTERISK:
+ openers_bottom_index = 8 + (closer.can_open ? 3 : 0)
+ + (closer.origdelims % 3);
+ break;
+ }
while (
opener !== null &&
opener !== stack_bottom &&
- opener !== openers_bottom[closer.origdelims % 3][closercc]
+ opener !== openers_bottom[openers_bottom_index]
) {
odd_match =
(closer.can_open || opener.can_close) &&
@@ -482,7 +517,7 @@ var processEmphasis = function(stack_bottom) {
}
if (!opener_found) {
// Set lower bound for future searches for openers:
- openers_bottom[old_closer.origdelims % 3][closercc] =
+ openers_bottom[openers_bottom_index] =
old_closer.previous;
if (!old_closer.can_open) {
// We can remove a closer that can't be an opener,
@@ -507,7 +542,7 @@ var parseLinkTitle = function() {
return null;
} else {
// chop off quotes from title and unescape:
- return unescapeString(title.substr(1, title.length - 2));
+ return unescapeString(title.slice(1, -1));
}
};
@@ -554,11 +589,11 @@ var parseLinkDestination = function() {
if (openparens !== 0) {
return null;
}
- res = this.subject.substr(savepos, this.pos - savepos);
+ res = this.subject.slice(savepos, this.pos);
return normalizeURI(unescapeString(res));
} else {
// chop off surrounding <..>:
- return normalizeURI(unescapeString(res.substr(1, res.length - 2)));
+ return normalizeURI(unescapeString(res.slice(1, -1)));
}
};
@@ -756,7 +791,7 @@ var removeBracket = function() {
var parseEntity = function(block) {
var m;
if ((m = this.match(reEntityHere))) {
- block.appendChild(text(decodeHTML(m)));
+ block.appendChild(text(decodeHTMLStrict(m)));
return true;
} else {
return false;
@@ -843,7 +878,7 @@ var parseReference = function(s, refmap) {
if (matchChars === 0) {
return 0;
} else {
- rawlabel = this.subject.substr(0, matchChars);
+ rawlabel = this.subject.slice(0, matchChars);
}
// colon:
@@ -869,7 +904,6 @@ var parseReference = function(s, refmap) {
title = this.parseLinkTitle();
}
if (title === null) {
- title = "";
// rewind before spaces
this.pos = beforetitle;
}
@@ -877,13 +911,13 @@ var parseReference = function(s, refmap) {
// make sure we're at line end:
var atLineEnd = true;
if (this.match(reSpaceAtEndOfLine) === null) {
- if (title === "") {
+ if (title === null) {
atLineEnd = false;
} else {
// the potential title we found is not at the line end,
// but it could still be a legal link reference if we
// discard the title
- title = "";
+ title = null;
// rewind before spaces
this.pos = beforetitle;
// and instead check if the link URL is at the line end
@@ -904,7 +938,7 @@ var parseReference = function(s, refmap) {
}
if (!refmap[normlabel]) {
- refmap[normlabel] = { destination: dest, title: title };
+ refmap[normlabel] = { destination: dest, title: title === null ? "" : title };
}
return this.pos - startpos;
};
@@ -966,13 +1000,38 @@ var parseInline = function(block) {
// Parse string content in block into inline children,
// using refmap to resolve references.
var parseInlines = function(block) {
- this.subject = block._string_content.trim();
+ // String.protoype.trim() removes non-ASCII whitespaces, vertical tab, form feed and so on.
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#return_value
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#white_space
+ // Removes only ASCII tab and space.
+ this.subject = trim(block._string_content)
this.pos = 0;
this.delimiters = null;
this.brackets = null;
while (this.parseInline(block)) {}
block._string_content = null; // allow raw string to be garbage collected
this.processEmphasis(null);
+
+ function trim(str) {
+ var start = 0;
+ for(; start < str.length; start++) {
+ if (!isSpace(str.charCodeAt(start))) {
+ break;
+ }
+ }
+ var end = str.length - 1;
+ for(; end >= start; end--) {
+ if (!isSpace(str.charCodeAt(end))) {
+ break;
+ }
+ }
+ return str.slice(start, end + 1);
+
+ function isSpace(c) {
+ // U+0020 = space, U+0009 = tab, U+000A = LF, U+000D = CR
+ return c === 0x20 || c === 9 || c === 0xa || c === 0xd;
+ }
+ }
};
// The InlineParser object.
diff --git a/lib/node.js b/lib/node.js
index 0e9c4b6f..12a17e03 100644
--- a/lib/node.js
+++ b/lib/node.js
@@ -74,8 +74,6 @@ var Node = function(nodeType, sourcepos) {
this._prev = null;
this._next = null;
this._sourcepos = sourcepos;
- this._lastLineBlank = false;
- this._lastLineChecked = false;
this._open = true;
this._string_content = null;
this._literal = null;
diff --git a/lib/render/html.js b/lib/render/html.js
index 17e44632..4dc2fb58 100644
--- a/lib/render/html.js
+++ b/lib/render/html.js
@@ -37,6 +37,9 @@ function HtmlRenderer(options) {
options.softbreak = options.softbreak || "\n";
// set to "
" to make them hard breaks
// set to " " if you want to ignore line wrapping in source
+ this.esc = options.esc || escapeXml;
+ // escape html with a custom function
+ // else use escapeXml
this.disableTags = 0;
this.lastOut = "\n";
@@ -141,7 +144,11 @@ function code_block(node) {
var info_words = node.info ? node.info.split(/\s+/) : [],
attrs = this.attrs(node);
if (info_words.length > 0 && info_words[0].length > 0) {
- attrs.push(["class", "language-" + this.esc(info_words[0])]);
+ var cls = this.esc(info_words[0]);
+ if (!/^language-/.exec(cls)) {
+ cls = "language-" + cls;
+ }
+ attrs.push(["class", cls]);
}
this.cr();
this.tag("pre");
diff --git a/lib/render/xml.js b/lib/render/xml.js
index e2d1c574..f39331ad 100644
--- a/lib/render/xml.js
+++ b/lib/render/xml.js
@@ -17,6 +17,10 @@ function XmlRenderer(options) {
this.indentLevel = 0;
this.indent = " ";
+
+ this.esc = options.esc || escapeXml;
+ // escape html with a custom function
+ // else use escapeXml
this.options = options;
}
diff --git a/package.json b/package.json
index 8b07ab5c..20f6c93a 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "commonmark",
"description": "a strongly specified, highly compatible variant of Markdown",
- "version": "0.29.3",
+ "version": "0.31.2",
"homepage": "https://commonmark.org",
"keywords": [
"markdown",
@@ -30,13 +30,14 @@
"scripts": {
"build": "rollup -c",
"lint": "eslint .",
- "test": "node ./test/test"
+ "test": "node ./test/test",
+ "prepublish": "npm run build",
+ "pretest": "npm run build"
},
"dependencies": {
- "entities": "~2.0",
+ "entities": "~3.0.1",
"mdurl": "~1.0.1",
- "minimist": ">=1.2.2",
- "string.prototype.repeat": "^0.2.0"
+ "minimist": "~1.2.8"
},
"directories": {
"lib": "./lib"
@@ -48,20 +49,20 @@
"@rollup/plugin-commonjs": "^11.0.1",
"@rollup/plugin-json": "^4.0.1",
"@rollup/plugin-node-resolve": "^7.0.0",
- "acorn": ">=5.7.4",
+ "acorn": ">=8.7.0",
"benchmark": "^2.1.4",
- "bower": "^1.8.8",
+ "bower": "^1.8.13",
"cached-path-relative": "^1.0.2",
- "eslint": "^7.4.0",
- "http-server": "^0.12.3",
- "lodash": "^4.17.19",
- "markdown-it": "^10.0",
- "marked": "^0.8.0",
+ "eslint": "^8.6.0",
+ "http-server": "^14.1.0",
+ "lodash": "^4.17.21",
+ "markdown-it": ">= 12.3",
+ "marked": ">=4.0.10",
"mem": ">=4.0.0",
"rollup": "^1.29.0",
"rollup-plugin-uglify": "^6.0.4",
+ "serialize-javascript": "^6.0.0",
"showdown": "^1.9.1",
- "uglify-js": "^3.4.0",
- "serialize-javascript": ">=3.1.0"
+ "uglify-js": "^3.14.5"
}
}
diff --git a/release_checklist.md b/release_checklist.md
index d1935c8a..455957f8 100644
--- a/release_checklist.md
+++ b/release_checklist.md
@@ -2,11 +2,10 @@ Release checklist
_ update changelog.txt
_ update version in package.json
-_ make dist
_ test
_ tag release
_ git push
_ git push --tags
+_ npm login
_ npm publish
_ create github release
-_ update babelmark2: copy commonmark.js to src/babelmark2/js on server
diff --git a/rollup b/rollup
deleted file mode 100644
index e69de29b..00000000
diff --git a/rollup.config.js b/rollup.config.js
index 2b2a4634..52195895 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -3,6 +3,9 @@ import nodeResolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import json from "@rollup/plugin-json";
import { uglify } from "rollup-plugin-uglify";
+import { version } from './package.json';
+
+var banner = "/* commonmark " + version + " https://github.com/commonmark/commonmark.js @license BSD3 */";
export default {
input: "lib/index.js",
@@ -10,12 +13,14 @@ export default {
{
file: "dist/commonmark.js",
format: "umd",
- name: "commonmark"
+ name: "commonmark",
+ banner: banner,
},
{
file: "dist/commonmark.min.js",
format: "umd",
name: "commonmark",
+ banner: banner,
plugins: [uglify()]
}
],
diff --git a/test/regression.txt b/test/regression.txt
index aeaf5973..624703bd 100644
--- a/test/regression.txt
+++ b/test/regression.txt
@@ -175,3 +175,390 @@ a
a
?>
````````````````````````````````
+
+Issue #211
+
+```````````````````````````````` example
+[\
+foo]: /uri
+
+[\
+foo]
+.
+
+foo
+````````````````````````````````
+
+Issue #213 - type 7 blocks can't interrupt
+paragraph
+
+```````````````````````````````` example
+-
+.
+
+````````````````````````````````
+
+Issue cmark/#383 - emphasis parsing.
+
+```````````````````````````````` example
+*****Hello*world****
+.
+**Helloworld
+````````````````````````````````
+
+Issue reported at
+https://talk.commonmark.org/t/link-label-collapse-all-internal-whitespace/3919/5
+
+```````````````````````````````` example
+[foo][one two
+ three]
+
+[one two three]: /url "title"
+.
+foo
+````````````````````````````````
+
+Issue #258
+
+```````````````````````````````` example
+```
+abc
+```
+.
+abc
+
+````````````````````````````````
+
+`
+.
+
+````````````````````````````````
+
+Declarations don't need spaces, according to the spec (cmark#456)
+```````````````````````````````` example
+x
+.
+x
+````````````````````````````````
+
+Block-quoted blank line shouldn't make parent list loose.
+```````````````````````````````` example
+## Case 1
+
+- > a
+ >
+- b
+
+
+## Case 2
+
+- > - a
+ >
+- b
+
+
+## Case 3
+
+- > > a
+ >
+- b
+
+
+## Case 4
+
+- > # a
+ >
+- b
+
+
+## Case 5
+
+- ```
+ The following line is part of code block.
+
+- b
+
+## Case 6
+
+- The following line is **not** part of code block.
+
+- b
+
+## Case 7
+
+- The following line is part of HTML block.
+
+-
+- b
+.
+Case 1
+
+Case 2
+
+Case 3
+
+Case 4
+
+Case 5
+
+Case 6
+
+Case 7
+
+````````````````````````````````
+
+Link reference definitions are blocks when checking list tightness.
+```````````````````````````````` example
+## Case 1
+
+- [aaa]: /
+
+ [aaa]: /
+- b
+
+
+## Case 2
+
+- a
+
+ [aaa]: /
+- b
+
+
+## Case 3
+
+- [aaa]: /
+
+ a
+- b
+.
+Case 1
+
+Case 2
+
+Case 3
+
+````````````````````````````````
+
+An underscore that is not part of a delimiter should not prevent another
+pair of underscores from forming part of their own.
+```````````````````````````````` example
+__!_!__
+
+__!x!__
+
+**!*!**
+
+---
+
+_*__*_*
+
+_*xx*_*
+
+_*__-_-
+
+_*xx-_-
+.
+!_!
+!x!
+!*!
+
+__*
+xx*
+*__--
+*xx--
+````````````````````````````````
+
+#277:
+```````````````````````````````` example
+```language-r
+x <- 1
+```
+
+```r
+x <- 1
+```
+.
+x <- 1
+
+x <- 1
+
+````````````````````````````````
+
+#278
+```````````````````````````````` example
+¶g;
+
+¶
+
+¶
+.
+¶g;
+¶
+¶
+````````````````````````````````
+
+#281
+```````````````````````````````` example
+[test]:example
+""third [test]
+.
+""third test
+````````````````````````````````
+
+#283
+```````````````````````````````` example
+x
+
+x
+.
+x
+x<!>
+````````````````````````````````
+
+#285
+```````````````````````````````` example
+foo
+
+foo
+
+foo
+
+foo more -->
+.
+foo
+foo
+foo
+foo more -->
+````````````````````````````````
+
+#261
+```````````````````````````````` example
+Vertical Tab
+
+Form Feed
+
+ NBSP (U+00A0) NBSP
+
+ Em Space (U+2003) Em Space
+
+
Line Separator (U+2028) Line Separator
+
+
Paragraph Separator (U+2029) Paragraph Separator
+
+ 全角スペース (U+3000) 全形空白
+
+ZWNBSP (U+FEFF) ZWNBSP
+.
+Vertical Tab
+Form Feed
+ NBSP (U+00A0) NBSP
+ Em Space (U+2003) Em Space
+
Line Separator (U+2028) Line Separator
+
Paragraph Separator (U+2029) Paragraph Separator
+ 全角スペース (U+3000) 全形空白
+ZWNBSP (U+FEFF) ZWNBSP
+````````````````````````````````
+
+#296
+```````````````````````````````` example
+a**a∇**a
+
+a**∇a**a
+
+a**a𝜵**a
+
+a**𝜵a**a
+.
+a**a∇**a
+a**∇a**a
+a**a𝜵**a
+a**𝜵a**a
+````````````````````````````````
diff --git a/test/spec.txt b/test/spec.txt
index 0d1d6ecb..f1fab281 100644
--- a/test/spec.txt
+++ b/test/spec.txt
@@ -1,9 +1,9 @@
---
title: CommonMark Spec
author: John MacFarlane
-version: 0.29
-date: '2019-04-06'
-license: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)'
+version: '0.31.2'
+date: '2024-01-28'
+license: '[CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)'
...
# Introduction
@@ -14,7 +14,7 @@ Markdown is a plain text format for writing structured documents,
based on conventions for indicating formatting in email
and usenet posts. It was developed by John Gruber (with
help from Aaron Swartz) and released in 2004 in the form of a
-[syntax description](http://daringfireball.net/projects/markdown/syntax)
+[syntax description](https://daringfireball.net/projects/markdown/syntax)
and a Perl script (`Markdown.pl`) for converting Markdown to
HTML. In the next decade, dozens of implementations were
developed in many languages. Some extended the original
@@ -34,10 +34,10 @@ As Gruber writes:
> Markdown-formatted document should be publishable as-is, as
> plain text, without looking like it's been marked up with tags
> or formatting instructions.
-> ()
+> ()
The point can be illustrated by comparing a sample of
-[AsciiDoc](http://www.methods.co.nz/asciidoc/) with
+[AsciiDoc](https://asciidoc.org/) with
an equivalent sample of Markdown. Here is a sample of
AsciiDoc from the AsciiDoc manual:
@@ -103,7 +103,7 @@ source, not just in the processed document.
## Why is a spec needed?
John Gruber's [canonical description of Markdown's
-syntax](http://daringfireball.net/projects/markdown/syntax)
+syntax](https://daringfireball.net/projects/markdown/syntax)
does not specify the syntax unambiguously. Here are some examples of
questions it does not answer:
@@ -114,7 +114,7 @@ questions it does not answer:
not require that. This is hardly a "corner case," and divergences
between implementations on this issue often lead to surprises for
users in real documents. (See [this comment by John
- Gruber](http://article.gmane.org/gmane.text.markdown.general/1997).)
+ Gruber](https://web.archive.org/web/20170611172104/http://article.gmane.org/gmane.text.markdown.general/1997).)
2. Is a blank line needed before a block quote or heading?
Most implementations do not require the blank line. However,
@@ -122,7 +122,7 @@ questions it does not answer:
also to ambiguities in parsing (note that some implementations
put the heading inside the blockquote, while others do not).
(John Gruber has also spoken [in favor of requiring the blank
- lines](http://article.gmane.org/gmane.text.markdown.general/2146).)
+ lines](https://web.archive.org/web/20170611172104/http://article.gmane.org/gmane.text.markdown.general/2146).)
3. Is a blank line needed before an indented code block?
(`Markdown.pl` requires it, but this is not mentioned in the
@@ -155,7 +155,7 @@ questions it does not answer:
```
(There are some relevant comments by John Gruber
- [here](http://article.gmane.org/gmane.text.markdown.general/2554).)
+ [here](https://web.archive.org/web/20170611172104/http://article.gmane.org/gmane.text.markdown.general/2554).)
5. Can list markers be indented? Can ordered list markers be right-aligned?
@@ -270,6 +270,16 @@ of representing the structural distinctions we need to make, and the
choice of HTML for the tests makes it possible to run the tests against
an implementation without writing an abstract syntax tree renderer.
+Note that not every feature of the HTML samples is mandated by
+the spec. For example, the spec says what counts as a link
+destination, but it doesn't mandate that non-ASCII characters in
+the URL be percent-encoded. To use the automatic tests,
+implementers will need to provide a renderer that conforms to
+the expectations of the spec examples (percent-encoding
+non-ASCII characters in URLs). But a conforming implementation
+can use a different renderer and may choose not to
+percent-encode non-ASCII characters in URLs.
+
This document is generated from a text file, `spec.txt`, written
in Markdown with a small extension for the side-by-side tests.
The script `tools/makespec.py` can be used to convert `spec.txt` into
@@ -306,9 +316,9 @@ A line containing no characters, or a line containing only spaces
The following definitions of character classes will be used in this spec:
-A [Unicode whitespace character](@) is
-any code point in the Unicode `Zs` general category, or a tab (`U+0009`),
-line feed (`U+000A`), form feed (`U+000C`), or carriage return (`U+000D`).
+A [Unicode whitespace character](@) is a character in the Unicode `Zs` general
+category, or a tab (`U+0009`), line feed (`U+000A`), form feed (`U+000C`), or
+carriage return (`U+000D`).
[Unicode whitespace](@) is a sequence of one or more
[Unicode whitespace characters].
@@ -327,9 +337,8 @@ is `!`, `"`, `#`, `$`, `%`, `&`, `'`, `(`, `)`,
`[`, `\`, `]`, `^`, `_`, `` ` `` (U+005B–0060),
`{`, `|`, `}`, or `~` (U+007B–007E).
-A [Unicode punctuation character](@) is an [ASCII
-punctuation character] or anything in
-the general Unicode categories `Pc`, `Pd`, `Pe`, `Pf`, `Pi`, `Po`, or `Ps`.
+A [Unicode punctuation character](@) is a character in the Unicode `P`
+(puncuation) or `S` (symbol) general categories.
## Tabs
@@ -569,9 +578,9 @@ raw HTML:
```````````````````````````````` example
-
+
.
-http://example.com?find=\*
+https://example.com?find=\*
````````````````````````````````
@@ -851,8 +860,8 @@ one block element does not affect the inline parsing of any other.
## Container blocks and leaf blocks
We can divide blocks into two types:
-[container blocks](@),
-which can contain other blocks, and [leaf blocks](@),
+[container blocks](#container-blocks),
+which can contain other blocks, and [leaf blocks](#leaf-blocks),
which cannot.
# Leaf blocks
@@ -1320,10 +1329,7 @@ interpretable as a [code fence], [ATX heading][ATX headings],
A [setext heading underline](@) is a sequence of
`=` characters or a sequence of `-` characters, with no more than 3
-spaces of indentation and any number of trailing spaces or tabs. If a line
-containing a single `-` can be interpreted as an
-empty [list items], it should be interpreted this way
-and not as a [setext heading underline].
+spaces of indentation and any number of trailing spaces or tabs.
The heading is a level 1 heading if `=` characters are used in
the [setext heading underline], and a level 2 heading if `-`
@@ -1957,7 +1963,7 @@ has been found, the code block contains all of the lines after the
opening code fence until the end of the containing block (or
document). (An alternative spec would require backtracking in the
event that a closing code fence is not found. But this makes parsing
-much less efficient, and there seems to be no real down side to the
+much less efficient, and there seems to be no real downside to the
behavior described here.)
A fenced code block may interrupt a paragraph, and does not require
@@ -2359,18 +2365,18 @@ as raw HTML (and will not be escaped in HTML output).
There are seven kinds of [HTML block], which can be defined by their
start and end conditions. The block begins with a line that meets a
[start condition](@) (after up to three optional spaces of indentation).
-It ends with the first subsequent line that meets a matching [end
-condition](@), or the last line of the document, or the last line of
+It ends with the first subsequent line that meets a matching
+[end condition](@), or the last line of the document, or the last line of
the [container block](#container-blocks) containing the current HTML
block, if no line is encountered that meets the [end condition]. If
the first line meets both the [start condition] and the [end
condition], the block will contain just that line.
-1. **Start condition:** line begins with the string ``, ``, ``, or `` (case-insensitive; it
+``, ``, ``, or `` (case-insensitive; it
need not match the start tag).
2. **Start condition:** line begins with the string ``,
-where *text* does not start with `>` or `->`, does not end with `-`,
-and does not contain `--`. (See the
-[HTML5 spec](http://www.w3.org/TR/html5/syntax.html#comments).)
+An [HTML comment](@) consists of ``, ``, or ``, and `-->` (see the
+[HTML spec](https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state)).
A [processing instruction](@)
consists of the string ``, a string
@@ -9121,30 +9132,20 @@ Illegal attributes in closing tag:
Comments:
```````````````````````````````` example
-foo
-.
-foo
-````````````````````````````````
-
-
-```````````````````````````````` example
-foo
+foo
.
-foo <!-- not a comment -- two hyphens -->
+foo
````````````````````````````````
-
-Not comments:
-
```````````````````````````````` example
foo foo -->
-foo
+foo foo -->
.
-foo <!--> foo -->
-foo <!-- foo--->
+foo foo -->
+foo foo -->
````````````````````````````````
@@ -9284,10 +9285,10 @@ bar
Hard line breaks do not occur inside code spans
```````````````````````````````` example
-`code
+`code
span`
.
-code span
+code span
````````````````````````````````
@@ -9673,7 +9674,7 @@ through the stack for an opening `[` or `![` delimiter.
delimiter from the stack, and return a literal text node `]`.
- If we find one and it's active, then we parse ahead to see if
- we have an inline link/image, reference link/image, compact reference
+ we have an inline link/image, reference link/image, collapsed reference
link/image, or shortcut reference link/image.
+ If we don't, then we remove the opening delimiter from the
@@ -9705,8 +9706,9 @@ just above `stack_bottom` (or the first element if `stack_bottom`
is NULL).
We keep track of the `openers_bottom` for each delimiter
-type (`*`, `_`) and each length of the closing delimiter run
-(modulo 3). Initialize this to `stack_bottom`.
+type (`*`, `_`), indexed to the length of the closing delimiter run
+(modulo 3) and to whether the closing delimiter can also be an
+opener. Initialize this to `stack_bottom`.
Then we repeat the following until we run out of potential
closers:
diff --git a/test/test.js b/test/test.js
index ca360948..34d1546d 100755
--- a/test/test.js
+++ b/test/test.js
@@ -289,6 +289,14 @@ for (x = 1000; x <= 10000; x *= 10) {
expected: "" + "[" + repeat("\\", x / 2) + "
\n"
});
}
+for (x = 10; x <= 1000; x *= 10) {
+ cases.push({
+ name: x + " backslashes in unclosed link title",
+ input: "[test](\\url \"" + repeat("\\", x) + "\n",
+ expected: "[test](\\url "" + repeat("\\", x / 2) + "
\n"
+ });
+}
+
// Commented out til we have a fix... see #129
// for (x = 1000; x <= 10000; x *= 10) {
// cases.push(