aboutsummaryrefslogtreecommitdiffstats
path: root/enc/unicode/casefold.h
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-05-30 23:58:01 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-05-30 23:58:01 +0000
commit35348a080631d9cc06e38972e2752ecc64c1eede (patch)
treeffa54ec452a0b6a1f72fde44b7a0e81846fff922 /enc/unicode/casefold.h
parentc39e659263b9a988c39ff97aca3ffde9a482e4e4 (diff)
downloadruby-35348a080631d9cc06e38972e2752ecc64c1eede.tar.gz
case-folding.rb: perfect hash for case unfolding1
* enc/unicode/case-folding.rb (lookup_hash): make perfect hash to lookup case unfolding table 1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enc/unicode/casefold.h')
-rw-r--r--enc/unicode/casefold.h1311
1 files changed, 1310 insertions, 1 deletions
diff --git a/enc/unicode/casefold.h b/enc/unicode/casefold.h
index fb8d50a98c..8647e5e8a6 100644
--- a/enc/unicode/casefold.h
+++ b/enc/unicode/casefold.h
@@ -3648,6 +3648,1316 @@ static const CaseUnfold_11_Type CaseUnfold_11_Table[] = {
{0x0069, {1, {0x0049}}},
};
+/* C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -7 -k1,2,3 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseUnfold_11_hash -N onigenc_unicode_CaseUnfold_11_lookup */
+
+/* maximum key range = 1484, duplicates = 0 */
+
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__cplusplus) || defined(__GNUC_STDC_INLINE__)
+inline
+#elif defined(__GNUC__)
+__inline
+#endif
+/*ARGSUSED*/
+static unsigned int
+onigenc_unicode_CaseUnfold_11_hash(const OnigCodePoint code)
+{
+ static const unsigned short asso_values[] =
+ {
+ 1, 1492, 1, 2, 239, 509, 4, 174, 6, 104,
+ 363, 101, 85, 3, 7, 560, 1492, 1492, 1492, 1492,
+ 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492,
+ 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492,
+ 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492,
+ 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492,
+ 1492, 1492, 10, 1492, 2, 1, 8, 27, 255, 519,
+ 115, 504, 181, 904, 195, 459, 80, 18, 437, 726,
+ 102, 55, 61, 36, 117, 826, 142, 817, 46, 1042,
+ 6, 1033, 179, 5, 9, 1056, 17, 81, 121, 893,
+ 69, 91, 66, 45, 5, 744, 13, 980, 14, 1017,
+ 125, 702, 12, 973, 1045, 682, 263, 319, 999, 633,
+ 998, 625, 1001, 790, 1086, 932, 1004, 783, 1050, 615,
+ 415, 596, 919, 564, 669, 491, 752, 477, 991, 434,
+ 970, 401, 914, 328, 488, 392, 984, 140, 1025, 175,
+ 947, 382, 784, 167, 1038, 243, 985, 280, 500, 254,
+ 62, 546, 212, 113, 761, 131, 58, 101, 343, 205,
+ 61, 193, 231, 307, 873, 370, 638, 356, 881, 770,
+ 981, 152, 419, 758, 953, 942, 430, 856, 443, 913,
+ 227, 839, 159, 965
+ };
+ return asso_values[bits_of(code, 2)+66] + asso_values[bits_of(code, 1)+4] + asso_values[bits_of(code, 0)];
+}
+
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+static const CodePointList3 *
+onigenc_unicode_CaseUnfold_11_lookup(const OnigCodePoint code)
+{
+ enum
+ {
+ MIN_CODE_VALUE = 0x61,
+ MAX_CODE_VALUE = 0x1044f,
+ TOTAL_KEYWORDS = 1006,
+ MIN_WORD_LENGTH = 3,
+ MAX_WORD_LENGTH = 3,
+ MIN_HASH_VALUE = 8,
+ MAX_HASH_VALUE = 1491
+ };
+
+ static const short wordlist[] =
+ {
+ -1, -1, -1, -1, -1, -1,
+ -1, -1,
+ /*0x1e1b*/ 480,
+ /*0x049b*/ 356,
+ /*0x011b*/ 69,
+ /*0x2c9b*/ 771,
+ /*0x021b*/ 178,
+ /*0x051b*/ 420,
+ /*0x1f26*/ 610,
+ /*0x2d1b*/ 838,
+ /*0x2d18*/ 835,
+ /*0x1f00*/ 590,
+ /*0x2d00*/ 811,
+ /*0x2d1c*/ 839,
+ /*0x1e8b*/ 536,
+ /*0x1e0b*/ 472,
+ /*0x048b*/ 348,
+ /*0x010b*/ 61,
+ /*0x2c8b*/ 763,
+ /*0x020b*/ 170,
+ /*0x050b*/ 412,
+ /*0x2d1e*/ 841,
+ /*0x2d0b*/ 822,
+ /*0x1e81*/ 531,
+ /*0x1e01*/ 467,
+ /*0x0481*/ 347,
+ /*0x0101*/ 56,
+ /*0x2c81*/ 758,
+ /*0x0201*/ 165,
+ /*0x0501*/ 407,
+ /*0x1f01*/ 591,
+ /*0x2d01*/ 812,
+ /*0x1e91*/ 539,
+ /*0x1e11*/ 475,
+ /*0x0491*/ 351,
+ /*0x0111*/ 64,
+ /*0x2c91*/ 766,
+ /*0x0211*/ 173,
+ /*0x0511*/ 415,
+ /*0x1f11*/ 599,
+ /*0x2d11*/ 828,
+ /*0x1ea5*/ 544,
+ /*0x1e25*/ 485,
+ /*0x04a5*/ 361,
+ /*0x0125*/ 74,
+ /*0x2ca5*/ 776,
+ /*0x0225*/ 182,
+ /*0x0525*/ 425,
+ /*0x1f25*/ 609,
+ /*0x2d25*/ 848,
+ /*0x2d16*/ 833,
+ /*0x1e8f*/ 538,
+ /*0x1e0f*/ 474,
+ /*0x048f*/ 350,
+ /*0x010f*/ 63,
+ /*0x2c8f*/ 765,
+ /*0x020f*/ 172,
+ /*0x050f*/ 414,
+ /*0xa781*/ 927,
+ /*0x2d0f*/ 826,
+ /*0x0564*/ 430,
+ /*0x1f64*/ 634,
+ /*0x0268*/ 212,
+ /*0x0568*/ 434,
+ /*0x1f10*/ 598,
+ /*0x2d10*/ 827,
+ -1,
+ /*0xa791*/ 932,
+ /*0xa68b*/ 879,
+ /*0x1f24*/ 608,
+ /*0x2d24*/ 847,
+ /*0x24e4*/ 697,
+ /*0x1f22*/ 606,
+ /*0x2d22*/ 845,
+ /*0x24e8*/ 701,
+ /*0x24de*/ 691,
+ /*0xa7a5*/ 936,
+ /*0xa681*/ 874,
+ /*0x1e1f*/ 482,
+ /*0x049f*/ 358,
+ /*0x011f*/ 71,
+ /*0x2c9f*/ 773,
+ /*0x021f*/ 180,
+ /*0x051f*/ 422,
+ /*0x2d0a*/ 821,
+ /*0x2d1f*/ 842,
+ /*0xa691*/ 882,
+ /*0x1ea3*/ 543,
+ /*0x1e23*/ 484,
+ /*0x04a3*/ 360,
+ /*0x0123*/ 73,
+ /*0x2ca3*/ 775,
+ /*0x0223*/ 181,
+ /*0x0523*/ 424,
+ /*0x1f23*/ 607,
+ /*0x2d23*/ 846,
+ -1,
+ /*0x1ee5*/ 576,
+ /*0x1e65*/ 517,
+ /*0x04e5*/ 393,
+ /*0x0165*/ 104,
+ /*0xa725*/ 887,
+ /*0x0265*/ 210,
+ /*0x0565*/ 431,
+ /*0x1f65*/ 635,
+ /*0xa68f*/ 881,
+ /*0x2d0e*/ 825,
+ /*0x0280*/ 220,
+ /*0x03ae*/ 236,
+ /*0x1ee1*/ 574,
+ /*0x1e61*/ 515,
+ /*0x04e1*/ 391,
+ /*0x0161*/ 102,
+ /*0x2ce1*/ 806,
+ /*0x24e5*/ 698,
+ /*0x0561*/ 427,
+ /*0x1f61*/ 631,
+ /*0x028b*/ 225,
+ /*0x1f04*/ 594,
+ /*0x2d04*/ 815,
+ /*0x1f12*/ 600,
+ /*0x2d12*/ 829,
+ /*0xa7a3*/ 935,
+ /*0x1fe5*/ 658,
+ /*0x1f20*/ 604,
+ /*0x2d20*/ 843,
+ /*0x24e1*/ 694,
+ /*0x1ee3*/ 575,
+ /*0x1e63*/ 516,
+ /*0x04e3*/ 392,
+ /*0x0163*/ 103,
+ /*0x2ce3*/ 807,
+ /*0x0263*/ 209,
+ /*0x0563*/ 429,
+ /*0x1f63*/ 633,
+ /*0x1fe1*/ 657,
+ /*0x1ed1*/ 566,
+ /*0x1e51*/ 507,
+ /*0x04d1*/ 383,
+ /*0x0151*/ 94,
+ /*0x2cd1*/ 798,
+ /*0x0251*/ 200,
+ /*0x045e*/ 329,
+ /*0x1f51*/ 626,
+ /*0x24e3*/ 696,
+ /*0x1f14*/ 602,
+ /*0x2d14*/ 831,
+ /*0xa723*/ 886,
+ /*0x1ef3*/ 583,
+ /*0x1e73*/ 524,
+ /*0x04f3*/ 400,
+ /*0x0173*/ 111,
+ /*0x2cf3*/ 810,
+ /*0x24d1*/ 678,
+ /*0x0573*/ 445,
+ /*0x1f73*/ 641,
+ -1,
+ /*0xa765*/ 918,
+ /*0x017e*/ 116,
+ -1, -1,
+ /*0x057e*/ 456,
+ /*0x1fd1*/ 655,
+ /*0x1ed7*/ 569,
+ /*0x1e57*/ 510,
+ /*0x04d7*/ 386,
+ /*0x0157*/ 97,
+ /*0x2cd7*/ 801,
+ /*0x0257*/ 205,
+ /*0xa761*/ 916,
+ /*0x1f57*/ 629,
+ /*0x1ed3*/ 567,
+ /*0x1e53*/ 508,
+ /*0x04d3*/ 384,
+ /*0x0153*/ 95,
+ /*0x2cd3*/ 799,
+ /*0x0253*/ 202,
+ /*0x0180*/ 117,
+ /*0x1f53*/ 627,
+ /*0x028a*/ 224,
+ /*0x24d7*/ 684,
+ /*0x0465*/ 333,
+ /*0x01a8*/ 130,
+ /*0x2d1a*/ 837,
+ /*0x1f06*/ 596,
+ /*0x2d06*/ 817,
+ /*0x019e*/ 126,
+ /*0xa763*/ 917,
+ /*0x24d3*/ 680,
+ /*0x1ee9*/ 578,
+ /*0x1e69*/ 519,
+ /*0x04e9*/ 395,
+ /*0x0169*/ 106,
+ /*0x0461*/ 331,
+ /*0x0269*/ 213,
+ /*0x0569*/ 435,
+ /*0xa751*/ 908,
+ /*0x03e5*/ 274,
+ /*0xa665*/ 869,
+ /*0x2d08*/ 819,
+ -1,
+ /*0x1ee7*/ 577,
+ /*0x1e67*/ 518,
+ /*0x04e7*/ 394,
+ /*0x0167*/ 105,
+ -1,
+ /*0x24e9*/ 702,
+ /*0x0567*/ 433,
+ /*0x1f67*/ 637,
+ /*0x03e1*/ 272,
+ /*0xa661*/ 867,
+ /*0x0463*/ 332,
+ -1,
+ /*0x0260*/ 208,
+ /*0x01a5*/ 129,
+ /*0x1f60*/ 630,
+ /*0x0292*/ 227,
+ -1,
+ /*0x24e7*/ 700,
+ -1,
+ /*0x0451*/ 316,
+ /*0x03ac*/ 234,
+ -1,
+ /*0xa757*/ 911,
+ -1,
+ /*0x24e0*/ 693,
+ /*0x017c*/ 115,
+ /*0x03e3*/ 273,
+ /*0xa663*/ 868,
+ /*0x057c*/ 454,
+ /*0x1f7c*/ 650,
+ /*0xa753*/ 909,
+ /*0x0473*/ 340,
+ /*0x056a*/ 436,
+ /*0x1fe0*/ 656,
+ /*0x2c68*/ 753,
+ /*0x2c5e*/ 749,
+ /*0xa651*/ 859,
+ -1,
+ /*0x1ed9*/ 570,
+ /*0x1e59*/ 511,
+ /*0x04d9*/ 387,
+ /*0x0159*/ 98,
+ /*0x2cd9*/ 802,
+ /*0x0259*/ 206,
+ -1, -1,
+ /*0x0457*/ 322,
+ -1,
+ /*0xa769*/ 920,
+ /*0x1edd*/ 572,
+ /*0x1e5d*/ 513,
+ /*0x04dd*/ 389,
+ /*0x015d*/ 100,
+ /*0x2cdd*/ 804,
+ /*0x0453*/ 318,
+ /*0x24d9*/ 686,
+ -1,
+ /*0x1f02*/ 592,
+ /*0x2d02*/ 813,
+ /*0x01a3*/ 128,
+ /*0xa767*/ 919,
+ /*0x2173*/ 663,
+ /*0x03d7*/ 267,
+ /*0xa657*/ 862,
+ -1,
+ /*0x1f32*/ 614,
+ /*0x24dd*/ 690,
+ -1,
+ /*0x217e*/ 674,
+ /*0x01e5*/ 153,
+ -1,
+ /*0xa653*/ 860,
+ /*0x0469*/ 335,
+ -1,
+ /*0x2c65*/ 751,
+ /*0x1edb*/ 571,
+ /*0x1e5b*/ 512,
+ /*0x04db*/ 388,
+ /*0x015b*/ 99,
+ /*0x2cdb*/ 803,
+ /*0x025b*/ 207,
+ /*0x01e1*/ 151,
+ /*0xa77c*/ 925,
+ -1,
+ /*0x0467*/ 334,
+ /*0x0192*/ 122,
+ /*0x2c61*/ 750,
+ -1,
+ /*0x03e9*/ 276,
+ /*0xa669*/ 871,
+ -1,
+ /*0x0064*/ 3,
+ /*0x24db*/ 688,
+ /*0x0288*/ 222,
+ /*0x0068*/ 7,
+ -1, -1, -1,
+ /*0xa759*/ 912,
+ /*0x01e3*/ 152,
+ /*0x03e7*/ 275,
+ /*0xa667*/ 870,
+ /*0x1eeb*/ 579,
+ /*0x1e6b*/ 520,
+ /*0x04eb*/ 396,
+ /*0x016b*/ 107,
+ -1,
+ /*0x026b*/ 214,
+ /*0x056b*/ 437,
+ /*0xa75d*/ 914,
+ -1, -1, -1,
+ /*0x2c51*/ 736,
+ /*0x1eb3*/ 551,
+ /*0x1e33*/ 492,
+ /*0x04b3*/ 368,
+ /*0x0133*/ 80,
+ /*0x2cb3*/ 783,
+ /*0x0233*/ 189,
+ /*0x01f3*/ 159,
+ /*0x1f33*/ 615,
+ /*0x0459*/ 324,
+ /*0x1ecd*/ 564,
+ /*0x1e4d*/ 505,
+ /*0x2c73*/ 756,
+ /*0x014d*/ 92,
+ /*0x2ccd*/ 796,
+ /*0x024d*/ 197,
+ /*0x1042e*/ 971,
+ /*0x10428*/ 965,
+ /*0x1042a*/ 967,
+ -1,
+ /*0x045d*/ 328,
+ /*0x0065*/ 4,
+ /*0xa75b*/ 913,
+ /*0x217c*/ 672,
+ -1,
+ /*0x03d9*/ 268,
+ /*0xa659*/ 863,
+ /*0x2c57*/ 742,
+ -1,
+ /*0x0432*/ 285,
+ /*0x0266*/ 211,
+ /*0x0566*/ 432,
+ /*0x1f66*/ 636,
+ /*0x0061*/ 0,
+ /*0x019a*/ 125,
+ /*0x2c53*/ 738,
+ /*0x03dd*/ 270,
+ /*0xa65d*/ 865,
+ /*0x1eef*/ 581,
+ /*0x1e6f*/ 522,
+ /*0x04ef*/ 398,
+ /*0x016f*/ 109,
+ /*0x24e6*/ 699,
+ /*0x026f*/ 215,
+ /*0x056f*/ 441,
+ /*0x03b2*/ 239,
+ /*0x045b*/ 326,
+ -1,
+ /*0x01e9*/ 155,
+ /*0xa76b*/ 921,
+ /*0x0188*/ 120,
+ /*0x0063*/ 2,
+ /*0x1eed*/ 580,
+ /*0x1e6d*/ 521,
+ /*0x04ed*/ 397,
+ /*0x016d*/ 108,
+ -1, -1,
+ /*0x056d*/ 439,
+ -1,
+ /*0x01e7*/ 154,
+ /*0xa733*/ 893,
+ /*0x03db*/ 269,
+ /*0xa65b*/ 864,
+ /*0x1ed5*/ 568,
+ /*0x1e55*/ 509,
+ /*0x04d5*/ 385,
+ /*0x0155*/ 96,
+ /*0x2cd5*/ 800,
+ -1,
+ /*0xa74d*/ 906,
+ /*0x1f55*/ 628,
+ /*0x0073*/ 17,
+ /*0x046b*/ 336,
+ /*0x1ecf*/ 565,
+ /*0x1e4f*/ 506,
+ /*0x04cf*/ 382,
+ /*0x014f*/ 93,
+ /*0x2ccf*/ 797,
+ /*0x024f*/ 198,
+ -1,
+ /*0x24d5*/ 682,
+ -1,
+ /*0x1ecb*/ 563,
+ /*0x1e4b*/ 504,
+ /*0x0433*/ 286,
+ /*0x014b*/ 91,
+ /*0x2ccb*/ 795,
+ /*0x024b*/ 196,
+ /*0x03eb*/ 277,
+ /*0xa66b*/ 872,
+ /*0x2c6a*/ 754,
+ -1, -1,
+ /*0x044d*/ 312,
+ -1, -1, -1,
+ /*0xa76f*/ 923,
+ -1,
+ /*0x0140*/ 86,
+ /*0x03b3*/ 240,
+ /*0x0240*/ 192,
+ /*0x2c59*/ 744,
+ /*0x1f40*/ 620,
+ -1, -1,
+ /*0x0574*/ 446,
+ /*0x1f74*/ 642,
+ /*0x01dd*/ 149,
+ /*0x03cd*/ 265,
+ /*0xa64d*/ 857,
+ /*0xa76d*/ 922,
+ /*0x0069*/ 1005,
+ /*0x2c5d*/ 748,
+ -1,
+ /*0x1ec9*/ 562,
+ /*0x1e49*/ 503,
+ /*0x0578*/ 450,
+ /*0x1f78*/ 646,
+ /*0x2cc9*/ 794,
+ /*0x0249*/ 195,
+ /*0x046f*/ 338,
+ /*0x2c32*/ 705,
+ /*0xa755*/ 910,
+ /*0x0067*/ 6,
+ -1,
+ /*0x2d0c*/ 823,
+ /*0x017a*/ 114,
+ /*0x1042c*/ 969,
+ -1,
+ /*0x057a*/ 452,
+ /*0x1f7a*/ 648,
+ -1,
+ /*0xa74f*/ 907,
+ -1,
+ /*0x046d*/ 337,
+ -1,
+ /*0x03ef*/ 279,
+ -1,
+ /*0x2c5b*/ 746,
+ /*0x1e89*/ 535,
+ /*0x1e09*/ 471,
+ /*0xa74b*/ 905,
+ /*0x0109*/ 60,
+ /*0x2c89*/ 762,
+ /*0x0209*/ 169,
+ /*0x0509*/ 411,
+ /*0x0455*/ 320,
+ /*0x2d09*/ 820,
+ -1,
+ /*0x006a*/ 8,
+ /*0x03ed*/ 278,
+ /*0xa66d*/ 873,
+ /*0xa78c*/ 931,
+ -1, -1, -1,
+ /*0x044f*/ 314,
+ /*0x1ec7*/ 561,
+ /*0x1e47*/ 502,
+ -1,
+ /*0x01eb*/ 156,
+ /*0x2cc7*/ 793,
+ /*0x0247*/ 194,
+ /*0xa655*/ 861,
+ -1,
+ /*0x044b*/ 310,
+ -1, -1, -1, -1,
+ /*0x04ce*/ 381,
+ /*0x1ec5*/ 560,
+ /*0x1e45*/ 501,
+ /*0xa64f*/ 858,
+ /*0xa749*/ 904,
+ /*0x2cc5*/ 792,
+ -1,
+ /*0x2c33*/ 706,
+ /*0x1f45*/ 625,
+ /*0x0440*/ 299,
+ -1,
+ /*0x03cb*/ 263,
+ /*0xa64b*/ 856,
+ /*0xa77a*/ 924,
+ /*0x1e85*/ 533,
+ /*0x1e05*/ 469,
+ /*0x2c4d*/ 732,
+ /*0x0105*/ 58,
+ /*0x2c85*/ 760,
+ /*0x0205*/ 167,
+ /*0x0505*/ 409,
+ /*0x1f05*/ 595,
+ /*0x2d05*/ 816,
+ /*0xa689*/ 878,
+ /*0x0373*/ 229,
+ /*0x03c0*/ 253,
+ -1,
+ /*0x24dc*/ 689,
+ /*0x0449*/ 308,
+ /*0x1e83*/ 532,
+ /*0x1e03*/ 468,
+ /*0x2c66*/ 752,
+ /*0x0103*/ 57,
+ /*0x2c83*/ 759,
+ /*0x0203*/ 166,
+ /*0x0503*/ 408,
+ /*0x1f03*/ 593,
+ /*0x2d03*/ 814,
+ -1,
+ /*0x01ef*/ 158,
+ /*0x03f8*/ 281,
+ -1, -1,
+ /*0x2174*/ 664,
+ /*0x03c9*/ 261,
+ /*0xa649*/ 855,
+ -1,
+ /*0xa747*/ 903,
+ -1,
+ /*0xa785*/ 929,
+ /*0x028c*/ 226,
+ -1, -1,
+ /*0x01ed*/ 157,
+ /*0x2178*/ 668,
+ /*0x006b*/ 9,
+ /*0x1edf*/ 573,
+ /*0x1e5f*/ 514,
+ /*0x04df*/ 390,
+ /*0x015f*/ 101,
+ /*0x2cdf*/ 805,
+ /*0xa745*/ 902,
+ -1, -1,
+ /*0xa783*/ 928,
+ /*0xff51*/ 955,
+ -1,
+ /*0x217a*/ 670,
+ /*0xa685*/ 876,
+ -1,
+ /*0x2c55*/ 740,
+ /*0x0447*/ 306,
+ /*0x0289*/ 223,
+ /*0x24df*/ 692,
+ /*0x1ec3*/ 559,
+ /*0x1e43*/ 500,
+ /*0x00e4*/ 29,
+ /*0x0580*/ 458,
+ /*0x2cc3*/ 791,
+ /*0x00e8*/ 33,
+ /*0x2c4f*/ 734,
+ /*0x1f43*/ 623,
+ /*0x044e*/ 313,
+ /*0xa683*/ 875,
+ -1,
+ /*0x0445*/ 304,
+ -1,
+ /*0x03c7*/ 259,
+ /*0xa647*/ 854,
+ /*0x2c4b*/ 730,
+ -1,
+ /*0x0066*/ 5,
+ /*0xff57*/ 961,
+ -1,
+ /*0x045c*/ 327,
+ /*0x10432*/ 975,
+ /*0x0581*/ 459,
+ -1,
+ /*0x03ce*/ 266,
+ /*0x037c*/ 232,
+ /*0xff53*/ 957,
+ /*0x03c5*/ 257,
+ /*0xa645*/ 853,
+ /*0x2c40*/ 719,
+ /*0x006f*/ 13,
+ -1,
+ /*0x1ec1*/ 558,
+ /*0x1e41*/ 499,
+ -1, -1,
+ /*0x2cc1*/ 790,
+ -1,
+ /*0x214e*/ 659,
+ /*0x1f41*/ 621,
+ -1, -1,
+ /*0xa75f*/ 915,
+ /*0x01c9*/ 139,
+ /*0x006d*/ 11,
+ /*0x00e5*/ 30,
+ /*0x018c*/ 121,
+ -1,
+ /*0x2c49*/ 728,
+ -1, -1,
+ /*0x1ebf*/ 557,
+ /*0x1e3f*/ 498,
+ /*0x04bf*/ 374,
+ /*0x2184*/ 676,
+ /*0x2cbf*/ 789,
+ /*0x023f*/ 191,
+ /*0x00e1*/ 26,
+ /*0x0283*/ 221,
+ -1,
+ /*0xa743*/ 901,
+ /*0x1eb7*/ 553,
+ /*0x1e37*/ 494,
+ /*0x04b7*/ 370,
+ /*0x0137*/ 82,
+ /*0x2cb7*/ 785,
+ /*0x045f*/ 330,
+ -1,
+ /*0x1f37*/ 619,
+ /*0x1eb5*/ 552,
+ /*0x1e35*/ 493,
+ /*0x04b5*/ 369,
+ /*0x0135*/ 81,
+ /*0x2cb5*/ 784,
+ -1,
+ /*0x00e3*/ 28,
+ /*0x1f35*/ 617,
+ /*0x10433*/ 976,
+ /*0x2cee*/ 809,
+ -1,
+ /*0x056e*/ 440,
+ -1,
+ /*0x03df*/ 271,
+ /*0xa65f*/ 866,
+ /*0x0443*/ 302,
+ -1,
+ /*0x1044d*/ 1002,
+ -1, -1, -1, -1,
+ /*0x2c47*/ 726,
+ /*0xa741*/ 900,
+ /*0x0074*/ 18,
+ /*0xff59*/ 963,
+ -1,
+ /*0x00f3*/ 44,
+ /*0x01ce*/ 141,
+ -1, -1,
+ /*0x03c3*/ 255,
+ /*0xa643*/ 852,
+ /*0x2c4e*/ 733,
+ /*0x00fe*/ 54,
+ /*0x0078*/ 22,
+ /*0x2c45*/ 724,
+ -1,
+ /*0x04c4*/ 376,
+ /*0x0144*/ 88,
+ /*0x01dc*/ 148,
+ /*0x0584*/ 462,
+ /*0xa73f*/ 899,
+ /*0x1f44*/ 624,
+ /*0x0185*/ 119,
+ /*0x2c5c*/ 747,
+ -1,
+ /*0x0441*/ 300,
+ /*0x007a*/ 24,
+ /*0x1eb1*/ 550,
+ /*0x1e31*/ 491,
+ /*0x04b1*/ 367,
+ /*0xa737*/ 895,
+ /*0x2cb1*/ 782,
+ /*0x0231*/ 188,
+ -1,
+ /*0x1f31*/ 613,
+ -1, -1,
+ /*0x0183*/ 118,
+ /*0xa735*/ 894,
+ -1, -1,
+ /*0x03c1*/ 254,
+ /*0xa641*/ 851,
+ -1,
+ /*0x043f*/ 298,
+ -1,
+ /*0x00e9*/ 34,
+ /*0x1ead*/ 548,
+ /*0x1e2d*/ 489,
+ /*0x04ad*/ 365,
+ /*0x012d*/ 78,
+ /*0x2cad*/ 780,
+ /*0x022d*/ 186,
+ /*0x1fb1*/ 653,
+ /*0x0437*/ 290,
+ /*0x2d2d*/ 850,
+ -1, -1,
+ /*0x00e7*/ 32,
+ /*0x1044f*/ 1004,
+ /*0x03bf*/ 252,
+ -1,
+ /*0x0435*/ 288,
+ -1,
+ /*0x01df*/ 150,
+ /*0x00e0*/ 25,
+ -1, -1,
+ /*0x1044b*/ 1000,
+ -1,
+ /*0x03b7*/ 244,
+ /*0x1e8d*/ 537,
+ /*0x1e0d*/ 473,
+ /*0x048d*/ 349,
+ /*0x010d*/ 62,
+ /*0x2c8d*/ 764,
+ /*0x020d*/ 171,
+ /*0x050d*/ 413,
+ /*0x03b5*/ 242,
+ /*0x2d0d*/ 824,
+ /*0x00fc*/ 52,
+ -1,
+ /*0x10440*/ 989,
+ -1,
+ /*0x00ea*/ 35,
+ /*0x0586*/ 464,
+ -1,
+ /*0x2c43*/ 722,
+ /*0xff4d*/ 951,
+ /*0x1ea7*/ 545,
+ /*0x1e27*/ 486,
+ /*0x04a7*/ 362,
+ /*0x0127*/ 75,
+ /*0x2ca7*/ 777,
+ /*0x0227*/ 183,
+ /*0x0527*/ 426,
+ /*0x1f27*/ 611,
+ /*0x2d27*/ 849,
+ /*0x0444*/ 303,
+ /*0x04c6*/ 377,
+ /*0x0146*/ 89,
+ /*0x10449*/ 998,
+ -1,
+ /*0x1ef5*/ 584,
+ /*0x1e75*/ 525,
+ /*0x04f5*/ 401,
+ /*0x0175*/ 112,
+ /*0xa72d*/ 891,
+ /*0x0275*/ 218,
+ /*0x0575*/ 447,
+ /*0x1f75*/ 643,
+ /*0x0431*/ 284,
+ /*0x0562*/ 428,
+ /*0x1f62*/ 632,
+ /*0x03c4*/ 256,
+ /*0x1ef1*/ 582,
+ /*0x1e71*/ 523,
+ /*0x04f1*/ 399,
+ /*0x0171*/ 110,
+ /*0x2c41*/ 720,
+ /*0x0271*/ 216,
+ /*0x0571*/ 443,
+ /*0x1f71*/ 639,
+ /*0x24e2*/ 695,
+ /*0xa7a7*/ 937,
+ /*0xa68d*/ 880,
+ -1,
+ /*0x03b1*/ 238,
+ /*0x1ebd*/ 556,
+ /*0x1e3d*/ 497,
+ /*0x04bd*/ 373,
+ -1,
+ /*0x2cbd*/ 788,
+ /*0x01bf*/ 137,
+ /*0x0256*/ 204,
+ /*0x1eb9*/ 554,
+ /*0x1e39*/ 495,
+ /*0x04b9*/ 371,
+ /*0x2c3f*/ 718,
+ /*0x2cb9*/ 786,
+ -1, -1,
+ /*0xff55*/ 959,
+ -1,
+ /*0x10447*/ 996,
+ -1,
+ /*0x24d6*/ 683,
+ /*0x03ad*/ 235,
+ /*0x2c37*/ 710,
+ /*0xa727*/ 888,
+ -1, -1,
+ /*0xff4f*/ 953,
+ -1, -1,
+ /*0x1044e*/ 1003,
+ /*0x2c35*/ 708,
+ -1,
+ /*0x10445*/ 994,
+ /*0x0582*/ 460,
+ /*0x00eb*/ 36,
+ /*0xff4b*/ 949,
+ /*0x1e95*/ 541,
+ /*0x1e15*/ 477,
+ /*0x0495*/ 353,
+ /*0x0115*/ 66,
+ /*0x2c95*/ 768,
+ /*0x0215*/ 175,
+ /*0x0515*/ 417,
+ /*0x1f15*/ 603,
+ /*0x2d15*/ 832,
+ /*0x1e93*/ 540,
+ /*0x1e13*/ 476,
+ /*0x0493*/ 352,
+ /*0x0113*/ 65,
+ /*0x2c93*/ 767,
+ /*0x0213*/ 174,
+ /*0x0513*/ 416,
+ /*0x1f13*/ 601,
+ /*0x2d13*/ 830,
+ -1,
+ /*0x0446*/ 305,
+ -1, -1,
+ /*0x1efd*/ 588,
+ /*0x1e7d*/ 529,
+ /*0x04fd*/ 405,
+ /*0x0475*/ 341,
+ /*0xa73d*/ 898,
+ /*0x027d*/ 219,
+ /*0x057d*/ 455,
+ /*0x1f7d*/ 651,
+ /*0x2c44*/ 723,
+ /*0x1d7d*/ 466,
+ /*0xff49*/ 947,
+ /*0xa739*/ 896,
+ /*0x00e6*/ 31,
+ /*0x03c6*/ 258,
+ -1,
+ /*0x0471*/ 339,
+ -1,
+ /*0x1ef9*/ 586,
+ /*0x1e79*/ 527,
+ /*0x04f9*/ 403,
+ -1,
+ /*0x2c31*/ 704,
+ /*0xa793*/ 933,
+ /*0x0579*/ 451,
+ /*0x1f79*/ 647,
+ /*0x00ef*/ 40,
+ /*0x1d79*/ 465,
+ -1,
+ /*0x043d*/ 296,
+ /*0x0456*/ 321,
+ -1, -1,
+ /*0xa695*/ 884,
+ /*0x2175*/ 665,
+ -1,
+ /*0x0439*/ 292,
+ /*0x01ad*/ 131,
+ /*0x006e*/ 12,
+ /*0x2cec*/ 808,
+ /*0x00ed*/ 38,
+ /*0x056c*/ 438,
+ /*0xa693*/ 883,
+ -1, -1,
+ /*0x03bd*/ 250,
+ /*0x2171*/ 661,
+ -1,
+ /*0x10443*/ 992,
+ /*0x0570*/ 442,
+ /*0x1f70*/ 638,
+ -1,
+ /*0x03b9*/ 246,
+ -1,
+ /*0xff47*/ 945,
+ /*0x1ea1*/ 542,
+ /*0x1e21*/ 483,
+ /*0x04a1*/ 359,
+ /*0x0121*/ 72,
+ /*0x2ca1*/ 774,
+ -1,
+ /*0x0521*/ 423,
+ /*0x1f21*/ 605,
+ /*0x2d21*/ 844,
+ -1,
+ /*0xff4e*/ 952,
+ /*0x1e87*/ 534,
+ /*0x1e07*/ 470,
+ /*0xff45*/ 943,
+ /*0x0107*/ 59,
+ /*0x2c87*/ 761,
+ /*0x0207*/ 168,
+ /*0x0507*/ 410,
+ /*0x1f07*/ 597,
+ /*0x2d07*/ 818,
+ /*0x1efb*/ 587,
+ /*0x1e7b*/ 528,
+ /*0x04fb*/ 404,
+ /*0x04cc*/ 380,
+ -1,
+ /*0x10441*/ 990,
+ /*0x057b*/ 453,
+ /*0x1f7b*/ 649,
+ /*0x04c2*/ 375,
+ /*0x0142*/ 87,
+ /*0x047d*/ 345,
+ /*0x0242*/ 193,
+ /*0x01c6*/ 138,
+ /*0x1f42*/ 622,
+ /*0x00f4*/ 45,
+ /*0xa7a1*/ 934,
+ -1,
+ /*0x2c46*/ 725,
+ /*0x01f5*/ 160,
+ /*0x1ebb*/ 555,
+ /*0x1e3b*/ 496,
+ /*0x04bb*/ 372,
+ -1,
+ /*0x2cbb*/ 787,
+ /*0x1043f*/ 988,
+ /*0x00f8*/ 48,
+ /*0xa787*/ 930,
+ /*0x0479*/ 343,
+ -1,
+ /*0x1ef7*/ 585,
+ /*0x1e77*/ 526,
+ /*0x04f7*/ 402,
+ /*0x0177*/ 113,
+ -1,
+ /*0x10437*/ 980,
+ /*0x0577*/ 449,
+ /*0x1f77*/ 645,
+ -1,
+ /*0x00fa*/ 50,
+ /*0x0254*/ 203,
+ /*0x217d*/ 673,
+ -1,
+ /*0x10435*/ 978,
+ /*0x01bd*/ 136,
+ /*0x01d6*/ 145,
+ /*0xa687*/ 877,
+ /*0x0576*/ 448,
+ /*0x1f76*/ 644,
+ /*0x2c3d*/ 716,
+ /*0x2c56*/ 741,
+ /*0x01b9*/ 135,
+ /*0x24d4*/ 681,
+ /*0x1eff*/ 589,
+ /*0x1e7f*/ 530,
+ /*0x04ff*/ 406,
+ /*0x2c39*/ 712,
+ -1,
+ /*0x2179*/ 669,
+ /*0x057f*/ 457,
+ /*0x04ca*/ 379,
+ /*0x1eaf*/ 549,
+ /*0x1e2f*/ 490,
+ /*0x04af*/ 366,
+ /*0x012f*/ 79,
+ /*0x2caf*/ 781,
+ /*0x022f*/ 187,
+ /*0xff43*/ 941,
+ /*0x1ea9*/ 546,
+ /*0x1e29*/ 487,
+ /*0x04a9*/ 363,
+ /*0x0129*/ 76,
+ /*0x2ca9*/ 778,
+ /*0x0229*/ 184,
+ /*0x0272*/ 217,
+ /*0x0572*/ 444,
+ /*0x1f72*/ 640,
+ /*0x0250*/ 199,
+ /*0x0195*/ 123,
+ /*0x10444*/ 993,
+ /*0xa73b*/ 897,
+ /*0x04c8*/ 378,
+ /*0x0148*/ 90,
+ /*0x2170*/ 660,
+ /*0x0075*/ 19,
+ /*0x047b*/ 344,
+ /*0x044c*/ 311,
+ /*0x0062*/ 1,
+ -1,
+ /*0x24d0*/ 677,
+ /*0x24da*/ 687,
+ /*0x0442*/ 301,
+ /*0x10431*/ 974,
+ /*0x1f36*/ 618,
+ /*0x1f34*/ 616,
+ /*0x013c*/ 84,
+ /*0x0071*/ 15,
+ /*0x023c*/ 190,
+ /*0x1fd0*/ 654,
+ /*0xff41*/ 939,
+ /*0x01fd*/ 163,
+ /*0x03fb*/ 282,
+ /*0x03cc*/ 264,
+ /*0xa7a9*/ 938,
+ /*0x043b*/ 294,
+ /*0x1eab*/ 547,
+ /*0x1e2b*/ 488,
+ /*0x04ab*/ 364,
+ /*0x012b*/ 77,
+ /*0x2cab*/ 779,
+ /*0x022b*/ 185,
+ -1,
+ /*0x1042d*/ 970,
+ /*0xa77f*/ 926,
+ /*0x0477*/ 342,
+ /*0x217b*/ 671,
+ -1,
+ /*0x01f9*/ 161,
+ /*0x0252*/ 201,
+ /*0x0454*/ 319,
+ /*0x03bb*/ 248,
+ /*0xa72f*/ 892,
+ /*0x1e19*/ 479,
+ /*0x0499*/ 355,
+ /*0x0119*/ 68,
+ /*0x2c99*/ 770,
+ /*0x0219*/ 177,
+ /*0x0519*/ 419,
+ /*0xa729*/ 889,
+ /*0x2d19*/ 836,
+ /*0x24d2*/ 679,
+ /*0x1e17*/ 478,
+ /*0x0497*/ 354,
+ /*0x0117*/ 67,
+ /*0x2c97*/ 769,
+ /*0x0217*/ 176,
+ /*0x0517*/ 418,
+ /*0x047f*/ 346,
+ /*0x2d17*/ 834,
+ /*0x2c6c*/ 755,
+ /*0x1f30*/ 612,
+ /*0x013e*/ 85,
+ /*0x044a*/ 309,
+ /*0x24d8*/ 685,
+ /*0x2177*/ 667,
+ /*0x1e1d*/ 481,
+ /*0x049d*/ 357,
+ /*0x011d*/ 70,
+ /*0x2c9d*/ 772,
+ /*0x021d*/ 179,
+ /*0x051d*/ 421,
+ /*0x0585*/ 463,
+ /*0x2d1d*/ 840,
+ -1,
+ /*0x01a1*/ 127,
+ /*0x2176*/ 666,
+ /*0x0450*/ 315,
+ /*0x045a*/ 325,
+ /*0x03ca*/ 262,
+ /*0x1fb0*/ 652,
+ -1,
+ /*0x03af*/ 237,
+ /*0x10446*/ 995,
+ /*0x0448*/ 307,
+ -1,
+ /*0xa72b*/ 890,
+ /*0x0583*/ 461,
+ /*0x217f*/ 675,
+ -1,
+ /*0x03f2*/ 280,
+ /*0x0436*/ 289,
+ /*0x0434*/ 287,
+ /*0xff44*/ 942,
+ /*0x0438*/ 291,
+ /*0x01fb*/ 162,
+ /*0x01cc*/ 140,
+ /*0x043c*/ 295,
+ /*0x013a*/ 83,
+ -1,
+ /*0x03c8*/ 260,
+ /*0x2c4c*/ 731,
+ -1,
+ /*0x0079*/ 23,
+ /*0x2172*/ 662,
+ /*0xa697*/ 885,
+ /*0x2c42*/ 721,
+ /*0x03b6*/ 243,
+ /*0x03b4*/ 241,
+ -1,
+ /*0x03b8*/ 245,
+ -1, -1,
+ /*0x03bc*/ 249,
+ /*0x1043d*/ 986,
+ -1, -1, -1,
+ /*0x0452*/ 317,
+ /*0x2c3b*/ 714,
+ /*0x006c*/ 10,
+ /*0x10439*/ 982,
+ -1, -1, -1, -1, -1, -1,
+ /*0x0070*/ 14,
+ /*0x01d4*/ 144,
+ -1,
+ /*0x0458*/ 323,
+ -1, -1,
+ /*0x2c54*/ 739,
+ -1, -1, -1,
+ /*0x0430*/ 283,
+ -1,
+ /*0x2c76*/ 757,
+ /*0x0371*/ 228,
+ -1,
+ /*0x043e*/ 297,
+ -1, -1, -1,
+ /*0x01ff*/ 164,
+ -1, -1, -1, -1, -1, -1,
+ -1,
+ /*0x00ee*/ 39,
+ -1,
+ /*0x2c4a*/ 729,
+ -1,
+ /*0x03be*/ 251,
+ -1, -1, -1, -1, -1, -1,
+ /*0x01d0*/ 142,
+ /*0x01da*/ 147,
+ -1, -1, -1,
+ /*0x2c50*/ 735,
+ /*0x2c5a*/ 745,
+ -1, -1, -1,
+ /*0xff46*/ 944,
+ -1,
+ /*0x2c48*/ 727,
+ /*0x043a*/ 293,
+ /*0x01b6*/ 134,
+ /*0x01b4*/ 133,
+ -1, -1, -1,
+ /*0x2c36*/ 709,
+ /*0x2c34*/ 707,
+ -1,
+ /*0x2c38*/ 711,
+ /*0x0077*/ 21,
+ -1,
+ /*0x2c3c*/ 715,
+ -1, -1, -1,
+ /*0x03ba*/ 247,
+ -1, -1, -1, -1,
+ /*0x0076*/ 20,
+ -1, -1, -1, -1, -1, -1,
+ /*0x01d2*/ 143,
+ /*0xff56*/ 960,
+ -1,
+ /*0x037d*/ 233,
+ -1,
+ /*0x2c52*/ 737,
+ -1, -1,
+ /*0x0199*/ 124,
+ -1, -1, -1, -1,
+ /*0x01d8*/ 146,
+ -1, -1, -1, -1,
+ /*0x2c58*/ 743,
+ -1,
+ /*0x01b0*/ 132,
+ /*0x0072*/ 16,
+ -1, -1, -1,
+ /*0x2c30*/ 703,
+ -1, -1, -1, -1,
+ /*0x2c3e*/ 717,
+ -1, -1, -1, -1, -1, -1,
+ -1,
+ /*0x1044c*/ 1001,
+ -1, -1, -1, -1,
+ /*0x10442*/ 991,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ /*0x1043b*/ 984,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1,
+ /*0x2c3a*/ 713,
+ -1,
+ /*0x00f5*/ 46,
+ -1, -1,
+ /*0x00e2*/ 27,
+ -1, -1, -1, -1, -1,
+ /*0x037b*/ 231,
+ -1, -1,
+ /*0x00f1*/ 42,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1,
+ /*0x1044a*/ 999,
+ -1, -1,
+ /*0x1042f*/ 972,
+ -1, -1, -1, -1, -1, -1,
+ /*0x10429*/ 966,
+ -1,
+ /*0x0377*/ 230,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1,
+ /*0x10448*/ 997,
+ -1, -1, -1, -1, -1, -1,
+ /*0x10436*/ 979,
+ /*0x10434*/ 977,
+ -1,
+ /*0x10438*/ 981,
+ -1, -1,
+ /*0x1043c*/ 985,
+ -1, -1,
+ /*0xff4c*/ 950,
+ -1, -1, -1, -1,
+ /*0xff42*/ 940,
+ -1, -1, -1, -1,
+ /*0x1042b*/ 968,
+ -1, -1, -1, -1, -1, -1,
+ -1,
+ /*0x00fd*/ 53,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1,
+ /*0xff54*/ 958,
+ -1,
+ /*0x00f9*/ 49,
+ -1, -1,
+ /*0x10430*/ 973,
+ -1, -1, -1, -1,
+ /*0x1043e*/ 987,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1,
+ /*0x00ec*/ 37,
+ -1, -1, -1,
+ /*0xff4a*/ 948,
+ -1, -1, -1,
+ /*0x00f0*/ 41,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1,
+ /*0xff50*/ 954,
+ /*0xff5a*/ 964,
+ -1, -1, -1, -1, -1,
+ /*0xff48*/ 946,
+ -1,
+ /*0x1043a*/ 983,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ /*0x00fb*/ 51,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ /*0xff52*/ 956,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ /*0xff58*/ 962,
+ -1, -1, -1, -1, -1, -1,
+ -1,
+ /*0x00f6*/ 47,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1,
+ /*0x00ff*/ 55,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1,
+ /*0x00f2*/ 43
+ };
+
+ if (code <= MAX_CODE_VALUE && code >= MIN_CODE_VALUE)
+ {
+ register int key = onigenc_unicode_CaseUnfold_11_hash(code);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register short s = wordlist[key];
+
+ if (s >= 0 && code1_equal(code, CaseUnfold_11_Table[s].from))
+ return &CaseUnfold_11_Table[s].to;
+ }
+ }
+ return 0;
+}
+
static const CaseUnfold_12_Type CaseUnfold_12_Table[] = {
#define CaseUnfold_12 (*(CaseUnfold_12_Type (*)[58])(CaseUnfold_12_Table+0))
{{0x0061, 0x02be}, {1, {0x1e9a}}},
@@ -3730,6 +5040,5 @@ static const CaseUnfold_13_Type CaseUnfold_13_Table[] = {
{{0x03c9, 0x0342, 0x03b9}, {1, {0x1ff7}}},
};
-#define UNFOLD1_TABLE_SIZE 1207
#define UNFOLD2_TABLE_SIZE 88
#define UNFOLD3_TABLE_SIZE 23