// 本文件由 `scripts/gen_escape_family.py` 从参照腿的读数生成,**勿手改、勿手加条目**。
// 来源一:`scripts/EntityTableLeg.java` 反射读 `XmlEscape`/`Html4Escape`/`XmlUnescape`/
// `Html4Unescape` 四个类自己的 `String[][]` 静态字段——实体码表就是它们本身,
// 不抄 Apache 清单、不抄网页表(hutool 的 HTML4 表是 Apache Commons 派生,条目以 jar 现读为准;
// 反射读常量是 `re` 轮 RegexPool 那批用过的同一条做法)。
// 来源二:`scripts/EscapeLeg3.java` 对整个 BMP 逐位问 `EscapeUtil.escape`,先证
// "谓词==行为"零分岔(MISMATCH|count|0),再把不转义集压成区间表。
// 谓词本体由 javap -c 现读 `EscapeUtil.lambda$static$0`:
// isDigit(c) || isLowerCase(c) || isUpperCase(c) || "*@-_+./".contains(c)
// 是**大小写/数字**、不是 isLetterOrDigit——这解释了 ª(U+00AA) 被留、
// ƻ(U+01BB, Lt) 与 あ(U+3041, Lo) 被转、Ⅰ(U+2160, Other_Uppercase) 被留。
// 参照版本 hutool-all 5.8.37;判据与逐条出处见 docs/spec/01-text.md §1.16。
///|
// escape_xml 的实体表(`XmlEscape.BASIC_ESCAPE`) —— 5 条,逐条来自腿的反射读数
let xml_escape_pairs : Array[(String, String)] = [
("'", "'"),
("\"", """),
("&", "&"),
("<", "<"),
(">", ">"),
]
///|
// escape_html4 的实体表(`Html4Escape` 三张字段按 BASIC→ISO8859_1→HTML40_EXTENDED 顺序拼接) —— 251 条,逐条来自腿的反射读数
let html4_escape_pairs : Array[(String, String)] = [
("\"", """),
("&", "&"),
("<", "<"),
(">", ">"),
("\u{00a0}", " "),
("\u{00a1}", "¡"),
("\u{00a2}", "¢"),
("\u{00a3}", "£"),
("\u{00a4}", "¤"),
("\u{00a5}", "¥"),
("\u{00a6}", "¦"),
("\u{00a7}", "§"),
("\u{00a8}", "¨"),
("\u{00a9}", "©"),
("\u{00aa}", "ª"),
("\u{00ab}", "«"),
("\u{00ac}", "¬"),
("\u{00ad}", ""),
("\u{00ae}", "®"),
("\u{00af}", "¯"),
("\u{00b0}", "°"),
("\u{00b1}", "±"),
("\u{00b2}", "²"),
("\u{00b3}", "³"),
("\u{00b4}", "´"),
("\u{00b5}", "µ"),
("\u{00b6}", "¶"),
("\u{00b7}", "·"),
("\u{00b8}", "¸"),
("\u{00b9}", "¹"),
("\u{00ba}", "º"),
("\u{00bb}", "»"),
("\u{00bc}", "¼"),
("\u{00bd}", "½"),
("\u{00be}", "¾"),
("\u{00bf}", "¿"),
("\u{00c0}", "À"),
("\u{00c1}", "Á"),
("\u{00c2}", "Â"),
("\u{00c3}", "Ã"),
("\u{00c4}", "Ä"),
("\u{00c5}", "Å"),
("\u{00c6}", "Æ"),
("\u{00c7}", "Ç"),
("\u{00c8}", "È"),
("\u{00c9}", "É"),
("\u{00ca}", "Ê"),
("\u{00cb}", "Ë"),
("\u{00cc}", "Ì"),
("\u{00cd}", "Í"),
("\u{00ce}", "Î"),
("\u{00cf}", "Ï"),
("\u{00d0}", "Ð"),
("\u{00d1}", "Ñ"),
("\u{00d2}", "Ò"),
("\u{00d3}", "Ó"),
("\u{00d4}", "Ô"),
("\u{00d5}", "Õ"),
("\u{00d6}", "Ö"),
("\u{00d7}", "×"),
("\u{00d8}", "Ø"),
("\u{00d9}", "Ù"),
("\u{00da}", "Ú"),
("\u{00db}", "Û"),
("\u{00dc}", "Ü"),
("\u{00dd}", "Ý"),
("\u{00de}", "Þ"),
("\u{00df}", "ß"),
("\u{00e0}", "à"),
("\u{00e1}", "á"),
("\u{00e2}", "â"),
("\u{00e3}", "ã"),
("\u{00e4}", "ä"),
("\u{00e5}", "å"),
("\u{00e6}", "æ"),
("\u{00e7}", "ç"),
("\u{00e8}", "è"),
("\u{00e9}", "é"),
("\u{00ea}", "ê"),
("\u{00eb}", "ë"),
("\u{00ec}", "ì"),
("\u{00ed}", "í"),
("\u{00ee}", "î"),
("\u{00ef}", "ï"),
("\u{00f0}", "ð"),
("\u{00f1}", "ñ"),
("\u{00f2}", "ò"),
("\u{00f3}", "ó"),
("\u{00f4}", "ô"),
("\u{00f5}", "õ"),
("\u{00f6}", "ö"),
("\u{00f7}", "÷"),
("\u{00f8}", "ø"),
("\u{00f9}", "ù"),
("\u{00fa}", "ú"),
("\u{00fb}", "û"),
("\u{00fc}", "ü"),
("\u{00fd}", "ý"),
("\u{00fe}", "þ"),
("\u{00ff}", "ÿ"),
("\u{0192}", "ƒ"),
("\u{0391}", "Α"),
("\u{0392}", "Β"),
("\u{0393}", "Γ"),
("\u{0394}", "Δ"),
("\u{0395}", "Ε"),
("\u{0396}", "Ζ"),
("\u{0397}", "Η"),
("\u{0398}", "Θ"),
("\u{0399}", "Ι"),
("\u{039a}", "Κ"),
("\u{039b}", "Λ"),
("\u{039c}", "Μ"),
("\u{039d}", "Ν"),
("\u{039e}", "Ξ"),
("\u{039f}", "Ο"),
("\u{03a0}", "Π"),
("\u{03a1}", "Ρ"),
("\u{03a3}", "Σ"),
("\u{03a4}", "Τ"),
("\u{03a5}", "Υ"),
("\u{03a6}", "Φ"),
("\u{03a7}", "Χ"),
("\u{03a8}", "Ψ"),
("\u{03a9}", "Ω"),
("\u{03b1}", "α"),
("\u{03b2}", "β"),
("\u{03b3}", "γ"),
("\u{03b4}", "δ"),
("\u{03b5}", "ε"),
("\u{03b6}", "ζ"),
("\u{03b7}", "η"),
("\u{03b8}", "θ"),
("\u{03b9}", "ι"),
("\u{03ba}", "κ"),
("\u{03bb}", "λ"),
("\u{03bc}", "μ"),
("\u{03bd}", "ν"),
("\u{03be}", "ξ"),
("\u{03bf}", "ο"),
("\u{03c0}", "π"),
("\u{03c1}", "ρ"),
("\u{03c2}", "ς"),
("\u{03c3}", "σ"),
("\u{03c4}", "τ"),
("\u{03c5}", "υ"),
("\u{03c6}", "φ"),
("\u{03c7}", "χ"),
("\u{03c8}", "ψ"),
("\u{03c9}", "ω"),
("\u{03d1}", "ϑ"),
("\u{03d2}", "ϒ"),
("\u{03d6}", "ϖ"),
("\u{2022}", "•"),
("\u{2026}", "…"),
("\u{2032}", "′"),
("\u{2033}", "″"),
("\u{203e}", "‾"),
("\u{2044}", "⁄"),
("\u{2118}", "℘"),
("\u{2111}", "ℑ"),
("\u{211c}", "ℜ"),
("\u{2122}", "™"),
("\u{2135}", "ℵ"),
("\u{2190}", "←"),
("\u{2191}", "↑"),
("\u{2192}", "→"),
("\u{2193}", "↓"),
("\u{2194}", "↔"),
("\u{21b5}", "↵"),
("\u{21d0}", "⇐"),
("\u{21d1}", "⇑"),
("\u{21d2}", "⇒"),
("\u{21d3}", "⇓"),
("\u{21d4}", "⇔"),
("\u{2200}", "∀"),
("\u{2202}", "∂"),
("\u{2203}", "∃"),
("\u{2205}", "∅"),
("\u{2207}", "∇"),
("\u{2208}", "∈"),
("\u{2209}", "∉"),
("\u{220b}", "∋"),
("\u{220f}", "∏"),
("\u{2211}", "∑"),
("\u{2212}", "−"),
("\u{2217}", "∗"),
("\u{221a}", "√"),
("\u{221d}", "∝"),
("\u{221e}", "∞"),
("\u{2220}", "∠"),
("\u{2227}", "∧"),
("\u{2228}", "∨"),
("\u{2229}", "∩"),
("\u{222a}", "∪"),
("\u{222b}", "∫"),
("\u{2234}", "∴"),
("\u{223c}", "∼"),
("\u{2245}", "≅"),
("\u{2248}", "≈"),
("\u{2260}", "≠"),
("\u{2261}", "≡"),
("\u{2264}", "≤"),
("\u{2265}", "≥"),
("\u{2282}", "⊂"),
("\u{2283}", "⊃"),
("\u{2286}", "⊆"),
("\u{2287}", "⊇"),
("\u{2295}", "⊕"),
("\u{2297}", "⊗"),
("\u{22a5}", "⊥"),
("\u{22c5}", "⋅"),
("\u{2308}", "⌈"),
("\u{2309}", "⌉"),
("\u{230a}", "⌊"),
("\u{230b}", "⌋"),
("\u{2329}", "〈"),
("\u{232a}", "〉"),
("\u{25ca}", "◊"),
("\u{2660}", "♠"),
("\u{2663}", "♣"),
("\u{2665}", "♥"),
("\u{2666}", "♦"),
("\u{0152}", "Œ"),
("\u{0153}", "œ"),
("\u{0160}", "Š"),
("\u{0161}", "š"),
("\u{0178}", "Ÿ"),
("\u{02c6}", "ˆ"),
("\u{02dc}", "˜"),
("\u{2002}", " "),
("\u{2003}", " "),
("\u{2009}", " "),
("\u{200c}", ""),
("\u{200d}", ""),
("\u{200e}", ""),
("\u{200f}", ""),
("\u{2013}", "–"),
("\u{2014}", "—"),
("\u{2018}", "‘"),
("\u{2019}", "’"),
("\u{201a}", "‚"),
("\u{201c}", "“"),
("\u{201d}", "”"),
("\u{201e}", "„"),
("\u{2020}", "†"),
("\u{2021}", "‡"),
("\u{2030}", "‰"),
("\u{2039}", "‹"),
("\u{203a}", "›"),
("\u{20ac}", "€"),
]
///|
// unescape_xml 认的实体名(`XmlUnescape.BASIC_UNESCAPE`) —— 5 条,逐条来自腿的反射读数
let xml_unescape_pairs : Array[(String, String)] = [
("'", "'"),
(""", "\""),
("&", "&"),
("<", "<"),
(">", ">"),
]
///|
// unescape_html4 认的实体名(XML 那 5 条 + ISO8859_1_UNESCAPE 96 + HTML40_EXTENDED_UNESCAPE 151) —— 252 条,逐条来自腿的反射读数
let html4_unescape_pairs : Array[(String, String)] = [
("'", "'"),
(""", "\""),
("&", "&"),
("<", "<"),
(">", ">"),
(" ", "\u{00a0}"),
("¡", "\u{00a1}"),
("¢", "\u{00a2}"),
("£", "\u{00a3}"),
("¤", "\u{00a4}"),
("¥", "\u{00a5}"),
("¦", "\u{00a6}"),
("§", "\u{00a7}"),
("¨", "\u{00a8}"),
("©", "\u{00a9}"),
("ª", "\u{00aa}"),
("«", "\u{00ab}"),
("¬", "\u{00ac}"),
("", "\u{00ad}"),
("®", "\u{00ae}"),
("¯", "\u{00af}"),
("°", "\u{00b0}"),
("±", "\u{00b1}"),
("²", "\u{00b2}"),
("³", "\u{00b3}"),
("´", "\u{00b4}"),
("µ", "\u{00b5}"),
("¶", "\u{00b6}"),
("·", "\u{00b7}"),
("¸", "\u{00b8}"),
("¹", "\u{00b9}"),
("º", "\u{00ba}"),
("»", "\u{00bb}"),
("¼", "\u{00bc}"),
("½", "\u{00bd}"),
("¾", "\u{00be}"),
("¿", "\u{00bf}"),
("À", "\u{00c0}"),
("Á", "\u{00c1}"),
("Â", "\u{00c2}"),
("Ã", "\u{00c3}"),
("Ä", "\u{00c4}"),
("Å", "\u{00c5}"),
("Æ", "\u{00c6}"),
("Ç", "\u{00c7}"),
("È", "\u{00c8}"),
("É", "\u{00c9}"),
("Ê", "\u{00ca}"),
("Ë", "\u{00cb}"),
("Ì", "\u{00cc}"),
("Í", "\u{00cd}"),
("Î", "\u{00ce}"),
("Ï", "\u{00cf}"),
("Ð", "\u{00d0}"),
("Ñ", "\u{00d1}"),
("Ò", "\u{00d2}"),
("Ó", "\u{00d3}"),
("Ô", "\u{00d4}"),
("Õ", "\u{00d5}"),
("Ö", "\u{00d6}"),
("×", "\u{00d7}"),
("Ø", "\u{00d8}"),
("Ù", "\u{00d9}"),
("Ú", "\u{00da}"),
("Û", "\u{00db}"),
("Ü", "\u{00dc}"),
("Ý", "\u{00dd}"),
("Þ", "\u{00de}"),
("ß", "\u{00df}"),
("à", "\u{00e0}"),
("á", "\u{00e1}"),
("â", "\u{00e2}"),
("ã", "\u{00e3}"),
("ä", "\u{00e4}"),
("å", "\u{00e5}"),
("æ", "\u{00e6}"),
("ç", "\u{00e7}"),
("è", "\u{00e8}"),
("é", "\u{00e9}"),
("ê", "\u{00ea}"),
("ë", "\u{00eb}"),
("ì", "\u{00ec}"),
("í", "\u{00ed}"),
("î", "\u{00ee}"),
("ï", "\u{00ef}"),
("ð", "\u{00f0}"),
("ñ", "\u{00f1}"),
("ò", "\u{00f2}"),
("ó", "\u{00f3}"),
("ô", "\u{00f4}"),
("õ", "\u{00f5}"),
("ö", "\u{00f6}"),
("÷", "\u{00f7}"),
("ø", "\u{00f8}"),
("ù", "\u{00f9}"),
("ú", "\u{00fa}"),
("û", "\u{00fb}"),
("ü", "\u{00fc}"),
("ý", "\u{00fd}"),
("þ", "\u{00fe}"),
("ÿ", "\u{00ff}"),
("ƒ", "\u{0192}"),
("Α", "\u{0391}"),
("Β", "\u{0392}"),
("Γ", "\u{0393}"),
("Δ", "\u{0394}"),
("Ε", "\u{0395}"),
("Ζ", "\u{0396}"),
("Η", "\u{0397}"),
("Θ", "\u{0398}"),
("Ι", "\u{0399}"),
("Κ", "\u{039a}"),
("Λ", "\u{039b}"),
("Μ", "\u{039c}"),
("Ν", "\u{039d}"),
("Ξ", "\u{039e}"),
("Ο", "\u{039f}"),
("Π", "\u{03a0}"),
("Ρ", "\u{03a1}"),
("Σ", "\u{03a3}"),
("Τ", "\u{03a4}"),
("Υ", "\u{03a5}"),
("Φ", "\u{03a6}"),
("Χ", "\u{03a7}"),
("Ψ", "\u{03a8}"),
("Ω", "\u{03a9}"),
("α", "\u{03b1}"),
("β", "\u{03b2}"),
("γ", "\u{03b3}"),
("δ", "\u{03b4}"),
("ε", "\u{03b5}"),
("ζ", "\u{03b6}"),
("η", "\u{03b7}"),
("θ", "\u{03b8}"),
("ι", "\u{03b9}"),
("κ", "\u{03ba}"),
("λ", "\u{03bb}"),
("μ", "\u{03bc}"),
("ν", "\u{03bd}"),
("ξ", "\u{03be}"),
("ο", "\u{03bf}"),
("π", "\u{03c0}"),
("ρ", "\u{03c1}"),
("ς", "\u{03c2}"),
("σ", "\u{03c3}"),
("τ", "\u{03c4}"),
("υ", "\u{03c5}"),
("φ", "\u{03c6}"),
("χ", "\u{03c7}"),
("ψ", "\u{03c8}"),
("ω", "\u{03c9}"),
("ϑ", "\u{03d1}"),
("ϒ", "\u{03d2}"),
("ϖ", "\u{03d6}"),
("•", "\u{2022}"),
("…", "\u{2026}"),
("′", "\u{2032}"),
("″", "\u{2033}"),
("‾", "\u{203e}"),
("⁄", "\u{2044}"),
("℘", "\u{2118}"),
("ℑ", "\u{2111}"),
("ℜ", "\u{211c}"),
("™", "\u{2122}"),
("ℵ", "\u{2135}"),
("←", "\u{2190}"),
("↑", "\u{2191}"),
("→", "\u{2192}"),
("↓", "\u{2193}"),
("↔", "\u{2194}"),
("↵", "\u{21b5}"),
("⇐", "\u{21d0}"),
("⇑", "\u{21d1}"),
("⇒", "\u{21d2}"),
("⇓", "\u{21d3}"),
("⇔", "\u{21d4}"),
("∀", "\u{2200}"),
("∂", "\u{2202}"),
("∃", "\u{2203}"),
("∅", "\u{2205}"),
("∇", "\u{2207}"),
("∈", "\u{2208}"),
("∉", "\u{2209}"),
("∋", "\u{220b}"),
("∏", "\u{220f}"),
("∑", "\u{2211}"),
("−", "\u{2212}"),
("∗", "\u{2217}"),
("√", "\u{221a}"),
("∝", "\u{221d}"),
("∞", "\u{221e}"),
("∠", "\u{2220}"),
("∧", "\u{2227}"),
("∨", "\u{2228}"),
("∩", "\u{2229}"),
("∪", "\u{222a}"),
("∫", "\u{222b}"),
("∴", "\u{2234}"),
("∼", "\u{223c}"),
("≅", "\u{2245}"),
("≈", "\u{2248}"),
("≠", "\u{2260}"),
("≡", "\u{2261}"),
("≤", "\u{2264}"),
("≥", "\u{2265}"),
("⊂", "\u{2282}"),
("⊃", "\u{2283}"),
("⊆", "\u{2286}"),
("⊇", "\u{2287}"),
("⊕", "\u{2295}"),
("⊗", "\u{2297}"),
("⊥", "\u{22a5}"),
("⋅", "\u{22c5}"),
("⌈", "\u{2308}"),
("⌉", "\u{2309}"),
("⌊", "\u{230a}"),
("⌋", "\u{230b}"),
("〈", "\u{2329}"),
("〉", "\u{232a}"),
("◊", "\u{25ca}"),
("♠", "\u{2660}"),
("♣", "\u{2663}"),
("♥", "\u{2665}"),
("♦", "\u{2666}"),
("Œ", "\u{0152}"),
("œ", "\u{0153}"),
("Š", "\u{0160}"),
("š", "\u{0161}"),
("Ÿ", "\u{0178}"),
("ˆ", "\u{02c6}"),
("˜", "\u{02dc}"),
(" ", "\u{2002}"),
(" ", "\u{2003}"),
(" ", "\u{2009}"),
("", "\u{200c}"),
("", "\u{200d}"),
("", "\u{200e}"),
("", "\u{200f}"),
("–", "\u{2013}"),
("—", "\u{2014}"),
("‘", "\u{2018}"),
("’", "\u{2019}"),
("‚", "\u{201a}"),
("“", "\u{201c}"),
("”", "\u{201d}"),
("„", "\u{201e}"),
("†", "\u{2020}"),
("‡", "\u{2021}"),
("‰", "\u{2030}"),
("‹", "\u{2039}"),
("›", "\u{203a}"),
("€", "\u{20ac}"),
]
///|
// `escape` 默认过滤器的**不转义**码位区间表(146 段;表内原样出,表外全转)。
// 非 BMP 不在表里是刻意的:参照按 UTF-16 码元走,星平面拆成两个代理码元,
// 两个都不属数字/大小写 ⇒ 永远转(腿的 ASTRAL 行五对现读全 false)。
let escape_keep_ranges : Array[(Int, Int)] = [
(0x002a, 0x002b),
(0x002d, 0x0039),
(0x0040, 0x005a),
(0x005f, 0x005f),
(0x0061, 0x007a),
(0x00aa, 0x00aa),
(0x00b5, 0x00b5),
(0x00ba, 0x00ba),
(0x00c0, 0x00d6),
(0x00d8, 0x00f6),
(0x00f8, 0x01ba),
(0x01bc, 0x01bf),
(0x01c4, 0x01c4),
(0x01c6, 0x01c7),
(0x01c9, 0x01ca),
(0x01cc, 0x01f1),
(0x01f3, 0x0293),
(0x0295, 0x02b8),
(0x02c0, 0x02c1),
(0x02e0, 0x02e4),
(0x0345, 0x0345),
(0x0370, 0x0373),
(0x0376, 0x0377),
(0x037a, 0x037d),
(0x037f, 0x037f),
(0x0386, 0x0386),
(0x0388, 0x038a),
(0x038c, 0x038c),
(0x038e, 0x03a1),
(0x03a3, 0x03f5),
(0x03f7, 0x0481),
(0x048a, 0x052f),
(0x0531, 0x0556),
(0x0560, 0x0588),
(0x0660, 0x0669),
(0x06f0, 0x06f9),
(0x07c0, 0x07c9),
(0x0966, 0x096f),
(0x09e6, 0x09ef),
(0x0a66, 0x0a6f),
(0x0ae6, 0x0aef),
(0x0b66, 0x0b6f),
(0x0be6, 0x0bef),
(0x0c66, 0x0c6f),
(0x0ce6, 0x0cef),
(0x0d66, 0x0d6f),
(0x0de6, 0x0def),
(0x0e50, 0x0e59),
(0x0ed0, 0x0ed9),
(0x0f20, 0x0f29),
(0x1040, 0x1049),
(0x1090, 0x1099),
(0x10a0, 0x10c5),
(0x10c7, 0x10c7),
(0x10cd, 0x10cd),
(0x10d0, 0x10fa),
(0x10fd, 0x10ff),
(0x13a0, 0x13f5),
(0x13f8, 0x13fd),
(0x17e0, 0x17e9),
(0x1810, 0x1819),
(0x1946, 0x194f),
(0x19d0, 0x19d9),
(0x1a80, 0x1a89),
(0x1a90, 0x1a99),
(0x1b50, 0x1b59),
(0x1bb0, 0x1bb9),
(0x1c40, 0x1c49),
(0x1c50, 0x1c59),
(0x1c80, 0x1c88),
(0x1c90, 0x1cba),
(0x1cbd, 0x1cbf),
(0x1d00, 0x1dbf),
(0x1e00, 0x1f15),
(0x1f18, 0x1f1d),
(0x1f20, 0x1f45),
(0x1f48, 0x1f4d),
(0x1f50, 0x1f57),
(0x1f59, 0x1f59),
(0x1f5b, 0x1f5b),
(0x1f5d, 0x1f5d),
(0x1f5f, 0x1f7d),
(0x1f80, 0x1f87),
(0x1f90, 0x1f97),
(0x1fa0, 0x1fa7),
(0x1fb0, 0x1fb4),
(0x1fb6, 0x1fbb),
(0x1fbe, 0x1fbe),
(0x1fc2, 0x1fc4),
(0x1fc6, 0x1fcb),
(0x1fd0, 0x1fd3),
(0x1fd6, 0x1fdb),
(0x1fe0, 0x1fec),
(0x1ff2, 0x1ff4),
(0x1ff6, 0x1ffb),
(0x2071, 0x2071),
(0x207f, 0x207f),
(0x2090, 0x209c),
(0x2102, 0x2102),
(0x2107, 0x2107),
(0x210a, 0x2113),
(0x2115, 0x2115),
(0x2119, 0x211d),
(0x2124, 0x2124),
(0x2126, 0x2126),
(0x2128, 0x2128),
(0x212a, 0x212d),
(0x212f, 0x2134),
(0x2139, 0x2139),
(0x213c, 0x213f),
(0x2145, 0x2149),
(0x214e, 0x214e),
(0x2160, 0x217f),
(0x2183, 0x2184),
(0x24b6, 0x24e9),
(0x2c00, 0x2c2e),
(0x2c30, 0x2c5e),
(0x2c60, 0x2ce4),
(0x2ceb, 0x2cee),
(0x2cf2, 0x2cf3),
(0x2d00, 0x2d25),
(0x2d27, 0x2d27),
(0x2d2d, 0x2d2d),
(0xa620, 0xa629),
(0xa640, 0xa66d),
(0xa680, 0xa69d),
(0xa722, 0xa787),
(0xa78b, 0xa78e),
(0xa790, 0xa7bf),
(0xa7c2, 0xa7ca),
(0xa7f5, 0xa7f6),
(0xa7f8, 0xa7fa),
(0xa8d0, 0xa8d9),
(0xa900, 0xa909),
(0xa9d0, 0xa9d9),
(0xa9f0, 0xa9f9),
(0xaa50, 0xaa59),
(0xab30, 0xab5a),
(0xab5c, 0xab68),
(0xab70, 0xabbf),
(0xabf0, 0xabf9),
(0xfb00, 0xfb06),
(0xfb13, 0xfb17),
(0xff10, 0xff19),
(0xff21, 0xff3a),
(0xff41, 0xff5a),
]