// Generated by scripts/mapgen.py
// 2025-06-11
///|
fn lookup(orig : Char) -> Fold {
// The code below is is intended to reduce the binary size from that of a simple 1:1 lookup table.
// It exploits two facts:
// 1. Many of the mappings form ranges mapped to other ranges.
// To benefit from this, we match on ranges instead of single numbers.
// Alone, this decreases the binary size but results in performance regression over the simple 1:1 lookup.
// 2. Most of the mappings are from relatively small chars (0 - 0x2CFF).
// To benefit from this, we use a jump table based on the high byte for this range.
// This more than recovers the performance regression from exploting fact #1, at least in the tested benchmark.
let u16_mask : UInt = 0x0000FFFFU
let from = orig.to_uint()
if from <= 0x2CFF {
let from = from & u16_mask
let high_byte = (from >> 8).to_byte()
let low_byte = (from & 0x0000_00FFU).to_byte()
let single_char : UInt = match high_byte {
0x00 =>
match low_byte {
b'\x41'..=b'\x5a' => from + 0x0020
b'\xb5' => 0x03bcU
b'\xc0'..=b'\xd6' => from + 0x0020
b'\xd8'..=b'\xde' => from + 0x0020
b'\xdf' => return Two('\u{0073}', '\u{0073}')
_ => from
}
0x01 =>
match low_byte {
_..=b'\x2e' => from | 0x0000_0001U
b'\x30' => return Two('\u{0069}', '\u{0307}')
b'\x32'..=b'\x36' => from | 0x0000_0001U
b'\x39'..=b'\x47' => (from + 1) & 0xFFFF_FFFEU
b'\x49' => return Two('\u{02bc}', '\u{006e}')
b'\x4a'..=b'\x76' => from | 0x0000_0001U
b'\x78' => 0x00ffU
b'\x79'..=b'\x7d' => (from + 1) & 0xFFFF_FFFEU
b'\x7f' => 0x0073U
b'\x81' => 0x0253U
b'\x82'..=b'\x84' => from | 0x0000_0001U
b'\x86' => 0x0254U
b'\x87' => 0x0188U
b'\x89'..=b'\x8a' => from + 0x00cd
b'\x8b' => 0x018cU
b'\x8e' => 0x01ddU
b'\x8f' => 0x0259U
b'\x90' => 0x025bU
b'\x91' => 0x0192U
b'\x93' => 0x0260U
b'\x94' => 0x0263U
b'\x96' => 0x0269U
b'\x97' => 0x0268U
b'\x98' => 0x0199U
b'\x9c' => 0x026fU
b'\x9d' => 0x0272U
b'\x9f' => 0x0275U
b'\xa0'..=b'\xa4' => from | 0x0000_0001U
b'\xa6' => 0x0280U
b'\xa7' => 0x01a8U
b'\xa9' => 0x0283U
b'\xac' => 0x01adU
b'\xae' => 0x0288U
b'\xaf' => 0x01b0U
b'\xb1'..=b'\xb2' => from + 0x00d9
b'\xb3'..=b'\xb5' => (from + 1) & 0xFFFF_FFFEU
b'\xb7' => 0x0292U
b'\xb8' => 0x01b9U
b'\xbc' => 0x01bdU
b'\xc4' => 0x01c6U
b'\xc5' => 0x01c6U
b'\xc7' => 0x01c9U
b'\xc8' => 0x01c9U
b'\xca' => 0x01ccU
b'\xcb'..=b'\xdb' => (from + 1) & 0xFFFF_FFFEU
b'\xde'..=b'\xee' => from | 0x0000_0001U
b'\xf0' => return Two('\u{006a}', '\u{030c}')
b'\xf1' => 0x01f3U
b'\xf2'..=b'\xf4' => from | 0x0000_0001U
b'\xf6' => 0x0195U
b'\xf7' => 0x01bfU
b'\xf8'..<_ => from | 0x0000_0001U
_ => from
}
0x02 =>
match low_byte {
_..=b'\x1e' => from | 0x0000_0001U
b'\x20' => 0x019eU
b'\x22'..=b'\x32' => from | 0x0000_0001U
b'\x3a' => 0x2c65U
b'\x3b' => 0x023cU
b'\x3d' => 0x019aU
b'\x3e' => 0x2c66U
b'\x41' => 0x0242U
b'\x43' => 0x0180U
b'\x44' => 0x0289U
b'\x45' => 0x028cU
b'\x46'..=b'\x4e' => from | 0x0000_0001U
_ => from
}
0x03 =>
match low_byte {
b'\x45' => 0x03b9U
b'\x70'..=b'\x72' => from | 0x0000_0001U
b'\x76' => 0x0377U
b'\x7f' => 0x03f3U
b'\x86' => 0x03acU
b'\x88'..=b'\x8a' => from + 0x0025
b'\x8c' => 0x03ccU
b'\x8e'..=b'\x8f' => from + 0x003f
b'\x90' => return Three('\u{03b9}', '\u{0308}', '\u{0301}')
b'\x91'..=b'\xa1' => from + 0x0020
b'\xa3'..=b'\xab' => from + 0x0020
b'\xb0' => return Three('\u{03c5}', '\u{0308}', '\u{0301}')
b'\xc2' => 0x03c3U
b'\xcf' => 0x03d7U
b'\xd0' => 0x03b2U
b'\xd1' => 0x03b8U
b'\xd5' => 0x03c6U
b'\xd6' => 0x03c0U
b'\xd8'..=b'\xee' => from | 0x0000_0001U
b'\xf0' => 0x03baU
b'\xf1' => 0x03c1U
b'\xf4' => 0x03b8U
b'\xf5' => 0x03b5U
b'\xf7' => 0x03f8U
b'\xf9' => 0x03f2U
b'\xfa' => 0x03fbU
b'\xfd'..<_ => from - 0x0082
_ => from
}
0x04 =>
match low_byte {
_..=b'\x0f' => from + 0x0050
b'\x10'..=b'\x2f' => from + 0x0020
b'\x60'..=b'\x80' => from | 0x0000_0001U
b'\x8a'..=b'\xbe' => from | 0x0000_0001U
b'\xc0' => 0x04cfU
b'\xc1'..=b'\xcd' => (from + 1) & 0xFFFF_FFFEU
b'\xd0'..<_ => from | 0x0000_0001U
_ => from
}
0x05 =>
match low_byte {
_..=b'\x2e' => from | 0x0000_0001U
b'\x31'..=b'\x56' => from + 0x0030
b'\x87' => return Two('\u{0565}', '\u{0582}')
_ => from
}
0x06 => from
0x07 => from
0x08 => from
0x09 => from
0x0a => from
0x0b => from
0x0c => from
0x0d => from
0x0e => from
0x0f => from
0x10 =>
match low_byte {
b'\xa0'..=b'\xc5' => from + 0x1c60
b'\xc7' => 0x2d27U
b'\xcd' => 0x2d2dU
_ => from
}
0x11 => from
0x12 => from
0x13 =>
match low_byte {
b'\xf8'..=b'\xfd' => from - 0x0008
_ => from
}
0x14 => from
0x15 => from
0x16 => from
0x17 => from
0x18 => from
0x19 => from
0x1a => from
0x1b => from
0x1c =>
match low_byte {
b'\x80' => 0x0432U
b'\x81' => 0x0434U
b'\x82' => 0x043eU
b'\x83'..=b'\x84' => from - 0x1842
b'\x85' => 0x0442U
b'\x86' => 0x044aU
b'\x87' => 0x0463U
b'\x88' => 0xa64bU
b'\x89' => 0x1c8aU
b'\x90'..=b'\xba' => from - 0x0bc0
b'\xbd'..=b'\xbf' => from - 0x0bc0
_ => from
}
0x1d => from
0x1e =>
match low_byte {
_..=b'\x94' => from | 0x0000_0001U
b'\x96' => return Two('\u{0068}', '\u{0331}')
b'\x97' => return Two('\u{0074}', '\u{0308}')
b'\x98' => return Two('\u{0077}', '\u{030a}')
b'\x99' => return Two('\u{0079}', '\u{030a}')
b'\x9a' => return Two('\u{0061}', '\u{02be}')
b'\x9b' => 0x1e61U
b'\x9e' => return Two('\u{0073}', '\u{0073}')
b'\xa0'..=b'\xfe' => from | 0x0000_0001U
_ => from
}
0x1f =>
match low_byte {
b'\x08'..=b'\x0f' => from - 0x0008
b'\x18'..=b'\x1d' => from - 0x0008
b'\x28'..=b'\x2f' => from - 0x0008
b'\x38'..=b'\x3f' => from - 0x0008
b'\x48'..=b'\x4d' => from - 0x0008
b'\x50' => return Two('\u{03c5}', '\u{0313}')
b'\x52' => return Three('\u{03c5}', '\u{0313}', '\u{0300}')
b'\x54' => return Three('\u{03c5}', '\u{0313}', '\u{0301}')
b'\x56' => return Three('\u{03c5}', '\u{0313}', '\u{0342}')
b'\x59'..=b'\x5f' =>
if (from & 0x0000_0001U) == 1 {
from - 0x0008
} else {
from
}
b'\x68'..=b'\x6f' => from - 0x0008
b'\x80' => return Two('\u{1f00}', '\u{03b9}')
b'\x81' => return Two('\u{1f01}', '\u{03b9}')
b'\x82' => return Two('\u{1f02}', '\u{03b9}')
b'\x83' => return Two('\u{1f03}', '\u{03b9}')
b'\x84' => return Two('\u{1f04}', '\u{03b9}')
b'\x85' => return Two('\u{1f05}', '\u{03b9}')
b'\x86' => return Two('\u{1f06}', '\u{03b9}')
b'\x87' => return Two('\u{1f07}', '\u{03b9}')
b'\x88' => return Two('\u{1f00}', '\u{03b9}')
b'\x89' => return Two('\u{1f01}', '\u{03b9}')
b'\x8a' => return Two('\u{1f02}', '\u{03b9}')
b'\x8b' => return Two('\u{1f03}', '\u{03b9}')
b'\x8c' => return Two('\u{1f04}', '\u{03b9}')
b'\x8d' => return Two('\u{1f05}', '\u{03b9}')
b'\x8e' => return Two('\u{1f06}', '\u{03b9}')
b'\x8f' => return Two('\u{1f07}', '\u{03b9}')
b'\x90' => return Two('\u{1f20}', '\u{03b9}')
b'\x91' => return Two('\u{1f21}', '\u{03b9}')
b'\x92' => return Two('\u{1f22}', '\u{03b9}')
b'\x93' => return Two('\u{1f23}', '\u{03b9}')
b'\x94' => return Two('\u{1f24}', '\u{03b9}')
b'\x95' => return Two('\u{1f25}', '\u{03b9}')
b'\x96' => return Two('\u{1f26}', '\u{03b9}')
b'\x97' => return Two('\u{1f27}', '\u{03b9}')
b'\x98' => return Two('\u{1f20}', '\u{03b9}')
b'\x99' => return Two('\u{1f21}', '\u{03b9}')
b'\x9a' => return Two('\u{1f22}', '\u{03b9}')
b'\x9b' => return Two('\u{1f23}', '\u{03b9}')
b'\x9c' => return Two('\u{1f24}', '\u{03b9}')
b'\x9d' => return Two('\u{1f25}', '\u{03b9}')
b'\x9e' => return Two('\u{1f26}', '\u{03b9}')
b'\x9f' => return Two('\u{1f27}', '\u{03b9}')
b'\xa0' => return Two('\u{1f60}', '\u{03b9}')
b'\xa1' => return Two('\u{1f61}', '\u{03b9}')
b'\xa2' => return Two('\u{1f62}', '\u{03b9}')
b'\xa3' => return Two('\u{1f63}', '\u{03b9}')
b'\xa4' => return Two('\u{1f64}', '\u{03b9}')
b'\xa5' => return Two('\u{1f65}', '\u{03b9}')
b'\xa6' => return Two('\u{1f66}', '\u{03b9}')
b'\xa7' => return Two('\u{1f67}', '\u{03b9}')
b'\xa8' => return Two('\u{1f60}', '\u{03b9}')
b'\xa9' => return Two('\u{1f61}', '\u{03b9}')
b'\xaa' => return Two('\u{1f62}', '\u{03b9}')
b'\xab' => return Two('\u{1f63}', '\u{03b9}')
b'\xac' => return Two('\u{1f64}', '\u{03b9}')
b'\xad' => return Two('\u{1f65}', '\u{03b9}')
b'\xae' => return Two('\u{1f66}', '\u{03b9}')
b'\xaf' => return Two('\u{1f67}', '\u{03b9}')
b'\xb2' => return Two('\u{1f70}', '\u{03b9}')
b'\xb3' => return Two('\u{03b1}', '\u{03b9}')
b'\xb4' => return Two('\u{03ac}', '\u{03b9}')
b'\xb6' => return Two('\u{03b1}', '\u{0342}')
b'\xb7' => return Three('\u{03b1}', '\u{0342}', '\u{03b9}')
b'\xb8'..=b'\xb9' => from - 0x0008
b'\xba'..=b'\xbb' => from - 0x004a
b'\xbc' => return Two('\u{03b1}', '\u{03b9}')
b'\xbe' => 0x03b9U
b'\xc2' => return Two('\u{1f74}', '\u{03b9}')
b'\xc3' => return Two('\u{03b7}', '\u{03b9}')
b'\xc4' => return Two('\u{03ae}', '\u{03b9}')
b'\xc6' => return Two('\u{03b7}', '\u{0342}')
b'\xc7' => return Three('\u{03b7}', '\u{0342}', '\u{03b9}')
b'\xc8'..=b'\xcb' => from - 0x0056
b'\xcc' => return Two('\u{03b7}', '\u{03b9}')
b'\xd2' => return Three('\u{03b9}', '\u{0308}', '\u{0300}')
b'\xd3' => return Three('\u{03b9}', '\u{0308}', '\u{0301}')
b'\xd6' => return Two('\u{03b9}', '\u{0342}')
b'\xd7' => return Three('\u{03b9}', '\u{0308}', '\u{0342}')
b'\xd8'..=b'\xd9' => from - 0x0008
b'\xda'..=b'\xdb' => from - 0x0064
b'\xe2' => return Three('\u{03c5}', '\u{0308}', '\u{0300}')
b'\xe3' => return Three('\u{03c5}', '\u{0308}', '\u{0301}')
b'\xe4' => return Two('\u{03c1}', '\u{0313}')
b'\xe6' => return Two('\u{03c5}', '\u{0342}')
b'\xe7' => return Three('\u{03c5}', '\u{0308}', '\u{0342}')
b'\xe8'..=b'\xe9' => from - 0x0008
b'\xea'..=b'\xeb' => from - 0x0070
b'\xec' => 0x1fe5U
b'\xf2' => return Two('\u{1f7c}', '\u{03b9}')
b'\xf3' => return Two('\u{03c9}', '\u{03b9}')
b'\xf4' => return Two('\u{03ce}', '\u{03b9}')
b'\xf6' => return Two('\u{03c9}', '\u{0342}')
b'\xf7' => return Three('\u{03c9}', '\u{0342}', '\u{03b9}')
b'\xf8'..=b'\xf9' => from - 0x0080
b'\xfa'..=b'\xfb' => from - 0x007e
b'\xfc' => return Two('\u{03c9}', '\u{03b9}')
_ => from
}
0x20 => from
0x21 =>
match low_byte {
b'\x26' => 0x03c9U
b'\x2a' => 0x006bU
b'\x2b' => 0x00e5U
b'\x32' => 0x214eU
b'\x60'..=b'\x6f' => from + 0x0010
b'\x83' => 0x2184U
_ => from
}
0x22 => from
0x23 => from
0x24 =>
match low_byte {
b'\xb6'..=b'\xcf' => from + 0x001a
_ => from
}
0x25 => from
0x26 => from
0x27 => from
0x28 => from
0x29 => from
0x2a => from
0x2b => from
0x2c =>
match low_byte {
_..=b'\x2f' => from + 0x0030
b'\x60' => 0x2c61U
b'\x62' => 0x026bU
b'\x63' => 0x1d7dU
b'\x64' => 0x027dU
b'\x67'..=b'\x6b' => (from + 1) & 0xFFFF_FFFEU
b'\x6d' => 0x0251U
b'\x6e' => 0x0271U
b'\x6f' => 0x0250U
b'\x70' => 0x0252U
b'\x72' => 0x2c73U
b'\x75' => 0x2c76U
b'\x7e'..=b'\x7f' => from - 0x2a3f
b'\x80'..=b'\xe2' => from | 0x0000_0001U
b'\xeb'..=b'\xed' => (from + 1) & 0xFFFF_FFFEU
b'\xf2' => 0x2cf3U
_ => from
}
_ => from
}
One(Int::unsafe_to_char(single_char.reinterpret_as_int()))
} else {
let single_char : UInt = match from {
0xa640U..=0xa66cU => from | 0x0000_0001U
0xa680U..=0xa69aU => from | 0x0000_0001U
0xa722U..=0xa72eU => from | 0x0000_0001U
0xa732U..=0xa76eU => from | 0x0000_0001U
0xa779U..=0xa77bU => (from + 1) & 0xFFFF_FFFEU
0xa77dU => 0x1d79U
0xa77eU..=0xa786U => from | 0x0000_0001U
0xa78bU => 0xa78cU
0xa78dU => 0x0265U
0xa790U..=0xa792U => from | 0x0000_0001U
0xa796U..=0xa7a8U => from | 0x0000_0001U
0xa7aaU => 0x0266U
0xa7abU => 0x025cU
0xa7acU => 0x0261U
0xa7adU => 0x026cU
0xa7aeU => 0x026aU
0xa7b0U => 0x029eU
0xa7b1U => 0x0287U
0xa7b2U => 0x029dU
0xa7b3U => 0xab53U
0xa7b4U..=0xa7c2U => from | 0x0000_0001U
0xa7c4U => 0xa794U
0xa7c5U => 0x0282U
0xa7c6U => 0x1d8eU
0xa7c7U..=0xa7c9U => (from + 1) & 0xFFFF_FFFEU
0xa7cbU => 0x0264U
0xa7ccU => 0xa7cdU
0xa7d0U => 0xa7d1U
0xa7d6U..=0xa7daU => from | 0x0000_0001U
0xa7dcU => 0x019bU
0xa7f5U => 0xa7f6U
0xab70U..=0xabbfU => from - 0x97d0
0xfb00U => return Two('\u{0066}', '\u{0066}')
0xfb01U => return Two('\u{0066}', '\u{0069}')
0xfb02U => return Two('\u{0066}', '\u{006c}')
0xfb03U => return Three('\u{0066}', '\u{0066}', '\u{0069}')
0xfb04U => return Three('\u{0066}', '\u{0066}', '\u{006c}')
0xfb05U => return Two('\u{0073}', '\u{0074}')
0xfb06U => return Two('\u{0073}', '\u{0074}')
0xfb13U => return Two('\u{0574}', '\u{0576}')
0xfb14U => return Two('\u{0574}', '\u{0565}')
0xfb15U => return Two('\u{0574}', '\u{056b}')
0xfb16U => return Two('\u{057e}', '\u{0576}')
0xfb17U => return Two('\u{0574}', '\u{056d}')
0xff21U..=0xff3aU => from + 0x0020
0x10400U..=0x10427U => from + 0x0028
0x104b0U..=0x104d3U => from + 0x0028
0x10570U..=0x1057aU => from + 0x0027
0x1057cU..=0x1058aU => from + 0x0027
0x1058cU..=0x10592U => from + 0x0027
0x10594U..=0x10595U => from + 0x0027
0x10c80U..=0x10cb2U => from + 0x0040
0x10d50U..=0x10d65U => from + 0x0020
0x118a0U..=0x118bfU => from + 0x0020
0x16e40U..=0x16e5fU => from + 0x0020
0x1e900U..=0x1e921U => from + 0x0022
_ => from
}
One(Int::unsafe_to_char(single_char.reinterpret_as_int()))
}
}
///|
test "lookup_consistency" {
fn lookup_naive(orig : Char) -> Fold {
let single_char = match orig.to_uint() {
0x0041U => 0x0061U
0x0042U => 0x0062U
0x0043U => 0x0063U
0x0044U => 0x0064U
0x0045U => 0x0065U
0x0046U => 0x0066U
0x0047U => 0x0067U
0x0048U => 0x0068U
0x0049U => 0x0069U
0x004aU => 0x006aU
0x004bU => 0x006bU
0x004cU => 0x006cU
0x004dU => 0x006dU
0x004eU => 0x006eU
0x004fU => 0x006fU
0x0050U => 0x0070U
0x0051U => 0x0071U
0x0052U => 0x0072U
0x0053U => 0x0073U
0x0054U => 0x0074U
0x0055U => 0x0075U
0x0056U => 0x0076U
0x0057U => 0x0077U
0x0058U => 0x0078U
0x0059U => 0x0079U
0x005aU => 0x007aU
0x00b5U => 0x03bcU
0x00c0U => 0x00e0U
0x00c1U => 0x00e1U
0x00c2U => 0x00e2U
0x00c3U => 0x00e3U
0x00c4U => 0x00e4U
0x00c5U => 0x00e5U
0x00c6U => 0x00e6U
0x00c7U => 0x00e7U
0x00c8U => 0x00e8U
0x00c9U => 0x00e9U
0x00caU => 0x00eaU
0x00cbU => 0x00ebU
0x00ccU => 0x00ecU
0x00cdU => 0x00edU
0x00ceU => 0x00eeU
0x00cfU => 0x00efU
0x00d0U => 0x00f0U
0x00d1U => 0x00f1U
0x00d2U => 0x00f2U
0x00d3U => 0x00f3U
0x00d4U => 0x00f4U
0x00d5U => 0x00f5U
0x00d6U => 0x00f6U
0x00d8U => 0x00f8U
0x00d9U => 0x00f9U
0x00daU => 0x00faU
0x00dbU => 0x00fbU
0x00dcU => 0x00fcU
0x00ddU => 0x00fdU
0x00deU => 0x00feU
0x00dfU => return Two('\u{0073}', '\u{0073}')
0x0100U => 0x0101U
0x0102U => 0x0103U
0x0104U => 0x0105U
0x0106U => 0x0107U
0x0108U => 0x0109U
0x010aU => 0x010bU
0x010cU => 0x010dU
0x010eU => 0x010fU
0x0110U => 0x0111U
0x0112U => 0x0113U
0x0114U => 0x0115U
0x0116U => 0x0117U
0x0118U => 0x0119U
0x011aU => 0x011bU
0x011cU => 0x011dU
0x011eU => 0x011fU
0x0120U => 0x0121U
0x0122U => 0x0123U
0x0124U => 0x0125U
0x0126U => 0x0127U
0x0128U => 0x0129U
0x012aU => 0x012bU
0x012cU => 0x012dU
0x012eU => 0x012fU
0x0130U => return Two('\u{0069}', '\u{0307}')
0x0132U => 0x0133U
0x0134U => 0x0135U
0x0136U => 0x0137U
0x0139U => 0x013aU
0x013bU => 0x013cU
0x013dU => 0x013eU
0x013fU => 0x0140U
0x0141U => 0x0142U
0x0143U => 0x0144U
0x0145U => 0x0146U
0x0147U => 0x0148U
0x0149U => return Two('\u{02bc}', '\u{006e}')
0x014aU => 0x014bU
0x014cU => 0x014dU
0x014eU => 0x014fU
0x0150U => 0x0151U
0x0152U => 0x0153U
0x0154U => 0x0155U
0x0156U => 0x0157U
0x0158U => 0x0159U
0x015aU => 0x015bU
0x015cU => 0x015dU
0x015eU => 0x015fU
0x0160U => 0x0161U
0x0162U => 0x0163U
0x0164U => 0x0165U
0x0166U => 0x0167U
0x0168U => 0x0169U
0x016aU => 0x016bU
0x016cU => 0x016dU
0x016eU => 0x016fU
0x0170U => 0x0171U
0x0172U => 0x0173U
0x0174U => 0x0175U
0x0176U => 0x0177U
0x0178U => 0x00ffU
0x0179U => 0x017aU
0x017bU => 0x017cU
0x017dU => 0x017eU
0x017fU => 0x0073U
0x0181U => 0x0253U
0x0182U => 0x0183U
0x0184U => 0x0185U
0x0186U => 0x0254U
0x0187U => 0x0188U
0x0189U => 0x0256U
0x018aU => 0x0257U
0x018bU => 0x018cU
0x018eU => 0x01ddU
0x018fU => 0x0259U
0x0190U => 0x025bU
0x0191U => 0x0192U
0x0193U => 0x0260U
0x0194U => 0x0263U
0x0196U => 0x0269U
0x0197U => 0x0268U
0x0198U => 0x0199U
0x019cU => 0x026fU
0x019dU => 0x0272U
0x019fU => 0x0275U
0x01a0U => 0x01a1U
0x01a2U => 0x01a3U
0x01a4U => 0x01a5U
0x01a6U => 0x0280U
0x01a7U => 0x01a8U
0x01a9U => 0x0283U
0x01acU => 0x01adU
0x01aeU => 0x0288U
0x01afU => 0x01b0U
0x01b1U => 0x028aU
0x01b2U => 0x028bU
0x01b3U => 0x01b4U
0x01b5U => 0x01b6U
0x01b7U => 0x0292U
0x01b8U => 0x01b9U
0x01bcU => 0x01bdU
0x01c4U => 0x01c6U
0x01c5U => 0x01c6U
0x01c7U => 0x01c9U
0x01c8U => 0x01c9U
0x01caU => 0x01ccU
0x01cbU => 0x01ccU
0x01cdU => 0x01ceU
0x01cfU => 0x01d0U
0x01d1U => 0x01d2U
0x01d3U => 0x01d4U
0x01d5U => 0x01d6U
0x01d7U => 0x01d8U
0x01d9U => 0x01daU
0x01dbU => 0x01dcU
0x01deU => 0x01dfU
0x01e0U => 0x01e1U
0x01e2U => 0x01e3U
0x01e4U => 0x01e5U
0x01e6U => 0x01e7U
0x01e8U => 0x01e9U
0x01eaU => 0x01ebU
0x01ecU => 0x01edU
0x01eeU => 0x01efU
0x01f0U => return Two('\u{006a}', '\u{030c}')
0x01f1U => 0x01f3U
0x01f2U => 0x01f3U
0x01f4U => 0x01f5U
0x01f6U => 0x0195U
0x01f7U => 0x01bfU
0x01f8U => 0x01f9U
0x01faU => 0x01fbU
0x01fcU => 0x01fdU
0x01feU => 0x01ffU
0x0200U => 0x0201U
0x0202U => 0x0203U
0x0204U => 0x0205U
0x0206U => 0x0207U
0x0208U => 0x0209U
0x020aU => 0x020bU
0x020cU => 0x020dU
0x020eU => 0x020fU
0x0210U => 0x0211U
0x0212U => 0x0213U
0x0214U => 0x0215U
0x0216U => 0x0217U
0x0218U => 0x0219U
0x021aU => 0x021bU
0x021cU => 0x021dU
0x021eU => 0x021fU
0x0220U => 0x019eU
0x0222U => 0x0223U
0x0224U => 0x0225U
0x0226U => 0x0227U
0x0228U => 0x0229U
0x022aU => 0x022bU
0x022cU => 0x022dU
0x022eU => 0x022fU
0x0230U => 0x0231U
0x0232U => 0x0233U
0x023aU => 0x2c65U
0x023bU => 0x023cU
0x023dU => 0x019aU
0x023eU => 0x2c66U
0x0241U => 0x0242U
0x0243U => 0x0180U
0x0244U => 0x0289U
0x0245U => 0x028cU
0x0246U => 0x0247U
0x0248U => 0x0249U
0x024aU => 0x024bU
0x024cU => 0x024dU
0x024eU => 0x024fU
0x0345U => 0x03b9U
0x0370U => 0x0371U
0x0372U => 0x0373U
0x0376U => 0x0377U
0x037fU => 0x03f3U
0x0386U => 0x03acU
0x0388U => 0x03adU
0x0389U => 0x03aeU
0x038aU => 0x03afU
0x038cU => 0x03ccU
0x038eU => 0x03cdU
0x038fU => 0x03ceU
0x0390U => return Three('\u{03b9}', '\u{0308}', '\u{0301}')
0x0391U => 0x03b1U
0x0392U => 0x03b2U
0x0393U => 0x03b3U
0x0394U => 0x03b4U
0x0395U => 0x03b5U
0x0396U => 0x03b6U
0x0397U => 0x03b7U
0x0398U => 0x03b8U
0x0399U => 0x03b9U
0x039aU => 0x03baU
0x039bU => 0x03bbU
0x039cU => 0x03bcU
0x039dU => 0x03bdU
0x039eU => 0x03beU
0x039fU => 0x03bfU
0x03a0U => 0x03c0U
0x03a1U => 0x03c1U
0x03a3U => 0x03c3U
0x03a4U => 0x03c4U
0x03a5U => 0x03c5U
0x03a6U => 0x03c6U
0x03a7U => 0x03c7U
0x03a8U => 0x03c8U
0x03a9U => 0x03c9U
0x03aaU => 0x03caU
0x03abU => 0x03cbU
0x03b0U => return Three('\u{03c5}', '\u{0308}', '\u{0301}')
0x03c2U => 0x03c3U
0x03cfU => 0x03d7U
0x03d0U => 0x03b2U
0x03d1U => 0x03b8U
0x03d5U => 0x03c6U
0x03d6U => 0x03c0U
0x03d8U => 0x03d9U
0x03daU => 0x03dbU
0x03dcU => 0x03ddU
0x03deU => 0x03dfU
0x03e0U => 0x03e1U
0x03e2U => 0x03e3U
0x03e4U => 0x03e5U
0x03e6U => 0x03e7U
0x03e8U => 0x03e9U
0x03eaU => 0x03ebU
0x03ecU => 0x03edU
0x03eeU => 0x03efU
0x03f0U => 0x03baU
0x03f1U => 0x03c1U
0x03f4U => 0x03b8U
0x03f5U => 0x03b5U
0x03f7U => 0x03f8U
0x03f9U => 0x03f2U
0x03faU => 0x03fbU
0x03fdU => 0x037bU
0x03feU => 0x037cU
0x03ffU => 0x037dU
0x0400U => 0x0450U
0x0401U => 0x0451U
0x0402U => 0x0452U
0x0403U => 0x0453U
0x0404U => 0x0454U
0x0405U => 0x0455U
0x0406U => 0x0456U
0x0407U => 0x0457U
0x0408U => 0x0458U
0x0409U => 0x0459U
0x040aU => 0x045aU
0x040bU => 0x045bU
0x040cU => 0x045cU
0x040dU => 0x045dU
0x040eU => 0x045eU
0x040fU => 0x045fU
0x0410U => 0x0430U
0x0411U => 0x0431U
0x0412U => 0x0432U
0x0413U => 0x0433U
0x0414U => 0x0434U
0x0415U => 0x0435U
0x0416U => 0x0436U
0x0417U => 0x0437U
0x0418U => 0x0438U
0x0419U => 0x0439U
0x041aU => 0x043aU
0x041bU => 0x043bU
0x041cU => 0x043cU
0x041dU => 0x043dU
0x041eU => 0x043eU
0x041fU => 0x043fU
0x0420U => 0x0440U
0x0421U => 0x0441U
0x0422U => 0x0442U
0x0423U => 0x0443U
0x0424U => 0x0444U
0x0425U => 0x0445U
0x0426U => 0x0446U
0x0427U => 0x0447U
0x0428U => 0x0448U
0x0429U => 0x0449U
0x042aU => 0x044aU
0x042bU => 0x044bU
0x042cU => 0x044cU
0x042dU => 0x044dU
0x042eU => 0x044eU
0x042fU => 0x044fU
0x0460U => 0x0461U
0x0462U => 0x0463U
0x0464U => 0x0465U
0x0466U => 0x0467U
0x0468U => 0x0469U
0x046aU => 0x046bU
0x046cU => 0x046dU
0x046eU => 0x046fU
0x0470U => 0x0471U
0x0472U => 0x0473U
0x0474U => 0x0475U
0x0476U => 0x0477U
0x0478U => 0x0479U
0x047aU => 0x047bU
0x047cU => 0x047dU
0x047eU => 0x047fU
0x0480U => 0x0481U
0x048aU => 0x048bU
0x048cU => 0x048dU
0x048eU => 0x048fU
0x0490U => 0x0491U
0x0492U => 0x0493U
0x0494U => 0x0495U
0x0496U => 0x0497U
0x0498U => 0x0499U
0x049aU => 0x049bU
0x049cU => 0x049dU
0x049eU => 0x049fU
0x04a0U => 0x04a1U
0x04a2U => 0x04a3U
0x04a4U => 0x04a5U
0x04a6U => 0x04a7U
0x04a8U => 0x04a9U
0x04aaU => 0x04abU
0x04acU => 0x04adU
0x04aeU => 0x04afU
0x04b0U => 0x04b1U
0x04b2U => 0x04b3U
0x04b4U => 0x04b5U
0x04b6U => 0x04b7U
0x04b8U => 0x04b9U
0x04baU => 0x04bbU
0x04bcU => 0x04bdU
0x04beU => 0x04bfU
0x04c0U => 0x04cfU
0x04c1U => 0x04c2U
0x04c3U => 0x04c4U
0x04c5U => 0x04c6U
0x04c7U => 0x04c8U
0x04c9U => 0x04caU
0x04cbU => 0x04ccU
0x04cdU => 0x04ceU
0x04d0U => 0x04d1U
0x04d2U => 0x04d3U
0x04d4U => 0x04d5U
0x04d6U => 0x04d7U
0x04d8U => 0x04d9U
0x04daU => 0x04dbU
0x04dcU => 0x04ddU
0x04deU => 0x04dfU
0x04e0U => 0x04e1U
0x04e2U => 0x04e3U
0x04e4U => 0x04e5U
0x04e6U => 0x04e7U
0x04e8U => 0x04e9U
0x04eaU => 0x04ebU
0x04ecU => 0x04edU
0x04eeU => 0x04efU
0x04f0U => 0x04f1U
0x04f2U => 0x04f3U
0x04f4U => 0x04f5U
0x04f6U => 0x04f7U
0x04f8U => 0x04f9U
0x04faU => 0x04fbU
0x04fcU => 0x04fdU
0x04feU => 0x04ffU
0x0500U => 0x0501U
0x0502U => 0x0503U
0x0504U => 0x0505U
0x0506U => 0x0507U
0x0508U => 0x0509U
0x050aU => 0x050bU
0x050cU => 0x050dU
0x050eU => 0x050fU
0x0510U => 0x0511U
0x0512U => 0x0513U
0x0514U => 0x0515U
0x0516U => 0x0517U
0x0518U => 0x0519U
0x051aU => 0x051bU
0x051cU => 0x051dU
0x051eU => 0x051fU
0x0520U => 0x0521U
0x0522U => 0x0523U
0x0524U => 0x0525U
0x0526U => 0x0527U
0x0528U => 0x0529U
0x052aU => 0x052bU
0x052cU => 0x052dU
0x052eU => 0x052fU
0x0531U => 0x0561U
0x0532U => 0x0562U
0x0533U => 0x0563U
0x0534U => 0x0564U
0x0535U => 0x0565U
0x0536U => 0x0566U
0x0537U => 0x0567U
0x0538U => 0x0568U
0x0539U => 0x0569U
0x053aU => 0x056aU
0x053bU => 0x056bU
0x053cU => 0x056cU
0x053dU => 0x056dU
0x053eU => 0x056eU
0x053fU => 0x056fU
0x0540U => 0x0570U
0x0541U => 0x0571U
0x0542U => 0x0572U
0x0543U => 0x0573U
0x0544U => 0x0574U
0x0545U => 0x0575U
0x0546U => 0x0576U
0x0547U => 0x0577U
0x0548U => 0x0578U
0x0549U => 0x0579U
0x054aU => 0x057aU
0x054bU => 0x057bU
0x054cU => 0x057cU
0x054dU => 0x057dU
0x054eU => 0x057eU
0x054fU => 0x057fU
0x0550U => 0x0580U
0x0551U => 0x0581U
0x0552U => 0x0582U
0x0553U => 0x0583U
0x0554U => 0x0584U
0x0555U => 0x0585U
0x0556U => 0x0586U
0x0587U => return Two('\u{0565}', '\u{0582}')
0x10a0U => 0x2d00U
0x10a1U => 0x2d01U
0x10a2U => 0x2d02U
0x10a3U => 0x2d03U
0x10a4U => 0x2d04U
0x10a5U => 0x2d05U
0x10a6U => 0x2d06U
0x10a7U => 0x2d07U
0x10a8U => 0x2d08U
0x10a9U => 0x2d09U
0x10aaU => 0x2d0aU
0x10abU => 0x2d0bU
0x10acU => 0x2d0cU
0x10adU => 0x2d0dU
0x10aeU => 0x2d0eU
0x10afU => 0x2d0fU
0x10b0U => 0x2d10U
0x10b1U => 0x2d11U
0x10b2U => 0x2d12U
0x10b3U => 0x2d13U
0x10b4U => 0x2d14U
0x10b5U => 0x2d15U
0x10b6U => 0x2d16U
0x10b7U => 0x2d17U
0x10b8U => 0x2d18U
0x10b9U => 0x2d19U
0x10baU => 0x2d1aU
0x10bbU => 0x2d1bU
0x10bcU => 0x2d1cU
0x10bdU => 0x2d1dU
0x10beU => 0x2d1eU
0x10bfU => 0x2d1fU
0x10c0U => 0x2d20U
0x10c1U => 0x2d21U
0x10c2U => 0x2d22U
0x10c3U => 0x2d23U
0x10c4U => 0x2d24U
0x10c5U => 0x2d25U
0x10c7U => 0x2d27U
0x10cdU => 0x2d2dU
0x13f8U => 0x13f0U
0x13f9U => 0x13f1U
0x13faU => 0x13f2U
0x13fbU => 0x13f3U
0x13fcU => 0x13f4U
0x13fdU => 0x13f5U
0x1c80U => 0x0432U
0x1c81U => 0x0434U
0x1c82U => 0x043eU
0x1c83U => 0x0441U
0x1c84U => 0x0442U
0x1c85U => 0x0442U
0x1c86U => 0x044aU
0x1c87U => 0x0463U
0x1c88U => 0xa64bU
0x1c89U => 0x1c8aU
0x1c90U => 0x10d0U
0x1c91U => 0x10d1U
0x1c92U => 0x10d2U
0x1c93U => 0x10d3U
0x1c94U => 0x10d4U
0x1c95U => 0x10d5U
0x1c96U => 0x10d6U
0x1c97U => 0x10d7U
0x1c98U => 0x10d8U
0x1c99U => 0x10d9U
0x1c9aU => 0x10daU
0x1c9bU => 0x10dbU
0x1c9cU => 0x10dcU
0x1c9dU => 0x10ddU
0x1c9eU => 0x10deU
0x1c9fU => 0x10dfU
0x1ca0U => 0x10e0U
0x1ca1U => 0x10e1U
0x1ca2U => 0x10e2U
0x1ca3U => 0x10e3U
0x1ca4U => 0x10e4U
0x1ca5U => 0x10e5U
0x1ca6U => 0x10e6U
0x1ca7U => 0x10e7U
0x1ca8U => 0x10e8U
0x1ca9U => 0x10e9U
0x1caaU => 0x10eaU
0x1cabU => 0x10ebU
0x1cacU => 0x10ecU
0x1cadU => 0x10edU
0x1caeU => 0x10eeU
0x1cafU => 0x10efU
0x1cb0U => 0x10f0U
0x1cb1U => 0x10f1U
0x1cb2U => 0x10f2U
0x1cb3U => 0x10f3U
0x1cb4U => 0x10f4U
0x1cb5U => 0x10f5U
0x1cb6U => 0x10f6U
0x1cb7U => 0x10f7U
0x1cb8U => 0x10f8U
0x1cb9U => 0x10f9U
0x1cbaU => 0x10faU
0x1cbdU => 0x10fdU
0x1cbeU => 0x10feU
0x1cbfU => 0x10ffU
0x1e00U => 0x1e01U
0x1e02U => 0x1e03U
0x1e04U => 0x1e05U
0x1e06U => 0x1e07U
0x1e08U => 0x1e09U
0x1e0aU => 0x1e0bU
0x1e0cU => 0x1e0dU
0x1e0eU => 0x1e0fU
0x1e10U => 0x1e11U
0x1e12U => 0x1e13U
0x1e14U => 0x1e15U
0x1e16U => 0x1e17U
0x1e18U => 0x1e19U
0x1e1aU => 0x1e1bU
0x1e1cU => 0x1e1dU
0x1e1eU => 0x1e1fU
0x1e20U => 0x1e21U
0x1e22U => 0x1e23U
0x1e24U => 0x1e25U
0x1e26U => 0x1e27U
0x1e28U => 0x1e29U
0x1e2aU => 0x1e2bU
0x1e2cU => 0x1e2dU
0x1e2eU => 0x1e2fU
0x1e30U => 0x1e31U
0x1e32U => 0x1e33U
0x1e34U => 0x1e35U
0x1e36U => 0x1e37U
0x1e38U => 0x1e39U
0x1e3aU => 0x1e3bU
0x1e3cU => 0x1e3dU
0x1e3eU => 0x1e3fU
0x1e40U => 0x1e41U
0x1e42U => 0x1e43U
0x1e44U => 0x1e45U
0x1e46U => 0x1e47U
0x1e48U => 0x1e49U
0x1e4aU => 0x1e4bU
0x1e4cU => 0x1e4dU
0x1e4eU => 0x1e4fU
0x1e50U => 0x1e51U
0x1e52U => 0x1e53U
0x1e54U => 0x1e55U
0x1e56U => 0x1e57U
0x1e58U => 0x1e59U
0x1e5aU => 0x1e5bU
0x1e5cU => 0x1e5dU
0x1e5eU => 0x1e5fU
0x1e60U => 0x1e61U
0x1e62U => 0x1e63U
0x1e64U => 0x1e65U
0x1e66U => 0x1e67U
0x1e68U => 0x1e69U
0x1e6aU => 0x1e6bU
0x1e6cU => 0x1e6dU
0x1e6eU => 0x1e6fU
0x1e70U => 0x1e71U
0x1e72U => 0x1e73U
0x1e74U => 0x1e75U
0x1e76U => 0x1e77U
0x1e78U => 0x1e79U
0x1e7aU => 0x1e7bU
0x1e7cU => 0x1e7dU
0x1e7eU => 0x1e7fU
0x1e80U => 0x1e81U
0x1e82U => 0x1e83U
0x1e84U => 0x1e85U
0x1e86U => 0x1e87U
0x1e88U => 0x1e89U
0x1e8aU => 0x1e8bU
0x1e8cU => 0x1e8dU
0x1e8eU => 0x1e8fU
0x1e90U => 0x1e91U
0x1e92U => 0x1e93U
0x1e94U => 0x1e95U
0x1e96U => return Two('\u{0068}', '\u{0331}')
0x1e97U => return Two('\u{0074}', '\u{0308}')
0x1e98U => return Two('\u{0077}', '\u{030a}')
0x1e99U => return Two('\u{0079}', '\u{030a}')
0x1e9aU => return Two('\u{0061}', '\u{02be}')
0x1e9bU => 0x1e61U
0x1e9eU => return Two('\u{0073}', '\u{0073}')
0x1ea0U => 0x1ea1U
0x1ea2U => 0x1ea3U
0x1ea4U => 0x1ea5U
0x1ea6U => 0x1ea7U
0x1ea8U => 0x1ea9U
0x1eaaU => 0x1eabU
0x1eacU => 0x1eadU
0x1eaeU => 0x1eafU
0x1eb0U => 0x1eb1U
0x1eb2U => 0x1eb3U
0x1eb4U => 0x1eb5U
0x1eb6U => 0x1eb7U
0x1eb8U => 0x1eb9U
0x1ebaU => 0x1ebbU
0x1ebcU => 0x1ebdU
0x1ebeU => 0x1ebfU
0x1ec0U => 0x1ec1U
0x1ec2U => 0x1ec3U
0x1ec4U => 0x1ec5U
0x1ec6U => 0x1ec7U
0x1ec8U => 0x1ec9U
0x1ecaU => 0x1ecbU
0x1eccU => 0x1ecdU
0x1eceU => 0x1ecfU
0x1ed0U => 0x1ed1U
0x1ed2U => 0x1ed3U
0x1ed4U => 0x1ed5U
0x1ed6U => 0x1ed7U
0x1ed8U => 0x1ed9U
0x1edaU => 0x1edbU
0x1edcU => 0x1eddU
0x1edeU => 0x1edfU
0x1ee0U => 0x1ee1U
0x1ee2U => 0x1ee3U
0x1ee4U => 0x1ee5U
0x1ee6U => 0x1ee7U
0x1ee8U => 0x1ee9U
0x1eeaU => 0x1eebU
0x1eecU => 0x1eedU
0x1eeeU => 0x1eefU
0x1ef0U => 0x1ef1U
0x1ef2U => 0x1ef3U
0x1ef4U => 0x1ef5U
0x1ef6U => 0x1ef7U
0x1ef8U => 0x1ef9U
0x1efaU => 0x1efbU
0x1efcU => 0x1efdU
0x1efeU => 0x1effU
0x1f08U => 0x1f00U
0x1f09U => 0x1f01U
0x1f0aU => 0x1f02U
0x1f0bU => 0x1f03U
0x1f0cU => 0x1f04U
0x1f0dU => 0x1f05U
0x1f0eU => 0x1f06U
0x1f0fU => 0x1f07U
0x1f18U => 0x1f10U
0x1f19U => 0x1f11U
0x1f1aU => 0x1f12U
0x1f1bU => 0x1f13U
0x1f1cU => 0x1f14U
0x1f1dU => 0x1f15U
0x1f28U => 0x1f20U
0x1f29U => 0x1f21U
0x1f2aU => 0x1f22U
0x1f2bU => 0x1f23U
0x1f2cU => 0x1f24U
0x1f2dU => 0x1f25U
0x1f2eU => 0x1f26U
0x1f2fU => 0x1f27U
0x1f38U => 0x1f30U
0x1f39U => 0x1f31U
0x1f3aU => 0x1f32U
0x1f3bU => 0x1f33U
0x1f3cU => 0x1f34U
0x1f3dU => 0x1f35U
0x1f3eU => 0x1f36U
0x1f3fU => 0x1f37U
0x1f48U => 0x1f40U
0x1f49U => 0x1f41U
0x1f4aU => 0x1f42U
0x1f4bU => 0x1f43U
0x1f4cU => 0x1f44U
0x1f4dU => 0x1f45U
0x1f50U => return Two('\u{03c5}', '\u{0313}')
0x1f52U => return Three('\u{03c5}', '\u{0313}', '\u{0300}')
0x1f54U => return Three('\u{03c5}', '\u{0313}', '\u{0301}')
0x1f56U => return Three('\u{03c5}', '\u{0313}', '\u{0342}')
0x1f59U => 0x1f51U
0x1f5bU => 0x1f53U
0x1f5dU => 0x1f55U
0x1f5fU => 0x1f57U
0x1f68U => 0x1f60U
0x1f69U => 0x1f61U
0x1f6aU => 0x1f62U
0x1f6bU => 0x1f63U
0x1f6cU => 0x1f64U
0x1f6dU => 0x1f65U
0x1f6eU => 0x1f66U
0x1f6fU => 0x1f67U
0x1f80U => return Two('\u{1f00}', '\u{03b9}')
0x1f81U => return Two('\u{1f01}', '\u{03b9}')
0x1f82U => return Two('\u{1f02}', '\u{03b9}')
0x1f83U => return Two('\u{1f03}', '\u{03b9}')
0x1f84U => return Two('\u{1f04}', '\u{03b9}')
0x1f85U => return Two('\u{1f05}', '\u{03b9}')
0x1f86U => return Two('\u{1f06}', '\u{03b9}')
0x1f87U => return Two('\u{1f07}', '\u{03b9}')
0x1f88U => return Two('\u{1f00}', '\u{03b9}')
0x1f89U => return Two('\u{1f01}', '\u{03b9}')
0x1f8aU => return Two('\u{1f02}', '\u{03b9}')
0x1f8bU => return Two('\u{1f03}', '\u{03b9}')
0x1f8cU => return Two('\u{1f04}', '\u{03b9}')
0x1f8dU => return Two('\u{1f05}', '\u{03b9}')
0x1f8eU => return Two('\u{1f06}', '\u{03b9}')
0x1f8fU => return Two('\u{1f07}', '\u{03b9}')
0x1f90U => return Two('\u{1f20}', '\u{03b9}')
0x1f91U => return Two('\u{1f21}', '\u{03b9}')
0x1f92U => return Two('\u{1f22}', '\u{03b9}')
0x1f93U => return Two('\u{1f23}', '\u{03b9}')
0x1f94U => return Two('\u{1f24}', '\u{03b9}')
0x1f95U => return Two('\u{1f25}', '\u{03b9}')
0x1f96U => return Two('\u{1f26}', '\u{03b9}')
0x1f97U => return Two('\u{1f27}', '\u{03b9}')
0x1f98U => return Two('\u{1f20}', '\u{03b9}')
0x1f99U => return Two('\u{1f21}', '\u{03b9}')
0x1f9aU => return Two('\u{1f22}', '\u{03b9}')
0x1f9bU => return Two('\u{1f23}', '\u{03b9}')
0x1f9cU => return Two('\u{1f24}', '\u{03b9}')
0x1f9dU => return Two('\u{1f25}', '\u{03b9}')
0x1f9eU => return Two('\u{1f26}', '\u{03b9}')
0x1f9fU => return Two('\u{1f27}', '\u{03b9}')
0x1fa0U => return Two('\u{1f60}', '\u{03b9}')
0x1fa1U => return Two('\u{1f61}', '\u{03b9}')
0x1fa2U => return Two('\u{1f62}', '\u{03b9}')
0x1fa3U => return Two('\u{1f63}', '\u{03b9}')
0x1fa4U => return Two('\u{1f64}', '\u{03b9}')
0x1fa5U => return Two('\u{1f65}', '\u{03b9}')
0x1fa6U => return Two('\u{1f66}', '\u{03b9}')
0x1fa7U => return Two('\u{1f67}', '\u{03b9}')
0x1fa8U => return Two('\u{1f60}', '\u{03b9}')
0x1fa9U => return Two('\u{1f61}', '\u{03b9}')
0x1faaU => return Two('\u{1f62}', '\u{03b9}')
0x1fabU => return Two('\u{1f63}', '\u{03b9}')
0x1facU => return Two('\u{1f64}', '\u{03b9}')
0x1fadU => return Two('\u{1f65}', '\u{03b9}')
0x1faeU => return Two('\u{1f66}', '\u{03b9}')
0x1fafU => return Two('\u{1f67}', '\u{03b9}')
0x1fb2U => return Two('\u{1f70}', '\u{03b9}')
0x1fb3U => return Two('\u{03b1}', '\u{03b9}')
0x1fb4U => return Two('\u{03ac}', '\u{03b9}')
0x1fb6U => return Two('\u{03b1}', '\u{0342}')
0x1fb7U => return Three('\u{03b1}', '\u{0342}', '\u{03b9}')
0x1fb8U => 0x1fb0U
0x1fb9U => 0x1fb1U
0x1fbaU => 0x1f70U
0x1fbbU => 0x1f71U
0x1fbcU => return Two('\u{03b1}', '\u{03b9}')
0x1fbeU => 0x03b9U
0x1fc2U => return Two('\u{1f74}', '\u{03b9}')
0x1fc3U => return Two('\u{03b7}', '\u{03b9}')
0x1fc4U => return Two('\u{03ae}', '\u{03b9}')
0x1fc6U => return Two('\u{03b7}', '\u{0342}')
0x1fc7U => return Three('\u{03b7}', '\u{0342}', '\u{03b9}')
0x1fc8U => 0x1f72U
0x1fc9U => 0x1f73U
0x1fcaU => 0x1f74U
0x1fcbU => 0x1f75U
0x1fccU => return Two('\u{03b7}', '\u{03b9}')
0x1fd2U => return Three('\u{03b9}', '\u{0308}', '\u{0300}')
0x1fd3U => return Three('\u{03b9}', '\u{0308}', '\u{0301}')
0x1fd6U => return Two('\u{03b9}', '\u{0342}')
0x1fd7U => return Three('\u{03b9}', '\u{0308}', '\u{0342}')
0x1fd8U => 0x1fd0U
0x1fd9U => 0x1fd1U
0x1fdaU => 0x1f76U
0x1fdbU => 0x1f77U
0x1fe2U => return Three('\u{03c5}', '\u{0308}', '\u{0300}')
0x1fe3U => return Three('\u{03c5}', '\u{0308}', '\u{0301}')
0x1fe4U => return Two('\u{03c1}', '\u{0313}')
0x1fe6U => return Two('\u{03c5}', '\u{0342}')
0x1fe7U => return Three('\u{03c5}', '\u{0308}', '\u{0342}')
0x1fe8U => 0x1fe0U
0x1fe9U => 0x1fe1U
0x1feaU => 0x1f7aU
0x1febU => 0x1f7bU
0x1fecU => 0x1fe5U
0x1ff2U => return Two('\u{1f7c}', '\u{03b9}')
0x1ff3U => return Two('\u{03c9}', '\u{03b9}')
0x1ff4U => return Two('\u{03ce}', '\u{03b9}')
0x1ff6U => return Two('\u{03c9}', '\u{0342}')
0x1ff7U => return Three('\u{03c9}', '\u{0342}', '\u{03b9}')
0x1ff8U => 0x1f78U
0x1ff9U => 0x1f79U
0x1ffaU => 0x1f7cU
0x1ffbU => 0x1f7dU
0x1ffcU => return Two('\u{03c9}', '\u{03b9}')
0x2126U => 0x03c9U
0x212aU => 0x006bU
0x212bU => 0x00e5U
0x2132U => 0x214eU
0x2160U => 0x2170U
0x2161U => 0x2171U
0x2162U => 0x2172U
0x2163U => 0x2173U
0x2164U => 0x2174U
0x2165U => 0x2175U
0x2166U => 0x2176U
0x2167U => 0x2177U
0x2168U => 0x2178U
0x2169U => 0x2179U
0x216aU => 0x217aU
0x216bU => 0x217bU
0x216cU => 0x217cU
0x216dU => 0x217dU
0x216eU => 0x217eU
0x216fU => 0x217fU
0x2183U => 0x2184U
0x24b6U => 0x24d0U
0x24b7U => 0x24d1U
0x24b8U => 0x24d2U
0x24b9U => 0x24d3U
0x24baU => 0x24d4U
0x24bbU => 0x24d5U
0x24bcU => 0x24d6U
0x24bdU => 0x24d7U
0x24beU => 0x24d8U
0x24bfU => 0x24d9U
0x24c0U => 0x24daU
0x24c1U => 0x24dbU
0x24c2U => 0x24dcU
0x24c3U => 0x24ddU
0x24c4U => 0x24deU
0x24c5U => 0x24dfU
0x24c6U => 0x24e0U
0x24c7U => 0x24e1U
0x24c8U => 0x24e2U
0x24c9U => 0x24e3U
0x24caU => 0x24e4U
0x24cbU => 0x24e5U
0x24ccU => 0x24e6U
0x24cdU => 0x24e7U
0x24ceU => 0x24e8U
0x24cfU => 0x24e9U
0x2c00U => 0x2c30U
0x2c01U => 0x2c31U
0x2c02U => 0x2c32U
0x2c03U => 0x2c33U
0x2c04U => 0x2c34U
0x2c05U => 0x2c35U
0x2c06U => 0x2c36U
0x2c07U => 0x2c37U
0x2c08U => 0x2c38U
0x2c09U => 0x2c39U
0x2c0aU => 0x2c3aU
0x2c0bU => 0x2c3bU
0x2c0cU => 0x2c3cU
0x2c0dU => 0x2c3dU
0x2c0eU => 0x2c3eU
0x2c0fU => 0x2c3fU
0x2c10U => 0x2c40U
0x2c11U => 0x2c41U
0x2c12U => 0x2c42U
0x2c13U => 0x2c43U
0x2c14U => 0x2c44U
0x2c15U => 0x2c45U
0x2c16U => 0x2c46U
0x2c17U => 0x2c47U
0x2c18U => 0x2c48U
0x2c19U => 0x2c49U
0x2c1aU => 0x2c4aU
0x2c1bU => 0x2c4bU
0x2c1cU => 0x2c4cU
0x2c1dU => 0x2c4dU
0x2c1eU => 0x2c4eU
0x2c1fU => 0x2c4fU
0x2c20U => 0x2c50U
0x2c21U => 0x2c51U
0x2c22U => 0x2c52U
0x2c23U => 0x2c53U
0x2c24U => 0x2c54U
0x2c25U => 0x2c55U
0x2c26U => 0x2c56U
0x2c27U => 0x2c57U
0x2c28U => 0x2c58U
0x2c29U => 0x2c59U
0x2c2aU => 0x2c5aU
0x2c2bU => 0x2c5bU
0x2c2cU => 0x2c5cU
0x2c2dU => 0x2c5dU
0x2c2eU => 0x2c5eU
0x2c2fU => 0x2c5fU
0x2c60U => 0x2c61U
0x2c62U => 0x026bU
0x2c63U => 0x1d7dU
0x2c64U => 0x027dU
0x2c67U => 0x2c68U
0x2c69U => 0x2c6aU
0x2c6bU => 0x2c6cU
0x2c6dU => 0x0251U
0x2c6eU => 0x0271U
0x2c6fU => 0x0250U
0x2c70U => 0x0252U
0x2c72U => 0x2c73U
0x2c75U => 0x2c76U
0x2c7eU => 0x023fU
0x2c7fU => 0x0240U
0x2c80U => 0x2c81U
0x2c82U => 0x2c83U
0x2c84U => 0x2c85U
0x2c86U => 0x2c87U
0x2c88U => 0x2c89U
0x2c8aU => 0x2c8bU
0x2c8cU => 0x2c8dU
0x2c8eU => 0x2c8fU
0x2c90U => 0x2c91U
0x2c92U => 0x2c93U
0x2c94U => 0x2c95U
0x2c96U => 0x2c97U
0x2c98U => 0x2c99U
0x2c9aU => 0x2c9bU
0x2c9cU => 0x2c9dU
0x2c9eU => 0x2c9fU
0x2ca0U => 0x2ca1U
0x2ca2U => 0x2ca3U
0x2ca4U => 0x2ca5U
0x2ca6U => 0x2ca7U
0x2ca8U => 0x2ca9U
0x2caaU => 0x2cabU
0x2cacU => 0x2cadU
0x2caeU => 0x2cafU
0x2cb0U => 0x2cb1U
0x2cb2U => 0x2cb3U
0x2cb4U => 0x2cb5U
0x2cb6U => 0x2cb7U
0x2cb8U => 0x2cb9U
0x2cbaU => 0x2cbbU
0x2cbcU => 0x2cbdU
0x2cbeU => 0x2cbfU
0x2cc0U => 0x2cc1U
0x2cc2U => 0x2cc3U
0x2cc4U => 0x2cc5U
0x2cc6U => 0x2cc7U
0x2cc8U => 0x2cc9U
0x2ccaU => 0x2ccbU
0x2cccU => 0x2ccdU
0x2cceU => 0x2ccfU
0x2cd0U => 0x2cd1U
0x2cd2U => 0x2cd3U
0x2cd4U => 0x2cd5U
0x2cd6U => 0x2cd7U
0x2cd8U => 0x2cd9U
0x2cdaU => 0x2cdbU
0x2cdcU => 0x2cddU
0x2cdeU => 0x2cdfU
0x2ce0U => 0x2ce1U
0x2ce2U => 0x2ce3U
0x2cebU => 0x2cecU
0x2cedU => 0x2ceeU
0x2cf2U => 0x2cf3U
0xa640U => 0xa641U
0xa642U => 0xa643U
0xa644U => 0xa645U
0xa646U => 0xa647U
0xa648U => 0xa649U
0xa64aU => 0xa64bU
0xa64cU => 0xa64dU
0xa64eU => 0xa64fU
0xa650U => 0xa651U
0xa652U => 0xa653U
0xa654U => 0xa655U
0xa656U => 0xa657U
0xa658U => 0xa659U
0xa65aU => 0xa65bU
0xa65cU => 0xa65dU
0xa65eU => 0xa65fU
0xa660U => 0xa661U
0xa662U => 0xa663U
0xa664U => 0xa665U
0xa666U => 0xa667U
0xa668U => 0xa669U
0xa66aU => 0xa66bU
0xa66cU => 0xa66dU
0xa680U => 0xa681U
0xa682U => 0xa683U
0xa684U => 0xa685U
0xa686U => 0xa687U
0xa688U => 0xa689U
0xa68aU => 0xa68bU
0xa68cU => 0xa68dU
0xa68eU => 0xa68fU
0xa690U => 0xa691U
0xa692U => 0xa693U
0xa694U => 0xa695U
0xa696U => 0xa697U
0xa698U => 0xa699U
0xa69aU => 0xa69bU
0xa722U => 0xa723U
0xa724U => 0xa725U
0xa726U => 0xa727U
0xa728U => 0xa729U
0xa72aU => 0xa72bU
0xa72cU => 0xa72dU
0xa72eU => 0xa72fU
0xa732U => 0xa733U
0xa734U => 0xa735U
0xa736U => 0xa737U
0xa738U => 0xa739U
0xa73aU => 0xa73bU
0xa73cU => 0xa73dU
0xa73eU => 0xa73fU
0xa740U => 0xa741U
0xa742U => 0xa743U
0xa744U => 0xa745U
0xa746U => 0xa747U
0xa748U => 0xa749U
0xa74aU => 0xa74bU
0xa74cU => 0xa74dU
0xa74eU => 0xa74fU
0xa750U => 0xa751U
0xa752U => 0xa753U
0xa754U => 0xa755U
0xa756U => 0xa757U
0xa758U => 0xa759U
0xa75aU => 0xa75bU
0xa75cU => 0xa75dU
0xa75eU => 0xa75fU
0xa760U => 0xa761U
0xa762U => 0xa763U
0xa764U => 0xa765U
0xa766U => 0xa767U
0xa768U => 0xa769U
0xa76aU => 0xa76bU
0xa76cU => 0xa76dU
0xa76eU => 0xa76fU
0xa779U => 0xa77aU
0xa77bU => 0xa77cU
0xa77dU => 0x1d79U
0xa77eU => 0xa77fU
0xa780U => 0xa781U
0xa782U => 0xa783U
0xa784U => 0xa785U
0xa786U => 0xa787U
0xa78bU => 0xa78cU
0xa78dU => 0x0265U
0xa790U => 0xa791U
0xa792U => 0xa793U
0xa796U => 0xa797U
0xa798U => 0xa799U
0xa79aU => 0xa79bU
0xa79cU => 0xa79dU
0xa79eU => 0xa79fU
0xa7a0U => 0xa7a1U
0xa7a2U => 0xa7a3U
0xa7a4U => 0xa7a5U
0xa7a6U => 0xa7a7U
0xa7a8U => 0xa7a9U
0xa7aaU => 0x0266U
0xa7abU => 0x025cU
0xa7acU => 0x0261U
0xa7adU => 0x026cU
0xa7aeU => 0x026aU
0xa7b0U => 0x029eU
0xa7b1U => 0x0287U
0xa7b2U => 0x029dU
0xa7b3U => 0xab53U
0xa7b4U => 0xa7b5U
0xa7b6U => 0xa7b7U
0xa7b8U => 0xa7b9U
0xa7baU => 0xa7bbU
0xa7bcU => 0xa7bdU
0xa7beU => 0xa7bfU
0xa7c0U => 0xa7c1U
0xa7c2U => 0xa7c3U
0xa7c4U => 0xa794U
0xa7c5U => 0x0282U
0xa7c6U => 0x1d8eU
0xa7c7U => 0xa7c8U
0xa7c9U => 0xa7caU
0xa7cbU => 0x0264U
0xa7ccU => 0xa7cdU
0xa7d0U => 0xa7d1U
0xa7d6U => 0xa7d7U
0xa7d8U => 0xa7d9U
0xa7daU => 0xa7dbU
0xa7dcU => 0x019bU
0xa7f5U => 0xa7f6U
0xab70U => 0x13a0U
0xab71U => 0x13a1U
0xab72U => 0x13a2U
0xab73U => 0x13a3U
0xab74U => 0x13a4U
0xab75U => 0x13a5U
0xab76U => 0x13a6U
0xab77U => 0x13a7U
0xab78U => 0x13a8U
0xab79U => 0x13a9U
0xab7aU => 0x13aaU
0xab7bU => 0x13abU
0xab7cU => 0x13acU
0xab7dU => 0x13adU
0xab7eU => 0x13aeU
0xab7fU => 0x13afU
0xab80U => 0x13b0U
0xab81U => 0x13b1U
0xab82U => 0x13b2U
0xab83U => 0x13b3U
0xab84U => 0x13b4U
0xab85U => 0x13b5U
0xab86U => 0x13b6U
0xab87U => 0x13b7U
0xab88U => 0x13b8U
0xab89U => 0x13b9U
0xab8aU => 0x13baU
0xab8bU => 0x13bbU
0xab8cU => 0x13bcU
0xab8dU => 0x13bdU
0xab8eU => 0x13beU
0xab8fU => 0x13bfU
0xab90U => 0x13c0U
0xab91U => 0x13c1U
0xab92U => 0x13c2U
0xab93U => 0x13c3U
0xab94U => 0x13c4U
0xab95U => 0x13c5U
0xab96U => 0x13c6U
0xab97U => 0x13c7U
0xab98U => 0x13c8U
0xab99U => 0x13c9U
0xab9aU => 0x13caU
0xab9bU => 0x13cbU
0xab9cU => 0x13ccU
0xab9dU => 0x13cdU
0xab9eU => 0x13ceU
0xab9fU => 0x13cfU
0xaba0U => 0x13d0U
0xaba1U => 0x13d1U
0xaba2U => 0x13d2U
0xaba3U => 0x13d3U
0xaba4U => 0x13d4U
0xaba5U => 0x13d5U
0xaba6U => 0x13d6U
0xaba7U => 0x13d7U
0xaba8U => 0x13d8U
0xaba9U => 0x13d9U
0xabaaU => 0x13daU
0xababU => 0x13dbU
0xabacU => 0x13dcU
0xabadU => 0x13ddU
0xabaeU => 0x13deU
0xabafU => 0x13dfU
0xabb0U => 0x13e0U
0xabb1U => 0x13e1U
0xabb2U => 0x13e2U
0xabb3U => 0x13e3U
0xabb4U => 0x13e4U
0xabb5U => 0x13e5U
0xabb6U => 0x13e6U
0xabb7U => 0x13e7U
0xabb8U => 0x13e8U
0xabb9U => 0x13e9U
0xabbaU => 0x13eaU
0xabbbU => 0x13ebU
0xabbcU => 0x13ecU
0xabbdU => 0x13edU
0xabbeU => 0x13eeU
0xabbfU => 0x13efU
0xfb00U => return Two('\u{0066}', '\u{0066}')
0xfb01U => return Two('\u{0066}', '\u{0069}')
0xfb02U => return Two('\u{0066}', '\u{006c}')
0xfb03U => return Three('\u{0066}', '\u{0066}', '\u{0069}')
0xfb04U => return Three('\u{0066}', '\u{0066}', '\u{006c}')
0xfb05U => return Two('\u{0073}', '\u{0074}')
0xfb06U => return Two('\u{0073}', '\u{0074}')
0xfb13U => return Two('\u{0574}', '\u{0576}')
0xfb14U => return Two('\u{0574}', '\u{0565}')
0xfb15U => return Two('\u{0574}', '\u{056b}')
0xfb16U => return Two('\u{057e}', '\u{0576}')
0xfb17U => return Two('\u{0574}', '\u{056d}')
0xff21U => 0xff41U
0xff22U => 0xff42U
0xff23U => 0xff43U
0xff24U => 0xff44U
0xff25U => 0xff45U
0xff26U => 0xff46U
0xff27U => 0xff47U
0xff28U => 0xff48U
0xff29U => 0xff49U
0xff2aU => 0xff4aU
0xff2bU => 0xff4bU
0xff2cU => 0xff4cU
0xff2dU => 0xff4dU
0xff2eU => 0xff4eU
0xff2fU => 0xff4fU
0xff30U => 0xff50U
0xff31U => 0xff51U
0xff32U => 0xff52U
0xff33U => 0xff53U
0xff34U => 0xff54U
0xff35U => 0xff55U
0xff36U => 0xff56U
0xff37U => 0xff57U
0xff38U => 0xff58U
0xff39U => 0xff59U
0xff3aU => 0xff5aU
0x10400U => 0x10428U
0x10401U => 0x10429U
0x10402U => 0x1042aU
0x10403U => 0x1042bU
0x10404U => 0x1042cU
0x10405U => 0x1042dU
0x10406U => 0x1042eU
0x10407U => 0x1042fU
0x10408U => 0x10430U
0x10409U => 0x10431U
0x1040aU => 0x10432U
0x1040bU => 0x10433U
0x1040cU => 0x10434U
0x1040dU => 0x10435U
0x1040eU => 0x10436U
0x1040fU => 0x10437U
0x10410U => 0x10438U
0x10411U => 0x10439U
0x10412U => 0x1043aU
0x10413U => 0x1043bU
0x10414U => 0x1043cU
0x10415U => 0x1043dU
0x10416U => 0x1043eU
0x10417U => 0x1043fU
0x10418U => 0x10440U
0x10419U => 0x10441U
0x1041aU => 0x10442U
0x1041bU => 0x10443U
0x1041cU => 0x10444U
0x1041dU => 0x10445U
0x1041eU => 0x10446U
0x1041fU => 0x10447U
0x10420U => 0x10448U
0x10421U => 0x10449U
0x10422U => 0x1044aU
0x10423U => 0x1044bU
0x10424U => 0x1044cU
0x10425U => 0x1044dU
0x10426U => 0x1044eU
0x10427U => 0x1044fU
0x104b0U => 0x104d8U
0x104b1U => 0x104d9U
0x104b2U => 0x104daU
0x104b3U => 0x104dbU
0x104b4U => 0x104dcU
0x104b5U => 0x104ddU
0x104b6U => 0x104deU
0x104b7U => 0x104dfU
0x104b8U => 0x104e0U
0x104b9U => 0x104e1U
0x104baU => 0x104e2U
0x104bbU => 0x104e3U
0x104bcU => 0x104e4U
0x104bdU => 0x104e5U
0x104beU => 0x104e6U
0x104bfU => 0x104e7U
0x104c0U => 0x104e8U
0x104c1U => 0x104e9U
0x104c2U => 0x104eaU
0x104c3U => 0x104ebU
0x104c4U => 0x104ecU
0x104c5U => 0x104edU
0x104c6U => 0x104eeU
0x104c7U => 0x104efU
0x104c8U => 0x104f0U
0x104c9U => 0x104f1U
0x104caU => 0x104f2U
0x104cbU => 0x104f3U
0x104ccU => 0x104f4U
0x104cdU => 0x104f5U
0x104ceU => 0x104f6U
0x104cfU => 0x104f7U
0x104d0U => 0x104f8U
0x104d1U => 0x104f9U
0x104d2U => 0x104faU
0x104d3U => 0x104fbU
0x10570U => 0x10597U
0x10571U => 0x10598U
0x10572U => 0x10599U
0x10573U => 0x1059aU
0x10574U => 0x1059bU
0x10575U => 0x1059cU
0x10576U => 0x1059dU
0x10577U => 0x1059eU
0x10578U => 0x1059fU
0x10579U => 0x105a0U
0x1057aU => 0x105a1U
0x1057cU => 0x105a3U
0x1057dU => 0x105a4U
0x1057eU => 0x105a5U
0x1057fU => 0x105a6U
0x10580U => 0x105a7U
0x10581U => 0x105a8U
0x10582U => 0x105a9U
0x10583U => 0x105aaU
0x10584U => 0x105abU
0x10585U => 0x105acU
0x10586U => 0x105adU
0x10587U => 0x105aeU
0x10588U => 0x105afU
0x10589U => 0x105b0U
0x1058aU => 0x105b1U
0x1058cU => 0x105b3U
0x1058dU => 0x105b4U
0x1058eU => 0x105b5U
0x1058fU => 0x105b6U
0x10590U => 0x105b7U
0x10591U => 0x105b8U
0x10592U => 0x105b9U
0x10594U => 0x105bbU
0x10595U => 0x105bcU
0x10c80U => 0x10cc0U
0x10c81U => 0x10cc1U
0x10c82U => 0x10cc2U
0x10c83U => 0x10cc3U
0x10c84U => 0x10cc4U
0x10c85U => 0x10cc5U
0x10c86U => 0x10cc6U
0x10c87U => 0x10cc7U
0x10c88U => 0x10cc8U
0x10c89U => 0x10cc9U
0x10c8aU => 0x10ccaU
0x10c8bU => 0x10ccbU
0x10c8cU => 0x10cccU
0x10c8dU => 0x10ccdU
0x10c8eU => 0x10cceU
0x10c8fU => 0x10ccfU
0x10c90U => 0x10cd0U
0x10c91U => 0x10cd1U
0x10c92U => 0x10cd2U
0x10c93U => 0x10cd3U
0x10c94U => 0x10cd4U
0x10c95U => 0x10cd5U
0x10c96U => 0x10cd6U
0x10c97U => 0x10cd7U
0x10c98U => 0x10cd8U
0x10c99U => 0x10cd9U
0x10c9aU => 0x10cdaU
0x10c9bU => 0x10cdbU
0x10c9cU => 0x10cdcU
0x10c9dU => 0x10cddU
0x10c9eU => 0x10cdeU
0x10c9fU => 0x10cdfU
0x10ca0U => 0x10ce0U
0x10ca1U => 0x10ce1U
0x10ca2U => 0x10ce2U
0x10ca3U => 0x10ce3U
0x10ca4U => 0x10ce4U
0x10ca5U => 0x10ce5U
0x10ca6U => 0x10ce6U
0x10ca7U => 0x10ce7U
0x10ca8U => 0x10ce8U
0x10ca9U => 0x10ce9U
0x10caaU => 0x10ceaU
0x10cabU => 0x10cebU
0x10cacU => 0x10cecU
0x10cadU => 0x10cedU
0x10caeU => 0x10ceeU
0x10cafU => 0x10cefU
0x10cb0U => 0x10cf0U
0x10cb1U => 0x10cf1U
0x10cb2U => 0x10cf2U
0x10d50U => 0x10d70U
0x10d51U => 0x10d71U
0x10d52U => 0x10d72U
0x10d53U => 0x10d73U
0x10d54U => 0x10d74U
0x10d55U => 0x10d75U
0x10d56U => 0x10d76U
0x10d57U => 0x10d77U
0x10d58U => 0x10d78U
0x10d59U => 0x10d79U
0x10d5aU => 0x10d7aU
0x10d5bU => 0x10d7bU
0x10d5cU => 0x10d7cU
0x10d5dU => 0x10d7dU
0x10d5eU => 0x10d7eU
0x10d5fU => 0x10d7fU
0x10d60U => 0x10d80U
0x10d61U => 0x10d81U
0x10d62U => 0x10d82U
0x10d63U => 0x10d83U
0x10d64U => 0x10d84U
0x10d65U => 0x10d85U
0x118a0U => 0x118c0U
0x118a1U => 0x118c1U
0x118a2U => 0x118c2U
0x118a3U => 0x118c3U
0x118a4U => 0x118c4U
0x118a5U => 0x118c5U
0x118a6U => 0x118c6U
0x118a7U => 0x118c7U
0x118a8U => 0x118c8U
0x118a9U => 0x118c9U
0x118aaU => 0x118caU
0x118abU => 0x118cbU
0x118acU => 0x118ccU
0x118adU => 0x118cdU
0x118aeU => 0x118ceU
0x118afU => 0x118cfU
0x118b0U => 0x118d0U
0x118b1U => 0x118d1U
0x118b2U => 0x118d2U
0x118b3U => 0x118d3U
0x118b4U => 0x118d4U
0x118b5U => 0x118d5U
0x118b6U => 0x118d6U
0x118b7U => 0x118d7U
0x118b8U => 0x118d8U
0x118b9U => 0x118d9U
0x118baU => 0x118daU
0x118bbU => 0x118dbU
0x118bcU => 0x118dcU
0x118bdU => 0x118ddU
0x118beU => 0x118deU
0x118bfU => 0x118dfU
0x16e40U => 0x16e60U
0x16e41U => 0x16e61U
0x16e42U => 0x16e62U
0x16e43U => 0x16e63U
0x16e44U => 0x16e64U
0x16e45U => 0x16e65U
0x16e46U => 0x16e66U
0x16e47U => 0x16e67U
0x16e48U => 0x16e68U
0x16e49U => 0x16e69U
0x16e4aU => 0x16e6aU
0x16e4bU => 0x16e6bU
0x16e4cU => 0x16e6cU
0x16e4dU => 0x16e6dU
0x16e4eU => 0x16e6eU
0x16e4fU => 0x16e6fU
0x16e50U => 0x16e70U
0x16e51U => 0x16e71U
0x16e52U => 0x16e72U
0x16e53U => 0x16e73U
0x16e54U => 0x16e74U
0x16e55U => 0x16e75U
0x16e56U => 0x16e76U
0x16e57U => 0x16e77U
0x16e58U => 0x16e78U
0x16e59U => 0x16e79U
0x16e5aU => 0x16e7aU
0x16e5bU => 0x16e7bU
0x16e5cU => 0x16e7cU
0x16e5dU => 0x16e7dU
0x16e5eU => 0x16e7eU
0x16e5fU => 0x16e7fU
0x1e900U => 0x1e922U
0x1e901U => 0x1e923U
0x1e902U => 0x1e924U
0x1e903U => 0x1e925U
0x1e904U => 0x1e926U
0x1e905U => 0x1e927U
0x1e906U => 0x1e928U
0x1e907U => 0x1e929U
0x1e908U => 0x1e92aU
0x1e909U => 0x1e92bU
0x1e90aU => 0x1e92cU
0x1e90bU => 0x1e92dU
0x1e90cU => 0x1e92eU
0x1e90dU => 0x1e92fU
0x1e90eU => 0x1e930U
0x1e90fU => 0x1e931U
0x1e910U => 0x1e932U
0x1e911U => 0x1e933U
0x1e912U => 0x1e934U
0x1e913U => 0x1e935U
0x1e914U => 0x1e936U
0x1e915U => 0x1e937U
0x1e916U => 0x1e938U
0x1e917U => 0x1e939U
0x1e918U => 0x1e93aU
0x1e919U => 0x1e93bU
0x1e91aU => 0x1e93cU
0x1e91bU => 0x1e93dU
0x1e91cU => 0x1e93eU
0x1e91dU => 0x1e93fU
0x1e91eU => 0x1e940U
0x1e91fU => 0x1e941U
0x1e920U => 0x1e942U
0x1e921U => 0x1e943U
_ => orig.to_uint()
}
One(Int::unsafe_to_char(single_char.reinterpret_as_int()))
}
for c_index in 0..<126217 {
let c = Int::unsafe_to_char(c_index)
let reference : Array[Char] = lookup_naive(c).collect()
let actual : Array[Char] = lookup(c).collect()
if actual != reference {
println(
"case-folding \{c} \{c_index} failed: Expected \{reference}, got \{actual}",
)
panic()
}
}
}