diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3b1467e65..fbef50ec3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,7 +11,7 @@
### Bug Fixes
-- Validation will no longer be skipped for sub packages when running with `--entryPointStrategy packages`.
+- Fixed `&` showing as `&` and HTML text showing up in page contents navigation, #2224.
- Increased padding between sections when one navigation column is displayed, #2225.
- Correct padding for navigation elements with a displayed icon, #2229.
- Fixed `source-order` sort strategy failing to compare reflections within a file.
@@ -23,6 +23,7 @@
- Fixed "Implementation of X.y" links if a mixture of methods and property-methods are used, #2233.
- "Implementation of" text to symbol-properties not contained in the documentation will now use the resolved name instead of a `__@` symbol name, #2234.
- Fix expansion of globs if a single entry point is provided, #2235.
+- Validation will no longer be skipped for sub packages when running with `--entryPointStrategy packages`.
- Fixed broken theme toggle if the page contained a member named "theme".
### Thanks!
diff --git a/src/lib/output/themes/MarkedPlugin.ts b/src/lib/output/themes/MarkedPlugin.ts
index 729d743e3..5038cefae 100644
--- a/src/lib/output/themes/MarkedPlugin.ts
+++ b/src/lib/output/themes/MarkedPlugin.ts
@@ -7,6 +7,7 @@ import { RendererEvent, MarkdownEvent, PageEvent } from "../events";
import { BindOption, readFile, copySync, isFile } from "../../utils";
import { highlight, isSupportedLanguage } from "../../utils/highlighter";
import type { Theme } from "shiki";
+import { getTextContent } from "../../utils/html";
/**
* Implements markdown and relativeURL helpers for templates.
@@ -192,7 +193,7 @@ output file :
// Prefix the slug with an extra `$` to prevent conflicts with TypeDoc's anchors.
this.page!.pageHeadings.push({
link: `#md:${slug}`,
- text,
+ text: getTextContent(text),
level,
});
return `${text}`;
diff --git a/src/lib/utils/html-entities.json b/src/lib/utils/html-entities.json
new file mode 100644
index 000000000..4715c8fb4
--- /dev/null
+++ b/src/lib/utils/html-entities.json
@@ -0,0 +1,2233 @@
+{
+ "AElig": "\u00C6",
+ "AElig;": "\u00C6",
+ "AMP": "\u0026",
+ "AMP;": "\u0026",
+ "Aacute": "\u00C1",
+ "Aacute;": "\u00C1",
+ "Abreve;": "\u0102",
+ "Acirc": "\u00C2",
+ "Acirc;": "\u00C2",
+ "Acy;": "\u0410",
+ "Afr;": "\uD835\uDD04",
+ "Agrave": "\u00C0",
+ "Agrave;": "\u00C0",
+ "Alpha;": "\u0391",
+ "Amacr;": "\u0100",
+ "And;": "\u2A53",
+ "Aogon;": "\u0104",
+ "Aopf;": "\uD835\uDD38",
+ "ApplyFunction;": "\u2061",
+ "Aring": "\u00C5",
+ "Aring;": "\u00C5",
+ "Ascr;": "\uD835\uDC9C",
+ "Assign;": "\u2254",
+ "Atilde": "\u00C3",
+ "Atilde;": "\u00C3",
+ "Auml": "\u00C4",
+ "Auml;": "\u00C4",
+ "Backslash;": "\u2216",
+ "Barv;": "\u2AE7",
+ "Barwed;": "\u2306",
+ "Bcy;": "\u0411",
+ "Because;": "\u2235",
+ "Bernoullis;": "\u212C",
+ "Beta;": "\u0392",
+ "Bfr;": "\uD835\uDD05",
+ "Bopf;": "\uD835\uDD39",
+ "Breve;": "\u02D8",
+ "Bscr;": "\u212C",
+ "Bumpeq;": "\u224E",
+ "CHcy;": "\u0427",
+ "COPY": "\u00A9",
+ "COPY;": "\u00A9",
+ "Cacute;": "\u0106",
+ "Cap;": "\u22D2",
+ "CapitalDifferentialD;": "\u2145",
+ "Cayleys;": "\u212D",
+ "Ccaron;": "\u010C",
+ "Ccedil": "\u00C7",
+ "Ccedil;": "\u00C7",
+ "Ccirc;": "\u0108",
+ "Cconint;": "\u2230",
+ "Cdot;": "\u010A",
+ "Cedilla;": "\u00B8",
+ "CenterDot;": "\u00B7",
+ "Cfr;": "\u212D",
+ "Chi;": "\u03A7",
+ "CircleDot;": "\u2299",
+ "CircleMinus;": "\u2296",
+ "CirclePlus;": "\u2295",
+ "CircleTimes;": "\u2297",
+ "ClockwiseContourIntegral;": "\u2232",
+ "CloseCurlyDoubleQuote;": "\u201D",
+ "CloseCurlyQuote;": "\u2019",
+ "Colon;": "\u2237",
+ "Colone;": "\u2A74",
+ "Congruent;": "\u2261",
+ "Conint;": "\u222F",
+ "ContourIntegral;": "\u222E",
+ "Copf;": "\u2102",
+ "Coproduct;": "\u2210",
+ "CounterClockwiseContourIntegral;": "\u2233",
+ "Cross;": "\u2A2F",
+ "Cscr;": "\uD835\uDC9E",
+ "Cup;": "\u22D3",
+ "CupCap;": "\u224D",
+ "DD;": "\u2145",
+ "DDotrahd;": "\u2911",
+ "DJcy;": "\u0402",
+ "DScy;": "\u0405",
+ "DZcy;": "\u040F",
+ "Dagger;": "\u2021",
+ "Darr;": "\u21A1",
+ "Dashv;": "\u2AE4",
+ "Dcaron;": "\u010E",
+ "Dcy;": "\u0414",
+ "Del;": "\u2207",
+ "Delta;": "\u0394",
+ "Dfr;": "\uD835\uDD07",
+ "DiacriticalAcute;": "\u00B4",
+ "DiacriticalDot;": "\u02D9",
+ "DiacriticalDoubleAcute;": "\u02DD",
+ "DiacriticalGrave;": "\u0060",
+ "DiacriticalTilde;": "\u02DC",
+ "Diamond;": "\u22C4",
+ "DifferentialD;": "\u2146",
+ "Dopf;": "\uD835\uDD3B",
+ "Dot;": "\u00A8",
+ "DotDot;": "\u20DC",
+ "DotEqual;": "\u2250",
+ "DoubleContourIntegral;": "\u222F",
+ "DoubleDot;": "\u00A8",
+ "DoubleDownArrow;": "\u21D3",
+ "DoubleLeftArrow;": "\u21D0",
+ "DoubleLeftRightArrow;": "\u21D4",
+ "DoubleLeftTee;": "\u2AE4",
+ "DoubleLongLeftArrow;": "\u27F8",
+ "DoubleLongLeftRightArrow;": "\u27FA",
+ "DoubleLongRightArrow;": "\u27F9",
+ "DoubleRightArrow;": "\u21D2",
+ "DoubleRightTee;": "\u22A8",
+ "DoubleUpArrow;": "\u21D1",
+ "DoubleUpDownArrow;": "\u21D5",
+ "DoubleVerticalBar;": "\u2225",
+ "DownArrow;": "\u2193",
+ "DownArrowBar;": "\u2913",
+ "DownArrowUpArrow;": "\u21F5",
+ "DownBreve;": "\u0311",
+ "DownLeftRightVector;": "\u2950",
+ "DownLeftTeeVector;": "\u295E",
+ "DownLeftVector;": "\u21BD",
+ "DownLeftVectorBar;": "\u2956",
+ "DownRightTeeVector;": "\u295F",
+ "DownRightVector;": "\u21C1",
+ "DownRightVectorBar;": "\u2957",
+ "DownTee;": "\u22A4",
+ "DownTeeArrow;": "\u21A7",
+ "Downarrow;": "\u21D3",
+ "Dscr;": "\uD835\uDC9F",
+ "Dstrok;": "\u0110",
+ "ENG;": "\u014A",
+ "ETH": "\u00D0",
+ "ETH;": "\u00D0",
+ "Eacute": "\u00C9",
+ "Eacute;": "\u00C9",
+ "Ecaron;": "\u011A",
+ "Ecirc": "\u00CA",
+ "Ecirc;": "\u00CA",
+ "Ecy;": "\u042D",
+ "Edot;": "\u0116",
+ "Efr;": "\uD835\uDD08",
+ "Egrave": "\u00C8",
+ "Egrave;": "\u00C8",
+ "Element;": "\u2208",
+ "Emacr;": "\u0112",
+ "EmptySmallSquare;": "\u25FB",
+ "EmptyVerySmallSquare;": "\u25AB",
+ "Eogon;": "\u0118",
+ "Eopf;": "\uD835\uDD3C",
+ "Epsilon;": "\u0395",
+ "Equal;": "\u2A75",
+ "EqualTilde;": "\u2242",
+ "Equilibrium;": "\u21CC",
+ "Escr;": "\u2130",
+ "Esim;": "\u2A73",
+ "Eta;": "\u0397",
+ "Euml": "\u00CB",
+ "Euml;": "\u00CB",
+ "Exists;": "\u2203",
+ "ExponentialE;": "\u2147",
+ "Fcy;": "\u0424",
+ "Ffr;": "\uD835\uDD09",
+ "FilledSmallSquare;": "\u25FC",
+ "FilledVerySmallSquare;": "\u25AA",
+ "Fopf;": "\uD835\uDD3D",
+ "ForAll;": "\u2200",
+ "Fouriertrf;": "\u2131",
+ "Fscr;": "\u2131",
+ "GJcy;": "\u0403",
+ "GT": "\u003E",
+ "GT;": "\u003E",
+ "Gamma;": "\u0393",
+ "Gammad;": "\u03DC",
+ "Gbreve;": "\u011E",
+ "Gcedil;": "\u0122",
+ "Gcirc;": "\u011C",
+ "Gcy;": "\u0413",
+ "Gdot;": "\u0120",
+ "Gfr;": "\uD835\uDD0A",
+ "Gg;": "\u22D9",
+ "Gopf;": "\uD835\uDD3E",
+ "GreaterEqual;": "\u2265",
+ "GreaterEqualLess;": "\u22DB",
+ "GreaterFullEqual;": "\u2267",
+ "GreaterGreater;": "\u2AA2",
+ "GreaterLess;": "\u2277",
+ "GreaterSlantEqual;": "\u2A7E",
+ "GreaterTilde;": "\u2273",
+ "Gscr;": "\uD835\uDCA2",
+ "Gt;": "\u226B",
+ "HARDcy;": "\u042A",
+ "Hacek;": "\u02C7",
+ "Hat;": "\u005E",
+ "Hcirc;": "\u0124",
+ "Hfr;": "\u210C",
+ "HilbertSpace;": "\u210B",
+ "Hopf;": "\u210D",
+ "HorizontalLine;": "\u2500",
+ "Hscr;": "\u210B",
+ "Hstrok;": "\u0126",
+ "HumpDownHump;": "\u224E",
+ "HumpEqual;": "\u224F",
+ "IEcy;": "\u0415",
+ "IJlig;": "\u0132",
+ "IOcy;": "\u0401",
+ "Iacute": "\u00CD",
+ "Iacute;": "\u00CD",
+ "Icirc": "\u00CE",
+ "Icirc;": "\u00CE",
+ "Icy;": "\u0418",
+ "Idot;": "\u0130",
+ "Ifr;": "\u2111",
+ "Igrave": "\u00CC",
+ "Igrave;": "\u00CC",
+ "Im;": "\u2111",
+ "Imacr;": "\u012A",
+ "ImaginaryI;": "\u2148",
+ "Implies;": "\u21D2",
+ "Int;": "\u222C",
+ "Integral;": "\u222B",
+ "Intersection;": "\u22C2",
+ "InvisibleComma;": "\u2063",
+ "InvisibleTimes;": "\u2062",
+ "Iogon;": "\u012E",
+ "Iopf;": "\uD835\uDD40",
+ "Iota;": "\u0399",
+ "Iscr;": "\u2110",
+ "Itilde;": "\u0128",
+ "Iukcy;": "\u0406",
+ "Iuml": "\u00CF",
+ "Iuml;": "\u00CF",
+ "Jcirc;": "\u0134",
+ "Jcy;": "\u0419",
+ "Jfr;": "\uD835\uDD0D",
+ "Jopf;": "\uD835\uDD41",
+ "Jscr;": "\uD835\uDCA5",
+ "Jsercy;": "\u0408",
+ "Jukcy;": "\u0404",
+ "KHcy;": "\u0425",
+ "KJcy;": "\u040C",
+ "Kappa;": "\u039A",
+ "Kcedil;": "\u0136",
+ "Kcy;": "\u041A",
+ "Kfr;": "\uD835\uDD0E",
+ "Kopf;": "\uD835\uDD42",
+ "Kscr;": "\uD835\uDCA6",
+ "LJcy;": "\u0409",
+ "LT": "\u003C",
+ "LT;": "\u003C",
+ "Lacute;": "\u0139",
+ "Lambda;": "\u039B",
+ "Lang;": "\u27EA",
+ "Laplacetrf;": "\u2112",
+ "Larr;": "\u219E",
+ "Lcaron;": "\u013D",
+ "Lcedil;": "\u013B",
+ "Lcy;": "\u041B",
+ "LeftAngleBracket;": "\u27E8",
+ "LeftArrow;": "\u2190",
+ "LeftArrowBar;": "\u21E4",
+ "LeftArrowRightArrow;": "\u21C6",
+ "LeftCeiling;": "\u2308",
+ "LeftDoubleBracket;": "\u27E6",
+ "LeftDownTeeVector;": "\u2961",
+ "LeftDownVector;": "\u21C3",
+ "LeftDownVectorBar;": "\u2959",
+ "LeftFloor;": "\u230A",
+ "LeftRightArrow;": "\u2194",
+ "LeftRightVector;": "\u294E",
+ "LeftTee;": "\u22A3",
+ "LeftTeeArrow;": "\u21A4",
+ "LeftTeeVector;": "\u295A",
+ "LeftTriangle;": "\u22B2",
+ "LeftTriangleBar;": "\u29CF",
+ "LeftTriangleEqual;": "\u22B4",
+ "LeftUpDownVector;": "\u2951",
+ "LeftUpTeeVector;": "\u2960",
+ "LeftUpVector;": "\u21BF",
+ "LeftUpVectorBar;": "\u2958",
+ "LeftVector;": "\u21BC",
+ "LeftVectorBar;": "\u2952",
+ "Leftarrow;": "\u21D0",
+ "Leftrightarrow;": "\u21D4",
+ "LessEqualGreater;": "\u22DA",
+ "LessFullEqual;": "\u2266",
+ "LessGreater;": "\u2276",
+ "LessLess;": "\u2AA1",
+ "LessSlantEqual;": "\u2A7D",
+ "LessTilde;": "\u2272",
+ "Lfr;": "\uD835\uDD0F",
+ "Ll;": "\u22D8",
+ "Lleftarrow;": "\u21DA",
+ "Lmidot;": "\u013F",
+ "LongLeftArrow;": "\u27F5",
+ "LongLeftRightArrow;": "\u27F7",
+ "LongRightArrow;": "\u27F6",
+ "Longleftarrow;": "\u27F8",
+ "Longleftrightarrow;": "\u27FA",
+ "Longrightarrow;": "\u27F9",
+ "Lopf;": "\uD835\uDD43",
+ "LowerLeftArrow;": "\u2199",
+ "LowerRightArrow;": "\u2198",
+ "Lscr;": "\u2112",
+ "Lsh;": "\u21B0",
+ "Lstrok;": "\u0141",
+ "Lt;": "\u226A",
+ "Map;": "\u2905",
+ "Mcy;": "\u041C",
+ "MediumSpace;": "\u205F",
+ "Mellintrf;": "\u2133",
+ "Mfr;": "\uD835\uDD10",
+ "MinusPlus;": "\u2213",
+ "Mopf;": "\uD835\uDD44",
+ "Mscr;": "\u2133",
+ "Mu;": "\u039C",
+ "NJcy;": "\u040A",
+ "Nacute;": "\u0143",
+ "Ncaron;": "\u0147",
+ "Ncedil;": "\u0145",
+ "Ncy;": "\u041D",
+ "NegativeMediumSpace;": "\u200B",
+ "NegativeThickSpace;": "\u200B",
+ "NegativeThinSpace;": "\u200B",
+ "NegativeVeryThinSpace;": "\u200B",
+ "NestedGreaterGreater;": "\u226B",
+ "NestedLessLess;": "\u226A",
+ "NewLine;": "\u000A",
+ "Nfr;": "\uD835\uDD11",
+ "NoBreak;": "\u2060",
+ "NonBreakingSpace;": "\u00A0",
+ "Nopf;": "\u2115",
+ "Not;": "\u2AEC",
+ "NotCongruent;": "\u2262",
+ "NotCupCap;": "\u226D",
+ "NotDoubleVerticalBar;": "\u2226",
+ "NotElement;": "\u2209",
+ "NotEqual;": "\u2260",
+ "NotEqualTilde;": "\u2242\u0338",
+ "NotExists;": "\u2204",
+ "NotGreater;": "\u226F",
+ "NotGreaterEqual;": "\u2271",
+ "NotGreaterFullEqual;": "\u2267\u0338",
+ "NotGreaterGreater;": "\u226B\u0338",
+ "NotGreaterLess;": "\u2279",
+ "NotGreaterSlantEqual;": "\u2A7E\u0338",
+ "NotGreaterTilde;": "\u2275",
+ "NotHumpDownHump;": "\u224E\u0338",
+ "NotHumpEqual;": "\u224F\u0338",
+ "NotLeftTriangle;": "\u22EA",
+ "NotLeftTriangleBar;": "\u29CF\u0338",
+ "NotLeftTriangleEqual;": "\u22EC",
+ "NotLess;": "\u226E",
+ "NotLessEqual;": "\u2270",
+ "NotLessGreater;": "\u2278",
+ "NotLessLess;": "\u226A\u0338",
+ "NotLessSlantEqual;": "\u2A7D\u0338",
+ "NotLessTilde;": "\u2274",
+ "NotNestedGreaterGreater;": "\u2AA2\u0338",
+ "NotNestedLessLess;": "\u2AA1\u0338",
+ "NotPrecedes;": "\u2280",
+ "NotPrecedesEqual;": "\u2AAF\u0338",
+ "NotPrecedesSlantEqual;": "\u22E0",
+ "NotReverseElement;": "\u220C",
+ "NotRightTriangle;": "\u22EB",
+ "NotRightTriangleBar;": "\u29D0\u0338",
+ "NotRightTriangleEqual;": "\u22ED",
+ "NotSquareSubset;": "\u228F\u0338",
+ "NotSquareSubsetEqual;": "\u22E2",
+ "NotSquareSuperset;": "\u2290\u0338",
+ "NotSquareSupersetEqual;": "\u22E3",
+ "NotSubset;": "\u2282\u20D2",
+ "NotSubsetEqual;": "\u2288",
+ "NotSucceeds;": "\u2281",
+ "NotSucceedsEqual;": "\u2AB0\u0338",
+ "NotSucceedsSlantEqual;": "\u22E1",
+ "NotSucceedsTilde;": "\u227F\u0338",
+ "NotSuperset;": "\u2283\u20D2",
+ "NotSupersetEqual;": "\u2289",
+ "NotTilde;": "\u2241",
+ "NotTildeEqual;": "\u2244",
+ "NotTildeFullEqual;": "\u2247",
+ "NotTildeTilde;": "\u2249",
+ "NotVerticalBar;": "\u2224",
+ "Nscr;": "\uD835\uDCA9",
+ "Ntilde": "\u00D1",
+ "Ntilde;": "\u00D1",
+ "Nu;": "\u039D",
+ "OElig;": "\u0152",
+ "Oacute": "\u00D3",
+ "Oacute;": "\u00D3",
+ "Ocirc": "\u00D4",
+ "Ocirc;": "\u00D4",
+ "Ocy;": "\u041E",
+ "Odblac;": "\u0150",
+ "Ofr;": "\uD835\uDD12",
+ "Ograve": "\u00D2",
+ "Ograve;": "\u00D2",
+ "Omacr;": "\u014C",
+ "Omega;": "\u03A9",
+ "Omicron;": "\u039F",
+ "Oopf;": "\uD835\uDD46",
+ "OpenCurlyDoubleQuote;": "\u201C",
+ "OpenCurlyQuote;": "\u2018",
+ "Or;": "\u2A54",
+ "Oscr;": "\uD835\uDCAA",
+ "Oslash": "\u00D8",
+ "Oslash;": "\u00D8",
+ "Otilde": "\u00D5",
+ "Otilde;": "\u00D5",
+ "Otimes;": "\u2A37",
+ "Ouml": "\u00D6",
+ "Ouml;": "\u00D6",
+ "OverBar;": "\u203E",
+ "OverBrace;": "\u23DE",
+ "OverBracket;": "\u23B4",
+ "OverParenthesis;": "\u23DC",
+ "PartialD;": "\u2202",
+ "Pcy;": "\u041F",
+ "Pfr;": "\uD835\uDD13",
+ "Phi;": "\u03A6",
+ "Pi;": "\u03A0",
+ "PlusMinus;": "\u00B1",
+ "Poincareplane;": "\u210C",
+ "Popf;": "\u2119",
+ "Pr;": "\u2ABB",
+ "Precedes;": "\u227A",
+ "PrecedesEqual;": "\u2AAF",
+ "PrecedesSlantEqual;": "\u227C",
+ "PrecedesTilde;": "\u227E",
+ "Prime;": "\u2033",
+ "Product;": "\u220F",
+ "Proportion;": "\u2237",
+ "Proportional;": "\u221D",
+ "Pscr;": "\uD835\uDCAB",
+ "Psi;": "\u03A8",
+ "QUOT": "\u0022",
+ "QUOT;": "\u0022",
+ "Qfr;": "\uD835\uDD14",
+ "Qopf;": "\u211A",
+ "Qscr;": "\uD835\uDCAC",
+ "RBarr;": "\u2910",
+ "REG": "\u00AE",
+ "REG;": "\u00AE",
+ "Racute;": "\u0154",
+ "Rang;": "\u27EB",
+ "Rarr;": "\u21A0",
+ "Rarrtl;": "\u2916",
+ "Rcaron;": "\u0158",
+ "Rcedil;": "\u0156",
+ "Rcy;": "\u0420",
+ "Re;": "\u211C",
+ "ReverseElement;": "\u220B",
+ "ReverseEquilibrium;": "\u21CB",
+ "ReverseUpEquilibrium;": "\u296F",
+ "Rfr;": "\u211C",
+ "Rho;": "\u03A1",
+ "RightAngleBracket;": "\u27E9",
+ "RightArrow;": "\u2192",
+ "RightArrowBar;": "\u21E5",
+ "RightArrowLeftArrow;": "\u21C4",
+ "RightCeiling;": "\u2309",
+ "RightDoubleBracket;": "\u27E7",
+ "RightDownTeeVector;": "\u295D",
+ "RightDownVector;": "\u21C2",
+ "RightDownVectorBar;": "\u2955",
+ "RightFloor;": "\u230B",
+ "RightTee;": "\u22A2",
+ "RightTeeArrow;": "\u21A6",
+ "RightTeeVector;": "\u295B",
+ "RightTriangle;": "\u22B3",
+ "RightTriangleBar;": "\u29D0",
+ "RightTriangleEqual;": "\u22B5",
+ "RightUpDownVector;": "\u294F",
+ "RightUpTeeVector;": "\u295C",
+ "RightUpVector;": "\u21BE",
+ "RightUpVectorBar;": "\u2954",
+ "RightVector;": "\u21C0",
+ "RightVectorBar;": "\u2953",
+ "Rightarrow;": "\u21D2",
+ "Ropf;": "\u211D",
+ "RoundImplies;": "\u2970",
+ "Rrightarrow;": "\u21DB",
+ "Rscr;": "\u211B",
+ "Rsh;": "\u21B1",
+ "RuleDelayed;": "\u29F4",
+ "SHCHcy;": "\u0429",
+ "SHcy;": "\u0428",
+ "SOFTcy;": "\u042C",
+ "Sacute;": "\u015A",
+ "Sc;": "\u2ABC",
+ "Scaron;": "\u0160",
+ "Scedil;": "\u015E",
+ "Scirc;": "\u015C",
+ "Scy;": "\u0421",
+ "Sfr;": "\uD835\uDD16",
+ "ShortDownArrow;": "\u2193",
+ "ShortLeftArrow;": "\u2190",
+ "ShortRightArrow;": "\u2192",
+ "ShortUpArrow;": "\u2191",
+ "Sigma;": "\u03A3",
+ "SmallCircle;": "\u2218",
+ "Sopf;": "\uD835\uDD4A",
+ "Sqrt;": "\u221A",
+ "Square;": "\u25A1",
+ "SquareIntersection;": "\u2293",
+ "SquareSubset;": "\u228F",
+ "SquareSubsetEqual;": "\u2291",
+ "SquareSuperset;": "\u2290",
+ "SquareSupersetEqual;": "\u2292",
+ "SquareUnion;": "\u2294",
+ "Sscr;": "\uD835\uDCAE",
+ "Star;": "\u22C6",
+ "Sub;": "\u22D0",
+ "Subset;": "\u22D0",
+ "SubsetEqual;": "\u2286",
+ "Succeeds;": "\u227B",
+ "SucceedsEqual;": "\u2AB0",
+ "SucceedsSlantEqual;": "\u227D",
+ "SucceedsTilde;": "\u227F",
+ "SuchThat;": "\u220B",
+ "Sum;": "\u2211",
+ "Sup;": "\u22D1",
+ "Superset;": "\u2283",
+ "SupersetEqual;": "\u2287",
+ "Supset;": "\u22D1",
+ "THORN": "\u00DE",
+ "THORN;": "\u00DE",
+ "TRADE;": "\u2122",
+ "TSHcy;": "\u040B",
+ "TScy;": "\u0426",
+ "Tab;": "\u0009",
+ "Tau;": "\u03A4",
+ "Tcaron;": "\u0164",
+ "Tcedil;": "\u0162",
+ "Tcy;": "\u0422",
+ "Tfr;": "\uD835\uDD17",
+ "Therefore;": "\u2234",
+ "Theta;": "\u0398",
+ "ThickSpace;": "\u205F\u200A",
+ "ThinSpace;": "\u2009",
+ "Tilde;": "\u223C",
+ "TildeEqual;": "\u2243",
+ "TildeFullEqual;": "\u2245",
+ "TildeTilde;": "\u2248",
+ "Topf;": "\uD835\uDD4B",
+ "TripleDot;": "\u20DB",
+ "Tscr;": "\uD835\uDCAF",
+ "Tstrok;": "\u0166",
+ "Uacute": "\u00DA",
+ "Uacute;": "\u00DA",
+ "Uarr;": "\u219F",
+ "Uarrocir;": "\u2949",
+ "Ubrcy;": "\u040E",
+ "Ubreve;": "\u016C",
+ "Ucirc": "\u00DB",
+ "Ucirc;": "\u00DB",
+ "Ucy;": "\u0423",
+ "Udblac;": "\u0170",
+ "Ufr;": "\uD835\uDD18",
+ "Ugrave": "\u00D9",
+ "Ugrave;": "\u00D9",
+ "Umacr;": "\u016A",
+ "UnderBar;": "\u005F",
+ "UnderBrace;": "\u23DF",
+ "UnderBracket;": "\u23B5",
+ "UnderParenthesis;": "\u23DD",
+ "Union;": "\u22C3",
+ "UnionPlus;": "\u228E",
+ "Uogon;": "\u0172",
+ "Uopf;": "\uD835\uDD4C",
+ "UpArrow;": "\u2191",
+ "UpArrowBar;": "\u2912",
+ "UpArrowDownArrow;": "\u21C5",
+ "UpDownArrow;": "\u2195",
+ "UpEquilibrium;": "\u296E",
+ "UpTee;": "\u22A5",
+ "UpTeeArrow;": "\u21A5",
+ "Uparrow;": "\u21D1",
+ "Updownarrow;": "\u21D5",
+ "UpperLeftArrow;": "\u2196",
+ "UpperRightArrow;": "\u2197",
+ "Upsi;": "\u03D2",
+ "Upsilon;": "\u03A5",
+ "Uring;": "\u016E",
+ "Uscr;": "\uD835\uDCB0",
+ "Utilde;": "\u0168",
+ "Uuml": "\u00DC",
+ "Uuml;": "\u00DC",
+ "VDash;": "\u22AB",
+ "Vbar;": "\u2AEB",
+ "Vcy;": "\u0412",
+ "Vdash;": "\u22A9",
+ "Vdashl;": "\u2AE6",
+ "Vee;": "\u22C1",
+ "Verbar;": "\u2016",
+ "Vert;": "\u2016",
+ "VerticalBar;": "\u2223",
+ "VerticalLine;": "\u007C",
+ "VerticalSeparator;": "\u2758",
+ "VerticalTilde;": "\u2240",
+ "VeryThinSpace;": "\u200A",
+ "Vfr;": "\uD835\uDD19",
+ "Vopf;": "\uD835\uDD4D",
+ "Vscr;": "\uD835\uDCB1",
+ "Vvdash;": "\u22AA",
+ "Wcirc;": "\u0174",
+ "Wedge;": "\u22C0",
+ "Wfr;": "\uD835\uDD1A",
+ "Wopf;": "\uD835\uDD4E",
+ "Wscr;": "\uD835\uDCB2",
+ "Xfr;": "\uD835\uDD1B",
+ "Xi;": "\u039E",
+ "Xopf;": "\uD835\uDD4F",
+ "Xscr;": "\uD835\uDCB3",
+ "YAcy;": "\u042F",
+ "YIcy;": "\u0407",
+ "YUcy;": "\u042E",
+ "Yacute": "\u00DD",
+ "Yacute;": "\u00DD",
+ "Ycirc;": "\u0176",
+ "Ycy;": "\u042B",
+ "Yfr;": "\uD835\uDD1C",
+ "Yopf;": "\uD835\uDD50",
+ "Yscr;": "\uD835\uDCB4",
+ "Yuml;": "\u0178",
+ "ZHcy;": "\u0416",
+ "Zacute;": "\u0179",
+ "Zcaron;": "\u017D",
+ "Zcy;": "\u0417",
+ "Zdot;": "\u017B",
+ "ZeroWidthSpace;": "\u200B",
+ "Zeta;": "\u0396",
+ "Zfr;": "\u2128",
+ "Zopf;": "\u2124",
+ "Zscr;": "\uD835\uDCB5",
+ "aacute": "\u00E1",
+ "aacute;": "\u00E1",
+ "abreve;": "\u0103",
+ "ac;": "\u223E",
+ "acE;": "\u223E\u0333",
+ "acd;": "\u223F",
+ "acirc": "\u00E2",
+ "acirc;": "\u00E2",
+ "acute": "\u00B4",
+ "acute;": "\u00B4",
+ "acy;": "\u0430",
+ "aelig": "\u00E6",
+ "aelig;": "\u00E6",
+ "af;": "\u2061",
+ "afr;": "\uD835\uDD1E",
+ "agrave": "\u00E0",
+ "agrave;": "\u00E0",
+ "alefsym;": "\u2135",
+ "aleph;": "\u2135",
+ "alpha;": "\u03B1",
+ "amacr;": "\u0101",
+ "amalg;": "\u2A3F",
+ "amp": "\u0026",
+ "amp;": "\u0026",
+ "and;": "\u2227",
+ "andand;": "\u2A55",
+ "andd;": "\u2A5C",
+ "andslope;": "\u2A58",
+ "andv;": "\u2A5A",
+ "ang;": "\u2220",
+ "ange;": "\u29A4",
+ "angle;": "\u2220",
+ "angmsd;": "\u2221",
+ "angmsdaa;": "\u29A8",
+ "angmsdab;": "\u29A9",
+ "angmsdac;": "\u29AA",
+ "angmsdad;": "\u29AB",
+ "angmsdae;": "\u29AC",
+ "angmsdaf;": "\u29AD",
+ "angmsdag;": "\u29AE",
+ "angmsdah;": "\u29AF",
+ "angrt;": "\u221F",
+ "angrtvb;": "\u22BE",
+ "angrtvbd;": "\u299D",
+ "angsph;": "\u2222",
+ "angst;": "\u00C5",
+ "angzarr;": "\u237C",
+ "aogon;": "\u0105",
+ "aopf;": "\uD835\uDD52",
+ "ap;": "\u2248",
+ "apE;": "\u2A70",
+ "apacir;": "\u2A6F",
+ "ape;": "\u224A",
+ "apid;": "\u224B",
+ "apos;": "\u0027",
+ "approx;": "\u2248",
+ "approxeq;": "\u224A",
+ "aring": "\u00E5",
+ "aring;": "\u00E5",
+ "ascr;": "\uD835\uDCB6",
+ "ast;": "\u002A",
+ "asymp;": "\u2248",
+ "asympeq;": "\u224D",
+ "atilde": "\u00E3",
+ "atilde;": "\u00E3",
+ "auml": "\u00E4",
+ "auml;": "\u00E4",
+ "awconint;": "\u2233",
+ "awint;": "\u2A11",
+ "bNot;": "\u2AED",
+ "backcong;": "\u224C",
+ "backepsilon;": "\u03F6",
+ "backprime;": "\u2035",
+ "backsim;": "\u223D",
+ "backsimeq;": "\u22CD",
+ "barvee;": "\u22BD",
+ "barwed;": "\u2305",
+ "barwedge;": "\u2305",
+ "bbrk;": "\u23B5",
+ "bbrktbrk;": "\u23B6",
+ "bcong;": "\u224C",
+ "bcy;": "\u0431",
+ "bdquo;": "\u201E",
+ "becaus;": "\u2235",
+ "because;": "\u2235",
+ "bemptyv;": "\u29B0",
+ "bepsi;": "\u03F6",
+ "bernou;": "\u212C",
+ "beta;": "\u03B2",
+ "beth;": "\u2136",
+ "between;": "\u226C",
+ "bfr;": "\uD835\uDD1F",
+ "bigcap;": "\u22C2",
+ "bigcirc;": "\u25EF",
+ "bigcup;": "\u22C3",
+ "bigodot;": "\u2A00",
+ "bigoplus;": "\u2A01",
+ "bigotimes;": "\u2A02",
+ "bigsqcup;": "\u2A06",
+ "bigstar;": "\u2605",
+ "bigtriangledown;": "\u25BD",
+ "bigtriangleup;": "\u25B3",
+ "biguplus;": "\u2A04",
+ "bigvee;": "\u22C1",
+ "bigwedge;": "\u22C0",
+ "bkarow;": "\u290D",
+ "blacklozenge;": "\u29EB",
+ "blacksquare;": "\u25AA",
+ "blacktriangle;": "\u25B4",
+ "blacktriangledown;": "\u25BE",
+ "blacktriangleleft;": "\u25C2",
+ "blacktriangleright;": "\u25B8",
+ "blank;": "\u2423",
+ "blk12;": "\u2592",
+ "blk14;": "\u2591",
+ "blk34;": "\u2593",
+ "block;": "\u2588",
+ "bne;": "\u003D\u20E5",
+ "bnequiv;": "\u2261\u20E5",
+ "bnot;": "\u2310",
+ "bopf;": "\uD835\uDD53",
+ "bot;": "\u22A5",
+ "bottom;": "\u22A5",
+ "bowtie;": "\u22C8",
+ "boxDL;": "\u2557",
+ "boxDR;": "\u2554",
+ "boxDl;": "\u2556",
+ "boxDr;": "\u2553",
+ "boxH;": "\u2550",
+ "boxHD;": "\u2566",
+ "boxHU;": "\u2569",
+ "boxHd;": "\u2564",
+ "boxHu;": "\u2567",
+ "boxUL;": "\u255D",
+ "boxUR;": "\u255A",
+ "boxUl;": "\u255C",
+ "boxUr;": "\u2559",
+ "boxV;": "\u2551",
+ "boxVH;": "\u256C",
+ "boxVL;": "\u2563",
+ "boxVR;": "\u2560",
+ "boxVh;": "\u256B",
+ "boxVl;": "\u2562",
+ "boxVr;": "\u255F",
+ "boxbox;": "\u29C9",
+ "boxdL;": "\u2555",
+ "boxdR;": "\u2552",
+ "boxdl;": "\u2510",
+ "boxdr;": "\u250C",
+ "boxh;": "\u2500",
+ "boxhD;": "\u2565",
+ "boxhU;": "\u2568",
+ "boxhd;": "\u252C",
+ "boxhu;": "\u2534",
+ "boxminus;": "\u229F",
+ "boxplus;": "\u229E",
+ "boxtimes;": "\u22A0",
+ "boxuL;": "\u255B",
+ "boxuR;": "\u2558",
+ "boxul;": "\u2518",
+ "boxur;": "\u2514",
+ "boxv;": "\u2502",
+ "boxvH;": "\u256A",
+ "boxvL;": "\u2561",
+ "boxvR;": "\u255E",
+ "boxvh;": "\u253C",
+ "boxvl;": "\u2524",
+ "boxvr;": "\u251C",
+ "bprime;": "\u2035",
+ "breve;": "\u02D8",
+ "brvbar": "\u00A6",
+ "brvbar;": "\u00A6",
+ "bscr;": "\uD835\uDCB7",
+ "bsemi;": "\u204F",
+ "bsim;": "\u223D",
+ "bsime;": "\u22CD",
+ "bsol;": "\u005C",
+ "bsolb;": "\u29C5",
+ "bsolhsub;": "\u27C8",
+ "bull;": "\u2022",
+ "bullet;": "\u2022",
+ "bump;": "\u224E",
+ "bumpE;": "\u2AAE",
+ "bumpe;": "\u224F",
+ "bumpeq;": "\u224F",
+ "cacute;": "\u0107",
+ "cap;": "\u2229",
+ "capand;": "\u2A44",
+ "capbrcup;": "\u2A49",
+ "capcap;": "\u2A4B",
+ "capcup;": "\u2A47",
+ "capdot;": "\u2A40",
+ "caps;": "\u2229\uFE00",
+ "caret;": "\u2041",
+ "caron;": "\u02C7",
+ "ccaps;": "\u2A4D",
+ "ccaron;": "\u010D",
+ "ccedil": "\u00E7",
+ "ccedil;": "\u00E7",
+ "ccirc;": "\u0109",
+ "ccups;": "\u2A4C",
+ "ccupssm;": "\u2A50",
+ "cdot;": "\u010B",
+ "cedil": "\u00B8",
+ "cedil;": "\u00B8",
+ "cemptyv;": "\u29B2",
+ "cent": "\u00A2",
+ "cent;": "\u00A2",
+ "centerdot;": "\u00B7",
+ "cfr;": "\uD835\uDD20",
+ "chcy;": "\u0447",
+ "check;": "\u2713",
+ "checkmark;": "\u2713",
+ "chi;": "\u03C7",
+ "cir;": "\u25CB",
+ "cirE;": "\u29C3",
+ "circ;": "\u02C6",
+ "circeq;": "\u2257",
+ "circlearrowleft;": "\u21BA",
+ "circlearrowright;": "\u21BB",
+ "circledR;": "\u00AE",
+ "circledS;": "\u24C8",
+ "circledast;": "\u229B",
+ "circledcirc;": "\u229A",
+ "circleddash;": "\u229D",
+ "cire;": "\u2257",
+ "cirfnint;": "\u2A10",
+ "cirmid;": "\u2AEF",
+ "cirscir;": "\u29C2",
+ "clubs;": "\u2663",
+ "clubsuit;": "\u2663",
+ "colon;": "\u003A",
+ "colone;": "\u2254",
+ "coloneq;": "\u2254",
+ "comma;": "\u002C",
+ "commat;": "\u0040",
+ "comp;": "\u2201",
+ "compfn;": "\u2218",
+ "complement;": "\u2201",
+ "complexes;": "\u2102",
+ "cong;": "\u2245",
+ "congdot;": "\u2A6D",
+ "conint;": "\u222E",
+ "copf;": "\uD835\uDD54",
+ "coprod;": "\u2210",
+ "copy": "\u00A9",
+ "copy;": "\u00A9",
+ "copysr;": "\u2117",
+ "crarr;": "\u21B5",
+ "cross;": "\u2717",
+ "cscr;": "\uD835\uDCB8",
+ "csub;": "\u2ACF",
+ "csube;": "\u2AD1",
+ "csup;": "\u2AD0",
+ "csupe;": "\u2AD2",
+ "ctdot;": "\u22EF",
+ "cudarrl;": "\u2938",
+ "cudarrr;": "\u2935",
+ "cuepr;": "\u22DE",
+ "cuesc;": "\u22DF",
+ "cularr;": "\u21B6",
+ "cularrp;": "\u293D",
+ "cup;": "\u222A",
+ "cupbrcap;": "\u2A48",
+ "cupcap;": "\u2A46",
+ "cupcup;": "\u2A4A",
+ "cupdot;": "\u228D",
+ "cupor;": "\u2A45",
+ "cups;": "\u222A\uFE00",
+ "curarr;": "\u21B7",
+ "curarrm;": "\u293C",
+ "curlyeqprec;": "\u22DE",
+ "curlyeqsucc;": "\u22DF",
+ "curlyvee;": "\u22CE",
+ "curlywedge;": "\u22CF",
+ "curren": "\u00A4",
+ "curren;": "\u00A4",
+ "curvearrowleft;": "\u21B6",
+ "curvearrowright;": "\u21B7",
+ "cuvee;": "\u22CE",
+ "cuwed;": "\u22CF",
+ "cwconint;": "\u2232",
+ "cwint;": "\u2231",
+ "cylcty;": "\u232D",
+ "dArr;": "\u21D3",
+ "dHar;": "\u2965",
+ "dagger;": "\u2020",
+ "daleth;": "\u2138",
+ "darr;": "\u2193",
+ "dash;": "\u2010",
+ "dashv;": "\u22A3",
+ "dbkarow;": "\u290F",
+ "dblac;": "\u02DD",
+ "dcaron;": "\u010F",
+ "dcy;": "\u0434",
+ "dd;": "\u2146",
+ "ddagger;": "\u2021",
+ "ddarr;": "\u21CA",
+ "ddotseq;": "\u2A77",
+ "deg": "\u00B0",
+ "deg;": "\u00B0",
+ "delta;": "\u03B4",
+ "demptyv;": "\u29B1",
+ "dfisht;": "\u297F",
+ "dfr;": "\uD835\uDD21",
+ "dharl;": "\u21C3",
+ "dharr;": "\u21C2",
+ "diam;": "\u22C4",
+ "diamond;": "\u22C4",
+ "diamondsuit;": "\u2666",
+ "diams;": "\u2666",
+ "die;": "\u00A8",
+ "digamma;": "\u03DD",
+ "disin;": "\u22F2",
+ "div;": "\u00F7",
+ "divide": "\u00F7",
+ "divide;": "\u00F7",
+ "divideontimes;": "\u22C7",
+ "divonx;": "\u22C7",
+ "djcy;": "\u0452",
+ "dlcorn;": "\u231E",
+ "dlcrop;": "\u230D",
+ "dollar;": "\u0024",
+ "dopf;": "\uD835\uDD55",
+ "dot;": "\u02D9",
+ "doteq;": "\u2250",
+ "doteqdot;": "\u2251",
+ "dotminus;": "\u2238",
+ "dotplus;": "\u2214",
+ "dotsquare;": "\u22A1",
+ "doublebarwedge;": "\u2306",
+ "downarrow;": "\u2193",
+ "downdownarrows;": "\u21CA",
+ "downharpoonleft;": "\u21C3",
+ "downharpoonright;": "\u21C2",
+ "drbkarow;": "\u2910",
+ "drcorn;": "\u231F",
+ "drcrop;": "\u230C",
+ "dscr;": "\uD835\uDCB9",
+ "dscy;": "\u0455",
+ "dsol;": "\u29F6",
+ "dstrok;": "\u0111",
+ "dtdot;": "\u22F1",
+ "dtri;": "\u25BF",
+ "dtrif;": "\u25BE",
+ "duarr;": "\u21F5",
+ "duhar;": "\u296F",
+ "dwangle;": "\u29A6",
+ "dzcy;": "\u045F",
+ "dzigrarr;": "\u27FF",
+ "eDDot;": "\u2A77",
+ "eDot;": "\u2251",
+ "eacute": "\u00E9",
+ "eacute;": "\u00E9",
+ "easter;": "\u2A6E",
+ "ecaron;": "\u011B",
+ "ecir;": "\u2256",
+ "ecirc": "\u00EA",
+ "ecirc;": "\u00EA",
+ "ecolon;": "\u2255",
+ "ecy;": "\u044D",
+ "edot;": "\u0117",
+ "ee;": "\u2147",
+ "efDot;": "\u2252",
+ "efr;": "\uD835\uDD22",
+ "eg;": "\u2A9A",
+ "egrave": "\u00E8",
+ "egrave;": "\u00E8",
+ "egs;": "\u2A96",
+ "egsdot;": "\u2A98",
+ "el;": "\u2A99",
+ "elinters;": "\u23E7",
+ "ell;": "\u2113",
+ "els;": "\u2A95",
+ "elsdot;": "\u2A97",
+ "emacr;": "\u0113",
+ "empty;": "\u2205",
+ "emptyset;": "\u2205",
+ "emptyv;": "\u2205",
+ "emsp13;": "\u2004",
+ "emsp14;": "\u2005",
+ "emsp;": "\u2003",
+ "eng;": "\u014B",
+ "ensp;": "\u2002",
+ "eogon;": "\u0119",
+ "eopf;": "\uD835\uDD56",
+ "epar;": "\u22D5",
+ "eparsl;": "\u29E3",
+ "eplus;": "\u2A71",
+ "epsi;": "\u03B5",
+ "epsilon;": "\u03B5",
+ "epsiv;": "\u03F5",
+ "eqcirc;": "\u2256",
+ "eqcolon;": "\u2255",
+ "eqsim;": "\u2242",
+ "eqslantgtr;": "\u2A96",
+ "eqslantless;": "\u2A95",
+ "equals;": "\u003D",
+ "equest;": "\u225F",
+ "equiv;": "\u2261",
+ "equivDD;": "\u2A78",
+ "eqvparsl;": "\u29E5",
+ "erDot;": "\u2253",
+ "erarr;": "\u2971",
+ "escr;": "\u212F",
+ "esdot;": "\u2250",
+ "esim;": "\u2242",
+ "eta;": "\u03B7",
+ "eth": "\u00F0",
+ "eth;": "\u00F0",
+ "euml": "\u00EB",
+ "euml;": "\u00EB",
+ "euro;": "\u20AC",
+ "excl;": "\u0021",
+ "exist;": "\u2203",
+ "expectation;": "\u2130",
+ "exponentiale;": "\u2147",
+ "fallingdotseq;": "\u2252",
+ "fcy;": "\u0444",
+ "female;": "\u2640",
+ "ffilig;": "\uFB03",
+ "fflig;": "\uFB00",
+ "ffllig;": "\uFB04",
+ "ffr;": "\uD835\uDD23",
+ "filig;": "\uFB01",
+ "fjlig;": "\u0066\u006A",
+ "flat;": "\u266D",
+ "fllig;": "\uFB02",
+ "fltns;": "\u25B1",
+ "fnof;": "\u0192",
+ "fopf;": "\uD835\uDD57",
+ "forall;": "\u2200",
+ "fork;": "\u22D4",
+ "forkv;": "\u2AD9",
+ "fpartint;": "\u2A0D",
+ "frac12": "\u00BD",
+ "frac12;": "\u00BD",
+ "frac13;": "\u2153",
+ "frac14": "\u00BC",
+ "frac14;": "\u00BC",
+ "frac15;": "\u2155",
+ "frac16;": "\u2159",
+ "frac18;": "\u215B",
+ "frac23;": "\u2154",
+ "frac25;": "\u2156",
+ "frac34": "\u00BE",
+ "frac34;": "\u00BE",
+ "frac35;": "\u2157",
+ "frac38;": "\u215C",
+ "frac45;": "\u2158",
+ "frac56;": "\u215A",
+ "frac58;": "\u215D",
+ "frac78;": "\u215E",
+ "frasl;": "\u2044",
+ "frown;": "\u2322",
+ "fscr;": "\uD835\uDCBB",
+ "gE;": "\u2267",
+ "gEl;": "\u2A8C",
+ "gacute;": "\u01F5",
+ "gamma;": "\u03B3",
+ "gammad;": "\u03DD",
+ "gap;": "\u2A86",
+ "gbreve;": "\u011F",
+ "gcirc;": "\u011D",
+ "gcy;": "\u0433",
+ "gdot;": "\u0121",
+ "ge;": "\u2265",
+ "gel;": "\u22DB",
+ "geq;": "\u2265",
+ "geqq;": "\u2267",
+ "geqslant;": "\u2A7E",
+ "ges;": "\u2A7E",
+ "gescc;": "\u2AA9",
+ "gesdot;": "\u2A80",
+ "gesdoto;": "\u2A82",
+ "gesdotol;": "\u2A84",
+ "gesl;": "\u22DB\uFE00",
+ "gesles;": "\u2A94",
+ "gfr;": "\uD835\uDD24",
+ "gg;": "\u226B",
+ "ggg;": "\u22D9",
+ "gimel;": "\u2137",
+ "gjcy;": "\u0453",
+ "gl;": "\u2277",
+ "glE;": "\u2A92",
+ "gla;": "\u2AA5",
+ "glj;": "\u2AA4",
+ "gnE;": "\u2269",
+ "gnap;": "\u2A8A",
+ "gnapprox;": "\u2A8A",
+ "gne;": "\u2A88",
+ "gneq;": "\u2A88",
+ "gneqq;": "\u2269",
+ "gnsim;": "\u22E7",
+ "gopf;": "\uD835\uDD58",
+ "grave;": "\u0060",
+ "gscr;": "\u210A",
+ "gsim;": "\u2273",
+ "gsime;": "\u2A8E",
+ "gsiml;": "\u2A90",
+ "gt": "\u003E",
+ "gt;": "\u003E",
+ "gtcc;": "\u2AA7",
+ "gtcir;": "\u2A7A",
+ "gtdot;": "\u22D7",
+ "gtlPar;": "\u2995",
+ "gtquest;": "\u2A7C",
+ "gtrapprox;": "\u2A86",
+ "gtrarr;": "\u2978",
+ "gtrdot;": "\u22D7",
+ "gtreqless;": "\u22DB",
+ "gtreqqless;": "\u2A8C",
+ "gtrless;": "\u2277",
+ "gtrsim;": "\u2273",
+ "gvertneqq;": "\u2269\uFE00",
+ "gvnE;": "\u2269\uFE00",
+ "hArr;": "\u21D4",
+ "hairsp;": "\u200A",
+ "half;": "\u00BD",
+ "hamilt;": "\u210B",
+ "hardcy;": "\u044A",
+ "harr;": "\u2194",
+ "harrcir;": "\u2948",
+ "harrw;": "\u21AD",
+ "hbar;": "\u210F",
+ "hcirc;": "\u0125",
+ "hearts;": "\u2665",
+ "heartsuit;": "\u2665",
+ "hellip;": "\u2026",
+ "hercon;": "\u22B9",
+ "hfr;": "\uD835\uDD25",
+ "hksearow;": "\u2925",
+ "hkswarow;": "\u2926",
+ "hoarr;": "\u21FF",
+ "homtht;": "\u223B",
+ "hookleftarrow;": "\u21A9",
+ "hookrightarrow;": "\u21AA",
+ "hopf;": "\uD835\uDD59",
+ "horbar;": "\u2015",
+ "hscr;": "\uD835\uDCBD",
+ "hslash;": "\u210F",
+ "hstrok;": "\u0127",
+ "hybull;": "\u2043",
+ "hyphen;": "\u2010",
+ "iacute": "\u00ED",
+ "iacute;": "\u00ED",
+ "ic;": "\u2063",
+ "icirc": "\u00EE",
+ "icirc;": "\u00EE",
+ "icy;": "\u0438",
+ "iecy;": "\u0435",
+ "iexcl": "\u00A1",
+ "iexcl;": "\u00A1",
+ "iff;": "\u21D4",
+ "ifr;": "\uD835\uDD26",
+ "igrave": "\u00EC",
+ "igrave;": "\u00EC",
+ "ii;": "\u2148",
+ "iiiint;": "\u2A0C",
+ "iiint;": "\u222D",
+ "iinfin;": "\u29DC",
+ "iiota;": "\u2129",
+ "ijlig;": "\u0133",
+ "imacr;": "\u012B",
+ "image;": "\u2111",
+ "imagline;": "\u2110",
+ "imagpart;": "\u2111",
+ "imath;": "\u0131",
+ "imof;": "\u22B7",
+ "imped;": "\u01B5",
+ "in;": "\u2208",
+ "incare;": "\u2105",
+ "infin;": "\u221E",
+ "infintie;": "\u29DD",
+ "inodot;": "\u0131",
+ "int;": "\u222B",
+ "intcal;": "\u22BA",
+ "integers;": "\u2124",
+ "intercal;": "\u22BA",
+ "intlarhk;": "\u2A17",
+ "intprod;": "\u2A3C",
+ "iocy;": "\u0451",
+ "iogon;": "\u012F",
+ "iopf;": "\uD835\uDD5A",
+ "iota;": "\u03B9",
+ "iprod;": "\u2A3C",
+ "iquest": "\u00BF",
+ "iquest;": "\u00BF",
+ "iscr;": "\uD835\uDCBE",
+ "isin;": "\u2208",
+ "isinE;": "\u22F9",
+ "isindot;": "\u22F5",
+ "isins;": "\u22F4",
+ "isinsv;": "\u22F3",
+ "isinv;": "\u2208",
+ "it;": "\u2062",
+ "itilde;": "\u0129",
+ "iukcy;": "\u0456",
+ "iuml": "\u00EF",
+ "iuml;": "\u00EF",
+ "jcirc;": "\u0135",
+ "jcy;": "\u0439",
+ "jfr;": "\uD835\uDD27",
+ "jmath;": "\u0237",
+ "jopf;": "\uD835\uDD5B",
+ "jscr;": "\uD835\uDCBF",
+ "jsercy;": "\u0458",
+ "jukcy;": "\u0454",
+ "kappa;": "\u03BA",
+ "kappav;": "\u03F0",
+ "kcedil;": "\u0137",
+ "kcy;": "\u043A",
+ "kfr;": "\uD835\uDD28",
+ "kgreen;": "\u0138",
+ "khcy;": "\u0445",
+ "kjcy;": "\u045C",
+ "kopf;": "\uD835\uDD5C",
+ "kscr;": "\uD835\uDCC0",
+ "lAarr;": "\u21DA",
+ "lArr;": "\u21D0",
+ "lAtail;": "\u291B",
+ "lBarr;": "\u290E",
+ "lE;": "\u2266",
+ "lEg;": "\u2A8B",
+ "lHar;": "\u2962",
+ "lacute;": "\u013A",
+ "laemptyv;": "\u29B4",
+ "lagran;": "\u2112",
+ "lambda;": "\u03BB",
+ "lang;": "\u27E8",
+ "langd;": "\u2991",
+ "langle;": "\u27E8",
+ "lap;": "\u2A85",
+ "laquo": "\u00AB",
+ "laquo;": "\u00AB",
+ "larr;": "\u2190",
+ "larrb;": "\u21E4",
+ "larrbfs;": "\u291F",
+ "larrfs;": "\u291D",
+ "larrhk;": "\u21A9",
+ "larrlp;": "\u21AB",
+ "larrpl;": "\u2939",
+ "larrsim;": "\u2973",
+ "larrtl;": "\u21A2",
+ "lat;": "\u2AAB",
+ "latail;": "\u2919",
+ "late;": "\u2AAD",
+ "lates;": "\u2AAD\uFE00",
+ "lbarr;": "\u290C",
+ "lbbrk;": "\u2772",
+ "lbrace;": "\u007B",
+ "lbrack;": "\u005B",
+ "lbrke;": "\u298B",
+ "lbrksld;": "\u298F",
+ "lbrkslu;": "\u298D",
+ "lcaron;": "\u013E",
+ "lcedil;": "\u013C",
+ "lceil;": "\u2308",
+ "lcub;": "\u007B",
+ "lcy;": "\u043B",
+ "ldca;": "\u2936",
+ "ldquo;": "\u201C",
+ "ldquor;": "\u201E",
+ "ldrdhar;": "\u2967",
+ "ldrushar;": "\u294B",
+ "ldsh;": "\u21B2",
+ "le;": "\u2264",
+ "leftarrow;": "\u2190",
+ "leftarrowtail;": "\u21A2",
+ "leftharpoondown;": "\u21BD",
+ "leftharpoonup;": "\u21BC",
+ "leftleftarrows;": "\u21C7",
+ "leftrightarrow;": "\u2194",
+ "leftrightarrows;": "\u21C6",
+ "leftrightharpoons;": "\u21CB",
+ "leftrightsquigarrow;": "\u21AD",
+ "leftthreetimes;": "\u22CB",
+ "leg;": "\u22DA",
+ "leq;": "\u2264",
+ "leqq;": "\u2266",
+ "leqslant;": "\u2A7D",
+ "les;": "\u2A7D",
+ "lescc;": "\u2AA8",
+ "lesdot;": "\u2A7F",
+ "lesdoto;": "\u2A81",
+ "lesdotor;": "\u2A83",
+ "lesg;": "\u22DA\uFE00",
+ "lesges;": "\u2A93",
+ "lessapprox;": "\u2A85",
+ "lessdot;": "\u22D6",
+ "lesseqgtr;": "\u22DA",
+ "lesseqqgtr;": "\u2A8B",
+ "lessgtr;": "\u2276",
+ "lesssim;": "\u2272",
+ "lfisht;": "\u297C",
+ "lfloor;": "\u230A",
+ "lfr;": "\uD835\uDD29",
+ "lg;": "\u2276",
+ "lgE;": "\u2A91",
+ "lhard;": "\u21BD",
+ "lharu;": "\u21BC",
+ "lharul;": "\u296A",
+ "lhblk;": "\u2584",
+ "ljcy;": "\u0459",
+ "ll;": "\u226A",
+ "llarr;": "\u21C7",
+ "llcorner;": "\u231E",
+ "llhard;": "\u296B",
+ "lltri;": "\u25FA",
+ "lmidot;": "\u0140",
+ "lmoust;": "\u23B0",
+ "lmoustache;": "\u23B0",
+ "lnE;": "\u2268",
+ "lnap;": "\u2A89",
+ "lnapprox;": "\u2A89",
+ "lne;": "\u2A87",
+ "lneq;": "\u2A87",
+ "lneqq;": "\u2268",
+ "lnsim;": "\u22E6",
+ "loang;": "\u27EC",
+ "loarr;": "\u21FD",
+ "lobrk;": "\u27E6",
+ "longleftarrow;": "\u27F5",
+ "longleftrightarrow;": "\u27F7",
+ "longmapsto;": "\u27FC",
+ "longrightarrow;": "\u27F6",
+ "looparrowleft;": "\u21AB",
+ "looparrowright;": "\u21AC",
+ "lopar;": "\u2985",
+ "lopf;": "\uD835\uDD5D",
+ "loplus;": "\u2A2D",
+ "lotimes;": "\u2A34",
+ "lowast;": "\u2217",
+ "lowbar;": "\u005F",
+ "loz;": "\u25CA",
+ "lozenge;": "\u25CA",
+ "lozf;": "\u29EB",
+ "lpar;": "\u0028",
+ "lparlt;": "\u2993",
+ "lrarr;": "\u21C6",
+ "lrcorner;": "\u231F",
+ "lrhar;": "\u21CB",
+ "lrhard;": "\u296D",
+ "lrm;": "\u200E",
+ "lrtri;": "\u22BF",
+ "lsaquo;": "\u2039",
+ "lscr;": "\uD835\uDCC1",
+ "lsh;": "\u21B0",
+ "lsim;": "\u2272",
+ "lsime;": "\u2A8D",
+ "lsimg;": "\u2A8F",
+ "lsqb;": "\u005B",
+ "lsquo;": "\u2018",
+ "lsquor;": "\u201A",
+ "lstrok;": "\u0142",
+ "lt": "\u003C",
+ "lt;": "\u003C",
+ "ltcc;": "\u2AA6",
+ "ltcir;": "\u2A79",
+ "ltdot;": "\u22D6",
+ "lthree;": "\u22CB",
+ "ltimes;": "\u22C9",
+ "ltlarr;": "\u2976",
+ "ltquest;": "\u2A7B",
+ "ltrPar;": "\u2996",
+ "ltri;": "\u25C3",
+ "ltrie;": "\u22B4",
+ "ltrif;": "\u25C2",
+ "lurdshar;": "\u294A",
+ "luruhar;": "\u2966",
+ "lvertneqq;": "\u2268\uFE00",
+ "lvnE;": "\u2268\uFE00",
+ "mDDot;": "\u223A",
+ "macr": "\u00AF",
+ "macr;": "\u00AF",
+ "male;": "\u2642",
+ "malt;": "\u2720",
+ "maltese;": "\u2720",
+ "map;": "\u21A6",
+ "mapsto;": "\u21A6",
+ "mapstodown;": "\u21A7",
+ "mapstoleft;": "\u21A4",
+ "mapstoup;": "\u21A5",
+ "marker;": "\u25AE",
+ "mcomma;": "\u2A29",
+ "mcy;": "\u043C",
+ "mdash;": "\u2014",
+ "measuredangle;": "\u2221",
+ "mfr;": "\uD835\uDD2A",
+ "mho;": "\u2127",
+ "micro": "\u00B5",
+ "micro;": "\u00B5",
+ "mid;": "\u2223",
+ "midast;": "\u002A",
+ "midcir;": "\u2AF0",
+ "middot": "\u00B7",
+ "middot;": "\u00B7",
+ "minus;": "\u2212",
+ "minusb;": "\u229F",
+ "minusd;": "\u2238",
+ "minusdu;": "\u2A2A",
+ "mlcp;": "\u2ADB",
+ "mldr;": "\u2026",
+ "mnplus;": "\u2213",
+ "models;": "\u22A7",
+ "mopf;": "\uD835\uDD5E",
+ "mp;": "\u2213",
+ "mscr;": "\uD835\uDCC2",
+ "mstpos;": "\u223E",
+ "mu;": "\u03BC",
+ "multimap;": "\u22B8",
+ "mumap;": "\u22B8",
+ "nGg;": "\u22D9\u0338",
+ "nGt;": "\u226B\u20D2",
+ "nGtv;": "\u226B\u0338",
+ "nLeftarrow;": "\u21CD",
+ "nLeftrightarrow;": "\u21CE",
+ "nLl;": "\u22D8\u0338",
+ "nLt;": "\u226A\u20D2",
+ "nLtv;": "\u226A\u0338",
+ "nRightarrow;": "\u21CF",
+ "nVDash;": "\u22AF",
+ "nVdash;": "\u22AE",
+ "nabla;": "\u2207",
+ "nacute;": "\u0144",
+ "nang;": "\u2220\u20D2",
+ "nap;": "\u2249",
+ "napE;": "\u2A70\u0338",
+ "napid;": "\u224B\u0338",
+ "napos;": "\u0149",
+ "napprox;": "\u2249",
+ "natur;": "\u266E",
+ "natural;": "\u266E",
+ "naturals;": "\u2115",
+ "nbsp": "\u00A0",
+ "nbsp;": "\u00A0",
+ "nbump;": "\u224E\u0338",
+ "nbumpe;": "\u224F\u0338",
+ "ncap;": "\u2A43",
+ "ncaron;": "\u0148",
+ "ncedil;": "\u0146",
+ "ncong;": "\u2247",
+ "ncongdot;": "\u2A6D\u0338",
+ "ncup;": "\u2A42",
+ "ncy;": "\u043D",
+ "ndash;": "\u2013",
+ "ne;": "\u2260",
+ "neArr;": "\u21D7",
+ "nearhk;": "\u2924",
+ "nearr;": "\u2197",
+ "nearrow;": "\u2197",
+ "nedot;": "\u2250\u0338",
+ "nequiv;": "\u2262",
+ "nesear;": "\u2928",
+ "nesim;": "\u2242\u0338",
+ "nexist;": "\u2204",
+ "nexists;": "\u2204",
+ "nfr;": "\uD835\uDD2B",
+ "ngE;": "\u2267\u0338",
+ "nge;": "\u2271",
+ "ngeq;": "\u2271",
+ "ngeqq;": "\u2267\u0338",
+ "ngeqslant;": "\u2A7E\u0338",
+ "nges;": "\u2A7E\u0338",
+ "ngsim;": "\u2275",
+ "ngt;": "\u226F",
+ "ngtr;": "\u226F",
+ "nhArr;": "\u21CE",
+ "nharr;": "\u21AE",
+ "nhpar;": "\u2AF2",
+ "ni;": "\u220B",
+ "nis;": "\u22FC",
+ "nisd;": "\u22FA",
+ "niv;": "\u220B",
+ "njcy;": "\u045A",
+ "nlArr;": "\u21CD",
+ "nlE;": "\u2266\u0338",
+ "nlarr;": "\u219A",
+ "nldr;": "\u2025",
+ "nle;": "\u2270",
+ "nleftarrow;": "\u219A",
+ "nleftrightarrow;": "\u21AE",
+ "nleq;": "\u2270",
+ "nleqq;": "\u2266\u0338",
+ "nleqslant;": "\u2A7D\u0338",
+ "nles;": "\u2A7D\u0338",
+ "nless;": "\u226E",
+ "nlsim;": "\u2274",
+ "nlt;": "\u226E",
+ "nltri;": "\u22EA",
+ "nltrie;": "\u22EC",
+ "nmid;": "\u2224",
+ "nopf;": "\uD835\uDD5F",
+ "not": "\u00AC",
+ "not;": "\u00AC",
+ "notin;": "\u2209",
+ "notinE;": "\u22F9\u0338",
+ "notindot;": "\u22F5\u0338",
+ "notinva;": "\u2209",
+ "notinvb;": "\u22F7",
+ "notinvc;": "\u22F6",
+ "notni;": "\u220C",
+ "notniva;": "\u220C",
+ "notnivb;": "\u22FE",
+ "notnivc;": "\u22FD",
+ "npar;": "\u2226",
+ "nparallel;": "\u2226",
+ "nparsl;": "\u2AFD\u20E5",
+ "npart;": "\u2202\u0338",
+ "npolint;": "\u2A14",
+ "npr;": "\u2280",
+ "nprcue;": "\u22E0",
+ "npre;": "\u2AAF\u0338",
+ "nprec;": "\u2280",
+ "npreceq;": "\u2AAF\u0338",
+ "nrArr;": "\u21CF",
+ "nrarr;": "\u219B",
+ "nrarrc;": "\u2933\u0338",
+ "nrarrw;": "\u219D\u0338",
+ "nrightarrow;": "\u219B",
+ "nrtri;": "\u22EB",
+ "nrtrie;": "\u22ED",
+ "nsc;": "\u2281",
+ "nsccue;": "\u22E1",
+ "nsce;": "\u2AB0\u0338",
+ "nscr;": "\uD835\uDCC3",
+ "nshortmid;": "\u2224",
+ "nshortparallel;": "\u2226",
+ "nsim;": "\u2241",
+ "nsime;": "\u2244",
+ "nsimeq;": "\u2244",
+ "nsmid;": "\u2224",
+ "nspar;": "\u2226",
+ "nsqsube;": "\u22E2",
+ "nsqsupe;": "\u22E3",
+ "nsub;": "\u2284",
+ "nsubE;": "\u2AC5\u0338",
+ "nsube;": "\u2288",
+ "nsubset;": "\u2282\u20D2",
+ "nsubseteq;": "\u2288",
+ "nsubseteqq;": "\u2AC5\u0338",
+ "nsucc;": "\u2281",
+ "nsucceq;": "\u2AB0\u0338",
+ "nsup;": "\u2285",
+ "nsupE;": "\u2AC6\u0338",
+ "nsupe;": "\u2289",
+ "nsupset;": "\u2283\u20D2",
+ "nsupseteq;": "\u2289",
+ "nsupseteqq;": "\u2AC6\u0338",
+ "ntgl;": "\u2279",
+ "ntilde": "\u00F1",
+ "ntilde;": "\u00F1",
+ "ntlg;": "\u2278",
+ "ntriangleleft;": "\u22EA",
+ "ntrianglelefteq;": "\u22EC",
+ "ntriangleright;": "\u22EB",
+ "ntrianglerighteq;": "\u22ED",
+ "nu;": "\u03BD",
+ "num;": "\u0023",
+ "numero;": "\u2116",
+ "numsp;": "\u2007",
+ "nvDash;": "\u22AD",
+ "nvHarr;": "\u2904",
+ "nvap;": "\u224D\u20D2",
+ "nvdash;": "\u22AC",
+ "nvge;": "\u2265\u20D2",
+ "nvgt;": "\u003E\u20D2",
+ "nvinfin;": "\u29DE",
+ "nvlArr;": "\u2902",
+ "nvle;": "\u2264\u20D2",
+ "nvlt;": "\u003C\u20D2",
+ "nvltrie;": "\u22B4\u20D2",
+ "nvrArr;": "\u2903",
+ "nvrtrie;": "\u22B5\u20D2",
+ "nvsim;": "\u223C\u20D2",
+ "nwArr;": "\u21D6",
+ "nwarhk;": "\u2923",
+ "nwarr;": "\u2196",
+ "nwarrow;": "\u2196",
+ "nwnear;": "\u2927",
+ "oS;": "\u24C8",
+ "oacute": "\u00F3",
+ "oacute;": "\u00F3",
+ "oast;": "\u229B",
+ "ocir;": "\u229A",
+ "ocirc": "\u00F4",
+ "ocirc;": "\u00F4",
+ "ocy;": "\u043E",
+ "odash;": "\u229D",
+ "odblac;": "\u0151",
+ "odiv;": "\u2A38",
+ "odot;": "\u2299",
+ "odsold;": "\u29BC",
+ "oelig;": "\u0153",
+ "ofcir;": "\u29BF",
+ "ofr;": "\uD835\uDD2C",
+ "ogon;": "\u02DB",
+ "ograve": "\u00F2",
+ "ograve;": "\u00F2",
+ "ogt;": "\u29C1",
+ "ohbar;": "\u29B5",
+ "ohm;": "\u03A9",
+ "oint;": "\u222E",
+ "olarr;": "\u21BA",
+ "olcir;": "\u29BE",
+ "olcross;": "\u29BB",
+ "oline;": "\u203E",
+ "olt;": "\u29C0",
+ "omacr;": "\u014D",
+ "omega;": "\u03C9",
+ "omicron;": "\u03BF",
+ "omid;": "\u29B6",
+ "ominus;": "\u2296",
+ "oopf;": "\uD835\uDD60",
+ "opar;": "\u29B7",
+ "operp;": "\u29B9",
+ "oplus;": "\u2295",
+ "or;": "\u2228",
+ "orarr;": "\u21BB",
+ "ord;": "\u2A5D",
+ "order;": "\u2134",
+ "orderof;": "\u2134",
+ "ordf": "\u00AA",
+ "ordf;": "\u00AA",
+ "ordm": "\u00BA",
+ "ordm;": "\u00BA",
+ "origof;": "\u22B6",
+ "oror;": "\u2A56",
+ "orslope;": "\u2A57",
+ "orv;": "\u2A5B",
+ "oscr;": "\u2134",
+ "oslash": "\u00F8",
+ "oslash;": "\u00F8",
+ "osol;": "\u2298",
+ "otilde": "\u00F5",
+ "otilde;": "\u00F5",
+ "otimes;": "\u2297",
+ "otimesas;": "\u2A36",
+ "ouml": "\u00F6",
+ "ouml;": "\u00F6",
+ "ovbar;": "\u233D",
+ "par;": "\u2225",
+ "para": "\u00B6",
+ "para;": "\u00B6",
+ "parallel;": "\u2225",
+ "parsim;": "\u2AF3",
+ "parsl;": "\u2AFD",
+ "part;": "\u2202",
+ "pcy;": "\u043F",
+ "percnt;": "\u0025",
+ "period;": "\u002E",
+ "permil;": "\u2030",
+ "perp;": "\u22A5",
+ "pertenk;": "\u2031",
+ "pfr;": "\uD835\uDD2D",
+ "phi;": "\u03C6",
+ "phiv;": "\u03D5",
+ "phmmat;": "\u2133",
+ "phone;": "\u260E",
+ "pi;": "\u03C0",
+ "pitchfork;": "\u22D4",
+ "piv;": "\u03D6",
+ "planck;": "\u210F",
+ "planckh;": "\u210E",
+ "plankv;": "\u210F",
+ "plus;": "\u002B",
+ "plusacir;": "\u2A23",
+ "plusb;": "\u229E",
+ "pluscir;": "\u2A22",
+ "plusdo;": "\u2214",
+ "plusdu;": "\u2A25",
+ "pluse;": "\u2A72",
+ "plusmn": "\u00B1",
+ "plusmn;": "\u00B1",
+ "plussim;": "\u2A26",
+ "plustwo;": "\u2A27",
+ "pm;": "\u00B1",
+ "pointint;": "\u2A15",
+ "popf;": "\uD835\uDD61",
+ "pound": "\u00A3",
+ "pound;": "\u00A3",
+ "pr;": "\u227A",
+ "prE;": "\u2AB3",
+ "prap;": "\u2AB7",
+ "prcue;": "\u227C",
+ "pre;": "\u2AAF",
+ "prec;": "\u227A",
+ "precapprox;": "\u2AB7",
+ "preccurlyeq;": "\u227C",
+ "preceq;": "\u2AAF",
+ "precnapprox;": "\u2AB9",
+ "precneqq;": "\u2AB5",
+ "precnsim;": "\u22E8",
+ "precsim;": "\u227E",
+ "prime;": "\u2032",
+ "primes;": "\u2119",
+ "prnE;": "\u2AB5",
+ "prnap;": "\u2AB9",
+ "prnsim;": "\u22E8",
+ "prod;": "\u220F",
+ "profalar;": "\u232E",
+ "profline;": "\u2312",
+ "profsurf;": "\u2313",
+ "prop;": "\u221D",
+ "propto;": "\u221D",
+ "prsim;": "\u227E",
+ "prurel;": "\u22B0",
+ "pscr;": "\uD835\uDCC5",
+ "psi;": "\u03C8",
+ "puncsp;": "\u2008",
+ "qfr;": "\uD835\uDD2E",
+ "qint;": "\u2A0C",
+ "qopf;": "\uD835\uDD62",
+ "qprime;": "\u2057",
+ "qscr;": "\uD835\uDCC6",
+ "quaternions;": "\u210D",
+ "quatint;": "\u2A16",
+ "quest;": "\u003F",
+ "questeq;": "\u225F",
+ "quot": "\u0022",
+ "quot;": "\u0022",
+ "rAarr;": "\u21DB",
+ "rArr;": "\u21D2",
+ "rAtail;": "\u291C",
+ "rBarr;": "\u290F",
+ "rHar;": "\u2964",
+ "race;": "\u223D\u0331",
+ "racute;": "\u0155",
+ "radic;": "\u221A",
+ "raemptyv;": "\u29B3",
+ "rang;": "\u27E9",
+ "rangd;": "\u2992",
+ "range;": "\u29A5",
+ "rangle;": "\u27E9",
+ "raquo": "\u00BB",
+ "raquo;": "\u00BB",
+ "rarr;": "\u2192",
+ "rarrap;": "\u2975",
+ "rarrb;": "\u21E5",
+ "rarrbfs;": "\u2920",
+ "rarrc;": "\u2933",
+ "rarrfs;": "\u291E",
+ "rarrhk;": "\u21AA",
+ "rarrlp;": "\u21AC",
+ "rarrpl;": "\u2945",
+ "rarrsim;": "\u2974",
+ "rarrtl;": "\u21A3",
+ "rarrw;": "\u219D",
+ "ratail;": "\u291A",
+ "ratio;": "\u2236",
+ "rationals;": "\u211A",
+ "rbarr;": "\u290D",
+ "rbbrk;": "\u2773",
+ "rbrace;": "\u007D",
+ "rbrack;": "\u005D",
+ "rbrke;": "\u298C",
+ "rbrksld;": "\u298E",
+ "rbrkslu;": "\u2990",
+ "rcaron;": "\u0159",
+ "rcedil;": "\u0157",
+ "rceil;": "\u2309",
+ "rcub;": "\u007D",
+ "rcy;": "\u0440",
+ "rdca;": "\u2937",
+ "rdldhar;": "\u2969",
+ "rdquo;": "\u201D",
+ "rdquor;": "\u201D",
+ "rdsh;": "\u21B3",
+ "real;": "\u211C",
+ "realine;": "\u211B",
+ "realpart;": "\u211C",
+ "reals;": "\u211D",
+ "rect;": "\u25AD",
+ "reg": "\u00AE",
+ "reg;": "\u00AE",
+ "rfisht;": "\u297D",
+ "rfloor;": "\u230B",
+ "rfr;": "\uD835\uDD2F",
+ "rhard;": "\u21C1",
+ "rharu;": "\u21C0",
+ "rharul;": "\u296C",
+ "rho;": "\u03C1",
+ "rhov;": "\u03F1",
+ "rightarrow;": "\u2192",
+ "rightarrowtail;": "\u21A3",
+ "rightharpoondown;": "\u21C1",
+ "rightharpoonup;": "\u21C0",
+ "rightleftarrows;": "\u21C4",
+ "rightleftharpoons;": "\u21CC",
+ "rightrightarrows;": "\u21C9",
+ "rightsquigarrow;": "\u219D",
+ "rightthreetimes;": "\u22CC",
+ "ring;": "\u02DA",
+ "risingdotseq;": "\u2253",
+ "rlarr;": "\u21C4",
+ "rlhar;": "\u21CC",
+ "rlm;": "\u200F",
+ "rmoust;": "\u23B1",
+ "rmoustache;": "\u23B1",
+ "rnmid;": "\u2AEE",
+ "roang;": "\u27ED",
+ "roarr;": "\u21FE",
+ "robrk;": "\u27E7",
+ "ropar;": "\u2986",
+ "ropf;": "\uD835\uDD63",
+ "roplus;": "\u2A2E",
+ "rotimes;": "\u2A35",
+ "rpar;": "\u0029",
+ "rpargt;": "\u2994",
+ "rppolint;": "\u2A12",
+ "rrarr;": "\u21C9",
+ "rsaquo;": "\u203A",
+ "rscr;": "\uD835\uDCC7",
+ "rsh;": "\u21B1",
+ "rsqb;": "\u005D",
+ "rsquo;": "\u2019",
+ "rsquor;": "\u2019",
+ "rthree;": "\u22CC",
+ "rtimes;": "\u22CA",
+ "rtri;": "\u25B9",
+ "rtrie;": "\u22B5",
+ "rtrif;": "\u25B8",
+ "rtriltri;": "\u29CE",
+ "ruluhar;": "\u2968",
+ "rx;": "\u211E",
+ "sacute;": "\u015B",
+ "sbquo;": "\u201A",
+ "sc;": "\u227B",
+ "scE;": "\u2AB4",
+ "scap;": "\u2AB8",
+ "scaron;": "\u0161",
+ "sccue;": "\u227D",
+ "sce;": "\u2AB0",
+ "scedil;": "\u015F",
+ "scirc;": "\u015D",
+ "scnE;": "\u2AB6",
+ "scnap;": "\u2ABA",
+ "scnsim;": "\u22E9",
+ "scpolint;": "\u2A13",
+ "scsim;": "\u227F",
+ "scy;": "\u0441",
+ "sdot;": "\u22C5",
+ "sdotb;": "\u22A1",
+ "sdote;": "\u2A66",
+ "seArr;": "\u21D8",
+ "searhk;": "\u2925",
+ "searr;": "\u2198",
+ "searrow;": "\u2198",
+ "sect": "\u00A7",
+ "sect;": "\u00A7",
+ "semi;": "\u003B",
+ "seswar;": "\u2929",
+ "setminus;": "\u2216",
+ "setmn;": "\u2216",
+ "sext;": "\u2736",
+ "sfr;": "\uD835\uDD30",
+ "sfrown;": "\u2322",
+ "sharp;": "\u266F",
+ "shchcy;": "\u0449",
+ "shcy;": "\u0448",
+ "shortmid;": "\u2223",
+ "shortparallel;": "\u2225",
+ "shy": "\u00AD",
+ "shy;": "\u00AD",
+ "sigma;": "\u03C3",
+ "sigmaf;": "\u03C2",
+ "sigmav;": "\u03C2",
+ "sim;": "\u223C",
+ "simdot;": "\u2A6A",
+ "sime;": "\u2243",
+ "simeq;": "\u2243",
+ "simg;": "\u2A9E",
+ "simgE;": "\u2AA0",
+ "siml;": "\u2A9D",
+ "simlE;": "\u2A9F",
+ "simne;": "\u2246",
+ "simplus;": "\u2A24",
+ "simrarr;": "\u2972",
+ "slarr;": "\u2190",
+ "smallsetminus;": "\u2216",
+ "smashp;": "\u2A33",
+ "smeparsl;": "\u29E4",
+ "smid;": "\u2223",
+ "smile;": "\u2323",
+ "smt;": "\u2AAA",
+ "smte;": "\u2AAC",
+ "smtes;": "\u2AAC\uFE00",
+ "softcy;": "\u044C",
+ "sol;": "\u002F",
+ "solb;": "\u29C4",
+ "solbar;": "\u233F",
+ "sopf;": "\uD835\uDD64",
+ "spades;": "\u2660",
+ "spadesuit;": "\u2660",
+ "spar;": "\u2225",
+ "sqcap;": "\u2293",
+ "sqcaps;": "\u2293\uFE00",
+ "sqcup;": "\u2294",
+ "sqcups;": "\u2294\uFE00",
+ "sqsub;": "\u228F",
+ "sqsube;": "\u2291",
+ "sqsubset;": "\u228F",
+ "sqsubseteq;": "\u2291",
+ "sqsup;": "\u2290",
+ "sqsupe;": "\u2292",
+ "sqsupset;": "\u2290",
+ "sqsupseteq;": "\u2292",
+ "squ;": "\u25A1",
+ "square;": "\u25A1",
+ "squarf;": "\u25AA",
+ "squf;": "\u25AA",
+ "srarr;": "\u2192",
+ "sscr;": "\uD835\uDCC8",
+ "ssetmn;": "\u2216",
+ "ssmile;": "\u2323",
+ "sstarf;": "\u22C6",
+ "star;": "\u2606",
+ "starf;": "\u2605",
+ "straightepsilon;": "\u03F5",
+ "straightphi;": "\u03D5",
+ "strns;": "\u00AF",
+ "sub;": "\u2282",
+ "subE;": "\u2AC5",
+ "subdot;": "\u2ABD",
+ "sube;": "\u2286",
+ "subedot;": "\u2AC3",
+ "submult;": "\u2AC1",
+ "subnE;": "\u2ACB",
+ "subne;": "\u228A",
+ "subplus;": "\u2ABF",
+ "subrarr;": "\u2979",
+ "subset;": "\u2282",
+ "subseteq;": "\u2286",
+ "subseteqq;": "\u2AC5",
+ "subsetneq;": "\u228A",
+ "subsetneqq;": "\u2ACB",
+ "subsim;": "\u2AC7",
+ "subsub;": "\u2AD5",
+ "subsup;": "\u2AD3",
+ "succ;": "\u227B",
+ "succapprox;": "\u2AB8",
+ "succcurlyeq;": "\u227D",
+ "succeq;": "\u2AB0",
+ "succnapprox;": "\u2ABA",
+ "succneqq;": "\u2AB6",
+ "succnsim;": "\u22E9",
+ "succsim;": "\u227F",
+ "sum;": "\u2211",
+ "sung;": "\u266A",
+ "sup1": "\u00B9",
+ "sup1;": "\u00B9",
+ "sup2": "\u00B2",
+ "sup2;": "\u00B2",
+ "sup3": "\u00B3",
+ "sup3;": "\u00B3",
+ "sup;": "\u2283",
+ "supE;": "\u2AC6",
+ "supdot;": "\u2ABE",
+ "supdsub;": "\u2AD8",
+ "supe;": "\u2287",
+ "supedot;": "\u2AC4",
+ "suphsol;": "\u27C9",
+ "suphsub;": "\u2AD7",
+ "suplarr;": "\u297B",
+ "supmult;": "\u2AC2",
+ "supnE;": "\u2ACC",
+ "supne;": "\u228B",
+ "supplus;": "\u2AC0",
+ "supset;": "\u2283",
+ "supseteq;": "\u2287",
+ "supseteqq;": "\u2AC6",
+ "supsetneq;": "\u228B",
+ "supsetneqq;": "\u2ACC",
+ "supsim;": "\u2AC8",
+ "supsub;": "\u2AD4",
+ "supsup;": "\u2AD6",
+ "swArr;": "\u21D9",
+ "swarhk;": "\u2926",
+ "swarr;": "\u2199",
+ "swarrow;": "\u2199",
+ "swnwar;": "\u292A",
+ "szlig": "\u00DF",
+ "szlig;": "\u00DF",
+ "target;": "\u2316",
+ "tau;": "\u03C4",
+ "tbrk;": "\u23B4",
+ "tcaron;": "\u0165",
+ "tcedil;": "\u0163",
+ "tcy;": "\u0442",
+ "tdot;": "\u20DB",
+ "telrec;": "\u2315",
+ "tfr;": "\uD835\uDD31",
+ "there4;": "\u2234",
+ "therefore;": "\u2234",
+ "theta;": "\u03B8",
+ "thetasym;": "\u03D1",
+ "thetav;": "\u03D1",
+ "thickapprox;": "\u2248",
+ "thicksim;": "\u223C",
+ "thinsp;": "\u2009",
+ "thkap;": "\u2248",
+ "thksim;": "\u223C",
+ "thorn": "\u00FE",
+ "thorn;": "\u00FE",
+ "tilde;": "\u02DC",
+ "times": "\u00D7",
+ "times;": "\u00D7",
+ "timesb;": "\u22A0",
+ "timesbar;": "\u2A31",
+ "timesd;": "\u2A30",
+ "tint;": "\u222D",
+ "toea;": "\u2928",
+ "top;": "\u22A4",
+ "topbot;": "\u2336",
+ "topcir;": "\u2AF1",
+ "topf;": "\uD835\uDD65",
+ "topfork;": "\u2ADA",
+ "tosa;": "\u2929",
+ "tprime;": "\u2034",
+ "trade;": "\u2122",
+ "triangle;": "\u25B5",
+ "triangledown;": "\u25BF",
+ "triangleleft;": "\u25C3",
+ "trianglelefteq;": "\u22B4",
+ "triangleq;": "\u225C",
+ "triangleright;": "\u25B9",
+ "trianglerighteq;": "\u22B5",
+ "tridot;": "\u25EC",
+ "trie;": "\u225C",
+ "triminus;": "\u2A3A",
+ "triplus;": "\u2A39",
+ "trisb;": "\u29CD",
+ "tritime;": "\u2A3B",
+ "trpezium;": "\u23E2",
+ "tscr;": "\uD835\uDCC9",
+ "tscy;": "\u0446",
+ "tshcy;": "\u045B",
+ "tstrok;": "\u0167",
+ "twixt;": "\u226C",
+ "twoheadleftarrow;": "\u219E",
+ "twoheadrightarrow;": "\u21A0",
+ "uArr;": "\u21D1",
+ "uHar;": "\u2963",
+ "uacute": "\u00FA",
+ "uacute;": "\u00FA",
+ "uarr;": "\u2191",
+ "ubrcy;": "\u045E",
+ "ubreve;": "\u016D",
+ "ucirc": "\u00FB",
+ "ucirc;": "\u00FB",
+ "ucy;": "\u0443",
+ "udarr;": "\u21C5",
+ "udblac;": "\u0171",
+ "udhar;": "\u296E",
+ "ufisht;": "\u297E",
+ "ufr;": "\uD835\uDD32",
+ "ugrave": "\u00F9",
+ "ugrave;": "\u00F9",
+ "uharl;": "\u21BF",
+ "uharr;": "\u21BE",
+ "uhblk;": "\u2580",
+ "ulcorn;": "\u231C",
+ "ulcorner;": "\u231C",
+ "ulcrop;": "\u230F",
+ "ultri;": "\u25F8",
+ "umacr;": "\u016B",
+ "uml": "\u00A8",
+ "uml;": "\u00A8",
+ "uogon;": "\u0173",
+ "uopf;": "\uD835\uDD66",
+ "uparrow;": "\u2191",
+ "updownarrow;": "\u2195",
+ "upharpoonleft;": "\u21BF",
+ "upharpoonright;": "\u21BE",
+ "uplus;": "\u228E",
+ "upsi;": "\u03C5",
+ "upsih;": "\u03D2",
+ "upsilon;": "\u03C5",
+ "upuparrows;": "\u21C8",
+ "urcorn;": "\u231D",
+ "urcorner;": "\u231D",
+ "urcrop;": "\u230E",
+ "uring;": "\u016F",
+ "urtri;": "\u25F9",
+ "uscr;": "\uD835\uDCCA",
+ "utdot;": "\u22F0",
+ "utilde;": "\u0169",
+ "utri;": "\u25B5",
+ "utrif;": "\u25B4",
+ "uuarr;": "\u21C8",
+ "uuml": "\u00FC",
+ "uuml;": "\u00FC",
+ "uwangle;": "\u29A7",
+ "vArr;": "\u21D5",
+ "vBar;": "\u2AE8",
+ "vBarv;": "\u2AE9",
+ "vDash;": "\u22A8",
+ "vangrt;": "\u299C",
+ "varepsilon;": "\u03F5",
+ "varkappa;": "\u03F0",
+ "varnothing;": "\u2205",
+ "varphi;": "\u03D5",
+ "varpi;": "\u03D6",
+ "varpropto;": "\u221D",
+ "varr;": "\u2195",
+ "varrho;": "\u03F1",
+ "varsigma;": "\u03C2",
+ "varsubsetneq;": "\u228A\uFE00",
+ "varsubsetneqq;": "\u2ACB\uFE00",
+ "varsupsetneq;": "\u228B\uFE00",
+ "varsupsetneqq;": "\u2ACC\uFE00",
+ "vartheta;": "\u03D1",
+ "vartriangleleft;": "\u22B2",
+ "vartriangleright;": "\u22B3",
+ "vcy;": "\u0432",
+ "vdash;": "\u22A2",
+ "vee;": "\u2228",
+ "veebar;": "\u22BB",
+ "veeeq;": "\u225A",
+ "vellip;": "\u22EE",
+ "verbar;": "\u007C",
+ "vert;": "\u007C",
+ "vfr;": "\uD835\uDD33",
+ "vltri;": "\u22B2",
+ "vnsub;": "\u2282\u20D2",
+ "vnsup;": "\u2283\u20D2",
+ "vopf;": "\uD835\uDD67",
+ "vprop;": "\u221D",
+ "vrtri;": "\u22B3",
+ "vscr;": "\uD835\uDCCB",
+ "vsubnE;": "\u2ACB\uFE00",
+ "vsubne;": "\u228A\uFE00",
+ "vsupnE;": "\u2ACC\uFE00",
+ "vsupne;": "\u228B\uFE00",
+ "vzigzag;": "\u299A",
+ "wcirc;": "\u0175",
+ "wedbar;": "\u2A5F",
+ "wedge;": "\u2227",
+ "wedgeq;": "\u2259",
+ "weierp;": "\u2118",
+ "wfr;": "\uD835\uDD34",
+ "wopf;": "\uD835\uDD68",
+ "wp;": "\u2118",
+ "wr;": "\u2240",
+ "wreath;": "\u2240",
+ "wscr;": "\uD835\uDCCC",
+ "xcap;": "\u22C2",
+ "xcirc;": "\u25EF",
+ "xcup;": "\u22C3",
+ "xdtri;": "\u25BD",
+ "xfr;": "\uD835\uDD35",
+ "xhArr;": "\u27FA",
+ "xharr;": "\u27F7",
+ "xi;": "\u03BE",
+ "xlArr;": "\u27F8",
+ "xlarr;": "\u27F5",
+ "xmap;": "\u27FC",
+ "xnis;": "\u22FB",
+ "xodot;": "\u2A00",
+ "xopf;": "\uD835\uDD69",
+ "xoplus;": "\u2A01",
+ "xotime;": "\u2A02",
+ "xrArr;": "\u27F9",
+ "xrarr;": "\u27F6",
+ "xscr;": "\uD835\uDCCD",
+ "xsqcup;": "\u2A06",
+ "xuplus;": "\u2A04",
+ "xutri;": "\u25B3",
+ "xvee;": "\u22C1",
+ "xwedge;": "\u22C0",
+ "yacute": "\u00FD",
+ "yacute;": "\u00FD",
+ "yacy;": "\u044F",
+ "ycirc;": "\u0177",
+ "ycy;": "\u044B",
+ "yen": "\u00A5",
+ "yen;": "\u00A5",
+ "yfr;": "\uD835\uDD36",
+ "yicy;": "\u0457",
+ "yopf;": "\uD835\uDD6A",
+ "yscr;": "\uD835\uDCCE",
+ "yucy;": "\u044E",
+ "yuml": "\u00FF",
+ "yuml;": "\u00FF",
+ "zacute;": "\u017A",
+ "zcaron;": "\u017E",
+ "zcy;": "\u0437",
+ "zdot;": "\u017C",
+ "zeetrf;": "\u2128",
+ "zeta;": "\u03B6",
+ "zfr;": "\uD835\uDD37",
+ "zhcy;": "\u0436",
+ "zigrarr;": "\u21DD",
+ "zopf;": "\uD835\uDD6B",
+ "zscr;": "\uD835\uDCCF",
+ "zwj;": "\u200D",
+ "zwnj;": "\u200C"
+}
diff --git a/src/lib/utils/html.ts b/src/lib/utils/html.ts
new file mode 100644
index 000000000..29ac5df1e
--- /dev/null
+++ b/src/lib/utils/html.ts
@@ -0,0 +1,28 @@
+// There is a fixed list of named character references which will not be expanded in the future.
+// This json file is based on https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references
+// with some modifications to reduce the file size of the original JSON since we just need.
+import htmlEntities from "./html-entities.json";
+
+// Three cases:
+// { - numeric escape
+// - hex escape
+// & - named escape
+function unescapeEntities(html: string) {
+ return html.replace(
+ /&(#(?:\d+);?|(?:#[xX][0-9A-Fa-f]+);?|(?:\w+);?)/g,
+ (_, n) => {
+ if (n[0] === "#") {
+ return String.fromCharCode(
+ n[1] === "x" || n[1] === "X"
+ ? parseInt(n.substring(2), 16)
+ : parseInt(n.substring(1), 10)
+ );
+ }
+ return htmlEntities[n as never] || "";
+ }
+ );
+}
+
+export function getTextContent(text: string) {
+ return unescapeEntities(text.replace(/<.*?(?:>|$)/g, ""));
+}
diff --git a/src/lib/utils/jsx.ts b/src/lib/utils/jsx.ts
index 3aff70359..cf85d6703 100644
--- a/src/lib/utils/jsx.ts
+++ b/src/lib/utils/jsx.ts
@@ -52,18 +52,16 @@ export declare namespace JSX {
export { IntrinsicElements, JsxElement as Element };
}
+const htmlEscapes: Record = {
+ "&": "&",
+ "<": "<",
+ ">": ">",
+ '"': """,
+ "'": "'",
+};
+
function escapeHtml(html: string) {
- return html.replace(
- /[&<>'"]/g,
- (c) =>
- ({
- "&": "&",
- "<": "<",
- ">": ">",
- '"': """,
- "'": "'",
- }[c as never])
- );
+ return html.replace(/[&<>'"]/g, (c) => htmlEscapes[c as never]);
}
const voidElements = new Set([
diff --git a/src/test/utils/html.test.ts b/src/test/utils/html.test.ts
new file mode 100644
index 000000000..af0180f77
--- /dev/null
+++ b/src/test/utils/html.test.ts
@@ -0,0 +1,32 @@
+import { strictEqual as equal } from "assert";
+import { getTextContent } from "../../lib/utils/html";
+
+describe("getTextContent", () => {
+ it("Handles simple text", () => {
+ equal(getTextContent("Hello there"), "Hello there");
+ });
+
+ it("Handles entity escapes", () => {
+ equal(getTextContent("A B"), "A B");
+ equal(getTextContent("A B"), "A B");
+ equal(getTextContent("A B"), "A B");
+ equal(getTextContent("A B"), "A B");
+ equal(getTextContent("A & B"), "A & B");
+ });
+
+ it("Strips HTML tags", () => {
+ equal(getTextContent("A B C"), "A B C");
+ equal(getTextContent("A B C"), "A B C");
+ equal(getTextContent("A B C"), "A B C");
+ equal(getTextContent('A B C'), "A B C");
+ equal(getTextContent('A {
+ equal(getTextContent("ABC"), "ABC");
+ });
+
+ it("Preserves lt/gt", () => {
+ equal(getTextContent("<a>"), "");
+ });
+});