Z31924

{
    "Z1K1": "Z2",
    "Z2K1": {
        "Z1K1": "Z6",
        "Z6K1": "Z31924"
    },
    "Z2K2": {
        "Z1K1": "Z14",
        "Z14K1": "Z31907",
        "Z14K3": {
            "Z1K1": "Z16",
            "Z16K1": "Z600",
            "Z16K2": "/** https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedNumericType.txt */\nconst dataRaw = `\n00B2..00B3    ; Digit # No   [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE\n00B9          ; Digit # No       SUPERSCRIPT ONE\n1369..1371    ; Digit # No   [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE\n19DA          ; Digit # No       NEW TAI LUE THAM DIGIT ONE\n2070          ; Digit # No       SUPERSCRIPT ZERO\n2074..2079    ; Digit # No   [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE\n2080..2089    ; Digit # No  [10] SUBSCRIPT ZERO..SUBSCRIPT NINE\n2460..2468    ; Digit # No   [9] CIRCLED DIGIT ONE..CIRCLED DIGIT NINE\n2474..247C    ; Digit # No   [9] PARENTHESIZED DIGIT ONE..PARENTHESIZED DIGIT NINE\n2488..2490    ; Digit # No   [9] DIGIT ONE FULL STOP..DIGIT NINE FULL STOP\n24EA          ; Digit # No       CIRCLED DIGIT ZERO\n24F5..24FD    ; Digit # No   [9] DOUBLE CIRCLED DIGIT ONE..DOUBLE CIRCLED DIGIT NINE\n24FF          ; Digit # No       NEGATIVE CIRCLED DIGIT ZERO\n2776..277E    ; Digit # No   [9] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED DIGIT NINE\n2780..2788    ; Digit # No   [9] DINGBAT CIRCLED SANS-SERIF DIGIT ONE..DINGBAT CIRCLED SANS-SERIF DIGIT NINE\n278A..2792    ; Digit # No   [9] DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE\n10A40..10A43  ; Digit # No   [4] KHAROSHTHI DIGIT ONE..KHAROSHTHI DIGIT FOUR\n10E60..10E68  ; Digit # No   [9] RUMI DIGIT ONE..RUMI DIGIT NINE\n11052..1105A  ; Digit # No   [9] BRAHMI NUMBER ONE..BRAHMI NUMBER NINE\n1F100..1F10A  ; Digit # No  [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA\n0030..0039    ; Decimal # Nd  [10] DIGIT ZERO..DIGIT NINE\n0660..0669    ; Decimal # Nd  [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE\n06F0..06F9    ; Decimal # Nd  [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE\n07C0..07C9    ; Decimal # Nd  [10] NKO DIGIT ZERO..NKO DIGIT NINE\n0966..096F    ; Decimal # Nd  [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE\n09E6..09EF    ; Decimal # Nd  [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE\n0A66..0A6F    ; Decimal # Nd  [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE\n0AE6..0AEF    ; Decimal # Nd  [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE\n0B66..0B6F    ; Decimal # Nd  [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE\n0BE6..0BEF    ; Decimal # Nd  [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE\n0C66..0C6F    ; Decimal # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE\n0CE6..0CEF    ; Decimal # Nd  [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE\n0D66..0D6F    ; Decimal # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE\n0DE6..0DEF    ; Decimal # Nd  [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE\n0E50..0E59    ; Decimal # Nd  [10] THAI DIGIT ZERO..THAI DIGIT NINE\n0ED0..0ED9    ; Decimal # Nd  [10] LAO DIGIT ZERO..LAO DIGIT NINE\n0F20..0F29    ; Decimal # Nd  [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE\n1040..1049    ; Decimal # Nd  [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE\n1090..1099    ; Decimal # Nd  [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE\n17E0..17E9    ; Decimal # Nd  [10] KHMER DIGIT ZERO..KHMER DIGIT NINE\n1810..1819    ; Decimal # Nd  [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE\n1946..194F    ; Decimal # Nd  [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE\n19D0..19D9    ; Decimal # Nd  [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE\n1A80..1A89    ; Decimal # Nd  [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE\n1A90..1A99    ; Decimal # Nd  [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE\n1B50..1B59    ; Decimal # Nd  [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE\n1BB0..1BB9    ; Decimal # Nd  [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE\n1C40..1C49    ; Decimal # Nd  [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE\n1C50..1C59    ; Decimal # Nd  [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE\nA620..A629    ; Decimal # Nd  [10] VAI DIGIT ZERO..VAI DIGIT NINE\nA8D0..A8D9    ; Decimal # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE\nA900..A909    ; Decimal # Nd  [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE\nA9D0..A9D9    ; Decimal # Nd  [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE\nA9F0..A9F9    ; Decimal # Nd  [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE\nAA50..AA59    ; Decimal # Nd  [10] CHAM DIGIT ZERO..CHAM DIGIT NINE\nABF0..ABF9    ; Decimal # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE\nFF10..FF19    ; Decimal # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE\n104A0..104A9  ; Decimal # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE\n10D30..10D39  ; Decimal # Nd  [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE\n10D40..10D49  ; Decimal # Nd  [10] GARAY DIGIT ZERO..GARAY DIGIT NINE\n11066..1106F  ; Decimal # Nd  [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE\n110F0..110F9  ; Decimal # Nd  [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE\n11136..1113F  ; Decimal # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE\n111D0..111D9  ; Decimal # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE\n112F0..112F9  ; Decimal # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE\n11450..11459  ; Decimal # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE\n114D0..114D9  ; Decimal # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE\n11650..11659  ; Decimal # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE\n116C0..116C9  ; Decimal # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE\n116D0..116E3  ; Decimal # Nd  [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE\n11730..11739  ; Decimal # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE\n118E0..118E9  ; Decimal # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE\n11950..11959  ; Decimal # Nd  [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE\n11BF0..11BF9  ; Decimal # Nd  [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE\n11C50..11C59  ; Decimal # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE\n11D50..11D59  ; Decimal # Nd  [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE\n11DA0..11DA9  ; Decimal # Nd  [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE\n11DE0..11DE9  ; Decimal # Nd  [10] TOLONG SIKI DIGIT ZERO..TOLONG SIKI DIGIT NINE\n11F50..11F59  ; Decimal # Nd  [10] KAWI DIGIT ZERO..KAWI DIGIT NINE\n16130..16139  ; Decimal # Nd  [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE\n16A60..16A69  ; Decimal # Nd  [10] MRO DIGIT ZERO..MRO DIGIT NINE\n16AC0..16AC9  ; Decimal # Nd  [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE\n16B50..16B59  ; Decimal # Nd  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE\n16D70..16D79  ; Decimal # Nd  [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE\n1CCF0..1CCF9  ; Decimal # Nd  [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE\n1D7CE..1D7FF  ; Decimal # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE\n1E140..1E149  ; Decimal # Nd  [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE\n1E2F0..1E2F9  ; Decimal # Nd  [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE\n1E4F0..1E4F9  ; Decimal # Nd  [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE\n1E5F1..1E5FA  ; Decimal # Nd  [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE\n1E950..1E959  ; Decimal # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE\n1FBF0..1FBF9  ; Decimal # Nd  [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE\n`;\n\n/*\nconst cardinalNames = [ \"ZERO\", \"ONE\", \"TWO\", \"THREE\", \"FOUR\", \"FIVE\", \"SIX\", \"SEVEN\", \"EIGHT\", \"NINE\" ];\nconst ranges = dataRaw.trim()\n\t.replace( // normalise format of names for 2488..2490\n\t\t\"DIGIT ONE FULL STOP..DIGIT NINE FULL STOP\",\n\t\t\"DIGIT FULL STOP ONE..DIGIT FULL STOP NINE\")\n\t.replace( // split incorrectly grouped range 1F100..1F10A and normalise format of names\n\t\t\"1F100..1F10A  ; Digit # No  [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA\",\n\t\t\"1F100         ; Digit # No       DIGIT FULL STOP ZERO\"\n\t\t\t+ \"\\n1F101..1F10A  ; Digit # No  [10] DIGIT COMMA ZERO..DIGIT COMMA NINE\")\n\t.split('\\n').map(line =\u003E [\n\t\tline.slice(0, line.indexOf(';')).trimEnd(),\n\t\tline.slice(line.indexOf(';') + 2, line.indexOf('#') - 1),\n\t\tline.slice(line.indexOf('#') + 11),\n\t]).map(([ rangeRaw, type, namesRaw ]) =\u003E {\n\t\tif (rangeRaw.includes(\"..\")) {\n\t\t\tconst nameOfFirst = namesRaw.slice(0, namesRaw.indexOf('.'));\n\t\t\tconst temp = nameOfFirst.slice(nameOfFirst.lastIndexOf(' ') + 1);\n\t\t\treturn {\n\t\t\t\tfirstCodepoint: parseInt(rangeRaw.slice(0, rangeRaw.indexOf('.')), 16),\n\t\t\t\tlastCodepoint: parseInt(rangeRaw.slice(rangeRaw.indexOf('.') + 2), 16),\n\t\t\t\tvalueOffset: cardinalNames.indexOf(temp),\n\t\t\t};\n\t\t} else {\n\t\t\tconst codepoint = parseInt(rangeRaw, 16);\n\t\t\treturn {\n\t\t\t\tfirstCodepoint: codepoint,\n\t\t\t\tlastCodepoint: codepoint,\n\t\t\t\tvalueOffset: cardinalNames.indexOf(namesRaw.slice(namesRaw.lastIndexOf(' ') + 1)),\n\t\t\t};\n\t\t}\n\t})\n\t.sort((a, b) =\u003E a.firstCodepoint - b.firstCodepoint);\n*/\nconst ranges = [\n\t{ firstCodepoint: 0x30, lastCodepoint: 0x39, valueOffset: 0 },\n\t{ firstCodepoint: 0xB2, lastCodepoint: 0xB3, valueOffset: 2 },\n\t{ firstCodepoint: 0xB9, lastCodepoint: 0xB9, valueOffset: 1 },\n\t{ firstCodepoint: 0x660, lastCodepoint: 0x669, valueOffset: 0 },\n\t{ firstCodepoint: 0x6F0, lastCodepoint: 0x6F9, valueOffset: 0 },\n\t{ firstCodepoint: 0x7C0, lastCodepoint: 0x7C9, valueOffset: 0 },\n\t{ firstCodepoint: 0x966, lastCodepoint: 0x96F, valueOffset: 0 },\n\t{ firstCodepoint: 0x9E6, lastCodepoint: 0x9EF, valueOffset: 0 },\n\t{ firstCodepoint: 0xA66, lastCodepoint: 0xA6F, valueOffset: 0 },\n\t{ firstCodepoint: 0xAE6, lastCodepoint: 0xAEF, valueOffset: 0 },\n\t{ firstCodepoint: 0xB66, lastCodepoint: 0xB6F, valueOffset: 0 },\n\t{ firstCodepoint: 0xBE6, lastCodepoint: 0xBEF, valueOffset: 0 },\n\t{ firstCodepoint: 0xC66, lastCodepoint: 0xC6F, valueOffset: 0 },\n\t{ firstCodepoint: 0xCE6, lastCodepoint: 0xCEF, valueOffset: 0 },\n\t{ firstCodepoint: 0xD66, lastCodepoint: 0xD6F, valueOffset: 0 },\n\t{ firstCodepoint: 0xDE6, lastCodepoint: 0xDEF, valueOffset: 0 },\n\t{ firstCodepoint: 0xE50, lastCodepoint: 0xE59, valueOffset: 0 },\n\t{ firstCodepoint: 0xED0, lastCodepoint: 0xED9, valueOffset: 0 },\n\t{ firstCodepoint: 0xF20, lastCodepoint: 0xF29, valueOffset: 0 },\n\t{ firstCodepoint: 0x1040, lastCodepoint: 0x1049, valueOffset: 0 },\n\t{ firstCodepoint: 0x1090, lastCodepoint: 0x1099, valueOffset: 0 },\n\t{ firstCodepoint: 0x1369, lastCodepoint: 0x1371, valueOffset: 1 },\n\t{ firstCodepoint: 0x17E0, lastCodepoint: 0x17E9, valueOffset: 0 },\n\t{ firstCodepoint: 0x1810, lastCodepoint: 0x1819, valueOffset: 0 },\n\t{ firstCodepoint: 0x1946, lastCodepoint: 0x194F, valueOffset: 0 },\n\t{ firstCodepoint: 0x19D0, lastCodepoint: 0x19D9, valueOffset: 0 },\n\t{ firstCodepoint: 0x19DA, lastCodepoint: 0x19DA, valueOffset: 1 },\n\t{ firstCodepoint: 0x1A80, lastCodepoint: 0x1A89, valueOffset: 0 },\n\t{ firstCodepoint: 0x1A90, lastCodepoint: 0x1A99, valueOffset: 0 },\n\t{ firstCodepoint: 0x1B50, lastCodepoint: 0x1B59, valueOffset: 0 },\n\t{ firstCodepoint: 0x1BB0, lastCodepoint: 0x1BB9, valueOffset: 0 },\n\t{ firstCodepoint: 0x1C40, lastCodepoint: 0x1C49, valueOffset: 0 },\n\t{ firstCodepoint: 0x1C50, lastCodepoint: 0x1C59, valueOffset: 0 },\n\t{ firstCodepoint: 0x2070, lastCodepoint: 0x2070, valueOffset: 0 },\n\t{ firstCodepoint: 0x2074, lastCodepoint: 0x2079, valueOffset: 4 },\n\t{ firstCodepoint: 0x2080, lastCodepoint: 0x2089, valueOffset: 0 },\n\t{ firstCodepoint: 0x2460, lastCodepoint: 0x2468, valueOffset: 1 },\n\t{ firstCodepoint: 0x2474, lastCodepoint: 0x247C, valueOffset: 1 },\n\t{ firstCodepoint: 0x2488, lastCodepoint: 0x2490, valueOffset: 1 },\n\t{ firstCodepoint: 0x24EA, lastCodepoint: 0x24EA, valueOffset: 0 },\n\t{ firstCodepoint: 0x24F5, lastCodepoint: 0x24FD, valueOffset: 1 },\n\t{ firstCodepoint: 0x24FF, lastCodepoint: 0x24FF, valueOffset: 0 },\n\t{ firstCodepoint: 0x2776, lastCodepoint: 0x277E, valueOffset: 1 },\n\t{ firstCodepoint: 0x2780, lastCodepoint: 0x2788, valueOffset: 1 },\n\t{ firstCodepoint: 0x278A, lastCodepoint: 0x2792, valueOffset: 1 },\n\t{ firstCodepoint: 0xA620, lastCodepoint: 0xA629, valueOffset: 0 },\n\t{ firstCodepoint: 0xA8D0, lastCodepoint: 0xA8D9, valueOffset: 0 },\n\t{ firstCodepoint: 0xA900, lastCodepoint: 0xA909, valueOffset: 0 },\n\t{ firstCodepoint: 0xA9D0, lastCodepoint: 0xA9D9, valueOffset: 0 },\n\t{ firstCodepoint: 0xA9F0, lastCodepoint: 0xA9F9, valueOffset: 0 },\n\t{ firstCodepoint: 0xAA50, lastCodepoint: 0xAA59, valueOffset: 0 },\n\t{ firstCodepoint: 0xABF0, lastCodepoint: 0xABF9, valueOffset: 0 },\n\t{ firstCodepoint: 0xFF10, lastCodepoint: 0xFF19, valueOffset: 0 },\n\t{ firstCodepoint: 0x104A0, lastCodepoint: 0x104A9, valueOffset: 0 },\n\t{ firstCodepoint: 0x10A40, lastCodepoint: 0x10A43, valueOffset: 1 },\n\t{ firstCodepoint: 0x10D30, lastCodepoint: 0x10D39, valueOffset: 0 },\n\t{ firstCodepoint: 0x10D40, lastCodepoint: 0x10D49, valueOffset: 0 },\n\t{ firstCodepoint: 0x10E60, lastCodepoint: 0x10E68, valueOffset: 1 },\n\t{ firstCodepoint: 0x11052, lastCodepoint: 0x1105A, valueOffset: 1 },\n\t{ firstCodepoint: 0x11066, lastCodepoint: 0x1106F, valueOffset: 0 },\n\t{ firstCodepoint: 0x110F0, lastCodepoint: 0x110F9, valueOffset: 0 },\n\t{ firstCodepoint: 0x11136, lastCodepoint: 0x1113F, valueOffset: 0 },\n\t{ firstCodepoint: 0x111D0, lastCodepoint: 0x111D9, valueOffset: 0 },\n\t{ firstCodepoint: 0x112F0, lastCodepoint: 0x112F9, valueOffset: 0 },\n\t{ firstCodepoint: 0x11450, lastCodepoint: 0x11459, valueOffset: 0 },\n\t{ firstCodepoint: 0x114D0, lastCodepoint: 0x114D9, valueOffset: 0 },\n\t{ firstCodepoint: 0x11650, lastCodepoint: 0x11659, valueOffset: 0 },\n\t{ firstCodepoint: 0x116C0, lastCodepoint: 0x116C9, valueOffset: 0 },\n\t{ firstCodepoint: 0x116D0, lastCodepoint: 0x116E3, valueOffset: 0 },\n\t{ firstCodepoint: 0x11730, lastCodepoint: 0x11739, valueOffset: 0 },\n\t{ firstCodepoint: 0x118E0, lastCodepoint: 0x118E9, valueOffset: 0 },\n\t{ firstCodepoint: 0x11950, lastCodepoint: 0x11959, valueOffset: 0 },\n\t{ firstCodepoint: 0x11BF0, lastCodepoint: 0x11BF9, valueOffset: 0 },\n\t{ firstCodepoint: 0x11C50, lastCodepoint: 0x11C59, valueOffset: 0 },\n\t{ firstCodepoint: 0x11D50, lastCodepoint: 0x11D59, valueOffset: 0 },\n\t{ firstCodepoint: 0x11DA0, lastCodepoint: 0x11DA9, valueOffset: 0 },\n\t{ firstCodepoint: 0x11DE0, lastCodepoint: 0x11DE9, valueOffset: 0 },\n\t{ firstCodepoint: 0x11F50, lastCodepoint: 0x11F59, valueOffset: 0 },\n\t{ firstCodepoint: 0x16130, lastCodepoint: 0x16139, valueOffset: 0 },\n\t{ firstCodepoint: 0x16A60, lastCodepoint: 0x16A69, valueOffset: 0 },\n\t{ firstCodepoint: 0x16AC0, lastCodepoint: 0x16AC9, valueOffset: 0 },\n\t{ firstCodepoint: 0x16B50, lastCodepoint: 0x16B59, valueOffset: 0 },\n\t{ firstCodepoint: 0x16D70, lastCodepoint: 0x16D79, valueOffset: 0 },\n\t{ firstCodepoint: 0x1CCF0, lastCodepoint: 0x1CCF9, valueOffset: 0 },\n\t{ firstCodepoint: 0x1D7CE, lastCodepoint: 0x1D7FF, valueOffset: 0 },\n\t{ firstCodepoint: 0x1E140, lastCodepoint: 0x1E149, valueOffset: 0 },\n\t{ firstCodepoint: 0x1E2F0, lastCodepoint: 0x1E2F9, valueOffset: 0 },\n\t{ firstCodepoint: 0x1E4F0, lastCodepoint: 0x1E4F9, valueOffset: 0 },\n\t{ firstCodepoint: 0x1E5F1, lastCodepoint: 0x1E5FA, valueOffset: 0 },\n\t{ firstCodepoint: 0x1E950, lastCodepoint: 0x1E959, valueOffset: 0 },\n\t{ firstCodepoint: 0x1F100, lastCodepoint: 0x1F100, valueOffset: 0 },\n\t{ firstCodepoint: 0x1F101, lastCodepoint: 0x1F10A, valueOffset: 0 },\n\t{ firstCodepoint: 0x1FBF0, lastCodepoint: 0x1FBF9, valueOffset: 0 },\n];\n\nconst firstsOfRanges = ranges.map(entry =\u003E entry.firstCodepoint);\n\n/** based on https://stackoverflow.com/a/41956372 */\nfunction binarySearch(array, elem) {\n\tlet lo = -1, hi = array.length;\n\twhile (1 + lo \u003C hi) {\n\t\tconst mi = lo + ((hi - lo) \u003E\u003E 1);\n\t\tif (elem \u003C array[mi]) hi = mi;\n\t\telse lo = mi;\n\t}\n\treturn lo;\n}\n\nfunction Z31907( Z31907K1 ) {\n\tif (Z31907K1 \u003C firstsOfRanges[0]) return Wikifunctions.Error(\"Z516\", [ \"Z31907K1\", Z31907K1 ]);\n\tconst found = ranges[binarySearch(firstsOfRanges, Z31907K1)];\n\tif (Z31907K1 \u003C found.firstCodepoint || found.lastCodepoint \u003C Z31907K1) return Wikifunctions.Error(\"Z516\", [ \"Z31907K1\", Z31907K1 ]);\n\treturn found.valueOffset + (Z31907K1 - found.firstCodepoint);\n}"
        }
    },
    "Z2K3": {
        "Z1K1": "Z12",
        "Z12K1": [
            "Z11",
            {
                "Z1K1": "Z11",
                "Z11K1": "Z1002",
                "Z11K2": "value of Digit or Decimal code point, JS"
            }
        ]
    },
    "Z2K4": {
        "Z1K1": "Z32",
        "Z32K1": [
            "Z31"
        ]
    },
    "Z2K5": {
        "Z1K1": "Z12",
        "Z12K1": [
            "Z11"
        ]
    }
}