diff --git a/README.md b/README.md index e0e2065..18d36fa 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ They are considered as a single character representing their decoded value. This If a named entity is an invalid reference as per the [spec](https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references), it is considered malformed and will be interpreted literally. -Numeric character references that reference to numbers below 0x00 or above 0x10FFFF are considered malformed. It will be decoded if it falls within this range, even if it does not refer to a valid Unicode code point. +Numeric character references that do not reference a valid [Unicode Scalar Value](https://www.unicode.org/glossary/#unicode_scalar_value) are considered malformed. ### Attributes diff --git a/src/main.rs b/src/main.rs index 74c0a1b..063ee06 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ use std::fs::File; -use std::io::{Read, Write}; +use std::io::{Read, Write, stderr}; use structopt::StructOpt; @@ -27,9 +27,34 @@ fn main() { Err((err, pos)) => { eprintln!("Failed at character {}:", pos); match err { - // TODO - _ => unimplemented!(), + ErrorType::NoSpaceBeforeAttr => { + eprintln!("Space required before attribute."); + } + ErrorType::UnterminatedCssString => { + eprintln!("Unterminated CSS string."); + } + ErrorType::UnterminatedJsString => { + eprintln!("Unterminated JavaScript string."); + } + ErrorType::CharNotFound { need, got } => { + eprintln!("Expected {} (U+{:X}), got {} (U+{:X}).", need as char, need, got as char, got); + } + ErrorType::MatchNotFound(seq) => { + eprint!("Expected `"); + stderr().write_all(seq).expect("failed to write to stderr"); + eprintln!("`."); + } + ErrorType::NotFound(exp) => { + eprintln!("Expected {}.", exp); + } + ErrorType::UnexpectedChar(unexp) => { + eprintln!("Unexpected {} (U+{:X}).", unexp as char, unexp); + } + ErrorType::UnexpectedEnd => { + eprintln!("Unexpected end of source code."); + } }; + eprintln!("The output file has not been touched.") } }; } diff --git a/src/proc.rs b/src/proc.rs index ac6e5de..97b701a 100644 --- a/src/proc.rs +++ b/src/proc.rs @@ -35,7 +35,7 @@ pub enum RequireReason { ExpectedChar(u8), } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Eq, PartialEq)] pub struct Checkpoint { read_next: usize, write_next: usize, @@ -70,15 +70,6 @@ pub struct Processor<'d> { write_next: usize, } -fn index_of(s: &'static [u8], c: u8, from: usize) -> Option { - for i in from..s.len() { - if s[i] == c { - return Some(i); - }; - }; - None -} - impl<'d> Index for Processor<'d> { type Output = [u8]; @@ -383,32 +374,10 @@ impl<'d> Processor<'d> { self.code[self.write_next..self.write_next + s.len()].copy_from_slice(s); self.write_next += s.len(); } - /// Does not check if `c` is a valid Unicode code point. - pub fn write_utf8(&mut self, c: u32) -> () { - // TODO Test. - // Don't use char::encode_utf8 as it requires a valid code point, - // and requires passing a [u8, 4] which might be heap-allocated. - if c <= 0x7F { - // Plain ASCII. - self.write(c as u8); - } else if c <= 0x07FF { - // 2-byte UTF-8. - self.write((((c >> 6) & 0x1F) | 0xC0) as u8); - self.write((((c >> 0) & 0x3F) | 0x80) as u8); - } else if c <= 0xFFFF { - // 3-byte UTF-8. - self.write((((c >> 12) & 0x0F) | 0xE0) as u8); - self.write((((c >> 6) & 0x3F) | 0x80) as u8); - self.write((((c >> 0) & 0x3F) | 0x80) as u8); - } else if c <= 0x10FFFF { - // 4-byte UTF-8. - self.write((((c >> 18) & 0x07) | 0xF0) as u8); - self.write((((c >> 12) & 0x3F) | 0x80) as u8); - self.write((((c >> 6) & 0x3F) | 0x80) as u8); - self.write((((c >> 0) & 0x3F) | 0x80) as u8); - } else { - unreachable!(); - } + pub fn write_utf8(&mut self, c: char) -> () { + let mut encoded = [0u8, 4]; + c.encode_utf8(&mut encoded); + self.write_slice(&encoded); } // Shifting characters. diff --git a/src/spec/entity.rs b/src/spec/entity.rs index b77405f..b92d1ab 100644 --- a/src/spec/entity.rs +++ b/src/spec/entity.rs @@ -1,2046 +1,2135 @@ use phf::{Map, phf_map}; -// Sourced from https://dev.w3.org/html5/html-author/charref at 2018-07-02T10:00:00Z. -// TODO Update and use from https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references. +// Sourced from https://html.spec.whatwg.org/entities.json at 2019-12-26T12:30:00Z. // HTML entity reference names are case sensitive. -pub static ENTITY_REFERENCES: Map<&'static [u8], u32> = phf_map! { - b"AElig" => 0xc6, - b"AMP" => 0x26, - b"Aacute" => 0xc1, - b"Abreve" => 0x102, - b"Acirc" => 0xc2, - b"Acy" => 0x410, - b"Afr" => 0x1d504, - b"Agrave" => 0xc0, - b"Alpha" => 0x391, - b"Amacr" => 0x100, - b"And" => 0x2a53, - b"Aogon" => 0x104, - b"Aopf" => 0x1d538, - b"ApplyFunction" => 0x2061, - b"Aring" => 0xc5, - b"Ascr" => 0x1d49c, - b"Assign" => 0x2254, - b"Atilde" => 0xc3, - b"Auml" => 0xc4, - b"Backslash" => 0x2216, - b"Barv" => 0x2ae7, - b"Barwed" => 0x2306, - b"Bcy" => 0x411, - b"Because" => 0x2235, - b"Bernoullis" => 0x212c, - b"Beta" => 0x392, - b"Bfr" => 0x1d505, - b"Bopf" => 0x1d539, - b"Breve" => 0x2d8, - b"Bscr" => 0x212c, - b"Bumpeq" => 0x224e, - b"CHcy" => 0x427, - b"COPY" => 0xa9, - b"Cacute" => 0x106, - b"Cap" => 0x22d2, - b"CapitalDifferentialD" => 0x2145, - b"Cayleys" => 0x212d, - b"Ccaron" => 0x10c, - b"Ccedil" => 0xc7, - b"Ccirc" => 0x108, - b"Cconint" => 0x2230, - b"Cdot" => 0x10a, - b"Cedilla" => 0xb8, - b"CenterDot" => 0xb7, - b"Cfr" => 0x212d, - b"Chi" => 0x3a7, - b"CircleDot" => 0x2299, - b"CircleMinus" => 0x2296, - b"CirclePlus" => 0x2295, - b"CircleTimes" => 0x2297, - b"ClockwiseContourIntegral" => 0x2232, - b"CloseCurlyDoubleQuote" => 0x201d, - b"CloseCurlyQuote" => 0x2019, - b"Colon" => 0x2237, - b"Colone" => 0x2a74, - b"Congruent" => 0x2261, - b"Conint" => 0x222f, - b"ContourIntegral" => 0x222e, - b"Copf" => 0x2102, - b"Coproduct" => 0x2210, - b"CounterClockwiseContourIntegral" => 0x2233, - b"Cross" => 0x2a2f, - b"Cscr" => 0x1d49e, - b"Cup" => 0x22d3, - b"CupCap" => 0x224d, - b"DD" => 0x2145, - b"DDotrahd" => 0x2911, - b"DJcy" => 0x402, - b"DScy" => 0x405, - b"DZcy" => 0x40f, - b"Dagger" => 0x2021, - b"Darr" => 0x21a1, - b"Dashv" => 0x2ae4, - b"Dcaron" => 0x10e, - b"Dcy" => 0x414, - b"Del" => 0x2207, - b"Delta" => 0x394, - b"Dfr" => 0x1d507, - b"DiacriticalAcute" => 0xb4, - b"DiacriticalDot" => 0x2d9, - b"DiacriticalDoubleAcute" => 0x2dd, - b"DiacriticalGrave" => 0x60, - b"DiacriticalTilde" => 0x2dc, - b"Diamond" => 0x22c4, - b"DifferentialD" => 0x2146, - b"Dopf" => 0x1d53b, - b"Dot" => 0xa8, - b"DotDot" => 0x20dc, - b"DotEqual" => 0x2250, - b"DoubleContourIntegral" => 0x222f, - b"DoubleDot" => 0xa8, - b"DoubleDownArrow" => 0x21d3, - b"DoubleLeftArrow" => 0x21d0, - b"DoubleLeftRightArrow" => 0x21d4, - b"DoubleLeftTee" => 0x2ae4, - b"DoubleLongLeftArrow" => 0x27f8, - b"DoubleLongLeftRightArrow" => 0x27fa, - b"DoubleLongRightArrow" => 0x27f9, - b"DoubleRightArrow" => 0x21d2, - b"DoubleRightTee" => 0x22a8, - b"DoubleUpArrow" => 0x21d1, - b"DoubleUpDownArrow" => 0x21d5, - b"DoubleVerticalBar" => 0x2225, - b"DownArrow" => 0x2193, - b"DownArrowBar" => 0x2913, - b"DownArrowUpArrow" => 0x21f5, - b"DownBreve" => 0x311, - b"DownLeftRightVector" => 0x2950, - b"DownLeftTeeVector" => 0x295e, - b"DownLeftVector" => 0x21bd, - b"DownLeftVectorBar" => 0x2956, - b"DownRightTeeVector" => 0x295f, - b"DownRightVector" => 0x21c1, - b"DownRightVectorBar" => 0x2957, - b"DownTee" => 0x22a4, - b"DownTeeArrow" => 0x21a7, - b"Downarrow" => 0x21d3, - b"Dscr" => 0x1d49f, - b"Dstrok" => 0x110, - b"ENG" => 0x14a, - b"ETH" => 0xd0, - b"Eacute" => 0xc9, - b"Ecaron" => 0x11a, - b"Ecirc" => 0xca, - b"Ecy" => 0x42d, - b"Edot" => 0x116, - b"Efr" => 0x1d508, - b"Egrave" => 0xc8, - b"Element" => 0x2208, - b"Emacr" => 0x112, - b"EmptySmallSquare" => 0x25fb, - b"EmptyVerySmallSquare" => 0x25ab, - b"Eogon" => 0x118, - b"Eopf" => 0x1d53c, - b"Epsilon" => 0x395, - b"Equal" => 0x2a75, - b"EqualTilde" => 0x2242, - b"Equilibrium" => 0x21cc, - b"Escr" => 0x2130, - b"Esim" => 0x2a73, - b"Eta" => 0x397, - b"Euml" => 0xcb, - b"Exists" => 0x2203, - b"ExponentialE" => 0x2147, - b"Fcy" => 0x424, - b"Ffr" => 0x1d509, - b"FilledSmallSquare" => 0x25fc, - b"FilledVerySmallSquare" => 0x25aa, - b"Fopf" => 0x1d53d, - b"ForAll" => 0x2200, - b"Fouriertrf" => 0x2131, - b"Fscr" => 0x2131, - b"GJcy" => 0x403, - b"GT" => 0x3e, - b"Gamma" => 0x393, - b"Gammad" => 0x3dc, - b"Gbreve" => 0x11e, - b"Gcedil" => 0x122, - b"Gcirc" => 0x11c, - b"Gcy" => 0x413, - b"Gdot" => 0x120, - b"Gfr" => 0x1d50a, - b"Gg" => 0x22d9, - b"Gopf" => 0x1d53e, - b"GreaterEqual" => 0x2265, - b"GreaterEqualLess" => 0x22db, - b"GreaterFullEqual" => 0x2267, - b"GreaterGreater" => 0x2aa2, - b"GreaterLess" => 0x2277, - b"GreaterSlantEqual" => 0x2a7e, - b"GreaterTilde" => 0x2273, - b"Gscr" => 0x1d4a2, - b"Gt" => 0x226b, - b"HARDcy" => 0x42a, - b"Hacek" => 0x2c7, - b"Hat" => 0x5e, - b"Hcirc" => 0x124, - b"Hfr" => 0x210c, - b"HilbertSpace" => 0x210b, - b"Hopf" => 0x210d, - b"HorizontalLine" => 0x2500, - b"Hscr" => 0x210b, - b"Hstrok" => 0x126, - b"HumpDownHump" => 0x224e, - b"HumpEqual" => 0x224f, - b"IEcy" => 0x415, - b"IJlig" => 0x132, - b"IOcy" => 0x401, - b"Iacute" => 0xcd, - b"Icirc" => 0xce, - b"Icy" => 0x418, - b"Idot" => 0x130, - b"Ifr" => 0x2111, - b"Igrave" => 0xcc, - b"Im" => 0x2111, - b"Imacr" => 0x12a, - b"ImaginaryI" => 0x2148, - b"Implies" => 0x21d2, - b"Int" => 0x222c, - b"Integral" => 0x222b, - b"Intersection" => 0x22c2, - b"InvisibleComma" => 0x2063, - b"InvisibleTimes" => 0x2062, - b"Iogon" => 0x12e, - b"Iopf" => 0x1d540, - b"Iota" => 0x399, - b"Iscr" => 0x2110, - b"Itilde" => 0x128, - b"Iukcy" => 0x406, - b"Iuml" => 0xcf, - b"Jcirc" => 0x134, - b"Jcy" => 0x419, - b"Jfr" => 0x1d50d, - b"Jopf" => 0x1d541, - b"Jscr" => 0x1d4a5, - b"Jsercy" => 0x408, - b"Jukcy" => 0x404, - b"KHcy" => 0x425, - b"KJcy" => 0x40c, - b"Kappa" => 0x39a, - b"Kcedil" => 0x136, - b"Kcy" => 0x41a, - b"Kfr" => 0x1d50e, - b"Kopf" => 0x1d542, - b"Kscr" => 0x1d4a6, - b"LJcy" => 0x409, - b"LT" => 0x3c, - b"Lacute" => 0x139, - b"Lambda" => 0x39b, - b"Lang" => 0x27ea, - b"Laplacetrf" => 0x2112, - b"Larr" => 0x219e, - b"Lcaron" => 0x13d, - b"Lcedil" => 0x13b, - b"Lcy" => 0x41b, - b"LeftAngleBracket" => 0x27e8, - b"LeftArrow" => 0x2190, - b"LeftArrowBar" => 0x21e4, - b"LeftArrowRightArrow" => 0x21c6, - b"LeftCeiling" => 0x2308, - b"LeftDoubleBracket" => 0x27e6, - b"LeftDownTeeVector" => 0x2961, - b"LeftDownVector" => 0x21c3, - b"LeftDownVectorBar" => 0x2959, - b"LeftFloor" => 0x230a, - b"LeftRightArrow" => 0x2194, - b"LeftRightVector" => 0x294e, - b"LeftTee" => 0x22a3, - b"LeftTeeArrow" => 0x21a4, - b"LeftTeeVector" => 0x295a, - b"LeftTriangle" => 0x22b2, - b"LeftTriangleBar" => 0x29cf, - b"LeftTriangleEqual" => 0x22b4, - b"LeftUpDownVector" => 0x2951, - b"LeftUpTeeVector" => 0x2960, - b"LeftUpVector" => 0x21bf, - b"LeftUpVectorBar" => 0x2958, - b"LeftVector" => 0x21bc, - b"LeftVectorBar" => 0x2952, - b"Leftarrow" => 0x21d0, - b"Leftrightarrow" => 0x21d4, - b"LessEqualGreater" => 0x22da, - b"LessFullEqual" => 0x2266, - b"LessGreater" => 0x2276, - b"LessLess" => 0x2aa1, - b"LessSlantEqual" => 0x2a7d, - b"LessTilde" => 0x2272, - b"Lfr" => 0x1d50f, - b"Ll" => 0x22d8, - b"Lleftarrow" => 0x21da, - b"Lmidot" => 0x13f, - b"LongLeftArrow" => 0x27f5, - b"LongLeftRightArrow" => 0x27f7, - b"LongRightArrow" => 0x27f6, - b"Longleftarrow" => 0x27f8, - b"Longleftrightarrow" => 0x27fa, - b"Longrightarrow" => 0x27f9, - b"Lopf" => 0x1d543, - b"LowerLeftArrow" => 0x2199, - b"LowerRightArrow" => 0x2198, - b"Lscr" => 0x2112, - b"Lsh" => 0x21b0, - b"Lstrok" => 0x141, - b"Lt" => 0x226a, - b"Map" => 0x2905, - b"Mcy" => 0x41c, - b"MediumSpace" => 0x205f, - b"Mellintrf" => 0x2133, - b"Mfr" => 0x1d510, - b"MinusPlus" => 0x2213, - b"Mopf" => 0x1d544, - b"Mscr" => 0x2133, - b"Mu" => 0x39c, - b"NJcy" => 0x40a, - b"Nacute" => 0x143, - b"Ncaron" => 0x147, - b"Ncedil" => 0x145, - b"Ncy" => 0x41d, - b"NegativeMediumSpace" => 0x200b, - b"NegativeThickSpace" => 0x200b, - b"NegativeThinSpace" => 0x200b, - b"NegativeVeryThinSpace" => 0x200b, - b"NestedGreaterGreater" => 0x226b, - b"NestedLessLess" => 0x226a, - b"NewLine" => 0xa, - b"Nfr" => 0x1d511, - b"NoBreak" => 0x2060, - b"NonBreakingSpace" => 0xa0, - b"Nopf" => 0x2115, - b"Not" => 0x2aec, - b"NotCongruent" => 0x2262, - b"NotCupCap" => 0x226d, - b"NotDoubleVerticalBar" => 0x2226, - b"NotElement" => 0x2209, - b"NotEqual" => 0x2260, - b"NotExists" => 0x2204, - b"NotGreater" => 0x226f, - b"NotGreaterEqual" => 0x2271, - b"NotGreaterLess" => 0x2279, - b"NotGreaterTilde" => 0x2275, - b"NotLeftTriangle" => 0x22ea, - b"NotLeftTriangleEqual" => 0x22ec, - b"NotLess" => 0x226e, - b"NotLessEqual" => 0x2270, - b"NotLessGreater" => 0x2278, - b"NotLessTilde" => 0x2274, - b"NotPrecedes" => 0x2280, - b"NotPrecedesSlantEqual" => 0x22e0, - b"NotReverseElement" => 0x220c, - b"NotRightTriangle" => 0x22eb, - b"NotRightTriangleEqual" => 0x22ed, - b"NotSquareSubsetEqual" => 0x22e2, - b"NotSquareSupersetEqual" => 0x22e3, - b"NotSubsetEqual" => 0x2288, - b"NotSucceeds" => 0x2281, - b"NotSucceedsSlantEqual" => 0x22e1, - b"NotSupersetEqual" => 0x2289, - b"NotTilde" => 0x2241, - b"NotTildeEqual" => 0x2244, - b"NotTildeFullEqual" => 0x2247, - b"NotTildeTilde" => 0x2249, - b"NotVerticalBar" => 0x2224, - b"Nscr" => 0x1d4a9, - b"Ntilde" => 0xd1, - b"Nu" => 0x39d, - b"OElig" => 0x152, - b"Oacute" => 0xd3, - b"Ocirc" => 0xd4, - b"Ocy" => 0x41e, - b"Odblac" => 0x150, - b"Ofr" => 0x1d512, - b"Ograve" => 0xd2, - b"Omacr" => 0x14c, - b"Omega" => 0x3a9, - b"Omicron" => 0x39f, - b"Oopf" => 0x1d546, - b"OpenCurlyDoubleQuote" => 0x201c, - b"OpenCurlyQuote" => 0x2018, - b"Or" => 0x2a54, - b"Oscr" => 0x1d4aa, - b"Oslash" => 0xd8, - b"Otilde" => 0xd5, - b"Otimes" => 0x2a37, - b"Ouml" => 0xd6, - b"OverBar" => 0xaf, - b"OverBrace" => 0x23de, - b"OverBracket" => 0x23b4, - b"OverParenthesis" => 0x23dc, - b"PartialD" => 0x2202, - b"Pcy" => 0x41f, - b"Pfr" => 0x1d513, - b"Phi" => 0x3a6, - b"Pi" => 0x3a0, - b"PlusMinus" => 0xb1, - b"Poincareplane" => 0x210c, - b"Popf" => 0x2119, - b"Pr" => 0x2abb, - b"Precedes" => 0x227a, - b"PrecedesEqual" => 0x2aaf, - b"PrecedesSlantEqual" => 0x227c, - b"PrecedesTilde" => 0x227e, - b"Prime" => 0x2033, - b"Product" => 0x220f, - b"Proportion" => 0x2237, - b"Proportional" => 0x221d, - b"Pscr" => 0x1d4ab, - b"Psi" => 0x3a8, - b"QUOT" => 0x22, - b"Qfr" => 0x1d514, - b"Qopf" => 0x211a, - b"Qscr" => 0x1d4ac, - b"RBarr" => 0x2910, - b"REG" => 0xae, - b"Racute" => 0x154, - b"Rang" => 0x27eb, - b"Rarr" => 0x21a0, - b"Rarrtl" => 0x2916, - b"Rcaron" => 0x158, - b"Rcedil" => 0x156, - b"Rcy" => 0x420, - b"Re" => 0x211c, - b"ReverseElement" => 0x220b, - b"ReverseEquilibrium" => 0x21cb, - b"ReverseUpEquilibrium" => 0x296f, - b"Rfr" => 0x211c, - b"Rho" => 0x3a1, - b"RightAngleBracket" => 0x27e9, - b"RightArrow" => 0x2192, - b"RightArrowBar" => 0x21e5, - b"RightArrowLeftArrow" => 0x21c4, - b"RightCeiling" => 0x2309, - b"RightDoubleBracket" => 0x27e7, - b"RightDownTeeVector" => 0x295d, - b"RightDownVector" => 0x21c2, - b"RightDownVectorBar" => 0x2955, - b"RightFloor" => 0x230b, - b"RightTee" => 0x22a2, - b"RightTeeArrow" => 0x21a6, - b"RightTeeVector" => 0x295b, - b"RightTriangle" => 0x22b3, - b"RightTriangleBar" => 0x29d0, - b"RightTriangleEqual" => 0x22b5, - b"RightUpDownVector" => 0x294f, - b"RightUpTeeVector" => 0x295c, - b"RightUpVector" => 0x21be, - b"RightUpVectorBar" => 0x2954, - b"RightVector" => 0x21c0, - b"RightVectorBar" => 0x2953, - b"Rightarrow" => 0x21d2, - b"Ropf" => 0x211d, - b"RoundImplies" => 0x2970, - b"Rrightarrow" => 0x21db, - b"Rscr" => 0x211b, - b"Rsh" => 0x21b1, - b"RuleDelayed" => 0x29f4, - b"SHCHcy" => 0x429, - b"SHcy" => 0x428, - b"SOFTcy" => 0x42c, - b"Sacute" => 0x15a, - b"Sc" => 0x2abc, - b"Scaron" => 0x160, - b"Scedil" => 0x15e, - b"Scirc" => 0x15c, - b"Scy" => 0x421, - b"Sfr" => 0x1d516, - b"ShortDownArrow" => 0x2193, - b"ShortLeftArrow" => 0x2190, - b"ShortRightArrow" => 0x2192, - b"ShortUpArrow" => 0x2191, - b"Sigma" => 0x3a3, - b"SmallCircle" => 0x2218, - b"Sopf" => 0x1d54a, - b"Sqrt" => 0x221a, - b"Square" => 0x25a1, - b"SquareIntersection" => 0x2293, - b"SquareSubset" => 0x228f, - b"SquareSubsetEqual" => 0x2291, - b"SquareSuperset" => 0x2290, - b"SquareSupersetEqual" => 0x2292, - b"SquareUnion" => 0x2294, - b"Sscr" => 0x1d4ae, - b"Star" => 0x22c6, - b"Sub" => 0x22d0, - b"Subset" => 0x22d0, - b"SubsetEqual" => 0x2286, - b"Succeeds" => 0x227b, - b"SucceedsEqual" => 0x2ab0, - b"SucceedsSlantEqual" => 0x227d, - b"SucceedsTilde" => 0x227f, - b"SuchThat" => 0x220b, - b"Sum" => 0x2211, - b"Sup" => 0x22d1, - b"Superset" => 0x2283, - b"SupersetEqual" => 0x2287, - b"Supset" => 0x22d1, - b"THORN" => 0xde, - b"TRADE" => 0x2122, - b"TSHcy" => 0x40b, - b"TScy" => 0x426, - b"Tab" => 0x9, - b"Tau" => 0x3a4, - b"Tcaron" => 0x164, - b"Tcedil" => 0x162, - b"Tcy" => 0x422, - b"Tfr" => 0x1d517, - b"Therefore" => 0x2234, - b"Theta" => 0x398, - b"ThinSpace" => 0x2009, - b"Tilde" => 0x223c, - b"TildeEqual" => 0x2243, - b"TildeFullEqual" => 0x2245, - b"TildeTilde" => 0x2248, - b"Topf" => 0x1d54b, - b"TripleDot" => 0x20db, - b"Tscr" => 0x1d4af, - b"Tstrok" => 0x166, - b"Uacute" => 0xda, - b"Uarr" => 0x219f, - b"Uarrocir" => 0x2949, - b"Ubrcy" => 0x40e, - b"Ubreve" => 0x16c, - b"Ucirc" => 0xdb, - b"Ucy" => 0x423, - b"Udblac" => 0x170, - b"Ufr" => 0x1d518, - b"Ugrave" => 0xd9, - b"Umacr" => 0x16a, - b"UnderBar" => 0x332, - b"UnderBrace" => 0x23df, - b"UnderBracket" => 0x23b5, - b"UnderParenthesis" => 0x23dd, - b"Union" => 0x22c3, - b"UnionPlus" => 0x228e, - b"Uogon" => 0x172, - b"Uopf" => 0x1d54c, - b"UpArrow" => 0x2191, - b"UpArrowBar" => 0x2912, - b"UpArrowDownArrow" => 0x21c5, - b"UpDownArrow" => 0x2195, - b"UpEquilibrium" => 0x296e, - b"UpTee" => 0x22a5, - b"UpTeeArrow" => 0x21a5, - b"Uparrow" => 0x21d1, - b"Updownarrow" => 0x21d5, - b"UpperLeftArrow" => 0x2196, - b"UpperRightArrow" => 0x2197, - b"Upsi" => 0x3d2, - b"Upsilon" => 0x3a5, - b"Uring" => 0x16e, - b"Uscr" => 0x1d4b0, - b"Utilde" => 0x168, - b"Uuml" => 0xdc, - b"VDash" => 0x22ab, - b"Vbar" => 0x2aeb, - b"Vcy" => 0x412, - b"Vdash" => 0x22a9, - b"Vdashl" => 0x2ae6, - b"Vee" => 0x22c1, - b"Verbar" => 0x2016, - b"Vert" => 0x2016, - b"VerticalBar" => 0x2223, - b"VerticalLine" => 0x7c, - b"VerticalSeparator" => 0x2758, - b"VerticalTilde" => 0x2240, - b"VeryThinSpace" => 0x200a, - b"Vfr" => 0x1d519, - b"Vopf" => 0x1d54d, - b"Vscr" => 0x1d4b1, - b"Vvdash" => 0x22aa, - b"Wcirc" => 0x174, - b"Wedge" => 0x22c0, - b"Wfr" => 0x1d51a, - b"Wopf" => 0x1d54e, - b"Wscr" => 0x1d4b2, - b"Xfr" => 0x1d51b, - b"Xi" => 0x39e, - b"Xopf" => 0x1d54f, - b"Xscr" => 0x1d4b3, - b"YAcy" => 0x42f, - b"YIcy" => 0x407, - b"YUcy" => 0x42e, - b"Yacute" => 0xdd, - b"Ycirc" => 0x176, - b"Ycy" => 0x42b, - b"Yfr" => 0x1d51c, - b"Yopf" => 0x1d550, - b"Yscr" => 0x1d4b4, - b"Yuml" => 0x178, - b"ZHcy" => 0x416, - b"Zacute" => 0x179, - b"Zcaron" => 0x17d, - b"Zcy" => 0x417, - b"Zdot" => 0x17b, - b"ZeroWidthSpace" => 0x200b, - b"Zeta" => 0x396, - b"Zfr" => 0x2128, - b"Zopf" => 0x2124, - b"Zscr" => 0x1d4b5, - b"aacute" => 0xe1, - b"abreve" => 0x103, - b"ac" => 0x223e, - b"acd" => 0x223f, - b"acirc" => 0xe2, - b"acute" => 0xb4, - b"acy" => 0x430, - b"aelig" => 0xe6, - b"af" => 0x2061, - b"afr" => 0x1d51e, - b"agrave" => 0xe0, - b"alefsym" => 0x2135, - b"aleph" => 0x2135, - b"alpha" => 0x3b1, - b"amacr" => 0x101, - b"amalg" => 0x2a3f, - b"amp" => 0x26, - b"and" => 0x2227, - b"andand" => 0x2a55, - b"andd" => 0x2a5c, - b"andslope" => 0x2a58, - b"andv" => 0x2a5a, - b"ang" => 0x2220, - b"ange" => 0x29a4, - b"angle" => 0x2220, - b"angmsd" => 0x2221, - b"angmsdaa" => 0x29a8, - b"angmsdab" => 0x29a9, - b"angmsdac" => 0x29aa, - b"angmsdad" => 0x29ab, - b"angmsdae" => 0x29ac, - b"angmsdaf" => 0x29ad, - b"angmsdag" => 0x29ae, - b"angmsdah" => 0x29af, - b"angrt" => 0x221f, - b"angrtvb" => 0x22be, - b"angrtvbd" => 0x299d, - b"angsph" => 0x2222, - b"angst" => 0x212b, - b"angzarr" => 0x237c, - b"aogon" => 0x105, - b"aopf" => 0x1d552, - b"ap" => 0x2248, - b"apE" => 0x2a70, - b"apacir" => 0x2a6f, - b"ape" => 0x224a, - b"apid" => 0x224b, - b"apos" => 0x27, - b"approx" => 0x2248, - b"approxeq" => 0x224a, - b"aring" => 0xe5, - b"ascr" => 0x1d4b6, - b"ast" => 0x2a, - b"asymp" => 0x2248, - b"asympeq" => 0x224d, - b"atilde" => 0xe3, - b"auml" => 0xe4, - b"awconint" => 0x2233, - b"awint" => 0x2a11, - b"bNot" => 0x2aed, - b"backcong" => 0x224c, - b"backepsilon" => 0x3f6, - b"backprime" => 0x2035, - b"backsim" => 0x223d, - b"backsimeq" => 0x22cd, - b"barvee" => 0x22bd, - b"barwed" => 0x2305, - b"barwedge" => 0x2305, - b"bbrk" => 0x23b5, - b"bbrktbrk" => 0x23b6, - b"bcong" => 0x224c, - b"bcy" => 0x431, - b"bdquo" => 0x201e, - b"becaus" => 0x2235, - b"because" => 0x2235, - b"bemptyv" => 0x29b0, - b"bepsi" => 0x3f6, - b"bernou" => 0x212c, - b"beta" => 0x3b2, - b"beth" => 0x2136, - b"between" => 0x226c, - b"bfr" => 0x1d51f, - b"bigcap" => 0x22c2, - b"bigcirc" => 0x25ef, - b"bigcup" => 0x22c3, - b"bigodot" => 0x2a00, - b"bigoplus" => 0x2a01, - b"bigotimes" => 0x2a02, - b"bigsqcup" => 0x2a06, - b"bigstar" => 0x2605, - b"bigtriangledown" => 0x25bd, - b"bigtriangleup" => 0x25b3, - b"biguplus" => 0x2a04, - b"bigvee" => 0x22c1, - b"bigwedge" => 0x22c0, - b"bkarow" => 0x290d, - b"blacklozenge" => 0x29eb, - b"blacksquare" => 0x25aa, - b"blacktriangle" => 0x25b4, - b"blacktriangledown" => 0x25be, - b"blacktriangleleft" => 0x25c2, - b"blacktriangleright" => 0x25b8, - b"blank" => 0x2423, - b"blk12" => 0x2592, - b"blk14" => 0x2591, - b"blk34" => 0x2593, - b"block" => 0x2588, - b"bnot" => 0x2310, - b"bopf" => 0x1d553, - b"bot" => 0x22a5, - b"bottom" => 0x22a5, - b"bowtie" => 0x22c8, - b"boxDL" => 0x2557, - b"boxDR" => 0x2554, - b"boxDl" => 0x2556, - b"boxDr" => 0x2553, - b"boxH" => 0x2550, - b"boxHD" => 0x2566, - b"boxHU" => 0x2569, - b"boxHd" => 0x2564, - b"boxHu" => 0x2567, - b"boxUL" => 0x255d, - b"boxUR" => 0x255a, - b"boxUl" => 0x255c, - b"boxUr" => 0x2559, - b"boxV" => 0x2551, - b"boxVH" => 0x256c, - b"boxVL" => 0x2563, - b"boxVR" => 0x2560, - b"boxVh" => 0x256b, - b"boxVl" => 0x2562, - b"boxVr" => 0x255f, - b"boxbox" => 0x29c9, - b"boxdL" => 0x2555, - b"boxdR" => 0x2552, - b"boxdl" => 0x2510, - b"boxdr" => 0x250c, - b"boxh" => 0x2500, - b"boxhD" => 0x2565, - b"boxhU" => 0x2568, - b"boxhd" => 0x252c, - b"boxhu" => 0x2534, - b"boxminus" => 0x229f, - b"boxplus" => 0x229e, - b"boxtimes" => 0x22a0, - b"boxuL" => 0x255b, - b"boxuR" => 0x2558, - b"boxul" => 0x2518, - b"boxur" => 0x2514, - b"boxv" => 0x2502, - b"boxvH" => 0x256a, - b"boxvL" => 0x2561, - b"boxvR" => 0x255e, - b"boxvh" => 0x253c, - b"boxvl" => 0x2524, - b"boxvr" => 0x251c, - b"bprime" => 0x2035, - b"breve" => 0x2d8, - b"brvbar" => 0xa6, - b"bscr" => 0x1d4b7, - b"bsemi" => 0x204f, - b"bsim" => 0x223d, - b"bsime" => 0x22cd, - b"bsol" => 0x5c, - b"bsolb" => 0x29c5, - b"bull" => 0x2022, - b"bullet" => 0x2022, - b"bump" => 0x224e, - b"bumpE" => 0x2aae, - b"bumpe" => 0x224f, - b"bumpeq" => 0x224f, - b"cacute" => 0x107, - b"cap" => 0x2229, - b"capand" => 0x2a44, - b"capbrcup" => 0x2a49, - b"capcap" => 0x2a4b, - b"capcup" => 0x2a47, - b"capdot" => 0x2a40, - b"caret" => 0x2041, - b"caron" => 0x2c7, - b"ccaps" => 0x2a4d, - b"ccaron" => 0x10d, - b"ccedil" => 0xe7, - b"ccirc" => 0x109, - b"ccups" => 0x2a4c, - b"ccupssm" => 0x2a50, - b"cdot" => 0x10b, - b"cedil" => 0xb8, - b"cemptyv" => 0x29b2, - b"cent" => 0xa2, - b"centerdot" => 0xb7, - b"cfr" => 0x1d520, - b"chcy" => 0x447, - b"check" => 0x2713, - b"checkmark" => 0x2713, - b"chi" => 0x3c7, - b"cir" => 0x25cb, - b"cirE" => 0x29c3, - b"circ" => 0x2c6, - b"circeq" => 0x2257, - b"circlearrowleft" => 0x21ba, - b"circlearrowright" => 0x21bb, - b"circledR" => 0xae, - b"circledS" => 0x24c8, - b"circledast" => 0x229b, - b"circledcirc" => 0x229a, - b"circleddash" => 0x229d, - b"cire" => 0x2257, - b"cirfnint" => 0x2a10, - b"cirmid" => 0x2aef, - b"cirscir" => 0x29c2, - b"clubs" => 0x2663, - b"clubsuit" => 0x2663, - b"colon" => 0x3a, - b"colone" => 0x2254, - b"coloneq" => 0x2254, - b"comma" => 0x2c, - b"commat" => 0x40, - b"comp" => 0x2201, - b"compfn" => 0x2218, - b"complement" => 0x2201, - b"complexes" => 0x2102, - b"cong" => 0x2245, - b"congdot" => 0x2a6d, - b"conint" => 0x222e, - b"copf" => 0x1d554, - b"coprod" => 0x2210, - b"copy" => 0xa9, - b"copysr" => 0x2117, - b"crarr" => 0x21b5, - b"cross" => 0x2717, - b"cscr" => 0x1d4b8, - b"csub" => 0x2acf, - b"csube" => 0x2ad1, - b"csup" => 0x2ad0, - b"csupe" => 0x2ad2, - b"ctdot" => 0x22ef, - b"cudarrl" => 0x2938, - b"cudarrr" => 0x2935, - b"cuepr" => 0x22de, - b"cuesc" => 0x22df, - b"cularr" => 0x21b6, - b"cularrp" => 0x293d, - b"cup" => 0x222a, - b"cupbrcap" => 0x2a48, - b"cupcap" => 0x2a46, - b"cupcup" => 0x2a4a, - b"cupdot" => 0x228d, - b"cupor" => 0x2a45, - b"curarr" => 0x21b7, - b"curarrm" => 0x293c, - b"curlyeqprec" => 0x22de, - b"curlyeqsucc" => 0x22df, - b"curlyvee" => 0x22ce, - b"curlywedge" => 0x22cf, - b"curren" => 0xa4, - b"curvearrowleft" => 0x21b6, - b"curvearrowright" => 0x21b7, - b"cuvee" => 0x22ce, - b"cuwed" => 0x22cf, - b"cwconint" => 0x2232, - b"cwint" => 0x2231, - b"cylcty" => 0x232d, - b"dArr" => 0x21d3, - b"dHar" => 0x2965, - b"dagger" => 0x2020, - b"daleth" => 0x2138, - b"darr" => 0x2193, - b"dash" => 0x2010, - b"dashv" => 0x22a3, - b"dbkarow" => 0x290f, - b"dblac" => 0x2dd, - b"dcaron" => 0x10f, - b"dcy" => 0x434, - b"dd" => 0x2146, - b"ddagger" => 0x2021, - b"ddarr" => 0x21ca, - b"ddotseq" => 0x2a77, - b"deg" => 0xb0, - b"delta" => 0x3b4, - b"demptyv" => 0x29b1, - b"dfisht" => 0x297f, - b"dfr" => 0x1d521, - b"dharl" => 0x21c3, - b"dharr" => 0x21c2, - b"diam" => 0x22c4, - b"diamond" => 0x22c4, - b"diamondsuit" => 0x2666, - b"diams" => 0x2666, - b"die" => 0xa8, - b"digamma" => 0x3dd, - b"disin" => 0x22f2, - b"div" => 0xf7, - b"divide" => 0xf7, - b"divideontimes" => 0x22c7, - b"divonx" => 0x22c7, - b"djcy" => 0x452, - b"dlcorn" => 0x231e, - b"dlcrop" => 0x230d, - b"dollar" => 0x24, - b"dopf" => 0x1d555, - b"dot" => 0x2d9, - b"doteq" => 0x2250, - b"doteqdot" => 0x2251, - b"dotminus" => 0x2238, - b"dotplus" => 0x2214, - b"dotsquare" => 0x22a1, - b"doublebarwedge" => 0x2306, - b"downarrow" => 0x2193, - b"downdownarrows" => 0x21ca, - b"downharpoonleft" => 0x21c3, - b"downharpoonright" => 0x21c2, - b"drbkarow" => 0x2910, - b"drcorn" => 0x231f, - b"drcrop" => 0x230c, - b"dscr" => 0x1d4b9, - b"dscy" => 0x455, - b"dsol" => 0x29f6, - b"dstrok" => 0x111, - b"dtdot" => 0x22f1, - b"dtri" => 0x25bf, - b"dtrif" => 0x25be, - b"duarr" => 0x21f5, - b"duhar" => 0x296f, - b"dwangle" => 0x29a6, - b"dzcy" => 0x45f, - b"dzigrarr" => 0x27ff, - b"eDDot" => 0x2a77, - b"eDot" => 0x2251, - b"eacute" => 0xe9, - b"easter" => 0x2a6e, - b"ecaron" => 0x11b, - b"ecir" => 0x2256, - b"ecirc" => 0xea, - b"ecolon" => 0x2255, - b"ecy" => 0x44d, - b"edot" => 0x117, - b"ee" => 0x2147, - b"efDot" => 0x2252, - b"efr" => 0x1d522, - b"eg" => 0x2a9a, - b"egrave" => 0xe8, - b"egs" => 0x2a96, - b"egsdot" => 0x2a98, - b"el" => 0x2a99, - b"elinters" => 0x23e7, - b"ell" => 0x2113, - b"els" => 0x2a95, - b"elsdot" => 0x2a97, - b"emacr" => 0x113, - b"empty" => 0x2205, - b"emptyset" => 0x2205, - b"emptyv" => 0x2205, - b"emsp" => 0x2003, - b"emsp13" => 0x2004, - b"emsp14" => 0x2005, - b"eng" => 0x14b, - b"ensp" => 0x2002, - b"eogon" => 0x119, - b"eopf" => 0x1d556, - b"epar" => 0x22d5, - b"eparsl" => 0x29e3, - b"eplus" => 0x2a71, - b"epsi" => 0x3f5, - b"epsilon" => 0x3b5, - b"epsiv" => 0x3b5, - b"eqcirc" => 0x2256, - b"eqcolon" => 0x2255, - b"eqsim" => 0x2242, - b"eqslantgtr" => 0x2a96, - b"eqslantless" => 0x2a95, - b"equals" => 0x3d, - b"equest" => 0x225f, - b"equiv" => 0x2261, - b"equivDD" => 0x2a78, - b"eqvparsl" => 0x29e5, - b"erDot" => 0x2253, - b"erarr" => 0x2971, - b"escr" => 0x212f, - b"esdot" => 0x2250, - b"esim" => 0x2242, - b"eta" => 0x3b7, - b"eth" => 0xf0, - b"euml" => 0xeb, - b"euro" => 0x20ac, - b"excl" => 0x21, - b"exist" => 0x2203, - b"expectation" => 0x2130, - b"exponentiale" => 0x2147, - b"fallingdotseq" => 0x2252, - b"fcy" => 0x444, - b"female" => 0x2640, - b"ffilig" => 0xfb03, - b"fflig" => 0xfb00, - b"ffllig" => 0xfb04, - b"ffr" => 0x1d523, - b"filig" => 0xfb01, - b"flat" => 0x266d, - b"fllig" => 0xfb02, - b"fltns" => 0x25b1, - b"fnof" => 0x192, - b"fopf" => 0x1d557, - b"forall" => 0x2200, - b"fork" => 0x22d4, - b"forkv" => 0x2ad9, - b"fpartint" => 0x2a0d, - b"frac12" => 0xbd, - b"frac13" => 0x2153, - b"frac14" => 0xbc, - b"frac15" => 0x2155, - b"frac16" => 0x2159, - b"frac18" => 0x215b, - b"frac23" => 0x2154, - b"frac25" => 0x2156, - b"frac34" => 0xbe, - b"frac35" => 0x2157, - b"frac38" => 0x215c, - b"frac45" => 0x2158, - b"frac56" => 0x215a, - b"frac58" => 0x215d, - b"frac78" => 0x215e, - b"frasl" => 0x2044, - b"frown" => 0x2322, - b"fscr" => 0x1d4bb, - b"gE" => 0x2267, - b"gEl" => 0x2a8c, - b"gacute" => 0x1f5, - b"gamma" => 0x3b3, - b"gammad" => 0x3dd, - b"gap" => 0x2a86, - b"gbreve" => 0x11f, - b"gcirc" => 0x11d, - b"gcy" => 0x433, - b"gdot" => 0x121, - b"ge" => 0x2265, - b"gel" => 0x22db, - b"geq" => 0x2265, - b"geqq" => 0x2267, - b"geqslant" => 0x2a7e, - b"ges" => 0x2a7e, - b"gescc" => 0x2aa9, - b"gesdot" => 0x2a80, - b"gesdoto" => 0x2a82, - b"gesdotol" => 0x2a84, - b"gesles" => 0x2a94, - b"gfr" => 0x1d524, - b"gg" => 0x226b, - b"ggg" => 0x22d9, - b"gimel" => 0x2137, - b"gjcy" => 0x453, - b"gl" => 0x2277, - b"glE" => 0x2a92, - b"gla" => 0x2aa5, - b"glj" => 0x2aa4, - b"gnE" => 0x2269, - b"gnap" => 0x2a8a, - b"gnapprox" => 0x2a8a, - b"gne" => 0x2a88, - b"gneq" => 0x2a88, - b"gneqq" => 0x2269, - b"gnsim" => 0x22e7, - b"gopf" => 0x1d558, - b"grave" => 0x60, - b"gscr" => 0x210a, - b"gsim" => 0x2273, - b"gsime" => 0x2a8e, - b"gsiml" => 0x2a90, - b"gt" => 0x3e, - b"gtcc" => 0x2aa7, - b"gtcir" => 0x2a7a, - b"gtdot" => 0x22d7, - b"gtlPar" => 0x2995, - b"gtquest" => 0x2a7c, - b"gtrapprox" => 0x2a86, - b"gtrarr" => 0x2978, - b"gtrdot" => 0x22d7, - b"gtreqless" => 0x22db, - b"gtreqqless" => 0x2a8c, - b"gtrless" => 0x2277, - b"gtrsim" => 0x2273, - b"hArr" => 0x21d4, - b"hairsp" => 0x200a, - b"half" => 0xbd, - b"hamilt" => 0x210b, - b"hardcy" => 0x44a, - b"harr" => 0x2194, - b"harrcir" => 0x2948, - b"harrw" => 0x21ad, - b"hbar" => 0x210f, - b"hcirc" => 0x125, - b"hearts" => 0x2665, - b"heartsuit" => 0x2665, - b"hellip" => 0x2026, - b"hercon" => 0x22b9, - b"hfr" => 0x1d525, - b"hksearow" => 0x2925, - b"hkswarow" => 0x2926, - b"hoarr" => 0x21ff, - b"homtht" => 0x223b, - b"hookleftarrow" => 0x21a9, - b"hookrightarrow" => 0x21aa, - b"hopf" => 0x1d559, - b"horbar" => 0x2015, - b"hscr" => 0x1d4bd, - b"hslash" => 0x210f, - b"hstrok" => 0x127, - b"hybull" => 0x2043, - b"hyphen" => 0x2010, - b"iacute" => 0xed, - b"ic" => 0x2063, - b"icirc" => 0xee, - b"icy" => 0x438, - b"iecy" => 0x435, - b"iexcl" => 0xa1, - b"iff" => 0x21d4, - b"ifr" => 0x1d526, - b"igrave" => 0xec, - b"ii" => 0x2148, - b"iiiint" => 0x2a0c, - b"iiint" => 0x222d, - b"iinfin" => 0x29dc, - b"iiota" => 0x2129, - b"ijlig" => 0x133, - b"imacr" => 0x12b, - b"image" => 0x2111, - b"imagline" => 0x2110, - b"imagpart" => 0x2111, - b"imath" => 0x131, - b"imof" => 0x22b7, - b"imped" => 0x1b5, - b"in" => 0x2208, - b"incare" => 0x2105, - b"infin" => 0x221e, - b"infintie" => 0x29dd, - b"inodot" => 0x131, - b"int" => 0x222b, - b"intcal" => 0x22ba, - b"integers" => 0x2124, - b"intercal" => 0x22ba, - b"intlarhk" => 0x2a17, - b"intprod" => 0x2a3c, - b"iocy" => 0x451, - b"iogon" => 0x12f, - b"iopf" => 0x1d55a, - b"iota" => 0x3b9, - b"iprod" => 0x2a3c, - b"iquest" => 0xbf, - b"iscr" => 0x1d4be, - b"isin" => 0x2208, - b"isinE" => 0x22f9, - b"isindot" => 0x22f5, - b"isins" => 0x22f4, - b"isinsv" => 0x22f3, - b"isinv" => 0x2208, - b"it" => 0x2062, - b"itilde" => 0x129, - b"iukcy" => 0x456, - b"iuml" => 0xef, - b"jcirc" => 0x135, - b"jcy" => 0x439, - b"jfr" => 0x1d527, - b"jmath" => 0x237, - b"jopf" => 0x1d55b, - b"jscr" => 0x1d4bf, - b"jsercy" => 0x458, - b"jukcy" => 0x454, - b"kappa" => 0x3ba, - b"kappav" => 0x3f0, - b"kcedil" => 0x137, - b"kcy" => 0x43a, - b"kfr" => 0x1d528, - b"kgreen" => 0x138, - b"khcy" => 0x445, - b"kjcy" => 0x45c, - b"kopf" => 0x1d55c, - b"kscr" => 0x1d4c0, - b"lAarr" => 0x21da, - b"lArr" => 0x21d0, - b"lAtail" => 0x291b, - b"lBarr" => 0x290e, - b"lE" => 0x2266, - b"lEg" => 0x2a8b, - b"lHar" => 0x2962, - b"lacute" => 0x13a, - b"laemptyv" => 0x29b4, - b"lagran" => 0x2112, - b"lambda" => 0x3bb, - b"lang" => 0x27e8, - b"langd" => 0x2991, - b"langle" => 0x27e8, - b"lap" => 0x2a85, - b"laquo" => 0xab, - b"larr" => 0x2190, - b"larrb" => 0x21e4, - b"larrbfs" => 0x291f, - b"larrfs" => 0x291d, - b"larrhk" => 0x21a9, - b"larrlp" => 0x21ab, - b"larrpl" => 0x2939, - b"larrsim" => 0x2973, - b"larrtl" => 0x21a2, - b"lat" => 0x2aab, - b"latail" => 0x2919, - b"late" => 0x2aad, - b"lbarr" => 0x290c, - b"lbbrk" => 0x2772, - b"lbrace" => 0x7b, - b"lbrack" => 0x5b, - b"lbrke" => 0x298b, - b"lbrksld" => 0x298f, - b"lbrkslu" => 0x298d, - b"lcaron" => 0x13e, - b"lcedil" => 0x13c, - b"lceil" => 0x2308, - b"lcub" => 0x7b, - b"lcy" => 0x43b, - b"ldca" => 0x2936, - b"ldquo" => 0x201c, - b"ldquor" => 0x201e, - b"ldrdhar" => 0x2967, - b"ldrushar" => 0x294b, - b"ldsh" => 0x21b2, - b"le" => 0x2264, - b"leftarrow" => 0x2190, - b"leftarrowtail" => 0x21a2, - b"leftharpoondown" => 0x21bd, - b"leftharpoonup" => 0x21bc, - b"leftleftarrows" => 0x21c7, - b"leftrightarrow" => 0x2194, - b"leftrightarrows" => 0x21c6, - b"leftrightharpoons" => 0x21cb, - b"leftrightsquigarrow" => 0x21ad, - b"leftthreetimes" => 0x22cb, - b"leg" => 0x22da, - b"leq" => 0x2264, - b"leqq" => 0x2266, - b"leqslant" => 0x2a7d, - b"les" => 0x2a7d, - b"lescc" => 0x2aa8, - b"lesdot" => 0x2a7f, - b"lesdoto" => 0x2a81, - b"lesdotor" => 0x2a83, - b"lesges" => 0x2a93, - b"lessapprox" => 0x2a85, - b"lessdot" => 0x22d6, - b"lesseqgtr" => 0x22da, - b"lesseqqgtr" => 0x2a8b, - b"lessgtr" => 0x2276, - b"lesssim" => 0x2272, - b"lfisht" => 0x297c, - b"lfloor" => 0x230a, - b"lfr" => 0x1d529, - b"lg" => 0x2276, - b"lgE" => 0x2a91, - b"lhard" => 0x21bd, - b"lharu" => 0x21bc, - b"lharul" => 0x296a, - b"lhblk" => 0x2584, - b"ljcy" => 0x459, - b"ll" => 0x226a, - b"llarr" => 0x21c7, - b"llcorner" => 0x231e, - b"llhard" => 0x296b, - b"lltri" => 0x25fa, - b"lmidot" => 0x140, - b"lmoust" => 0x23b0, - b"lmoustache" => 0x23b0, - b"lnE" => 0x2268, - b"lnap" => 0x2a89, - b"lnapprox" => 0x2a89, - b"lne" => 0x2a87, - b"lneq" => 0x2a87, - b"lneqq" => 0x2268, - b"lnsim" => 0x22e6, - b"loang" => 0x27ec, - b"loarr" => 0x21fd, - b"lobrk" => 0x27e6, - b"longleftarrow" => 0x27f5, - b"longleftrightarrow" => 0x27f7, - b"longmapsto" => 0x27fc, - b"longrightarrow" => 0x27f6, - b"looparrowleft" => 0x21ab, - b"looparrowright" => 0x21ac, - b"lopar" => 0x2985, - b"lopf" => 0x1d55d, - b"loplus" => 0x2a2d, - b"lotimes" => 0x2a34, - b"lowast" => 0x2217, - b"lowbar" => 0x5f, - b"loz" => 0x25ca, - b"lozenge" => 0x25ca, - b"lozf" => 0x29eb, - b"lpar" => 0x28, - b"lparlt" => 0x2993, - b"lrarr" => 0x21c6, - b"lrcorner" => 0x231f, - b"lrhar" => 0x21cb, - b"lrhard" => 0x296d, - b"lrm" => 0x200e, - b"lrtri" => 0x22bf, - b"lsaquo" => 0x2039, - b"lscr" => 0x1d4c1, - b"lsh" => 0x21b0, - b"lsim" => 0x2272, - b"lsime" => 0x2a8d, - b"lsimg" => 0x2a8f, - b"lsqb" => 0x5b, - b"lsquo" => 0x2018, - b"lsquor" => 0x201a, - b"lstrok" => 0x142, - b"lt" => 0x3c, - b"ltcc" => 0x2aa6, - b"ltcir" => 0x2a79, - b"ltdot" => 0x22d6, - b"lthree" => 0x22cb, - b"ltimes" => 0x22c9, - b"ltlarr" => 0x2976, - b"ltquest" => 0x2a7b, - b"ltrPar" => 0x2996, - b"ltri" => 0x25c3, - b"ltrie" => 0x22b4, - b"ltrif" => 0x25c2, - b"lurdshar" => 0x294a, - b"luruhar" => 0x2966, - b"mDDot" => 0x223a, - b"macr" => 0xaf, - b"male" => 0x2642, - b"malt" => 0x2720, - b"maltese" => 0x2720, - b"map" => 0x21a6, - b"mapsto" => 0x21a6, - b"mapstodown" => 0x21a7, - b"mapstoleft" => 0x21a4, - b"mapstoup" => 0x21a5, - b"marker" => 0x25ae, - b"mcomma" => 0x2a29, - b"mcy" => 0x43c, - b"mdash" => 0x2014, - b"measuredangle" => 0x2221, - b"mfr" => 0x1d52a, - b"mho" => 0x2127, - b"micro" => 0xb5, - b"mid" => 0x2223, - b"midast" => 0x2a, - b"midcir" => 0x2af0, - b"middot" => 0xb7, - b"minus" => 0x2212, - b"minusb" => 0x229f, - b"minusd" => 0x2238, - b"minusdu" => 0x2a2a, - b"mlcp" => 0x2adb, - b"mldr" => 0x2026, - b"mnplus" => 0x2213, - b"models" => 0x22a7, - b"mopf" => 0x1d55e, - b"mp" => 0x2213, - b"mscr" => 0x1d4c2, - b"mstpos" => 0x223e, - b"mu" => 0x3bc, - b"multimap" => 0x22b8, - b"mumap" => 0x22b8, - b"nLeftarrow" => 0x21cd, - b"nLeftrightarrow" => 0x21ce, - b"nRightarrow" => 0x21cf, - b"nVDash" => 0x22af, - b"nVdash" => 0x22ae, - b"nabla" => 0x2207, - b"nacute" => 0x144, - b"nap" => 0x2249, - b"napos" => 0x149, - b"napprox" => 0x2249, - b"natur" => 0x266e, - b"natural" => 0x266e, - b"naturals" => 0x2115, - b"nbsp" => 0xa0, - b"ncap" => 0x2a43, - b"ncaron" => 0x148, - b"ncedil" => 0x146, - b"ncong" => 0x2247, - b"ncup" => 0x2a42, - b"ncy" => 0x43d, - b"ndash" => 0x2013, - b"ne" => 0x2260, - b"neArr" => 0x21d7, - b"nearhk" => 0x2924, - b"nearr" => 0x2197, - b"nearrow" => 0x2197, - b"nequiv" => 0x2262, - b"nesear" => 0x2928, - b"nexist" => 0x2204, - b"nexists" => 0x2204, - b"nfr" => 0x1d52b, - b"nge" => 0x2271, - b"ngeq" => 0x2271, - b"ngsim" => 0x2275, - b"ngt" => 0x226f, - b"ngtr" => 0x226f, - b"nhArr" => 0x21ce, - b"nharr" => 0x21ae, - b"nhpar" => 0x2af2, - b"ni" => 0x220b, - b"nis" => 0x22fc, - b"nisd" => 0x22fa, - b"niv" => 0x220b, - b"njcy" => 0x45a, - b"nlArr" => 0x21cd, - b"nlarr" => 0x219a, - b"nldr" => 0x2025, - b"nle" => 0x2270, - b"nleftarrow" => 0x219a, - b"nleftrightarrow" => 0x21ae, - b"nleq" => 0x2270, - b"nless" => 0x226e, - b"nlsim" => 0x2274, - b"nlt" => 0x226e, - b"nltri" => 0x22ea, - b"nltrie" => 0x22ec, - b"nmid" => 0x2224, - b"nopf" => 0x1d55f, - b"not" => 0xac, - b"notin" => 0x2209, - b"notinva" => 0x2209, - b"notinvb" => 0x22f7, - b"notinvc" => 0x22f6, - b"notni" => 0x220c, - b"notniva" => 0x220c, - b"notnivb" => 0x22fe, - b"notnivc" => 0x22fd, - b"npar" => 0x2226, - b"nparallel" => 0x2226, - b"npolint" => 0x2a14, - b"npr" => 0x2280, - b"nprcue" => 0x22e0, - b"nprec" => 0x2280, - b"nrArr" => 0x21cf, - b"nrarr" => 0x219b, - b"nrightarrow" => 0x219b, - b"nrtri" => 0x22eb, - b"nrtrie" => 0x22ed, - b"nsc" => 0x2281, - b"nsccue" => 0x22e1, - b"nscr" => 0x1d4c3, - b"nshortmid" => 0x2224, - b"nshortparallel" => 0x2226, - b"nsim" => 0x2241, - b"nsime" => 0x2244, - b"nsimeq" => 0x2244, - b"nsmid" => 0x2224, - b"nspar" => 0x2226, - b"nsqsube" => 0x22e2, - b"nsqsupe" => 0x22e3, - b"nsub" => 0x2284, - b"nsube" => 0x2288, - b"nsubseteq" => 0x2288, - b"nsucc" => 0x2281, - b"nsup" => 0x2285, - b"nsupe" => 0x2289, - b"nsupseteq" => 0x2289, - b"ntgl" => 0x2279, - b"ntilde" => 0xf1, - b"ntlg" => 0x2278, - b"ntriangleleft" => 0x22ea, - b"ntrianglelefteq" => 0x22ec, - b"ntriangleright" => 0x22eb, - b"ntrianglerighteq" => 0x22ed, - b"nu" => 0x3bd, - b"num" => 0x23, - b"numero" => 0x2116, - b"numsp" => 0x2007, - b"nvDash" => 0x22ad, - b"nvHarr" => 0x2904, - b"nvdash" => 0x22ac, - b"nvinfin" => 0x29de, - b"nvlArr" => 0x2902, - b"nvrArr" => 0x2903, - b"nwArr" => 0x21d6, - b"nwarhk" => 0x2923, - b"nwarr" => 0x2196, - b"nwarrow" => 0x2196, - b"nwnear" => 0x2927, - b"oS" => 0x24c8, - b"oacute" => 0xf3, - b"oast" => 0x229b, - b"ocir" => 0x229a, - b"ocirc" => 0xf4, - b"ocy" => 0x43e, - b"odash" => 0x229d, - b"odblac" => 0x151, - b"odiv" => 0x2a38, - b"odot" => 0x2299, - b"odsold" => 0x29bc, - b"oelig" => 0x153, - b"ofcir" => 0x29bf, - b"ofr" => 0x1d52c, - b"ogon" => 0x2db, - b"ograve" => 0xf2, - b"ogt" => 0x29c1, - b"ohbar" => 0x29b5, - b"ohm" => 0x2126, - b"oint" => 0x222e, - b"olarr" => 0x21ba, - b"olcir" => 0x29be, - b"olcross" => 0x29bb, - b"oline" => 0x203e, - b"olt" => 0x29c0, - b"omacr" => 0x14d, - b"omega" => 0x3c9, - b"omicron" => 0x3bf, - b"omid" => 0x29b6, - b"ominus" => 0x2296, - b"oopf" => 0x1d560, - b"opar" => 0x29b7, - b"operp" => 0x29b9, - b"oplus" => 0x2295, - b"or" => 0x2228, - b"orarr" => 0x21bb, - b"ord" => 0x2a5d, - b"order" => 0x2134, - b"orderof" => 0x2134, - b"ordf" => 0xaa, - b"ordm" => 0xba, - b"origof" => 0x22b6, - b"oror" => 0x2a56, - b"orslope" => 0x2a57, - b"orv" => 0x2a5b, - b"oscr" => 0x2134, - b"oslash" => 0xf8, - b"osol" => 0x2298, - b"otilde" => 0xf5, - b"otimes" => 0x2297, - b"otimesas" => 0x2a36, - b"ouml" => 0xf6, - b"ovbar" => 0x233d, - b"par" => 0x2225, - b"para" => 0xb6, - b"parallel" => 0x2225, - b"parsim" => 0x2af3, - b"parsl" => 0x2afd, - b"part" => 0x2202, - b"pcy" => 0x43f, - b"percnt" => 0x25, - b"period" => 0x2e, - b"permil" => 0x2030, - b"perp" => 0x22a5, - b"pertenk" => 0x2031, - b"pfr" => 0x1d52d, - b"phi" => 0x3c6, - b"phiv" => 0x3c6, - b"phmmat" => 0x2133, - b"phone" => 0x260e, - b"pi" => 0x3c0, - b"pitchfork" => 0x22d4, - b"piv" => 0x3d6, - b"planck" => 0x210f, - b"planckh" => 0x210e, - b"plankv" => 0x210f, - b"plus" => 0x2b, - b"plusacir" => 0x2a23, - b"plusb" => 0x229e, - b"pluscir" => 0x2a22, - b"plusdo" => 0x2214, - b"plusdu" => 0x2a25, - b"pluse" => 0x2a72, - b"plusmn" => 0xb1, - b"plussim" => 0x2a26, - b"plustwo" => 0x2a27, - b"pm" => 0xb1, - b"pointint" => 0x2a15, - b"popf" => 0x1d561, - b"pound" => 0xa3, - b"pr" => 0x227a, - b"prE" => 0x2ab3, - b"prap" => 0x2ab7, - b"prcue" => 0x227c, - b"pre" => 0x2aaf, - b"prec" => 0x227a, - b"precapprox" => 0x2ab7, - b"preccurlyeq" => 0x227c, - b"preceq" => 0x2aaf, - b"precnapprox" => 0x2ab9, - b"precneqq" => 0x2ab5, - b"precnsim" => 0x22e8, - b"precsim" => 0x227e, - b"prime" => 0x2032, - b"primes" => 0x2119, - b"prnE" => 0x2ab5, - b"prnap" => 0x2ab9, - b"prnsim" => 0x22e8, - b"prod" => 0x220f, - b"profalar" => 0x232e, - b"profline" => 0x2312, - b"profsurf" => 0x2313, - b"prop" => 0x221d, - b"propto" => 0x221d, - b"prsim" => 0x227e, - b"prurel" => 0x22b0, - b"pscr" => 0x1d4c5, - b"psi" => 0x3c8, - b"puncsp" => 0x2008, - b"qfr" => 0x1d52e, - b"qint" => 0x2a0c, - b"qopf" => 0x1d562, - b"qprime" => 0x2057, - b"qscr" => 0x1d4c6, - b"quaternions" => 0x210d, - b"quatint" => 0x2a16, - b"quest" => 0x3f, - b"questeq" => 0x225f, - b"quot" => 0x22, - b"rAarr" => 0x21db, - b"rArr" => 0x21d2, - b"rAtail" => 0x291c, - b"rBarr" => 0x290f, - b"rHar" => 0x2964, - b"race" => 0x29da, - b"racute" => 0x155, - b"radic" => 0x221a, - b"raemptyv" => 0x29b3, - b"rang" => 0x27e9, - b"rangd" => 0x2992, - b"range" => 0x29a5, - b"rangle" => 0x27e9, - b"raquo" => 0xbb, - b"rarr" => 0x2192, - b"rarrap" => 0x2975, - b"rarrb" => 0x21e5, - b"rarrbfs" => 0x2920, - b"rarrc" => 0x2933, - b"rarrfs" => 0x291e, - b"rarrhk" => 0x21aa, - b"rarrlp" => 0x21ac, - b"rarrpl" => 0x2945, - b"rarrsim" => 0x2974, - b"rarrtl" => 0x21a3, - b"rarrw" => 0x219d, - b"ratail" => 0x291a, - b"ratio" => 0x2236, - b"rationals" => 0x211a, - b"rbarr" => 0x290d, - b"rbbrk" => 0x2773, - b"rbrace" => 0x7d, - b"rbrack" => 0x5d, - b"rbrke" => 0x298c, - b"rbrksld" => 0x298e, - b"rbrkslu" => 0x2990, - b"rcaron" => 0x159, - b"rcedil" => 0x157, - b"rceil" => 0x2309, - b"rcub" => 0x7d, - b"rcy" => 0x440, - b"rdca" => 0x2937, - b"rdldhar" => 0x2969, - b"rdquo" => 0x201d, - b"rdquor" => 0x201d, - b"rdsh" => 0x21b3, - b"real" => 0x211c, - b"realine" => 0x211b, - b"realpart" => 0x211c, - b"reals" => 0x211d, - b"rect" => 0x25ad, - b"reg" => 0xae, - b"rfisht" => 0x297d, - b"rfloor" => 0x230b, - b"rfr" => 0x1d52f, - b"rhard" => 0x21c1, - b"rharu" => 0x21c0, - b"rharul" => 0x296c, - b"rho" => 0x3c1, - b"rhov" => 0x3f1, - b"rightarrow" => 0x2192, - b"rightarrowtail" => 0x21a3, - b"rightharpoondown" => 0x21c1, - b"rightharpoonup" => 0x21c0, - b"rightleftarrows" => 0x21c4, - b"rightleftharpoons" => 0x21cc, - b"rightrightarrows" => 0x21c9, - b"rightsquigarrow" => 0x219d, - b"rightthreetimes" => 0x22cc, - b"ring" => 0x2da, - b"risingdotseq" => 0x2253, - b"rlarr" => 0x21c4, - b"rlhar" => 0x21cc, - b"rlm" => 0x200f, - b"rmoust" => 0x23b1, - b"rmoustache" => 0x23b1, - b"rnmid" => 0x2aee, - b"roang" => 0x27ed, - b"roarr" => 0x21fe, - b"robrk" => 0x27e7, - b"ropar" => 0x2986, - b"ropf" => 0x1d563, - b"roplus" => 0x2a2e, - b"rotimes" => 0x2a35, - b"rpar" => 0x29, - b"rpargt" => 0x2994, - b"rppolint" => 0x2a12, - b"rrarr" => 0x21c9, - b"rsaquo" => 0x203a, - b"rscr" => 0x1d4c7, - b"rsh" => 0x21b1, - b"rsqb" => 0x5d, - b"rsquo" => 0x2019, - b"rsquor" => 0x2019, - b"rthree" => 0x22cc, - b"rtimes" => 0x22ca, - b"rtri" => 0x25b9, - b"rtrie" => 0x22b5, - b"rtrif" => 0x25b8, - b"rtriltri" => 0x29ce, - b"ruluhar" => 0x2968, - b"rx" => 0x211e, - b"sacute" => 0x15b, - b"sbquo" => 0x201a, - b"sc" => 0x227b, - b"scE" => 0x2ab4, - b"scap" => 0x2ab8, - b"scaron" => 0x161, - b"sccue" => 0x227d, - b"sce" => 0x2ab0, - b"scedil" => 0x15f, - b"scirc" => 0x15d, - b"scnE" => 0x2ab6, - b"scnap" => 0x2aba, - b"scnsim" => 0x22e9, - b"scpolint" => 0x2a13, - b"scsim" => 0x227f, - b"scy" => 0x441, - b"sdot" => 0x22c5, - b"sdotb" => 0x22a1, - b"sdote" => 0x2a66, - b"seArr" => 0x21d8, - b"searhk" => 0x2925, - b"searr" => 0x2198, - b"searrow" => 0x2198, - b"sect" => 0xa7, - b"semi" => 0x3b, - b"seswar" => 0x2929, - b"setminus" => 0x2216, - b"setmn" => 0x2216, - b"sext" => 0x2736, - b"sfr" => 0x1d530, - b"sfrown" => 0x2322, - b"sharp" => 0x266f, - b"shchcy" => 0x449, - b"shcy" => 0x448, - b"shortmid" => 0x2223, - b"shortparallel" => 0x2225, - b"shy" => 0xad, - b"sigma" => 0x3c3, - b"sigmaf" => 0x3c2, - b"sigmav" => 0x3c2, - b"sim" => 0x223c, - b"simdot" => 0x2a6a, - b"sime" => 0x2243, - b"simeq" => 0x2243, - b"simg" => 0x2a9e, - b"simgE" => 0x2aa0, - b"siml" => 0x2a9d, - b"simlE" => 0x2a9f, - b"simne" => 0x2246, - b"simplus" => 0x2a24, - b"simrarr" => 0x2972, - b"slarr" => 0x2190, - b"smallsetminus" => 0x2216, - b"smashp" => 0x2a33, - b"smeparsl" => 0x29e4, - b"smid" => 0x2223, - b"smile" => 0x2323, - b"smt" => 0x2aaa, - b"smte" => 0x2aac, - b"softcy" => 0x44c, - b"sol" => 0x2f, - b"solb" => 0x29c4, - b"solbar" => 0x233f, - b"sopf" => 0x1d564, - b"spades" => 0x2660, - b"spadesuit" => 0x2660, - b"spar" => 0x2225, - b"sqcap" => 0x2293, - b"sqcup" => 0x2294, - b"sqsub" => 0x228f, - b"sqsube" => 0x2291, - b"sqsubset" => 0x228f, - b"sqsubseteq" => 0x2291, - b"sqsup" => 0x2290, - b"sqsupe" => 0x2292, - b"sqsupset" => 0x2290, - b"sqsupseteq" => 0x2292, - b"squ" => 0x25a1, - b"square" => 0x25a1, - b"squarf" => 0x25aa, - b"squf" => 0x25aa, - b"srarr" => 0x2192, - b"sscr" => 0x1d4c8, - b"ssetmn" => 0x2216, - b"ssmile" => 0x2323, - b"sstarf" => 0x22c6, - b"star" => 0x2606, - b"starf" => 0x2605, - b"straightepsilon" => 0x3f5, - b"straightphi" => 0x3d5, - b"strns" => 0xaf, - b"sub" => 0x2282, - b"subE" => 0x2ac5, - b"subdot" => 0x2abd, - b"sube" => 0x2286, - b"subedot" => 0x2ac3, - b"submult" => 0x2ac1, - b"subnE" => 0x2acb, - b"subne" => 0x228a, - b"subplus" => 0x2abf, - b"subrarr" => 0x2979, - b"subset" => 0x2282, - b"subseteq" => 0x2286, - b"subseteqq" => 0x2ac5, - b"subsetneq" => 0x228a, - b"subsetneqq" => 0x2acb, - b"subsim" => 0x2ac7, - b"subsub" => 0x2ad5, - b"subsup" => 0x2ad3, - b"succ" => 0x227b, - b"succapprox" => 0x2ab8, - b"succcurlyeq" => 0x227d, - b"succeq" => 0x2ab0, - b"succnapprox" => 0x2aba, - b"succneqq" => 0x2ab6, - b"succnsim" => 0x22e9, - b"succsim" => 0x227f, - b"sum" => 0x2211, - b"sung" => 0x266a, - b"sup" => 0x2283, - b"sup1" => 0xb9, - b"sup2" => 0xb2, - b"sup3" => 0xb3, - b"supE" => 0x2ac6, - b"supdot" => 0x2abe, - b"supdsub" => 0x2ad8, - b"supe" => 0x2287, - b"supedot" => 0x2ac4, - b"suphsub" => 0x2ad7, - b"suplarr" => 0x297b, - b"supmult" => 0x2ac2, - b"supnE" => 0x2acc, - b"supne" => 0x228b, - b"supplus" => 0x2ac0, - b"supset" => 0x2283, - b"supseteq" => 0x2287, - b"supseteqq" => 0x2ac6, - b"supsetneq" => 0x228b, - b"supsetneqq" => 0x2acc, - b"supsim" => 0x2ac8, - b"supsub" => 0x2ad4, - b"supsup" => 0x2ad6, - b"swArr" => 0x21d9, - b"swarhk" => 0x2926, - b"swarr" => 0x2199, - b"swarrow" => 0x2199, - b"swnwar" => 0x292a, - b"szlig" => 0xdf, - b"target" => 0x2316, - b"tau" => 0x3c4, - b"tbrk" => 0x23b4, - b"tcaron" => 0x165, - b"tcedil" => 0x163, - b"tcy" => 0x442, - b"tdot" => 0x20db, - b"telrec" => 0x2315, - b"tfr" => 0x1d531, - b"there4" => 0x2234, - b"therefore" => 0x2234, - b"theta" => 0x3b8, - b"thetasym" => 0x3d1, - b"thetav" => 0x3d1, - b"thickapprox" => 0x2248, - b"thicksim" => 0x223c, - b"thinsp" => 0x2009, - b"thkap" => 0x2248, - b"thksim" => 0x223c, - b"thorn" => 0xfe, - b"tilde" => 0x2dc, - b"times" => 0xd7, - b"timesb" => 0x22a0, - b"timesbar" => 0x2a31, - b"timesd" => 0x2a30, - b"tint" => 0x222d, - b"toea" => 0x2928, - b"top" => 0x22a4, - b"topbot" => 0x2336, - b"topcir" => 0x2af1, - b"topf" => 0x1d565, - b"topfork" => 0x2ada, - b"tosa" => 0x2929, - b"tprime" => 0x2034, - b"trade" => 0x2122, - b"triangle" => 0x25b5, - b"triangledown" => 0x25bf, - b"triangleleft" => 0x25c3, - b"trianglelefteq" => 0x22b4, - b"triangleq" => 0x225c, - b"triangleright" => 0x25b9, - b"trianglerighteq" => 0x22b5, - b"tridot" => 0x25ec, - b"trie" => 0x225c, - b"triminus" => 0x2a3a, - b"triplus" => 0x2a39, - b"trisb" => 0x29cd, - b"tritime" => 0x2a3b, - b"trpezium" => 0x23e2, - b"tscr" => 0x1d4c9, - b"tscy" => 0x446, - b"tshcy" => 0x45b, - b"tstrok" => 0x167, - b"twixt" => 0x226c, - b"twoheadleftarrow" => 0x219e, - b"twoheadrightarrow" => 0x21a0, - b"uArr" => 0x21d1, - b"uHar" => 0x2963, - b"uacute" => 0xfa, - b"uarr" => 0x2191, - b"ubrcy" => 0x45e, - b"ubreve" => 0x16d, - b"ucirc" => 0xfb, - b"ucy" => 0x443, - b"udarr" => 0x21c5, - b"udblac" => 0x171, - b"udhar" => 0x296e, - b"ufisht" => 0x297e, - b"ufr" => 0x1d532, - b"ugrave" => 0xf9, - b"uharl" => 0x21bf, - b"uharr" => 0x21be, - b"uhblk" => 0x2580, - b"ulcorn" => 0x231c, - b"ulcorner" => 0x231c, - b"ulcrop" => 0x230f, - b"ultri" => 0x25f8, - b"umacr" => 0x16b, - b"uml" => 0xa8, - b"uogon" => 0x173, - b"uopf" => 0x1d566, - b"uparrow" => 0x2191, - b"updownarrow" => 0x2195, - b"upharpoonleft" => 0x21bf, - b"upharpoonright" => 0x21be, - b"uplus" => 0x228e, - b"upsi" => 0x3c5, - b"upsih" => 0x3d2, - b"upsilon" => 0x3c5, - b"upuparrows" => 0x21c8, - b"urcorn" => 0x231d, - b"urcorner" => 0x231d, - b"urcrop" => 0x230e, - b"uring" => 0x16f, - b"urtri" => 0x25f9, - b"uscr" => 0x1d4ca, - b"utdot" => 0x22f0, - b"utilde" => 0x169, - b"utri" => 0x25b5, - b"utrif" => 0x25b4, - b"uuarr" => 0x21c8, - b"uuml" => 0xfc, - b"uwangle" => 0x29a7, - b"vArr" => 0x21d5, - b"vBar" => 0x2ae8, - b"vBarv" => 0x2ae9, - b"vDash" => 0x22a8, - b"vangrt" => 0x299c, - b"varepsilon" => 0x3b5, - b"varkappa" => 0x3f0, - b"varnothing" => 0x2205, - b"varphi" => 0x3c6, - b"varpi" => 0x3d6, - b"varpropto" => 0x221d, - b"varr" => 0x2195, - b"varrho" => 0x3f1, - b"varsigma" => 0x3c2, - b"vartheta" => 0x3d1, - b"vartriangleleft" => 0x22b2, - b"vartriangleright" => 0x22b3, - b"vcy" => 0x432, - b"vdash" => 0x22a2, - b"vee" => 0x2228, - b"veebar" => 0x22bb, - b"veeeq" => 0x225a, - b"vellip" => 0x22ee, - b"verbar" => 0x7c, - b"vert" => 0x7c, - b"vfr" => 0x1d533, - b"vltri" => 0x22b2, - b"vopf" => 0x1d567, - b"vprop" => 0x221d, - b"vrtri" => 0x22b3, - b"vscr" => 0x1d4cb, - b"vzigzag" => 0x299a, - b"wcirc" => 0x175, - b"wedbar" => 0x2a5f, - b"wedge" => 0x2227, - b"wedgeq" => 0x2259, - b"weierp" => 0x2118, - b"wfr" => 0x1d534, - b"wopf" => 0x1d568, - b"wp" => 0x2118, - b"wr" => 0x2240, - b"wreath" => 0x2240, - b"wscr" => 0x1d4cc, - b"xcap" => 0x22c2, - b"xcirc" => 0x25ef, - b"xcup" => 0x22c3, - b"xdtri" => 0x25bd, - b"xfr" => 0x1d535, - b"xhArr" => 0x27fa, - b"xharr" => 0x27f7, - b"xi" => 0x3be, - b"xlArr" => 0x27f8, - b"xlarr" => 0x27f5, - b"xmap" => 0x27fc, - b"xnis" => 0x22fb, - b"xodot" => 0x2a00, - b"xopf" => 0x1d569, - b"xoplus" => 0x2a01, - b"xotime" => 0x2a02, - b"xrArr" => 0x27f9, - b"xrarr" => 0x27f6, - b"xscr" => 0x1d4cd, - b"xsqcup" => 0x2a06, - b"xuplus" => 0x2a04, - b"xutri" => 0x25b3, - b"xvee" => 0x22c1, - b"xwedge" => 0x22c0, - b"yacute" => 0xfd, - b"yacy" => 0x44f, - b"ycirc" => 0x177, - b"ycy" => 0x44b, - b"yen" => 0xa5, - b"yfr" => 0x1d536, - b"yicy" => 0x457, - b"yopf" => 0x1d56a, - b"yscr" => 0x1d4ce, - b"yucy" => 0x44e, - b"yuml" => 0xff, - b"zacute" => 0x17a, - b"zcaron" => 0x17e, - b"zcy" => 0x437, - b"zdot" => 0x17c, - b"zeetrf" => 0x2128, - b"zeta" => 0x3b6, - b"zfr" => 0x1d537, - b"zhcy" => 0x436, - b"zigrarr" => 0x21dd, - b"zopf" => 0x1d56b, - b"zscr" => 0x1d4cf, - b"zwj" => 0x200d, - b"zwnj" => 0x200c, +pub static ENTITY_REFERENCES: Map<&'static [u8], &'static [u8]> = phf_map! { + b"AElig" => "\u{c6}".as_bytes(), + b"AMP" => "\u{26}".as_bytes(), + b"Aacute" => "\u{c1}".as_bytes(), + b"Abreve" => "\u{102}".as_bytes(), + b"Acirc" => "\u{c2}".as_bytes(), + b"Acy" => "\u{410}".as_bytes(), + b"Afr" => "\u{1d504}".as_bytes(), + b"Agrave" => "\u{c0}".as_bytes(), + b"Alpha" => "\u{391}".as_bytes(), + b"Amacr" => "\u{100}".as_bytes(), + b"And" => "\u{2a53}".as_bytes(), + b"Aogon" => "\u{104}".as_bytes(), + b"Aopf" => "\u{1d538}".as_bytes(), + b"ApplyFunction" => "\u{2061}".as_bytes(), + b"Aring" => "\u{c5}".as_bytes(), + b"Ascr" => "\u{1d49c}".as_bytes(), + b"Assign" => "\u{2254}".as_bytes(), + b"Atilde" => "\u{c3}".as_bytes(), + b"Auml" => "\u{c4}".as_bytes(), + b"Backslash" => "\u{2216}".as_bytes(), + b"Barv" => "\u{2ae7}".as_bytes(), + b"Barwed" => "\u{2306}".as_bytes(), + b"Bcy" => "\u{411}".as_bytes(), + b"Because" => "\u{2235}".as_bytes(), + b"Bernoullis" => "\u{212c}".as_bytes(), + b"Beta" => "\u{392}".as_bytes(), + b"Bfr" => "\u{1d505}".as_bytes(), + b"Bopf" => "\u{1d539}".as_bytes(), + b"Breve" => "\u{2d8}".as_bytes(), + b"Bscr" => "\u{212c}".as_bytes(), + b"Bumpeq" => "\u{224e}".as_bytes(), + b"CHcy" => "\u{427}".as_bytes(), + b"COPY" => "\u{a9}".as_bytes(), + b"Cacute" => "\u{106}".as_bytes(), + b"Cap" => "\u{22d2}".as_bytes(), + b"CapitalDifferentialD" => "\u{2145}".as_bytes(), + b"Cayleys" => "\u{212d}".as_bytes(), + b"Ccaron" => "\u{10c}".as_bytes(), + b"Ccedil" => "\u{c7}".as_bytes(), + b"Ccirc" => "\u{108}".as_bytes(), + b"Cconint" => "\u{2230}".as_bytes(), + b"Cdot" => "\u{10a}".as_bytes(), + b"Cedilla" => "\u{b8}".as_bytes(), + b"CenterDot" => "\u{b7}".as_bytes(), + b"Cfr" => "\u{212d}".as_bytes(), + b"Chi" => "\u{3a7}".as_bytes(), + b"CircleDot" => "\u{2299}".as_bytes(), + b"CircleMinus" => "\u{2296}".as_bytes(), + b"CirclePlus" => "\u{2295}".as_bytes(), + b"CircleTimes" => "\u{2297}".as_bytes(), + b"ClockwiseContourIntegral" => "\u{2232}".as_bytes(), + b"CloseCurlyDoubleQuote" => "\u{201d}".as_bytes(), + b"CloseCurlyQuote" => "\u{2019}".as_bytes(), + b"Colon" => "\u{2237}".as_bytes(), + b"Colone" => "\u{2a74}".as_bytes(), + b"Congruent" => "\u{2261}".as_bytes(), + b"Conint" => "\u{222f}".as_bytes(), + b"ContourIntegral" => "\u{222e}".as_bytes(), + b"Copf" => "\u{2102}".as_bytes(), + b"Coproduct" => "\u{2210}".as_bytes(), + b"CounterClockwiseContourIntegral" => "\u{2233}".as_bytes(), + b"Cross" => "\u{2a2f}".as_bytes(), + b"Cscr" => "\u{1d49e}".as_bytes(), + b"Cup" => "\u{22d3}".as_bytes(), + b"CupCap" => "\u{224d}".as_bytes(), + b"DD" => "\u{2145}".as_bytes(), + b"DDotrahd" => "\u{2911}".as_bytes(), + b"DJcy" => "\u{402}".as_bytes(), + b"DScy" => "\u{405}".as_bytes(), + b"DZcy" => "\u{40f}".as_bytes(), + b"Dagger" => "\u{2021}".as_bytes(), + b"Darr" => "\u{21a1}".as_bytes(), + b"Dashv" => "\u{2ae4}".as_bytes(), + b"Dcaron" => "\u{10e}".as_bytes(), + b"Dcy" => "\u{414}".as_bytes(), + b"Del" => "\u{2207}".as_bytes(), + b"Delta" => "\u{394}".as_bytes(), + b"Dfr" => "\u{1d507}".as_bytes(), + b"DiacriticalAcute" => "\u{b4}".as_bytes(), + b"DiacriticalDot" => "\u{2d9}".as_bytes(), + b"DiacriticalDoubleAcute" => "\u{2dd}".as_bytes(), + b"DiacriticalGrave" => "\u{60}".as_bytes(), + b"DiacriticalTilde" => "\u{2dc}".as_bytes(), + b"Diamond" => "\u{22c4}".as_bytes(), + b"DifferentialD" => "\u{2146}".as_bytes(), + b"Dopf" => "\u{1d53b}".as_bytes(), + b"Dot" => "\u{a8}".as_bytes(), + b"DotDot" => "\u{20dc}".as_bytes(), + b"DotEqual" => "\u{2250}".as_bytes(), + b"DoubleContourIntegral" => "\u{222f}".as_bytes(), + b"DoubleDot" => "\u{a8}".as_bytes(), + b"DoubleDownArrow" => "\u{21d3}".as_bytes(), + b"DoubleLeftArrow" => "\u{21d0}".as_bytes(), + b"DoubleLeftRightArrow" => "\u{21d4}".as_bytes(), + b"DoubleLeftTee" => "\u{2ae4}".as_bytes(), + b"DoubleLongLeftArrow" => "\u{27f8}".as_bytes(), + b"DoubleLongLeftRightArrow" => "\u{27fa}".as_bytes(), + b"DoubleLongRightArrow" => "\u{27f9}".as_bytes(), + b"DoubleRightArrow" => "\u{21d2}".as_bytes(), + b"DoubleRightTee" => "\u{22a8}".as_bytes(), + b"DoubleUpArrow" => "\u{21d1}".as_bytes(), + b"DoubleUpDownArrow" => "\u{21d5}".as_bytes(), + b"DoubleVerticalBar" => "\u{2225}".as_bytes(), + b"DownArrow" => "\u{2193}".as_bytes(), + b"DownArrowBar" => "\u{2913}".as_bytes(), + b"DownArrowUpArrow" => "\u{21f5}".as_bytes(), + b"DownBreve" => "\u{311}".as_bytes(), + b"DownLeftRightVector" => "\u{2950}".as_bytes(), + b"DownLeftTeeVector" => "\u{295e}".as_bytes(), + b"DownLeftVector" => "\u{21bd}".as_bytes(), + b"DownLeftVectorBar" => "\u{2956}".as_bytes(), + b"DownRightTeeVector" => "\u{295f}".as_bytes(), + b"DownRightVector" => "\u{21c1}".as_bytes(), + b"DownRightVectorBar" => "\u{2957}".as_bytes(), + b"DownTee" => "\u{22a4}".as_bytes(), + b"DownTeeArrow" => "\u{21a7}".as_bytes(), + b"Downarrow" => "\u{21d3}".as_bytes(), + b"Dscr" => "\u{1d49f}".as_bytes(), + b"Dstrok" => "\u{110}".as_bytes(), + b"ENG" => "\u{14a}".as_bytes(), + b"ETH" => "\u{d0}".as_bytes(), + b"Eacute" => "\u{c9}".as_bytes(), + b"Ecaron" => "\u{11a}".as_bytes(), + b"Ecirc" => "\u{ca}".as_bytes(), + b"Ecy" => "\u{42d}".as_bytes(), + b"Edot" => "\u{116}".as_bytes(), + b"Efr" => "\u{1d508}".as_bytes(), + b"Egrave" => "\u{c8}".as_bytes(), + b"Element" => "\u{2208}".as_bytes(), + b"Emacr" => "\u{112}".as_bytes(), + b"EmptySmallSquare" => "\u{25fb}".as_bytes(), + b"EmptyVerySmallSquare" => "\u{25ab}".as_bytes(), + b"Eogon" => "\u{118}".as_bytes(), + b"Eopf" => "\u{1d53c}".as_bytes(), + b"Epsilon" => "\u{395}".as_bytes(), + b"Equal" => "\u{2a75}".as_bytes(), + b"EqualTilde" => "\u{2242}".as_bytes(), + b"Equilibrium" => "\u{21cc}".as_bytes(), + b"Escr" => "\u{2130}".as_bytes(), + b"Esim" => "\u{2a73}".as_bytes(), + b"Eta" => "\u{397}".as_bytes(), + b"Euml" => "\u{cb}".as_bytes(), + b"Exists" => "\u{2203}".as_bytes(), + b"ExponentialE" => "\u{2147}".as_bytes(), + b"Fcy" => "\u{424}".as_bytes(), + b"Ffr" => "\u{1d509}".as_bytes(), + b"FilledSmallSquare" => "\u{25fc}".as_bytes(), + b"FilledVerySmallSquare" => "\u{25aa}".as_bytes(), + b"Fopf" => "\u{1d53d}".as_bytes(), + b"ForAll" => "\u{2200}".as_bytes(), + b"Fouriertrf" => "\u{2131}".as_bytes(), + b"Fscr" => "\u{2131}".as_bytes(), + b"GJcy" => "\u{403}".as_bytes(), + b"GT" => "\u{3e}".as_bytes(), + b"Gamma" => "\u{393}".as_bytes(), + b"Gammad" => "\u{3dc}".as_bytes(), + b"Gbreve" => "\u{11e}".as_bytes(), + b"Gcedil" => "\u{122}".as_bytes(), + b"Gcirc" => "\u{11c}".as_bytes(), + b"Gcy" => "\u{413}".as_bytes(), + b"Gdot" => "\u{120}".as_bytes(), + b"Gfr" => "\u{1d50a}".as_bytes(), + b"Gg" => "\u{22d9}".as_bytes(), + b"Gopf" => "\u{1d53e}".as_bytes(), + b"GreaterEqual" => "\u{2265}".as_bytes(), + b"GreaterEqualLess" => "\u{22db}".as_bytes(), + b"GreaterFullEqual" => "\u{2267}".as_bytes(), + b"GreaterGreater" => "\u{2aa2}".as_bytes(), + b"GreaterLess" => "\u{2277}".as_bytes(), + b"GreaterSlantEqual" => "\u{2a7e}".as_bytes(), + b"GreaterTilde" => "\u{2273}".as_bytes(), + b"Gscr" => "\u{1d4a2}".as_bytes(), + b"Gt" => "\u{226b}".as_bytes(), + b"HARDcy" => "\u{42a}".as_bytes(), + b"Hacek" => "\u{2c7}".as_bytes(), + b"Hat" => "\u{5e}".as_bytes(), + b"Hcirc" => "\u{124}".as_bytes(), + b"Hfr" => "\u{210c}".as_bytes(), + b"HilbertSpace" => "\u{210b}".as_bytes(), + b"Hopf" => "\u{210d}".as_bytes(), + b"HorizontalLine" => "\u{2500}".as_bytes(), + b"Hscr" => "\u{210b}".as_bytes(), + b"Hstrok" => "\u{126}".as_bytes(), + b"HumpDownHump" => "\u{224e}".as_bytes(), + b"HumpEqual" => "\u{224f}".as_bytes(), + b"IEcy" => "\u{415}".as_bytes(), + b"IJlig" => "\u{132}".as_bytes(), + b"IOcy" => "\u{401}".as_bytes(), + b"Iacute" => "\u{cd}".as_bytes(), + b"Icirc" => "\u{ce}".as_bytes(), + b"Icy" => "\u{418}".as_bytes(), + b"Idot" => "\u{130}".as_bytes(), + b"Ifr" => "\u{2111}".as_bytes(), + b"Igrave" => "\u{cc}".as_bytes(), + b"Im" => "\u{2111}".as_bytes(), + b"Imacr" => "\u{12a}".as_bytes(), + b"ImaginaryI" => "\u{2148}".as_bytes(), + b"Implies" => "\u{21d2}".as_bytes(), + b"Int" => "\u{222c}".as_bytes(), + b"Integral" => "\u{222b}".as_bytes(), + b"Intersection" => "\u{22c2}".as_bytes(), + b"InvisibleComma" => "\u{2063}".as_bytes(), + b"InvisibleTimes" => "\u{2062}".as_bytes(), + b"Iogon" => "\u{12e}".as_bytes(), + b"Iopf" => "\u{1d540}".as_bytes(), + b"Iota" => "\u{399}".as_bytes(), + b"Iscr" => "\u{2110}".as_bytes(), + b"Itilde" => "\u{128}".as_bytes(), + b"Iukcy" => "\u{406}".as_bytes(), + b"Iuml" => "\u{cf}".as_bytes(), + b"Jcirc" => "\u{134}".as_bytes(), + b"Jcy" => "\u{419}".as_bytes(), + b"Jfr" => "\u{1d50d}".as_bytes(), + b"Jopf" => "\u{1d541}".as_bytes(), + b"Jscr" => "\u{1d4a5}".as_bytes(), + b"Jsercy" => "\u{408}".as_bytes(), + b"Jukcy" => "\u{404}".as_bytes(), + b"KHcy" => "\u{425}".as_bytes(), + b"KJcy" => "\u{40c}".as_bytes(), + b"Kappa" => "\u{39a}".as_bytes(), + b"Kcedil" => "\u{136}".as_bytes(), + b"Kcy" => "\u{41a}".as_bytes(), + b"Kfr" => "\u{1d50e}".as_bytes(), + b"Kopf" => "\u{1d542}".as_bytes(), + b"Kscr" => "\u{1d4a6}".as_bytes(), + b"LJcy" => "\u{409}".as_bytes(), + b"LT" => "\u{3c}".as_bytes(), + b"Lacute" => "\u{139}".as_bytes(), + b"Lambda" => "\u{39b}".as_bytes(), + b"Lang" => "\u{27ea}".as_bytes(), + b"Laplacetrf" => "\u{2112}".as_bytes(), + b"Larr" => "\u{219e}".as_bytes(), + b"Lcaron" => "\u{13d}".as_bytes(), + b"Lcedil" => "\u{13b}".as_bytes(), + b"Lcy" => "\u{41b}".as_bytes(), + b"LeftAngleBracket" => "\u{27e8}".as_bytes(), + b"LeftArrow" => "\u{2190}".as_bytes(), + b"LeftArrowBar" => "\u{21e4}".as_bytes(), + b"LeftArrowRightArrow" => "\u{21c6}".as_bytes(), + b"LeftCeiling" => "\u{2308}".as_bytes(), + b"LeftDoubleBracket" => "\u{27e6}".as_bytes(), + b"LeftDownTeeVector" => "\u{2961}".as_bytes(), + b"LeftDownVector" => "\u{21c3}".as_bytes(), + b"LeftDownVectorBar" => "\u{2959}".as_bytes(), + b"LeftFloor" => "\u{230a}".as_bytes(), + b"LeftRightArrow" => "\u{2194}".as_bytes(), + b"LeftRightVector" => "\u{294e}".as_bytes(), + b"LeftTee" => "\u{22a3}".as_bytes(), + b"LeftTeeArrow" => "\u{21a4}".as_bytes(), + b"LeftTeeVector" => "\u{295a}".as_bytes(), + b"LeftTriangle" => "\u{22b2}".as_bytes(), + b"LeftTriangleBar" => "\u{29cf}".as_bytes(), + b"LeftTriangleEqual" => "\u{22b4}".as_bytes(), + b"LeftUpDownVector" => "\u{2951}".as_bytes(), + b"LeftUpTeeVector" => "\u{2960}".as_bytes(), + b"LeftUpVector" => "\u{21bf}".as_bytes(), + b"LeftUpVectorBar" => "\u{2958}".as_bytes(), + b"LeftVector" => "\u{21bc}".as_bytes(), + b"LeftVectorBar" => "\u{2952}".as_bytes(), + b"Leftarrow" => "\u{21d0}".as_bytes(), + b"Leftrightarrow" => "\u{21d4}".as_bytes(), + b"LessEqualGreater" => "\u{22da}".as_bytes(), + b"LessFullEqual" => "\u{2266}".as_bytes(), + b"LessGreater" => "\u{2276}".as_bytes(), + b"LessLess" => "\u{2aa1}".as_bytes(), + b"LessSlantEqual" => "\u{2a7d}".as_bytes(), + b"LessTilde" => "\u{2272}".as_bytes(), + b"Lfr" => "\u{1d50f}".as_bytes(), + b"Ll" => "\u{22d8}".as_bytes(), + b"Lleftarrow" => "\u{21da}".as_bytes(), + b"Lmidot" => "\u{13f}".as_bytes(), + b"LongLeftArrow" => "\u{27f5}".as_bytes(), + b"LongLeftRightArrow" => "\u{27f7}".as_bytes(), + b"LongRightArrow" => "\u{27f6}".as_bytes(), + b"Longleftarrow" => "\u{27f8}".as_bytes(), + b"Longleftrightarrow" => "\u{27fa}".as_bytes(), + b"Longrightarrow" => "\u{27f9}".as_bytes(), + b"Lopf" => "\u{1d543}".as_bytes(), + b"LowerLeftArrow" => "\u{2199}".as_bytes(), + b"LowerRightArrow" => "\u{2198}".as_bytes(), + b"Lscr" => "\u{2112}".as_bytes(), + b"Lsh" => "\u{21b0}".as_bytes(), + b"Lstrok" => "\u{141}".as_bytes(), + b"Lt" => "\u{226a}".as_bytes(), + b"Map" => "\u{2905}".as_bytes(), + b"Mcy" => "\u{41c}".as_bytes(), + b"MediumSpace" => "\u{205f}".as_bytes(), + b"Mellintrf" => "\u{2133}".as_bytes(), + b"Mfr" => "\u{1d510}".as_bytes(), + b"MinusPlus" => "\u{2213}".as_bytes(), + b"Mopf" => "\u{1d544}".as_bytes(), + b"Mscr" => "\u{2133}".as_bytes(), + b"Mu" => "\u{39c}".as_bytes(), + b"NJcy" => "\u{40a}".as_bytes(), + b"Nacute" => "\u{143}".as_bytes(), + b"Ncaron" => "\u{147}".as_bytes(), + b"Ncedil" => "\u{145}".as_bytes(), + b"Ncy" => "\u{41d}".as_bytes(), + b"NegativeMediumSpace" => "\u{200b}".as_bytes(), + b"NegativeThickSpace" => "\u{200b}".as_bytes(), + b"NegativeThinSpace" => "\u{200b}".as_bytes(), + b"NegativeVeryThinSpace" => "\u{200b}".as_bytes(), + b"NestedGreaterGreater" => "\u{226b}".as_bytes(), + b"NestedLessLess" => "\u{226a}".as_bytes(), + b"NewLine" => "\u{a}".as_bytes(), + b"Nfr" => "\u{1d511}".as_bytes(), + b"NoBreak" => "\u{2060}".as_bytes(), + b"NonBreakingSpace" => "\u{a0}".as_bytes(), + b"Nopf" => "\u{2115}".as_bytes(), + b"Not" => "\u{2aec}".as_bytes(), + b"NotCongruent" => "\u{2262}".as_bytes(), + b"NotCupCap" => "\u{226d}".as_bytes(), + b"NotDoubleVerticalBar" => "\u{2226}".as_bytes(), + b"NotElement" => "\u{2209}".as_bytes(), + b"NotEqual" => "\u{2260}".as_bytes(), + b"NotEqualTilde" => "\u{2242},\u{338}".as_bytes(), + b"NotExists" => "\u{2204}".as_bytes(), + b"NotGreater" => "\u{226f}".as_bytes(), + b"NotGreaterEqual" => "\u{2271}".as_bytes(), + b"NotGreaterFullEqual" => "\u{2267},\u{338}".as_bytes(), + b"NotGreaterGreater" => "\u{226b},\u{338}".as_bytes(), + b"NotGreaterLess" => "\u{2279}".as_bytes(), + b"NotGreaterSlantEqual" => "\u{2a7e},\u{338}".as_bytes(), + b"NotGreaterTilde" => "\u{2275}".as_bytes(), + b"NotHumpDownHump" => "\u{224e},\u{338}".as_bytes(), + b"NotHumpEqual" => "\u{224f},\u{338}".as_bytes(), + b"NotLeftTriangle" => "\u{22ea}".as_bytes(), + b"NotLeftTriangleBar" => "\u{29cf},\u{338}".as_bytes(), + b"NotLeftTriangleEqual" => "\u{22ec}".as_bytes(), + b"NotLess" => "\u{226e}".as_bytes(), + b"NotLessEqual" => "\u{2270}".as_bytes(), + b"NotLessGreater" => "\u{2278}".as_bytes(), + b"NotLessLess" => "\u{226a},\u{338}".as_bytes(), + b"NotLessSlantEqual" => "\u{2a7d},\u{338}".as_bytes(), + b"NotLessTilde" => "\u{2274}".as_bytes(), + b"NotNestedGreaterGreater" => "\u{2aa2},\u{338}".as_bytes(), + b"NotNestedLessLess" => "\u{2aa1},\u{338}".as_bytes(), + b"NotPrecedes" => "\u{2280}".as_bytes(), + b"NotPrecedesEqual" => "\u{2aaf},\u{338}".as_bytes(), + b"NotPrecedesSlantEqual" => "\u{22e0}".as_bytes(), + b"NotReverseElement" => "\u{220c}".as_bytes(), + b"NotRightTriangle" => "\u{22eb}".as_bytes(), + b"NotRightTriangleBar" => "\u{29d0},\u{338}".as_bytes(), + b"NotRightTriangleEqual" => "\u{22ed}".as_bytes(), + b"NotSquareSubset" => "\u{228f},\u{338}".as_bytes(), + b"NotSquareSubsetEqual" => "\u{22e2}".as_bytes(), + b"NotSquareSuperset" => "\u{2290},\u{338}".as_bytes(), + b"NotSquareSupersetEqual" => "\u{22e3}".as_bytes(), + b"NotSubset" => "\u{2282},\u{20d2}".as_bytes(), + b"NotSubsetEqual" => "\u{2288}".as_bytes(), + b"NotSucceeds" => "\u{2281}".as_bytes(), + b"NotSucceedsEqual" => "\u{2ab0},\u{338}".as_bytes(), + b"NotSucceedsSlantEqual" => "\u{22e1}".as_bytes(), + b"NotSucceedsTilde" => "\u{227f},\u{338}".as_bytes(), + b"NotSuperset" => "\u{2283},\u{20d2}".as_bytes(), + b"NotSupersetEqual" => "\u{2289}".as_bytes(), + b"NotTilde" => "\u{2241}".as_bytes(), + b"NotTildeEqual" => "\u{2244}".as_bytes(), + b"NotTildeFullEqual" => "\u{2247}".as_bytes(), + b"NotTildeTilde" => "\u{2249}".as_bytes(), + b"NotVerticalBar" => "\u{2224}".as_bytes(), + b"Nscr" => "\u{1d4a9}".as_bytes(), + b"Ntilde" => "\u{d1}".as_bytes(), + b"Nu" => "\u{39d}".as_bytes(), + b"OElig" => "\u{152}".as_bytes(), + b"Oacute" => "\u{d3}".as_bytes(), + b"Ocirc" => "\u{d4}".as_bytes(), + b"Ocy" => "\u{41e}".as_bytes(), + b"Odblac" => "\u{150}".as_bytes(), + b"Ofr" => "\u{1d512}".as_bytes(), + b"Ograve" => "\u{d2}".as_bytes(), + b"Omacr" => "\u{14c}".as_bytes(), + b"Omega" => "\u{3a9}".as_bytes(), + b"Omicron" => "\u{39f}".as_bytes(), + b"Oopf" => "\u{1d546}".as_bytes(), + b"OpenCurlyDoubleQuote" => "\u{201c}".as_bytes(), + b"OpenCurlyQuote" => "\u{2018}".as_bytes(), + b"Or" => "\u{2a54}".as_bytes(), + b"Oscr" => "\u{1d4aa}".as_bytes(), + b"Oslash" => "\u{d8}".as_bytes(), + b"Otilde" => "\u{d5}".as_bytes(), + b"Otimes" => "\u{2a37}".as_bytes(), + b"Ouml" => "\u{d6}".as_bytes(), + b"OverBar" => "\u{203e}".as_bytes(), + b"OverBrace" => "\u{23de}".as_bytes(), + b"OverBracket" => "\u{23b4}".as_bytes(), + b"OverParenthesis" => "\u{23dc}".as_bytes(), + b"PartialD" => "\u{2202}".as_bytes(), + b"Pcy" => "\u{41f}".as_bytes(), + b"Pfr" => "\u{1d513}".as_bytes(), + b"Phi" => "\u{3a6}".as_bytes(), + b"Pi" => "\u{3a0}".as_bytes(), + b"PlusMinus" => "\u{b1}".as_bytes(), + b"Poincareplane" => "\u{210c}".as_bytes(), + b"Popf" => "\u{2119}".as_bytes(), + b"Pr" => "\u{2abb}".as_bytes(), + b"Precedes" => "\u{227a}".as_bytes(), + b"PrecedesEqual" => "\u{2aaf}".as_bytes(), + b"PrecedesSlantEqual" => "\u{227c}".as_bytes(), + b"PrecedesTilde" => "\u{227e}".as_bytes(), + b"Prime" => "\u{2033}".as_bytes(), + b"Product" => "\u{220f}".as_bytes(), + b"Proportion" => "\u{2237}".as_bytes(), + b"Proportional" => "\u{221d}".as_bytes(), + b"Pscr" => "\u{1d4ab}".as_bytes(), + b"Psi" => "\u{3a8}".as_bytes(), + b"QUOT" => "\u{22}".as_bytes(), + b"Qfr" => "\u{1d514}".as_bytes(), + b"Qopf" => "\u{211a}".as_bytes(), + b"Qscr" => "\u{1d4ac}".as_bytes(), + b"RBarr" => "\u{2910}".as_bytes(), + b"REG" => "\u{ae}".as_bytes(), + b"Racute" => "\u{154}".as_bytes(), + b"Rang" => "\u{27eb}".as_bytes(), + b"Rarr" => "\u{21a0}".as_bytes(), + b"Rarrtl" => "\u{2916}".as_bytes(), + b"Rcaron" => "\u{158}".as_bytes(), + b"Rcedil" => "\u{156}".as_bytes(), + b"Rcy" => "\u{420}".as_bytes(), + b"Re" => "\u{211c}".as_bytes(), + b"ReverseElement" => "\u{220b}".as_bytes(), + b"ReverseEquilibrium" => "\u{21cb}".as_bytes(), + b"ReverseUpEquilibrium" => "\u{296f}".as_bytes(), + b"Rfr" => "\u{211c}".as_bytes(), + b"Rho" => "\u{3a1}".as_bytes(), + b"RightAngleBracket" => "\u{27e9}".as_bytes(), + b"RightArrow" => "\u{2192}".as_bytes(), + b"RightArrowBar" => "\u{21e5}".as_bytes(), + b"RightArrowLeftArrow" => "\u{21c4}".as_bytes(), + b"RightCeiling" => "\u{2309}".as_bytes(), + b"RightDoubleBracket" => "\u{27e7}".as_bytes(), + b"RightDownTeeVector" => "\u{295d}".as_bytes(), + b"RightDownVector" => "\u{21c2}".as_bytes(), + b"RightDownVectorBar" => "\u{2955}".as_bytes(), + b"RightFloor" => "\u{230b}".as_bytes(), + b"RightTee" => "\u{22a2}".as_bytes(), + b"RightTeeArrow" => "\u{21a6}".as_bytes(), + b"RightTeeVector" => "\u{295b}".as_bytes(), + b"RightTriangle" => "\u{22b3}".as_bytes(), + b"RightTriangleBar" => "\u{29d0}".as_bytes(), + b"RightTriangleEqual" => "\u{22b5}".as_bytes(), + b"RightUpDownVector" => "\u{294f}".as_bytes(), + b"RightUpTeeVector" => "\u{295c}".as_bytes(), + b"RightUpVector" => "\u{21be}".as_bytes(), + b"RightUpVectorBar" => "\u{2954}".as_bytes(), + b"RightVector" => "\u{21c0}".as_bytes(), + b"RightVectorBar" => "\u{2953}".as_bytes(), + b"Rightarrow" => "\u{21d2}".as_bytes(), + b"Ropf" => "\u{211d}".as_bytes(), + b"RoundImplies" => "\u{2970}".as_bytes(), + b"Rrightarrow" => "\u{21db}".as_bytes(), + b"Rscr" => "\u{211b}".as_bytes(), + b"Rsh" => "\u{21b1}".as_bytes(), + b"RuleDelayed" => "\u{29f4}".as_bytes(), + b"SHCHcy" => "\u{429}".as_bytes(), + b"SHcy" => "\u{428}".as_bytes(), + b"SOFTcy" => "\u{42c}".as_bytes(), + b"Sacute" => "\u{15a}".as_bytes(), + b"Sc" => "\u{2abc}".as_bytes(), + b"Scaron" => "\u{160}".as_bytes(), + b"Scedil" => "\u{15e}".as_bytes(), + b"Scirc" => "\u{15c}".as_bytes(), + b"Scy" => "\u{421}".as_bytes(), + b"Sfr" => "\u{1d516}".as_bytes(), + b"ShortDownArrow" => "\u{2193}".as_bytes(), + b"ShortLeftArrow" => "\u{2190}".as_bytes(), + b"ShortRightArrow" => "\u{2192}".as_bytes(), + b"ShortUpArrow" => "\u{2191}".as_bytes(), + b"Sigma" => "\u{3a3}".as_bytes(), + b"SmallCircle" => "\u{2218}".as_bytes(), + b"Sopf" => "\u{1d54a}".as_bytes(), + b"Sqrt" => "\u{221a}".as_bytes(), + b"Square" => "\u{25a1}".as_bytes(), + b"SquareIntersection" => "\u{2293}".as_bytes(), + b"SquareSubset" => "\u{228f}".as_bytes(), + b"SquareSubsetEqual" => "\u{2291}".as_bytes(), + b"SquareSuperset" => "\u{2290}".as_bytes(), + b"SquareSupersetEqual" => "\u{2292}".as_bytes(), + b"SquareUnion" => "\u{2294}".as_bytes(), + b"Sscr" => "\u{1d4ae}".as_bytes(), + b"Star" => "\u{22c6}".as_bytes(), + b"Sub" => "\u{22d0}".as_bytes(), + b"Subset" => "\u{22d0}".as_bytes(), + b"SubsetEqual" => "\u{2286}".as_bytes(), + b"Succeeds" => "\u{227b}".as_bytes(), + b"SucceedsEqual" => "\u{2ab0}".as_bytes(), + b"SucceedsSlantEqual" => "\u{227d}".as_bytes(), + b"SucceedsTilde" => "\u{227f}".as_bytes(), + b"SuchThat" => "\u{220b}".as_bytes(), + b"Sum" => "\u{2211}".as_bytes(), + b"Sup" => "\u{22d1}".as_bytes(), + b"Superset" => "\u{2283}".as_bytes(), + b"SupersetEqual" => "\u{2287}".as_bytes(), + b"Supset" => "\u{22d1}".as_bytes(), + b"THORN" => "\u{de}".as_bytes(), + b"TRADE" => "\u{2122}".as_bytes(), + b"TSHcy" => "\u{40b}".as_bytes(), + b"TScy" => "\u{426}".as_bytes(), + b"Tab" => "\u{9}".as_bytes(), + b"Tau" => "\u{3a4}".as_bytes(), + b"Tcaron" => "\u{164}".as_bytes(), + b"Tcedil" => "\u{162}".as_bytes(), + b"Tcy" => "\u{422}".as_bytes(), + b"Tfr" => "\u{1d517}".as_bytes(), + b"Therefore" => "\u{2234}".as_bytes(), + b"Theta" => "\u{398}".as_bytes(), + b"ThickSpace" => "\u{205f},\u{200a}".as_bytes(), + b"ThinSpace" => "\u{2009}".as_bytes(), + b"Tilde" => "\u{223c}".as_bytes(), + b"TildeEqual" => "\u{2243}".as_bytes(), + b"TildeFullEqual" => "\u{2245}".as_bytes(), + b"TildeTilde" => "\u{2248}".as_bytes(), + b"Topf" => "\u{1d54b}".as_bytes(), + b"TripleDot" => "\u{20db}".as_bytes(), + b"Tscr" => "\u{1d4af}".as_bytes(), + b"Tstrok" => "\u{166}".as_bytes(), + b"Uacute" => "\u{da}".as_bytes(), + b"Uarr" => "\u{219f}".as_bytes(), + b"Uarrocir" => "\u{2949}".as_bytes(), + b"Ubrcy" => "\u{40e}".as_bytes(), + b"Ubreve" => "\u{16c}".as_bytes(), + b"Ucirc" => "\u{db}".as_bytes(), + b"Ucy" => "\u{423}".as_bytes(), + b"Udblac" => "\u{170}".as_bytes(), + b"Ufr" => "\u{1d518}".as_bytes(), + b"Ugrave" => "\u{d9}".as_bytes(), + b"Umacr" => "\u{16a}".as_bytes(), + b"UnderBar" => "\u{5f}".as_bytes(), + b"UnderBrace" => "\u{23df}".as_bytes(), + b"UnderBracket" => "\u{23b5}".as_bytes(), + b"UnderParenthesis" => "\u{23dd}".as_bytes(), + b"Union" => "\u{22c3}".as_bytes(), + b"UnionPlus" => "\u{228e}".as_bytes(), + b"Uogon" => "\u{172}".as_bytes(), + b"Uopf" => "\u{1d54c}".as_bytes(), + b"UpArrow" => "\u{2191}".as_bytes(), + b"UpArrowBar" => "\u{2912}".as_bytes(), + b"UpArrowDownArrow" => "\u{21c5}".as_bytes(), + b"UpDownArrow" => "\u{2195}".as_bytes(), + b"UpEquilibrium" => "\u{296e}".as_bytes(), + b"UpTee" => "\u{22a5}".as_bytes(), + b"UpTeeArrow" => "\u{21a5}".as_bytes(), + b"Uparrow" => "\u{21d1}".as_bytes(), + b"Updownarrow" => "\u{21d5}".as_bytes(), + b"UpperLeftArrow" => "\u{2196}".as_bytes(), + b"UpperRightArrow" => "\u{2197}".as_bytes(), + b"Upsi" => "\u{3d2}".as_bytes(), + b"Upsilon" => "\u{3a5}".as_bytes(), + b"Uring" => "\u{16e}".as_bytes(), + b"Uscr" => "\u{1d4b0}".as_bytes(), + b"Utilde" => "\u{168}".as_bytes(), + b"Uuml" => "\u{dc}".as_bytes(), + b"VDash" => "\u{22ab}".as_bytes(), + b"Vbar" => "\u{2aeb}".as_bytes(), + b"Vcy" => "\u{412}".as_bytes(), + b"Vdash" => "\u{22a9}".as_bytes(), + b"Vdashl" => "\u{2ae6}".as_bytes(), + b"Vee" => "\u{22c1}".as_bytes(), + b"Verbar" => "\u{2016}".as_bytes(), + b"Vert" => "\u{2016}".as_bytes(), + b"VerticalBar" => "\u{2223}".as_bytes(), + b"VerticalLine" => "\u{7c}".as_bytes(), + b"VerticalSeparator" => "\u{2758}".as_bytes(), + b"VerticalTilde" => "\u{2240}".as_bytes(), + b"VeryThinSpace" => "\u{200a}".as_bytes(), + b"Vfr" => "\u{1d519}".as_bytes(), + b"Vopf" => "\u{1d54d}".as_bytes(), + b"Vscr" => "\u{1d4b1}".as_bytes(), + b"Vvdash" => "\u{22aa}".as_bytes(), + b"Wcirc" => "\u{174}".as_bytes(), + b"Wedge" => "\u{22c0}".as_bytes(), + b"Wfr" => "\u{1d51a}".as_bytes(), + b"Wopf" => "\u{1d54e}".as_bytes(), + b"Wscr" => "\u{1d4b2}".as_bytes(), + b"Xfr" => "\u{1d51b}".as_bytes(), + b"Xi" => "\u{39e}".as_bytes(), + b"Xopf" => "\u{1d54f}".as_bytes(), + b"Xscr" => "\u{1d4b3}".as_bytes(), + b"YAcy" => "\u{42f}".as_bytes(), + b"YIcy" => "\u{407}".as_bytes(), + b"YUcy" => "\u{42e}".as_bytes(), + b"Yacute" => "\u{dd}".as_bytes(), + b"Ycirc" => "\u{176}".as_bytes(), + b"Ycy" => "\u{42b}".as_bytes(), + b"Yfr" => "\u{1d51c}".as_bytes(), + b"Yopf" => "\u{1d550}".as_bytes(), + b"Yscr" => "\u{1d4b4}".as_bytes(), + b"Yuml" => "\u{178}".as_bytes(), + b"ZHcy" => "\u{416}".as_bytes(), + b"Zacute" => "\u{179}".as_bytes(), + b"Zcaron" => "\u{17d}".as_bytes(), + b"Zcy" => "\u{417}".as_bytes(), + b"Zdot" => "\u{17b}".as_bytes(), + b"ZeroWidthSpace" => "\u{200b}".as_bytes(), + b"Zeta" => "\u{396}".as_bytes(), + b"Zfr" => "\u{2128}".as_bytes(), + b"Zopf" => "\u{2124}".as_bytes(), + b"Zscr" => "\u{1d4b5}".as_bytes(), + b"aacute" => "\u{e1}".as_bytes(), + b"abreve" => "\u{103}".as_bytes(), + b"ac" => "\u{223e}".as_bytes(), + b"acE" => "\u{223e},\u{333}".as_bytes(), + b"acd" => "\u{223f}".as_bytes(), + b"acirc" => "\u{e2}".as_bytes(), + b"acute" => "\u{b4}".as_bytes(), + b"acy" => "\u{430}".as_bytes(), + b"aelig" => "\u{e6}".as_bytes(), + b"af" => "\u{2061}".as_bytes(), + b"afr" => "\u{1d51e}".as_bytes(), + b"agrave" => "\u{e0}".as_bytes(), + b"alefsym" => "\u{2135}".as_bytes(), + b"aleph" => "\u{2135}".as_bytes(), + b"alpha" => "\u{3b1}".as_bytes(), + b"amacr" => "\u{101}".as_bytes(), + b"amalg" => "\u{2a3f}".as_bytes(), + b"amp" => "\u{26}".as_bytes(), + b"and" => "\u{2227}".as_bytes(), + b"andand" => "\u{2a55}".as_bytes(), + b"andd" => "\u{2a5c}".as_bytes(), + b"andslope" => "\u{2a58}".as_bytes(), + b"andv" => "\u{2a5a}".as_bytes(), + b"ang" => "\u{2220}".as_bytes(), + b"ange" => "\u{29a4}".as_bytes(), + b"angle" => "\u{2220}".as_bytes(), + b"angmsd" => "\u{2221}".as_bytes(), + b"angmsdaa" => "\u{29a8}".as_bytes(), + b"angmsdab" => "\u{29a9}".as_bytes(), + b"angmsdac" => "\u{29aa}".as_bytes(), + b"angmsdad" => "\u{29ab}".as_bytes(), + b"angmsdae" => "\u{29ac}".as_bytes(), + b"angmsdaf" => "\u{29ad}".as_bytes(), + b"angmsdag" => "\u{29ae}".as_bytes(), + b"angmsdah" => "\u{29af}".as_bytes(), + b"angrt" => "\u{221f}".as_bytes(), + b"angrtvb" => "\u{22be}".as_bytes(), + b"angrtvbd" => "\u{299d}".as_bytes(), + b"angsph" => "\u{2222}".as_bytes(), + b"angst" => "\u{c5}".as_bytes(), + b"angzarr" => "\u{237c}".as_bytes(), + b"aogon" => "\u{105}".as_bytes(), + b"aopf" => "\u{1d552}".as_bytes(), + b"ap" => "\u{2248}".as_bytes(), + b"apE" => "\u{2a70}".as_bytes(), + b"apacir" => "\u{2a6f}".as_bytes(), + b"ape" => "\u{224a}".as_bytes(), + b"apid" => "\u{224b}".as_bytes(), + b"apos" => "\u{27}".as_bytes(), + b"approx" => "\u{2248}".as_bytes(), + b"approxeq" => "\u{224a}".as_bytes(), + b"aring" => "\u{e5}".as_bytes(), + b"ascr" => "\u{1d4b6}".as_bytes(), + b"ast" => "\u{2a}".as_bytes(), + b"asymp" => "\u{2248}".as_bytes(), + b"asympeq" => "\u{224d}".as_bytes(), + b"atilde" => "\u{e3}".as_bytes(), + b"auml" => "\u{e4}".as_bytes(), + b"awconint" => "\u{2233}".as_bytes(), + b"awint" => "\u{2a11}".as_bytes(), + b"bNot" => "\u{2aed}".as_bytes(), + b"backcong" => "\u{224c}".as_bytes(), + b"backepsilon" => "\u{3f6}".as_bytes(), + b"backprime" => "\u{2035}".as_bytes(), + b"backsim" => "\u{223d}".as_bytes(), + b"backsimeq" => "\u{22cd}".as_bytes(), + b"barvee" => "\u{22bd}".as_bytes(), + b"barwed" => "\u{2305}".as_bytes(), + b"barwedge" => "\u{2305}".as_bytes(), + b"bbrk" => "\u{23b5}".as_bytes(), + b"bbrktbrk" => "\u{23b6}".as_bytes(), + b"bcong" => "\u{224c}".as_bytes(), + b"bcy" => "\u{431}".as_bytes(), + b"bdquo" => "\u{201e}".as_bytes(), + b"becaus" => "\u{2235}".as_bytes(), + b"because" => "\u{2235}".as_bytes(), + b"bemptyv" => "\u{29b0}".as_bytes(), + b"bepsi" => "\u{3f6}".as_bytes(), + b"bernou" => "\u{212c}".as_bytes(), + b"beta" => "\u{3b2}".as_bytes(), + b"beth" => "\u{2136}".as_bytes(), + b"between" => "\u{226c}".as_bytes(), + b"bfr" => "\u{1d51f}".as_bytes(), + b"bigcap" => "\u{22c2}".as_bytes(), + b"bigcirc" => "\u{25ef}".as_bytes(), + b"bigcup" => "\u{22c3}".as_bytes(), + b"bigodot" => "\u{2a00}".as_bytes(), + b"bigoplus" => "\u{2a01}".as_bytes(), + b"bigotimes" => "\u{2a02}".as_bytes(), + b"bigsqcup" => "\u{2a06}".as_bytes(), + b"bigstar" => "\u{2605}".as_bytes(), + b"bigtriangledown" => "\u{25bd}".as_bytes(), + b"bigtriangleup" => "\u{25b3}".as_bytes(), + b"biguplus" => "\u{2a04}".as_bytes(), + b"bigvee" => "\u{22c1}".as_bytes(), + b"bigwedge" => "\u{22c0}".as_bytes(), + b"bkarow" => "\u{290d}".as_bytes(), + b"blacklozenge" => "\u{29eb}".as_bytes(), + b"blacksquare" => "\u{25aa}".as_bytes(), + b"blacktriangle" => "\u{25b4}".as_bytes(), + b"blacktriangledown" => "\u{25be}".as_bytes(), + b"blacktriangleleft" => "\u{25c2}".as_bytes(), + b"blacktriangleright" => "\u{25b8}".as_bytes(), + b"blank" => "\u{2423}".as_bytes(), + b"blk12" => "\u{2592}".as_bytes(), + b"blk14" => "\u{2591}".as_bytes(), + b"blk34" => "\u{2593}".as_bytes(), + b"block" => "\u{2588}".as_bytes(), + b"bne" => "\u{3d},\u{20e5}".as_bytes(), + b"bnequiv" => "\u{2261},\u{20e5}".as_bytes(), + b"bnot" => "\u{2310}".as_bytes(), + b"bopf" => "\u{1d553}".as_bytes(), + b"bot" => "\u{22a5}".as_bytes(), + b"bottom" => "\u{22a5}".as_bytes(), + b"bowtie" => "\u{22c8}".as_bytes(), + b"boxDL" => "\u{2557}".as_bytes(), + b"boxDR" => "\u{2554}".as_bytes(), + b"boxDl" => "\u{2556}".as_bytes(), + b"boxDr" => "\u{2553}".as_bytes(), + b"boxH" => "\u{2550}".as_bytes(), + b"boxHD" => "\u{2566}".as_bytes(), + b"boxHU" => "\u{2569}".as_bytes(), + b"boxHd" => "\u{2564}".as_bytes(), + b"boxHu" => "\u{2567}".as_bytes(), + b"boxUL" => "\u{255d}".as_bytes(), + b"boxUR" => "\u{255a}".as_bytes(), + b"boxUl" => "\u{255c}".as_bytes(), + b"boxUr" => "\u{2559}".as_bytes(), + b"boxV" => "\u{2551}".as_bytes(), + b"boxVH" => "\u{256c}".as_bytes(), + b"boxVL" => "\u{2563}".as_bytes(), + b"boxVR" => "\u{2560}".as_bytes(), + b"boxVh" => "\u{256b}".as_bytes(), + b"boxVl" => "\u{2562}".as_bytes(), + b"boxVr" => "\u{255f}".as_bytes(), + b"boxbox" => "\u{29c9}".as_bytes(), + b"boxdL" => "\u{2555}".as_bytes(), + b"boxdR" => "\u{2552}".as_bytes(), + b"boxdl" => "\u{2510}".as_bytes(), + b"boxdr" => "\u{250c}".as_bytes(), + b"boxh" => "\u{2500}".as_bytes(), + b"boxhD" => "\u{2565}".as_bytes(), + b"boxhU" => "\u{2568}".as_bytes(), + b"boxhd" => "\u{252c}".as_bytes(), + b"boxhu" => "\u{2534}".as_bytes(), + b"boxminus" => "\u{229f}".as_bytes(), + b"boxplus" => "\u{229e}".as_bytes(), + b"boxtimes" => "\u{22a0}".as_bytes(), + b"boxuL" => "\u{255b}".as_bytes(), + b"boxuR" => "\u{2558}".as_bytes(), + b"boxul" => "\u{2518}".as_bytes(), + b"boxur" => "\u{2514}".as_bytes(), + b"boxv" => "\u{2502}".as_bytes(), + b"boxvH" => "\u{256a}".as_bytes(), + b"boxvL" => "\u{2561}".as_bytes(), + b"boxvR" => "\u{255e}".as_bytes(), + b"boxvh" => "\u{253c}".as_bytes(), + b"boxvl" => "\u{2524}".as_bytes(), + b"boxvr" => "\u{251c}".as_bytes(), + b"bprime" => "\u{2035}".as_bytes(), + b"breve" => "\u{2d8}".as_bytes(), + b"brvbar" => "\u{a6}".as_bytes(), + b"bscr" => "\u{1d4b7}".as_bytes(), + b"bsemi" => "\u{204f}".as_bytes(), + b"bsim" => "\u{223d}".as_bytes(), + b"bsime" => "\u{22cd}".as_bytes(), + b"bsol" => "\u{5c}".as_bytes(), + b"bsolb" => "\u{29c5}".as_bytes(), + b"bsolhsub" => "\u{27c8}".as_bytes(), + b"bull" => "\u{2022}".as_bytes(), + b"bullet" => "\u{2022}".as_bytes(), + b"bump" => "\u{224e}".as_bytes(), + b"bumpE" => "\u{2aae}".as_bytes(), + b"bumpe" => "\u{224f}".as_bytes(), + b"bumpeq" => "\u{224f}".as_bytes(), + b"cacute" => "\u{107}".as_bytes(), + b"cap" => "\u{2229}".as_bytes(), + b"capand" => "\u{2a44}".as_bytes(), + b"capbrcup" => "\u{2a49}".as_bytes(), + b"capcap" => "\u{2a4b}".as_bytes(), + b"capcup" => "\u{2a47}".as_bytes(), + b"capdot" => "\u{2a40}".as_bytes(), + b"caps" => "\u{2229},\u{fe00}".as_bytes(), + b"caret" => "\u{2041}".as_bytes(), + b"caron" => "\u{2c7}".as_bytes(), + b"ccaps" => "\u{2a4d}".as_bytes(), + b"ccaron" => "\u{10d}".as_bytes(), + b"ccedil" => "\u{e7}".as_bytes(), + b"ccirc" => "\u{109}".as_bytes(), + b"ccups" => "\u{2a4c}".as_bytes(), + b"ccupssm" => "\u{2a50}".as_bytes(), + b"cdot" => "\u{10b}".as_bytes(), + b"cedil" => "\u{b8}".as_bytes(), + b"cemptyv" => "\u{29b2}".as_bytes(), + b"cent" => "\u{a2}".as_bytes(), + b"centerdot" => "\u{b7}".as_bytes(), + b"cfr" => "\u{1d520}".as_bytes(), + b"chcy" => "\u{447}".as_bytes(), + b"check" => "\u{2713}".as_bytes(), + b"checkmark" => "\u{2713}".as_bytes(), + b"chi" => "\u{3c7}".as_bytes(), + b"cir" => "\u{25cb}".as_bytes(), + b"cirE" => "\u{29c3}".as_bytes(), + b"circ" => "\u{2c6}".as_bytes(), + b"circeq" => "\u{2257}".as_bytes(), + b"circlearrowleft" => "\u{21ba}".as_bytes(), + b"circlearrowright" => "\u{21bb}".as_bytes(), + b"circledR" => "\u{ae}".as_bytes(), + b"circledS" => "\u{24c8}".as_bytes(), + b"circledast" => "\u{229b}".as_bytes(), + b"circledcirc" => "\u{229a}".as_bytes(), + b"circleddash" => "\u{229d}".as_bytes(), + b"cire" => "\u{2257}".as_bytes(), + b"cirfnint" => "\u{2a10}".as_bytes(), + b"cirmid" => "\u{2aef}".as_bytes(), + b"cirscir" => "\u{29c2}".as_bytes(), + b"clubs" => "\u{2663}".as_bytes(), + b"clubsuit" => "\u{2663}".as_bytes(), + b"colon" => "\u{3a}".as_bytes(), + b"colone" => "\u{2254}".as_bytes(), + b"coloneq" => "\u{2254}".as_bytes(), + b"comma" => "\u{2c}".as_bytes(), + b"commat" => "\u{40}".as_bytes(), + b"comp" => "\u{2201}".as_bytes(), + b"compfn" => "\u{2218}".as_bytes(), + b"complement" => "\u{2201}".as_bytes(), + b"complexes" => "\u{2102}".as_bytes(), + b"cong" => "\u{2245}".as_bytes(), + b"congdot" => "\u{2a6d}".as_bytes(), + b"conint" => "\u{222e}".as_bytes(), + b"copf" => "\u{1d554}".as_bytes(), + b"coprod" => "\u{2210}".as_bytes(), + b"copy" => "\u{a9}".as_bytes(), + b"copysr" => "\u{2117}".as_bytes(), + b"crarr" => "\u{21b5}".as_bytes(), + b"cross" => "\u{2717}".as_bytes(), + b"cscr" => "\u{1d4b8}".as_bytes(), + b"csub" => "\u{2acf}".as_bytes(), + b"csube" => "\u{2ad1}".as_bytes(), + b"csup" => "\u{2ad0}".as_bytes(), + b"csupe" => "\u{2ad2}".as_bytes(), + b"ctdot" => "\u{22ef}".as_bytes(), + b"cudarrl" => "\u{2938}".as_bytes(), + b"cudarrr" => "\u{2935}".as_bytes(), + b"cuepr" => "\u{22de}".as_bytes(), + b"cuesc" => "\u{22df}".as_bytes(), + b"cularr" => "\u{21b6}".as_bytes(), + b"cularrp" => "\u{293d}".as_bytes(), + b"cup" => "\u{222a}".as_bytes(), + b"cupbrcap" => "\u{2a48}".as_bytes(), + b"cupcap" => "\u{2a46}".as_bytes(), + b"cupcup" => "\u{2a4a}".as_bytes(), + b"cupdot" => "\u{228d}".as_bytes(), + b"cupor" => "\u{2a45}".as_bytes(), + b"cups" => "\u{222a},\u{fe00}".as_bytes(), + b"curarr" => "\u{21b7}".as_bytes(), + b"curarrm" => "\u{293c}".as_bytes(), + b"curlyeqprec" => "\u{22de}".as_bytes(), + b"curlyeqsucc" => "\u{22df}".as_bytes(), + b"curlyvee" => "\u{22ce}".as_bytes(), + b"curlywedge" => "\u{22cf}".as_bytes(), + b"curren" => "\u{a4}".as_bytes(), + b"curvearrowleft" => "\u{21b6}".as_bytes(), + b"curvearrowright" => "\u{21b7}".as_bytes(), + b"cuvee" => "\u{22ce}".as_bytes(), + b"cuwed" => "\u{22cf}".as_bytes(), + b"cwconint" => "\u{2232}".as_bytes(), + b"cwint" => "\u{2231}".as_bytes(), + b"cylcty" => "\u{232d}".as_bytes(), + b"dArr" => "\u{21d3}".as_bytes(), + b"dHar" => "\u{2965}".as_bytes(), + b"dagger" => "\u{2020}".as_bytes(), + b"daleth" => "\u{2138}".as_bytes(), + b"darr" => "\u{2193}".as_bytes(), + b"dash" => "\u{2010}".as_bytes(), + b"dashv" => "\u{22a3}".as_bytes(), + b"dbkarow" => "\u{290f}".as_bytes(), + b"dblac" => "\u{2dd}".as_bytes(), + b"dcaron" => "\u{10f}".as_bytes(), + b"dcy" => "\u{434}".as_bytes(), + b"dd" => "\u{2146}".as_bytes(), + b"ddagger" => "\u{2021}".as_bytes(), + b"ddarr" => "\u{21ca}".as_bytes(), + b"ddotseq" => "\u{2a77}".as_bytes(), + b"deg" => "\u{b0}".as_bytes(), + b"delta" => "\u{3b4}".as_bytes(), + b"demptyv" => "\u{29b1}".as_bytes(), + b"dfisht" => "\u{297f}".as_bytes(), + b"dfr" => "\u{1d521}".as_bytes(), + b"dharl" => "\u{21c3}".as_bytes(), + b"dharr" => "\u{21c2}".as_bytes(), + b"diam" => "\u{22c4}".as_bytes(), + b"diamond" => "\u{22c4}".as_bytes(), + b"diamondsuit" => "\u{2666}".as_bytes(), + b"diams" => "\u{2666}".as_bytes(), + b"die" => "\u{a8}".as_bytes(), + b"digamma" => "\u{3dd}".as_bytes(), + b"disin" => "\u{22f2}".as_bytes(), + b"div" => "\u{f7}".as_bytes(), + b"divide" => "\u{f7}".as_bytes(), + b"divideontimes" => "\u{22c7}".as_bytes(), + b"divonx" => "\u{22c7}".as_bytes(), + b"djcy" => "\u{452}".as_bytes(), + b"dlcorn" => "\u{231e}".as_bytes(), + b"dlcrop" => "\u{230d}".as_bytes(), + b"dollar" => "\u{24}".as_bytes(), + b"dopf" => "\u{1d555}".as_bytes(), + b"dot" => "\u{2d9}".as_bytes(), + b"doteq" => "\u{2250}".as_bytes(), + b"doteqdot" => "\u{2251}".as_bytes(), + b"dotminus" => "\u{2238}".as_bytes(), + b"dotplus" => "\u{2214}".as_bytes(), + b"dotsquare" => "\u{22a1}".as_bytes(), + b"doublebarwedge" => "\u{2306}".as_bytes(), + b"downarrow" => "\u{2193}".as_bytes(), + b"downdownarrows" => "\u{21ca}".as_bytes(), + b"downharpoonleft" => "\u{21c3}".as_bytes(), + b"downharpoonright" => "\u{21c2}".as_bytes(), + b"drbkarow" => "\u{2910}".as_bytes(), + b"drcorn" => "\u{231f}".as_bytes(), + b"drcrop" => "\u{230c}".as_bytes(), + b"dscr" => "\u{1d4b9}".as_bytes(), + b"dscy" => "\u{455}".as_bytes(), + b"dsol" => "\u{29f6}".as_bytes(), + b"dstrok" => "\u{111}".as_bytes(), + b"dtdot" => "\u{22f1}".as_bytes(), + b"dtri" => "\u{25bf}".as_bytes(), + b"dtrif" => "\u{25be}".as_bytes(), + b"duarr" => "\u{21f5}".as_bytes(), + b"duhar" => "\u{296f}".as_bytes(), + b"dwangle" => "\u{29a6}".as_bytes(), + b"dzcy" => "\u{45f}".as_bytes(), + b"dzigrarr" => "\u{27ff}".as_bytes(), + b"eDDot" => "\u{2a77}".as_bytes(), + b"eDot" => "\u{2251}".as_bytes(), + b"eacute" => "\u{e9}".as_bytes(), + b"easter" => "\u{2a6e}".as_bytes(), + b"ecaron" => "\u{11b}".as_bytes(), + b"ecir" => "\u{2256}".as_bytes(), + b"ecirc" => "\u{ea}".as_bytes(), + b"ecolon" => "\u{2255}".as_bytes(), + b"ecy" => "\u{44d}".as_bytes(), + b"edot" => "\u{117}".as_bytes(), + b"ee" => "\u{2147}".as_bytes(), + b"efDot" => "\u{2252}".as_bytes(), + b"efr" => "\u{1d522}".as_bytes(), + b"eg" => "\u{2a9a}".as_bytes(), + b"egrave" => "\u{e8}".as_bytes(), + b"egs" => "\u{2a96}".as_bytes(), + b"egsdot" => "\u{2a98}".as_bytes(), + b"el" => "\u{2a99}".as_bytes(), + b"elinters" => "\u{23e7}".as_bytes(), + b"ell" => "\u{2113}".as_bytes(), + b"els" => "\u{2a95}".as_bytes(), + b"elsdot" => "\u{2a97}".as_bytes(), + b"emacr" => "\u{113}".as_bytes(), + b"empty" => "\u{2205}".as_bytes(), + b"emptyset" => "\u{2205}".as_bytes(), + b"emptyv" => "\u{2205}".as_bytes(), + b"emsp13" => "\u{2004}".as_bytes(), + b"emsp14" => "\u{2005}".as_bytes(), + b"emsp" => "\u{2003}".as_bytes(), + b"eng" => "\u{14b}".as_bytes(), + b"ensp" => "\u{2002}".as_bytes(), + b"eogon" => "\u{119}".as_bytes(), + b"eopf" => "\u{1d556}".as_bytes(), + b"epar" => "\u{22d5}".as_bytes(), + b"eparsl" => "\u{29e3}".as_bytes(), + b"eplus" => "\u{2a71}".as_bytes(), + b"epsi" => "\u{3b5}".as_bytes(), + b"epsilon" => "\u{3b5}".as_bytes(), + b"epsiv" => "\u{3f5}".as_bytes(), + b"eqcirc" => "\u{2256}".as_bytes(), + b"eqcolon" => "\u{2255}".as_bytes(), + b"eqsim" => "\u{2242}".as_bytes(), + b"eqslantgtr" => "\u{2a96}".as_bytes(), + b"eqslantless" => "\u{2a95}".as_bytes(), + b"equals" => "\u{3d}".as_bytes(), + b"equest" => "\u{225f}".as_bytes(), + b"equiv" => "\u{2261}".as_bytes(), + b"equivDD" => "\u{2a78}".as_bytes(), + b"eqvparsl" => "\u{29e5}".as_bytes(), + b"erDot" => "\u{2253}".as_bytes(), + b"erarr" => "\u{2971}".as_bytes(), + b"escr" => "\u{212f}".as_bytes(), + b"esdot" => "\u{2250}".as_bytes(), + b"esim" => "\u{2242}".as_bytes(), + b"eta" => "\u{3b7}".as_bytes(), + b"eth" => "\u{f0}".as_bytes(), + b"euml" => "\u{eb}".as_bytes(), + b"euro" => "\u{20ac}".as_bytes(), + b"excl" => "\u{21}".as_bytes(), + b"exist" => "\u{2203}".as_bytes(), + b"expectation" => "\u{2130}".as_bytes(), + b"exponentiale" => "\u{2147}".as_bytes(), + b"fallingdotseq" => "\u{2252}".as_bytes(), + b"fcy" => "\u{444}".as_bytes(), + b"female" => "\u{2640}".as_bytes(), + b"ffilig" => "\u{fb03}".as_bytes(), + b"fflig" => "\u{fb00}".as_bytes(), + b"ffllig" => "\u{fb04}".as_bytes(), + b"ffr" => "\u{1d523}".as_bytes(), + b"filig" => "\u{fb01}".as_bytes(), + b"fjlig" => "\u{66},\u{6a}".as_bytes(), + b"flat" => "\u{266d}".as_bytes(), + b"fllig" => "\u{fb02}".as_bytes(), + b"fltns" => "\u{25b1}".as_bytes(), + b"fnof" => "\u{192}".as_bytes(), + b"fopf" => "\u{1d557}".as_bytes(), + b"forall" => "\u{2200}".as_bytes(), + b"fork" => "\u{22d4}".as_bytes(), + b"forkv" => "\u{2ad9}".as_bytes(), + b"fpartint" => "\u{2a0d}".as_bytes(), + b"frac12" => "\u{bd}".as_bytes(), + b"frac13" => "\u{2153}".as_bytes(), + b"frac14" => "\u{bc}".as_bytes(), + b"frac15" => "\u{2155}".as_bytes(), + b"frac16" => "\u{2159}".as_bytes(), + b"frac18" => "\u{215b}".as_bytes(), + b"frac23" => "\u{2154}".as_bytes(), + b"frac25" => "\u{2156}".as_bytes(), + b"frac34" => "\u{be}".as_bytes(), + b"frac35" => "\u{2157}".as_bytes(), + b"frac38" => "\u{215c}".as_bytes(), + b"frac45" => "\u{2158}".as_bytes(), + b"frac56" => "\u{215a}".as_bytes(), + b"frac58" => "\u{215d}".as_bytes(), + b"frac78" => "\u{215e}".as_bytes(), + b"frasl" => "\u{2044}".as_bytes(), + b"frown" => "\u{2322}".as_bytes(), + b"fscr" => "\u{1d4bb}".as_bytes(), + b"gE" => "\u{2267}".as_bytes(), + b"gEl" => "\u{2a8c}".as_bytes(), + b"gacute" => "\u{1f5}".as_bytes(), + b"gamma" => "\u{3b3}".as_bytes(), + b"gammad" => "\u{3dd}".as_bytes(), + b"gap" => "\u{2a86}".as_bytes(), + b"gbreve" => "\u{11f}".as_bytes(), + b"gcirc" => "\u{11d}".as_bytes(), + b"gcy" => "\u{433}".as_bytes(), + b"gdot" => "\u{121}".as_bytes(), + b"ge" => "\u{2265}".as_bytes(), + b"gel" => "\u{22db}".as_bytes(), + b"geq" => "\u{2265}".as_bytes(), + b"geqq" => "\u{2267}".as_bytes(), + b"geqslant" => "\u{2a7e}".as_bytes(), + b"ges" => "\u{2a7e}".as_bytes(), + b"gescc" => "\u{2aa9}".as_bytes(), + b"gesdot" => "\u{2a80}".as_bytes(), + b"gesdoto" => "\u{2a82}".as_bytes(), + b"gesdotol" => "\u{2a84}".as_bytes(), + b"gesl" => "\u{22db},\u{fe00}".as_bytes(), + b"gesles" => "\u{2a94}".as_bytes(), + b"gfr" => "\u{1d524}".as_bytes(), + b"gg" => "\u{226b}".as_bytes(), + b"ggg" => "\u{22d9}".as_bytes(), + b"gimel" => "\u{2137}".as_bytes(), + b"gjcy" => "\u{453}".as_bytes(), + b"gl" => "\u{2277}".as_bytes(), + b"glE" => "\u{2a92}".as_bytes(), + b"gla" => "\u{2aa5}".as_bytes(), + b"glj" => "\u{2aa4}".as_bytes(), + b"gnE" => "\u{2269}".as_bytes(), + b"gnap" => "\u{2a8a}".as_bytes(), + b"gnapprox" => "\u{2a8a}".as_bytes(), + b"gne" => "\u{2a88}".as_bytes(), + b"gneq" => "\u{2a88}".as_bytes(), + b"gneqq" => "\u{2269}".as_bytes(), + b"gnsim" => "\u{22e7}".as_bytes(), + b"gopf" => "\u{1d558}".as_bytes(), + b"grave" => "\u{60}".as_bytes(), + b"gscr" => "\u{210a}".as_bytes(), + b"gsim" => "\u{2273}".as_bytes(), + b"gsime" => "\u{2a8e}".as_bytes(), + b"gsiml" => "\u{2a90}".as_bytes(), + b"gt" => "\u{3e}".as_bytes(), + b"gtcc" => "\u{2aa7}".as_bytes(), + b"gtcir" => "\u{2a7a}".as_bytes(), + b"gtdot" => "\u{22d7}".as_bytes(), + b"gtlPar" => "\u{2995}".as_bytes(), + b"gtquest" => "\u{2a7c}".as_bytes(), + b"gtrapprox" => "\u{2a86}".as_bytes(), + b"gtrarr" => "\u{2978}".as_bytes(), + b"gtrdot" => "\u{22d7}".as_bytes(), + b"gtreqless" => "\u{22db}".as_bytes(), + b"gtreqqless" => "\u{2a8c}".as_bytes(), + b"gtrless" => "\u{2277}".as_bytes(), + b"gtrsim" => "\u{2273}".as_bytes(), + b"gvertneqq" => "\u{2269},\u{fe00}".as_bytes(), + b"gvnE" => "\u{2269},\u{fe00}".as_bytes(), + b"hArr" => "\u{21d4}".as_bytes(), + b"hairsp" => "\u{200a}".as_bytes(), + b"half" => "\u{bd}".as_bytes(), + b"hamilt" => "\u{210b}".as_bytes(), + b"hardcy" => "\u{44a}".as_bytes(), + b"harr" => "\u{2194}".as_bytes(), + b"harrcir" => "\u{2948}".as_bytes(), + b"harrw" => "\u{21ad}".as_bytes(), + b"hbar" => "\u{210f}".as_bytes(), + b"hcirc" => "\u{125}".as_bytes(), + b"hearts" => "\u{2665}".as_bytes(), + b"heartsuit" => "\u{2665}".as_bytes(), + b"hellip" => "\u{2026}".as_bytes(), + b"hercon" => "\u{22b9}".as_bytes(), + b"hfr" => "\u{1d525}".as_bytes(), + b"hksearow" => "\u{2925}".as_bytes(), + b"hkswarow" => "\u{2926}".as_bytes(), + b"hoarr" => "\u{21ff}".as_bytes(), + b"homtht" => "\u{223b}".as_bytes(), + b"hookleftarrow" => "\u{21a9}".as_bytes(), + b"hookrightarrow" => "\u{21aa}".as_bytes(), + b"hopf" => "\u{1d559}".as_bytes(), + b"horbar" => "\u{2015}".as_bytes(), + b"hscr" => "\u{1d4bd}".as_bytes(), + b"hslash" => "\u{210f}".as_bytes(), + b"hstrok" => "\u{127}".as_bytes(), + b"hybull" => "\u{2043}".as_bytes(), + b"hyphen" => "\u{2010}".as_bytes(), + b"iacute" => "\u{ed}".as_bytes(), + b"ic" => "\u{2063}".as_bytes(), + b"icirc" => "\u{ee}".as_bytes(), + b"icy" => "\u{438}".as_bytes(), + b"iecy" => "\u{435}".as_bytes(), + b"iexcl" => "\u{a1}".as_bytes(), + b"iff" => "\u{21d4}".as_bytes(), + b"ifr" => "\u{1d526}".as_bytes(), + b"igrave" => "\u{ec}".as_bytes(), + b"ii" => "\u{2148}".as_bytes(), + b"iiiint" => "\u{2a0c}".as_bytes(), + b"iiint" => "\u{222d}".as_bytes(), + b"iinfin" => "\u{29dc}".as_bytes(), + b"iiota" => "\u{2129}".as_bytes(), + b"ijlig" => "\u{133}".as_bytes(), + b"imacr" => "\u{12b}".as_bytes(), + b"image" => "\u{2111}".as_bytes(), + b"imagline" => "\u{2110}".as_bytes(), + b"imagpart" => "\u{2111}".as_bytes(), + b"imath" => "\u{131}".as_bytes(), + b"imof" => "\u{22b7}".as_bytes(), + b"imped" => "\u{1b5}".as_bytes(), + b"in" => "\u{2208}".as_bytes(), + b"incare" => "\u{2105}".as_bytes(), + b"infin" => "\u{221e}".as_bytes(), + b"infintie" => "\u{29dd}".as_bytes(), + b"inodot" => "\u{131}".as_bytes(), + b"int" => "\u{222b}".as_bytes(), + b"intcal" => "\u{22ba}".as_bytes(), + b"integers" => "\u{2124}".as_bytes(), + b"intercal" => "\u{22ba}".as_bytes(), + b"intlarhk" => "\u{2a17}".as_bytes(), + b"intprod" => "\u{2a3c}".as_bytes(), + b"iocy" => "\u{451}".as_bytes(), + b"iogon" => "\u{12f}".as_bytes(), + b"iopf" => "\u{1d55a}".as_bytes(), + b"iota" => "\u{3b9}".as_bytes(), + b"iprod" => "\u{2a3c}".as_bytes(), + b"iquest" => "\u{bf}".as_bytes(), + b"iscr" => "\u{1d4be}".as_bytes(), + b"isin" => "\u{2208}".as_bytes(), + b"isinE" => "\u{22f9}".as_bytes(), + b"isindot" => "\u{22f5}".as_bytes(), + b"isins" => "\u{22f4}".as_bytes(), + b"isinsv" => "\u{22f3}".as_bytes(), + b"isinv" => "\u{2208}".as_bytes(), + b"it" => "\u{2062}".as_bytes(), + b"itilde" => "\u{129}".as_bytes(), + b"iukcy" => "\u{456}".as_bytes(), + b"iuml" => "\u{ef}".as_bytes(), + b"jcirc" => "\u{135}".as_bytes(), + b"jcy" => "\u{439}".as_bytes(), + b"jfr" => "\u{1d527}".as_bytes(), + b"jmath" => "\u{237}".as_bytes(), + b"jopf" => "\u{1d55b}".as_bytes(), + b"jscr" => "\u{1d4bf}".as_bytes(), + b"jsercy" => "\u{458}".as_bytes(), + b"jukcy" => "\u{454}".as_bytes(), + b"kappa" => "\u{3ba}".as_bytes(), + b"kappav" => "\u{3f0}".as_bytes(), + b"kcedil" => "\u{137}".as_bytes(), + b"kcy" => "\u{43a}".as_bytes(), + b"kfr" => "\u{1d528}".as_bytes(), + b"kgreen" => "\u{138}".as_bytes(), + b"khcy" => "\u{445}".as_bytes(), + b"kjcy" => "\u{45c}".as_bytes(), + b"kopf" => "\u{1d55c}".as_bytes(), + b"kscr" => "\u{1d4c0}".as_bytes(), + b"lAarr" => "\u{21da}".as_bytes(), + b"lArr" => "\u{21d0}".as_bytes(), + b"lAtail" => "\u{291b}".as_bytes(), + b"lBarr" => "\u{290e}".as_bytes(), + b"lE" => "\u{2266}".as_bytes(), + b"lEg" => "\u{2a8b}".as_bytes(), + b"lHar" => "\u{2962}".as_bytes(), + b"lacute" => "\u{13a}".as_bytes(), + b"laemptyv" => "\u{29b4}".as_bytes(), + b"lagran" => "\u{2112}".as_bytes(), + b"lambda" => "\u{3bb}".as_bytes(), + b"lang" => "\u{27e8}".as_bytes(), + b"langd" => "\u{2991}".as_bytes(), + b"langle" => "\u{27e8}".as_bytes(), + b"lap" => "\u{2a85}".as_bytes(), + b"laquo" => "\u{ab}".as_bytes(), + b"larr" => "\u{2190}".as_bytes(), + b"larrb" => "\u{21e4}".as_bytes(), + b"larrbfs" => "\u{291f}".as_bytes(), + b"larrfs" => "\u{291d}".as_bytes(), + b"larrhk" => "\u{21a9}".as_bytes(), + b"larrlp" => "\u{21ab}".as_bytes(), + b"larrpl" => "\u{2939}".as_bytes(), + b"larrsim" => "\u{2973}".as_bytes(), + b"larrtl" => "\u{21a2}".as_bytes(), + b"lat" => "\u{2aab}".as_bytes(), + b"latail" => "\u{2919}".as_bytes(), + b"late" => "\u{2aad}".as_bytes(), + b"lates" => "\u{2aad},\u{fe00}".as_bytes(), + b"lbarr" => "\u{290c}".as_bytes(), + b"lbbrk" => "\u{2772}".as_bytes(), + b"lbrace" => "\u{7b}".as_bytes(), + b"lbrack" => "\u{5b}".as_bytes(), + b"lbrke" => "\u{298b}".as_bytes(), + b"lbrksld" => "\u{298f}".as_bytes(), + b"lbrkslu" => "\u{298d}".as_bytes(), + b"lcaron" => "\u{13e}".as_bytes(), + b"lcedil" => "\u{13c}".as_bytes(), + b"lceil" => "\u{2308}".as_bytes(), + b"lcub" => "\u{7b}".as_bytes(), + b"lcy" => "\u{43b}".as_bytes(), + b"ldca" => "\u{2936}".as_bytes(), + b"ldquo" => "\u{201c}".as_bytes(), + b"ldquor" => "\u{201e}".as_bytes(), + b"ldrdhar" => "\u{2967}".as_bytes(), + b"ldrushar" => "\u{294b}".as_bytes(), + b"ldsh" => "\u{21b2}".as_bytes(), + b"le" => "\u{2264}".as_bytes(), + b"leftarrow" => "\u{2190}".as_bytes(), + b"leftarrowtail" => "\u{21a2}".as_bytes(), + b"leftharpoondown" => "\u{21bd}".as_bytes(), + b"leftharpoonup" => "\u{21bc}".as_bytes(), + b"leftleftarrows" => "\u{21c7}".as_bytes(), + b"leftrightarrow" => "\u{2194}".as_bytes(), + b"leftrightarrows" => "\u{21c6}".as_bytes(), + b"leftrightharpoons" => "\u{21cb}".as_bytes(), + b"leftrightsquigarrow" => "\u{21ad}".as_bytes(), + b"leftthreetimes" => "\u{22cb}".as_bytes(), + b"leg" => "\u{22da}".as_bytes(), + b"leq" => "\u{2264}".as_bytes(), + b"leqq" => "\u{2266}".as_bytes(), + b"leqslant" => "\u{2a7d}".as_bytes(), + b"les" => "\u{2a7d}".as_bytes(), + b"lescc" => "\u{2aa8}".as_bytes(), + b"lesdot" => "\u{2a7f}".as_bytes(), + b"lesdoto" => "\u{2a81}".as_bytes(), + b"lesdotor" => "\u{2a83}".as_bytes(), + b"lesg" => "\u{22da},\u{fe00}".as_bytes(), + b"lesges" => "\u{2a93}".as_bytes(), + b"lessapprox" => "\u{2a85}".as_bytes(), + b"lessdot" => "\u{22d6}".as_bytes(), + b"lesseqgtr" => "\u{22da}".as_bytes(), + b"lesseqqgtr" => "\u{2a8b}".as_bytes(), + b"lessgtr" => "\u{2276}".as_bytes(), + b"lesssim" => "\u{2272}".as_bytes(), + b"lfisht" => "\u{297c}".as_bytes(), + b"lfloor" => "\u{230a}".as_bytes(), + b"lfr" => "\u{1d529}".as_bytes(), + b"lg" => "\u{2276}".as_bytes(), + b"lgE" => "\u{2a91}".as_bytes(), + b"lhard" => "\u{21bd}".as_bytes(), + b"lharu" => "\u{21bc}".as_bytes(), + b"lharul" => "\u{296a}".as_bytes(), + b"lhblk" => "\u{2584}".as_bytes(), + b"ljcy" => "\u{459}".as_bytes(), + b"ll" => "\u{226a}".as_bytes(), + b"llarr" => "\u{21c7}".as_bytes(), + b"llcorner" => "\u{231e}".as_bytes(), + b"llhard" => "\u{296b}".as_bytes(), + b"lltri" => "\u{25fa}".as_bytes(), + b"lmidot" => "\u{140}".as_bytes(), + b"lmoust" => "\u{23b0}".as_bytes(), + b"lmoustache" => "\u{23b0}".as_bytes(), + b"lnE" => "\u{2268}".as_bytes(), + b"lnap" => "\u{2a89}".as_bytes(), + b"lnapprox" => "\u{2a89}".as_bytes(), + b"lne" => "\u{2a87}".as_bytes(), + b"lneq" => "\u{2a87}".as_bytes(), + b"lneqq" => "\u{2268}".as_bytes(), + b"lnsim" => "\u{22e6}".as_bytes(), + b"loang" => "\u{27ec}".as_bytes(), + b"loarr" => "\u{21fd}".as_bytes(), + b"lobrk" => "\u{27e6}".as_bytes(), + b"longleftarrow" => "\u{27f5}".as_bytes(), + b"longleftrightarrow" => "\u{27f7}".as_bytes(), + b"longmapsto" => "\u{27fc}".as_bytes(), + b"longrightarrow" => "\u{27f6}".as_bytes(), + b"looparrowleft" => "\u{21ab}".as_bytes(), + b"looparrowright" => "\u{21ac}".as_bytes(), + b"lopar" => "\u{2985}".as_bytes(), + b"lopf" => "\u{1d55d}".as_bytes(), + b"loplus" => "\u{2a2d}".as_bytes(), + b"lotimes" => "\u{2a34}".as_bytes(), + b"lowast" => "\u{2217}".as_bytes(), + b"lowbar" => "\u{5f}".as_bytes(), + b"loz" => "\u{25ca}".as_bytes(), + b"lozenge" => "\u{25ca}".as_bytes(), + b"lozf" => "\u{29eb}".as_bytes(), + b"lpar" => "\u{28}".as_bytes(), + b"lparlt" => "\u{2993}".as_bytes(), + b"lrarr" => "\u{21c6}".as_bytes(), + b"lrcorner" => "\u{231f}".as_bytes(), + b"lrhar" => "\u{21cb}".as_bytes(), + b"lrhard" => "\u{296d}".as_bytes(), + b"lrm" => "\u{200e}".as_bytes(), + b"lrtri" => "\u{22bf}".as_bytes(), + b"lsaquo" => "\u{2039}".as_bytes(), + b"lscr" => "\u{1d4c1}".as_bytes(), + b"lsh" => "\u{21b0}".as_bytes(), + b"lsim" => "\u{2272}".as_bytes(), + b"lsime" => "\u{2a8d}".as_bytes(), + b"lsimg" => "\u{2a8f}".as_bytes(), + b"lsqb" => "\u{5b}".as_bytes(), + b"lsquo" => "\u{2018}".as_bytes(), + b"lsquor" => "\u{201a}".as_bytes(), + b"lstrok" => "\u{142}".as_bytes(), + b"lt" => "\u{3c}".as_bytes(), + b"ltcc" => "\u{2aa6}".as_bytes(), + b"ltcir" => "\u{2a79}".as_bytes(), + b"ltdot" => "\u{22d6}".as_bytes(), + b"lthree" => "\u{22cb}".as_bytes(), + b"ltimes" => "\u{22c9}".as_bytes(), + b"ltlarr" => "\u{2976}".as_bytes(), + b"ltquest" => "\u{2a7b}".as_bytes(), + b"ltrPar" => "\u{2996}".as_bytes(), + b"ltri" => "\u{25c3}".as_bytes(), + b"ltrie" => "\u{22b4}".as_bytes(), + b"ltrif" => "\u{25c2}".as_bytes(), + b"lurdshar" => "\u{294a}".as_bytes(), + b"luruhar" => "\u{2966}".as_bytes(), + b"lvertneqq" => "\u{2268},\u{fe00}".as_bytes(), + b"lvnE" => "\u{2268},\u{fe00}".as_bytes(), + b"mDDot" => "\u{223a}".as_bytes(), + b"macr" => "\u{af}".as_bytes(), + b"male" => "\u{2642}".as_bytes(), + b"malt" => "\u{2720}".as_bytes(), + b"maltese" => "\u{2720}".as_bytes(), + b"map" => "\u{21a6}".as_bytes(), + b"mapsto" => "\u{21a6}".as_bytes(), + b"mapstodown" => "\u{21a7}".as_bytes(), + b"mapstoleft" => "\u{21a4}".as_bytes(), + b"mapstoup" => "\u{21a5}".as_bytes(), + b"marker" => "\u{25ae}".as_bytes(), + b"mcomma" => "\u{2a29}".as_bytes(), + b"mcy" => "\u{43c}".as_bytes(), + b"mdash" => "\u{2014}".as_bytes(), + b"measuredangle" => "\u{2221}".as_bytes(), + b"mfr" => "\u{1d52a}".as_bytes(), + b"mho" => "\u{2127}".as_bytes(), + b"micro" => "\u{b5}".as_bytes(), + b"mid" => "\u{2223}".as_bytes(), + b"midast" => "\u{2a}".as_bytes(), + b"midcir" => "\u{2af0}".as_bytes(), + b"middot" => "\u{b7}".as_bytes(), + b"minus" => "\u{2212}".as_bytes(), + b"minusb" => "\u{229f}".as_bytes(), + b"minusd" => "\u{2238}".as_bytes(), + b"minusdu" => "\u{2a2a}".as_bytes(), + b"mlcp" => "\u{2adb}".as_bytes(), + b"mldr" => "\u{2026}".as_bytes(), + b"mnplus" => "\u{2213}".as_bytes(), + b"models" => "\u{22a7}".as_bytes(), + b"mopf" => "\u{1d55e}".as_bytes(), + b"mp" => "\u{2213}".as_bytes(), + b"mscr" => "\u{1d4c2}".as_bytes(), + b"mstpos" => "\u{223e}".as_bytes(), + b"mu" => "\u{3bc}".as_bytes(), + b"multimap" => "\u{22b8}".as_bytes(), + b"mumap" => "\u{22b8}".as_bytes(), + b"nGg" => "\u{22d9},\u{338}".as_bytes(), + b"nGt" => "\u{226b},\u{20d2}".as_bytes(), + b"nGtv" => "\u{226b},\u{338}".as_bytes(), + b"nLeftarrow" => "\u{21cd}".as_bytes(), + b"nLeftrightarrow" => "\u{21ce}".as_bytes(), + b"nLl" => "\u{22d8},\u{338}".as_bytes(), + b"nLt" => "\u{226a},\u{20d2}".as_bytes(), + b"nLtv" => "\u{226a},\u{338}".as_bytes(), + b"nRightarrow" => "\u{21cf}".as_bytes(), + b"nVDash" => "\u{22af}".as_bytes(), + b"nVdash" => "\u{22ae}".as_bytes(), + b"nabla" => "\u{2207}".as_bytes(), + b"nacute" => "\u{144}".as_bytes(), + b"nang" => "\u{2220},\u{20d2}".as_bytes(), + b"nap" => "\u{2249}".as_bytes(), + b"napE" => "\u{2a70},\u{338}".as_bytes(), + b"napid" => "\u{224b},\u{338}".as_bytes(), + b"napos" => "\u{149}".as_bytes(), + b"napprox" => "\u{2249}".as_bytes(), + b"natur" => "\u{266e}".as_bytes(), + b"natural" => "\u{266e}".as_bytes(), + b"naturals" => "\u{2115}".as_bytes(), + b"nbsp" => "\u{a0}".as_bytes(), + b"nbump" => "\u{224e},\u{338}".as_bytes(), + b"nbumpe" => "\u{224f},\u{338}".as_bytes(), + b"ncap" => "\u{2a43}".as_bytes(), + b"ncaron" => "\u{148}".as_bytes(), + b"ncedil" => "\u{146}".as_bytes(), + b"ncong" => "\u{2247}".as_bytes(), + b"ncongdot" => "\u{2a6d},\u{338}".as_bytes(), + b"ncup" => "\u{2a42}".as_bytes(), + b"ncy" => "\u{43d}".as_bytes(), + b"ndash" => "\u{2013}".as_bytes(), + b"ne" => "\u{2260}".as_bytes(), + b"neArr" => "\u{21d7}".as_bytes(), + b"nearhk" => "\u{2924}".as_bytes(), + b"nearr" => "\u{2197}".as_bytes(), + b"nearrow" => "\u{2197}".as_bytes(), + b"nedot" => "\u{2250},\u{338}".as_bytes(), + b"nequiv" => "\u{2262}".as_bytes(), + b"nesear" => "\u{2928}".as_bytes(), + b"nesim" => "\u{2242},\u{338}".as_bytes(), + b"nexist" => "\u{2204}".as_bytes(), + b"nexists" => "\u{2204}".as_bytes(), + b"nfr" => "\u{1d52b}".as_bytes(), + b"ngE" => "\u{2267},\u{338}".as_bytes(), + b"nge" => "\u{2271}".as_bytes(), + b"ngeq" => "\u{2271}".as_bytes(), + b"ngeqq" => "\u{2267},\u{338}".as_bytes(), + b"ngeqslant" => "\u{2a7e},\u{338}".as_bytes(), + b"nges" => "\u{2a7e},\u{338}".as_bytes(), + b"ngsim" => "\u{2275}".as_bytes(), + b"ngt" => "\u{226f}".as_bytes(), + b"ngtr" => "\u{226f}".as_bytes(), + b"nhArr" => "\u{21ce}".as_bytes(), + b"nharr" => "\u{21ae}".as_bytes(), + b"nhpar" => "\u{2af2}".as_bytes(), + b"ni" => "\u{220b}".as_bytes(), + b"nis" => "\u{22fc}".as_bytes(), + b"nisd" => "\u{22fa}".as_bytes(), + b"niv" => "\u{220b}".as_bytes(), + b"njcy" => "\u{45a}".as_bytes(), + b"nlArr" => "\u{21cd}".as_bytes(), + b"nlE" => "\u{2266},\u{338}".as_bytes(), + b"nlarr" => "\u{219a}".as_bytes(), + b"nldr" => "\u{2025}".as_bytes(), + b"nle" => "\u{2270}".as_bytes(), + b"nleftarrow" => "\u{219a}".as_bytes(), + b"nleftrightarrow" => "\u{21ae}".as_bytes(), + b"nleq" => "\u{2270}".as_bytes(), + b"nleqq" => "\u{2266},\u{338}".as_bytes(), + b"nleqslant" => "\u{2a7d},\u{338}".as_bytes(), + b"nles" => "\u{2a7d},\u{338}".as_bytes(), + b"nless" => "\u{226e}".as_bytes(), + b"nlsim" => "\u{2274}".as_bytes(), + b"nlt" => "\u{226e}".as_bytes(), + b"nltri" => "\u{22ea}".as_bytes(), + b"nltrie" => "\u{22ec}".as_bytes(), + b"nmid" => "\u{2224}".as_bytes(), + b"nopf" => "\u{1d55f}".as_bytes(), + b"not" => "\u{ac}".as_bytes(), + b"notin" => "\u{2209}".as_bytes(), + b"notinE" => "\u{22f9},\u{338}".as_bytes(), + b"notindot" => "\u{22f5},\u{338}".as_bytes(), + b"notinva" => "\u{2209}".as_bytes(), + b"notinvb" => "\u{22f7}".as_bytes(), + b"notinvc" => "\u{22f6}".as_bytes(), + b"notni" => "\u{220c}".as_bytes(), + b"notniva" => "\u{220c}".as_bytes(), + b"notnivb" => "\u{22fe}".as_bytes(), + b"notnivc" => "\u{22fd}".as_bytes(), + b"npar" => "\u{2226}".as_bytes(), + b"nparallel" => "\u{2226}".as_bytes(), + b"nparsl" => "\u{2afd},\u{20e5}".as_bytes(), + b"npart" => "\u{2202},\u{338}".as_bytes(), + b"npolint" => "\u{2a14}".as_bytes(), + b"npr" => "\u{2280}".as_bytes(), + b"nprcue" => "\u{22e0}".as_bytes(), + b"npre" => "\u{2aaf},\u{338}".as_bytes(), + b"nprec" => "\u{2280}".as_bytes(), + b"npreceq" => "\u{2aaf},\u{338}".as_bytes(), + b"nrArr" => "\u{21cf}".as_bytes(), + b"nrarr" => "\u{219b}".as_bytes(), + b"nrarrc" => "\u{2933},\u{338}".as_bytes(), + b"nrarrw" => "\u{219d},\u{338}".as_bytes(), + b"nrightarrow" => "\u{219b}".as_bytes(), + b"nrtri" => "\u{22eb}".as_bytes(), + b"nrtrie" => "\u{22ed}".as_bytes(), + b"nsc" => "\u{2281}".as_bytes(), + b"nsccue" => "\u{22e1}".as_bytes(), + b"nsce" => "\u{2ab0},\u{338}".as_bytes(), + b"nscr" => "\u{1d4c3}".as_bytes(), + b"nshortmid" => "\u{2224}".as_bytes(), + b"nshortparallel" => "\u{2226}".as_bytes(), + b"nsim" => "\u{2241}".as_bytes(), + b"nsime" => "\u{2244}".as_bytes(), + b"nsimeq" => "\u{2244}".as_bytes(), + b"nsmid" => "\u{2224}".as_bytes(), + b"nspar" => "\u{2226}".as_bytes(), + b"nsqsube" => "\u{22e2}".as_bytes(), + b"nsqsupe" => "\u{22e3}".as_bytes(), + b"nsub" => "\u{2284}".as_bytes(), + b"nsubE" => "\u{2ac5},\u{338}".as_bytes(), + b"nsube" => "\u{2288}".as_bytes(), + b"nsubset" => "\u{2282},\u{20d2}".as_bytes(), + b"nsubseteq" => "\u{2288}".as_bytes(), + b"nsubseteqq" => "\u{2ac5},\u{338}".as_bytes(), + b"nsucc" => "\u{2281}".as_bytes(), + b"nsucceq" => "\u{2ab0},\u{338}".as_bytes(), + b"nsup" => "\u{2285}".as_bytes(), + b"nsupE" => "\u{2ac6},\u{338}".as_bytes(), + b"nsupe" => "\u{2289}".as_bytes(), + b"nsupset" => "\u{2283},\u{20d2}".as_bytes(), + b"nsupseteq" => "\u{2289}".as_bytes(), + b"nsupseteqq" => "\u{2ac6},\u{338}".as_bytes(), + b"ntgl" => "\u{2279}".as_bytes(), + b"ntilde" => "\u{f1}".as_bytes(), + b"ntlg" => "\u{2278}".as_bytes(), + b"ntriangleleft" => "\u{22ea}".as_bytes(), + b"ntrianglelefteq" => "\u{22ec}".as_bytes(), + b"ntriangleright" => "\u{22eb}".as_bytes(), + b"ntrianglerighteq" => "\u{22ed}".as_bytes(), + b"nu" => "\u{3bd}".as_bytes(), + b"num" => "\u{23}".as_bytes(), + b"numero" => "\u{2116}".as_bytes(), + b"numsp" => "\u{2007}".as_bytes(), + b"nvDash" => "\u{22ad}".as_bytes(), + b"nvHarr" => "\u{2904}".as_bytes(), + b"nvap" => "\u{224d},\u{20d2}".as_bytes(), + b"nvdash" => "\u{22ac}".as_bytes(), + b"nvge" => "\u{2265},\u{20d2}".as_bytes(), + b"nvgt" => "\u{3e},\u{20d2}".as_bytes(), + b"nvinfin" => "\u{29de}".as_bytes(), + b"nvlArr" => "\u{2902}".as_bytes(), + b"nvle" => "\u{2264},\u{20d2}".as_bytes(), + b"nvlt" => "\u{3c},\u{20d2}".as_bytes(), + b"nvltrie" => "\u{22b4},\u{20d2}".as_bytes(), + b"nvrArr" => "\u{2903}".as_bytes(), + b"nvrtrie" => "\u{22b5},\u{20d2}".as_bytes(), + b"nvsim" => "\u{223c},\u{20d2}".as_bytes(), + b"nwArr" => "\u{21d6}".as_bytes(), + b"nwarhk" => "\u{2923}".as_bytes(), + b"nwarr" => "\u{2196}".as_bytes(), + b"nwarrow" => "\u{2196}".as_bytes(), + b"nwnear" => "\u{2927}".as_bytes(), + b"oS" => "\u{24c8}".as_bytes(), + b"oacute" => "\u{f3}".as_bytes(), + b"oast" => "\u{229b}".as_bytes(), + b"ocir" => "\u{229a}".as_bytes(), + b"ocirc" => "\u{f4}".as_bytes(), + b"ocy" => "\u{43e}".as_bytes(), + b"odash" => "\u{229d}".as_bytes(), + b"odblac" => "\u{151}".as_bytes(), + b"odiv" => "\u{2a38}".as_bytes(), + b"odot" => "\u{2299}".as_bytes(), + b"odsold" => "\u{29bc}".as_bytes(), + b"oelig" => "\u{153}".as_bytes(), + b"ofcir" => "\u{29bf}".as_bytes(), + b"ofr" => "\u{1d52c}".as_bytes(), + b"ogon" => "\u{2db}".as_bytes(), + b"ograve" => "\u{f2}".as_bytes(), + b"ogt" => "\u{29c1}".as_bytes(), + b"ohbar" => "\u{29b5}".as_bytes(), + b"ohm" => "\u{3a9}".as_bytes(), + b"oint" => "\u{222e}".as_bytes(), + b"olarr" => "\u{21ba}".as_bytes(), + b"olcir" => "\u{29be}".as_bytes(), + b"olcross" => "\u{29bb}".as_bytes(), + b"oline" => "\u{203e}".as_bytes(), + b"olt" => "\u{29c0}".as_bytes(), + b"omacr" => "\u{14d}".as_bytes(), + b"omega" => "\u{3c9}".as_bytes(), + b"omicron" => "\u{3bf}".as_bytes(), + b"omid" => "\u{29b6}".as_bytes(), + b"ominus" => "\u{2296}".as_bytes(), + b"oopf" => "\u{1d560}".as_bytes(), + b"opar" => "\u{29b7}".as_bytes(), + b"operp" => "\u{29b9}".as_bytes(), + b"oplus" => "\u{2295}".as_bytes(), + b"or" => "\u{2228}".as_bytes(), + b"orarr" => "\u{21bb}".as_bytes(), + b"ord" => "\u{2a5d}".as_bytes(), + b"order" => "\u{2134}".as_bytes(), + b"orderof" => "\u{2134}".as_bytes(), + b"ordf" => "\u{aa}".as_bytes(), + b"ordm" => "\u{ba}".as_bytes(), + b"origof" => "\u{22b6}".as_bytes(), + b"oror" => "\u{2a56}".as_bytes(), + b"orslope" => "\u{2a57}".as_bytes(), + b"orv" => "\u{2a5b}".as_bytes(), + b"oscr" => "\u{2134}".as_bytes(), + b"oslash" => "\u{f8}".as_bytes(), + b"osol" => "\u{2298}".as_bytes(), + b"otilde" => "\u{f5}".as_bytes(), + b"otimes" => "\u{2297}".as_bytes(), + b"otimesas" => "\u{2a36}".as_bytes(), + b"ouml" => "\u{f6}".as_bytes(), + b"ovbar" => "\u{233d}".as_bytes(), + b"par" => "\u{2225}".as_bytes(), + b"para" => "\u{b6}".as_bytes(), + b"parallel" => "\u{2225}".as_bytes(), + b"parsim" => "\u{2af3}".as_bytes(), + b"parsl" => "\u{2afd}".as_bytes(), + b"part" => "\u{2202}".as_bytes(), + b"pcy" => "\u{43f}".as_bytes(), + b"percnt" => "\u{25}".as_bytes(), + b"period" => "\u{2e}".as_bytes(), + b"permil" => "\u{2030}".as_bytes(), + b"perp" => "\u{22a5}".as_bytes(), + b"pertenk" => "\u{2031}".as_bytes(), + b"pfr" => "\u{1d52d}".as_bytes(), + b"phi" => "\u{3c6}".as_bytes(), + b"phiv" => "\u{3d5}".as_bytes(), + b"phmmat" => "\u{2133}".as_bytes(), + b"phone" => "\u{260e}".as_bytes(), + b"pi" => "\u{3c0}".as_bytes(), + b"pitchfork" => "\u{22d4}".as_bytes(), + b"piv" => "\u{3d6}".as_bytes(), + b"planck" => "\u{210f}".as_bytes(), + b"planckh" => "\u{210e}".as_bytes(), + b"plankv" => "\u{210f}".as_bytes(), + b"plus" => "\u{2b}".as_bytes(), + b"plusacir" => "\u{2a23}".as_bytes(), + b"plusb" => "\u{229e}".as_bytes(), + b"pluscir" => "\u{2a22}".as_bytes(), + b"plusdo" => "\u{2214}".as_bytes(), + b"plusdu" => "\u{2a25}".as_bytes(), + b"pluse" => "\u{2a72}".as_bytes(), + b"plusmn" => "\u{b1}".as_bytes(), + b"plussim" => "\u{2a26}".as_bytes(), + b"plustwo" => "\u{2a27}".as_bytes(), + b"pm" => "\u{b1}".as_bytes(), + b"pointint" => "\u{2a15}".as_bytes(), + b"popf" => "\u{1d561}".as_bytes(), + b"pound" => "\u{a3}".as_bytes(), + b"pr" => "\u{227a}".as_bytes(), + b"prE" => "\u{2ab3}".as_bytes(), + b"prap" => "\u{2ab7}".as_bytes(), + b"prcue" => "\u{227c}".as_bytes(), + b"pre" => "\u{2aaf}".as_bytes(), + b"prec" => "\u{227a}".as_bytes(), + b"precapprox" => "\u{2ab7}".as_bytes(), + b"preccurlyeq" => "\u{227c}".as_bytes(), + b"preceq" => "\u{2aaf}".as_bytes(), + b"precnapprox" => "\u{2ab9}".as_bytes(), + b"precneqq" => "\u{2ab5}".as_bytes(), + b"precnsim" => "\u{22e8}".as_bytes(), + b"precsim" => "\u{227e}".as_bytes(), + b"prime" => "\u{2032}".as_bytes(), + b"primes" => "\u{2119}".as_bytes(), + b"prnE" => "\u{2ab5}".as_bytes(), + b"prnap" => "\u{2ab9}".as_bytes(), + b"prnsim" => "\u{22e8}".as_bytes(), + b"prod" => "\u{220f}".as_bytes(), + b"profalar" => "\u{232e}".as_bytes(), + b"profline" => "\u{2312}".as_bytes(), + b"profsurf" => "\u{2313}".as_bytes(), + b"prop" => "\u{221d}".as_bytes(), + b"propto" => "\u{221d}".as_bytes(), + b"prsim" => "\u{227e}".as_bytes(), + b"prurel" => "\u{22b0}".as_bytes(), + b"pscr" => "\u{1d4c5}".as_bytes(), + b"psi" => "\u{3c8}".as_bytes(), + b"puncsp" => "\u{2008}".as_bytes(), + b"qfr" => "\u{1d52e}".as_bytes(), + b"qint" => "\u{2a0c}".as_bytes(), + b"qopf" => "\u{1d562}".as_bytes(), + b"qprime" => "\u{2057}".as_bytes(), + b"qscr" => "\u{1d4c6}".as_bytes(), + b"quaternions" => "\u{210d}".as_bytes(), + b"quatint" => "\u{2a16}".as_bytes(), + b"quest" => "\u{3f}".as_bytes(), + b"questeq" => "\u{225f}".as_bytes(), + b"quot" => "\u{22}".as_bytes(), + b"rAarr" => "\u{21db}".as_bytes(), + b"rArr" => "\u{21d2}".as_bytes(), + b"rAtail" => "\u{291c}".as_bytes(), + b"rBarr" => "\u{290f}".as_bytes(), + b"rHar" => "\u{2964}".as_bytes(), + b"race" => "\u{223d},\u{331}".as_bytes(), + b"racute" => "\u{155}".as_bytes(), + b"radic" => "\u{221a}".as_bytes(), + b"raemptyv" => "\u{29b3}".as_bytes(), + b"rang" => "\u{27e9}".as_bytes(), + b"rangd" => "\u{2992}".as_bytes(), + b"range" => "\u{29a5}".as_bytes(), + b"rangle" => "\u{27e9}".as_bytes(), + b"raquo" => "\u{bb}".as_bytes(), + b"rarr" => "\u{2192}".as_bytes(), + b"rarrap" => "\u{2975}".as_bytes(), + b"rarrb" => "\u{21e5}".as_bytes(), + b"rarrbfs" => "\u{2920}".as_bytes(), + b"rarrc" => "\u{2933}".as_bytes(), + b"rarrfs" => "\u{291e}".as_bytes(), + b"rarrhk" => "\u{21aa}".as_bytes(), + b"rarrlp" => "\u{21ac}".as_bytes(), + b"rarrpl" => "\u{2945}".as_bytes(), + b"rarrsim" => "\u{2974}".as_bytes(), + b"rarrtl" => "\u{21a3}".as_bytes(), + b"rarrw" => "\u{219d}".as_bytes(), + b"ratail" => "\u{291a}".as_bytes(), + b"ratio" => "\u{2236}".as_bytes(), + b"rationals" => "\u{211a}".as_bytes(), + b"rbarr" => "\u{290d}".as_bytes(), + b"rbbrk" => "\u{2773}".as_bytes(), + b"rbrace" => "\u{7d}".as_bytes(), + b"rbrack" => "\u{5d}".as_bytes(), + b"rbrke" => "\u{298c}".as_bytes(), + b"rbrksld" => "\u{298e}".as_bytes(), + b"rbrkslu" => "\u{2990}".as_bytes(), + b"rcaron" => "\u{159}".as_bytes(), + b"rcedil" => "\u{157}".as_bytes(), + b"rceil" => "\u{2309}".as_bytes(), + b"rcub" => "\u{7d}".as_bytes(), + b"rcy" => "\u{440}".as_bytes(), + b"rdca" => "\u{2937}".as_bytes(), + b"rdldhar" => "\u{2969}".as_bytes(), + b"rdquo" => "\u{201d}".as_bytes(), + b"rdquor" => "\u{201d}".as_bytes(), + b"rdsh" => "\u{21b3}".as_bytes(), + b"real" => "\u{211c}".as_bytes(), + b"realine" => "\u{211b}".as_bytes(), + b"realpart" => "\u{211c}".as_bytes(), + b"reals" => "\u{211d}".as_bytes(), + b"rect" => "\u{25ad}".as_bytes(), + b"reg" => "\u{ae}".as_bytes(), + b"rfisht" => "\u{297d}".as_bytes(), + b"rfloor" => "\u{230b}".as_bytes(), + b"rfr" => "\u{1d52f}".as_bytes(), + b"rhard" => "\u{21c1}".as_bytes(), + b"rharu" => "\u{21c0}".as_bytes(), + b"rharul" => "\u{296c}".as_bytes(), + b"rho" => "\u{3c1}".as_bytes(), + b"rhov" => "\u{3f1}".as_bytes(), + b"rightarrow" => "\u{2192}".as_bytes(), + b"rightarrowtail" => "\u{21a3}".as_bytes(), + b"rightharpoondown" => "\u{21c1}".as_bytes(), + b"rightharpoonup" => "\u{21c0}".as_bytes(), + b"rightleftarrows" => "\u{21c4}".as_bytes(), + b"rightleftharpoons" => "\u{21cc}".as_bytes(), + b"rightrightarrows" => "\u{21c9}".as_bytes(), + b"rightsquigarrow" => "\u{219d}".as_bytes(), + b"rightthreetimes" => "\u{22cc}".as_bytes(), + b"ring" => "\u{2da}".as_bytes(), + b"risingdotseq" => "\u{2253}".as_bytes(), + b"rlarr" => "\u{21c4}".as_bytes(), + b"rlhar" => "\u{21cc}".as_bytes(), + b"rlm" => "\u{200f}".as_bytes(), + b"rmoust" => "\u{23b1}".as_bytes(), + b"rmoustache" => "\u{23b1}".as_bytes(), + b"rnmid" => "\u{2aee}".as_bytes(), + b"roang" => "\u{27ed}".as_bytes(), + b"roarr" => "\u{21fe}".as_bytes(), + b"robrk" => "\u{27e7}".as_bytes(), + b"ropar" => "\u{2986}".as_bytes(), + b"ropf" => "\u{1d563}".as_bytes(), + b"roplus" => "\u{2a2e}".as_bytes(), + b"rotimes" => "\u{2a35}".as_bytes(), + b"rpar" => "\u{29}".as_bytes(), + b"rpargt" => "\u{2994}".as_bytes(), + b"rppolint" => "\u{2a12}".as_bytes(), + b"rrarr" => "\u{21c9}".as_bytes(), + b"rsaquo" => "\u{203a}".as_bytes(), + b"rscr" => "\u{1d4c7}".as_bytes(), + b"rsh" => "\u{21b1}".as_bytes(), + b"rsqb" => "\u{5d}".as_bytes(), + b"rsquo" => "\u{2019}".as_bytes(), + b"rsquor" => "\u{2019}".as_bytes(), + b"rthree" => "\u{22cc}".as_bytes(), + b"rtimes" => "\u{22ca}".as_bytes(), + b"rtri" => "\u{25b9}".as_bytes(), + b"rtrie" => "\u{22b5}".as_bytes(), + b"rtrif" => "\u{25b8}".as_bytes(), + b"rtriltri" => "\u{29ce}".as_bytes(), + b"ruluhar" => "\u{2968}".as_bytes(), + b"rx" => "\u{211e}".as_bytes(), + b"sacute" => "\u{15b}".as_bytes(), + b"sbquo" => "\u{201a}".as_bytes(), + b"sc" => "\u{227b}".as_bytes(), + b"scE" => "\u{2ab4}".as_bytes(), + b"scap" => "\u{2ab8}".as_bytes(), + b"scaron" => "\u{161}".as_bytes(), + b"sccue" => "\u{227d}".as_bytes(), + b"sce" => "\u{2ab0}".as_bytes(), + b"scedil" => "\u{15f}".as_bytes(), + b"scirc" => "\u{15d}".as_bytes(), + b"scnE" => "\u{2ab6}".as_bytes(), + b"scnap" => "\u{2aba}".as_bytes(), + b"scnsim" => "\u{22e9}".as_bytes(), + b"scpolint" => "\u{2a13}".as_bytes(), + b"scsim" => "\u{227f}".as_bytes(), + b"scy" => "\u{441}".as_bytes(), + b"sdot" => "\u{22c5}".as_bytes(), + b"sdotb" => "\u{22a1}".as_bytes(), + b"sdote" => "\u{2a66}".as_bytes(), + b"seArr" => "\u{21d8}".as_bytes(), + b"searhk" => "\u{2925}".as_bytes(), + b"searr" => "\u{2198}".as_bytes(), + b"searrow" => "\u{2198}".as_bytes(), + b"sect" => "\u{a7}".as_bytes(), + b"semi" => "\u{3b}".as_bytes(), + b"seswar" => "\u{2929}".as_bytes(), + b"setminus" => "\u{2216}".as_bytes(), + b"setmn" => "\u{2216}".as_bytes(), + b"sext" => "\u{2736}".as_bytes(), + b"sfr" => "\u{1d530}".as_bytes(), + b"sfrown" => "\u{2322}".as_bytes(), + b"sharp" => "\u{266f}".as_bytes(), + b"shchcy" => "\u{449}".as_bytes(), + b"shcy" => "\u{448}".as_bytes(), + b"shortmid" => "\u{2223}".as_bytes(), + b"shortparallel" => "\u{2225}".as_bytes(), + b"shy" => "\u{ad}".as_bytes(), + b"sigma" => "\u{3c3}".as_bytes(), + b"sigmaf" => "\u{3c2}".as_bytes(), + b"sigmav" => "\u{3c2}".as_bytes(), + b"sim" => "\u{223c}".as_bytes(), + b"simdot" => "\u{2a6a}".as_bytes(), + b"sime" => "\u{2243}".as_bytes(), + b"simeq" => "\u{2243}".as_bytes(), + b"simg" => "\u{2a9e}".as_bytes(), + b"simgE" => "\u{2aa0}".as_bytes(), + b"siml" => "\u{2a9d}".as_bytes(), + b"simlE" => "\u{2a9f}".as_bytes(), + b"simne" => "\u{2246}".as_bytes(), + b"simplus" => "\u{2a24}".as_bytes(), + b"simrarr" => "\u{2972}".as_bytes(), + b"slarr" => "\u{2190}".as_bytes(), + b"smallsetminus" => "\u{2216}".as_bytes(), + b"smashp" => "\u{2a33}".as_bytes(), + b"smeparsl" => "\u{29e4}".as_bytes(), + b"smid" => "\u{2223}".as_bytes(), + b"smile" => "\u{2323}".as_bytes(), + b"smt" => "\u{2aaa}".as_bytes(), + b"smte" => "\u{2aac}".as_bytes(), + b"smtes" => "\u{2aac},\u{fe00}".as_bytes(), + b"softcy" => "\u{44c}".as_bytes(), + b"sol" => "\u{2f}".as_bytes(), + b"solb" => "\u{29c4}".as_bytes(), + b"solbar" => "\u{233f}".as_bytes(), + b"sopf" => "\u{1d564}".as_bytes(), + b"spades" => "\u{2660}".as_bytes(), + b"spadesuit" => "\u{2660}".as_bytes(), + b"spar" => "\u{2225}".as_bytes(), + b"sqcap" => "\u{2293}".as_bytes(), + b"sqcaps" => "\u{2293},\u{fe00}".as_bytes(), + b"sqcup" => "\u{2294}".as_bytes(), + b"sqcups" => "\u{2294},\u{fe00}".as_bytes(), + b"sqsub" => "\u{228f}".as_bytes(), + b"sqsube" => "\u{2291}".as_bytes(), + b"sqsubset" => "\u{228f}".as_bytes(), + b"sqsubseteq" => "\u{2291}".as_bytes(), + b"sqsup" => "\u{2290}".as_bytes(), + b"sqsupe" => "\u{2292}".as_bytes(), + b"sqsupset" => "\u{2290}".as_bytes(), + b"sqsupseteq" => "\u{2292}".as_bytes(), + b"squ" => "\u{25a1}".as_bytes(), + b"square" => "\u{25a1}".as_bytes(), + b"squarf" => "\u{25aa}".as_bytes(), + b"squf" => "\u{25aa}".as_bytes(), + b"srarr" => "\u{2192}".as_bytes(), + b"sscr" => "\u{1d4c8}".as_bytes(), + b"ssetmn" => "\u{2216}".as_bytes(), + b"ssmile" => "\u{2323}".as_bytes(), + b"sstarf" => "\u{22c6}".as_bytes(), + b"star" => "\u{2606}".as_bytes(), + b"starf" => "\u{2605}".as_bytes(), + b"straightepsilon" => "\u{3f5}".as_bytes(), + b"straightphi" => "\u{3d5}".as_bytes(), + b"strns" => "\u{af}".as_bytes(), + b"sub" => "\u{2282}".as_bytes(), + b"subE" => "\u{2ac5}".as_bytes(), + b"subdot" => "\u{2abd}".as_bytes(), + b"sube" => "\u{2286}".as_bytes(), + b"subedot" => "\u{2ac3}".as_bytes(), + b"submult" => "\u{2ac1}".as_bytes(), + b"subnE" => "\u{2acb}".as_bytes(), + b"subne" => "\u{228a}".as_bytes(), + b"subplus" => "\u{2abf}".as_bytes(), + b"subrarr" => "\u{2979}".as_bytes(), + b"subset" => "\u{2282}".as_bytes(), + b"subseteq" => "\u{2286}".as_bytes(), + b"subseteqq" => "\u{2ac5}".as_bytes(), + b"subsetneq" => "\u{228a}".as_bytes(), + b"subsetneqq" => "\u{2acb}".as_bytes(), + b"subsim" => "\u{2ac7}".as_bytes(), + b"subsub" => "\u{2ad5}".as_bytes(), + b"subsup" => "\u{2ad3}".as_bytes(), + b"succ" => "\u{227b}".as_bytes(), + b"succapprox" => "\u{2ab8}".as_bytes(), + b"succcurlyeq" => "\u{227d}".as_bytes(), + b"succeq" => "\u{2ab0}".as_bytes(), + b"succnapprox" => "\u{2aba}".as_bytes(), + b"succneqq" => "\u{2ab6}".as_bytes(), + b"succnsim" => "\u{22e9}".as_bytes(), + b"succsim" => "\u{227f}".as_bytes(), + b"sum" => "\u{2211}".as_bytes(), + b"sung" => "\u{266a}".as_bytes(), + b"sup1" => "\u{b9}".as_bytes(), + b"sup2" => "\u{b2}".as_bytes(), + b"sup3" => "\u{b3}".as_bytes(), + b"sup" => "\u{2283}".as_bytes(), + b"supE" => "\u{2ac6}".as_bytes(), + b"supdot" => "\u{2abe}".as_bytes(), + b"supdsub" => "\u{2ad8}".as_bytes(), + b"supe" => "\u{2287}".as_bytes(), + b"supedot" => "\u{2ac4}".as_bytes(), + b"suphsol" => "\u{27c9}".as_bytes(), + b"suphsub" => "\u{2ad7}".as_bytes(), + b"suplarr" => "\u{297b}".as_bytes(), + b"supmult" => "\u{2ac2}".as_bytes(), + b"supnE" => "\u{2acc}".as_bytes(), + b"supne" => "\u{228b}".as_bytes(), + b"supplus" => "\u{2ac0}".as_bytes(), + b"supset" => "\u{2283}".as_bytes(), + b"supseteq" => "\u{2287}".as_bytes(), + b"supseteqq" => "\u{2ac6}".as_bytes(), + b"supsetneq" => "\u{228b}".as_bytes(), + b"supsetneqq" => "\u{2acc}".as_bytes(), + b"supsim" => "\u{2ac8}".as_bytes(), + b"supsub" => "\u{2ad4}".as_bytes(), + b"supsup" => "\u{2ad6}".as_bytes(), + b"swArr" => "\u{21d9}".as_bytes(), + b"swarhk" => "\u{2926}".as_bytes(), + b"swarr" => "\u{2199}".as_bytes(), + b"swarrow" => "\u{2199}".as_bytes(), + b"swnwar" => "\u{292a}".as_bytes(), + b"szlig" => "\u{df}".as_bytes(), + b"target" => "\u{2316}".as_bytes(), + b"tau" => "\u{3c4}".as_bytes(), + b"tbrk" => "\u{23b4}".as_bytes(), + b"tcaron" => "\u{165}".as_bytes(), + b"tcedil" => "\u{163}".as_bytes(), + b"tcy" => "\u{442}".as_bytes(), + b"tdot" => "\u{20db}".as_bytes(), + b"telrec" => "\u{2315}".as_bytes(), + b"tfr" => "\u{1d531}".as_bytes(), + b"there4" => "\u{2234}".as_bytes(), + b"therefore" => "\u{2234}".as_bytes(), + b"theta" => "\u{3b8}".as_bytes(), + b"thetasym" => "\u{3d1}".as_bytes(), + b"thetav" => "\u{3d1}".as_bytes(), + b"thickapprox" => "\u{2248}".as_bytes(), + b"thicksim" => "\u{223c}".as_bytes(), + b"thinsp" => "\u{2009}".as_bytes(), + b"thkap" => "\u{2248}".as_bytes(), + b"thksim" => "\u{223c}".as_bytes(), + b"thorn" => "\u{fe}".as_bytes(), + b"tilde" => "\u{2dc}".as_bytes(), + b"times" => "\u{d7}".as_bytes(), + b"timesb" => "\u{22a0}".as_bytes(), + b"timesbar" => "\u{2a31}".as_bytes(), + b"timesd" => "\u{2a30}".as_bytes(), + b"tint" => "\u{222d}".as_bytes(), + b"toea" => "\u{2928}".as_bytes(), + b"top" => "\u{22a4}".as_bytes(), + b"topbot" => "\u{2336}".as_bytes(), + b"topcir" => "\u{2af1}".as_bytes(), + b"topf" => "\u{1d565}".as_bytes(), + b"topfork" => "\u{2ada}".as_bytes(), + b"tosa" => "\u{2929}".as_bytes(), + b"tprime" => "\u{2034}".as_bytes(), + b"trade" => "\u{2122}".as_bytes(), + b"triangle" => "\u{25b5}".as_bytes(), + b"triangledown" => "\u{25bf}".as_bytes(), + b"triangleleft" => "\u{25c3}".as_bytes(), + b"trianglelefteq" => "\u{22b4}".as_bytes(), + b"triangleq" => "\u{225c}".as_bytes(), + b"triangleright" => "\u{25b9}".as_bytes(), + b"trianglerighteq" => "\u{22b5}".as_bytes(), + b"tridot" => "\u{25ec}".as_bytes(), + b"trie" => "\u{225c}".as_bytes(), + b"triminus" => "\u{2a3a}".as_bytes(), + b"triplus" => "\u{2a39}".as_bytes(), + b"trisb" => "\u{29cd}".as_bytes(), + b"tritime" => "\u{2a3b}".as_bytes(), + b"trpezium" => "\u{23e2}".as_bytes(), + b"tscr" => "\u{1d4c9}".as_bytes(), + b"tscy" => "\u{446}".as_bytes(), + b"tshcy" => "\u{45b}".as_bytes(), + b"tstrok" => "\u{167}".as_bytes(), + b"twixt" => "\u{226c}".as_bytes(), + b"twoheadleftarrow" => "\u{219e}".as_bytes(), + b"twoheadrightarrow" => "\u{21a0}".as_bytes(), + b"uArr" => "\u{21d1}".as_bytes(), + b"uHar" => "\u{2963}".as_bytes(), + b"uacute" => "\u{fa}".as_bytes(), + b"uarr" => "\u{2191}".as_bytes(), + b"ubrcy" => "\u{45e}".as_bytes(), + b"ubreve" => "\u{16d}".as_bytes(), + b"ucirc" => "\u{fb}".as_bytes(), + b"ucy" => "\u{443}".as_bytes(), + b"udarr" => "\u{21c5}".as_bytes(), + b"udblac" => "\u{171}".as_bytes(), + b"udhar" => "\u{296e}".as_bytes(), + b"ufisht" => "\u{297e}".as_bytes(), + b"ufr" => "\u{1d532}".as_bytes(), + b"ugrave" => "\u{f9}".as_bytes(), + b"uharl" => "\u{21bf}".as_bytes(), + b"uharr" => "\u{21be}".as_bytes(), + b"uhblk" => "\u{2580}".as_bytes(), + b"ulcorn" => "\u{231c}".as_bytes(), + b"ulcorner" => "\u{231c}".as_bytes(), + b"ulcrop" => "\u{230f}".as_bytes(), + b"ultri" => "\u{25f8}".as_bytes(), + b"umacr" => "\u{16b}".as_bytes(), + b"uml" => "\u{a8}".as_bytes(), + b"uogon" => "\u{173}".as_bytes(), + b"uopf" => "\u{1d566}".as_bytes(), + b"uparrow" => "\u{2191}".as_bytes(), + b"updownarrow" => "\u{2195}".as_bytes(), + b"upharpoonleft" => "\u{21bf}".as_bytes(), + b"upharpoonright" => "\u{21be}".as_bytes(), + b"uplus" => "\u{228e}".as_bytes(), + b"upsi" => "\u{3c5}".as_bytes(), + b"upsih" => "\u{3d2}".as_bytes(), + b"upsilon" => "\u{3c5}".as_bytes(), + b"upuparrows" => "\u{21c8}".as_bytes(), + b"urcorn" => "\u{231d}".as_bytes(), + b"urcorner" => "\u{231d}".as_bytes(), + b"urcrop" => "\u{230e}".as_bytes(), + b"uring" => "\u{16f}".as_bytes(), + b"urtri" => "\u{25f9}".as_bytes(), + b"uscr" => "\u{1d4ca}".as_bytes(), + b"utdot" => "\u{22f0}".as_bytes(), + b"utilde" => "\u{169}".as_bytes(), + b"utri" => "\u{25b5}".as_bytes(), + b"utrif" => "\u{25b4}".as_bytes(), + b"uuarr" => "\u{21c8}".as_bytes(), + b"uuml" => "\u{fc}".as_bytes(), + b"uwangle" => "\u{29a7}".as_bytes(), + b"vArr" => "\u{21d5}".as_bytes(), + b"vBar" => "\u{2ae8}".as_bytes(), + b"vBarv" => "\u{2ae9}".as_bytes(), + b"vDash" => "\u{22a8}".as_bytes(), + b"vangrt" => "\u{299c}".as_bytes(), + b"varepsilon" => "\u{3f5}".as_bytes(), + b"varkappa" => "\u{3f0}".as_bytes(), + b"varnothing" => "\u{2205}".as_bytes(), + b"varphi" => "\u{3d5}".as_bytes(), + b"varpi" => "\u{3d6}".as_bytes(), + b"varpropto" => "\u{221d}".as_bytes(), + b"varr" => "\u{2195}".as_bytes(), + b"varrho" => "\u{3f1}".as_bytes(), + b"varsigma" => "\u{3c2}".as_bytes(), + b"varsubsetneq" => "\u{228a},\u{fe00}".as_bytes(), + b"varsubsetneqq" => "\u{2acb},\u{fe00}".as_bytes(), + b"varsupsetneq" => "\u{228b},\u{fe00}".as_bytes(), + b"varsupsetneqq" => "\u{2acc},\u{fe00}".as_bytes(), + b"vartheta" => "\u{3d1}".as_bytes(), + b"vartriangleleft" => "\u{22b2}".as_bytes(), + b"vartriangleright" => "\u{22b3}".as_bytes(), + b"vcy" => "\u{432}".as_bytes(), + b"vdash" => "\u{22a2}".as_bytes(), + b"vee" => "\u{2228}".as_bytes(), + b"veebar" => "\u{22bb}".as_bytes(), + b"veeeq" => "\u{225a}".as_bytes(), + b"vellip" => "\u{22ee}".as_bytes(), + b"verbar" => "\u{7c}".as_bytes(), + b"vert" => "\u{7c}".as_bytes(), + b"vfr" => "\u{1d533}".as_bytes(), + b"vltri" => "\u{22b2}".as_bytes(), + b"vnsub" => "\u{2282},\u{20d2}".as_bytes(), + b"vnsup" => "\u{2283},\u{20d2}".as_bytes(), + b"vopf" => "\u{1d567}".as_bytes(), + b"vprop" => "\u{221d}".as_bytes(), + b"vrtri" => "\u{22b3}".as_bytes(), + b"vscr" => "\u{1d4cb}".as_bytes(), + b"vsubnE" => "\u{2acb},\u{fe00}".as_bytes(), + b"vsubne" => "\u{228a},\u{fe00}".as_bytes(), + b"vsupnE" => "\u{2acc},\u{fe00}".as_bytes(), + b"vsupne" => "\u{228b},\u{fe00}".as_bytes(), + b"vzigzag" => "\u{299a}".as_bytes(), + b"wcirc" => "\u{175}".as_bytes(), + b"wedbar" => "\u{2a5f}".as_bytes(), + b"wedge" => "\u{2227}".as_bytes(), + b"wedgeq" => "\u{2259}".as_bytes(), + b"weierp" => "\u{2118}".as_bytes(), + b"wfr" => "\u{1d534}".as_bytes(), + b"wopf" => "\u{1d568}".as_bytes(), + b"wp" => "\u{2118}".as_bytes(), + b"wr" => "\u{2240}".as_bytes(), + b"wreath" => "\u{2240}".as_bytes(), + b"wscr" => "\u{1d4cc}".as_bytes(), + b"xcap" => "\u{22c2}".as_bytes(), + b"xcirc" => "\u{25ef}".as_bytes(), + b"xcup" => "\u{22c3}".as_bytes(), + b"xdtri" => "\u{25bd}".as_bytes(), + b"xfr" => "\u{1d535}".as_bytes(), + b"xhArr" => "\u{27fa}".as_bytes(), + b"xharr" => "\u{27f7}".as_bytes(), + b"xi" => "\u{3be}".as_bytes(), + b"xlArr" => "\u{27f8}".as_bytes(), + b"xlarr" => "\u{27f5}".as_bytes(), + b"xmap" => "\u{27fc}".as_bytes(), + b"xnis" => "\u{22fb}".as_bytes(), + b"xodot" => "\u{2a00}".as_bytes(), + b"xopf" => "\u{1d569}".as_bytes(), + b"xoplus" => "\u{2a01}".as_bytes(), + b"xotime" => "\u{2a02}".as_bytes(), + b"xrArr" => "\u{27f9}".as_bytes(), + b"xrarr" => "\u{27f6}".as_bytes(), + b"xscr" => "\u{1d4cd}".as_bytes(), + b"xsqcup" => "\u{2a06}".as_bytes(), + b"xuplus" => "\u{2a04}".as_bytes(), + b"xutri" => "\u{25b3}".as_bytes(), + b"xvee" => "\u{22c1}".as_bytes(), + b"xwedge" => "\u{22c0}".as_bytes(), + b"yacute" => "\u{fd}".as_bytes(), + b"yacy" => "\u{44f}".as_bytes(), + b"ycirc" => "\u{177}".as_bytes(), + b"ycy" => "\u{44b}".as_bytes(), + b"yen" => "\u{a5}".as_bytes(), + b"yfr" => "\u{1d536}".as_bytes(), + b"yicy" => "\u{457}".as_bytes(), + b"yopf" => "\u{1d56a}".as_bytes(), + b"yscr" => "\u{1d4ce}".as_bytes(), + b"yucy" => "\u{44e}".as_bytes(), + b"yuml" => "\u{ff}".as_bytes(), + b"zacute" => "\u{17a}".as_bytes(), + b"zcaron" => "\u{17e}".as_bytes(), + b"zcy" => "\u{437}".as_bytes(), + b"zdot" => "\u{17c}".as_bytes(), + b"zeetrf" => "\u{2128}".as_bytes(), + b"zeta" => "\u{3b6}".as_bytes(), + b"zfr" => "\u{1d537}".as_bytes(), + b"zhcy" => "\u{436}".as_bytes(), + b"zigrarr" => "\u{21dd}".as_bytes(), + b"zopf" => "\u{1d56b}".as_bytes(), + b"zscr" => "\u{1d4cf}".as_bytes(), + b"zwj" => "\u{200d}".as_bytes(), + b"zwnj" => "\u{200c}".as_bytes(), }; -pub fn get_entity_reference_code_point(name: &[u8]) -> Option { - ENTITY_REFERENCES.get(name).map(|r| *r) -} - pub fn is_valid_entity_reference_name_char(c: u8) -> bool { c >= b'0' && c <= b'9' || c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z' } diff --git a/src/unit/attr/mod.rs b/src/unit/attr/mod.rs index b5d6859..172e9fb 100644 --- a/src/unit/attr/mod.rs +++ b/src/unit/attr/mod.rs @@ -3,7 +3,7 @@ use phf::{phf_set, Set}; use crate::err::ProcessingResult; use crate::proc::Processor; use crate::spec::codepoint::is_control; -use crate::unit::attr::value::process_attr_value; +use crate::unit::attr::value::{DelimiterType, process_attr_value, ProcessedAttrValue}; mod value; @@ -41,12 +41,13 @@ pub fn process_attr(proc: &mut Processor) -> ProcessingResult { Ok(AttrType::NoValue) } else { match process_attr_value(proc, should_collapse_and_trim_value_ws)? { - (_, 0) => { + ProcessedAttrValue { empty: true, .. } => { // Value is empty, which is equivalent to no value, so discard `=` and any quotes. proc.erase_written(after_name); Ok(AttrType::NoValue) } - (attr_type, _) => Ok(attr_type), + ProcessedAttrValue { delimiter: DelimiterType::Unquoted, .. } => Ok(AttrType::Unquoted), + ProcessedAttrValue { delimiter: DelimiterType::Double, .. } | ProcessedAttrValue { delimiter: DelimiterType::Single, .. } => Ok(AttrType::Quoted), } } } diff --git a/src/unit/attr/value.rs b/src/unit/attr/value.rs index 3096900..ac33619 100644 --- a/src/unit/attr/value.rs +++ b/src/unit/attr/value.rs @@ -3,8 +3,7 @@ use phf::{Map, phf_map}; use crate::err::ProcessingResult; use crate::proc::Processor; use crate::spec::codepoint::is_whitespace; -use crate::unit::attr::AttrType; -use crate::unit::entity::{parse_entity, process_entity}; +use crate::unit::entity::{EntityType, maybe_process_entity, ParsedEntity}; pub fn is_double_quote(c: u8) -> bool { c == b'"' @@ -40,8 +39,7 @@ static ENCODED: Map = phf_map! { #[derive(Clone, Copy, Eq, PartialEq)] enum CharType { End, - MalformedEntity, - DecodedNonAscii, + NonAsciiEntity(ParsedEntity), // Normal needs associated character to be able to write it. Normal(u8), // Whitespace needs associated character to determine cost of encoding it. @@ -63,7 +61,7 @@ impl CharType { } #[derive(Clone, Copy, Eq, PartialEq)] -enum DelimiterType { +pub enum DelimiterType { Double, Single, Unquoted, @@ -81,6 +79,7 @@ struct Metrics { first_char_type: Option, last_char_type: Option, // How many times `collect_char_type` is called. Used to determine first and last characters when writing. + // NOTE: This may not be the same as amount of final characters, as malformed entities are usually multiple chars. collected_count: usize, } @@ -162,7 +161,7 @@ impl Metrics { } macro_rules! consume_attr_value_chars { - ($proc:ident, $should_collapse_and_trim_ws:ident, $delimiter_pred:ident, $entity_processor:ident, $out_char_type:ident, $on_char:block) => { + ($proc:ident, $should_collapse_and_trim_ws:ident, $delimiter_pred:ident, $out_char_type:ident, $on_char:block) => { // Set to true when one or more immediately previous characters were whitespace and deferred for processing after the contiguous whitespace. // NOTE: Only used if `should_collapse_and_trim_ws`. let mut currently_in_whitespace = false; @@ -175,9 +174,11 @@ macro_rules! consume_attr_value_chars { // DO NOT BREAK HERE. More processing is done afterwards upon reaching end. CharType::End } else if chain!($proc.match_char(b'&').matched()) { - match $entity_processor($proc)? { - Some(e) => if e <= 0x7f { CharType::from_char(e as u8) } else { CharType::DecodedNonAscii }, - None => CharType::MalformedEntity, + let entity = maybe_process_entity($proc)?; + if let EntityType::Ascii(c) = entity.entity() { + CharType::from_char(c) + } else { + CharType::NonAsciiEntity(entity) } } else { CharType::from_char($proc.skip()?) @@ -213,7 +214,12 @@ macro_rules! consume_attr_value_chars { }; } -pub fn process_attr_value(proc: &mut Processor, should_collapse_and_trim_ws: bool) -> ProcessingResult<(AttrType, usize)> { +pub struct ProcessedAttrValue { + pub delimiter: DelimiterType, + pub empty: bool, +} + +pub fn process_attr_value(proc: &mut Processor, should_collapse_and_trim_ws: bool) -> ProcessingResult { let src_delimiter = chain!(proc.match_pred(is_attr_quote).discard().maybe_char()); let src_delimiter_pred = match src_delimiter { Some(b'"') => is_double_quote, @@ -234,7 +240,7 @@ pub fn process_attr_value(proc: &mut Processor, should_collapse_and_trim_ws: boo collected_count: 0, }; let mut char_type; - consume_attr_value_chars!(proc, should_collapse_and_trim_ws, src_delimiter_pred, parse_entity, char_type, { + consume_attr_value_chars!(proc, should_collapse_and_trim_ws, src_delimiter_pred, char_type, { metrics.collect_char_type(char_type); }); @@ -253,14 +259,12 @@ pub fn process_attr_value(proc: &mut Processor, should_collapse_and_trim_ws: boo let mut char_type; // Used to determine first and last characters. let mut char_no = 0usize; - consume_attr_value_chars!(proc, should_collapse_and_trim_ws, src_delimiter_pred, process_entity, char_type, { + consume_attr_value_chars!(proc, should_collapse_and_trim_ws, src_delimiter_pred, char_type, { match char_type { // This should never happen. CharType::End => unreachable!(), - // Ignore these; already written by `process_entity`. - CharType::MalformedEntity => {} - CharType::DecodedNonAscii => {} + CharType::NonAsciiEntity(e) => e.keep(proc), CharType::Normal(c) => proc.write(c), // If unquoted, encode any whitespace anywhere. @@ -298,10 +302,8 @@ pub fn process_attr_value(proc: &mut Processor, should_collapse_and_trim_ws: boo proc.write(c); } - let attr_type = if optimal_delimiter != DelimiterType::Unquoted { - AttrType::Quoted - } else { - AttrType::Unquoted - }; - Ok((attr_type, metrics.collected_count)) + Ok(ProcessedAttrValue { + delimiter: optimal_delimiter, + empty: metrics.collected_count == 0, + }) } diff --git a/src/unit/content.rs b/src/unit/content.rs index 17b4106..1c5bcdd 100644 --- a/src/unit/content.rs +++ b/src/unit/content.rs @@ -6,7 +6,7 @@ use crate::spec::tag::formatting::FORMATTING_TAGS; use crate::spec::tag::wss::WSS_TAGS; use crate::unit::bang::process_bang; use crate::unit::comment::process_comment; -use crate::unit::entity::{process_entity, maybe_process_entity}; +use crate::unit::entity::{EntityType, maybe_process_entity}; use crate::unit::tag::process_tag; #[derive(Copy, Clone, PartialEq, Eq, Debug)] @@ -92,26 +92,23 @@ pub fn process_content(proc: &mut Processor, parent: Option) -> loop { let next_content_type = match ContentType::peek(proc) { ContentType::Entity => { - let e = maybe_process_entity(proc)?; // Entity could decode to whitespace. - if e.code_point() - .filter(|c| *c < 0x7f) - .filter(|c| is_whitespace(*c as u8)) - .is_some() { + let entity = maybe_process_entity(proc)?; + if let EntityType::Ascii(c) = entity.entity() { // Skip whitespace char, and mark as whitespace. ContentType::Whitespace } else { // Not whitespace, so decode and write. - e.keep(proc); + entity.keep(proc); ContentType::Entity } - }, + } ContentType::Whitespace => { // This is here to prevent skipping twice from decoded whitespace entity. // Whitespace is always ignored and then processed afterwards, even if not minifying. proc.skip().expect("skipping known character"); ContentType::Whitespace - }, + } other_type => other_type, }; diff --git a/src/unit/entity.rs b/src/unit/entity.rs index 916ed62..4af0238 100644 --- a/src/unit/entity.rs +++ b/src/unit/entity.rs @@ -7,7 +7,9 @@ // Based on the data sourced from https://www.w3.org/TR/html5/entities.json as // of 2019-04-20T04:00:00.000Z: // - Entity names can have [A-Za-z0-9] characters, and are case sensitive. -// - Some character entity references do not need to end with a semicolon. +// - Some character entity references do not end with a semicolon, but +// spec says all must (https://html.spec.whatwg.org/multipage/syntax.html#character-references). +// - All of these entities also have a corresponding entity with semicolon. // - The longest name is "CounterClockwiseContourIntegral", with length 31 // (excluding leading ampersand and trailing semicolon). // - All entity names are at least 2 characters long. @@ -30,65 +32,87 @@ // /&(#(x[0-9a-f]{1-6}|[0-9]{1,7}))|[a-z0-9]{2,31};/i // // - If the sequence of characters following an ampersand do not combine to form -// a well formed entity, the ampersand is considered a bare ampersand. -// - A bare ampersand is an ampersand that is interpreted literally and not as -// the start of an entity. -// - hyperbuild looks ahead without consuming to check if the following -// characters would form a well formed entity. If they don't, only the longest -// subsequence that could form a well formed entity is consumed. -// - An entity is considered invalid if it is well formed but represents a -// non-existent Unicode code point or reference name. +// a well formed entity, they are treated literally. use crate::err::ProcessingResult; use crate::proc::{Checkpoint, Processor}; use crate::spec::codepoint::{is_digit, is_hex_digit, is_lower_hex_digit, is_upper_hex_digit}; use crate::spec::entity::{ENTITY_REFERENCES, is_valid_entity_reference_name_char}; -const MAX_UNICODE_CODE_POINT: u32 = 0x10FFFF; - #[derive(Clone, Copy, Eq, PartialEq, Debug)] -enum Type { +pub enum EntityType { Malformed, - Name, - Decimal, - Hexadecimal, + Ascii(u8), + // If named or numeric reference refers to ASCII char, Type::Ascii is used instead. + Named(&'static [u8]), + Numeric(char), } -fn parse_decimal(slice: &[u8]) -> Option { - let mut val = 0u32; - for c in slice { - val = val * 10 + (c - b'0') as u32; - } - if val > MAX_UNICODE_CODE_POINT { - None - } else { - Some(val) - } -} - -fn parse_hexadecimal(slice: &[u8]) -> Option { - let mut val = 0u32; - for c in slice { - let digit = if is_digit(*c) { - c - b'0' - } else if is_upper_hex_digit(*c) { - c - b'A' + 10 - } else if is_lower_hex_digit(*c) { - c - b'a' + 10 - } else { - unreachable!(); - }; - val = val * 16 + digit as u32; +macro_rules! handle_decoded_code_point { + ($code_point:ident) => { + match std::char::from_u32($code_point) { + Some(c) => if c.is_ascii() { + EntityType::Ascii(c as u8) + } else { + EntityType::Numeric(c) + }, + None => EntityType::Malformed, + } }; - if val > MAX_UNICODE_CODE_POINT { - None - } else { - Some(val) +} + +fn parse_decimal(proc: &mut Processor) -> EntityType { + let mut val = 0u32; + // Parse at most seven characters to prevent parsing forever. + for _ in 0..7 { + if let Some(c) = chain!(proc.match_pred(is_digit).discard().maybe_char()) { + val = val * 10 + (c - b'0') as u32; + } else { + break; + } + } + handle_decoded_code_point!(val) +} + +fn parse_hexadecimal(proc: &mut Processor) -> EntityType { + let mut val = 0u32; + // Parse at most six characters to prevent parsing forever. + for _ in 0..6 { + if let Some(c) = chain!(proc.match_pred(is_hex_digit).discard().maybe_char()) { + let digit = if is_digit(c) { + c - b'0' + } else if is_upper_hex_digit(c) { + c - b'A' + 10 + } else if is_lower_hex_digit(c) { + c - b'a' + 10 + } else { + unreachable!(); + }; + val = val * 16 + digit as u32; + } else { + break; + } + } + handle_decoded_code_point!(val) +} + +fn parse_name(proc: &mut Processor) -> EntityType { + let data = chain!(proc.match_while_pred(is_valid_entity_reference_name_char).discard().slice()); + match ENTITY_REFERENCES.get(data) { + // In UTF-8, one-byte character encodings are always ASCII. + Some(s) => if s.len() == 1 { + EntityType::Ascii(s[0]) + } else { + EntityType::Named(s) + }, + None => { + EntityType::Malformed + }, } } // This will parse and skip characters. Set a checkpoint to later write skipped, or to ignore results and reset to previous position. -pub fn parse_entity(proc: &mut Processor) -> ProcessingResult> { +pub fn parse_entity(proc: &mut Processor) -> ProcessingResult { chain!(proc.match_char(b'&').expect().discard()); // The input can end at any time after initial ampersand. @@ -103,7 +127,7 @@ pub fn parse_entity(proc: &mut Processor) -> ProcessingResult> { // characters after the initial ampersand, e.g. "&#", "&#x", "&a". // 2. Parse the entity data, i.e. the characters between the ampersand // and semicolon. - // - To avoid parsing forever on malformed entities without + // - TODO To avoid parsing forever on malformed entities without // semicolons, there is an upper bound on the amount of possible // characters, based on the type of entity detected from the first // stage. @@ -111,79 +135,52 @@ pub fn parse_entity(proc: &mut Processor) -> ProcessingResult> { // - This simply checks if it refers to a valid Unicode code point or // entity reference name. - // First stage: determine the type of entity. - let predicate: fn(u8) -> bool; - let mut entity_type: Type; - let min_len: usize; - let max_len: usize; - - if chain!(proc.match_seq(b"#x").discard().matched()) { - predicate = is_hex_digit; - entity_type = Type::Hexadecimal; - min_len = 1; - max_len = 6; + // TODO Could optimise. + let entity_type = if chain!(proc.match_seq(b"#x").discard().matched()) { + parse_hexadecimal(proc) } else if chain!(proc.match_char(b'#').discard().matched()) { - predicate = is_digit; - entity_type = Type::Decimal; - min_len = 1; - max_len = 7; + parse_decimal(proc) } else if chain!(proc.match_pred(is_valid_entity_reference_name_char).matched()) { - predicate = is_valid_entity_reference_name_char; - entity_type = Type::Name; - min_len = 2; - max_len = 31; + parse_name(proc) } else { // At this point, only consumed ampersand. - return Ok(None); - } - - // Second stage: try to parse a well formed entity. - // Malformed entity could be last few characters in code, so allow EOF during entity. - let data = chain!(proc.match_while_pred(predicate).discard().slice()); - if data.len() < min_len || data.len() > max_len { - entity_type = Type::Malformed; + EntityType::Malformed }; - // Third stage: validate entity and decode if configured to do so. - let res = Ok(match entity_type { - Type::Name => ENTITY_REFERENCES.get(data).map(|r| *r), - Type::Decimal => parse_decimal(data), - Type::Hexadecimal => parse_hexadecimal(data), - Type::Malformed => None, - }); - - // Consume semicolon after using borrowed data slice. - if entity_type != Type::Malformed && !chain!(proc.match_char(b';').discard().matched()) { - Ok(None) + Ok(if entity_type != EntityType::Malformed && chain!(proc.match_char(b';').discard().matched()) { + entity_type } else { - res - } + println!("Malformed"); + EntityType::Malformed + }) } +#[derive(Copy, Clone, Eq, PartialEq)] pub struct ParsedEntity { - code_point: Option, + entity: EntityType, checkpoint: Checkpoint, } impl ParsedEntity { - pub fn code_point(&self) -> Option { - self.code_point + pub fn entity(&self) -> EntityType { + self.entity } + pub fn keep(&self, proc: &mut Processor) -> () { - if let Some(cp) = self.code_point { - proc.write_utf8(cp); - } else { - // Write discarded characters that could not form a well formed entity. - proc.write_skipped(self.checkpoint); + match self.entity { + EntityType::Malformed => proc.write_skipped(self.checkpoint), + EntityType::Ascii(c) => proc.write(c), + EntityType::Named(s) => proc.write_slice(s), + EntityType::Numeric(c) => proc.write_utf8(c), }; } } pub fn maybe_process_entity(proc: &mut Processor) -> ProcessingResult { let checkpoint = proc.checkpoint(); - let code_point = parse_entity(proc)?; + let entity = parse_entity(proc)?; - Ok(ParsedEntity { code_point, checkpoint }) + Ok(ParsedEntity { entity, checkpoint }) } /** @@ -192,8 +189,8 @@ pub fn maybe_process_entity(proc: &mut Processor) -> ProcessingResult ProcessingResult> { - let e = maybe_process_entity(proc)?; - e.keep(proc); - Ok(e.code_point()) +pub fn process_entity(proc: &mut Processor) -> ProcessingResult { + let entity = maybe_process_entity(proc)?; + entity.keep(proc); + Ok(entity.entity()) } diff --git a/src/unit/tag.rs b/src/unit/tag.rs index dfa73ea..82f87c6 100644 --- a/src/unit/tag.rs +++ b/src/unit/tag.rs @@ -38,9 +38,7 @@ pub fn process_tag(proc: &mut Processor) -> ProcessingResult<()> { let mut self_closing = false; loop { - // At the beginning of this loop, the last parsed unit was - // either the tag name or an attribute (including its value, if - // it had one). + // At the beginning of this loop, the last parsed unit was either the tag name or an attribute (including its value, if it had one). let ws_accepted = chain!(proc.match_while_pred(is_whitespace).discard().matched()); if chain!(proc.match_char(b'>').keep().matched()) { @@ -60,8 +58,8 @@ pub fn process_tag(proc: &mut Processor) -> ProcessingResult<()> { // Write space after tag name or unquoted/valueless attribute. match last_attr_type { - Some(AttrType::Quoted) => {} - _ => proc.write(b' '), + Some(AttrType::Unquoted) | Some(AttrType::NoValue) | None => proc.write(b' '), + _ => {} }; last_attr_type = Some(process_attr(proc)?);