diff --git a/.github/workflows/test-package.yml b/.github/workflows/test-package.yml
index 4e90396..82b378a 100644
--- a/.github/workflows/test-package.yml
+++ b/.github/workflows/test-package.yml
@@ -59,3 +59,23 @@
       - name: Run VM tests
         run: dart test --platform vm
         if: always() && steps.install.outcome == 'success'
+
+  coverage:
+    needs: test
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
+    - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+      with:
+        sdk: dev
+    - name: Install dependencies
+      run: dart pub get
+    - name: Install coverage
+      run: dart pub global activate coverage
+    - name: Collect and report coverage
+      run: dart pub global run coverage:test_with_coverage
+    - name: Upload coverage
+      uses: coverallsapp/github-action@master
+      with:
+        github-token: ${{ secrets.GITHUB_TOKEN }}
+        path-to-lcov: coverage/lcov.info
diff --git a/CHANGELOG.md b/CHANGELOG.md
index edd336b..58e4ab0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,15 @@
+## 7.0.0-dev
+
+* **Breaking change**: `close()` of `DelimiterSyntax` and `LinkSyntax`
+  returns multiple nodes instead of single one.
+
 ## 6.0.2-dev
 
 * Fix a crash in checkbox lists when mixing checkbox items with
   non-checkbox items.
 * Add a new syntax `BlockHtmlSyntax` to parse HTML blocks.
+* Add a new syntax `DecodeHtmlSyntax` to decode HTML entity and numeric
+  character references.
 * Deprecate `BlockTagBlockHtmlSyntax`, `LongBlockHtmlSyntax` and
   `OtherTagBlockHtmlSyntax`. These syntaxes will be removed from the next major
   version.
diff --git a/README.md b/README.md
index cf6a000..a952014 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
 [![Build Status](https://github.com/dart-lang/markdown/workflows/Dart%20CI/badge.svg)](https://github.com/dart-lang/markdown/actions?query=workflow%3A"Dart+CI"+branch%3Amaster)
 [![Pub](https://img.shields.io/pub/v/markdown.svg)](https://pub.dev/packages/markdown)
+[![package publisher](https://img.shields.io/pub/publisher/markdown.svg)](https://pub.dev/packages/markdown/publisher)
+[![Coverage Status](https://coveralls.io/repos/github/dart-lang/markdown/badge.svg?branch=master)](https://coveralls.io/github/dart-lang/markdown?branch=master)
 
 A portable Markdown library written in Dart. It can parse Markdown into
 HTML on both the client and server.
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 4190e9a..ac272aa 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,4 +1,6 @@
+# https://dart.dev/guides/language/analysis-options
 include: package:lints/recommended.yaml
+
 analyzer:
   language:
     strict-inference: true
@@ -17,15 +19,37 @@
   rules:
     # https://github.com/dart-lang/linter/issues/574
     #- comment_references
+    - always_declare_return_types
+    - avoid_catching_errors
+    - avoid_dynamic_calls
+    - avoid_private_typedef_functions
+    - avoid_redundant_argument_values
+    - avoid_unused_constructor_parameters
+    - avoid_void_async
+    - cancel_subscriptions
     - directives_ordering
+    - literal_only_boolean_expressions
+    - missing_whitespace_between_adjacent_strings
+    - no_adjacent_strings_in_list
+    - omit_local_variable_types
     - only_throw_errors
     - package_api_docs
+    - prefer_asserts_in_initializer_lists
+    - prefer_const_constructors
     - prefer_const_declarations
     - prefer_final_locals
+    - prefer_relative_imports
     - prefer_single_quotes
+    - sort_pub_dependencies
     - test_types_in_equals
     - throw_in_finally
+    - type_annotate_public_apis
+    - unawaited_futures
+    - unnecessary_await_in_return
+    - unnecessary_lambdas
+    - unnecessary_parenthesis
     - unnecessary_raw_strings
     - use_if_null_to_convert_nulls_to_bools
     - use_raw_strings
+    - use_string_buffers
     - use_super_parameters
diff --git a/benchmark/benchmark.dart b/benchmark/benchmark.dart
index 4c4d61f..63a8d1f 100644
--- a/benchmark/benchmark.dart
+++ b/benchmark/benchmark.dart
@@ -38,7 +38,8 @@
     // the VM doesn't optimize "dead" code away.
     if (result != expected) {
       print('Incorrect output:\n$result');
-      exit(1);
+      exitCode = 1;
+      return;
     }
 
     // Don't print the first run. It's always terrible since the VM hasn't
diff --git a/lib/src/assets/html_entities.dart b/lib/src/assets/html_entities.dart
new file mode 100644
index 0000000..2599762
--- /dev/null
+++ b/lib/src/assets/html_entities.dart
@@ -0,0 +1,2133 @@
+// Generated file. do not edit.
+//
+// Source: tool/entities.json
+// Script: tool/update_entities.dart
+// ignore_for_file: prefer_single_quotes
+
+const htmlEntitiesMap = {
+  "Æ": "Æ",
+  "&": "&",
+  "Á": "Á",
+  "Ă": "Ă",
+  "Â": "Â",
+  "А": "А",
+  "𝔄": "𝔄",
+  "À": "À",
+  "Α": "Α",
+  "Ā": "Ā",
+  "⩓": "⩓",
+  "Ą": "Ą",
+  "𝔸": "𝔸",
+  "⁡": "⁡",
+  "Å": "Å",
+  "𝒜": "𝒜",
+  "≔": "≔",
+  "Ã": "Ã",
+  "Ä": "Ä",
+  "∖": "∖",
+  "⫧": "⫧",
+  "⌆": "⌆",
+  "Б": "Б",
+  "∵": "∵",
+  "ℬ": "ℬ",
+  "Β": "Β",
+  "𝔅": "𝔅",
+  "𝔹": "𝔹",
+  "˘": "˘",
+  "ℬ": "ℬ",
+  "≎": "≎",
+  "Ч": "Ч",
+  "©": "©",
+  "Ć": "Ć",
+  "⋒": "⋒",
+  "ⅅ": "ⅅ",
+  "ℭ": "ℭ",
+  "Č": "Č",
+  "Ç": "Ç",
+  "Ĉ": "Ĉ",
+  "∰": "∰",
+  "Ċ": "Ċ",
+  "¸": "¸",
+  "·": "·",
+  "ℭ": "ℭ",
+  "Χ": "Χ",
+  "⊙": "⊙",
+  "⊖": "⊖",
+  "⊕": "⊕",
+  "⊗": "⊗",
+  "∲": "∲",
+  "”": "”",
+  "’": "’",
+  "∷": "∷",
+  "⩴": "⩴",
+  "≡": "≡",
+  "∯": "∯",
+  "∮": "∮",
+  "ℂ": "ℂ",
+  "∐": "∐",
+  "&CounterClockwiseContourIntegral;": "∳",
+  "⨯": "⨯",
+  "𝒞": "𝒞",
+  "⋓": "⋓",
+  "≍": "≍",
+  "ⅅ": "ⅅ",
+  "⤑": "⤑",
+  "Ђ": "Ђ",
+  "Ѕ": "Ѕ",
+  "Џ": "Џ",
+  "‡": "‡",
+  "↡": "↡",
+  "⫤": "⫤",
+  "Ď": "Ď",
+  "Д": "Д",
+  "∇": "∇",
+  "Δ": "Δ",
+  "𝔇": "𝔇",
+  "´": "´",
+  "˙": "˙",
+  "˝": "˝",
+  "`": "`",
+  "˜": "˜",
+  "⋄": "⋄",
+  "ⅆ": "ⅆ",
+  "𝔻": "𝔻",
+  "¨": "¨",
+  "⃜": "⃜",
+  "≐": "≐",
+  "∯": "∯",
+  "¨": "¨",
+  "⇓": "⇓",
+  "⇐": "⇐",
+  "⇔": "⇔",
+  "⫤": "⫤",
+  "⟸": "⟸",
+  "⟺": "⟺",
+  "⟹": "⟹",
+  "⇒": "⇒",
+  "⊨": "⊨",
+  "⇑": "⇑",
+  "⇕": "⇕",
+  "∥": "∥",
+  "↓": "↓",
+  "⤓": "⤓",
+  "⇵": "⇵",
+  "̑": "̑",
+  "⥐": "⥐",
+  "⥞": "⥞",
+  "↽": "↽",
+  "⥖": "⥖",
+  "⥟": "⥟",
+  "⇁": "⇁",
+  "⥗": "⥗",
+  "⊤": "⊤",
+  "↧": "↧",
+  "⇓": "⇓",
+  "𝒟": "𝒟",
+  "Đ": "Đ",
+  "Ŋ": "Ŋ",
+  "Ð": "Ð",
+  "É": "É",
+  "Ě": "Ě",
+  "Ê": "Ê",
+  "Э": "Э",
+  "Ė": "Ė",
+  "𝔈": "𝔈",
+  "È": "È",
+  "∈": "∈",
+  "Ē": "Ē",
+  "◻": "◻",
+  "▫": "▫",
+  "Ę": "Ę",
+  "𝔼": "𝔼",
+  "Ε": "Ε",
+  "⩵": "⩵",
+  "≂": "≂",
+  "⇌": "⇌",
+  "ℰ": "ℰ",
+  "⩳": "⩳",
+  "Η": "Η",
+  "Ë": "Ë",
+  "∃": "∃",
+  "ⅇ": "ⅇ",
+  "Ф": "Ф",
+  "𝔉": "𝔉",
+  "◼": "◼",
+  "▪": "▪",
+  "𝔽": "𝔽",
+  "∀": "∀",
+  "ℱ": "ℱ",
+  "ℱ": "ℱ",
+  "Ѓ": "Ѓ",
+  ">": ">",
+  "Γ": "Γ",
+  "Ϝ": "Ϝ",
+  "Ğ": "Ğ",
+  "Ģ": "Ģ",
+  "Ĝ": "Ĝ",
+  "Г": "Г",
+  "Ġ": "Ġ",
+  "𝔊": "𝔊",
+  "⋙": "⋙",
+  "𝔾": "𝔾",
+  "≥": "≥",
+  "⋛": "⋛",
+  "≧": "≧",
+  "⪢": "⪢",
+  "≷": "≷",
+  "⩾": "⩾",
+  "≳": "≳",
+  "𝒢": "𝒢",
+  "≫": "≫",
+  "Ъ": "Ъ",
+  "ˇ": "ˇ",
+  "^": "^",
+  "Ĥ": "Ĥ",
+  "ℌ": "ℌ",
+  "ℋ": "ℋ",
+  "ℍ": "ℍ",
+  "─": "─",
+  "ℋ": "ℋ",
+  "Ħ": "Ħ",
+  "≎": "≎",
+  "≏": "≏",
+  "Е": "Е",
+  "IJ": "IJ",
+  "Ё": "Ё",
+  "Í": "Í",
+  "Î": "Î",
+  "И": "И",
+  "İ": "İ",
+  "ℑ": "ℑ",
+  "Ì": "Ì",
+  "ℑ": "ℑ",
+  "Ī": "Ī",
+  "ⅈ": "ⅈ",
+  "⇒": "⇒",
+  "∬": "∬",
+  "∫": "∫",
+  "⋂": "⋂",
+  "⁣": "⁣",
+  "⁢": "⁢",
+  "Į": "Į",
+  "𝕀": "𝕀",
+  "Ι": "Ι",
+  "ℐ": "ℐ",
+  "Ĩ": "Ĩ",
+  "І": "І",
+  "Ï": "Ï",
+  "Ĵ": "Ĵ",
+  "Й": "Й",
+  "𝔍": "𝔍",
+  "𝕁": "𝕁",
+  "𝒥": "𝒥",
+  "Ј": "Ј",
+  "Є": "Є",
+  "Х": "Х",
+  "Ќ": "Ќ",
+  "Κ": "Κ",
+  "Ķ": "Ķ",
+  "К": "К",
+  "𝔎": "𝔎",
+  "𝕂": "𝕂",
+  "𝒦": "𝒦",
+  "Љ": "Љ",
+  "&LT;": "<",
+  "&Lacute;": "Ĺ",
+  "&Lambda;": "Λ",
+  "&Lang;": "⟪",
+  "&Laplacetrf;": "ℒ",
+  "&Larr;": "↞",
+  "&Lcaron;": "Ľ",
+  "&Lcedil;": "Ļ",
+  "&Lcy;": "Л",
+  "&LeftAngleBracket;": "⟨",
+  "&LeftArrow;": "←",
+  "&LeftArrowBar;": "⇤",
+  "&LeftArrowRightArrow;": "⇆",
+  "&LeftCeiling;": "⌈",
+  "&LeftDoubleBracket;": "⟦",
+  "&LeftDownTeeVector;": "⥡",
+  "&LeftDownVector;": "⇃",
+  "&LeftDownVectorBar;": "⥙",
+  "&LeftFloor;": "⌊",
+  "&LeftRightArrow;": "↔",
+  "&LeftRightVector;": "⥎",
+  "&LeftTee;": "⊣",
+  "&LeftTeeArrow;": "↤",
+  "&LeftTeeVector;": "⥚",
+  "&LeftTriangle;": "⊲",
+  "&LeftTriangleBar;": "⧏",
+  "&LeftTriangleEqual;": "⊴",
+  "&LeftUpDownVector;": "⥑",
+  "&LeftUpTeeVector;": "⥠",
+  "&LeftUpVector;": "↿",
+  "&LeftUpVectorBar;": "⥘",
+  "&LeftVector;": "↼",
+  "&LeftVectorBar;": "⥒",
+  "&Leftarrow;": "⇐",
+  "&Leftrightarrow;": "⇔",
+  "&LessEqualGreater;": "⋚",
+  "&LessFullEqual;": "≦",
+  "&LessGreater;": "≶",
+  "&LessLess;": "⪡",
+  "&LessSlantEqual;": "⩽",
+  "&LessTilde;": "≲",
+  "&Lfr;": "𝔏",
+  "&Ll;": "⋘",
+  "&Lleftarrow;": "⇚",
+  "&Lmidot;": "Ŀ",
+  "&LongLeftArrow;": "⟵",
+  "&LongLeftRightArrow;": "⟷",
+  "&LongRightArrow;": "⟶",
+  "&Longleftarrow;": "⟸",
+  "&Longleftrightarrow;": "⟺",
+  "&Longrightarrow;": "⟹",
+  "&Lopf;": "𝕃",
+  "&LowerLeftArrow;": "↙",
+  "&LowerRightArrow;": "↘",
+  "&Lscr;": "ℒ",
+  "&Lsh;": "↰",
+  "&Lstrok;": "Ł",
+  "&Lt;": "≪",
+  "&Map;": "⤅",
+  "&Mcy;": "М",
+  "&MediumSpace;": " ",
+  "&Mellintrf;": "ℳ",
+  "&Mfr;": "𝔐",
+  "&MinusPlus;": "∓",
+  "&Mopf;": "𝕄",
+  "&Mscr;": "ℳ",
+  "&Mu;": "Μ",
+  "&NJcy;": "Њ",
+  "&Nacute;": "Ń",
+  "&Ncaron;": "Ň",
+  "&Ncedil;": "Ņ",
+  "&Ncy;": "Н",
+  "&NegativeMediumSpace;": "​",
+  "&NegativeThickSpace;": "​",
+  "&NegativeThinSpace;": "​",
+  "&NegativeVeryThinSpace;": "​",
+  "&NestedGreaterGreater;": "≫",
+  "&NestedLessLess;": "≪",
+  "&NewLine;": "\n",
+  "&Nfr;": "𝔑",
+  "&NoBreak;": "⁠",
+  "&NonBreakingSpace;": " ",
+  "&Nopf;": "ℕ",
+  "&Not;": "⫬",
+  "&NotCongruent;": "≢",
+  "&NotCupCap;": "≭",
+  "&NotDoubleVerticalBar;": "∦",
+  "&NotElement;": "∉",
+  "&NotEqual;": "≠",
+  "&NotEqualTilde;": "≂̸",
+  "&NotExists;": "∄",
+  "&NotGreater;": "≯",
+  "&NotGreaterEqual;": "≱",
+  "&NotGreaterFullEqual;": "≧̸",
+  "&NotGreaterGreater;": "≫̸",
+  "&NotGreaterLess;": "≹",
+  "&NotGreaterSlantEqual;": "⩾̸",
+  "&NotGreaterTilde;": "≵",
+  "&NotHumpDownHump;": "≎̸",
+  "&NotHumpEqual;": "≏̸",
+  "&NotLeftTriangle;": "⋪",
+  "&NotLeftTriangleBar;": "⧏̸",
+  "&NotLeftTriangleEqual;": "⋬",
+  "&NotLess;": "≮",
+  "&NotLessEqual;": "≰",
+  "&NotLessGreater;": "≸",
+  "&NotLessLess;": "≪̸",
+  "&NotLessSlantEqual;": "⩽̸",
+  "&NotLessTilde;": "≴",
+  "&NotNestedGreaterGreater;": "⪢̸",
+  "&NotNestedLessLess;": "⪡̸",
+  "&NotPrecedes;": "⊀",
+  "&NotPrecedesEqual;": "⪯̸",
+  "&NotPrecedesSlantEqual;": "⋠",
+  "&NotReverseElement;": "∌",
+  "&NotRightTriangle;": "⋫",
+  "&NotRightTriangleBar;": "⧐̸",
+  "&NotRightTriangleEqual;": "⋭",
+  "&NotSquareSubset;": "⊏̸",
+  "&NotSquareSubsetEqual;": "⋢",
+  "&NotSquareSuperset;": "⊐̸",
+  "&NotSquareSupersetEqual;": "⋣",
+  "&NotSubset;": "⊂⃒",
+  "&NotSubsetEqual;": "⊈",
+  "&NotSucceeds;": "⊁",
+  "&NotSucceedsEqual;": "⪰̸",
+  "&NotSucceedsSlantEqual;": "⋡",
+  "&NotSucceedsTilde;": "≿̸",
+  "&NotSuperset;": "⊃⃒",
+  "&NotSupersetEqual;": "⊉",
+  "&NotTilde;": "≁",
+  "&NotTildeEqual;": "≄",
+  "&NotTildeFullEqual;": "≇",
+  "&NotTildeTilde;": "≉",
+  "&NotVerticalBar;": "∤",
+  "&Nscr;": "𝒩",
+  "&Ntilde;": "Ñ",
+  "&Nu;": "Ν",
+  "&OElig;": "Œ",
+  "&Oacute;": "Ó",
+  "&Ocirc;": "Ô",
+  "&Ocy;": "О",
+  "&Odblac;": "Ő",
+  "&Ofr;": "𝔒",
+  "&Ograve;": "Ò",
+  "&Omacr;": "Ō",
+  "&Omega;": "Ω",
+  "&Omicron;": "Ο",
+  "&Oopf;": "𝕆",
+  "&OpenCurlyDoubleQuote;": "“",
+  "&OpenCurlyQuote;": "‘",
+  "&Or;": "⩔",
+  "&Oscr;": "𝒪",
+  "&Oslash;": "Ø",
+  "&Otilde;": "Õ",
+  "&Otimes;": "⨷",
+  "&Ouml;": "Ö",
+  "&OverBar;": "‾",
+  "&OverBrace;": "⏞",
+  "&OverBracket;": "⎴",
+  "&OverParenthesis;": "⏜",
+  "&PartialD;": "∂",
+  "&Pcy;": "П",
+  "&Pfr;": "𝔓",
+  "&Phi;": "Φ",
+  "&Pi;": "Π",
+  "&PlusMinus;": "±",
+  "&Poincareplane;": "ℌ",
+  "&Popf;": "ℙ",
+  "&Pr;": "⪻",
+  "&Precedes;": "≺",
+  "&PrecedesEqual;": "⪯",
+  "&PrecedesSlantEqual;": "≼",
+  "&PrecedesTilde;": "≾",
+  "&Prime;": "″",
+  "&Product;": "∏",
+  "&Proportion;": "∷",
+  "&Proportional;": "∝",
+  "&Pscr;": "𝒫",
+  "&Psi;": "Ψ",
+  "&QUOT;": "\"",
+  "&Qfr;": "𝔔",
+  "&Qopf;": "ℚ",
+  "&Qscr;": "𝒬",
+  "&RBarr;": "⤐",
+  "&REG;": "®",
+  "&Racute;": "Ŕ",
+  "&Rang;": "⟫",
+  "&Rarr;": "↠",
+  "&Rarrtl;": "⤖",
+  "&Rcaron;": "Ř",
+  "&Rcedil;": "Ŗ",
+  "&Rcy;": "Р",
+  "&Re;": "ℜ",
+  "&ReverseElement;": "∋",
+  "&ReverseEquilibrium;": "⇋",
+  "&ReverseUpEquilibrium;": "⥯",
+  "&Rfr;": "ℜ",
+  "&Rho;": "Ρ",
+  "&RightAngleBracket;": "⟩",
+  "&RightArrow;": "→",
+  "&RightArrowBar;": "⇥",
+  "&RightArrowLeftArrow;": "⇄",
+  "&RightCeiling;": "⌉",
+  "&RightDoubleBracket;": "⟧",
+  "&RightDownTeeVector;": "⥝",
+  "&RightDownVector;": "⇂",
+  "&RightDownVectorBar;": "⥕",
+  "&RightFloor;": "⌋",
+  "&RightTee;": "⊢",
+  "&RightTeeArrow;": "↦",
+  "&RightTeeVector;": "⥛",
+  "&RightTriangle;": "⊳",
+  "&RightTriangleBar;": "⧐",
+  "&RightTriangleEqual;": "⊵",
+  "&RightUpDownVector;": "⥏",
+  "&RightUpTeeVector;": "⥜",
+  "&RightUpVector;": "↾",
+  "&RightUpVectorBar;": "⥔",
+  "&RightVector;": "⇀",
+  "&RightVectorBar;": "⥓",
+  "&Rightarrow;": "⇒",
+  "&Ropf;": "ℝ",
+  "&RoundImplies;": "⥰",
+  "&Rrightarrow;": "⇛",
+  "&Rscr;": "ℛ",
+  "&Rsh;": "↱",
+  "&RuleDelayed;": "⧴",
+  "&SHCHcy;": "Щ",
+  "&SHcy;": "Ш",
+  "&SOFTcy;": "Ь",
+  "&Sacute;": "Ś",
+  "&Sc;": "⪼",
+  "&Scaron;": "Š",
+  "&Scedil;": "Ş",
+  "&Scirc;": "Ŝ",
+  "&Scy;": "С",
+  "&Sfr;": "𝔖",
+  "&ShortDownArrow;": "↓",
+  "&ShortLeftArrow;": "←",
+  "&ShortRightArrow;": "→",
+  "&ShortUpArrow;": "↑",
+  "&Sigma;": "Σ",
+  "&SmallCircle;": "∘",
+  "&Sopf;": "𝕊",
+  "&Sqrt;": "√",
+  "&Square;": "□",
+  "&SquareIntersection;": "⊓",
+  "&SquareSubset;": "⊏",
+  "&SquareSubsetEqual;": "⊑",
+  "&SquareSuperset;": "⊐",
+  "&SquareSupersetEqual;": "⊒",
+  "&SquareUnion;": "⊔",
+  "&Sscr;": "𝒮",
+  "&Star;": "⋆",
+  "&Sub;": "⋐",
+  "&Subset;": "⋐",
+  "&SubsetEqual;": "⊆",
+  "&Succeeds;": "≻",
+  "&SucceedsEqual;": "⪰",
+  "&SucceedsSlantEqual;": "≽",
+  "&SucceedsTilde;": "≿",
+  "&SuchThat;": "∋",
+  "&Sum;": "∑",
+  "&Sup;": "⋑",
+  "&Superset;": "⊃",
+  "&SupersetEqual;": "⊇",
+  "&Supset;": "⋑",
+  "&THORN;": "Þ",
+  "&TRADE;": "™",
+  "&TSHcy;": "Ћ",
+  "&TScy;": "Ц",
+  "&Tab;": "\t",
+  "&Tau;": "Τ",
+  "&Tcaron;": "Ť",
+  "&Tcedil;": "Ţ",
+  "&Tcy;": "Т",
+  "&Tfr;": "𝔗",
+  "&Therefore;": "∴",
+  "&Theta;": "Θ",
+  "&ThickSpace;": "  ",
+  "&ThinSpace;": " ",
+  "&Tilde;": "∼",
+  "&TildeEqual;": "≃",
+  "&TildeFullEqual;": "≅",
+  "&TildeTilde;": "≈",
+  "&Topf;": "𝕋",
+  "&TripleDot;": "⃛",
+  "&Tscr;": "𝒯",
+  "&Tstrok;": "Ŧ",
+  "&Uacute;": "Ú",
+  "&Uarr;": "↟",
+  "&Uarrocir;": "⥉",
+  "&Ubrcy;": "Ў",
+  "&Ubreve;": "Ŭ",
+  "&Ucirc;": "Û",
+  "&Ucy;": "У",
+  "&Udblac;": "Ű",
+  "&Ufr;": "𝔘",
+  "&Ugrave;": "Ù",
+  "&Umacr;": "Ū",
+  "&UnderBar;": "_",
+  "&UnderBrace;": "⏟",
+  "&UnderBracket;": "⎵",
+  "&UnderParenthesis;": "⏝",
+  "&Union;": "⋃",
+  "&UnionPlus;": "⊎",
+  "&Uogon;": "Ų",
+  "&Uopf;": "𝕌",
+  "&UpArrow;": "↑",
+  "&UpArrowBar;": "⤒",
+  "&UpArrowDownArrow;": "⇅",
+  "&UpDownArrow;": "↕",
+  "&UpEquilibrium;": "⥮",
+  "&UpTee;": "⊥",
+  "&UpTeeArrow;": "↥",
+  "&Uparrow;": "⇑",
+  "&Updownarrow;": "⇕",
+  "&UpperLeftArrow;": "↖",
+  "&UpperRightArrow;": "↗",
+  "&Upsi;": "ϒ",
+  "&Upsilon;": "Υ",
+  "&Uring;": "Ů",
+  "&Uscr;": "𝒰",
+  "&Utilde;": "Ũ",
+  "&Uuml;": "Ü",
+  "&VDash;": "⊫",
+  "&Vbar;": "⫫",
+  "&Vcy;": "В",
+  "&Vdash;": "⊩",
+  "&Vdashl;": "⫦",
+  "&Vee;": "⋁",
+  "&Verbar;": "‖",
+  "&Vert;": "‖",
+  "&VerticalBar;": "∣",
+  "&VerticalLine;": "|",
+  "&VerticalSeparator;": "❘",
+  "&VerticalTilde;": "≀",
+  "&VeryThinSpace;": " ",
+  "&Vfr;": "𝔙",
+  "&Vopf;": "𝕍",
+  "&Vscr;": "𝒱",
+  "&Vvdash;": "⊪",
+  "&Wcirc;": "Ŵ",
+  "&Wedge;": "⋀",
+  "&Wfr;": "𝔚",
+  "&Wopf;": "𝕎",
+  "&Wscr;": "𝒲",
+  "&Xfr;": "𝔛",
+  "&Xi;": "Ξ",
+  "&Xopf;": "𝕏",
+  "&Xscr;": "𝒳",
+  "&YAcy;": "Я",
+  "&YIcy;": "Ї",
+  "&YUcy;": "Ю",
+  "&Yacute;": "Ý",
+  "&Ycirc;": "Ŷ",
+  "&Ycy;": "Ы",
+  "&Yfr;": "𝔜",
+  "&Yopf;": "𝕐",
+  "&Yscr;": "𝒴",
+  "&Yuml;": "Ÿ",
+  "&ZHcy;": "Ж",
+  "&Zacute;": "Ź",
+  "&Zcaron;": "Ž",
+  "&Zcy;": "З",
+  "&Zdot;": "Ż",
+  "&ZeroWidthSpace;": "​",
+  "&Zeta;": "Ζ",
+  "&Zfr;": "ℨ",
+  "&Zopf;": "ℤ",
+  "&Zscr;": "𝒵",
+  "&aacute;": "á",
+  "&abreve;": "ă",
+  "&ac;": "∾",
+  "&acE;": "∾̳",
+  "&acd;": "∿",
+  "&acirc;": "â",
+  "&acute;": "´",
+  "&acy;": "а",
+  "&aelig;": "æ",
+  "&af;": "⁡",
+  "&afr;": "𝔞",
+  "&agrave;": "à",
+  "&alefsym;": "ℵ",
+  "&aleph;": "ℵ",
+  "&alpha;": "α",
+  "&amacr;": "ā",
+  "&amalg;": "⨿",
+  "&amp;": "&",
+  "&and;": "∧",
+  "&andand;": "⩕",
+  "&andd;": "⩜",
+  "&andslope;": "⩘",
+  "&andv;": "⩚",
+  "&ang;": "∠",
+  "&ange;": "⦤",
+  "&angle;": "∠",
+  "&angmsd;": "∡",
+  "&angmsdaa;": "⦨",
+  "&angmsdab;": "⦩",
+  "&angmsdac;": "⦪",
+  "&angmsdad;": "⦫",
+  "&angmsdae;": "⦬",
+  "&angmsdaf;": "⦭",
+  "&angmsdag;": "⦮",
+  "&angmsdah;": "⦯",
+  "&angrt;": "∟",
+  "&angrtvb;": "⊾",
+  "&angrtvbd;": "⦝",
+  "&angsph;": "∢",
+  "&angst;": "Å",
+  "&angzarr;": "⍼",
+  "&aogon;": "ą",
+  "&aopf;": "𝕒",
+  "&ap;": "≈",
+  "&apE;": "⩰",
+  "&apacir;": "⩯",
+  "&ape;": "≊",
+  "&apid;": "≋",
+  "&apos;": "'",
+  "&approx;": "≈",
+  "&approxeq;": "≊",
+  "&aring;": "å",
+  "&ascr;": "𝒶",
+  "&ast;": "*",
+  "&asymp;": "≈",
+  "&asympeq;": "≍",
+  "&atilde;": "ã",
+  "&auml;": "ä",
+  "&awconint;": "∳",
+  "&awint;": "⨑",
+  "&bNot;": "⫭",
+  "&backcong;": "≌",
+  "&backepsilon;": "϶",
+  "&backprime;": "‵",
+  "&backsim;": "∽",
+  "&backsimeq;": "⋍",
+  "&barvee;": "⊽",
+  "&barwed;": "⌅",
+  "&barwedge;": "⌅",
+  "&bbrk;": "⎵",
+  "&bbrktbrk;": "⎶",
+  "&bcong;": "≌",
+  "&bcy;": "б",
+  "&bdquo;": "„",
+  "&becaus;": "∵",
+  "&because;": "∵",
+  "&bemptyv;": "⦰",
+  "&bepsi;": "϶",
+  "&bernou;": "ℬ",
+  "&beta;": "β",
+  "&beth;": "ℶ",
+  "&between;": "≬",
+  "&bfr;": "𝔟",
+  "&bigcap;": "⋂",
+  "&bigcirc;": "◯",
+  "&bigcup;": "⋃",
+  "&bigodot;": "⨀",
+  "&bigoplus;": "⨁",
+  "&bigotimes;": "⨂",
+  "&bigsqcup;": "⨆",
+  "&bigstar;": "★",
+  "&bigtriangledown;": "▽",
+  "&bigtriangleup;": "△",
+  "&biguplus;": "⨄",
+  "&bigvee;": "⋁",
+  "&bigwedge;": "⋀",
+  "&bkarow;": "⤍",
+  "&blacklozenge;": "⧫",
+  "&blacksquare;": "▪",
+  "&blacktriangle;": "▴",
+  "&blacktriangledown;": "▾",
+  "&blacktriangleleft;": "◂",
+  "&blacktriangleright;": "▸",
+  "&blank;": "␣",
+  "&blk12;": "▒",
+  "&blk14;": "░",
+  "&blk34;": "▓",
+  "&block;": "█",
+  "&bne;": "=⃥",
+  "&bnequiv;": "≡⃥",
+  "&bnot;": "⌐",
+  "&bopf;": "𝕓",
+  "&bot;": "⊥",
+  "&bottom;": "⊥",
+  "&bowtie;": "⋈",
+  "&boxDL;": "╗",
+  "&boxDR;": "╔",
+  "&boxDl;": "╖",
+  "&boxDr;": "╓",
+  "&boxH;": "═",
+  "&boxHD;": "╦",
+  "&boxHU;": "╩",
+  "&boxHd;": "╤",
+  "&boxHu;": "╧",
+  "&boxUL;": "╝",
+  "&boxUR;": "╚",
+  "&boxUl;": "╜",
+  "&boxUr;": "╙",
+  "&boxV;": "║",
+  "&boxVH;": "╬",
+  "&boxVL;": "╣",
+  "&boxVR;": "╠",
+  "&boxVh;": "╫",
+  "&boxVl;": "╢",
+  "&boxVr;": "╟",
+  "&boxbox;": "⧉",
+  "&boxdL;": "╕",
+  "&boxdR;": "╒",
+  "&boxdl;": "┐",
+  "&boxdr;": "┌",
+  "&boxh;": "─",
+  "&boxhD;": "╥",
+  "&boxhU;": "╨",
+  "&boxhd;": "┬",
+  "&boxhu;": "┴",
+  "&boxminus;": "⊟",
+  "&boxplus;": "⊞",
+  "&boxtimes;": "⊠",
+  "&boxuL;": "╛",
+  "&boxuR;": "╘",
+  "&boxul;": "┘",
+  "&boxur;": "└",
+  "&boxv;": "│",
+  "&boxvH;": "╪",
+  "&boxvL;": "╡",
+  "&boxvR;": "╞",
+  "&boxvh;": "┼",
+  "&boxvl;": "┤",
+  "&boxvr;": "├",
+  "&bprime;": "‵",
+  "&breve;": "˘",
+  "&brvbar;": "¦",
+  "&bscr;": "𝒷",
+  "&bsemi;": "⁏",
+  "&bsim;": "∽",
+  "&bsime;": "⋍",
+  "&bsol;": r"\",
+  "&bsolb;": "⧅",
+  "&bsolhsub;": "⟈",
+  "&bull;": "•",
+  "&bullet;": "•",
+  "&bump;": "≎",
+  "&bumpE;": "⪮",
+  "&bumpe;": "≏",
+  "&bumpeq;": "≏",
+  "&cacute;": "ć",
+  "&cap;": "∩",
+  "&capand;": "⩄",
+  "&capbrcup;": "⩉",
+  "&capcap;": "⩋",
+  "&capcup;": "⩇",
+  "&capdot;": "⩀",
+  "&caps;": "∩︀",
+  "&caret;": "⁁",
+  "&caron;": "ˇ",
+  "&ccaps;": "⩍",
+  "&ccaron;": "č",
+  "&ccedil;": "ç",
+  "&ccirc;": "ĉ",
+  "&ccups;": "⩌",
+  "&ccupssm;": "⩐",
+  "&cdot;": "ċ",
+  "&cedil;": "¸",
+  "&cemptyv;": "⦲",
+  "&cent;": "¢",
+  "&centerdot;": "·",
+  "&cfr;": "𝔠",
+  "&chcy;": "ч",
+  "&check;": "✓",
+  "&checkmark;": "✓",
+  "&chi;": "χ",
+  "&cir;": "○",
+  "&cirE;": "⧃",
+  "&circ;": "ˆ",
+  "&circeq;": "≗",
+  "&circlearrowleft;": "↺",
+  "&circlearrowright;": "↻",
+  "&circledR;": "®",
+  "&circledS;": "Ⓢ",
+  "&circledast;": "⊛",
+  "&circledcirc;": "⊚",
+  "&circleddash;": "⊝",
+  "&cire;": "≗",
+  "&cirfnint;": "⨐",
+  "&cirmid;": "⫯",
+  "&cirscir;": "⧂",
+  "&clubs;": "♣",
+  "&clubsuit;": "♣",
+  "&colon;": ":",
+  "&colone;": "≔",
+  "&coloneq;": "≔",
+  "&comma;": ",",
+  "&commat;": "@",
+  "&comp;": "∁",
+  "&compfn;": "∘",
+  "&complement;": "∁",
+  "&complexes;": "ℂ",
+  "&cong;": "≅",
+  "&congdot;": "⩭",
+  "&conint;": "∮",
+  "&copf;": "𝕔",
+  "&coprod;": "∐",
+  "&copy;": "©",
+  "&copysr;": "℗",
+  "&crarr;": "↵",
+  "&cross;": "✗",
+  "&cscr;": "𝒸",
+  "&csub;": "⫏",
+  "&csube;": "⫑",
+  "&csup;": "⫐",
+  "&csupe;": "⫒",
+  "&ctdot;": "⋯",
+  "&cudarrl;": "⤸",
+  "&cudarrr;": "⤵",
+  "&cuepr;": "⋞",
+  "&cuesc;": "⋟",
+  "&cularr;": "↶",
+  "&cularrp;": "⤽",
+  "&cup;": "∪",
+  "&cupbrcap;": "⩈",
+  "&cupcap;": "⩆",
+  "&cupcup;": "⩊",
+  "&cupdot;": "⊍",
+  "&cupor;": "⩅",
+  "&cups;": "∪︀",
+  "&curarr;": "↷",
+  "&curarrm;": "⤼",
+  "&curlyeqprec;": "⋞",
+  "&curlyeqsucc;": "⋟",
+  "&curlyvee;": "⋎",
+  "&curlywedge;": "⋏",
+  "&curren;": "¤",
+  "&curvearrowleft;": "↶",
+  "&curvearrowright;": "↷",
+  "&cuvee;": "⋎",
+  "&cuwed;": "⋏",
+  "&cwconint;": "∲",
+  "&cwint;": "∱",
+  "&cylcty;": "⌭",
+  "&dArr;": "⇓",
+  "&dHar;": "⥥",
+  "&dagger;": "†",
+  "&daleth;": "ℸ",
+  "&darr;": "↓",
+  "&dash;": "‐",
+  "&dashv;": "⊣",
+  "&dbkarow;": "⤏",
+  "&dblac;": "˝",
+  "&dcaron;": "ď",
+  "&dcy;": "д",
+  "&dd;": "ⅆ",
+  "&ddagger;": "‡",
+  "&ddarr;": "⇊",
+  "&ddotseq;": "⩷",
+  "&deg;": "°",
+  "&delta;": "δ",
+  "&demptyv;": "⦱",
+  "&dfisht;": "⥿",
+  "&dfr;": "𝔡",
+  "&dharl;": "⇃",
+  "&dharr;": "⇂",
+  "&diam;": "⋄",
+  "&diamond;": "⋄",
+  "&diamondsuit;": "♦",
+  "&diams;": "♦",
+  "&die;": "¨",
+  "&digamma;": "ϝ",
+  "&disin;": "⋲",
+  "&div;": "÷",
+  "&divide;": "÷",
+  "&divideontimes;": "⋇",
+  "&divonx;": "⋇",
+  "&djcy;": "ђ",
+  "&dlcorn;": "⌞",
+  "&dlcrop;": "⌍",
+  "&dollar;": r"$",
+  "&dopf;": "𝕕",
+  "&dot;": "˙",
+  "&doteq;": "≐",
+  "&doteqdot;": "≑",
+  "&dotminus;": "∸",
+  "&dotplus;": "∔",
+  "&dotsquare;": "⊡",
+  "&doublebarwedge;": "⌆",
+  "&downarrow;": "↓",
+  "&downdownarrows;": "⇊",
+  "&downharpoonleft;": "⇃",
+  "&downharpoonright;": "⇂",
+  "&drbkarow;": "⤐",
+  "&drcorn;": "⌟",
+  "&drcrop;": "⌌",
+  "&dscr;": "𝒹",
+  "&dscy;": "ѕ",
+  "&dsol;": "⧶",
+  "&dstrok;": "đ",
+  "&dtdot;": "⋱",
+  "&dtri;": "▿",
+  "&dtrif;": "▾",
+  "&duarr;": "⇵",
+  "&duhar;": "⥯",
+  "&dwangle;": "⦦",
+  "&dzcy;": "џ",
+  "&dzigrarr;": "⟿",
+  "&eDDot;": "⩷",
+  "&eDot;": "≑",
+  "&eacute;": "é",
+  "&easter;": "⩮",
+  "&ecaron;": "ě",
+  "&ecir;": "≖",
+  "&ecirc;": "ê",
+  "&ecolon;": "≕",
+  "&ecy;": "э",
+  "&edot;": "ė",
+  "&ee;": "ⅇ",
+  "&efDot;": "≒",
+  "&efr;": "𝔢",
+  "&eg;": "⪚",
+  "&egrave;": "è",
+  "&egs;": "⪖",
+  "&egsdot;": "⪘",
+  "&el;": "⪙",
+  "&elinters;": "⏧",
+  "&ell;": "ℓ",
+  "&els;": "⪕",
+  "&elsdot;": "⪗",
+  "&emacr;": "ē",
+  "&empty;": "∅",
+  "&emptyset;": "∅",
+  "&emptyv;": "∅",
+  "&emsp13;": " ",
+  "&emsp14;": " ",
+  "&emsp;": " ",
+  "&eng;": "ŋ",
+  "&ensp;": " ",
+  "&eogon;": "ę",
+  "&eopf;": "𝕖",
+  "&epar;": "⋕",
+  "&eparsl;": "⧣",
+  "&eplus;": "⩱",
+  "&epsi;": "ε",
+  "&epsilon;": "ε",
+  "&epsiv;": "ϵ",
+  "&eqcirc;": "≖",
+  "&eqcolon;": "≕",
+  "&eqsim;": "≂",
+  "&eqslantgtr;": "⪖",
+  "&eqslantless;": "⪕",
+  "&equals;": "=",
+  "&equest;": "≟",
+  "&equiv;": "≡",
+  "&equivDD;": "⩸",
+  "&eqvparsl;": "⧥",
+  "&erDot;": "≓",
+  "&erarr;": "⥱",
+  "&escr;": "ℯ",
+  "&esdot;": "≐",
+  "&esim;": "≂",
+  "&eta;": "η",
+  "&eth;": "ð",
+  "&euml;": "ë",
+  "&euro;": "€",
+  "&excl;": "!",
+  "&exist;": "∃",
+  "&expectation;": "ℰ",
+  "&exponentiale;": "ⅇ",
+  "&fallingdotseq;": "≒",
+  "&fcy;": "ф",
+  "&female;": "♀",
+  "&ffilig;": "ffi",
+  "&fflig;": "ff",
+  "&ffllig;": "ffl",
+  "&ffr;": "𝔣",
+  "&filig;": "fi",
+  "&fjlig;": "fj",
+  "&flat;": "♭",
+  "&fllig;": "fl",
+  "&fltns;": "▱",
+  "&fnof;": "ƒ",
+  "&fopf;": "𝕗",
+  "&forall;": "∀",
+  "&fork;": "⋔",
+  "&forkv;": "⫙",
+  "&fpartint;": "⨍",
+  "&frac12;": "½",
+  "&frac13;": "⅓",
+  "&frac14;": "¼",
+  "&frac15;": "⅕",
+  "&frac16;": "⅙",
+  "&frac18;": "⅛",
+  "&frac23;": "⅔",
+  "&frac25;": "⅖",
+  "&frac34;": "¾",
+  "&frac35;": "⅗",
+  "&frac38;": "⅜",
+  "&frac45;": "⅘",
+  "&frac56;": "⅚",
+  "&frac58;": "⅝",
+  "&frac78;": "⅞",
+  "&frasl;": "⁄",
+  "&frown;": "⌢",
+  "&fscr;": "𝒻",
+  "&gE;": "≧",
+  "&gEl;": "⪌",
+  "&gacute;": "ǵ",
+  "&gamma;": "γ",
+  "&gammad;": "ϝ",
+  "&gap;": "⪆",
+  "&gbreve;": "ğ",
+  "&gcirc;": "ĝ",
+  "&gcy;": "г",
+  "&gdot;": "ġ",
+  "&ge;": "≥",
+  "&gel;": "⋛",
+  "&geq;": "≥",
+  "&geqq;": "≧",
+  "&geqslant;": "⩾",
+  "&ges;": "⩾",
+  "&gescc;": "⪩",
+  "&gesdot;": "⪀",
+  "&gesdoto;": "⪂",
+  "&gesdotol;": "⪄",
+  "&gesl;": "⋛︀",
+  "&gesles;": "⪔",
+  "&gfr;": "𝔤",
+  "&gg;": "≫",
+  "&ggg;": "⋙",
+  "&gimel;": "ℷ",
+  "&gjcy;": "ѓ",
+  "&gl;": "≷",
+  "&glE;": "⪒",
+  "&gla;": "⪥",
+  "&glj;": "⪤",
+  "&gnE;": "≩",
+  "&gnap;": "⪊",
+  "&gnapprox;": "⪊",
+  "&gne;": "⪈",
+  "&gneq;": "⪈",
+  "&gneqq;": "≩",
+  "&gnsim;": "⋧",
+  "&gopf;": "𝕘",
+  "&grave;": "`",
+  "&gscr;": "ℊ",
+  "&gsim;": "≳",
+  "&gsime;": "⪎",
+  "&gsiml;": "⪐",
+  "&gt;": ">",
+  "&gtcc;": "⪧",
+  "&gtcir;": "⩺",
+  "&gtdot;": "⋗",
+  "&gtlPar;": "⦕",
+  "&gtquest;": "⩼",
+  "&gtrapprox;": "⪆",
+  "&gtrarr;": "⥸",
+  "&gtrdot;": "⋗",
+  "&gtreqless;": "⋛",
+  "&gtreqqless;": "⪌",
+  "&gtrless;": "≷",
+  "&gtrsim;": "≳",
+  "&gvertneqq;": "≩︀",
+  "&gvnE;": "≩︀",
+  "&hArr;": "⇔",
+  "&hairsp;": " ",
+  "&half;": "½",
+  "&hamilt;": "ℋ",
+  "&hardcy;": "ъ",
+  "&harr;": "↔",
+  "&harrcir;": "⥈",
+  "&harrw;": "↭",
+  "&hbar;": "ℏ",
+  "&hcirc;": "ĥ",
+  "&hearts;": "♥",
+  "&heartsuit;": "♥",
+  "&hellip;": "…",
+  "&hercon;": "⊹",
+  "&hfr;": "𝔥",
+  "&hksearow;": "⤥",
+  "&hkswarow;": "⤦",
+  "&hoarr;": "⇿",
+  "&homtht;": "∻",
+  "&hookleftarrow;": "↩",
+  "&hookrightarrow;": "↪",
+  "&hopf;": "𝕙",
+  "&horbar;": "―",
+  "&hscr;": "𝒽",
+  "&hslash;": "ℏ",
+  "&hstrok;": "ħ",
+  "&hybull;": "⁃",
+  "&hyphen;": "‐",
+  "&iacute;": "í",
+  "&ic;": "⁣",
+  "&icirc;": "î",
+  "&icy;": "и",
+  "&iecy;": "е",
+  "&iexcl;": "¡",
+  "&iff;": "⇔",
+  "&ifr;": "𝔦",
+  "&igrave;": "ì",
+  "&ii;": "ⅈ",
+  "&iiiint;": "⨌",
+  "&iiint;": "∭",
+  "&iinfin;": "⧜",
+  "&iiota;": "℩",
+  "&ijlig;": "ij",
+  "&imacr;": "ī",
+  "&image;": "ℑ",
+  "&imagline;": "ℐ",
+  "&imagpart;": "ℑ",
+  "&imath;": "ı",
+  "&imof;": "⊷",
+  "&imped;": "Ƶ",
+  "&in;": "∈",
+  "&incare;": "℅",
+  "&infin;": "∞",
+  "&infintie;": "⧝",
+  "&inodot;": "ı",
+  "&int;": "∫",
+  "&intcal;": "⊺",
+  "&integers;": "ℤ",
+  "&intercal;": "⊺",
+  "&intlarhk;": "⨗",
+  "&intprod;": "⨼",
+  "&iocy;": "ё",
+  "&iogon;": "į",
+  "&iopf;": "𝕚",
+  "&iota;": "ι",
+  "&iprod;": "⨼",
+  "&iquest;": "¿",
+  "&iscr;": "𝒾",
+  "&isin;": "∈",
+  "&isinE;": "⋹",
+  "&isindot;": "⋵",
+  "&isins;": "⋴",
+  "&isinsv;": "⋳",
+  "&isinv;": "∈",
+  "&it;": "⁢",
+  "&itilde;": "ĩ",
+  "&iukcy;": "і",
+  "&iuml;": "ï",
+  "&jcirc;": "ĵ",
+  "&jcy;": "й",
+  "&jfr;": "𝔧",
+  "&jmath;": "ȷ",
+  "&jopf;": "𝕛",
+  "&jscr;": "𝒿",
+  "&jsercy;": "ј",
+  "&jukcy;": "є",
+  "&kappa;": "κ",
+  "&kappav;": "ϰ",
+  "&kcedil;": "ķ",
+  "&kcy;": "к",
+  "&kfr;": "𝔨",
+  "&kgreen;": "ĸ",
+  "&khcy;": "х",
+  "&kjcy;": "ќ",
+  "&kopf;": "𝕜",
+  "&kscr;": "𝓀",
+  "&lAarr;": "⇚",
+  "&lArr;": "⇐",
+  "&lAtail;": "⤛",
+  "&lBarr;": "⤎",
+  "&lE;": "≦",
+  "&lEg;": "⪋",
+  "&lHar;": "⥢",
+  "&lacute;": "ĺ",
+  "&laemptyv;": "⦴",
+  "&lagran;": "ℒ",
+  "&lambda;": "λ",
+  "&lang;": "⟨",
+  "&langd;": "⦑",
+  "&langle;": "⟨",
+  "&lap;": "⪅",
+  "&laquo;": "«",
+  "&larr;": "←",
+  "&larrb;": "⇤",
+  "&larrbfs;": "⤟",
+  "&larrfs;": "⤝",
+  "&larrhk;": "↩",
+  "&larrlp;": "↫",
+  "&larrpl;": "⤹",
+  "&larrsim;": "⥳",
+  "&larrtl;": "↢",
+  "&lat;": "⪫",
+  "&latail;": "⤙",
+  "&late;": "⪭",
+  "&lates;": "⪭︀",
+  "&lbarr;": "⤌",
+  "&lbbrk;": "❲",
+  "&lbrace;": "{",
+  "&lbrack;": "[",
+  "&lbrke;": "⦋",
+  "&lbrksld;": "⦏",
+  "&lbrkslu;": "⦍",
+  "&lcaron;": "ľ",
+  "&lcedil;": "ļ",
+  "&lceil;": "⌈",
+  "&lcub;": "{",
+  "&lcy;": "л",
+  "&ldca;": "⤶",
+  "&ldquo;": "“",
+  "&ldquor;": "„",
+  "&ldrdhar;": "⥧",
+  "&ldrushar;": "⥋",
+  "&ldsh;": "↲",
+  "&le;": "≤",
+  "&leftarrow;": "←",
+  "&leftarrowtail;": "↢",
+  "&leftharpoondown;": "↽",
+  "&leftharpoonup;": "↼",
+  "&leftleftarrows;": "⇇",
+  "&leftrightarrow;": "↔",
+  "&leftrightarrows;": "⇆",
+  "&leftrightharpoons;": "⇋",
+  "&leftrightsquigarrow;": "↭",
+  "&leftthreetimes;": "⋋",
+  "&leg;": "⋚",
+  "&leq;": "≤",
+  "&leqq;": "≦",
+  "&leqslant;": "⩽",
+  "&les;": "⩽",
+  "&lescc;": "⪨",
+  "&lesdot;": "⩿",
+  "&lesdoto;": "⪁",
+  "&lesdotor;": "⪃",
+  "&lesg;": "⋚︀",
+  "&lesges;": "⪓",
+  "&lessapprox;": "⪅",
+  "&lessdot;": "⋖",
+  "&lesseqgtr;": "⋚",
+  "&lesseqqgtr;": "⪋",
+  "&lessgtr;": "≶",
+  "&lesssim;": "≲",
+  "&lfisht;": "⥼",
+  "&lfloor;": "⌊",
+  "&lfr;": "𝔩",
+  "&lg;": "≶",
+  "&lgE;": "⪑",
+  "&lhard;": "↽",
+  "&lharu;": "↼",
+  "&lharul;": "⥪",
+  "&lhblk;": "▄",
+  "&ljcy;": "љ",
+  "&ll;": "≪",
+  "&llarr;": "⇇",
+  "&llcorner;": "⌞",
+  "&llhard;": "⥫",
+  "&lltri;": "◺",
+  "&lmidot;": "ŀ",
+  "&lmoust;": "⎰",
+  "&lmoustache;": "⎰",
+  "&lnE;": "≨",
+  "&lnap;": "⪉",
+  "&lnapprox;": "⪉",
+  "&lne;": "⪇",
+  "&lneq;": "⪇",
+  "&lneqq;": "≨",
+  "&lnsim;": "⋦",
+  "&loang;": "⟬",
+  "&loarr;": "⇽",
+  "&lobrk;": "⟦",
+  "&longleftarrow;": "⟵",
+  "&longleftrightarrow;": "⟷",
+  "&longmapsto;": "⟼",
+  "&longrightarrow;": "⟶",
+  "&looparrowleft;": "↫",
+  "&looparrowright;": "↬",
+  "&lopar;": "⦅",
+  "&lopf;": "𝕝",
+  "&loplus;": "⨭",
+  "&lotimes;": "⨴",
+  "&lowast;": "∗",
+  "&lowbar;": "_",
+  "&loz;": "◊",
+  "&lozenge;": "◊",
+  "&lozf;": "⧫",
+  "&lpar;": "(",
+  "&lparlt;": "⦓",
+  "&lrarr;": "⇆",
+  "&lrcorner;": "⌟",
+  "&lrhar;": "⇋",
+  "&lrhard;": "⥭",
+  "&lrm;": "‎",
+  "&lrtri;": "⊿",
+  "&lsaquo;": "‹",
+  "&lscr;": "𝓁",
+  "&lsh;": "↰",
+  "&lsim;": "≲",
+  "&lsime;": "⪍",
+  "&lsimg;": "⪏",
+  "&lsqb;": "[",
+  "&lsquo;": "‘",
+  "&lsquor;": "‚",
+  "&lstrok;": "ł",
+  "&lt;": "<",
+  "&ltcc;": "⪦",
+  "&ltcir;": "⩹",
+  "&ltdot;": "⋖",
+  "&lthree;": "⋋",
+  "&ltimes;": "⋉",
+  "&ltlarr;": "⥶",
+  "&ltquest;": "⩻",
+  "&ltrPar;": "⦖",
+  "&ltri;": "◃",
+  "&ltrie;": "⊴",
+  "&ltrif;": "◂",
+  "&lurdshar;": "⥊",
+  "&luruhar;": "⥦",
+  "&lvertneqq;": "≨︀",
+  "&lvnE;": "≨︀",
+  "&mDDot;": "∺",
+  "&macr;": "¯",
+  "&male;": "♂",
+  "&malt;": "✠",
+  "&maltese;": "✠",
+  "&map;": "↦",
+  "&mapsto;": "↦",
+  "&mapstodown;": "↧",
+  "&mapstoleft;": "↤",
+  "&mapstoup;": "↥",
+  "&marker;": "▮",
+  "&mcomma;": "⨩",
+  "&mcy;": "м",
+  "&mdash;": "—",
+  "&measuredangle;": "∡",
+  "&mfr;": "𝔪",
+  "&mho;": "℧",
+  "&micro;": "µ",
+  "&mid;": "∣",
+  "&midast;": "*",
+  "&midcir;": "⫰",
+  "&middot;": "·",
+  "&minus;": "−",
+  "&minusb;": "⊟",
+  "&minusd;": "∸",
+  "&minusdu;": "⨪",
+  "&mlcp;": "⫛",
+  "&mldr;": "…",
+  "&mnplus;": "∓",
+  "&models;": "⊧",
+  "&mopf;": "𝕞",
+  "&mp;": "∓",
+  "&mscr;": "𝓂",
+  "&mstpos;": "∾",
+  "&mu;": "μ",
+  "&multimap;": "⊸",
+  "&mumap;": "⊸",
+  "&nGg;": "⋙̸",
+  "&nGt;": "≫⃒",
+  "&nGtv;": "≫̸",
+  "&nLeftarrow;": "⇍",
+  "&nLeftrightarrow;": "⇎",
+  "&nLl;": "⋘̸",
+  "&nLt;": "≪⃒",
+  "&nLtv;": "≪̸",
+  "&nRightarrow;": "⇏",
+  "&nVDash;": "⊯",
+  "&nVdash;": "⊮",
+  "&nabla;": "∇",
+  "&nacute;": "ń",
+  "&nang;": "∠⃒",
+  "&nap;": "≉",
+  "&napE;": "⩰̸",
+  "&napid;": "≋̸",
+  "&napos;": "ʼn",
+  "&napprox;": "≉",
+  "&natur;": "♮",
+  "&natural;": "♮",
+  "&naturals;": "ℕ",
+  "&nbsp;": " ",
+  "&nbump;": "≎̸",
+  "&nbumpe;": "≏̸",
+  "&ncap;": "⩃",
+  "&ncaron;": "ň",
+  "&ncedil;": "ņ",
+  "&ncong;": "≇",
+  "&ncongdot;": "⩭̸",
+  "&ncup;": "⩂",
+  "&ncy;": "н",
+  "&ndash;": "–",
+  "&ne;": "≠",
+  "&neArr;": "⇗",
+  "&nearhk;": "⤤",
+  "&nearr;": "↗",
+  "&nearrow;": "↗",
+  "&nedot;": "≐̸",
+  "&nequiv;": "≢",
+  "&nesear;": "⤨",
+  "&nesim;": "≂̸",
+  "&nexist;": "∄",
+  "&nexists;": "∄",
+  "&nfr;": "𝔫",
+  "&ngE;": "≧̸",
+  "&nge;": "≱",
+  "&ngeq;": "≱",
+  "&ngeqq;": "≧̸",
+  "&ngeqslant;": "⩾̸",
+  "&nges;": "⩾̸",
+  "&ngsim;": "≵",
+  "&ngt;": "≯",
+  "&ngtr;": "≯",
+  "&nhArr;": "⇎",
+  "&nharr;": "↮",
+  "&nhpar;": "⫲",
+  "&ni;": "∋",
+  "&nis;": "⋼",
+  "&nisd;": "⋺",
+  "&niv;": "∋",
+  "&njcy;": "њ",
+  "&nlArr;": "⇍",
+  "&nlE;": "≦̸",
+  "&nlarr;": "↚",
+  "&nldr;": "‥",
+  "&nle;": "≰",
+  "&nleftarrow;": "↚",
+  "&nleftrightarrow;": "↮",
+  "&nleq;": "≰",
+  "&nleqq;": "≦̸",
+  "&nleqslant;": "⩽̸",
+  "&nles;": "⩽̸",
+  "&nless;": "≮",
+  "&nlsim;": "≴",
+  "&nlt;": "≮",
+  "&nltri;": "⋪",
+  "&nltrie;": "⋬",
+  "&nmid;": "∤",
+  "&nopf;": "𝕟",
+  "&not;": "¬",
+  "&notin;": "∉",
+  "&notinE;": "⋹̸",
+  "&notindot;": "⋵̸",
+  "&notinva;": "∉",
+  "&notinvb;": "⋷",
+  "&notinvc;": "⋶",
+  "&notni;": "∌",
+  "&notniva;": "∌",
+  "&notnivb;": "⋾",
+  "&notnivc;": "⋽",
+  "&npar;": "∦",
+  "&nparallel;": "∦",
+  "&nparsl;": "⫽⃥",
+  "&npart;": "∂̸",
+  "&npolint;": "⨔",
+  "&npr;": "⊀",
+  "&nprcue;": "⋠",
+  "&npre;": "⪯̸",
+  "&nprec;": "⊀",
+  "&npreceq;": "⪯̸",
+  "&nrArr;": "⇏",
+  "&nrarr;": "↛",
+  "&nrarrc;": "⤳̸",
+  "&nrarrw;": "↝̸",
+  "&nrightarrow;": "↛",
+  "&nrtri;": "⋫",
+  "&nrtrie;": "⋭",
+  "&nsc;": "⊁",
+  "&nsccue;": "⋡",
+  "&nsce;": "⪰̸",
+  "&nscr;": "𝓃",
+  "&nshortmid;": "∤",
+  "&nshortparallel;": "∦",
+  "&nsim;": "≁",
+  "&nsime;": "≄",
+  "&nsimeq;": "≄",
+  "&nsmid;": "∤",
+  "&nspar;": "∦",
+  "&nsqsube;": "⋢",
+  "&nsqsupe;": "⋣",
+  "&nsub;": "⊄",
+  "&nsubE;": "⫅̸",
+  "&nsube;": "⊈",
+  "&nsubset;": "⊂⃒",
+  "&nsubseteq;": "⊈",
+  "&nsubseteqq;": "⫅̸",
+  "&nsucc;": "⊁",
+  "&nsucceq;": "⪰̸",
+  "&nsup;": "⊅",
+  "&nsupE;": "⫆̸",
+  "&nsupe;": "⊉",
+  "&nsupset;": "⊃⃒",
+  "&nsupseteq;": "⊉",
+  "&nsupseteqq;": "⫆̸",
+  "&ntgl;": "≹",
+  "&ntilde;": "ñ",
+  "&ntlg;": "≸",
+  "&ntriangleleft;": "⋪",
+  "&ntrianglelefteq;": "⋬",
+  "&ntriangleright;": "⋫",
+  "&ntrianglerighteq;": "⋭",
+  "&nu;": "ν",
+  "&num;": "#",
+  "&numero;": "№",
+  "&numsp;": " ",
+  "&nvDash;": "⊭",
+  "&nvHarr;": "⤄",
+  "&nvap;": "≍⃒",
+  "&nvdash;": "⊬",
+  "&nvge;": "≥⃒",
+  "&nvgt;": ">⃒",
+  "&nvinfin;": "⧞",
+  "&nvlArr;": "⤂",
+  "&nvle;": "≤⃒",
+  "&nvlt;": "<⃒",
+  "&nvltrie;": "⊴⃒",
+  "&nvrArr;": "⤃",
+  "&nvrtrie;": "⊵⃒",
+  "&nvsim;": "∼⃒",
+  "&nwArr;": "⇖",
+  "&nwarhk;": "⤣",
+  "&nwarr;": "↖",
+  "&nwarrow;": "↖",
+  "&nwnear;": "⤧",
+  "&oS;": "Ⓢ",
+  "&oacute;": "ó",
+  "&oast;": "⊛",
+  "&ocir;": "⊚",
+  "&ocirc;": "ô",
+  "&ocy;": "о",
+  "&odash;": "⊝",
+  "&odblac;": "ő",
+  "&odiv;": "⨸",
+  "&odot;": "⊙",
+  "&odsold;": "⦼",
+  "&oelig;": "œ",
+  "&ofcir;": "⦿",
+  "&ofr;": "𝔬",
+  "&ogon;": "˛",
+  "&ograve;": "ò",
+  "&ogt;": "⧁",
+  "&ohbar;": "⦵",
+  "&ohm;": "Ω",
+  "&oint;": "∮",
+  "&olarr;": "↺",
+  "&olcir;": "⦾",
+  "&olcross;": "⦻",
+  "&oline;": "‾",
+  "&olt;": "⧀",
+  "&omacr;": "ō",
+  "&omega;": "ω",
+  "&omicron;": "ο",
+  "&omid;": "⦶",
+  "&ominus;": "⊖",
+  "&oopf;": "𝕠",
+  "&opar;": "⦷",
+  "&operp;": "⦹",
+  "&oplus;": "⊕",
+  "&or;": "∨",
+  "&orarr;": "↻",
+  "&ord;": "⩝",
+  "&order;": "ℴ",
+  "&orderof;": "ℴ",
+  "&ordf;": "ª",
+  "&ordm;": "º",
+  "&origof;": "⊶",
+  "&oror;": "⩖",
+  "&orslope;": "⩗",
+  "&orv;": "⩛",
+  "&oscr;": "ℴ",
+  "&oslash;": "ø",
+  "&osol;": "⊘",
+  "&otilde;": "õ",
+  "&otimes;": "⊗",
+  "&otimesas;": "⨶",
+  "&ouml;": "ö",
+  "&ovbar;": "⌽",
+  "&par;": "∥",
+  "&para;": "¶",
+  "&parallel;": "∥",
+  "&parsim;": "⫳",
+  "&parsl;": "⫽",
+  "&part;": "∂",
+  "&pcy;": "п",
+  "&percnt;": "%",
+  "&period;": ".",
+  "&permil;": "‰",
+  "&perp;": "⊥",
+  "&pertenk;": "‱",
+  "&pfr;": "𝔭",
+  "&phi;": "φ",
+  "&phiv;": "ϕ",
+  "&phmmat;": "ℳ",
+  "&phone;": "☎",
+  "&pi;": "π",
+  "&pitchfork;": "⋔",
+  "&piv;": "ϖ",
+  "&planck;": "ℏ",
+  "&planckh;": "ℎ",
+  "&plankv;": "ℏ",
+  "&plus;": "+",
+  "&plusacir;": "⨣",
+  "&plusb;": "⊞",
+  "&pluscir;": "⨢",
+  "&plusdo;": "∔",
+  "&plusdu;": "⨥",
+  "&pluse;": "⩲",
+  "&plusmn;": "±",
+  "&plussim;": "⨦",
+  "&plustwo;": "⨧",
+  "&pm;": "±",
+  "&pointint;": "⨕",
+  "&popf;": "𝕡",
+  "&pound;": "£",
+  "&pr;": "≺",
+  "&prE;": "⪳",
+  "&prap;": "⪷",
+  "&prcue;": "≼",
+  "&pre;": "⪯",
+  "&prec;": "≺",
+  "&precapprox;": "⪷",
+  "&preccurlyeq;": "≼",
+  "&preceq;": "⪯",
+  "&precnapprox;": "⪹",
+  "&precneqq;": "⪵",
+  "&precnsim;": "⋨",
+  "&precsim;": "≾",
+  "&prime;": "′",
+  "&primes;": "ℙ",
+  "&prnE;": "⪵",
+  "&prnap;": "⪹",
+  "&prnsim;": "⋨",
+  "&prod;": "∏",
+  "&profalar;": "⌮",
+  "&profline;": "⌒",
+  "&profsurf;": "⌓",
+  "&prop;": "∝",
+  "&propto;": "∝",
+  "&prsim;": "≾",
+  "&prurel;": "⊰",
+  "&pscr;": "𝓅",
+  "&psi;": "ψ",
+  "&puncsp;": " ",
+  "&qfr;": "𝔮",
+  "&qint;": "⨌",
+  "&qopf;": "𝕢",
+  "&qprime;": "⁗",
+  "&qscr;": "𝓆",
+  "&quaternions;": "ℍ",
+  "&quatint;": "⨖",
+  "&quest;": "?",
+  "&questeq;": "≟",
+  "&quot;": "\"",
+  "&rAarr;": "⇛",
+  "&rArr;": "⇒",
+  "&rAtail;": "⤜",
+  "&rBarr;": "⤏",
+  "&rHar;": "⥤",
+  "&race;": "∽̱",
+  "&racute;": "ŕ",
+  "&radic;": "√",
+  "&raemptyv;": "⦳",
+  "&rang;": "⟩",
+  "&rangd;": "⦒",
+  "&range;": "⦥",
+  "&rangle;": "⟩",
+  "&raquo;": "»",
+  "&rarr;": "→",
+  "&rarrap;": "⥵",
+  "&rarrb;": "⇥",
+  "&rarrbfs;": "⤠",
+  "&rarrc;": "⤳",
+  "&rarrfs;": "⤞",
+  "&rarrhk;": "↪",
+  "&rarrlp;": "↬",
+  "&rarrpl;": "⥅",
+  "&rarrsim;": "⥴",
+  "&rarrtl;": "↣",
+  "&rarrw;": "↝",
+  "&ratail;": "⤚",
+  "&ratio;": "∶",
+  "&rationals;": "ℚ",
+  "&rbarr;": "⤍",
+  "&rbbrk;": "❳",
+  "&rbrace;": "}",
+  "&rbrack;": "]",
+  "&rbrke;": "⦌",
+  "&rbrksld;": "⦎",
+  "&rbrkslu;": "⦐",
+  "&rcaron;": "ř",
+  "&rcedil;": "ŗ",
+  "&rceil;": "⌉",
+  "&rcub;": "}",
+  "&rcy;": "р",
+  "&rdca;": "⤷",
+  "&rdldhar;": "⥩",
+  "&rdquo;": "”",
+  "&rdquor;": "”",
+  "&rdsh;": "↳",
+  "&real;": "ℜ",
+  "&realine;": "ℛ",
+  "&realpart;": "ℜ",
+  "&reals;": "ℝ",
+  "&rect;": "▭",
+  "&reg;": "®",
+  "&rfisht;": "⥽",
+  "&rfloor;": "⌋",
+  "&rfr;": "𝔯",
+  "&rhard;": "⇁",
+  "&rharu;": "⇀",
+  "&rharul;": "⥬",
+  "&rho;": "ρ",
+  "&rhov;": "ϱ",
+  "&rightarrow;": "→",
+  "&rightarrowtail;": "↣",
+  "&rightharpoondown;": "⇁",
+  "&rightharpoonup;": "⇀",
+  "&rightleftarrows;": "⇄",
+  "&rightleftharpoons;": "⇌",
+  "&rightrightarrows;": "⇉",
+  "&rightsquigarrow;": "↝",
+  "&rightthreetimes;": "⋌",
+  "&ring;": "˚",
+  "&risingdotseq;": "≓",
+  "&rlarr;": "⇄",
+  "&rlhar;": "⇌",
+  "&rlm;": "‏",
+  "&rmoust;": "⎱",
+  "&rmoustache;": "⎱",
+  "&rnmid;": "⫮",
+  "&roang;": "⟭",
+  "&roarr;": "⇾",
+  "&robrk;": "⟧",
+  "&ropar;": "⦆",
+  "&ropf;": "𝕣",
+  "&roplus;": "⨮",
+  "&rotimes;": "⨵",
+  "&rpar;": ")",
+  "&rpargt;": "⦔",
+  "&rppolint;": "⨒",
+  "&rrarr;": "⇉",
+  "&rsaquo;": "›",
+  "&rscr;": "𝓇",
+  "&rsh;": "↱",
+  "&rsqb;": "]",
+  "&rsquo;": "’",
+  "&rsquor;": "’",
+  "&rthree;": "⋌",
+  "&rtimes;": "⋊",
+  "&rtri;": "▹",
+  "&rtrie;": "⊵",
+  "&rtrif;": "▸",
+  "&rtriltri;": "⧎",
+  "&ruluhar;": "⥨",
+  "&rx;": "℞",
+  "&sacute;": "ś",
+  "&sbquo;": "‚",
+  "&sc;": "≻",
+  "&scE;": "⪴",
+  "&scap;": "⪸",
+  "&scaron;": "š",
+  "&sccue;": "≽",
+  "&sce;": "⪰",
+  "&scedil;": "ş",
+  "&scirc;": "ŝ",
+  "&scnE;": "⪶",
+  "&scnap;": "⪺",
+  "&scnsim;": "⋩",
+  "&scpolint;": "⨓",
+  "&scsim;": "≿",
+  "&scy;": "с",
+  "&sdot;": "⋅",
+  "&sdotb;": "⊡",
+  "&sdote;": "⩦",
+  "&seArr;": "⇘",
+  "&searhk;": "⤥",
+  "&searr;": "↘",
+  "&searrow;": "↘",
+  "&sect;": "§",
+  "&semi;": ";",
+  "&seswar;": "⤩",
+  "&setminus;": "∖",
+  "&setmn;": "∖",
+  "&sext;": "✶",
+  "&sfr;": "𝔰",
+  "&sfrown;": "⌢",
+  "&sharp;": "♯",
+  "&shchcy;": "щ",
+  "&shcy;": "ш",
+  "&shortmid;": "∣",
+  "&shortparallel;": "∥",
+  "&shy;": "­",
+  "&sigma;": "σ",
+  "&sigmaf;": "ς",
+  "&sigmav;": "ς",
+  "&sim;": "∼",
+  "&simdot;": "⩪",
+  "&sime;": "≃",
+  "&simeq;": "≃",
+  "&simg;": "⪞",
+  "&simgE;": "⪠",
+  "&siml;": "⪝",
+  "&simlE;": "⪟",
+  "&simne;": "≆",
+  "&simplus;": "⨤",
+  "&simrarr;": "⥲",
+  "&slarr;": "←",
+  "&smallsetminus;": "∖",
+  "&smashp;": "⨳",
+  "&smeparsl;": "⧤",
+  "&smid;": "∣",
+  "&smile;": "⌣",
+  "&smt;": "⪪",
+  "&smte;": "⪬",
+  "&smtes;": "⪬︀",
+  "&softcy;": "ь",
+  "&sol;": "/",
+  "&solb;": "⧄",
+  "&solbar;": "⌿",
+  "&sopf;": "𝕤",
+  "&spades;": "♠",
+  "&spadesuit;": "♠",
+  "&spar;": "∥",
+  "&sqcap;": "⊓",
+  "&sqcaps;": "⊓︀",
+  "&sqcup;": "⊔",
+  "&sqcups;": "⊔︀",
+  "&sqsub;": "⊏",
+  "&sqsube;": "⊑",
+  "&sqsubset;": "⊏",
+  "&sqsubseteq;": "⊑",
+  "&sqsup;": "⊐",
+  "&sqsupe;": "⊒",
+  "&sqsupset;": "⊐",
+  "&sqsupseteq;": "⊒",
+  "&squ;": "□",
+  "&square;": "□",
+  "&squarf;": "▪",
+  "&squf;": "▪",
+  "&srarr;": "→",
+  "&sscr;": "𝓈",
+  "&ssetmn;": "∖",
+  "&ssmile;": "⌣",
+  "&sstarf;": "⋆",
+  "&star;": "☆",
+  "&starf;": "★",
+  "&straightepsilon;": "ϵ",
+  "&straightphi;": "ϕ",
+  "&strns;": "¯",
+  "&sub;": "⊂",
+  "&subE;": "⫅",
+  "&subdot;": "⪽",
+  "&sube;": "⊆",
+  "&subedot;": "⫃",
+  "&submult;": "⫁",
+  "&subnE;": "⫋",
+  "&subne;": "⊊",
+  "&subplus;": "⪿",
+  "&subrarr;": "⥹",
+  "&subset;": "⊂",
+  "&subseteq;": "⊆",
+  "&subseteqq;": "⫅",
+  "&subsetneq;": "⊊",
+  "&subsetneqq;": "⫋",
+  "&subsim;": "⫇",
+  "&subsub;": "⫕",
+  "&subsup;": "⫓",
+  "&succ;": "≻",
+  "&succapprox;": "⪸",
+  "&succcurlyeq;": "≽",
+  "&succeq;": "⪰",
+  "&succnapprox;": "⪺",
+  "&succneqq;": "⪶",
+  "&succnsim;": "⋩",
+  "&succsim;": "≿",
+  "&sum;": "∑",
+  "&sung;": "♪",
+  "&sup1;": "¹",
+  "&sup2;": "²",
+  "&sup3;": "³",
+  "&sup;": "⊃",
+  "&supE;": "⫆",
+  "&supdot;": "⪾",
+  "&supdsub;": "⫘",
+  "&supe;": "⊇",
+  "&supedot;": "⫄",
+  "&suphsol;": "⟉",
+  "&suphsub;": "⫗",
+  "&suplarr;": "⥻",
+  "&supmult;": "⫂",
+  "&supnE;": "⫌",
+  "&supne;": "⊋",
+  "&supplus;": "⫀",
+  "&supset;": "⊃",
+  "&supseteq;": "⊇",
+  "&supseteqq;": "⫆",
+  "&supsetneq;": "⊋",
+  "&supsetneqq;": "⫌",
+  "&supsim;": "⫈",
+  "&supsub;": "⫔",
+  "&supsup;": "⫖",
+  "&swArr;": "⇙",
+  "&swarhk;": "⤦",
+  "&swarr;": "↙",
+  "&swarrow;": "↙",
+  "&swnwar;": "⤪",
+  "&szlig;": "ß",
+  "&target;": "⌖",
+  "&tau;": "τ",
+  "&tbrk;": "⎴",
+  "&tcaron;": "ť",
+  "&tcedil;": "ţ",
+  "&tcy;": "т",
+  "&tdot;": "⃛",
+  "&telrec;": "⌕",
+  "&tfr;": "𝔱",
+  "&there4;": "∴",
+  "&therefore;": "∴",
+  "&theta;": "θ",
+  "&thetasym;": "ϑ",
+  "&thetav;": "ϑ",
+  "&thickapprox;": "≈",
+  "&thicksim;": "∼",
+  "&thinsp;": " ",
+  "&thkap;": "≈",
+  "&thksim;": "∼",
+  "&thorn;": "þ",
+  "&tilde;": "˜",
+  "&times;": "×",
+  "&timesb;": "⊠",
+  "&timesbar;": "⨱",
+  "&timesd;": "⨰",
+  "&tint;": "∭",
+  "&toea;": "⤨",
+  "&top;": "⊤",
+  "&topbot;": "⌶",
+  "&topcir;": "⫱",
+  "&topf;": "𝕥",
+  "&topfork;": "⫚",
+  "&tosa;": "⤩",
+  "&tprime;": "‴",
+  "&trade;": "™",
+  "&triangle;": "▵",
+  "&triangledown;": "▿",
+  "&triangleleft;": "◃",
+  "&trianglelefteq;": "⊴",
+  "&triangleq;": "≜",
+  "&triangleright;": "▹",
+  "&trianglerighteq;": "⊵",
+  "&tridot;": "◬",
+  "&trie;": "≜",
+  "&triminus;": "⨺",
+  "&triplus;": "⨹",
+  "&trisb;": "⧍",
+  "&tritime;": "⨻",
+  "&trpezium;": "⏢",
+  "&tscr;": "𝓉",
+  "&tscy;": "ц",
+  "&tshcy;": "ћ",
+  "&tstrok;": "ŧ",
+  "&twixt;": "≬",
+  "&twoheadleftarrow;": "↞",
+  "&twoheadrightarrow;": "↠",
+  "&uArr;": "⇑",
+  "&uHar;": "⥣",
+  "&uacute;": "ú",
+  "&uarr;": "↑",
+  "&ubrcy;": "ў",
+  "&ubreve;": "ŭ",
+  "&ucirc;": "û",
+  "&ucy;": "у",
+  "&udarr;": "⇅",
+  "&udblac;": "ű",
+  "&udhar;": "⥮",
+  "&ufisht;": "⥾",
+  "&ufr;": "𝔲",
+  "&ugrave;": "ù",
+  "&uharl;": "↿",
+  "&uharr;": "↾",
+  "&uhblk;": "▀",
+  "&ulcorn;": "⌜",
+  "&ulcorner;": "⌜",
+  "&ulcrop;": "⌏",
+  "&ultri;": "◸",
+  "&umacr;": "ū",
+  "&uml;": "¨",
+  "&uogon;": "ų",
+  "&uopf;": "𝕦",
+  "&uparrow;": "↑",
+  "&updownarrow;": "↕",
+  "&upharpoonleft;": "↿",
+  "&upharpoonright;": "↾",
+  "&uplus;": "⊎",
+  "&upsi;": "υ",
+  "&upsih;": "ϒ",
+  "&upsilon;": "υ",
+  "&upuparrows;": "⇈",
+  "&urcorn;": "⌝",
+  "&urcorner;": "⌝",
+  "&urcrop;": "⌎",
+  "&uring;": "ů",
+  "&urtri;": "◹",
+  "&uscr;": "𝓊",
+  "&utdot;": "⋰",
+  "&utilde;": "ũ",
+  "&utri;": "▵",
+  "&utrif;": "▴",
+  "&uuarr;": "⇈",
+  "&uuml;": "ü",
+  "&uwangle;": "⦧",
+  "&vArr;": "⇕",
+  "&vBar;": "⫨",
+  "&vBarv;": "⫩",
+  "&vDash;": "⊨",
+  "&vangrt;": "⦜",
+  "&varepsilon;": "ϵ",
+  "&varkappa;": "ϰ",
+  "&varnothing;": "∅",
+  "&varphi;": "ϕ",
+  "&varpi;": "ϖ",
+  "&varpropto;": "∝",
+  "&varr;": "↕",
+  "&varrho;": "ϱ",
+  "&varsigma;": "ς",
+  "&varsubsetneq;": "⊊︀",
+  "&varsubsetneqq;": "⫋︀",
+  "&varsupsetneq;": "⊋︀",
+  "&varsupsetneqq;": "⫌︀",
+  "&vartheta;": "ϑ",
+  "&vartriangleleft;": "⊲",
+  "&vartriangleright;": "⊳",
+  "&vcy;": "в",
+  "&vdash;": "⊢",
+  "&vee;": "∨",
+  "&veebar;": "⊻",
+  "&veeeq;": "≚",
+  "&vellip;": "⋮",
+  "&verbar;": "|",
+  "&vert;": "|",
+  "&vfr;": "𝔳",
+  "&vltri;": "⊲",
+  "&vnsub;": "⊂⃒",
+  "&vnsup;": "⊃⃒",
+  "&vopf;": "𝕧",
+  "&vprop;": "∝",
+  "&vrtri;": "⊳",
+  "&vscr;": "𝓋",
+  "&vsubnE;": "⫋︀",
+  "&vsubne;": "⊊︀",
+  "&vsupnE;": "⫌︀",
+  "&vsupne;": "⊋︀",
+  "&vzigzag;": "⦚",
+  "&wcirc;": "ŵ",
+  "&wedbar;": "⩟",
+  "&wedge;": "∧",
+  "&wedgeq;": "≙",
+  "&weierp;": "℘",
+  "&wfr;": "𝔴",
+  "&wopf;": "𝕨",
+  "&wp;": "℘",
+  "&wr;": "≀",
+  "&wreath;": "≀",
+  "&wscr;": "𝓌",
+  "&xcap;": "⋂",
+  "&xcirc;": "◯",
+  "&xcup;": "⋃",
+  "&xdtri;": "▽",
+  "&xfr;": "𝔵",
+  "&xhArr;": "⟺",
+  "&xharr;": "⟷",
+  "&xi;": "ξ",
+  "&xlArr;": "⟸",
+  "&xlarr;": "⟵",
+  "&xmap;": "⟼",
+  "&xnis;": "⋻",
+  "&xodot;": "⨀",
+  "&xopf;": "𝕩",
+  "&xoplus;": "⨁",
+  "&xotime;": "⨂",
+  "&xrArr;": "⟹",
+  "&xrarr;": "⟶",
+  "&xscr;": "𝓍",
+  "&xsqcup;": "⨆",
+  "&xuplus;": "⨄",
+  "&xutri;": "△",
+  "&xvee;": "⋁",
+  "&xwedge;": "⋀",
+  "&yacute;": "ý",
+  "&yacy;": "я",
+  "&ycirc;": "ŷ",
+  "&ycy;": "ы",
+  "&yen;": "¥",
+  "&yfr;": "𝔶",
+  "&yicy;": "ї",
+  "&yopf;": "𝕪",
+  "&yscr;": "𝓎",
+  "&yucy;": "ю",
+  "&yuml;": "ÿ",
+  "&zacute;": "ź",
+  "&zcaron;": "ž",
+  "&zcy;": "з",
+  "&zdot;": "ż",
+  "&zeetrf;": "ℨ",
+  "&zeta;": "ζ",
+  "&zfr;": "𝔷",
+  "&zhcy;": "ж",
+  "&zigrarr;": "⇝",
+  "&zopf;": "𝕫",
+  "&zscr;": "𝓏",
+  "&zwj;": "‍",
+  "&zwnj;": "‌"
+};
diff --git a/lib/src/ast.dart b/lib/src/ast.dart
index c9fd8e7..3fb2561 100644
--- a/lib/src/ast.dart
+++ b/lib/src/ast.dart
@@ -58,7 +58,7 @@
     final children = this.children;
     return children == null
         ? ''
-        : children.map((child) => child.textContent).join('');
+        : children.map((child) => child.textContent).join();
   }
 }
 
diff --git a/lib/src/block_parser.dart b/lib/src/block_parser.dart
index beaa46a..9289ae1 100644
--- a/lib/src/block_parser.dart
+++ b/lib/src/block_parser.dart
@@ -91,6 +91,10 @@
     _pos++;
   }
 
+  void retreat() {
+    _pos--;
+  }
+
   bool get isDone => _pos >= lines.length;
 
   /// Gets whether or not the current line matches the given pattern.
@@ -107,11 +111,28 @@
 
   List<Node> parseLines() {
     final blocks = <Node>[];
+
+    // If the `_pos` does not change before and after `parse()`, never try to
+    // parse the line at `_pos` with the same syntax again.
+    // For example the `TableSyntax` might not advance the `_pos` in `parse`
+    // method, beause of the header row does not match the delimiter row in the
+    // number of cells, which makes a table like structure not be recognized.
+    BlockSyntax? neverMatch;
+
     while (!isDone) {
       for (final syntax in blockSyntaxes) {
+        if (neverMatch == syntax) {
+          continue;
+        }
+
         if (syntax.canParse(this)) {
+          final positionBefore = _pos;
           final block = syntax.parse(this);
-          if (block != null) blocks.add(block);
+          if (block != null) {
+            blocks.add(block);
+          }
+          neverMatch = _pos != positionBefore ? null : syntax;
+
           break;
         }
       }
diff --git a/lib/src/block_syntaxes/blockquote_syntax.dart b/lib/src/block_syntaxes/blockquote_syntax.dart
index 7d16e55..00b7560 100644
--- a/lib/src/block_syntaxes/blockquote_syntax.dart
+++ b/lib/src/block_syntaxes/blockquote_syntax.dart
@@ -21,7 +21,7 @@
     // Grab all of the lines that form the blockquote, stripping off the ">".
     final childLines = <String>[];
 
-    bool encounteredCodeBlock = false;
+    var encounteredCodeBlock = false;
     while (!parser.isDone) {
       final match = pattern.firstMatch(parser.current);
       if (match != null) {
diff --git a/lib/src/block_syntaxes/fenced_code_block_syntax.dart b/lib/src/block_syntaxes/fenced_code_block_syntax.dart
index a64e031..0b55f4a 100644
--- a/lib/src/block_syntaxes/fenced_code_block_syntax.dart
+++ b/lib/src/block_syntaxes/fenced_code_block_syntax.dart
@@ -28,8 +28,8 @@
     //
     // > If the info string comes after a backtick fence, it may not contain
     // > any backtick characters.
-    return (codeFence.codeUnitAt(0) != $backquote ||
-        !infoString!.codeUnits.contains($backquote));
+    return codeFence.codeUnitAt(0) != $backquote ||
+        !infoString!.codeUnits.contains($backquote);
   }
 
   @override
@@ -81,6 +81,7 @@
       if (firstSpace >= 0) {
         infoString = infoString.substring(0, firstSpace);
       }
+      infoString = decodeHtmlCharacters(infoString);
       if (parser.document.encodeHtml) {
         infoString = escapeHtmlAttribute(infoString);
       }
diff --git a/lib/src/block_syntaxes/list_syntax.dart b/lib/src/block_syntaxes/list_syntax.dart
index 4b7619f..7b6d0b1 100644
--- a/lib/src/block_syntaxes/list_syntax.dart
+++ b/lib/src/block_syntaxes/list_syntax.dart
@@ -83,13 +83,13 @@
       final pattern = RegExp(r'^ {0,3}\[([ xX])\][ \t]');
 
       if (taskListParserEnabled && pattern.hasMatch(text)) {
-        return text.replaceFirstMapped(pattern, ((match) {
+        return text.replaceFirstMapped(pattern, (match) {
           taskListItemState = match[1] == ' '
               ? TaskListItemState.unchecked
               : TaskListItemState.checked;
 
           return '';
-        }));
+        });
       } else {
         taskListItemState = null;
         return text;
diff --git a/lib/src/block_syntaxes/table_syntax.dart b/lib/src/block_syntaxes/table_syntax.dart
index a63540f..fbd63c9 100644
--- a/lib/src/block_syntaxes/table_syntax.dart
+++ b/lib/src/block_syntaxes/table_syntax.dart
@@ -36,6 +36,7 @@
     final columnCount = alignments.length;
     final headRow = _parseRow(parser, alignments, 'th');
     if (headRow.children!.length != columnCount) {
+      parser.retreat();
       return null;
     }
     final head = Element('thead', [headRow]);
@@ -50,7 +51,7 @@
       if (children != null) {
         while (children.length < columnCount) {
           // Insert synthetic empty cells.
-          children.add(Element.empty('td'));
+          children.add(Element('td', const []));
         }
         while (children.length > columnCount) {
           children.removeLast();
@@ -71,29 +72,42 @@
   }
 
   List<String?> _parseAlignments(String line) {
-    final startIndex = _walkPastOpeningPipe(line);
+    final columns = <String?>[];
+    // Set the value to `true` when hitting a non whitespace character other
+    // than the first pipe character.
+    var started = false;
+    var hitDash = false;
+    String? alignment;
 
-    var endIndex = line.length - 1;
-    while (endIndex > 0) {
-      final ch = line.codeUnitAt(endIndex);
-      if (ch == $pipe) {
-        endIndex--;
-        break;
+    for (var i = 0; i < line.length; i++) {
+      final char = line.codeUnitAt(i);
+      if (char == $space || char == $tab || (!started && char == $pipe)) {
+        continue;
       }
-      if (ch != $space && ch != $tab) {
-        break;
+      started = true;
+
+      if (char == $colon) {
+        if (hitDash) {
+          alignment = alignment == 'left' ? 'center' : 'right';
+        } else {
+          alignment = 'left';
+        }
       }
-      endIndex--;
+
+      if (char == $pipe) {
+        columns.add(alignment);
+        hitDash = false;
+        alignment = null;
+      } else {
+        hitDash = true;
+      }
     }
 
-    // Optimization: We walk [line] too many times. One lap should do it.
-    return line.substring(startIndex, endIndex + 1).split('|').map((column) {
-      column = column.trim();
-      if (column.startsWith(':') && column.endsWith(':')) return 'center';
-      if (column.startsWith(':')) return 'left';
-      if (column.endsWith(':')) return 'right';
-      return null;
-    }).toList(growable: false);
+    if (hitDash) {
+      columns.add(alignment);
+    }
+
+    return columns;
   }
 
   /// Parses a table row at the current line into a table row element, with
@@ -166,7 +180,7 @@
 
     for (var i = 0; i < row.length && i < alignments.length; i++) {
       if (alignments[i] == null) continue;
-      row[i].attributes['style'] = 'text-align: ${alignments[i]};';
+      row[i].attributes['align'] = '${alignments[i]}';
     }
 
     return Element('tr', row);
diff --git a/lib/src/extension_set.dart b/lib/src/extension_set.dart
index d9d2e38..a7bf1ee 100644
--- a/lib/src/extension_set.dart
+++ b/lib/src/extension_set.dart
@@ -1,11 +1,10 @@
-import 'package:markdown/src/block_syntaxes/ordered_list_with_checkbox_syntax.dart';
-import 'package:markdown/src/block_syntaxes/unordered_list_with_checkbox_syntax.dart';
-
 import 'block_syntaxes/block_syntax.dart';
 import 'block_syntaxes/fenced_code_block_syntax.dart';
 import 'block_syntaxes/header_with_id_syntax.dart';
+import 'block_syntaxes/ordered_list_with_checkbox_syntax.dart';
 import 'block_syntaxes/setext_header_with_id_syntax.dart';
 import 'block_syntaxes/table_syntax.dart';
+import 'block_syntaxes/unordered_list_with_checkbox_syntax.dart';
 import 'inline_syntaxes/autolink_extension_syntax.dart';
 import 'inline_syntaxes/color_swatch_syntax.dart';
 import 'inline_syntaxes/emoji_syntax.dart';
diff --git a/lib/src/html_renderer.dart b/lib/src/html_renderer.dart
index a6abfcd..8b7dedc 100644
--- a/lib/src/html_renderer.dart
+++ b/lib/src/html_renderer.dart
@@ -77,7 +77,12 @@
   'main',
   'nav',
   'section',
-  'table'
+  'table',
+  'thead',
+  'tbody',
+  'th',
+  'tr',
+  'td',
 ];
 
 /// Translates a parsed AST to HTML.
diff --git a/lib/src/inline_parser.dart b/lib/src/inline_parser.dart
index 603d3da..e0f08c6 100644
--- a/lib/src/inline_parser.dart
+++ b/lib/src/inline_parser.dart
@@ -7,6 +7,7 @@
 import 'document.dart';
 import 'inline_syntaxes/autolink_syntax.dart';
 import 'inline_syntaxes/code_syntax.dart';
+import 'inline_syntaxes/decode_html_syntax.dart';
 import 'inline_syntaxes/delimiter_syntax.dart';
 import 'inline_syntaxes/email_autolink_syntax.dart';
 import 'inline_syntaxes/emphasis_syntax.dart';
@@ -92,6 +93,7 @@
     if (document.withDefaultInlineSyntaxes) {
       // Custom link resolvers go after the generic text syntax.
       syntaxes.addAll([
+        DecodeHtmlSyntax(),
         LinkSyntax(linkResolver: document.linkResolver),
         ImageSyntax(linkResolver: document.imageLinkResolver)
       ]);
@@ -153,9 +155,9 @@
       return;
     }
     final syntax = delimiter.syntax;
-    if (syntax is LinkSyntax && syntaxes.any(((e) => e is LinkSyntax))) {
+    if (syntax is LinkSyntax && syntaxes.any((e) => e is LinkSyntax)) {
       final nodeIndex = _tree.lastIndexWhere((n) => n == delimiter.node);
-      final linkNode = syntax.close(this, delimiter, null, getChildren: () {
+      final linkNodes = syntax.close(this, delimiter, null, getChildren: () {
         _processDelimiterRun(index);
         // All of the nodes which lie past [index] are children of this
         // link/image.
@@ -163,14 +165,14 @@
         _tree.removeRange(nodeIndex + 1, _tree.length);
         return children;
       });
-      if (linkNode != null) {
+      if (linkNodes != null) {
         _delimiterStack.removeAt(index);
         if (delimiter.char == $lbracket) {
           for (final d in _delimiterStack.sublist(0, index)) {
             if (d.char == $lbracket) d.isActive = false;
           }
         }
-        _tree[nodeIndex] = linkNode;
+        _tree.replaceRange(nodeIndex, _tree.length, linkNodes);
         advanceBy(1);
         start = pos;
       } else {
@@ -240,7 +242,7 @@
         final openerTextNodeIndex = _tree.indexOf(openerTextNode);
         final closerTextNode = closer.node;
         var closerTextNodeIndex = _tree.indexOf(closerTextNode);
-        final node = opener.syntax.close(
+        final nodes = opener.syntax.close(
           this,
           opener,
           closer,
@@ -255,7 +257,7 @@
         _tree.replaceRange(
           openerTextNodeIndex + 1,
           closerTextNodeIndex,
-          [node!],
+          nodes!,
         );
         // Slide [closerTextNodeIndex] back accordingly.
         closerTextNodeIndex = openerTextNodeIndex + 2;
diff --git a/lib/src/inline_syntaxes/autolink_extension_syntax.dart b/lib/src/inline_syntaxes/autolink_extension_syntax.dart
index ff2bc59..152b9a4 100644
--- a/lib/src/inline_syntaxes/autolink_extension_syntax.dart
+++ b/lib/src/inline_syntaxes/autolink_extension_syntax.dart
@@ -3,134 +3,128 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import '../ast.dart';
+import '../charcode.dart';
 import '../inline_parser.dart';
 import '../util.dart';
 import 'inline_syntax.dart';
 
-/// Matches autolinks like `http://foo.com`.
+/// Matches autolinks like `http://foo.com` and `foo@bar.com`.
 class AutolinkExtensionSyntax extends InlineSyntax {
-  /// Broken up parts of the autolink regex for reusability and readability
+  static const _linkPattern =
+      // Autolinks can only come at the beginning of a line, after whitespace,
+      // or any of the delimiting characters *, _, ~, and (.
+      r'(?<=^|[\s*_~(>])'
 
-  // Autolinks can only come at the beginning of a line, after whitespace, or
-  // any of the delimiting characters *, _, ~, and (.
-  static const start = r'(?:^|[\s*_~(>])';
+      // An extended url autolink will be recognised when one of the schemes
+      // http://, or https://, followed by a valid domain. See
+      // https://github.github.com/gfm/#extended-url-autolink.
+      r'(?:(?:https?|ftp):\/\/|www\.)'
 
-  // An extended url autolink will be recognized when one of the schemes
-  // http://, https://, or ftp://, followed by a valid domain
-  static const scheme = r'(?:(?:https?|ftp):\/\/|www\.)';
+      // A valid domain consists of segments of alphanumeric characters,
+      // underscores (_) and hyphens (-) separated by periods (.). There must
+      // be at least one period, and no underscores may be present in the last
+      // two segments of the domain. See
+      // https://github.github.com/gfm/#valid-domain.
+      r'(?:[-_a-z0-9]+\.)*(?:[-a-z0-9]+\.[-a-z0-9]+)'
 
-  // A valid domain consists of alphanumeric characters, underscores (_),
-  // hyphens (-) and periods (.). There must be at least one period, and no
-  // underscores may be present in the last two segments of the domain.
-  static const domainPart = r'\w\-';
-  static const domain = '[$domainPart][$domainPart.]+';
+      // After a valid domain, zero or more non-space non-< characters may
+      // follow.
+      r'[^\s<]*'
 
-  // A valid domain consists of alphanumeric characters, underscores (_),
-  // hyphens (-) and periods (.).
-  static const path = r'[^\s<]*';
+      // Trailing punctuation (specifically, ?, !, ., ,, :, *, _, and ~) will
+      // not be considered part of the autolink, though they may be included in
+      // the interior of the link. See
+      // https://github.github.com/gfm/#extended-autolink-path-validation.
+      '(?<![?!.,:*_~])';
 
-  // Trailing punctuation (specifically, ?, !, ., ,, :, *, _, and ~) will not
-  // be considered part of the autolink
-  static const truncatingPunctuationPositive = '[?!.,:*_~]';
+  // An extended email autolink, see
+  // https://github.github.com/gfm/#extended-email-autolink.
+  static const _emailPattern =
+      r'[-_.+a-z0-9]+@(?:[-_a-z0-9]+\.)+[-_a-z0-9]*[a-z0-9](?![-_])';
 
-  static final regExpTrailingPunc = RegExp('$truncatingPunctuationPositive*\$');
-  static final regExpEndsWithColon = RegExp(r'\&[a-zA-Z0-9]+;$');
-  static final regExpWhiteSpace = RegExp(r'\s');
-
-  AutolinkExtensionSyntax() : super('$start(($scheme)($domain)($path))');
+  AutolinkExtensionSyntax()
+      : super(
+          '($_linkPattern)|($_emailPattern)',
+          caseSensitive: false,
+        );
 
   @override
   bool tryMatch(InlineParser parser, [int? startMatchPos]) {
-    return super.tryMatch(parser, parser.pos > 0 ? parser.pos - 1 : 0);
+    startMatchPos ??= parser.pos;
+    final startMatch = pattern.matchAsPrefix(parser.source, startMatchPos);
+    if (startMatch == null) {
+      return false;
+    }
+    parser.writeText();
+    return onMatch(parser, startMatch);
   }
 
   @override
   bool onMatch(InlineParser parser, Match match) {
-    var url = match[1]!;
-    var href = url;
-    var matchLength = url.length;
+    int consumeLength;
 
-    if (url[0] == '>' || url.startsWith(regExpWhiteSpace)) {
-      url = url.substring(1, url.length - 1);
-      href = href.substring(1, href.length - 1);
-      parser.pos++;
-      matchLength--;
+    final isEmailLink = match[2] != null;
+    if (isEmailLink) {
+      consumeLength = match.match.length;
+    } else {
+      consumeLength = _getConsumeLength(match.match);
     }
 
-    // Prevent accidental standard autolink matches
-    if (url.endsWith('>') && parser.source[parser.pos - 1] == '<') {
-      return false;
+    var text = match.match.substring(0, consumeLength);
+    text = parser.encodeHtml ? escapeHtml(text) : text;
+
+    var destination = text;
+    if (isEmailLink) {
+      destination = 'mailto:$destination';
+    } else if (destination[0] == 'w') {
+      // When there is no scheme specified, insert the scheme `http`.
+      destination = 'http://$destination';
     }
 
-    // When an autolink ends in ), we scan the entire autolink for the total
-    // number of parentheses. If there is a greater number of closing
-    // parentheses than opening ones, we don’t consider the last character
-    // part of the autolink, in order to facilitate including an autolink
-    // inside a parenthesis:
-    // https://github.github.com/gfm/#example-600
-    if (url.endsWith(')')) {
-      final opening = _countChars(url, '(');
-      final closing = _countChars(url, ')');
+    final anchor = Element.text('a', text)
+      ..attributes['href'] = Uri.encodeFull(destination);
 
-      if (closing > opening) {
-        url = url.substring(0, url.length - 1);
-        href = href.substring(0, href.length - 1);
-        matchLength--;
-      }
-    }
+    parser
+      ..addNode(anchor)
+      ..consume(consumeLength);
 
-    // Trailing punctuation (specifically, ?, !, ., ,, :, *, _, and ~) will
-    // not be considered part of the autolink, though they may be included
-    // in the interior of the link:
-    // https://github.github.com/gfm/#example-599
-    final trailingPunc = regExpTrailingPunc.firstMatch(url);
-    if (trailingPunc != null) {
-      final trailingLength = trailingPunc.match.length;
-      url = url.substring(0, url.length - trailingLength);
-      href = href.substring(0, href.length - trailingLength);
-      matchLength -= trailingLength;
-    }
-
-    // If an autolink ends in a semicolon (;), we check to see if it appears
-    // to resemble an
-    // [entity reference](https://github.github.com/gfm/#entity-references);
-    // if the preceding text is & followed by one or more alphanumeric
-    // characters. If so, it is excluded from the autolink:
-    // https://github.github.com/gfm/#example-602
-    if (url.endsWith(';')) {
-      final entityRef = regExpEndsWithColon.firstMatch(url);
-      if (entityRef != null) {
-        // Strip out HTML entity reference
-        final entityRefLength = entityRef.match.length;
-        url = url.substring(0, url.length - entityRefLength);
-        href = href.substring(0, href.length - entityRefLength);
-        matchLength -= entityRefLength;
-      }
-    }
-
-    // The scheme http will be inserted automatically
-    if (!href.startsWith('http://') &&
-        !href.startsWith('https://') &&
-        !href.startsWith('ftp://')) {
-      href = 'http://$href';
-    }
-
-    final text = parser.encodeHtml ? escapeHtml(url) : url;
-    final anchor = Element.text('a', text);
-    anchor.attributes['href'] = Uri.encodeFull(href);
-    parser.addNode(anchor);
-
-    parser.consume(matchLength);
-    return false;
+    return true;
   }
 
-  int _countChars(String input, String char) {
-    var count = 0;
+  int _getConsumeLength(String text) {
+    var excludedLength = 0;
 
-    for (var i = 0; i < input.length; i++) {
-      if (input[i] == char) count++;
+    // When an autolink ends in `)`, see
+    // https://github.github.com/gfm/#example-625.
+    if (text.endsWith(')')) {
+      final match = RegExp(r'(\(.*)?(\)+)$').firstMatch(text)!;
+
+      if (match[1] == null) {
+        excludedLength = match[2]!.length;
+      } else {
+        var parenCount = 0;
+        for (var i = 0; i < text.length; i++) {
+          final char = text.codeUnitAt(i);
+          if (char == $lparen) {
+            parenCount++;
+          } else if (char == $rparen) {
+            parenCount--;
+          }
+        }
+        if (parenCount < 0) {
+          excludedLength = parenCount.abs();
+        }
+      }
+    }
+    // If an autolink ends in a semicolon `;`, see
+    // https://github.github.com/gfm/#example-627
+    else if (text.endsWith(';')) {
+      final match = RegExp(r'&[0-9a-z]+;$').firstMatch(text);
+      if (match != null) {
+        excludedLength = match.match.length;
+      }
     }
 
-    return count;
+    return text.length - excludedLength;
   }
 }
diff --git a/lib/src/inline_syntaxes/decode_html_syntax.dart b/lib/src/inline_syntaxes/decode_html_syntax.dart
new file mode 100644
index 0000000..348a6b2
--- /dev/null
+++ b/lib/src/inline_syntaxes/decode_html_syntax.dart
@@ -0,0 +1,48 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import '../ast.dart';
+import '../charcode.dart';
+import '../inline_parser.dart';
+import '../patterns.dart';
+import '../util.dart';
+import 'inline_syntax.dart';
+
+/// Decodes numeric character references, for example decode `&#35;` to `#`.
+// https://spec.commonmark.org/0.30/#entity-and-numeric-character-references
+class DecodeHtmlSyntax extends InlineSyntax {
+  DecodeHtmlSyntax()
+      : super(htmlCharactersPattern.pattern,
+            caseSensitive: false, startCharacter: $ampersand);
+
+  @override
+  bool tryMatch(InlineParser parser, [int? startMatchPos]) {
+    if (parser.pos > 0 && parser.charAt(parser.pos - 1) == $backquote) {
+      return false;
+    }
+
+    final match = pattern.matchAsPrefix(parser.source, parser.pos);
+    if (match == null) {
+      return false;
+    }
+
+    // TODO(Zhiguang): Enable HTML entity decoding when working on HTML escape
+    // issues.
+    if (match[1] != null) {
+      return false;
+    }
+
+    parser.writeText();
+    if (onMatch(parser, match)) parser.consume(match.match.length);
+    return true;
+  }
+
+  @override
+  bool onMatch(InlineParser parser, Match match) {
+    final decodedText = decodeHtmlCharacterFromMatch(match);
+
+    parser.addNode(Text(decodedText));
+    return true;
+  }
+}
diff --git a/lib/src/inline_syntaxes/delimiter_syntax.dart b/lib/src/inline_syntaxes/delimiter_syntax.dart
index a616cfb..712883f 100644
--- a/lib/src/inline_syntaxes/delimiter_syntax.dart
+++ b/lib/src/inline_syntaxes/delimiter_syntax.dart
@@ -83,15 +83,15 @@
   ///
   /// If a tag can be closed at the current position, then this method calls
   /// [getChildren], in which [parser] parses any nested text into child nodes.
-  /// The returned [Node] incorpororates these child nodes.
-  Node? close(
+  /// The returned [Iterable] includes these children nodes.
+  Iterable<Node>? close(
     InlineParser parser,
     Delimiter opener,
     Delimiter closer, {
     required String tag,
     required List<Node> Function() getChildren,
   }) {
-    return Element(tag, getChildren());
+    return [Element(tag, getChildren())];
   }
 }
 
diff --git a/lib/src/inline_syntaxes/link_syntax.dart b/lib/src/inline_syntaxes/link_syntax.dart
index 7522036..0546b93 100644
--- a/lib/src/inline_syntaxes/link_syntax.dart
+++ b/lib/src/inline_syntaxes/link_syntax.dart
@@ -9,6 +9,16 @@
 import '../util.dart';
 import 'delimiter_syntax.dart';
 
+/// A helper class holds params of link context.
+/// Footnote creation needs other info in [_tryCreateReferenceLink].
+class _LinkContext {
+  final InlineParser parser;
+  final SimpleDelimiter opener;
+  final List<Node> Function() getChildren;
+
+  const _LinkContext(this.parser, this.opener, this.getChildren);
+}
+
 /// Matches links like `[blah][label]` and `[blah](url)`.
 class LinkSyntax extends DelimiterSyntax {
   static final _entirelyWhitespacePattern = RegExp(r'^\s*$');
@@ -23,13 +33,14 @@
         super(pattern, startCharacter: startCharacter);
 
   @override
-  Node? close(
+  Iterable<Node>? close(
     InlineParser parser,
     covariant SimpleDelimiter opener,
     Delimiter? closer, {
     String? tag,
     required List<Node> Function() getChildren,
   }) {
+    final context = _LinkContext(parser, opener, getChildren);
     final text = parser.source.substring(opener.endPos, parser.pos);
     // The current character is the `]` that closed the link text. Examine the
     // next character, to determine what type of link we might have (a '('
@@ -37,7 +48,7 @@
     if (parser.pos + 1 >= parser.source.length) {
       // The `]` is at the end of the document, but this may still be a valid
       // shortcut reference link.
-      return _tryCreateReferenceLink(parser, text, getChildren: getChildren);
+      return _tryCreateReferenceLink(context, text);
     }
 
     // Peek at the next character; don't advance, so as to avoid later stepping
@@ -50,11 +61,13 @@
       final leftParenIndex = parser.pos;
       final inlineLink = _parseInlineLink(parser);
       if (inlineLink != null) {
-        return _tryCreateInlineLink(
-          parser,
-          inlineLink,
-          getChildren: getChildren,
-        );
+        return [
+          _tryCreateInlineLink(
+            parser,
+            inlineLink,
+            getChildren: getChildren,
+          ),
+        ];
       }
       // At this point, we've matched `[...](`, but that `(` did not pan out to
       // be an inline link. We must now check if `[...]` is simply a shortcut
@@ -63,7 +76,7 @@
       // Reset the parser position.
       parser.pos = leftParenIndex;
       parser.advanceBy(-1);
-      return _tryCreateReferenceLink(parser, text, getChildren: getChildren);
+      return _tryCreateReferenceLink(context, text);
     }
 
     if (char == $lbracket) {
@@ -75,18 +88,18 @@
         // That opening `[` is not actually part of the link. Maybe a
         // *shortcut* reference link (followed by a `[`).
         parser.advanceBy(1);
-        return _tryCreateReferenceLink(parser, text, getChildren: getChildren);
+        return _tryCreateReferenceLink(context, text);
       }
       final label = _parseReferenceLinkLabel(parser);
       if (label != null) {
-        return _tryCreateReferenceLink(parser, label, getChildren: getChildren);
+        return _tryCreateReferenceLink(context, label);
       }
       return null;
     }
 
     // The link text (inside `[...]`) was not followed with a opening `(` nor
     // an opening `[`. Perhaps just a simple shortcut reference link (`[...]`).
-    return _tryCreateReferenceLink(parser, text, getChildren: getChildren);
+    return _tryCreateReferenceLink(context, text);
   }
 
   /// Resolve a possible reference link.
@@ -148,17 +161,23 @@
 
   /// Tries to create a reference link node.
   ///
-  /// Returns the link if it was successfully created, `null` otherwise.
-  Node? _tryCreateReferenceLink(
-    InlineParser parser,
-    String label, {
-    required List<Node> Function() getChildren,
-  }) {
-    return _resolveReferenceLink(
+  /// Returns the nodes if it was successfully created, `null` otherwise.
+  Iterable<Node>? _tryCreateReferenceLink(
+    _LinkContext context,
+    String label,
+  ) {
+    final parser = context.parser;
+    final getChildren = context.getChildren;
+    final link = _resolveReferenceLink(
       label,
       parser.document.linkReferences,
       getChildren: getChildren,
     );
+    if (link != null) {
+      return [link];
+    }
+    // TODO: add footnote creation here
+    return null;
   }
 
   // Tries to create an inline link node.
diff --git a/lib/src/patterns.dart b/lib/src/patterns.dart
index 67b33ad..c13600d 100644
--- a/lib/src/patterns.dart
+++ b/lib/src/patterns.dart
@@ -198,3 +198,10 @@
     // HTML tag is legal or not.
     '(?<condition_7>(?:$namedTagDefinition)\\s*\$))',
     caseSensitive: false);
+
+/// A pattern to match HTML entity references and numeric character references.
+// https://spec.commonmark.org/0.30/#entity-and-numeric-character-references
+final htmlCharactersPattern = RegExp(
+  '&(?:([a-z0-9]+)|#([0-9]{1,7})|#x([a-f0-9]{1,6}));',
+  caseSensitive: false,
+);
diff --git a/lib/src/util.dart b/lib/src/util.dart
index 32462ea..05ec697 100644
--- a/lib/src/util.dart
+++ b/lib/src/util.dart
@@ -5,7 +5,9 @@
 import 'dart:convert';
 
 import 'assets/case_folding.dart';
+import 'assets/html_entities.dart';
 import 'charcode.dart';
+import 'patterns.dart';
 
 String escapeHtml(String html) =>
     const HtmlEscape(HtmlEscapeMode.element).convert(html);
@@ -96,6 +98,51 @@
   return text;
 }
 
+///  Decodes HTML entity and numeric character references, for example decode
+/// `&#35` to `#`.
+String decodeHtmlCharacters(String input) =>
+    input.replaceAllMapped(htmlCharactersPattern, decodeHtmlCharacterFromMatch);
+
+/// Decodes HTML entity and numeric character references from the given [match].
+String decodeHtmlCharacterFromMatch(Match match) {
+  final text = match.match;
+  final entity = match[1];
+  final decimalNumber = match[2];
+  final hexadecimalNumber = match[3];
+
+  // Entity references, see
+  // https://spec.commonmark.org/0.30/#entity-references.
+  if (entity != null) {
+    return htmlEntitiesMap[text] ?? text;
+  }
+
+  // Decimal numeric character references, see
+  // https://spec.commonmark.org/0.30/#decimal-numeric-character-references.
+  else if (decimalNumber != null) {
+    final decimalValue = int.parse(decimalNumber);
+    int hexValue;
+    if (decimalValue < 1114112 && decimalValue > 1) {
+      hexValue = int.parse(decimalValue.toRadixString(16), radix: 16);
+    } else {
+      hexValue = 0xFFFd;
+    }
+
+    return String.fromCharCode(hexValue);
+  }
+
+  // Hexadecimal numeric character references, see
+  // https://spec.commonmark.org/0.30/#hexadecimal-numeric-character-references.
+  else if (hexadecimalNumber != null) {
+    var hexValue = int.parse(hexadecimalNumber, radix: 16);
+    if (hexValue > 0x10ffff || hexValue == 0) {
+      hexValue = 0xFFFd;
+    }
+    return String.fromCharCode(hexValue);
+  }
+
+  return text;
+}
+
 extension MatchExtensions on Match {
   /// Returns the whole match String
   String get match => this[0]!;
diff --git a/lib/src/version.dart b/lib/src/version.dart
index 1806888..0c814be 100644
--- a/lib/src/version.dart
+++ b/lib/src/version.dart
@@ -1,2 +1,2 @@
 // Generated code. Do not modify.
-const packageVersion = '6.0.2-dev';
+const packageVersion = '7.0.0-dev';
diff --git a/pubspec.yaml b/pubspec.yaml
index 470875d..b44329b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: markdown
-version: 6.0.2-dev
+version: 7.0.0-dev
 
 description: A portable Markdown library written in Dart that can parse
  Markdown into HTML.
diff --git a/test/common_mark/entity_and_numeric_character_references.unit b/test/common_mark/entity_and_numeric_character_references.unit
index f26a97b..da96678 100644
--- a/test/common_mark/entity_and_numeric_character_references.unit
+++ b/test/common_mark/entity_and_numeric_character_references.unit
@@ -9,11 +9,11 @@
 >>> Entity and numeric character references - 26
 &#35; &#1234; &#992; &#0;
 <<<
-<p>&#35; &#1234; &#992; &#0;</p>
+<p># Ӓ Ϡ �</p>
 >>> Entity and numeric character references - 27
 &#X22; &#XD06; &#xcab;
 <<<
-<p>&#X22; &#XD06; &#xcab;</p>
+<p>" ആ ಫ</p>
 >>> Entity and numeric character references - 28
 &nbsp &x; &#; &#x;
 &#87654321;
@@ -51,7 +51,7 @@
 foo
 ```
 <<<
-<pre><code class="language-f&amp;ouml;&amp;ouml;">foo
+<pre><code class="language-föö">foo
 </code></pre>
 >>> Entity and numeric character references - 35
 `f&ouml;&ouml;`
@@ -66,25 +66,27 @@
 &#42;foo&#42;
 *foo*
 <<<
-<p>&#42;foo&#42;
+<p>*foo*
 <em>foo</em></p>
 >>> Entity and numeric character references - 38
 &#42; foo
 
 * foo
 <<<
-<p>&#42; foo</p>
+<p>* foo</p>
 <ul>
 <li>foo</li>
 </ul>
 >>> Entity and numeric character references - 39
 foo&#10;&#10;bar
 <<<
-<p>foo&#10;&#10;bar</p>
+<p>foo
+
+bar</p>
 >>> Entity and numeric character references - 40
 &#9;foo
 <<<
-<p>&#9;foo</p>
+<p>foo</p>
 >>> Entity and numeric character references - 41
 [a](url &quot;tit&quot;)
 <<<
diff --git a/test/document_test.dart b/test/document_test.dart
index 42ca40f..a9a8be7 100644
--- a/test/document_test.dart
+++ b/test/document_test.dart
@@ -20,7 +20,7 @@
     });
 
     group('with encodeHtml enabled', () {
-      final document = Document(encodeHtml: true);
+      final document = Document();
 
       test('encodes HTML in an inline code snippet', () {
         final result =
@@ -55,7 +55,7 @@
       test('encodeHtml spaces are preserved in text', () {
         // Example to get a <p> tag rendered before a text node.
         const contents = 'Sample\n\n<pre>\n A\n B\n</pre>';
-        final document = Document(encodeHtml: true);
+        final document = Document();
         final lines = LineSplitter.split(contents).toList();
         final nodes = BlockParser(lines, document).parseLines();
         final result = HtmlRenderer().render(nodes);
@@ -65,7 +65,7 @@
       test('encode double quotes, greater than, and less than when escaped',
           () {
         const contents = r'\>\"\< Hello';
-        final document = Document(encodeHtml: true);
+        final document = Document();
         final nodes = document.parseInline(contents);
         expect(nodes, hasLength(1));
         expect(
diff --git a/test/extensions/tables.unit b/test/extensions/tables.unit
index 9516fb3..2f076df 100644
--- a/test/extensions/tables.unit
+++ b/test/extensions/tables.unit
@@ -4,7 +4,20 @@
 body | cells
 
 <<<
-<table><thead><tr><th>head</th><th>cells</th></tr></thead><tbody><tr><td>body</td><td>cells</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>head</th>
+<th>cells</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>body</td>
+<td>cells</td>
+</tr>
+</tbody>
+</table>
 >>> multiple rows
 head | cells
 -----|------
@@ -12,40 +25,124 @@
 more | cells
 
 <<<
-<table><thead><tr><th>head</th><th>cells</th></tr></thead><tbody><tr><td>body</td><td>cells</td></tr><tr><td>more</td><td>cells</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>head</th>
+<th>cells</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>body</td>
+<td>cells</td>
+</tr>
+<tr>
+<td>more</td>
+<td>cells</td>
+</tr>
+</tbody>
+</table>
 >>> rows wrapped in pipes
 | head | cells |
 |------|-------|
 | body | cells |
 
 <<<
-<table><thead><tr><th>head</th><th>cells</th></tr></thead><tbody><tr><td>body</td><td>cells</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>head</th>
+<th>cells</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>body</td>
+<td>cells</td>
+</tr>
+</tbody>
+</table>
 >>> rows wrapped in pipes, whitespace alignment row
 | head | cells |
 |  --  |  ---  |
 | body | cells |
 
 <<<
-<table><thead><tr><th>head</th><th>cells</th></tr></thead><tbody><tr><td>body</td><td>cells</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>head</th>
+<th>cells</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>body</td>
+<td>cells</td>
+</tr>
+</tbody>
+</table>
 >>> rows wrapped in pipes, tabs in whitespace
 |	head	|	cells	|
 |	--	|	---	|
 |	body	|	cells	|
 
 <<<
-<table><thead><tr><th>head</th><th>cells</th></tr></thead><tbody><tr><td>body</td><td>cells</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>head</th>
+<th>cells</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>body</td>
+<td>cells</td>
+</tr>
+</tbody>
+</table>
 >>> cells with inline syntax
 head `code` | _cells_
 ------------|--------
 *text*      | <span>text</span>
 <<<
-<table><thead><tr><th>head <code>code</code></th><th><em>cells</em></th></tr></thead><tbody><tr><td><em>text</em></td><td><span>text</span></td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>head <code>code</code></th>
+<th><em>cells</em></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><em>text</em></td>
+<td><span>text</span></td>
+</tr>
+</tbody>
+</table>
 >>> cells are parsed before inline syntax
 header | _foo | bar_
 -------|------------|---
 text   | text
 <<<
-<table><thead><tr><th>header</th><th>_foo</th><th>bar_</th></tr></thead><tbody><tr><td>text</td><td>text</td><td /></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>header</th>
+<th>_foo</th>
+<th>bar_</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>text</td>
+<td>text</td>
+<td></td>
+</tr>
+</tbody>
+</table>
 >>> cells contain reference links
 header | header
 -------|--------
@@ -53,20 +150,64 @@
 
 [here]: http://url
 <<<
-<table><thead><tr><th>header</th><th>header</th></tr></thead><tbody><tr><td>text</td><td><a href="http://url">link</a></td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>header</th>
+<th>header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>text</td>
+<td><a href="http://url">link</a></td>
+</tr>
+</tbody>
+</table>
 >>> one column tables
 head
 -----|
 body
 <<<
-<table><thead><tr><th>head</th></tr></thead><tbody><tr><td>body</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>head</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>body</td>
+</tr>
+</tbody>
+</table>
 >>> varying cells per row
 head | foo | bar
 -----|-----|-----
 body
 row with | two cells
 <<<
-<table><thead><tr><th>head</th><th>foo</th><th>bar</th></tr></thead><tbody><tr><td>body</td><td /><td /></tr><tr><td>row with</td><td>two cells</td><td /></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>head</th>
+<th>foo</th>
+<th>bar</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>body</td>
+<td></td>
+<td></td>
+</tr>
+<tr>
+<td>row with</td>
+<td>two cells</td>
+<td></td>
+</tr>
+</tbody>
+</table>
 >>> left, center, and right alignment
 head | cells | here
 :----|:-----:|----:
@@ -74,7 +215,27 @@
 too | many | cells | here
 
 <<<
-<table><thead><tr><th style="text-align: left;">head</th><th style="text-align: center;">cells</th><th style="text-align: right;">here</th></tr></thead><tbody><tr><td style="text-align: left;">body</td><td style="text-align: center;">cells</td><td style="text-align: right;">here</td></tr><tr><td style="text-align: left;">too</td><td style="text-align: center;">many</td><td style="text-align: right;">cells</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th align="left">head</th>
+<th align="center">cells</th>
+<th align="right">here</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left">body</td>
+<td align="center">cells</td>
+<td align="right">here</td>
+</tr>
+<tr>
+<td align="left">too</td>
+<td align="center">many</td>
+<td align="right">cells</td>
+</tr>
+</tbody>
+</table>
 >>> left, center, and right alignment, with whitespace
 head | cells | here
  :-- | :---: | ---:
@@ -82,7 +243,27 @@
 too | many | cells | here
 
 <<<
-<table><thead><tr><th style="text-align: left;">head</th><th style="text-align: center;">cells</th><th style="text-align: right;">here</th></tr></thead><tbody><tr><td style="text-align: left;">body</td><td style="text-align: center;">cells</td><td style="text-align: right;">here</td></tr><tr><td style="text-align: left;">too</td><td style="text-align: center;">many</td><td style="text-align: right;">cells</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th align="left">head</th>
+<th align="center">cells</th>
+<th align="right">here</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left">body</td>
+<td align="center">cells</td>
+<td align="right">here</td>
+</tr>
+<tr>
+<td align="left">too</td>
+<td align="center">many</td>
+<td align="right">cells</td>
+</tr>
+</tbody>
+</table>
 >>> escape pipe
 | Name     | Character |
 | ---      | ---       |
@@ -90,17 +271,60 @@
 | Pipe     | \|        |
 
 <<<
-<table><thead><tr><th>Name</th><th>Character</th></tr></thead><tbody><tr><td>Backtick</td><td>`</td></tr><tr><td>Pipe</td><td>|</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Character</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Backtick</td>
+<td>`</td>
+</tr>
+<tr>
+<td>Pipe</td>
+<td>|</td>
+</tr>
+</tbody>
+</table>
 >>> escape pipe, preserve trailing whitespace
 | Name     | Character |
 | ---      | ---       |
 | Pipe     | \| abcdef |
 
 <<<
-<table><thead><tr><th>Name</th><th>Character</th></tr></thead><tbody><tr><td>Pipe</td><td>| abcdef</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Character</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Pipe</td>
+<td>| abcdef</td>
+</tr>
+</tbody>
+</table>
 >>> trailing whitespace after final pipe
 | Name     | Character | 
 | ---      | ---       |	
 | Pipe     | abcdef    |
 <<<
-<table><thead><tr><th>Name</th><th>Character</th></tr></thead><tbody><tr><td>Pipe</td><td>abcdef</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Character</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Pipe</td>
+<td>abcdef</td>
+</tr>
+</tbody>
+</table>
diff --git a/test/gfm/autolinks.unit b/test/gfm/autolinks.unit
index d4c803b..4de9122 100644
--- a/test/gfm/autolinks.unit
+++ b/test/gfm/autolinks.unit
@@ -57,7 +57,7 @@
 >>> Autolinks - 616
 < http://foo.bar >
 <<<
-<p>&lt; <a href="http://foo.bar">http://foo.bar</a> &gt;</p>
+<p>&lt; http://foo.bar &gt;</p>
 >>> Autolinks - 617
 <m:abc>
 <<<
@@ -69,7 +69,7 @@
 >>> Autolinks - 619
 http://example.com
 <<<
-<p><a href="http://example.com">http://example.com</a></p>
+<p>http://example.com</p>
 >>> Autolinks - 620
 foo@bar.example.com
 <<<
diff --git a/test/gfm/autolinks_extension.unit b/test/gfm/autolinks_extension.unit
index ac41184..024fde1 100644
--- a/test/gfm/autolinks_extension.unit
+++ b/test/gfm/autolinks_extension.unit
@@ -23,9 +23,9 @@
 (www.google.com/search?q=Markup+(business)
 <<<
 <p><a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a></p>
-<p><a href="http://www.google.com/search?q=Markup+(business))">www.google.com/search?q=Markup+(business))</a>)</p>
 <p><a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a>))</p>
-<p><a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a>)</p>
+<p>(<a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a>)</p>
+<p>(<a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a></p>
 >>> Autolinks (extension) - 625
 www.google.com/search?q=(business))+ok
 <<<
@@ -35,7 +35,7 @@
 
 www.google.com/search?q=commonmark&hl;
 <<<
-<p><a href="http://www.google.com/search?q=commonmark&hl=en">www.google.com/search?q=commonmark&amp;hl=en</a></p>
+<p><a href="http://www.google.com/search?q=commonmark&amp;hl=en">www.google.com/search?q=commonmark&amp;hl=en</a></p>
 <p><a href="http://www.google.com/search?q=commonmark">www.google.com/search?q=commonmark</a>&hl;</p>
 >>> Autolinks (extension) - 627
 www.commonmark.org/he<lp
@@ -54,11 +54,11 @@
 >>> Autolinks (extension) - 629
 foo@bar.baz
 <<<
-<p>foo@bar.baz</p>
+<p><a href="mailto:foo@bar.baz">foo@bar.baz</a></p>
 >>> Autolinks (extension) - 630
 hello@mail+xyz.example isn't valid, but hello+xyz@mail.example is.
 <<<
-<p>hello@mail+xyz.example isn't valid, but hello+xyz@mail.example is.</p>
+<p>hello@mail+xyz.example isn't valid, but <a href="mailto:hello+xyz@mail.example">hello+xyz@mail.example</a> is.</p>
 >>> Autolinks (extension) - 631
 a.b-c_d@a.b
 
@@ -68,7 +68,7 @@
 
 a.b-c_d@a.b_
 <<<
-<p>a.b-c_d@a.b</p>
-<p>a.b-c_d@a.b.</p>
+<p><a href="mailto:a.b-c_d@a.b">a.b-c_d@a.b</a></p>
+<p><a href="mailto:a.b-c_d@a.b">a.b-c_d@a.b</a>.</p>
 <p>a.b-c_d@a.b-</p>
 <p>a.b-c_d@a.b_</p>
diff --git a/test/gfm/entity_and_numeric_character_references.unit b/test/gfm/entity_and_numeric_character_references.unit
index 5405ac2..be80572 100644
--- a/test/gfm/entity_and_numeric_character_references.unit
+++ b/test/gfm/entity_and_numeric_character_references.unit
@@ -9,11 +9,11 @@
 >>> Entity and numeric character references - 322
 &#35; &#1234; &#992; &#0;
 <<<
-<p>&#35; &#1234; &#992; &#0;</p>
+<p># Ӓ Ϡ �</p>
 >>> Entity and numeric character references - 323
 &#X22; &#XD06; &#xcab;
 <<<
-<p>&#X22; &#XD06; &#xcab;</p>
+<p>" ആ ಫ</p>
 >>> Entity and numeric character references - 324
 &nbsp &x; &#; &#x;
 &#987654321;
@@ -51,7 +51,7 @@
 foo
 ```
 <<<
-<pre><code class="language-f&amp;ouml;&amp;ouml;">foo
+<pre><code class="language-föö">foo
 </code></pre>
 >>> Entity and numeric character references - 331
 `f&ouml;&ouml;`
@@ -66,25 +66,27 @@
 &#42;foo&#42;
 *foo*
 <<<
-<p>&#42;foo&#42;
+<p>*foo*
 <em>foo</em></p>
 >>> Entity and numeric character references - 334
 &#42; foo
 
 * foo
 <<<
-<p>&#42; foo</p>
+<p>* foo</p>
 <ul>
 <li>foo</li>
 </ul>
 >>> Entity and numeric character references - 335
 foo&#10;&#10;bar
 <<<
-<p>foo&#10;&#10;bar</p>
+<p>foo
+
+bar</p>
 >>> Entity and numeric character references - 336
 &#9;foo
 <<<
-<p>&#9;foo</p>
+<p>foo</p>
 >>> Entity and numeric character references - 337
 [a](url &quot;tit&quot;)
 <<<
diff --git a/test/gfm/tables_extension.unit b/test/gfm/tables_extension.unit
index cd84708..625fca8 100644
--- a/test/gfm/tables_extension.unit
+++ b/test/gfm/tables_extension.unit
@@ -3,27 +3,80 @@
 | --- | --- |
 | baz | bim |
 <<<
-<table><thead><tr><th>foo</th><th>bar</th></tr></thead><tbody><tr><td>baz</td><td>bim</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>foo</th>
+<th>bar</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>baz</td>
+<td>bim</td>
+</tr>
+</tbody>
+</table>
 >>> Tables (extension) - 199
 | abc | defghi |
 :-: | -----------:
 bar | baz
 <<<
-<table><thead><tr><th style="text-align: center;">abc</th><th style="text-align: right;">defghi</th></tr></thead><tbody><tr><td style="text-align: center;">bar</td><td style="text-align: right;">baz</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th align="center">abc</th>
+<th align="right">defghi</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">bar</td>
+<td align="right">baz</td>
+</tr>
+</tbody>
+</table>
 >>> Tables (extension) - 200
 | f\|oo  |
 | ------ |
 | b `\|` az |
 | b **\|** im |
 <<<
-<table><thead><tr><th>f|oo</th></tr></thead><tbody><tr><td>b <code>|</code> az</td></tr><tr><td>b <strong>|</strong> im</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>f|oo</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>b <code>|</code> az</td>
+</tr>
+<tr>
+<td>b <strong>|</strong> im</td>
+</tr>
+</tbody>
+</table>
 >>> Tables (extension) - 201
 | abc | def |
 | --- | --- |
 | bar | baz |
 > bar
 <<<
-<table><thead><tr><th>abc</th><th>def</th></tr></thead><tbody><tr><td>bar</td><td>baz</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>abc</th>
+<th>def</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>bar</td>
+<td>baz</td>
+</tr>
+</tbody>
+</table>
 <blockquote>
 <p>bar</p>
 </blockquote>
@@ -35,14 +88,32 @@
 
 bar
 <<<
-<table><thead><tr><th>abc</th><th>def</th></tr></thead><tbody><tr><td>bar</td><td>baz</td></tr><tr><td>bar</td><td /></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>abc</th>
+<th>def</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>bar</td>
+<td>baz</td>
+</tr>
+<tr>
+<td>bar</td>
+<td></td>
+</tr>
+</tbody>
+</table>
 <p>bar</p>
 >>> Tables (extension) - 203
 | abc | def |
 | --- |
 | bar |
 <<<
-<p>| --- |
+<p>| abc | def |
+| --- |
 | bar |</p>
 >>> Tables (extension) - 204
 | abc | def |
@@ -50,9 +121,33 @@
 | bar |
 | bar | baz | boo |
 <<<
-<table><thead><tr><th>abc</th><th>def</th></tr></thead><tbody><tr><td>bar</td><td /></tr><tr><td>bar</td><td>baz</td></tr></tbody></table>
+<table>
+<thead>
+<tr>
+<th>abc</th>
+<th>def</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>bar</td>
+<td></td>
+</tr>
+<tr>
+<td>bar</td>
+<td>baz</td>
+</tr>
+</tbody>
+</table>
 >>> Tables (extension) - 205
 | abc | def |
 | --- | --- |
 <<<
-<table><thead><tr><th>abc</th><th>def</th></tr></thead></table>
+<table>
+<thead>
+<tr>
+<th>abc</th>
+<th>def</th>
+</tr>
+</thead>
+</table>
diff --git a/test/html_renderer_test.dart b/test/html_renderer_test.dart
index cc32869..77c33d3 100644
--- a/test/html_renderer_test.dart
+++ b/test/html_renderer_test.dart
@@ -40,7 +40,6 @@
     test('with only default block syntaxes', () {
       final result = markdownToHtml(
         text,
-        withDefaultBlockSyntaxes: true,
         withDefaultInlineSyntaxes: false,
         encodeHtml: false,
       );
@@ -55,7 +54,6 @@
       final result = markdownToHtml(
         text,
         withDefaultBlockSyntaxes: false,
-        withDefaultInlineSyntaxes: true,
         encodeHtml: false,
       );
 
@@ -70,7 +68,6 @@
         text,
         withDefaultBlockSyntaxes: false,
         withDefaultInlineSyntaxes: false,
-        encodeHtml: true,
       );
 
       expect(
diff --git a/test/markdown_test.dart b/test/markdown_test.dart
index 0b05c73..35fde7e 100644
--- a/test/markdown_test.dart
+++ b/test/markdown_test.dart
@@ -8,7 +8,7 @@
 import 'util.dart';
 
 void main() async {
-  await testDirectory('original');
+  testDirectory('original');
 
   // Block syntax extensions.
   testFile(
@@ -54,8 +54,8 @@
     inlineSyntaxes: [StrikethroughSyntax()],
   );
 
-  await testDirectory('common_mark');
-  await testDirectory('gfm', extensionSet: ExtensionSet.gitHubFlavored);
+  testDirectory('common_mark');
+  testDirectory('gfm');
 
   group('Corner cases', () {
     validateCore('Incorrect Links', '''
diff --git a/test/util.dart b/test/util.dart
index ad73c0c..fba598d 100644
--- a/test/util.dart
+++ b/test/util.dart
@@ -2,41 +2,63 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'dart:isolate';
-
 import 'package:io/ansi.dart' as ansi;
 import 'package:markdown/markdown.dart';
 import 'package:path/path.dart' as p;
 import 'package:test/test.dart';
+
 import '../tool/expected_output.dart';
 
 /// Runs tests defined in "*.unit" files inside directory [name].
-Future<void> testDirectory(String name, {ExtensionSet? extensionSet}) async {
-  await for (final dataCase in dataCasesUnder(testDirectory: name)) {
+void testDirectory(String name, {ExtensionSet? extensionSet}) {
+  for (final dataCase in dataCasesUnder(testDirectory: name)) {
     final description =
         '${dataCase.directory}/${dataCase.file}.unit ${dataCase.description}';
+
+    final inlineSyntaxes = <InlineSyntax>[];
+    final blockSyntaxes = <BlockSyntax>[];
+
+    if (dataCase.file.endsWith('_extension')) {
+      final extension = dataCase.file.substring(
+        0,
+        dataCase.file.lastIndexOf('_extension'),
+      );
+      switch (extension) {
+        case 'autolinks':
+          inlineSyntaxes.add(AutolinkExtensionSyntax());
+          break;
+        case 'strikethrough':
+          inlineSyntaxes.add(StrikethroughSyntax());
+          break;
+        case 'tables':
+          blockSyntaxes.add(const TableSyntax());
+          break;
+        case 'disallowed_raw_html':
+          // TODO(Zhiguang): https://github.com/dart-lang/markdown/pull/447
+          break;
+        default:
+          throw UnimplementedError('Unimplemented extension "$extension"');
+      }
+    }
+
     validateCore(
       description,
       dataCase.input,
       dataCase.expectedOutput,
       extensionSet: extensionSet,
+      inlineSyntaxes: inlineSyntaxes,
+      blockSyntaxes: blockSyntaxes,
     );
   }
 }
 
-Future<String> get markdownPackageRoot async {
-  final packageUri = Uri.parse('package:markdown/markdown.dart');
-  final isolateUri = await Isolate.resolvePackageUri(packageUri);
-  return p.dirname(p.dirname(isolateUri!.toFilePath()));
-}
-
 void testFile(
   String file, {
   Iterable<BlockSyntax> blockSyntaxes = const [],
   Iterable<InlineSyntax> inlineSyntaxes = const [],
-}) async {
-  final directory = p.join(await markdownPackageRoot, 'test');
-  for (final dataCase in dataCasesInFile(path: p.join(directory, file))) {
+}) {
+  for (final dataCase
+      in dataCasesInFile(path: p.join(p.current, 'test', file))) {
     final description =
         '${dataCase.directory}/${dataCase.file}.unit ${dataCase.description}';
     validateCore(
diff --git a/test/version_test.dart b/test/version_test.dart
index 14763d3..4397ad1 100644
--- a/test/version_test.dart
+++ b/test/version_test.dart
@@ -8,12 +8,9 @@
 import 'package:test/test.dart';
 import 'package:yaml/yaml.dart';
 
-import 'util.dart';
-
 void main() {
   test('check versions', () async {
-    final packageRoot = await markdownPackageRoot;
-    final binary = p.normalize(p.join(packageRoot, 'bin', 'markdown.dart'));
+    final binary = p.join(p.current, 'bin', 'markdown.dart');
     final dartBin = Platform.executable;
     final result = Process.runSync(dartBin, [binary, '--version']);
     expect(
@@ -26,7 +23,7 @@
 
     final binVersion = (result.stdout as String).trim();
 
-    final pubspecFile = p.normalize(p.join(packageRoot, 'pubspec.yaml'));
+    final pubspecFile = p.join(p.current, 'pubspec.yaml');
 
     final pubspecContent =
         loadYaml(File(pubspecFile).readAsStringSync()) as YamlMap;
diff --git a/tool/common_mark_stats.json b/tool/common_mark_stats.json
index f7dfee0..1de59bb 100644
--- a/tool/common_mark_stats.json
+++ b/tool/common_mark_stats.json
@@ -244,7 +244,7 @@
  },
  "Entity and numeric character references": {
   "25": "loose",
-  "26": "loose",
+  "26": "strict",
   "27": "loose",
   "28": "loose",
   "29": "strict",
@@ -252,12 +252,12 @@
   "31": "strict",
   "32": "fail",
   "33": "fail",
-  "34": "fail",
+  "34": "strict",
   "35": "strict",
   "36": "strict",
-  "37": "loose",
-  "38": "loose",
-  "39": "loose",
+  "37": "strict",
+  "38": "strict",
+  "39": "strict",
   "40": "loose",
   "41": "strict"
  },
diff --git a/tool/common_mark_stats.txt b/tool/common_mark_stats.txt
index 72a784c..3afa53c 100644
--- a/tool/common_mark_stats.txt
+++ b/tool/common_mark_stats.txt
@@ -5,7 +5,7 @@
   23 of   25 –  92.0%  Block quotes
   22 of   22 – 100.0%  Code spans
  130 of  131 –  99.2%  Emphasis and strong emphasis
-  14 of   17 –  82.4%  Entity and numeric character references
+  15 of   17 –  88.2%  Entity and numeric character references
   28 of   29 –  96.6%  Fenced code blocks
   15 of   15 – 100.0%  Hard line breaks
   44 of   44 – 100.0%  HTML blocks
@@ -24,5 +24,5 @@
   11 of   11 – 100.0%  Tabs
    3 of    3 – 100.0%  Textual content
   19 of   19 – 100.0%  Thematic breaks
- 621 of  652 –  95.2%  TOTAL
- 554 of  621 –  89.2%  TOTAL Strict
+ 622 of  652 –  95.4%  TOTAL
+ 559 of  622 –  89.9%  TOTAL Strict
diff --git a/tool/dartdoc_compare.dart b/tool/dartdoc_compare.dart
index 7186d79..37be7fb 100644
--- a/tool/dartdoc_compare.dart
+++ b/tool/dartdoc_compare.dart
@@ -27,7 +27,6 @@
     )
     ..addFlag(
       _sdk,
-      defaultsTo: false,
       negatable: false,
       help: 'Is the package the SDK?',
     )
@@ -146,12 +145,14 @@
     // make modifiable copy
     dartdocPubspec = jsonDecode(jsonEncode(dartdocPubspec)) as Map;
 
+    final dependencies = dartdocPubspec['dependencies'] as Map;
+
     if (markdownRef == 'local') {
-      dartdocPubspec['dependencies']['markdown'] = {
+      dependencies['markdown'] = {
         'path': markdownPath,
       };
     } else {
-      dartdocPubspec['dependencies']['markdown'] = {
+      dependencies['markdown'] = {
         'git': {
           'url': 'git://github.com/dart-lang/markdown.git',
           'ref': markdownRef
diff --git a/tool/entities.json b/tool/entities.json
new file mode 100644
index 0000000..557170b
--- /dev/null
+++ b/tool/entities.json
@@ -0,0 +1,2233 @@
+{
+  "&AElig": { "codepoints": [198], "characters": "\u00C6" },
+  "&AElig;": { "codepoints": [198], "characters": "\u00C6" },
+  "&AMP": { "codepoints": [38], "characters": "\u0026" },
+  "&AMP;": { "codepoints": [38], "characters": "\u0026" },
+  "&Aacute": { "codepoints": [193], "characters": "\u00C1" },
+  "&Aacute;": { "codepoints": [193], "characters": "\u00C1" },
+  "&Abreve;": { "codepoints": [258], "characters": "\u0102" },
+  "&Acirc": { "codepoints": [194], "characters": "\u00C2" },
+  "&Acirc;": { "codepoints": [194], "characters": "\u00C2" },
+  "&Acy;": { "codepoints": [1040], "characters": "\u0410" },
+  "&Afr;": { "codepoints": [120068], "characters": "\uD835\uDD04" },
+  "&Agrave": { "codepoints": [192], "characters": "\u00C0" },
+  "&Agrave;": { "codepoints": [192], "characters": "\u00C0" },
+  "&Alpha;": { "codepoints": [913], "characters": "\u0391" },
+  "&Amacr;": { "codepoints": [256], "characters": "\u0100" },
+  "&And;": { "codepoints": [10835], "characters": "\u2A53" },
+  "&Aogon;": { "codepoints": [260], "characters": "\u0104" },
+  "&Aopf;": { "codepoints": [120120], "characters": "\uD835\uDD38" },
+  "&ApplyFunction;": { "codepoints": [8289], "characters": "\u2061" },
+  "&Aring": { "codepoints": [197], "characters": "\u00C5" },
+  "&Aring;": { "codepoints": [197], "characters": "\u00C5" },
+  "&Ascr;": { "codepoints": [119964], "characters": "\uD835\uDC9C" },
+  "&Assign;": { "codepoints": [8788], "characters": "\u2254" },
+  "&Atilde": { "codepoints": [195], "characters": "\u00C3" },
+  "&Atilde;": { "codepoints": [195], "characters": "\u00C3" },
+  "&Auml": { "codepoints": [196], "characters": "\u00C4" },
+  "&Auml;": { "codepoints": [196], "characters": "\u00C4" },
+  "&Backslash;": { "codepoints": [8726], "characters": "\u2216" },
+  "&Barv;": { "codepoints": [10983], "characters": "\u2AE7" },
+  "&Barwed;": { "codepoints": [8966], "characters": "\u2306" },
+  "&Bcy;": { "codepoints": [1041], "characters": "\u0411" },
+  "&Because;": { "codepoints": [8757], "characters": "\u2235" },
+  "&Bernoullis;": { "codepoints": [8492], "characters": "\u212C" },
+  "&Beta;": { "codepoints": [914], "characters": "\u0392" },
+  "&Bfr;": { "codepoints": [120069], "characters": "\uD835\uDD05" },
+  "&Bopf;": { "codepoints": [120121], "characters": "\uD835\uDD39" },
+  "&Breve;": { "codepoints": [728], "characters": "\u02D8" },
+  "&Bscr;": { "codepoints": [8492], "characters": "\u212C" },
+  "&Bumpeq;": { "codepoints": [8782], "characters": "\u224E" },
+  "&CHcy;": { "codepoints": [1063], "characters": "\u0427" },
+  "&COPY": { "codepoints": [169], "characters": "\u00A9" },
+  "&COPY;": { "codepoints": [169], "characters": "\u00A9" },
+  "&Cacute;": { "codepoints": [262], "characters": "\u0106" },
+  "&Cap;": { "codepoints": [8914], "characters": "\u22D2" },
+  "&CapitalDifferentialD;": { "codepoints": [8517], "characters": "\u2145" },
+  "&Cayleys;": { "codepoints": [8493], "characters": "\u212D" },
+  "&Ccaron;": { "codepoints": [268], "characters": "\u010C" },
+  "&Ccedil": { "codepoints": [199], "characters": "\u00C7" },
+  "&Ccedil;": { "codepoints": [199], "characters": "\u00C7" },
+  "&Ccirc;": { "codepoints": [264], "characters": "\u0108" },
+  "&Cconint;": { "codepoints": [8752], "characters": "\u2230" },
+  "&Cdot;": { "codepoints": [266], "characters": "\u010A" },
+  "&Cedilla;": { "codepoints": [184], "characters": "\u00B8" },
+  "&CenterDot;": { "codepoints": [183], "characters": "\u00B7" },
+  "&Cfr;": { "codepoints": [8493], "characters": "\u212D" },
+  "&Chi;": { "codepoints": [935], "characters": "\u03A7" },
+  "&CircleDot;": { "codepoints": [8857], "characters": "\u2299" },
+  "&CircleMinus;": { "codepoints": [8854], "characters": "\u2296" },
+  "&CirclePlus;": { "codepoints": [8853], "characters": "\u2295" },
+  "&CircleTimes;": { "codepoints": [8855], "characters": "\u2297" },
+  "&ClockwiseContourIntegral;": { "codepoints": [8754], "characters": "\u2232" },
+  "&CloseCurlyDoubleQuote;": { "codepoints": [8221], "characters": "\u201D" },
+  "&CloseCurlyQuote;": { "codepoints": [8217], "characters": "\u2019" },
+  "&Colon;": { "codepoints": [8759], "characters": "\u2237" },
+  "&Colone;": { "codepoints": [10868], "characters": "\u2A74" },
+  "&Congruent;": { "codepoints": [8801], "characters": "\u2261" },
+  "&Conint;": { "codepoints": [8751], "characters": "\u222F" },
+  "&ContourIntegral;": { "codepoints": [8750], "characters": "\u222E" },
+  "&Copf;": { "codepoints": [8450], "characters": "\u2102" },
+  "&Coproduct;": { "codepoints": [8720], "characters": "\u2210" },
+  "&CounterClockwiseContourIntegral;": { "codepoints": [8755], "characters": "\u2233" },
+  "&Cross;": { "codepoints": [10799], "characters": "\u2A2F" },
+  "&Cscr;": { "codepoints": [119966], "characters": "\uD835\uDC9E" },
+  "&Cup;": { "codepoints": [8915], "characters": "\u22D3" },
+  "&CupCap;": { "codepoints": [8781], "characters": "\u224D" },
+  "&DD;": { "codepoints": [8517], "characters": "\u2145" },
+  "&DDotrahd;": { "codepoints": [10513], "characters": "\u2911" },
+  "&DJcy;": { "codepoints": [1026], "characters": "\u0402" },
+  "&DScy;": { "codepoints": [1029], "characters": "\u0405" },
+  "&DZcy;": { "codepoints": [1039], "characters": "\u040F" },
+  "&Dagger;": { "codepoints": [8225], "characters": "\u2021" },
+  "&Darr;": { "codepoints": [8609], "characters": "\u21A1" },
+  "&Dashv;": { "codepoints": [10980], "characters": "\u2AE4" },
+  "&Dcaron;": { "codepoints": [270], "characters": "\u010E" },
+  "&Dcy;": { "codepoints": [1044], "characters": "\u0414" },
+  "&Del;": { "codepoints": [8711], "characters": "\u2207" },
+  "&Delta;": { "codepoints": [916], "characters": "\u0394" },
+  "&Dfr;": { "codepoints": [120071], "characters": "\uD835\uDD07" },
+  "&DiacriticalAcute;": { "codepoints": [180], "characters": "\u00B4" },
+  "&DiacriticalDot;": { "codepoints": [729], "characters": "\u02D9" },
+  "&DiacriticalDoubleAcute;": { "codepoints": [733], "characters": "\u02DD" },
+  "&DiacriticalGrave;": { "codepoints": [96], "characters": "\u0060" },
+  "&DiacriticalTilde;": { "codepoints": [732], "characters": "\u02DC" },
+  "&Diamond;": { "codepoints": [8900], "characters": "\u22C4" },
+  "&DifferentialD;": { "codepoints": [8518], "characters": "\u2146" },
+  "&Dopf;": { "codepoints": [120123], "characters": "\uD835\uDD3B" },
+  "&Dot;": { "codepoints": [168], "characters": "\u00A8" },
+  "&DotDot;": { "codepoints": [8412], "characters": "\u20DC" },
+  "&DotEqual;": { "codepoints": [8784], "characters": "\u2250" },
+  "&DoubleContourIntegral;": { "codepoints": [8751], "characters": "\u222F" },
+  "&DoubleDot;": { "codepoints": [168], "characters": "\u00A8" },
+  "&DoubleDownArrow;": { "codepoints": [8659], "characters": "\u21D3" },
+  "&DoubleLeftArrow;": { "codepoints": [8656], "characters": "\u21D0" },
+  "&DoubleLeftRightArrow;": { "codepoints": [8660], "characters": "\u21D4" },
+  "&DoubleLeftTee;": { "codepoints": [10980], "characters": "\u2AE4" },
+  "&DoubleLongLeftArrow;": { "codepoints": [10232], "characters": "\u27F8" },
+  "&DoubleLongLeftRightArrow;": { "codepoints": [10234], "characters": "\u27FA" },
+  "&DoubleLongRightArrow;": { "codepoints": [10233], "characters": "\u27F9" },
+  "&DoubleRightArrow;": { "codepoints": [8658], "characters": "\u21D2" },
+  "&DoubleRightTee;": { "codepoints": [8872], "characters": "\u22A8" },
+  "&DoubleUpArrow;": { "codepoints": [8657], "characters": "\u21D1" },
+  "&DoubleUpDownArrow;": { "codepoints": [8661], "characters": "\u21D5" },
+  "&DoubleVerticalBar;": { "codepoints": [8741], "characters": "\u2225" },
+  "&DownArrow;": { "codepoints": [8595], "characters": "\u2193" },
+  "&DownArrowBar;": { "codepoints": [10515], "characters": "\u2913" },
+  "&DownArrowUpArrow;": { "codepoints": [8693], "characters": "\u21F5" },
+  "&DownBreve;": { "codepoints": [785], "characters": "\u0311" },
+  "&DownLeftRightVector;": { "codepoints": [10576], "characters": "\u2950" },
+  "&DownLeftTeeVector;": { "codepoints": [10590], "characters": "\u295E" },
+  "&DownLeftVector;": { "codepoints": [8637], "characters": "\u21BD" },
+  "&DownLeftVectorBar;": { "codepoints": [10582], "characters": "\u2956" },
+  "&DownRightTeeVector;": { "codepoints": [10591], "characters": "\u295F" },
+  "&DownRightVector;": { "codepoints": [8641], "characters": "\u21C1" },
+  "&DownRightVectorBar;": { "codepoints": [10583], "characters": "\u2957" },
+  "&DownTee;": { "codepoints": [8868], "characters": "\u22A4" },
+  "&DownTeeArrow;": { "codepoints": [8615], "characters": "\u21A7" },
+  "&Downarrow;": { "codepoints": [8659], "characters": "\u21D3" },
+  "&Dscr;": { "codepoints": [119967], "characters": "\uD835\uDC9F" },
+  "&Dstrok;": { "codepoints": [272], "characters": "\u0110" },
+  "&ENG;": { "codepoints": [330], "characters": "\u014A" },
+  "&ETH": { "codepoints": [208], "characters": "\u00D0" },
+  "&ETH;": { "codepoints": [208], "characters": "\u00D0" },
+  "&Eacute": { "codepoints": [201], "characters": "\u00C9" },
+  "&Eacute;": { "codepoints": [201], "characters": "\u00C9" },
+  "&Ecaron;": { "codepoints": [282], "characters": "\u011A" },
+  "&Ecirc": { "codepoints": [202], "characters": "\u00CA" },
+  "&Ecirc;": { "codepoints": [202], "characters": "\u00CA" },
+  "&Ecy;": { "codepoints": [1069], "characters": "\u042D" },
+  "&Edot;": { "codepoints": [278], "characters": "\u0116" },
+  "&Efr;": { "codepoints": [120072], "characters": "\uD835\uDD08" },
+  "&Egrave": { "codepoints": [200], "characters": "\u00C8" },
+  "&Egrave;": { "codepoints": [200], "characters": "\u00C8" },
+  "&Element;": { "codepoints": [8712], "characters": "\u2208" },
+  "&Emacr;": { "codepoints": [274], "characters": "\u0112" },
+  "&EmptySmallSquare;": { "codepoints": [9723], "characters": "\u25FB" },
+  "&EmptyVerySmallSquare;": { "codepoints": [9643], "characters": "\u25AB" },
+  "&Eogon;": { "codepoints": [280], "characters": "\u0118" },
+  "&Eopf;": { "codepoints": [120124], "characters": "\uD835\uDD3C" },
+  "&Epsilon;": { "codepoints": [917], "characters": "\u0395" },
+  "&Equal;": { "codepoints": [10869], "characters": "\u2A75" },
+  "&EqualTilde;": { "codepoints": [8770], "characters": "\u2242" },
+  "&Equilibrium;": { "codepoints": [8652], "characters": "\u21CC" },
+  "&Escr;": { "codepoints": [8496], "characters": "\u2130" },
+  "&Esim;": { "codepoints": [10867], "characters": "\u2A73" },
+  "&Eta;": { "codepoints": [919], "characters": "\u0397" },
+  "&Euml": { "codepoints": [203], "characters": "\u00CB" },
+  "&Euml;": { "codepoints": [203], "characters": "\u00CB" },
+  "&Exists;": { "codepoints": [8707], "characters": "\u2203" },
+  "&ExponentialE;": { "codepoints": [8519], "characters": "\u2147" },
+  "&Fcy;": { "codepoints": [1060], "characters": "\u0424" },
+  "&Ffr;": { "codepoints": [120073], "characters": "\uD835\uDD09" },
+  "&FilledSmallSquare;": { "codepoints": [9724], "characters": "\u25FC" },
+  "&FilledVerySmallSquare;": { "codepoints": [9642], "characters": "\u25AA" },
+  "&Fopf;": { "codepoints": [120125], "characters": "\uD835\uDD3D" },
+  "&ForAll;": { "codepoints": [8704], "characters": "\u2200" },
+  "&Fouriertrf;": { "codepoints": [8497], "characters": "\u2131" },
+  "&Fscr;": { "codepoints": [8497], "characters": "\u2131" },
+  "&GJcy;": { "codepoints": [1027], "characters": "\u0403" },
+  "&GT": { "codepoints": [62], "characters": "\u003E" },
+  "&GT;": { "codepoints": [62], "characters": "\u003E" },
+  "&Gamma;": { "codepoints": [915], "characters": "\u0393" },
+  "&Gammad;": { "codepoints": [988], "characters": "\u03DC" },
+  "&Gbreve;": { "codepoints": [286], "characters": "\u011E" },
+  "&Gcedil;": { "codepoints": [290], "characters": "\u0122" },
+  "&Gcirc;": { "codepoints": [284], "characters": "\u011C" },
+  "&Gcy;": { "codepoints": [1043], "characters": "\u0413" },
+  "&Gdot;": { "codepoints": [288], "characters": "\u0120" },
+  "&Gfr;": { "codepoints": [120074], "characters": "\uD835\uDD0A" },
+  "&Gg;": { "codepoints": [8921], "characters": "\u22D9" },
+  "&Gopf;": { "codepoints": [120126], "characters": "\uD835\uDD3E" },
+  "&GreaterEqual;": { "codepoints": [8805], "characters": "\u2265" },
+  "&GreaterEqualLess;": { "codepoints": [8923], "characters": "\u22DB" },
+  "&GreaterFullEqual;": { "codepoints": [8807], "characters": "\u2267" },
+  "&GreaterGreater;": { "codepoints": [10914], "characters": "\u2AA2" },
+  "&GreaterLess;": { "codepoints": [8823], "characters": "\u2277" },
+  "&GreaterSlantEqual;": { "codepoints": [10878], "characters": "\u2A7E" },
+  "&GreaterTilde;": { "codepoints": [8819], "characters": "\u2273" },
+  "&Gscr;": { "codepoints": [119970], "characters": "\uD835\uDCA2" },
+  "&Gt;": { "codepoints": [8811], "characters": "\u226B" },
+  "&HARDcy;": { "codepoints": [1066], "characters": "\u042A" },
+  "&Hacek;": { "codepoints": [711], "characters": "\u02C7" },
+  "&Hat;": { "codepoints": [94], "characters": "\u005E" },
+  "&Hcirc;": { "codepoints": [292], "characters": "\u0124" },
+  "&Hfr;": { "codepoints": [8460], "characters": "\u210C" },
+  "&HilbertSpace;": { "codepoints": [8459], "characters": "\u210B" },
+  "&Hopf;": { "codepoints": [8461], "characters": "\u210D" },
+  "&HorizontalLine;": { "codepoints": [9472], "characters": "\u2500" },
+  "&Hscr;": { "codepoints": [8459], "characters": "\u210B" },
+  "&Hstrok;": { "codepoints": [294], "characters": "\u0126" },
+  "&HumpDownHump;": { "codepoints": [8782], "characters": "\u224E" },
+  "&HumpEqual;": { "codepoints": [8783], "characters": "\u224F" },
+  "&IEcy;": { "codepoints": [1045], "characters": "\u0415" },
+  "&IJlig;": { "codepoints": [306], "characters": "\u0132" },
+  "&IOcy;": { "codepoints": [1025], "characters": "\u0401" },
+  "&Iacute": { "codepoints": [205], "characters": "\u00CD" },
+  "&Iacute;": { "codepoints": [205], "characters": "\u00CD" },
+  "&Icirc": { "codepoints": [206], "characters": "\u00CE" },
+  "&Icirc;": { "codepoints": [206], "characters": "\u00CE" },
+  "&Icy;": { "codepoints": [1048], "characters": "\u0418" },
+  "&Idot;": { "codepoints": [304], "characters": "\u0130" },
+  "&Ifr;": { "codepoints": [8465], "characters": "\u2111" },
+  "&Igrave": { "codepoints": [204], "characters": "\u00CC" },
+  "&Igrave;": { "codepoints": [204], "characters": "\u00CC" },
+  "&Im;": { "codepoints": [8465], "characters": "\u2111" },
+  "&Imacr;": { "codepoints": [298], "characters": "\u012A" },
+  "&ImaginaryI;": { "codepoints": [8520], "characters": "\u2148" },
+  "&Implies;": { "codepoints": [8658], "characters": "\u21D2" },
+  "&Int;": { "codepoints": [8748], "characters": "\u222C" },
+  "&Integral;": { "codepoints": [8747], "characters": "\u222B" },
+  "&Intersection;": { "codepoints": [8898], "characters": "\u22C2" },
+  "&InvisibleComma;": { "codepoints": [8291], "characters": "\u2063" },
+  "&InvisibleTimes;": { "codepoints": [8290], "characters": "\u2062" },
+  "&Iogon;": { "codepoints": [302], "characters": "\u012E" },
+  "&Iopf;": { "codepoints": [120128], "characters": "\uD835\uDD40" },
+  "&Iota;": { "codepoints": [921], "characters": "\u0399" },
+  "&Iscr;": { "codepoints": [8464], "characters": "\u2110" },
+  "&Itilde;": { "codepoints": [296], "characters": "\u0128" },
+  "&Iukcy;": { "codepoints": [1030], "characters": "\u0406" },
+  "&Iuml": { "codepoints": [207], "characters": "\u00CF" },
+  "&Iuml;": { "codepoints": [207], "characters": "\u00CF" },
+  "&Jcirc;": { "codepoints": [308], "characters": "\u0134" },
+  "&Jcy;": { "codepoints": [1049], "characters": "\u0419" },
+  "&Jfr;": { "codepoints": [120077], "characters": "\uD835\uDD0D" },
+  "&Jopf;": { "codepoints": [120129], "characters": "\uD835\uDD41" },
+  "&Jscr;": { "codepoints": [119973], "characters": "\uD835\uDCA5" },
+  "&Jsercy;": { "codepoints": [1032], "characters": "\u0408" },
+  "&Jukcy;": { "codepoints": [1028], "characters": "\u0404" },
+  "&KHcy;": { "codepoints": [1061], "characters": "\u0425" },
+  "&KJcy;": { "codepoints": [1036], "characters": "\u040C" },
+  "&Kappa;": { "codepoints": [922], "characters": "\u039A" },
+  "&Kcedil;": { "codepoints": [310], "characters": "\u0136" },
+  "&Kcy;": { "codepoints": [1050], "characters": "\u041A" },
+  "&Kfr;": { "codepoints": [120078], "characters": "\uD835\uDD0E" },
+  "&Kopf;": { "codepoints": [120130], "characters": "\uD835\uDD42" },
+  "&Kscr;": { "codepoints": [119974], "characters": "\uD835\uDCA6" },
+  "&LJcy;": { "codepoints": [1033], "characters": "\u0409" },
+  "&LT": { "codepoints": [60], "characters": "\u003C" },
+  "&LT;": { "codepoints": [60], "characters": "\u003C" },
+  "&Lacute;": { "codepoints": [313], "characters": "\u0139" },
+  "&Lambda;": { "codepoints": [923], "characters": "\u039B" },
+  "&Lang;": { "codepoints": [10218], "characters": "\u27EA" },
+  "&Laplacetrf;": { "codepoints": [8466], "characters": "\u2112" },
+  "&Larr;": { "codepoints": [8606], "characters": "\u219E" },
+  "&Lcaron;": { "codepoints": [317], "characters": "\u013D" },
+  "&Lcedil;": { "codepoints": [315], "characters": "\u013B" },
+  "&Lcy;": { "codepoints": [1051], "characters": "\u041B" },
+  "&LeftAngleBracket;": { "codepoints": [10216], "characters": "\u27E8" },
+  "&LeftArrow;": { "codepoints": [8592], "characters": "\u2190" },
+  "&LeftArrowBar;": { "codepoints": [8676], "characters": "\u21E4" },
+  "&LeftArrowRightArrow;": { "codepoints": [8646], "characters": "\u21C6" },
+  "&LeftCeiling;": { "codepoints": [8968], "characters": "\u2308" },
+  "&LeftDoubleBracket;": { "codepoints": [10214], "characters": "\u27E6" },
+  "&LeftDownTeeVector;": { "codepoints": [10593], "characters": "\u2961" },
+  "&LeftDownVector;": { "codepoints": [8643], "characters": "\u21C3" },
+  "&LeftDownVectorBar;": { "codepoints": [10585], "characters": "\u2959" },
+  "&LeftFloor;": { "codepoints": [8970], "characters": "\u230A" },
+  "&LeftRightArrow;": { "codepoints": [8596], "characters": "\u2194" },
+  "&LeftRightVector;": { "codepoints": [10574], "characters": "\u294E" },
+  "&LeftTee;": { "codepoints": [8867], "characters": "\u22A3" },
+  "&LeftTeeArrow;": { "codepoints": [8612], "characters": "\u21A4" },
+  "&LeftTeeVector;": { "codepoints": [10586], "characters": "\u295A" },
+  "&LeftTriangle;": { "codepoints": [8882], "characters": "\u22B2" },
+  "&LeftTriangleBar;": { "codepoints": [10703], "characters": "\u29CF" },
+  "&LeftTriangleEqual;": { "codepoints": [8884], "characters": "\u22B4" },
+  "&LeftUpDownVector;": { "codepoints": [10577], "characters": "\u2951" },
+  "&LeftUpTeeVector;": { "codepoints": [10592], "characters": "\u2960" },
+  "&LeftUpVector;": { "codepoints": [8639], "characters": "\u21BF" },
+  "&LeftUpVectorBar;": { "codepoints": [10584], "characters": "\u2958" },
+  "&LeftVector;": { "codepoints": [8636], "characters": "\u21BC" },
+  "&LeftVectorBar;": { "codepoints": [10578], "characters": "\u2952" },
+  "&Leftarrow;": { "codepoints": [8656], "characters": "\u21D0" },
+  "&Leftrightarrow;": { "codepoints": [8660], "characters": "\u21D4" },
+  "&LessEqualGreater;": { "codepoints": [8922], "characters": "\u22DA" },
+  "&LessFullEqual;": { "codepoints": [8806], "characters": "\u2266" },
+  "&LessGreater;": { "codepoints": [8822], "characters": "\u2276" },
+  "&LessLess;": { "codepoints": [10913], "characters": "\u2AA1" },
+  "&LessSlantEqual;": { "codepoints": [10877], "characters": "\u2A7D" },
+  "&LessTilde;": { "codepoints": [8818], "characters": "\u2272" },
+  "&Lfr;": { "codepoints": [120079], "characters": "\uD835\uDD0F" },
+  "&Ll;": { "codepoints": [8920], "characters": "\u22D8" },
+  "&Lleftarrow;": { "codepoints": [8666], "characters": "\u21DA" },
+  "&Lmidot;": { "codepoints": [319], "characters": "\u013F" },
+  "&LongLeftArrow;": { "codepoints": [10229], "characters": "\u27F5" },
+  "&LongLeftRightArrow;": { "codepoints": [10231], "characters": "\u27F7" },
+  "&LongRightArrow;": { "codepoints": [10230], "characters": "\u27F6" },
+  "&Longleftarrow;": { "codepoints": [10232], "characters": "\u27F8" },
+  "&Longleftrightarrow;": { "codepoints": [10234], "characters": "\u27FA" },
+  "&Longrightarrow;": { "codepoints": [10233], "characters": "\u27F9" },
+  "&Lopf;": { "codepoints": [120131], "characters": "\uD835\uDD43" },
+  "&LowerLeftArrow;": { "codepoints": [8601], "characters": "\u2199" },
+  "&LowerRightArrow;": { "codepoints": [8600], "characters": "\u2198" },
+  "&Lscr;": { "codepoints": [8466], "characters": "\u2112" },
+  "&Lsh;": { "codepoints": [8624], "characters": "\u21B0" },
+  "&Lstrok;": { "codepoints": [321], "characters": "\u0141" },
+  "&Lt;": { "codepoints": [8810], "characters": "\u226A" },
+  "&Map;": { "codepoints": [10501], "characters": "\u2905" },
+  "&Mcy;": { "codepoints": [1052], "characters": "\u041C" },
+  "&MediumSpace;": { "codepoints": [8287], "characters": "\u205F" },
+  "&Mellintrf;": { "codepoints": [8499], "characters": "\u2133" },
+  "&Mfr;": { "codepoints": [120080], "characters": "\uD835\uDD10" },
+  "&MinusPlus;": { "codepoints": [8723], "characters": "\u2213" },
+  "&Mopf;": { "codepoints": [120132], "characters": "\uD835\uDD44" },
+  "&Mscr;": { "codepoints": [8499], "characters": "\u2133" },
+  "&Mu;": { "codepoints": [924], "characters": "\u039C" },
+  "&NJcy;": { "codepoints": [1034], "characters": "\u040A" },
+  "&Nacute;": { "codepoints": [323], "characters": "\u0143" },
+  "&Ncaron;": { "codepoints": [327], "characters": "\u0147" },
+  "&Ncedil;": { "codepoints": [325], "characters": "\u0145" },
+  "&Ncy;": { "codepoints": [1053], "characters": "\u041D" },
+  "&NegativeMediumSpace;": { "codepoints": [8203], "characters": "\u200B" },
+  "&NegativeThickSpace;": { "codepoints": [8203], "characters": "\u200B" },
+  "&NegativeThinSpace;": { "codepoints": [8203], "characters": "\u200B" },
+  "&NegativeVeryThinSpace;": { "codepoints": [8203], "characters": "\u200B" },
+  "&NestedGreaterGreater;": { "codepoints": [8811], "characters": "\u226B" },
+  "&NestedLessLess;": { "codepoints": [8810], "characters": "\u226A" },
+  "&NewLine;": { "codepoints": [10], "characters": "\u000A" },
+  "&Nfr;": { "codepoints": [120081], "characters": "\uD835\uDD11" },
+  "&NoBreak;": { "codepoints": [8288], "characters": "\u2060" },
+  "&NonBreakingSpace;": { "codepoints": [160], "characters": "\u00A0" },
+  "&Nopf;": { "codepoints": [8469], "characters": "\u2115" },
+  "&Not;": { "codepoints": [10988], "characters": "\u2AEC" },
+  "&NotCongruent;": { "codepoints": [8802], "characters": "\u2262" },
+  "&NotCupCap;": { "codepoints": [8813], "characters": "\u226D" },
+  "&NotDoubleVerticalBar;": { "codepoints": [8742], "characters": "\u2226" },
+  "&NotElement;": { "codepoints": [8713], "characters": "\u2209" },
+  "&NotEqual;": { "codepoints": [8800], "characters": "\u2260" },
+  "&NotEqualTilde;": { "codepoints": [8770, 824], "characters": "\u2242\u0338" },
+  "&NotExists;": { "codepoints": [8708], "characters": "\u2204" },
+  "&NotGreater;": { "codepoints": [8815], "characters": "\u226F" },
+  "&NotGreaterEqual;": { "codepoints": [8817], "characters": "\u2271" },
+  "&NotGreaterFullEqual;": { "codepoints": [8807, 824], "characters": "\u2267\u0338" },
+  "&NotGreaterGreater;": { "codepoints": [8811, 824], "characters": "\u226B\u0338" },
+  "&NotGreaterLess;": { "codepoints": [8825], "characters": "\u2279" },
+  "&NotGreaterSlantEqual;": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" },
+  "&NotGreaterTilde;": { "codepoints": [8821], "characters": "\u2275" },
+  "&NotHumpDownHump;": { "codepoints": [8782, 824], "characters": "\u224E\u0338" },
+  "&NotHumpEqual;": { "codepoints": [8783, 824], "characters": "\u224F\u0338" },
+  "&NotLeftTriangle;": { "codepoints": [8938], "characters": "\u22EA" },
+  "&NotLeftTriangleBar;": { "codepoints": [10703, 824], "characters": "\u29CF\u0338" },
+  "&NotLeftTriangleEqual;": { "codepoints": [8940], "characters": "\u22EC" },
+  "&NotLess;": { "codepoints": [8814], "characters": "\u226E" },
+  "&NotLessEqual;": { "codepoints": [8816], "characters": "\u2270" },
+  "&NotLessGreater;": { "codepoints": [8824], "characters": "\u2278" },
+  "&NotLessLess;": { "codepoints": [8810, 824], "characters": "\u226A\u0338" },
+  "&NotLessSlantEqual;": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" },
+  "&NotLessTilde;": { "codepoints": [8820], "characters": "\u2274" },
+  "&NotNestedGreaterGreater;": { "codepoints": [10914, 824], "characters": "\u2AA2\u0338" },
+  "&NotNestedLessLess;": { "codepoints": [10913, 824], "characters": "\u2AA1\u0338" },
+  "&NotPrecedes;": { "codepoints": [8832], "characters": "\u2280" },
+  "&NotPrecedesEqual;": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" },
+  "&NotPrecedesSlantEqual;": { "codepoints": [8928], "characters": "\u22E0" },
+  "&NotReverseElement;": { "codepoints": [8716], "characters": "\u220C" },
+  "&NotRightTriangle;": { "codepoints": [8939], "characters": "\u22EB" },
+  "&NotRightTriangleBar;": { "codepoints": [10704, 824], "characters": "\u29D0\u0338" },
+  "&NotRightTriangleEqual;": { "codepoints": [8941], "characters": "\u22ED" },
+  "&NotSquareSubset;": { "codepoints": [8847, 824], "characters": "\u228F\u0338" },
+  "&NotSquareSubsetEqual;": { "codepoints": [8930], "characters": "\u22E2" },
+  "&NotSquareSuperset;": { "codepoints": [8848, 824], "characters": "\u2290\u0338" },
+  "&NotSquareSupersetEqual;": { "codepoints": [8931], "characters": "\u22E3" },
+  "&NotSubset;": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" },
+  "&NotSubsetEqual;": { "codepoints": [8840], "characters": "\u2288" },
+  "&NotSucceeds;": { "codepoints": [8833], "characters": "\u2281" },
+  "&NotSucceedsEqual;": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" },
+  "&NotSucceedsSlantEqual;": { "codepoints": [8929], "characters": "\u22E1" },
+  "&NotSucceedsTilde;": { "codepoints": [8831, 824], "characters": "\u227F\u0338" },
+  "&NotSuperset;": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" },
+  "&NotSupersetEqual;": { "codepoints": [8841], "characters": "\u2289" },
+  "&NotTilde;": { "codepoints": [8769], "characters": "\u2241" },
+  "&NotTildeEqual;": { "codepoints": [8772], "characters": "\u2244" },
+  "&NotTildeFullEqual;": { "codepoints": [8775], "characters": "\u2247" },
+  "&NotTildeTilde;": { "codepoints": [8777], "characters": "\u2249" },
+  "&NotVerticalBar;": { "codepoints": [8740], "characters": "\u2224" },
+  "&Nscr;": { "codepoints": [119977], "characters": "\uD835\uDCA9" },
+  "&Ntilde": { "codepoints": [209], "characters": "\u00D1" },
+  "&Ntilde;": { "codepoints": [209], "characters": "\u00D1" },
+  "&Nu;": { "codepoints": [925], "characters": "\u039D" },
+  "&OElig;": { "codepoints": [338], "characters": "\u0152" },
+  "&Oacute": { "codepoints": [211], "characters": "\u00D3" },
+  "&Oacute;": { "codepoints": [211], "characters": "\u00D3" },
+  "&Ocirc": { "codepoints": [212], "characters": "\u00D4" },
+  "&Ocirc;": { "codepoints": [212], "characters": "\u00D4" },
+  "&Ocy;": { "codepoints": [1054], "characters": "\u041E" },
+  "&Odblac;": { "codepoints": [336], "characters": "\u0150" },
+  "&Ofr;": { "codepoints": [120082], "characters": "\uD835\uDD12" },
+  "&Ograve": { "codepoints": [210], "characters": "\u00D2" },
+  "&Ograve;": { "codepoints": [210], "characters": "\u00D2" },
+  "&Omacr;": { "codepoints": [332], "characters": "\u014C" },
+  "&Omega;": { "codepoints": [937], "characters": "\u03A9" },
+  "&Omicron;": { "codepoints": [927], "characters": "\u039F" },
+  "&Oopf;": { "codepoints": [120134], "characters": "\uD835\uDD46" },
+  "&OpenCurlyDoubleQuote;": { "codepoints": [8220], "characters": "\u201C" },
+  "&OpenCurlyQuote;": { "codepoints": [8216], "characters": "\u2018" },
+  "&Or;": { "codepoints": [10836], "characters": "\u2A54" },
+  "&Oscr;": { "codepoints": [119978], "characters": "\uD835\uDCAA" },
+  "&Oslash": { "codepoints": [216], "characters": "\u00D8" },
+  "&Oslash;": { "codepoints": [216], "characters": "\u00D8" },
+  "&Otilde": { "codepoints": [213], "characters": "\u00D5" },
+  "&Otilde;": { "codepoints": [213], "characters": "\u00D5" },
+  "&Otimes;": { "codepoints": [10807], "characters": "\u2A37" },
+  "&Ouml": { "codepoints": [214], "characters": "\u00D6" },
+  "&Ouml;": { "codepoints": [214], "characters": "\u00D6" },
+  "&OverBar;": { "codepoints": [8254], "characters": "\u203E" },
+  "&OverBrace;": { "codepoints": [9182], "characters": "\u23DE" },
+  "&OverBracket;": { "codepoints": [9140], "characters": "\u23B4" },
+  "&OverParenthesis;": { "codepoints": [9180], "characters": "\u23DC" },
+  "&PartialD;": { "codepoints": [8706], "characters": "\u2202" },
+  "&Pcy;": { "codepoints": [1055], "characters": "\u041F" },
+  "&Pfr;": { "codepoints": [120083], "characters": "\uD835\uDD13" },
+  "&Phi;": { "codepoints": [934], "characters": "\u03A6" },
+  "&Pi;": { "codepoints": [928], "characters": "\u03A0" },
+  "&PlusMinus;": { "codepoints": [177], "characters": "\u00B1" },
+  "&Poincareplane;": { "codepoints": [8460], "characters": "\u210C" },
+  "&Popf;": { "codepoints": [8473], "characters": "\u2119" },
+  "&Pr;": { "codepoints": [10939], "characters": "\u2ABB" },
+  "&Precedes;": { "codepoints": [8826], "characters": "\u227A" },
+  "&PrecedesEqual;": { "codepoints": [10927], "characters": "\u2AAF" },
+  "&PrecedesSlantEqual;": { "codepoints": [8828], "characters": "\u227C" },
+  "&PrecedesTilde;": { "codepoints": [8830], "characters": "\u227E" },
+  "&Prime;": { "codepoints": [8243], "characters": "\u2033" },
+  "&Product;": { "codepoints": [8719], "characters": "\u220F" },
+  "&Proportion;": { "codepoints": [8759], "characters": "\u2237" },
+  "&Proportional;": { "codepoints": [8733], "characters": "\u221D" },
+  "&Pscr;": { "codepoints": [119979], "characters": "\uD835\uDCAB" },
+  "&Psi;": { "codepoints": [936], "characters": "\u03A8" },
+  "&QUOT": { "codepoints": [34], "characters": "\u0022" },
+  "&QUOT;": { "codepoints": [34], "characters": "\u0022" },
+  "&Qfr;": { "codepoints": [120084], "characters": "\uD835\uDD14" },
+  "&Qopf;": { "codepoints": [8474], "characters": "\u211A" },
+  "&Qscr;": { "codepoints": [119980], "characters": "\uD835\uDCAC" },
+  "&RBarr;": { "codepoints": [10512], "characters": "\u2910" },
+  "&REG": { "codepoints": [174], "characters": "\u00AE" },
+  "&REG;": { "codepoints": [174], "characters": "\u00AE" },
+  "&Racute;": { "codepoints": [340], "characters": "\u0154" },
+  "&Rang;": { "codepoints": [10219], "characters": "\u27EB" },
+  "&Rarr;": { "codepoints": [8608], "characters": "\u21A0" },
+  "&Rarrtl;": { "codepoints": [10518], "characters": "\u2916" },
+  "&Rcaron;": { "codepoints": [344], "characters": "\u0158" },
+  "&Rcedil;": { "codepoints": [342], "characters": "\u0156" },
+  "&Rcy;": { "codepoints": [1056], "characters": "\u0420" },
+  "&Re;": { "codepoints": [8476], "characters": "\u211C" },
+  "&ReverseElement;": { "codepoints": [8715], "characters": "\u220B" },
+  "&ReverseEquilibrium;": { "codepoints": [8651], "characters": "\u21CB" },
+  "&ReverseUpEquilibrium;": { "codepoints": [10607], "characters": "\u296F" },
+  "&Rfr;": { "codepoints": [8476], "characters": "\u211C" },
+  "&Rho;": { "codepoints": [929], "characters": "\u03A1" },
+  "&RightAngleBracket;": { "codepoints": [10217], "characters": "\u27E9" },
+  "&RightArrow;": { "codepoints": [8594], "characters": "\u2192" },
+  "&RightArrowBar;": { "codepoints": [8677], "characters": "\u21E5" },
+  "&RightArrowLeftArrow;": { "codepoints": [8644], "characters": "\u21C4" },
+  "&RightCeiling;": { "codepoints": [8969], "characters": "\u2309" },
+  "&RightDoubleBracket;": { "codepoints": [10215], "characters": "\u27E7" },
+  "&RightDownTeeVector;": { "codepoints": [10589], "characters": "\u295D" },
+  "&RightDownVector;": { "codepoints": [8642], "characters": "\u21C2" },
+  "&RightDownVectorBar;": { "codepoints": [10581], "characters": "\u2955" },
+  "&RightFloor;": { "codepoints": [8971], "characters": "\u230B" },
+  "&RightTee;": { "codepoints": [8866], "characters": "\u22A2" },
+  "&RightTeeArrow;": { "codepoints": [8614], "characters": "\u21A6" },
+  "&RightTeeVector;": { "codepoints": [10587], "characters": "\u295B" },
+  "&RightTriangle;": { "codepoints": [8883], "characters": "\u22B3" },
+  "&RightTriangleBar;": { "codepoints": [10704], "characters": "\u29D0" },
+  "&RightTriangleEqual;": { "codepoints": [8885], "characters": "\u22B5" },
+  "&RightUpDownVector;": { "codepoints": [10575], "characters": "\u294F" },
+  "&RightUpTeeVector;": { "codepoints": [10588], "characters": "\u295C" },
+  "&RightUpVector;": { "codepoints": [8638], "characters": "\u21BE" },
+  "&RightUpVectorBar;": { "codepoints": [10580], "characters": "\u2954" },
+  "&RightVector;": { "codepoints": [8640], "characters": "\u21C0" },
+  "&RightVectorBar;": { "codepoints": [10579], "characters": "\u2953" },
+  "&Rightarrow;": { "codepoints": [8658], "characters": "\u21D2" },
+  "&Ropf;": { "codepoints": [8477], "characters": "\u211D" },
+  "&RoundImplies;": { "codepoints": [10608], "characters": "\u2970" },
+  "&Rrightarrow;": { "codepoints": [8667], "characters": "\u21DB" },
+  "&Rscr;": { "codepoints": [8475], "characters": "\u211B" },
+  "&Rsh;": { "codepoints": [8625], "characters": "\u21B1" },
+  "&RuleDelayed;": { "codepoints": [10740], "characters": "\u29F4" },
+  "&SHCHcy;": { "codepoints": [1065], "characters": "\u0429" },
+  "&SHcy;": { "codepoints": [1064], "characters": "\u0428" },
+  "&SOFTcy;": { "codepoints": [1068], "characters": "\u042C" },
+  "&Sacute;": { "codepoints": [346], "characters": "\u015A" },
+  "&Sc;": { "codepoints": [10940], "characters": "\u2ABC" },
+  "&Scaron;": { "codepoints": [352], "characters": "\u0160" },
+  "&Scedil;": { "codepoints": [350], "characters": "\u015E" },
+  "&Scirc;": { "codepoints": [348], "characters": "\u015C" },
+  "&Scy;": { "codepoints": [1057], "characters": "\u0421" },
+  "&Sfr;": { "codepoints": [120086], "characters": "\uD835\uDD16" },
+  "&ShortDownArrow;": { "codepoints": [8595], "characters": "\u2193" },
+  "&ShortLeftArrow;": { "codepoints": [8592], "characters": "\u2190" },
+  "&ShortRightArrow;": { "codepoints": [8594], "characters": "\u2192" },
+  "&ShortUpArrow;": { "codepoints": [8593], "characters": "\u2191" },
+  "&Sigma;": { "codepoints": [931], "characters": "\u03A3" },
+  "&SmallCircle;": { "codepoints": [8728], "characters": "\u2218" },
+  "&Sopf;": { "codepoints": [120138], "characters": "\uD835\uDD4A" },
+  "&Sqrt;": { "codepoints": [8730], "characters": "\u221A" },
+  "&Square;": { "codepoints": [9633], "characters": "\u25A1" },
+  "&SquareIntersection;": { "codepoints": [8851], "characters": "\u2293" },
+  "&SquareSubset;": { "codepoints": [8847], "characters": "\u228F" },
+  "&SquareSubsetEqual;": { "codepoints": [8849], "characters": "\u2291" },
+  "&SquareSuperset;": { "codepoints": [8848], "characters": "\u2290" },
+  "&SquareSupersetEqual;": { "codepoints": [8850], "characters": "\u2292" },
+  "&SquareUnion;": { "codepoints": [8852], "characters": "\u2294" },
+  "&Sscr;": { "codepoints": [119982], "characters": "\uD835\uDCAE" },
+  "&Star;": { "codepoints": [8902], "characters": "\u22C6" },
+  "&Sub;": { "codepoints": [8912], "characters": "\u22D0" },
+  "&Subset;": { "codepoints": [8912], "characters": "\u22D0" },
+  "&SubsetEqual;": { "codepoints": [8838], "characters": "\u2286" },
+  "&Succeeds;": { "codepoints": [8827], "characters": "\u227B" },
+  "&SucceedsEqual;": { "codepoints": [10928], "characters": "\u2AB0" },
+  "&SucceedsSlantEqual;": { "codepoints": [8829], "characters": "\u227D" },
+  "&SucceedsTilde;": { "codepoints": [8831], "characters": "\u227F" },
+  "&SuchThat;": { "codepoints": [8715], "characters": "\u220B" },
+  "&Sum;": { "codepoints": [8721], "characters": "\u2211" },
+  "&Sup;": { "codepoints": [8913], "characters": "\u22D1" },
+  "&Superset;": { "codepoints": [8835], "characters": "\u2283" },
+  "&SupersetEqual;": { "codepoints": [8839], "characters": "\u2287" },
+  "&Supset;": { "codepoints": [8913], "characters": "\u22D1" },
+  "&THORN": { "codepoints": [222], "characters": "\u00DE" },
+  "&THORN;": { "codepoints": [222], "characters": "\u00DE" },
+  "&TRADE;": { "codepoints": [8482], "characters": "\u2122" },
+  "&TSHcy;": { "codepoints": [1035], "characters": "\u040B" },
+  "&TScy;": { "codepoints": [1062], "characters": "\u0426" },
+  "&Tab;": { "codepoints": [9], "characters": "\u0009" },
+  "&Tau;": { "codepoints": [932], "characters": "\u03A4" },
+  "&Tcaron;": { "codepoints": [356], "characters": "\u0164" },
+  "&Tcedil;": { "codepoints": [354], "characters": "\u0162" },
+  "&Tcy;": { "codepoints": [1058], "characters": "\u0422" },
+  "&Tfr;": { "codepoints": [120087], "characters": "\uD835\uDD17" },
+  "&Therefore;": { "codepoints": [8756], "characters": "\u2234" },
+  "&Theta;": { "codepoints": [920], "characters": "\u0398" },
+  "&ThickSpace;": { "codepoints": [8287, 8202], "characters": "\u205F\u200A" },
+  "&ThinSpace;": { "codepoints": [8201], "characters": "\u2009" },
+  "&Tilde;": { "codepoints": [8764], "characters": "\u223C" },
+  "&TildeEqual;": { "codepoints": [8771], "characters": "\u2243" },
+  "&TildeFullEqual;": { "codepoints": [8773], "characters": "\u2245" },
+  "&TildeTilde;": { "codepoints": [8776], "characters": "\u2248" },
+  "&Topf;": { "codepoints": [120139], "characters": "\uD835\uDD4B" },
+  "&TripleDot;": { "codepoints": [8411], "characters": "\u20DB" },
+  "&Tscr;": { "codepoints": [119983], "characters": "\uD835\uDCAF" },
+  "&Tstrok;": { "codepoints": [358], "characters": "\u0166" },
+  "&Uacute": { "codepoints": [218], "characters": "\u00DA" },
+  "&Uacute;": { "codepoints": [218], "characters": "\u00DA" },
+  "&Uarr;": { "codepoints": [8607], "characters": "\u219F" },
+  "&Uarrocir;": { "codepoints": [10569], "characters": "\u2949" },
+  "&Ubrcy;": { "codepoints": [1038], "characters": "\u040E" },
+  "&Ubreve;": { "codepoints": [364], "characters": "\u016C" },
+  "&Ucirc": { "codepoints": [219], "characters": "\u00DB" },
+  "&Ucirc;": { "codepoints": [219], "characters": "\u00DB" },
+  "&Ucy;": { "codepoints": [1059], "characters": "\u0423" },
+  "&Udblac;": { "codepoints": [368], "characters": "\u0170" },
+  "&Ufr;": { "codepoints": [120088], "characters": "\uD835\uDD18" },
+  "&Ugrave": { "codepoints": [217], "characters": "\u00D9" },
+  "&Ugrave;": { "codepoints": [217], "characters": "\u00D9" },
+  "&Umacr;": { "codepoints": [362], "characters": "\u016A" },
+  "&UnderBar;": { "codepoints": [95], "characters": "\u005F" },
+  "&UnderBrace;": { "codepoints": [9183], "characters": "\u23DF" },
+  "&UnderBracket;": { "codepoints": [9141], "characters": "\u23B5" },
+  "&UnderParenthesis;": { "codepoints": [9181], "characters": "\u23DD" },
+  "&Union;": { "codepoints": [8899], "characters": "\u22C3" },
+  "&UnionPlus;": { "codepoints": [8846], "characters": "\u228E" },
+  "&Uogon;": { "codepoints": [370], "characters": "\u0172" },
+  "&Uopf;": { "codepoints": [120140], "characters": "\uD835\uDD4C" },
+  "&UpArrow;": { "codepoints": [8593], "characters": "\u2191" },
+  "&UpArrowBar;": { "codepoints": [10514], "characters": "\u2912" },
+  "&UpArrowDownArrow;": { "codepoints": [8645], "characters": "\u21C5" },
+  "&UpDownArrow;": { "codepoints": [8597], "characters": "\u2195" },
+  "&UpEquilibrium;": { "codepoints": [10606], "characters": "\u296E" },
+  "&UpTee;": { "codepoints": [8869], "characters": "\u22A5" },
+  "&UpTeeArrow;": { "codepoints": [8613], "characters": "\u21A5" },
+  "&Uparrow;": { "codepoints": [8657], "characters": "\u21D1" },
+  "&Updownarrow;": { "codepoints": [8661], "characters": "\u21D5" },
+  "&UpperLeftArrow;": { "codepoints": [8598], "characters": "\u2196" },
+  "&UpperRightArrow;": { "codepoints": [8599], "characters": "\u2197" },
+  "&Upsi;": { "codepoints": [978], "characters": "\u03D2" },
+  "&Upsilon;": { "codepoints": [933], "characters": "\u03A5" },
+  "&Uring;": { "codepoints": [366], "characters": "\u016E" },
+  "&Uscr;": { "codepoints": [119984], "characters": "\uD835\uDCB0" },
+  "&Utilde;": { "codepoints": [360], "characters": "\u0168" },
+  "&Uuml": { "codepoints": [220], "characters": "\u00DC" },
+  "&Uuml;": { "codepoints": [220], "characters": "\u00DC" },
+  "&VDash;": { "codepoints": [8875], "characters": "\u22AB" },
+  "&Vbar;": { "codepoints": [10987], "characters": "\u2AEB" },
+  "&Vcy;": { "codepoints": [1042], "characters": "\u0412" },
+  "&Vdash;": { "codepoints": [8873], "characters": "\u22A9" },
+  "&Vdashl;": { "codepoints": [10982], "characters": "\u2AE6" },
+  "&Vee;": { "codepoints": [8897], "characters": "\u22C1" },
+  "&Verbar;": { "codepoints": [8214], "characters": "\u2016" },
+  "&Vert;": { "codepoints": [8214], "characters": "\u2016" },
+  "&VerticalBar;": { "codepoints": [8739], "characters": "\u2223" },
+  "&VerticalLine;": { "codepoints": [124], "characters": "\u007C" },
+  "&VerticalSeparator;": { "codepoints": [10072], "characters": "\u2758" },
+  "&VerticalTilde;": { "codepoints": [8768], "characters": "\u2240" },
+  "&VeryThinSpace;": { "codepoints": [8202], "characters": "\u200A" },
+  "&Vfr;": { "codepoints": [120089], "characters": "\uD835\uDD19" },
+  "&Vopf;": { "codepoints": [120141], "characters": "\uD835\uDD4D" },
+  "&Vscr;": { "codepoints": [119985], "characters": "\uD835\uDCB1" },
+  "&Vvdash;": { "codepoints": [8874], "characters": "\u22AA" },
+  "&Wcirc;": { "codepoints": [372], "characters": "\u0174" },
+  "&Wedge;": { "codepoints": [8896], "characters": "\u22C0" },
+  "&Wfr;": { "codepoints": [120090], "characters": "\uD835\uDD1A" },
+  "&Wopf;": { "codepoints": [120142], "characters": "\uD835\uDD4E" },
+  "&Wscr;": { "codepoints": [119986], "characters": "\uD835\uDCB2" },
+  "&Xfr;": { "codepoints": [120091], "characters": "\uD835\uDD1B" },
+  "&Xi;": { "codepoints": [926], "characters": "\u039E" },
+  "&Xopf;": { "codepoints": [120143], "characters": "\uD835\uDD4F" },
+  "&Xscr;": { "codepoints": [119987], "characters": "\uD835\uDCB3" },
+  "&YAcy;": { "codepoints": [1071], "characters": "\u042F" },
+  "&YIcy;": { "codepoints": [1031], "characters": "\u0407" },
+  "&YUcy;": { "codepoints": [1070], "characters": "\u042E" },
+  "&Yacute": { "codepoints": [221], "characters": "\u00DD" },
+  "&Yacute;": { "codepoints": [221], "characters": "\u00DD" },
+  "&Ycirc;": { "codepoints": [374], "characters": "\u0176" },
+  "&Ycy;": { "codepoints": [1067], "characters": "\u042B" },
+  "&Yfr;": { "codepoints": [120092], "characters": "\uD835\uDD1C" },
+  "&Yopf;": { "codepoints": [120144], "characters": "\uD835\uDD50" },
+  "&Yscr;": { "codepoints": [119988], "characters": "\uD835\uDCB4" },
+  "&Yuml;": { "codepoints": [376], "characters": "\u0178" },
+  "&ZHcy;": { "codepoints": [1046], "characters": "\u0416" },
+  "&Zacute;": { "codepoints": [377], "characters": "\u0179" },
+  "&Zcaron;": { "codepoints": [381], "characters": "\u017D" },
+  "&Zcy;": { "codepoints": [1047], "characters": "\u0417" },
+  "&Zdot;": { "codepoints": [379], "characters": "\u017B" },
+  "&ZeroWidthSpace;": { "codepoints": [8203], "characters": "\u200B" },
+  "&Zeta;": { "codepoints": [918], "characters": "\u0396" },
+  "&Zfr;": { "codepoints": [8488], "characters": "\u2128" },
+  "&Zopf;": { "codepoints": [8484], "characters": "\u2124" },
+  "&Zscr;": { "codepoints": [119989], "characters": "\uD835\uDCB5" },
+  "&aacute": { "codepoints": [225], "characters": "\u00E1" },
+  "&aacute;": { "codepoints": [225], "characters": "\u00E1" },
+  "&abreve;": { "codepoints": [259], "characters": "\u0103" },
+  "&ac;": { "codepoints": [8766], "characters": "\u223E" },
+  "&acE;": { "codepoints": [8766, 819], "characters": "\u223E\u0333" },
+  "&acd;": { "codepoints": [8767], "characters": "\u223F" },
+  "&acirc": { "codepoints": [226], "characters": "\u00E2" },
+  "&acirc;": { "codepoints": [226], "characters": "\u00E2" },
+  "&acute": { "codepoints": [180], "characters": "\u00B4" },
+  "&acute;": { "codepoints": [180], "characters": "\u00B4" },
+  "&acy;": { "codepoints": [1072], "characters": "\u0430" },
+  "&aelig": { "codepoints": [230], "characters": "\u00E6" },
+  "&aelig;": { "codepoints": [230], "characters": "\u00E6" },
+  "&af;": { "codepoints": [8289], "characters": "\u2061" },
+  "&afr;": { "codepoints": [120094], "characters": "\uD835\uDD1E" },
+  "&agrave": { "codepoints": [224], "characters": "\u00E0" },
+  "&agrave;": { "codepoints": [224], "characters": "\u00E0" },
+  "&alefsym;": { "codepoints": [8501], "characters": "\u2135" },
+  "&aleph;": { "codepoints": [8501], "characters": "\u2135" },
+  "&alpha;": { "codepoints": [945], "characters": "\u03B1" },
+  "&amacr;": { "codepoints": [257], "characters": "\u0101" },
+  "&amalg;": { "codepoints": [10815], "characters": "\u2A3F" },
+  "&amp": { "codepoints": [38], "characters": "\u0026" },
+  "&amp;": { "codepoints": [38], "characters": "\u0026" },
+  "&and;": { "codepoints": [8743], "characters": "\u2227" },
+  "&andand;": { "codepoints": [10837], "characters": "\u2A55" },
+  "&andd;": { "codepoints": [10844], "characters": "\u2A5C" },
+  "&andslope;": { "codepoints": [10840], "characters": "\u2A58" },
+  "&andv;": { "codepoints": [10842], "characters": "\u2A5A" },
+  "&ang;": { "codepoints": [8736], "characters": "\u2220" },
+  "&ange;": { "codepoints": [10660], "characters": "\u29A4" },
+  "&angle;": { "codepoints": [8736], "characters": "\u2220" },
+  "&angmsd;": { "codepoints": [8737], "characters": "\u2221" },
+  "&angmsdaa;": { "codepoints": [10664], "characters": "\u29A8" },
+  "&angmsdab;": { "codepoints": [10665], "characters": "\u29A9" },
+  "&angmsdac;": { "codepoints": [10666], "characters": "\u29AA" },
+  "&angmsdad;": { "codepoints": [10667], "characters": "\u29AB" },
+  "&angmsdae;": { "codepoints": [10668], "characters": "\u29AC" },
+  "&angmsdaf;": { "codepoints": [10669], "characters": "\u29AD" },
+  "&angmsdag;": { "codepoints": [10670], "characters": "\u29AE" },
+  "&angmsdah;": { "codepoints": [10671], "characters": "\u29AF" },
+  "&angrt;": { "codepoints": [8735], "characters": "\u221F" },
+  "&angrtvb;": { "codepoints": [8894], "characters": "\u22BE" },
+  "&angrtvbd;": { "codepoints": [10653], "characters": "\u299D" },
+  "&angsph;": { "codepoints": [8738], "characters": "\u2222" },
+  "&angst;": { "codepoints": [197], "characters": "\u00C5" },
+  "&angzarr;": { "codepoints": [9084], "characters": "\u237C" },
+  "&aogon;": { "codepoints": [261], "characters": "\u0105" },
+  "&aopf;": { "codepoints": [120146], "characters": "\uD835\uDD52" },
+  "&ap;": { "codepoints": [8776], "characters": "\u2248" },
+  "&apE;": { "codepoints": [10864], "characters": "\u2A70" },
+  "&apacir;": { "codepoints": [10863], "characters": "\u2A6F" },
+  "&ape;": { "codepoints": [8778], "characters": "\u224A" },
+  "&apid;": { "codepoints": [8779], "characters": "\u224B" },
+  "&apos;": { "codepoints": [39], "characters": "\u0027" },
+  "&approx;": { "codepoints": [8776], "characters": "\u2248" },
+  "&approxeq;": { "codepoints": [8778], "characters": "\u224A" },
+  "&aring": { "codepoints": [229], "characters": "\u00E5" },
+  "&aring;": { "codepoints": [229], "characters": "\u00E5" },
+  "&ascr;": { "codepoints": [119990], "characters": "\uD835\uDCB6" },
+  "&ast;": { "codepoints": [42], "characters": "\u002A" },
+  "&asymp;": { "codepoints": [8776], "characters": "\u2248" },
+  "&asympeq;": { "codepoints": [8781], "characters": "\u224D" },
+  "&atilde": { "codepoints": [227], "characters": "\u00E3" },
+  "&atilde;": { "codepoints": [227], "characters": "\u00E3" },
+  "&auml": { "codepoints": [228], "characters": "\u00E4" },
+  "&auml;": { "codepoints": [228], "characters": "\u00E4" },
+  "&awconint;": { "codepoints": [8755], "characters": "\u2233" },
+  "&awint;": { "codepoints": [10769], "characters": "\u2A11" },
+  "&bNot;": { "codepoints": [10989], "characters": "\u2AED" },
+  "&backcong;": { "codepoints": [8780], "characters": "\u224C" },
+  "&backepsilon;": { "codepoints": [1014], "characters": "\u03F6" },
+  "&backprime;": { "codepoints": [8245], "characters": "\u2035" },
+  "&backsim;": { "codepoints": [8765], "characters": "\u223D" },
+  "&backsimeq;": { "codepoints": [8909], "characters": "\u22CD" },
+  "&barvee;": { "codepoints": [8893], "characters": "\u22BD" },
+  "&barwed;": { "codepoints": [8965], "characters": "\u2305" },
+  "&barwedge;": { "codepoints": [8965], "characters": "\u2305" },
+  "&bbrk;": { "codepoints": [9141], "characters": "\u23B5" },
+  "&bbrktbrk;": { "codepoints": [9142], "characters": "\u23B6" },
+  "&bcong;": { "codepoints": [8780], "characters": "\u224C" },
+  "&bcy;": { "codepoints": [1073], "characters": "\u0431" },
+  "&bdquo;": { "codepoints": [8222], "characters": "\u201E" },
+  "&becaus;": { "codepoints": [8757], "characters": "\u2235" },
+  "&because;": { "codepoints": [8757], "characters": "\u2235" },
+  "&bemptyv;": { "codepoints": [10672], "characters": "\u29B0" },
+  "&bepsi;": { "codepoints": [1014], "characters": "\u03F6" },
+  "&bernou;": { "codepoints": [8492], "characters": "\u212C" },
+  "&beta;": { "codepoints": [946], "characters": "\u03B2" },
+  "&beth;": { "codepoints": [8502], "characters": "\u2136" },
+  "&between;": { "codepoints": [8812], "characters": "\u226C" },
+  "&bfr;": { "codepoints": [120095], "characters": "\uD835\uDD1F" },
+  "&bigcap;": { "codepoints": [8898], "characters": "\u22C2" },
+  "&bigcirc;": { "codepoints": [9711], "characters": "\u25EF" },
+  "&bigcup;": { "codepoints": [8899], "characters": "\u22C3" },
+  "&bigodot;": { "codepoints": [10752], "characters": "\u2A00" },
+  "&bigoplus;": { "codepoints": [10753], "characters": "\u2A01" },
+  "&bigotimes;": { "codepoints": [10754], "characters": "\u2A02" },
+  "&bigsqcup;": { "codepoints": [10758], "characters": "\u2A06" },
+  "&bigstar;": { "codepoints": [9733], "characters": "\u2605" },
+  "&bigtriangledown;": { "codepoints": [9661], "characters": "\u25BD" },
+  "&bigtriangleup;": { "codepoints": [9651], "characters": "\u25B3" },
+  "&biguplus;": { "codepoints": [10756], "characters": "\u2A04" },
+  "&bigvee;": { "codepoints": [8897], "characters": "\u22C1" },
+  "&bigwedge;": { "codepoints": [8896], "characters": "\u22C0" },
+  "&bkarow;": { "codepoints": [10509], "characters": "\u290D" },
+  "&blacklozenge;": { "codepoints": [10731], "characters": "\u29EB" },
+  "&blacksquare;": { "codepoints": [9642], "characters": "\u25AA" },
+  "&blacktriangle;": { "codepoints": [9652], "characters": "\u25B4" },
+  "&blacktriangledown;": { "codepoints": [9662], "characters": "\u25BE" },
+  "&blacktriangleleft;": { "codepoints": [9666], "characters": "\u25C2" },
+  "&blacktriangleright;": { "codepoints": [9656], "characters": "\u25B8" },
+  "&blank;": { "codepoints": [9251], "characters": "\u2423" },
+  "&blk12;": { "codepoints": [9618], "characters": "\u2592" },
+  "&blk14;": { "codepoints": [9617], "characters": "\u2591" },
+  "&blk34;": { "codepoints": [9619], "characters": "\u2593" },
+  "&block;": { "codepoints": [9608], "characters": "\u2588" },
+  "&bne;": { "codepoints": [61, 8421], "characters": "\u003D\u20E5" },
+  "&bnequiv;": { "codepoints": [8801, 8421], "characters": "\u2261\u20E5" },
+  "&bnot;": { "codepoints": [8976], "characters": "\u2310" },
+  "&bopf;": { "codepoints": [120147], "characters": "\uD835\uDD53" },
+  "&bot;": { "codepoints": [8869], "characters": "\u22A5" },
+  "&bottom;": { "codepoints": [8869], "characters": "\u22A5" },
+  "&bowtie;": { "codepoints": [8904], "characters": "\u22C8" },
+  "&boxDL;": { "codepoints": [9559], "characters": "\u2557" },
+  "&boxDR;": { "codepoints": [9556], "characters": "\u2554" },
+  "&boxDl;": { "codepoints": [9558], "characters": "\u2556" },
+  "&boxDr;": { "codepoints": [9555], "characters": "\u2553" },
+  "&boxH;": { "codepoints": [9552], "characters": "\u2550" },
+  "&boxHD;": { "codepoints": [9574], "characters": "\u2566" },
+  "&boxHU;": { "codepoints": [9577], "characters": "\u2569" },
+  "&boxHd;": { "codepoints": [9572], "characters": "\u2564" },
+  "&boxHu;": { "codepoints": [9575], "characters": "\u2567" },
+  "&boxUL;": { "codepoints": [9565], "characters": "\u255D" },
+  "&boxUR;": { "codepoints": [9562], "characters": "\u255A" },
+  "&boxUl;": { "codepoints": [9564], "characters": "\u255C" },
+  "&boxUr;": { "codepoints": [9561], "characters": "\u2559" },
+  "&boxV;": { "codepoints": [9553], "characters": "\u2551" },
+  "&boxVH;": { "codepoints": [9580], "characters": "\u256C" },
+  "&boxVL;": { "codepoints": [9571], "characters": "\u2563" },
+  "&boxVR;": { "codepoints": [9568], "characters": "\u2560" },
+  "&boxVh;": { "codepoints": [9579], "characters": "\u256B" },
+  "&boxVl;": { "codepoints": [9570], "characters": "\u2562" },
+  "&boxVr;": { "codepoints": [9567], "characters": "\u255F" },
+  "&boxbox;": { "codepoints": [10697], "characters": "\u29C9" },
+  "&boxdL;": { "codepoints": [9557], "characters": "\u2555" },
+  "&boxdR;": { "codepoints": [9554], "characters": "\u2552" },
+  "&boxdl;": { "codepoints": [9488], "characters": "\u2510" },
+  "&boxdr;": { "codepoints": [9484], "characters": "\u250C" },
+  "&boxh;": { "codepoints": [9472], "characters": "\u2500" },
+  "&boxhD;": { "codepoints": [9573], "characters": "\u2565" },
+  "&boxhU;": { "codepoints": [9576], "characters": "\u2568" },
+  "&boxhd;": { "codepoints": [9516], "characters": "\u252C" },
+  "&boxhu;": { "codepoints": [9524], "characters": "\u2534" },
+  "&boxminus;": { "codepoints": [8863], "characters": "\u229F" },
+  "&boxplus;": { "codepoints": [8862], "characters": "\u229E" },
+  "&boxtimes;": { "codepoints": [8864], "characters": "\u22A0" },
+  "&boxuL;": { "codepoints": [9563], "characters": "\u255B" },
+  "&boxuR;": { "codepoints": [9560], "characters": "\u2558" },
+  "&boxul;": { "codepoints": [9496], "characters": "\u2518" },
+  "&boxur;": { "codepoints": [9492], "characters": "\u2514" },
+  "&boxv;": { "codepoints": [9474], "characters": "\u2502" },
+  "&boxvH;": { "codepoints": [9578], "characters": "\u256A" },
+  "&boxvL;": { "codepoints": [9569], "characters": "\u2561" },
+  "&boxvR;": { "codepoints": [9566], "characters": "\u255E" },
+  "&boxvh;": { "codepoints": [9532], "characters": "\u253C" },
+  "&boxvl;": { "codepoints": [9508], "characters": "\u2524" },
+  "&boxvr;": { "codepoints": [9500], "characters": "\u251C" },
+  "&bprime;": { "codepoints": [8245], "characters": "\u2035" },
+  "&breve;": { "codepoints": [728], "characters": "\u02D8" },
+  "&brvbar": { "codepoints": [166], "characters": "\u00A6" },
+  "&brvbar;": { "codepoints": [166], "characters": "\u00A6" },
+  "&bscr;": { "codepoints": [119991], "characters": "\uD835\uDCB7" },
+  "&bsemi;": { "codepoints": [8271], "characters": "\u204F" },
+  "&bsim;": { "codepoints": [8765], "characters": "\u223D" },
+  "&bsime;": { "codepoints": [8909], "characters": "\u22CD" },
+  "&bsol;": { "codepoints": [92], "characters": "\u005C" },
+  "&bsolb;": { "codepoints": [10693], "characters": "\u29C5" },
+  "&bsolhsub;": { "codepoints": [10184], "characters": "\u27C8" },
+  "&bull;": { "codepoints": [8226], "characters": "\u2022" },
+  "&bullet;": { "codepoints": [8226], "characters": "\u2022" },
+  "&bump;": { "codepoints": [8782], "characters": "\u224E" },
+  "&bumpE;": { "codepoints": [10926], "characters": "\u2AAE" },
+  "&bumpe;": { "codepoints": [8783], "characters": "\u224F" },
+  "&bumpeq;": { "codepoints": [8783], "characters": "\u224F" },
+  "&cacute;": { "codepoints": [263], "characters": "\u0107" },
+  "&cap;": { "codepoints": [8745], "characters": "\u2229" },
+  "&capand;": { "codepoints": [10820], "characters": "\u2A44" },
+  "&capbrcup;": { "codepoints": [10825], "characters": "\u2A49" },
+  "&capcap;": { "codepoints": [10827], "characters": "\u2A4B" },
+  "&capcup;": { "codepoints": [10823], "characters": "\u2A47" },
+  "&capdot;": { "codepoints": [10816], "characters": "\u2A40" },
+  "&caps;": { "codepoints": [8745, 65024], "characters": "\u2229\uFE00" },
+  "&caret;": { "codepoints": [8257], "characters": "\u2041" },
+  "&caron;": { "codepoints": [711], "characters": "\u02C7" },
+  "&ccaps;": { "codepoints": [10829], "characters": "\u2A4D" },
+  "&ccaron;": { "codepoints": [269], "characters": "\u010D" },
+  "&ccedil": { "codepoints": [231], "characters": "\u00E7" },
+  "&ccedil;": { "codepoints": [231], "characters": "\u00E7" },
+  "&ccirc;": { "codepoints": [265], "characters": "\u0109" },
+  "&ccups;": { "codepoints": [10828], "characters": "\u2A4C" },
+  "&ccupssm;": { "codepoints": [10832], "characters": "\u2A50" },
+  "&cdot;": { "codepoints": [267], "characters": "\u010B" },
+  "&cedil": { "codepoints": [184], "characters": "\u00B8" },
+  "&cedil;": { "codepoints": [184], "characters": "\u00B8" },
+  "&cemptyv;": { "codepoints": [10674], "characters": "\u29B2" },
+  "&cent": { "codepoints": [162], "characters": "\u00A2" },
+  "&cent;": { "codepoints": [162], "characters": "\u00A2" },
+  "&centerdot;": { "codepoints": [183], "characters": "\u00B7" },
+  "&cfr;": { "codepoints": [120096], "characters": "\uD835\uDD20" },
+  "&chcy;": { "codepoints": [1095], "characters": "\u0447" },
+  "&check;": { "codepoints": [10003], "characters": "\u2713" },
+  "&checkmark;": { "codepoints": [10003], "characters": "\u2713" },
+  "&chi;": { "codepoints": [967], "characters": "\u03C7" },
+  "&cir;": { "codepoints": [9675], "characters": "\u25CB" },
+  "&cirE;": { "codepoints": [10691], "characters": "\u29C3" },
+  "&circ;": { "codepoints": [710], "characters": "\u02C6" },
+  "&circeq;": { "codepoints": [8791], "characters": "\u2257" },
+  "&circlearrowleft;": { "codepoints": [8634], "characters": "\u21BA" },
+  "&circlearrowright;": { "codepoints": [8635], "characters": "\u21BB" },
+  "&circledR;": { "codepoints": [174], "characters": "\u00AE" },
+  "&circledS;": { "codepoints": [9416], "characters": "\u24C8" },
+  "&circledast;": { "codepoints": [8859], "characters": "\u229B" },
+  "&circledcirc;": { "codepoints": [8858], "characters": "\u229A" },
+  "&circleddash;": { "codepoints": [8861], "characters": "\u229D" },
+  "&cire;": { "codepoints": [8791], "characters": "\u2257" },
+  "&cirfnint;": { "codepoints": [10768], "characters": "\u2A10" },
+  "&cirmid;": { "codepoints": [10991], "characters": "\u2AEF" },
+  "&cirscir;": { "codepoints": [10690], "characters": "\u29C2" },
+  "&clubs;": { "codepoints": [9827], "characters": "\u2663" },
+  "&clubsuit;": { "codepoints": [9827], "characters": "\u2663" },
+  "&colon;": { "codepoints": [58], "characters": "\u003A" },
+  "&colone;": { "codepoints": [8788], "characters": "\u2254" },
+  "&coloneq;": { "codepoints": [8788], "characters": "\u2254" },
+  "&comma;": { "codepoints": [44], "characters": "\u002C" },
+  "&commat;": { "codepoints": [64], "characters": "\u0040" },
+  "&comp;": { "codepoints": [8705], "characters": "\u2201" },
+  "&compfn;": { "codepoints": [8728], "characters": "\u2218" },
+  "&complement;": { "codepoints": [8705], "characters": "\u2201" },
+  "&complexes;": { "codepoints": [8450], "characters": "\u2102" },
+  "&cong;": { "codepoints": [8773], "characters": "\u2245" },
+  "&congdot;": { "codepoints": [10861], "characters": "\u2A6D" },
+  "&conint;": { "codepoints": [8750], "characters": "\u222E" },
+  "&copf;": { "codepoints": [120148], "characters": "\uD835\uDD54" },
+  "&coprod;": { "codepoints": [8720], "characters": "\u2210" },
+  "&copy": { "codepoints": [169], "characters": "\u00A9" },
+  "&copy;": { "codepoints": [169], "characters": "\u00A9" },
+  "&copysr;": { "codepoints": [8471], "characters": "\u2117" },
+  "&crarr;": { "codepoints": [8629], "characters": "\u21B5" },
+  "&cross;": { "codepoints": [10007], "characters": "\u2717" },
+  "&cscr;": { "codepoints": [119992], "characters": "\uD835\uDCB8" },
+  "&csub;": { "codepoints": [10959], "characters": "\u2ACF" },
+  "&csube;": { "codepoints": [10961], "characters": "\u2AD1" },
+  "&csup;": { "codepoints": [10960], "characters": "\u2AD0" },
+  "&csupe;": { "codepoints": [10962], "characters": "\u2AD2" },
+  "&ctdot;": { "codepoints": [8943], "characters": "\u22EF" },
+  "&cudarrl;": { "codepoints": [10552], "characters": "\u2938" },
+  "&cudarrr;": { "codepoints": [10549], "characters": "\u2935" },
+  "&cuepr;": { "codepoints": [8926], "characters": "\u22DE" },
+  "&cuesc;": { "codepoints": [8927], "characters": "\u22DF" },
+  "&cularr;": { "codepoints": [8630], "characters": "\u21B6" },
+  "&cularrp;": { "codepoints": [10557], "characters": "\u293D" },
+  "&cup;": { "codepoints": [8746], "characters": "\u222A" },
+  "&cupbrcap;": { "codepoints": [10824], "characters": "\u2A48" },
+  "&cupcap;": { "codepoints": [10822], "characters": "\u2A46" },
+  "&cupcup;": { "codepoints": [10826], "characters": "\u2A4A" },
+  "&cupdot;": { "codepoints": [8845], "characters": "\u228D" },
+  "&cupor;": { "codepoints": [10821], "characters": "\u2A45" },
+  "&cups;": { "codepoints": [8746, 65024], "characters": "\u222A\uFE00" },
+  "&curarr;": { "codepoints": [8631], "characters": "\u21B7" },
+  "&curarrm;": { "codepoints": [10556], "characters": "\u293C" },
+  "&curlyeqprec;": { "codepoints": [8926], "characters": "\u22DE" },
+  "&curlyeqsucc;": { "codepoints": [8927], "characters": "\u22DF" },
+  "&curlyvee;": { "codepoints": [8910], "characters": "\u22CE" },
+  "&curlywedge;": { "codepoints": [8911], "characters": "\u22CF" },
+  "&curren": { "codepoints": [164], "characters": "\u00A4" },
+  "&curren;": { "codepoints": [164], "characters": "\u00A4" },
+  "&curvearrowleft;": { "codepoints": [8630], "characters": "\u21B6" },
+  "&curvearrowright;": { "codepoints": [8631], "characters": "\u21B7" },
+  "&cuvee;": { "codepoints": [8910], "characters": "\u22CE" },
+  "&cuwed;": { "codepoints": [8911], "characters": "\u22CF" },
+  "&cwconint;": { "codepoints": [8754], "characters": "\u2232" },
+  "&cwint;": { "codepoints": [8753], "characters": "\u2231" },
+  "&cylcty;": { "codepoints": [9005], "characters": "\u232D" },
+  "&dArr;": { "codepoints": [8659], "characters": "\u21D3" },
+  "&dHar;": { "codepoints": [10597], "characters": "\u2965" },
+  "&dagger;": { "codepoints": [8224], "characters": "\u2020" },
+  "&daleth;": { "codepoints": [8504], "characters": "\u2138" },
+  "&darr;": { "codepoints": [8595], "characters": "\u2193" },
+  "&dash;": { "codepoints": [8208], "characters": "\u2010" },
+  "&dashv;": { "codepoints": [8867], "characters": "\u22A3" },
+  "&dbkarow;": { "codepoints": [10511], "characters": "\u290F" },
+  "&dblac;": { "codepoints": [733], "characters": "\u02DD" },
+  "&dcaron;": { "codepoints": [271], "characters": "\u010F" },
+  "&dcy;": { "codepoints": [1076], "characters": "\u0434" },
+  "&dd;": { "codepoints": [8518], "characters": "\u2146" },
+  "&ddagger;": { "codepoints": [8225], "characters": "\u2021" },
+  "&ddarr;": { "codepoints": [8650], "characters": "\u21CA" },
+  "&ddotseq;": { "codepoints": [10871], "characters": "\u2A77" },
+  "&deg": { "codepoints": [176], "characters": "\u00B0" },
+  "&deg;": { "codepoints": [176], "characters": "\u00B0" },
+  "&delta;": { "codepoints": [948], "characters": "\u03B4" },
+  "&demptyv;": { "codepoints": [10673], "characters": "\u29B1" },
+  "&dfisht;": { "codepoints": [10623], "characters": "\u297F" },
+  "&dfr;": { "codepoints": [120097], "characters": "\uD835\uDD21" },
+  "&dharl;": { "codepoints": [8643], "characters": "\u21C3" },
+  "&dharr;": { "codepoints": [8642], "characters": "\u21C2" },
+  "&diam;": { "codepoints": [8900], "characters": "\u22C4" },
+  "&diamond;": { "codepoints": [8900], "characters": "\u22C4" },
+  "&diamondsuit;": { "codepoints": [9830], "characters": "\u2666" },
+  "&diams;": { "codepoints": [9830], "characters": "\u2666" },
+  "&die;": { "codepoints": [168], "characters": "\u00A8" },
+  "&digamma;": { "codepoints": [989], "characters": "\u03DD" },
+  "&disin;": { "codepoints": [8946], "characters": "\u22F2" },
+  "&div;": { "codepoints": [247], "characters": "\u00F7" },
+  "&divide": { "codepoints": [247], "characters": "\u00F7" },
+  "&divide;": { "codepoints": [247], "characters": "\u00F7" },
+  "&divideontimes;": { "codepoints": [8903], "characters": "\u22C7" },
+  "&divonx;": { "codepoints": [8903], "characters": "\u22C7" },
+  "&djcy;": { "codepoints": [1106], "characters": "\u0452" },
+  "&dlcorn;": { "codepoints": [8990], "characters": "\u231E" },
+  "&dlcrop;": { "codepoints": [8973], "characters": "\u230D" },
+  "&dollar;": { "codepoints": [36], "characters": "\u0024" },
+  "&dopf;": { "codepoints": [120149], "characters": "\uD835\uDD55" },
+  "&dot;": { "codepoints": [729], "characters": "\u02D9" },
+  "&doteq;": { "codepoints": [8784], "characters": "\u2250" },
+  "&doteqdot;": { "codepoints": [8785], "characters": "\u2251" },
+  "&dotminus;": { "codepoints": [8760], "characters": "\u2238" },
+  "&dotplus;": { "codepoints": [8724], "characters": "\u2214" },
+  "&dotsquare;": { "codepoints": [8865], "characters": "\u22A1" },
+  "&doublebarwedge;": { "codepoints": [8966], "characters": "\u2306" },
+  "&downarrow;": { "codepoints": [8595], "characters": "\u2193" },
+  "&downdownarrows;": { "codepoints": [8650], "characters": "\u21CA" },
+  "&downharpoonleft;": { "codepoints": [8643], "characters": "\u21C3" },
+  "&downharpoonright;": { "codepoints": [8642], "characters": "\u21C2" },
+  "&drbkarow;": { "codepoints": [10512], "characters": "\u2910" },
+  "&drcorn;": { "codepoints": [8991], "characters": "\u231F" },
+  "&drcrop;": { "codepoints": [8972], "characters": "\u230C" },
+  "&dscr;": { "codepoints": [119993], "characters": "\uD835\uDCB9" },
+  "&dscy;": { "codepoints": [1109], "characters": "\u0455" },
+  "&dsol;": { "codepoints": [10742], "characters": "\u29F6" },
+  "&dstrok;": { "codepoints": [273], "characters": "\u0111" },
+  "&dtdot;": { "codepoints": [8945], "characters": "\u22F1" },
+  "&dtri;": { "codepoints": [9663], "characters": "\u25BF" },
+  "&dtrif;": { "codepoints": [9662], "characters": "\u25BE" },
+  "&duarr;": { "codepoints": [8693], "characters": "\u21F5" },
+  "&duhar;": { "codepoints": [10607], "characters": "\u296F" },
+  "&dwangle;": { "codepoints": [10662], "characters": "\u29A6" },
+  "&dzcy;": { "codepoints": [1119], "characters": "\u045F" },
+  "&dzigrarr;": { "codepoints": [10239], "characters": "\u27FF" },
+  "&eDDot;": { "codepoints": [10871], "characters": "\u2A77" },
+  "&eDot;": { "codepoints": [8785], "characters": "\u2251" },
+  "&eacute": { "codepoints": [233], "characters": "\u00E9" },
+  "&eacute;": { "codepoints": [233], "characters": "\u00E9" },
+  "&easter;": { "codepoints": [10862], "characters": "\u2A6E" },
+  "&ecaron;": { "codepoints": [283], "characters": "\u011B" },
+  "&ecir;": { "codepoints": [8790], "characters": "\u2256" },
+  "&ecirc": { "codepoints": [234], "characters": "\u00EA" },
+  "&ecirc;": { "codepoints": [234], "characters": "\u00EA" },
+  "&ecolon;": { "codepoints": [8789], "characters": "\u2255" },
+  "&ecy;": { "codepoints": [1101], "characters": "\u044D" },
+  "&edot;": { "codepoints": [279], "characters": "\u0117" },
+  "&ee;": { "codepoints": [8519], "characters": "\u2147" },
+  "&efDot;": { "codepoints": [8786], "characters": "\u2252" },
+  "&efr;": { "codepoints": [120098], "characters": "\uD835\uDD22" },
+  "&eg;": { "codepoints": [10906], "characters": "\u2A9A" },
+  "&egrave": { "codepoints": [232], "characters": "\u00E8" },
+  "&egrave;": { "codepoints": [232], "characters": "\u00E8" },
+  "&egs;": { "codepoints": [10902], "characters": "\u2A96" },
+  "&egsdot;": { "codepoints": [10904], "characters": "\u2A98" },
+  "&el;": { "codepoints": [10905], "characters": "\u2A99" },
+  "&elinters;": { "codepoints": [9191], "characters": "\u23E7" },
+  "&ell;": { "codepoints": [8467], "characters": "\u2113" },
+  "&els;": { "codepoints": [10901], "characters": "\u2A95" },
+  "&elsdot;": { "codepoints": [10903], "characters": "\u2A97" },
+  "&emacr;": { "codepoints": [275], "characters": "\u0113" },
+  "&empty;": { "codepoints": [8709], "characters": "\u2205" },
+  "&emptyset;": { "codepoints": [8709], "characters": "\u2205" },
+  "&emptyv;": { "codepoints": [8709], "characters": "\u2205" },
+  "&emsp13;": { "codepoints": [8196], "characters": "\u2004" },
+  "&emsp14;": { "codepoints": [8197], "characters": "\u2005" },
+  "&emsp;": { "codepoints": [8195], "characters": "\u2003" },
+  "&eng;": { "codepoints": [331], "characters": "\u014B" },
+  "&ensp;": { "codepoints": [8194], "characters": "\u2002" },
+  "&eogon;": { "codepoints": [281], "characters": "\u0119" },
+  "&eopf;": { "codepoints": [120150], "characters": "\uD835\uDD56" },
+  "&epar;": { "codepoints": [8917], "characters": "\u22D5" },
+  "&eparsl;": { "codepoints": [10723], "characters": "\u29E3" },
+  "&eplus;": { "codepoints": [10865], "characters": "\u2A71" },
+  "&epsi;": { "codepoints": [949], "characters": "\u03B5" },
+  "&epsilon;": { "codepoints": [949], "characters": "\u03B5" },
+  "&epsiv;": { "codepoints": [1013], "characters": "\u03F5" },
+  "&eqcirc;": { "codepoints": [8790], "characters": "\u2256" },
+  "&eqcolon;": { "codepoints": [8789], "characters": "\u2255" },
+  "&eqsim;": { "codepoints": [8770], "characters": "\u2242" },
+  "&eqslantgtr;": { "codepoints": [10902], "characters": "\u2A96" },
+  "&eqslantless;": { "codepoints": [10901], "characters": "\u2A95" },
+  "&equals;": { "codepoints": [61], "characters": "\u003D" },
+  "&equest;": { "codepoints": [8799], "characters": "\u225F" },
+  "&equiv;": { "codepoints": [8801], "characters": "\u2261" },
+  "&equivDD;": { "codepoints": [10872], "characters": "\u2A78" },
+  "&eqvparsl;": { "codepoints": [10725], "characters": "\u29E5" },
+  "&erDot;": { "codepoints": [8787], "characters": "\u2253" },
+  "&erarr;": { "codepoints": [10609], "characters": "\u2971" },
+  "&escr;": { "codepoints": [8495], "characters": "\u212F" },
+  "&esdot;": { "codepoints": [8784], "characters": "\u2250" },
+  "&esim;": { "codepoints": [8770], "characters": "\u2242" },
+  "&eta;": { "codepoints": [951], "characters": "\u03B7" },
+  "&eth": { "codepoints": [240], "characters": "\u00F0" },
+  "&eth;": { "codepoints": [240], "characters": "\u00F0" },
+  "&euml": { "codepoints": [235], "characters": "\u00EB" },
+  "&euml;": { "codepoints": [235], "characters": "\u00EB" },
+  "&euro;": { "codepoints": [8364], "characters": "\u20AC" },
+  "&excl;": { "codepoints": [33], "characters": "\u0021" },
+  "&exist;": { "codepoints": [8707], "characters": "\u2203" },
+  "&expectation;": { "codepoints": [8496], "characters": "\u2130" },
+  "&exponentiale;": { "codepoints": [8519], "characters": "\u2147" },
+  "&fallingdotseq;": { "codepoints": [8786], "characters": "\u2252" },
+  "&fcy;": { "codepoints": [1092], "characters": "\u0444" },
+  "&female;": { "codepoints": [9792], "characters": "\u2640" },
+  "&ffilig;": { "codepoints": [64259], "characters": "\uFB03" },
+  "&fflig;": { "codepoints": [64256], "characters": "\uFB00" },
+  "&ffllig;": { "codepoints": [64260], "characters": "\uFB04" },
+  "&ffr;": { "codepoints": [120099], "characters": "\uD835\uDD23" },
+  "&filig;": { "codepoints": [64257], "characters": "\uFB01" },
+  "&fjlig;": { "codepoints": [102, 106], "characters": "\u0066\u006A" },
+  "&flat;": { "codepoints": [9837], "characters": "\u266D" },
+  "&fllig;": { "codepoints": [64258], "characters": "\uFB02" },
+  "&fltns;": { "codepoints": [9649], "characters": "\u25B1" },
+  "&fnof;": { "codepoints": [402], "characters": "\u0192" },
+  "&fopf;": { "codepoints": [120151], "characters": "\uD835\uDD57" },
+  "&forall;": { "codepoints": [8704], "characters": "\u2200" },
+  "&fork;": { "codepoints": [8916], "characters": "\u22D4" },
+  "&forkv;": { "codepoints": [10969], "characters": "\u2AD9" },
+  "&fpartint;": { "codepoints": [10765], "characters": "\u2A0D" },
+  "&frac12": { "codepoints": [189], "characters": "\u00BD" },
+  "&frac12;": { "codepoints": [189], "characters": "\u00BD" },
+  "&frac13;": { "codepoints": [8531], "characters": "\u2153" },
+  "&frac14": { "codepoints": [188], "characters": "\u00BC" },
+  "&frac14;": { "codepoints": [188], "characters": "\u00BC" },
+  "&frac15;": { "codepoints": [8533], "characters": "\u2155" },
+  "&frac16;": { "codepoints": [8537], "characters": "\u2159" },
+  "&frac18;": { "codepoints": [8539], "characters": "\u215B" },
+  "&frac23;": { "codepoints": [8532], "characters": "\u2154" },
+  "&frac25;": { "codepoints": [8534], "characters": "\u2156" },
+  "&frac34": { "codepoints": [190], "characters": "\u00BE" },
+  "&frac34;": { "codepoints": [190], "characters": "\u00BE" },
+  "&frac35;": { "codepoints": [8535], "characters": "\u2157" },
+  "&frac38;": { "codepoints": [8540], "characters": "\u215C" },
+  "&frac45;": { "codepoints": [8536], "characters": "\u2158" },
+  "&frac56;": { "codepoints": [8538], "characters": "\u215A" },
+  "&frac58;": { "codepoints": [8541], "characters": "\u215D" },
+  "&frac78;": { "codepoints": [8542], "characters": "\u215E" },
+  "&frasl;": { "codepoints": [8260], "characters": "\u2044" },
+  "&frown;": { "codepoints": [8994], "characters": "\u2322" },
+  "&fscr;": { "codepoints": [119995], "characters": "\uD835\uDCBB" },
+  "&gE;": { "codepoints": [8807], "characters": "\u2267" },
+  "&gEl;": { "codepoints": [10892], "characters": "\u2A8C" },
+  "&gacute;": { "codepoints": [501], "characters": "\u01F5" },
+  "&gamma;": { "codepoints": [947], "characters": "\u03B3" },
+  "&gammad;": { "codepoints": [989], "characters": "\u03DD" },
+  "&gap;": { "codepoints": [10886], "characters": "\u2A86" },
+  "&gbreve;": { "codepoints": [287], "characters": "\u011F" },
+  "&gcirc;": { "codepoints": [285], "characters": "\u011D" },
+  "&gcy;": { "codepoints": [1075], "characters": "\u0433" },
+  "&gdot;": { "codepoints": [289], "characters": "\u0121" },
+  "&ge;": { "codepoints": [8805], "characters": "\u2265" },
+  "&gel;": { "codepoints": [8923], "characters": "\u22DB" },
+  "&geq;": { "codepoints": [8805], "characters": "\u2265" },
+  "&geqq;": { "codepoints": [8807], "characters": "\u2267" },
+  "&geqslant;": { "codepoints": [10878], "characters": "\u2A7E" },
+  "&ges;": { "codepoints": [10878], "characters": "\u2A7E" },
+  "&gescc;": { "codepoints": [10921], "characters": "\u2AA9" },
+  "&gesdot;": { "codepoints": [10880], "characters": "\u2A80" },
+  "&gesdoto;": { "codepoints": [10882], "characters": "\u2A82" },
+  "&gesdotol;": { "codepoints": [10884], "characters": "\u2A84" },
+  "&gesl;": { "codepoints": [8923, 65024], "characters": "\u22DB\uFE00" },
+  "&gesles;": { "codepoints": [10900], "characters": "\u2A94" },
+  "&gfr;": { "codepoints": [120100], "characters": "\uD835\uDD24" },
+  "&gg;": { "codepoints": [8811], "characters": "\u226B" },
+  "&ggg;": { "codepoints": [8921], "characters": "\u22D9" },
+  "&gimel;": { "codepoints": [8503], "characters": "\u2137" },
+  "&gjcy;": { "codepoints": [1107], "characters": "\u0453" },
+  "&gl;": { "codepoints": [8823], "characters": "\u2277" },
+  "&glE;": { "codepoints": [10898], "characters": "\u2A92" },
+  "&gla;": { "codepoints": [10917], "characters": "\u2AA5" },
+  "&glj;": { "codepoints": [10916], "characters": "\u2AA4" },
+  "&gnE;": { "codepoints": [8809], "characters": "\u2269" },
+  "&gnap;": { "codepoints": [10890], "characters": "\u2A8A" },
+  "&gnapprox;": { "codepoints": [10890], "characters": "\u2A8A" },
+  "&gne;": { "codepoints": [10888], "characters": "\u2A88" },
+  "&gneq;": { "codepoints": [10888], "characters": "\u2A88" },
+  "&gneqq;": { "codepoints": [8809], "characters": "\u2269" },
+  "&gnsim;": { "codepoints": [8935], "characters": "\u22E7" },
+  "&gopf;": { "codepoints": [120152], "characters": "\uD835\uDD58" },
+  "&grave;": { "codepoints": [96], "characters": "\u0060" },
+  "&gscr;": { "codepoints": [8458], "characters": "\u210A" },
+  "&gsim;": { "codepoints": [8819], "characters": "\u2273" },
+  "&gsime;": { "codepoints": [10894], "characters": "\u2A8E" },
+  "&gsiml;": { "codepoints": [10896], "characters": "\u2A90" },
+  "&gt": { "codepoints": [62], "characters": "\u003E" },
+  "&gt;": { "codepoints": [62], "characters": "\u003E" },
+  "&gtcc;": { "codepoints": [10919], "characters": "\u2AA7" },
+  "&gtcir;": { "codepoints": [10874], "characters": "\u2A7A" },
+  "&gtdot;": { "codepoints": [8919], "characters": "\u22D7" },
+  "&gtlPar;": { "codepoints": [10645], "characters": "\u2995" },
+  "&gtquest;": { "codepoints": [10876], "characters": "\u2A7C" },
+  "&gtrapprox;": { "codepoints": [10886], "characters": "\u2A86" },
+  "&gtrarr;": { "codepoints": [10616], "characters": "\u2978" },
+  "&gtrdot;": { "codepoints": [8919], "characters": "\u22D7" },
+  "&gtreqless;": { "codepoints": [8923], "characters": "\u22DB" },
+  "&gtreqqless;": { "codepoints": [10892], "characters": "\u2A8C" },
+  "&gtrless;": { "codepoints": [8823], "characters": "\u2277" },
+  "&gtrsim;": { "codepoints": [8819], "characters": "\u2273" },
+  "&gvertneqq;": { "codepoints": [8809, 65024], "characters": "\u2269\uFE00" },
+  "&gvnE;": { "codepoints": [8809, 65024], "characters": "\u2269\uFE00" },
+  "&hArr;": { "codepoints": [8660], "characters": "\u21D4" },
+  "&hairsp;": { "codepoints": [8202], "characters": "\u200A" },
+  "&half;": { "codepoints": [189], "characters": "\u00BD" },
+  "&hamilt;": { "codepoints": [8459], "characters": "\u210B" },
+  "&hardcy;": { "codepoints": [1098], "characters": "\u044A" },
+  "&harr;": { "codepoints": [8596], "characters": "\u2194" },
+  "&harrcir;": { "codepoints": [10568], "characters": "\u2948" },
+  "&harrw;": { "codepoints": [8621], "characters": "\u21AD" },
+  "&hbar;": { "codepoints": [8463], "characters": "\u210F" },
+  "&hcirc;": { "codepoints": [293], "characters": "\u0125" },
+  "&hearts;": { "codepoints": [9829], "characters": "\u2665" },
+  "&heartsuit;": { "codepoints": [9829], "characters": "\u2665" },
+  "&hellip;": { "codepoints": [8230], "characters": "\u2026" },
+  "&hercon;": { "codepoints": [8889], "characters": "\u22B9" },
+  "&hfr;": { "codepoints": [120101], "characters": "\uD835\uDD25" },
+  "&hksearow;": { "codepoints": [10533], "characters": "\u2925" },
+  "&hkswarow;": { "codepoints": [10534], "characters": "\u2926" },
+  "&hoarr;": { "codepoints": [8703], "characters": "\u21FF" },
+  "&homtht;": { "codepoints": [8763], "characters": "\u223B" },
+  "&hookleftarrow;": { "codepoints": [8617], "characters": "\u21A9" },
+  "&hookrightarrow;": { "codepoints": [8618], "characters": "\u21AA" },
+  "&hopf;": { "codepoints": [120153], "characters": "\uD835\uDD59" },
+  "&horbar;": { "codepoints": [8213], "characters": "\u2015" },
+  "&hscr;": { "codepoints": [119997], "characters": "\uD835\uDCBD" },
+  "&hslash;": { "codepoints": [8463], "characters": "\u210F" },
+  "&hstrok;": { "codepoints": [295], "characters": "\u0127" },
+  "&hybull;": { "codepoints": [8259], "characters": "\u2043" },
+  "&hyphen;": { "codepoints": [8208], "characters": "\u2010" },
+  "&iacute": { "codepoints": [237], "characters": "\u00ED" },
+  "&iacute;": { "codepoints": [237], "characters": "\u00ED" },
+  "&ic;": { "codepoints": [8291], "characters": "\u2063" },
+  "&icirc": { "codepoints": [238], "characters": "\u00EE" },
+  "&icirc;": { "codepoints": [238], "characters": "\u00EE" },
+  "&icy;": { "codepoints": [1080], "characters": "\u0438" },
+  "&iecy;": { "codepoints": [1077], "characters": "\u0435" },
+  "&iexcl": { "codepoints": [161], "characters": "\u00A1" },
+  "&iexcl;": { "codepoints": [161], "characters": "\u00A1" },
+  "&iff;": { "codepoints": [8660], "characters": "\u21D4" },
+  "&ifr;": { "codepoints": [120102], "characters": "\uD835\uDD26" },
+  "&igrave": { "codepoints": [236], "characters": "\u00EC" },
+  "&igrave;": { "codepoints": [236], "characters": "\u00EC" },
+  "&ii;": { "codepoints": [8520], "characters": "\u2148" },
+  "&iiiint;": { "codepoints": [10764], "characters": "\u2A0C" },
+  "&iiint;": { "codepoints": [8749], "characters": "\u222D" },
+  "&iinfin;": { "codepoints": [10716], "characters": "\u29DC" },
+  "&iiota;": { "codepoints": [8489], "characters": "\u2129" },
+  "&ijlig;": { "codepoints": [307], "characters": "\u0133" },
+  "&imacr;": { "codepoints": [299], "characters": "\u012B" },
+  "&image;": { "codepoints": [8465], "characters": "\u2111" },
+  "&imagline;": { "codepoints": [8464], "characters": "\u2110" },
+  "&imagpart;": { "codepoints": [8465], "characters": "\u2111" },
+  "&imath;": { "codepoints": [305], "characters": "\u0131" },
+  "&imof;": { "codepoints": [8887], "characters": "\u22B7" },
+  "&imped;": { "codepoints": [437], "characters": "\u01B5" },
+  "&in;": { "codepoints": [8712], "characters": "\u2208" },
+  "&incare;": { "codepoints": [8453], "characters": "\u2105" },
+  "&infin;": { "codepoints": [8734], "characters": "\u221E" },
+  "&infintie;": { "codepoints": [10717], "characters": "\u29DD" },
+  "&inodot;": { "codepoints": [305], "characters": "\u0131" },
+  "&int;": { "codepoints": [8747], "characters": "\u222B" },
+  "&intcal;": { "codepoints": [8890], "characters": "\u22BA" },
+  "&integers;": { "codepoints": [8484], "characters": "\u2124" },
+  "&intercal;": { "codepoints": [8890], "characters": "\u22BA" },
+  "&intlarhk;": { "codepoints": [10775], "characters": "\u2A17" },
+  "&intprod;": { "codepoints": [10812], "characters": "\u2A3C" },
+  "&iocy;": { "codepoints": [1105], "characters": "\u0451" },
+  "&iogon;": { "codepoints": [303], "characters": "\u012F" },
+  "&iopf;": { "codepoints": [120154], "characters": "\uD835\uDD5A" },
+  "&iota;": { "codepoints": [953], "characters": "\u03B9" },
+  "&iprod;": { "codepoints": [10812], "characters": "\u2A3C" },
+  "&iquest": { "codepoints": [191], "characters": "\u00BF" },
+  "&iquest;": { "codepoints": [191], "characters": "\u00BF" },
+  "&iscr;": { "codepoints": [119998], "characters": "\uD835\uDCBE" },
+  "&isin;": { "codepoints": [8712], "characters": "\u2208" },
+  "&isinE;": { "codepoints": [8953], "characters": "\u22F9" },
+  "&isindot;": { "codepoints": [8949], "characters": "\u22F5" },
+  "&isins;": { "codepoints": [8948], "characters": "\u22F4" },
+  "&isinsv;": { "codepoints": [8947], "characters": "\u22F3" },
+  "&isinv;": { "codepoints": [8712], "characters": "\u2208" },
+  "&it;": { "codepoints": [8290], "characters": "\u2062" },
+  "&itilde;": { "codepoints": [297], "characters": "\u0129" },
+  "&iukcy;": { "codepoints": [1110], "characters": "\u0456" },
+  "&iuml": { "codepoints": [239], "characters": "\u00EF" },
+  "&iuml;": { "codepoints": [239], "characters": "\u00EF" },
+  "&jcirc;": { "codepoints": [309], "characters": "\u0135" },
+  "&jcy;": { "codepoints": [1081], "characters": "\u0439" },
+  "&jfr;": { "codepoints": [120103], "characters": "\uD835\uDD27" },
+  "&jmath;": { "codepoints": [567], "characters": "\u0237" },
+  "&jopf;": { "codepoints": [120155], "characters": "\uD835\uDD5B" },
+  "&jscr;": { "codepoints": [119999], "characters": "\uD835\uDCBF" },
+  "&jsercy;": { "codepoints": [1112], "characters": "\u0458" },
+  "&jukcy;": { "codepoints": [1108], "characters": "\u0454" },
+  "&kappa;": { "codepoints": [954], "characters": "\u03BA" },
+  "&kappav;": { "codepoints": [1008], "characters": "\u03F0" },
+  "&kcedil;": { "codepoints": [311], "characters": "\u0137" },
+  "&kcy;": { "codepoints": [1082], "characters": "\u043A" },
+  "&kfr;": { "codepoints": [120104], "characters": "\uD835\uDD28" },
+  "&kgreen;": { "codepoints": [312], "characters": "\u0138" },
+  "&khcy;": { "codepoints": [1093], "characters": "\u0445" },
+  "&kjcy;": { "codepoints": [1116], "characters": "\u045C" },
+  "&kopf;": { "codepoints": [120156], "characters": "\uD835\uDD5C" },
+  "&kscr;": { "codepoints": [120000], "characters": "\uD835\uDCC0" },
+  "&lAarr;": { "codepoints": [8666], "characters": "\u21DA" },
+  "&lArr;": { "codepoints": [8656], "characters": "\u21D0" },
+  "&lAtail;": { "codepoints": [10523], "characters": "\u291B" },
+  "&lBarr;": { "codepoints": [10510], "characters": "\u290E" },
+  "&lE;": { "codepoints": [8806], "characters": "\u2266" },
+  "&lEg;": { "codepoints": [10891], "characters": "\u2A8B" },
+  "&lHar;": { "codepoints": [10594], "characters": "\u2962" },
+  "&lacute;": { "codepoints": [314], "characters": "\u013A" },
+  "&laemptyv;": { "codepoints": [10676], "characters": "\u29B4" },
+  "&lagran;": { "codepoints": [8466], "characters": "\u2112" },
+  "&lambda;": { "codepoints": [955], "characters": "\u03BB" },
+  "&lang;": { "codepoints": [10216], "characters": "\u27E8" },
+  "&langd;": { "codepoints": [10641], "characters": "\u2991" },
+  "&langle;": { "codepoints": [10216], "characters": "\u27E8" },
+  "&lap;": { "codepoints": [10885], "characters": "\u2A85" },
+  "&laquo": { "codepoints": [171], "characters": "\u00AB" },
+  "&laquo;": { "codepoints": [171], "characters": "\u00AB" },
+  "&larr;": { "codepoints": [8592], "characters": "\u2190" },
+  "&larrb;": { "codepoints": [8676], "characters": "\u21E4" },
+  "&larrbfs;": { "codepoints": [10527], "characters": "\u291F" },
+  "&larrfs;": { "codepoints": [10525], "characters": "\u291D" },
+  "&larrhk;": { "codepoints": [8617], "characters": "\u21A9" },
+  "&larrlp;": { "codepoints": [8619], "characters": "\u21AB" },
+  "&larrpl;": { "codepoints": [10553], "characters": "\u2939" },
+  "&larrsim;": { "codepoints": [10611], "characters": "\u2973" },
+  "&larrtl;": { "codepoints": [8610], "characters": "\u21A2" },
+  "&lat;": { "codepoints": [10923], "characters": "\u2AAB" },
+  "&latail;": { "codepoints": [10521], "characters": "\u2919" },
+  "&late;": { "codepoints": [10925], "characters": "\u2AAD" },
+  "&lates;": { "codepoints": [10925, 65024], "characters": "\u2AAD\uFE00" },
+  "&lbarr;": { "codepoints": [10508], "characters": "\u290C" },
+  "&lbbrk;": { "codepoints": [10098], "characters": "\u2772" },
+  "&lbrace;": { "codepoints": [123], "characters": "\u007B" },
+  "&lbrack;": { "codepoints": [91], "characters": "\u005B" },
+  "&lbrke;": { "codepoints": [10635], "characters": "\u298B" },
+  "&lbrksld;": { "codepoints": [10639], "characters": "\u298F" },
+  "&lbrkslu;": { "codepoints": [10637], "characters": "\u298D" },
+  "&lcaron;": { "codepoints": [318], "characters": "\u013E" },
+  "&lcedil;": { "codepoints": [316], "characters": "\u013C" },
+  "&lceil;": { "codepoints": [8968], "characters": "\u2308" },
+  "&lcub;": { "codepoints": [123], "characters": "\u007B" },
+  "&lcy;": { "codepoints": [1083], "characters": "\u043B" },
+  "&ldca;": { "codepoints": [10550], "characters": "\u2936" },
+  "&ldquo;": { "codepoints": [8220], "characters": "\u201C" },
+  "&ldquor;": { "codepoints": [8222], "characters": "\u201E" },
+  "&ldrdhar;": { "codepoints": [10599], "characters": "\u2967" },
+  "&ldrushar;": { "codepoints": [10571], "characters": "\u294B" },
+  "&ldsh;": { "codepoints": [8626], "characters": "\u21B2" },
+  "&le;": { "codepoints": [8804], "characters": "\u2264" },
+  "&leftarrow;": { "codepoints": [8592], "characters": "\u2190" },
+  "&leftarrowtail;": { "codepoints": [8610], "characters": "\u21A2" },
+  "&leftharpoondown;": { "codepoints": [8637], "characters": "\u21BD" },
+  "&leftharpoonup;": { "codepoints": [8636], "characters": "\u21BC" },
+  "&leftleftarrows;": { "codepoints": [8647], "characters": "\u21C7" },
+  "&leftrightarrow;": { "codepoints": [8596], "characters": "\u2194" },
+  "&leftrightarrows;": { "codepoints": [8646], "characters": "\u21C6" },
+  "&leftrightharpoons;": { "codepoints": [8651], "characters": "\u21CB" },
+  "&leftrightsquigarrow;": { "codepoints": [8621], "characters": "\u21AD" },
+  "&leftthreetimes;": { "codepoints": [8907], "characters": "\u22CB" },
+  "&leg;": { "codepoints": [8922], "characters": "\u22DA" },
+  "&leq;": { "codepoints": [8804], "characters": "\u2264" },
+  "&leqq;": { "codepoints": [8806], "characters": "\u2266" },
+  "&leqslant;": { "codepoints": [10877], "characters": "\u2A7D" },
+  "&les;": { "codepoints": [10877], "characters": "\u2A7D" },
+  "&lescc;": { "codepoints": [10920], "characters": "\u2AA8" },
+  "&lesdot;": { "codepoints": [10879], "characters": "\u2A7F" },
+  "&lesdoto;": { "codepoints": [10881], "characters": "\u2A81" },
+  "&lesdotor;": { "codepoints": [10883], "characters": "\u2A83" },
+  "&lesg;": { "codepoints": [8922, 65024], "characters": "\u22DA\uFE00" },
+  "&lesges;": { "codepoints": [10899], "characters": "\u2A93" },
+  "&lessapprox;": { "codepoints": [10885], "characters": "\u2A85" },
+  "&lessdot;": { "codepoints": [8918], "characters": "\u22D6" },
+  "&lesseqgtr;": { "codepoints": [8922], "characters": "\u22DA" },
+  "&lesseqqgtr;": { "codepoints": [10891], "characters": "\u2A8B" },
+  "&lessgtr;": { "codepoints": [8822], "characters": "\u2276" },
+  "&lesssim;": { "codepoints": [8818], "characters": "\u2272" },
+  "&lfisht;": { "codepoints": [10620], "characters": "\u297C" },
+  "&lfloor;": { "codepoints": [8970], "characters": "\u230A" },
+  "&lfr;": { "codepoints": [120105], "characters": "\uD835\uDD29" },
+  "&lg;": { "codepoints": [8822], "characters": "\u2276" },
+  "&lgE;": { "codepoints": [10897], "characters": "\u2A91" },
+  "&lhard;": { "codepoints": [8637], "characters": "\u21BD" },
+  "&lharu;": { "codepoints": [8636], "characters": "\u21BC" },
+  "&lharul;": { "codepoints": [10602], "characters": "\u296A" },
+  "&lhblk;": { "codepoints": [9604], "characters": "\u2584" },
+  "&ljcy;": { "codepoints": [1113], "characters": "\u0459" },
+  "&ll;": { "codepoints": [8810], "characters": "\u226A" },
+  "&llarr;": { "codepoints": [8647], "characters": "\u21C7" },
+  "&llcorner;": { "codepoints": [8990], "characters": "\u231E" },
+  "&llhard;": { "codepoints": [10603], "characters": "\u296B" },
+  "&lltri;": { "codepoints": [9722], "characters": "\u25FA" },
+  "&lmidot;": { "codepoints": [320], "characters": "\u0140" },
+  "&lmoust;": { "codepoints": [9136], "characters": "\u23B0" },
+  "&lmoustache;": { "codepoints": [9136], "characters": "\u23B0" },
+  "&lnE;": { "codepoints": [8808], "characters": "\u2268" },
+  "&lnap;": { "codepoints": [10889], "characters": "\u2A89" },
+  "&lnapprox;": { "codepoints": [10889], "characters": "\u2A89" },
+  "&lne;": { "codepoints": [10887], "characters": "\u2A87" },
+  "&lneq;": { "codepoints": [10887], "characters": "\u2A87" },
+  "&lneqq;": { "codepoints": [8808], "characters": "\u2268" },
+  "&lnsim;": { "codepoints": [8934], "characters": "\u22E6" },
+  "&loang;": { "codepoints": [10220], "characters": "\u27EC" },
+  "&loarr;": { "codepoints": [8701], "characters": "\u21FD" },
+  "&lobrk;": { "codepoints": [10214], "characters": "\u27E6" },
+  "&longleftarrow;": { "codepoints": [10229], "characters": "\u27F5" },
+  "&longleftrightarrow;": { "codepoints": [10231], "characters": "\u27F7" },
+  "&longmapsto;": { "codepoints": [10236], "characters": "\u27FC" },
+  "&longrightarrow;": { "codepoints": [10230], "characters": "\u27F6" },
+  "&looparrowleft;": { "codepoints": [8619], "characters": "\u21AB" },
+  "&looparrowright;": { "codepoints": [8620], "characters": "\u21AC" },
+  "&lopar;": { "codepoints": [10629], "characters": "\u2985" },
+  "&lopf;": { "codepoints": [120157], "characters": "\uD835\uDD5D" },
+  "&loplus;": { "codepoints": [10797], "characters": "\u2A2D" },
+  "&lotimes;": { "codepoints": [10804], "characters": "\u2A34" },
+  "&lowast;": { "codepoints": [8727], "characters": "\u2217" },
+  "&lowbar;": { "codepoints": [95], "characters": "\u005F" },
+  "&loz;": { "codepoints": [9674], "characters": "\u25CA" },
+  "&lozenge;": { "codepoints": [9674], "characters": "\u25CA" },
+  "&lozf;": { "codepoints": [10731], "characters": "\u29EB" },
+  "&lpar;": { "codepoints": [40], "characters": "\u0028" },
+  "&lparlt;": { "codepoints": [10643], "characters": "\u2993" },
+  "&lrarr;": { "codepoints": [8646], "characters": "\u21C6" },
+  "&lrcorner;": { "codepoints": [8991], "characters": "\u231F" },
+  "&lrhar;": { "codepoints": [8651], "characters": "\u21CB" },
+  "&lrhard;": { "codepoints": [10605], "characters": "\u296D" },
+  "&lrm;": { "codepoints": [8206], "characters": "\u200E" },
+  "&lrtri;": { "codepoints": [8895], "characters": "\u22BF" },
+  "&lsaquo;": { "codepoints": [8249], "characters": "\u2039" },
+  "&lscr;": { "codepoints": [120001], "characters": "\uD835\uDCC1" },
+  "&lsh;": { "codepoints": [8624], "characters": "\u21B0" },
+  "&lsim;": { "codepoints": [8818], "characters": "\u2272" },
+  "&lsime;": { "codepoints": [10893], "characters": "\u2A8D" },
+  "&lsimg;": { "codepoints": [10895], "characters": "\u2A8F" },
+  "&lsqb;": { "codepoints": [91], "characters": "\u005B" },
+  "&lsquo;": { "codepoints": [8216], "characters": "\u2018" },
+  "&lsquor;": { "codepoints": [8218], "characters": "\u201A" },
+  "&lstrok;": { "codepoints": [322], "characters": "\u0142" },
+  "&lt": { "codepoints": [60], "characters": "\u003C" },
+  "&lt;": { "codepoints": [60], "characters": "\u003C" },
+  "&ltcc;": { "codepoints": [10918], "characters": "\u2AA6" },
+  "&ltcir;": { "codepoints": [10873], "characters": "\u2A79" },
+  "&ltdot;": { "codepoints": [8918], "characters": "\u22D6" },
+  "&lthree;": { "codepoints": [8907], "characters": "\u22CB" },
+  "&ltimes;": { "codepoints": [8905], "characters": "\u22C9" },
+  "&ltlarr;": { "codepoints": [10614], "characters": "\u2976" },
+  "&ltquest;": { "codepoints": [10875], "characters": "\u2A7B" },
+  "&ltrPar;": { "codepoints": [10646], "characters": "\u2996" },
+  "&ltri;": { "codepoints": [9667], "characters": "\u25C3" },
+  "&ltrie;": { "codepoints": [8884], "characters": "\u22B4" },
+  "&ltrif;": { "codepoints": [9666], "characters": "\u25C2" },
+  "&lurdshar;": { "codepoints": [10570], "characters": "\u294A" },
+  "&luruhar;": { "codepoints": [10598], "characters": "\u2966" },
+  "&lvertneqq;": { "codepoints": [8808, 65024], "characters": "\u2268\uFE00" },
+  "&lvnE;": { "codepoints": [8808, 65024], "characters": "\u2268\uFE00" },
+  "&mDDot;": { "codepoints": [8762], "characters": "\u223A" },
+  "&macr": { "codepoints": [175], "characters": "\u00AF" },
+  "&macr;": { "codepoints": [175], "characters": "\u00AF" },
+  "&male;": { "codepoints": [9794], "characters": "\u2642" },
+  "&malt;": { "codepoints": [10016], "characters": "\u2720" },
+  "&maltese;": { "codepoints": [10016], "characters": "\u2720" },
+  "&map;": { "codepoints": [8614], "characters": "\u21A6" },
+  "&mapsto;": { "codepoints": [8614], "characters": "\u21A6" },
+  "&mapstodown;": { "codepoints": [8615], "characters": "\u21A7" },
+  "&mapstoleft;": { "codepoints": [8612], "characters": "\u21A4" },
+  "&mapstoup;": { "codepoints": [8613], "characters": "\u21A5" },
+  "&marker;": { "codepoints": [9646], "characters": "\u25AE" },
+  "&mcomma;": { "codepoints": [10793], "characters": "\u2A29" },
+  "&mcy;": { "codepoints": [1084], "characters": "\u043C" },
+  "&mdash;": { "codepoints": [8212], "characters": "\u2014" },
+  "&measuredangle;": { "codepoints": [8737], "characters": "\u2221" },
+  "&mfr;": { "codepoints": [120106], "characters": "\uD835\uDD2A" },
+  "&mho;": { "codepoints": [8487], "characters": "\u2127" },
+  "&micro": { "codepoints": [181], "characters": "\u00B5" },
+  "&micro;": { "codepoints": [181], "characters": "\u00B5" },
+  "&mid;": { "codepoints": [8739], "characters": "\u2223" },
+  "&midast;": { "codepoints": [42], "characters": "\u002A" },
+  "&midcir;": { "codepoints": [10992], "characters": "\u2AF0" },
+  "&middot": { "codepoints": [183], "characters": "\u00B7" },
+  "&middot;": { "codepoints": [183], "characters": "\u00B7" },
+  "&minus;": { "codepoints": [8722], "characters": "\u2212" },
+  "&minusb;": { "codepoints": [8863], "characters": "\u229F" },
+  "&minusd;": { "codepoints": [8760], "characters": "\u2238" },
+  "&minusdu;": { "codepoints": [10794], "characters": "\u2A2A" },
+  "&mlcp;": { "codepoints": [10971], "characters": "\u2ADB" },
+  "&mldr;": { "codepoints": [8230], "characters": "\u2026" },
+  "&mnplus;": { "codepoints": [8723], "characters": "\u2213" },
+  "&models;": { "codepoints": [8871], "characters": "\u22A7" },
+  "&mopf;": { "codepoints": [120158], "characters": "\uD835\uDD5E" },
+  "&mp;": { "codepoints": [8723], "characters": "\u2213" },
+  "&mscr;": { "codepoints": [120002], "characters": "\uD835\uDCC2" },
+  "&mstpos;": { "codepoints": [8766], "characters": "\u223E" },
+  "&mu;": { "codepoints": [956], "characters": "\u03BC" },
+  "&multimap;": { "codepoints": [8888], "characters": "\u22B8" },
+  "&mumap;": { "codepoints": [8888], "characters": "\u22B8" },
+  "&nGg;": { "codepoints": [8921, 824], "characters": "\u22D9\u0338" },
+  "&nGt;": { "codepoints": [8811, 8402], "characters": "\u226B\u20D2" },
+  "&nGtv;": { "codepoints": [8811, 824], "characters": "\u226B\u0338" },
+  "&nLeftarrow;": { "codepoints": [8653], "characters": "\u21CD" },
+  "&nLeftrightarrow;": { "codepoints": [8654], "characters": "\u21CE" },
+  "&nLl;": { "codepoints": [8920, 824], "characters": "\u22D8\u0338" },
+  "&nLt;": { "codepoints": [8810, 8402], "characters": "\u226A\u20D2" },
+  "&nLtv;": { "codepoints": [8810, 824], "characters": "\u226A\u0338" },
+  "&nRightarrow;": { "codepoints": [8655], "characters": "\u21CF" },
+  "&nVDash;": { "codepoints": [8879], "characters": "\u22AF" },
+  "&nVdash;": { "codepoints": [8878], "characters": "\u22AE" },
+  "&nabla;": { "codepoints": [8711], "characters": "\u2207" },
+  "&nacute;": { "codepoints": [324], "characters": "\u0144" },
+  "&nang;": { "codepoints": [8736, 8402], "characters": "\u2220\u20D2" },
+  "&nap;": { "codepoints": [8777], "characters": "\u2249" },
+  "&napE;": { "codepoints": [10864, 824], "characters": "\u2A70\u0338" },
+  "&napid;": { "codepoints": [8779, 824], "characters": "\u224B\u0338" },
+  "&napos;": { "codepoints": [329], "characters": "\u0149" },
+  "&napprox;": { "codepoints": [8777], "characters": "\u2249" },
+  "&natur;": { "codepoints": [9838], "characters": "\u266E" },
+  "&natural;": { "codepoints": [9838], "characters": "\u266E" },
+  "&naturals;": { "codepoints": [8469], "characters": "\u2115" },
+  "&nbsp": { "codepoints": [160], "characters": "\u00A0" },
+  "&nbsp;": { "codepoints": [160], "characters": "\u00A0" },
+  "&nbump;": { "codepoints": [8782, 824], "characters": "\u224E\u0338" },
+  "&nbumpe;": { "codepoints": [8783, 824], "characters": "\u224F\u0338" },
+  "&ncap;": { "codepoints": [10819], "characters": "\u2A43" },
+  "&ncaron;": { "codepoints": [328], "characters": "\u0148" },
+  "&ncedil;": { "codepoints": [326], "characters": "\u0146" },
+  "&ncong;": { "codepoints": [8775], "characters": "\u2247" },
+  "&ncongdot;": { "codepoints": [10861, 824], "characters": "\u2A6D\u0338" },
+  "&ncup;": { "codepoints": [10818], "characters": "\u2A42" },
+  "&ncy;": { "codepoints": [1085], "characters": "\u043D" },
+  "&ndash;": { "codepoints": [8211], "characters": "\u2013" },
+  "&ne;": { "codepoints": [8800], "characters": "\u2260" },
+  "&neArr;": { "codepoints": [8663], "characters": "\u21D7" },
+  "&nearhk;": { "codepoints": [10532], "characters": "\u2924" },
+  "&nearr;": { "codepoints": [8599], "characters": "\u2197" },
+  "&nearrow;": { "codepoints": [8599], "characters": "\u2197" },
+  "&nedot;": { "codepoints": [8784, 824], "characters": "\u2250\u0338" },
+  "&nequiv;": { "codepoints": [8802], "characters": "\u2262" },
+  "&nesear;": { "codepoints": [10536], "characters": "\u2928" },
+  "&nesim;": { "codepoints": [8770, 824], "characters": "\u2242\u0338" },
+  "&nexist;": { "codepoints": [8708], "characters": "\u2204" },
+  "&nexists;": { "codepoints": [8708], "characters": "\u2204" },
+  "&nfr;": { "codepoints": [120107], "characters": "\uD835\uDD2B" },
+  "&ngE;": { "codepoints": [8807, 824], "characters": "\u2267\u0338" },
+  "&nge;": { "codepoints": [8817], "characters": "\u2271" },
+  "&ngeq;": { "codepoints": [8817], "characters": "\u2271" },
+  "&ngeqq;": { "codepoints": [8807, 824], "characters": "\u2267\u0338" },
+  "&ngeqslant;": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" },
+  "&nges;": { "codepoints": [10878, 824], "characters": "\u2A7E\u0338" },
+  "&ngsim;": { "codepoints": [8821], "characters": "\u2275" },
+  "&ngt;": { "codepoints": [8815], "characters": "\u226F" },
+  "&ngtr;": { "codepoints": [8815], "characters": "\u226F" },
+  "&nhArr;": { "codepoints": [8654], "characters": "\u21CE" },
+  "&nharr;": { "codepoints": [8622], "characters": "\u21AE" },
+  "&nhpar;": { "codepoints": [10994], "characters": "\u2AF2" },
+  "&ni;": { "codepoints": [8715], "characters": "\u220B" },
+  "&nis;": { "codepoints": [8956], "characters": "\u22FC" },
+  "&nisd;": { "codepoints": [8954], "characters": "\u22FA" },
+  "&niv;": { "codepoints": [8715], "characters": "\u220B" },
+  "&njcy;": { "codepoints": [1114], "characters": "\u045A" },
+  "&nlArr;": { "codepoints": [8653], "characters": "\u21CD" },
+  "&nlE;": { "codepoints": [8806, 824], "characters": "\u2266\u0338" },
+  "&nlarr;": { "codepoints": [8602], "characters": "\u219A" },
+  "&nldr;": { "codepoints": [8229], "characters": "\u2025" },
+  "&nle;": { "codepoints": [8816], "characters": "\u2270" },
+  "&nleftarrow;": { "codepoints": [8602], "characters": "\u219A" },
+  "&nleftrightarrow;": { "codepoints": [8622], "characters": "\u21AE" },
+  "&nleq;": { "codepoints": [8816], "characters": "\u2270" },
+  "&nleqq;": { "codepoints": [8806, 824], "characters": "\u2266\u0338" },
+  "&nleqslant;": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" },
+  "&nles;": { "codepoints": [10877, 824], "characters": "\u2A7D\u0338" },
+  "&nless;": { "codepoints": [8814], "characters": "\u226E" },
+  "&nlsim;": { "codepoints": [8820], "characters": "\u2274" },
+  "&nlt;": { "codepoints": [8814], "characters": "\u226E" },
+  "&nltri;": { "codepoints": [8938], "characters": "\u22EA" },
+  "&nltrie;": { "codepoints": [8940], "characters": "\u22EC" },
+  "&nmid;": { "codepoints": [8740], "characters": "\u2224" },
+  "&nopf;": { "codepoints": [120159], "characters": "\uD835\uDD5F" },
+  "&not": { "codepoints": [172], "characters": "\u00AC" },
+  "&not;": { "codepoints": [172], "characters": "\u00AC" },
+  "&notin;": { "codepoints": [8713], "characters": "\u2209" },
+  "&notinE;": { "codepoints": [8953, 824], "characters": "\u22F9\u0338" },
+  "&notindot;": { "codepoints": [8949, 824], "characters": "\u22F5\u0338" },
+  "&notinva;": { "codepoints": [8713], "characters": "\u2209" },
+  "&notinvb;": { "codepoints": [8951], "characters": "\u22F7" },
+  "&notinvc;": { "codepoints": [8950], "characters": "\u22F6" },
+  "&notni;": { "codepoints": [8716], "characters": "\u220C" },
+  "&notniva;": { "codepoints": [8716], "characters": "\u220C" },
+  "&notnivb;": { "codepoints": [8958], "characters": "\u22FE" },
+  "&notnivc;": { "codepoints": [8957], "characters": "\u22FD" },
+  "&npar;": { "codepoints": [8742], "characters": "\u2226" },
+  "&nparallel;": { "codepoints": [8742], "characters": "\u2226" },
+  "&nparsl;": { "codepoints": [11005, 8421], "characters": "\u2AFD\u20E5" },
+  "&npart;": { "codepoints": [8706, 824], "characters": "\u2202\u0338" },
+  "&npolint;": { "codepoints": [10772], "characters": "\u2A14" },
+  "&npr;": { "codepoints": [8832], "characters": "\u2280" },
+  "&nprcue;": { "codepoints": [8928], "characters": "\u22E0" },
+  "&npre;": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" },
+  "&nprec;": { "codepoints": [8832], "characters": "\u2280" },
+  "&npreceq;": { "codepoints": [10927, 824], "characters": "\u2AAF\u0338" },
+  "&nrArr;": { "codepoints": [8655], "characters": "\u21CF" },
+  "&nrarr;": { "codepoints": [8603], "characters": "\u219B" },
+  "&nrarrc;": { "codepoints": [10547, 824], "characters": "\u2933\u0338" },
+  "&nrarrw;": { "codepoints": [8605, 824], "characters": "\u219D\u0338" },
+  "&nrightarrow;": { "codepoints": [8603], "characters": "\u219B" },
+  "&nrtri;": { "codepoints": [8939], "characters": "\u22EB" },
+  "&nrtrie;": { "codepoints": [8941], "characters": "\u22ED" },
+  "&nsc;": { "codepoints": [8833], "characters": "\u2281" },
+  "&nsccue;": { "codepoints": [8929], "characters": "\u22E1" },
+  "&nsce;": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" },
+  "&nscr;": { "codepoints": [120003], "characters": "\uD835\uDCC3" },
+  "&nshortmid;": { "codepoints": [8740], "characters": "\u2224" },
+  "&nshortparallel;": { "codepoints": [8742], "characters": "\u2226" },
+  "&nsim;": { "codepoints": [8769], "characters": "\u2241" },
+  "&nsime;": { "codepoints": [8772], "characters": "\u2244" },
+  "&nsimeq;": { "codepoints": [8772], "characters": "\u2244" },
+  "&nsmid;": { "codepoints": [8740], "characters": "\u2224" },
+  "&nspar;": { "codepoints": [8742], "characters": "\u2226" },
+  "&nsqsube;": { "codepoints": [8930], "characters": "\u22E2" },
+  "&nsqsupe;": { "codepoints": [8931], "characters": "\u22E3" },
+  "&nsub;": { "codepoints": [8836], "characters": "\u2284" },
+  "&nsubE;": { "codepoints": [10949, 824], "characters": "\u2AC5\u0338" },
+  "&nsube;": { "codepoints": [8840], "characters": "\u2288" },
+  "&nsubset;": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" },
+  "&nsubseteq;": { "codepoints": [8840], "characters": "\u2288" },
+  "&nsubseteqq;": { "codepoints": [10949, 824], "characters": "\u2AC5\u0338" },
+  "&nsucc;": { "codepoints": [8833], "characters": "\u2281" },
+  "&nsucceq;": { "codepoints": [10928, 824], "characters": "\u2AB0\u0338" },
+  "&nsup;": { "codepoints": [8837], "characters": "\u2285" },
+  "&nsupE;": { "codepoints": [10950, 824], "characters": "\u2AC6\u0338" },
+  "&nsupe;": { "codepoints": [8841], "characters": "\u2289" },
+  "&nsupset;": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" },
+  "&nsupseteq;": { "codepoints": [8841], "characters": "\u2289" },
+  "&nsupseteqq;": { "codepoints": [10950, 824], "characters": "\u2AC6\u0338" },
+  "&ntgl;": { "codepoints": [8825], "characters": "\u2279" },
+  "&ntilde": { "codepoints": [241], "characters": "\u00F1" },
+  "&ntilde;": { "codepoints": [241], "characters": "\u00F1" },
+  "&ntlg;": { "codepoints": [8824], "characters": "\u2278" },
+  "&ntriangleleft;": { "codepoints": [8938], "characters": "\u22EA" },
+  "&ntrianglelefteq;": { "codepoints": [8940], "characters": "\u22EC" },
+  "&ntriangleright;": { "codepoints": [8939], "characters": "\u22EB" },
+  "&ntrianglerighteq;": { "codepoints": [8941], "characters": "\u22ED" },
+  "&nu;": { "codepoints": [957], "characters": "\u03BD" },
+  "&num;": { "codepoints": [35], "characters": "\u0023" },
+  "&numero;": { "codepoints": [8470], "characters": "\u2116" },
+  "&numsp;": { "codepoints": [8199], "characters": "\u2007" },
+  "&nvDash;": { "codepoints": [8877], "characters": "\u22AD" },
+  "&nvHarr;": { "codepoints": [10500], "characters": "\u2904" },
+  "&nvap;": { "codepoints": [8781, 8402], "characters": "\u224D\u20D2" },
+  "&nvdash;": { "codepoints": [8876], "characters": "\u22AC" },
+  "&nvge;": { "codepoints": [8805, 8402], "characters": "\u2265\u20D2" },
+  "&nvgt;": { "codepoints": [62, 8402], "characters": "\u003E\u20D2" },
+  "&nvinfin;": { "codepoints": [10718], "characters": "\u29DE" },
+  "&nvlArr;": { "codepoints": [10498], "characters": "\u2902" },
+  "&nvle;": { "codepoints": [8804, 8402], "characters": "\u2264\u20D2" },
+  "&nvlt;": { "codepoints": [60, 8402], "characters": "\u003C\u20D2" },
+  "&nvltrie;": { "codepoints": [8884, 8402], "characters": "\u22B4\u20D2" },
+  "&nvrArr;": { "codepoints": [10499], "characters": "\u2903" },
+  "&nvrtrie;": { "codepoints": [8885, 8402], "characters": "\u22B5\u20D2" },
+  "&nvsim;": { "codepoints": [8764, 8402], "characters": "\u223C\u20D2" },
+  "&nwArr;": { "codepoints": [8662], "characters": "\u21D6" },
+  "&nwarhk;": { "codepoints": [10531], "characters": "\u2923" },
+  "&nwarr;": { "codepoints": [8598], "characters": "\u2196" },
+  "&nwarrow;": { "codepoints": [8598], "characters": "\u2196" },
+  "&nwnear;": { "codepoints": [10535], "characters": "\u2927" },
+  "&oS;": { "codepoints": [9416], "characters": "\u24C8" },
+  "&oacute": { "codepoints": [243], "characters": "\u00F3" },
+  "&oacute;": { "codepoints": [243], "characters": "\u00F3" },
+  "&oast;": { "codepoints": [8859], "characters": "\u229B" },
+  "&ocir;": { "codepoints": [8858], "characters": "\u229A" },
+  "&ocirc": { "codepoints": [244], "characters": "\u00F4" },
+  "&ocirc;": { "codepoints": [244], "characters": "\u00F4" },
+  "&ocy;": { "codepoints": [1086], "characters": "\u043E" },
+  "&odash;": { "codepoints": [8861], "characters": "\u229D" },
+  "&odblac;": { "codepoints": [337], "characters": "\u0151" },
+  "&odiv;": { "codepoints": [10808], "characters": "\u2A38" },
+  "&odot;": { "codepoints": [8857], "characters": "\u2299" },
+  "&odsold;": { "codepoints": [10684], "characters": "\u29BC" },
+  "&oelig;": { "codepoints": [339], "characters": "\u0153" },
+  "&ofcir;": { "codepoints": [10687], "characters": "\u29BF" },
+  "&ofr;": { "codepoints": [120108], "characters": "\uD835\uDD2C" },
+  "&ogon;": { "codepoints": [731], "characters": "\u02DB" },
+  "&ograve": { "codepoints": [242], "characters": "\u00F2" },
+  "&ograve;": { "codepoints": [242], "characters": "\u00F2" },
+  "&ogt;": { "codepoints": [10689], "characters": "\u29C1" },
+  "&ohbar;": { "codepoints": [10677], "characters": "\u29B5" },
+  "&ohm;": { "codepoints": [937], "characters": "\u03A9" },
+  "&oint;": { "codepoints": [8750], "characters": "\u222E" },
+  "&olarr;": { "codepoints": [8634], "characters": "\u21BA" },
+  "&olcir;": { "codepoints": [10686], "characters": "\u29BE" },
+  "&olcross;": { "codepoints": [10683], "characters": "\u29BB" },
+  "&oline;": { "codepoints": [8254], "characters": "\u203E" },
+  "&olt;": { "codepoints": [10688], "characters": "\u29C0" },
+  "&omacr;": { "codepoints": [333], "characters": "\u014D" },
+  "&omega;": { "codepoints": [969], "characters": "\u03C9" },
+  "&omicron;": { "codepoints": [959], "characters": "\u03BF" },
+  "&omid;": { "codepoints": [10678], "characters": "\u29B6" },
+  "&ominus;": { "codepoints": [8854], "characters": "\u2296" },
+  "&oopf;": { "codepoints": [120160], "characters": "\uD835\uDD60" },
+  "&opar;": { "codepoints": [10679], "characters": "\u29B7" },
+  "&operp;": { "codepoints": [10681], "characters": "\u29B9" },
+  "&oplus;": { "codepoints": [8853], "characters": "\u2295" },
+  "&or;": { "codepoints": [8744], "characters": "\u2228" },
+  "&orarr;": { "codepoints": [8635], "characters": "\u21BB" },
+  "&ord;": { "codepoints": [10845], "characters": "\u2A5D" },
+  "&order;": { "codepoints": [8500], "characters": "\u2134" },
+  "&orderof;": { "codepoints": [8500], "characters": "\u2134" },
+  "&ordf": { "codepoints": [170], "characters": "\u00AA" },
+  "&ordf;": { "codepoints": [170], "characters": "\u00AA" },
+  "&ordm": { "codepoints": [186], "characters": "\u00BA" },
+  "&ordm;": { "codepoints": [186], "characters": "\u00BA" },
+  "&origof;": { "codepoints": [8886], "characters": "\u22B6" },
+  "&oror;": { "codepoints": [10838], "characters": "\u2A56" },
+  "&orslope;": { "codepoints": [10839], "characters": "\u2A57" },
+  "&orv;": { "codepoints": [10843], "characters": "\u2A5B" },
+  "&oscr;": { "codepoints": [8500], "characters": "\u2134" },
+  "&oslash": { "codepoints": [248], "characters": "\u00F8" },
+  "&oslash;": { "codepoints": [248], "characters": "\u00F8" },
+  "&osol;": { "codepoints": [8856], "characters": "\u2298" },
+  "&otilde": { "codepoints": [245], "characters": "\u00F5" },
+  "&otilde;": { "codepoints": [245], "characters": "\u00F5" },
+  "&otimes;": { "codepoints": [8855], "characters": "\u2297" },
+  "&otimesas;": { "codepoints": [10806], "characters": "\u2A36" },
+  "&ouml": { "codepoints": [246], "characters": "\u00F6" },
+  "&ouml;": { "codepoints": [246], "characters": "\u00F6" },
+  "&ovbar;": { "codepoints": [9021], "characters": "\u233D" },
+  "&par;": { "codepoints": [8741], "characters": "\u2225" },
+  "&para": { "codepoints": [182], "characters": "\u00B6" },
+  "&para;": { "codepoints": [182], "characters": "\u00B6" },
+  "&parallel;": { "codepoints": [8741], "characters": "\u2225" },
+  "&parsim;": { "codepoints": [10995], "characters": "\u2AF3" },
+  "&parsl;": { "codepoints": [11005], "characters": "\u2AFD" },
+  "&part;": { "codepoints": [8706], "characters": "\u2202" },
+  "&pcy;": { "codepoints": [1087], "characters": "\u043F" },
+  "&percnt;": { "codepoints": [37], "characters": "\u0025" },
+  "&period;": { "codepoints": [46], "characters": "\u002E" },
+  "&permil;": { "codepoints": [8240], "characters": "\u2030" },
+  "&perp;": { "codepoints": [8869], "characters": "\u22A5" },
+  "&pertenk;": { "codepoints": [8241], "characters": "\u2031" },
+  "&pfr;": { "codepoints": [120109], "characters": "\uD835\uDD2D" },
+  "&phi;": { "codepoints": [966], "characters": "\u03C6" },
+  "&phiv;": { "codepoints": [981], "characters": "\u03D5" },
+  "&phmmat;": { "codepoints": [8499], "characters": "\u2133" },
+  "&phone;": { "codepoints": [9742], "characters": "\u260E" },
+  "&pi;": { "codepoints": [960], "characters": "\u03C0" },
+  "&pitchfork;": { "codepoints": [8916], "characters": "\u22D4" },
+  "&piv;": { "codepoints": [982], "characters": "\u03D6" },
+  "&planck;": { "codepoints": [8463], "characters": "\u210F" },
+  "&planckh;": { "codepoints": [8462], "characters": "\u210E" },
+  "&plankv;": { "codepoints": [8463], "characters": "\u210F" },
+  "&plus;": { "codepoints": [43], "characters": "\u002B" },
+  "&plusacir;": { "codepoints": [10787], "characters": "\u2A23" },
+  "&plusb;": { "codepoints": [8862], "characters": "\u229E" },
+  "&pluscir;": { "codepoints": [10786], "characters": "\u2A22" },
+  "&plusdo;": { "codepoints": [8724], "characters": "\u2214" },
+  "&plusdu;": { "codepoints": [10789], "characters": "\u2A25" },
+  "&pluse;": { "codepoints": [10866], "characters": "\u2A72" },
+  "&plusmn": { "codepoints": [177], "characters": "\u00B1" },
+  "&plusmn;": { "codepoints": [177], "characters": "\u00B1" },
+  "&plussim;": { "codepoints": [10790], "characters": "\u2A26" },
+  "&plustwo;": { "codepoints": [10791], "characters": "\u2A27" },
+  "&pm;": { "codepoints": [177], "characters": "\u00B1" },
+  "&pointint;": { "codepoints": [10773], "characters": "\u2A15" },
+  "&popf;": { "codepoints": [120161], "characters": "\uD835\uDD61" },
+  "&pound": { "codepoints": [163], "characters": "\u00A3" },
+  "&pound;": { "codepoints": [163], "characters": "\u00A3" },
+  "&pr;": { "codepoints": [8826], "characters": "\u227A" },
+  "&prE;": { "codepoints": [10931], "characters": "\u2AB3" },
+  "&prap;": { "codepoints": [10935], "characters": "\u2AB7" },
+  "&prcue;": { "codepoints": [8828], "characters": "\u227C" },
+  "&pre;": { "codepoints": [10927], "characters": "\u2AAF" },
+  "&prec;": { "codepoints": [8826], "characters": "\u227A" },
+  "&precapprox;": { "codepoints": [10935], "characters": "\u2AB7" },
+  "&preccurlyeq;": { "codepoints": [8828], "characters": "\u227C" },
+  "&preceq;": { "codepoints": [10927], "characters": "\u2AAF" },
+  "&precnapprox;": { "codepoints": [10937], "characters": "\u2AB9" },
+  "&precneqq;": { "codepoints": [10933], "characters": "\u2AB5" },
+  "&precnsim;": { "codepoints": [8936], "characters": "\u22E8" },
+  "&precsim;": { "codepoints": [8830], "characters": "\u227E" },
+  "&prime;": { "codepoints": [8242], "characters": "\u2032" },
+  "&primes;": { "codepoints": [8473], "characters": "\u2119" },
+  "&prnE;": { "codepoints": [10933], "characters": "\u2AB5" },
+  "&prnap;": { "codepoints": [10937], "characters": "\u2AB9" },
+  "&prnsim;": { "codepoints": [8936], "characters": "\u22E8" },
+  "&prod;": { "codepoints": [8719], "characters": "\u220F" },
+  "&profalar;": { "codepoints": [9006], "characters": "\u232E" },
+  "&profline;": { "codepoints": [8978], "characters": "\u2312" },
+  "&profsurf;": { "codepoints": [8979], "characters": "\u2313" },
+  "&prop;": { "codepoints": [8733], "characters": "\u221D" },
+  "&propto;": { "codepoints": [8733], "characters": "\u221D" },
+  "&prsim;": { "codepoints": [8830], "characters": "\u227E" },
+  "&prurel;": { "codepoints": [8880], "characters": "\u22B0" },
+  "&pscr;": { "codepoints": [120005], "characters": "\uD835\uDCC5" },
+  "&psi;": { "codepoints": [968], "characters": "\u03C8" },
+  "&puncsp;": { "codepoints": [8200], "characters": "\u2008" },
+  "&qfr;": { "codepoints": [120110], "characters": "\uD835\uDD2E" },
+  "&qint;": { "codepoints": [10764], "characters": "\u2A0C" },
+  "&qopf;": { "codepoints": [120162], "characters": "\uD835\uDD62" },
+  "&qprime;": { "codepoints": [8279], "characters": "\u2057" },
+  "&qscr;": { "codepoints": [120006], "characters": "\uD835\uDCC6" },
+  "&quaternions;": { "codepoints": [8461], "characters": "\u210D" },
+  "&quatint;": { "codepoints": [10774], "characters": "\u2A16" },
+  "&quest;": { "codepoints": [63], "characters": "\u003F" },
+  "&questeq;": { "codepoints": [8799], "characters": "\u225F" },
+  "&quot": { "codepoints": [34], "characters": "\u0022" },
+  "&quot;": { "codepoints": [34], "characters": "\u0022" },
+  "&rAarr;": { "codepoints": [8667], "characters": "\u21DB" },
+  "&rArr;": { "codepoints": [8658], "characters": "\u21D2" },
+  "&rAtail;": { "codepoints": [10524], "characters": "\u291C" },
+  "&rBarr;": { "codepoints": [10511], "characters": "\u290F" },
+  "&rHar;": { "codepoints": [10596], "characters": "\u2964" },
+  "&race;": { "codepoints": [8765, 817], "characters": "\u223D\u0331" },
+  "&racute;": { "codepoints": [341], "characters": "\u0155" },
+  "&radic;": { "codepoints": [8730], "characters": "\u221A" },
+  "&raemptyv;": { "codepoints": [10675], "characters": "\u29B3" },
+  "&rang;": { "codepoints": [10217], "characters": "\u27E9" },
+  "&rangd;": { "codepoints": [10642], "characters": "\u2992" },
+  "&range;": { "codepoints": [10661], "characters": "\u29A5" },
+  "&rangle;": { "codepoints": [10217], "characters": "\u27E9" },
+  "&raquo": { "codepoints": [187], "characters": "\u00BB" },
+  "&raquo;": { "codepoints": [187], "characters": "\u00BB" },
+  "&rarr;": { "codepoints": [8594], "characters": "\u2192" },
+  "&rarrap;": { "codepoints": [10613], "characters": "\u2975" },
+  "&rarrb;": { "codepoints": [8677], "characters": "\u21E5" },
+  "&rarrbfs;": { "codepoints": [10528], "characters": "\u2920" },
+  "&rarrc;": { "codepoints": [10547], "characters": "\u2933" },
+  "&rarrfs;": { "codepoints": [10526], "characters": "\u291E" },
+  "&rarrhk;": { "codepoints": [8618], "characters": "\u21AA" },
+  "&rarrlp;": { "codepoints": [8620], "characters": "\u21AC" },
+  "&rarrpl;": { "codepoints": [10565], "characters": "\u2945" },
+  "&rarrsim;": { "codepoints": [10612], "characters": "\u2974" },
+  "&rarrtl;": { "codepoints": [8611], "characters": "\u21A3" },
+  "&rarrw;": { "codepoints": [8605], "characters": "\u219D" },
+  "&ratail;": { "codepoints": [10522], "characters": "\u291A" },
+  "&ratio;": { "codepoints": [8758], "characters": "\u2236" },
+  "&rationals;": { "codepoints": [8474], "characters": "\u211A" },
+  "&rbarr;": { "codepoints": [10509], "characters": "\u290D" },
+  "&rbbrk;": { "codepoints": [10099], "characters": "\u2773" },
+  "&rbrace;": { "codepoints": [125], "characters": "\u007D" },
+  "&rbrack;": { "codepoints": [93], "characters": "\u005D" },
+  "&rbrke;": { "codepoints": [10636], "characters": "\u298C" },
+  "&rbrksld;": { "codepoints": [10638], "characters": "\u298E" },
+  "&rbrkslu;": { "codepoints": [10640], "characters": "\u2990" },
+  "&rcaron;": { "codepoints": [345], "characters": "\u0159" },
+  "&rcedil;": { "codepoints": [343], "characters": "\u0157" },
+  "&rceil;": { "codepoints": [8969], "characters": "\u2309" },
+  "&rcub;": { "codepoints": [125], "characters": "\u007D" },
+  "&rcy;": { "codepoints": [1088], "characters": "\u0440" },
+  "&rdca;": { "codepoints": [10551], "characters": "\u2937" },
+  "&rdldhar;": { "codepoints": [10601], "characters": "\u2969" },
+  "&rdquo;": { "codepoints": [8221], "characters": "\u201D" },
+  "&rdquor;": { "codepoints": [8221], "characters": "\u201D" },
+  "&rdsh;": { "codepoints": [8627], "characters": "\u21B3" },
+  "&real;": { "codepoints": [8476], "characters": "\u211C" },
+  "&realine;": { "codepoints": [8475], "characters": "\u211B" },
+  "&realpart;": { "codepoints": [8476], "characters": "\u211C" },
+  "&reals;": { "codepoints": [8477], "characters": "\u211D" },
+  "&rect;": { "codepoints": [9645], "characters": "\u25AD" },
+  "&reg": { "codepoints": [174], "characters": "\u00AE" },
+  "&reg;": { "codepoints": [174], "characters": "\u00AE" },
+  "&rfisht;": { "codepoints": [10621], "characters": "\u297D" },
+  "&rfloor;": { "codepoints": [8971], "characters": "\u230B" },
+  "&rfr;": { "codepoints": [120111], "characters": "\uD835\uDD2F" },
+  "&rhard;": { "codepoints": [8641], "characters": "\u21C1" },
+  "&rharu;": { "codepoints": [8640], "characters": "\u21C0" },
+  "&rharul;": { "codepoints": [10604], "characters": "\u296C" },
+  "&rho;": { "codepoints": [961], "characters": "\u03C1" },
+  "&rhov;": { "codepoints": [1009], "characters": "\u03F1" },
+  "&rightarrow;": { "codepoints": [8594], "characters": "\u2192" },
+  "&rightarrowtail;": { "codepoints": [8611], "characters": "\u21A3" },
+  "&rightharpoondown;": { "codepoints": [8641], "characters": "\u21C1" },
+  "&rightharpoonup;": { "codepoints": [8640], "characters": "\u21C0" },
+  "&rightleftarrows;": { "codepoints": [8644], "characters": "\u21C4" },
+  "&rightleftharpoons;": { "codepoints": [8652], "characters": "\u21CC" },
+  "&rightrightarrows;": { "codepoints": [8649], "characters": "\u21C9" },
+  "&rightsquigarrow;": { "codepoints": [8605], "characters": "\u219D" },
+  "&rightthreetimes;": { "codepoints": [8908], "characters": "\u22CC" },
+  "&ring;": { "codepoints": [730], "characters": "\u02DA" },
+  "&risingdotseq;": { "codepoints": [8787], "characters": "\u2253" },
+  "&rlarr;": { "codepoints": [8644], "characters": "\u21C4" },
+  "&rlhar;": { "codepoints": [8652], "characters": "\u21CC" },
+  "&rlm;": { "codepoints": [8207], "characters": "\u200F" },
+  "&rmoust;": { "codepoints": [9137], "characters": "\u23B1" },
+  "&rmoustache;": { "codepoints": [9137], "characters": "\u23B1" },
+  "&rnmid;": { "codepoints": [10990], "characters": "\u2AEE" },
+  "&roang;": { "codepoints": [10221], "characters": "\u27ED" },
+  "&roarr;": { "codepoints": [8702], "characters": "\u21FE" },
+  "&robrk;": { "codepoints": [10215], "characters": "\u27E7" },
+  "&ropar;": { "codepoints": [10630], "characters": "\u2986" },
+  "&ropf;": { "codepoints": [120163], "characters": "\uD835\uDD63" },
+  "&roplus;": { "codepoints": [10798], "characters": "\u2A2E" },
+  "&rotimes;": { "codepoints": [10805], "characters": "\u2A35" },
+  "&rpar;": { "codepoints": [41], "characters": "\u0029" },
+  "&rpargt;": { "codepoints": [10644], "characters": "\u2994" },
+  "&rppolint;": { "codepoints": [10770], "characters": "\u2A12" },
+  "&rrarr;": { "codepoints": [8649], "characters": "\u21C9" },
+  "&rsaquo;": { "codepoints": [8250], "characters": "\u203A" },
+  "&rscr;": { "codepoints": [120007], "characters": "\uD835\uDCC7" },
+  "&rsh;": { "codepoints": [8625], "characters": "\u21B1" },
+  "&rsqb;": { "codepoints": [93], "characters": "\u005D" },
+  "&rsquo;": { "codepoints": [8217], "characters": "\u2019" },
+  "&rsquor;": { "codepoints": [8217], "characters": "\u2019" },
+  "&rthree;": { "codepoints": [8908], "characters": "\u22CC" },
+  "&rtimes;": { "codepoints": [8906], "characters": "\u22CA" },
+  "&rtri;": { "codepoints": [9657], "characters": "\u25B9" },
+  "&rtrie;": { "codepoints": [8885], "characters": "\u22B5" },
+  "&rtrif;": { "codepoints": [9656], "characters": "\u25B8" },
+  "&rtriltri;": { "codepoints": [10702], "characters": "\u29CE" },
+  "&ruluhar;": { "codepoints": [10600], "characters": "\u2968" },
+  "&rx;": { "codepoints": [8478], "characters": "\u211E" },
+  "&sacute;": { "codepoints": [347], "characters": "\u015B" },
+  "&sbquo;": { "codepoints": [8218], "characters": "\u201A" },
+  "&sc;": { "codepoints": [8827], "characters": "\u227B" },
+  "&scE;": { "codepoints": [10932], "characters": "\u2AB4" },
+  "&scap;": { "codepoints": [10936], "characters": "\u2AB8" },
+  "&scaron;": { "codepoints": [353], "characters": "\u0161" },
+  "&sccue;": { "codepoints": [8829], "characters": "\u227D" },
+  "&sce;": { "codepoints": [10928], "characters": "\u2AB0" },
+  "&scedil;": { "codepoints": [351], "characters": "\u015F" },
+  "&scirc;": { "codepoints": [349], "characters": "\u015D" },
+  "&scnE;": { "codepoints": [10934], "characters": "\u2AB6" },
+  "&scnap;": { "codepoints": [10938], "characters": "\u2ABA" },
+  "&scnsim;": { "codepoints": [8937], "characters": "\u22E9" },
+  "&scpolint;": { "codepoints": [10771], "characters": "\u2A13" },
+  "&scsim;": { "codepoints": [8831], "characters": "\u227F" },
+  "&scy;": { "codepoints": [1089], "characters": "\u0441" },
+  "&sdot;": { "codepoints": [8901], "characters": "\u22C5" },
+  "&sdotb;": { "codepoints": [8865], "characters": "\u22A1" },
+  "&sdote;": { "codepoints": [10854], "characters": "\u2A66" },
+  "&seArr;": { "codepoints": [8664], "characters": "\u21D8" },
+  "&searhk;": { "codepoints": [10533], "characters": "\u2925" },
+  "&searr;": { "codepoints": [8600], "characters": "\u2198" },
+  "&searrow;": { "codepoints": [8600], "characters": "\u2198" },
+  "&sect": { "codepoints": [167], "characters": "\u00A7" },
+  "&sect;": { "codepoints": [167], "characters": "\u00A7" },
+  "&semi;": { "codepoints": [59], "characters": "\u003B" },
+  "&seswar;": { "codepoints": [10537], "characters": "\u2929" },
+  "&setminus;": { "codepoints": [8726], "characters": "\u2216" },
+  "&setmn;": { "codepoints": [8726], "characters": "\u2216" },
+  "&sext;": { "codepoints": [10038], "characters": "\u2736" },
+  "&sfr;": { "codepoints": [120112], "characters": "\uD835\uDD30" },
+  "&sfrown;": { "codepoints": [8994], "characters": "\u2322" },
+  "&sharp;": { "codepoints": [9839], "characters": "\u266F" },
+  "&shchcy;": { "codepoints": [1097], "characters": "\u0449" },
+  "&shcy;": { "codepoints": [1096], "characters": "\u0448" },
+  "&shortmid;": { "codepoints": [8739], "characters": "\u2223" },
+  "&shortparallel;": { "codepoints": [8741], "characters": "\u2225" },
+  "&shy": { "codepoints": [173], "characters": "\u00AD" },
+  "&shy;": { "codepoints": [173], "characters": "\u00AD" },
+  "&sigma;": { "codepoints": [963], "characters": "\u03C3" },
+  "&sigmaf;": { "codepoints": [962], "characters": "\u03C2" },
+  "&sigmav;": { "codepoints": [962], "characters": "\u03C2" },
+  "&sim;": { "codepoints": [8764], "characters": "\u223C" },
+  "&simdot;": { "codepoints": [10858], "characters": "\u2A6A" },
+  "&sime;": { "codepoints": [8771], "characters": "\u2243" },
+  "&simeq;": { "codepoints": [8771], "characters": "\u2243" },
+  "&simg;": { "codepoints": [10910], "characters": "\u2A9E" },
+  "&simgE;": { "codepoints": [10912], "characters": "\u2AA0" },
+  "&siml;": { "codepoints": [10909], "characters": "\u2A9D" },
+  "&simlE;": { "codepoints": [10911], "characters": "\u2A9F" },
+  "&simne;": { "codepoints": [8774], "characters": "\u2246" },
+  "&simplus;": { "codepoints": [10788], "characters": "\u2A24" },
+  "&simrarr;": { "codepoints": [10610], "characters": "\u2972" },
+  "&slarr;": { "codepoints": [8592], "characters": "\u2190" },
+  "&smallsetminus;": { "codepoints": [8726], "characters": "\u2216" },
+  "&smashp;": { "codepoints": [10803], "characters": "\u2A33" },
+  "&smeparsl;": { "codepoints": [10724], "characters": "\u29E4" },
+  "&smid;": { "codepoints": [8739], "characters": "\u2223" },
+  "&smile;": { "codepoints": [8995], "characters": "\u2323" },
+  "&smt;": { "codepoints": [10922], "characters": "\u2AAA" },
+  "&smte;": { "codepoints": [10924], "characters": "\u2AAC" },
+  "&smtes;": { "codepoints": [10924, 65024], "characters": "\u2AAC\uFE00" },
+  "&softcy;": { "codepoints": [1100], "characters": "\u044C" },
+  "&sol;": { "codepoints": [47], "characters": "\u002F" },
+  "&solb;": { "codepoints": [10692], "characters": "\u29C4" },
+  "&solbar;": { "codepoints": [9023], "characters": "\u233F" },
+  "&sopf;": { "codepoints": [120164], "characters": "\uD835\uDD64" },
+  "&spades;": { "codepoints": [9824], "characters": "\u2660" },
+  "&spadesuit;": { "codepoints": [9824], "characters": "\u2660" },
+  "&spar;": { "codepoints": [8741], "characters": "\u2225" },
+  "&sqcap;": { "codepoints": [8851], "characters": "\u2293" },
+  "&sqcaps;": { "codepoints": [8851, 65024], "characters": "\u2293\uFE00" },
+  "&sqcup;": { "codepoints": [8852], "characters": "\u2294" },
+  "&sqcups;": { "codepoints": [8852, 65024], "characters": "\u2294\uFE00" },
+  "&sqsub;": { "codepoints": [8847], "characters": "\u228F" },
+  "&sqsube;": { "codepoints": [8849], "characters": "\u2291" },
+  "&sqsubset;": { "codepoints": [8847], "characters": "\u228F" },
+  "&sqsubseteq;": { "codepoints": [8849], "characters": "\u2291" },
+  "&sqsup;": { "codepoints": [8848], "characters": "\u2290" },
+  "&sqsupe;": { "codepoints": [8850], "characters": "\u2292" },
+  "&sqsupset;": { "codepoints": [8848], "characters": "\u2290" },
+  "&sqsupseteq;": { "codepoints": [8850], "characters": "\u2292" },
+  "&squ;": { "codepoints": [9633], "characters": "\u25A1" },
+  "&square;": { "codepoints": [9633], "characters": "\u25A1" },
+  "&squarf;": { "codepoints": [9642], "characters": "\u25AA" },
+  "&squf;": { "codepoints": [9642], "characters": "\u25AA" },
+  "&srarr;": { "codepoints": [8594], "characters": "\u2192" },
+  "&sscr;": { "codepoints": [120008], "characters": "\uD835\uDCC8" },
+  "&ssetmn;": { "codepoints": [8726], "characters": "\u2216" },
+  "&ssmile;": { "codepoints": [8995], "characters": "\u2323" },
+  "&sstarf;": { "codepoints": [8902], "characters": "\u22C6" },
+  "&star;": { "codepoints": [9734], "characters": "\u2606" },
+  "&starf;": { "codepoints": [9733], "characters": "\u2605" },
+  "&straightepsilon;": { "codepoints": [1013], "characters": "\u03F5" },
+  "&straightphi;": { "codepoints": [981], "characters": "\u03D5" },
+  "&strns;": { "codepoints": [175], "characters": "\u00AF" },
+  "&sub;": { "codepoints": [8834], "characters": "\u2282" },
+  "&subE;": { "codepoints": [10949], "characters": "\u2AC5" },
+  "&subdot;": { "codepoints": [10941], "characters": "\u2ABD" },
+  "&sube;": { "codepoints": [8838], "characters": "\u2286" },
+  "&subedot;": { "codepoints": [10947], "characters": "\u2AC3" },
+  "&submult;": { "codepoints": [10945], "characters": "\u2AC1" },
+  "&subnE;": { "codepoints": [10955], "characters": "\u2ACB" },
+  "&subne;": { "codepoints": [8842], "characters": "\u228A" },
+  "&subplus;": { "codepoints": [10943], "characters": "\u2ABF" },
+  "&subrarr;": { "codepoints": [10617], "characters": "\u2979" },
+  "&subset;": { "codepoints": [8834], "characters": "\u2282" },
+  "&subseteq;": { "codepoints": [8838], "characters": "\u2286" },
+  "&subseteqq;": { "codepoints": [10949], "characters": "\u2AC5" },
+  "&subsetneq;": { "codepoints": [8842], "characters": "\u228A" },
+  "&subsetneqq;": { "codepoints": [10955], "characters": "\u2ACB" },
+  "&subsim;": { "codepoints": [10951], "characters": "\u2AC7" },
+  "&subsub;": { "codepoints": [10965], "characters": "\u2AD5" },
+  "&subsup;": { "codepoints": [10963], "characters": "\u2AD3" },
+  "&succ;": { "codepoints": [8827], "characters": "\u227B" },
+  "&succapprox;": { "codepoints": [10936], "characters": "\u2AB8" },
+  "&succcurlyeq;": { "codepoints": [8829], "characters": "\u227D" },
+  "&succeq;": { "codepoints": [10928], "characters": "\u2AB0" },
+  "&succnapprox;": { "codepoints": [10938], "characters": "\u2ABA" },
+  "&succneqq;": { "codepoints": [10934], "characters": "\u2AB6" },
+  "&succnsim;": { "codepoints": [8937], "characters": "\u22E9" },
+  "&succsim;": { "codepoints": [8831], "characters": "\u227F" },
+  "&sum;": { "codepoints": [8721], "characters": "\u2211" },
+  "&sung;": { "codepoints": [9834], "characters": "\u266A" },
+  "&sup1": { "codepoints": [185], "characters": "\u00B9" },
+  "&sup1;": { "codepoints": [185], "characters": "\u00B9" },
+  "&sup2": { "codepoints": [178], "characters": "\u00B2" },
+  "&sup2;": { "codepoints": [178], "characters": "\u00B2" },
+  "&sup3": { "codepoints": [179], "characters": "\u00B3" },
+  "&sup3;": { "codepoints": [179], "characters": "\u00B3" },
+  "&sup;": { "codepoints": [8835], "characters": "\u2283" },
+  "&supE;": { "codepoints": [10950], "characters": "\u2AC6" },
+  "&supdot;": { "codepoints": [10942], "characters": "\u2ABE" },
+  "&supdsub;": { "codepoints": [10968], "characters": "\u2AD8" },
+  "&supe;": { "codepoints": [8839], "characters": "\u2287" },
+  "&supedot;": { "codepoints": [10948], "characters": "\u2AC4" },
+  "&suphsol;": { "codepoints": [10185], "characters": "\u27C9" },
+  "&suphsub;": { "codepoints": [10967], "characters": "\u2AD7" },
+  "&suplarr;": { "codepoints": [10619], "characters": "\u297B" },
+  "&supmult;": { "codepoints": [10946], "characters": "\u2AC2" },
+  "&supnE;": { "codepoints": [10956], "characters": "\u2ACC" },
+  "&supne;": { "codepoints": [8843], "characters": "\u228B" },
+  "&supplus;": { "codepoints": [10944], "characters": "\u2AC0" },
+  "&supset;": { "codepoints": [8835], "characters": "\u2283" },
+  "&supseteq;": { "codepoints": [8839], "characters": "\u2287" },
+  "&supseteqq;": { "codepoints": [10950], "characters": "\u2AC6" },
+  "&supsetneq;": { "codepoints": [8843], "characters": "\u228B" },
+  "&supsetneqq;": { "codepoints": [10956], "characters": "\u2ACC" },
+  "&supsim;": { "codepoints": [10952], "characters": "\u2AC8" },
+  "&supsub;": { "codepoints": [10964], "characters": "\u2AD4" },
+  "&supsup;": { "codepoints": [10966], "characters": "\u2AD6" },
+  "&swArr;": { "codepoints": [8665], "characters": "\u21D9" },
+  "&swarhk;": { "codepoints": [10534], "characters": "\u2926" },
+  "&swarr;": { "codepoints": [8601], "characters": "\u2199" },
+  "&swarrow;": { "codepoints": [8601], "characters": "\u2199" },
+  "&swnwar;": { "codepoints": [10538], "characters": "\u292A" },
+  "&szlig": { "codepoints": [223], "characters": "\u00DF" },
+  "&szlig;": { "codepoints": [223], "characters": "\u00DF" },
+  "&target;": { "codepoints": [8982], "characters": "\u2316" },
+  "&tau;": { "codepoints": [964], "characters": "\u03C4" },
+  "&tbrk;": { "codepoints": [9140], "characters": "\u23B4" },
+  "&tcaron;": { "codepoints": [357], "characters": "\u0165" },
+  "&tcedil;": { "codepoints": [355], "characters": "\u0163" },
+  "&tcy;": { "codepoints": [1090], "characters": "\u0442" },
+  "&tdot;": { "codepoints": [8411], "characters": "\u20DB" },
+  "&telrec;": { "codepoints": [8981], "characters": "\u2315" },
+  "&tfr;": { "codepoints": [120113], "characters": "\uD835\uDD31" },
+  "&there4;": { "codepoints": [8756], "characters": "\u2234" },
+  "&therefore;": { "codepoints": [8756], "characters": "\u2234" },
+  "&theta;": { "codepoints": [952], "characters": "\u03B8" },
+  "&thetasym;": { "codepoints": [977], "characters": "\u03D1" },
+  "&thetav;": { "codepoints": [977], "characters": "\u03D1" },
+  "&thickapprox;": { "codepoints": [8776], "characters": "\u2248" },
+  "&thicksim;": { "codepoints": [8764], "characters": "\u223C" },
+  "&thinsp;": { "codepoints": [8201], "characters": "\u2009" },
+  "&thkap;": { "codepoints": [8776], "characters": "\u2248" },
+  "&thksim;": { "codepoints": [8764], "characters": "\u223C" },
+  "&thorn": { "codepoints": [254], "characters": "\u00FE" },
+  "&thorn;": { "codepoints": [254], "characters": "\u00FE" },
+  "&tilde;": { "codepoints": [732], "characters": "\u02DC" },
+  "&times": { "codepoints": [215], "characters": "\u00D7" },
+  "&times;": { "codepoints": [215], "characters": "\u00D7" },
+  "&timesb;": { "codepoints": [8864], "characters": "\u22A0" },
+  "&timesbar;": { "codepoints": [10801], "characters": "\u2A31" },
+  "&timesd;": { "codepoints": [10800], "characters": "\u2A30" },
+  "&tint;": { "codepoints": [8749], "characters": "\u222D" },
+  "&toea;": { "codepoints": [10536], "characters": "\u2928" },
+  "&top;": { "codepoints": [8868], "characters": "\u22A4" },
+  "&topbot;": { "codepoints": [9014], "characters": "\u2336" },
+  "&topcir;": { "codepoints": [10993], "characters": "\u2AF1" },
+  "&topf;": { "codepoints": [120165], "characters": "\uD835\uDD65" },
+  "&topfork;": { "codepoints": [10970], "characters": "\u2ADA" },
+  "&tosa;": { "codepoints": [10537], "characters": "\u2929" },
+  "&tprime;": { "codepoints": [8244], "characters": "\u2034" },
+  "&trade;": { "codepoints": [8482], "characters": "\u2122" },
+  "&triangle;": { "codepoints": [9653], "characters": "\u25B5" },
+  "&triangledown;": { "codepoints": [9663], "characters": "\u25BF" },
+  "&triangleleft;": { "codepoints": [9667], "characters": "\u25C3" },
+  "&trianglelefteq;": { "codepoints": [8884], "characters": "\u22B4" },
+  "&triangleq;": { "codepoints": [8796], "characters": "\u225C" },
+  "&triangleright;": { "codepoints": [9657], "characters": "\u25B9" },
+  "&trianglerighteq;": { "codepoints": [8885], "characters": "\u22B5" },
+  "&tridot;": { "codepoints": [9708], "characters": "\u25EC" },
+  "&trie;": { "codepoints": [8796], "characters": "\u225C" },
+  "&triminus;": { "codepoints": [10810], "characters": "\u2A3A" },
+  "&triplus;": { "codepoints": [10809], "characters": "\u2A39" },
+  "&trisb;": { "codepoints": [10701], "characters": "\u29CD" },
+  "&tritime;": { "codepoints": [10811], "characters": "\u2A3B" },
+  "&trpezium;": { "codepoints": [9186], "characters": "\u23E2" },
+  "&tscr;": { "codepoints": [120009], "characters": "\uD835\uDCC9" },
+  "&tscy;": { "codepoints": [1094], "characters": "\u0446" },
+  "&tshcy;": { "codepoints": [1115], "characters": "\u045B" },
+  "&tstrok;": { "codepoints": [359], "characters": "\u0167" },
+  "&twixt;": { "codepoints": [8812], "characters": "\u226C" },
+  "&twoheadleftarrow;": { "codepoints": [8606], "characters": "\u219E" },
+  "&twoheadrightarrow;": { "codepoints": [8608], "characters": "\u21A0" },
+  "&uArr;": { "codepoints": [8657], "characters": "\u21D1" },
+  "&uHar;": { "codepoints": [10595], "characters": "\u2963" },
+  "&uacute": { "codepoints": [250], "characters": "\u00FA" },
+  "&uacute;": { "codepoints": [250], "characters": "\u00FA" },
+  "&uarr;": { "codepoints": [8593], "characters": "\u2191" },
+  "&ubrcy;": { "codepoints": [1118], "characters": "\u045E" },
+  "&ubreve;": { "codepoints": [365], "characters": "\u016D" },
+  "&ucirc": { "codepoints": [251], "characters": "\u00FB" },
+  "&ucirc;": { "codepoints": [251], "characters": "\u00FB" },
+  "&ucy;": { "codepoints": [1091], "characters": "\u0443" },
+  "&udarr;": { "codepoints": [8645], "characters": "\u21C5" },
+  "&udblac;": { "codepoints": [369], "characters": "\u0171" },
+  "&udhar;": { "codepoints": [10606], "characters": "\u296E" },
+  "&ufisht;": { "codepoints": [10622], "characters": "\u297E" },
+  "&ufr;": { "codepoints": [120114], "characters": "\uD835\uDD32" },
+  "&ugrave": { "codepoints": [249], "characters": "\u00F9" },
+  "&ugrave;": { "codepoints": [249], "characters": "\u00F9" },
+  "&uharl;": { "codepoints": [8639], "characters": "\u21BF" },
+  "&uharr;": { "codepoints": [8638], "characters": "\u21BE" },
+  "&uhblk;": { "codepoints": [9600], "characters": "\u2580" },
+  "&ulcorn;": { "codepoints": [8988], "characters": "\u231C" },
+  "&ulcorner;": { "codepoints": [8988], "characters": "\u231C" },
+  "&ulcrop;": { "codepoints": [8975], "characters": "\u230F" },
+  "&ultri;": { "codepoints": [9720], "characters": "\u25F8" },
+  "&umacr;": { "codepoints": [363], "characters": "\u016B" },
+  "&uml": { "codepoints": [168], "characters": "\u00A8" },
+  "&uml;": { "codepoints": [168], "characters": "\u00A8" },
+  "&uogon;": { "codepoints": [371], "characters": "\u0173" },
+  "&uopf;": { "codepoints": [120166], "characters": "\uD835\uDD66" },
+  "&uparrow;": { "codepoints": [8593], "characters": "\u2191" },
+  "&updownarrow;": { "codepoints": [8597], "characters": "\u2195" },
+  "&upharpoonleft;": { "codepoints": [8639], "characters": "\u21BF" },
+  "&upharpoonright;": { "codepoints": [8638], "characters": "\u21BE" },
+  "&uplus;": { "codepoints": [8846], "characters": "\u228E" },
+  "&upsi;": { "codepoints": [965], "characters": "\u03C5" },
+  "&upsih;": { "codepoints": [978], "characters": "\u03D2" },
+  "&upsilon;": { "codepoints": [965], "characters": "\u03C5" },
+  "&upuparrows;": { "codepoints": [8648], "characters": "\u21C8" },
+  "&urcorn;": { "codepoints": [8989], "characters": "\u231D" },
+  "&urcorner;": { "codepoints": [8989], "characters": "\u231D" },
+  "&urcrop;": { "codepoints": [8974], "characters": "\u230E" },
+  "&uring;": { "codepoints": [367], "characters": "\u016F" },
+  "&urtri;": { "codepoints": [9721], "characters": "\u25F9" },
+  "&uscr;": { "codepoints": [120010], "characters": "\uD835\uDCCA" },
+  "&utdot;": { "codepoints": [8944], "characters": "\u22F0" },
+  "&utilde;": { "codepoints": [361], "characters": "\u0169" },
+  "&utri;": { "codepoints": [9653], "characters": "\u25B5" },
+  "&utrif;": { "codepoints": [9652], "characters": "\u25B4" },
+  "&uuarr;": { "codepoints": [8648], "characters": "\u21C8" },
+  "&uuml": { "codepoints": [252], "characters": "\u00FC" },
+  "&uuml;": { "codepoints": [252], "characters": "\u00FC" },
+  "&uwangle;": { "codepoints": [10663], "characters": "\u29A7" },
+  "&vArr;": { "codepoints": [8661], "characters": "\u21D5" },
+  "&vBar;": { "codepoints": [10984], "characters": "\u2AE8" },
+  "&vBarv;": { "codepoints": [10985], "characters": "\u2AE9" },
+  "&vDash;": { "codepoints": [8872], "characters": "\u22A8" },
+  "&vangrt;": { "codepoints": [10652], "characters": "\u299C" },
+  "&varepsilon;": { "codepoints": [1013], "characters": "\u03F5" },
+  "&varkappa;": { "codepoints": [1008], "characters": "\u03F0" },
+  "&varnothing;": { "codepoints": [8709], "characters": "\u2205" },
+  "&varphi;": { "codepoints": [981], "characters": "\u03D5" },
+  "&varpi;": { "codepoints": [982], "characters": "\u03D6" },
+  "&varpropto;": { "codepoints": [8733], "characters": "\u221D" },
+  "&varr;": { "codepoints": [8597], "characters": "\u2195" },
+  "&varrho;": { "codepoints": [1009], "characters": "\u03F1" },
+  "&varsigma;": { "codepoints": [962], "characters": "\u03C2" },
+  "&varsubsetneq;": { "codepoints": [8842, 65024], "characters": "\u228A\uFE00" },
+  "&varsubsetneqq;": { "codepoints": [10955, 65024], "characters": "\u2ACB\uFE00" },
+  "&varsupsetneq;": { "codepoints": [8843, 65024], "characters": "\u228B\uFE00" },
+  "&varsupsetneqq;": { "codepoints": [10956, 65024], "characters": "\u2ACC\uFE00" },
+  "&vartheta;": { "codepoints": [977], "characters": "\u03D1" },
+  "&vartriangleleft;": { "codepoints": [8882], "characters": "\u22B2" },
+  "&vartriangleright;": { "codepoints": [8883], "characters": "\u22B3" },
+  "&vcy;": { "codepoints": [1074], "characters": "\u0432" },
+  "&vdash;": { "codepoints": [8866], "characters": "\u22A2" },
+  "&vee;": { "codepoints": [8744], "characters": "\u2228" },
+  "&veebar;": { "codepoints": [8891], "characters": "\u22BB" },
+  "&veeeq;": { "codepoints": [8794], "characters": "\u225A" },
+  "&vellip;": { "codepoints": [8942], "characters": "\u22EE" },
+  "&verbar;": { "codepoints": [124], "characters": "\u007C" },
+  "&vert;": { "codepoints": [124], "characters": "\u007C" },
+  "&vfr;": { "codepoints": [120115], "characters": "\uD835\uDD33" },
+  "&vltri;": { "codepoints": [8882], "characters": "\u22B2" },
+  "&vnsub;": { "codepoints": [8834, 8402], "characters": "\u2282\u20D2" },
+  "&vnsup;": { "codepoints": [8835, 8402], "characters": "\u2283\u20D2" },
+  "&vopf;": { "codepoints": [120167], "characters": "\uD835\uDD67" },
+  "&vprop;": { "codepoints": [8733], "characters": "\u221D" },
+  "&vrtri;": { "codepoints": [8883], "characters": "\u22B3" },
+  "&vscr;": { "codepoints": [120011], "characters": "\uD835\uDCCB" },
+  "&vsubnE;": { "codepoints": [10955, 65024], "characters": "\u2ACB\uFE00" },
+  "&vsubne;": { "codepoints": [8842, 65024], "characters": "\u228A\uFE00" },
+  "&vsupnE;": { "codepoints": [10956, 65024], "characters": "\u2ACC\uFE00" },
+  "&vsupne;": { "codepoints": [8843, 65024], "characters": "\u228B\uFE00" },
+  "&vzigzag;": { "codepoints": [10650], "characters": "\u299A" },
+  "&wcirc;": { "codepoints": [373], "characters": "\u0175" },
+  "&wedbar;": { "codepoints": [10847], "characters": "\u2A5F" },
+  "&wedge;": { "codepoints": [8743], "characters": "\u2227" },
+  "&wedgeq;": { "codepoints": [8793], "characters": "\u2259" },
+  "&weierp;": { "codepoints": [8472], "characters": "\u2118" },
+  "&wfr;": { "codepoints": [120116], "characters": "\uD835\uDD34" },
+  "&wopf;": { "codepoints": [120168], "characters": "\uD835\uDD68" },
+  "&wp;": { "codepoints": [8472], "characters": "\u2118" },
+  "&wr;": { "codepoints": [8768], "characters": "\u2240" },
+  "&wreath;": { "codepoints": [8768], "characters": "\u2240" },
+  "&wscr;": { "codepoints": [120012], "characters": "\uD835\uDCCC" },
+  "&xcap;": { "codepoints": [8898], "characters": "\u22C2" },
+  "&xcirc;": { "codepoints": [9711], "characters": "\u25EF" },
+  "&xcup;": { "codepoints": [8899], "characters": "\u22C3" },
+  "&xdtri;": { "codepoints": [9661], "characters": "\u25BD" },
+  "&xfr;": { "codepoints": [120117], "characters": "\uD835\uDD35" },
+  "&xhArr;": { "codepoints": [10234], "characters": "\u27FA" },
+  "&xharr;": { "codepoints": [10231], "characters": "\u27F7" },
+  "&xi;": { "codepoints": [958], "characters": "\u03BE" },
+  "&xlArr;": { "codepoints": [10232], "characters": "\u27F8" },
+  "&xlarr;": { "codepoints": [10229], "characters": "\u27F5" },
+  "&xmap;": { "codepoints": [10236], "characters": "\u27FC" },
+  "&xnis;": { "codepoints": [8955], "characters": "\u22FB" },
+  "&xodot;": { "codepoints": [10752], "characters": "\u2A00" },
+  "&xopf;": { "codepoints": [120169], "characters": "\uD835\uDD69" },
+  "&xoplus;": { "codepoints": [10753], "characters": "\u2A01" },
+  "&xotime;": { "codepoints": [10754], "characters": "\u2A02" },
+  "&xrArr;": { "codepoints": [10233], "characters": "\u27F9" },
+  "&xrarr;": { "codepoints": [10230], "characters": "\u27F6" },
+  "&xscr;": { "codepoints": [120013], "characters": "\uD835\uDCCD" },
+  "&xsqcup;": { "codepoints": [10758], "characters": "\u2A06" },
+  "&xuplus;": { "codepoints": [10756], "characters": "\u2A04" },
+  "&xutri;": { "codepoints": [9651], "characters": "\u25B3" },
+  "&xvee;": { "codepoints": [8897], "characters": "\u22C1" },
+  "&xwedge;": { "codepoints": [8896], "characters": "\u22C0" },
+  "&yacute": { "codepoints": [253], "characters": "\u00FD" },
+  "&yacute;": { "codepoints": [253], "characters": "\u00FD" },
+  "&yacy;": { "codepoints": [1103], "characters": "\u044F" },
+  "&ycirc;": { "codepoints": [375], "characters": "\u0177" },
+  "&ycy;": { "codepoints": [1099], "characters": "\u044B" },
+  "&yen": { "codepoints": [165], "characters": "\u00A5" },
+  "&yen;": { "codepoints": [165], "characters": "\u00A5" },
+  "&yfr;": { "codepoints": [120118], "characters": "\uD835\uDD36" },
+  "&yicy;": { "codepoints": [1111], "characters": "\u0457" },
+  "&yopf;": { "codepoints": [120170], "characters": "\uD835\uDD6A" },
+  "&yscr;": { "codepoints": [120014], "characters": "\uD835\uDCCE" },
+  "&yucy;": { "codepoints": [1102], "characters": "\u044E" },
+  "&yuml": { "codepoints": [255], "characters": "\u00FF" },
+  "&yuml;": { "codepoints": [255], "characters": "\u00FF" },
+  "&zacute;": { "codepoints": [378], "characters": "\u017A" },
+  "&zcaron;": { "codepoints": [382], "characters": "\u017E" },
+  "&zcy;": { "codepoints": [1079], "characters": "\u0437" },
+  "&zdot;": { "codepoints": [380], "characters": "\u017C" },
+  "&zeetrf;": { "codepoints": [8488], "characters": "\u2128" },
+  "&zeta;": { "codepoints": [950], "characters": "\u03B6" },
+  "&zfr;": { "codepoints": [120119], "characters": "\uD835\uDD37" },
+  "&zhcy;": { "codepoints": [1078], "characters": "\u0436" },
+  "&zigrarr;": { "codepoints": [8669], "characters": "\u21DD" },
+  "&zopf;": { "codepoints": [120171], "characters": "\uD835\uDD6B" },
+  "&zscr;": { "codepoints": [120015], "characters": "\uD835\uDCCF" },
+  "&zwj;": { "codepoints": [8205], "characters": "\u200D" },
+  "&zwnj;": { "codepoints": [8204], "characters": "\u200C" }
+}
diff --git a/tool/expected_output.dart b/tool/expected_output.dart
index 30d8fe9..b50adb0 100644
--- a/tool/expected_output.dart
+++ b/tool/expected_output.dart
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:io';
-import 'dart:isolate';
 
 import 'package:path/path.dart' as p;
 
@@ -35,14 +34,14 @@
       description = 'line ${i + 1}: $description';
     }
 
-    var input = '';
+    final input = StringBuffer();
     while (!lines[i].startsWith('<<<')) {
-      input += '${lines[i++]}\n';
+      input.writeln(lines[i++]);
     }
 
-    var expectedOutput = '';
+    final expectedOutput = StringBuffer();
     while (++i < lines.length && !lines[i].startsWith('>>>')) {
-      expectedOutput += '${lines[i]}\n';
+      expectedOutput.writeln(lines[i]);
     }
 
     final dataCase = DataCase(
@@ -51,8 +50,8 @@
       front_matter: frontMatter.toString(),
       description: description,
       skip: skip,
-      input: input,
-      expectedOutput: expectedOutput,
+      input: input.toString(),
+      expectedOutput: expectedOutput.toString(),
     );
     yield dataCase;
   }
@@ -116,16 +115,12 @@
 ///   }
 /// }
 /// ```
-Stream<DataCase> dataCasesUnder({
+Iterable<DataCase> dataCasesUnder({
   required String testDirectory,
   String extension = 'unit',
   bool recursive = true,
-}) async* {
-  final packageUri = Uri.parse('package:markdown/markdown.dart');
-  final isolateUri = await Isolate.resolvePackageUri(packageUri);
-  final markdownLibRoot = p.dirname(isolateUri!.toFilePath());
-  final directory =
-      p.joinAll([p.dirname(markdownLibRoot), 'test', testDirectory]);
+}) sync* {
+  final directory = p.join(p.current, 'test', testDirectory);
   for (final dataCase in _dataCases(
     directory: directory,
     extension: extension,
diff --git a/tool/gfm_stats.json b/tool/gfm_stats.json
index 558b177..1460d3e 100644
--- a/tool/gfm_stats.json
+++ b/tool/gfm_stats.json
@@ -34,24 +34,24 @@
   "613": "strict",
   "614": "strict",
   "615": "strict",
-  "616": "fail",
+  "616": "strict",
   "617": "strict",
   "618": "strict",
-  "619": "fail",
+  "619": "strict",
   "620": "strict"
  },
  "Autolinks (extension)": {
   "621": "strict",
   "622": "strict",
   "623": "strict",
-  "624": "fail",
+  "624": "strict",
   "625": "strict",
   "626": "loose",
   "627": "strict",
   "628": "strict",
-  "629": "fail",
-  "630": "fail",
-  "631": "fail"
+  "629": "strict",
+  "630": "strict",
+  "631": "strict"
  },
  "Backslash escapes": {
   "308": "loose",
@@ -260,7 +260,7 @@
  },
  "Entity and numeric character references": {
   "321": "loose",
-  "322": "loose",
+  "322": "strict",
   "323": "loose",
   "324": "loose",
   "325": "strict",
@@ -268,12 +268,12 @@
   "327": "strict",
   "328": "fail",
   "329": "fail",
-  "330": "fail",
+  "330": "strict",
   "331": "strict",
   "332": "strict",
-  "333": "loose",
-  "334": "loose",
-  "335": "loose",
+  "333": "strict",
+  "334": "strict",
+  "335": "strict",
   "336": "loose",
   "337": "strict"
  },
@@ -682,14 +682,14 @@
   "492": "strict"
  },
  "Tables (extension)": {
-  "198": "loose",
-  "199": "fail",
-  "200": "loose",
-  "201": "loose",
-  "202": "loose",
-  "203": "loose",
-  "204": "loose",
-  "205": "loose"
+  "198": "strict",
+  "199": "strict",
+  "200": "strict",
+  "201": "strict",
+  "202": "strict",
+  "203": "strict",
+  "204": "strict",
+  "205": "strict"
  },
  "Tabs": {
   "1": "strict",
diff --git a/tool/gfm_stats.txt b/tool/gfm_stats.txt
index 8b065e0..c455a49 100644
--- a/tool/gfm_stats.txt
+++ b/tool/gfm_stats.txt
@@ -1,13 +1,13 @@
   17 of   18 –  94.4%  ATX headings
-  17 of   19 –  89.5%  Autolinks
-   7 of   11 –  63.6%  Autolinks (extension)
+  19 of   19 – 100.0%  Autolinks
+  11 of   11 – 100.0%  Autolinks (extension)
   12 of   13 –  92.3%  Backslash escapes
    1 of    1 – 100.0%  Blank lines
   23 of   25 –  92.0%  Block quotes
   22 of   22 – 100.0%  Code spans
    0 of    1 –   0.0%  Disallowed Raw HTML (extension)
  130 of  131 –  99.2%  Emphasis and strong emphasis
-  14 of   17 –  82.4%  Entity and numeric character references
+  15 of   17 –  88.2%  Entity and numeric character references
   28 of   29 –  96.6%  Fenced code blocks
   15 of   15 – 100.0%  Hard line breaks
   43 of   43 – 100.0%  HTML blocks
@@ -24,9 +24,9 @@
   26 of   27 –  96.3%  Setext headings
    2 of    2 – 100.0%  Soft line breaks
    2 of    2 – 100.0%  Strikethrough (extension)
-   7 of    8 –  87.5%  Tables (extension)
+   8 of    8 – 100.0%  Tables (extension)
   11 of   11 – 100.0%  Tabs
    3 of    3 – 100.0%  Textual content
   19 of   19 – 100.0%  Thematic breaks
- 632 of  671 –  94.2%  TOTAL
- 556 of  632 –  88.0%  TOTAL Strict
+ 640 of  671 –  95.4%  TOTAL
+ 575 of  640 –  89.8%  TOTAL Strict
diff --git a/tool/stats.dart b/tool/stats.dart
index d09b0df..4f952bb 100644
--- a/tool/stats.dart
+++ b/tool/stats.dart
@@ -27,30 +27,26 @@
     )
     ..addFlag(
       'raw',
-      defaultsTo: false,
       help: 'raw JSON format',
       negatable: false,
     )
     ..addFlag(
       'update-files',
-      defaultsTo: false,
       help: 'Update stats files in $toolDir',
       negatable: false,
     )
     ..addFlag(
       'verbose',
-      defaultsTo: false,
       help: 'Print details for failures and errors.',
       negatable: false,
     )
     ..addFlag(
       'verbose-loose',
-      defaultsTo: false,
       help: 'Print details for "loose" matches.',
       negatable: false,
     )
     ..addOption('flavor', allowed: _configs.map((c) => c.prefix))
-    ..addFlag('help', defaultsTo: false, negatable: false);
+    ..addFlag('help', negatable: false);
 
   ArgResults options;
 
@@ -140,6 +136,7 @@
         e,
         verboseFail: verbose,
         verboseLooseMatch: verboseLooseMatch,
+        extensions: e.extensions,
       );
 
       units.add(DataCase(
@@ -153,7 +150,7 @@
 
       final nestedMap = scores.putIfAbsent(
         entry.key,
-        () => SplayTreeMap<int, CompareLevel>(),
+        SplayTreeMap<int, CompareLevel>.new,
       );
       nestedMap[e.example] = result.compareLevel;
     }
@@ -223,6 +220,7 @@
   const encoder = JsonEncoder.withIndent(' ', _convert);
   try {
     sink.writeln(encoder.convert(scores));
+    // ignore: avoid_catching_errors
   } on JsonUnsupportedObjectError catch (e) {
     stderr.writeln(e.cause);
     stderr.writeln(e.unsupportedObject.runtimeType);
diff --git a/tool/stats_lib.dart b/tool/stats_lib.dart
index 125b34e..c1298f1 100644
--- a/tool/stats_lib.dart
+++ b/tool/stats_lib.dart
@@ -8,7 +8,14 @@
 
 import 'package:html/dom.dart' show Element;
 import 'package:html/parser.dart' show parseFragment;
-import 'package:markdown/markdown.dart' show markdownToHtml, ExtensionSet;
+import 'package:markdown/markdown.dart'
+    show
+        markdownToHtml,
+        InlineSyntax,
+        BlockSyntax,
+        AutolinkExtensionSyntax,
+        StrikethroughSyntax,
+        TableSyntax;
 import 'package:path/path.dart' as p;
 
 import '../test/util.dart';
@@ -54,19 +61,16 @@
   static final Config commonMarkConfig = Config._(
     'common_mark',
     'http://spec.commonmark.org/0.28/',
-    null,
   );
   static final Config gfmConfig = Config._(
     'gfm',
     'https://github.github.com/gfm/',
-    ExtensionSet.gitHubFlavored,
   );
 
   final String prefix;
   final String baseUrl;
-  final ExtensionSet? extensionSet;
 
-  Config._(this.prefix, this.baseUrl, this.extensionSet);
+  Config._(this.prefix, this.baseUrl);
 }
 
 class CommonMarkTestCase {
@@ -76,6 +80,7 @@
   final String html;
   final int startLine;
   final int endLine;
+  final Set<String> extensions;
 
   CommonMarkTestCase(
     this.example,
@@ -84,6 +89,7 @@
     this.endLine,
     this.markdown,
     this.html,
+    this.extensions,
   );
 
   factory CommonMarkTestCase.fromJson(Map<String, dynamic> json) {
@@ -94,6 +100,9 @@
       json['end_line'] as int,
       json['markdown'] as String /*!*/,
       json['html'] as String,
+      json['extensions'] == null
+          ? const {}
+          : Set.from(json['extensions'] as List),
     );
   }
 
@@ -117,11 +126,37 @@
   bool throwOnError = false,
   bool verboseFail = false,
   bool verboseLooseMatch = false,
+  Set<String> extensions = const {},
 }) {
   String output;
+  final inlineSyntaxes = <InlineSyntax>[];
+  final blockSyntaxes = <BlockSyntax>[];
+
+  for (final extension in extensions) {
+    switch (extension) {
+      case 'autolink':
+        inlineSyntaxes.add(AutolinkExtensionSyntax());
+        break;
+      case 'strikethrough':
+        inlineSyntaxes.add(StrikethroughSyntax());
+        break;
+      case 'table':
+        blockSyntaxes.add(const TableSyntax());
+        break;
+      case 'tagfilter':
+        // TODO(Zhiguang): https://github.com/dart-lang/markdown/pull/447
+        break;
+      default:
+        throw UnimplementedError('Unimplemented extension "$extension"');
+    }
+  }
+
   try {
-    output =
-        markdownToHtml(testCase.markdown, extensionSet: config.extensionSet);
+    output = markdownToHtml(
+      testCase.markdown,
+      inlineSyntaxes: inlineSyntaxes,
+      blockSyntaxes: blockSyntaxes,
+    );
   } catch (err, stackTrace) {
     if (throwOnError) {
       rethrow;
diff --git a/tool/update_blns.dart b/tool/update_blns.dart
index 1f50e36..e2b5c62 100644
--- a/tool/update_blns.dart
+++ b/tool/update_blns.dart
@@ -1,23 +1,14 @@
 import 'dart:async';
-import 'dart:convert';
 import 'dart:io';
 
+import 'update_shared.dart';
+
 const _blnsJsonRawUrl =
     'https://github.com/minimaxir/big-list-of-naughty-strings/raw/master/blns.json';
 const _blnsFilePath = 'test/blns.dart';
 
 Future<void> main() async {
-  final client = HttpClient();
-  List<String> json;
-  try {
-    final request = await client.getUrl(Uri.parse(_blnsJsonRawUrl));
-    final response = await request.close();
-    final source =
-        await response.cast<List<int>>().transform(utf8.decoder).join('');
-    json = (jsonDecode(source) as List).cast<String>();
-  } finally {
-    client.close();
-  }
+  final json = (await downloadJson(_blnsJsonRawUrl) as List).cast<String>();
   final blnsContent = StringBuffer('''
 // GENERATED FILE. DO NOT EDIT.
 //
diff --git a/tool/update_case_folding.dart b/tool/update_case_folding.dart
index 02cbd16..e53f70b 100644
--- a/tool/update_case_folding.dart
+++ b/tool/update_case_folding.dart
@@ -5,18 +5,17 @@
 import 'dart:convert';
 import 'dart:io';
 
+import 'package:path/path.dart' as p;
+
 // Generates and updates unicode case folding map.
 // Here only extract status C + F capital letters.
 void main() {
-  final root = File(Platform.script.path).parent.parent.path;
   // Downloaded from http://www.unicode.org/Public/14.0.0/ucd/CaseFolding.txt
-  final file = File('$root/tool/case_folding.txt');
-  final text = file.readAsStringSync();
-  final lines = LineSplitter().convert(text);
+  final file = File('${p.current}/tool/case_folding.txt');
 
   final result = <String, String>{};
 
-  for (final line in lines) {
+  for (final line in file.readAsLinesSync()) {
     if (line.startsWith('#') ||
         line.trim().isEmpty ||
         !line.contains('CAPITAL LETTER')) {
@@ -37,8 +36,8 @@
     result[key] = value;
   }
 
-  final outputPath = '$root/lib/src/assets/case_folding.dart';
-  final stringMap = JsonEncoder.withIndent('  ').convert(result);
+  final outputPath = '${p.current}/lib/src/assets/case_folding.dart';
+  final stringMap = const JsonEncoder.withIndent('  ').convert(result);
   final output = '''
 // Generated file. do not edit.
 //
diff --git a/tool/update_emojis.dart b/tool/update_emojis.dart
index 396be33..dad59c7 100644
--- a/tool/update_emojis.dart
+++ b/tool/update_emojis.dart
@@ -3,9 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:convert';
 import 'dart:io';
 
+import 'update_shared.dart';
+
 // update_github_emojis.dart now generates the emoji list using the GitHub API
 // to retrieve the emoji list.  It uses this emoji source as a source to keep
 // binary compatibility with the Unicode sequences for each emoji found here.
@@ -14,14 +15,11 @@
 const _emojisFilePath = 'lib/src/legacy_emojis.dart';
 
 Future<void> main() async {
-  final client = HttpClient();
-  final request = await client.getUrl(Uri.parse(_emojisJsonRawUrl));
-  final response = await request.close();
-  final json = jsonDecode(
-          await response.cast<List<int>>().transform(utf8.decoder).join(''))
-      .map((String alias, dynamic info) =>
-          MapEntry(alias, info.cast<String, dynamic>()))
-      .cast<String, Map<String, dynamic>>();
+  final json =
+      (await downloadJson(_emojisJsonRawUrl) as Map<String, dynamic>).map(
+    (String alias, dynamic info) =>
+        MapEntry(alias, info as Map<String, dynamic>),
+  );
   final emojisContent = StringBuffer('''
 // GENERATED FILE. DO NOT EDIT.
 //
@@ -35,7 +33,7 @@
   final ignored = <String>[];
   // Dump in sorted order now to facilitate comparison with new GitHub emoji.
   final sortedKeys = json.keys.toList()..sort();
-  for (final String alias in sortedKeys) {
+  for (final alias in sortedKeys) {
     final info = json[alias] as Map<String, dynamic>;
     if (info['char'] != null) {
       emojisContent.writeln("  '$alias': '${info['char']}',");
@@ -50,5 +48,4 @@
       'emoji recognized by the markdown package, execute `update_github_emojis.dart`.\n');
   print('Wrote data to $_emojisFilePath for $emojiCount emoji, '
       'ignoring ${ignored.length}: ${ignored.join(', ')}.');
-  exit(0);
 }
diff --git a/tool/update_entities.dart b/tool/update_entities.dart
new file mode 100644
index 0000000..2026ebc
--- /dev/null
+++ b/tool/update_entities.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+import 'package:path/path.dart' as p;
+
+/// Generates and updates HTML entities.
+void main() {
+  // Original file: https://html.spec.whatwg.org/entities.json
+  final file = File('${p.current}/tool/entities.json');
+  final json = file.readAsStringSync();
+  final map = Map<String, Map<String, dynamic>>.from(jsonDecode(json) as Map);
+
+  final result = <String, String>{};
+  for (var name in map.keys) {
+    if (name.endsWith(';')) {
+      final value = map[name]!['characters'] as String;
+      result[name] = value;
+    }
+  }
+
+  final outputPath = '${p.current}/lib/src/assets/html_entities.dart';
+  final stringMap = const JsonEncoder.withIndent('  ')
+      .convert(result)
+      .replaceAll(r'"$"', r'r"$"')
+      .replaceAll(r'"\\"', r'r"\"');
+  final output = '''
+// Generated file. do not edit.
+//
+// Source: tool/entities.json
+// Script: tool/update_entities.dart
+// ignore_for_file: prefer_single_quotes
+
+const htmlEntitiesMap = $stringMap;
+''';
+  File(outputPath).writeAsStringSync(output);
+}
diff --git a/tool/update_github_emojis.dart b/tool/update_github_emojis.dart
index 5fbf60c..d5af661 100644
--- a/tool/update_github_emojis.dart
+++ b/tool/update_github_emojis.dart
@@ -3,13 +3,13 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:convert';
 import 'dart:io';
 
 import 'package:args/args.dart';
-
 import 'package:markdown/src/legacy_emojis.dart' as legacy;
 
+import 'update_shared.dart';
+
 /// Regular expression to match GitHub emoji API output filenames.
 RegExp gitHubEmojiApiPattern =
     RegExp(r'^[\ \t]+"(.*?)".*unicode\/([A-Fa-f0-9\-]+)\.png');
@@ -140,7 +140,7 @@
   const zeroWidthJoiner = 0x200D;
 
   try {
-    final String? rawHexList = gitHubEmojiUnicodeFromFilenamePattern
+    final rawHexList = gitHubEmojiUnicodeFromFilenamePattern
         .firstMatch(emojiFilename)
         ?.group(1);
     if (rawHexList == null) {
@@ -183,7 +183,7 @@
   } catch (e) {
     print(
         'Invalid/Non-Conformant emoji filename encountered "$emojiFilename"!');
-    return (errorSpecialReplacement);
+    return errorSpecialReplacement;
   }
 }
 
@@ -215,22 +215,24 @@
   try {
     results = parser.parse(args);
   } catch (e) {
+    print(e);
     printUsage(parser);
-    exit(0);
+    return;
   }
 
   if (results['help'] as bool) {
     printUsage(parser);
-    exit(0);
+    return;
   }
 
   var totalEmojiWithDifferentUnicodeSequences = 0;
   final useLegacyUnicodeSequences = !(results['useGitHubUnicodes'] as bool);
   final visualizeUnicodeDiffs = results['visualizeDifferentUnicodes'] as bool;
-  final dumpMarkdownShortCodes =
-      (results['dumpMarkdownShortCodes'].toLowerCase() == 'plain');
-  final dumpMarkdownToolTipShortCodes =
-      (results['dumpMarkdownShortCodes'].toLowerCase() == 'tooltip');
+
+  final shortCodes =
+      (results['dumpMarkdownShortCodes'] as String).toLowerCase();
+  final dumpMarkdownShortCodes = shortCodes == 'plain';
+  final dumpMarkdownToolTipShortCodes = shortCodes == 'tooltip';
 
   if (!useLegacyUnicodeSequences) {
     // Issue warning of the implications of using full GitHub emjoi Unicode sequences.
@@ -240,14 +242,13 @@
     print(
         'The following emoji have different Unicode sequences from those of legacy versions:');
   }
-  final client = HttpClient();
-  final request = await client.getUrl(Uri.parse(_emojisJsonRawUrl));
-  final response = await request.close();
-  final shortcodeToEmoji = jsonDecode(
-          await response.cast<List<int>>().transform(utf8.decoder).join(''))
-      .map((String alias, dynamic filename) => MapEntry(
-          alias, parseGitHubFilenameIntoUnicodeString(filename as String)))
-      .cast<String, String>() as Map<String, String>;
+  final shortcodeToEmoji =
+      (await downloadJson(_emojisJsonRawUrl) as Map<String, dynamic>).map(
+    (String alias, dynamic filename) => MapEntry(
+      alias,
+      parseGitHubFilenameIntoUnicodeString(filename as String),
+    ),
+  );
 
   // Now before we proceed we need to 'mix in' any legacy emoji alias shortcodes that
   // are missing from the GitHub emoji list.
@@ -271,8 +272,8 @@
   final errored = <String>[];
   // Dump in sorted order now to facilitate comparison with new GitHub emoji.
   final sortedKeys = shortcodeToEmoji.keys.toList()..sort();
-  for (final String shortCodeAlias in sortedKeys) {
-    String emojiUnicode = shortcodeToEmoji[shortCodeAlias]!;
+  for (final shortCodeAlias in sortedKeys) {
+    var emojiUnicode = shortcodeToEmoji[shortCodeAlias]!;
     if (useLegacyUnicodeSequences &&
         legacyEmojis.containsKey(shortCodeAlias) &&
         shortCodeAlias != 'cricket' &&
@@ -312,14 +313,13 @@
     // is being captured, so we exit now to exclude the summary
     // report from being included in the emoji markdown we have
     // been outputing.
-    exit(0);
+    return;
   }
 
   print('''Wrote data to $_emojisFilePath for $emojiCount emoji,
 $totalEmojiWithDifferentUnicodeSequences emoji's Unicode sequences differ from legacy versions${!visualizeUnicodeDiffs ? " (run with -v flag to visualize)" : ""},
 ignoring ${ignored.length}: ${ignored.join(', ')},
 errored: ${errored.length} ${errored.join(', ')}.''');
-  exit(0);
 }
 
 void printUsage(ArgParser parser) {
diff --git a/tool/update_shared.dart b/tool/update_shared.dart
new file mode 100644
index 0000000..6992cd5
--- /dev/null
+++ b/tool/update_shared.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+
+Future<Object?> downloadJson(String uri) async {
+  final client = HttpClient();
+  try {
+    final request = await client.getUrl(Uri.parse(uri));
+    final response = await request.close();
+
+    return response
+        .transform(utf8.decoder)
+        .transform(const JsonDecoder())
+        .single;
+  } finally {
+    client.close();
+  }
+}